Webエンジニアの教科書をよみました

id:sasata299さんよりWebエンジニアの教科書をご恵贈たまわりましたので簡単に感想をば!
ターゲット層
Webエンジニアの教科書、メインターゲットはエンジニア1年生ではないので注意が必要
こちらは「はじめに」でも触れられているように、
・2年目、3年目のエンジニア
・フロントエンドをやっているがサーバサイドにも興味があるエンジニア
・サーバサイドをやっているがフロントエンドにも興味があるエンジニア
・フルスタックエンジニアになりたいエンジニア
・最近新しい技術を目にするけど試せていないエンジニア
な皆さんが対象とのことです。
個人的には「自分の明るくない分野に対してのとっかかりをつかむことができる本」だと感じました。
あるていど前提知識があるものとしてお話が進んでいくので、「Webエンジニアのはじめの一歩」としてこの本を手に取るとギャップに驚いてしまうかも。
内容
●CHAPTER-01 Webエンジニアについて
http://www.c-r.com/book/detail/1006
●CHAPTER-02 Ruby on Railsでの開発
●CHAPTER-03 PHPでの開発
●CHAPTER-04 NoSQLデータベース
●CHAPTER-05 フロントエンドの実装
●CHAPTER-06 ログについて
●CHAPTER-07 データの可視化について
●CHAPTER-08 環境構築の自動化
●CHAPTER-09 便利な外部サービス
と、webサービス開発・運用にまつわるさまざまな要素が取り上げられています。
話題のCHAPTER-04(NoSQLデータベース)について
見出しでいちばん食いつかれていた*1のはこの章ではないでしょうか。
ここではまずRDBの概要が説明されたうえで、RDBの不得意なことを補うための選択肢としてNoSQLを検討するべき、とはっきりと書かれていました。
中ではRedisとMongoDBが紹介されていましたが、それらが活きる具体的な例も示されています。
こちらもターゲット層からブレずに、NoSQLが気になっている人向けに踏み込んだ紹介がなされているという印象です*2。
どの章も、いつどういうタイミングでなぜそれを選ぶのか、というところまで説明がなされているものが多く、目的意識を持って読み進めることができました。
新しく触れる技術をより効率的に、詳しく学んでいくためのとっかかりとなる、心強い本です!
ささたつさん、ありがとうございました!

- 作者: 佐々木達也,瀬川雄介,内藤賢司
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2015/03/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る

- 作者: 佐野裕
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2013/10/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (12件) を見る
いまさらencode/decodeとflagged utf8の話
すでにさまざまな方が論じられておりますが、ちょいとややこしくて忘れられやすいのであらためて。
とりあえず至言をコピペ
入り口で decode して、内部ではすべて flagged utf8 で扱い、出口で encode する。これがすべてです!とにかくこの基本方針をまもっていれば幸せになれます。
http://blog.64p.org/entry/20080408/1207619640
[request] 入力値はすぐdecode … なにかしらの処理 … DBから引いたらすぐdecode … なにかしらの処理 … 出口付近でencode [response]
in/outのdecode/encodeはWAFが肩代わりしてくれることが多いので、レスポンスを返すときにはちゃんとdecodeした文字列を返してやりましょう。
ref:
Perl: 文字コードとutf8フラグについて - @bayashi Wiki
Perl の文字列エンコーディングの話 | Hachioji.pm 日めくりテックトーク
Perl で utf8 化けしたときにどうしたらいいか - blog.64p.org
2014年ふりかえり(技術編)
ぽえむははてぶろのほうに書いたので、技術的な視点でざっくり振り返ってみる。
1-3月
お仕事ではずっとPM業と実装の二足のわらじでかけぬけていた、気がする。
2月あたりはミドルウェアまわりをおさらいしたい!とおもってVPSであそんでいたようす。
なにをしていたかあんまり覚えていないの、よくない!今年はもうすこしログを取る。
4-6月
YAPC::Asia 2014のトークの初期構想みたいなのをハマピーではなしたりした。
Chrome Extension(github issuesでつけたラベルを/pullsにも表示するextension。地味にべんり)をつくってあそんだりもしていた。
7-9月
YAPC::Asia 2014でトークした!初トーク。たくさんフィードバックもいただけて、嬉しいかぎり。
Perl的な話だと、デモに使いたくてこのあたりでまともにAEを勉強しはじめた*1。
@ikeayとおしごとができたのもとっても楽しかった!来年もあんなようなことやりたいなー。
そしてはじめてISUCONに出場して、予選敗退した!くやしい!
やっぱりああいう場では普段できることしかできない、ので、趣味の範囲を拡大していくか、仕事の範囲を拡大していくか、どちらかだと思う。
10-12月
ハマピーとかゴタピーとかに参加した。
ゴタピーではAPIを作るときの話と、テストで気をつけていることの話をしていたのだけど、資料がふっとんだ*2。むねん。
Perlアドベントカレンダーではbitというコマンドを作った話を出して、Minillaではじめて(github.com上に)リリースしたりもした。
12月後半はgolangにも手を出し始めて、かんたんなwebアプリケーション+認証まわりをごりごり書いていた。
golangはまだ手になじんでいないので、もう少しお作法が身についたらいまお世話になっているライブラリにぷるりを投げつけたいなーと思っている。
web屋さんでPerlを書くようになって1年とちょっと、すこしずつエンジニアとしては足場ができてきたようにおもうけれど、今年はもっとエンジニアとしての体力をちゃんとつける1年にしたい。
ずっとAPIとか画面のないものをつくっているので、今年前半は「ふつうのwebアプリ」をひととおり組み立てられるよう*3になっておきたいなーとか、
iOSを1年くらいお休みしているのでそろそろリハビリしないといかんなーとか、
メディアアート方面にももう少しかじりついていたいなー*4とか、
そんなようなことを思いながら三が日が過ぎていったのでした。
ことしもかけぬけるぞー!
*1:そういえばブログにAEのこと書こうとおもってすっかり忘れてた…
*2:知見:http://d.hatena.ne.jp/ar_tama/20141224/1419386670
*3:たとえばセッションまわりとか認証とか、まだまだ弱いなーと感じている
*4:p5 / openFrameworks
MinillaでCPANにアップロードせずにreleaseするには
FAKE_RELEASE=1 minil release
minil releaseで依存モジュールをMETA.jsonに書き出してくれるの、とってもべんり。
ref:
http://perldoc.jp/docs/modules/Minilla-v0.6.4/lib/Minilla/Tutorial.pod
minil releaseでChangesに追記するときは
{{$NEXT}} <<このエリアにspace or tabを挟んで追記する>>
とのこと (https://github.com/tokuhirom/Minilla/blob/master/lib/Minilla/Release/CheckChanges.pm#L20)
なので、
0.01 - Comments
という体裁にしたかったら、
{{$NEXT}} - Comments
と書くだけでよかった。
ref:
Not detecting version in Changes file · Issue #59 · tokuhirom/Minilla · GitHub
MinillaでNo mention of version '0.02' in changelog file 'Changes' - 鈍足ランナーのIT日記
cp, mv, rmには-iオプションをデフォルトでエイリアスするとはかどる
う、うっかりスライド吹っ飛ばした……
たとえ後からupしないスライドでもうっかり消さないようにバージョン管理しましょう(涙目) #gotandapm
cp, mv, rmは-iつけてエイリアスしておくと幸せになれる、知見
さっそくエイリアス設定した。
man cp:
-i Cause cp to write a prompt to the standard error output before copying a file that would overwrite an existing file. If the response from the standard input begins with the character `y' or `Y', the file copy is attempted. (The -i option overrides any previous -n option.)