やったこと

webサービスを作るときに考えたことを垂れ流します

プログラミング

「Fabric.js」のcanvasの参照の仕方・オブジェクトの参照の仕方

「Fabric.js」はHTML5のcanvas要素を扱いやすくしてくれる便利なjavascriptライブラリです。 例えばFabric.jsを使ってcanvas上に「○」を描くときは以下のようにします。 var canvas = new fabric.Canvas("mycanvas"); var circle = new fabric.Circle({ left…

【PHP】「idiorm」でエラーハンドリングする

以前PHPのデータベース操作ライブラリ「idiorm」というのを紹介しました。 ↓ PHPのデータベース操作ライブラリ「Idiorm」でSQLiteが楽々使えた - やったこと これでエラーハンドリングをするときの一例です try { //レコードをセーブ $record = ORM::for_tab…

【PHP】ニコニコ動画ランキングのRSSを読み込んで情報をパースする!

ニコニコ公式のRSSを利用して「動画ランキング」の情報を取得することができます。例えば「政治カテゴリ」の「本日の動画ランキング」の情報は以下URLで取得できます。 http://www.nicovideo.jp/ranking/view/daily/politics?rss=2.0上記URLを叩くと、以下の…

画面全体にオーバーレイがかかって広告を閉じるまで抜けられないえげつないトラップを作った!

サイト閲覧中に画面全体に薄くオーバーレイがかかって、真ん中の広告の閉じるボタンを押すまで抜けられない、えげつないトラップを作りました。海外のあやしい動画サイトとかでよく見ますよねこういうの。サイトにアクセスしてから一定時間経つとこの処理が…

ワードプレスSimplityのブログでアップロード可能なMIMEタイプを追加する

WordPress Simplityのブログで、メディアファイルをアップロードしようとしたら「 このファイルタイプはセキュリティの観点から許可されていません」とエラーが出て怒られてしまった。「pcap」っていう形式のパケットのキャプチャファイルをアップしようとし…

ワードプレスのXML-RPC機能で記事を非公開にセットする

ワードプレスのXML-RPC機能を使って、特定の記事を非公開にする方法です。 以下がPHPコードです。「IXR_Library.php」というライブラリを使用しています。$page_idで指定した記事を非公開にセットしています。 require_once '../IXR_Library.php'; $xml_url …

ワードプレスのXML-RPC機能で記事情報を取得する

ワードプレスのXML-RPC機能を使って、特定の記事の情報を取得する方法です。 以下がPHPコードです。「IXR_Library.php」というライブラリを使用しています。 require_once '../IXR_Library.php'; $xml_url = "http://hogege.com/xmlrpc.php"; $user_name = "…

PHPでクラス内のメンバ変数にオブジェクトを指定する場合

PHPで以下のようにクラス内のメンバ変数にオブジェクトをセットするとエラーがでてしまう。 class Test1 { public $hoge = new Test2(); } ↓ エラー文:「PHP Parse error: syntax error, unexpected 'new' (T_NEW)・・・」メンバ変数にオブジェクトをセット…

ワードプレスのXML-RPCによる外部投稿で「抜粋」フィールドをセットする方法

「XML-RPC」というプロトコルを使うと、WordPressに記事を外部から投稿することができる。WordPressのディレクトリ直下に「xmlrpc.php」というのがあるけど、ここにメッセージを送ると記事を遠隔投稿できるんだ。以下はPHPを使った自動投稿処理のコードだよ…

PHPのforeachを参照渡しで回したら最後の要素が上書きされちゃった!

PHPのforeachを参照渡しで回したら最後の要素が別の値に上書きされてしまったという話。 以下のコードをご覧下さい。 $test1 = array("111","222","333"); $test2 = array("aaa","bbb","ccc"); foreach($test1 as &$val){} foreach($test2 as $val){} print_…

ワードプレスのキャッシュプラグイン「W3 Total Cache」のログ

ワードプレスのキャッシュプラグイン「W3 Total Cache」の設定画面で以下の謎のログが出てきた。「The plugin is currently enabled in community mode.」これは「あなたはW3 Total Cacheの無料版を使っていますよ」という意味。有料版を買えば消えるらしい…

PHPのデータベース操作ライブラリ「Idiorm」でSQLiteが楽々使えた

「Idiorm」っていうPHPライブラリでデータベースが楽々操作できるよ!めんどくさいSQL構文ともこれでおさらばだよ!以下使い方だよ!①インストール 下記のgithubページでzipがダウンロードできるよ! https://github.com/j4mie/idiormzipを解凍するといっぱ…

「Goutte」で対象ページ中の全リンクURLを取得する

最近GoutteというPHPのスクレイピングライブラリをいじって遊んでる。 いろんなブログをスクレイパーで巡回して、良さそうな記事をピックアップして楽しむのが目的。以下のコードは、GoutteでHTMLページを読み込んで、その中の全「aタグ」を解析してリンクし…

phpをスクリプトで実行すると「mysql.soが読み込めません!」とエラーが出る件

最近用意したばかりのcentOS上で、phpのスクリプトを実行しようとしたら以下のようなWarningが出てしまった。 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open …

javascriptで画像読み込みエラーを検知する

javascriptで画像(img)の読み込みエラーを検出しようと思ったけどうまくいかなかった。下記のようなコードを書いたけど、errorのイベントが発生しなかった。 function set_image_err(){ $("#img_hoge").error(function(){ //ここにエラー時の処理を書く }); …

cakePHP 2でエラー404ページを作りたい

CakePHP(2.x系)でエラー404ページを作る方法です。いろんなブログにやり方が書いてありますが、どれも試してもなかなかうまくいかない・・。そんな中で、自分が試してうまくいった方法を書きます。(ちなみに下記作業は /Config/core.php の debugを0にセッ…

bootstrapのモーダルの縦位置を調整する

twitter bootstrapのモーダルウィンドウの縦位置の調整の仕方。以下のようにcssに新しいクラスを宣言して、お目当てのモーダルに付けてあげるとtop位置が調整できるます。 /* css */ .modal-dialog-center { padding-top: 40%; } /* html */ <div class="modal fade" tabindex="-1"> <div class="modal-dialog modal-sm modal-dialog-center"> <div class="modal-content"> </div></div></div>

bootstrap progressbarの目盛りを線形に変化させたい

twitter bootstrapのプログレスバーの目盛りを連続的に変化させる処理を書いてるんだけど(ゲームキャラの行動タイマーです)、指定した値にビョイ~ンとした動きで移動してしまって困った。もっと直線的な動きで変化してほしいんだよね・・。以下のようにcs…

twitter API制限の「ユーザー単位」「アプリケーション単位」ってなんだ?

■twitterのAPI制限 twitterのAPI(version 1.1)には使用回数の制限(リミット)が設けられている。例えば「GET users/show」というユーザーアカウント情報を取得するAPIには「ユーザー単位で180回/15分」「アプリケーション単位で180回/15分」と制限が付いて…

要素一個の配列を宣言するときに注意すべきこと

javascriptで、要素一個の配列を宣言するときにありがちな間違い。以下のように記述してしまうと、空の値をもつ長さ10の配列が生成されてしまう。 var test = new Array(10); console.log(test); 以下のように記述すれば、「10」の値が格納された長さ1の配列…

javascriptは参照渡しではなくて参照の値渡しをしてる

また基本的なとこで引っかかってしまった。。以下のコードは、[1,2,3]という配列を[4,5,6]に置き換えようとして書いたんだけど、これでは配列は置き換わらない。 var test_arr = [1,2,3]; test_func(test_arr); console.log(test_arr); //与えられた配列を置…

window.heightで正しい値が取得できない

jqueryで下記のようにブラウザの縦幅(開いてるウィンドウの幅)を取得しようとしたんだけど、なぜかドキュメント全体の縦幅が取得されてしまう現象が起きた。 var height = $(window).height(); console.log(height); 色々調べてみたら、htmlの一番上のドキ…

javascriptで日時を取得する処理

掲題の通りです。お好みのフォーマットにするのは意外とめんどくさい・・。 //日時を生成して返却する関数 //「2015-04-18 18:01:07」みたいなフォーマットで返却 function get_date_str(){ var now = new Date(); var year = now.getFullYear(); var month …

concatとpush.applyの挙動の違い

javascriptで配列を連結するときによく使う「concat」と「push.apply」。この2つは微妙に挙動が違うので注意。例えば以下のコードを実行すると「test1」の値はそのままで「test2」のみに連結された結果が格納される。 var test1 = new Array("1", "2"); var …

javascriptを修正したのにブラウザに反映されない

javascriptを修正したのにブラウザ側のキャッシュが効いていて、修正が反映されないことがある。こういうときはブラウザで「スーパーリロード」を実行すると、キャッシュが無効になって、全部一から読み込んでくれるらしい。Chromeでは以下の方法でスーパー…

cakephpでランダムにデータが取得できない!

cakephpでランダムにデータが取得できなくてはまった。以下のようにするとランダムにデータが取得できると聞いたんだけど、いくらやっても「General error: 1 no such function: rand」とエラーが出て全然データが取得できない・・。 //ランダムに3件データ…

cakephpサーバとajaxの通信をしてるときに「"Unexpected token <"」のエラーが出る

cakephpのサーバとajax通信をしてるときに、ブラウザ側で「"Unexpected token cakephpのコードがどこかでエラーしていると思われる。クライアント側に応答メッセージとしてHTML文が返ってきていて、その中にある"ブラウザ側で下記のように「jqXHR」の中をデ…

twitteroauthの使い方(2015年3月時点)

twitteroauthを使ってtwitter APIによりtwitterアカウント情報を取得する方法です。■まずアブラハムさんのページからtwitteroauthのzipをダウンロードします。 https://github.com/abraham/twitteroauth■zipを解凍すると「twitteroauth-master」のフォルダが…

postメッセージで空の配列を送信してくれない

javascriptでクライアント→サーバにpostメッセージを送信しようとしたら、「空の配列」を送信してくれなくて困った。以下のようにしてajaxでpostメッセージを送信したんだけど、「test1」「test2」「test4」のデータはメッセージに含まれていたけど、「test3…

SQLite3で「database schema has changed」のログが出るとき

この前自分のサイトにアクセスが急増する出来事があって、そのときにwebサーバに見たことないエラーログが出力されていた。下記のような感じのログ。 code:17,database schema has changedこのエラーは、PDOのプリペアドステートメントを使ってデータベース(…