First, install the Sass, Font Awesome, bootstrap(and deps) package:
cd assets
- npm install --save-dev sass-brunch
- npm install --save font-awesome
This write up was based on Henrik's gist
| defmodule EctoBatchStream do | |
| import Ecto.Query, only: [from: 1, from: 2] | |
| @batch_size 1000 | |
| # Example: | |
| # | |
| # query = from u in MyApp.User, select: u.email | |
| # stream = EctoBatchStream.stream(MyApp.Repo, query) | |
| # stream |> Stream.take(3) |> Enum.to_list # => […] |
| -- show running queries (pre 9.2) | |
| SELECT procpid, age(clock_timestamp(), query_start), usename, current_query | |
| FROM pg_stat_activity | |
| WHERE current_query != '<IDLE>' AND current_query NOT ILIKE '%pg_stat_activity%' | |
| ORDER BY query_start desc; | |
| -- show running queries (9.2) | |
| SELECT pid, age(clock_timestamp(), query_start), usename, query | |
| FROM pg_stat_activity | |
| WHERE query != '<IDLE>' AND query NOT ILIKE '%pg_stat_activity%' |
There are certain files created by particular editors, IDEs, operating systems, etc., that do not belong in a repository. But adding system-specific files to the repo's .gitignore is considered a poor practice. This file should only exclude files and directories that are a part of the package that should not be versioned (such as the node_modules directory) as well as files that are generated (and regenerated) as artifacts of a build process.
All other files should be in your own global gitignore file. Create a file called .gitignore in your home directory and add anything you want to ignore. You then need to tell git where your global gitignore file is.
git config --global core.excludesfile ~/.gitignore
git config --global core.excludesfile %USERPROFILE%\.gitignore
| defmodule Game do | |
| use GenServer | |
| def init(game_id) do | |
| {:ok, %{game_id: game_id}} | |
| end | |
| def start_link(game_id) do | |
| GenServer.start_link(__MODULE__, game_id, name: {:global, "game:#{game_id}"}) | |
| end |
| cd /app/ | |
| wget http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.10.91.tar.gz | |
| cd fontconfig-2.10.91 | |
| tar -xzf fontconfig-2.10.91.tar.gz | |
| ./configure | |
| make | |
| cd /app/ | |
| wget http://poppler.freedesktop.org/poppler-0.22.1.tar.gz | |
| tar -xzf poppler-0.22.1.tar.gz |
| defmodule ListFlatten do | |
| def flatten(list), do: flatten(list, []) |> Enum.reverse | |
| def flatten([h | t], acc) when h == [], do: flatten(t, acc) | |
| def flatten([h | t], acc) when is_list(h), do: flatten(t, flatten(h, acc)) | |
| def flatten([h | t], acc), do: flatten(t, [h | acc]) | |
| def flatten([], acc), do: acc | |
| end | |
| list_1 = [[1,2,[3]],4] | |
| list_2 = [[1,5,[3]],4,[[[1,2,[3]],4]]] |
| # This demonstrates that, when using async/await, a crash in the task will crash the caller | |
| defmodule Tasker do | |
| def good(message) do | |
| IO.puts message | |
| end | |
| def bad(message) do | |
| IO.puts message | |
| raise "I'm BAD!" | |
| end |