ネットの海の片隅で

技術ネタの放流、あるいは不法投棄。

Ruboty で TRPG をする

Ruboty pluginを書いたので簡単に紹介しておく。 https://github.com/s-osa/ruboty-roll 使い方 1d100, 3d6 などの文字列を ruboty roll に渡すと、ダイスの出目と出目の合計値が出力される。 > ruboty roll 3d6 [2, 4, 5] => 11 > ruboty roll 1d100 [41] =…

価値のないものを高速につくらないために

スピードとスピード感は違うし、素早くつくることと雑につくることも違う。 我々の仕事がコードを書くことではなく問題を解決することである以上、どんなに素早くつくるとしても誰のどんな問題を解決するのかは常に意識していなければならない。 その点につ…

スピード感のために品質を落とすということはチームの成長を諦めるということ

サービスを開発していると、スピードが重視される。 そのこと自体にはまったく問題はなくて正当なことだと思っている。 ユーザーに対して一刻も早く価値を届けるためには必要なことだ。 そもそも、自分がいる Web 界隈ではこの点について異論のあるサービス…

2016年振り返り

Twitter を見ていたら、いろんな人が今年のまとめを書いていたので僕も書いてみます。 実家に帰る近鉄特急の中で書いています。完全にチラ裏な感じです。 Timeline 卒論 多くの人に心配&迷惑をかけていた僕ですが、とうとう大学を卒業しました。 卒論のタイ…

gemをあまり使わずにFat Modelを整理するための本「Growing Rails Applications in Practice」

タイトルの通りで、 Growing Rails Applications in Practiceを読みました。 Fat controllerやFat modelに代表されるように、少し気を抜くとカオスになりがちなRailsアプリケーションの整理方法についての本です。 表紙とか目次も含めてPDFで88ページしかな…

排他的リソースに対するスケジュールの重複判定をSQLでシュッとやる

DB

突然ですが、排他的にしか利用できないリソースに対するスケジュールの重複判定の問題を考えてみようと思います。 典型的には「ある会議室では同時に複数の会議を開催できない」というようなスケジューリングの問題です。 ある既存のスケジュールを下の図の…

MIX PENLa-PRO のカスタム色設定

ミックスペンラプロといえば全国のP御用達のペンライトですが、このペンライトは色の並びがよくわからない感じになっています。 参考:コンサートペンライト/MIX PENLa-PRO MIX PENLa力が低いと、「あの色どこだっけ?」とか「あ、このピンクじゃない! も…

Rubotyでくじびきをする

Ruboty pluginを書いたので簡単に紹介しておきます。 https://github.com/s-osa/ruboty-kujibiki https://rubygems.org/gems/ruboty-kujibiki 使い方 GitHubにも書いてありますが ruboty kujibiki の後にカンマ区切りの文字列を渡すと、そのうちの1つをラン…

プログラマの最も重要な仕事道具は紙と4色ボールペン

日頃、メモを取るときや設計するときなどに4色ボールペンを使って仕事をしています。4色ボールペン使いのひとりとして、どのように使っているかをメモしておきます。ゼブラのクリップオンを気に入って使っています。 黒 多くの人が最もよく使う色である黒で…

エアロバイク読書のススメ

最近、意識的に読書をしています。基本的に1時間/日(下限値)くらい。 また、運動も意識的に始めました。こっちは運動の種類によりますが、1回につき20分から1時間くらい。 これらを別々にやると1.5-2時間くらい消し飛ぶので、運動と読書を同時にやってみよう…

電子書籍と紙の本を使い分ける

本が好きです。 電子書籍が大好きです。 Kindleには1200冊以上の本が入っています*1。 簡単に購入できて保存場所も取らない電子書籍は最高だと思っていました。 しかし、最近、紙の本を買う機会が増えてきました。 電子版が出版されていなくて泣く泣く紙の本…

AndroidユーザーがiPhoneを触って感じた12のこと

先日、iPhone 6sを購入しiOSデビューしました。 今までAndroidしか触って来なかった人間がiOSを触るとどう感じるのかを素直に書いてみようと思います。 良いと感じたところ アプリに恵まれている App Storeに並んでいるアプリが良いです。 「アッテ」とか使…

激しく今さらながら、iPhoneを買った

先日、iPhone 6sを買ったのでその経緯をまとめておく。 きっかけ ペーパープロトタイピングをしているときに、ぼそっと言われた一言。 「あ、UIがAndroidだ」 プロトタイプを作っているときに、Androidに向けて書いていた意識はなかった。 Androidしか触った…

限りなくゼロ円に近いコストで維持できるWebサービス

タイトルに書いたものを作りたい。 ごくごく簡単で単機能なWebアプリをほぼ無料で維持する、みたいなイメージ。調整さんみたいな? 方法としてはAWSを使う感じで、いわゆるサーバーレスアーキテクチャとか2-Tier アーキテクチャとか呼ばれているものになりそ…

変化

昔のぼく 「技術力ほしい」 最近のぼく 「技術力が必要」

はじめてのISUCON

2015-09-28に「お前それ糖質警察の前でも同じこと言えんの?」チームの一員としてISUCON5に出場してきました。 経緯 去年くらいからISUCONに興味はありましたが、 ISUCON出場者怖い ぼっちなので一緒に出る人がいない という問題により出場していませんでし…

僕が「エンジニア」と名乗らない理由

はじめに 徹頭徹尾ポエムです。 いくつかの小さな理由 決定的な要因ではないにせよ、僕がエンジニアと名乗らないのには以下のようないくつかの理由がある。 工学の学位を持っていない。 「エンジニア」はソフトウェアエンジニアだけじゃない。 変圧器を作る…

データベーススペシャリスト試験に合格しました。

4月に受けたデータベーススペシャリスト試験(DB)に合格していました。 情報セキュリティスペシャリストに続いて2つ目の高度試験合格になります。 えびでんす 参考書 このへんで勉強しました。 ただ、DBの設計経験がないとかなりしんどい気がします。逆に、…

GitHubのIssues/Pull requestsにopen/closeした週で絞り込むフィルタを追加する

やりたいこと Issues/Pull requestsを作成した週で絞り込む。 Issues/Pull requestsをクローズした週で絞り込む。 週ごとの振り返りとかで使いたい。 実現方法 dotjs用のスクリプトを追加する。 参考:defunkt/dotjs · GitHub Before デフォルトのUI。「先週…

Rubyでゼロ除算になるかもしれないときの書き方

やりたいこと 分母に0が来る可能性がある除算をRubyで書くときに、すっきり書きたい。 考えるケース 店(Shop)がそれぞれ複数の在庫(Stock)を持っているシンプルなケースを考える。イメージとしては下のような感じ。 class Shop has_many :stocks end cla…

GitHubのCIリンクを別のタブで開くChrome拡張機能

GitHubとCIサービス(Travis CI, Circle CI, wercker, etc...)を連携させることは多いと思います。 そんなときに表示されるのが、おなじみのアイコン。 輝くグリーンは精神安定と意欲向上に非常に大きな役割を果たしますが、これがレッドになったときはぐぬ…

非情報系のコンピュータサイエンス入門

前提 情報系の正規教育を受けていない人の意見です。 プログラミングを始めて3年くらいです。 やさしいコンピュータ科学 改訂新版 コンピュータの名著・古典 100冊で紹介されている本。MITの教科書らしい。 目次 コンピュータ科学を学ぶにあたって 1章 プロ…

関係モデル(Relational model)における剰余について

浮かんだ疑問 relational modelでdivideは定義されるのに、modulo(?)はなぜ定義されてないんだろう。R mod S = R - S × (R ÷ S)とかで定義できる気がする。 #数学わからん— Shunsuke OSA (@s_osa_) 2015, 3月 10 リレーショナルデータベース入門[新訂版] p.7…

2015Q1 買ってよかった製品大賞

ちょっと早いですが、2015年第1四半期に最も「買ってよかった!」と思えた製品を紹介します。*1 PHILIPS AT926 電気シェーバーです。 これを買う前はサムライエッジを使っていたヒゲ意識の高い僕でも満足度100%の製品です。 購入前にネットで調べた情報だと…

「プログラミングしてみたいんだけど」

TL;DR 個人の日記です。 「プログラミングしたいんだけど、どの言語を勉強したら良い?」 多少なりともコードを書いていると、こういう質問を受けることがあると思う。 個人的には、こういう質問に対しては「何やりたいの?」と返すことにしていて、質問者の…

Net::FTPでNAT越えする

解決したいこと FTPはActiveモードを使った時にデフォルトでNATを越えられない。 NAT越えのためにはFTPのPORTコマンドを適切に使用する必要がある。 RubyのNet::FTPにはPORTコマンドあるいは似たようなオプションが無い。 RubyアプリケーションでNAT越えのFT…

EC2からactive modeでFTP通信ができない件

問題 Local require 'net/ftp' ftp = Net::FTP.new("example.com") ftp.login("username", "password") ftp.list # => Array[String] 期待通りに動きます。 EC2 require 'net/ftp' ftp = Net::FTP.new("example.com") ftp.login("username", "password") ftp…

僕の書く下手なコードはたぶん世界を救えない

少し前から「自分あるいは半径5mの問題を解決する」ということを意識してコードを書いている。 「自分の自分による自分のためのプログラミング」 きっと、リーナスやザッカーバーグは世界を変えるためにLinuxやFacebookを作ったわけじゃない。

Railsのresourcesにcollection, member以外を指定したい

前提 Railsのrouting設定では、一般的に以下のような書き方をする。 # config/routes.rb Rails.application.routes.draw do resources :posts end このとき、最新の記事を公開するURLとして/posts/latestが欲しい場合、次の2つの書き方が考えられる。 A Rail…

PostgreSQLのDecimal/Numeric型の挙動

公式情報はこのあたり。 PostgreSQL 任意の精度を持つ数 実行環境 PostgreSQL 9.3.5 データベース・テーブルの作成 psql (9.3.5) postgres=# create database decimal_test; CREATE DATABASE postgres=# \c decimal_test decimal_test=# CREATE TABLE decima…

RubyでGmailのAPIを叩く

GmailのAPIに関する情報がほとんどなかったので、ざくっと書き残しておきます。 前提条件 access_tokenは取得している 公式クライアント(google/google-api-ruby-client · GitHub)を使う サンプルコード require "google/api_client" # メッセージの準備 m…

RDB/SQLの制約を増やしたい

NOT NULLとかUNIQUEみたいな感じでIMMUTABLE制約欲しい。— Shunsuke OSA (@s_osa_) 2015, 2月 12 IMMUTABLE制約:UPDATEできない PERMANENT制約:DELETEできない みたいな制約があると、個人的にハッピーになれる気がする。

Formats for Hypermedia JSON

APIが返すデータにリンクを含めるメリットについてはこの辺りを見ると良いと思う。 Web APIにもリンクをつけよう - Google スライド Hypermedia: The Missing Element to Building Adaptable Web APIs in Rai… クックパッドとマイクロサービス - クックパッ…

画期的発明

写本 一部の人が考えや思いを残し、一部の人がそれを受け取れるようになった。 活版印刷 一部の人が考えや思いを残し、多くの人がそれを受け取れるようになった。 Web 多くの人が考えや思いを残し、多くの人がそれを受け取れるようになった。

ALSOKの設定がよくわからんかった。

勤務先のオフィスが移転することになって、新オフィスにALSOKのセキュリティが入ることになった。 オフィス内のネットワーク構築と一緒にALSOK向けの設定をしたが、ネット上に情報が皆無なのでそのときのことを書いておく。 使った機材 YAMAHA RTX1210 RTX12…

『好きな「嫁」キャラの変遷を辿れば、好みが分かる?』

面白いエントリを読んだ。 好きな「嫁」キャラの変遷を辿れば、好みが分かる? - ぐるりみち。 「嫁」というとちょっと違和感があるけど、真似してみようと思う。 あと、記憶力がひどいので時期や順番が多少前後してるかも。 小学校くらい 武之内空/デジモン…

ベイマックス観た。

先週の土曜日のベイマックスを観た。 前評判通り、非常に面白かった。 主人公のHiro Hamadaはじめ、登場人物が優秀すぎて死ぬかと思った。 西洋人、空手とかカンフーとか好きすぎだろ。ごっちゃになってるっぽいし。 レーザーカッターみたいな装置の周りが無…

Cookpad TechBarに行ってきました。

Cookpad TechBarって? こんなイベントです。今回が第1回らしい。 【学生限定】エンジニア志望の方が抱いている素朴な疑問を解決する「Cookpad TechBar」開催します! - クックパッド開発者ブログ 話したこと 和気あいあいとした雰囲気の中、いろいろな話が…

無料なものなどない

何かをしようとするとコストがかかる。そして、コストは少ないほうが良い。 ただ、無料というのは必ずしも良いこととは限らない。 あるサービスAを提供していて、Aの維持にかかる直接的な金額は0円だとする。Herokuなどの無料サービスのみで構成されていると…

今更Matrix観た。

激しく今更だけど、かの有名なMatrixを観た。 観るときに気づいたけど、もう15年前の映画になるらしい。 概要 胡蝶の夢 水槽の脳 映画監督の夢 ザ・ワールド 感想 Matrixは攻殻機動隊に影響を受けているという話を聞いていたが、観てみるとなるほどその通り…

2014年振り返り

前半 RDBについていろいろ考えた時期。 今まではActiveRecordを通して単なるデータストアとして使っていたが、生SQLを意識したりトリガを書いてみたりとレイヤーの階段を1段降りてみる経験をした。 また、自然キー麻疹にもかかったので、この時期に書いたRai…

任意のビット列を0以上1以下の数値に変換する

やりたかったこと 文字列に対して0以上1以下の数値を割り当てる 複数回実行した場合でも割り当てる数値は常に等しい 2つ目の要件がなければ乱数を取ってきて割り当てれば良いのだが、再現性が必要なため乱数は使えない。 したがって、文字列をもとに一見する…

良い伏線

伏線というものがある。 物語の途中で語られた設定が終盤で活きてくるというアレだ。 ミステリなんかでは伏線の張り方とその回収方法こそが作品のキモだったりするかもしれない。 そんな伏線だが、個人的にずっと気になっていた伏線があった。 『ef - a tale…

たった10円で買えるKindle Paperwhite専用防水カバー

知ってる人は知ってると思いますが、ジップロックの中サイズがKindle Paperwhiteにジャストフィットします。 所有していないので確かめていませんが、たぶん無印KindleやKindle Voyageにも使えると思います。 1枚あたり10円程度なので非常に安いです。 唯一…

ブログのテーマを変えました。

Before 公式のEpicというテーマ。 スッキリしていてわりと好きだったんですが、日付の下にテキストが入らないためテキスト表示領域が狭く、コードが見切れることがありました。 After id:mr58nさんによるSimple Grayというテーマ。シンプルでキレイ。1行に表…

Rubyで配列の最多要素を求める

やりたいこと タイトル通りです。 [1,2,2,3,3,3,4,4,5]から最多の要素3を得たいということがあります。最頻値を求めると言っても良いかもしれません。 やはり同じようなことを考えている人がいるようです。 Ruby - 配列内で要素数が最多のものを求める! - m…

カロリーメイト ゼリーがめっちゃ捗る件

TL;DR カロリーメイト ゼリーを絶賛するだけのエントリです。 カロリーメイト ゼリーの魅力 短時間で摂取できる 10秒チャージというわけではないですが、歩きながらでも摂取できるので朝の忙しい時などに重宝します。パックに入っているので鞄に放り込んで家…

非プログラマに贈る!「あなたが初めに学ぶべき言語」

日本語

情報セキュリティスペシャリスト試験に合格しました。

10月に受けた情報セキュリティスペシャリスト試験(SC)に合格してました。 午後Iがちょっと危うかったですが。 えびでんす 参考書 以下の本でをざくっと全体的な復習をしました。 普段あまり意識できていない部分*1も出題されるので、有用だったと思います。…

net::ERR_INCOMPLETE_CHUNKED_ENCODING with Nginx

起こったこと Rails/Unicorn/Nginxという構成で動いているアプリケーションを使っていたら、net::ERR_INCOMPLETE_CHUNKED_ENCODINGというエラーが発生し、32KB以上のページが途中で途切れるようになりました。 解決策 その1 Railsのログを追ってみたところ特…