やったこと

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

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

ずっとWi-Fiの通信が不安定だったんですけど、ルーターの設定をいじったらだいぶ良くなりました。

ルーターは「PR-500KI」というNTTの装置で、無線の子機はエレコムの「WDC-300SU2S」という安いUSBのアダプタです。

ルーターの「チャネル帯域」という設定を「40MHz」から「20MHz」に直したら、かなり具合が良くなりました。

チャネル帯域が40MHzだと、チャネルボンディングという技術を使っていて高速な通信ができるんですけど、お隣さんの無線と干渉しやすくなってしまう欠点があるんだそうです。

私の無線の使用チャネルは「6番」で、お隣りさんの無線の使用チャネルは「1番」だったんですけど、おそらくこれだと干渉が起きてしまっていたんだと思いますね。

ルーターの「自動設定モード」でおすすめされたチャネル番号を使っていたんですが、このモードはあまり賢くチャネルを選んではくれないみたいです。

やっぱり最後は人間の手で設定しないといけません。

人間の最後の敵はやはり同じ人間である、ということなんでしょうかね・・(意味不明)

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

先日変な問題が起きて、頭を悩まされてしまいました・・。

私のサイトにアクセスすると、アクセスカウンターが二回加算されてしまうという問題です。

この問題、どうもグーグルアドセンスを張っているときに発生する様子です。

ページ中のグーグル広告が読み込まれたタイミングで、サイトになんらかのボットからアクセスが来て、カウンターを回していってしまう、という現象が起きているみたいでした。

ボットのユーザーエージェントを調べてみると、以下のような奴がアクセスにきてました(いかにもあやしい名前ですね・・)

Mozilla/5.0 (compatible; proximic; +http://www.proximic.com/info/spider.php)

この不具合の対応どうすればいいでしょうかね、とりあえずこのユーザーエージェントがアクセスしてきたときは、カウンタを回さないようにすればいいでしょうか。でも、他の種類のボットがアクセスしてきたときはどうすればいいんでしょうか・・?

アクセスカウンターって意外と作るの難しいんですね、こういう変なアクセスはちゃんと遮断しないといけない。

ちょっぴり実装を舐めていました・・。

以上です!

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

この前ツイッターAPIでつぶやきを取得したら、長いつぶやきの全文を取得できませんでした。

つぶやきの末尾が「・・・」となってしまって省略されてしまっていたんです(truncatedというフィールドにはtrueがセットされていました・・)

最近ツイッター公式側の対応で、長いつぶやきはちょん切れて、省略されてしまう仕様になったそうです。

Upcoming changes to Tweets — Twitter Developers

省略されていないつぶやきを取得するためには、ツイッターAPIのURLの最後に「tweet_mode=extended」というクエリーを付けること。

すなわち「https://api.twitter.com/1.1/statuses/show.json?tweet_mode=extended

といったURLに要求を送ると「text」フィールドの代わりに「full_text」というフィールドが用意されて、そこに省略されていないつぶやきが格納されているそうです。

私はツイッターAPIを使うときに「TwitterOAuth」というライブラリを使っているんですが、例えば「TwitterOAuth」で長文つぶやきを取得するときは、以下のようになります。

  $oauth_access_token = "hogegegegege";
  $oauth_access_token_secret = "fugagagagagaga";
  $consumer_key = "abcdefghijklmnopqrstuvxxyz";
  $consumer_secret = "testestestestestes";

  $connection = new TwitterOAuth($consumer_key,$consumer_secret,$oauth_access_token,$oauth_access_token_secret);
  $result = $connection->get("statuses/show", array("id" => "123456789", "tweet_mode" => "extended"));


「TwitterOAuth」のインストールの仕方は、私が以前書いた記事をご参照ください。
twitteroauthの使い方(2015年3月時点) - やったこと

以上です。

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

MySQLのデータベースをデバッグ試験用のものに差し替えようとして、「phpMyAdmin」でDBインポートをしたら

「multiple primary key defined in mysql

とエラーが出て怒られてしまいました・・。

どうも「主キーが複数設定されている」といって怒っている様子です(主キーは一個しか設定してないんですけど変ですね・・)

こういうときは、問題となっているテーブルをドロップで削除してあげることです。

phpMyAdminの「テーブル削除」ボタンを押してエラーになるテーブルを削除をしてあげたら、ちゃんとインポート成功しました。
(テーブルは再作成されます)

よかったよかった。

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

CakePHP3でMySQLテーブルのレコードを削除して真っ白に初期化する方法です。

これをするとテーブルのIDインクリメント情報も初期化されます。

//コネクションマネージャーを宣言
use Cake\Datasource\ConnectionManager;

//テーブル内を真っ白に削除
$connection = ConnectionManager::get('default');
$results = $connection->execute('TRUNCATE TABLE テーブル名'); 

「テーブル名」を指定するときは、ちゃんとMySQLで宣言している名前を入れるようにご注意ください。

CakePHPだと「TwitterUsers」とか表現するテーブルも、MySQLだと「twitter_users」という名前のはずですからね。

以上!

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

webサイトに埋め込む「TwitterCard」の情報ってありますよね?

以下のような感じでhtmlに記載する、ページがつぶやかれた時にかっこよい形式で表示してくれるやつです。

  <!-- Twitter Card -->
  <meta name="twitter:card" content="summary">
  <meta name="twitter:description" content="ホゲゲ">
  <meta name="twitter:title" content="ホゲゲゲゲ>">
  <meta name="twitter:url" content="http://hogege.net">
  <meta name="twitter:image" content="http://hogege.net/img/hoge.jpg">
  <meta name="twitter:domain" content="hogege.net">
  <meta name="twitter:creator" content="@hogehoge">
  <meta name="twitter:site" content="@hogehoge">
  <!-- /Twitter Card -->


上記のアイキャッチ画像を指定する「image」の項目って、どうもツイッターにアップされた画像は使えないみたいですね(pbs.twimg.comの画像を指定すると灰色画像になって表示されませんでした・・)

pbs.twimg.com」にある画像を使いたいときは、自前で画像をコピーしてどこかのサーバーに用意するしかなさそうですね、とっても残念です・・。

以上!

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

ツイッターで新規アカウントを作るときに入れる、電話番号の入力方法です。

もしあなたの番号が「080-1234-5678」だったとしたら、入力フォームの「+81」のあとに「8012345678」と入れればOKです(先頭の0を一個省いて入れるんですね)

以上!