404 motivation not found | t_ishidaのブログ

8月/10

11

PHPの比較のアレ

この結果ってどうなると思います?

<?php
print '*' ==  0 ? 'true' : 'false' . "\n";

実はtrueですね、
数値 0 と文字列を比較すると、trueが返ってくるっぽいです。

こうするか

<?php
print '*' ===  0 ? 'true' : 'false' . "\n";

こうしましょう

<?php
print '*' ===  0 . '' ? 'true' : 'false' . "\n";
Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

No tags

7月/10

28

備忘録:PHP配列同士の比較

件名の通り。
まさかの

print  (
  array( 1, 2, 3 ) == array( 1, 2, 3 )
  ? 'OK' : 'NG'
    ) . "\n"; // OK
print  (
  array( 1, 2, 3 ) == array( 1, 2, 'ほげ'  )
  ? 'OK' : 'NG'
  ) . "\n"; // NG

print  (
  array( 1, 2, 3,
    array( 1, 2, 3 ,
      array( 1,
        array( 2,
          array( 3, 4
  ))))) ==
  array( 1, 2, 3,
    array( 1, 2, 3 ,
      array( 1,
        array( 2,
          array( 3, 4
  )))))
  ? 'OK' : 'NG'
  ) . "\n";            // OK

print  (
  array( 1, 2, 3,
    array( 1, 2, 3 ,
      array( 1,
        array( 2,
          array( 3, 4
   ))))) ==
   array( 1, 2, 3,
     array( 1, 2, 3 ,
       array( 1,
         array( 2,
           array( 3, 4,
             array( 5
   ))))))
   ? 'OK' : 'NG'
  ). "\n";            // NG

知らなかった僕もアホなのだけど、
これはさすがにアホかと。

print ( var_export( array( 1, 2 ), true ) == var_export( array( 1, 2 ), true )  ?  'OK' : 'NG' ) . "\n";

とかやってたよヽ(゜▽、゜)ノ

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

No tags

今後開発予定のマイクロブログ機能です。特徴リアルタイム性ブログと掲示板の融合多目的にカスタマイズ可能不定期のイベント等で、イベントの目的や進行に合わせて利用できるマルチデバイス対応デバイスに関係なく投稿、閲覧が可能初期リリースではPC,携帯に対応基本はユーザ登録制であるが、時間指定でオープン化自由投稿可能他のMagic3サイトとのマイクロブログ機能の連携ウィジェット-イベントナウ?利用例社内限定マイクロブログイベント時のリアルな状況表示店舗ページに投稿される顧客メッセージ関連ページ実装目標とリリース予定33d

引用元: Magic3 – 日本発の先進的オープンソースCMS – ウィジェット-マイクロブログ.

Magic3にマイクロブログウイジェットを付けるらしいです。どの程度の規模を想定していて、どの程度の負荷対策をするつもりなのかとか気になるところですが、期待していきましょう。

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

No tags

3月/10

28

完全教祖マニュアル

はじめに

読中・読後に何度も出版社とシリーズを確認し直してしまった。

「ちくま新書ってこんなんだったけか?」

と。しかし、結論から言うとちくま新書の抜群の信頼感の通りの良書。

目次

  • キミも教祖になろう!
  • 第1部 思想編(教義を作ろう
    • 大衆に迎合しよう
    • 信者を保持しよう
    • 教義を進化させよう)
  • 第2部 実践編(布教しよう
    • 困難に打ち克とう
    • 甘い汁を吸おう
    • 後世に名を残そう)
  • 「感謝の手紙」
  • あとがき―「信仰」についての筆者なりの捉え方

内容

1部

“甘い汁を吸うために教祖になろう”というテーマで進めていきます。甘い汁を吸うために教祖になる、そのために必要なものは何か?それを解説する過程で宗教の構成要素を分析していく1部~思想編~

要旨

  • 宗教とは人々をハッピーにするものである
  • ハッピーにするものと定義するのであれば、アンハッピーな人々 => 社会の爪弾きにされる人々にハッピーを提供するもの。つまり、反社会的なものが宗教である
  • 存在しない不安を与え、それに対する救済を用意するのが宗教である
  • そのために義務を与え義務を遂行させる事で自分の宗教を自覚させ、自分によりどころがあると、安心させるのが宗教である

若干端折ってますが、要旨としてはこんなところ。

2部

そして、実際に教団を運営し信者を集めていく過程を説明しながら、宗教の歴史を分析し、追体験していく2部~実践編~の二部構成です。

要旨

民衆は豚だからしかたないのです。

感想

大学が神道系だったこともあり一般教養レベルで宗教を齧っていた身として大変興味深く読めました。なかなか体系的に学べる良書だと思います。極めて悪ふざけな文章と、実にシニカルというか、極めてニヒリックな視点でズバズバ切って捨てていきます。新書というよりは切れ味の鋭いブログを読んでいるような印象。データ不足故に定性的に見える論旨もニヒリックな切れ味でゴリ押しして納得させるというスタイル。

「なるほど、これが教祖に説教されて飲み込まれていく感じか?」

と。
そう、冒頭から何度も出てくる

「本書を信じなさい、本書を信じれば救われるのです」

という文句にも現れているように、この本の定性的な体裁も計算づくなのでしょう。
しかし、これが、「信者が勝手に解釈して、勝手に教義を作ってくれる」の状態なのかも知れませんが。

  • 面白いからガンガン読めて、バスバス頭に入ってくる!この本の構成は可能性を感じる分野
  • 二部はあんまり面白くなかった
  • データ不足で説得力が薄い
  • 帝王学・哲学な部分にもサラりと触れるけど、サラり過ぎるので、もうちょっと突っ込んで欲しい

近況

今週末は、1冊しか本を読めなかった orz

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

No tags

3月/10

26

今日の夕飯

ちょもらんま来た。
お昼には何度も来てるけど夜に来るのは初めてだ。
明日仕事なので甘やかしておく。
タバコの箱よりデカい餃子とビール飲む。

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

No tags

ピーチクを vi っぽく見る user.jsです。
ピーチクのタイムラインをキーボード操作で遡るためのuser.jsです。中の人にuser.jsページを作ろうよーと言っても対応してくれないのでこちらで公開します。当たり前ですがOperaのuser.js向けに作っているものなのでOperaで動作させる事を目的としています。でも、多分以下の環境でも動くと思います。思うだけなので、動くかどうかは分かりません。

  • Firefoxのグリモン
  • chromeのextension
  • IEのTrixie(ヘッダコメントに適当なnamespace切らないとダメかもね)
// ==UserScript==
// @name           [ptic] viっぽいの
// @description    viっぽく見るuser.js
// @include        http://ptic.jp/u/tl*
// @author         t_ishida
// ==/UserScript==
(function( w, $ ) {
  var vi_like = {
    'COLOR'        : 'rgb(240, 150, 240)',
    'messageBlock' : null,
    'pageID'       : null,
    'currentIndex'   : 0,

    //
    // j: scrollDOWN
    //
    '74' : function scrollDown(){
      if( !this.canScrollDown() ) return;
      this.clearFocus()
      this.currentIndex++;
      w.scrollTo( 0, this.getLT()[1] - 50 );
      this.setFocus();
      if( !this.canScrollDown() ) this.pageMore();
    },

    //
    // K: scrollUP
    //
    '75' : function (){
      if(this.currentIndex < 1 ) return;
      this.clearFocus();
      this.currentIndex--;
      w.scrollTo( 0, this.getLT()[1] - 50 );
      this.setFocus();
    },

    //
    // R: reply
    //
    '82': function(){
      var a = this.current().getElementsByTagName('a');
      for( var i = 0, l = a.length; i < l; i++ )
        if( a[i].href.match( /javascript:reply/ ) )
          location.href = a[i].href;
    },

    //
    // T: RT
    //
    '84': function(){
      var a = this.current().getElementsByTagName('a');
      for( var i = 0, l = a.length; i < l; i++ )
        if( a[i].href.match( /javascript:retweet/ ) )
          location.href = a[i].href;
    },

    //
    // メッセージブロックを収集
    //
    'getMessageBlock' :  function (){
      var result = [];
      if( !this.pageID ) return ;
      var buf = $( this.pageID ).getElementsByTagName( 'li' );
      for( var i = 0, l = buf.length; i < l; i++ ) result.push( buf[i] );
      buf = $( this.pageID + '_more'  ).getElementsByTagName( 'li' );
      for( var i = 0, l = buf.length; i < l; i++ ) result.push( buf[i] );
      this.messageBlock = result;
      return result;
    },

    //
    // エレメントの絶対位置の取得
    //
    'getLT' : function () {
      var element = this.current();
      var valueT = 0, valueL = 0;
      do {
        valueT += element.offsetTop  || 0;
        valueL += element.offsetLeft || 0;
        element = element.offsetParent;
      } while (element);
      return [valueL, valueT];
    },

    //
    // 現在のインデックスに該当するオブジェクトを返却する
    //
    'current' : function(){
      return this.messageBlock[this.currentIndex];
    },

    //
    // フォーカスをクリアする
    //
    'clearFocus' : function(){
      this.current().style.backgroundColor = '';
    },

    //
    // フォーカスをセットする
    //
    'setFocus' : function(){
      this.current().style.backgroundColor = this.COLOR;
    },

    //
    // 次ページを足す
    //
    'pageMore' : function(){
      if  ( w.tweet_json_more ) w.tweet_json_more( this.pageID );
      else                      location.href = 'javascript:tweet_json_more("' + this.pageID + '");';
    },

    'canScrollDown' : function(){
      return ( this.messageBlock.length > ( this.currentIndex + 1 ) );
    },
    ///
    /// new
    ///
    'initialize' : function(){
      if( !location.href.match( /ch=(.+)(?:&|$)/ ) ) return;
      var self = this;
      self.pageID = RegExp.$1;
      self.getMessageBlock();
      self.setFocus();
      (function ( target, type, listener ){
        if( target.addEventListener ) target.addEventListener( type, listener, false );
        else                          target.attachEvent( 'on' + type, function() {listener.call( target, w.event ); });
      })(
        document.all ? document.body : w, 'keydown', function( e ){
          if( document.activeElement.tagName.match( /(?:text|select|input)/i ) ) return;
          if( !e ) e = event;
          if( self[e.keyCode] ){
            self.getMessageBlock();
            self[e.keyCode]();
          }
        });

      (function ( target, type, listener ){
        if( target.addEventListener ) target.addEventListener( type, listener, false );
        else                          target.attachEvent( 'on' + type, function() {listener.call( target, w.event ); });
      })(
        document.all ? document.body : w, 'scroll', function( e ){
          if( document.activeElement.tagName.match( /(?:text|select|input)/i ) ) return;
          if( !e ) e = event;
          /*
          var top = w.scrollHeight - w.innerHeight - w.pageYOffset;
          alert( top );
          if( top - 50 > this.getLT()[1] ){
            alert( 'hogehoge' );
            this['74']();
          }
          else if( top - 50 <  this.getLT()[1] ){
            this['75']();
          }
          */
        });

    }
  };
  vi_like.initialize();
})( this.unsafeWindow || window, function(id) { return document.getElementById( id ); } );
Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

No tags

3月/10

18

最近のiPhone利用状況(1)

能書き

iPhone 3Gを利用し始めてからはや1年過ぎました。良いところ悪いところも大体慣れて利用スタンスも定着してきたところで、ちょっと書いてみようと思います。

利用方法の指針

Phoneの利用においては主にWebサービスとの連携が向いています。
また、以下の特性から

  • 電話であり常にインターネットに繋がっている
  • 常に身に付けている

これに向いていると思います

  • メモ管理
  • スケジュール管理
  • ちょっとしたWebブラウジング

僕は主にそういった方面のサービスでは以下を利用しています。

ちょっと蛇足

iPhoneは普通に使っていると、とにかくバッテリーが切れます。とりあえず自宅と職場で充電ケーブルを2本用意しておくのが良いでしょう。外回りの多い人は拡張バッテリの類も持ち歩いた方が良いかも知れません。

スケジュール管理方面

Remember the milk

仕事に関するTODOというのはガチで仕事をしている時に思い浮かぶものですが、それ以外のTODO(あ、あれやっとかなきゃ、あ、あれやっておきたい)というのは、ふとした瞬間に湧いて出たりするものです。そういったものをイチイチ覚えておくのは、脳みそにとって結構な負担になります。なので、とりあえずメモっておいて後で考えるというのが性に合っているようでRmember the milkというアプリケーションがとても便利です。それをiPhoneから使おうとした時iPhone用アプリは公式のアプリと、milpon というアプリの2つの選択肢があります。公式のアプリを利用しようとすると年間25ドルの寄付が必要です。これ自体は別に高くはないと思うのですが公式のアプリのsyncのタイミングとかがキモくてイマイチです。なので、去年寄付したにも関わらずmilpon を使っています。どちらを使うかは好みの問題だと思うので両方試してみて体に合った方を使うと良いと思います。

どちらを使うにせよ、主だった使い方は、

  1. とにかく思いついたらRTMに放り込んでおく
  2. PCの前に来たらタスクを分類して期限を設定しておく
  3. リマインダを設定しておいて後は無責任に忘れておく
  4. リマインダが来たらタスクを片付ける

だと思います。

Google Calendar

とりあえず時間割を決めてタスクに取り掛からないと手当たり次第にタスクに取り掛かってキリの無い作業をし勝ちになります。時間割を決める為に使います。個人的には時間割作成ツールとして一番好きだったのは、iCalなんですがWebでもiPhoneでも使えるiCalのようなモノという扱いでGoogle Calendarを使っています。iPhoneからGoogle Calendarを使うときには標準のカレンダーに同期設定をしてという方が多いようですが、個人的にはブラウザから使うのが良いと思っています。時間割りを作る時はPCの前に居る時にしてiPhoneから編集する事は考えない方が良いと思います。iPhoneからタスクを突っ込む時にはRemember the milkを利用してPCの前に来たらRmember the milkを見ながら時間割を作るイメージで。

時間割についてすごい余談

時間割を作るときに以下を実践すると楽になるかも

  • タスクは2時間分割で考える
  • 朝一は軽い事に時間を使う
  • タスクとタスクの間は30分のインターバルを設ける
  • タスクが時間通りに終わって30分のインターバルが丸々使える時にはタスク整理、情報収集、次のタスクの準備時間に当てる
  • 時間割は前日のうちに作っておく

この辺りのことは、以下の本に詳しく書いてあるので読んでみてください。

メモ周りのこと

最近流行ってますねー、Evernote
ただ、メモってスピード勝負ですよね。
浮かんだら揮発してしまう前にメモらないとダメ。全然ダメ。

EvernoteのiPhoneアプリって頑張らないとメモれない作りになっているので、Evernoteのアプリはあくまで閲覧専用だと割り切って使っています。メモる時にはHayamemoを使っています。このメモアプリを使ってメモを書いたらEvernoteのインポート用のアドレスに向けてメール送信するという使い方。このアプリは有料アプリですが同じコンセプトでiPhone内にメモの残らないアプリも有ります。どちらが好みなのか・・・というので選ぶと良いと思います。

  1. iPhoneからは、何も考えずにとにかくメモを投稿
  2. PCの前に来たらメモを整備して整理して分類
  3. PCでもiPhoneでもいつでも見れるようにしておく

です。

さて一発で全部書いてしまおうと思ったのですが、結構長くなってしまったのでWebブラウジングについての項目を次回に回します。

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

No tags

3月/10

17

今日の夜食

ようは適当に切り上げてハシゴ。
じゃじゃ奴とビール

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

No tags

3月/10

17

今日の夕飯

勝力の餃子を辛味噌で
辛味噌は実はそんなに辛くない。

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

No tags

3月/10

16

今日の昼飯

節骨たいぞうのジャンクまぜそば。

要約すると濃い。
詳説すると濃い。

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

No tags

<< Latest posts

Older posts >>

Find it!

Theme Design by devolux.org

Tag Cloud