@iwasaki のアーカイブ

tomcatのログ監視で特定のExceptionを無視する

2016年12月8日

http://hacknote.jp/archives/23563/ の改良版です。 ``` tail -f -n 0 $log \ | grep --line-buffered Exception \ | grep --line-buffered -v ReferenceException \ | check_alert ``` のように -v オプションで特定のExceptionを除外することで本当にクリティカルな例外だけに絞り込むこ
続きを読む

Javascriptでcheckedやvalueを取得する際の注意点

2016年12月7日

条件によって画面上にフォームの要素が表示される/されないといった場合には ``` if (dojo.byId('flag0') && dojo.byId( 'flag0').checked) { //処理を書きます } ``` のようにして dojo.byId('flag0')が存在するかチェックした上でcheckedやvalueを行うようにします。 存在チェックがないとnullになってしまいその後の処理が正常に行われません。
続きを読む

Gitで特定のタグに対してmasterに適用した修正を適用する

2016年12月6日

v8.1.1のタグをチェックアウトします。 ``` git tag git checkout v8.1.1 git checkout -b v8.1.1-patch ``` 参考 http://ikm.hatenablog.jp/entry/2012/12/18/130940 例えば https://github.com/aipocom/aipo/commit/ef4d6de199c1ee5c574377d02c38934b09c
続きを読む

MySQLのデータベースサイズを調べる

2016年12月1日

``` SELECT table_schema, sum(data_length) FROM information_schema.tables GROUP BY table_schema ORDER BY sum(data_length+index_length) DESC; ``` なお僕の手元の環境(Mac上のMySQL 300DB程度)で行うとMySQLがハングしましたのでお気をつけく
続きを読む

EclipseにAptanaをインストールした状況でEGitを使う

2016年11月25日

EclipseにAptanaをインストールするとPortableGitも一緒にインストールされます。 ただ、Gitの操作はEGitの方が数倍使いやすいので、EGitを使うように設定をします。 環境設定→チーム→Gitから「Automatically attach our git support to projects added that have git repositories」のチェックを外した上でプロジェクトの作成・インポートを行います。 参考
続きを読む

postgresでレコード数を調べる

2016年11月24日

MySQLだとinformation_schemaを使ってレコード数を調べるかと思いますが、PostgreSQLだと以下のようにして調べます。 ``` SELECT T2.relname , T2.reltuples FROM pg_stat_user_tables AS T1 INNER JOIN pg_class AS T2 ON T1.relname = T2.relname ORDER BY T2.relname; ``` ```
続きを読む

Amazon Linuxのファイルシステム

2016年11月22日

ファイルシステムについて調べるには以下のように調べます。 ``` # df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 488M 56K 488M 1% /dev tmpfs tmpfs 498M 0 498M 0% /dev/shm /dev/xvda1 ext4
続きを読む

Aipoのバックアップスクリプトについて

2016年11月17日

Aipoのバックアップ内ではデータベースのダンプとファイルコピーが行われています。 データベースのダンプ部分は ``` sudo -u aipo_postgres /usr/local/aipo/postgres/bin/pg_dump -c -b -o -Fp -U aipo_postgres -p 5432 -f /usr/local/aipo/backup/1111111111111/aipo_db_sql.dump org001 > /usr/local
続きを読む

MySQLでドメインでGROUP BYする

2016年11月16日

ドメインごとでGROUP BYするには substring_index を使います。 ``` SELECT substring_index(email, '@', -1) domain, COUNT(*) email_count FROM turbine_user GROUP BY substring_index(email, '@', -1); ``` 参考 https://www.firstlogic.co.jp/blog/lab/naruh
続きを読む

stripeでちょっとしたら課金開始になる定期課金を作る方法

2016年11月11日

stripeで支払いエラー時の検証をする方法ですが、 https://support.stripe.com/questions/test-failed-invoice-payment で説明されているように 1. 支払いのできないカードを登録 1. 数秒後に trial_end となるSubscriptionを登録 というのが主な流れになるかと思います。 コントロールパネルから定期課金を作ろうとした場合には時間まで制御できないため、APIを
続きを読む

LambdaでUUIDを生成する

2016年11月9日

https://github.com/broofa/node-uuid を使います。 ``` var uuid = require('node-uuid'); var rand = uuid.v4().split('-').join(''); ``` 参考 https://blog.dakatsuka.jp/2012/01/10/node-uuid.html http://qiita.com/toshirot/items/38761b
続きを読む

tomcatのログでExceptionが発生した際に通知を行う

2016年11月9日

ログの監視、大事ですよね。 TomcatのログでExceptionが発生した際にデスクトップ通知を行う方法です。 開発中にExceptionが人知れず発生していた、ということがなくせます。 **log-exception.command** ``` #!/bin/sh cd `dirname $0` source ~/.bash_profile log=ログファイルのパス function check_alert() { echo
続きを読む

API Gateway + Lambdaを使ってWebhookのエンドポイントを1箇所にしつつその後の処理を開発者ごとに振り分ける方法

2016年11月8日

Webpayやstripeにはwebhookの仕組みがあります。 大変便利な仕組みなのですが、開発途中ではWebpayやstripeのテストモードを使うことになるかと思いますが、こういったケースでは往々にして以下のような制約が発生するかと思います。 * 同じシークレットキーをベースに複数の開発者のマシンからAPIをたたくようになる * テスト環境のWebhookとして指定できるエンドポイントは1つだけ webhookを受け取った際に、自分のマシンからAPI
続きを読む

Lambdaでstripeを使う方法

2016年11月8日

Webpayがサービス終了ということですが、stripeをLambdaで使う方法です。 stripeには * curl * Ruby * Python * PHP * Java * Node * Go のSDKが用意されているので、Lambdaで使う時にはNodeを使えばOKです。 ``` var stripe = require("stripe")( "your secret key" ); stripe.setApi
続きを読む

clamavが暴走してログを大量に吐くため、ディスク容量が100%になった件について

2016年11月8日

``` Oct 30 04:29:49 freshclam[11111]: [LibClamAV] mpool_malloc(): Attempt to allocate 8388608 bytes. Please report to http://bugs.clamav.net ``` みたいなログを大量に吐いてCPUが100%になったり、ディスク容量が100%になったりするケースがありました。 ディスク容量が少なめのEC2インスタンスなどでは、 /var
続きを読む

gitのタグ操作あれこれ

2016年11月8日

gitでタグをつける ``` git tag -a v1.2.0 -m 'Create tag for v1.2.0' ``` つけたタグをGitHubにプッシュする ``` git push origin v1.2.0 ``` タグを付け忘れてたときにあとからコミットを指定してタグを付ける ``` git tag -a v1.1 -m 'Create tag for v1.1' コミット ``` タグを削除する
続きを読む

Webpayとstripeの定期課金を比べてみた

2016年11月4日

## Webpayの場合 https://webpay.jp/docs/api#recursion_create ``` curl "https://api.webpay.jp/v1/recursions" \ -u "your secret key": \ -d "amount=50400" \ -d "currency=jpy" \ -d "customer=cus_XXXXXXX" \ -d "period=month" \ -d "des
続きを読む

ansbileのPlaybookで日本語設定する方法

2016年10月31日

ansibleのPlaybookでtimezone,localeを設定するには以下のように書きます。 ``` - hosts: XXX sudo: yes user: vagrant vars: locale: ja_JP.UTF-8 zone: Asia/Tokyo tasks: - name: set timezone shell: timedatectl set-timezone {{ z
続きを読む

Javaで特定のエラー以外のときだけ処理をする方法

2016年10月27日

JavaのExceptionで特定のエラー以外のときだけ何らかの処理をする場合、以下のように書きます。 ``` try { //処理 } catch (Exception e) { if (!(e instanceof MyException)) { //処理 } } finally {
続きを読む

log4jの出力パターン

2016年10月26日

``` conversionPattern =%d (%t) [%F:%L]- %m%n ``` のように指定すると ``` 2016-10-26 18:26:02,853 (hoge) [XXX.java:934]- XXX ``` みたいに出力されます。 ``` ``` の部分は5文字埋まるまでスペースで埋めるという指定になっています。そのため上記の場合、INFOの後ろにスペースが入るようになっています。 http
続きを読む