2008-01-01から1年間の記事一覧

symfony1.2でDoctrine1.1使ってJobeetチュートリアル20日目

ついに20台まで来たよ。 pluginの説明とjobeetをplugin化しようの回。 subversionでバージョン管理している場合は、s/mv/svn mv/ で移動を明示的にして行方不明になるのを防ぎませう。 行方不明にしちゃった場合は、行方不明になったファイルをまとめて消す…

行方不明になったファイルをまとめて消す

バージョン管理下に置かれていないファイルをまとめて管理下にの削除版ですね。 alias svndel="svn st | grep '^!' | sed -e 's/![ ]*/svn del /g' | sh" zsh使っている人は、~/.zshrcに上記の文字列を追加しーの source ~/.zshrc設定ファイル読み込み直しー…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル19日目

国際化のターン。 Language Switching 日本語は、jpかな?と、安易にfrをjpに置換したら、怒られた。 さーせん、jaでしたね。 でも、料理と一緒でまずはレシピ通りにやろうと思います。 Templates __()関数通すと、レンダリング時にユーザの言語に合わせて文…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル18日目

Ajaxの回。 いきなり、prototype.jsからjQueryに浮気かい! たしかに、jQueryの人気っぷりは凄いからなぁ。 AJAX in an Action 通常の通信とAjax通信で返すViewを変える処理が、わかりやすいコードで好きです。 今更ですが、"Post a Job"ボタンと検索ボタン…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル17日目

data/job.dev.indexの中身は、ころころ変わるので svn propedit svn:ignore dataで、 *.*.indexと書き込んで保存。 検索のインデックスフォルダ(job.dev.indexって書くより、*使ってあいまい指定が便利)をsubversionの管理外にするといいんじゃないかと ち…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル16日目

The Fixtures symfony doctrine:data-loadしようとしたら、Integrity constraint violationと怒られた。 jobeet_jobテーブルがjobeet_categoryテーブルのcategory_idを参照してるので、先にjobeet_categoryテーブルを空にできないからと思われる。 手動で、j…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル15日目

Feed配信しようの回 // php.ini short_open_tag = Onのせいで、xml宣言がPHPの構文エラーになっていたので、Offにして # /etc/init.d/httpd restart

symfony1.2でDoctrine1.1使ってJobeetチュートリアル14日目

一休みの日 14日目は、Jobeetとしては何もしないみたいなので、コードリーディングに役立つvim pluginの紹介をしたいと思います。 project.vim windowの左側に、フォルダをツリー形式で表示してくれる。 ファイルの位置が直感的にわかるので、重宝してます。…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル13日目

後半戦突入! User Attributes // apps/frontend/modules/job/actions/actions.class.php job = $this->getRoute()->getObject(); // fetch jobs already stored in the job history $jobs = $this->getUser()->getAttr…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル12日目

設定ファイル変更したら、キャッシュクリアしないと反映されないよ。 symfony cc --env="backend" Backend Look and Feel sf_admin_barが邪魔です。 sf_admin_barのfloatがleftになってるのが原因でしたので // web/css/my.css #sf_admin_bar { float: none …

symfony1.2でDoctrine1.1使ってJobeetチュートリアル11日目

Formもテストしよう回。 Submitting a Form clickシミュレート後のモジュール、アクションのチェックだからwithの位置は $browser->info('3 - Post a Job page')-> info(' 3.1 - Submit a Job')-> get('/job/new')-> with('request')->begin()-> isParameter…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル10日目

Form周りの話。 Customizing the Job Form // apps/frontend/modules/job/template/showSuccess.php <img src="/uploads/jobs/<?php echo $job->getLogo() ?>" alt="<?php echo $job->getCompany() ?> logo" /> imageタグきた! getLogo(), array('raw_name' => tr…

ソフ開受かった

午前が自信なくて採点せずに諦めていたけれど、キター 取り消しとかないよね?

symfony1.2でDoctrine1.1使ってJobeetチュートリアル9日目

今回は、書いてある通りでほぼ問題なかったです。 ただ、test/functional/frontend/jobActionsTest.phpのテストが成功したり、しなかったりと不安定。 こっちは原因究明中。 てか、 tr:last:contains("102")この記法正しく解釈してない。 tr:lastや tr:conta…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル8日目

テストもプログラムしよう回 Adding Tests for new Features テスト項目増やすなら、lime_testへの引数の数字も増やす。 // 第一引数(この場合7)は、テスト項目数と合わせる。 $t = new lime_test(7, new lime_output_color()); Adding Tests because of …

symfony1.2でDoctrine1.1使ってJobeetチュートリアル7日目

Update the Database symfony doctrine:build-all-reloadしたら Validation error in class JobeetJobって怒られた。 data/fixtures/jobs.ymlの内容が、JobeetJobのバリデーションに引っかかったらしい。 解決方法 expires_atが'Y-m-d h:i:s'形式じゃない所…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル6日目

Debugging Doctrine generated SQL Doctrineが作ったSQLは、そのままじゃ実行できないよ。 phpMyAdminとかで、SQLのデバッグしたいときに一手間必要。 デバッグツールバーのボンレスハムみたいなボタン押すと、Doctrineが作ったSQLが見られる。 SELECT j.id …

symfony1.2でDoctrine1.1使ってJobeetチュートリアル5日目

躓いたとこをメモ svnリポジトリの内容が、Propel仕様だった 12/13 追記(getObject問題解決) lib/model/JobeetJob.phpを開きましょう? lib/model/doctrine/JobeetJob.class.phpですね、わかります。 # apps/frontend/config/routing.yml job_show_user: u…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル4日目

躓いたとこをメモ 画像が見つからない apps/frontend/templates/layout.phpを変更した後 http://jobeet.localhost/frontend_dev.php/job/new見てもデモと違う。 厳密には、自分の場合公開ディレクトリの場所変えてるから http://colinux/~takitake/jobeet/fr…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル3日目

もうちょっとSQLよりで記述したい! ってことで、Doctrine使ってみようと思います。 新たなチュートリアルとしてJobeetが始動しているので、Doctrineの練習がてら作ってみる。 躓いた箇所をメモ 1,2日目は紹介や概念の解説なので略。 3日目で待望のDoctr…

hostコマンドを含むパッケージ

# yum install bind-utils 使い方 "http://"は付けないyo # host www.google.co.jp www.google.co.jp is an alias for www.google.com. www.google.com is an alias for www.l.google.com. www.l.google.com has address 66.249.89.147 www.l.google.com has…

Firefox3で「はてブ」のページ自動ロードを無効にしたい人向けJavascript

これをアドレスバーに貼り付けて、エンター押せば無効にできます。 javascript: (function(){Hatena.Bookmark.AutoPagerize.instance.inactive()})()

ページをクロールする時に必要なAタグのみ取得するXPath

10/4 追記:メールも弾くよう改良 getElementsByTagName('a')で全部取ってくるくらいなら、XPathでフィルタリングしたい! ということで、 /html/body//a[not(contains(@href, "#")) and not(starts-with(@href, "javascript:")) and not(starts-with(@href,…

画像の読み込みを制御するグリモン(複数ページ対応版)

AutoPagerizeっぽく指定できるようにしてみた。 // ==UserScript== // @name imgBlocker // @namespace http://d.hatena.ne.jp/TakiTake/ // @include * // ==/UserScript== var SITEINFO = [ /* sample { url: 'http://www.hatena.ne.jp/', allowedElement:…

画像の読み込みを制御するグリモン

Webページの読み込みが遅い原因の一つは、画像の読み込みに時間がかかることです。 かといって、画像を全部非表示にすると不便。 そんな時に、こんなグリモンはいかがでしょう? 処理中に多少の画像は、ロードされてしまいますがページによっては転送量がぐ…

ニコニコの動画ランキングのデフォをデイリーにするグリモン

トップページから、「動画ランキング > 続き」を押すとウェークリーランキングに飛びますよね。 俺は、デイリーが見たいんだ!って人用のグリモン。 カテゴリ変えると、Ajax通信でPAGEBODY内を書き換えてるので、DOMSubtreeModifiedでノードツリー更新イベン…

はてブのページ自動ロードは、もっとアピールしていいと思う

普段からAutoPagerizeに大変お世話になっている。 「次へ」ボタン押さなくても、自動で次のページが足されていくので、マウスホイールをグリグリ回すだけで快適にページの閲覧が可能なアプリ。 ページの右上に小さな■がいたら、AutoPagerize対応ページの証。…

あなたとnatural joinしたい

joinしたテーブル(外部キー参照していない)のカラムをセレクトに設定できなくて詰まりました。 join損ですよ。 方法が無い訳では無いようですが、現状の知識ではソースが解読できなかったので、DB設計から見直すことに。 もともと、破綻してたしいい機会。…

bodyとdiv直下のテキストノードをXPathで取得してspanで囲む方法

昨日の続きです。タイトルの通りです。 複数のクエリーは、パイプで繋げば一度に取れるらしいですよ。 $xpath = new DOMXpath($dom); $query1 = '/html/body/text()[string-length(normalize-space()) > 0]'; $query2 = '/html/body//div/text()[string-leng…

XPathで取ってきたテキストノードが意図した順番で来なかった

divの直下にテキストは好きじゃないけれど <html> <head> <meta http-equiv='Content-type' content='text/html; charset=utf-8'> <title>test</title> </head> <body> <div> <a href="hoge.php">hoge</a> | <a href="huga.cgi">huga</a> | </div></body></html>