ブログの新規登録画面でカテゴリが追加できない。
(カテゴリの一覧が出てこない)
2009年8月アーカイブ
img自体にwidth,heightが指定されていなくても、画像の大きさになる。
sisso.jsの制約がひとつ減った。
setintervalじゃなくてちゃんとイベントのやつ
onpropertychangeはうまくいかなかった。
setexpressionはうまくいったけど
MTテンプレート内にSQLを直書きできるらしい。
これとphpとJSがあれば何でもできそう。
http://bizcaz.com/archives/2008/02/03-195241.php
$.paramは引数のobject内にfunctionがあれば
全部引数なしで呼び出してその返り値を使ってくれる。
JSの高速化=jQueryを使わない
ul.css('left');
はIEでautoが返る可能性がある。
(Fxでは0pxが返る)
parseInt(ul.css('left'));
でNaNになるので注意。
parseInt(ul.css('left')) || 0;
とかが安全。
YQLでざっくり切り出して、pipesの他のmoduleで切り出すといい感じ。
pipes内にYQL builderみたいなのあればいいのに。
(String Builderとかしかない)
だいぶなれた。
20個超えたくらいからPublishするのにcapchaを要求されるようになった。
上限はないっぽいけど、yahooのcapcha難しい。。。
この辺参考にして軽くしてみたい。
http://d.hatena.ne.jp/Yuichirou/20081127#1227721849
各ページのJSとかが動かなくて早くなったかも。
ただ、サイトに使ってるJSに気づかないのでJS使いとしては間違った選択かもしれない。
まずっても後で同じようにやり直せるからいいなぁ
時間かかるけど
pg_hba.confの書式とかすっかり忘れてた。
でも、やっぱりpostgresの方がすき。
mysqlははまりどころが多すぎる
apache2+mod_perl2化と、mod_proxy環境下での構築に詰まるも無事完成。
次はテンプレート。
こんなに古いバージョンだったのか。404になってから気づいた
IEでhrefに相対パス入れても絶対パスで返ってくるバグは$('a').get(0).getAttribute('href','2');で回避可能らしい。
http://d.hatena.ne.jp/wonohe/20090212/1234411746
#でのページ内参照を取りたいときに面倒なので助かる。
find | xargs nkf --overwrite -E -w
やばかった。。。
ざっくりわかったのはこんな感じ。
window -> app
開いてる画像 -> app.activeDocument
レイヤー -> app.activeDocument.artLayers
グループ -> app.activeDocument.layerSets
ネットを見ると、artLayersだけで全部のレイヤーがとれる
感じで書いてあったけど、ちゃんと
layerSets[n].layerSets[n].artLayersって感じで
再帰しないと全部とれなかった。
レイヤーとれれば後はそんなに難しくない。
とりあえず作ったのはcsvの中のテキストをテンプレートに流し込んで
それぞれのファイル名で保存するやつと、
非表示レイヤーを全体から削除するjsx
この分野は結構費用対効果高そうなのでもっといろいろやってみたい。
ただ、開発環境が高いのがどうしよう。。。
とりあえず試用版入れてるけど、一月たったら使えなくなるし。
・べにじょさんがいた。声いいなあ
・今年はjs分少ない
・「技術者とはなにか」って質問があったけど、「人を相手にするか否か」ってのもあるんじゃないか。
・一般に通じない言葉として「デフォルト」ってあげてたけど、そのくらいは普通に通じるんじゃないだろうか。
・帰宅時のカバン率の高さは異常。みなメッセンジャーバッグかリュックしょってた。もちろん私も。
・GWTの本売ってた。ちょっと興味があったのでiPhoneで調べてみたけど、若干微妙かなー
既存のサイトに限るけど、結構候補が拾える。
なぜ動かなかったかは不明。なぜ直ったかは不明
・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にする)
透過部分をクリック後、非透過部分をドラッグすれば早いのに、最初に非透過部分をドラッグすると遅くなる。
クリック後にsetTimeout(function () {$('#swfid').focus();}, 5000);とかやっても変わらないのであきらめて演出でカバーしてもらう(急ぎらしいので)
transparentとfocusとFxとかはまって当然な要素が目白押し。
> LDRFullFeedのSITEINFOを使う
> http://wedata.net/databases/LDRFullFeed/items
> XPath内が本文。
そういえばこれがあった。
xpathなのと、BP設置できないブログの情報とかごっちゃに入っててJSでは使いにくいから忘れてた。
サーバサイドでやるにはいいかも。
まあ、向こうのサーバが遅くてlocalhostかましてただけだからどっかで遅延はするよね。。。
メールのキュー操作とかすごいひさしぶり。
何かがおかしいと思うけど、何がおかしいかわからない。
puttyにもどろかな。
https://addons.mozilla.org/ja/firefox/addon/10869
json表示するためにわざわざfirebugのコンソールに()つけて貼り付けたりしなくていい!
大量のデータをブラウザから入力するときはperlでデータからseleniumのルール作って実行すると楽でいい
途中経過も普通にブラウザ見ればいいからわかりやすいし。
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にコメントで文字持たせる方法使うとかなり楽になる。
アクションで参照してるディレクトリがないと「環境設定中」で起動しない。
いったんネットワークを抜くと起動できるので、アクションの中を見て存在しないディレクトリがないか確認する。
10分で解決できたのは奇跡。
やってみたけど、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って書きやすくていいなぁ。
(標準から外れてて互換とるのが大変らしいけど)
http://pipes.yahoo.com/pipes/pipe.info?_id=MFObwC8_3hGN_PhYwjSbTQ
yahooがcacheするからこれもありかも。
と思ったけど、利用規約的にはまずいか。。。
ただ、要素の切り出しを正規表現でしかできないのは微妙。
xpathとは言わないけど、せめてcss selector使いたい。。。
var all = '';
$.each(json, function () {
all += tmpl.tempalte(this);
});
$('selector').append(all);
template自体はscript tagの中にコメントアウトしたxmlで埋め込んでそこから読み込み。
(opensocialなので、htmlにscript tagが直書きとか気にしない)
要素を構築するときはテキストからが楽。
要素を抽出するときはDOMからが楽。
Webkitと、Mozillaには角丸用のCSS指定がある
(WebkitBorderTopLeftRadiusとか-moz-border-radius-topleftとか)
jquery.corners.js
http://plugins.jquery.com/project/corners
では使えるときはそっちを使うので最近のブラウザなら速度的な弊害はない。
(古いブラウザにはやはりdiv重ねてた)
osdeを使うときはhtmlの関連づけをブラウザに戻すか、一度内蔵のブラウザで表示してからURLをコピペする。
(じゃないとエラー)
http://communityfactory.com/
mixiから出資されてるmixiアプリの開発会社。実際は中国で開発らしい。
mixiアプリではcssをbody内に書いてもheadに移動してもらえる。
ただ、cssだけはキャッシュされず、直接元サーバへ見に行く。
opensocialは基本的にiframe内で実行されるのでfirebugのコンソールにエラーが出ない。
Fx自体のエラーコンソールには出る
$(xml).find('hogehoge').add($(xml).find('hugahuga'))で回避
DOMじゃなくて、XML要素の場合だけ発現
一緒に飛んだ人の二人のうち一人が現役SEで「JSの単体テストがネックで。。。」とか話した。
もう一人は元SEで今一人で会社作って仕事してるとのこと。
リンクを訪問したかどうかはJSで取得可能なので、http://mixi.jp/home.plを過去に訪問したかどうかを判断すればそのユーザがmixiユーザかどうか外部から判断可能。
値がundefinedになる可能性がある場合、method呼び出しを最後にするか、$('').attr('attr', hogehoge || '')ってする。
(この場合0も''になるので注意。'0'は大丈夫だけど)
JSも傾斜製爪楊枝症候群か。。。
htmlでも、uriでも/出現する頻度高いからなんか考慮あってもいいのに。
一日panzer front(PS1で出てたタンクシュミュレータ)とTObang(タクティクスオウガのroguelike)やってた。
どちらも終わらない系。
JSでhover中の内容を送ればいけるらしい。
suzunariのオプションに追加しよう。タスクに積む。
他の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
Accept-Languageが空ならJAとして認識すればOKかも。
第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人くらいなので全体的に静かな印象。
・余所でコードリーディングは初めてだったんですが思ったより疲れた。。。
(自分だけだと面倒なところは流し読みするけど、多人数でやってると突っ込みが入るので飛ばせないので)
・合間で休憩がてら普段やってることの紹介とかあっても良かったかも。
・事前準備重要。勉強会自体の時間がかなり長かったので結構すすんだ気もしますが、先にざっくりでも読んどけばもっとすすんだかも。
(イベント周りは先に読んどきます)