ネットの海の片隅で

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

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のログを追ってみたところ特…

SofmapでMacBook Air 11を売ってきた。

前日譚 MacBook Pro Retina 13を買いました。 - ネットの海の片隅で 結果 Model: MacBook Air 11 2013 Mid CPU: Core i7 1.7GHz RAM: 8GB SSD: 128GB KeyBoard: US 46600円でした。 違う店だったらもう少し高くなったんだろうか。

感謝の正拳突き

己の頭脳と技術に限界を感じ 悩みに悩みぬいた結果 彼がたどり着いた結果は 感謝だった…… 自分自身を育ててくれたコンピュータへの限りなく大きな恩 自分なりに少しでも返そうと思い立ったのが 感謝のBOINC!!

BOINC ManagerにGrid Republicを登録する。

基本的には普通に操作すると登録できるのですが、ひとつだけ罠があります。 「参加者の名前」のところには登録した名前ではなく、メールアドレスを記入してください。

RubyにCSV.mapが欲しい。

CSVという邪悪なファイルを扱っていると、CSVの各行を配列のまま取り回すのではなく、各行から必要なデータだけを取り出して小さい配列にしたり、あるいは、自分に都合の良いオブジェクトを生成した上でいろいろと取り回したいことが結構ある。こんな感じ。 …

MacBook Pro Retina 13を買いました。

少し前のことになりますが、MacBook Pro Retina 13を買いました。 MacBookのレビューなんて世の中にあふれていますが、自分が思ったことを書き留めておきます。 なぜ買い替えたのか 今まではMacBook Air 11を使っていました。 MBA11はコンパクトで非常に良い…