読者です 読者をやめる 読者になる 読者になる

眠すぎて明日が見えない

我が人生、眠さに勝るもの無し

programming

MyISAMの暖気してくれる君をgoで書いた

github.com 雑ですが、必要に迫られて作ってみました。 作成の経緯 RDS上でMyISAMの暖気がしたかったのです。RDSだとデータディレクトリcatでOSのキャッシュに載せるとかできないからクエリなどでできないか調べつつ作りました。先人の方々で作っていらっし…

fizzbuzz

書いた gist.github.com

ECSでSpotFleetを使う

ECSでSpotFleetを使うための設定です。

ECSへCircleCI + ecs-deployを使ってデプロイする

ESCへの自動デプロイの設定をやったのでその備忘録です。ecrにリポジトリを作って、コンソール上から手動プロイできる状態まではできている前提で話します。 circleciへ環境変数を設定する ますcircleciのwebコンソールのtarget-project -> settings -> Envi…

kramdownというgemについて調べる

最近kramdownというgemを触る機会が増えてきたのですが、使い方など参考にしようとググっても実際に使ってみた例などあまり多くはないようなので公式のドキュメントを参考にしつつ、実際に使ってみようと思う。長くなりそうなので今回は簡単な紹介だけします…

【MySQL】idカラムをとりあえずつくる

私は新規で作成するテーブルにはほぼ必ずidカラムを作成しています。定義は以下のような感じです。 `id` int(11) NOT NULL AUTO_INCREMENT, ... PRIMARY KEY (`id`) 自分がidカラムつけるのは主に、データ量が膨大なテーブルを扱う時にシーケンシャルな処理…

勤怠のChrome拡張を社内向けに公開する

先日勤怠のChrome拡張を作ったというブログを書きましたが、一人でしばらく使ってみて便利だったので今回社内向けに公開しようとおもって調べました。 macotasu.hatenablog.jp 社内向けに公開する方法 社内向け = 一部のユーザに限定して公開とした時に現状…

勤怠のChrome拡張を作った

会社の出勤時にいつも Chrome起動 -> ブックマーク開く -> 勤怠のページ開く -> 出勤ボタンを押す としていてこの操作に20秒 ~ 30秒ぐらいかかっていた。会社の出勤時間ギリギリでついた時とかこの時間がちょっと煩わしくてChrome拡張を作った。Chrome拡張に…

Railsでサーバー時刻を任意の時間にする

Railsとかに限った話じゃなくて、開発中のサーバー時刻を任意の時間に変更したいといったことはよくあると思う。 そうかの有名なアニメ、「時をかける少女」でいうタイムリープをしたいということである。 タイムリープする方法は アプリケーションの内部時…

多段SSHする際の.ssh/configの設定

多段SSHの設定いつも忘れるのでブログる。 まず設定の例から書くと Host fumidai HostName hoge User macotasu Port 10022 Host target-server HostName fuga User macotasu Proxycommand ssh -CW %h:%p fumidai こんな感じでsshの設定をかいて多段sshにする…

DDLとかの検証にDummyデータをさくっと用意するSQL

前にダミーデータサクッとつくりたいわっておもって、便利ストアドプロシージャつくったのでブログにも書いておく。 gist.github.com SELECTして結果をINSERTするところをコピペしていけば、ストアドプロシージャなんかつかわないでもいいんだろうけど、DRY…

NoPaste作った

丸一日かかってしまったけど、ちゃんと作ってみた github.com 構成 Kossy DBIx::Sunny etc... DBIx::Sunny初めて使ったけど、シュッと使えて便利だった 感想 今まで一人で一からアプリケーションを書くことは、あまりなかったから良い経験になった それと共…

ISUCON5 本戦での学び

ISUCON5の本戦をchatzmersとして参戦してきました。 結果からいうと惨敗でした。 敗因としてRobert C. Pike氏の下記の言葉に全て詰まっていると思います。 推測するな、計測せよ どういうこと? 今回使用されていたデータベースがpostgresでした。 僕たちは …

ISUCON5 予選4位通過でした

社内ISUCONには何度か参加したことあるものの、社外の人も参加するISUCONには初めての参加でした。 チーム名は「chatzmers」で、弊社の2013年新卒同期の @m0t0k1ch1 と @rg_gs と 僕 で出場し、最終スコア 21242 で予選総合4位で通過しました。 isucon.net …

DateTimeオブジェクトそのまま比較するのと、DateTime->epochで比較するのどっちが速いか

ふと気になったのでベンチマーク取ってみた。 ベンチマーク #!/usr/bin/perl use strict; use utf8; use warnings; use DateTime; use Benchmark qw(:all) ; my $now_1 = DateTime->now; my $now_2 = $now_1->clone; my @times = ($now_1, $now_2); my $toda…

commitにhookして、gofmtを実行する

golangっぽいコードに整形してくれるgofmtをcommit直前に実行し、 gofmtの結果追加の差分がでたら、1度commitを取りやめるようなcommit hookを書きました。 gofmtは差分があってかつ、拡張子が.goのファイルにのみ実行されます。 デモ コード gist.github.co…

変更のあったテストファイルだけ実行したい

ローカルPCで新しく追加したり、修正加えたテストを実行する時 prove -v t/hoge.t t/fuga.t ... みたいに普通にやっていたんだけど、 git使ってるし、変更あったファイルをテストするのもっと楽にできるやんって思って #!/bin/sh git diff --name-only HEAD …

go-irceventでbotを作った

go-irceventでbotを作成しました。 本当は既にあるperlで書かれたbot使えば良かったのだけれども、 どうぜやるならgolangでbot書きたいなって思って勢いで作りました。 気にした点とか 何も考えずにgo-ircevent使うとif Aというコマンドの時はみたいな条件分…

容量がいっぱいになってmysqlが落ちた

容量がいっぱいになってmysqlが落ちたました。 もちろんテスト環境です。 落ちた時の状況としては テストデータ作成スクリプト流している 突然のRollback、mysqlに繋がらなくなる エラーログに'full~'みたいなエラーででてる っていった感じです。 サーバー…

S3から複数のファイルを落としてくるコマンドをGoで作ってみた

AwsConsoleでS3からファイル落とそうとすると,一個ずつポチポチしなきゃいけなくて辛いなーって思ったのでGoで書いてみました。※1 github.com 導入 1.aws configureでaccess_key_idとsercret_keyを設定 $ aws configure AWS Access Key ID [NONE]: *** AWS S…

mysqlでユーザ定義変数をつかう

SELECTで取ってきたレコードをソートして、ソートした結果に連番でidふるみたいなことできないかなーとおもってmysqlのドキュメント読んでたら変数を使えることを知りました。 MySQL :: MySQL 5.7 Reference Manual :: 9.4 User-Defined Variables 変数使え…

バグのあるコードを見つけたい

この間他の人が作ったコードを実行したのけれど、そこにバグがあってつらーってなりました。 でもそのコード自分もレビューしてたし、なんで見つけられなかったのかなーって考えたことをまとめます。 作成した実装が本番で動くまで まず、実装したものが本番…

RowをInsertしようとしてすでにRowがあったら取ってくるメソッドの扱い

最近single_or_createというメソッドをつかっていて、つらくなったのでメモ。 まずsingle_or_createとがどういうコードかというと、 sub single_or_create { my $self = shift; my $row = eval { #…insertの処理を走らせる }; if (my $e = $@) { # ..depulic…

Wookmarkを使おうとしてハマった

wookmarkというpintarest風なタイル上のUIを実現するplugin使おうとしたけど、使い方がいけなかったらしくハマった。 やっていたことはhead内でjsの定義とjqueryの定義かいてたんだけど、実際はbodyに定義されている要素に対して動くものだから、bodyの閉じ…

ActiveRecordでRowが見つからなかったらnilを返したい

ActiveRecordでfindで検索してRowが見つかった時にActiveRecord::ResultNotFoundがでて自分はnilを期待していたのに(`ェ´)ピャーってなってドキュメントよんだのでメモ。 find findを使った時は、idを検索条件に入れて使う。またはprimary_keyでも大丈夫そ…

データを取ってくるときのrow reads減らしたい

以前書いた記事で limit,offsetを安易にrow readsが増えて大変 - 眠すぎて明日が見えない ^のようにlimit offsetを安易にやると辛いみたいな話を書いたけど、じゃあどうすればいいの?っていう部分まで書いてなかったので書きます。(ほとんど教えてもらった…

安心してスクリプトを実行したい Script::Nohupの紹介

この記事はPerl Advent Calendar 2014 - Qiitaの13日目の記事です。 12日目の記事はzoncoen さんの Plagger 入門 in 2014 でした! Perl書き始めてもうすぐ2年目。 まだまだ若輩者ですがそろそろ便利モジュールを作ってもいいのでは!?っておもって Perl Ad…

Deploy神社の反省点

以前作ったDeploy神社だけどあーイケてないなと思ったことがあったので書いておきます。 主に以下の点 お祈り捧げると大抵の日でDeployできなくなるので困る Deploy出来ない場合はむしろ、Deployしやすくするように前向きにすればよかった 前向きにすればよ…

limit,offsetを安易にrow readsが増えて大変

何十万件もあるデータで my $limit = 1000; my $offset = 0; while(1) { my $rs = models("Schema::Hoge")->search({},{ limit => 1000, offset => $offset, }); last if $rs->count <= 0; while(my $row = $rs->next) { #何らかの処理 ... } $offset+= $lim…

Swapした時の原因の調べ方

swapはメモリが足りなくなった時に 現在使われていないプログラムをファイルに書き出したりすること。 原因はtopコマンドして<,>でソートしたら原因にあたるものが上の方に出てくる。 メモリ食っている原因を対処して、 swap inしてハードディスクにのってい…

Hashの可読性

メソッド名に明確なルールがあって safixにrsがついてたらResultSetが返ってきて、infoがついていたらHashRef が返ってくるなど決まっている時は問題ないけど、このメソッド 何が返ってくるか微妙だなーって時がある。 例えば以下 sub { my $self = shift; #…

Deploy神社APIを作った

deploy前って不安ですよね。 deployしたあとになんか事故があって六曜を調べると 「今日仏滅だったのかーー!」 ってなりますよね。 事前に今日の六曜を知っておけば、そんな事故も防げるかも。 そこで、作ったのがdeploy神社APIです。 https://deploy-shrin…

デジタル知育アプリ"のってこ!”をパブリックにしたよ

MacoTasu/notteco MacoTasu/notteco · GitHub したよ

PlayFramworkを使ってハマったメモ

忘れないようにメモ 問題 [[MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1]] みたい…

PlayFrameworkをつかってみた進捗

ここまでの進捗をメモ sclickをつかってmodelsの定義を書く部分と evolutionsをつかったsqlスキーマの仕組みまでやってみた。 MacoTasu/kaeru MacoTasu/kaeru at 4d4162427a1f766cd198338c6938900caa2f4ee7 · GitHub ^進捗分までのコミット。 とりあえず最低…

Play FrameworkでのRouting

scalaではplayというフレームワークがデファクトに的な存在になっているそうです。 そこでplay2.3をさっそくつかってみたので、つかってみてわかったことを少しずつ書いていきます! 今日はRoutingの書き方をメモ。 Routing /project/conf/routes ^のroutes…

Scalaとちょっと戯れる

rubyやってみた時もそうだったけど、まずは軽量フレームワークに触ってみると こんな感じなのかーってなりやすいからとりあえずScalatraいれてみた! (※rubyをさわったときはSinatraいれた) インストール手順は公式サイトのまんまなのでリンクを貼らせていた…

RedisのExpireがTest::MockTimeの影響うけないやーんってなった話

Test::MockTimeつかってもRedisって実際の時間見てるから set_timeしてもいい感じにテストかけないよねってなった。 しかたないからセットする時間をmockで短めにして sleepつかってテスト書いたけど、これっていい感じの モジュール無いのかなってなったの…

チームで働くことを考えると幸せになるのでは?

特定の成果物において、複数人の担当で取り組むときに、みんなで開発をしているという意識が薄いと 誰も幸せにならないなと思うことがここ最近たまにある。 協力して仕事をするうえで最低限次の事が必要かなと最近おもう。 お互いの状況を把握するためのMTG…

空の行に対してUPDATEをかけてDeadlock

タイトルのような実装があってDeadlockしたのでメモ 例えばテーブルAがあったとして mysql > BEGIN; mysql > UPDATE A SET hoge=1 where id = 1 を実行したとする。 この時、id=1 でヒットする対象がない場合、空の行に対してロックを獲得します この時それ…

jsonチェックの方法

jsonのsyntaxがまちがっていて 他の人に迷惑をかけてしまったので反省をかねてメモ cat {jsonファイル} | python -m json.tool これでチェックできるらしいです。 今後気をつける..

301と302リダイレクト

301リダイレクトは常に同じ所に返すときにつかって 302リダイレクトはリダイレクト先が変わるときに使う。 googleとかの検索エンジンは転送先と転送元の 情報をみていたりするからSEOとか考えたときに かいたことしっておくいいかもというメモ

gh-browse

ghに gh-browse みたいなコマンドがあってこれで対象のgithubリポジトリをブラウザで開けた。 しらなかった。便利。

plファイルの中で外部plを実行する時の引数の扱い

例えば hoge.plが use string; use utf8; use warnings; my $script = shift @ARGV; do $script; 1; みたいになっていて perl hoge.pl fuga.pl test みたいな感じで実行した時に、 hoge.pl内でfuga.plをdoをつかって実行して、 ついでにtestという引数も渡し…

日本人の名前をよしなに作ってくれる君

ダミーデータの作成で名前入力することあったんだけど "Test"とかだとどうも微妙だし、なんかよしなに名前作って くれるモジュール無いかなと探してみたらあった。 Mock::Person::JP 最近できたみたいで使いやすくて最高でした。 参考URL : http://pawafuru.…

viでの移動

h 左 j 上 k 下 l 左 移動できた。 色んなアプリケーションのショートカットキーになっていて 何かと便利なので使ってこ

手順書かいたほうがいい

最近あったことでとある環境に、変更を反映するときに 作業内容忘れそうだなとおもって手順書を書いたのだけれど、 手順書のおかげで何事も無くスムーズに反映作業できた。 書くのは割と当たり前なのかもれしれないけど、 自分で手順をかいて、◯◯の作業をし…

EmacsでReadonlyのファイルを編集する

C-x C-q でできた。便利。

mysql range partitionでなぜ2日分作成するのか

mysqlのrange partitionは今日と明日の2日分つくるのがよくあり なぜか調べた。(というか聞いた) 今日の分しかpartitionを作成しないで日付が変わると 次の日のpartitionがないのでその間にinsertされてる新しい要素は catch_all節でドラえもんの4次元ポケ…