Akata Works

東京エンジニア。主にRuby,Go,たまにAWSとiOS。ゲーム音楽が好きです。連絡はTwitterかakata.onen@gmail.comまで

collectdとstatsd-graphite-grafanaのDockerイメージで監視体制を作る

Lightsailがかなりお得になったので、何か作ろうかなと思っているんですが、どんなサーバを可動させようにも「まずは監視だな」ということでこんな記事を書いてみました。 サーバーはamazon-linux-2018.03.0を想定しています。 今回はメトリクスの収集はアプ…

RubyのCSI多言語化について調べたらpack, unpackについて理解できた話

Rubyでバイト列の先頭にマジックナンバーが付いたようなものを扱う機会があったのでArray#pack, String#unpackについて調べてみました。 このあたりの認識がふわっとしてると、使うときに障害の種になるので要注意ですね。 結構調べたつもりですが、間違えて…

NodeJSとnodejsコマンド・nodeコマンドの違い

前々からちょこちょこ気になってたことだったので調べてみた。 RubyイメージのDockerコンテナ内とかUbuntuでNodeJSを使おうと思って調べると、すぐにapt-get install nodejsに辿り着くんですが、このコマンドでインストールされたバイナリはnodeじゃなくてno…

DockerHubにあるイメージのタグリストを出力するスクリプト

DockerHubにあるイメージのタグを検索するだけのスクリプト。docker searchだとそこまで分からないから便利。 curl -s -S "https://registry.hub.docker.com/v1/repositories/#{image_name}/tags" | jq '.[]["name"]' jqコマンドに依存するので、便利だから…

スクリプトからgsutilを使用するときの認証などのポイント

はじめに RubyからGoogle Cloud StorageのAPIを叩くにはgoogle-cloud-storage gemを使うのが一般的なので、この記事はどうしてもスクリプトからgsutilを実行したい人向けです。 今回はGoogle Cloud SDKの一部としてgsutilをインストールした前提で書いていま…

Railsでオンメモリにキャッシュするとハマるので注意

Railsのフラグメントキャッシュでオンメモリを指定してたら、外部ミドルウェアを使うのと挙動が違ってハマったのでメモ。 開発環境デフォルトのオンメモリは準備が楽ですが、本番でDalliとか使ってると混乱するので統一しておきたいですね。 検証 恐らく最も…

Deployment TargetとBase SDKと互換性について

Deployment TargetとBase SDKはSDKの上下互換性を保つための重要な設定項目です。前者はSDKの最低動作バージョンを、後者は開発のベースとなるSDKバージョンを示し、これらの間に含まれるバージョンはOSごとに順応させる必要があります。

Twitter OAuthが403 Forbiddenを返すようになったので対応した

Callback URLsに設定済みのcallback_urlパラメータ以外はエラー返すようになりました。変更理由としてはセキュリティのためとか。ワイルドカードが使えないのでそういったときはCookieでリダイレクトさせればいいです。

CocoaPodsクイックリメンバー用【ほぼメモ】

About CocoaPods iOSのライブラリ管理ツール。他言語のツールだとBundler(Ruby)とかYarn(JS)とかが近い How to Start Rubyで動作するためGemからインストール gem install cocoapods Podfileを作成 pod setup Commands Podfile.lock > Podfileの優先順位でラ…

Base64エンコードとBase64URLエンコードについて

GoogleさんのProtocol Buffersでエンコードしたデータをクエリパラメータで含めようと思ったので改めてBase64エンコードとBase64URLエンコードについて調べてみました Base64エンコーディングについては以下の記事でも軽く触っていますが、データを印字可能…

MongoDB TTLのexpireAfterSecondsを変更する

MongoDBにはドキュメントサイズで削除するキャップ付きコレクションと有効期限で削除するTTLインデックスがあります TTLインデックスの有効期限であるexpireAfterSecondsを変更する方法には二種類あり、dropIndexからのcreateIndexでインデックスを張り直す…

Bitcodeバージョンの違いで発生するInvalid bitcode version (Producer: xxxx Reader: yyyy)

タイトルイコールほぼ答えみたいなものですが、Facebook SDKなど外部のフレームワークを使用する場合、SDKをビルドした際のBitcodeバージョンとそれを使用したアプリをビルドした際のBitcodeバージョンが異なればアーカイブ時にタイトルのエラー が出ます(xx…

Rails Console(irb)のアウトプット待ちがメンドイときに消す方法

小ネタです。Rails Console(irb)で適当な処理を実行すると返却値が出力されますよね?例えば以下のeachメソッドの返却値はレシーバ自身なので、eachブロックでゴニョゴニョ処理をするとレシーバが出力されます > %w/hoge huga foo bar/.each{|e| e} => ["hog…

RailsのStatsタスクに調査対象ディレクトリを追加してみる

どうもです。rake statsコマンドを使っていますか?これは一言で言えばプロジェクトの大まかな統計情報を取るためのコマンドです。リファクタリングすべきかどうか、テストコードを書くべきかどうかをざっくり判断したいときに使ったりします $ rake stats +…

Mac上にGoのバージョン管理ツールgvmをインストールしてみた

追記(2017/04/19): MacOS Sierraだとコンパイルに使用するGo 1.4が動作しないため失敗するらしいです 公式のバイナリpkgならうまくいきます Downloads - The Go Programming Language 仕事でGoを使う機会に巡り会えそうだったので、ちょっとフライング気味に…

一昨日に開催された第2回 botソンに参加して画像レスbotを作成した話

2016年07月09日、株式会社トレタ様で開催されたbotハッカソンこと通称botソンに参加してきました。個人でもくもく開発して最後に発表といった感じの勉強会です この記事はその勉強会で作った簡単に画像レスをするためのSlack botの紹介みたいなもので、Herok…

RailsとMySQLでiOSの絵文字に対応(UTF8MB4化)した話

兼ねてからちょこちょこエラーが出ていたiOSの絵文字を含んだデータにようやく対応しましたので、その備忘録です。 Railsは3.2.11、MySQLは5.6.25です。 ちなみにMySQLは5.5以降からUTF8MB4に対応しています。 はじめに 文字コードをUTF8からUTF8MB4に変更を…

開発環境にMacを使用しているの方は要注意!SRMコマンド!

みなさん、開発環境には何を使っていますか?Linuxですか?Macですか?はたまたWindowsですかね? ちなみに僕は家も会社もMacを使っています。 そしてMac以外をご使用の方はこの先を読む必要はあまりないかもしれません(読んでくれるとうれしいけどね) 先日…

RailsとBundlerで`bundle exec`を省略した話とその時の副産物について

Railsアプリケーションの開発に使っているBundlerで一々bundle execを打つのって面倒ですよね。 調べてみるとrbenvのpluginだとかいろいろあるらしいのですが、 これまではずっとエイリアスでなんとか凌いでいました。 ↓こんなやつ↓ alias rs='bundle exec r…

今更ながらXcode 7のBitcodeについてまとめてみた

タイトルにあるように今更ながら、Xcode 7でいろいろあったBitcodeについてまとめてみました。 まずはじめに、BitcodeとはXcodeのビルドフローにおける中間言語(LLVM IR)のバイナリ表現です。 LLVM IRにはテキスト表現とバイナリ表現の2種類がありますが、そ…

コンテンツ単位でボットからのアクセスを無視する

自身のサイトに訪れたユーザのアクセス情報をイベント単位で取得し、レポートを作成したり、Mixpanelを使用するとき、 クローラなどのボットが凄まじいノイズっぷりを発揮し、 レポートがメチャクチャになります。 サイト単位やページ単位でボットのアクセス…

Xcodeで遭遇したエラーたち・・(逐次更新)

見つかる度に逐次更新していく予定です。 duplicate symbol OBJC_CLASS$_ (2015-09-18) duplicate symbol _OBJC_CLASS_$_#{hoge} 同じ名前のクラスや変数,メソッドなどが定義されていれば発生します。本来はIDEの恩恵ですぐに気付くと思いますが、僕の場合…

Xcodeのキャッシュのせいでエラーが出ていた

Tipsレベルですが・・ Xcodeでとあるフレームワークを入れたり消したり、バージョンを上げたり下げたりしていたら、 バージョンAを参照してるつもりが、バージョンBが参照されていました。 ちゃんとFramework Search Pathもフレームワークのパスも確認したが…

Homebrewで"configure: error: cannot run C compiled programs"が出た

最近、iOS 9の開発のためにMac OSXをEl Capitan 10.11 Betaに、 XcodeをXcode 7 Beta変えたところ、 しばらく使っていたら、急にtigが使えなくなりました・・ なんか依存ライブラリのReadlineが死んでいたっぽいので、 再インストールしてみました。 $ brew …

Rubyのスコープと変数定義で「What!?」ってなった話

最近になって急に、開発言語がPerlからRubyとObjective-Cに早変わりして大変です。 そして、Perlの感覚でRubyを書いていると「What!?」ってなったことがあったので、 久しぶりに記事にしてみました。 下記はPerlのコードです。 #!/usr/bin/env perl use stri…

未変更のファイルが変更扱いになっていた問題(サブモジュール編)

Git

最近、git addしてもgit checkoutしても、変更扱いされているファイル(以下hoge)がありました。 僕としてはhogeをまったく変更した記憶がないんですが・・ 同じような現象としてファイルモードの問題があったので、 下記URLを参考に解決しようと思ったのです…

Macでトラックパッドのスピードを限界突破したい

Mac

最近全然更新してなかった割にはしょぼい記事ですが・・ Macのトラックパッドのスピードが遅いです。 Better Touch Toolを使って速くしているつもりですが、それでも遅いです。 すごいイライラします´д` ; そこで、defaultsコマンドを使ってみました。 こい…

ScalaのArrayとApplyについて調べた

初、Scalaの記事です。 Scalaは言語仕様にオマジナイ的なものが少なくて、 勉強していて「なるほど、ここはこうなってんだ〜〜」て思うことが多いです。 さて、そんなScalaの配列ですが、定義方法だけでも結構あります。 val num: Array[Int] = new Array[In…

CentOS 6.4にTorch7をインストールしてみた

最近あまり記事書いてないなーと思いながら投稿・・ 巷で噂のディープラーニングをやろうと思ってTorch7をインストールしてみました。 CentOS 6.4でやりました。 ディープラーニング系のライブラリは導入が割とメンドクサいらしく日本語の記事が少ないですね…

DBIxでN+1問題に直面した・・其の壱

いにしえのコードを修正していたらDBIxでN+1問題に直面している部分を発見した!! なので解決策をサクッと書こうと思います(/・ω・)/ 初めにN+1問題とは PerlのDBIxのようなORMは最適化のために余分なカラムは読み込まないようになっていることが多いです。 …