サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
都知事選
oretachino.hatenablog.com
3号です。 オンプレ+CentOS6系なインフラをちょめちょめしてたのが一年くらい前でそっから会社辞めて、今の会社で久々にMySQL構築おじさんをしたらちょっとはまりました。私にUbuntuの知見がほとんど無かったというのも原因ですね。そのメモになります。 インストール時にMySQLのユーザパスワードを聞かれないようにする 通常ubuntuにaptでMySQLをインストールするとrootのパスワードどうする?とかインタラクティブなやりとりが行われます。しかしシェルスクリプトやchefなどからインストールする場合、これをスキップしたいです。そこで下記のようにDEBIAN_FRONTEND=noninteractiveをコマンドに渡すとスキップすることができます。 sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-serv
3号です。 このシノギをしていると謎の力によって通信が遮断されてとても困ることがあります。 私の現場ではfluentdを運用しているのですが、つい先ほど転送元ホストから転送先ホストにログが転送できなくなってしまいました。 fluentdはログの受け口として24224番ポートをTCP、UDP双方でリスンするのでこのポートを調査します。 まずTCP24224ポートの調査です。telnetを用いるのが定番ですが掲題のncコマンドでもできるので今回はncコマンドでやってみます。 次のようにして転送先ホストで24224番をTCPでリスンします。 nc -l -p 24224 そして転送元から次のようにhello tcpというメッセージを送ります。 echo "hello tcp" | nc TARGET_HOST 24224 疎通ができれば転送先にhello tcpというメッセージが表示されます。
さっき調べてたことのメモ。 Vagrant で Linux マシンを起動したときに、ネットワーク設定を NAT (+ DHCP) にした状態で、DNS サーバは社内のやつを使いたかった。 普通に /etc/resolv.conf を編集して + nameserver x.x.x.x とかしても、/etc/init.d/network restart とかしてネットワークを再起動すると DHCP (正確には dhclient-script) によって、/etc/resolv.conf が書き換えられてしまう。 $ cat /etc/resolv.conf ; generated by /sbin/dhclient-script nameserver 10.0.2.3 VirtualBox の 10.0.2.3 が指定される。これをなんとかしたいという話。 方法1:PEERDNS=no を使う
サーバ間でちょっとしたファイルの受け渡しをしたいことはよくあると思う。 そういうときには scp とか rsync とかを使ったりすると思う。 だけど ssh がそのサーバ間で許可されてなかったり、ケツスラッシュとかを気にしたりしなくてはならなかったりして意外とダルい。 あとは netcat とかあるけど日常的に使わないから毎回使い方調べたりしなくてはならなくて*1ダルい。 そこで SimpleHTTPServer ですよ たぶんみんな知ってて普通に使ってるんじゃないかなと思ったけど、たまたま同僚のおじさんが 3 人連続で知らなくて俺が教えてあげるみたいな機会があったからこのブログにも書いておこうと思う。 SimpleHTTPServer とは python の簡易WEBサーバ。 コマンドラインから起動すると、カレントディレクトリ以下が DocumentRoot になる。 起動方法 いずれ
こんなことしたいとしますよね。 mkdir -p /path/to/dir chown 2gou /path/to/dir chgrp oretachino /path/to/dir chmod 700 /path/to/dir chown 2gou.oretachino /path/to/dirでもいいけど行数稼ぐために分けた。 同じことをするには、意外と知られてないけどinstall使うと1コマンドでイナフ。 install -o 2gou -g oretachi -m 700 -d /path/to/dir installのmanを見てみると This install program copies files (often just compiled) into destination locations you choose. If you want to download and
DATABASE.TABLEの特定のレコードだけをdumpで抜きたいとき。 mysqldump -uroot --where="id=100" DATABASE TABLE とか mysqldump -uroot --where="id in (100, 101, 102)" DATABASE TABLE とか。--whereが使える。
CloudFront+S3の画像配信システムに、サムネイルとかに使う画像のリサイズ機能を追加してみる。 要するにオリジナル画像がこのURLだとすると、 http://xxx.cloudfront.net/sample.jpg こういうURLで100×100にリサイズできるようにする。 http://xxx.cloudfront.net/resize/100x100/sample.jpg システム構成 元の構成はこういうのを想定。 画像はS3に保存され、アクセスは全てCloudFront経由。 これをパスが/resize/で始まる場合は、画像変換サーバを通してリサイズするようにする。 画像変換サーバはEC2で、ちゃんとELBを使って冗長化もする。 既にELB+EC2でAPPサーバを運用しているなら、流用して追加コスト0で実現できるかも。 画像変換サーバの設定 今回はnginxのimage_f
実行時間の長いコマンドの終了を通知できるようにGrowlや通知センターを使って工夫している人はそれなりにいらっしゃると思います。 実行時間の長いコマンドの終了をGrowlやメール通知するRubyスクリプト Macで時間のかかるコマンドが終わったら、自動で通知するzsh設定 - Qiita zshでエラーや時間のかかる処理後に通知センターで通知するようにする - 僕の車輪の再発明 ただ、これを ssh でログインしたリモートサーバでやろうと思うとけっこうめんどい。 リモートマシンからGrowl通知をできるようにしようとして挫折した話 - すぎゃーんメモ ということで、自分がやっているお手軽な方法の紹介 必要なもの iTerm2 設定方法 iTerm > Preferences > Profilers > Advanced > Triggers Edit ボタンを押して Trigger を作る
プリントデバッグが大好きだ!!!何はなくともとりあえず標準出力に吐いてデバグ!!!!!!!!!っていうようなことはみなさんにおかれましても少なからずあるのではないでしょうか。 プリントデバッグを行う場合、単純に変数に何が入っているかというよりも、オブジェクトの状態とかを見たいことが多いかと思う。 そういうときのためのライブラリとして、Ruby だと、p, pp は組み込み、ap はもう定番化しててみんな使ってると思う。 で、ddp ってのもある。http://hisaichi5518.hatenablog.jp/entry/2014/11/05/154949 適当なクラスをでっち上げてそれぞれに食わせてみる こんなクラスがあったとする。 インスタンスを作って、インスタンス自体、インスタンス変数、インスタンスメソッドをそれぞれのライブラリに食わせてみて、どんな感じに表示されるか見てみませう。
rspec3 に疲弊している皆さんこんにちは。今日は rspec3 に疲れた皆さんへ憩いの場として test-unit gem のお話を提供したいと思います。 test-unit gem について 「Rubyのテスティングフレームワークの歴史(2014年版)」の記事に詳しく書いてありますが、test-unit gem は古来にあった test/unit とも minitest とも違う第3の(第4?5?よくわかりません)の単体テストライブラリです。 Ruby コミッタでもある @kou 氏が精力的にメンテナンスを続けてくれており、 Ruby 2.2 に標準で bundle される今をときめくテスティングライブラリです。 古来の test/unit に比べて多くの機能が入っており、大変便利になっています。 テストの書き方 本来ならばここで、テストの記法について語るのでしょうが、@repeat
scpとrsync、ケツにスラッシュがあるかないか毎回確認するのでメモしておく。 個人的にはscp使わないで rsync option from/ dest/で 両方共ケツスラッシュ付けてやってる。 例 from/files_dirをdest/files_dirに持って行きたい % tree . . ├── dest └── from └── files_dir └── file 3 directories, 1 file % まとめ PATH scp rsync from/files_dir/ dest/ NG NG from/files_dir dest/ NG OK from/files_dir/ dest/files_dir/ OK OK from/files_dir dest/files_dir OK NG from/files_dir/ dest/files_dir OK OK
こんにちわ。5号です。Sinatraライクと書いておきながらあんまりSinatra触ったことが無いので全然違ったらすみません。 Golangを試す際にWebAppサーバ作ってみようとする時に軽量なフレームワークで試せるgin-gonicは良いと思います。 gin-gonic/gin · GitHub こちらのqiitaで導入方法は詳細に説明されているのと、 Go - Gin Web Frameworkを試してみたよ - Qiita READMEさえ見たら簡単なサーバはすぐ作れるのですが、せっかくなので今回はGETした時のURIパラメータをそのまま返すWebAppを作ってみます。 main.go package main import "github.com/gin-gonic/gin" func main() { router := gin.Default() router.GET("/:
友達と飲んでる時に『ELBのIPアドレス数は動的に変動するから、個数調べるとだいたいのサイト規模がわかる』みたいな話をしたので、実際のところどうなんだろうといくつかのサービスを調べてみました。 こんな感じになりました。 サービス 調査ドメイン IPアドレス個数 Cookpad cookpad.com 8 ランサーズ www.lancers.jp 2 Chatwork chatwork.com 8 日経新聞(モバイル版) mw.nikkei.com 2 東急ハンズ ネットストア hands.net 2 SmartNews www.smartnews.be 6 グノシー platform.gunosy.com 2 パズドラ api-ios.padsv.gungho.jp 8 ドラゴンクエストモンスターズ SL monsters-superlight.dragonquest.jp 4 個数は2~
tmux を使っているとペインが増えまくってうざくなることはままあると思う。 そういうときには、ペインをウィンドウとして独立させてしまってスッキリしたらいいと思う。 <prefix> + ! でカレントペインがウィンドウとして独立します。便利です。
3号です。ログをBigQueryにつっこむのが流行ってます。 で、timeってカラムがunixtimestampだったとして、XX時〜YY時までのアクセスを抽出したいとします。こんな感じになります。 SELECT * FROM DATASET.TABLE where time between TIMESTAMP_TO_SEC(DATE_ADD(TIMESTAMP("2014-12-04 22:00:00"), -9, "HOUR")) and TIMESTAMP_TO_SEC(DATE_ADD(TIMESTAMP("2014-12-05 23:01:00"), -9, "HOUR")) order by time desc; time ------------ 1417788060 1417788059 1417788058 抽出結果にdatetime型を並記して表示したいときはこんな感じ
※7号の『俺とおまえとawk』にはてブがいっぱいついて羨ましかったので、丸パクしたのっかりエントリです。 「EFK (Elasticsearch + Fluentd + Kibana) なんて甘えですよ、漢は黙って perl | sort | uniq -c ですよ」と誰かが言ってたような言ってなかったような気がするのでログさらう時に自分がよく使う perl 芸について書きます。 想定データサンプル こんなフォーマットで出る TSV 形式の Web アプリケーションログがあったとします。[TAB] はタブ文字です。 時間[TAB]ステータス[TAB]HTTPメソッド[TAB]URI[TAB]リクエストタイム 例えばこんな感じです。このログを perl 芸で処理していきます。 access.log 2014-12-05 12:00:00[TAB]200[TAB]GET[TAB]/api/v1
「EFK (Elasticsearch + Fluentd + Kibana) なんて甘えですよ、漢は黙って awk | sort | uniq -c ですよ」と誰かが言ってたような言ってなかったような気がするのでログさらう時に自分がよく使う awk 芸について書きます。 想定データサンプル こんなフォーマットで出る TSV 形式の Web アプリケーションログがあったとします。[TAB] はタブ文字です。 時間[TAB]ステータス[TAB]HTTPメソッド[TAB]URI[TAB]リクエストタイム 例えばこんな感じです。このログを awk 芸で処理していきます。 access.log 2014-12-05 12:00:00[TAB]200[TAB]GET[TAB]/api/v1/ping[TAB]0.017832 2014-12-05 12:00:01[TAB]200[TAB]POST[
こんにちは。何号だっけ・・・。 Goでアプリを書いている時にテストでGoConvey smartystreets/goconvey · GitHub Go用テストツールGoConveyの紹介 - Qiita を使っているんですが、error型の比較時に軽くハマったのでメモです。 単純な文字列比較であれば So(hogehoge, ShouldEqual, "fugafuga") の様に比較出来るのですが、error型でエラーメッセージが入っているからそれを比較しようと So(errorObject, ShouldEqual, "error message") とやると、実際にerrorObjectの中に"error message"が入っていて文字列として等価でもgo test実行するとこんな感じの Failures: * /tmp/test.go Line 4: Expected: 'e
小さい規模で WEB Application を書く場合において、Sinatra はサイコーに便利です。 ビューのあるアプリの場合はだいたいこういうディレクトリ構成にしますよね。 $ tree ore_tachi_no ore_tachi_no ├── config.ru ├── lib │ └── ore_tachi_no │ └── application.rb ├── public │ ├── css │ │ └── application.min.css │ └── js │ └── application.min.js └── views ├── index.slim └── layout.slim 6 directories, 6 files application.rb の内容 / へのアクセスで index.slim を表示させるだけのカンタンな
3号です。3番目に書くので3号になってしまいました。外形監視についてゆるく書きます。 私の会社では外形監視にPingdom - Website Monitoringを利用しています。Pingdomは世界中の拠点から対象のエンドポイント(http(s), smtp, DNSなど)の死活監視をしてくれるサービスで、比較的簡単な設定でエンドポイントの監視が実現できます。SaaS/PaaS/IaaSをうまく活用するのが最近のトレンドであることもあり、Slackなど他サービスとのインテグレーションにも優れています。 主に以下のようなものを監視しています。 HTTP(S):自社サービスのエンドポイント HTTP(S):他社の連携先のAPIエンドポイント HTTP(S):社内システムのエンドポイント SMTP:AWS SES Name Resolve:AWS Route 53 自社のサービスはもちろん、
2号です。1号挨拶しか書いてないやんけ…! 飲み会であった話でtd-agentのインストール云々があったのでそこから派生してrpmの話。 パッケージの同梱される設定ファイルのみをリストする術。既にインストールされているものなら rpm -qc {パッケージ名} これからインストールされる中身が知りたいなら rpm -qp --configfiles {rpmパッケージ} な感じです。オプションがショートが-cでロングが--configfiles。 えーと何だったけかなあの話。具体的には td-agent2から/opt/以下にまるっと環境を放り込むようになっている のだけれど、その兼ね合いで RPMで管理する%filesセクションも変更になっていて同一のファイルとみなされず、パッケージreplaceの際に設定ファイルがtd-agentのアンインストール処理で消えてしまう という話だった多分。
このページを最初にブックマークしてみませんか?
『oretachino.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く