Skip to content

Instantly share code, notes, and snippets.

View lagenorhynque's full-sized avatar
🐬
architecting & managing

Kent OHASHI lagenorhynque

🐬
architecting & managing
View GitHub Profile
@lagenorhynque
lagenorhynque / elixir-from-a-clojurians-perspective.md
Last active December 23, 2023 11:19
ClojurianからみたElixir

ClojurianからみたElixir


(defprofile lagénorhynque
  :id           @lagenorhynque
 :reading "/laʒenɔʁɛ̃k/"
@lagenorhynque
lagenorhynque / lousy_calculator.clj
Created April 30, 2019 18:01
Typespecs in Elixir & clojure.spec in Clojure
(ns lousy-calculator
(:require [clojure.spec.alpha :as s]))
(s/def ::number-with-remark (s/tuple number? string?))
(s/fdef add
:args (s/cat :x number?
:y number?)
:ret ::number-with-remark)
@lagenorhynque
lagenorhynque / generic_size.clj
Last active May 1, 2019 05:28
Protocols in Elixir & Clojure
(ns generic-size)
(defprotocol Size
(size' [data] "Calculates the size (and not the length!) of a data structure"))
(extend-protocol Size
String
(size' [s] (count s))
clojure.lang.IPersistentMap
(size' [m] (count m))
@lagenorhynque
lagenorhynque / worker.clj
Last active April 27, 2019 15:51
Sequential vs concurrent execution in Elixir & Clojure
(ns worker)
(defn random []
(inc (rand-int 100)))
(defn sleep [n]
(println (str "sleep(" n ") started."))
(Thread/sleep n)
(println (str "sleep(" n ") ended."))
(str "result-sleep(" n ")"))
@lagenorhynque
lagenorhynque / logback.xml
Last active April 8, 2019 02:06
Logback settings for Pedestal
<configuration scan="true" scanPeriod="1 seconds">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyyMMdd HH:mm:ss} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
</root>
@lagenorhynque
lagenorhynque / introduction-to-intellectual-property-law.md
Last active November 11, 2022 07:03
ソフトウェア開発に関わる知的財産法入門

ソフトウェア開発に関わる知的財産法入門


(defprofile lagénorhynque
  :id           @lagenorhynque
 :reading "/laʒenɔʁɛ̃k/"
user> (require '[clojure.spec.alpha :as s]
'[clojure.spec.test.alpha :as stest])
nil
user> (s/def :contact/name string?)
:contact/name
user> (s/def :contact-info/type keyword?)
:contact-info/type
user> (s/def :contact-info/email-contact-info string?)
:contact-info/email-contact-info
user> (s/def :contact-info/postal-contact-info string?)
dev> (let [count (volatile! 0)
t1 (Thread. #(dotimes [_ 1000] (vswap! count inc)))
t2 (Thread. #(dotimes [_ 1000] (vswap! count inc)))]
(.start t1)
(.start t2)
(.join t1)
(.join t2)
@count)
1577
dev> (let [count (atom 0)
@lagenorhynque
lagenorhynque / Model.hs
Last active March 3, 2019 15:45
Simple "user" modelling examples in Clojure, Haskell & Scala.
{-# LANGUAGE NamedFieldPuns #-}
module Model where
data User = User { firstName :: !String
, lastName :: !String
}
deriving Show
fullName :: User -> String
dev> (q #:venia{:operation #:operation{:type :query
:name "MemberById"}
:variables [#:variable{:type :ID!
:name "id"}]
:queries [[:member_by_id {:id :$id}
[:member_name
[:ratings [[:game [:name
[:rating_summary [:count
:average]]
[:designers [:name