webネタ

Webエンジニアが業務に関係することをメモしていく

scalaでコマンド叩くときのエラー

参考資料 公式ドキュメント http://kmizu.hatenablog.com/entry/20110510/1304985703 http://www.mwsoft.jp/programming/scala/scala_process.html エラー制御 エラーが2パターンある。 1、 コマンド自体実行できないと例外(IOException)が飛ぶ scala> Proce…

すごいHaskell本のメモ

FunctorやらMonadまわりのメモ。 Functor 箱と比喩されている。リストやMaybeなど大体Functor。 fmapをもってる。(Scalaでいうmap) fmap :: Functor f => (a -> b) -> f a -> f b aをとりbを返す関数と、Functor値aをとる。aに関数を適用してFunctor値bを返…

rubyでサムネイル作成

画像を指定のサイズでうまいことリサイズし、余白を埋め、透かしをいれる。 require 'RMagick' file = ARGV[0] def main(file, w, h) img = Magick::Image.read(file).first filename = img.filename img = watermark resize img, w, h img.write "dest/#{fi…

TypeScriptでScalaのOptionを

書いてみた。 使い方↓ Optional(x).map(i => i + 100).getOrElse(0) Optional(x).exists(i => i % 2 == 0) (Optionは予約されてて使えなかったのでOptionalに) もうほとんどScalaじゃ...! TryとかEitherならすぐ書けそうだけどリスト周り書き出すとしんどそ…

require.jsの、requireとdefineの違い

require.jsのことがよく分かってなかったので、コード読んで調べてみた。 require と define requireは、名前の通り実行すると、ファイルを読み込む。 defineは、名前の通り定義をすると、キューに突っ込まれるだけで読み込みはしない。 requireを実行すると…

git cherry-pickで複数まとめて取り込む

masterに緊急でコミットしてしまって、後で開発ブランチと整合性合わせたいみたいな状況(仮) 差分を確認します。 $ git cherry -v develop master 84a9532902724a2c26c746aae2505bc60e66e7cb 緊急対応。index.html修正 9e630b327fa7879562bff8b3772f36e6a0e7…

CoffeScriptをさらに書きやすくしたLiveScript

LiveScriptは、CoffeScriptをもっとよくしたCocoのfork。 LiveScriptで書かれたpreludelsというライブラリがあるので関数型っぽい関数が使える。(foldやらscanやら) Function カリー化 f = (x, y) --> x * y f(2)(2) # 4 f = (x) -> (y) -> x * y f(2)(2) # …

Scalaのリファクタリング小ネタ (例外)

例外時にデフォルトを取るような場合 // not bad try { "a".toInt } catch { case e: Throwable => 0 } // good Try { "a".toInt }.getOrElse(0) 例外をOptionで取る場合 // not bad try { Some("a".toInt) } catch { case e: Throwable => None } // good T…

パスワードを省略したssh接続

一番いいのは、鍵認証(コマンド限定)。 鍵認証できないのなら、sshpass。(expectはやめよう) ssh 引数から ./sshpass -p “password" ssh root@192.168.1.1 ファイルから echo "password" > pw ./sshpass -f pw ssh root@192.168.1.1 環境変数から export SSH…

ブランチを新しい順に並べて表示

git

ブランチを更新日時順に並べるワンライナー。git branch sort by update tim ... gawkが必要 brew install gawk

gitの便利なfilterまとめ

gitのfilterは、checkout時 と add時 に任意のフィルターをかけることができる。 svnでやってた $Id$ みたいな変数の展開したり コードを自動で整形したり 任意のコマンド/スクリプトを実行できる 概念図 出元 $Gcid$にコミットIDを埋め込むフィルターを作っ…

Scalaのリファクタリング小ネタ (コレクション)

mapしてflattenするなら、flatMap // bad .map { ... }.flatten // good .flatMap { ... } filterしてmapするなら、collect // bad .filter { ... }.map { ... } // good .collect { ... } mapしてreverseするなら、reverseMap // bad .map { ... }.reverse …

Scalaでソート

数え上げソート (要素の最大値分箱を作っていれるだけ) バケツソート (hash(要素の最大値/n)分の箱にいれて、箱の中でソート) スリープソート (スリープしてechoするだけ) 数え上げソート。バケツソート。スリープソート。 Erlangだとpmapでスリープソート s…

Scalaで最小全域木

プリム法 (スタートから重みの小さい道を辿る) クラスカル法 (辿るのではなく重みの小さい道を選ぶ) UnionFind (グループを作ることができる構造。クラスカル法で閉炉を見つけるのに使用) 最小全域木。プリム法とクラスカル法。UnionFind。

Scalaで最短経路問題

アルゴリズムの勉強中... 深さ優先探索と幅優先探索 ベルマンフォード法 (閉炉を見つけれる) ダイクストラ法 (よりコストの低い道を進む) A* (よりゴールに近いほうから進む) ワーシャルフロイド法 (全ペアの最短経路を見つける) 深さ優先探索と幅優先探索 …

Erlang練習 part1

とりあえず書いてみた。 Erlangは末尾再帰じゃなくても速いらしい...謎い 練習

gitで重いリポジトリをcloneするとき

git clone http://example.com/fuga.git remote: Counting objects: 3203, done. remote: warning: suboptimal pack - out of memory remote: fatal: Out of memory, malloc failed error: git upload-pack: git-pack-objects died with error. fatal: git u…

Ajaxでクロスドメイン通信

Ajaxでクロスドメイン通信について調べたのでまとめ。 シンプルな例 client var xhr = new XMLHttpRequest(); var url = 'http://example.com/xhr-response.php'; xhr.open('GET', url, true); xhr.send(); server

Part2 : ErlangVMで動くRuby風の関数型言語Elixir(エリクサー) : 基礎編

Part1はこちら インターフェース defprotocolでinterfaceのようなものが定義できる defprotocol Checker do def ok?(data) end defimplでinterfaceの実装を定義できる defimpl Checker, for: List do def ok?([]), do: "ng" def ok?([h | _]) when h == 1, d…

ErlangVMで動くRuby風の関数型言語Elixir(エリクサー) : 基礎編

Erlangの奇妙な文法を覚えることなく、Erlangの機能が使えるエリクサー。 Ruby風の文法なのでRubyistには馴染みの関数などが使えるが、以下のことを頭にいれておくべし。 オブジェクト指向ではない ベースはErlangで、Rubyだと思って書くと辛い 楽天Technolo…

AS3で動画を扱ったり、JSと連携したり

ActionScript3で動画に関するメモ 動画再生 動画を再生するには以下のいずれか。 FLVPlaybackを使う。 flexのspark.components.VideoPlayerを使う。 Videoクラスなどを使い自前で作る。 1がスタンダード。 FLVPlayback 使い方 ウインドウ -> コンポーネント …

Scalaでフィボナッチ数列のメモ

なんか面接とかでたまに書かされるらしいので Listで再帰 // ListFib.f(100) object ListFib { def f(lim: Int): List[Int] = { 1 :: 2 :: f(1, 2, lim) } def f(a: Int, b: Int, lim: Int): List[Int] = if (b > lim) { Nil } else { b :: f(b, a + b, lim)…

文字列内の数値をインクリメントする

/** * 文字列内の数値をインクリメントする * ex) TextIncrementer("abc123efg456hij").++() // abc124efg457hij * ex) TextIncrementer("あいう1 2 3えお").++() // あいう2 3 4えお * @param t インクリメントしたい文字列 * @param incrValue いくつイン…

Fluentdまとめ

Fluentdとは? ログを収集・集約するruby製のミドルウェアです。いままではrsyncやscpでログを全サーバーから回収したりしてたと思いますが、fluentdを使えば便利に色んな方法でログを集めることができます。 仕組み Fluentdは、Input・Buffere・Outputという…

有名フレームワークのCSRF対策方法を調べたまとめ

ZendFramework 流れ 表示時 : token生成→hiddenセット + セッションにセット 送信時 : 送られてきたtokenをセッションにあるものと同じかでチェック token生成方法 ランダム値 + salt + 固定値 + ランダム値 md5( mt_rand(1,1000000) . $this->getSalt() . $…

JavascriptでSingletonパターン

Singletonで実装したい要件があったが、ググッっても良いのがなくて本読んでも残念なものしかなかったので自分で実装してみた。ちなみに本は、JavaScriptパターン ―優れたアプリケーションのための作法。 要件 newできないようにする。 同一オブジェクトを返…

クロスドメインでcookie書き込む方法 +クロスブラウザで

あるサイトから別ドメインのクッキーを書き込む。こういうクッキーは、サードパーティクッキーと呼ばれる。FirefoxとChromeはデフォルトでサードパーティクッキーが書き込めるようになっているが、IEとSafariが問題になる。IEはコンパクトポリシーというもの…

iPhoneアプリでNode.js

iphoneアプリでnode.jsと通信する。 ネイティブアプリでリアルタイムな通信ができるので幅が広がりそう。 環境はMacOSX10で、今回は全部ローカル作業。 objective-cでWebSocket通信 iPhoneアプリとnode.jsで双方向通信するのは、もちろんWebSocketで行う。no…

さくらVPSでDropbox

個人サーバーのバックアップがめんどうなので、dropboxのアカウント作ってそこに放り込むことにした。 環境はLinux。CentOS5.6(64bit)さくらVPS。 必要なものをインストール python2.6 sudo yum install python26 dropboxコマンドの準備 ソースをダウンロー…

gitリポジトリの作り方

gitリポジトリの作り方まとめ。構成図はこんな感じ。ローカルにxampp置いて開発。 マスターリポジトリ = /var/git配下 HTTP公開用リポジトリ = /var/www/vhosts/配下 マスターリポジトリ(公開リポジトリ)の作成 mkdir -p /var/git/sample.git cd /var/git/sa…