TRY AND ERRΦR

気になったこと、勉強したこと、その他雑記など色々メモしていきます。。

Python-boto3でAWSのEC2インスタンスを立ち上げ、そのPublicIPを取得する

boto3とawscliを入れておく $pip install boto3 $pip install awscliAWSのCredentialsなどをセットする $ aws configure AWS Access Key ID [None]: アクセスキー AWS Secret Access Key [None]: アクセスキーシークレット Default region name [None]: regi…

ChatworkAPIがバージョンアップしました。

ChatworkAPIがv1からv2にバージョンアップしました。help.chatwork.com ユーザー数が増えてmessage_idの桁が足りなくなったみたいな感じか?? 対応としては、基本エンドポイントを変更するくらいです。以前アップしたChatworkのAPIラッパーについてはは修正…

How to check if index is exist in Array or Slice in Golang?

Go

I guess in Golang, there isn't any method to check that index is exist in Slice, for PHP like "isset()". So I take a method I made like below. func isset(arr []string, index int) bool { return (len(arr) > index) }By the way, in Golang when…

In CakePHP3, change just a specific table class's datasource.

If you want to get the Table objects to access to DB without appalently using ConnectionManager, I think you use the "TableRegistry" like following. TableRegistry::get("Yours"); Above then, "default" datasource in app.php is chosen. If you…

google-api-php-clientを使ったOAuth2認証で、セッションを使わずにコールバックを経由しても保持される任意のパラメータをセットする

OAuth2認証において、Googleに認証リクエスト → Google認証画面にてアプリ許可 → コールバック画面に遷移という流れの中で、コールバックをもらった際にどのユーザー(アプリ側の)で認証したかを持ち回る必要があった。 アプリ側で必要となる任意のパラメー…

In the HTML5, "readonly" attribute just works for text fields.

In the HTML5, "readonly" attribute just works for text fields like <input type="text"> or <textarea>... I didn't know about that!For example, in the case of to put an select tag.Like this, it doesn't work as you think. It is editable. <select readonly> <option value="</textarea>…

Cakephp3のShellがcronで動かなかった理由

デイリーの集計絡みのバッチを書いていてちょいはまったのでメモ。 まず、 CakeのShellをcronで叩く際のOfficialの記載はこう 15 0 * * * cd /full/path/to/app && bin/cake myshell myparamこれが動かなかった。 次に試したのは、そもそもcdする必要ないん…

phpQueryでタグの破片などのノイズを除きつつテキストっぽいものだけを取得する。

PHP

とりあえず行き着いた方法をメモします。 htmlによっては、先頭にxmlステートメントが混ざってくる場合が稀にあるので、最初に除去しておく。 さらに、なぜかscriptやstyleの破片などがノイズとして紛れ込むケースが多々あるので、これらも除去。newDocument…

InternetExplorerでjsのメソッドの引数のデフォルト値が使えない

めちゃめちゃあせったー......orzって話です。 function test(a,b=[]) { // IEだとここで落ちる console.log(a) console.log(b) }こういう書き方をするとIEだとスクリプトが落ちる。(ちなみにIE11) Chrome,FFは動きます。とりあえず typeof b == "undefine…

mysqlのレプリケーションでスレーブがreadonlyにならない!!

久々のブログです。。 mysql5.7でmaster-slaveのレプリケーション設定でハマったのでメモ。 slaveをreadonlyにしたかったので、my.cnfに read_only=1を追加しサービス再起動、試しにslaveに更新系のクエリを投げてみたところ、更新できちゃう!! 意味が分か…

CakePHP3でPC/スマホのviewを切り替える方法

CakePHP3を使ってて一番助かったなあと思う機能が、PC/スマホのview切り替えです。実装はめちゃくちゃ簡単。・PC版のviewは通常通りsrc/Templateに作成します。 ・plugins直下にスマホ用のディレクトリを作成(今回は「Sp」というディレクトリを作成) ・p…

Excelでcsvを開いたときに「SYLK:ファイル形式が正しくありません。」という警告が出る件

PHP

ちょっとハマった。。。PHPでDBの取得結果をCSVーDLするスクリプトを書き、実際にDLして開いたところ「SYLK:ファイル形式が正しくありません。」という警告が出ました。 最初は、エンコードやらでなんかおかしなことになったか?と思ったんですが、警告が出…

Python3 with djangoでエクセルで文字化けしないcsvをダウンロードさせる

よくあるcsvダウンロード機能ですが、エクセルで開くことを想定して作らなければいけないケースが多々あると思います。 今回、エクセルで開いた時に日本語が文字化けしないcsvのダウンロード機能をpythonで書いてみます。 使っているフレームワークはDjango…

Buttonタグで勝手にsubmitされる件

ハマった!!!djangoでajaxしようと思ってカリカリ書いてたら何度やっても画面のリロードが走る。 これはdjangoの変な仕様だと決めつけてcsrfらへんを必死に調べたけど手がかりなし。 かれこれ1時間半くらい経った時に、ふと昔同じような件でハマったのを…

PythonのAnacondaってどうなん??

気軽にscrap and buildできるPython3の汎用開発環境を作りたいと思ってDockerfileを書いてみました。dockerfile-for-python-proto/Dockerfile at master · kentaro-a/dockerfile-for-python-proto · GitHub Pythonあまり触ったことないのでモジュルやら何や…

WordPressのAMPプラグインで/ampが真っ白になった件

WordPressのAMPプラグインを入れると一発でAMP化できるらしい、 という噂を聞いて早速試す、、、無事撃沈。 若干ハマったのでメモします。・使ったプラグイン AMP — WordPress Plugins こちらのブログを参考にしたのですが、自分の環境でうまくいきませんで…

mysqlでtinyintがbooleanになる件

mysqlでtinyint(1)を指定したカラムのデータをcakephp3のモジュールで取得した際に、booleanとして扱われて困った。。mysqlのバージョンは5.6.27cakeのバグか?とも思ったんですが、リファレンスを見てみるとちゃんと書いてあった! ・BOOL、BOOLEAN These t…

PHP7三項式まわりが快適すぎる

PHP

PHP7の三項演算あたりを本格的に使ってみましたが、快適すぎてやばいです!あるkeyが存在するかどうかわからない配列をマージするような場合、 いちいちisset()しなくてよくなった!! array_merge( $a['key'] ?? [], $b['key'] ?? [], $c['key'] ?? [], $d…

【Ruby】ChatworkAPI for Ruby

前回、ChatworkAPIクラスのPHP版を公開しましたが、今回Ruby版も作りました。 class Chatwork # イニシャライズ # apiToken: 自身のAPIトークン def initialize(apiToken) tokenHeaderKey = "X-ChatWorkToken: " @apiToken = apiToken # APIトークン @reqHea…

【PHP】ChatworkのAPI使ってみた

チャットワーク(Chatwork)のAPIを使って指定ルームにメッセージを送る PHPのクラスを作ってみました。バッチ処理の結果をチャットワークで見たい、メールの設定がめんどくさい、 みたいなときに使えるかも。。 クラスファイル:Chatwork.php

【PHP】巨大ファイルを読み込むとき

PHP

PHPでサイズの大きいファイルを読み込む時のメモ。 外部ファイルを全部読み込めればOK、ただし読み込めなかった場合には エラーを返すというロジックを組みたかった。 たとえば、外部サイトをスクレイピングする際に、 HTMLファイルサイズが一定サイズを超え…

AMP HTML触ってみた

AMPってなに? 「Accelerated Mobile Pages」略してAMP。 モバイルサイトの UX 改善(ユーザー体験)を目的とした Google 主体のプロジェクトで、 画像やスマートアド等、ロードコストのかかるコンテンツを即座にロードすることにより、 UX を…

最近話題の広告ブロックについて

面白い記事を見かけたので勝手に持論を展開!! 広告ブロッカーの検知と計測について - クックパッド開発者ブログ WEB上のあらゆる所で目にする広告ですが、 これをブロックする機能を有したツールが出回っていますね。WEB広告を生業とする企業にとって有害…

PHPでGoogle Search ConsoleのAPI使ってみた

題名の通り、使ってみたのでめもします。。 やったこと ・PHPのサーバアプリでGoogleSearchConsoleの検索アナリティクスのデータを取得。 ・google-api-php-clientを利用 ・複数アカウントのGoogleSearchConsoleに登録されている全てのURLの データを取得 ・…

古いバージョンのPHPでついやってしまうあの構文

PHP

wordpressのテーマを作成する案件があり、テストサーバで動作確認したものをクライアントのサーバに導入しテーマを適用ところ、画面が真っ白に。。。 とりあえずini_set()でエラーを確認してみると、 どうやら配列を返すメソッドをコールしたところで落ちて…

cronを実行するときのユーザー

先日、GoogleAPIを使って取得した検索アナリティクスのデータを サーバに保存するphpを書きました。ブラウザでphpを叩いて一通りテストした後、 cronで日次で処理しようとしたのですが上手くいかず。。。 ログを見てみるとファイルやディレクトリのパーミッ…

PHPでrequireしたファイルが読み込めない時!

PHP

とあるPHPの実行ファイルがあって、その中で別のクラスを読み込んでいます。 読み込んだクラスの中でこれまた別のjsonファイルを読み込もうとするが、 なぜか読み込めずにちょいハマり。。。 ディレクトリ構造はこんな感じ [DocumentRoot]/index.php [Docume…

wordpressのカスタムメニューをjqueryで開閉したい!

wordpressのサイドバーにカスタムメニューを置いたとき、 ネストしているメニューの親にマウスオーバーすると子が開くようにしたかった というのが今回の話題。※実際にはUXを考慮してマウスエンターイベントに変更しています。 実際に生成されるHTMLはこんな…

PHPで作ったcsvをブラウザからDLさせてエクセルで開くときの文字化け

PHP

こんなときのベストプラクティスって何だろうか。。 例えば、DBから取ってきたデータをcsvにしてDLさせたい場合など、 UTF-8でエンコードされたデータを扱うことが多いかと思います。そのままDLさせてエクセルで開くと文字化けすますね。 エクセルがCP932(Sh…

selenium webdriverによるHTML要素の取得方法

今回は、node.jsからselenium webdriverを介してWEBサイトのHTMLを取得する際の話題です。まず、selenium webdriverモジュールを読み込み、driverオブジェクトを生成してURLをGETします。 (selenium-webdriverはnpmなどで事前にインストールしておきます。…

node.jsでコマンドライン引数を受け取る

node.jsで書いたプログラムにコマンドライン引数を渡す必要が あったため、スニペットします。。node.js側でprocessオブジェクトのargvプロパティによりコマンドライン引数を取得することができます。 processは標準モジュールにより設定されているグローバ…

これ知らなかったなあ(´・ω・`)

数年前にjavasriptを初めて触ったとき、変数の中身をみるのは常にalert()だった。 それからconsole.log()を覚え現在に至る。。ブラウザでデバッグできたりもするけど、 今でもやっぱりconsole.log()で確認するのがしっくりきます。 consoleに出力する方法が…

selenium - node.js - phantomJSでヘッドレスWEBサイトチェック

WEBサイトのコンテンツを自動でチェックする必要があり、 seleniumを使って自動化できないか試したのでメモ。ちなみに、今回はヘッドレスなlinuxサーバ環境(ブラウザを立ち上げない環境)でチェックツールを実行しました。 環境 ・node.js(チェックロジッ…

【jquery】propとattr

既出でいまさら感満載ですが、試してみたのでカキコ。。 (jquery-version:1.11.3)attrとpropは両者とも属性を扱うjqueryのメソッドで、 いろいろなサイトでこんな風に紹介されていますね。 prop javascriptのプロパティ値を取得 attr HTMLの属性値を取得 例…

【node.js】node inspectorでnode.jsをデバッグしてみた

今までconsoleデバッグで頑張ってきましたが、 業務でnodeを使うことが増え思い切ってデバックしてみることに... 環境設定もろもろ、エディタを乗り換えるみたいな面倒くささがあると勝手に 思っていたんですが、思いの外簡単ですんなり行けたのでメモ。。使…

selenium webdriverで要素存在チェック

selenium webdriverを使ってWEBサイトの要素を取得するには、 次のようなfindElenemt(s)メソッドを使い、コールバックにより取得します。 driver.findElement(wb.By.css(セレクタ)).then(function(elem) { //〜処理 }); ただし、WEBサイトに存在しない要素を…

【PHP】Windowsのbatファイルを実行する

なかなか使うことは少ないと思いますが、PHPからbatファイルを実行する 方法をメモっときます。PHPの組み込みメソッドで「exec」という外部プログラムを実行するものがあります。 例えば、以下のように記載するとphpファイルと同階層にあるtest.batを実行で…

【PHP】HTML文字列のエスケープ

PHP

クライアント側に文字列を返すサーバ側の処理を考えた際に、 そのまま返すと文字列にscriptが含まれる場合にscriptが動作してしまうことも考えられます。そこで、サーバから文字列を返す際には、HTMLを形成する特殊文字をエスケープする必要があります。 PHP…

【PHP】sessionとcookieについて

PHP

今回はsessionとcookieについて少しおさらい。 あとPHPで具体的にどう使うか、についても触れておきます。 sessionとcookieって? 大まかに言うと、両者ともある一定期間データを保存しておく仕組みです。 ただ、データをサーバ側に保存しておくのか、クライ…

【PHP】PDOでSQLを発行する2つの方法

PHP

PDOでクエリを実行する方法として以下の方法があります。⑴ queryを使う ⑵ prepare後にexecuteする 具体的な使用例は以下の通りquery $sql = 'select * from userTable'; $stmt = $dbh->query($sql); prepare $sql = 'select * from userTable where id = ?';…

【PHP】PDOでselect件数を取得する

PHP

PDOを使ってDBから検索結果の件数を取得したい場合、 PHPの公式マニュアルでは、rowCount()というそれらしきメソッドがあります。ただ、公式マニュアルによると「rowCount()はすべてのデータベースでうまく作用するとは限らない」とのこと。。。そもそも、ro…