サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
takitake.hatenablog.com
ちゃう class Parent CONST = 'parent' def initialize p CONST end end class Child1 < Parent CONST = 'child' end Child1.new # "parent" "child"を期待してたら、"parent"が返ってきた!? 定数の場合、今のスコープになかったら、外のスコープから探索するので initializeメソッドの外に出たら、Parent::CONSTがいるので、その値を返しているみたい。 じゃあ、子クラス毎にinitializeメソッドを定義すれば class Parent CONST = 'parent' end class Child1 < Parent CONST = 'child' def initialize p CONST end end Child1.new # "chi
まずは $ gem install pre-commit # In your git repo $ pre-commit install これだけで、うっかり残念なコミットをする事故が防げます。 Git フック使ってますか? http://git-scm.com/book/ja/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-Git-%E3%83%95%E3%83%83%E3%82%AF コミットする前にバリデーションかけて、通らなかったらコミット中止する。コミットメッセージにブランチ名を自動挿入する。など、ルーティンワークをフックに仕込んでおけば、誰も読まないガイドラインページを書く手間が省けますし、強制する事ができて幸せです。 じゃあ、何をフックに設定するかと言うと コードレビューしていると、気にな
phpMyAdminにログインできなかったのは、こいつが原因だったみたい。 セッションファイル保存するフォルダのグループがrootになっとる # ls -l /var/lib/php drwxrwx--- 2 root root サイズ 日時 session グループ変更で事なきを得ました # chgrp apache /var/lib/php/session
herokuもsinatraも初心者な自分がハマった所と、対処法書いときます。 基本は、ユーザ登録をして https://devcenter.heroku.com/articles/ruby の通りに進めていけば良いのですが HTMLのテンプレート使いたい 風の噂で、hamlがサクサク書けて良いと聞いたので、hamlを選択 Gemfileにhamlを追加 gem 'haml' bundle installでhamlをインストール bundle install APPファイル(web.rb)でhaml読み込み require 'haml' これで、準備OK。 hamlテンプレートを指定する get '/' do haml :index end と書いてやれば、index.hamlファイルをテンプレートとして利用可能。 # -*- coding: utf-8 -*- require 'ruby
node.jsのインストール https://github.com/ry/node/wiki/Installation 0.5.0-preになってる! % node -v v0.5.0-pre httpサーバを立てる リクエストは、GETの当て決め サーバから受け取ったレスポンスをそのままブラウザに返す。 var sys = require('sys'), url = require('url'), http = require('http'); var port = 8000; http.createServer(function(req, res) { http.get({ host: req.headers.host, port: url.parse(req.url).port || 80, method: 'GET', path: req.url, headers: req.hea
Vim script manager「Vimana」が便利すぎる。 を見てインストールしてみました。 # git clone git://github.com/c9s/Vimana # cd Vimana # perl Makefile.PL # makeで、makeファイルねーよと言われてしまった。 id:mattn さんからのアドバイスで、incディレクトリを消したら、Module::AutoInstallが無いと怒られてしまった。 id:TakiTake incディレクトリを消してperl Makefile.PLすると行けたりもします。 git cloneからやり直そうとしたら、現在(2010/02/04 12:10) github落ちてるみたい。 CPANからのインストールを試みるも失敗。 こっちも、makeファイル無いってエラーなのか? # cpan VimanaCPAN: St
あるデータは、現在使っているのとは別のデータベースに入れたいなぁ。 という時に便利なハックです。 DBの設定追加 databases.ymlにdatabase1用の設定(doctrine)が既にあるとして、新たにdatabase2用の設定を追加します。 all: doctrine: class: sfDoctrineDatabase param: dsn: 'mysql:host=localhost;dbname=database1' username: hoge password: huga database2: class: sfDoctrineDatabase param: dsn: 'mysql:host=localhost;dbname=database2' username: hoge password: huga デフォルトのコネクション設定 例は、デフォルトをdoctrin
前提条件 普段のユーザ認証には、sfDoctrineGuardPluginを利用している LDAPまわりは、Zend FrameworkのZend_Ldap利用する Zend Frameworkを用意する http://framework.zend.com/ 今回は、最新版(1.9.5)を使いました。 symfonyへZend Frameworkの場所を明示 & 認証に使う関数変更 # apps/frontend/config/app.yml all: zend_lib_dir: /home/takitake/ZendFramework-1.9.5-minimal/library sf_guard_plugin: check_password_callable: [LDAP, checkPassword] 参照しやすいように、上記の様にZend Frameworkの位置を明示しときます。
以前、PHPのXPathでテキストノード取得したら、期待した順番通りに取得できなかった。と書きました。 ある要素の子ノード群に、エレメントノードとテキストノードがそれぞれ2つ以上あると起きる現象ではないかと推測します。 直下じゃなければいいのでは? ということで、ダミータグで囲ってみたら、期待した順番通りに取得できました。 PHPソース <?php $html = <<< EOL <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'> <html> <head> <meta http-equiv='Content-type' content='text/html; charset=utf-8'> <title>test</title> </head> <body>
jQueryとjQuery UIがあれば大抵のことはできるのですが、意外なことにiframeのリサイズができなかったので、できるようにしてみました。 といっても、jQuery UIのResizableにiframe用の処理追加しただけです。 デモ iframeをdivで囲む Resizableは、リサイズハンドラーとしてのdiv要素を対象要素の子ノードとして追加するのですが、iframeにはappendChildできません。そこで、iframeをdivで囲みdivをリサイズ対象にして、alsoResizeとしてiframeを指定します(divのリサイズにiframeを連動させる)。 リサイズ中はiframeをdivで覆っておく 通常iframe上でのイベントは、iframe内で起きます。iframe上でマウス動かしても、$(document).mousemoveが起こらないって事です。そこ
作ってみた。 titleがtitileになってるので注意直った twitterへの投稿は、http://d.hatena.ne.jp/hirataka522/20080126/1201300282を参考に truncate_text関数は、symfonyのhelperから拝借しました。 ベータ版ですが、PEARにServices_Twitterってのもあります。 <?php function truncate_text($text, $length = 30, $truncate_string = '...', $truncate_lastspace = false) { if ($text == '') { return ''; } $mbstring = extension_loaded('mbstring'); if($mbstring) { @mb_internal_encodin
改行がスペースになったり、連続したスペースは1文字扱いだったりとややこしいレンダリング周り。さらに、ブラウザ間で差があるから発狂物。どのブラウザで見ても同じにしたい。スペース1つが命取りな場合もある。なんとかしたい! そんなことは、サーバ側でやれよ。って話ですが、UserScriptでゴニョゴニョしたいときはjavascriptでがんばるしかないので、なんとかしてみました。 JavaScript版 var b = document.body; // body.innerHTMLを1行ごと配列に格納 var l = b.innerHTML.split("\n"); for (var i = 0, j = l.length; i < j; i++) { // 前後の空白文字を取り除く // 連続する半角スペースを1つにまとめる l[i] = l[i].replace(/^\s+|\s+$/g,
Ajaxでデータ投げたら、エラーページのHTMLが丸々返ってきた経験ありませんか? その度に、Formを作成するのもめんどくさいので、関数化してみました。 $.form = function(s) { var def = { type: 'get', url: location.href, data: {} }; s = jQuery.extend(true, s, jQuery.extend(true, {}, def, s)); var form = $('<form>') .attr({ 'method': s.type, 'action': s.url }) .appendTo(document.body); for (var a in s.data) { $('<input>') .attr({ 'name': a, 'value': s.data[a] }) .appendTo
htmlspecialchars_decodeの場合 探せば関数があるでお馴染みのPHP <p>hoge huga<></p> こんな、HTMLのタグ内の文字数を数えたくて実態参照を戻す関数ないかな?と思ったらあった。 htmlspecialchars_decode <?php // $htmlに変換したいhtmlが格納されているとする $html = strip_tags(htmlspecialchars_decode($html)); var_dump($html); 理想 string 'hoge huga<>' (length=11) 現実 string 'hoge huga' (length=14) が変換されないわ、<>がタグ扱いされるわ、散々たる結果に。まぁ、後半は自業自得ですが。一気に変換しようとせずに、テキスト取って
*2009/5/10 W3Cのチェッカー通るよう修正 楽するのがハッカーということで、マッピングの強化版snippetsEmu.vimで煩わしい作業を短縮します。 xhtml .vim/after/ftplugin/html_snippets.vimの末尾に以下の行を追加して exec "Snippet xhtml <?xml version=\"1.0\" encoding=\"UTF-8\"?><CR><!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"><CR><html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"ja\" lang=\"ja\"><CR><
リファレンスは、こことかここ DOM Range setStartやsetEndは、第一引数要素の第二引数位置へ始点(終点)を移動する。 下記の例だと、2から4までつまり、"cd"を選択している。 <span>abcde</span> var range = document.createRange(); var node = document.getElementsByTagName("span").item(0); var startOffset = 2; var endOffset = 4; range.setStart(node, startOffset); range.setEnd(node, endOffset); TextRange moveStartやmoveEndは、第一引数単位で第二引数分だけ始点(終点)を進める。 下記の例だと、 処理 選択されている文字列 一番最初の
comment(4) みたいな文字列があったとして、数字部分をインクリメントするのに使えます。 var inc = function(str) { return str.replace(/\d+/, function(n){ return ++n; }); } inc('comment(4)'); // comment(5)
たまに、jQueryはXPathのセレクタ使えるというエントリーを見かけますが、CSSのセレクタの間違いです。 例えば、idがhogeの要素を取得する場合 #hoge が CSS id("hoge") が XPathで、XPathを使いたいなぁと思っていたところ、 id:amachangさんがJavascript-XPath作ってた事を思い出し、使ってみた。XPath for jQueryと併用して、いざページ開いたら、 javascriptエラーが、"XPath for jQuery"の方でエラーになるみたいなので、ソース確認。 要は、関数の拡張なので、jQuery.extendとjQuery.fn.extendでいけるのでは?と素人考えで変更したらうまくいきました。 // type is String or Number or Booleaen or Array or undefine
この内容は、間違っています。申し訳ありませんでした。 こちらをお試しください http://d.hatena.ne.jp/TakiTake/20090111/p1 settings.yml書き換えて、 $ symfony ccしたら、Failed to write cache fileですよ。 毎回、 $ sudo chmod -R 777 cacheするのもめんどくさい。 http://trac.symfony-project.org/ticket/4884 こんな、チケットも発行されるくらいだしね。 ん? setgid使うことを進める、的な返信があるじゃないか。 いろいろ試行錯誤した結果。 $ rm -rf cache/* $ chmod 4777 cacheこれで、Failed to write cache fileが出ることは無くなりました。 変わらない場合は、 $ rm -rf
きっかけ canvasタグ上に描いた絵を保存しようとしたら、 意外に情報が見つからず苦労したんで、載せときます。 canvas? まず、canvasやHTML5についての仕様は、以下のサイトを見てください http://www.html5.jp/ 流れ 今回は、フリーハンドで描いた絵を保存します。 canvasタグを用意 お絵かき 画像情報をサーバに送り、DBに保存 DBから画像情報を取り出し表示 (゚Д゚)ウマー なお、DB関係の記述は省略します。 canvasタグを用意 <html> <head> <script src="js/prototype.js" type="text/javascript"></script> <script src="js/canvas.js" type="text/javascript"></script> <style type="text/css">
このページを最初にブックマークしてみませんか?
『takitake.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く