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

デフォルトACLとumaskの関係

LinuxにACL(Access Control List, アクセス制御リスト)という仕組みがある。これを使うと通常のファイルパーミッションでは管理できないような、ファイルの所有者やグループ以外のユーザーごとに別々の権限を設定できる。ACLにはアクセスACLとデフォルトACL…

Golang の Writing Web Applications をやった

なぜ これまで wc や ab を実装してみて、コマンドライン上で実行するプログラムの雰囲気はわかってきた。Webアプリケーションを書く時はどんな感じか知りたい。 内容 Writing Web Applications は主に net/http, html/template パッケージを使って簡単な Wi…

Go 言語で Apache Bench (ab) を実装してみた

Go 言語で Apache Bench (ab) を実装してみた。 https://github.com/takatoshiono/go-ab なぜか 以前、wc コマンドを実装した。その時に ab も候補に入っていたけど、ab は http 通信をするプログラムなので、より単純な wc を選択したのだった。その次に何…

プログラミング作法 という本の思い出

「プログラミング作法」が再刊行されるらしいので昔話を書いておこう。 2001年、高専を卒業した私は新卒として働き始めた。Microsoft のVisual Studio を使って Windows 向けのソフトウェアを作るのだ。学生時代の授業で C, C++ は習っていたけどプログラミ…

Go 言語で wc を実装してみた

Go 言語で wc を実装してみた GitHub - takatoshiono/go-wc: Go implementation of wc command for practice なぜか A Tour of Go をやり終えた時「全然うまく書けない」というのが感想だった。もっと Go 言語のコードを読み書きする必要がある。 そして読む…

A Tour of Go をやった

A Tour of Goが終わってうれしいので記録しておく。 きっかけ 直接のきっかけは gh-ost の登場で、もともと何か新しいプログラミング言語を学びたいけど、何にしようかなと考えていて gh-ost が引き金になった。 MySQL は好きで、オンラインマイグレーション…

Rails.cache と Redis::Store と Rack::Attack

自分用メモ。 遭遇した問題 Rack::Attack で redis に保存したデータに有効期限が設定されない namespace を定義した時だけ問題が発生する 結論 Redis::Store が古かった。1.1.4 を使っていたが、有効期限系のメソッド(expire, setex, ttlなど)が namespace …

Ruby のしくみ を読んだ

なぜ読んだか メタプログラミング Ruby を読んだ ので、この勢いで Ruby のことをもっと深く知りたかった。 どうだったか エキサイティングな体験だった。 この本には Ruby が Ruby コードをどうやって実行しているのか、ということが書いてある。字句解析し…

メタプログラミングRuby 第2版 を読んだ

なぜ読んだか いつかは Rails のプラグイン的なものも作ってみたい。興味のあるライブラリのコードを読んだりしているけど、同じようには書けそうにないし、もう少し基礎を身につける必要があると感じていた。 どうだったか Ruby のオブジェクトモデルについ…

Nexus 5X 買った

Nexus 5X 買って3日ほど使ったので感想を書いておきます。 Google ストアで買う人、住所、氏名は英語で入力しましょう。日本語で書くと宛名がおかしなアルファベットの住所になってて羽田で止まってしまいます(ヤマト運輸の羽田クロノゲートというところに…

Redis入門 インメモリKVSによる高速データ管理 を読んだ

動機 仕事で Rails アプリケーションにジョブキューを導入したい。 個人的に MySQL が好きなのでジョブキューとして Delayed Job を検討したが、ペンディングジョブが数万単位になるとスケールしないことがわかってやめた。聞いた話だけで判断するのはよくな…

IIJmio の音声通話機能付きSIM(みおふぉん)にMNPした

約15年使ったドコモからみおふぉんにMNPした。いくつかポイントがあるので書いておく。 みおふぉんはドコモの端末をそのまま使えるので選んだ。IIJは昔から信頼してる。 テザリングできない問題 いま使ってる端末は Xperia A (SO-04E) という2年前の機種で、…

オープンソース・クラウド基盤 OpenStack入門 構築・利用方法から内部構造の理解まで を読んだ

動機 会社でOpenStackベースのプライベートクラウドが使われ始めている。OpenStackのことは全く知らない。自分は主に利用する側になるけど、どういう仕組みで動いてるのか知りたい。あとNovaとかNeutronとか単語が意味不明でつらいのでわかった気になりたい…

vim でファイルを開いたら文字化けしていた時の対処法

vim

3回調べたらブログに書くシリーズ。 前提 MacVim-KaoriYa を使っている version 7.4.769 fileencodings=guess,ucs-bom,latin1,iso-2022-jp-3,utf-8,euc-jisx0213,euc-jp あるファイルだけ vim で開くときに文字化けする そのファイルの文字コードは知ってい…

Rails で URL と ルーティング設定のマッチ処理をどこでやってるのか調べたログ

きっかけ Railsアプリケーションでは URL の末尾に .json などと書いてレスポンスのフォーマットを指定することができる。先日、このフォーマット部分の末尾に記号をつけてリクエストしても正しく動くということに気がついた。 /v1/users.json (これが正しい…

俺のキャリア・キーノート

今年のペパボの新卒エンジニア研修ではキャリア・キーノートという試みを行っている。詳しくは ペパボ新卒エンジニア研修2015が始まっています | blog: takahiro okumura に書いてあるので、興味ある人は読んでみてください。とても充実しててうらやましくな…

2015年上半期の目標を振り返る

2015年も後半に入ったので 2015年上半期の目標 - takatoshiono's blog を見ながら上半期を振り返ってみたい。上半期はこのような目標を立てていた。 Ruby on Rails と MySQL に詳しいおじさんになる 実際どうだったか?おじさんになれたのだろうか? よかっ…

波ダッシュをいい感じにする Wavedash という gem を作ってます

これは何か? 波ダッシュのような文字を変換するための ruby 用ライブラリです。 takatoshiono/wavedash · GitHub 対象ユーザー アプリケーションの文字コードは utf-8 だが、MySQL の文字コードが ujis, eucjp-ms, cp932, sjis である アプリケーションの外…

MySQL のストレージエンジンについて調べた

なぜか忘れたけど MySQL のストレージエンジンについて調べたので書いておく。 はじめに断っておくと MySQL 5.6 以降について書いています。 MySQL の「ストレージエンジン」とはなにか? ストレージエンジンとはInnoDBのことである。 MySQLはプラガブルな(…

Rails のクエリキャッシュの仕組みを調べた

はじめに Rails のログファイルに CACHE (0.0ms) という行が出力されることがある。 CACHE (0.0ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = '1321459' LIMIT 1 [["id", "1321459"]] ここから以下のことがわかる。 このリクエストでこのクエリが…

MySQL の Select tables optimized away とは何か?

MySQL で EXPLAIN を使って実行計画を調べていると Extra フィールドに「Select tables optimized away」というメッセージが表示された。これはなんだろうか? mysql> explain select max(id) from products ; +----+-------------+-------+------+---------…

SQLパフォーマンス詳解 を読んだ

どういう本か データベースのインデックスについて解説している本。Bツリーインデックスの内部構造、効率よくインデックスを使う方法、実行計画の見方などが書いてある。Oracleデータベースの用語を使って書かれているけど、「原理は他のデータベースに…

MySQL 5.6 のオンラインDDLについて調べた

今更だけど MySQL 5.6 ではオンラインDDLの機能が追加されている。今日はこのオンラインDDLについて勉強したことを書いてみる。 MySQL のマニュアル MySQL :: MySQL 5.6 Reference Manual :: 14.11 InnoDB and Online DDL にいろいろ書いてある。いまから書…

InnoDB のロック待ち過多でデッドロックするやつ

ロック待ちでデッドロック InnoDB は同じロックを待つクライアントが 200 を超えるとデッドロック扱いになる、というやつがある。 このへんに詳しく書いてある。 Open database life: InnoDBのAUTO_INCREMENTが遅い問題は5.1でどう改善されたのか 同じロック…

InnoDB で Consistent Read にならないケース

一貫性のある非ロック読み取り InnoDB では MVCC (multiversion concurrency control) という仕組みによって 一貫性のある非ロック読み取り(Consistent Nonlocking Reads)を実現してる。 トランザクションの分離レベルが REPEATABLE READ (デフォルト) の…

gdb で MySQL 5.0.96 のスロークエリログを追ってみる

1つ前のエントリ Query_time - Lock_time > long_query_time - takatoshiono's blog で以下のように書いた。 ソースコード MySQL 5.0.96 で Lock_time が 0 になるのが気になったのでソースをダウンロードしてきて追ってみた。Lock_time で grep すると以下…

Query_time - Lock_time > long_query_time

MySQL(InnoDB)でロック待ちタイムアウトになるクエリはスロークエリログに記録されるのか? 気になったので調べていた。 ロック待ちタイムアウト あるトランザクションで UPDATE 中の行を他のトランザクションから UPDATE しようとするとロック待ちになる ロ…

2015年上半期の目標

2015年が始まってから1ヶ月が過ぎた(早い)。仕事の目標を決めるついでに個人の目標も決めたので書いておく。個人的なことすぎるので書くべきか迷ったけど、書かないより書いた方がいいことがありそうだから書いておく。 目標 Ruby on Rails と MySQL に詳し…

rbenv + ruby-build はどうやって動いているのか

rbenv といえば 複数バージョンの Ruby を切り替えて使うための環境を提供してくれる便利なツールとして欠かすことのできないものですが、機会があってそれがどうやって動いているか調べたので、ここに書いておきます。また ruby-build は ruby をインストー…

Mac OS X をアップグレードしたあとに ruby とか入れ直した

仕事で使ってる MacBoox Air の OS がまだ Mountain Lion だったので、ようやく Mavericks にアップグレードした(Yosemite が出てるのにいまさらですけど…)。そしたらいろいろ動かなくなったのでやったことを書いておく。 1. homebrew のシンボリックリン…

Python でタイムゾーンを考慮した now を取得する

Python におけるタイムゾーンの取り扱いについて、正確に書こうとするとなかなか難しいので、今回やったことだけシンプルに書きたいと思います。 Python でタイムゾーンを扱うのは難しい。標準ライブラリには tzinfo というタイムゾーンを表すための抽象クラ…

RSpec で配列の検証をする方法を整理しておく

問題 RSpec で配列の検証をするのに以下のようなコードを書いた。 describe '#payments' do let(:account) { create(:account) } let!(:payments) { [ create(:payment_foo, account: account), create(:payment_bar, account: account), create(:payment_ba…

Ruby の next 、ついでに Perl も

Ruby の next は引数を取れる next はループのなかで使って、後続の処理をスキップして次のターンに行くというのが役割だと思っていたけど、Ruby では yield 呼び出しの脱出にも next を使う。 nextはもっとも内側のループの次の繰り返しにジャンプします。 …

自分なりのルールを築いていく作業

これは Pepabo Advent Calendar 2014 - Qiita の4日目のエントリです。 昨日は morygonzalez さんでした。明日は id:kitak さんです。 今日感じたことを書く。 プログラミングって自分なりのルールを築いていく作業だなあ、と感じた。 プログラムには必ずし…

浮動小数点数による計算のこと

コンピュータによって表現された浮動小数点数は近似値であって正確な数ではない。というのは、プログラマのみなさんなら周知の事実だと思いますが、普段あまり意識することがないため、そのことを忘れていたりする人もいるのではないでしょうか。 近似値であ…

何もないところから AngularJS のひな形を作ってブラウザで表示するまで

はじめに 最近の JavaScript 関連の技術にはほとんど触ったことがなかったので、今回ひととおりセットアップしたことでいろいろとカルチャーショックを受けた。記念にブログに書いておこうと思う。 ちなみに、JavaScript 関連の技術が進化していくスピードは…

情熱プログラマー ソフトウェア開発者の幸せな生き方 を読んだ

どういう本か? この本はソフトウェア開発という仕事に携わる人が、自分のキャリアについてどう考えて、どう行動していけばいいか、ということについて書かれている。著者は Chad Fowler さんという人で Rubyist Magazine - Chad Fowler on Ruby にインタビ…

Android Stuido で Ctrl + H を Backspace に割り当てる

最近、1日1時間くらい Android Studio | Android Developers を使ってる。 問題 コードを書いている時に「あっ」てなるランキング1位はタイプミスした時に条件反射で Ctrl + H をしてしまうことだった。 Android Studio では Ctrl + H すると Type Hierarchy…

dotfiles をちゃんと管理する話

dotfiles って? dotfilesというのは先頭にドット(ピリオド、これ -> .)が付いたファイルのことで、Linux や Mac などでエディタやシェルの設定ファイルがこの形式になっている。dotfilesには自分が快適に作業するための設定がいろいろ書いてあるので、無…

Amazon Glacier からデータを取り出すときには気をつけようね

注意 この記事は2014年7月5日時点の情報に基いて書かれています。Amazon Glacierの最新の料金体系についてはAmazonの公式ページをご参照ください。 料金 - Amazon Glacier | AWS よくある質問 - Amazon Glacier | AWS 昨日の出来事 Amazon Web Services から…

リファクタリング Ruby エディションを読んだ

読んだ理由 Ruby を使い始めて間もない頃に(3ヶ月ほど前)、隣の席にいた同じチームの同僚が「これいいよ」って教えてくれたのがきっかけで、以下のような思いを持って読むことになった。 オリジナルのリファクタリング―プログラムの体質改善テクニック (Ob…

デザインパターンとともに学ぶオブジェクト指向のこころ を読んだ

読んだ理由 最近、ソフトウェアの設計力が不足していると感じる。もっといい感じにクラスを設計して、オブジェクト指向ぽいプログラムを書けるようになりたい。しかもスピード感を持ってやりたい。ということで、いまさらだけど、オブジェクト指向についても…

Ruby と Rails を覚えるために約1ヶ月半でやったこと

仕事で Rails を使ったサービスを担当し始めて約1ヶ月半、Ruby と Rails にもだいぶ慣れてきたので、ここまでどうやって勉強してきたか書いておこうと思います。いや、まだ初心者もいいところなのですが、そのうち忘れてしまって今しか書けなそうなので、書…

テスト

あいうえお ```ruby puts "Hello, World" ``` かきくけこ さ し す せ そ Smarty3 と mb_internal_encoding 寿司だ! よろしくお願い申し上げます。