CubicLouve

Spring_MTの技術ブログ

2017-01-01から1年間の記事一覧

Rubyのお気持ちを読む

Rubyのお気持ちが分からないことがたまにありますよね。 このスクリプトで最終的になにが表示されるでしょうか。 class A attr_accessor :foo def bar foo = baz(foo) foo end def baz(v) v end end a = A.new a.foo = 1 p a.bar # ここで表示される値は? 答…

Macで自分のRubyのプロセスのrssを調べるには

bugs.ruby-lang.org このチケットをみていて、Macで同じことをどうやるか?を考えてみました。 Macには/procがありません。 % ruby -rzlib -e'END{puts File.readlines("/proc/self/status").grep(/RSS/)}' -e'd=Zlib.gzip("data"); 100_000.times{Zlib.gunz…

Array#samplesの実装を追う(途中)

candidates = [ 'hoge', 'foo', 'bar', 'Sring_MT' ] puts candidates.sample のようなスクリプトでなぜか自分がよく当たるような気もしたので、Array#sampleの実装を追ってみた。 instance method Array#sample (Ruby 2.4.0) source メソッド定義場所はここ…

Google SpreadsheetのJOINみたいなことがしたかったのでgoでコマンド作った

今まで改行された標準出力から、grepのOR検索するための条件を作るためにperlでゴニョゴニョしてました。 (他にもいい方法あるかな。。。) % echo "test\ntest\ntest" | perl -e 'my @list; while (my $m = <>) {chomp($m); push @list, $m}; print join("\\…

slack APIで自分がjoinしているチャンネル一覧取得

token取得 api.slack.com レガシーなのでいつdisableになるかわからないですが。。。。 id取得 curl -s -XPOST 'https://slack.com/api/users.list?token=#{自分のToken}&pretty=1' | jq -r '.members[]|"\(.id) \(.profile.email)"' | grep '登録しているメ…

tmpwatchについて

よく忘れるので、整理しておく。 tmpwatchコマンド コマンドは/usr/sbin/配下にあります。 使い方は下記の通り。 $ tmpwatch [option] [hours] [dirs] dirsの指定にはワイルドカード(*)が使えます。 基本的に空dir、ファイル、シンボリックリンクを削除する…

MySQLに数百万件のテストデータを作る方法

お手軽にMySQLにダミーデータを作る方法です。 INSERT INTO hoge SELECT * FROM hoge; を繰り返す スキーマ gist.github.com (プライマリキーなしというありあえないテーブルで試しています。。。) 結果 gist.github.com 1280000 rows作るのに1分かからない…

bundlerを使っていて、'/' is not writable. Bundler will use '/tmp/bundrer/home/unknown/' as your home directory temporarily.` と出たときの対応

daemontools経由等で、デーモンのプロセスを立ち上げるときに、プロセス内でbundle exec hogeなどのコマンドを実行すると、 '/' is not writable. Bundler will use '/tmp/bundrer/home/unknown/' as your home directory temporarily. のようなwarningメッ…

MAC(メッセージ認証コード)とは

MAC(Message Authentication Code メッセージ認証コード)について、整理してみました。 (MACアドレスのMACはMedia Access Controlの頭文字なので同じ文字面ですが全然意味が違いますね。) MACは自分に届いたメッセージが送信者が意図した通り(改竄されてない…

Macでクラッシュレポートを見る

Mac

MacでC++書いててSEGVとかを起こしたときのクラッシュレポートの置き場所をいつも忘れるのでメモ /Users/:user/Library/Logs/DiagnosticReports /Library/Logs/DiagnosticReports この配下にある.crashを見る

stackprofの原理

stackprofがどうやってプロファイルを行っているかを追ってみます。 プロファイルするコードは下記を使います。 stackprof/sample.rb at master · tmm1/stackprof · GitHub 自分用のメモなので、間違い等があるのはご容赦ください。。(随時ブラッシュアップ…

BazelでC++をビルドする

以前Bazelの入門の記事をかきましたが、今回はC++をビルドする環境を作成してみます。 spring-mt.hatenablog.com 下記のチュートリアル通りにやっていきます。 Build Tutorial - C++ - Bazel まずはexampleをcloneしてやっていくのですが、前回やった残りの…

Q4MのConditional Subscriptionのベンチマーク

Q4MのConditional Subscriptionを使う前にベンチマークを取ってみました。 Q4M - Tutorial マシン Model Name: MacBook Pro Model Identifier: MacBookPro13,2 Processor Name: Intel Core i5 Processor Speed: 2.9 GHz Number of Processors: 1 Total Numbe…

Bazel入門

Bazelとは Googleが内部で利用していたビルドツールのオープンソース版として提供されているものです。 Bazel - a fast, scalable, multi-language and extensible build system" - Bazel FAQ - Bazel ビルドやテストの高速化を目指して作られています。 C++…

ログについてのまとめ

ログとは 時系列順になっているデータのこと。 全てが過去に発生する。 データログ - Wikipedia ログ取得の目的 記録・履歴(点) 事象単体が意味を持つ場合に、時刻を含めてそのときの状況のデータを記録する 例 エラーログ クラッシュログ 変化量を捉える(線…

Ruby2.4に上げたら"ArgumentError: key must be %d bytes" のエラーが出るようになったことの調査と暗号化の復習

Rubyの2.4以上から、共通鍵暗号を扱うOpenSSL::Cipherにおいて、暗号化鍵と初期化ベクトル(IV)を設定する際に、指定した暗号化方式の鍵長のビット数を超えて指定した場合、ArgumentErrorを返すようになりました。 irb(main):001:0> require 'openssl' => tru…

壊れたgzipを調べたときのメモ

壊れたgzipがあり、展開できないと言われて調査したときにどうやったかのメモ gzipとは www.gzip.org www.futomi.com zcatで展開できるところまでしてみる zcatは破損した位置までのデータを修復できる。 展開できたデータの最後を確認して修復する。 バイナ…

CloudWatch Alarms の Treats Missing Dataの意味

よくわからかなかったので整理 docs.aws.amazon.com configure(コンソール) configure(api) 意味 英文 Missing missing 過去に遡ってデータを見に行く the alarm looks back farther in time to find additional data points Good notBreaching 欠落データポ…

AWSを触り直したときに参考にした記事

www.slideshare.net recipe.kc-cloud.jp www.server-memo.net qiita.com qiita.com

特定のJSONの圧縮効率を調べてみる(snappy、gzip、xz、lz4、zstd)

snappyが入っているのは察してほしい データの詳細は後で書く。(これも察して欲しい。だいぶ偏ったデータではある) これから詳細をちゃんと書くが、一旦ここにおく マシンスペック iMac使っています。 % system_profiler SPHardwareDataType Hardware: Hardw…

デーモンとは

メモ書き程度に デーモン 語源は悪魔のデーモンではなく、守護神のほうらしい。 デーモン (ソフトウェア) - Wikipedia まあ、それはそれとして デーモン(daemon)は長時間動き続けるプロセスのことです。 APUEのデーモンより ファイルモード作成時マスクをuma…