2008年4月アーカイブ

今は一瞬にして過去となり、時は我が物顔で荒れ狂う

| | コメント(0) | トラックバック(0)
それが当然といわんばかりに

銃夢から

技術の高さと失敗の量は比例する

| | コメント(0) | トラックバック(0)
当然だけど

plagger on windows

| | コメント(0) | トラックバック(0)
ようやくいまさらになってPlaggerを入れる。
ppm版は楽チン。

installの仕方はあちこちに載ってるので省略。
ただ、基本的に「アレンジ一切不可」と考える。
特にPerlのバージョンは新しいと動かないので注意。
本当に書かれてるバージョンのPerlを入れよう。

とりあえず、RSSをもっと高速に読みたい。。。

みんな Perl やろうよ! - IT戦記に同意。に同意。

| | コメント(0) | トラックバック(0)
大学6年生のhogelogさんによると、「perlやる人の悪い癖」らしい。

よかったこういうコード使ってとりあえず下みたいなコード送るのはperlやる人の癖なんだ!(?)

''=~('(?{'.('-/@.*{([,,@}]/^,:|\\'^']])@^\\`>@@/]*@,@^]{').'})')

と、いうわけで普通のコードはこんな記号ばっかじゃなくて普通に読めます。大丈夫。
みんな Perl やろうよ!

この人はなにをしてる人なんだろう?

| | コメント(0) | トラックバック(0)
Yahoo! ニュース 「休みたいなら辞めろ」発言は暴論?正論? ネットで波紋広がる

発言内容よりも経営者から「たっぷり休んで、結果的に会社が傾いて人員整理するのでは意味がない」という発言が出るのが驚き。

経営者って社員がたっぷり休んでも会社が傾かないようにするのが仕事では?
社員数数人で、全員が延々会社に泊まりこみ見たいな会社なら経営はそんなに難しくない気がする。
(前の会社がそうだったので)

Re: 誠実なお店の看板

| | コメント(0) | トラックバック(0)
from 秋元@サイボウズラボ・プログラマー・ブログ

・技術
・時間
・お金

何かをなすには二つが必要。

技術、時間があればお金は少なくていい。
技術、お金があれば時間は少なくていい。
時間、お金があれば技術は少なくていい。

個人でも一緒。

プログラムは経験、料理は知識

| | コメント(0) | トラックバック(0)
プログラムは書くだけなら知識でもいけるけど、デバッグは経験が重要。
(特にひどい環境だと「におい」とか、「美意識」とかが必要)

料理は経験があるほうが速く作れたり効率的に作れるけど、味は知識が重要。
(直感的に味付けしても大抵失敗する)

マンガでわかる統計学

| | コメント(0) | トラックバック(0)
マンガでわかる統計学シリーズを読んだ。

数学がわかりにくいのは関数名や変数名の
命名規則がひどいだからだと思う。fとかxとかありえん。

そろそろ記述性より可読性を優先すべきでは?

半角「」ってなに?

| | コメント(0) | トラックバック(0)
以前作成したphpのmail用ライブラリで文字化け発生。
内部はUTF-8なんですが、外部へ送るときはフリーメール、携帯等への
対応も必要なんでISO-2022-JPに変換してます。
で、そのまま普通に変換するとUTF-8にあってISO-2022-JPにない文字が
化けるんですが、この辺は対応表作って変換かけてます。
今回抜けてたのは以下の文字。「」の半角版。
「」
。。。こんな文字初めて知ったよ。。。

と、いうわけで急遽以前つくったライブラリに以下の行を追加。
            "\xEF\xBD\xA2" => "\xE3\x80\x8C",
            "\xEF\xBD\xA3" => "\xE3\x80\x8D",

ラクダ

| | コメント(0) | トラックバック(0)
昼食のラクダ。

ラクダは今まで技術として血肉になってくれていましたが
これで物理的にも血肉となってくれたようです。感謝。

ちなみに同じ店には以下のメニューがあり。
カンガルー
ワニ
ダチョウ
ラクダ
いのしし
青梅亀
鹿

ただ、基本的に味は微妙なので次はないかも。カンガルーと青梅亀は気になるけど。


080425_1236~001.jpg

ややマイナーなおすすめ拡張

| | コメント(0) | トラックバック(0)
・AutoCopy
文字選択時に自動でクリップボードへコピー

・AutoAuth
Basic認証を自動でログイン

・Copy Plain Text
文字をコピーするときに自動で前後の空白を削除したり、空行を削除したり

・MIME Edit
各種ファイルを開くときの規定動作を変更

・XUL/Migemo
ローマ字で漢字を検索できる。でも、それ以上に検索ツールバーのカスタマイズができるのがいいかも。「/」で検索開始したりできるようになる。

LDR eachを超えた!超高速orz_loop

| | コメント(0) | トラックバック(0)
ベンチマーク

若干制約がありますが(*1)速度だけなら負けてません。いやまじで。

//ベンチマークのコードは以下の場所からもらいました。
http://d.hatena.ne.jp/os0x/20080310/1205154454

命名

| | コメント(0) | トラックバック(0)
プログラムで面倒と思うことの8割は命名だと思う。
どこかで「日本人にすごいプログラマが少ないのは
英語での命名が億劫だから」といのをを聞きました。
確かに構文書くのは楽しいですが、命名は面倒です。
。。。
今思いついたんですが、みんなが日本語で変数名つけて
それが普通になったら日本にもすごいプログラマが増えるのかな?
プログラマを増やすには言語の敷居を下げるよりも
主な変数名一覧をつくるか、ローマ字変数名を
普及させるのが近道かもしれない。
ただ、そうすると日本語がわからない人は不便なので
主な変数名とローマ字変数名の対応表を作ってIDE等で
自動的に翻訳するとか。
。。。
と、いう話をこんなコード書きながら考えてました。
if (({'aaa':function () {return true},'bbb':function () {return
false}})['aaa']()) { console.log(true) }

LDR each

| | コメント(0) | トラックバック(0)
from JSEnumerator

いまさらながらldr(malaさん)のコードをちょっと見て感動。
JSのforeachの実装ですが、先に全実行回数の内8で割り切れない
端数の回数を一回ずつ実行し、その後loopを8回ずつ一気に実行。
(8はビット演算で計算しやすい適当な数ってことか)

function foreach(a,f){
    var c = 0;
    var len = a.length; //全実行回数
    var i = len % 8;    //8で割った端数を取得
    if (i>0) do {       //端数を実行
        f(a[c],c++,a);
    } while (--i);
    i = parseInt(len >> 3);//ビット演算子を使って割る8
    if (i>0) do {       //8回一気に実行
        f(a[c],c++,a);f(a[c],c++,a);
        f(a[c],c++,a);f(a[c],c++,a);
        f(a[c],c++,a);f(a[c],c++,a);
        f(a[c],c++,a);f(a[c],c++,a);
    } while (--i);
};
(コメント追加)

たとえば、22回実行するなら、最初1回ずつの実行を6回行い、
その後8回実行を2回行う。

見つけた元
http://coderepos.org/share/changeset/8126

ベンチマークの話
http://d.hatena.ne.jp/os0x/20080310/1205154454

ldr foreachの元ねた?のブクマ(リンク先消失)
http://b.hatena.ne.jp/entry/2100562

元はprototype.jsの.eachを3倍早くするって内容だったらしい。

技術の覚え方

| | コメント(0) | トラックバック(0)
まず、一回で完璧に覚えることはほぼ無理。
基本的にはざるでいい。
どんなに網目の粗いざるでも何度も流せば
そのうちいろいろ引っかかって網目が細かくなる。
(実際の網と違って使った後洗ったりしないし)
網目が細かくなれば流れる量が少なかったり、
内容が薄くてもいろいろ引っかかるようになる。
ただ、網目が粗いうちは流す量を多く。

MySQLのVIEWは副問い合わせがサポートされていない

| | コメント(0) | トラックバック(0)
面倒。

別にviewを使ってやればいいじゃんってことなのかな?

最近やってるライフハック

| | コメント(0) | トラックバック(0)
・携帯住所録の1番上は会社のアドレス。
何か思いついたら即送信。

・帰宅時はサングラス
コンビニや自販機、車のヘッドライト、街路灯等にあたると
会社から家に帰るまでに目がさえるので、帰宅時に
暗めのサングラスをかけると帰るまでに目が覚めなくていい。
(当然視界が暗くなり周囲が見えにくくなるので注意)
自宅の照明も暗めにするとなおいい。
(読書しないなら20W電球で大抵十分)

MTPagenateに関して

| | コメント(0) | トラックバック(0)
MTPaginateNavigator tagで使える指定一覧。
微妙になんに使ってるか不明なものもありますが、指定できる内容はこれだけ。
(これ以外は無視されます)

list_pages(初期値「all」)
format(初期値「 %d 」)
format_current(初期値formatと同じ)
separator(初期値「 | 」)
format_all(フォーマット指定)
format_all_current(フォーマット指定)
place_all(「after」か「before」を指定。初期値「before」)
style(「popup」が指定できる。初期値空)
target(linkのtarget属性)
anchor(linkのanchor属性?)
format_title(linkのtitle属性?)
format_all_title(linkのtitle属性?)

ソースチラ見したので。とりあえず書いてみる。
(<MTPaginateNavigator separator="">とか指定する)


詰まったところ

・全体の表示件数を「0」にしていない。
>全体の表示件数/MTPagenateの表示件数なので、
>全体の表示件数が初期値の10の場合ページ数がおかしくなる。

・「</MTEntries>」の前に「<$MTPaginateSectionBreak$>」が入っていない。
>「<MTEntries>」の中身をそのままコピペしたら表示されずちょっと悩む。 

ノートのバッテリー寿命を延ばす方法

| | コメント(0) | トラックバック(0)
非電源接続時にではなくて、バッテリー自体の充電可能期間を延ばす方法。

1、頻繁に充電しない
バッテリーつけたままコンセントさして使うと、ちょっとバッテリー減った段階で充電するのでよくない。

2、半端に充電しない
充電開始したら100%まで充電する。

3、低温低湿度
長期保存時乾燥剤と一緒がいいかも。

4、長期保存は50%充電
半年に一度再度50%程度まで充電。

普段注意するのは1と2、予備バッテリーとかは3、4が重要。

ちなみにThinkpadは省電力マネージャーでバッテリーの充電開始容量を選択できる。
(「nn%以下になったらnn%まで充電」とか)
とりあえず30%切ったら100%まで充電するように変更。

設定方法はタスクバーの電源アイコンを右クリックして、「省電力マネージャー」を起動。
「バッテリー情報」タブの「バッテリーのメンテナンス(M)...」ボタンをクリック。
「充電のしきい値」を「カスタム(C):」に設定して、値を「30%」~「100%」に設定。

英語聴く

| | コメント(0) | トラックバック(0)
iKnow!やってたけど飽きたのでMiroでいろいろ流す。

で、Miroつかってて思ったけど、Windows、Mac等の複数環境で使えるソフトはすべての環境で違和感のあるUIになりやすい。
(見た目はmacなのにメニューはwindowsとか)

話しそれるけど、WebのUI作るならMacのUIも調べないとだめだなぁ。。。
(select fieldの動きとか、メニューの内容とか)


/index.html

| | コメント(0) | トラックバック(0)
ブックマーク系のサービスでは

http://example.com/



http:/example.com/index.html

が別物として扱われるので注意。
(結構有名なページなのにtagの補完が少なくてあれ?と思った)

SQLの知らないとわからない技11

| | コメント(0) | トラックバック(0)
「知らないとわからない」は「推測しにくい」って意味で。

1、DISSTINCT

GROUP BY *の代わりに
GROUP BYは暗黙のソートがあるので遅いので、重複削除だけならこっち推奨

2、ORDER BY RANDOM()

ランダムな順番でほしいとき
PostgreSQLは不可?SQLiteはいけた

3、ORDER BY ID=10 DESC, ID

10,1,2,3,4...って並ぶ

4、HAVING

GROUP BYを使わず、HAVING単独でも使える
fromここ
理解すれば便利だけど、使いどころは難しいかも

5、UNION ALL

UNIONは重複を削除するので暗黙のソートがある(遅い)
重複していいならALLが早い

6、ANY

INの演算子を指定できる版

7、REGEXP

文字列の正規表現一致。MySQL専用
ちなみにPostgreSQLでは「~」演算子

8、CASE WHEN THEN

条件分岐。非常に便利だけど、遅いし保守性悪い系
ちなみにこれはどこでも使えるので、
「SELECT CASE WHEN age > 10 THEN '10代' WHEN age > 20 THEN '20代' ...」
こんな感じのこともできるし、
「WHERE CASE WHEN age > 10 THEN true WHEN age > 20 THEN false」
見たいなことも。
(ORDER BYでも使えるんだ。。。)

9、BETWEEN AND

「n~nの間」って感じの比較ができる。日時系でも有効
指定された境界値が含まれる(<=, >=)ことに注意

10、EXISTS

INの早い版。ただし、他の列との比較ができない
SELECT 1してる感じ(ヒットすると即終了)

11、MATCH()

全文検索MySQL専用でMyISAM依存
ほかにORACLEにもあった気がする(SQL Serverだったか?)
PostgreSQLは基本的には持ってないけど、
ほかのソフトで全文検索できるようになるはず。


ほかにRDBで詰まりそうなところ。

特殊な取得順
簡単なorder byで取得できない条件での取得は難しい
(RDB自体順番の概念がないので)

行列変換
行を列に変換するのは基本無理と思ったほうがいい。
(最大列数固定ならできるけど)
ちなみに「ピボット変換」というらしい。

あんまり使われないですが、CREATE TEMPORARY TABLEも便利。
CASE WHEN THENと同じような「最後の手段」ではありますが。。。

http://oraclesqlpuzzle.hp.infoseek.co.jp/
SQLの複雑な条件集
Oracleに偏ってますが、この辺がSQLの限界なので
各項目のタイトルだけでもざっくり見とくといいかも。

とりあえず、気になったらこまめにEXPLAINかけると勉強になる。
(でも、MySQLのEXPLAINはちょっと読みにくい)

あと、MSDNは内容まとまってて質高い。
(IBMもかなりすごいが)
ただ、サイトの使い勝手は微妙だし、がんがんURI変わるのもいただけない。

Flashで訪問済みリンク色変更

| | コメント(0) | トラックバック(0)
http://www.ichirou.org/ver1/

そういえばFlashでクリック済みのリンクの色を変えるって
あまり見ないなと思った。
ただ、ここでも再読み込みするとクリアされる。残念。

SELECT COUNT (*)

| | コメント(0) | トラックバック(0)
SQLのSELECT部分で「COUNT (*)」って感じで「COUNT」と「(*)」の間にスペースあけるとエラーになる。
(by MySQL)

何でだろう?ASとかと誤認することになるからかな?

Macおねだりキャンペーン

| | コメント(0) | トラックバック(0)
http://www.apple.com/jp/promo/backtoschool/sendahint/emailbuilder.html

結局「メールをプレビュー」の部分がそのまま画像で送られてくるだけでした。
ちょっとがっかり。

「おねだりメールを作成しよう」のUIはデザイン、動きはいいけど、
操作性はいまいち。
「1.送る相手を選ぼう」で選択後、「2.メッセージを選ぼう」を
選択しようとすると必ず「3.好きなイメージを選ぼう」が選択されてしまう。
アコーディオンUIとmouseoverは相性悪いと思う。

Error populating TableName object

| | コメント(0) | トラックバック(0)
Error populating TableName object [wrapped: Unable to convert value at column nn to timestamp: nn]

$c->clearSelectColumns();
したあと、doSelect($c);してたのが原因。
(doSelectRS($c);が正しい)

挨拶は費用対効果が高い

| | コメント(0) | トラックバック(0)
電話を2コール以内に取るのも。

人間は常に最善の行動をとっている

| | コメント(0) | トラックバック(0)
振り返ればほかに選択肢があったとしても、そのとき、その状況になれば誰でも同じ選択をする

AutoHotKeyでCapsLock入れ替え

| | コメント(0) | トラックバック(0)
何でできないのか疑問だったけど、ここによると言語によってscan codeが違うせいらしい。
Change Keyつかって無理やり認識させてたけど戻そうかな。。。

KeePassにファイル保存

| | コメント(0) | トラックバック(0)
KeePassのエントリーにファイルを保存できることを知る。

今まで秘密鍵とかどう管理していいかわからなかったけど、こうやって保存するんだね。
でも、これだと使いたいときはいったんどこかに保存した後ssh clientで読まないといけないから、できればボタン押したら規定ファイルへ書き出し(一定時間後削除)とかなるとうれしいな。

継続の最大のポイントは継続すること

| | コメント(0) | トラックバック(0)
続けることを目的に続ける。続けることを目的にしなくても続けられるようになったら続ける意義を考える。

キュウリは世界一栄養のない野菜

| | コメント(0) | トラックバック(0)
ギネス認定

Orchisのvista用最新版がProgram Filesにしかinstallできない件に関して

| | コメント(0) | トラックバック(0)
旧バージョンからocsetup.exeとquimon.dllを一時的に持ってきてinstallしたらいけた。
とりあえず「/usr/bin/rc.d/Orchis」へ入れる。

失敗する理由は多彩だが、成功する理由は似通っている

| | コメント(0) | トラックバック(0)
どこかの名言から

ck terminal emulator ver3

| | コメント(0) | トラックバック(0)
http://www.geocities.jp/meir/cygwin_ck/
Cygwin用まともなterminal emulator

ただし、ページは404

poderosaを勧められたので見てみる。
食わず嫌いだったけど、結構いいかも。
とりあえずcygwin端末として採用。

AutoPager

| | コメント(0) | トラックバック(0)
Firefoxの拡張でAutoPager入れたら死ぬほど重くなったので
以下のファイル内の不要なエントリを削除。
C:\Users\ユーザ名\AppData\Roaming\Mozilla\Firefox\Profiles\nnn.default\
autopager\*.xml

多少は軽くなったけどGreasemonkey版のAutoPagerizeの方がいいかな。。。

WebDevelopperのView Generated Source

| | コメント(0) | トラックバック(0)
WebDevelopperのView Generated Sourceを知った。

JS等で構築後のソースが見えるので、Google Mapsの構築後のHTMLソースを見たりできる。
FirebugのHTML tabでもいいけど全文検索できたりするのは便利。

SWFObjectの引数

| | コメント(0) | トラックバック(0)
6個とか、7個の引数の順番なんて覚えられん。

var so = new SWFObject();
so.setAttribute('swf', 'flash.swf');
so.setAttribute('id', 'swf_id');
so.setAttribute('width', '100');
so.setAttribute('height', '100');
so.setAttribute('version', '8');
so.write('target_id');

ExternalInterfaceとかの落とし穴まとめ

| | コメント(0) | トラックバック(0)
自分ではまったものに関してはその後検証してなかったりするので、実は別のバグだった可能性もあります。
(そのうちちゃんとした検証ページ作りたいな)

-------------------------------------------------------

・swf tagのallowScriptAccessを(sameDomain|always)にしないとExternalInterfaceが使えない。
(同じdomainから読み込むなら「sameDomain」、それ以外は「always」)

・form tagの中にswf tagを書き出すとIEでIDを取得できない。
(jsからcallできない)

・swf tagのIDに*external*が入ってないとIEでcallできない。

・jsからcallするときにHTML Elementの値を渡そうとすると 「Error calling method on NPObject!」といわれる。

・object tagにidとnameが指定されているとFirefoxでIDが取得できない。
fromここ

・swf tagがdisplay:noneだとcallできない。
fromここ

・swf内でSystem.security.allowDomain()が正しく指定されていないと呼べない。
(どこからでも呼ばれるなら「*」、指定domainのみならそのdomein)

・flash playerが変にインストールされているとswfobjectでswfが表示されない。
fromこことかここ
(ちなみに「セキュリティの穴をつつく裏技的」ではないと思う。AC_FL_RunContentも同じようなコードだし、実装はMSも推奨してる方法)

・ローカルのファイルから読み込むとswfからJSを呼べるけど、JSからswfを呼べない。
(ExternalInterface経由のみ。vista sidebar gadgetも含む。ここ参照)

・swf tagを書き出した瞬間はExternalInterfaceを呼べない。
fromここ

・ブラウザによって改行文字が変わる。
fromここ

・safari3で「再読み込み」を行うと、dom展開前でもExternalInterfaceで登録されたfunctionがtrueになる。
fromここ

・IEでDOM展開前にASからJS呼ぶとエラー
fromここ(自分とこだけど)

相対パス、絶対パスの変換

| | コメント(0) | トラックバック(1)
var img = new Image();
img.src = '../.././././.././g.gif';
console.log( img.src );

で相対パスを絶対パスに変換できる。

ただし、変換した要素はブラウザに読み込まれるので注意。
(参照元では「読み込まれない」とあるが、firebugで読み込んでいることを確認)

from
http://blog.kyosuke.jp/2008/03/06/49

sort

| | コメント(0) | トラックバック(0)
jsのsortは数値型の要素でもとにかく文字列で比較する。
( [ 1, 11, 3, 2 ] ).sort()
>
[1, 11, 2, 3]

数値として比較するならこう。
(UFO演算子(「<=>」)がないので書きにくい。。。)
( [ 1, 11, 3, 2 ] ).sort( function( a, b ){ return ( a - 0 > b - 0 ) ? 1
: -1 } )
>
[1, 2, 3, 11]

文字型と数値型が混ざっている場合、ソートした上で元の型を保持する。
( [ 1, '11', '3', 2 ] ).sort( function( a, b ){ return ( a - 0 > b - 0 )
? 1 : -1 } )
>
[1, 2, "3", "11"]

$.each

| | コメント(0) | トラックバック(0)
jQueryのeachの書式を間違って覚えていたことが判明。
「$( [] ).each( function() {} )」ではなくて、「$.each( [], function() {} )」の方が正しいよう。
(最初の書式はjQuery objectのeachで、arrayをeachするなら後の書式)

「$( [] ).map( function() {} )」をつかってて気づいた。
(帰ってくるのがjQuery objectなのでおかしいなと思った)

でも「$.map( [], function() {} )」より、「$( [] ).map( function() {} )」の方がかっこよくて好き。
(Arrayがいるなら「$.makeArray( $( [] ).map( function() {} ) )」となって
微妙だけど)

ついでに「$.map( [], function() {} )」は「[]」の要素をargumentsとして受けるけど、「$( [] ).map( function() {} )」は「[]」の要素をthisとして受ける。
(function内の書式が違うので注意)

goto

| | コメント(0) | トラックバック(0)
$([]).each(function () {});形式のループはlabel jumpができない。

$([]).each(
$([[],[]]).each(function () {
var f = true;
$(this).each(function () {
if (this) return;
return f = !f;//ほんとはここから二段抜けたい
});
return f;
});
});

こういうときはlabel gotoがほしくなる。

結局forで書き直したけど。

本日の一行コード

| | コメント(0) | トラックバック(0)
Math.max.apply(null, new Array(1,2,3)) // -> 3
Math.min.apply(null, new Array(1,2,3)) // -> 1

二行だけど。

単純にMath.max、Math.minを使うと固定個数の数値からしか取得できないけど、applyとあわせると任意個数の配列内から取得できるので便利。

最速の辺からぱくってきた気がする。

jQuery.getJSON

| | コメント(0) | トラックバック(0)
$.getJSONはJSONとして解析不能な値が返るとcallback functionを呼んでくれない。
エラーも出ずに単純に呼ばれないだけなので要注意。

btoa

| | コメント(0) | トラックバック(0)
Firefoxにはwindow.btoaなるものがあるらしい。

> >バイナリデータの文字列から Base-64 エンコードされた
> > ASCII 文字列を生成します。

組み込みでBase-64エンコードできるのか。すごいな。

http://developer.mozilla.org/ja/docs/DOM:window.btoa

AutoHotKey

| | コメント(0) | トラックバック(0)
vistaにmayu入れるとIE7が起動しなくなるらしい。

そういえば前に入れたときもそんな症状あったな。。。
「これだからvistaはっ!」とかいってたけど、mayuのせいだったのかも。ごめんよvista
(IETabやSleipnierは普通に動いたのでそんなに困らなかった)

と、いうわけでAutoHotKeyへ移行予定。
とりあえずinstallしてIE7が動くことは確認。
ただ、設定ファイルがmayu以上に意味不明なんだよなぁ。。。

jQuery plugin project ScrollTo

| | コメント(0) | トラックバック(0)
今までライセンス的にinterface.js使ってたけど、
jQuery1.1系にしか対応してなかったので微妙だった。

jQuery ScrollToがあるのは知ってたけど、
ライセンスがGPLなので避けてた。

が、こないだ見たらライセンスがGPL+MITになったらしい。
いっそ自分で書こうかと思ってたけど、
これで安心して使える。

個人的にはGPL好きなんだけど、
JSで使うとどこまでGPLになるのかわからないので不安。
(HTML本文は違うと思うけど、マークアップ部分は?とか、連携するswfは?とか)

http://plugins.jquery.com/project/ScrollTo

jQueryで実elementがほしいとき

| | コメント(0) | トラックバック(0)
$('#id').get(0);

$('#id')[0]よりきれい。

ロダン体操

| | コメント(0) | トラックバック(0)
静岡県立美術館に行く。
目的はロダン体操。

とりあえず、これなんてジョジョ立ち?

非常にひっそり解説ビデオが流されてたのが印象的(黒歴史?)
内容は結構難易度が高いものもあり、
インストラクターの人も微妙に再現できてなかったり。
「ポイントは、どれだけロダン彫刻になりきるかです。」とのこと。

続: doSelectRSをHashで受ける

| | コメント(0) | トラックバック(0)
doSelectRSをHashで受ける

こんな方法も教えてもらった。
(リファレンスはここ
許容範囲か。

$c->addSelectColumn(TableNamePeer::ID);
$result = array();
$rs = TableNamePeer::doSelectRS($c);
$rs->setFetchMode(ResultSet::FETCHMODE_ASSOC);
while ($rs->next()) {
$result[] = $rs->getRow();
}
var_dump($result);

Criteriaで素のSQLを見る

| | コメント(1) | トラックバック(0)
from Propel Tips

$c->toString();

デバッグモードよりこっちのほうが分かりやすくていい。
この程度のことをフレームワークごとに覚えるなんてやってられん。

doSelectRSをHashで受ける

| | コメント(0) | トラックバック(1)
$result = array();
$columns = $c->getSelectColumns();
$rs = TableNamePeer::doSelectRS($c);
while ($rs->next()) {
    $line = array();
    for ( $i = 0; $i < count($columns); $i++ ) {
        $column = preg_replace('/^\w+\./', '', $columns[$i]);
        $line[$column] = $rs->get($i+1);
    }
    $result[] = $line;
}
var_dump($result);

これは標準methodでやってくれないかなぁ。。。
あるけど知らないだけ?

Invalid resultset column

| | コメント(0) | トラックバック(0)
最近Symfonyさわり中。

$c->setDistinct();
$c->clearSelectColumns();
$c->addSelectColumn(TableNamePeer::ID);
$result = TableNamePeer::doSelect($c);

こういうコード書いたら下みたいなエラー出た。

Error populating TableName object [wrapped: Invalid resultset column: 1]

doSelectじゃなくて、doSelectRSで受けないとだめらしい。
ぐへー

ってか、propelとcriteriaの役割が分からん。DBIとDBDに置き換えて説明してくれ。

ThinkPad T61

| | コメント(0) | トラックバック(0)
買った。
ThinkPad T61 7662NRJ

20万くらい。
Let's Note Y7と悩んだけど、
「軽いと筋トレにならない」との画期的意見で決定。

保守マニュアルPDF