タグ

ブックマーク / akataworks.hatenadiary.jp (25)

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

    Lightsailがかなりお得になったので、何か作ろうかなと思っているんですが、どんなサーバを可動させようにも「まずは監視だな」ということでこんな記事を書いてみました。 サーバーはamazon-linux-2018.03.0を想定しています。 今回はメトリクスの収集はアプリケーション用にstatsdとシステム用にcollectdを使います。他はデータストアにgraphiteをグラフ化にgrafanaをといった構成です。 まとまっているDocker Imageがあって楽だったというのが一番の理由ですかね......(笑) statsdも入れてますが、今回の記事にstatsdの使い方等は一切書いておりません。アプリケーションよりも先にシステムのメトリクスだと思うので。 Install and Setup statsd-graphite-grafanaの環境は前述のDocker Imageがある

    collectdとstatsd-graphite-grafanaのDockerイメージで監視体制を作る - Akata Works
  • NodeJSとnodejsコマンド・nodeコマンドの違い - Akata Works

    前々からちょこちょこ気になってたことだったので調べてみた。 RubyイメージのDockerコンテナ内とかUbuntuでNodeJSを使おうと思って調べると、すぐにapt-get install nodejsに辿り着くんですが、このコマンドでインストールされたバイナリはnodeじゃなくてnodejsになるのでいろんな所でちょっとメンドイ。例えばwebpacker実行したら/usr/bin/env: ‘node’: No such file or directoryとなる。 ということで調べてみたところ、こちらもすぐに辿り着いた。 There is a naming conflict with the node package (Amateur Packet Radio Node Program), and the nodejs binary has been renamed from nod

    NodeJSとnodejsコマンド・nodeコマンドの違い - Akata Works
    akatakun
    akatakun 2018/09/07
    書いた
  • DockerHubにあるイメージのタグリストを出力するスクリプト - Akata Works

    DockerHubにあるイメージのタグを検索するだけのスクリプト。docker searchだとそこまで分からないから便利。 curl -s -S "https://registry.hub.docker.com/v1/repositories/#{image_name}/tags" | jq '.[]["name"]' jqコマンドに依存するので、便利だからこの際入れよう。 関数化してbashrc(zshrc)に追加していればもっと便利。 function docker-search-tags() { curl -s -S "https://registry.hub.docker.com/v1/repositories/$1/tags" | jq '.[]["name"]' } $ docker-search-tags ruby | head "latest" "1" "1-onbuil

    DockerHubにあるイメージのタグリストを出力するスクリプト - Akata Works
    akatakun
    akatakun 2018/09/03
    書いた
  • スクリプトからgsutilを使用するときの認証などのポイント - Akata Works

    はじめに RubyからGoogle Cloud StorageのAPIを叩くにはgoogle-cloud-storage gemを使うのが一般的なので、この記事はどうしてもスクリプトからgsutilを実行したい人向けです。 今回はGoogle Cloud SDKの一部としてgsutilをインストールした前提で書いていますが、スタンドアローンのgsutilを使用している方も同様に処理できると思います。 gsutilのインストールがまだな人はここからどうぞ!(Pythonのバージョンには注意ね) 認証 gcloudだと別々の認証情報を使ったプロセスが並列したときに問題になりますし、.botoファイルだと細かい制御が難しいのでトップレベルの-oオプションを使うといいです。 -oオプション使用することで.botoで設定できるような項目をコマンド単位で上書きできます。 gsutil -o 'Cred

    スクリプトからgsutilを使用するときの認証などのポイント - Akata Works
    akatakun
    akatakun 2018/08/22
    書いた
  • Railsでオンメモリにキャッシュするとハマるので注意 - Akata Works

    Railsのフラグメントキャッシュでオンメモリを指定してたら、外部ミドルウェアを使うのと挙動が違ってハマったのでメモ。 開発環境デフォルトのオンメモリは準備が楽ですが、番でDalliとか使ってると混乱するので統一しておきたいですね。 検証 恐らく最もよく使われると思われるRails.cache.fetchの結果をそれぞれ見てみます。 Dalli(Memcached) 設定値config.cache_store = :mem_cache_store [1] pry(main)> @tmp = Rails.cache.fetch('hoge'){puts 'no cache'; {hoge: 'huga'}} Dalli::Server#connect localhost:11211 no cache => {:hoge=>"huga"} [2] pry(main)> @tmp[:foo]

    Railsでオンメモリにキャッシュするとハマるので注意 - Akata Works
    akatakun
    akatakun 2018/08/22
    書いた
  • Xcodeで遭遇したエラーたち・・(逐次更新) - Akata Works

    見つかる度に逐次更新していく予定です。 duplicate symbol OBJC_CLASS$_ (2015-09-18) duplicate symbol _OBJC_CLASS_$_#{hoge} 同じ名前のクラスや変数,メソッドなどが定義されていれば発生します。来はIDEの恩恵ですぐに気付くと思いますが、僕の場合はCompile Sourcesに同じファイルが含まれていたことによって発生しました。 ファイルの作り直しとかをしてたら遭遇するかもしれません。 importで"*.m"ファイルを間違えて読み込んでも発生するそうです(参考URLはてブより) ARC forbids explicit message send of (2015-09-28) ARC forbids explicit message send of #{'autorelease' | 'release'} メ

    Xcodeで遭遇したエラーたち・・(逐次更新) - Akata Works
    akatakun
    akatakun 2018/08/09
    書いた
  • Deployment TargetとBase SDKと互換性について - Akata Works

    XcodeのDeployment TargetとBase SDKがややこしかったのでまとめてみました。なるべくわかりやすく書いたつもりです。「間違っているぞー」とい点があればご指摘いただけると幸いです。 前提 そもそもの話として、Appleは各種OS(Mac OSやiOS)とそのバージョンごとに異なるSDKを用意しており、それぞれの端末には対応するSDKが事前に組み込まれています。これにより以下のようなメリットがあります。 同一実行ファイルでありながら、機能が組み込まれていればそれを活用し、組み込まれていくてもそれなりに対処できる Base SDKからある程度の上位・下位バージョンへの互換性が担保できる で、この「組み込まれているか、組み込まれていないか」を判断する必要があるSDKの範囲を決めるのがDeployment TargetとBase SDKです。 Deployment Targe

    Deployment TargetとBase SDKと互換性について - Akata Works
  • Twitter OAuthが403 Forbiddenを返すようになったので対応した - Akata Works

    2018/06/13夕方頃からコードを変更していないのに急にTwitter OAuth APIが403 Forbiddenを返すようになりました。Twitterにて同じような報告を確認し、調べてみたところ、結構前から言われてたみたいですが、いやー気づかなかったっすね(^ ^ ;) コールバックロックを有効にしていなくてもCallback URLsに設定済みのcallback_urlパラメータ以外はエラー返すよってことらしいです。変更理由としてはセキュリティのためとか。Enable Callback Lockingの設定項目はそのうち消えるらしいです。 対応策 対応は簡単で、https://apps.twitter.com/のアプリSettingsのCallback URLsに認証時に使うcallback_urlパラメータを設定してやればいいです。 ちなみに、最低二つ以上設定する必要がありま

    Twitter OAuthが403 Forbiddenを返すようになったので対応した - Akata Works
    akatakun
    akatakun 2018/06/14
    書いた
  • Base64エンコードとBase64URLエンコードについて - Akata Works

    GoogleさんのProtocol Buffersでエンコードしたデータをクエリパラメータで含めようと思ったので改めてBase64エンコードとBase64URLエンコードについて調べてみました Base64エンコーディングについては以下の記事でも軽く触っていますが、データを印字可能な64種類のデータで表現するエンコード方式です よくマルチバイト文字やバイナリデータをポストするのに使っているイメージがします ただ、URLの一部として利用する場合は62 indexの+と63 indexの/,パディングの=がURLセーフではない(RFC3986とapplication/x-www-form-urlencoded)ため、 URLセーフにエンコードするべきです パーセントエンコーディングはデカいしキモいのでなるべく避けたいっすね Base64URL Encoding +を-に、/を_に変更するのが仕

    Base64エンコードとBase64URLエンコードについて - Akata Works
  • MongoDB TTLのexpireAfterSecondsを変更する - Akata Works

    MongoDBにはドキュメントサイズで削除するキャップ付きコレクションと有効期限で削除するTTLインデックスがあります TTLインデックスの有効期限であるexpireAfterSecondsを変更する方法には二種類あり、dropIndexからのcreateIndexでインデックスを張り直すというのも一つの手ですが、backgroundオプションがなければロックがかかりますし、あってもbackgroundオプションありで作られたインデックスは最適化されるまで時間がかかります なので、runCommandとcollModを使った方法をおすすめします db.runCommand({collMod: <collection_name>, index: {keyPattern: <key_pattern>, expireAfterSeconds: <expire_after_seconds>}})

    MongoDB TTLのexpireAfterSecondsを変更する - Akata Works
    akatakun
    akatakun 2017/10/24
    書いた
  • Bitcodeバージョンの違いで発生するInvalid bitcode version (Producer: xxxx Reader: yyyy) - Akata Works

    タイトルイコールほぼ答えみたいなものですが、Facebook SDKなど外部のフレームワークを使用する場合、SDKをビルドした際のBitcodeバージョンとそれを使用したアプリをビルドした際のBitcodeバージョンが異なればアーカイブ時にタイトルのエラー が出ます(xxxxとyyyyはBitcodeのバージョン) Bitcodeについては下記の過去記事で解説しています。よく分からない人はどうぞ 対応策としてはTARGETSの設定からBuild Settings => Build Options => Enable BitcodeをNoにすることでBitcodeを無効にすることで解消できますが、 Bitcodeをオフにすることで何らかの問題が発生する可能性がないとは言い切れませんし、最適化のためにあまりよくありません 基的に新しい外部SDKはその時の最新のXcodeでビルドされていると思

    Bitcodeバージョンの違いで発生するInvalid bitcode version (Producer: xxxx Reader: yyyy) - Akata Works
    akatakun
    akatakun 2017/08/23
    書いた
  • Rails Console(irb)のアウトプット待ちがメンドイときに消す方法 - Akata Works

    小ネタです。Rails Console(irb)で適当な処理を実行すると返却値が出力されますよね?例えば以下のeachメソッドの返却値はレシーバ自身なので、eachブロックでゴニョゴニョ処理をするとレシーバが出力されます > %w/hoge huga foo bar/.each{|e| e} => ["hoge", "huga", "foo", "bar"] ちょっとした実行なら便利です が、たまにステージングエリアのRails Consoleで大量のリソースをeachブロックで処理をする時とかに、これが少し邪魔になることになります > Resource.where(statements).each{|record| record} Resource Load ... => [#<Resource id: 1, hoge: "aaaa", huga: "bbbb", foo: "cccc"

    Rails Console(irb)のアウトプット待ちがメンドイときに消す方法 - Akata Works
  • RailsのStatsタスクに調査対象ディレクトリを追加してみる - Akata Works

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

    RailsのStatsタスクに調査対象ディレクトリを追加してみる - Akata Works
    akatakun
    akatakun 2017/03/30
    書いた
  • Mac上にGoのバージョン管理ツールgvmをインストールしてみた - Akata Works

    追記(2017/04/19): MacOS Sierraだとコンパイルに使用するGo 1.4が動作しないため失敗するらしいです 公式のバイナリpkgならうまくいきます Downloads - The Go Programming Language 仕事Goを使う機会に巡り会えそうだったので、ちょっとフライング気味に勉強してみることにしました となるとやはり初めはバージョン管理ツールの導入なのだが、Go界隈の流行りはどうなっているんだろう 調べる感じRubyとかほどバージョン管理ツールは使われていないのかな?情報が少ない印象を受けました お馴染みの命名規則goenvとかgvmとかいったものがあるらしいですがGoogle トレンドを見る感じでは、gvmのほうが使われている印象を受けました(データ量が少ないけど・・) https://www.google.co.jp/trends/explo

    Mac上にGoのバージョン管理ツールgvmをインストールしてみた - Akata Works
    akatakun
    akatakun 2016/10/18
    書いた
  • 一昨日に開催された第2回 botソンに参加して画像レスbotを作成した話 - Akata Works

    2016年07月09日、株式会社トレタ様で開催されたbotハッカソンこと通称botソンに参加してきました。個人でもくもく開発して最後に発表といった感じの勉強会です この記事はその勉強会で作った簡単に画像レスをするためのSlack botの紹介みたいなもので、Herokuの使い方などについては触れませんのでご了承ください 背景 最近、Slack Teamを作ったのですが、やっぱり文字やアイコンばかりだと盛り上がりにかけ、誰も発言しなくなる => 過疎のコンボに繋がると思いました かといって、下記にもあるようにおもしろ画像をセコセコと探しているのを誰かに見られるとものすごい萎えます(ちなみに僕は画像レス用のディレクトリをDropboxに持っていますが、そこから画像を選別しているのを見られるのも嫌です) Emacsからネタ画像を検索したい - Qiita オモシロ画像を貼るためにせっせとマウスで

    一昨日に開催された第2回 botソンに参加して画像レスbotを作成した話 - Akata Works
  • RailsとMySQLでiOSの絵文字に対応(UTF8MB4化)した話 - Akata Works

    兼ねてからちょこちょこエラーが出ていたiOSの絵文字を含んだデータにようやく対応しましたので、その備忘録です。 Railsは3.2.11、MySQLは5.6.25です。 ちなみにMySQLは5.5以降からUTF8MB4に対応しています。 はじめに 文字コードをUTF8からUTF8MB4に変更をするにあたっていくつかの注意点があります。 コレーション問題 UTF8MB4のコレーションをデフォルトにしたままだと、寿司ビール問題("🍣"と"🍺"が同じものとして扱われる)と言われる問題に遭遇し、コレーションをUTF8MB4_UNICODE_520_CIにすると、ハハパパ問題("ハ"と"パ"が同じものとして扱われる)と言われる問題に遭遇します。 そのため、ハハパパ問題を気にしない場合(そんな国内サービスはあるのか!?)はUTF8MB4_UNICODE_520_CIを、気にする場合は、コードポイン

    RailsとMySQLでiOSの絵文字に対応(UTF8MB4化)した話 - Akata Works
  • 開発環境にMacを使用しているの方は要注意!SRMコマンド! - Akata Works

    みなさん、開発環境には何を使っていますか?Linuxですか?Macですか?はたまたWindowsですかね? ちなみに僕は家も会社もMacを使っています。 そしてMac以外をご使用の方はこの先を読む必要はあまりないかもしれません(読んでくれるとうれしいけどね) 先日、ファイルを削除でrmコマンドを使おうとしたら、間違ってsrmと打って実行してしまったのですが、 何もエラーは出ず何も標準出力もされず通ってしまいました。 ^_^[~]$ srm hoge/huga/foo/bar.txt ^_^[~]$ そして、どうせ大したことないだろうと思っていたらファイルが消えていました・・ どうもsrmコマンドはMacでファイルを完全消去するためのコマンドのようで、ゴミ箱で「確実にゴミ箱を空にする」を押したときに実行されるやつみたいです。 実行するとなんの面影もなく、ファイルが完全消滅してしまいます。 そ

    開発環境にMacを使用しているの方は要注意!SRMコマンド! - Akata Works
  • RailsとBundlerで`bundle exec`を省略した話とその時の副産物について - Akata Works

    Railsアプリケーションの開発に使っているBundlerで一々bundle execを打つのって面倒ですよね。 調べてみるとrbenvのpluginだとかいろいろあるらしいのですが、 これまではずっとエイリアスでなんとか凌いでいました。 ↓こんなやつ↓ alias rs='bundle exec rails server' alias rc='bundle exec rails console' まあ、これでも別にいいんですが、最近たまたまGitHubを漁っていたら、良さ気な回避方法を使用しているプロジェクトがあったのでちょっと移行してみました。 多分、仕組み的にはrbenvのpluginとそんなに変わらないんじゃないかな・・ ※以下はアプリケーションルートにいる前提です まず、bundle install時に--binstubsを付けて、railsやrakeコマンドの実行ファイルのスタ

    RailsとBundlerで`bundle exec`を省略した話とその時の副産物について - Akata Works
    akatakun
    akatakun 2015/12/25
    書いた
  • 今更ながらXcode 7のBitcodeについてまとめてみた - Akata Works

    タイトルにあるように今更ながら、Xcode 7でいろいろあったBitcodeについてまとめてみました。 まずはじめに、BitcodeとはXcodeのビルドフローにおける中間言語(LLVM IR)のバイナリ表現です。 LLVM IRにはテキスト表現とバイナリ表現の2種類がありますが、そのうちのバイナリ表現になります。 また、Xcodeの基的なビルドフローは以下のようになります。 フロントエンドのClangがソースコードを中間言語(LLVM IR)に変換する バックエンドのLLVMがLLVM IRをマシン語に変換する で、Xcode 7以降はデフォルトでBitcodeを含んだデータを生成するようになった感じです(もちろんBuild Settingsで無効にできます。詳しくはこの記事を) Bitcodeを有効にすることでApple側でアーキテクチャに合ったコンパイルをしてくれるなど、メリットが

    今更ながらXcode 7のBitcodeについてまとめてみた - Akata Works
    akatakun
    akatakun 2015/12/07
    書いた
  • 複数台のMacでアプリケーションの設定を共有する - Akata Works

    久しぶりの投稿ですが、小ネタです。 ".zshrc"や".vimrc"などのいわゆるドットファイルは、ずいぶん前からGitHubで管理していたんですが、 アプリケーションの設定ファイルを共有していなかったのでシンボリックリンクで共有してみました。 今回はDropboxに追加しますが、他のクラウドストレージサービスでもいいですし、 ちょっとめんどいですが、なんならGitHubやBitBucketでもいいです。 まず、データの保存先としてDropboxに"Application Support"ディレクトリを作成します(まあ名前なんて何でもいいです) mkdir ~/Dropbox/Application\ Support/ "~/Library/Application\ Support/"ディレクトリ以下にアプリケーションごとの設定ファイルが置かれていますのでに移動させます。 ここでは、例と

    複数台のMacでアプリケーションの設定を共有する - Akata Works
    akatakun
    akatakun 2015/10/27
    書いた