For educational reasons I've decided to create my own CA. Here is what I learned.
Lets get some context first.
| { | |
| "countries": [ | |
| { | |
| "country": "Afghanistan", | |
| "states": ["Badakhshan", "Badghis", "Baghlan", "Balkh", "Bamian", "Daykondi", "Farah", "Faryab", "Ghazni", "Ghowr", "Helmand", "Herat", "Jowzjan", "Kabul", "Kandahar", "Kapisa", "Khost", "Konar", "Kondoz", "Laghman", "Lowgar", "Nangarhar", "Nimruz", "Nurestan", "Oruzgan", "Paktia", "Paktika", "Panjshir", "Parvan", "Samangan", "Sar-e Pol", "Takhar", "Vardak", "Zabol"] | |
| }, | |
| { | |
| "country": "Albania", | |
| "states": ["Berat", "Dibres", "Durres", "Elbasan", "Fier", "Gjirokastre", "Korce", "Kukes", "Lezhe", "Shkoder", "Tirane", "Vlore"] | |
| }, |
| CREATE TABLE accounts( | |
| id serial PRIMARY KEY, | |
| name VARCHAR(256) NOT NULL | |
| ); | |
| CREATE TABLE entries( | |
| id serial PRIMARY KEY, | |
| description VARCHAR(1024) NOT NULL, | |
| amount NUMERIC(20, 2) NOT NULL CHECK (amount > 0.0), | |
| -- Every entry is a credit to one account... |
When receiving JSON data from other resources(server API etc), we need Json.Decode to convert the JSON values into Elm values. This gist let you quickly learn how to do that.
I like to follow working example code so this is how the boilerplate will look like:
import Graphics.Element exposing (Element, show)
import Task exposing (Task, andThen)
import Json.Decode exposing (Decoder, int, string, object3, (:=))
import Http| function ListController ( Service, $mdDialog ) { | |
| const vm = this; | |
| vm.list = true; | |
| vm.MODULE_NAME = MODULE_NAME; | |
| vm.PATH = MODULE_NAME.toLowerCase(); | |
| const hiddenFields= [ | |
| 'active' | |
| , 'password' | |
| , 'automaticLogin' |
| #!/usr/bin/env ruby | |
| require "openssl" | |
| require 'digest/sha2' | |
| require 'base64' | |
| # We use the AES 256 bit cipher-block chaining symetric encryption | |
| alg = "AES-256-CBC" | |
| # We want a 256 bit key symetric key based on some passphrase | |
| digest = Digest::SHA256.new |
| define 'components/singleton', [], -> | |
| ### | |
| Singleton class | |
| ### | |
| class Singleton extends Backbone.View | |
| # @static | |
| @getInstance = -> | |
| @_instance = new @ unless @_instance? | |
| @_instance |
| 1. Two space soft indents (fake tabs) OR tabs... BUT NEVER BOTH - DO NOT MIX | |
| 2. Whitespace, Parens, Braces, Linebreaks | |
| if/else/for/while/try always have spaces, braces and multiple lines. | |
| -------------------------------------------------------------------- | |
| require 'delegate' | |
| class AbandonedTrialQuery < SimpleDelegator | |
| def initialize(relation = Account.scoped) | |
| super(relation.where(plan: nil, invites_count: 0)) | |
| end | |
| end |
| class String | |
| ACCENTED_VOWELS = "áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÔÖÚÙÛÜÇ" | |
| UNACCENTED_VOWELS = "aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC" | |
| def unaccentize | |
| self.tr ACCENTED_VOWELS, UNACCENTED_VOWELS | |
| end | |
| end |