kyo: 2009年8月アーカイブ

MTに延々はまる

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

ブログの新規登録画面でカテゴリが追加できない。
(カテゴリの一覧が出てこない)

mod_proxy環境下でリダイレクトするとサーバのローカルIPになる

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

困った

img.offset(Width || Height)はIEで正しい値を返す

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

img自体にwidth,heightが指定されていなくても、画像の大きさになる。
sisso.jsの制約がひとつ減った。

oncfontsizehangeがほしいなぁ。。。

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

setintervalじゃなくてちゃんとイベントのやつ
onpropertychangeはうまくいかなかった。
setexpressionはうまくいったけど

今日もMT

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

MTテンプレート内にSQLを直書きできるらしい。
これとphpとJSがあれば何でもできそう。
http://bizcaz.com/archives/2008/02/03-195241.php

jQueryネタ

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

$.paramは引数のobject内にfunctionがあれば
全部引数なしで呼び出してその返り値を使ってくれる。

JSの高速化=jQueryを使わない

jQueryネタ

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

ul.css('left');
はIEでautoが返る可能性がある。
(Fxでは0pxが返る)

parseInt(ul.css('left'));
でNaNになるので注意。

parseInt(ul.css('left')) || 0;
とかが安全。

pipesでrequest too largeと言われてもYQL経由ならとれる

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

YQLでざっくり切り出して、pipesの他のmoduleで切り出すといい感じ。
pipes内にYQL builderみたいなのあればいいのに。
(String Builderとかしかない)

40個くらいpipes作った

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

だいぶなれた。
20個超えたくらいからPublishするのにcapchaを要求されるようになった。
上限はないっぽいけど、yahooのcapcha難しい。。。

画像の置き換えが重い

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

この辺参考にして軽くしてみたい。
http://d.hatena.ne.jp/Yuichirou/20081127#1227721849

NoScriptを入れてみた

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

各ページのJSとかが動かなくて早くなったかも。
ただ、サイトに使ってるJSに気づかないのでJS使いとしては間違った選択かもしれない。

内部システムからMTへのデータ移行にselenium使用

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

まずっても後で同じようにやり直せるからいいなぁ
時間かかるけど

postgresからmysqlの移行に悩む

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

pg_hba.confの書式とかすっかり忘れてた。
でも、やっぱりpostgresの方がすき。
mysqlははまりどころが多すぎる

今日はMTと格闘

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

apache2+mod_perl2化と、mod_proxy環境下での構築に詰まるも無事完成。
次はテンプレート。

andLinuxのubuntoが7.10だったのでupgrade

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

こんなに古いバージョンだったのか。404になってから気づいた

javascriptネタ

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

IEでhrefに相対パス入れても絶対パスで返ってくるバグは$('a').get(0).getAttribute('href','2');で回避可能らしい。
http://d.hatena.ne.jp/wonohe/20090212/1234411746
#でのページ内参照を取りたいときに面倒なので助かる。

案件まとめてるディレクトリのトップでこんな感じのコマンド打って焦る

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

find | xargs nkf --overwrite -E -w
やばかった。。。

photoshop用のjsxを組む

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

ざっくりわかったのはこんな感じ。
window -> app
開いてる画像 -> app.activeDocument
レイヤー -> app.activeDocument.artLayers
グループ -> app.activeDocument.layerSets
ネットを見ると、artLayersだけで全部のレイヤーがとれる
感じで書いてあったけど、ちゃんと
layerSets[n].layerSets[n].artLayersって感じで
再帰しないと全部とれなかった。
レイヤーとれれば後はそんなに難しくない。
とりあえず作ったのはcsvの中のテキストをテンプレートに流し込んで
それぞれのファイル名で保存するやつと、
非表示レイヤーを全体から削除するjsx

この分野は結構費用対効果高そうなのでもっといろいろやってみたい。
ただ、開発環境が高いのがどうしよう。。。
とりあえず試用版入れてるけど、一月たったら使えなくなるし。

他人ができないことも、他人ができないと思い込んでいることも金になる点では一緒

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

LLTV感想

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

・べにじょさんがいた。声いいなあ

・今年はjs分少ない

・「技術者とはなにか」って質問があったけど、「人を相手にするか否か」ってのもあるんじゃないか。

・一般に通じない言葉として「デフォルト」ってあげてたけど、そのくらいは普通に通じるんじゃないだろうか。

・帰宅時のカバン率の高さは異常。みなメッセンジャーバッグかリュックしょってた。もちろん私も。

・GWTの本売ってた。ちょっと興味があったのでiPhoneで調べてみたけど、若干微妙かなー

施されるより、施せ。

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

根拠なき楽観も思想なき悲観も臆病ものが選ぶ選択肢

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

人は何によって生きるか

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

常識や偏見は持っていれば楽だし無いと不安。だからなかなか手放せないしなくならない

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

meta keywordの選定はgoogle analyticsとSBMが便利

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

既存のサイトに限るけど、結構候補が拾える。

windowsのファイル共有でひとしきり悩む

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

なぜ動かなかったかは不明。なぜ直ったかは不明

slideDownでメニュー作るときの注意点

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

・slideDownでメニュー作るときの注意点1
mouseout時にただ、slideUp(or hide)するだけだと、
マウスを高速で動かしたとき、隣接する二つのメニューが開いた状態になる。
解決するにはslideUp().stop().attr('style', '')する。
(style使ってるなら、高さとか幅とかだけクリアする)

・slideDownでメニュー作るときの注意点2
普通にmouseoverでslideDownするだけだと
slideDownで表示仕切る前にマウスを下に動かしたときに
mouseoutが発生してslideUpしてしまう。
解決するには外にdiv作って、先にheightを設定し、
その後slideDownする。
(slideUp時にdivのheightは0にする)

Fxでwmode transparentのswfが最初のクリック位置で表示速度が変わる問題が起こる

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

透過部分をクリック後、非透過部分をドラッグすれば早いのに、最初に非透過部分をドラッグすると遅くなる。
クリック後にsetTimeout(function () {$('#swfid').focus();}, 5000);とかやっても変わらないのであきらめて演出でカバーしてもらう(急ぎらしいので)
transparentとfocusとFxとかはまって当然な要素が目白押し。

ブログの本文の位置を取得する方法

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

> LDRFullFeedのSITEINFOを使う
> http://wedata.net/databases/LDRFullFeed/items
> XPath内が本文。
そういえばこれがあった。
xpathなのと、BP設置できないブログの情報とかごっちゃに入っててJSでは使いにくいから忘れてた。
サーバサイドでやるにはいいかも。

localhost経由で送ったメールが激しく遅延してることに気づく

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

まあ、向こうのサーバが遅くてlocalhostかましてただけだからどっかで遅延はするよね。。。
メールのキュー操作とかすごいひさしぶり。

PoderosaでCtrl+Cが効かない。。。

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

何かがおかしいと思うけど、何がおかしいかわからない。
puttyにもどろかな。

firefox addonのjsonviewが地味に便利

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

https://addons.mozilla.org/ja/firefox/addon/10869
json表示するためにわざわざfirebugのコンソールに()つけて貼り付けたりしなくていい!

画像をbase64で変換した結果がHAHHHHHAAAAAAAAA見たいになってて笑われた気分になる

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

改めてseleniumって便利だなー

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

大量のデータをブラウザから入力するときはperlでデータからseleniumのルール作って実行すると楽でいい
途中経過も普通にブラウザ見ればいいからわかりやすいし。

画面遷移時のパラメータで擬似的にページ遷移するのは結構いいかも

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

var page = (($os.getParams() || {})['page'] ||
'index').replace(/\W/g, '');
var url = (conf.url_template.replace(/\/$/, '')) + '/' + page + '.html';
$os.get(url, function (data) {
$('#main').append(data);
gadgets.window.adjustHeight();
});
これとscript tagにコメントで文字持たせる方法使うとかなり楽になる。

photoshopはディレクトリの解決に失敗すると起動しなくなる場合がある

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

アクションで参照してるディレクトリがないと「環境設定中」で起動しない。

いったんネットワークを抜くと起動できるので、アクションの中を見て存在しないディレクトリがないか確認する。
10分で解決できたのは奇跡。

YQLも使ってみた

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

やってみたけど、URL埋め込むと長くなるなぁー
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%0A%20%20where%0A%20%20%20%20url%3D%22http%3A%2F%2Fwww.post.japanpost.jp%2Fcgi-zip%2Fzipcode.php%3Fzip%3D6900852%22%0A%20%20%20%20%20%20and%0A%20%20%20%20xpath%3D'%2F%2F*%5B%40class%3D%22data%22%5D%2F%2Fsmall'&format=xml
変な要素が混ざったので[position()!=last()]とかしてみたけど、
うまくいかなかった(無視されてるっぽい)
こうしてみるとjQuery selectorって書きやすくていいなぁ。
(標準から外れてて互換とるのが大変らしいけど)

yahoo pipesで郵政省の郵便番号検索するの作ってみた。

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

http://pipes.yahoo.com/pipes/pipe.info?_id=MFObwC8_3hGN_PhYwjSbTQ
yahooがcacheするからこれもありかも。
と思ったけど、利用規約的にはまずいか。。。

今更ながらpipes楽しい

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

ただ、要素の切り出しを正規表現でしかできないのは微妙。
xpathとは言わないけど、せめてcss selector使いたい。。。

簡単なテンプレート実装したらこんな感じでかなり実装できた。

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

var all = '';
$.each(json, function () {
all += tmpl.tempalte(this);
});
$('selector').append(all);
template自体はscript tagの中にコメントアウトしたxmlで埋め込んでそこから読み込み。
(opensocialなので、htmlにscript tagが直書きとか気にしない)
要素を構築するときはテキストからが楽。
要素を抽出するときはDOMからが楽。

jquery.corners.jsは角丸用のCSS使ってる

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

Webkitと、Mozillaには角丸用のCSS指定がある
(WebkitBorderTopLeftRadiusとか-moz-border-radius-topleftとか)
jquery.corners.js
http://plugins.jquery.com/project/corners
では使えるときはそっちを使うので最近のブラウザなら速度的な弊害はない。
(古いブラウザにはやはりdiv重ねてた)

人は失敗したく無いのではなく後悔をしたくない

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

要盟はまもるべからず

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

尺寸法の使用は犯罪

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

opensocialネタ

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

osdeを使うときはhtmlの関連づけをブラウザに戻すか、一度内蔵のブラウザで表示してからURLをコピペする。
(じゃないとエラー)

http://communityfactory.com/
mixiから出資されてるmixiアプリの開発会社。実際は中国で開発らしい。

mixiアプリではcssをbody内に書いてもheadに移動してもらえる。
ただ、cssだけはキャッシュされず、直接元サーバへ見に行く。

opensocialは基本的にiframe内で実行されるのでfirebugのコンソールにエラーが出ない。
Fx自体のエラーコンソールには出る

jQueryで$(xml).find('hogehoge, hugahuga')したときにIE7で「数字を指定してください。」のエラー

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

$(xml).find('hogehoge').add($(xml).find('hugahuga'))で回避

DOMじゃなくて、XML要素の場合だけ発現

週末空飛んできた。

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

一緒に飛んだ人の二人のうち一人が現役SEで「JSの単体テストがネックで。。。」とか話した。
もう一人は元SEで今一人で会社作って仕事してるとのこと。

mixiユーザかどうかを判断する方法

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

リンクを訪問したかどうかはJSで取得可能なので、http://mixi.jp/home.plを過去に訪問したかどうかを判断すればそのユーザがmixiユーザかどうか外部から判断可能。

jQueryの.cssとか.attrとかの第二引数の有無で返す値が変わるものは$('').attr('attr', hogehoge)でhogehoge === undefinedだとmethod chainが切れてエラーになる。

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

値がundefinedになる可能性がある場合、method呼び出しを最後にするか、$('').attr('attr', hogehoge || '')ってする。
(この場合0も''になるので注意。'0'は大丈夫だけど)

レンタルショップへ行ってYUIとかの文字があるとびびる。

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

perlは正規表現をs{}{}とかかけるのでURIばらすときエスケープしなくていいから楽でいいなぁ。

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

JSも傾斜製爪楊枝症候群か。。。
htmlでも、uriでも/出現する頻度高いからなんか考慮あってもいいのに。

休日のすごし方

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

一日panzer front(PS1で出てたタンクシュミュレータ)とTObang(タクティクスオウガのroguelike)やってた。
どちらも終わらない系。

wmode='transparent'はmousewheelをとれない。

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

JSでhover中の内容を送ればいけるらしい。
suzunariのオプションに追加しよう。タスクに積む。

ASはExternalInterface.objectIDで自分のID取れるらしい。

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

へー

sendToの前にいくつか処理を挟みたかったので.batを作ってみる。

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

他のexeを起動するときはstart c:\usr\bin\app\app.exeみたいにしないと起動したアプリが消えるまでコマンドプロンプトが閉じないことを知った。
で、yuicompressorと、swfmillをsendToに入れる。
#swfmill
@echo off
C:\usr\bin\swfmill\swfmill.exe swf2xml %1 out.xml
start notepad out.xml

#yuicompressor
@echo off
java -jar C:\usr\bin\yuicompressor\build\yuicompressor-2.4.2.jar --charset UTF-8 --type js %1 > out.js
start notepad out.js

自動言語切り替えのgoogle bot対策

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

Accept-Languageが空ならJAとして認識すればOKかも。

若手IT勉強会 #10に参加させていただきました

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

第10回勉強会 ‎(若手IT勉強会)‎に行ってきました。
(実際読んだコードは若手IT勉強会(jQueryコードリーディング#1回目) をやってきました。をどうぞ)

jQuery読むのは第一回だったのでSizzleの上のほうと、Manipilation周りを軽く読みました。

ちなみに文殊堂さんはこられませんでした(ざんねん)
次回はEvent周りを読むとのことなので予習してきます。

//以下jQueryのコードを読んだ印象

・attrはhref|src|styleを特殊扱いしてるけど、判断してる正規表現にiがないので大文字は変になるかも。
(そもそも大文字だと動かないのかな。コードでいうと984行目)


// These attributes require special treatment
var special = /href|src|style/.test( name );

・Sizzleはコメントなくて読みにくい。特に最初の正規表現は長くてヤバイ。

・jQueryはセレクターのショートカットが少ない。$('#hoge')以外は全部パーサ通るので注意。
(なので、$('#hoge .huga')より、$('#hoge').find('.huga')の方が早そう)

・.attrはIEの相対パスを絶対パスに勝手に書き換えるバグ(or 仕様)に対応済み。
(1030行目)


// Some attributes require a special call on IE
? elem.getAttribute( name, 2 )
: elem.getAttribute( name );

ただし、対応は.attrだけで、selectorの中(Sizzle部分)は対応してないので注意。
($([href="#hoge"])はIEには絶対ヒットしない)

・.attrのtabIndex(1007行目)、opacity(1040行目)のあたりはヤバイ。
クロスブラウザは大変。

・.cssとかで第2引数にfunction渡してそれの帰り値がString型の数字だと自動的にpxがつかない気がする。ただ、今まで詰まったことないので気のせいかも。
(705行目)


// Handle passing in a number to a CSS property
return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
value + "px" :
value;

・$('body').empty().append('<div>').find('div').wrapAll('<h1><h2></h2></h1>')は以下のような結果になる。
=> <h1><div/></h1><h2><div/></h2>
予想は<h1><h2><div/></h2></h1>こう(ってか、なんでdivが増えるんだ?)
h1とh2が入れ子にできないのが原因らしい。
ほかのタグなら正常に入れ子になる。

・.addClassとか、removeClassはスペース区切りで複数のclassを渡されることを想定されてた。
(ちゃんと\sでsplitして一つずつ確認しながら追加したり、削除したりしてる)

・readonlyとかselectedとかcheckedを切り替える.toggleAttrとかあると便利かも。

・1.3系ではイベントが.dataに保存されている。
(もしかしたら1.2系でもそうかも)
jQuery.data($('div').get(0),'events')で、先に設定済みのイベントを後から取り出せる。
何か面白いことできるかもと思ったけど、イベントネームスペースあるからそんなに使い道ないかも。

・IEでjQuery\d+=".+"って書かれてるelementを.cloneするとその部分が消えるので注意。
もともとjQueryのIDが.cloneされないようにってことだと思うけど、要素の中にあるかどうかを判断してないので、どこに書いてあっても消える。
まあ、実際こんな文字列書かないと思うので困ることないと思うけど。

・Sizzleは思ったよりショートカットとか、最新のブラウザAPI使ってない印象。
(getElementsByClassNameとかは使ってるけど)
前にざっくりuupaa.js読んだせいか速度的にちょっと気になりそうなところがちらほら。
(全部正規表現でやってるとことか。よくある処理だけ先にindexOfとかで切り出せないのかな)
ただ、ちゃんとはかったこと無いから実際どの程度速度差があるかわからないし、
そもそもuupaa.jsがやり過ぎな気もするのでそんなに気にしなくていいのかな。
まあ、jQueryで速度気にするときはその部分だけjQuery使わず書けばいいのでいいか。

//以下勉強会自体の印象

・自分まだ若手w
これだけ不安だった。よかった。
(ちなみに、若手の基準は「自分が若手と思うかどうか」とのこと)

・10人くらいなので全体的に静かな印象。

・余所でコードリーディングは初めてだったんですが思ったより疲れた。。。
(自分だけだと面倒なところは流し読みするけど、多人数でやってると突っ込みが入るので飛ばせないので)

・合間で休憩がてら普段やってることの紹介とかあっても良かったかも。

・事前準備重要。勉強会自体の時間がかなり長かったので結構すすんだ気もしますが、先にざっくりでも読んどけばもっとすすんだかも。
(イベント周りは先に読んどきます)