Skip to content

Instantly share code, notes, and snippets.

@PhilOwen
PhilOwen / Main.hs
Created January 3, 2017 03:59
HaskellのServantとPersistentでデータの簡易配信
import Data.Time
import Data.Aeson
import Control.Monad.Logger
import Control.Monad.IO.Class
import Control.Monad.Trans.Resource (runResourceT)
import GHC.Generics
import Network.Wai
import Network.Wai.Handler.Warp
import Servant
@PhilOwen
PhilOwen / Main.hs
Created January 1, 2017 13:44
Haskellで、Raspberry Pi 2のLチカ
import Control.Concurrent
import Control.Monad
import System.RaspberryPi.GPIO
main :: IO ()
main = withGPIO $ do
let p = PinV1_13
setPinFunction p Output
forever $ do
writePin p True
@PhilOwen
PhilOwen / Main.elm
Created December 25, 2016 14:52
Elmで、P5.js風にインタラクティブにイベント対応
import Html exposing (Html)
import Svg exposing (..)
import Svg.Attributes exposing (..)
import Mouse exposing (..)
main = Html.program
{ init = init
, view = view
, update = update
, subscriptions = subscriptions
@PhilOwen
PhilOwen / Lib.hs
Created December 4, 2016 12:45
SeleniumをHaskellから
module Lib where
@PhilOwen
PhilOwen / LoginPage.scala
Created December 3, 2016 01:15
SeleniumをScalaTestから
import org.openqa.selenium._
class LoginPage(implicit val driver: WebDriver) {
def load() {
driver.get("http://localhost:8080")
}
def setId(id: String) {
driver.findElement(By.name("id")).sendKeys(id)
}
@PhilOwen
PhilOwen / README.md
Last active December 4, 2016 11:10
Backbone.jsでModelとViewを使ってみる

Backbone.jsで、DOMとそのイベントをすっきり使ってみる。
テキストボックスのキー入力をキャプチャして、 コンソールに出しつつ、サーバにポストしてみる (このGistにサーバのコードは入れていないので、エラーが出る)。 また、Nextボタンを押すと、タイトルが変わる。

Backboneは、DOM操作をしやすくするための軽量ライブラリ。 AngularのようなMVCフレームワークでなく、 ミニマルなツールを目指しているので、 他のライブラリと衝突せず、簡単に組み合わせられる。

@PhilOwen
PhilOwen / README.md
Created November 23, 2016 09:41
RequireJSで、依存する静的テンプレートファイルを管理

JSの依存関係を解決するRequireJSで、HTMLファイルも読んでみる。

JSだけでゴリゴリDOMを作るのは個人的にしんどい。 classなどに色々設定していくのは、自分でなく ちゃんとしたデザイナがHTMLでやってもらいたい。
そこで、静的なHTMLファイルを作っておき、 それをテンプレートとして、JSでは変数を流し込むような使い方をした。
RequireJSのtextプラグインでそれができる。

以下で実行。

@PhilOwen
PhilOwen / README.md
Created November 17, 2016 03:55
ElectronとD3.jsで世界銀行のAPIを呼んでみる

HTMLやJSでデスクトップアプリを作れるElectronを使ってみる。
世界銀行のデータAPIを呼んで、 ベトナムのGDPの変遷をD3.jsでグラフ化してみた。 ついでに、アニメーションで、表示する年代を 1980-2000から1990-2010へぬるっと動かしてみた。

Electronでは、メインのプロセスと描画のプロセスが別れている。 D3は、描画プロセスのほうで処理する。

World Bank APIは、ブラウザからJSでデータを取ろうとすると、

@PhilOwen
PhilOwen / README.md
Last active November 17, 2016 02:54
JSのExpressフレームワークを使ってみる。

JSのサーバサードフレームワークExpressを使ってみる。
/data/jpなどと国コードをつけてアクセスすると、 その国の平均寿命をJSON配列を返すようなサーバを作った。 クライアント側は、その配列をD3.jsでグラフ化している。

expressのフォルダ構造は、 express-generatorをnpmでグローバルにインストールした後、

express express-rest-d3-sample

などとすれば作れる

@PhilOwen
PhilOwen / Lib.hs
Last active November 6, 2016 16:34
HaskellのHUnitでhmatrixをテスト
module Lib(module Numeric.LinearAlgebra) where
import Numeric.LinearAlgebra