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

おさかな日誌

魚類がプログラミング

Swift: Class 外から Inner class な enum value にアクセスしたい時

ClassName.EnumType.EnumValue みたいに EnumType を経由した識別子でアクセスできる import Foundation class A { enum Color { case Red case Blue } } let color = A.Color.Red // ダメ //let color3 = .Red // Color 型であることがわかる時はコンパイラ…

(要約記事) Varnish と Microservices: Zipnish の紹介

元記事: Varnish and Microservices: Introducing zipnish Amedia が Microservices パターンを適用した時の事例を元に Zipnish というソフトウェアの紹介記事 元記事には無い前提情報 Microservices アーキテクチャを apply する時に Varnish を活用する手…

Rails request spec の header name の変遷

たまに request spec とかで「HTTP_ いるっけ?」となった時に思い出したいので自分宛てメモ before Rails 4.0.0 get '/path', params, { 'X-Name' => 1 } は X-Name のままだった。 after Rails 4.0.0 get '/path', params, { 'X-Name' => 1 } と書くと HTT…

「X がモナドである」はなにが嬉しいのか

この記事はぼくの考えを雑に文章化したものであって、不正確な可能性が特に高いので気をつけてくださいね。 ごくたまに「X はモナドだったんだ」のような発言をすることがある。これは自分が理解しようとしている対象 X が、自分がすでに理解している概念で…

Redis cluster

Redis 初心者が Redis 3.0 から追加された cluster 機能を使ってみました。勘違いや憶測が多分に含まれます、ご注意を>< セットアップ 現時点では 3.0 がパッケージマネージャでインストールできなかったので、Redis 公式ページから latest stable をダウ…

vimfiler 使いはじめた & 設定キメた

NERD Tree を一時期使ってたのだけど、なんかちがうなぁ... と思ってずっと unite.vim の file を使ってファイルを開いてたのだけどやっぱツリー構造で表示したいなぁって思ってて、MBP の環境構築に合わせて vim 周りをちょっといじったので vimfiler を導…

Rails application の起動と実行メモ

rails コマンド bin/rails require "rails/cli" rails/cli: require 'rails/app_rails_loader' Rails::AppRailsLoader.exec_app_rails: bundler のチェック APP_PATH = Dir.pwd + config/application.rb require File.expand_path('../boot', APP_PATH) requ…

ワンライナーで Rack app 走らせる and Rack のメモ

Rack、雑にワンライナーで走らせれて便利だった。 rackup -s webrick -b 'run(Proc.new { |env| ["200", {"Content-Type" => "text/html"}, ["hello"]] })' use したい場合は -b オプションのスクリプトで use Foo; use Bar とか書いておくとよさそう。ライ…

「間違いだらけのソフトウェア・アーキテクチャ」読んだ

「間違いだらけのソフトウェア・アーキテクチャ ― 非機能要件の開発と評価」という本を読んだ。 全体的な感想としては、システムのアーキテクチャを考える人、つまりアーキテクトとして振る舞う人が最初にざっくり全体観をつかむために読むとよさそうだな、…

最近 golang 書いてる

社内でパフォーマンスチューニングコンテストが開催されてテンション⤴⤴になったので Ruby 実装だった認証認可サーバーの負荷の高い部分を golang で書いてみるのやってみた。 net/http で素のまま書こうと思ったけど、ちょっと検索したら Gin Web Framework …

Ruby 用天気予報ライブラリの weather_jp V2 出した

天気予報取得用の Ruby gem の weather_jp という gem を2年半前くらいに作ったのだけど、MSN が RSS 配信を止めたらしく動かなくなったので Twitter でメンションが来た。バックエンドを大幅に変えなくてはいけなさそうなのでせっかくだし V2 にした。 taik…

MySQL のサブクエリで気をつけとくこと

MySQL のクエリ最適化のために調べてたらサブクエリの話題が出てて、「相関関係のあるサブクエリは遅い」とか書いてあって、サブクエリ周りで知っておくといいこと得られたので書いておく。なぜMySQLのサブクエリは遅いのか。 を読んで手元のデータベースで…

おすすめされたもの

いつもおすすめ情報聞いたら iPhone のブラウザで開いておいてメモ代わりにしてるんだけど、多くなってきたのでメモ残しておく。 恵比寿 京しずく 恵比寿周辺でのおすすめ和食。値段はディナーで¥10,000~¥14,999(食べログ情報)!!しかしコスパは良い、と…

Ruby でも Zipkin がしたい! 戀

Ruby でも Zipkin がしたい!の続き 前回は1つのアプリケーションで Zipkin collector に情報をおくるところまでやった。今回は関連がある2つのアプリケーションのログを Zipkin collcetor に送る。client <-> test-app2 <-> test-app という経路。 まずは H…

Ruby でも Zipkin がしたい!

Ruby application でも Zipkin collctor に tracing data を送ってトレーストレースするためのメモ第1弾。まずは SERVER_RECV と SERVER_SEND だけを Zipkin collector に送信するやりかた。 経路としては App -> fluentd in-scribe-plugin -> fluentd out-s…

Microservices Architecture と非同期 API

Microservice Architecture を採用すると解決が難しい問題である、部分的障害に対する仕組みとして非同期 API にしてしまう、という方法を思いついた。 まず、今までの同期 API を使っていると想定してあるケースを検討してみる。 フロントとなるあるサービ…

HTTP header value の構成文字セットとは

Authorization header value に filter 処理を当てる時にどんな入力が来るのか知りたかったので調べた。 rfc2616 の sec2.2 に仕様があって field value = token token = 1*<any CHAR except CTLs or separators> CHAR = <any US-ASCII character (octets 0 - 127)> CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)> separators = "(" | ")" …</any></any></any>

Bot に UNIX 思想持ち込んでみた

UNIX コマンドみたいに、ひとつのことをやる小さなコマンドを組み合わせて、なにかできたらいいな、ということで、echo とか作ってみた。 https://github.com/taiki45/ruboty-echo https://github.com/taiki45/ruboty-delay とりあえず作ったのは echo と de…

本日のおさかな

クリックでスタート! @taiki45 http://t.co/ovtHeUKNjO— みょん (@myuon_myon) June 22, 2014 元 gif upload してもらったので、みょんさんの。 の一覧の下の方に original content がありますでし…!

Ruboty 動かした

hubot like bot frame work in Ruby こと、Ruboty を動かしてみた。 ruboty に eve のアイコンを仮で設定したら思いの外グッときたでし…! pic.twitter.com/zSkcgXW8i1— (deffish *tai*) (@taiki45) 2014, 6月 22 Slack で動かす場合は注意点が2点だけあって…

Ruby 向け非同期マルチストリーミング処理ライブラリ作った

Twitter bot に HTTP インターフェイスとか Timer 処理とかなんかいろいろそういうの付けたくて、そしたら既存の bot フレームワークの考え方だとつらそう、ということで Queue を使ったメッセージパッシング方式ならいいかんじに扱えそうじゃないかと思って…

Subdivision Category について

CWM は 圏論の基礎のこと。 @taiki45 ε( ε^o^)э CWM p.224にあるでし〜 S:Cop \prod C -> Xのendとsubdivision catでのS^$のlimitが同型なんでし〜〜〜— みょん (@myuon_myon) 2014, 2月 3 @taiki45 ε( ε^o^)э めっちょざっくり言うと、ある圏にf:b->cって射…

Haskell の newtype の使いどころ

newtype、まだつかったことないでし…— (deffish *tai*) (@taiki45) 2014, 2月 3 newtypeはその制約のおかげで構造を入れやすいから汎用的な構造つきデータを表現するのに便利 typeは型に別名を与えたいときとか型変数に「意味」をもたせたいときに便利— みょ…

Haskell と monadic IO について(続)

もっとわかりやすい文章を見つけてしまった… ァ… ァ… http://www.haskell.org/haskellwiki/IO%E5%85%A5%E9%96%80%E7%B7%A8

Haskell と monadic IO について書く

Haskell では IO を理解するのが難しい。さらにそれがモナドなので2重に???になる。最近この2つをわけて考えれるようになったので書いてみたい。(書いてみた結果、無駄文感するのでつらい) 想定する読者 Haskell を始めたばかりで基本的な文法などはわか…

Mac OS X 10.9 mavericks で Haskell 環境をうまく構築する

ghc と cabal、大変でした。ということでうまくいく方法のメモ。 まずは ghc 7.6.3 と cabal-install をなんらかの方法で入れる homebrew なり Macports なり Haskell-Platform なりで入れます。 cabal のリポジトリをクローンしてビルド https://github.com…

cabal install したいなら cabal-dev でし…!

Haskell の cabal、よく dependency-hell になってアッアッなのでし… なので cabal-dev がいいよってけっこう前からいろんな人がいってたのでし。 ということで使い方を覚えた記録でし…! git clone git://github.com/creswick/cabal-dev.git cd cabal-dev c…

最近見た Ruby のデザインパターン

最近 Capistrano, Cucumber となんかのコードを読んで思ったのが、DSL 提供する的なライブラリはConfigure が主なインスタンスになるの多いなあと。 Configure 的なクラスに、ライブラリの主な振る舞いを include して、パースしたりしたライブラリ側のオプ…

圏論1

さいきん圏論を学んでいる。主なソースは黄色い凶器と圏論勉強会の資料だ。他にも wikipedia とか読んでる。 ぼくはまったく数学に縁がなかった魚類だけど(微分も対数も高校レベルもまともに解けなかった)、圏論から数学入門するの、とてもいいと思う。 まず…

さいきんかった QOL 高めてくれたもの

さいきん買って良かったなーっておもったものたち情報です. 風量多いドライヤー あんまり値もはらず時間と手間をたんしゅくできて良い. BRITA のポット型浄水器 こちらもおやすく QOL をあげてくれる. ナツにサイコーです. ディスプレイアーム それなりの椅…

RubyGem で "Unresolved specs" の警告が出た時の対処法

WARN: Unresolved specs during Gem::Specification.reset: thor (>= 0) WARN: Clearing out unresolved specs. Please report a bug if this causes problems. って gem に警告された時は gem cleanup で解決できる.

tree というコマンドが便利

rubygems.org のドキュメントを眺めていた時に見つけた tree コマンド. find コマンドを見やすく整形してくれるすぐれものです. 人間フレンドリー. -h オプションでファイルサイズもいっしょに出力してくれる. でも他のコマンドとパイプでつないだりしにくく…

外国語学部生が Web 系新卒になるまでに読んだ技術書・コード 書いたコード

ちょうど4月で参考になるエントリを読んだので自分も書いてみる. 背景 ぼくがプログラミングを始めたのは1年半ほど前, Web 系の会社に仕事が決まったのが1年ちょっと前, つい最近入社という感じです. 学んだ当初からプログラミング自体はとても楽しかったけ…

MongoDB で drop index (Ruby)

ユニーク index を削除しようと思ってメモ. 一応公式ドキュメントにもいろいろのってるけど, 名前で消せるというのを読み取るのに少し時間かかったのでメモ with Ruby ドライバー client = Mongo::MongoClient.new collection = client.db("your_db").collec…

Mac で快適に mikutter ァァァッ

ァァァッこんなポストしてしまったァァァ ぼくはお刺身になります. 以前メインマシンの Mac で mikutter 環境を整えたのですが日本語入力周りが壊滅的なのです. 入力できないことはないのですが壊滅的なのです. なので日本語入力を快適にする mikutter プラグイ…

Rails3.2 + TwitterBootstrap + Haml で素早いたちあげをする

メモを兼ねて rails new foo したあとに Gemfile に以下の gems を追加 gem 'haml-rails' gem 'therubyracer' gem 'less-rails' gem 'twitter-bootstrap-rails' group :development, :test do gem 'erb2haml' gem 'pry-rails' end テンプレート作成 rails g …

Mountain Lion な Mac で mikutter を動かす

追記 Ruby 2.0.0 でも動くようになりました. develop ブランチを使うこと・gtk2 gem の最新版を使うに注意すれば罠にはまることもないと思います. 10.8 な Mac で mikutter 動かす記事が特になかったので書きます. メモ書き程度ですが.. 必要なもの パッケー…

macports で mongodb

なんだかんだで macports を使っています. mongo db のインストールですが, 記憶にあるかぎりでは sudo port install mongdb だったと思います. それより今回書いておきたいのが常に起動しておきたいと思って sudo port load mongdb としたらmacports がよし…

Ruby で天気予報を取得する Gem アップデートしました

tumblr に原文があります。検索順位とかよくわかってないので一応宣伝を込めてこちらでも。 http://taiki45.tumblr.com/post/32671229692/ruby-gembot 書いてる時に、「適当な文字列からパースするのつらぽよ」とか思っていたので、きっとみんなそうに違いな…

tumblr に移行しました

Markdown で書きたかったのと、見た目をアレにしたいってことで tumblr にいこうしました。 まだ見た目とかむかしちょっといじったままですが…移行した blog → osakana tech blog

Linux やらで root 権限なしで Ruby を簡単に入れる

root 権限がない環境で Ruby を入れる必要があり調べたのでメモ rbenv + ruby-build でとっても簡単です。 ~/.rbenv に全てが収まるので uninstall も楽ちん…? # Ruby install 覚え書き # install rbenv $ cd $ git clone git://github.com/sstephenson/rbe…

Heroku で Rails アプリを動かす時に

以前から Sinatra を使って eroku で Web アプリをホスティングしてもらってたのだけれど、Rails で書くかーっと思って Heroku で Rails アプリを動かした時にはまってしまったので書いておきます。 いろいろな記事を参考にしつつやっていると新旧ごちゃまぜ…

Ruby の天気予報 Gem を作りました

Twitter Bot 用に天気予報を Ruby で扱えるようにアレしてたらアレになったので Gem にしてみました。 わりと適当な都市名でも探せるあたり、そこそこ使い勝手よくできてるんじゃないでしょうか…はて。 [追記]海外の天気や詳細な地名でも対応できるあたり、…

Mac OS X 10.7でソースからビルドしてRuby1.9.3を入れる時の注意点

Rubyは何回かビルド、インストールしたのですが微妙に失敗してきた気がするのでメモ。 1)(自分の中で)今わかってる一番良い方法 まずはlibyamlを入れます。LibYAML – PyYAML ないとgemを使う時にRubyさんから怒られます。入れましょう。 あとは普通に $./con…

herokuを使い始めるまでに気づいたこと

Ruby+heroku+sinatraでなにか作ってみようかと思って少し調べて気づいたこと。大した内容ではありません。 間違っていることを書いてる場合は突っ込みいただけると幸いです。 疑問1) PHPでフレームワークもどき作ったときはindex.phpとかrewrite使って特定の…

始まりの書

うっかり書くのを忘れていました。 最初に読んで頂けるとありがたい文書です。 初学者なので単語の使い方の間違いや概念の勘違いなどなどたくさんミスしているかも知れません。その際は教えて頂ければとってもうれしいです。 プログラムのコードとか載せてい…

JavaScriptで階乗計算してみる

前回の階乗計算プログラムがけっこう練習になったのでJavaScriptでも書いてみました。 /*function factorial(n) { if(n != 0) { return n * factorial(n -1); } return 1; }*/ function factorial(n) { var result = 1; while (n > 1) { result = result * n…

rubyで階乗計算するプログラムを書いてみた

こちらのブログ記事を読んで勉強がてらrubyのコードを書いてみました。階乗計算をするプログラムでイテレータを使うという条件で書いてみました。 def factorial (n) (n - 1).downto(1) do |i| n *= i end return n end puts factorial(gets.chomp.to_i) つ…

testTEST

テストテストあーあー アッファリーン\(^o^)/