pow



pow

0 0


pow


On Github Gizra-Presentations / pow

gizra // Amitai Burstein
לא איבימ או סימנס
פרוייקטי אייטי, בדיפולט נכשלים

Defintion of succeess

  • On Time
  • On Budget
  • Users Are Happy

Setting Expectations // Common language

אסופה של מתודות ותהליכי עבודה. בקיצור, תקשורת ותיאום ציפיות Discovery phase Project is sum of all its tasks

Elm

time travel

Counter Example

Counter.elm
module Counter where

import Html exposing (..)
import Html.Events exposing (onClick)

-- MODEL

type alias Model = Int

init : Int -> Model
init count = count

-- UPDATE

type Action = Increment | Decrement

update : Action -> Model -> Model
update action model =
  case action of
    Increment -> model + 1
    Decrement -> model - 1

-- VIEW

view : Signal.Address Action -> Model -> Html
view address model =
  div []
    [ button [ onClick address Decrement ] [ text "-" ]
    , div [] [ text (toString model) ]
    , button [ onClick address Increment ] [ text "+" ]
    ]
elm architecture
מה אפשר לעשות באפליקציה שלכם?
action is implemtation details
תגית של באטן פתוחה, תגית של דיו פתוחה
ברגע שאתה מספק את הקומפיילר, האפילקציה שלך פשוט עובדת
לא מפחד לכתוב חלקים גדולים מחדש

No Side Effects

And No Run Time Errors
type alias Model = Int

type Action
 = GetDataFromServer
 | UpdateDataFromServer Result

GetDataFromServer ->
 ( model, Http.get "https://example.com/api/data" |> Task.map UpdateDataFromServer )

UpdateDataFromServer result ->
 case result of
   Ok val ->
     ( { model = val } , Effects.none )
   Err msg ->
     ( model , Effects.none )
pure functions היא אפשר להתעלם מטעויות
Main.elm
port dropzoneUploadedFile : Signal (Maybe Int)
interop.js
dropZone = new Dropzone();

dropZone.on('complete', function(response) {
 var id = parseInt(response.id);
 elmApp.ports.dropzoneUploadedFile.send(id);
});
שומר השער.

Unit Testing

Without mocking the entire internet
Counter.elm
update : Action -> Model -> Model
update action model =
  case action of
    Increment -> model + 1
    Decrement -> model - 1
CounterTest.elm
[ test "negative count" (assertEqual 0 (update Increment -1))
, test "zero count"     (assertEqual 1 (update Increment  0))
, test "positive count" (assertEqual 2 (update Increment  1))
]
travis

Elm // PowToon

Gizra // 20+ people // Israel & US // Fancy clients
gizra
gizra // Amitai Burstein