Monada Promise w JavaScript

Żeby zdefiniować monadę w JS, to musimy określić operator bind oraz unit (które w np. Haskellu oznacza się poprzez >>= i return). Przyda się też definicja fail:

// unit :: a -> Promise a
unit = x => new Promise(resolve => resolve(x))
 
// fail :: String -> Promise a
fail = str => new Promise((resolve, reject) => reject(str))
 
// bind :: Promise a -> (a -> Promise b) -> Promise b
bind = (p, np) => p.then(x => np(x), fail)

Dorzućmy do tego operator składania kilku operacji w jedną:

// pipe :: [a -> Promise a] -> a -> Promise a
pipe = ps => x => ps.reduce(bind, unit(x))

oraz kilka definicji do testów:

// add10 :: Int -> Promise Int
add10 = x => unit(x + 10)
 
// add40 :: Int -> Promise Int
add40 = pipe([add10, add10, add10, add10])
 
// fadd40 :: Int -> Promise Int
fadd40 = pipe([add10, add10, _ => fail("ups"), add10])

…i możemy już przetestować monadę Promise:

add40(8).then(x => console.log(x))
-----> 48

fadd40(8).then(x => console.log(x), err => console.log("err " + err))
-----> “err ups”

Powyższy kod testowany był na Firefoxie.

PrivMX WebMail – bezpieczna poczta

Dwa lata temu patrząc na naszą prototypową aplikację webową szyfrującą wiadomości, podjęliśmy decyzję, że spróbujemy ją dopracować i udostępnić publicznie. Od tamtego czasu mieliśmy sporo innej pracy przy projektach naszych klientów, ale ostatecznie udało się — od 16 października 2017 roku PrivMX WebMail pobrać można na stronie privmx.com. Zapraszamy do testowania – aplikacja jest darmowa i instaluje się ją w prosty sposób na własnej stronie internetowej. Zastosowane w PrivMX WebMail szyfrowanie end-to-end wykorzystać można również do stworzenia bezpiecznych formularzy webowych.

Linked.PM – szyfrowane wiadomości jako klikalne linki i QR kody

Ciekawych zabawek nigdy za wiele… Opublikowaliśmy właśnie niewielki programik, który szyfruje wpisany tekst i zamienia go na link oraz QR kod. Po otwarciu takiego linka i wpisaniu ustalonego wcześniej hasła można przeczytać ukryty w nim tekst. Program nie wysyła wiadomości na żadne serwery. Zapraszamy do przetestowania i spojrzenia w kod źródłowy.

Czytaj dalej Linked.PM – szyfrowane wiadomości jako klikalne linki i QR kody