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

DesignAssembler

備忘録に近い

猫と合宿と私

土善旅館 10月15日/16日、霞ヶ浦と利根川が合流する場所の近くにある千葉県の土善旅館で行われる開発合宿に参加しました。 mokumoku-onsen.connpass.com この旅館には開発合宿コースがあり、開発環境は非常に充実しています。よく利用させてもらっています。…

PokémonGOのパケット解析

最近話題のPokémon GOのパケットをwiresharkで覗いてみました。 iPhoneの通信をwiresharkでキャプチャする方法は以下の記事を参考にしてください。 http://qiita.com/ionis_h/items/661a9a9d41cb1574e357 自分はwiresharkやパケット解析にあまり詳しくなく的…

学生枠で申し込んだ開発合宿で日本酒をしこたま飲んだ話 #mokumoku_onsen

こんにちは。 夏だ!合宿だ!温泉だ! 7/16~7/18、新潟県の南魚沼でもくもく温泉 開発合宿に参加しました mokumoku-onsen.connpass.com この合宿は開発合宿と銘打ってありますがかなりゆるふわな雰囲気で、遊びたい人は好きにダラダラしてもOK!いつでも飲酒…

インスタンス変数をDRYにする

Railsで同じビューを全ページに実装する時、全コントローラーに同じインスタンス変数を生やすのはDRYじゃないのでapplication_controller.rbにまとめて書きました。 #application_controller.rb class ApplicationController < ActionController::Base befor…

Railsアプリケーションを6倍速くしてから更に5倍速くした

hyottokoaloha.hatenablog.com 500msから更に5倍速くした やった事 ボトルネックになっていたモデルメソッドの結果をキャッシュに入れる Rails.cache Rails.cache使ってモデルメソッドの結果をキャッシュに入れました。 def hoge cache_variable = Rails.cac…

Railsアプリを6倍高速化した話

正確に言えば通常の6倍遅いRailsアプリケーションを通常の速度にした、といった感じです。 まず、こちらを見てください Completed 200 OK in 3271ms (Views: 53.9ms | ActiveRecord: 2300.6ms) あぁ・・・・・ ActiveRecord2300msって・・・・あと800msくら…

Railsでブラウザ判定

Railsでブラウザ判定する時にrequest.env['HTTP_USER_AGENT']でブラウザ判定しようとしたのですが、ChromeからうまくSafariが取れませんでした。 request.env['HTTP_USER_AGENT']を見てみると Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/…

Rubyの時間の扱い

時間を表すクラスにはDateとTimeとDateTimeクラスがあって、Dateクラスは日付、Timeクラスは時間、DateTimeクラスは日付と時間をそれぞれ扱います。 時間を表示する 最初1つずつフォーマットごとに切り出して連結していたのですが、strftimeという便利なメソ…

sizeとcountの違い

activerecordで取得したレコードの数を調べるときにcountとsizeを使ったら速度にかなりの差が出たのでその違いを調べました。 countとsizeの差はそのレコードがロードされているか否かで変わります。 レコードがロードされている時、countはsqlを生成し、siz…

httpレスポンスに自作ヘッダーを付与する

小ネタです。 httpレスポンスに自作ヘッダーを付与します。 phpならただ とすればレスポンスのヘッダーにName: asmsuechanを追加できます。ここで注意すべきは、より以前に何か文字を配置しないことです。 herokuでサクっと作って試してみました。https://m…

httpクライアントの実装(2)

続きです。 hyottokoaloha.hatenablog.com コードをいじりました。 レスポンスをただputsするのではなくてResponseクラスのインスタンスを返すようにしました。 #response.rb class Response attr_accessor :request, :headers, :response_except_body, :sta…

HTTPクライアントの実装

Webを支える技術を読んでいます。 Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)作者: 山本陽平出版社/メーカー: 技術評論社発売日: 2010/04/08メディア: 単行本(ソフトカバー)購入: 143人 クリック: 4,320回この商品を含むブログ (1…

rakeタスクを書く場所

この記事のjnchitoさんのコメントを見て確かに、と思いました。 rakeタスクのロジックはモデルに書くべき 何を当たり前の事をって感じですが、ビジネスロジックはモデルに書くべきです。 ですのでrake作りたいときはモデルにクラスメソッド書いてそのメソッ…

サーバーでアクセス制御

apache apacheでhttps://のみを使いたい、つまりhttp://にアクセスさせたくない時の設定です。 #.htaccess RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 最初の.*$は正規表現で、すべての文字列を表します。…

postfixでメールが送信されない

Apr 11 20:03:28 localhost postfix/smtp[12713]: 22E9C10C063F: to=<sc@gmail.com>, relay=gmail-smtp-in.l.google.com[2404:6800:4008:c01::1a]:25, delay=1, delays=0.12/0.01/0.37/0.54, dsn=5.7.1, status=bounced (host gmail-smtp-in.l.google.com[2404:6800:4008:c</sc@gmail.com>…

英語を勉強している

シリコンバレーから帰ってきて1ヶ月経ちました。今英語を勉強しています。 やっていること 実際にやっていることは主に3つです。 Skype英会話 TEDの音読 海外ドラマを英語字幕で見る Skype英会話 数人に意見を聞くと以下のサービスが上がりました langrich r…

grant打つとAccessDenied

rootユーザーで入ってgrant打ってもAccess Deniedされます。 mysql> GRANT ALL ON *.* TO test@’00.00.00.00' IDENTIFIED BY ‘ppaappaa'; ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 何が何だか分からずに途方に…

Rubyのキーワード引数にハッシュを指定

作ったgemのメンテナンスをしています。 github.com キーワード引数でハッシュを引数にしたかったのですが、ActionView::Template::Error (unknown keyword: url):が出て辛かったのでメモします。 最初はこうしていました: #以下で宣言 def render_geo(url: …

<gem> Yt

Ytは、Youtube APIを操作できるgemです。 gem install ytで入ります require ‘yt' Yt.configuration.api_key = "<your API key>" video = Yt::Video.new id: '3LVAmMxICoA' > video.title => "椎名林檎 - 長く短い祭" > video.view_count => 16634213 複数の動画idを1度に</your>…

今日したこと

validationEngineを使った github.com jqueryの多重読み込みでvalidetionEngineが動かなくて少しハマりました github github.com js書きました

n対nの関連

Railsでn対n関連を実装します。 現在1対nの関連を持ったTagテーブルとArticleテーブルをn対nの関連に変更します。 ここでは中間テーブルを作成しない方法で実装します。 has_and_belongs_to_many 各モデルにhas_and_belongs_to_manyを追加します。 class Art…

gem作った

ブラウザで位置情報を簡単に取得できるgemを作りました。 geo_railsって名前です。 github.com 仕組みはシンプル。HTML5で導入されたGeolocation APIをjsで叩くコードをrenderでviewに埋め込んでいるだけです。 gem install geo_rails で入ります。 困ったこ…

AvtionViewの流れ

ActionViewでhtmlタグが生成されるまでの流れを追いました。 とりあえずform_tagのコードを探します。 https://github.com/rails/rails/blob/477fae3eb3d3b3bfdbe28586fecb8578c0be4721/actionview/lib/action_view/helpers/form_tag_helper.rb ここのL67:L7…

3月読んだ本

読んだ場所 土の中の子供 自室 雪沼とその周辺 自室 蹴りたい背中 飛行機 ベッドタイムアイズ TECH LAB PAAK 嵐のピクニック 電車 生きてるだけで、愛。 電車 あの子の考えることは変 部屋

Rails5.0.0.beta3のActionController::APIを使う

そろそろRC版が来るRails5のbeta3を触ってみました。 $ bundle init でGemfileを生成します。 # A sample Gemfile source "https://rubygems.org" gem "rails", github: "rails/rails" bundle installします。 $ bundle install 少し時間かかりますがインス…

carrierwaveで画像アップロードAPIサーバー

carrierwaveを使って画像アップロードAPIサーバーを作りました。 どんなの作るか 犬の名前と画像が保存できるサービスのAPIを作ります。 必要なカラムはnameとpicです。 まずは犬データの作成です。名前と画像をPOSTで投げたら名前と画像URLがjsonで返ってき…

コマンドメモ(vimやshell)

シェル 検索、grep find ./ | grep aaaaaaa ファイル内grep find / -type f -print | xargs grep hogehoge /dev/null コマンド履歴から実行 $ (Ctrl-r) (reverse-i-search) ‘bun’:bundle exec unicorn_rails -c config/unicorn.rb -E production -D history …

abstract class

抽象クラスです。ActiveRecord::Baseなどがそうです。 > ActiveRecord::Base.new NotImplementedError: ActiveRecord::Base is an abstract class and cannot be instantiated. 「抽象クラスである」という判別がRubyによりなされているわけではなく、Active…

configとは何者か

Railsのconfig/application.rbにあるconfigが何者か分からなかったので調べました。 config.autload_paths << Rails.root.join('lib/MyLib')とかで使われますよね。 require 'rails/all' module WhatIsConfig class Application < Rails::Application config…

Rubyのincludeとexclude

簡単に言うと、includeはインスタンスメソッドとしてモジュールのメソッドが使えるようになり、extendはクラスメソッドとしてモジュールのメソッドが使えるようになります。 #include_exclude.rb module Dog def dog puts "inu" end end module Cat def cat …

Androidでtesseractを使う(準備)

前回の続きです。 時代の流れにようやく乗ってEclipseからAndroid Studioに乗り換えました。 いろいろまごついて1日かかりました。。。 このStackOverflowを参考にしました。 stackoverflow.com 流れ Android Studioで新しいプロジェクトを作成(TessPractice…

Androidでtesseractを使う(ビルド)

ここを参考にtesseractをAndroid Studioにインクルードして使おうとしました。 qiita.com tess-twoをビルドするのにまずandroid ndkが必要になります。 以下のサイトからandroid ndkの最新版(11b)をダウンロード http://developer.android.com/intl/ja/ndk/d…

c++でtesseract

この前のtesseractの続きです。 hyottokoaloha.hatenablog.com tesseractにはapiが用意されています。これをc++で使ってみます。 失敗 このサイトを見て始めました。 Tesseract-OCRの導入(その2)Visual Studio2013でのAPIの利用 | 株式会社インデペンデンス…

RubyのThread

Thread 文字通りマルチスレッドを実現します。 RubyのThreadの使い方は、以下のブロックに実行したいコードを入れるだけです。 Thread.new do end 速度計測 まずはシングルスレッド #bench1.rb 1000000.times do |i| 2 ** 10000 end $ time ruby bench1.rb r…

openstruct

ここを見ていてopenstructが出てきて分からなかったので調べました。 kenn.hatenablog.com OpenStruct OpenStructはRubyの標準ライブラリで、ハッシュのような機能を持つデータ構造を提供しています。 OpenStructクラスから作成したオブジェクトをレシーバに…

2月読んだ本

総評:面白かった

ActiveRecord::Relation

データベース操作の時に使う便利なメソッドが実装されています。 find_each 1000件ずつレコードを取得してfindします。 findはそのテーブルの全レコードをメモリに広げるので、例えば10万レコードのDBにfindするとマシンがフリーズする可能性がかなり大きく…

Rubyのfailメソッド

github.com ActiveJob::Executionのperformメソッド見たらfailというメソッドがありました。 failメソッド fail (Kernel) - APIdock module function Kernel.#fail (Ruby 2.1.0) failメソッドはKernelメソッドで、例外を発生させるメソッドのようです。 確認…

RailsでのCSRF対策避け

railsでガリガリjsでajaxの実装してるとPOSTした時CSRFのエラーが出ます。 Can't verify CSRF token authenticity 解決方法ググると「CSRF対策をオフにすれば動くようになる」と書いてある記事が多かったですが、それでは根本的な解決ではありません。 CSRF…

tesseractを使う

tesseractはOCRツールです。 つまり、画像から文字を読み取ります。 tesseractのインストール github.com brewで提供されているのでbrewからインストール $ brew install tesseract 簡単。 tesseractを使う 書式は以下のとおり tesseract imagename outputba…

OpenCVで顔検出

カスケード分類器というものを使って入力した画像から顔を検出します。 カスケード分類器 カスケードとは、連続したもの、数珠繋ぎになったものを意味します。 カスケード分類器は、いくつかの特徴量をまとめた学習データです。 ここでの顔検出の流れは、 入…

omniauthについて

omniauthはoauth認証をrubyで使えるようにするgemです。 github.com OAuth あらかじめ信頼関係を構築したサービス間で ユーザの同意のもとに セキュアにユーザの権限を受け渡しする つまり、自作のwebアプリケーションのアカウントをTwitterやFacebookなどの…

今日見た島

アルカトラズ島

DB設計指南3、4、5章

3章論理設計と正規化 テーブル名は英語ならば複数形/複数名詞で書ける。そうでなければそのテーブルにはどこか間違いがあります。 テーブルの構成要素 キー 以下の2つが特に重要です 1. 主キー 2. 外部キー 主キー 主キー、またはプライマルキーと呼びます。…

今日食べたもの

カニ

文字コード設定してるのにIEだけ文字化けする

phpでページ書いてる時IEだけ文字化けすることがままありました。 この時自分がした解決方法です。 解決法 <meta charset="UTF-8">を<title>の上に持っていく IEさんはページを読み込む時始めに見つけた文字コードをそのページの文字コードと認識します。(IEのデフォルトはshift-jis) なの</title></meta>…

実践ハイパフォーマンスMySQL1章

MySQLのアーキテクチャと歴史 最適化 MySQLはクエリを解析して内部構造(解析ツリー)を作成する。 クエリの実行に必要な情報をオプティマイザに渡してなるべく効率化する。 トランザクション トランザクションは、1つの作業単位としてアトミックに扱われるSQL…

RailsでRedis使う

Redisとは、KVS(Key-Value-Store)型のデータベースの事で、保存のデータ構造がキーバリュー式になっています。 また、全てのデータセットをメモリに読み込むので非常に高速です。 まず適当なrailsアプリケーションを作ります。 ※redisがPCに入っていることが…

Railsでインデックスを張る

先日のこの記事にDBのカラムにインデックス設計について書きました。 hyottokoaloha.hatenablog.com 今回は具体的にRailsでインデックスを張ります。 $ rails g migration AddIndexToUser これで以下のファイルが作成されます。 #db/migrate/20160229095843_…

respond_to?とself_respond_to?の違い

respond_to? respond_to?メソッドはレシーバが使用可能なメソッドを調べるメソッドです。 これはRubyのビルトインメソッドです。 obj.respond_to?(name, private = false) class Respond def hello puts "hello" end end > Respond.new.respond_to?(:hello) …