Recently I hit the 51,200 byte body size limit of AWS's CloudFormation's templates. I looked into creating Nested Stacks, but that seemed like a pain. Looking at the created json template, I saw a lot of unneeded whitespace.
I used troposhere to generate the template, so it was easy to reduce the size by stripping out the beginning and ending whitespace of each line in the json file.
I just added the following line:
json_compressed="\n".join([line.strip() for line in t.to_json().split("\n")])
utils.validate_cloudformation_template(json_compressed)
This more than havled the size of the template from ~60K to ~25K bytes:
$ wc template.json
1821 2860 60133 template.json
$ wc template_compressed.json
1821 2860 24616 template_compressed.json
And CloudFormation accepted it, no problem.
Tuesday, January 6, 2015
Friday, January 2, 2015
Elixir Tgraph
In my attempt to learn Elixir, I've converted an Erlang version of a Python script I wrote years ago. It takes a pipe of numeric values and plots lines in a character terminal. Super simple, but handy sometimes.
Now, I know line count is a horrible way to compare code, but here it is:
150 tgraph.py https://gist.github.com/dgulino/4750099
136 tgraph.escript https://gist.github.com/dgulino/4750118
106 tgraph.ex https://gist.github.com/dgulino/298516f7977c57199a4a
The python code is many years old. Maybe I've learned something since then, but I don't write very compactly, on purpose. I only use standard libraries since I don't have the luxury of installing stuff on some of the systems I want to run this on, so can't use some of the cool libraries out there.
It's hard to compare the python code to the Erlang/Elixir.
The Erlang code has added cruft on top to run as Escript (so I don't have to compile changes). I've yet to figure how to enable piping of stdin to Elixir without running a build ('mix escript.build'). So I get to compile my interpreted code!
Otherwise, the Elixir code is easier to read and more concise than Erlang, which is no suprise. Elixir +1.
Now, I know line count is a horrible way to compare code, but here it is:
150 tgraph.py https://gist.github.com/dgulino/4750099
136 tgraph.escript https://gist.github.com/dgulino/4750118
106 tgraph.ex https://gist.github.com/dgulino/298516f7977c57199a4a
The python code is many years old. Maybe I've learned something since then, but I don't write very compactly, on purpose. I only use standard libraries since I don't have the luxury of installing stuff on some of the systems I want to run this on, so can't use some of the cool libraries out there.
It's hard to compare the python code to the Erlang/Elixir.
The Erlang code has added cruft on top to run as Escript (so I don't have to compile changes). I've yet to figure how to enable piping of stdin to Elixir without running a build ('mix escript.build'). So I get to compile my interpreted code!
Otherwise, the Elixir code is easier to read and more concise than Erlang, which is no suprise. Elixir +1.
Subscribe to:
Posts (Atom)