ピリオド区切りバージョン番号の比較

Javascript(ECMAScript)で、jQueryのバージョンで分岐させる必要があったのですが、最初は、何も考えずに 等号・不等号演算子で比較してました。手抜きですね(^_^;) しばらくは何の不都合もなく動いていたのですが、使用しているjQueryのバージョンを1系列の最新バージョンにしたら動かなくなった。

当たり前ですね。最新のバージョン番号を $().jqueryで取得すると、1.11.x (xは数字) というのが返ってきます。で、単純に比較すると・・・ダメなのは明白ですね(笑)

ということで、急いで適当に書く。備忘録おわり。

関数名はPHPみたいに version_compare() とかだと長すぎるし、version() にするとバージョン番号を返すものと混同するし、何がいいんでしょうねぇ。まぁ、どうでもいいんですけどね。

ぐおー、perlだとpackで一発なのに・・・

【jQuery】 jquery.simplePopup 書き直し

【2015年8月26日 ver2.0.9 更新】

仕事で使うために作ったプラグイン。

リンク先の画像などをブラウザ・ウィンドウ内にポップアップ表示するJavascriptライブラリはたくさんありますが、数が多すぎてどれがいいのか分からないのと、本体以外にCSSファイルや画像が必要であったりとややこしい。

最低限、一つのファイル(プラグイン本体のJSファイル)で設置できて、自分にとって使い勝手がいいものを勉強がてら作ってみよう、というのが4年前に作り出したきっかけ。

ドキュメント作成・備忘録も兼ねてアップ。
リンク先をウィンドウ内にポップアップ表示するjQueryプラグイン

jQuery.simplePopup-【jQueryプラグイン】

今さら・・・

ちょっと愚痴りです。

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

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

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

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

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

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

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

edge and user agent strings

Windows10にバンドルされている新しいブラウザ、Microsoft Edge(以下Edgeと略)。中身はともかく、さっそく今までPHPで作ったスクリプトでチェック・チェック(^^)

IEに依存している部分は少しあるのですが、ほとんど問題はない。が、一カ所、UAで分岐しているところだけ不具合発生orz

Edgeのユーザーエージェントは、Edgeで確認すると・・・

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240

ん? なにこれ?(;゚ロ゚)

Apple Webkitやら Chromeやら、うそつきブラウザやんけー。Microsoftの説明では、

他の最新のブラウザーや現代的な Web コンテンツとの相互運用性を最大限に高めることを目的としています。

だそうです。。。https://msdn.microsoft.com/ja-jp/library/hh869301(v=vs.85).aspx

なら、IEで分岐している所は要らないんだなー、と思いきや、Content-Dispositionヘッダで、filename にファイル名を指定する部分で日本語を使うと・・・ブラウザ側でファイル名の文字化け発生・・・。

相互運用できてねーじゃん!(゚Д゚) 結局やっぱり、IE分岐が必要やんけ!
ってことで、やっぱり、UserAgent文字列から「Edge」を検索して処理を分岐してあげるケースがあった。

とほほ。

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

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

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

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

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

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

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

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