やったこと

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

【PHP】Simple HTML DOM Parserでツイッターカードのimageを読み込む!

Simple HTML DOM Parserでお目当てのサイトの「Twitterカード情報」を読み取って、アイキャッチ画像を抜き取るよ!コードは以下の通り! require_once('./simple_html_dom.php'); //お目当てのサイトのHTMLを取得 $html = file_get_html("http://hogege.com/…

【PHP】TwitterOauthでレスポンスコードを見てエラーを検出!

PHPでTwitterAPIを利用するための便利なライブラリ「TwitterOauth」API接続時のエラーを検出するには、以下のように「getLastHttpCode()」の値を確認すると良いです。 レスポンスコード200番は成功の証なので、これをチェックします。 require_once("./tw…

【Wordpress】wp_remote_get()で取得したコンテンツが画像かどうか判定!

ワードプレスのwp_remote_get()関数で取得したHTTPリクエストの中の「content-type」をチェックして、コンテンツが画像ファイルかどうかを判定します。wp_remote_get()の戻り値の中には、こんな感じヘッダ情報が含まれています。 ↓ [data:protected] => Arra…

【WordPress】データベース操作クラス「$wpdb」のエラー判定の方法!

ワードプレスでDBを操作するときに「$wpdb」って使いますよね? 「$wpdb->insert()」とか「$wpdb->update()」とか「$wpdb->delete()」みたいなあの処理です。この実行結果のエラー判定をするときは「$wpdb->last_error」の中を見ると良いです。コードは下記…

【javascript】モバイル画面で慣性スクロール中に画面をピタッと止める方法!

モバイルで、画面を縦にスクロールすると、慣性がついてスルーッと移動しますよね。あれを、移動中にピタッと止める方法です。下記のサイトでかなり無茶な方法で実装しています。 https://jsfiddle.net/prud/umr0qegs/基本的なコードは以下のような感じ(jQue…

【PHP】Safariアクセス時にURLをゲットすると日本語エンコード部分が大文字になっている!

先ほどちょっといやな現象に悩まされてしまいました・・。iPhoneの「Safari」でPHPサーバにアクセスをして、サーバ側で「$_SERVER」を参照して、ページのURLを取得したんです。コードは以下のような感じ。 $current_url = (is_ssl() ? 'https' : 'http') . '…

Safariで上部固定のメニューバーがうまく表示されない!

画面スクロールに追随して、上部に固定表示されるメニューバーってありますよね?あれを作成してみたんですが、「ウィンドウズ用Safari」のブラウザでうまく表示されなくて、困ってしまいました。メニューのフレーム自体はちゃんと上部に固定表示されるんで…

Barba.jsで指定したページをプリロードする!

Pjaxを使ってゴリゴリと画面遷移するページが作れる便利なライブラリ「Barba.js」このBarba.jsで、指定したURLのページをプリロードしてキャッシュさせる方法です!下記のようなコードでできます! //読み込むページのURL var url = "http://hogege.com/page…

【PHP】Simple HTML DOM Parserでゲットした要素が目当てのclassを保持しているか確認!

HTMLの要素を操作できる便利なDOMパーサ「PHP Simple HTML DOM Parser」これを使ってゲットしたDOM要素が、お目当てのclassを保持しているかどうかを確認する方法です。 //ライブラリ読み込み! require_once ('/simple_html_dom.php'); //テスト用のHTMLを…

ツイッターAPIの仕様変更、急にログインができなくなったゾ!

先日、我がサイトのTwitterログイン機能が急に使用不能になってしまってあせりました・・。Twitter APIが下記のようなエラーを返して認証を受け付けてくれなくなってしまいました・・。 "code":415,"message":"Callback URL not approved for this client ap…

【PHP】ライブドアブログに「AtomPub API 」使って記事投稿・画像投稿!

PHPを使ってライブドアブログに記事を投稿する方法です!「AtomPub API 」というのを使ってリモートのサーバーから投稿します! 投稿処理には「HTTP_Request2」が必要なので、あらかじめサーバーにインストールしておいてください! ↓ HTTP_Request2のインス…

skypeでいきなり「チャットはご利用いただけません」と表示されチャットできなくなった!

先日Skypeでチャットをしていたら、いきなり入力欄に「チャットはご利用いただけません」と表示されて、チャットが不能になってしまいました・・(Windows版のスカイプです)つい昨日までは当たり前のように使えていたのに、今日PCを起動したらこのような…

JavascriptでURLエンコードした文字列がPHPでデコードできない!

タイトルそのままの不具合です・・。javascript側でURLエンコードした文字列がPHP側でデコードできない・・。javascript側では「escape()」という関数でエンコードしました。 そして、PHP側では「urldecode()」という関数でデコードしました。 でも、これで…

Font Awesomeを使ってツイッターのアイコンを作る!

いろんなWebアイコンフォントが無料で使える便利なライブラリ「Font Awesome」を使って、ツイッターの青い鳥のアイコンを作ってみましょう。①ライブラリの読み込み! まずはFont Awesomeのcssのライブラリを読み込みます。下記ページのCDNで提供されているも…

【PHP】AWSでhtmlをphpとして実行したいんだけどできない!

この前借りたAWSサーバーで「index.html」というページを「index.php」として実行したかったんですが、なかなか設定がうまくいきませんでした・・。(ちなみにPHPのバージョンは5.6です・・)これをやるときの典型的な方法は「.htaccess」に以下のような設定…

【CakePHP3】APIを作ろうとしてエラーが出て混乱の極み…。

CakePHP3でAPIを作ろうと思ってちょっと苦労をしてしまいました・・。クライアンからajaxでリクエストを送ると、なにかデータを返してくれるという簡単なものを作ろうとしたんですが、 CakePHPのエラーログに「Controller action can only return an instanc…

【PHP】ツイッターのテキスト内の「@ユーザー名」の文字列を削除する!

PHPの正規表現置換関数「preg_replace」を使ってつぶやきテキスト内の「@ユーザー名」を削除する方法です。コードは以下のような感じ。「@hogehoge(+空白)」や「@fagafaga(+空白)」の文字列を置換によって削除します。 $test_str = "@hogehoge @fagafaga ツ…

グーグルマップのウィンドウにFacebookのボタンを動的追加すると画面がずれる!

すっごい細かい問題に直面してしばらく悩んでしまいました…。グーグルマップのマーカーをクリックしたときに開かれる「インフォ・ウィンドウ」ってありますよね…。あのウィンドウが表示されたあと、その内側に「Facebookのシェアボタン」を動的に追加する処…

【Javascript】マーカークラスタが「greedy」モードのときクリックが効かない!

さいきん大島てるさんのような、グーグルマップ上に情報を表示するサイトを作っているんですが、どうもマーカーのクラスタリング処理に不具合らしきものを見つけてしまいました・・。クラスタリング処理とは、地図上にたくさんマーカーがあるときにまとめて…

【PHP】ツイッターAPIから得たつぶやき時刻と現在時刻の差分をとる!

Twitter APIで取得したつぶやき時刻「created_at」と現在時刻の差分を計算してみます。 created_atの内容をいったんUNIX時間に変換してから、現在のUNIX時間と差分をとっています。 この結果を3600で割り算をすると、経過時間(時)を計算することができます…

【PHP】TwitterのURLからアカウント名を正規表現で抜き出す!

ツイッターのURLの中にあるアカウント名の文字列を、PHPの正規表現(preg_match)によって取得する方法です。つまり、「https://twitter.com/hogege/status/1234567890」とか、「https://twitter.com/hogege/」というURLの中の「hogege」の部分を抜き出すと…

【PHP】DB操作ライブラリ「idiorm」で最大IDのレコードを取得する

データベースを操作するためのPHPライブラリ「idiorm」で一番IDが大きなレコードを取得するときの方法です。コードは以下。 require_once("./idiorm.php"); ORM::configure('sqlite:データベースのパス'); ORM::configure('id_column', 'DBの主キーの名前');…

ツイッターの開発者ページ・API用の各種鍵を確認。

ツイッターの開発者用のページでAPIの「consumerKey」「consumerSecret」「accessToken」「accessTokenSecret」などを確認したかったんですが、驚くべきことに検索しても全然URLが出てこない…。ここで確認できるんですよ、ここ。 ↓ Twitter Application Mana…

【mySQL+PHP】Google Mapの緯度・経度の情報がずれてしまった。

PHP+mySQLの環境で「Google MAP」の位置情報を格納する処理を作っているんですが、DBに格納すると位置情報が微妙にズレてしまうんです・・。何が悪いのかと原因を探ってみたら、どうもSQLのデータ型がよくなかったみたいです・・。私は「latitude(緯度)」…

AGデスクトップレコーダーが開始処理中となって動かない!

「AGデスクトップレコーダー」というデスクトップ画面をキャプチャできる便利なソフトがあります(このソフトです!) ↓ AG-デスクトップレコーダー ダウンロードページこのソフトはPCのキャプチャ動画をツイッターにアップロードするときにめちゃくちゃ役…

PHPで全部nullで埋められたn個の配列を生成する!

PHPで全部nullで埋められた配列(n個)を生成する方法です。「array_fill」という関数を使うと簡単にできます。以下のコードでは「インデックス0」を先頭にして、10個分の配列を生成してくれます。中身は全部nullで埋められてます。 $test_array = array_fil…

PHPで2chの書き込みIDのような文字列を生成するアルゴリズム!

PHPで2chの書き込みID風のユニークな文字列を生成するアルゴリズムです。以下のような感じのやつを出力します。 ↓ 「id:kh9D1A2c」 コメント投稿者の「IPアドレス」と「書き込み時刻」を連結した文字列をsha1-hmacでハッシュ化します。 同じ日付で同じIPアド…

ツイッター広告で自分のツイートが表示されない!

先ほどツイッター広告の「ツイートのエンゲージメント」という機能を使って広告を打とうとしたのですが、困ったことが起きてしまいました…。「クリエイティブを選択」の画面で自分のツイートを選択しようとしたのですけども、自分が先ほどつぶやいた一番最新…

【CakePHP3】Shellでデータを追加しようとしたらエラー発生!

CakePHP3でシェルを叩いて実験用のレコードを追加しようとしたら、以下のようなエラーが発生しました。 $ ./cake DataAdd Warning Error: /var/www/hogegege/tmp/cache/persistent/ is not writable in [/var/www/hogegege/vendor/cakephp/cakephp/src/Cache…

Twitter BootstrapのツールチップでAリンクを無効にする!

ツイッター・ブートストラップに「Tooltip」という機能があります。これを使うと、例えば「ヘルプ」みたいな文章にマウスをフォーカスすると、フワっと覆いかぶさるように説明文が表示される、とってもかっこいい効果ができます。使い方は以下のような感じで…