読者です 読者をやめる 読者になる 読者になる

カイワレの大冒険 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…

constants manager was released!!

Now on release constants manager!!. This library helps you to manage constants for python. It recommends to see README.md to use. The features are below. use different constants with environments variables. return default constants if ther…

pypiにパッケージを登録して、setup.pyの「scripts」と「console_scripts」の違いを比較してみた

みなさま、Pythonのパッケージ化はしたことありますでしょうか?最近以下のような記事を書きましたが、ツールを作ったものの、それを配布しようとなると、Pythonのパッケージ化に関して分からないことがあり、pypiにパッケージを登録して試してみました。 Py…

Pythonでコマンドラインツールを作りたいときには、setup.pyには何を書くべきか

前回のPython製コマンドラインツールのディレクトリ構成について。その考察。の続きです。 はてブコメントやFBでのコメントでsetup.pyに関する言及がいくつかあったので、どのようなことを書いたほうがいいのか調べてみました。 setup スクリプトを書くやい…

Python製コマンドラインツールのディレクトリ構成について。その考察。

はじめに 去年ぐらいからPython製のコマンドラインのツールをいくつか作っていて、構成もだいぶ固まってきたので、まとめてみる。規模としては1ファイルでは終わらないぐらいで、関数の数も数十になってユーティリティを作ったり、クラスをいくつか作らない…

今まで作ったPython, Ruby, Bashの関数を色々晒してみる

華金なのに飲みもないので、ブログでも書こう。今日は、今までに書いた関数をいくつも晒してみようと思う。RubyとかPythonとかbashとか必要に応じて色々作った関数もそこそこあるので、誰の役に立つかわからないけど、晒してみる。 importとかまでは記してな…

コールバック関数

今までコールバック関数をちゃんと把握してなかったので、メモ。 今回はnode.jsを使います。加算を2段階で行う処理。 function add(a,b,callback) { console.log(a+b) callback(a+b) } function add10(base) { console.log(base + 10) } add(1,2,add10) 実行…

Rubyでリトライとか、SSH経由でコマンドとか

実家にいるとどうも時間持て余してしまうので、昔書いたスクリプトを備忘録的に残しておく。一年以上前に書いたやつだな。。。 リトライ たとえば、特定のURLに対して並列でGETしたい、ただステータスコードがおかしかったりしたら、キャッチしておきたいよ…

IntelliJでJUnitの設定をする

IntelliJでJUnit周りの環境を揃えたときの備忘録。自分が使ってるのはIntelliJ IDEA12。13では試せてないけど、多分そんな変わらないはず。 pom Mavenでプロジェクト管理してるのでまずpom.xmlに以下が設定されてることを確認する。IntelliJはデフォルトで設…

環境による設定の差異を吸収するにはSettingslogicがいいという話

だいぶ前に使った内容なので、今は少し違うかもしれませんが、アウトプット大事ということで備忘録。 環境に応じて処理内容を変えたいということはよくあるかと思います。 DEVだったら、この設定を読むとか、APIの呼び元はこっちにするとか。 僕がよく遭遇す…

RubyでOSの外部コマンドを実行したいときに、spawnを使うと便利だった件

またもや、Rubyネタ。ちょくちょく更新して参ります。 外部コマンドを実行するやり方については、このサイトにまとまっています。 んで、なんかいいライブラリないかと。 が、今回僕が欲しかった機能として、 コマンドが叩ける(当然 標準出力・標準エラー出…

Rubyでハッシュの値の比較を行う

どうやるか分からなかったので。ハッシュ同士ではなく、値の比較をしたいとき。 2つのハッシュがあって、キーが同じなのに値が違うとか、そもそもキーがないとか。そういうとき。 ActiveSupportでは、以下のようなオープンクラス?が用意されていて、diffの…

YAML.dumpするときは、文字コードを意識しとくべきだった件

なんかハマったので。環境はRuby1.9.3です。 YAML.dumpで出力しようとしたときに、必ずしも人間にわかりやすい形で出力してくれるとは限らないんですな。 とりあえず、ファイルに出力してみる場合。 >>> content = 'hello, world!!' >>> hash_test = {'key' …

concatメソッドにハマった件

またもやRubyネタですが、とあるリストの各要素同じ文字列追記をしたかったのですが、そしたら見事ハマったので書いておきます。 やりたいことはこんな感じ。 とあるリストがある。要素数は3にしておきます。 その各要素に対して、文字列を末尾に加えたい。 …

Rubyで動的にメソッドを呼び出したいときの試行錯誤メモ

最近、昔のドラゴンボール劇場版を見て、90年代を懐かしんでる@masudaKです。 今回は、Rubyで条件分岐からファクトリ作成に至るまでの試行錯誤をちょいと晒してみたいと思います。 思考の流れはこんな感じ。 ある文字列が複数個リストに入ってる。 その文字…

Vimの環境を晒してみる(2013)

あっという間に三が日も終わろうとし、時の切なさを感じている@masudaKです。そこまで目新しいネタもないため、自分のVimの環境を晒してみたいと思います。この記事はVim Advent Calendar 2013の1月3日分の記事となります。説明は以下の.vimrcがベースとなる…

Javaウェブオペレーションエンジニアがトラブル切りわけ時に見ていること3つ

忘年会シーズンで肝臓への負担を極力避けている@masudaKです。今回はJavaアプリケーションの運用のポイントに関して、書いてみたいと思います。 このエントリはJava Advent Calendar 2012の22日目のエントリです。 Javaアプリケーションの運用ポイントとは …

定期実行スクリプトの綺麗なロギング3選

オリンピックの流れに乗れてない@masudaKです。職業柄かちょくちょくスクリプトを書くことはあるのですが、やはり色々自分で書いたり人のを見たりしてるうちに、この実行履歴綺麗だなーと思うことが多々あります。今回は、そう思える対象のなかでも、「定期…

paramikoモジュールが激しく便利だった件

最近Pythonあまり書いてなくて、復習がてら書いてみたのですが、その際paramiko: ssh2 protocol for pythonが便利だったので、ご紹介。リモートホストに対してなんらかの処理を行いたい場合、スクリプトで書くとなると、シェルスクリプトでもできますが、例…

「シェルスクリプトを書く際に気を付けていること8箇条」の補足を書いた

前回のエントリで色々コメント頂いたので、自分の勉強のためにちょいと調べてみた。コメントありがとうございます。とりあえず、bashオンリーのもの途中から書いてるじゃんという話し。 ひとまず、提示したソースをそのまま使ってみて、やってみた。 declare…

シェルスクリプトを書く際に気を付けていること8箇条

エンジニアという職業柄かシェルスクリプトを書くことはちょくちょくあるのですが、自分なりに気を付けていることを備忘録&自分への戒めも含めて、簡単に書いてみたいと思います。 変数は大文字 シェルスクリプト書いていれば変数の出番は至るところである…