やったこと

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

word-breakの折り返しがひどい件!

cssの「word-break: break-all;」を使って文章を折り返したかったのですが、一部のケースで折り返しをうまくやってくれないみたいです・・。例えば以下のようなhtmlを記述します。 <div class="test_div"> <p class="test_p">ワロタwwwwwwwwwwwwwww!!!!!!!!!!!!!!!</p> </div> そ…

【CakePHP3】テーブルの中の全データを削除する!

CakePHP3でModelの中の全レコードを削除する方法です。以下のようにDeleteAllに全マッチする条件(idが0以上)を指定してあげると、「TableHogege」の中の全レコードが削除されます。 //全レコード削除 $this->TableHogege = TableRegistry::get('TableHogeg…

【CakePHP3】Shellの中でデバッグログを出力する!

CakePHP3のシェルの処理の中で、デバッグログを書き出す方法です。普通に以下のように「$This->log()」を使って出力できます。 class TestShell extends Shell { public function testes(){ $this->log("test dayo", "debug"); } }シェル実行コマンド「/bin/…

【CakePHP3】containでデータ取得しようとしたらエラーになってしまった!

CakePHP3の話ですけども、テーブルからデータを取得するとき「contain」によって別テーブルからもデータを取得できますよね。以下のコードでは「DraftPosts」テーブルと「Posts」テーブルから同時にデータをゲットしています。 public function initialize()…

【CakePHP3】クッキーが書きこめるけど読み込めない!

CakePHP3でCookieの「書き込み」はできるのに「読み込み」はできない困った事態に出くわしてしまいました。この原因は簡単なことでした。Cookieの書き込み時は「$this->Cookie->config()」で設定をセットしていたんですが、読み込みのときにこれを忘れていた…

【CakePHP3】異なるテーブル間でデータをコピーする!

CakePHP3で、あるテーブルのデータを別のテーブルにコピーする形でセーブする方法です。以下、「Draft_posts」テーブルのデータを「Posts」テーブルにコピーしています。 (※この二つのテーブルは全く同じ構造をしています) try{ //コピー元のデータを取得 …

GETメッセージのクエリパラメータのフォーマット!

HTTPのGETメッセージの後ろには、下記のように「?」や「&」でいろんなクエリパラメータを付けられます。「http://hogege.jp/param.php?age=100」(パラメータ一個だけの場合) 「http://hogege.jp/param.php?age=100&weight=120&height=200」(パラメータ3…

【CakePHP3】コントローラーからテンプレートに変数を渡せないとき!

CakePHP3でコントローラーからテンプレートへ「$this->set()」で変数を渡そうとしたのですが、なぜか失敗してしまいました・・。原因は「$this->render('xxxx')」でした。変数をセットする前にレンダーを指定すると、その後変数がセット不能になってしまうみ…

【CakePHP3】絵文字をSQLに保存する方法!

CakePHP3で絵文字が入ったテキストをMySQLに保存しようとしたら、以下のようなエラーが発生してしまいました。 General error: 1366 Incorrect string value:・・・これは文字コードが原因だそうです。絵文字は「utf8mb4」という文字コードじゃないと保存で…

MySQLのログインコマンド

久しぶりにMySQLにログインしようとしたらコマンドが分からなくなっちゃった・・。以下、ユーザ名「root」、パスワード「hogehogehoge」でログインするときのコマンド。 「mysql -u root -phogehogehoge」おそろしいことに、こんなコマンドが検索でなかなか…

【CakePHP3】ページネーション処理でエラーを補足できない!

CakePHP3に「Paginate処理」ってありますよね?たくさん記事を表示するときに、URLに「?page=1」「?page=2」みたいのを付けて、自動でページをうまく分割表示してくれる機能です。(公式ページ:「ページネーション」)ページネーション機能で記事が存在しな…

【CakePHP3】データを暗号化してテーブルに保存する!

CakePHP3でデータを暗号化してテーブル(Model)に保存する方法です。以下の「encr()」でデータを暗号化して保存しています。「decr()」ではデータを復号化して表示しています。 use Cake\Utility\Security; use Cake\Core\Configure; class SaveController ex…

【CakePHP3】テーブルに保存するデータをハッシュ化する!

テーブル(Model)にデータを保存するときハッシュ化したいときってありますよね?パスワード情報とかに関する人にバレたらまずいデータです。CakePHP3では「エンティティクラス」にハッシュ化処理を書き込むと、保存するときに自動的にハッシュ化してくれま…

【CakePHP3】エレメントを使って簡単にビュー表示!

CakePHP3の画面レイアウト処理で「エレメント」の機能を使うと便利です。エレメントとは、画面デザインのパーツを再利用できるように定義できる機能です。例えば「display.ctp」で以下のような画面レイアウトを記述していたとします。 <div class="masthead"> <p>ヘッダーだよ!(;)</p> </div>

【CakePHP3】Authコンポーネントを使うと勝手にログインページに遷移してしまう!

CakePHP3でAuthコンポーネントを使う際に困ってしまいました。トップページでユーザーがログインしているかどうか確認する処理を書いていたのですが、なぜかトップページへアクセスするとログインページに自動的に遷移してしまうのです・・。原因は「$this->…

【CakePHP3】Tableクラスの中でデバッグログを出す方法!

CakePHP3の「Tableクラス」の処理の中で、デバッグログを出力したいときってありますよね。「Controllerクラス」の中では、以下のような呼び出しでログを出力することができました。 ("/logs/debug.log"にログが書かれます) $this->log("hogege testes", "d…

【CakePHP3】bakeコマンドでModelを生成!

CakePHP3で「Users」という名前のModelを生成するコマンドですCakephpのディレクトリで以下のコマンドを実行 「./bin/cake bake model Users」これで「/Model/Entity/」や「/Model/Tabble/」にUsersテーブルに関連するファイルが生成されます以上

Wordpressを踏み台にしてグーグルアカウントが不正アクセスされた!?

今朝ちょっと不思議なことが起きたので、ブログに書いておきます。朝の7時頃に私のスマホにGoogleからメールが届いたんです。そこには「他のユーザーがあなたのパスワードを使用しました」というタイトルで、不正ログインをブロックした旨が書いてありました…

SiteGuardの「ログインロック機能」が意味わからんちん

ワードプレスのプラグインで「SiteGuard」というのがあります。 これを使うとWPのログイン時に使ういろんなセキュリティ機能を追加することができます。このプラグインの設定で「ログインロック機能」というのがあります。ログイン失敗したIPアドレスを一定…

【CakePHP3】ルーティング設定で複数の引数をアクションに渡す!

CakePHP3のRouting設定でずいぶんつまづいてしまいました・・。例えば以下のようなURLでサイトにアクセスするとしますよね。 http://hogege.com/edit/hoge123/hoge456このときコントローラー側のdisplayアクションに以下のような引数が渡されるようにしたか…

【CakePHP3】ページネーションのデザインを指定したらエラー発生!

CakePHP3には「Pagination機能」というのがありますよね。「前へ」とか「次へ」みたいなボタンを配置して、違うページに遷移する処理を簡単に作れる機能です。 (参考ページ)http://book.cakephp.org/3.0/ja/controllers/components/pagination.htmlあの遷…

ajaxでjsonデータを送るとき連想配列が送信できないケース!

jquery ajaxでjsonのデータを送信しようとしたのですが、データがサーバ側へ届きませんでした(サーバ側で受信すると空になってる)。この原因ですが、送ろうとしているデータが「object型」ではなくて「array型(連想配列)」だったせいみたいです。以下のよ…

Javascriptで配列をオブジェクトに変換する!

Javascriptで配列をオブジェクトに変換する方法です。以下のようにして配列「arr」をobject「obj」に変換できます。 var arr = new Array(); arr["aaa"] = 111; arr["bbb"] = 222; arr["ccc"] = 333; //オブジェクトに変換! var obj = {}; for(key in arr){…

Twitter Bootstrapのラジオボタンを初めからチェック済みにする!

ブートストラップのRadioボタンを最初からチェック済みにする方法です。 <div class="radio"> <label class="radio-inline"> <input type="radio" name="is_publish" id="check_publish" value="yes"checked> 公開 </label> <label class="radio-inline"> <input type="radio" name="is_publish" id="check_unpublish" value="no"> 非公開 </label> </div>こんな風に「…

【CakePHP3】プライマリキーを指定してデータを保存したい!

CakePHP3で、主キー(Primary Key)を指定してデータを保存しようとしたのですが、「Field 'hogehoge_id' doesn't have a default value」とエラーが出て保存失敗してしまいました・・。コードは以下のようなもの。 $tweet_info->hogege_id = 100; //主キー…

【CakePHP3】existsInチェックはレコードの存在を確認するチェックだよ!

CakePHP3に「existsIn」チェックってありますよね。Modelでデータを変更するときに走るチェック処理です。テーブル設定ファイルの「buildRules」のとこに書いてありますよね。私このチェックの意味を勘違いしていました。これはテーブルの構造(フィールドの…

Twitterのアンケート内容はAPIで取得できない!

ツイッターにアンケート機能ってありますよね。つぶやきの中でフォロワーの人達に投票を呼びかけることが出来る機能です。あのアンケート内容ですが、今のところAPIで取得することはできません。通常、つぶやき中の「画像」や「動画」といったメディア情報は…

Twitterの埋め込み動画がうまく表示されないとき!

ツイッターの埋め込み動画を自分のサイトに載せようとしたのですが、なかなか苦労してしまいました・・。下記の「Twitter oembed API」によって埋め込みコードを取得して、それをサイトにjqueryで動的に追加しようとしたのですが、なかなか上手くいきません…

ツイッターの絵文字が化けてしまってうまく表示されないとき!

Twitterには絵文字を使える機能があります。「ニコちゃんマーク」とか「ハートマーク」とか、いろいろカラフルな文字が使えます。女子高生とかがよく使っていますよね。あの絵文字ツイート、自分のサイトで表示するときになんだか文字化け?してしまって、モ…

【CakePHP3】containによるデータ取得で主キー以外のバインド条件を指定!

CakePHP3でDBからレコードを検索するときに「contain」という命令がありますよね。以下のような感じの命令です。 $authors = TableRegistry::get('Authors'); $records = $authors->find()->where(['Authors.author_id' => 1234])->contain(['Users']); これ…

【CakePHP3】例外処理 Exception() が使えないとき!

CakePHP3で例外を発生させたいのですが「Exception()」を使おうとすると「Error: Class 'App\Controller\Exception' not found 」とエラーが表示されて使用出来ません。「Exception()」を使うには、下記のように「use \Exception;」しないとダメなんですね~…

【CakePHP3】コンポーネントからテーブルを呼び出す!

CakePHP3でComponentの中からTableを呼び出す方法です。以下のように「TableRegistry::get('Hogege')」といった感じで、Hogegeテーブルを呼び出します。 use Cake\ORM\TableRegistry; class AbababaComponent extends Component { public function check() {…

【CakePHP3】コンポーネントの中からコンポーネントを呼び出す!

CakePHP3でComponentの中から他のComponentを呼び出す方法です。例えば自分で作った「CookieChkComponent」から「CookieComponent」を呼び出すには以下のようにします。 class CookieChkComponent extends Component { //Cookieコンポーネント呼び出し publi…

【CakePHP3】標準クラス「stdClass」を呼びだすとエラーになる!

CakePHP3で空のオブジェクトを作りたくて「stdClass()」を呼び出したんだけどエラーになってしまった・・。CakePHP3では以下のように「\」とグローバルの名前空間を指定しないといけないみたい。下記のようなコードでちゃんとstdClassが使えたよ。 $user = n…

【CakePHP3】RouterでトップページのURLを取得!

CakePHP3でトップページのURLを取得する方法です。下記のように「Router」を利用するとお目当ての階層のURLを生成できます。第二引数をtrueにすると「FULL_BASE_URL」を付けてURLを出力します。 //「http://hogege.com/」を出力 $url = Router::url('/', …

【CakePHP3】SQLから引き出してきた時刻をフォーマットして出力する!

CakePHP3で時刻を所定フォーマットで出力する方法です。たとえば「$tweet->tweet_time」に「DateTime型」の時刻が入っているとします。このとき「i18nFormat()」というメソッドを使うと、「2016-04-27 12:00:00」みたいなフォーマットで時刻を出力できます。…

【Cakephp3】テンプレート内で使うのこの記法→「<?=・・・?>」ってなんなの?

Cakephp3のテンプレート内で「」という記法がよく使われているけども、一体これはなんなんでしょうか。何かの省略形?それとも特別な意味がある表現なのでしょうか?公式によるとこれは「Alternative Echos」という表現。 「」 は 「」と同じ意味だそうです…

【CakePHP3】コントローラーから他の名前のテーブルを参照する!

CakePHP3でControllerからテーブルを参照する方法です。デフォルトでは「$this」の配下にコントローラーと同名のテーブルがあって、それを叩くことでDBを操作できます。 Users->find()->limit(10)->all(); $this…

CakePHP3で日付(Datetime)をMySQLに保存できない!

CakePHP3で時刻(DataTime型)を保存しようと思ったんだけど、なかなかできなくて躓いてしまった・・。下記のようなコードで現在の日時をsaveしようとしたけども、保存されるのは「"0000-00-00 00:00:00"」というMySQLに設定したデフォルト値になってしまう・…

get_comments()でヒットするコメントがないときの 戻り値!

ワードプレスの「ユーザーコメント」を取得する関数に「get_comments()」というものがあります。この関数、ヒットするコメントがなかったときは「空の配列(empty array)」すなわち「array()」が返却されます。公式ヘルプにもちゃんとそう書いてありますね…

ワードプレスRSS出力の「description」文から特定文字を削除!

ワードプレスのRSS出力で「description」のフィールドってありますよね。各記事の概要が記載されるフィールドです。この文章中で「ある特定の文字列」をカットして出力させる方法です。記事に乗せている広告の宣伝文とかが表示されてうざいんですよね、それ…

phpMyAdminの「A_I」ってなんなの?

phpMyAdminのカラムの設定をする箇所で「A_I」っていうチェック項目があります。これは「auto increment」のこと。idを自動的に連番で付けてくれる機能のことですね。「A_I」という文字から「オートインクリメント」は中々連想できないですね、わかりづらい…

CakePHP3でBootstrapのglyphiconが使えないとき!

CakePHP3でTwitter Bootstrap(bootstrap-uiでインストール)を使用してるんだけども、アイコン(glyphicon)が使えなくて困りました。↓こんな感じでハートマークを表示させようとしてもフォントファイルを見つけられません。ふぉんと困った・・。 <span class="glyphicon glyphicon-heart"></span> これは、…

いろんなIPアドレス使い分けて悪い事してる人たち、メッだよ!

最近自分のブログの記事を盗むもうとして、いっぱいクローラーがやってくる。httpdのログを見ていて気づいたのは「153.122.100.0/24」のアドレスが異様に多いこと。このアドレスをwhoisで調べて見ると「株式会社DIX」という会社が管理してるIPアドレスみたい…

WPが突然の「データベース接続確立エラー」!犯人はサーバの再起動!

さくらVPSでWordpress(ワードプレス)のブログをやっているんだけど、突然WPが「データベース接続確立エラー」と表示されてログインできなくなってしまった。昨晩さくらVPSのサーバが突然深夜帯にアクセス不能になったので(震災の影響かな?)、それが関係…

Liveleak(ライブリーク)の動画はスマホで閲覧できる?

ショッキング系の動画が集まる有名サイトLiveleakですが、この動画スマートフォンで閲覧可能です。埋め込み動画の閲覧も、直接サイトで見る事も、両方可能。HTML5のプレイヤーなのでiPhoneでも見られます(当方のiPhone5 Safariで確認!)以上

phpMyAdminの主キーを表すマークと鍵アイコンの意味

「phpMyAdmin」でフィールドが主キー(プライマリキー)として設定されているか確認する方法です。下記の図の赤丸の箇所を見ると分かります。図のようにフィールド名の文字(post_id)に「下線」が表示されている場合、そのフィールドは主キーとして設定され…

CakePHP3を泣きながらインストールした記録

CakePHP3をヒーヒー言いながらなんとかインストールできました(環境はCentOS 6.5)。 いろんなエラーが発生しまくって超めんどくさかった・・。以下頑張りの記録です。 その1「CakePHP3をインストール」 初めにやること、それは下記コマンドを実行してComp…

ランサーズで依頼の仕方が悪くてほとんどお仕事をして貰えなかった件

今ランサーズで人にお仕事を依頼しているんだけども、発注の仕方が悪くてお仕事をほとんどしてもらえていません・・。お仕事期間は一ヶ月間で「好きなだけ作業をしてその作業分だけ報酬を支払う」という形で依頼したたのですが、みんな全く作業をしてくれな…

aviutlでテキストが表示されないとき

「aviutil」で動画を編集しているのですが、「拡張機能」で挿入したテキストが表示されなくて小一時間悩んでしまいました・・。さっきこの理由が分かったのですが、とてつもなくくだらないものでした。それはレイヤーの表示が「オフ」になっていたためです・…