書いてみた。 使い方↓ Optional(x).map(i => i + 100).getOrElse(0) Optional(x).exists(i => i % 2 == 0) (Optionは予約されてて使えなかったのでOptionalに) もうほとんどScalaじゃ...! TryとかEitherならすぐ書けそうだけどリスト周り書き出すとしんどそう... TypeScript結構いいっぽい。coffeeも試してみたいけど型が... class OptionT<A> { isEmpty: boolean get: () => A map<B>(f: (a: A) => B): OptionT<B> { return this.isEmpty ? new None : new Some(f(this.get())) } flatMap<B>(f: (a: A) => OptionT<B
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) # 4 合成 f = (x) -> x + 1 g = (y) -> y + 2 (f << g)(1) # 4 (f . g)(1) # 4 (f >> g)(1) # 4 List パイプ [1 to 10] |> map (i) -> i * i |> reverse |> head # 100 リスト内包 [ x + y for x to 3 when x % 2 is 0 for y to 3 ] # [0,1,2
例外時にデフォルトを取るような場合 // 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 Try { "a".toInt }.toOption // good allCatch.opt { "a".toInt } 例外をEitherで取る場合 // not bad try { Right("a".toInt) } catch { case e: Throwable => Left(e) } // good allCatch.either { "a".toInt
gitのfilterは、checkout時 と add時 に任意のフィルターをかけることができる。 svnでやってた $Id$ みたいな変数の展開したり コードを自動で整形したり 任意のコマンド/スクリプトを実行できる 概念図 出元 $Gcid$にコミットIDを埋め込むフィルターを作ってみる やりたいこと git checkout時に指定ファイルの、 echo "$Gcid$"→echo "$Gcid: bcc4bbe68b26a65a1597752a$"に展開。 git add時は逆に、 echo "$Gcid: bcc4bbe68b26a65a1597752a$"→echo "$Gcid$"に戻す。 手順 gitの設定でfilterを定義 (.git/config) フィルターの対象を定義 (.gitattributes) フィルター時に実行するスクリプトを用意 (embed-comm
mapしてflattenするなら、flatMap // bad .map { ... }.flatten // good .flatMap { ... } filterしてmapするなら、collect // bad .filter { ... }.map { ... } // good .collect { ... } mapしてreverseするなら、reverseMap // bad .map { ... }.reverse // good .reverseMap { ... } flatMap内でmapするなら、for 例えば、List[Option[A]]のようなありがちな構造に何かするとき // not bad.. l.flatMap { o => o.map(_ * 2) } // good! for { o <- l i <- o } yield i * 2 さらにfilt
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 upload-pack: aborting due to possible repository corruption on the remote side. remote: aborting due to possible repository corruption on the remote side. fatal:
javaプロセス一覧 普通にps % ps aux | grep java jps % jps 64806 activator-launch-1.0.8.jar % jps -v 64806 activator-launch-1.0.8.jar -Dactivator.home=/Users/ryohongo/Downloads/activator-1.0.8 -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=128m jps便利。 様々な統計 jcmd threadやgcやロードしてるクラス数など色々な情報がざっくり出る。 % jcmd 64806 PerfCounter.print java.ci.totalTime=5259552 java.cls.loadedClasses=8353 java.cl
Ajaxでクロスドメイン通信について調べたのでまとめ。 シンプルな例 client var xhr = new XMLHttpRequest(); var url = 'http://example.com/xhr-response.php'; xhr.open('GET', url, true); xhr.send(); server <?php header('Access-Control-Allow-Origin: *'); echo "ok"; Access-Control-Allow-Origin: *を付けてレスポンスすると、エラーにならず結果を受け取れる。 クッキー付きの送信 client var xhr = new XMLHttpRequest(); var url = 'http://example.com/xhr-response.php'; xhr.withCrede
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, do: "ok" def ok?([2 | _]), do: "ok2" end defimpl Checker, for: Number do def ok?(1), do: "ok" def ok?(_), do: "ng" end Checker.ok?([1,2,3]) # ok Checker.ok?([2,3,4]) # ok2 Checker.ok?([3,4,5]) # ng
Erlangの奇妙な文法を覚えることなく、Erlangの機能が使えるエリクサー。 Ruby風の文法なのでRubyistには馴染みの関数などが使えるが、以下のことを頭にいれておくべし。 オブジェクト指向ではない ベースはErlangで、Rubyだと思って書くと辛い 楽天Technologyカンファレンスでセッションがあったり、Erlangを簡単に書ける言語としてこれから普及していくのではないでしょうか! インストール brew install elixir iex iex irbのようにiexで、試し書きが簡単にできます。(iexはerlのラッパー) 基本文法 四則演算 1 + 1 # 2 1 - 1 # 0 1 * 1 # 1 1 / 1 # 1.0 div 1, 1 # 1 rem 2, 4 # 2 # 2 % 4 not work 型 "a" # string 1 # integer
はじめに Backbone.jsを使って、管理画面を作ったときのことを備忘録も兼ねてまとめて記事にします。 Backboneは入門やHelloWorldはたくさん情報があるんですが、実際使うとなると色々と考えることが多くて大変です。少しでも役に立てればと思います。(・ω・ ) 開発メンバー 5人。JavaScript経験者2人。Backbone経験者0人。(・ω・`;).. 全員JavaやScalaの経験がそれなりにある。 まずはじめに 今回は、全員3日程度ですがBackbone.jsを勉強する時間がありました。 その間に自分がBackboneで一部分実装し、ベースを作成することに。 勉強に使ったのは、主に Backbone.jsガイドブック。 学習のとっかかりとしては、ドットインストールがいいんじゃないかと思います。 ベースの作成 コーディング規約 まずはJavaScriptのコーディン
ZendFramework 流れ 表示時 : token生成→hiddenセット + セッションにセット 送信時 : 送られてきたtokenをセッションにあるものと同じかでチェック token生成方法 ランダム値 + salt + 固定値 + ランダム値 md5( mt_rand(1,1000000) . $this->getSalt() . $this->getName() . mt_rand(1,1000000) ); まとめ ランダム値をセッションにいれて、送られてきたものとチェック。 Symfony 流れ 表示時 : token生成→hiddenセット 送信時 : 送られてきたtokenを、再度生成したtokenと比較して同じかチェック token生成方法 salt + 固定値 + セッションID sha1($this->secret.$intention.$this->getSe
転職活動中なので、面接受けてるのですが『最近注目してるwebサービスは?』とか『予算の上限なければ、どんなwebサービス作りますか?』とか聞かれたのでまとめてる。ちなみに自分はソーシャル翻訳について話しました。英語も覚えれるしお小遣いにもなるしいいよーと。web系企業受ける人は、自分が作りたいサービスの一つや二つアイデアもってないとですね。 ソーシャル翻訳サービス - Conyac http://conyac.cc/ 翻訳者として登録すると、翻訳依頼が大体一日100件くらい着ます。先着2名の翻訳者は、ポイントがもらえていくらか貯まると現金化できるます。 やはり仕事感覚で、翻訳すると吸収率が違いますね!どんどん覚えれます。 英単語や文法を保存する場合は、http://wordra.com/ が便利です。GoogleDocsに保存してたけど崩壊しました^^。 ソーシャルファッションサイト -
正月だし書き溜めてある記事を除々に投下していく(。´ω`。) デプロイについて 開発環境で作ったものを本番環境にUPするときデプロイとか言いますが、色々な方法があります。 優劣的には、WinSCP <<< rsync <<<<<<<<<<<<<<<<< Capistrano です。 rsyncだけとかもうツライです。 Capistranoのインストール 簡単インストール sudo gem update --system sudo gem install capistrano sudo gem install capistrano_colors sudo gem install capistrano-ext sudo gem install capistrano_rsync_with_remote_cache デプロイ先の設定ファイルを生成 mkdir ~/deploy cd ~/deplo
追記 http://d.hatena.ne.jp/R-H/20120106/1325837092 に書きましたが、このYumリポジトリを使えばデフォルトでUTF8になってるので大丈夫です。 前置き MySQLのデフォルト文字エンコーディングはlatin1です。なのでutf8化するにはmy.cnfに設定を加えたりします。 default-character-set = utf8 skip-character-set-client-handshake を加えないとutf8化できません。 ですが『mysql skip-character-set-client-handshake』とかでググるとskip-character-set-client-handshakeは使わないほうがいいという記事がいっぱいでてきますね。 正しい方法 自分でビルドしてください。 最近のMySQLだとcmakeみたいです
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く