PHPのセッション保存周りについて

php

PHPのセッションとセッションハンドラ PHP は session_start(); をコールしたあとで $_SESSION にアクセスするだけでお手軽にセッションを利用することができます(ここではセキュリティの話は置いておく)が、よく知られた通り、デフォルトではこのとき $_S…

開発環境でのみ、リクエスト毎になんか処理をフックしたい in Ruby

RackMiddleware を使うのが筋が良い気がする。 middleware 用意する # lib/rack/nyan.rb module Rack class Nyan def initialize(app) @app = app end def run(env) run_hook @app.call(env) end private def run_hook # なんかする end end end config.ru …

YAPC::Asia 2014 落選しました

Perl Mongers のための Scala 入門中の入門 というトークを YAPC::Asia 2014に応募していましたが、落選しました。 Scala の話は、はこべさんによるより実践的な内容のトークであるところの Scala In Perl Company : Hatena が採択されていますので、そちら…

続・結局型クラスって何がうれしいのっていう話

今回は時間がないので簡単に見ます。 型クラスによってアドホック多相が実現されるとどんな柔軟なことができるのかという例を見ましょう。 たとえば、List#max について見て見ましょう。これ、要素が String だったら辞書順での最大値を返すし、Int だったら…

で、結局型クラスって何がうれしいの、ということの説明

前回の記事では、Scala では implicit parameter を利用することで型クラスと同等のことが実現できることがわかりました。しかし前回の疑問として、「で、それの何がうれしいのよ」というのは残っていましたね。 今回はそのうれしみをなるべくわかりやすく説…

Scala の implicit parameter は型クラスの一種とはどういうことなのか

なんか型クラスとか言うと型の怖いひとたちが怖い話をワイワイしてるイメージがありますよね。わたしはあります。「で、それって何がうれしいのよ」とか、そういう話はあまりされていないような印象がありますね(あくまで印象です)。その上 "Scala の impl…

Rails で content-type が application/json などの場合、MethodOverrideが効かない件

背景 Rails には MethodOverride の仕組みがあって、これはなにかっていうと、HTTP method が POST の場合でも _method=PUT とかそういうパラメーターを付けてリクエストしてあげると Rails のレイヤーではそのリクエストを PUT として扱ってくれるやつです…

稀風社の「海岸幼稚園」を読んだ

稀風社(id:kamiharuとid:suzuchiuの短歌同人)の「海岸幼稚園」を読んだ。ので感想を。あくまで「印象」の話であり、批評みたいなものではない。 鈴木 & 三上はどちらも「欠落/不在」をよく歌うというのはいろんなひとが言ってるんだけど、鈴木さんの歌は「無…

PHP の curl_multi_exec はなぜPHPなのにパラレルで処理できるのか

php

発端 某所で「最近のPHPのcurlライブラリはパラレル取得できる」ときいて「エッなんで、PHPって基本シングルスレッドだしイベントループみたいな機構もないと認識してるんだけど」って思って調べた。 追記:と思ったが、この記事を書いた後さらに調べたら、そ…

日記、文フリがある

文フリという、一部のひとから多大な関心を寄せられているけどその他にひとにとってはどうでもいいみたいなイベントが行われるのだけれど、そこで稀風社という短歌結社が「海岸幼稚園」という本を出す、らしい。らしい、というのは、わたしがこの稀風社とは…

読み取り権限がなく実行権限だけのファイルが実行できるのはなぜ? - カーネルのソースを読む -

きっかけはこのツイート。 基礎的なことなんだろうけど理解できてないこと。 読み取り権限のない実行権限だけのファイルってどういう扱いになるんだろう。— ゑぬぽい改@電探が出(ん)たん? (@NPoi) March 27, 2014 実際にやってみるとわかるけど、実行権限…

webアプリエンジニア養成読本 #webapp_mook をいただきました

著者のひとり id:uzulla さんから「webアプリエンジニア養成読本」という本を献本頂きました。うれしい! Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)作者: 和田裕介,石田絢一(uzulla)…

TypeScript コンパイラが面白い挙動した

どういうやつ こういうやつ どうして見つけたの rails プロジェクトで TypeScript使おうと思って、application.js を application.ts にしたんだけど、そのときになにかしらコードが application.ts に書かれてないとコメント部分を .js のほうに写し取って…

要するに DI って何なのという話

友人から「しんぺいさん DI について書いてほしい」みたいな話をだいぶ前からされてたんだけど書く気力ずっとなかった。でも仕事の気分転換にちょっとずつ書いたやつがいい量まとまったので公開するです。たいしたことは書いてないっていうか知ってるひとに…

猫型プログラミング言語史観(2) 〜あるいは実行コンテキストにどう立ち向かうのか〜

前回のおさらいと今回の話 前回は手続き型パラダイムとオブジェクト指向パラダイムを見比べたときに、「ひとかたまりのデータとそれを操作する手続きを一カ所にまとめて守る」という方向に言語が進化していったというひとつの史観を示しました。その中で返答…

猫型プログラミング言語史観(1) 〜あるいはオブジェクト指向における設計指針のひとつ〜

TL;DR 手続き型プログラミングでは手続きを抽象化することで保守性を挙げることに成功したが、データを守ることには失敗してしまった。そこでオブジェクト指向はデータと手続きをひとかたまりにすることでデータを外から守るというコンセプトを打ち出した。 …

近況報告

ウォーターセルにjoinして思ってること書きます。技術以外の話です。 わたしはおいしいものがすごく好きだし、人間の生活における幸福のうち6割はパンで満たされると思ってる(人はパンのみで生きるわけではないけれど半分以上はパンを食べる喜びで生きてい…

師走なので今年おこなったプログラマー活動を振り返る

年末までまだあるし年内の活動まだ確定してないけど、なんか年内忙しくてもうなんもできなそうだから今公開します。 総括 今年は去年に比べると格段にオープンソース活動ができたのでよかった感じがする。 一方、家庭優先にしててコミュニティ活動(Niigata.p…

PHP はいつもわたしに新鮮な驚きを与えてくれる

php

ことの始まり PHP の srand 関数について調べていて、ひょんな拍子にsrandのseedに文字列(numericである必要はあるけど)を渡せることを知った。 では、ここに long を超えるものを放り込むとどうなるのか。 では結果をごらんください。 「!?!?」 なぜ…

ブログの名前を変更しました

旧称:「life.should be_happy # => 1 examples, ? failures」 新称:「猫型の蓄音機は 1 分間に 45 回にゃあと鳴く」 です。旧称のほうは rspec っぽい記法で「幸福は市民の義務である」的なディストピア感があって気に入っていたのですが、いいかげん expe…

Rubyにおける「環境」の話

環境というのはスコープと言い換えてもいいけど、ようするに「今実行している行から何が見えて何が触れるのか」という話。一度自分の頭の整理のためにきちんとまとめておきたいと思っていたので昼休みを利用してまとめる。 基本 環境変数 ENVっていうハッシ…

JavaScript で UI を書くことについて思ってることを書く

最近ギョームでジャバスクリッ書いてる。というか CoffeeScript 書いてる。 そんな中で、ある程度以上複雑なUIを動的型付け言語で書くのは狂気の沙汰だという気持ちがある。 サーバーサイドは結構論理的にきれいな設計にできることが多く、そんなに複雑なオ…

例外あがってきたときに回数制限つきで retry するのどうやったらきれいに書けるの問題 in ruby

1年くらい前(?)にわたしのTLで話題になったやつに1年越しでいい案が生まれたので、こういうのはどうかという記事を書く。 id:kksg 向けのエントリである。 class MyError < StandardError; end def maybe_fail(max_retry = 1) raise MyError, 'error' unl…

最近 IDE 使ってる

ruby 書くときの話なんだけど。ずっと emacs 使ってて、そのあと vim に乗り換えて、今 IDE 使ってる。 emacs のときは flymake が便利だなーって感じがあったんだけどなんだかんだで設定とかけっこうしないといけないし rbenv 使ったらハマった〜みたいなこ…

やはり俺のMVCは間違えている in Backbone.js

昨日のエントリの続き。こっちのほうが有益な情報になってると思うんだけど多分昨日ほどはのびない。 さて、昨日のエントリーでは「Backbone.jsのViewはControllerってことなのか〜それは俺が間違えてたわ〜、えっじゃあ Marionette.js 使う場合はどうなの」…

やはりおまえらの MVC は間違えている in バックボーンジェーエス

続編の紹介 続編 やはり俺のMVCは間違えている in Backbone.js を書いた。そっちのほうが有益な情報が乗ってると思うけど面白くないかもしれない 以下本編 MVC の話と宗教の話と政治の話と野球の話はしてはいけないそうですがそんなの知るか俺はするぞ クラ…

rack-session-php というニッチなモジュールできたよ〜

何をする gem なのか Rack から PHP のセッションファイルを読み書きする gem であります。既存の gem にも似たような乃があるのですが、デシリアライズをまじめにやってなかったり、マルチバイト食わせると死んだり、read-only だったりしたので自分で書き…

php_session という gem を書いた

何をする gem なのか RubyからPHPのセッションファイルをいじりたいみたいなこと、あんまりないと思う。 でも、PHP で動いてる大きめのアプリケーションを Ruby に載せ変えたいね〜みたいなことはある気がする。一気に作っちゃってもいいんだけど、ちょっと…

jasmine で Backbone.js とか Marionette.js の view のテストしたい

問題 テンプレートが html とかに書かれてて html ファイルと js が密結合しててつらい。たとえば template: "#nyan" とかなってる Marionette.js のviewをテストするときにそこにテスト側から任意のテンプレートをインジェクトしたい 解決方法 jasmine-jque…

middleman 使った場合のユニットテストどうするのがベストプラクティスなの

情報が少ない。 参考までに私が今やってる環境を書いておく。 middleman 使ってCoffeeScriptでガリガリ開発する ユニットテストは jasmine を使って、spec も CoffeScript で書く E2Eテストは今のところまだ考えてない という状況。jasmine はCoffeeScriptを…

middleman 良かった

クライアントサイドのお仕事が一個入って、ためしにmiddleman使ってみたら良かった。 セットアップ 公式読めば良い 使い方 公式読めば良い その他 公式読めば良い 与太話 プログラマー、公式のドキュメント読めば良いのに読まないでわざわざ変な自己流みたい…

Gatchaman gem の version 0.2.3をリリースしました

src 属性が存在しないimgタグがあるとnilで死ぬ問題点が修正されました。thanks to wneko! というか Gatchaman のメンテ、完全にうーねこがやってるのでもうかんぜんに wneko ware ですね!いつもありがとうございます! ちなみに Gatchaman gem はこういう…

ウォーターセル株式会社に join します

とはいえ、パートタイムです。今までの仕事も今まで通り行ってるので、実情としては仕事を増やしたという感じです。子供できてお金必要だし。みなさんの大好きな転職エントリではありません。具体的な仕事はまだ始まってない(今週金曜日が初仕事です)し、…

Scalaの勉強会、Scala入学式を新潟県長岡市でやってきました #nds33

Scala 一年生のわたしですが、僭越ながら「みんなで Scala に入門しようぜ!」というハンズオン形式のセミナーの講師を行ってきました。「Scala 入学式」という名前は papix 氏がやってる「Perl 入学式」のパクりです! この勉強会に使った資料は以下にアッ…

YAPC::Asia 2013 レポート

YAPC::Asia 2013 にはプライベートの都合で参加できませんでした。YAPC今年もすごく楽しかったです。とくに dankogai が親指を立てながら溶鉱炉に沈んでいくシーンは涙無しには見られなかった。 クソ!行きたかった!!!!!

なぜ akka を使うべきなのか

馬鹿にはマルチスレッドは複雑すぎる わたしマルチスレッド怖いんです。なんでかっていうと、あれ、これってスレッドセーフだっけ?とか考えないとだめだし、えーっとこの変数は別のスレッドからアクセスされる可能性があるから〜とか考えないとだめ。あとロ…

spray io を使って akka に HTTP インターフェイス持たせるみたいなやつ

GET / するとストリーミングを開始して、POST / するとそのPOST内容が GET / してるクライアントたちに即配信されるという簡単なサンプルをアレしてみた。 なんかレスポンスが終わる(というかコネクションが切れる)たびに user/IO-HTTP/listener-0/* から …

突然死botちゃんのコードが奇麗になったよ

おかげさまでご好評をいただいている突然死botですが、初めて Scala で書いたプロダクトだったゆえかなり凄惨なソースとなっておりました。 そこで、最近ようやく Scala にも慣れてきたので、specs2でmockito使ってテストするのの練習もかねて、エイヤっとリ…

Akka 2.2 の pipeline のテストを書く

PipelinePorts を作ってそこにコマンドやイベントを流し込めば普通に結果が返り値で返ってくるのでテストを書きやすい val pipelinePort = { val ctx = new PipelineContext {} PipelineFactory.buildFunctionTriple(ctx, new YourPipelineStage) } // パイ…

Akka2.2 既に死んでるactorをwatchした場合どうなるのか

ちゃんと Terminated が送られてくる see http://doc.akka.io/docs/akka/2.2.0/general/supervision.html#what-lifecycle-monitoring-means One important property is that the message will be delivered irrespective of the order in which the monitori…

Akka(2.2) のネットワークサーバーを Graceful に shutdown

こんな感じでどうでしょうね。 解説はコメントを参照のこと。 import akka.actor._ import akka.actor.Terminated import akka.io._ import akka.io.IO import akka.util.ByteString import java.net.InetSocketAddress import scala.collection.immutable.{…

APNsGatewayServer を書いてたら AWS に仕事を奪われたので現代のラッダイト運動を起こしたい

APNsGatewayServer を書こうの巻 えー。APNsとのやりとり部分を書くのはなにげにとても面倒です。面倒な理由として プロトコルがアップルのオレオレプロトコルであり、なおかつバイナリでやりとりしている APNsサーバーに対してリクエストを送っても、基本的…

TcpPipelineHandlerで管理してるコネクションを切るの術

解決したい問題 Akka でネットワークサーバーを書く場合、エンコード/デコードの部分は Pipeline を利用し、TCPレイヤーの IO をその Pipeline に流し込む場合は TcpPipelineHandlerを利用するのが定石だと思いますが、ではサーバーがレスポンスを返したあと…

科学とかそういうのに対する不信の話

「専門家達の作り上げた検証のプロセス」に対しての不信が強いひとたちというのが一定数いるように思う。 たとえば、編集作業はどんな編集であろうとそれそのものが悪であり、編集されていない生の声が見れるインターネット上の言論こそが本物だ!と主張する…

レールルで Controller から ActiveRecord を生で触るのをやめたい話

単純な操作ならいいんだけど、複数テーブルに対してごにょっと操作をして、それがアトミックでなくてはならなくて、みたいなときの話。 単純な複数テーブルに対する操作なら多分主従の関係みたいなのあると思うしそういうときには主のほうを表すARを継承した…

Ruby の練習問題書いてるけど問題作るのってむずかしい

Ruby の練習問題を作ろうとしてるんだけど、問題を作るのってめちゃめちゃむずかしい。 今はとりあえず課題ひとつだけつくって、それは単方向リストを実装しろっていう課題なんだけど、これが「どのくらいの難易度なのか」ということがまずわからない。あと…

Scala の implicit conversions がよくわかんなかったからいろいろやってようやくわかった気がする

アホなので implicit conversions みたいな魔術っぽいことされると「えっなになに」「なにが起きてるの」ってなってしまって混乱する。いままでの「なんとなくこんな感じのアレだよね」みたいなやつとしては、たとえば String を wrap するような SugoiStrin…

Ruby で Scala の Option っぽいやつを実装してみた話

こんな感じで実装できた。Option (Haskell で言うところの Maybe)はモナドの中でもかなりわかりやすく実装しやすい。foreach とか filter は実装してない。 ただ、これだけがあっても、map や flatmap とか foreach とかを組み合わせたときに読みやすい感じ…

「オブジェクトをイミュータブルにしろ」って言うけど、それってたとえば状態が変わったらオブジェクト作り直すってことでしょ、ちょう非効率じゃん。って思ってたんだけど、

オブジェクトの内部の値がイミュータブルであれば、今後もその値は変更されないことが保証されているので、新しい状態を持った新しいオブジェクトの内部の値のうち、変更のない部分(つまり値のうちのほとんど)は古いオブジェクトの値をそのまま参照すればよ…

Re: チャットとかでパスワードを教えるとき暗号化すると良い

この記事。3ヶ月以上前のやつなんだけどちょうどいい題材なので今更これに反応してというか勝手に乗っかって秘密鍵と公開鍵のことについて書く。 この記事では同じキーを使って暗号化と復号化を行っているけれど、これだと「じゃあそのキーをどうやって共有…