jQuery Mobile は簡単だけど・・・

スマートフォン全盛ですね。こないだ、グーグルマップの地図を見ながら歩いていたら電柱にぶつかって恥ずかしい思いをしたことは内緒です(^^;; 便利です。

便利なので、少し前にjQuery Mobileのオライリー本を買ってHTMLを入力しつつ勉強しているのですが・・・正直めんどくさい。
なんかこう、jQuery Mobile UI の ビルダー みたいな、ソフトないのかなぁ? と思って探したら、Webサービスでそういうサイトがあるにはあるんですが有料でしかも英語だからよくわからん。

やっぱり今度出る Adobeの CS6 の DreamWeaver ぐらいしか選択肢ないのかな。。。
バージョンアップしたいけど、CS4 WebStandardからだと、10万円超。
使いたいのはDreamWeaverとFireWorksだけなので、単品で買うと、計9万円。
FireWorksだけ買って、Dreamweaverは年契約月額2200円プランにするとだと、初期コストは安くつくけど、トータルで考えると割高。でもこれってサブスクリプションバージョンとリテール版を一つのPCにインストールして使えるのかな・・・。

サブスクリプションの価格が高すぎるんだよなぁ。。。

というようなグチはともかく、、、
iPhone用になんか作ってみよう・・・というわけで、ちょっと前にテレビでやってた映画で見た、プレイフェア暗号を表示させるものをつくってみた。

暗号計算部分は、簡単にできると思ったけど、ほぼなんの工夫もなく適当に作ったので本当に合ってるかどうかの検証はしていないけど、まぁいいや(^_^;;;

プレイフェア暗号 with jQuery Mobile
(スマホ用。ブラウザでも見れるけどかなり間抜けな表示になる)

HTMLを手入力するのは正直ホント面倒だけど、CSSの編集とかボタンの画像の配置だとか、HTML入力以上に厄介な作業がゼロなので、javascriptのコーディングに集中できる、という点で、デザイナー向けというより、プログラマーやコーダ-にとっては非常にありがたいライブラリなんじゃないかと思いますね。

あとは・・・フリーのUI ビルダーなツールが欲しい。そのうち、テーマローラーみたく、本家サイトで公開してくれるのかも・・・という淡い期待をしてまつ。

マスコミに良心はあるのか? あるわけない。

まともな神経を持ち合わせていたら、マスコミ・報道なんて仕事ができないんでしょうね。

無免許18歳が起こした、京都の車の事故。未成年なので今回も、加害者側が法で鉄壁の如く守られ、事故の被害者とその家族がメディアスクラムに巻き込まれマスコミの餌食になる。何度となく繰り返されて、こんな事故が起こされただけでも気分悪いのに、その後の報道のあり方でも嫌な気分になる。

但馬救命救急センターのブログ(http://teccmc.blogspot.jp/2012/04/423.html) で、相当お怒りのようです。ブログを更新されている方がそこまで書くんだから、相当悔しかったんでしょうね。

こんなことをするのは一部のマスコミ関係者だ、という言い訳をするんでしょうが、じゃあそういう輩をどうどうと報道しないのは、どいういう理屈なんだろうか?

ということを毎回毎回感じて、今回もまた気が滅入ります。あ~あ。

春なのでいろいろバージョンアップ

長いことソフトウェアのバージョンアップを怠っていると、いろんなダイアログがポップアップして、バージョンアップしろしろ、といい加減うざったくなったので(ーー;、ちょうど4月なので気持ちも新たにいろいろ更新した。

  • TortoiseSVN 1.6.x  ==> 1.7.6 へ
    下位互換性がなくなるみたいなのでちょっと怖かったけど、サーバー上にある1.6系列で作成したリポジトリは、特に何もしなくてもTortoiseSVN1.7系列から問題なく使用できるみたい。
    作業コピーの扱いが大きく変わったみたいなので、すでにデスクトップ上にある作業コピーが最初認識しなくてちょっとビビった(^^;;; 作業コピーの変換が必要なんですね。 でも、.svnディレクトリをまき散らすことがなくなったのでそれだけでもバージョンアップして良かった(^^) ライブラリ(エクスプローラの)フォルダに、Subversionというのができていた。ここで一括管理しろ、ってこと?

    ただ、サーバー上のシステム(Apacheモジュールとして使用中)は、1.6のままにしてある。僕の使い方では、新機能なんて必要ないし。

  • iTunes と iPhone4 の iOS を、5.1へ
      
  • SONY PMB ==> Play Memory Homeへ
    これは失敗・・・。バージョンアップしなきゃ良かった!!! デジイチでRAW画像を管理している、僕の使い方ではPMBの方が圧倒的に使いやすかった・・・。Play Memory Home使いづらい・・・・。これロールバックできないのかな・・・。くそー。
      
  • XYZZY 0.2.2.235 ==> 0.2.2.237
    有志による開発に切り替わったみたいですね。6年以上更新無かったけど、フツーに問題なく使えていたので別にアップデートする必要なかったけど・・・。というか、いろいろカスタマイズして使っていたので配布ファイルをそのまま上書きしてしまうと非常に困ったことになるので、ファイル更新するの鬼のようにめんどくさかった(^^;;;

     メインで使用しているテキストエディタなので小さな変更が使い勝手に直結する。が、更新後も特に問題なく。

windowでのマウスイベント

HTMLで超シンプルなスライダーをjQueryで実装していたら、ひさびさに「超トホホ・ミス」をやって1日以上ハマってしまいました。トホホというか、単なる見落としなんですが・・・。

なんか作るとき、chromeを使って確認しているんですが・・・さて出来た!と思ってクソ・ブラウザInternet Explorerで確認すると・・・案の定動かない。IE9ではうごいていたはずなんだが・・・と思ってなにが原因かソースを見ること数時間。あれこれ試行錯誤しても動かない。

で、下のような簡単なコードをIE8で確認したら、うんともすんとも言わない。たぶん、ほとんどの人はこう思ったでしょう、

おまえはあほか!

と。

$(window).click(function(ev)
                {
                  alert('window.click!');
                });

よく考えてみたら、Internet Explorer で windowオブジェクトにonclick とか onmousedown とか onmousemoveとかなかった!というオチ。
エラー吐いてくれればすぐ分かったのに・・・なまじIE9で動いてたもんだから分からなかった。

肝心のスライダーは、こんなん。テストページはこっち。

// 単純なスライダーの一部(とりあえずUI部品だけのテストコード)
// これにコールバックを登録するコードを付け足せばとりあえず完成。の一歩手前。
var $frame = jQuery(document);

jQuery('.slider').mousedown(function(e)
                            {
                              var $slider = jQuery(this);
                              var el = this;
                              
                              if(typeof this.slider !== 'object')
                                this.slider =
                                {
                                  drag  : false,
                                  pos   : 0,
                                  limit : $slider.parent().width() - $slider.width() - parseInt($slider.css('paddingLeft')) - parseInt($slider.css('paddingRight')),
                                  bgcolor: this.style.backgroundColor
                                };

                              this.slider.drag = true;
                              
                              $frame.bind('mousemove.slider',
                                        function(e)
                                        {
                                          if(!el.slider.drag)
                                            return;
                                          
                                          el.slider.prev = el.slider.prev ? el.slider.prev : e.pageX;
                                          
                                          var cur = el.slider.pos + (e.pageX-el.slider.prev);
                                          if(el.slider.limit >= cur && 0 <= cur)
                                            {
                                              el.slider.pos = cur;
                                              el.innerHTML = el.style.marginLeft = cur + 'px';
                                              el.slider.prev = e.pageX;
                                            }
                                          else if(el.slider.limit < cur)
                                            {
                                              el.slider.pos = el.slider.limit;
                                              el.innerHTML = el.style.marginLeft = el.slider.pos + 'px';
                                            }
                                          else if(0 > cur)
                                            {
                                              el.slider.pos = 0
                                                el.innerHTML = el.style.marginLeft = el.slider.pos + 'px';
                                            }
                                        })
                                .bind('mouseup.slider',
                                      function(e)
                                      {
                                        $slider.mouseup();
                                      });
                              
                              e.preventDefault();
                       })
                 .mouseup(function(e)
                       {
                         if(this.slider.drag)
                           {
                             this.slider.drag = false;
                             this.slider.prev = 0;
                             $frame.unbind('.slider');
                           }
                       });

やっつけスクリプトに、えらい時間かけてしまった・・・あ~あ orz

・・・とにかく、一刻も早くIE8を含め、IE10以下のバージョンのInternet Explorerがこの世から消え去ることを願うばかりなり。