ネットの海の片隅で

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

感謝の正拳突き

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

BOINC ManagerにGrid Republicを登録する。

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

RubyにCSV.mapが欲しい。

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

MacBook Pro Retina 13を買いました。

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

mixi Scrap Challenge 2014に参加してきた。

mixi主催のScrap Challenge 2014というイベントに参加してきました。 Scrap Challenge 2014 | 株式会社ミクシィ 学生向けエンジニアイベント 午前:セキュリティ概論 Webアプリを構築する上で考慮すべき内容に関して簡単な説明がありました。 基本的には徳丸…

第2次ラッダイト運動

産業革命の際にラッダイト運動が起こった。工場労働者が自らの仕事を奪う産業機械を打ち壊したアレだ。 機械が工場労働者の仕事を奪ってから200年、今度はコンピュータがオフィスワーカーの仕事を奪おうとしている。 工場労働者が工場に押しかけて機械を破壊…

公園などにおけるゴミ袋入れ替えの自動化

公園や大学のような比較的広い敷地内に設置されているゴミ箱のゴミ袋を定期的に取り替える作業を自動化したいと思った。 ゴミ箱にゴミ袋を装着する動きは結構難しそうだと悩んでいたら、ゴミ箱を動かせば良いということに気づいた。 ゴミ箱に車輪を付ける。 …

RailsにおけるDB制約のワナ

DBに制約を張る このようなテーブルがあったとします。 CREATE TABLE products( id serial NOT NULL, code varchar NOT NULL, price integer NOT NULL CHECK (price > 0), CONSTRAINT pk_products PRIMARY KEY (id) ); 各カラムにNOT NULL制約 priceにCHECK…

届けたい価値

「ユーザに価値を届ける」 これはよく言われることだし、非常に同意できることなんだけど、この「価値」にもいろいろあると感じる。 優れた検索エンジンを提供することだって価値だし、面白いゲームを提供することだって価値だ。 そういった価値の中で「自分…

サテライト・コンピューティング

人類が消費するエネルギーのうち、情報処理が占める割合は増えていく。 枯渇性資源に依存するのは精神衛生上よろしくないので、太陽光発電とかしたい。*1 せっかくなら人工衛星を使って宇宙太陽光発電したい。 宇宙で発電して地表に送電するというのは大変な…

「__fizzbuzz__」記法の強調表示を無効にする方法

問題 はてなブログでMarkdown記法を使っているとアンダースコア2個で挟んだ文字列が強調表示されると思います。 こう書くと __fizzbuzz__ こうなる fizzbuzz 解決法 バックスラッシュでエスケープすると、強調表示が無効になります。 こう書くと \__fizzbuzz…

クックパッドさんの新オフィスにお邪魔してきました。

この夏、インターンでお世話になったクックパッドさんのオフィスが恵比寿ガーデンプレイスに移転したということでお邪魔してきました。 キッチン 新オフィスのキッチン、広いです。白金台オフィスの2倍以上あると思います。 ディナー カレーと大根サラダを頂…

「privateな変数にpublicなアクセサを定義する」?

きっかけ こんなツイートがRTで流れてきた。 Java技術者です、って求職してきた人にする質問の一問目は 「なぜフィールドはprivateにしてgetter/setterプロパティを書くべきなのだと思いますか?」 がいいのではないかと思い始めた。— ゆば大好き (@yuba) 20…

人生は足し算じゃないし、人生の価値は小さい、あるいは

人生は足し算じゃない 「○○しないとか人生半分損してる」「××しないとか人生の3割を捨ててるようなもの」etc...のような言及は世の中にあふれている。 損失を足すと1を超える ∴人生は足し算じゃない。 人生の価値は極めて小さい 「○○しないとか人生半分損し…

Courseraを使ってみた

代表的なMOOCであるCourseraを使ってみました。 Coursera 履修したコース 6月頃からCourseraのMachine Learningを受講しました。 https://www.coursera.org/course/ml コースのスタイル 僕が取っていたMachine Learningでは以下の様な流れで進められました。…

僕はコミットが少ない

ふと思い立って、ChromeのシークレットモードでGitHubの個人ページを見てみました。 思っていたより遥かに灰色でした。 自分の見ている画面ではそれなりに緑色なので、public repoに対してコミットして脱GitHubひきこもりをしていく必要がありそうです。

宇宙博

宇宙博に行ってきました。 SPACE EXPO 宇宙博 2014 | NASA・JAXAの挑戦 京葉線 東京駅から京葉線で海浜幕張駅へ向かう途中、車中がやけに混んでいたので「そうか、夢の国に行く人がいっぱいいるんだな」と思っていました。 しかし、舞浜駅を出発するときにも…

野崎まど『know』

人々が脳に「電子葉」と呼ばれるデバイスを埋め込んで生活するようになった2081年のお話。 あらゆるものがセンシングされ、その情報に対して電子葉からアクセスできる世界。 そういう意味では攻殻機動隊の世界観に近いとも言える。 今後、人類が生成・収集・…

エンコードしない文字を指定できるURIエンコーダ「uri_encoding」

世間がRubyKaigiで盛り上がっていて寂しかったので、URIエンコード・デコードを行うgemを書きました。 s-osa/uri_encoding · GitHub インストール uri_encoding | RubyGems.org | your community gem host に置いてあるので、テキトーにbundle installとかge…

Slack vs Skype

SlackとSkypeを比較してみます。 HipChatやChatWorkじゃなく、Skypeとの比較です。 一応、それぞれの公式サイトを貼っておきます。 Slack: Be less busy Skype | お友達やご家族への無料通話 比較項目一覧 料金 広告 ルーム メンション ファイル送信 検索 日…

夢の国に行ってきた。

T;DR 先日、東京ディズニーリゾートに行ってきました。 ウォルト・ディズニー ディズニー映画をよく知らないのでウォルト・ディズニーに関しても詳しくは知らないんですが、僕の記憶している限りだと、 ミッキーとかの映画を作った人 ディズニーランドという…

クックパッド5daysインターンに行ってきました。

クックパッド 5-day インターンシップ こんなんです。 【エンジニア・総合職向け】5-dayインターンシップ / スマホアプリ開発 動機 主な動機は2つありました。 1. cookpad覗いてみたい 普段、主にRubyを書いている人間からするとクックパッドは非常に気にな…

「有線しよう」

無線LANをメインで使っていたオフィスに有線LANを導入した話です。 無線LANは便利だが……。 普段、僕は無線LANでインターネットとつながっています。 しかし、無線LANには無線であるという性質上、どうしようもない類の問題がいくつかあります。 そして、中で…

「継承より委譲」≠「継承使うな」

TL;DR 適材適所。 「継承より委譲」 オブジェクト指向に関する有名な警句に「継承より委譲」があります。 僕はオブジェクト指向について語れるほど立派な人間じゃありませんが、 「むやみに継承使わないほうが良いよ」 「移譲のほうが良いケースが多いよ」 …

V社 プリンタサプライ

Brother DCP-7040 Brother MFC-J890DN Canon MG7100

String#encodeが変換できそうで変換できない文字

問題 RubyでUTF-8からWindows-31J(Shift_JIS)に文字コードを変換すると、正常に変換できそうであるにもかかわらず、実際には変換が行えず例外が投げられる文字があります。 "\u{301C}" # => "〜" "\u{301C}".encode(Encoding::Windows_31J) # => Encoding:…

いにしえの「CSV over FTP」

EC

TL;DR 単なる文句です。 「CSV over FTPとかマジやめて!」 はじめに ここに書かれていることは自分が調べられた範囲で得られた事実です。 調査不足による不備や、僕が権限が付与されていないために見られないだけで実は存在している機能などもあるかもしれ…

絶望しないでありますっ!

絶望 twitterを見ていると、絶望します。 というのも、有名なプログラマの人たちをフォローしているから。 ○○さんすげー。 あ、××さんもすごい。 それに比べて俺と来たら……。 俺なんかがコード書く意味あるのかな? みたいな。 twitterに限らず、ブログや勉…

不揃いなHashから長方形の配列をつくるgem「Emmental」

ソースはここに置いてあります。 s-osa/emmental · GitHub インストールはgem i emmentalとかbundle installとかのいつものやつで。 使い方 基本 emmental = Emmental.new emmental << {foo: 1, bar: 2} emmental << {fizz: 3, "buzz" => 5} emmental << {fo…

Technology waits for no one.

テクノロジーは指数関数的に進歩する。 これがレイ・カーツワイルの主張で、ムーアの法則などがその根拠になっている。 そして、テクノロジーが指数関数的に進歩することによって、2045年頃にコンピュータが人類の能力の総和を超えるというのが技術的特異点…

RailsのモデルでJANコードのバリデーションをするgem 「jan_validator」

つくったもの Rails*1向けのJANコードバリデータ。 先日のgemをベースにしています。 参考にしたページ ActiveModel::Validator balexand/email_validator · GitHub 使い方 JANコードのバリデーションがRails標準のpresence: trueのようなカタチで書けるよう…

JANコード用のgem「jan」

作ったもの JANコードを便利に扱うためのgemを作りました。 JANコードっていうのはバーコードに使われているこんなやつです。 国際的にはEANコードと呼ばれていたりします。 JANコードとは│JANコード登録│ 一般財団法人流通システム開発センター ean | RubyG…

i18nをYAMLで管理するのしんどい

TL;DR 愚痴です。 問題 Railsのi18nではt(:hello)みたいな感じで、tメソッドを使って多言語対応すると思います。*1 この多言語対応のtranslationファイルがYAMLで書かれていて #common.en.yml en: hello: "Hello" #common.ja.yml ja: hello: "こんにちは" み…

論理削除の必要性をひねり出そうとして失敗した

DB

はじめに このエントリは僕の平凡な考えを淡々と書いたものです。過度な期待はしないでください。 あと、部屋は明るくしてディスプレイから30センチは離れて見やがってください。 物理削除したくない! 外部キー制約を張っていない場合 削除したレコードを参…

『実践Node.jsプログラミング』誤植訂正

Kindle版『実践Node.jsプログラミング』のコードに誤植があったので、気づいた範囲で書いておきます。 第2章 2.4.1 Socket.IOサーバーを設定する(p.31) 変数宣言部。 左辺のオブジェクトリテラルが消えているので追加。 // lib/chat_server.js var socketi…

オレオレ Chrome extension 死亡のお知らせ

今まで、自分あるいは社内だけで使うために作ったChrome extension「オレオレエクステンション」はChromeウェブストアに登録せず、ローカルに置いたcrxファイルを使って手作業でインストールしていました。 しかし、少し前にGoogleのポリシーが変わり、ウェ…

正規乱数を生成するgem「RandomBell」

Rubyで一様な乱数が欲しければRandomやSecureRandomを使えば良いと思うのですが、「偏った乱数」が欲しいこともあると思います。 イメージとしてはゲームのパラメータとかですかね。 例えば、あるダンジョンで出てくる敵のレベルを20-30の間でランダムに決め…

「サロゲートキー vs 複合キー」という間違った対立

DB

DB設計についてググっていると、「サロゲートキーは使うべきではない」や「複合キーは使うべきではない」といったDBのキーに関する論争をよく見かけます。 それらを見ていると、多くの議論で「これって対比の軸がズレてないか?」と思いました。 正しい対比 …

私は衰退しました。

最近、記憶力をはじめとする脳の劣化が激しい。 昔はクソみたいなコードを書きながらも、どのメソッドがどこにあるとかそういうのを覚えてられたけど、このごろそれができない。 しかし、覚えてられないからこのへんにありそうって感じで探して見つけられる…

オフセット付きのheadコマンドを作りました

個人的な話ですが、コードやログを読むときに $ grep -n 'fizzbuzz' fizzbuzz.rb 543: puts 'fizzbuzz' みたいにして、該当箇所を探すということをよくします。 こうして該当行を探した後はその前後を見るためにheadとtailを組み合わせて $ head -n 445 fizz…

あなたがKindleを買うべきたった1つの理由

Kindle Paperwhite(ニューモデル)出版社/メーカー: Amazon発売日: 2013/10/22メディア: エレクトロニクスこの商品を含むブログ (56件) を見る Kindle Fire HDX 8.9 16GB タブレット出版社/メーカー: Amazon発売日: 2013/11/28メディア: エレクトロニクスこ…

Jasmineでfixtureを読み込む

JavaScriptのテストでfixtureを使いたいと思うこと、ないですか? JavaScriptのユニットテストでfixtureを使いたい JavaScriptのテストにおいて、特にXMLHttpRequestのレスポンスを利用する場合などは、 いちいちリクエストを投げるとテストが遅くなる ネッ…

OpenSSLを使ってセキュアにファイルを送信する

先日、外部に漏れるとマズいファイル*1をセキュアに受け渡しする必要が生じました。 受け渡しをする相手と頻繁に会うようであれば直接会って渡せば良いのですが、あまり合う機会がない相手の場合はインターネット越しに安全にファイルを渡す必要があります。…

RDBの素晴らしさに気づき始めたという話

リレーショナル・データベースの設計について思ったことをうだうだと書いてみます。 「そんな基本的なことを……」 「しかも、間違ってるし」 とかいろいろあると思うので、指摘していただけると嬉しいです。 そもそもの問題 僕がDBを触り始めたのはRailsでWeb…

PostgreSQL用データベース設計ツール3選

PostgreSQLを使ったわりと大きめのデータベースを設計することになったので、ER図を作成するツールについて調べました。 自分のために調べたことのメモなので「MySQLは?」とか訊かれても基本的にわかりません。 対象とするツール GUI Database Design Tools…

ブログを書く理由とネットの海

どうも、s_osaといいます。 ECまわりで主にRailsを触ったりしています。 このブログは何度目かの新しいブログです。 ブログ名の元ネタはもちろん ネットは広大だわ。草薙素子 ですが、このタイトルにしたのは理由があります。攻殻ネタというだけではありませ…