これもエンジニアの仕事

※  以下これまた日頃「イヤな仕事にも笑顔で応え」な苦労をされているエンジニア以外には面白くもなんともないであろう「ただのグチ」なのでお許しを。

あるサイトで500(Internal Server Error)が出ているので調べて欲しい、との依頼。Apache+PHPではよくある話で、発生箇所はすぐにわかった。システムで自動生成される.phpの中にあるXMLタグの書式がダメで、PHPのパーサがエラーで落ちているのだ。

が、そのシステムは「既にいないどこかの誰か」が何年も前に作ったもの。対策を講じようとソースを眺めてもサッパリわからないし、そもそもこういうのに安直に手を入れたら別の問題を引き起こしかねない。

そこで現場と相談の末、苦肉の策として

  1.  .phpが生成もしくは更新されるのを監視する
  2.  それを検知したらsedで.phpから問題のタグを削除する
  3.  1に戻る

という処理をバックグラウンドで動かす事にした。これなら利用者には影響ゼロだし、負荷も軽い(だろう)し。監視にはLinuxのinotify-waitを使う事にした。

だがこんなの、典型的な対症療法(=ボロ隠し)である。ファイルの監視もsedもかつてはもっと有益なところで使ったもんだが、それをこのような非生産的、かつ屈辱的な局面で使う事になろうとは orz …

まあそれもどうにか目論見どおりに機能している様だし、これは一過性のものと、あまり深く考えない事にした。今はその「既にいないどこかの誰か」が何年も前に作ったやつをそっくり捨てるという、次の展開に期待するのみである。

IoTの実態

IntelがEdisonら極小ワンボードをそっくりオワコン化らしい。俺はArduinoで充分だったので手を出さなかったが、Curie搭載のそれもパッとしなかったし、これは必然でしょう。

が、これは単にメーカーが「売れないからやめました」という話ではない。IoTというよくわからん言葉だけがひとり歩きした、実体の覚束ないブーム(こういうのをバブルという)の終焉がいよいよ明確になったとみるべきだろう。

俺的にはここ数年、このおかしなブームのお陰で様々なデバイスが安価かつ大量に出回ってくれて大いに楽しめた。またその結果H/W、ひいては電気の基礎までを初心に戻って再履修できたのが最大の収穫だった。

が、それはあくまで私的な話。少なくとも国内のビジネスという観点からは企業向けの研修とか検定とか、及びそれに付随するキットもしくはパッケージが抱き合わせで売れたぐらいなもんだろう。あとはせいぜい便乗書籍。これがIoTの実態。

半導体製品拡販のためのブーム作り、次は何が来るか?  メーカーのお手並み拝見と参りましょう。

iOS developperのあるある話

これの続き。

※  以下内容、日頃プログラミングに携わっている向き以外には面白くもなんともないであろう「ただのグチ」なのでお許しを。

—————————————————————————–

クライアントからの要求がこれまで

「iPadで矩形領域内にフリーハンドで線引きせよ」

という認識でいたら、実は

「iPadのカメラで撮影した画像の上にフリーハンドで線引きせよ」

だった。この時は「ふむ、Canvasの背景を画像にするだけだよね」と、軽い気持ちで取り掛かった。そして軽やかにハマった。

まずはiPadのカメラを起動、得られた画像をそのままCanvasに貼り付けてみたが無言。同じコードでもPCのブラウザだと出るので、恐らく画像がデカすぎるのだろうと推測した。そこで調べてみたところ、iPadのカメラで得られる画像は(W:H)=(3262:2448)。実に液晶パネルの3倍近い。そこでこれをCanvasに貼る直前でリサイズしてやる事にした。

が<input type=“file”>のonChangeで得られる画像はBase64エンコード、幅も高さもわからない。ならばとこれをnew Image()でイメージオブジェクトに変換してみたが、なぜか幅も高さも取れない(涙)。結論から言えばこれを別のCanvasに展開、その上でリサイズしたやつを使えばバンザーイ!  というところまで手探りの数時間。

だがこれも「恐らくサイズのせいだろう」という前提での措置。どこまでならOKなのか、そんなのさっぱりわからん。まだまだやる事あるんだし、この先どこで地雷踏む事になるやら。

iOSとそのアプリケーション、使う分には悪くないがそれらはみなこういう苦労の末にあるというのをご理解頂きとうございます。

なんだこりゃー!

昨夜からウツラウツラしながらJSportsでル・マン観戦。ここまでのデキからも、今年こそはトヨタの悲願成就間違いなしと信じつつ。

ポルシェ#2が大きく遅れた時は「これでイタダキ!」と思った。トヨタ#9が遅れだした時は「さすがに1-2-3フィニッシュは難しいかな?」と思った。トヨタ#8がピットに貼り付いた時も「まあそれでもトヨタ#7の勝ちはカタいでしょう」と楽観的だった。

それが日本時間早朝、急転直下この始末。ムゴいとしか言い様がない。まだ現地は真夜中。魔物だか牙だか知らんが、勘弁してよと言いたくなってくる。これでタナボタトップを走るポルシェ#1がコケでもしたら、総合優勝がLMP2という事態になりかねない。ウサギとカメじゃないが、この調子だとその可能性、大いにアリとみた。

JSports解説陣もすっかりショゲてるし、寝るとしますか。起きた時どうなってるか、ちょっと楽しみではありますが。

追記:  予想は半分当たり(笑)。にしても、1時間以上もピットにいたクルマがトップでチェッカーって、これ記録でしょ。

追記:  どうやらトヨタは来年もLMP1での挑戦を続けてくれそうなのでひと安心だが、3台でもダメだった以上かつてのジャガーみたいに6台とか持ち込んでみてはどうか。ただそれ以前に、最上位の
カテゴリーに数台しかエントリーがないというこの現状。ポルシェ圧勝の一方でライバルが次々撤退、レースそのものが成立しなくなった例が過去に幾つもあったが、これもそうなりそうな気配。

追記:  その後の報道によると7号車のクラッチが壊れたのは、ピットロードの出口から走り出しですぐ停止した後だそうで。ピット以外で停車・再発進する事を想定していなかったというが、それだけで壊れたというんでは「アマかった」と言われてもしょうがないんでは?

雨の鎌倉

小雨の中、紫陽花のシーズンを迎えた鎌倉へ。

Canon EOS 6D (300mm, f/5.6, 1/250 sec, ISO200)

Canon EOS 6D (24mm, f/8, 1/250 sec, ISO1600)

Canon EOS 6D (24mm, f/5.6, 1/250 sec, ISO5000)

篠突く雨と鎌倉文学館の庭。

Canon EOS 6D (81mm, f/5.6, 1/45 sec, ISO6400)

Canon EOS 6D (218mm, f/8, 1/250 sec, ISO800)

Canon EOS 6D (81mm, f/4, 1/10 sec, ISO6400)

Canon EOS 6D (300mm, f/8, 1/250 sec, ISO2000)

Canon EOS 6D (175mm, f/5.6, 1/250 sec, ISO250)

Canon EOS 6D (70mm, f/8, 1/250 sec, ISO1600)

どっしりと構えた大仏の周辺では修学旅行の学生・児童らが右往左往と、その対比こそが面白かったり。

Canon EOS 6D (300mm, f/5.6, 1/250 sec, ISO640)

Canon EOS 6D (24mm, f/5.6, 1/180 sec, ISO6400)

おまけ:今日のトンビ

Canon EOS 6D (300mm, f/5.6, 1/250 sec, ISO160)