WordPressでadd_filterで適用された関数の一覧を表示する

どんなフィルタが適用されてるか確認したかったので質問したら教えてもらえました。Stackexchange の回答者様ありがとうございます。 [crayon lang=“php”] <?php function get_filters_for( $hook = '' ) { global $wp_filter; if( empty( $hook ) || !isset( $wp_filter[$hook] ) ) return; return $wp_filter[$hook]; } var_dump(get_filters_for( 'the_content' )); [/crayon] 参考 [How to check a filter are applied – WordPress Answers][1]

2013-12-10 · 鉄

返り値が false か 整数の関数で `0` をtrueと判定する方法

WordPressの has_filter()は返り値が int|boolean なので普通に if(has_filter()) で処理しちゃうと `` が返ってきた時に意図しない結果になってしまいます。 解決策 なのでそういう時は if(is_int(has_filter())) を使いましょう。 参考 [wordpress – recognize `` as a true in PHP if statement – Stack Overflow][1]

2013-12-10 · 鉄

既に存在するindexにunique制限をかけるmigrationの書き方。

そのまま unique 条件付の index を追加しようとするとエラーになるので まず既にある index を削除してから追加しましょう。 [crayon title=“db/migrate/add_unique_constraint.rb”] def change remove_index :editabilities, [:user_id, :list_id] add_index :editabilities, [:user_id, :list_id], unique: true end [/crayon] 参考 [ruby on rails – How to add unique constraint to already existing index by migration – Stack Overflow][1]

2013-12-09 · 鉄

RailsでModelが不規則名詞だった場合のControllerの命名規則

Rails の Model は常に単数名詞、そして Controller はその名詞の複数形という規則がありますが、Model が”Child"などの不規則変化名詞だった時に Controller 名はChildren なのか、Childs なのかがわからなかったので調べました。 答え プログラム的には当然簡単に処理できる Childs だと思ったけども実際はちゃんと不規則変化にも対応してるらしく Children が正解です。 その他の不規則名詞 他の不規則名詞は https://github.com/rails/rails/blob/4-0-0/activesupport/lib/active_support/inflections.rb に載っているんですが、 inflect.irregular('person', 'people') inflect.irregular('man', 'men') inflect.irregular('child', 'children') inflect.irregular('sex', 'sexes') inflect.irregular('move', 'moves') inflect.irregular('cow', 'kine') inflect.irregular('zombie', 'zombies') zombie って不規則名詞なの…? cow→kine の変化はそもそも英単語がわかりませんでした、、 Zombie が不規則名詞の理由 ([2013/12/14] 追記) 単数形から複数形への変化は規則通りですが、複数形から単数形への変化 zombies -> zombie が不規則で、規則通り変化させてしまうと zombies -> zomby になってしまうから不規則名詞らしいです。英語は難しいですね。 情報元 [Model and Controller's naming rule for irregular noun in Rails – Stack Overflow][1]

2013-05-21 · 鉄

wxPythonで作ったUIをpy2exeで変換すると見た目が変わる問題

wxPythonを使って頑張って作ったGUIをPythonが入ってないPCの人も使えるようにするのにpy2exeで変換したら見た目が変わってしまった(古い?TK?)のでその対処法。 必要なファイル Microsoft.VC90.CRT.manifest msvcm90.dll msvcp90.dll msvcr90.dll の4つのファイルが必要。自分の環境だとPython 2.7 Portableを入れたフォルダに全部入っていたので、Py27MSdllsというフォルダをsetup.pyと同じ階層に作って全部入れました。 Microsoft.VC90.CRT.manifest の中で示されてるdllのバージョンが合ってるかどうか確認する。 違ってたら適宜修正する。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?><br> <!-- Copyright (c) Microsoft Corporation. All rights reserved. --><br> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><br> <noInheritable/><br> <assemblyIdentity<br> type="win32"<br> name="Microsoft.VC90.CRT"<br> <s>version="9.0.21022.8"</s> <span style=color:red;>version="9.0.30729.6161"</span><br> processorArchitecture="x86"<br> publicKeyToken="1fc8b3b9a1e18e3b"<br> /><br> <file name="msvcr90.dll" /> <file name="msvcp90.dll" /> <file name="msvcm90.dll" /><br> </assembly><br> setup.py setup.pyを書き換えて用意したこれらのファイルを読み込むように変更する。 # -*- coding: utf-8 -*-<br> #<br> # setup.py<br> <br> from distutils.core import setup<br> import py2exe<br> import glob<br> <br> <br> class Target(object):<br> """ A simple class that holds information on our executable file. """<br> def __init__(self, **kw):<br> """ Default class constructor. Update as you need. """<br> self.__dict__.update(kw)<br> <br> MANIFEST_TEMPLATE = """<br> <?xml version="1.0" encoding="UTF-8" standalone="yes"?><br> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><br> <assemblyIdentity<br> version="5.0.0.0"<br> processorArchitecture="x86"<br> name="%(prog)s"<br> type="win32"<br> /><br> <description>%(prog)s</description><br> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><br> <security><br> <requestedPrivileges><br> <requestedExecutionLevel<br> level="asInvoker"<br> uiAccess="false"><br> </requestedExecutionLevel><br> </requestedPrivileges><br> </security><br> </trustInfo><br> <dependency><br> <dependentAssembly><br> <assemblyIdentity<br> type="win32"<br> name="Microsoft.VC90.CRT"<br> version="9.0.30729.6161"<br> processorArchitecture="x86"<br> publicKeyToken="1fc8b3b9a1e18e3b"><br> </assemblyIdentity><br> </dependentAssembly><br> </dependency><br> <dependency><br> <dependentAssembly><br> <assemblyIdentity<br> type="win32"<br> name="Microsoft.Windows.Common-Controls"<br> version="6.0.0.0"<br> processorArchitecture="X86"<br> publicKeyToken="6595b64144ccf1df"<br> language="*"<br> /><br> </dependentAssembly><br> </dependency><br> </assembly><br> """<br> <br> other_resources = [(24, 1, MANIFEST_TEMPLATE % dict(prog="MyAppName"))]<br> py26MSdll = glob.glob(r"Py27MSdlls\*.*")<br> data_files = [("", py26MSdll),]<br> <br> py2exe_options = {"compressed":1,<br> "optimize":2,<br> "bundle_files":2}<br> <br> setup(<br> data_files = data_files,<br> options={"py2exe": py2exe_options},<br> windows= [Target(script = 'movie_info.py', other_resources = other_resources)]<br> ) これで上手く行けば見た目がWindowsXP以降のキレイな表示に変わります。 ...

2013-03-29 · 鉄

JqueryとHTML5でajaxなファイルのアップロード

画面遷移無しでファイルのアップロードしようと思ったらiframeを使った技とかややこしい情報が色々出てきて、なかなかやりたいことに辿りつけなかったのでメモ。 やりたい事と条件 ・ajaxなテキストファイルのアップロード ・テキストをRubyで編集して返す ・画面遷移せずに結果を表示 ・IEは諦める。 必要最低限のコード まずHTMLを用意 ajaxupload.html ` <script type="text/javascript" src="ajaxupload.js" charset="utf8"></script><br> ` つぎにjavascript ajaxupload.js ` $(function(){ $("#upload").click(function(){ var file = $("#file")[0].files[0]; var reader = new FileReader(); reader.readAsText(file, 'UTF-8'); reader.onload = showFile; }); function showFile(event) { $.ajax({ type: "POST", url: "ajaxupload.rb", data: { filedata:event.target.result} }).done(function(msg) { $("#output").html(msg); }); } }); ` んで何か処理をするRubyのスクリプト。ここではファイルの中身をそのまま返してるだけ。(パス名は適宜変更してください。) ajaxupload.rb ` #!P:\Dropbox\bin\RailsPortable\App\Rails\bin\ruby.exe require "cgi" cgi = CGI.new print "Content-Type: text/html\n\n" print cgi['filedata'][0] ` デモ サンプルを置いておきます。(さくらのレンタルサーバーはRubyの拡張子がrbではなくcgiじゃなくと動かなかったのでファイル名を変えています。 ...

2013-02-27 · 鉄

Pythonのapplyを使う時の注意点、…というか使っちゃダメ。

Lisp を書いてると、他の言語でも apply を使いたくなる。 そして Python にも apply があったので早速喜んで使ってたら引数の数がおかしいというエラーメッセージに困らされた。 基本的な apply の使い方 ` def hoge(word): print word apply(hoge,"A") ` とまあこんな感じ使うわけです。 文字列を引数にできない。 ところがこの引数の"A"を"ABC"に変えるだけでエラーになる。 ` Traceback (most recent call last): File "", line 9, in TypeError: hoge() takes exactly 1 argument (3 given) ` どうやら文字列を渡すと文字数分だけの引数を渡したと解釈されてしまうらしい。 解決策 さて、解決方法ですがタイトルにもあるように廃止された関数なのでもう使っちゃダメらしい。 引数 function は呼び出しができるオブジェクト (ユーザ定義 および組み込みの関数またはメソッド、またはクラスオブジェクト) でなければなりません。args はシーケンス型でなくてはなりません。 function は引数リスト args を使って呼び出されます; 引数の数はタプルの長さになります。オプションの引数 keywords を与える場合、 keywords は文字列のキーを持つ辞書で なければなりません。これは引数リストの最後に追加されるキーワード 引数です。 apply() の呼び出しは、単なる function(args) の呼び出しとは異なります。 というのは、apply() の場合、引数は常に一つだから です。apply() は function(*args, **keywords) を 使うのと等価です。 上のような “拡張された関数呼び出し構文” は apply() と全く等価なので、必ずしも apply() を使う必要はありません。 ...

2013-01-15 · 鉄

Vimのインデント幅の設定を一括で変更

Vimの初期設定ではインデント幅が8で広すぎるので2に変更したかったけども、設定方法を見ると ~/.vim/indent/$filetype.vim と各ファイルタイプごとに変更する方法しか紹介されてなかったけどもダメ元で ~/.vimrc に set tabstop=2 shiftwidth=2 softtabstop=2 と追加したら変更できたみたい。どちらが流儀的には正しんだろうか?

2012-08-21 · ironsand

javascript で大文字、小文字を無視して文字列比較

javascript で大文字、小文字を区別しないで文字列比較がしたい時は、そういう演算子は用意されてないので toLowerCase() で全部小文字にして比較しちゃいましょう。 こんな感じ。 function check(){ foo="ABC"; bar="abc"; if(foo.toLowerCase() == bar.toLowerCase()){ //大文字小文字を無視 alert("ok!!"); }else{ alert("NG!"); } } ちなみに英語で「大文字、小文字を区別しない。」と言いたい時は case-insensitive を使えばよいそうですよ。

2012-01-07 · 鉄

jQueryでマウスの右クリック、左クリックを判断する

jQuery を使って 「クリックされた時に左なら要素を消して、右なら何もしない。」 という動作をさせようと思ったら日本語だと検索してもすぐに答えが出てこなかったので、また stackoverflow から解説を紹介します。 実際のコードがこちら。 $('#element').mousedown(function(event) { switch (event.which) { case 1: alert('Left mouse button pressed'); break; case 2: alert('Middle mouse button pressed'); break; case 3: alert('Right mouse button pressed'); break; default: alert('You have a strange mouse'); } }); mousedown の時に渡されるイベントを確認して場合わけすればよい、と。 つまり左クリックで要素を隠すにはこうします。 //左クリックされると foo を隠す $(".foo").click(function(e){ if(e.which == 1){ //左クリック $(this).hide("fast"); } }); 他の方法 頻繁に使うのであれば jquery.detailclick.js を入れてこんな風に使えるようにしておくとよいかもしれません。やっぱりこちらの方が jQuery っぽくて見やすいですね。 $("target").rightClick(function() { $(this).text('右クリックされました!').css('background-color', '#ff3399'); }); 参考 javascript - How to distinguish between left and right mouse click with jQuery? - Stack Overflow http://stackoverflow.com/questions/1206203/how-to-distinguish-between-left-and-right-mouse-click-with-jquery JSNote - 左、中、右クリックのカスタムイベントを追加するjQueryプラグイン http://jsnt.blog.fc2.com/blog-entry-3.html ...

2012-01-07 · 鉄