\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{mithereal} \pdfinfo{ /Title (elixir.pdf) /Creator (Cheatography) /Author (mithereal) /Subject (Elixir Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Elixir Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{mithereal} via \textcolor{DarkBackground}{\uline{cheatography.com/42594/cs/12821/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}mithereal \\ \uline{cheatography.com/mithereal} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 3rd November, 2017.\\ Updated 8th December, 2017.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Errors}} \tn % Row 0 \SetRowColor{LightBackground} undefined function xxx\_path/3 & add the resource to the router ( resources "/xxx", xxxController) \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} cannot use \textasciicircum{}xxx outside of match clauses & add import Ecto.Query to the controler \tn % Row Count 6 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{hex.pm gotchas}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{password resets: when you forget a password and reset it, you have an option to revoke api keys, which is default, you must regenerate an api key via cli: mix hex.user auth \newline % Row Count 4 (+ 4) errors: inserted\_at: can only modify a release up to one hour after creation \newline % Row Count 6 (+ 2) if you get this error it is because you didnt update the current version within 1 hour, so you need to bump the version located in mix.exs% Row Count 9 (+ 3) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{phoenix gotchas}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{to render a different view/template combo for a controller \newline % Row Count 2 (+ 2) conn \newline % Row Count 3 (+ 1) |\textgreater{} \seqsplit{put\_view(xxxWeb.xxxPartialsView)} \newline % Row Count 4 (+ 1) |\textgreater{} render("xxx.html", assigns: assigns) \newline % Row Count 5 (+ 1) to not render templates for only certain controller actions \newline % Row Count 7 (+ 2) plug :put\_layout, false when action in {[}:xxx, :yyy {]} \newline % Row Count 9 (+ 2) to render certain layout for only certain controller actions \newline % Row Count 11 (+ 2) :put\_layout, \{xxxWeb.xxxView, :layout\} when action in {[}:xxx, :yyy{]} \newline % Row Count 13 (+ 2) in order to use https, the config goes into xxxWeb/config/xxx.exs% Row Count 15 (+ 2) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Elixir Gotchas}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{to access a config \newline % Row Count 1 (+ 1) var config = Application.get\_env(:my, :title)% Row Count 3 (+ 2) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{ecto gotchas}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{cast\_assoc/3 is only used in the changesets of schemas that have has\_one or has\_many. It invokes the cast/3 validation in the changeset of the associated schema. \newline % Row Count 4 (+ 4) assoc\_constraint/3 is used in the changesets of schemas that have belongs\_to. It checks to make sure the parent schema is in the database so an orphaned record isn't inserted. \newline % Row Count 8 (+ 4) \seqsplit{foreign\_key\_constraint/3} is used similarly to assoc\_constraint/3, except that it uses the database to validate the foreign key constraint, whereas assoc\_constraint/3 uses the Ecto schema definition.% Row Count 12 (+ 4) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Brunch Gotchas}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{bundling stylesheets: \newline % Row Count 1 (+ 1) in phoenix 1.3 to bundle a custom directory it has to be both added to watched as well as the jointo under stylesheets the parent dir is app/assets and is implied \newline % Row Count 5 (+ 4) in this example we are bundling \seqsplit{xxxweb/assets/bundled/page/*}.css to \seqsplit{xxxweb/priv/static/css/page/vendor}.css \newline % Row Count 8 (+ 3) ex: for css \newline % Row Count 9 (+ 1) joinTo: \{"css/page/vendor.css": /\textasciicircum{}bundled\textbackslash{}/(?:css\textbackslash{}/)?page/\}, \newline % Row Count 11 (+ 2) watched: {[}"static", "css", "js", "vendor","bundled"{]}, \newline % Row Count 13 (+ 2) for the js i typically separate what i want bundled into a bundled dir, we also need to include node\_modules we do so like this. \newline % Row Count 16 (+ 3) ex for js. \newline % Row Count 17 (+ 1) "js/user/vendor.js": /\textasciicircum{}(bundled\textbackslash{}/js\textbackslash{}/user|vendor|deps|node\_modules).*/, \newline % Row Count 19 (+ 2) but we also need to join the main file responsible for importing the channels etc typically called app.js we do so by adding the path to this file to the modules:autorequire it is important to remember the path is pre compiation, (this took days to understand this) compiling like this. \newline % Row Count 25 (+ 6) ex. \newline % Row Count 26 (+ 1) modules: \{ \newline % Row Count 27 (+ 1) autoRequire: \{ \newline % Row Count 28 (+ 1) "js/user/vendor.js": {[}"bundled/js/user/app"{]}, \newline % Row Count 30 (+ 2) } \tn \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Brunch Gotchas (cont)}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{ \} \newline % Row Count 1 (+ 1) \},% Row Count 2 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}