TypeScript の仕様を眺めた

TypeScript - JavaScript that scales. MicrosoftがJavaScript系の新言語「TypeScript」を発表、C#の父が開発 | 日経 xTECH(クロステック) TypeScript、JavaScript とある程度互換性あるし、読みやすい JavaScript のコードに変換してくれるし、既に実験場…

std::future::is_readyが無くなった理由

C++

ある時期までの std::future 関数では、std::promise によって値や例外がセットされているかどうかを問い合わせる関数がありました。しかし現在の C++11 の仕様書では消されています。 なぜ消されたのか気になったので調べてみたところ、以下の文書が見つか…

Warp を高速化した話のメモ

Mighttpd 作者の @kazu_yamamoto さんが、Warp をどうやって高速化したのかというのを Yesod ブログで書いています。 Improving the performance of Warp Sending header and body at once Caching file descriptors Composing HTTP response headers Avoidi…

cabal の使い方

cabal は dependency hell が怖いので、こんな使い方をするのが一番いいんじゃないかなーという方法です。 毎回 cabal-dev を使うのは非常に時間が掛かるし容量も取るのですが、まあ dep hell に引っかかって時間を無駄にするよりはいいんじゃないかなーと。…

mapのoperator[]

C++

cppreference.com の map::operator[] の説明を読むと、こんなことが書かれています。 1) Essentially performs (insert(std::make_pair(key, T())).first)->second. 2) Essentially performs (insert(std::make_pair(std::move(key), T())).first)->second.…

Pythonで遊んだ

昨日 id:cooldaemon さん含む数人でカフェに行って話していて、 Z会三年生中学受験コース5月のてんさく問題を Python で解いてみた - cooldaemonの備忘録 の話になりました。 で、これって初期値を 1974 以外の値にしたらちゃんと収束するんだろうか? とい…

Boost.勉強会 #9 つくばでLTしてきた

C++

発表資料: Effective STL 11 - Google スライド 10分間のLTのくせに48ページも使いました。 が、ちゃんと10分ぐらいで終わった気がします。ビデオまだ見てないのでわかりませんけど。 で、この資料は10分で説明することを目的にしてて、あまりに簡潔すぎて足…

EventSourceについて発表してきた

昨日、partake.inで、10分ぐらいでEventSourceの話をしてきました。発表資料は一応あるのですが、それだけだと全く意味が分からないので、当日話したことをここにまとめておきます。 EventSource とは HTTP の仕組みを使って、クライアント側でリアルタイム…

日経ソフトウエアの連載記事

C++

最近この記事ばっかりな気がするのは置いといて。『新規格で学ぶC++入門』最終回となる第4回は、マルチパラダイムについて書きました。日経ソフトウエア 2012年 05月号 [雑誌]作者: 日経ソフトウエア出版社/メーカー: 日経BP社発売日: 2012/03/24メディア: …

日経ソフトウエアの連載記事

C++

『新規格で学ぶC++入門』第3回は『汎用性を高めるジェネリックプログラミング』というお話を書きました。日経 ソフトウエア 2012年 04月号 [雑誌]作者: 日経ソフトウエア出版社/メーカー: 日経BP社発売日: 2012/02/24メディア: 雑誌購入: 4人 クリック: 68…

コンパイル時にファイルからテキストを読み込む

例えばテキストを埋め込むだけなら、 main = putStrLn $(LitE . StringL <$> runIO (readFile "hoge.txt")) -- hoge.txt の中身は hogefuga と書かれているとする。 とするだけで、 main = putStrLn "hogefuga" と同じ意味になってくれます。 ファイルが無か…

さくらVPSにArchLinux入れた

まあほとんど以下のページをそのままやっただけですががが memo いろいろ間違ったりショートカットしようとして何度もOS入れなおすハメになったのですが、その中でも一番多かったのが、シリアルコンソールが使えなくて詰んだことです。素直に↑の方法に従いま…

日経ソフトウエアの連載記事

C++

いろいろ忙しくてブログで紹介するのがすっかり遅くなってしまいましたが、最近は日経ソフトウエアで『新規格で学ぶC++入門』という連載記事を書かせてもらってます。 主に Java や C# を使っている人向けの話なので、C++ をよく知っている人にとってはあま…

Arch 構築メモ

絶対これ忘れるので、今のうちにできるだけ書いておく インストール $ km i386/qwerty/jp106.map.gz を選択 フォントはスキップ$ /arch/setup 1 Select source testing系以外は選択 3 Set clock 時間はAsia/Tokyo ntp設定する 4 Prepare hard drive(s) FSは…

C++03 の仕様から変更のあったライブラリ

C++

この記事は C++11 Advent Calendar 13 日目の記事です。 C++03 で用意されていた標準ライブラリは基本的にそのまま残っていたり deprecate されていたりとかぐらいしかありませんが、それでも少し仕様が変更されていたりとかしています。 後方互換性を維持す…

Boost.Context について調べた

この記事は Boost Advent Calendar 13 日目の記事です。 Boost.Context は、跋扈するコンテキスト切り替えの利用を統一するべく颯爽と現れた救世主です(大げさ)。 そもそもコンテキスト切り替えって何ぞや?という場合は、適当にググるか、自分の Boost.Co…

Data.Enumeratorとの戦いの記録

これは Haskell Advent Calendar 2011 3日目の記事です。 Data.Enumerator はいろいろすごいらしいです。 どれぐらいすごいのかは 2010-08-24 Enumerator Package – Yet Another Iteratee Tutorial | Preferred Research 使ってみよう Enumerator - あどけな…

vector の話

C++

vector は vector に対して特殊化されていて、領域を無駄にしないように、ビット単位で格納されるようになっています。 これは使用する領域が少なくなる反面、 &v[0]+i == &v[i] であるという、vector としての特徴の一つを満たさなくなってしまいます。 他…

ポイントフリースタイル入門

Haskell にはポイントフリースタイルというのがあります。 例えば foo x = f (g x) という中の x というのが「ポイント」と言うらしいです(型を明示していないから x の型が a->b だったりする可能性もあるけどその可能性は置いといて)。要するに値のこと…

モナドとモナド変換子のイメージを描いてみた

最初に言っておくと、モナドって何なの?っていう答えは一切ないです。 自分にとってモナドは「とりあえず型さえ合わせておけば何かいろいろしてくれる奴」程度としか認識できていないので、そんな説明できないです。 で、そんな自分が脳内でどういう風にイ…

Data.Aeson が便利すぎる件

JSON を扱うライブラリで一番簡単に見つかるのは Text.JSON ですが、しばらく使ってると、あまりの使いにくさに発狂しそうでした。 ということで他のを探した結果、Data.Aeson というのがかなりよさげだったので、これを使うことにしました。 しばらく使って…

第4回 ZABBIX-JP勉強会に行ってきた

2011/10/22_第4回 ZABBIX-JP勉強会( #zabbix_jp ) - Togetter 今日は全力でログ取ってみました。 ラトビアの生活と Zabbix 2.0 ラトビアで生活 半年ぶりに帰ってきた 質問:ラトビア行ったことある人 会場にいない ラトビア:ロシアを挟んで隣の隣。近いですね…

昔読めなかった Haskell のコードを解読してみた

968 デフォルトの名無しさん [sage] 2011/03/02(水) 20:59:11.07 ID: Be: 先生宿題のクイックソートができました q[]=[] q(x:xs)=arr (List.partition(<x))>>>first q >>> second q>>>arr((((((((((((((app .).).(&&&))(((app .).).(&&&)) (const id)).).).).)((f</x))>…

FibBuzz を Control.Arrow で解いてみた

何か FizzBuzz 問題をちょっとだけパワーアップさせたものに FibBuzz とかいうのがあるそうで、0 から 100 までの整数を FizzBuzz する代わりにフィボナッチ数の各項に対して FizzBuzz する問題なようです。 面白そうなので久々に Control.Arrow を引っ張り…

foldr のすごさを体験してみた

Real World Haskell にはこんなコードが載ってます。 myFoldl :: (a -> b -> a) -> a -> [b] -> a myFoldl f z xs = foldr step id xs z where step x g a = g (f a x) Real World Haskell p100 4.6.8 右からの畳み込み foldl は foldr を使って書けるという…

GCJJ 予選に参加してみた

x86/64 最適化勉強会中に、iPad からリモートで家の PC に接続して、そこでやってました。 GCJJ に集中しすぎて勉強会の方を全然聞けなかったっていう・・・ほんとすみません。 ということで A と C が解けました。 B は満足度優先で探してたのですが、それだけ…

Nagios のパフォーマンスデータを Parsec で解析してみた

Nagios にはチェックデータを取得した際に、パフォーマンスデータを一緒に付け加えてくれるという機能があり、以下のページにあるツールはこのパフォーマンスデータを使って CPU 使用率やディスク空き容量をグラフ化したりといったことをしています。 PerfPa…

最近使ったモジュールとか

Data.ConfigFile 設定ファイル読み込み用のパッケージ。 こんな感じでよく使ってる。 printUsage = print "..." main = do args <- getArgs case args of [] -> pringUsage (configFile:_) -> do val <- readfile emptyCP{optionxform = id} configFile let …

C++03 と C++11 の互換性

C++

C++03 と C++11 ってどれぐらい互換性があるのかなーと気になっていたんだけど、仕様書の §C.2 を見てみたらずばりなものが載っていたので、一通り読んでみた。 C++03 のコードを C++11 として動かそうとしたときにコンパイルエラーやランタイムエラーが発生…

標準でどのヘッダがどのヘッダを include しているかを調べてみた

C++

std::endl って、どのヘッダで定義されているか知っていますか? と思った人はハズレです。実は std::endl は で定義されてます。 これって を include するだけだと標準に準拠した動作にならないんじゃね?とか思ったのですけど、どうやら は も include す…