本を読む

読書やコンピュータなどに関するメモ

YAPC::Asia Tokyo 2010 1日目に参加

 Perlのイベント、YAPC::Asia Tokyo 2010の1日目に参加してきました。なんというか、楽しく話を聴いて、あっという間の1日でした。2日目も参加します。

 なんとなく、LL系大型イベントの中でも、実サービスのインフラに近い部分の工夫の話が多いような気がしました。

 以下、ほぼメモそのまま

あいさつ(Daisuke Maki)

  • 今年のテーマ「Welcome Perl」
    • 過去とか未来とか話を聞きたい
    • ハッカーの人は新しく来た人たちをWelcomeしょう
    • Perlの輪を広げたい
  • 今回はエンジニアじゃない人(941)がやっている
    • パチパチパチ
  • 518名参加登録
    • 世界でいちばん大きいYAPC
  • スピーカー投票
  • 懇親会
  • AndroidとiPhone用のYAPC::Asiaアプリ
  • loctouchでイベント限定シール
  • スポンサー23社

That Goes Without Saying (or Does It?) (Larry Wall)

  • (Ubuntu使ってた)
  • "must" / "must not"
    • 英語は許可を、日本語は禁止をいうのが得意w
  • must say(書かなくちゃならないこと)から見たプログラミング言語比較
  • RMS(Root Mean Square:二乗平均平方根)
    • どこかのwikiでの説明をひく
    • いろいろなプログラミンング言語での例が載っている
  • Perlの場合
    • eazy
  • Oz
    • いろいろ違う
    • funいっぱい、でもendで終わるw
    • declare … in
    • {}がいっぱい
      • PicoLisp、Schemeはstrangeな()だらけ
    • FoldL
    • Number.'+'、List.Number
    • Map 値 関数
  • Perl
    • sigilが多い
    • {}
    • ()が必要なときと必要ないときと
    • 1..10
      • Perl 6では 1.2.3もOK
    • ここまでbuilt-in Perlのみの例。Perl 6でも通る
  • use List::Util qw(reduce);する
    • reduceで集計部分を1行に
      • 謎の$a、b
      • 初期値の0
  • Perl 6の場合
    • reduceは内蔵
      • [+]
    • my @nums = @_相当
      • 仮引数宣言
      • sub rms(*@nums)
    • mapと*
      • メタオペレータに
      • @nums X** 2
      • ベクタ演算
      • GPUとか使うと速くなるかも?
    • 変数宣言して1回だけ参照
      • そのまま式として展開(6は関係ない)
    • print … "\n"
      • sayに
    • +前置は数値コンテキスト
    • これで4行になった
  • PureBasic
  • Perl 6からPerl 5へ
    • 入ってるもの
      • say、スマートマッチ、given/when、Moose
    • やるかも
      • X** (Meta Operator)
      • := (binding operator)
    • やらないこと
      • マルチメソッド
      • コンテキスト
  • Ada
    • 長い
    • Pascalに似ている
    • withやuseで指定する名前がかなり長い
    • begin … end
    • for p in nums'Range loop … end loop
    • array(1..10)
    • list := (1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0)
  • Java
    • Adaのコードに似ている
    • 「恐い」
    • import java.lang.Math …なぜ?
    • public class RMs …なぜ?
    • public static
    • 型宣言
    • for ( ; ;)
    • Math.sqrt、System.out.printfのような前置
    • double[] nums = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
  • JavaScript
    • だいぶ違う
    • function?
    • array.reduce
  • Perl 6のワンライナーで実演
    • [+]() 0
    • [+]() 1
    • [<]() Bool::True
  • Python
    • import __future__
      • pythonはfutureを持ってないのでimportするw
    • 行頭のスペース
    • range(1,11)がPerlの1..10
  • PostScript
    • 酷いw
  • Mathematica
    • 一発w
  • APL
    • チートw
  • RMSのコードが「大きすぎる」言語、「小さすぎる」言語
    • Perl 6はちょうどいい
  • spiral matrixをPerl 6で
    • #!/usr/local/bin/prl6
    • class
    • MAINをmulti methodで
  • Zig-Zag matrix

Introduction to CloudForcast (kazeburo)

  • インフラエンジニア
    • mixi → ライブドア
  • yokohama.pmの話のやきなおし
  • CloudForcast
    • リソースモニタリングによりシステムの可視化を行うツール
    • PDCAサイクル
      • 監視=C
  • 監視の種類
    • 稼働監視(死活監視)とリソースモニタリングの2種類
    • 稼働監視
      • 例外を通知
      • Nagios、monit、データホテルのサービス
    • リソースモニタリング
      • 変化を見える化
      • キャパシティプランニングに
      • Cacti、Ganglia、munin
      • CloudForcastも
  • CloudForcastの特徴
    • Perl
    • RRDToolでグラフ化
    • 非常に高速
    • Gearmanによる分散処理
      • 大規模環境でも
    • 表示用Webサーバー内蔵、デプロイ簡単
  • Gearmanのワーカー
    • fetcher worker、update worker
    • fetcherを自由に増やせる
      • 並行アクセス
  • ライブアでの利用例
    • CloudForcastサーバー 1台
    • 対象サーバー 1,200以上
    • 対象リソース 5,000以上
    • 1度の巡回 30秒ちょっと
  • インストール
    • githubからclone
    • 設定ファイルのサンプルをコピー(YAM)
      • グループ名
      • 監視項目を別の設定ファイルに(YAML)
      • 対象サーバーを1行で。追加も簡単
    • 標準で入っているリソース定義モジュール
      • Httpd、Disk、Traffic、MySQLなど
      • PerlのWebアプリで必要になりそうなもの
  • 起動
    • Gearmanを使わない場合
    • 巡回デーモンとWebサーバーを起動
  • Web画面
    • ダブルクリックとかの隠し機能も
    • グラフ
    • 詳細情報表示
    • バージョン情報や設定情報など
  • 自作プラグイン
    • sie-libに
    • Gearmanのキュー数の監視の例
    • ポート7003でステータスがとれる
    • RRDスキーマ定義
      • COUNTER:累積値
      • GAUGE:その瞬間の値
  • グラフ設定
  • データ取得関数
    • my $c = shift
    • スキーマの順の配列を返す
      • なのでHashじゃない
      • とれなかったときはundefを
  • 代表的なグラフ
    • ApplicationサーバのCPU使用率
    • DBサーバのCPU使用率
      • IOWAITが見える
    • Applicationサーバのメモリ使用率
      • Disk Bufferはログ
      • ログローテートによる再起動の影響
    • DBサーバのメモリ使用率
      • InnoDBのbuffr_pool
      • swap
        • vmstatでswap inとswap outをチェック
    • memcachedサーバのTCP接続数
    • Apache Status
      • プロセス数一定
    • MySQLのクエリ数
      • なぜか5時すぎにガクっと減っている
    • InnoDB
      • 1回のクエリで何行ぐらい読んでいるか
      • インデックスが効いていないとかがわかる
    • memcached接続数
      • mixiの障害を受けて始めた
  • 運用Tips
    • gearmand
      • プロセス数のチューニングができる
      • 設定にgearman_enable: 1
    • daemontoolsでプロセス起動を管理
      • ファイルに更新があると自動的に再起動ではなく終了
      • daemonntoolsが1秒後に自動的に再起動
  • Perlで書けるから楽
  • TODO
    • Webインターフェイス改良
    • RRDとSQLiteを組み合わせて、データがとれてないときなど警告
    • ドキュメントとテスト
  • Q: ほかのツールからの移行で、RRDToolのデータをそのまま使えないか
    • A: ダンプして戻せばいちおうできる。でも並行期間を設ける方が簡単
  • Q: SQLiteに入っているデータ
    • A: 取得した設定データなど

モダンPerl5開発環境について (tokuhirom)

  • Cache::KyotoTycoon書いた
  • PerlをつかったWebアプリの開発についてがメイン
    • 極論的に話します
  • Perl5のバージョン
    • OS標準のPerlは、Webアプリにはよくない
      • コンパイルオプションが一般的になってる
        • ithreadがオンになっている
          • オフにすると15%ぐらい高速
    • 5.10.0はできがよくない。5.10.1以降
      • 正規表現でメモリリーク
      • ほかこまかいバグ
    • 5.x.0はバグが残ってがち
    • 今だと5.12.2がおすすめ
    • 安定志向なら.8.9でも
  • defined or (//) 便利
  • 新しいバージョンのPerlを入れるには
    • perlbrewを使う
    • 簡単
    • 複数のバージョンを入れて切り替えられる
    • でも自分でwgetしてmakeしてもあまり変わらないかも
    • CPANモジュールもそのバージョン単位で入る
      • local::libも不要に
    • 本番環境にperlをrsync
  • cpanm
    • cpanコマンドは使いづらい
      • 時間かかる
      • 初回の設定めんどう
      • ミラーを探すほうが時間かかる
    • もともとcpanコマンドの軽量版を作る目的
    • いまはcpanコマンドを使うメリットがない
    • アプリのディレクトリで、そのアプリの依存モジュールをインストール
    • インストール先を指定
      • このアプリでしか使わないライブラリとか
  • cpan-outdated
    • 手元のモジュールが古くなっているかどうかチェック
    • 出力をそのままcpanmに食わせることもできる
      • cronで回して、コケるモジュールをチェック
      • 最近はDateTimeとかコケてる
  • cpanf
    • モジュールを作者がリリースして5分ぐらいで使える
    • cpanm App::CPAN::Fresh
    • cpanf -mでcpanm使える
  • pm-uninstall
    • モジュールを一発でアンインストール
  • デプロイ
    • perlのディレクトリをそのままrsyncでコピーするのが楽
    • アプリ特有のライブラリはextlib/とかアプリ自体に入れちゃうとか
  • CPANモジュールの選び方
    • いま86,436モジュールある
    • "Date"で検索すると3,537 hit
  • 「みんなが使っているモジュール」重要
    • perl-casualのIRCとか
      • 意見がいろいろ出るけど、絞られる
    • twitterの@perism bot
      • Perl関連のツイートを拾うbot
      • Perl Mongerがチェックしてる
  • 「有名なPerl Hackersが使っているモジュール」
    • Task::BeLike::*
    • なぜ必要かコメントを入れてる人も
  • 「CPANソムリエになる方法」エントリー
    • 2004年より前とかは危険な香り
    • Testがコケたまま放置されてるのは危ない
    • t/の中が1つとか
    • バグレポがたまってる
    • dependenciesで依存モジュールのテスト成功率
    • 作者
  • 今日紹介したツールの多くは、この1年ぐらいで開発された
    • Perlを使いやすくしていこう
  • Q: stableで止めたいときは
    • A: CPANモジュールはいちおうunstableなものはないはずということになっている
    • 自分の場合は、リリース直前まではどんどんアップデート。
    • リリース後は、セキュリティフィックスなど気になったものだけアップデート
  • Q: Perlのバージョンが不整合と言われる場合
    • A: 見たことない
    • Q: PERLLIBにperlbrewのパスを指定すると問題になる?
    • A: はい

XS::TNG (Shmuel Fomberg)

  • 自己紹介
    • Israelから
    • 日本語勉強中
    • YAPCでしゃべるのはじめて
  • XS難しい?
    • 文法は簡単だよ
    • 古いドキュメントが多い
  • Ctypes
    • Cの関数をPerlから直接呼ぶ
    • サンプル
      • mscvrtの関数を呼ぶ例
      • user32のMessageBoxAを呼ぶ例
    • 型の指定
      • 呼び出し方法、戻り型、引数型
      • 型をあらわす文字
      • コールバック
    • ライブラリの種類
      • CDLL、WinDLL、OleDLL、PerlDLL(XS Functions)
  • libperl++
    • C++にPerlを組み込む、拡張
    • リファレンスカウントやコールスタック、型変換などの面倒なことをやってくれる
    • 組み込む
      • 式を評価
      • 値のアクセス
    • 拡張
      • Perl packageにC++で関数を追加
    • スカラーコンテキスト、リストコンテキスト
  • ExtUtils::XSpp(XS++)
    • XSはオブジェクトを扱わない
    • XSの拡張
      • 後方互換性
    • C++
    • typemap
  • Q: CtypesはWindows依存?
    • A: クロスプラットフォーム。libffiベース。
    • Windowsでもシェルスクリプトを動かしてビルドしてる

Studying HTTP with Perl (ma.la)

  • 自己紹介
    • ライブドア
    • UIスペシャリスト
    • フロントエンドからバックエンドまで高速化
    • 「gistというブログサービス」
  • (1) PerlにおけるHTTPクライアント
  • 並列じゃないもの
    • LWP 標準
      • LWP::UserAgent、LWP::Simple、LWP::Robot
    • URI::Fetcch
      • gzip対応、キャッシュ
    • HTTP::Lite
      • シンプル
    • LWPx::ParanoidAgent
      • ローカルネットワークへのアクセスを拒絶
      • ローカルをインデックスしない、とか
      • DNSの検証も
    • WWW::Curl
      • 速い、クセがある
      • そのラッパーもいくつかCPANに
  • 並列処理できるもの
    • HTTP::Async、LWP::Parallelは今はオススメではない
    • AnyEvent::HTTP
      • ssl対応やDNS解決などもAnyEventで
    • Coro::LWP
      • LWPをCoro化
      • Perlのselectを上書き
  • (2) AnyEvent::Curl
  • ネットワーク待ちが支配的
  • LLは問題ない?
  • LWP遅い
    • I/O待ちがなくても秒200リクエストまで
  • AnyEvvent::Curlを書いた
  • WWW::CurlをAnyEventから使う
  • github
  • curlのオプションを覚える必要
  • LWPより8~10倍速い
  • 秒100回以上のリクエストを投げる人だけおすすめ
  • LWP互換機能
  • しくみ
    • WWW:Curl::Multiを使っている
    • fdを取り出してio watcherを監視
  • (3) Perlの並列処理
  • fork、thread、イベント駆動
  • Perlのithreadはバグってる。終了。
  • fork
    • マルチコアだけforkするだけ
    • forkのオーバーヘッド、メモリ消費
  • イベント駆動
    • AnyEvent
    • Coro イベント駆動型のスタイルで書かなくてよい、ハマりどころあり
  • 現実解:併用
    • AnyEvent::DBD クエリはfork
  • (4) 選定
  • prefork型(サーバー、クライアント)
    • スローロリス攻撃にやられる
      • イベント駆動型のサーバー(nginxなど)をフロントエンドにする対策
      • IPアドレスあたりの接続数を制限する対策
    • 適しているところ
      • 1リクエストの処理時間やピーク時のリクエストが予測できるところ
  • イベント駆動型(サーバー、クライアント)
    • 処理時間が予測できないとき
      • クローラなど
    • 1プロセス内での協調動作が必要なとき
    • Webアプリ:実は多くのケース
  • (5) チューニング
  • HTTPヘッダーのパース
    • XS化して約10倍
    • まだ落ちる
  • DNSまわり
    • デフォルトではブロックする
    • curlには非同期DNS解決オプション
      • 名前解決が必要ないリクエストも遅くなる
    • 現状ではsquidにやらせるのがよい
  • (6) HTTPベースのRPC
  • 専用プロトコルよりHTTPのほうが有利?
  • Gearman、Kyoto Tycoon
  • ライブラリがそろっている、拡張しやすい、監視やLB、非同期アプリからの呼び出しが楽
  • HTTPのオーバーヘッドは思いのほか大きい
    • ヘッダー
      • KeepAlive、複数データを一度に取得
      • 速いライブラリ
  • kazuhookuさんのチューニングしたHTTPサーバーは高速
    • 専用プロトコルの優位性はうすれる
  • 性能評価は自分のネットワークでやりましょうw
  • (7) テスト
  • Googleに接続するモジュールのテストとか、向こうが落ちているとテストできない
  • Test::TCPでローカルで
  • Plackで簡単なテストサーバー

AnyEventとEC2を使ったクローリングツールのご紹介 (荘野和也、Songhee Han)

  • テーマ
    • EC2によるクローラのスケールアウト
    • AnyEventによるインスタンス管理
  • Honeybeeというクローラーを開発
    • Honeybee::Bee クローラー
    • Honeybee::Hive 前後処理
  • 使ったAEモジュール
    • AE::timer、AnyEvent::Socket、AnyEvent::Handle
  • 事前処理 → クローラ → 事後処理
  • クローリング部分を切り出してスケールアウトできるように
    • シンプルなPSGIアプリケーション
    • 結果をJSONで返す
    • 環境に依存しない
  • EC2のインスタンスを作成してS3に保存
  • Honeybee::Hive
    • 機能
      • クローリング対象URLを格納
      • BeeとHTTPで通信
      • クローリング結果の重複対応
    • 2つのデーモン
      • Crawler Daemon
      • クローリング処理の実行(インスタンス管理)
      • Flow Management Daemon
      • 順次実行、メッセージ
    • Crawler Daemon
      • インスタンス管理
      • AnyEventのtimerで定期的にチェック
      • idle状態のインスタンスを取ってくる
      • インスタンスの数だけコプロセスを立ち上げ
        • Parallel::ForkManager
    • Flow Management Daemon
      • 順次実行を保証
      • cronなどで定期的に確認するのは避けたい
      • 処理の実行が終わると通知メッセージ
      • メッセージ
        • AnyEvent::Socketでtcp_server
        • IO::Socket::UNIX->new()
        • 値をシリアライズ
        • コールバック関数名

Writing prefork job workers / server (kazuho)

  • prefork型のワーカーを書くためのテクニック
  • ジョブワーカーの2種類
    • prefork
    • イベント駆動
  • prefork
    • 書くのが簡単、メンテも簡単
    • メモリ消費
    • アプリケーションサーバー、画像処理、DB処理など
  • イベント駆動
    • 接続間で情報を共有して交換
  • メモリを使わない
  • 書くのが面倒、メンテも面倒
  • いっしょに使えるライブラリが少ない
  • チャットサーバー/クライアント、Cometなど
  • 「自分はma.laさんほど心配性じゃないので、preforkがいいかな、と」
    • 必要になってからイベント駆動に
  • 以上前置き
  • Parallel::Prefork
    • 昔Parallel::ForkManagerというのがあった
      • シャットダウンするサポートがない
      • 親プロセスをkillしたときに子プロセスが残る
    • Parallel::Preforkを開発
      • シグナルでプロセスを制御する機能を追加
    • Gearmanでの例
    • Graceful reconfiguration
      • 設定を再読込
      • どうせ再起動しちゃう?
    • ワーカー数の動的変更
      • あまりよくない? おすすめしない
  • Server::Starter
    • ホットデプロイ
    • 去年のLTでやった
    • 対応コードの例
      • 環境変数でServer::Starter経由で呼ばれていることを認識してfdをオープン
  • Parallel::Scoreboard
  • 実際にはモニタリングしないと
  • パフォーマンス、リソース、障害解析のためのデータ
  • ロードアベレージはCPUとディスクだけ
  • モニタリング用のモジュールがほしい
  • Apacheのmod_statusのようなビジュアライゼーション
  • モニタリングの自動化
  • フレキシブル
  • 互いに専用で結びついている必要はない
    • モニタされるプロセスごとに1つのファイル
  • 表示モジュールをPSGI applicationに
    • plackupで起動

LT:学生PHPプログラマーがPerlの会社に就職した (Nishibayashi Takuji)

  • 自己紹介
    • モバイルファクトリー
    • Perlと同い年
  • Perlをさわる前のイメージ
    • 難しい、重い(CGI)、古い
  • さわってみたら
    • 思ったほど難しくない
    • 正規表現いい
    • CPANモジュール
    • 柔軟なOOP
  • はまったところ
    • リファレンスを意識
    • thisとかsuperとか使えない
    • subをfunctionとつい書いちゃう
  • 6か月
    • 気がつけば無意識にmy $self = shift;
  • DBIx::Skinny::ModuleLoader作ってみた

LT:Inside webcast of Gozzan-no-Okuribi in Kyoto (Fumiko Kurano)

  • 送り火中継
    • 京都の五山送り火
    • 毎年、携帯電話を利用した中継
    • ustも
    • 「ほぼ日」とのコラボ
  • 制止画中継、Ustream
  • 右大文字と左大文字
  • 夕方まで制止画+コメント文
  • 点火してからUst
  • Perl
    • メールサバーからの読みだし
    • 画像処理
    • GPSデータ抽出
    • DB処理
    • XML、HTML書き出し
    • 中継が終わったら、今年の結果を分析

LT:Happy AnySan Hakking (Yappo)

  • AnySan
    • AEを使ったメッセージングのフレームワーク
    • IRCボット、Twitter
  • Provider
    • メッセージサービスのハンドリング
    • user AnySan::Provider::IRC
    • user AnySan::Provider::Twitter
  • AnySan::Receive
    • 返事
  • デモ
    • @dan_the_bot
    • 「!dan」に反応して「Dan the ~」を投稿w

LT:OFPM (Naoki Tomita)

  • 忍者w
  • ブログ「今日のCPANモジュール」
    • あっというまに挫折
    • でもなかなかアクセスが減らない
  • 加筆して書籍化の話
    • ワークスコーポレーション
    • 2010/12 on store (maybe)
  • 小さいモジュールを中心に
  • どんなモジュールが使われているか統計
    • meta解析 CPANTSがやってる
      • データ落とせる
      • 「最近CPANTSが落ちてるんですが」
    • もっとリアルなデータ
      • gistからPerlっぽいコードを抜き出して
  • OFPM

LT:MySQLのPluginいろいろ (kamipo)

  • いまのMySQLのプラグインには5種類のタイプがある
  • mycached
    • MySQLのストレージハンドラをmemcachedでアクセス
  • Spider and VP
    • シャーディング
  • groonga
    • 全文検索
  • mysqlftppc
    • パーサープラグインがいろいろ入っている
  • HandlerSocket
    • ストレージハンドラを直接たたく
  • デモ
    • 自作プラグイン
    • MessagePackプロトコルで接続(実際の処理はまだ)

LT:「名古屋でPerlをゆるく語る会」をはじめました (issm)

  • ドラクエプレゼン
  • 名古屋では勉強会はいろいろあるけど、Perlはあまりなかったので
    • 2010.7から
    • 食事会
    • 月1回
    • @yuruperl

LT:RubyプログラマがPHP大規模PHP開発の会社に入って (tsuyoshikawa)

  • GREE
    • ふじもとさんの代打
  • Sinatra
  • Sinatra系
    • Flask (Python)
    • Scalatra (Scalatra)
    • Mojolicious::Lite (perl)
    • 楽しい、気軽
  • PHPは?
    • いくつかある
    • 実装が腐ってるw
    • 楽しくない
  • 改めてPHPで作った
  • Sinatra→Frank Sinatra→My Way→Sid Vicious→「Vicious」w
    • 動いている
  • Rackのレイヤー:PHP + Rack → 「Phack」w

LT:YAPC::EU 2010 Reports (?)

  • 今年はイタリアのピサ
    • 片道13時間
  • 食べ物・飲み物が潤沢
  • プレゼン
    • YouTubeに動画
    • 質問力が半端ない
      • 途中からプレゼンそれて議論に
  • 海外のPerl Hakcerをフォローするようになった
  • 課題は日常会話
  • DeNAの社内制度で
  • 来年はラトヴィア

LT:期間システムがPerlでどうしてこうなった (峰末)

  • 汎用機をなくしたいという社内プロジェクト
    • MySQLやOpenCOBOLへ
    • 給与計算とか
  • 資産
    • COBOL 2,500万行
      • COBOLからMySQLへの接続方法はない
    • JCL 100万行
      • オープンなJCLはない
  • Perlに変換すればなんとかなる
    • "use JCL" w
    • COBOLにPerlを組み込んで、COBOLの文中にPerlコードを入れてMySQLにアクセスw
  • 速度はまあなんとかなる
  • Apache + mod_php + opencobol + perl w

LT:Test::QUnit (zentooo)

  • ヤバゲーのJS APIの中の人
  • JSのテスト
    • WebUIのテストやCLIのテストはある
    • env.jsがけっこういけるっぽい
  • 統合型
    • JSTestDriver
  • CLIからブラウザのテスト、テスト結果集計 → Test::QUnit
    • MozReplでつっこむ
    • Plackサーバー
    • GitHubで

LT:10 things to do with a coferenceT-shirt (カレンさん?)

  • 世界のYAPCに参加
    • カンファレンスのTシャツが大量にあつまった
    • 大きい
  • ハサミでカット
  • リボンでアレンジ
  • 端切れをヘアバンドに
  • イヤリングに
  • バッグに
  • 枕カバーに
  • 紐にして編んでタオルに
  • ノースリーブに→ギークな旦那がマッチョにw
  • "There is more than one way to wear it"

LT:That Goes WIdhtout Alphabet-Number (takesako)

  • プログラミングで何種類の文字使っているか
    • BF:8文字
    • BASIC:アルファベット
    • Perl:100+
  • Python
    • Unicode 6.0絵文字使える
    • PEP 却下
  • ポリグロット
    • .comファイルにも
  • バイナリを使わずにx86機械語
    • 記号10種類
    • Brain-f*ck-f*ck
    • int main[] = "記号の並び""
    • movが使えないのでpushとpopとか
  • 顔文字x86プログラミング
  • 「バイナリアンはもう古い」

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/822-cb5a10da

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad