やったこと

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

このブログについて

absgといいます。webサービスのこととかいろいろ書いてます。■最近作ったサイト ・みんなでなかよく政治の話!「なかよし討議!」 ・女子のつぶやきまとめ「Twiggy×Twiggy!」 ・もブログ ・ツイッターバトラーズ! ・ニコニコ人気ユーザーランキング ■連絡…

twitter_idからプロフィールページにアクセスする方法!

あまりないケースだと思うのですが、ツイッターIDが分かっているけどもそのアカウントのページが分からない。そういうときは、以下のURLにアクセスすると本人のプロフィールページを見ることができます。https://twitter.com/intent/user?user_id=xxxxxxxx※x…

スパムメールに書いてあるURLをクリックしてはいけない!

最近ケータイに「スパムメール」をたくさん送り付けられていて困っています・・。受信したスパムメールの中には、「あなたに6億円をプレゼントします!」とか「〇〇ですけどメアドを変えました!」とか「セフレになってくれませんか?」とか、いろんな意味不…

【PHP】YoutubeのURLの動画ナンバーを正規表現で抜き出す!

youtubeのURLの中にある動画番号を、PHPの正規表現(preg_match)によって取得する方法です。つまり、「https://www.youtube.com/watch?v=B3o9h0RFw-c」というURLの中の「B3o9h0RFw-c」の部分を抜き出すということです。以下のようなPHPコードを実行すると、 …

【AWS】EC2サーバーにボリュームをアタッチしたら起動しない!

アマゾンのEC2サーバー(t2.medium)にボリュームをアタッチして起動しようとしたら、エラーが発生して怒られてしまいました・・。エラー文は以下のようなものです。 インスタンス開始のエラー Invalid value 'i-hogegehogegehogege' for instanceId. Instan…

【jQuery】spanタグをテキストを残して削除する!

「spanタグ」の中身のテキストを残してタグをだけを消去する方法です。以下のような「spanタグ」があったとします。 <span class="hogespan">ほげ~</span> これをjQueryの「unwrap」を使って削除します。一旦中身のコンテンツを選択して、その外側の要素を削除するという作戦です。 //jQue…

【CakePHP3】マイグレーション機能でカラムの定義を変更する!

CakePHP3のMigrations機能でカラムの定義を変更する方法です。①マイグレーションファイルを作る 以下のようにbakeコマンドを打って「ChangeComment」などというマイグレーションファイルを作ります。 ./bin/cake bake migration ChangeCommentコマンド打つと…

【git】既存のプロジェクトからコードをそのままに新プロジェクトに移行!

gitの話なんですけも、「今進行中のプロジェクト」から、コードはそのままで「新プロジェクト」を開始する方法です。■サーバ側作業 まずはサーバー側で「新プロジェクト」のファイルを作ります。プロジェクトファイルが格納されているディレクトリで、新プロ…

ツイッターでフォローが全部外れてしまったとき!

先日、私のツイッターアカウントのフォローが全部外れてしまう現象に出くわしました・・。私のアカウントは宣伝用に使っているもので、誰かれ構わずやたらとフォロー爆撃をしまくっているなんともはた迷惑なものなんですけども、ちょっとやりすぎてしまった…

【CakePHP3】Paginator機能で総ページ数を取得する!

CakePHP3の「ページネーション機能」を使うと、簡単にページ遷移のためのボタンを実装することができます。ページネーション機能の公式ヘルプ: https://book.cakephp.org/3.0/ja/controllers/components/pagination.html ビュー・テンプレート内で「ページ…

ロードバランサー(ELB)の設定が悪くてツイッターログインが失敗!

先日私のサイトでwebサーバーを二台に冗長する作業を実施したところ、ユーザーの「ツイッターログイン」が失敗する不具合が起きるようになってしまいました・・。 私のサイトはアマゾンのAWSサーバーを使っているんですけども、どうもAWSの「ロードバランサ…

【cakePHP3】paginaterの「limit」値を後から変更する!

cakePHP3のページネーション処理は「pagenater」を使うと簡単に実装できます。https://book.cakephp.org/3.0/ja/controllers/components/pagination.html公式ページを見ると、ページに表示するコンテンツの行数(litmi)は、以下のように初期設定することが…

アマゾンAWSで「php-devel」をインストールする!

アマゾンのEC2サーバーで「phpize」のコマンドを使おうとしたら、以下のようなエラーが出て怒られてしまいました。 #phpize Can't find PHP headers in /usr/include/php/5.6/php The php-devel package is required for use of this command. どうも「php-d…

【PHP】idiormでデータを全クリアしたい場合!

DBを操作できるPHPライブラリ「idiorm」で、テーブルのデータを全削除して真っ白にするための方法です。以下のように「delete_many()」を使うとテーブルを真っ白に削除することができます。 //tweetsテーブルを空にする $records = ORM::for_table('tweets')…

【PHP】idiormで「以上」や「以下」の条件式を使って検索!

簡単にDBを操作できるPHPライブラリ「idiorm」で、whereの条件式を使って「~以上」や「~以下」の値のレコードを検索する方法です。以下のようなPHPコード実行すると、各条件でレコードを検索できます。 //idiorm読み込み! require_once dirname(__FILE__)…

【PHP】idiormでSQlite3のDBをVACUUMする方法!

簡単にDBを操作できるPHPライブラリ「idiorm」で、SQLite3のDBをバキュームする方法です。以下のようなPHPコード実行すると、DBをバキュームすることができます。 //idiorm読み込み! require_once dirname(__FILE__).'/lib/idiorm/idiorm.php'; //DBファイ…

Phirehoseを使ってTwitter Streaming APIでツイートを取得してみた!

「Phirehose」というPHPライブラリを使って「Twitter Streaming API」のリアルタイムのツイートを取得してみました。以下その手順です。 ■「Phirehose」をインストール!以下のGithubの「Phirehose」のページからファイルをダウンロードして、zipを解凍して…

【CakePHP3】マイグレーションのDB変更が反映されない!

先日CakePHP3の「Migration機能」で、あるテーブルに変更を加えたんです。以下のような感じで「tweet_type」というカラムをテーブルに追加する変更をやりました。 class AddTweetTypeProducts extends AbstractMigration { public function change() { $tabl…

ツイッターカードの画像が表示されないときはしばらく待つこと!

自分のサイトに「ツイッターカード」をセットすると、サイトをツイートしたときに「画像付き」で表示させることができます。自分のサイトのツイッターカードがうまく機能しているかどうかは、この「カードバリデーター」にURLを入れてチェックすることができ…

【CakePHP3】AWS SDK for PHPでS3サーバーにファイルをアップロード!

「AWS SDK for PHP」というアマゾン公式ライブラリを使うと、PHPを使ってアマゾンのS3サーバーにファイルをアップロード・ダウンロードすることができます。今回は「CakePHP3」でS3サーバーにファイルをアップロードする方法を説明します。 ■「AWS SDK for P…

【Javascript】iPhone Safariで時刻のソートが効かない!

Javascriptを使って、オブジェクトが入ってる配列を「時刻文字列」順にソートしようとしたんです。そうしたら、PCの「Chrome」ではちゃんと動作したコードが「iPhone Safari」では動作しませんでした・・。コードは以下のようなもの(time_listの配下にある…

【CakePHP3】Layoutファイルの中でConfigureのパラメータを参照する!

CakePHP3の話なんですが、「/config/bootstrap.php」内で、全ての箇所から呼び出し可能な「グローバル変数」を定義することができます。定義の仕方は以下のようにします(hogegeという変数を定義しています) //定数を定義 Configure::write('hogege', 'hoge…

Wi-Fiの調子が悪かったけどチャンネル幅の設定をいじったら直った!

ずっとWi-Fiの通信が不安定だったんですけど、ルーターの設定をいじったらだいぶ良くなりました。親ルーターは「PR-500KI」というNTTの装置で、無線の子機はエレコムの「WDC-300SU2S」という安いUSBのアダプタです。親ルーターの「チャネル帯域」という設定…

グーグル広告にボットが潜んでいてアクセス数が回りまくってしまう!

先日変な問題が起きて、頭を悩まされてしまいました・・。私のサイトにアクセスすると、アクセスカウンターが二回加算されてしまうという問題です。この問題、どうもグーグルアドセンスを張っているときに発生する様子です。ページ中のグーグル広告が読み込…

Twitter APIで取得したつぶやきが「truncated=true」で切れてしまう!

この前ツイッターAPIでつぶやきを取得したら、長いつぶやきの全文を取得できませんでした。つぶやきの末尾が「・・・」となってしまって省略されてしまっていたんです(truncatedというフィールドにはtrueがセットされていました・・)最近ツイッター公式側…

MySQLのデータをインポートしようとしたらエラー発生!

MySQLのデータベースをデバッグ試験用のものに差し替えようとして、「phpMyAdmin」でDBインポートをしたら「multiple primary key defined in mysql」とエラーが出て怒られてしまいました・・。どうも「主キーが複数設定されている」といって怒っている様子…

【CakePHP3】テーブルを完全初期化してリセットする方法!

CakePHP3でMySQLテーブルのレコードを削除して真っ白に初期化する方法です。これをするとテーブルのIDインクリメント情報も初期化されます。 //コネクションマネージャーを宣言 use Cake\Datasource\ConnectionManager; //テーブル内を真っ白に削除 $connect…

ツイッターカードのサムネイルはツイッターにアップされた画像は使えない!

webサイトに埋め込む「TwitterCard」の情報ってありますよね?以下のような感じでhtmlに記載する、ページがつぶやかれた時にかっこよい形式で表示してくれるやつです。 <meta name="twitter:card" content="summary"> <meta name="twitter:description" content="ホゲゲ"> <meta name="twitter:title" content="ホゲゲゲゲ>"> </meta></meta></meta>

Twitterフォームの電話番号の記入の仕方!

ツイッターで新規アカウントを作るときに入れる、電話番号の入力方法です。もしあなたの番号が「080-1234-5678」だったとしたら、入力フォームの「+81」のあとに「8012345678」と入れればOKです(先頭の0を一個省いて入れるんですね)以上!

【CakePHP3】EC2サーバーからRDSに接続するときのhost設定は?

アマゾンAWSのEC2サーバにCakePHP3を設置して、RDSサーバー(DBサーバー)に接続しようと思ったんですけど、CakePHPの「app.php」の設定にちょっと迷ってしまいました・・。「Datasources」の「host」項目ってどうやって入力すればいいんでしょうかね・・?…

ムームードメインで「管理者情報の町村/番地が不正です」って怒られる

ムームードメインの設定で「WHOIS情報の変更」をしようとすると「管理者情報の町村/番地が不正です」とエラーが出て怒られてしまいました・・。この原因はおそらく「個人設定 - ユーザー登録情報」の設定が間違ってるせいです。この項目の「お客様情報」の入…

【CakePHP3】サイトにrobots.txtを設置する!

CakePHP3のサイトに「robots.txt」を設置する方法です。やり方はめっちゃ簡単。「/webroot」のディレクトリ直下に「robots.txt」を作成して置いておくだけです。これでブラウザからあなたのサイト「http://hogegege/robots.txt」にアクセスすると、robots.tx…

【CakePHP3】ページタイトルの設定方法!

CakePHP3でページタイトルを設定する方法です!以下のようにするとページタイトルを出力できます。 //ビューやコントローラー内で指定 $this->set('title', 'Test Page Title!'); //レイアウトファイルなどでタイトル出力 <title><?= $title ?></title>ちょう簡単ですね・・…

【CakePHP3】ページネーション処理にキャッシュを効かせる!

CakePHP3の「ページネーション処理(Paginate機能)」の結果をキャッシュとして保存する方法です。以下のように「検索クエリ」作成時に検索結果をキャッシュ保存する旨を書き込んでおきます。 //クエリを作成 $query = $this->Tweets->find() ->where(['post_i…

Facebookページで個人名を表示させない(非公開)にする!

Facebookには「個人ページ」と「Facebookページ」という二種類のページがあります。 ・「個人ページ」とは、あなた個人がお友達などと交流するためのページです。 ・「Facebookページ」とは、企業などが宣伝・告知用とかに作るページです。 「Facebookページ…

【CakePHP3】エレメントのキャッシュが削除できない!

CakePHP3(ver3.1)で、エレメントの表示内容をキャッシュ(ファイルキャッシュ形式です)したのですが、うまく削除できません・・。例えば以下のように、エレメントの呼び出し時にキャッシュ保存をするとします(キーは「test_post270」) element('comment…

【CakePHP3】リファラー(アクセス元URL)を取得する!

CakePHP3では以下の方法でアクセス元のURLを取得できます(めっちゃかんたんですね) //アクセス元URL取得 $url = $this->referer(); //リダイレクトする場合はこう $this->redirect($url);以上!

【javascript】途中でvar変数宣言すると値がundefinedになってしまう!

javascriptを書いていてつまづいてしまいました・・。以下のような処理を書いたんです。グローバル変数「twitter_id」が存在しないときに、ローカル変数として同じ名前で変数を用意するという処理です(なんだか臭いコードですねこれは・・) if(typeof twit…

【CakPHP3】クリアしてもキャッシュが消えない!

CakPHP3のキャッシュ機能の話です。「app.php」に以下のような感じの設定をして、キャッシュをwriteコマンドで保存してみたんです(キャッシュファイルは「/tmp/cache/hogege/」に保存されます) 'Cache' => [ 'test' => [ 'className' => 'File', 'duration…

【CakePHP3】PCかモバイルか判定する方法!

CakePHP3でユーザーがPCかモバイルかを判定する方法です。お好きなコントローラー内で以下のようにして判定できます。超簡単ですね・・。 if($this->request->is('mobile')){ $this->viewBuilder()->layout('モバイル用レイアウト'); }else{ $this->viewBu…

【CakePHP3】Cellを使って画面表示する!

CakePHP3の「Cell機能」の使いかたです。「Cell」を使うとテーブルを呼び出したり、いろいろデータを加工できたりして、「Element」よりもリッチな画面表示ができます。以下手順です。①アクション部分を作成 「/View/Cell/Hogege/」というディレクトリを新し…

Twitter Bootstrapでボタン型のリンクを設置する!

「ツイッター・ブートストラップ」で、他ページへのリンクを「ボタン」を使って行う方法です。以下のように「<a>タグ」に「btnクラス」をセットすると、リンクがボタン状になります。 <a href="http://hogege.com" class="btn btn-default btn-sm" role="button">他のページに遷移!</a> ボタンを中央よせにしたい場合は、以下のように「<div class="text-center">」で囲</div></a>…

【CakePHP3】独自のエラーログを出力するコンポーネントを作成!

CakePHP3で、自分専用のファイルにログを出力するコンポーネントを作ってみました。 以下、その手順です。①「app.php」を修正! 「app.php」に新しく「myerr」というオリジナルログを追加します。 'Log' => [ 'debug' => [ 'className' => 'Cake\Log\Engine\…

【cakePHP3】例外発生時にテンプレートに変数を渡す!

CakePHP3の話なんですが、コントローラー内で例外処理を発生させると「error400.ctp」や「error500.ctp」といったテンプレートファイルが呼ばれてエラー画面が表示されますよね。あのテンプレートに変数を渡す方法です。以下のように[]の中に変数を記述する…

【CakePHP3】コントローラー内でURLやドメインを取得する!

CakePHP3のControllerの中で、ドメインやURLを取得する方法です。以下「http://hogege.com/testpage/」というページ内で処理を行った例です。 use Cake\Routing\Router; class TestpageController extends AppController { public function display() { /…

TwitterBoostrapで「center-block」が効かない!

cssライブラリの「ツイッター・ブートストラップ」の話ですが、ブロック要素を真ん中に寄せる「center-block」ってありますよね。あれをセットしても全然中央寄せにならなくて困っていたのですが、理由が判明しました・・。真ん中に寄せたい要素のcssに「mar…

sqlite3のvacuumの仕方!

sqlite3のvacuumの方法はいたってシンプルです。以下のようにプロンプトでvacuumコマンドを実行すると「hogege.db」の余分な領域がバキュームされます。 sqlite3 hogege.db vacuum以上

【CakePHP3】エンティティから「テーブル名」をゲットする!

CakePHP3では、テーブルに格納するデータは「entity」というオブジェクトで表されます。この「entity」から「テーブル名」を取得するには「source()」メソッドを使います。例えば、以下のようにすると「$table_name」にテーブル名「Authors」の文字列がゲッ…

【jquery】画像が表示エラーとなったときに代わりの画像を表示する!

「img要素」で画像を表示しようとしたら、画像がすでになくなってきて「×」マークが表示されてしまう、こんなことってありますよね。こういうときに、自前で用意した「NOT FOUND!」みたいな画像とすり替えて表示できたら、とっても便利です。jqueryで以下の…

box-shadowを使うと内側の要素のmarginが効かなくなる!

cssの「box-shadow」を使ってdiv要素に影を付けてみたんです。↓こんな感じのcss設定です。 .test-div { width: 100px; height: 100px; box-shadow: 0 2px #ff0000; }この「test-div」の中に「p要素」で文章を書いて、p要素を「margin-top」で高さを調整しよ…