Home

30からのBlog

[雑記]無線LANが遅くてチャンネルを調べるときmacが便利だった件

なんだか、家の無線LANが遅かったり速かったり不安定だった。
特に家の端の方に行くと遅くて、ルーターの置き場所が悪いのかなぁなんて思ってちょっと調整したんだけどやっぱり変わらない。
IEEE802.11gでつないでるので、マンションの自分の家の中くらい普通に繋がるはずだよねぇ。

で、よく見ると、どうやらとなりの家の無線LANも見えている。
こりゃー干渉してるかもなーということで、チャンネルを調べてみた。

どうやって調べようかと思って、なんかユーティリティでも探そうかなぁと思ったら標準で付いてた。
[java-ja][Mac] Macで、飛んでいる無線LANのチャンネルを調べる - いそっちノート

$ cd /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/
$ ./airport -s

これで見ると、確かにチャンネル1をウチもお隣さんも使っているっぽい。
というわけで、ルーターの設定でチャンネルを変更して解決。

よかったよかった。

繋がらないエリアは、確かにとなりの家と壁を挟んですぐのところなんだよね。
マンションとか狭いエリアの中だと、干渉しあうっていうのも普通にありえる。
チャンネルが自動設定になっていても、無線LANを置いてある場所は良くても、PCの場所で干渉してたらダメだもんねぇ。
この辺って、詳しくない人には辛い領域な気がする。
遅くなっても、こんなもんかと我慢してる人はどれくらいいるんだろう?

[雑記]アロンアルファで指がくっついたら除光液

ブログも全然更新していないので、小ネタを。

昨日嫁の指がアロンアルファでくっついた。
全く取れる気配がない。
さすが瞬間接着剤。

グーグル先生に聞いたところ、除光液ではがれるらしい。アセトンの入っているやつ。
しかし、嫁は普段マニキュアをしないので家に除光液が見当たらない!

というわけでコンビニに行って無事に除光液をゲットし、指も見事に離れました。

ホームセンターに行くと専用の液が売っているらしいけど、コンビニで除光液を買ってくればとりあえず瞬間接着剤でくっついた指は離れるという小ネタでした。

PILで、Image#tostringができない

djangoから動的にQRコードを作ろうとしていて、ImageをtostringしてHttpResponseに渡せば良いかと思っていたら、なんか動かない。
引数の指定によって「unknown raw mode」とか「encoder png not available」とかいいやがる。
結局どう指定しても動かない。
仕方ないので、Image#saveの結果をStringIOで一回受けて、それを返すことにする。

動かなかったコード

PYTHON:
  1. return HttpResponse(im.tostring('png', 'RGB'), 'image/png')

多分これで動く

PYTHON:
  1. from cStringIO StringIO
  2. s = StringIO()
  3. im.save(s, 'png')
  4. return HttpResnponse(s.getvalue(), 'image/png')

こんなんでいいのかな?

[django]デフォルトマネジャのget_query_setをいじったらsaveできなくなった

あるmodelに削除フラグを追加したので、かならずそのフラグを参照するようにget_query_setをオーバーライドしたマネジャを用意し、それを該当modelのデフォルトマネジャに設定した。

マネジャ — Django v1.0 documentation

とはいえ、削除フラグのたっている(削除済み)のデータも扱いたいときがあったんで、別のマネジャを使って削除済みデータを取得してsaveしたら、PKの重複エラーが出てしまった。
どうやらUpdateではなくInsertしようとしたみたい。

ソースをちらっと見たところ、デフォルトのマネジャで検索してInsertするかUpdateするか判断しているっぽい。

カスタムのマネジャオブジェクトを使う場合、 Django がモデル内に最初に見つけたマネジャ (モデルに定義した順番で最初のマネジャ) は特別扱いされるということに注意してください。 Django はクラス内で最初に見つけたマネジャを「デフォルトの」マネジャにし、このデフォルトマネジャを (admin アプリケーション以外でも) あちこちでモデルのマネジャとして使います。ですから、 get_query_set() のオーバライドによって、扱いたいオブジェクトを取り出せなくなるような羽目に陥らないように、デフォルトマネジャの選択には細心の注意を払ってください。

マニュアルには、確かに注意しろと書いてあるけど、まさかsaveできなくなるとは。
saveのデフォルト動作としては正しい気がするんだけど、なんか回避策はないのかなぁ?
force_update=Trueとしても、丁寧に行の存在チェックをしているみたい。

その行は絶対に扱わないということでも無い限り、デフォルトマネジャのget_query_setに細工するのは危険っぽいですね。

自宅にネットワーク共有ディスクw導入

家のPCが不調になったことから嫁は白MacBookを触ることが多くなり、私はもともとWindowsはあまり触らなくなっており。
そんな訳で、マシン間でデータ共有をどうやるかが課題になっていた。

そこでHDDを買って、できればNASとかやってみたいなーと考えて物色しはじめた。

容量は、大きめがいいなー。できればテラとかいっちゃったらかっこいいなー。
バックアップも大事なファイルをたまにとってるだけだし、いっそのことメインにデータを保存するDISKとして利用して、RAID1で運用できたらいいなー。

Amazonで物色しているとなんだかネットワーク対応って高い。
1TBの容量を確保してRAID1だと、2TBのディスクを買う訳だけど、それでも高い。
ケースを買って、自分でバルクのDISKを入れるかなーと思ったけど、それでも高い。

ここで考えた。どうやら家庭用のNASって、ようはsambaらしい。もしくはWebDAVでつながるとか。
うーん。NASって業務でしか使ったこと無いし、手元で遊べることに憧れるけど、良く考えたらそりゃただのsambaだよねぇ。
すでにLinuxサーバーが24時間稼働してるんだから、そこに外付けHDDつなげばいいかー、という結論に達した。

家庭用NASって言葉を耳にしたときに、LinuxとかMacOSXからNFSでマウントして、WindowsからはLinuxサーバーのsamba経由で接続することを想像していたのは内緒です。

買ったのはこれです。

BUFFALO ミラーリング機能搭載 USB2.0/IEEE1394用 外付けHDD 2.0TB HD-W2.0TIU2/R1
バッファロー (2008-07-09)
売り上げランキング: 1858

まずは、RAIDの設定がうまく行かない。
アルミのMacBookにつないで設定しようとしたが、なんかうまくいかない。
どうやらOSXの場合、USB経由じゃだめでFireWireで接続してやれってことらしい。
くそー、無くなっちゃったよそんなI/F。

仕方なく嫁に占拠されている白MacBookを取り出しRAID設定。
なんだかフォーマット時にエラーっぽいのが出ていたけど、RAID設定自体はうまく行った様子。
フォーマットはLinuxにつないでからやればいいか。
ていうか、FAT32で事前フォーマットってなんだよ。

サーバーにつないで、何も問題なく認識し、最近のLinuxってらくちんだなーと感心しながらフォーマット開始。
DISKのランプも二つ同時に付いたり消えたりしてるから、RAID1もうまく設定できているんだろう。
・・・
しかし遅い。終わらない。

そういえば!
サーバーに転用したPCのスペックを古いWebページで確認すると・・・
USB1.1!
うーん。これは致命的。どうしよう。

しかたなく、ここでもFireWire、またの名をIEEE1394に登場していただきました。
認識もまったく問題なし。(未だにFedoraCore6が立ち上がっています)

あとは、普通にsambaを立ち上げて無事に接続できました。
今のところ快調です。

R25のfaviconが落ち着き無くて気になる

R25のfaviconにアニメーションが使われている。

http://r25.jp/

ブラウザのタブがずーっとちょこまか動いていて、なんか気になる。
目障りと思う人はいるだろうけど、逆にいいことあるんでしょうか?

DELL購入

前のエントリの通り、家のWindowsPCがひどく不調
昨年末から。

そんなこんなもあってDELLのInspiron 15を注文した顛末記です。

最初は家族でヨドバシに出掛けて見ていたんだけど、値段や利用シーンを考えるとDELLがいいかなーという話しになった。
DELLは店頭モデルもあるんですね。

しかし、PC売り場を見てもほとんどラップトップだなぁ。昔と比べると、デスクトップと売り場面積が逆転している。

ポイントも付くし直販じゃなくてもいいかなーと思っていたが、ここで念のためすぐに直販サイトも確認。

するとキャンペーンで、店頭モデルよりもスペックがいいのに、15000円も安いモデルを発見。
アルミニウムのMacBookを持ち歩いていて良かった。

というわけで、車に戻ってポチッと注文しました。
これで、ついにデスクトップPCが我が家から姿を消すんですね。

家のPC(Windows)が不調

トラブってる機種は日立Prius Deck DH73N
OSはそのままWindowsXP

起動が異常に遅い。
BIOS画面のあと、Windowsのロゴ画面が出るところまでは順調に行くが、そのあとログイン画面が表示されるまでに数分かかる。
ひどい時には、10分たってもログイン画面が表示されず、電源を切って再起動したりしている。

ログイン画面がでても油断してはいけない。
ログイン後、デスクトップは表示され、マウス操作もできるがすぐにはまともに動かない。
デスクトップ表示後、起動音がなって通常に操作できるようになるまで数分かかる。

無線LANをUSBにつないでいるが、これの認識も遅い。何度か抜き差ししてようやく認識。
USBメモリもなかなか認識しない。

OS再インストールかなと思って、リカバリしようとするが、これもうまくいかない。
リカバリディスクを読み込むが、そのあとリカバリのWindows画面までたどり着けない。

ちなみに、Windowsが立ち上がった後にイベントビューワを確認しても、とくにエラーは出ていない。

うーんなんでしょう。メモリもちゃんと認識しているっぽいしな。
# メモリを抜き差ししたりしてみたり、内部のホコリを掃除したりしたけど効果なし

USBの認識がおかしいのは気になる。
修理に出すかなーとも思うが、マザーボードだと、結構お金もかかる。
PentiumDも熱を発しすぎてこわい。
電源周りもトラブりがちで、いけてないモデルだったのかな。

家にあるほかのマシンは、白いMacBook、アルミのMacBook、古いPCを転用したLinuxサーバー。
白いMacBookは主に嫁が利用中。こいつにWindowsを入れてしまえばいいかな。
しかし、Windows+Officeのライセンスは手元にない。このライセンスも結構なお値段で躊躇してしまう。

いっそのこと、これを機会にWindowsを排除するか。
しかし、直近でもExcelVBAをつかった仕事をしていたり、嫁も使い慣れたWindowsのほうが良いと主張したり。

というわけで、衝動的に次のPCを買ってしまいました。
続きは次のエントリ(DELL購入)で。

優秀な人の力を発揮できるように

この話は至極もっとも。
ただし、例が極端すぎてネガティブな反応が多いのかなぁ。

従来のソフトウェア工学が決定的に間違っている点 - kwatchの日記

最後にもう一度。高度な仕事になるほど個人に依存するのは避けられないし、属人性を排除すべきではない。属人性を排除して各人の能力を均一化して扱おうとしたソフトウェア工学は根本的に間違っている。

プロジェクトで優秀(だと思われる人)にアーキテクトっぽい仕事を任せたり、共通部品を作らせたりして整備した後に、それ以外の人にサポート、例えばドキュメント作成や大量生産系の仕事を任せる、なんていうのは普通にプロジェクトマネジメントとして考えると思う。
逆にこれすら考えておらず、それでうまくいったプロジェクトを見てみたい。
うまくいったとかいっていても、実はOSSのプロダクトやフレームワークなどを活用していてそれで生産性があがっていたりして。それはOSSを作った優秀な人の仕事の上に成り立っているんだけどね。

とはいっても理想は遠く、本当に優秀な人をピックアップするのが難しかったり、本当に優秀な人は請負のソフトウェア開発などやらない人だったり、自動化で大量生産を行うことの難易度が高すぎたり(単純に能力が足りないのかも)ということはあるだろう。
それでも、以下のどちらの世界を目指すのが良いのか?というサジェスチョンが元ネタの議題ではないかと思う。

  • できるだけ属人性を排除し、誰が入れ替わっても事業が存続していくようにしたい。
    そのためには、みんなが均一な能力を発揮し、誰が入れ替わってもうまくプロジェクトが進むような仕組みが必要
  • できるだけすばらしい成果を出したい。
    そのために、優秀な人が最大限の力を発揮し、高度な成果を達成できるような体制が必要

このどちらが正しいと思うかは、ソフトウェア開発の仕事をどちらの仕事ととらえるかにかかっていると思う。

  • 車の組み立て工程
  • 車のコンセプト設計、デザイン

前者の仕事は、職人的な部分もマニュアル化し、流れ作業でスムーズに作業が進むようにする。多少の能力差も最終品質に影響を与えるほどではないという認識になりそう。
後者の仕事は、単純にマニュアル化できない。主査など主要なメンバーの能力に依存するが、どんな人物を大事な役割に登用できるかが鍵という認識になりそう。

これは、ここに書かれている話しと同じ。
まつもとゆきひろ氏が語る「ビューティフルコード」セミナーに行って来た - Slow Dance

コードが工業製品と勘違いされているために、「ソフトウェアの生産」は車の生産ラインのように扱われることがある。

しかし、ソフトウェアは本質的には情報なので、流れ作業は0に等しく、生産ラインのような作業はない。実は、ソフトウェアの生産は車の作業工程でいう「設計 = デザイン」の部分にあたる。車を設計する時には、原寸大の粘度を削って車の形にする。そして、それが美しいとか議論されて最終的なデザインに落ちる。

では、SIという仕事はどっちなのというと、どちらかというとまつもとさんの言っていることが近しいのではないのと思う。
それはソフトウェア開発(SI含む)は本来クリエイティブで高度な仕事であり、つまり属人性を排除しきれないことを意味し、kwatchさんの言っている方向は正しいと考えられる。
少なくも私はそう思う。

なんとなくもやもやして、この辺の考えを整理しようと思いながら放置してたんだけど、現実世界にあわせて実にうまく説明している文章を見た。この人の話しはいつもうまく整理されていて参考になる。

不確定性を受け入れ突出した人材の力を引き出せるのが良い組織 - アンカテ

つまり、これからの組織のマネジメントは、

1. 属人性を排除した組織としてのパフォーマンス(業者と折衝して2億円を8000万円くらいにできる組織)
2. 組織内の突出した人材を活用したパフォーマンス(超属人的なスキルで2億円を820万円にする個人を中心にしたチーム)

の組み合せになるのではないでしょうか。

このニュース(見積もり2億円のIP電話を820万円で構築した秋田県大館市から学べること:ITpro)の話しだけど、これはすごく納得できる。
このニュースに対する論争の中で一番しっくりきた。

若干違う趣旨のことを言っている気もするけど、kwatchさんのいっていることと近いのではないだろうか。

こういうマネジメントを考えられる組織は強くなるだろうな。

追記
元ネタではSIではなく、ソフトウェア開発の話しをしていたが、SI業界大手はソフトウェア工学好きに見えるし、反論もSIっぽいプロジェクトを意識したものが多そうだったのであえて混同して記述しています。

[django]さくらインターネットでPILがエラー

嫁のブログ(NUI)で、ほかの人が作った作品をアップロードする機能をdjangoで実装していたんだけど、ユーザーからの報告、つまりコメントでうまく動かないという報告が。

で、見てみたらPILのthumbnailメソッドでエラーが発生している。
djangoは「The _imaging C module is not installed」っていっている。

サーバーに入ってpython立ち上げて確かめてみる。

>>> import PIL
>>>

これは大丈夫。

>>> import _imaging
Traceback (most recent call last):
File "", line 1, in ?
ImportError: Shared object "libz.so.2" not found, required by "_imaging.so"
>>>

うーん。サーバーのバージョンアップでもしたのか。
/usr/libの下を見ると、libz.soはlibz.so.3へのシンボリックリンクになっている。

こりゃPIL入れ直しか。

http://www.pythonware.com/products/pil/
ここから落としてきてインストール。
ライブラリは、$HOME/local/lib/python/に入っているので、--homeでディレクトリを指定。

$ wget http://effbot.org/downloads/Imaging-1.1.6.tar.gz
$ tar xvzf Imaging-1.1.6.tar.gz
$ cd Imaging-1.1.6
$ python setup.py build
$ python setup.py install --home=$HOME/local

復旧。
よかったよかった。

Home

Search
Feeds
Meta

Return to page top