React_native_fcm_undeclaired_identifier

I got these message when start to use react-native-fcm

1
2
error: use of undeclared identifier 'FIRMessagingConnectionStateChangedNotification'
   name:FIRMessagingConnectionStateChangedNotification object:nil];

I lot of time consumed, but I found that Firebase version is weired for me.

1
pod install --repo-update

save me.

that’s it.

Mac OS Sierra で Karabiner-elements がない場合に Keyrepeat を早く適切にする方法

TL;DR

1
2
defaults write -g InitialKeyRepeat -int 9
defaults write -g KeyRepeat -int 2

背景

Mac OS Sierra にしてから karabiner elements になって、キーリピートの設定ができなくなった。 mac の system preferences からできる最速ではもちろん物足りないので、一旦目安としての数値がなかったので記述する。

概要

iterm から

1
2
defaults write -g InitialKeyRepeat -int 9
defaults write -g KeyRepeat -int 2

の各コマンドを実行して再起動したら反映された。若干はやいきもするが、慣れの問題かと思っている。

所感

最初1,1 とかにしたら大変なことになったので、誰かのためになればさいわいです。

iPhone6 + au(誰でも割+LTEフラット) 運用を、 iPhoneSE と格安SIM(mineo Dプラン) の運用にする

TL;DR

  • iPhone6 を iPhoneSE に変更(大体30分)
    • 約3万
    • アップルストアで30分(バックアップ戻す時間込み)
  • 2016年11月1日(あたり)に mineo Dプランを、エントリーパッケージ経由で契約する
    • その後自動でau が解約される(解約更新月なので9800円くらいがかからない)。
    • au は月末解約扱いになるらしいが、システムの対応が間に合ってないせいでまだそうなってないっぽい。

背景

iPhone6 が日本にて発売されたのが 2014年9月で、おそらくそのときに購入した。
その流れで、 au の「誰でも割」「LTEフラット」を契約して、約2年間運用してきた。
そもそもパケットの料金が高すぎるので不満をいだいて居たので、
格安シムのほうが安くなるのはおそらく確実だろうということで、
どのようにすればよいか調べたのでココに記しておく。

自分の要求

  • もちろん速度が出ると良い。
  • テザリングは必須。
  • 電話はあまりしない。(するときは実家になど、たまに長くなるとお金がかかる)
  • 大体実績値がパケット使用量 7GB/月 程度。もうちょっとあっていいと思っている。

概要

  • 端末を何にすればよいか?
  • MVNO をどこにすればよいか?
  • au の契約更新月について

端末を何にすればよいか?

iPhoneSE とした。
iPhone7 発売に伴い, iPhoneSE 64GB が 49800円(税別)なので、これにした。
iPhone7 は、今の自分には必要ないと思ったからだ。

Android はOS的に好きでないのでやめた。

銀座アップルストアに行って、iPhone6 が24,000円で下どってくれたので、実質3万くらいで購入できた。
mac の iTunes でフルバックアップを取って行かないと無駄足になるので注意。

MVNO をどこにすればよいか?

mineo にした。
iPhoneSE でのテザリングでの前提だと IIJmio と mineo が良いらしい。
出典はこちら。
自分は、ちょっとググッた結果通信速度の安定的に mineo のほうが良さそうだと判断したのと、
通信料を最大2GBシェアリングできる概念みたいなものがあるようなので、こちらにした。

自分が調べた結果だと、Y!mobile とか UQ mobile とかはテザリングNG だったりする。
テザリング使いたい人は前提をテザリングに考えたほうが良いと思う。

au の契約更新月について

au の契約更新月は、誰でも割とかだと 25ヶ月、26ヶ月目くらいらしい。
au の人なら多分入れているであろう、auお客様サポートアプリの「ご契約情報」 「料金割引サービス」に、

1
2
誰でも割
(次回更新年月 2016年11月~2016年12月)

などと書いてあるのが確認できるのでご確認を。

ちなみに、解約についてであるが、au は月末解約扱いになると宣言しているが、
システムの対応が間に合ってないせいでまだそうなってないっぽい。

mineo にするならこれを買うと安くなる模様。

普通にmineo公式サイトを見ればわかるけど、プロモコードを入れるところがある。
申し込み時の方法が主に3つあるけど、下記を購入して登録すると、新規登録手数料がおよそ 2000円安くなるらしいので、
これを買ったらイイんじゃないかなと思う。

お得感見積もり

BEFORE

auのもろもろ(7GB制限):月平均1万円

AFTER

10GB(音声+データSIM): 3220円
通話料大体:400~600円
4000円くらい

月6000円お得。電話の具合によってはもうちょっとお得具合がへるがそれでも月6000円はでかい気がする。

3万の端末代金は 6000 * 5ヶ月あればもとが取れる予定。

所感

大体3時間くらいいろいろ調べた結果なので、誰かのために慣れば幸いです。

Ridgepole Command Gets [ERROR] Undefined Method Index

TL;DL

You should use newest version of gem definetly.

I faced this error

1
[ERROR] undefined method `index' for #<Ridgepole::DSLParser::Context::TableDefinition:0x007fae9aa1b850>

Solved

This is version problem.

I simply write as follows,

1
gem 'ridgepole'

but it seems downloads version is 0.5.0.

I finally found 0.6.4 is newest ver for now, so I used it, problem disappeared.

Let’s Encrypt で Ec2 で単独で動いているサービスを Https 化する

はじめに

前提として、 EC2 に passanger + nginx でサービスを動かしている。
Let’s encrypt を導入するには主に以下をやる必要があるだろう。

  1. サーバにログインして letsencrypt-auto スクリプトを使用して証明書を作成
  2. nginx に設定し、再起動
  3. 90日で切れるので、証明書の自動更新をつける

以下では、
- force SSL 的な設定は今のところ nginx などではやらない。
- クライアント側のアプリなどで対応する。

1. 証明書を作成

1
2
3
4
5
cd /opt
git clone https://github.com/letsencrypt/letsencrypt
cd /opt/letsencrypt
# ec2 のセキュリティグループで 443 を開けておく
./letsencrypt-auto certonly --standalone

2. nginx に設定し、再起動

以下をいい感じに追加する。

1
2
3
4
5
6
7
   listen 443 ssl;

   ssl_certificate /etc/letsencrypt/live/your.domain.name/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/your.domain.name/privkey.pem;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers on;
   ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

3. 自動更新

su で crontab -e

1
00 05 01 * * /etc/init.d/nginx stop; /opt/letsencrypt/letsencrypt-auto certonly --standalone -d your.domain.name --renew-by-default --debug ; /etc/init.d/nginx start;

所感

https 化が簡単にできて最高な時代だなぁと思った。

参考

https://www.mitchcanter.com/lets-encrypt-ssl-amazon-aws/

俺が考える最強ヘッドフォンゼンハイザーHD25-1 Ⅱ を超えた Amperior With リケーブル

はじめに

過去の記事で書いたとおり、ゼンハイザーHD25-1 は俺が考える最強ヘッドフォンだった。
しかし、 Amperior はさらにそれを超えている。しかも現在では Amazon だと HD25-1 より安い。
本記事ではこのヘッドフォンについてレビューをする。

いまのベストを書く

これらで至高の環境が手に入る。

詳細

Amperior について

HD25-1 と比べてずっしりとした重さをかんじるが、別に装着してて疲れるわけではない。
HD25-1 とくらべて、音質が一つづつクリアになっているように感じる。
HD25-1 の音のでかたや音圧は、初めてした時は圧倒的に感じるが、Amperior とくらべてしまうと
どこかぼやっとしてしまうように思う。
Amperior は音圧もすごく、特にロックのサビなどにおけるベースラインのクリアさは驚きがある。
中高音はやはり得意な領域で、低音もやはり得意だろうと思う。
ドラムのシンバルのような音や、シャリッとした音は少し弱めに思うだろう。
それにしても、全体的にクリアで、ゼンハイザーが好きな人なら絶対満足するだろう。

イヤーパッドはベロアで、しかもしっかりとしていて良い。
HD25-1 とくらべて締りはそんなに強くないと思う。

リケーブルについて

純正のケーブルは、数ヶ月で断線する。
HD25-1 を使っている方はもうおなじみだと思うが、これは確実に起こるだろう。
普通に生きていてこうなるのだ。もう諦めよう。
ただ、そのたびに新しいリケーブルを試せる。
前回までイイと思ってたやつがあったんだけど、今回のリケーブルはそれを超えてきた。

基本的にはギターが得意なケーブルだと思う。HD25-1 にしばらくさして聞いていたが、
シールド?コネクタ部もとてもぶっとくて断線しにくそうだし、かなりクリアに中高音が聞こえる。
これからどれくらい持つかで評価が変わると思うが、長持ちするならこれは素晴らしい。
まぁ値段も普通に 8000円とかするからそうじゃなきゃこまるんだけど。

ちなみにリケーブルは、もともとのケーブルと クランプ部分が別途が接着してるので、こういうのが必要らしい、約1000円。
SENNHEISER(ゼンハイザー) ケーブルクランプセット Cable Clamp Set For HD25【044433】

しかも、このクランプのネジが精密ネジとからしく、この特殊ドライバーの H6 っていうやつを使う必要があった、約2000円。
アネックス(ANEX) スーパーフィット精密両頭差替ヘクスローブドライバービット3本組セット ケース付 No.3602

所感

ゼンハイザーの MOMENTUM シリーズとかも、便利だし音もいい感じなんだけど、
結局 HD25-1 の方が良いと思った。
それよりも素晴らしい Amperior は、本当にいいヘッドフォンだと思う。
みんな買えばいいんじゃないかな、損はしないと、俺は言い切れるよ。

Rails4 で Utf8mb4 にしたい話

自分用のメモ

/etc/my.cnf

1
2
3
4
5
6
7
8
[client]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
innodb_file_per_table
innodb_file_format=barracuda
innodb_large_prefix = 1

$RAILS_ROOT/config/database.yml

default に追加

1
2
3
charset: utf8mb4
encoding: utf8mb4
collation: utf8mb4_general_ci

ridgepole の Schemafile

create_table :news, force: true, id: :bigint, options: “ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC” do |t| blahblah… end

参考

http://blog.arith-metic.jp/category/rails http://yamacent.hatenablog.com/entry/2015/06/06/235900

I Wanna Test View *_path on My Rails Console(pry), So What Should I Do?

Just do

1
2
3
4
5
pry(main)> include Rails.application.routes.url_helpers

pry(main)> admin_customer_path(User.first)
User Load (0.3ms)  SELECT  `users`.* FROM `users`  ORDER BY `users`.`id` ASC LIMIT 1
=> "/admin/customers/1"

enjoy!

If You Use ActiveRecord::Base.transaction Syntax, You Shoud Surround It Begin Rescue Clauses

TL;DR

If you use ActiveRecord::Base.transaction syntax, you shoud surround it begin rescue clauses.

Detail

1
2
3
4
5
6
7
8
9
10
11
12
13
class Hoge
  def self.exec
    raise "something is not good" if something_check

    ActiveRecord::Base.transaction do
      User.create(username:"moge")
      User.create(username:"moge")
    end

    rescue StandardError => e
      # if database transaction has occured, this statements will be called
      p "duplicate error"
  end

This code looks good, but includes terrible problem. It’s definetly rescue clause. In this code, something_check return true, raise “something is not good” error,
and shows "duplicate error". Terrible.

so if you use ActiveRecord::Base, I strongly recommend use begin rescue clauses implicit.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Hoge
  def self.exec
    raise "something is not good" if something_check

    begin
      ActiveRecord::Base.transaction do
        User.create(username:"moge")
        User.create(username:"moge")
      end

      rescue StandardError => e
        # if database transaction has occured, this statements will be called
        p "duplicate error"
      end
    end

  end

Ruboty を Github Private で動かす

何箇所かハマったので記録しておく

http://kentana20.hatenablog.com/entry/2014/11/02/180812

基本的には上記の記事にそって行けば大丈夫なんだけど、なんかしょかハマった。
具体的には、readme の deploy ボタンで連携できないことだ。
ただ、問題なく連携はできる。
heroku の deploy タブ の Github のところから private に clone した(fork は不可なので)やつを
指定すれば連携ができる。
あと、dotenv の設定が必要なので、環境変数の設定のために

1
heroku config:add SLACK_PASSWORD='' SLACK_ROOM="" SLACK_TEAM="" SLACK_USERNAME=""

というような感じで設定する。

あと、Add ons で Redis to go を検索して追加する。この時カードを登録してなければ、クレカ登録が促されるので、がんばる。

password の部分は xmpp の slack パスワードを使うことに注意する(https://xxx.slack.com/account/gateways) 。

bundle exec ruboty を起動させるところ(heroku の resources free dyno で edit して 変更して保存する)。
fork した ruboty-template が依存している xrc の version が 0.1.4 で、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/rexml/parent.rb:41:in `each'
p/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/client.rb:249:in `block in on_features_received': undefined method `name' for "   ":REXML::Text (NoMethodError)
from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/rexml/parent.rb:41:in `each'
from /app/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/client.rb:247:in `on_features_received'
from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/rexml/parsers/sax2parser.rb:142:in `call'
from /app/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/client.rb:176:in `on_received'
from /app/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/client.rb:217:in `block in connection'
from /app/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/parser.rb:78:in `call'
from /app/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/parser.rb:78:in `consume'
from /app/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/parser.rb:49:in `end_element'
from /app/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/parser.rb:26:in `block (2 levels) in bind'
from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/rexml/parsers/sax2parser.rb:142:in `block in parse'
from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/rexml/parsers/sax2parser.rb:142:in `parse'
from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/rexml/parsers/sax2parser.rb:142:in `each'
from /app/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/connection.rb:38:in `parse'
from /app/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/connection.rb:34:in `start'
from /app/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/connection.rb:14:in `connect'
from /app/vendor/bundle/ruby/2.0.0/gems/ruboty-1.0.4/lib/ruboty/robot.rb:45:in `adapt'
from /app/vendor/bundle/ruby/2.0.0/gems/xrc-0.1.4/lib/xrc/client.rb:24:in `connect'
from /app/vendor/bundle/ruby/2.0.0/gems/ruboty-slack-0.1.7/lib/ruboty/adapters/slack.rb:81:in `connect'
from /app/vendor/bundle/ruby/2.0.0/gems/ruboty-slack-0.1.7/lib/ruboty/adapters/slack.rb:14:in `run'
from /app/vendor/bundle/ruby/2.0.0/gems/ruboty-1.0.4/lib/ruboty/robot.rb:22:in `run'
from /app/vendor/bundle/ruby/2.0.0/gems/ruboty-1.0.4/bin/ruboty:6:in `<top (required)>'
from /app/vendor/bundle/ruby/2.0.0/gems/ruboty-1.0.4/lib/ruboty/commands/run.rb:5:in `call'
from /app/vendor/bundle/ruby/2.0.0/bin/ruboty:23:in `load'
from /app/vendor/bundle/ruby/2.0.0/bin/ruboty:23:in `<main>'

こんな感じのエラーがでたので、 xrc のバージョンが古いっぽかったので
Gemfile.lock の version を 0.1.8 に編集して commit したらいけた。

以上。