limitusus’s diary

主に技術のことを書きます

CircleCIをv1からv2に上げたら4倍速くなった話

tl;dr 今までRubyのテストをCircleCI v1で行ってきましたが、v2がGAになったことを受けてv2への移行を行いました。 結果、それまで2分40秒ほどかかっていたテストが40秒台で完了できるようになりました。この過程と効果について紹介します。

terraformのバージョンを上げようとしたらハマったのでメモしておく

terraform 0.9.11を使っていたが、あるとき0.10系がリリースされたのでバージョンアップを試みたところ、かなりハマってしまったのでメモ。 tl;dr terraform init -backend-config=/path/to/config -reconfigure

この時代にupstartに関する知見をいくつかまとめておく

背景 なぜSysVinitからupstart、さらにsystemdへと進化が進んでいる中、upstartなのかという疑問が当然ありますが、理由は簡単で最近Amazon Linuxを使っているため。 Amazon LinuxはCentOS6ベースで構築されており、入っているのはsystemdではなくupstartな…

AWSのコストを取得するgemを調べた

AWSは料金表を提供していますが、JSONを取得してごにょごにょ…と自分でやるのは何か違う気がします。どうせgemくらい誰か作ってるだろう、ということで少し調べてみました。 tl;dr 今のところamazon-pricingを使うか、やっぱり自前で書くのがいいのではない…

RDS logをRubyでダウンロード

AuroraのAudit log検証をしていて、「これ定期的にS3にアップロードしないと消えるよね?」って話になったので、まずはRDSから取ってくるとこからだね…ってことでやってみることにしました。 候補手段 方法はいくつかあるんですが、 1. rds-cliを使う もうde…

terraformのprovider aliasを使うときのtips

最近よくterraformで構成管理とか構築をやってて、ハマったのでメモ。 やろうとしたこと AWS ap-northeast-1で主な構成を組んでいて、CloudFrontでの静的コンテンツ配信をhttpsで行いたい。このときACMを利用するが、証明書はus-east-1に配置する必要がある…

はてなブログに移行しました

ふと思い立ったのではてなダイアリーからはてなブログへと移行を行いました。 既存記事は移行ツールにより全てリダイレクトされているはず… 一番人気の Server::Starterに対応するとはどういうことか - limitusus’s diary も正常に移行されています。

El CapitanでUSB-Serialを使う

OSX

その手の人には常識かもしれないんですが、OS X 10.10あたりからドライバ署名されていないもののインストールができなくなってますね。 手元にあるUSB-CVRS9はLinuxで問題なく動いていたので気付くのが遅れてしまいました。サンワサプライ USB-RS232Cコンバ…

EBSがattachされたらSlackに通知する仕組みを作った

AWS Lambdaを以前から使ってみたいなあと思っていたのですが、「何かの操作にhookする」というので試してみました。今回は「任意のEBS VolumeがEC2 instanceにattachされたら(AttachVolume)Slackのwebhookを叩いて通知する」というのをやってみました。Pytho…

ISUCON5 予選通過してきた

9/26,9/27で開催されたISUCON5の予選に9/27分で参加して通過してきました。3人チームで出場しましたが、自分の視点での時系列でまとめておこうと思います。 (書いてある内容は自分の作業だけではありません) 概要 spec: n1-highcpu-4 (4vCPU, 3.5GB RAM) 1台…

YAPC::Asia 2015レポ

去る8/20,8/21でYAPC::Asia 2015に行ってきました。2012,2013ではstaff参加し、2014,2015は普通の参加者です。 今年は最後のYAPC::Asiaということで、(個人スポンサーチケットは買えなかったけど)参加してきました。 本当はスタッフ参加できればよかったのだ…

うるう秒をテストしたら仮想インタフェースが落ちた話

今月末はうるう秒が予定されていますね。 http://jjy.nict.go.jp/news/leaps2015.htmlこれについては様々なところで「何が影響を受ける?」「どう対応する?」などが書かれています。今回はその中でも、「事前に試験環境でうるう秒を入れてみる」ことについ…

Perlからshared objectの関数を呼び出す

今回のお題 foo.so に含まれている関数 void func(void) をPerlから呼び出す。 プロトタイプ宣言の通り、引数は取らないし戻り値もない(あるいは見ない)。 やりかたはいくつかあって、 普通ならXSモジュールを書いて対応する。 ただこのシンプルな目的のた…

Perlのglobはもうshellを呼ばない

もう10年以上前の話だが、メモ。IPAのセキュア・プログラミング講座にある4-2. Perl の危険な関数には以下の記載がある。 便利な<> 構文,glob関数であるが,実は内部的にシェルを呼び出している。そのためリスト7の1行目のような文字列を渡した場合,パス…

PerlでGoogle Calendar APIを勉強

アラートのメール通知がきたらGoogle Calendarに記入しておくとあとで振り返るのが簡単なんじゃないかなーと思ったので、まずはお勉強から。 要素 できるようになってから振り返ると、以下の要素を理解する必要があった。 REST OAuth 2.0 Application Creden…

PerlでTwitter API SSL化に対応するたった1行

手元でTwitterの古いpostを削除するスクリプトをcron実行してるのですが、Twitter APIってSSLのみ対応になったのをすっかり放置してしまっていました。 cron実行に失敗してメール通知が来たので1週間くらい経ってようやく対応。Net::Twitterを使っているので…

Parallel::Fork::BossWorkerAsyncがいい感じ

先日 id:hirose31 と 並列処理はParallel::ForkManagerとかParallel::Preforkが定番だけど、もうちょっと効率よくやりたいこともある P::ForkManagerはタスクごとにforkするので負荷の分散は綺麗にできるが、タスクの数だけforkが発生して効率がよくない P::…

Server::Starterに対応するとはどういうことか

StarletやStarmanと組み合わせてよく使われているServer::Starterですが、普段気にしないような部分を読む機会があったのでメモ。Server::Starterは --port (TCP) や --path (Unix Domain Socket) を渡すとこれでlisten(2)して起動するworkerに引き渡してく…

YAPC::Asia 2013 Staff Report

去年の YAPC::Asia 2012にStaff参加してきた - Limitの日記 に引き続き、今年も YAPC::Asia 2013 のStaffとして参加してきました。 今年も「ブログを書くまでがYAPC::Asia」ということで、書きます。今年は僭越ながら多目的教室2という部屋のリーダーを仰せ…

MacBook Air 11インチ用ケース

4年くらい前に800円くらいで買ったケースがだいぶボロボロになってしまったので、いっそのこと、ということで新しいのを買うことに。 近所の電器店で眺めて、収まりのよさそうなやつを選択。いい感じ。だが、結果的にはAmazonで買った方が安かったじゃないか…

MacのDockが暴走した

最近メインで使っているのはMacbook Air (Lion) なのだけど、数日前から妙に動きが重くなり、ファンもうるさくなったのでちょっと調べてみた。 まずhtopで長めてみると Dock がCPU 100%食っていた。原因はまずこれだ。 減少としては17秒くらいに1回DockがSIG…

YAPC::Asia 2012にStaff参加してきた

日本で最も大きなPerlの会議、YAPC::Asia 2012に参加してきました。 去年は学生チケットで参加させていただいたのですが、今年はボランティアスタッフとして。ということで、スタッフをやりながら印象に残った発表などを書いていきます。 前夜祭の日は参加で…

Githubの証明書問題をまっとうに解決する

github SSL certificate problem - A Life Less Ordinary と同じ問題に遭遇してしまったので、まっとうな解決策を探ってみたところ、無事に解決できたのだが、どうやら同じようなことをしているページが見つからなかったので書いておく。 error: SSL certifi…

Twitterの過去履歴を消去するtwdelを書いた

今まで数多くのTwitterクライアントアプリが書かれてきて、誰もが様々な方法で手軽にPOSTできるようになっている。 一方、過去の自分の歴史を抹消したいと考える需要もあるにもかかわらず、その需要に応えるアプリケーションは見当たらない。そこで、今回 tw…

libsqlite3.so を差し替える

ちょっと聞かれたので調べてみた。 目的 オリジナル libsqlite3.so.0 を実装したので、これを /module/libsqlite3.so.0 とし、 Python から使えるようにしたい。 Python で import sqlite3とすると最終的に /usr/lib/python2.7/lib-dynload/_sqlite3.so が読…

iccをインストールした記録

Intel C コンパイラって買わないと使えないのかと思ってたけど、非商用ならば無料でインストールできることがわかったので実際にやってみた。 ダウンロードまで これは 2011 年 11 月 18 日の操作記録だが、サイト更新に伴いページ構成が変更されたりリンク…

perlbrewがぶっ壊れた話

ちょっと事情があってperl5.6.2をperlbrewでインストールしたらperlbrewがぶっ壊れてしまい、そんな古いものでトラブったレポートなんて書かれてなかったのでその話。

lookupDictionary.js を直してみた

とっても便利な Vimperator プラグインの lookupDictionary.js。 どうやら ALC 側で XPath が変更されてしまったらしく結果が帰ってこなくなってしまったため、簡単に修正。 Index: lookupDictionary.js ==================================================…

Python で signal と threading を両立してみた

経緯 最近書いているプログラムで無限ループするワーカースレッドを立てまくるものがあって, それを signal で安全に終了させる手段が知りたかった. 課題プログラム 以下のようなプログラムがあります. import threading import time def loopfunc(event): p…

Embarrassingly Parallel なプログラムを pthread で並列化してみた

C

やったこと 後輩の授業で Embarrassingly Parallel なプログラムを並列化するという課題が出ていたので、ちょっとやってみました。実際に使ったコードはgithubで公開中です。公開は課題の締切後に行いました。 課題1 1次元関数の数値積分の区間分割による並…