今さら・・・

ちょっと愚痴りです。

チョー昔に仕事でお世話になった人からのヘルプ依頼。
以前、Windows2000/XPで作ったとあるツールが、Windows7で動かない・・・と。いや、まぁ、あのツールは、デスクトップウィンドウをフックする(グローバルフック)するツールで、当然ながら、WindowsVista/7のエアロ・デスクトップコンポジションが有効なデスクトップでは動かないんすけどね。。。

どうにかしてくれないかと。いや、もうC++/WindowsAPIでプログラミングしてないし・・・。おまけに、Windows10でも動くようにしてくれと・・・。いや、無理(^^;;; そんな時間ない。

デスクトップのウィンドウハンドルを取得する方法は、Windowsのバージョンが上がるたびに変わるし・・・何より、デスクトップをフックするあんなツールは、今ではもう危険なプログラムと判断されてしまうし・・・システムツールは、調査して作るのに時間ばっかりかかるんで面倒なんすよねぇ。

なんて、話してたら、Windows7だけでも動くようになんないか?と(^_^;;;
んー、小遣い稼ぎに、まぁ、土日の休みにやってみるか。

とりあえず、リポジトリからプロトタイプ(テスト)として書いたソースをチェックアウトして、VS2013 Community Edition でビルドしてみる。

起動できたけど、当然、フックされない。どうやら、デスクトップに張り付いているリストビューコントロールのウィンドウハンドルを得るために書いた関数が失敗してNULLが返るみたい。ん、まぁ、当然だな。
この手のツールは、フック本体をDLLに配置しないといけないのと、フック本体に置いたコードのデバッグの仕方を知らない、ので困るんだな・・・

はぁ・・・。と愚痴ってみる。愚痴ったところで解決はしないんだが(^.^;;;

“bk”フォルダと、”bk”拡張子の悪夢

ウェブサイトの保守作業で、編集する前に元のファイルを.bkと拡張子をつけて保存しておいたり、同じディレクトリにbkという名のディレクトリを掘ってそこにコピーしてたり、といった前近代的な保守手法がまかり通っている仕事場です。バックアップすることはとても重要だが、その手法があまりに前近代的なので、最近では呆れかえってものも言えない。

僕はかなり前からSubversion(今時はGitですけどね)を使ってソースファイルを管理しているので、こういうところを手伝うのはもう「苦痛」の一言に尽きる。口出しするとメンドくさくなるので、何も言わない。後ろ向きですね(_ _)

自分がイチからコーディングを担当したサイトではちゃんとsubversionで管理しているのですが、部署で管理する共有フォルダに置くときは、最新のチェックアウトをエクスポートしたものを置いてます。作った後の保守は別の人がやるので・・・。
そうすると、1か月もしたら、bkフォルダの山、bkファイルの山ができてしまう。

そのたびに、bkフォルダの山とbkファイルの山を取り除いて、別のバックアップ用フォルダ(笑)にバックアップファイルやフォルダを移動。

あ~あ、なんだかな・・・

これが困るのは、FTPでWebサーバーにアップロードするとき。
要らないファイル(bkフォルダとかbkファイル)がワンサカあるので、当然、手動で同期。結果、Webサーバー上に不要なファイル(主に使わなくなった画像とか)がいっぱいになって、時間が経てば、消していいものなのか、消してはいけないファイルなのかの判断ができなくなる。

ローカル側に常に最新の状態のファイルだけ置いておけば、サーバーを更新する時も、同期コマンドで一発なのにね。
なんで改善しようとしないんだろうなぁ。

おひさしぶりPerl

気がついたらPHPとMySQLでしか仕事してない。プログラム自体作るのは僕1人なので、おれおれフレームワークを構築しつつ完成度(あくまでオレ基準)を高めていく過程はなかなか楽しい。なんせ、オレオレだからドキュメントも未着手。おそらく1年後にはわけわからなくなるでしょう(^^;;;

PHPにはいっぱいフレームワークがある。どれを使おうか・・・と最初は一応調べたんですが・・・途中で挫折しました。なんちゅーか、「ほら、フレームワークを導入すれば、数行のコードで○○が出来ちゃうよ、すごいでしょ?開発効率が上がるわよ〜。使わない理由はないでしょ? チームで開発するには常識よ!MVC的な?」てな事に、嫌悪感を感じてしまってダメだわ。 なんかどのフレームワークもPHPの特長を殺しているような気がしてならない。そこまでするなら、PHPである必要ないんじゃね?とか浅はかな俺は思うんですよ。

車輪の再発明かもしれませんが、やっぱり小さいながらも自分でフレームワーク的なものを作り上げていくことのやり甲斐とかに、こういう仕事の醍醐味を感じているわけで。それが人のためになろうが、なかろうが、そういうことが許容される職場環境に感謝しつつ、忙しい中でも、結構楽しんでます。たまには腹立つこともあるけど。

で、10年以上前に見よう見まねで作ったCGI(Perl)を今さらながら根本的に修正する作業があって、久しぶりにPerlをいじる。当時も今もコードの組み立て方などはあんまり変わらないので、どこをいじればいいのかはすぐ分かる。Perlって1ヶ月後には書いた本人でさえ理解不能になる、と一方的に揶揄されがちな言語・・・その当時からPerlの流儀に反した冗長な書き方とは認識しつつも、なるべくパッと見て分かりやすいコーディングをしてきたつもりなので、今さらながら、当時の自分に助けられる(笑)

一度触るとPerlがプチマイブームになりまして、以前に作りかけてほったらかしにしてたPerlのおれおれフレームワークをいじりだし、気づけば最近翔泳社から出た “Effective Perl 第2版“を買っている自分に気付く(^^;;; しかし・・・4000円・・・高い。高い上に分厚い。Kindleとかの電子書籍版があればそっちを買ったと思うんだけど・・・自炊・・・か・・・メンドクサイな。

見出しがすごい。上級Perlプログラマへと成長できる120の階段

20150225_111431059_iOS

Effectiveシリーズは5冊目ぐらい。Effective C++/More Effective C++/Effective STL/Effective Javascript ・・・。程度が低いので未だ上級プログラマにはなれず。この先も上級にはほど遠いでしょう。。。

PHP配列の悪夢、再び

おれって、相当アホ!!! ってな備忘録。

こんなコードを書いた。(実際に書いたコードはもっと複雑ですが・・・)

<?php
/******************************

 配列の中身を出力する。だけ。

******************************/
function array_wrong($files)
{
  $num = count($files);
  for($i=0;$i<$num;$i++)
    {
      printf("%d = %sn",$i,@$files[$i]);
    }
}

もうこの時点で、「お前の書くコードなんて一切使わない」宣言されるだろう。
はい、そうですね。僕もそう思います。(T-T)

こんな基本的な間違いを平気で犯す自分に自己嫌悪して数時間立ち直れませんでした・・・。

たぶん、次のような引数を渡すと期待するように動作するでしょう。

<?php
$files = array('abc.txt',
               'xyz.pdf',
               'def.jpg');

//たぶん上手くいく。オール、オッケー
array_wrong($files);

しかし・・・次のようにしたら・・・

<?php
$files = array('abc.txt',
               'xyz.pdf',
               'def.jpg');

unset($files[1]);

$files[10] = 'zzzz.gif';
$files[7] = 'bbbbb.ai';

array_wrong($files);

僕が期待した出力には当然なりません。とほほ。

こういうバカ・コードが原因だと気づくのに、半日要してしまったよ・・・・。
PHPの配列とcount関数の挙動が全然理解してない証拠っすね。。。恥ずかしい。。。

原因が分かれば・・・foreachもしくは、count関数を使わず・・・ループすればいい。

<?php
function array_right($files)
{
  ksort($files);
  foreach($files as $i => $file)
    {
      printf("%d = %sn",$i,@$files[$i]);
    }
}

//もしくは・・・count()関数でループ回数を決定するのではなく配列キーの最大値を利用する。
function array_right($files)
{
  ksort($files);
  $num = max(array_keys($files));
  for($i=0;$i<$num;$i++)
    {
      if(isset($files[$i]))
        printf("%d = %sn",$i,@$files[$i]);
    }
}

はぁ・・・。いつになったら使える人間になれるんだろう・・・。

医療費負担倍増(x_x)

毎年、この時期になると役所から送られてくる、特定疾患受給者証の更新申請書の書類。今日届いたんですが、いつもより薄っぺらい封筒・・・何かな?と思ったら、先月国会で法案が可決された通称「難病新法」が来年1月から施行される関係で、更新期限が年末まで自動的に延長される、という案内でした。

まだ細かい所までは決まってないようですが、受給者の認定方法と公費負担の金額算定基準が変わるようで、もし軽快者(軽症者?)と判定されると公費負担から外れるわけで、僕の場合、今の時点の健康保険の3割負担から計算すると、毎月確実に5万円以上になります(ーー;;;

ただ、月額負担が月1万円を超える月が3回以上あると、特例措置で公費負担の対象となる、みたいですが・・・いずれにしろ、今の自己負担額が倍増するのは確実。

これ、もし難病認定から外れても、僕自身、今のところ理解のある会社で仕事に就けているから何とかなるかもしれない。でも、難病の人の多くは、経済的に自立できない現実がある。さらに問題なのは、障害者認定までいかない程度の軽症者の多くは、就職の際、真っ先に選考から外される現実がある。まぁ、人事を任されている人からする当然ですよね。

「障害者」とハッキリ分かるような難病なら大抵の人は「しょうがないよね」と、言う。
だけど、内部障害で難病軽症者だと、見た目は一般の人と変わらないので、人の見る目も変わってきます。「何を甘えてんだ?」とね。
そういう現実を体感すると、生きるのがしんどいんですよね。言葉が悪いけど、障害が中途半端だと、扱いも中途半端になるんですよ(笑) それが今回の難病新法なんだと思いますね。

特に僕が煩っている持病だと・・・

「持病を隠して就職 >>> 体調悪くなる >>> 辞めざるえない状況になる >>> 詰んだ!」

ってな、現実が、大なり小なりやってくる。 昔と違って、寛解時期を継続できる投薬治療が確立してきたのですけどね。

難病軽症者って仕事を長く続けるのが非常に難しい。仕事に就けている人はラッキーですよ。でもそうでない人は、悪い言葉で言うと、「親のすねをかじっているパラサイト人間」的な扱いを受けてしまう現実があるかなと。。。まだ親が経済的な支援をしてくれるのはラッキーなんですけどね。

努力が足りないとか、人間死ぬ気になれば何でもできるとか、甘えているだけとか、前近代的精神論を吐く人もいるかと思います。まぁ、それはそれで正しいかもしれません。
が、基本的に、どんなに頑張っても健常者と同じにはならないんですよね。

皆さん初めは難病を患ってても一生懸命頑張っているんですよ。だけど、頑張っても頑張っても、ある日突然スタート地点に強制的に戻されてしまうんですよ。今まで頑張ってきたことが、無かったことにされてしまうんですよ。

だから公費負担増は許さん!とか、誰か助けて、とかは言わないですけどね。
生きるって、しんどいですなー。夜寝る時、朝になって死んでたら・・・ラクかもしれない、と思うときもあります。思うだけですけどね(^^;;;