今日の三角巾(さんかくきん) by matobaa

| プロフィール | 欲しい物リスト | おとなりページ | @matobaa
追記

2014-06-09 [長年日記]

swiftを触ってみようかと思ったけどやめた話

プロジェクトルームの本棚に7つの言語 7つの世界があったのでお借りして読んでいる。

いままでの言語遍歴といえば、大学時代にいろんな言語、特にPascalとLispを勉強していて、社会人になってからJavaをもう20年近くやってきて、Pythonを5年くらいやって、JavaScriptとかJQueryとかを触りつつ、またJava⑧に戻ってきているところ。

いろんな種類の言語を触ってみることで Beating the averages でいうところの「「ほげ言語」のパラドックス」ってやつを実感しているわけで、「7つの言語 7つの世界」を読んで、オレの「ほげ言語」をさらに一歩進めたいと思っている。紹介されている言語、Ruby、Io、Prolog、Scala、Erlang、Closure、Haskell はまだどれも触ったことがない。いい機会なので、頑張って触ってみてる。

そんな折に Apple が Swift とかいう言語を提供してきた。いい機会だ、ついでにやってみよう……と思ったのだが、仕様書がiBookでしか提供されていないようで、ここでもう面倒くさくなってしまった。仕様書を自由に読めないなんて、もうそれだけでやる気がそがれる。Swiftといえば金融業界ではこっちのSWIFTなわけで、並列処理用言語もすでにあったわけで、同じ名前をぶつけてきたことも気に食わない。そんなわけで、ちょっと距離を置くことにした。

ところで、がんばってObjective-Cを覚えた技術者は新しい言語について、どう思うんだろうねぇ。


2014-01-27 [長年日記]

WindowsXPの代替を検討中

実家のノートPCがWindowsXPなQosmioなので、サポート切れに備えて別のOSに移行している記録。まだ途中。

パーティションを縮小する → 成功

HDリカバリ領域を除いて全体が一つの基本パーティションになっていたので、まずはデフラグしてからパーティションサイズを減らそうと挑戦した。すっきり!デフラグで「セーフモード+シェル入れ替え」モードで実行したのだが、後ろのほうのファイルを移動できずに断念。

ということで、EaseUS Partition Master Freeを使って縮小をしてみたら、成功。デフラグしておいたせいか、それほど時間もかからずに完了した。マイドキュメントの残量があったので、80GB→35GB。

USB起動Linuxを導入 → 失敗。

まずはLinuxを……ということでDebian 7.3.0 の導入を試みた。

USBなLinux起動ディスクを作ろうとして、LinuxLive USB Creatorで作成したのだが、QosmioはUSBからの起動をサポートしていない。WindowsXPのブートローダである boot.ini を編集することでUSBから起動できないかといろいろ試したが、よくわからず断念。CD-Rに焼いてそこから起動することにする。

CD-RからDebianをインストール

焼いたCD-Rから起動して、Debianの起動シーケンスにそって、開いた領域から45GBを既定レイアウトに基づいて分割してインストール。/homeは25GB程度を確保できた。GrubはMbrにインストールした。念のため、Mbrは以下のようにファイルに吸い出しておく:

dd if=/dev/sda if=debian.mgr bs=512 count=1

すんなり起動。問題なし。

ついでに Android-x86 に挑戦

将来タブレットに移行することも想定して、ここでおばあちゃんにLinuxのUIを覚えてもらうより、一足飛びにiPadやらAndroidやらのGUIに慣れてもらったほうがよかろう、と、Android x86の導入に挑戦する。バージョンは最新のひとつ前の 4.3.0 を選択した。

/home を開けるため、まずは debian 上で /home/username を退避するために、tar cf - -C /home username > /mnt/username.tar した上で、Debianをリカバリモードで起動して umount /home して fdisk でパーティションを削除。この状態で android-x86のCD-ROMから起動して、空けた 25GBの中から 16GBの基本パーティションを作ってインストール。Grubはdebianが入れたのがあったのでandroid-x86のgrubの導入はスキップした。

grub.cfg を編集して Android 領域から起動できるようにする。

手元に情報がないので、あとでかく。

Android x86 を起動 → できた。けどCUIまで。

A N D R O I D : root@x86#というところまではたどりついたが、GUIを起動できていない。どうやら、grub での設定がいくつか足りないみたい。

今日はここまで。


2013-09-11 [長年日記]

ウンコードについて考えてみている

ので思考ダンプ。そのうち整理するかも。

どこが悪いのか ... 要件が不安定 | 設計がゆるい | 実装がしょぼい | テストがいけてない | 管理がゆるい

要件が不安定とは ... 決まってない、決まるのが遅い、一部しか決まってない、夢をかたっている、意味がわからない

設計がゆるいとは ... オープンクローズでない、単一責務でない、依存性が循環、CRUD表が歯抜け、DB正規化してない、非対称、例外処理ポリシーがない、被災を想定してない

実装がしょぼいとは ... グローバル汚染、MT-Unsafe、セオリー違反、規約違反、例外握りつぶし、長時間処理、メモリ喰い、デッドコード、なんでも文字列

テストがいけてないとは ... 状態など網羅してない、非対称、未レビュー、未消化

管理がゆるいとは ... ゴミだらけ、変更根拠がわからない、総量を押さえてない、最新情報が行方不明、フィードバックしてない、変化を把握してない

どこまでやればいいんだ。

安心できるまでやるべし。しかし安心ってなんだ。

参考文献

ASTERテストツールWGのテストツールまるわかりガイド(入門編)の第2章「健康診断」あたり


2013-07-16 [長年日記]

July Tech Festa 2013 に参加した

勉強会に参加するなんて久しぶり。7/14(日)に、IT勉強会カレンダーで見つけた July tech Festa「コードの中のインフラ(Infrastructure as Programming)」に参加してきたのでメモ。「ブログに書くまでが勉強会」らしいし。

基調講演 「Treasure Dataのクラウド戦略

中川氏による、Treasure Data 社の宣伝半分、技術解説半分のセッション。いわく「RDBを超えるボリュームのデータを、手間をかけずに使えるように、Collect + Store + Repor(Query)をSaaSで提供」とのこと。 togetter Treasure Data 発表資料
アーキテクチャやバックエンドのクラウドサービスは発表資料に任せるとして、個人的には「運用ではこんな外部サービス使ってます」とひとつひとつ丁寧に紹介されていたサービス群が気になったので、リストアップしておく……と思ったけどこっちにまとまってたから省略。

ランチセッション:「Why chef?

次のハンズオンの席を確保するために、パス。

13:00 「実践! Chefハンズオン

クリエーションライン 北川さんらによる、AWSを使ったChefのハンズオン。12:20時点で20%、12:40時点で30席が満席。ノンサポート6席と傍聴席36席も埋まるほどの大盛況。

Chef-solo をちょっとだけかじった状態で参加した。研修室のMacから sslで AWSのマイクロインスタンスにログインして、chef と chef-ec2 を使って別のインスタンスにapacheを導入、までで時間切れ。ここからが美味しそうなのに! ……後から聞いたら、別室で延長戦をさらに2時間やっていたとのこと。

opscode.orgにある hosted chef を使うのにPEMが必要で、EC2インスタンスを立ち上げるのに KEY の指定が必要で……とかいうあたりに手間取ったけれど、そこをクリアしてしまったらスルスルっと環境構築できてしまうあたりが感動。逆にいえば、上記ハマりポイントをクリアできれば、もっとらくになるのかもね。「EC2からEC2起動するならKEYは既定値として同じものを用いる」とか chef-ec2 を改造できそう。

15:00 serverspec: Chef/Puppetと一緒に使うサーバテストのためのテスティングフレームワーク

「chefでいいじゃん」と言われながらも作ってみました、とのこと。スライドの3ページ目とか5ページ目みたいに整理するのって大事だと思った。
非依存重要! KISS重要! 環境を汚さないこと重要! コンセプトがとてもいいと思った。

16:00 OpenStack Swift Grizzly の新機能

AmazonEC2でいうところのEBS、Openstack版のオブジェクトストレージ swift の新バージョンでは、「ロケーション」をくくる単位が新たに設けられ、物理的に離れた場所での分散ストレージを実現する、とのこと。まだ実装がこなれてなくて、使い方によってはまだまだ遅いから注意だって。

発表が15分くらいで終わっちゃったので、質問タイム開始。中の人? が発表者を後ろからいろいろ刺してた。

16:35 CTFで上げるセキュリティスキル

で、こっちに移動。CTFの問題を3つとりあげて、こんな感じで解いた、という紹介。Binary Hack みたいで面白かった。CTFちょっとやってみたいと思った。

17:00 LT

HyClops for Zabbixというインベントリ情報収集ツール?の紹介など。OHAIでもいいかもね。

18:00 懇親会

たくさんいたー。いろいろ聞いてみたら、一人で自発的に参加してる人ばかりだった。久々の勉強会でちょっとびびってて、最初は発表者に「だれか紹介してよー」とくっついてたんだけど、途中からは「どうでしたー」とがんばって話しかけてみたよ。なんか自分の看板(こんなん作ってます、みたいな)を持ってると話ししやすいよねーというのを実感した。

全体の感想

インフラエンジニア不足してるとか言われてるっぽいけど、たくさんいるじゃん!! それとやっぱり勉強会は楽しい!! fluentdとかzabbixとか、使ったことないけど習得しておきたい技術もちらほら出てきたし、CEPとかもやってみたい! なんか作りたくなってきた!

あと、twitterでフォローしまくった! みんなよろしくね!

帰りの電車でフィードバックもらった

FieldTooltipPlugin、tableタグの下にdivタグがあるけど invalid ですよ、治して使ってます」と言われた。えっっ。パッチください。

本日のツッコミ(全1件) [ツッコミを入れる]

matobaa [invalid治してみた http://trac-hacks.org/changeset/13334#file0 あ..]


2013-04-30 [長年日記]

いまのいままで、and or イディオムの使いかたを間違えてた

シェルスクリプトとかで条件分岐を短く書くことができるので、よくこんな書き方をしていた:

$ if 条件 ; then
>   真の場合の処理
> else
>   偽の場合の処理
> fi
↑ を and/or イディオムを使って ↓
$ 条件 && 真の場合の処理 || 偽の場合の処理
同様に、CやJavaでも、値の代入で使える三項演算子がなかなか便利で、こんな感じで使う;
変数 = 条件 ? 真の場合の値 : 偽の場合の値
Switch Case もこんな書き方にできる;
変数 = 条件1 ? 条件1成立時の値 : \
       条件2 ? 条件2成立時の値 : \
       条件3 ? 条件3成立時の値 : どれも成立しなかった時の値
で、Pythonを使い始めてから、この記法が使えなくて不便だなーと思っていた*1のだが、いろんなソースを読んでてて、こんな書き方を見つけたので真似してた:
変数 = 条件 and 真の場合の値 or 偽の場合の値
だけど、この書き方は「真の場合の値」が偽である場合に、「偽の場合の値」を返す、という挙動をする。これを知らなくてバグを作りこんでしまっていた。

*1 Python 2.5以降なら 変数 = 真の場合の値 if 条件 else 偽の場合の値 という記法が使えるようだが、当時使っていたのは Python 2.4 だった。

正しい and or イディオム

Wikipediaによれば、こう書くのがいいらしい;

変数 = (条件 and [真の場合の値] or [偽の場合の値])[0]

いままでのコードを一通り見直さないといけないや。

ツッコミお待ちしております。 半期 四半期 全カテゴリ