カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

プログラミング

facebook-php-ads-sdkを使って、Instagramに対応したクリエイティブと広告セットを作る

Bussiness Managerなどで、Instagramアカウントと、対象アプリの連携はしといてください。 まず、InstagramアカウントのIDが必要なので、それを把握する。 Graph API Explorerにアクセス developers.facebook.com Get Tokenで、 Get User Access Token をえ…

PHP(xdebug)+IntelliJでブレークポイント置いてるのに、そこで止まってくれないとき

xdebugの設定もちゃんとして、動いているっぽいのに、止まらずスルーされてしまう場合。 phpは5.6.21、xdebugは2.4.0、IntelliJは以下。 IntelliJ IDEA 2016.1.3 Build #IU-145.1617, built on June 3, 2016 JRE: 1.8.0_76-release-b198 x86_64 JVM: OpenJDK…

過去に戻れ!reflogを使いこなしてこそGit中級者である。

Gitの一番好きなコマンドといっても過言ではない reflog 。 すごく便利なので、使いましょうと言う話です。 簡単にいえば、 reflog で過去を探索し、 reset で好きなタイミングに戻ることができるというテクニックです。 開発していると、ここまでいじっちゃ…

phpenvして、composerして、php-cs-fixerして。

まずphpenvでphpをインストールする環境を作る。 $ curl -L http://git.io/phpenv-installer | bash .bashrc とか .zshrc でパスが通るようにする。 if [ -d "${HOME}"/.phpenv ]; then export PATH="$HOME/.phpenv/bin:$PATH" eval "$(phpenv init -)" fi …

facebook-php-ads-sdkで "User XXXXXXXX can not update audience YYYYYYY" 出たときの対応

audienceのIDがYYYYYYYとわかっているので、Graph Api Explorerにアクセス。 developers.facebook.com FQL Queryで、GET → /v2.6/YYYYYYY としてクエリを作成。 実行して、左カラムから、ID や NAME を指定して、返ってくるJSONを見る。 これでターゲットの…

レビューで、その無名関数ほんと必要なの?という指摘を受けたことはありますか

「その無名関数本当に必要なの?」という指摘。 僕はこの指摘をもらって至極まっとうだと思ったのですが、みなさまはいかがでしょうか。 ざっくりですが、こんな感じで、値のうちマッチしたものだけを抽出し処理をするような array_filter() と array_map()…

facebook-php-ads-sdkのデバッグの際によく使うリンク集

最近 facebook-php-ads-sdk を触ることが多いので、メモがてら残しておきます。 github.com レファレンス 読みましょう。 developers.facebook.com 広告周りのドキュメント 読みましょう。 developers.facebook.com Graph API Explorer SDKを使わず、APIに直…

git resetを使って、単一のファイルをmasterに戻す

結論から言うとできない。 $ git reset --hard master FILE_NAME 的なことをやると、以下のように怒られる。 fatal: Cannot do hard reset with paths. ハッシュしか指定できないらしい。 ので、正解はこっち。 $ git checkout master -- FILE_NAME こちらも…

var_dump()で省略されないように、全部出力する

眺めのSQLを var_dump()したら、以下の様な感じになった。 string(966) "SELECT ここに長い文字列 hoge"... ... って置き変わってる・・・ ので、 var_dump() の前に以下を入れる。 ini_set('xdebug.var_display_max_children', -1); ini_set('xdebug.var_di…

BigQuery脱初心者を目指せ!今から覚えるべきテクニック3つ

CASEやJOIN、GROUP BYなども覚えて、SQLは大体大丈夫!となっている方も多いかもしれません。 しかし、BigQueryに触れるなら、もうちょっと覚えておいた方が楽になることが色々あります。 ので、覚えてみましょうと言う話。3つで十分なのかという声もあるで…

すぐループして処理しようという発想はやめよう!計算量考えることのススメ

配列とかにあるデータを一通り処理したいときはforとかforeachが便利なのですが、計算量を考えて、できるだけ使わないようにするのが大事という話。 $datas['key01'] = 1; $datas['key02'] = 1; $datas['key03'] = 1; foreach ($datas as $key => $value) { …

前日と当日のテーブルに存在するデータをBigQueryで抽出する

何日連続ログインとかそういうデータ欲しくなったときに。 こんな感じ。 SELECT id FROM dataset.20160610 WHERE id IN ( SELECT id FROM TABLE_DATE_RANGE([dataset.], DATE_ADD(TIMESTAMP('2016-06-10'), -1, 'DAY'), DATE_ADD(TIMESTAMP('2016-06-10'), -…

連続する二つの処理はファイルを分けるべきか否か

Aを作ったのち、Aのデータ(IDなど)を使ってBを生成するコマンドがあったとする。 そのとき、 create_a_command.php と create_b_command.php という二つのファイルを作るべきか、 create_a_and_b_command.php というのを作るべきかという問題。 このとき、サ…

拙いコミットをしたくないんだ

以下駄文です。 エンジニアの皆様git使ってますでしょうか。svnとはお別れしましたでしょうか。 わたくし数年前からgit使っているわけですが、未だに悩んでいることがありまして、、、それは、、、 中途半端な状態でコミットしたくない というものなのです。…

PHP: クラス内のメソッドを使って、array_map()したい

必要があったので。 arr); } } $sample = new Sample(); var_dump($sample->wrapper_str_upper()); arr…

PHP: 配列の値を特定の条件で抽出する

ちょっとやる必要があったので。 array_filter()の第2引数に、条件を満たさせる無名関数作ればおけ。 0, 'key1'=> 1, 'key2'=> 2, 'key3'=> 3 ); $filtered = array_filter($arr, function($elem) { return $elem % 2 === 0; }); var_dump($filtered); arra…

自作OSSにプルリクをもらったので、やったこと

ありがたいことに、拙作constants_managerにプルリクをもらったので、自分がやったことをまとめておきます。 まず確認 Githubからプルリクが届いたというメールが来るので、確認。ページにいって、コメントや修正内容を確認しましょう。 ローカルに再現 @stu…

必ず失敗するひどい実装を晒してみる

年の瀬ですが、みなさま今年の振り返りはできていますでしょうか?この記事では今年に限らず、今までわたくしが犯した罪のある実装を晒していきたいと思います。 「愚者は経験に学び、賢者は歴史に学ぶ。」という言葉にあるように、この記事が少しでも多くの…

Githubにpushしてしまったパスワードを可能な限り抹消する

昔やってしまったのですが、パスワードを社内版Githubにpushしてしまったことがあり、そのときどう対応したか記録に残しておきたかったので、備忘録として残しておきます。 結論から言うと完全には消せなく、パスワード作りなおしたほうがいいので、絶対やら…

社内版ISUCON2015のメモ

社内版ISUCONに出場してきた。自分は現在サーバサイドエンジニアだけど、少し前の職種であるインフラエンジニアとして誘われ、参加。 サーバにもう繋げず、あまり痕跡残ってないけど、手元のメモ参考に記事にしてみる。 現地についてレギュレーション読んだ…

フィールドにあるリストは初期化したほうがいいという話

フィールドにリストを持つクラスがあるとします。こんなの。 public class SampleData implements Data{ private List<String> contents; . . . } そうすると、「初期化」してないと突っ込まれました。なぜだめなのか。 理由としては、nullが入ることがあり、そのケ</string>…

Enum優秀!使い方によって、すごく便利だった件

IDによって処理を分けたいことがありました。そして、僕は単純にCASE文使えばいいだろうと思い、以下のように実装。 switch (id){ case 1: hogehoge(user, array); break; case 2: hugahuga(user, array); break; default: break; } これでいいかなと思った…

perlのワンライナーを使えるとカッコイイという話

みなさま、perl使ってますでしょうか。 タイトルは釣りですが、結論から言うと、ワンライナーを書くならperlを使いましょうという話です。 理由は単純に、パッケージいれなくてもすぐ使えるのと、perlスクリプトを解読するのに知識が生きるからという理由か…

redis-pyが「AttributeError: 'module' object has no attribute 'StrictRedis'」エラーを吐いた件

redis-pyを動かそうと思ったら、以下の様なエラーが。 $ python redis.py Traceback (most recent call last): File "redis.py", line 1, in <module> import redis File "/var/tmp/redis.py", line 2, in <module> r = redis.StrictRedis(host='localhost', port=6379, db=0</module></module>…

markdownで改行をする

markdownで改行したいのにすぐ忘れるので、メモ。 以下のアンダースコアの箇所を半角スペースにすればOK。 適当な文字:__ 次の行の文字 半角スペースを2個連続すれば、改行になります。 ではでは!

ターミナルを使えてプログラミングできないなら、シェルスクリプトから始めよう

「黒い画面でバリバリ作業はできるのに、プログラミングとなるとちょっと・・・」みたいな人いますでしょうか。 grepとかcurlとかコマンドラインは得意なんだけど、オブジェクト思考とかメソッドとか変数とか抽象化とかそういうのになるとちょっと苦手という…

続・Git中級者に送る便利なコマンド群

前回の記事「Git中級者に送る便利なコマンド群」でははてブ経由で多くのコメントを頂きました。今回の記事では、頂いたコメントのうち、いくつか取り上げて、可能な限り補足をしたいと思います。 git push origin master -f 前回の記事で最も多くご指摘頂い…

Reduxのサンプルに説明をつけてみた

最近React, fluxアーキテクチャに触れることがあり、理解にかなり苦しんだので、軽く文字にして、理解を深めてみました。 今回使ったフレームワークはReduxなので、それ以外学びたい人はごめんなさい。 レポジトリはこちら。 https://github.com/masudaK/flu…

Git中級者に送る便利なコマンド群

Gitを使っていて、ちょくちょく便利だなと思うコマンドに出会うので、メモ残しておきます。実際中級者の方には物足りないかもしれませんが、とりあえず。目次は以下。 自分がいじったファイルを一旦退避させたい ツリーが今どういう状態になっているか確認し…

正規表現を使ってhostnameを抽出する

完全に自分用のメモですが、FQDNにhostnameが含まれるようなドメインがあった場合に、hostnameだけを抽出したくなったので、そのときのメモ。 Pythonで書くとこんな感じ。 def extract_hostname(fqdn): __pattern = r'([^\\.]+)' regex = re.compile(__patte…