タグ

ブックマーク / blog.ruedap.com (16)

  • HerokuのSinatraでBasic認証を使ってアクセス制限をかける - アインシュタインの電話番号

    Heroku上にデプロイするSinatraで、Basic認証を使ってアクセス制限をかける方法について調べたのでメモ。特にHerokuに限らない方法だとは思うけど。ここだけの秘密だけど、最初普通のウェブサイトのように.htaccessと.htpasswdを用意して、Herokuアプリ直下またはpublicディレクトリに入れればいけるんだろうと思って、heroku consoleから pwd とか実行してパスを取得して.htaccessに.htpasswdまでのパスを書いて…とか壮大に明後日の方向な手順を踏んでた。 SinatraでのBasic認証の方法は全然違って、Rackの機能を使うみたい。 サイト全体をアクセス制限 Sinatraアプリの起動ファイル(config.ruから呼び出しているrbファイル)のどこかに、以下のような感じで書けばおk あ、もちろんトップレベルに書く必要はある。あと

    HerokuのSinatraでBasic認証を使ってアクセス制限をかける - アインシュタインの電話番号
  • VimでSassのコードを変換したり整形したり - アインシュタインの電話番号

    うまい話とジェットコースターには乗るなって言ってたばあちゃんの知恵袋だけど、Sassに含まれているsass-convertコマンドを使うと.sass形式と.scss形式を相互に変換できる。 $ gem i sass $ sass -v Sass 3.2.11 (Media Mark) $ sass-convert --help Usage: sass-convert [options] [INPUT] [OUTPUT] (snip) これを使って、以下は現在のフォルダの.sassを.scssに一括で変換する場合。自分の好みで普段書いているのは.sass形式なんだけど、納品物やチームで使っているのは.scss形式ってことがままあるため、そういう時に使う。 $ sass-convert -F sass -T scss . -R $ rm *.sass 自分の場合、今開いてるファイルを.sass

    VimでSassのコードを変換したり整形したり - アインシュタインの電話番号
  • Travis CIとCoverallsとCode Climateを使ってGitHubリポジトリにバッジを付ける - アインシュタインの電話番号

    先月に公開した超ニッチなツールFont Awesome Workflow for Alfred 2が意外と好評で、そこにオクラホマ州からこれOS X Mavericksで動いとらんよとお便りが届いたりした。 そんなわけで少々テストを書いた上で、Mountain Lion以前に入っているRuby 1.8.7と、Mavericks以降に入るRuby 2.0.0の両方で常に動作確認しておくようにしたいと考えて、まずTravis CIを、その後CoverallsとCode Climateを導入した。この記事はその備忘録。 {: .ArtcleBody-inlineImage .u-textCenter } それらを導入すると、こんなかんじのバッジを表示できる。GitHubでよく見かけるやつ。今回使ったサービスはどれも、オープンソースなら無料で使わせてもらえる。 Travis CIは名前の通り継続的

    Travis CIとCoverallsとCode Climateを使ってGitHubリポジトリにバッジを付ける - アインシュタインの電話番号
  • SinatraからActiveRecord 3を使う(1) マイグレーション - アインシュタインの電話番号

    以前SinatraからDataMapperを使う記事を書いたけど、今回はSinatraのO/Rマッパー部分にActiveRecord 3を使ってみる。ActiveRecord 3自体の使い方については、この記事がすごくわかりやすかった。 Sinatraアプリに必要なファイルを用意する まずは、Sinatraアプリを実行するのに必要な最低限のファイル群(Gemfile, config.ru, app.rb)を作成する。今回は基的にすべてBundler経由で操作するので、システム側にBundlerのgemがインストールされている必要がある。 Gemfile 今回使用するgemはこんな感じ。とりあえずSinatraでActiveRecord 3を使う場合はactiverecordとsinatra-activerecordとsqlite3が必要で、今回使ったバージョンはそれぞれ、3.0.6、0.

    SinatraからActiveRecord 3を使う(1) マイグレーション - アインシュタインの電話番号
  • Rubyの定数、もうひとつの意外な仕様 - アインシュタインの電話番号

    Rubyの定数が、他の言語の定数とはちょっと違う意外な仕様なのは理解していたが、もうひとつ意外な仕様があることを最近知った。なんかちょっと釣りっぽいタイトルになっちゃったけど。 再代入可能な定数 Rubyの定数は、他の言語のように変更を許さない(再代入させない)定数ではないことは有名。少なくとも自分は、Rubyを始めてから結構早い段階でこの仕様について知った。そして、最初にこれを知ったとき「これって定数じゃなくね?」って思った覚えがある。 HOGE = "hoge" HOGE = "fuga" puts HOGE このように再代入しても、警告は出るものの、実際の値は変わってしまう。 2: warning: already initialized constant HOGE fuga Rubyのこういった仕様に対して、良い意味での“ゆるふわ感”を感じる。こんなにゆるくて大丈夫?と思うくらい。

    Rubyの定数、もうひとつの意外な仕様 - アインシュタインの電話番号
  • RubyGemsでgemのインストール時に--no-ri --no-rdocをデフォルトにする - アインシュタインの電話番号

    Rubyでgemをインストールするときに、ドキュメントをインストールしないオプション--no-ri --no-rdocをデフォルトで付けるようにする方法について。毎回手動でオプションを指定してたんだけど、忘れてしまうことが多くて、忘れた場合は実行した後にドキュメントのインストールが始まって気づくことになりウボァとなる。これを忘れるとインストール時間が倍くらいになるので、個人的には常に付けたい。 DHHもこのオプションをデフォルトにしようと言ってるみたい。最近のRubyGemsではデフォルトになったりしてるのかな? 自分の使ってるRubyGemsはちょっと古いヤツ(1.6.2とか)なので、まだデフォルトにはなっていない。 .gemrcを作成して、デフォルトで--no-ri --no-rdoc 以下の内容を記述した.gemrcファイルを作成し、ホームディレクトリに配置する。 gem: --no

    RubyGemsでgemのインストール時に--no-ri --no-rdocをデフォルトにする - アインシュタインの電話番号
  • GitHubで付けたタグを削除する - アインシュタインの電話番号

    タグの付け方については、この記事の最後の方でちょろっと書いたけど、間違って付けちゃったりしたタグを消す方法がわからなくて調べたのでメモ。 前提 こうやって付けたタグを消したい場合の話。 $ git tag -a 0.2 -m 'hogehoge' $ git push --tags タグの消し方 git tagに-dオプションを付けて消した上で、GitHubのクローン用アドレスに向かってpushすると消せるみたい。 $ git tag -d 0.2 $ git push git@github.com:ruedap/hello-github.git :0.2 git remoteにoriginとしてGitHubが登録されているなら、わざわざアドレスを打たずにoriginでいける。 $ git remote heroku origin $ git tag -d 0.2 $ git push o

    GitHubで付けたタグを削除する - アインシュタインの電話番号
  • HTTPメソッドのPOSTとPUTの冪等性 - アインシュタインの電話番号

    昨日の記事のはてブコメントにて、POSTとPUTの使い分けには冪等性が重要ですよとのアドバイスをいただいた。ので、冪等性について調べてみた。 冪等性と安全性 @tkawaさんに、はてブコメントにてアドバイスいただいたのは冪等という考え方。 これに加えて、性質の違いとしてPOSTは冪等ではないがPUTは冪等というのも重要です 冪等ってあまり聞かない用語だけど、この冪等についても、Webを支える技術にはちゃんと書いてあった。 冪等とは「ある操作を何回行っても結果が同じこと」を意味する数学用語です。たとえばPUTとDELETEは冪等ですので、PUTやDELETEを同じリソースに何回発行しても、必ず同じ結果(リソースの内容が更新されている、リソースが削除されている)が得られます。 安全とは「操作対象のリソースの状態を変化させないこと」を意味します。リソースの状態に変化を与えることを副作用といいます

    HTTPメソッドのPOSTとPUTの冪等性 - アインシュタインの電話番号
  • Herokuアプリに独自ドメインを割り当てる(ムームードメインの場合) - アインシュタインの電話番号

    2013年12月現在では、この方法は利用できなくなっています。 Herokuで作ったWebアプリに、自分で取得した独自ドメインを割り当てる方法について、今回はherokuコマンドから行ってみた。ちなみに、バリュードメインの場合はこちら。 前提 まず前提として、Herokuアプリ側のURLと、割り当てたい独自ドメインは以下。 |-:|:-| |Herokuアプリ側のURL|http://nekostagram.com/| |割り当てたい独自ドメイン|http://nekostagram.com/| この2つを紐付ける手順について以降に書く。 Heroku側の設定 前回は、Herokuのアプリ管理ページからGUIベースでドメインを登録したけど、今回はターミナルからherokuコマンドを使って登録してみる。結果はどちらでやっても同じ。まず、heroku addons:addコマンドを使って、Cu

    Herokuアプリに独自ドメインを割り当てる(ムームードメインの場合) - アインシュタインの電話番号
  • Herokuを使って1日1回名言をツイートするTwitter Botの作り方 - アインシュタインの電話番号

    ここ最近、Google App EngineやHerokuを使ってTwitter Botを作ろうと、いろいろ実験していた。以下はその関連記事。 Google App EngineのJRubyでSinatraを使ってHello worldする RubyTwitterのOAuth認証に必要なトークンを取得する Google App EngineのJRubyでSinatraからTwitterにつぶやけなかった HerokuでSinatraを使ってHello worldする HerokuアプリをGitHubにもプッシュする HerokuGitHubの両方にプッシュする時の秘密にしたい値の扱い HerokuのSinatraでTwitterにつぶやく Herokucronを使って自動でTwitterにつぶやく で、これらを踏まえた試行錯誤の結果、HerokuとSinatraの組み合わせで目的のも

    Herokuを使って1日1回名言をツイートするTwitter Botの作り方 - アインシュタインの電話番号
  • HerokuでNode.jsとExpressを使ってHello worldする - アインシュタインの電話番号

    普段自分はHeroku+Sinatra+Slim+SassでWebアプリを作っているんだけど、Node.jsやCoffeeScriptについてちょっと調べてたら、Herokuを使う前提で、Node.js(Express), Jade, Sassという組み合わせでCoffeeScriptで書けば、前述のSinatraアプリとほぼ同じような感覚で書けそうなことに気づいて、ぐっとNode.jsに興味が沸いた。 ということで、さっそくHerokuを使ってNode.jsアプリを作ってHello worldしてみた。今回の記事を最後まで行くと、これが出来上がる。ソースコードはGitHubに。 各種インストール この記事ではNode.jsとExpressだけを使ってHello worldする。今回はJadeやSass, CoffeScriptは出てこない。まず、Node.jsとExpressを使うのに必

    HerokuでNode.jsとExpressを使ってHello worldする - アインシュタインの電話番号
  • 宇多田ヒカル大好き専用「ウタダヒカループ」を作ってみた - アインシュタインの電話番号

    冷蔵庫で設計したWebサービス、宇多田ヒカル大好き専用「ウタダヒカループ」を8月8日にリリースしました。 すぐに、ずっと、ぼんじゅーる。 今回のWebサービスの制作理由をざっくりまとめると以下の2点です。 ブラウザに uhloop.com とだけ打ち込めば、すぐに、ずっと、宇多田ヒカルを聴いていられる・観ていられるサービスが欲しかった。 活動休止ライブのDVD「WILD LIFE」で、宇多田さんがとても楽しそうに観客とぼんじゅーる!!を言い合っているシーンを観ていたら、自分もぼんじゅーるしたくなった。 キャッチコピー「すぐに、ずっと、ぼんじゅーる。」はこんな意図で付けました。 もう1つ大事なことを書き忘れていました。このウタダヒカループで再生されるPVは、閲覧者全員が同じ曲目・同じ再生時間で視聴できます。ですので、みんなで同じ曲を聴きながら、ぼんじゅーるメッセージやTwitterを介して、

    宇多田ヒカル大好き専用「ウタダヒカループ」を作ってみた - アインシュタインの電話番号
  • MacBook Pro (13-inch, Mid 2010)のメモリーを8GBに増設する - アインシュタインの電話番号

    MacBook Proパワーアップ計画の第1弾として、メモリーを標準の4GBから8GBに増設する。ちなみに第2弾ではHDDを、第3弾ではバッテリーをパワーアップさせる予定。自分が使っているMacBook Pro 13インチ (Mid 2010)は発売から約1年。購入したのは、何もカスタムしていない、いわゆる「吊るし」と呼ばれるデフォルトのスペックなので、購入当時から不満ではなかったものの快適でもなかった。 今回パワーアップしようと思い立ったのは、やはり3月の地震の影響が大きい。普段パソコンを使う仕事をしていて、なおかつプライベートでもよく使うので、これ1台があればなんとかなるという環境を作りたくなった。今回メモリーを8GBに増設したことで、Firefox 4とVimperator 3が快適になった。詳しくは記事の一番最後に。 購入したもの メモリーの購入場所は、後述のメモリー交換手順で参考

    MacBook Pro (13-inch, Mid 2010)のメモリーを8GBに増設する - アインシュタインの電話番号
  • SinatraからActiveRecord 3を使う(4) 比較演算が簡単になるMetaWhere - アインシュタインの電話番号

    前回のバリデーションに引き続き、今回はActiveRecord 3を使った際のwhereメソッド内での比較演算が簡単になるgemのMetaWhereについて調べたのでメモ。ぶっちゃけ今回はSinatraはあんまり関係なくて、ActiveRecord 3の使い方が便利になる話。 お題 updated_atカラムの中で、今から1時間前よりも古い日時のレコードだけ抽出せよ このお題をクリアするためのActiveRecord 3のwhereメソッドの書き方がよくわからなかった。というか、今もわかってない。たぶんSQL文を直接書いて「updated_at < 1時間前の数値」的な感じで書くんだろうけど…と調べているときに、タイトルにもある通りの比較演算が簡単になるMetaWhereの存在を知ってしまった。ので、whereでの書き方がよく分からないまま、このgemを使って解決した。 比較演算が簡単にな

    SinatraからActiveRecord 3を使う(4) 比較演算が簡単になるMetaWhere - アインシュタインの電話番号
  • Vimperator 3のヒントモードでアルファベットを使う - アインシュタインの電話番号

    Vimperator 2系では、char-hints-mod2.jsプラグインにお世話になっていた「ヒントモードでのアルファベット指定」が、Vimperator 3ではデフォルトのオプションで出来るようになったみたい。初期設定の数字指定はやっぱり使いづらかったのでアルファベットに変えた。その時に、指定した文字の1文字目が無視される挙動があったのと、表示はアルファベットの大文字にしたかったので、それぞれ解決してみた。 hintcharsオプション Vimperator 3では、デフォルトで備わっているhintcharsオプションでヒントモードで表示したい文字を指定できるみたい。 set hintchars=abcde ちなみに、Vimperator 2系で自分の環境では、char-hints-mod2.jsプラグインを使って以下のように指定していた。 "" char-hints-mod2.j

    Vimperator 3のヒントモードでアルファベットを使う - アインシュタインの電話番号
  • Vimperatorのステータスバーの文字が小さいので直す - アインシュタインの電話番号

    コメント欄でid:teramakoさんにアドバイスいただいた方法で調べてみたら、.vimperatorrcで設定できたっぽいのでそちらの方法をメモ。 .vimperatorrcに以下を記述。 style chrome://* <<EOM #liberator-commandline { /* command line */ font-family: Menlo, "M+1VM+IPAG circle", Monaco, monospace !important; background-color: #222 !important; color: #fff !important; font-weight: normal !important; font-size: 12pt !important; } #liberator-statusline { /* url, progress arro

    Vimperatorのステータスバーの文字が小さいので直す - アインシュタインの電話番号
  • 1