YAPC::Kansai 2017 OSAKA に参加しておりますので、自分のためにメモを残しておきます。
オープニング / nqounet さん
- 第2回 YAPC Japan 開催
- ネックストラップ着けて、飲食禁止(飴ちゃんも)、立入禁止区域、禁煙
- 電源はB会場、C会場。通路、A会場は禁止。赤ストラップの方の撮影禁止
- 会場別タグ: #yapcjapanA, #yapcjapanB, #yapcjapanC
実録!『すぐわかるPerl』 / 深沢 千尋 さん
- すぐわかるPerl、文字コード超研究、すぐわかるオブジェクト指向Perl、かんたんPerl、の著者
- かんたんPerlがおすすめ
- 今日の話は作業の省力化の省力化について
- 汎用機PG→音楽ライター→ソフトハウス(ローカリゼーション会社に変貌)
- Sprint (Bolandのワープロ) → FrameMaker文書へ
- 先輩が作ったツールを実行するだけ・・・だけ?
- awk × sed × sh
- 初めてのPerl: Larry Wall "awk, sed, shのビーズを糸で繋ぐのを止めて、ブンゼンバーナーで溶かしてみたら真珠へ(!!)"
- プログラムの4段階: 自分のため(ワンライナー)、同僚のため(社内ツール)、顧客のため(オーダーウェア)、世界のため(汎用ツール)
- ワンライナー: 拡張子ごとにファイルを集計する例。わからない
- 10行に書き伸ばせば、意味がわかる : 「テンライナー」
- 正規表現
-
x
スイッチを使って10行に伸ばす - マッチさせたい正規表現ごとに分岐してテストしやすくしておく
- 代表的なテストデータを付けておく
-
- すごい正規表現は正規表現しか使えないツールから発生する
- スーパー検索置換プログラム、オフィスソフト、DTPソフト
- テンライナーの味噌蔵
- 自作プログラム集
- 完動するものを集める
- 「emacs は "イイ!MAX" という意味」
- 「すぐわかるPerlはSPEEDだったが、かんたんPerlはきちんとAKBへ対応」
- 味噌蔵の例
- 「クパン?シーパン?」
- SYNOPSIS を動くようにしたもの
- 正規表現テスター
- 「M-x しぇがshellのエイリアス」「コンタミ」(contaminationのことらしい)
- MS-Officeとの共存 (キセルかお墓か)
- キセル方式: VBA - Perl - VBA
- マクロ付きdoc(.docm)に、仕様+マクロ
- お墓方式
- XE (indeX Entry) から索引を作る例
- そのままだとUnicode順になる (読みフィールドを加えたい)
- 任意のマクロ文字列で置換(お墓)→処理→処理語をお墓に戻す
- 社内ツールの社会学
- 開発者にとって: 簡単、再利用性、サポートの手間の削減、スキルアップ
- ユーザにとって: 汎用ソフトより軽い、小回りがきく、ユーザからパワーユーザへ
- 開発者にとって: ぎりぎりまで使われない、裏マニュアル
- ユーザにとって: 品質が低い、予算がない
- 会社の意義
- 家康(決められた手順)か秀吉(新しい手順)か
- 質疑応答
- Q. 年間に書くツールの数は?
- A. お前は今まで書いたワンライナーの数は覚えているのか
- Q. 味噌蔵の数は?
- A. 200件
- Q. 書籍のレビューアは?
- A. 担当者のみ。ただし、返答は必ず書籍の修正でするようにしている
- Q. 年数がかなり経っているが、新しくなっている部分は?
- A. 昔dankogaiさんのブログに影響されて
use strict
を - A. 「今井絵理子さんがあんな人だとは・・・」
- A. 正規表現がUTF-8対応
- Q. AKBの選抜総選挙の順位が低い人が居ますが?
- A. 漢字の呼び方の誤りが面白そうなメンバーを選んでいる
高速化の初歩 / risouさん
- 「エバーノートでdankoaiのIDとったの誰だよ!」
- 高速化したいとき
- プログラムは高速に動くに越したことはない
- 定期的に実行するプログラム(10分間隔が10分で終わらない)
- クリティカルパス(並列実行している中で一番遅いもの)を早くする
- 短時間で何度も実行 (プロセス作り過ぎでリソースで死んだり)
- 素数判定の高速化
- 10万までの素数を調べるのに6分かかる
- 割り算を試し過ぎている
- 割り切れたら諦める → 10倍の速度に
- 割る数字は素数だけで良い → さらに10倍の速度に
- sqrt n 以下だけ試せば良い → 0.126 sec へ
- この先は、費用対効果が悪い
- エラトステネスの篩 : 0.026 sec
- 良いアルゴリズムを選ぶことが大事
- サンダラム、アトキンの篩
- メモ化
- フィボナッチの例: 545 msec から 0.114 msec へ
-
Memoise
: Perlに入っているが、手で書いたほうが速い
-
List::Compare
- 17msecから35msec(遅くなる) 前処理が遅いため。
- モジュールは汎用性が高い。用途によってはチューニングしきれないことがある
- (ダーティーな)小ネタ
-
join
より.
が速い - 固定値を先に計算したほうが(20より後のPerlはオプティマイズされる)
- ループ内で関数を呼ばない
- SoA(Structure(Hash) of Arrays)とAoSだと、SoAの方がCloneが速い
-
- 高速化は本当に必要か
- ボトルネックはコードにないかもしれない。
- DBのチューニング、CDNの利用
- NYTProf の利用
Vue.jsで作るSPAから学ぶMVVM、非同期処理、その光と影 / しんぺいさん
- 牧歌的クライアントWEB : HTMLをレンダリング
- JS、非同期処理は味付け
- リッチなUX: チャット、動画、音楽
- SPA : 画面遷移で状態がリセットされない
- 問題: ブラウザはドキュメントビューア。SPA・・・?
- ブラウザを作っている人は自分より頭がいい
- SPAでページ遷移とかはよくない
- とは言え、あり得る
- SPAの先輩はGUI
- GUIのアーキテクチャ MVC, MVP, MVVM
- プレゼンテーションドメインセパレーション
- UI定義とイベント、以外は全部Modelに書く
- MVVMは、JSだとVue.jsが良い
- View, VM, Model(usecase, repository, data/domain model)
- 全てクライアントサイドにある
- VMはModelの voidなメソッドを叩く (密結合しないため)
- Modelの状態の変化をVMが監視する
- 状態はすべてModelが管理する
- プレゼン層は状態の監視に徹する
- 永続化 : Cookie + Session に載るのがいいでしょう
- CORSの問題 : Safariだとthird partyのCookieが捨てられる
- CSRF問題 : 普通のWEBアプリケーションと同様
- WAFが脆弱性対策などをしているので、そのレールに乗ったほうが良い
- レースコンディション
- プレゼンテーション、ModelとAPIを1-1にしない
- サービス層を作り、VMはサービス層のみを叩く (サービス層で非同期処理の待ち合わせ)
- まとめ
- SPAはやめよう、やるならGUIを参考に、ブラウザの恩恵は大事
- 質疑応答
- Q. Fluxとの違いは?
- A. プレゼン層へのDIをどうするか、あたり
レガシーな Perl システムに DDD(ドメイン駆動設計) を取り入れる / @sairoutine さん
- 関西人は「~まんねん」とはいわない(「あめちゃん」は言う)
- (PCがフリーズ)「command + option + ESC」
- Mobage 11周年、 1131タイトル稼働中、 5191 タイトルが終了
- Perl 5.8.8 で動いている。独自フレームワークMobaSiF
- ブラウザゲーム運用 : LAMP + Memcached
- 月4回のイベント
- 新規イベントは1からゲームを開発
- MVC
- Model : O/Rマッパー
- View : Mtemplate / ガラケー3キャリア対応を1つのHTMLで
- Controller : "Page層" URLとのマッピング、validation
- 7年のサービス運用
- 人の入れ替わり (現行メンバーが書いたものは10%程度)
- 知識の継承ができていない
- 仕様の肥大化 (既存仕様との不整合。タスクの見積もりが難しい)
- レガシーPerl特有の辛さ
- euc-jp, Shift_JIS : 最近のエンジニアには通じない
- 引数がなんだかわからない(引数のデータ構造をコードから推測)
- 神クラス、addXXXInfo、巨大if、グローバル変数
- 超モノリシック: タイトル1つが壊れるとmobage全体が壊れる
- きちんとOOPする
- DAO層の追加 : コントローラにSQLを書かない
- Model層の追加 : fatコントローラの解決
- Logic層の追加 : fatモデルの解決。ゲームロジックのみ
- OOPで足りない部分
- OOPについての指針
- DDD
- 書籍: ドメイン駆動設計と、実践ドメイン駆動設計
- 哲学と戦術に分かれている
- 今回はドメインモデルとレイヤ化アーキテクチャ
- レイヤ化アーキテクチャ
- View / Controller(入出力), Controller / Service(ドメイン層のオブジェクトの協調), Domain(ロジック), DAO(インフラ)
- Domain層とService層を追加した
- Domainは状態を持つ、Serviceは状態を持たない
- ロジックをDomainとServiceへ分離
- 例: ボスへの攻撃処理
- Domain::User, Domain::Boss, Domain::UserItem, Domain::UserItem, Domain::BattleField の発見
- 発見されたものをさらに詳しく見る : Domain::Deck, Domain::Card, Domain::Boss::* の発見
- Service::Attack ドメインを組み合わせて、攻撃時に起こる状態の操作
- 難点: 状態を持てないので、引数が長くなりがち
- Service が処理の順番を担保
- エンジニアが考えること
- ドメインモデルの発見
- ワークフローを考える
- DDDについて議論になったところ
- 古いコードとの接続 : リファクタリングするか、ラッパーを書く
- サービスは状態を持つべきか : Serviceをシンプルにするため、制限した
- チームメンバーの巻き込み
- 新規イベントで個人的に採用
- コードをベースにメンバーに伝達(口頭/レビューでの摺合せすべきだった)
- 勉強会で広める (コードを書く前の勉強会ではピンと来ない)
- 解決したこと
- 静的関数、生のデータ構造はドメインモデルに
- ifはポリモフィズム
- 戦術だけ見るとただのOOP。大切なのは哲学
- 大切なのは理論ではなく、チームで共有できた認識の方
- 展望
- 既存のコードを置き換えたい
- ユビキタス言語も取り入れたい
Mojolicious で Web開発のすべてが「簡単」に / 木本さん
-
サンプルコードPerl入門
- 初心者の本が少なかった
- 初心者のために役に立つサイト
-
Mojolicious
- WEB開発に使う機能が詰まっている
- 今日はGitPrepの中身を
-
cpan Mojolicious
で簡単にインストール (cpanmじゃない?) - 1ファイルでWEBアプリケーションが(数行でも)
- 最初のステップが小さいと楽
-
param
、every_param
(チェックボックスなど)- 値の復元 (
HTMLFillInForm
的なもの) -
QUERY_STRING
もPOST
文字列も意識しなくていい
- 値の復元 (
-
url_for
,query
-
url_with
クエリ文字列の改変
-
-
PHPみたいにHTMLの中にPerlのソースコードが書ける (初心者向き)
-
セッション : CookieとJSON
-
Mojolicious は「小さく初めて」大きく成長させる
-
GitPrepのソースコードの例
- ルーティングの定義は階層的に
- テンプレートの中でパラメータなどにアクセスできる
-
session
の例: ソルトがある、https
を使う、なのでパスワードをCookieに入れても安全 - その他、リバースプロクシ、ログイン、など様々な疑問をMojoliciousが解決
-
自社製の古いフレームワークのMojoliciousへの置き換え
- PHPとPerlの混在
- PHPからPerlを呼び出したり
-
リファクタリング : 小さな作業をコツコツと
- Shift_JISをUTF-8へ
- アプリをEUC-jpからUTF-8へ
- MySQLをEUC-jpからUTF-8へ
- 自社製WebをMojoliciousへ
- ソースコードが半分以下、保守性は5倍に
-
テンプレートの独自記法 → Mojolicious でPerlへ
-
HTML::FillinForm → Mojoliciousへ
-
セッション情報をファイルに保存していた → Mojoliciousセッション×HTTPSへ
-
辛かったこと
- 文字コードと独自フレームワークの混在との戦い、クリティカル
-
面白かったこと
- 新しいことへのチャレンジ
- リファクタリング(家のリファクタリングは無理)
- 緊張感
-
WebSocket
- クライアントとサーバの双方向通信
- 接続の開始はクライアントだが、その後は対等な関係
- リアルタイム性
-
リアルタイムチャットはHTTPでは難しい
- ポーリングになるので時差が出る
- ロングポーリングは実装が複雑
- WebSocketでは簡単
-
大量接続をさばけるのか?
- Mojoliciousは非同期I/Oをサポート
-
問題点
- F/Wのパケットフィルタリングなどで弾かれる(SSLを使うといい)
- リバースプロクシが難しい(nginx または AWS)
- 到達は保証できない(順序は保証される)
- ポーリング、ロングポーリング、EventSourceなどのほうが適することも多い
-
リアルタイムチャットのデモ
- 「こんにちわ」「こんちちわ」「やぷし」
-
リモートコントローラーのデモ
- ボタンを押すと、別のブラウザの猫が動く
-
events->on
events->emit
send
-
質疑応答
- Q. 引き継ぎ前のシステム書いた者だけど、PHP部分のパフォーマンスは悪化してない?
- A. アクセス数少ないから断定はできないけど、恐らく大丈夫
mail_form.cgi reboarn / dankogaiさん、moznionさん
- 個人的にはSMTPは生まれる前に消し去りたい
- アカウントを作成する時に必要なもの(代替がない)
- 受け取ったコード
-
cgi-lib.pl
jcode.pl
が今のUbuntuでは動かない -
CGI.pm
とEncode.pm
に置き換えた
-
- 使ってるマシンは普通の 2014 Mac Book Pro
- ZFSでパーティションを切っている
- ZFSだと圧縮がきくので、VMも省スペースになる
- 現在の mail_form.cgi を動かした(拍手)
- ここからは筋書きなしの本番
- CPANモジュールをインストールしようと思ったが、wi-fiのない会場なのでパケ死が怖い
- 宿のwi-fiも死んでた(
apt update
で30分とか)
- 宿のwi-fiも死んでた(
- HTMLが大量に埋め込まれてる 「PHPerなら普通でしょうけど」
-
sendmail
は入ってない環境もあるssmtp
-
Encode::from_to
はイミュータブルではないので使いたくない - サブルーチン先頭の
&
- ファイルハンドル
MAIL
をmy $fh
へ - 「テスト無しで触るのは怖い」「昔はよくやってた。心臓止めないで心臓摘出手術するようなもん」
-
open
にリスト形式でコマンドを渡すと、shellが起動されないので安全となる - 「送ってみましょう・・・あれ?」元に戻すと、メールが来る
- 時間もないので諦め
-
print
がたくさんあるのも・・・ → ヒアドキュメント使いたい - ページの処理毎にサブルーチンを分離
sendmail
print_form
- 「弾さん、セミコロンがありません」「よくやるよね」
- 「いやあ・・・これ辛いなあ」
- エンコーディングを UTF-8 に
- このスクリプトの美しい点 : 1ファイルに全てのdataが入ってる
- 「1時間のリファクタリングで10年戦えたら虫が良すぎますね」
- メアドの正規↑表現↓がガバガバ → http://emailregex.com/ からすごいのをコピペ → シンタックスエラー
- 「コピペプログラミングは良くないという見本」
- 「だいぶよくなってきましたね」「だいぶよくなってきたけどこんなので10年戦いたくない」
-
$cgi->Vars
を$cgi->param(...)
へ - 「こういうの(リファクタリング)は恨み言を言いながらやるとよかったりしますよ」
- 「現状どのくらい戦えますか?」「3日?」
- 5.24 から CGI モジュールは標準ではなくなりました
- (ここでプロジェクターの電源が落ちる)
- 「ライブコーディングには魔物がすんでますよ!」
- 「(話を)つなげますか!どうつなげますか!」「(HDMIが)いや、つながってるよ」
- あと180秒!
- 「弾さん、ここらでまとめを」「まとまるの?これ」
-
use strict
use warnings
しちゃったので、後十年は持つと思います - プロジェクタは時々壊れるので注意を
- 仕事を安請け合いしないようにしましょう!
Perl ウェブ開発の中世 〜CGI と Plack の間〜 / OGATA Tetsuji さん
- 歴史と歴史から学べることの話
- 1991年WEB誕生、1993年CGI誕生
- 1995年Win95、1999年i-mode で日本でのインターネットの普及
- 1990年代にCGIの誕生とウェブ人口の急増
- CGIが高コストなことが問題
- CGIスクリプトの実行が重い
- シェルでのコマンド実行と同じ
- Perlは初期のCGIで絶大な支持
- 大航海時代の会社は案件が終わる度に終了していた → 無駄を省くために東インド会社の誕生
- CGIとしてのPerlの利点
- ISPがトラブルに対応しやすい
- Perl以外のスクリプト言語は対抗馬が黎明期
- 会社でも利用されるようになった
- 大手企業、中小企業がCGIの遅さに耐えられなくなる
- Apache mod_perl の登場
- 海外で生まれたのは1997年
- PerlでApacheモジュールを書けるようにする仕組み
- CGIが速く動く、のは副次作用
- FastCGI
- CGIとは違うメカニズム
- 言語の種類は問わない
- Apacheではmod_fcgi
- PerlではFCGI
- SpeedyCGI
- Perlに特化したもの
- mod_perl VS FastCGI
- mod_perl はApacheNi依存したチューニングが可能
- WEBサーバの形態
- prefork, イベント駆動, スレッド
- Apacheは MPM の差し替えで prefork, event, worker
- PSGI / Plackの誕生
- WAF開発者が様々なWEBサーバに対応するのが苦しい
- CGIの仕様と寄せている
- PSGI / Plackへの学び
- あえて簡単にして支持を得る
- 競争すべき以外の部分では協力
- 現代の選択
- 周囲の人に支持されてるもの (Mojolicious, Amon2)
- 古いものが悪、新しいものが善、とは限らない
- 新しい技術の豆乳が直接利益につながるわけでもない
- 他人の意見を尊重し、自分に自身も持つ
はてなシステムの考古学 / motemen さん
-
あるPerl企業の15年を追うケース・スタディ
-
老舗ベンチャー 2001年から。2016年上場
-
古代 2001-2004
- エンジニア2名
- この頃はPerl企業 (すぐわかるPerl、プログラミングPerl, Apache 拡張ガイド)
- CGI → Apache::Registry 2001年。
use strict
my
- OOP、フレームワーク、CVSの導入
- Hatenaフレームワーク : mod_perl の MVC、HTML::Template
- 人力検索サイトはてな、はてなダイアリー
-
中世 2004-2007
- Hatena2 フレームワーク : mod_perl2、ヘルパースクリプト、ローカルサーバ
- 早ければ1日でサービスインしていた
- はてなブックマーク 2005-02-05 合宿開始、 2005-02-10 ベータリリース
- はてな匿名ダイアリは1日でリリースされた
- はてなグループ (2004)
- 開発スタイル : 情報公開、50%(の完成度)ルール、1人1プロダクト、立ったまま会議、フリーアドレス
- オープン戦略
- インフラチーム 2007 : チームらしいチーム(この時のツールがマカレル)
-
近世 2007-2011
- エンジニア20人。ソフトウェア的に反映していた時期
- 京都に戻って、開発に集中
- はてなブックマークリニューアル : AI手法、負債返却
- チーム開発とフレームワーク
- エンジニア4、デザイナ2、9ヶ月
- Ridge, DBIx::MoCo, Ten.js => modules-Hatena
- Ridgeへの道
- Hatena2.5、RoR、Catalystなどが候補に
- サマーインターン (2008年から)
- 成功体験を持ち帰ってもらう
- リクルーティング
- 副作用: ドキュメント、社員教育の体制の整備
- 新しいサービスを作りやすかった
- Ridge + Moco、RPM管理
- forkの蔓延
-
近代 2011-2014
- はてなブログ (2011) (はてなダイアリーのリニューアル)
- 何も実装がないフレームワーク
- フレームワークは設計指針
- Plack/PSGI, Router::Simple, DBI::SQL::NamedPlaceholder, Text::Xslate, JSON::XS
- 現在の基盤にもなるもの: Plack, Starlet, Carton, daemontools, nginx, MySQL, Redis
- 洗練されたチーム開発 : 開発フローについて話すのが流行った
- 2012 : GitHub Enterprise : PRレビュー、wikiは未使用
- 開発フローの伝搬 : IRC/Slackでの口コミ、異動に伴って伝搬
-
現代 2014-
- 多様化 : エンジニア50人
- mackerel (2014)
- 当時CTOの肝いり
- Scala / Go / PostgreSQL
- Perlによる大規模開発の課題
- 長命サービスの保守、大規模Perlの難しさ
- DDD用語が使われるようになった
- 2015 はてなブックマーク in Scala
- Perlも健在 : 開発の高速さ、知見、枯れてる
- BrandSafeはてな (2014)
- 東京オフィス、シニアエンジニア制度(エンジニアのメンタリング)
-
ここまで見てきた歴史とフレームワークが対応している
- フレームワークは何をしたか : 開発の加速、技術スタックの規定
- 近代以降は設計指針になった (指針を開発の枠組みとして共有)
- 明示的(コード、日記)、暗黙的(経緯、空気)によってもたらされた
- 知識は暗黙知と形式知の間を行き来
- カンファレンスで発表→聞いた人が実践→・・・
- 過去と比較をすると、現在を語ることができる
- 10年後の未来を語ることができる
-
スライド作成にYAPCのスライドとインタネットアーカイブが便利だった
-
質疑応答
- Q. 上場によってエンジニアに変わったことは?
- A. セレモニーに出た程度。とくにない
- Q. perlcodesample書いてるんですが、はてなダイアリは開発続いてますか?
- A. 新規機能はやってない。要望があればはてなブログに追加される
Lightning Talks
Perl流では5分でドラで強制的に切りますよ。
沖縄でPerlに入学したので勢いでLTしてみた / 八雲アナグラさん
- 2016年のPerl入学式で衝撃を受けた
- ハッシュリファレンスがかっこいい
- Perlを書いていたら成人していた
- Acme::MadokaMagika を作った
- マミられる機能はありません
-
->qb
メソッドで色がblack
に変わる - READMEが適当、バグが多い、メソッドが動かない
- 「Perlたのしー!」
Twitterの非ブロック数可視化ツールを作ってみた / おささん (@osaponさん)
- ブロックとは? 嫌な人が見えないように
- 広告の報告
- 先行ブロック : そりの合わなそう人を先行してブロック
- ブロックした人数はわかるが、ブロックされた人はわからない
- 自己申告してもらうと良い blolook
- 2億件くらい
- ブロックをバラすのはよくない
- 誰からブロックされたか気になる、という声はあるが、対応しない
Hokkaido.pm 参加報告 / azumakuniyukiさん
- 参加したいなと言っていたら papix さんに行くとツイートされた
- 北海道いいよねって話をしてきた
- ytnobody さんの Azure Functions の話が面白かった
- 翌日 小樽のはやしや食堂、ホッケ定食
- 飛んでいたら Sisimai が Azure Functions で動いていた
- Perl入学式札p(ドラ「ごーん」)
仮想環境でWindows版Perlをビルドする / 白方 健太郎さん
- 「最新版のWIndowsでは動きません」「環境がない」
- 仮想環境でWindowsのPerlをビルドする
- Windows10評価版を使うと良い
- MSアカウントを作ってアンケートに答えれば
- 英語版を使うこと
- Visual Studioも無料の英語版
- VS2013にはgit機能があるので、Perlのソースを落としてくる
- Makefileの中の、CCTYPEを使うコンパイラについてコメントアウト
- Visual Studio Tools の Native Tools Command Prompt を使う
-
nmake
を使ってビルド - 「
-g
オプション対応してますよね?」(ドラ「ごーん」)
スケジュールに意志を込める / i47_rozaryさん
- Project Monaging よりの人間
- 1週間ごとにリリースび固定
- 予定タスク < 差込タスク だった
- タスクを事前に聞きに行って、計画を立てる
- 納期と成果物の乖離
- ステークホルダーの意志を入れる
- 懸念点を出しておく
- チームで合意を取る
- 問題を隠さない、説明を尊重する
- こうありたい、という意志を持つ
- (ドラ「ごーん」)
驚くべきことにPerlの話 / makamakaさん
- 酔っ払わないほうがいいでしょう
- Time::Pieceに
yyyy-mm-dd
などを生やす - 無理じゃね? => 演算子overload
-
yyyy/mm/dd
はできない (m//) とかぶる - 「ページがたくさんあるけどパラパラ漫画なのでご安心を」
- Acme大全2016
- 615個のAcmeモジュール
- Parumon カードゲームをボードゲームに移植
- ゲームバランスが悪い (納期が襲ってこない)
温故知新 / 竹迫 良範さん
- 未踏
- UNIX、アセンブラ、昔の技術を若手に伝承したい
- アセンブラ短歌
- アララギ派 : 命令を流れるままに扱う
- .comバブルの再来
- どうやって若い人を育成?
- アセンブラかるた
- 日本でいちばん有名なハッカー 「下村努」
- Take downで映画化
- MITの鉄道模型クラブが発端
- ありものから便利なものを作ること hacking
- ソフトウェアのハッキングは目に見えない
- FORTRAN
- IBM 704 パンチカード
- 72カラムでの折り返しの起源
- 紙テープ節約のコードゴルフが行われていた
- KT-80
- メモリの値を直接読み書き
- 設計図も添付
- (最近) 大人の科学 : 4bit マイコン
- Harvard Mark I Computer
- ループはなかった (物理的に紙テープを輪にする)
- データと命令が完全に分離されていた
- 世界最古のバグ (蛾が挟まってた)
- COBOL
- 実は自然言語で処理を記述できる
-
.
で終わるのは古い言語、;
で終わるのは新しい言語
- データとコードが分離されていない == セキュリティリスク
- HTMLにJSが書ける
- 文字列の組み合わせでSQL文を生成
- データ領域でコード実行を抑制(ハーバード・アーキテクチャの復権)
- 実行されないと思っているデータに実行コードが混入する
-
0
1
を実践的に学べる場所が必要- 公道でこれらを試すと逮捕される時代
- コンテストで伝授する
- ローマは一日にして成らず → せめて2日は欲しい
- FM TOWNS
- 最初から 32bit
- LSI C-86 試食版
- アーケードで100円使うのが勿体無いので、ゲームを作り始めた
- シュレディンガー方程式を調べるために図書館に行ってた
- 今の基礎
- Silicon Graphics INDY
- Sun SPARC station LX
- 50M Hz (CPUのクロック数)
- 学生1人辺り 10MB HDD容量
- C, X11 programming
- ロボットの制作
- Namazu の改良 (初めてのオープンソース)
- JavaかPerlかで、Perlを選択してしまった
- Shibuya.pm のリーダーの引継 : 「バソキヤを食べる」
- Perl Cookbookの監訳
- 2003年 Shibuya.pm で初登壇
- mod_perlにおける C10K Problem
- 推測するな、計測すべし
- 適切な MaxClient値の設定
- KeepAliveはoffにすべき
- Esehttpd + Pound
- ETagが効くとか効かないとか
-
disable_ssl.h
を作るhackとか
- 正規表現でマインスイーパー
- YAPC Asia 2011 のマインスイーパーのソルバ
- 画像処理と
Win32::GuiTest
- デバグが大変(キーボードとマウスの制御が奪われている)
- Perl Killer USB!!
- 高専生による Bad USB の自作
- Alpine Linux / 10MBくらいでツールを配れる
- 最近はマネージメント業務
- Perlの知見 : 自動化、一元管理
- Excel 方眼紙の自動化
- 動機と能力が被っていると、幸せな仕事
- 就職してから能力を増やす
- グルー人材が重要
- 50代には社会を良くすることに取り込みたい
- Audrey Tang の入閣
- Perlコミュニティの良いところ
- 10年後、100年後を考えて成長していくとよい
クロージング
- かんたんPerl当選者発表
- ベストトーク
- Webエンジニアに知ってほしいRDBアンチパターン
- 賞品 "RICOH THETA S"
- Webエンジニアに知ってほしいRDBアンチパターン
- ベストライトニングトーク章
- 驚くべきことにPerlの話
- 賞品 "HHKB Pro Bluetooth"
- 驚くべきことにPerlの話
- 参加者は180人
- スタッフ写真撮影
- 今後の予定
- 2017年7月1日 YAPC::Hukuoka 2017 HAKATA
- トーク応募も始まってます
- 2018/XX/XX YAPC::Okinawa (!!)
- 201[89] YAPC::Tokyo
- 2017年7月1日 YAPC::Hukuoka 2017 HAKATA