サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大阪万博
blog.bitarts.jp
Rubyインストール時にRust環境が必要 Ruby 3.3.0では簡単にYJITが選択できるようになっているのですが、前提条件としてRubyビルド時にRustコンパイラがインストールされている必要があります。Rustが入っていない場合、YJITが使えないRubyがビルドされてしまうので注意しましょう。 これはrbenvでRubyをインストールする場合も例外ではありません。Macの場合は次のような手順で事前にRust環境をインストールしておきます。 $ brew install rustup-init $ rustup-init $ exec $SHELL -l $ rbenv install 3.3.0 rubyを--yjitオプション付きで実行するとYJITが有効になります。バージョン情報を確認すると「+YJIT」と表示されて、YJITが有効になっていることが確認できます。 % rub
RailsでのURLのバリデーションについて探すと次のような書き方がよく出てきます。 validates :url, format: URI::regexp(%w(http https)) URLの正規表現は真面目に書こうとすると複雑なものになりますが、URI::regexpがURLの正規表現を返してくれるのでこれを利用するのが手軽ですね。 と思ってたんですが、外部の脆弱性検査で指摘されて気付いたけど、これだめなやつだった! 先頭&末尾が考慮されていないので、次のような文字列も受け付けてしまう。これはまずい。 javascript:alert('XSS');//https://bitarts.jp/ こうしましょう。 validates :url, format: /\A#{URI::regexp(%w(http https))}\z/ これに限らず、validates formatを使う
Railsでキャッシュストアをファイル(config.cache_store = :file_store)にして、ガンガンキャッシュを活用していると、サイトの規模が大きくなった時にrake tmp:cache:clearが辛くなってくる。やたら時間かかるようになるし、その間サーバの負荷もヤバイ。困った。 メモリストアにするとか、Memcached使うとかするべきなのかもしれないけど、VPSとかでギリギリやってるとメモリに余裕がないんです。 そこで、キャッシュファイルを削除するかわりに/tmpへmvするrakeタスクtmp:cache:flushを作ってみた。 lib/tasks/tmp_cache_flush.task でもこれだけだと、サーバをリブートした時とか、/tmpが削除されるタイミングが辛そうなので、夜中にひっそり消すようにする。サーバに負荷をかけないように、優先度を下げて処理す
Heroku Buttonこと、Deploy to Herokuボタンとは、これをクリックすると、自分のHerokuアカウントにサードパーティのWebアプリをデプロイしてくれるという機能。地味なようで結構画期的なサービス。 今回僕も試しにHeroku ButtonでデプロイできるWebアプリを作ってみた。 どんなアプリかというと、 お客さんから「静的なコンテンツだけだよ」と聞いていたのに、さらっと「ここ、お問い合わせフォームで」とか言われる事態は普通にありすぎることなので想定しておくべきです。その実装方法としては、静的ファイルだけで構成しているのに、フォームのページだけWebアプリ化するというのは、個人的にはくやしいので、フォームは静的なまま、POST先だけフリーのCGIを使ったりしていました。悪くはないんだけど、最近はNginx派なのでCGIとか逆に面倒じゃないですか。ということでSin
Visio大好き!なのですが、Macを使うようになってからは使わなくなった。最近は仕方なくパワポやLibreOffice(OpenOffice.org)のDrawを使っていた。でも簡単なフローチャートくらいならいいけど、UMLとかは描きにくいじゃないですか。 代表格のCacooをはじめとして、この手のアプリは最近はWebアプリとして提供されているものが多いわけですが、ほとんどが有償版+機能限定無償版という形態です。お金を払いたくないというわけではないんだけど、外部の人と共同作業する時にその人が有償ユーザーでないとできない作業がでてきたりすることも考えられるので、その点が悩ましい。 そこで今回見つけたが、draw.io。 まずユーザー登録などが必要なく、いきなり使えることにびっくりした。この手のサービスは保存領域を提供する都合上、ユーザー登録が必要なのがあたりまえ。ところがdraw.ioでは
各々のサーバの様々な場所に分散しているWebサーバやその他各種ログファイルをFluentdでまとめてAmazon S3にガシガシ保存。かつ、分析用にコピーを自前のElasticsearchにも保存します。保存したログはKibanaで手軽にビジュアライズ。 Fluentdはとてもシンプルな仕組みで理解しやすい。「ログを集積したい!」と感じたらサクッと導入できる超便利ツールです。 今回は集積用サーバを経由してElasticsearchとS3に保存する構成にします。 Elasticsearchのインストール Fluentdで集積したログは保存するだけならS3で良いのですが、手軽にビジュアライズしたいので、今回はKibanaを使えるようにElasticsearchにも保存するようにします。今回はCentOSに導入するので、公式のyumリポジトリからインストールします。 $ sudo rpm --i
Bootstrap3ではモバイルファーストでレスポンシブデザインに対応したので、レスポンシブ対応なサイトを作るのが非常に楽になりました。 ところでBootstrapにはMedia objectという要素があって、サムネイル画像+テキストのリストを綺麗に表現することができます。 ところがこの要素がレスポンシブデザインに対応できていないようです。 というかMedia objectで使っている .pull-left がレスポンシブに対応しておらず、小さい画面でも無理やり回り込んでしまう。 そこで、画面サイズがsm以上の時だけ回り込みする .pull-sm-left / .pull-sm-right を作って対応します。 まずSass版のBootstrap 3.1をダウンロード。Railsで使うなら、assetsに入れておけば勝手にコンパイルされるからクソ便利ですね。 bootstrap.scss
昨日こんな記事が話題になっていました。 ≫ 登録されるとつらいユーザー名リスト - Qiita ああ、ちょうどまさにこういうルーティングのWebサービスを作っているところだったりすので、とても参考になる情報。ということでサクッとRailsのValidatorにしてみました。元記事のコメントに書かれていたものと、自分で思いついたものも追加してあります。ついでに複数形にも対応してます。 これをapp/validators/ban_reserved_validator.rbに配置。 Model側ではこんな感じで定義すれば予約語を禁止できる。 class User < ActiveRecord::Base validates :name, ban_reserved: true end やや力技感がありますが、ユーザー登録時にしか走らない処理なので、こんな感じのハードコーディングでも十分かと。
bbatsov/rails-style-guideが非常に参考になりそうなドキュメントだと思ったので、自分で利用しやすいように適当に日本語訳してみたのが1年以上前のことです。 この1年でRailsは4.0になり、セオリーが変わった部分も少なくありません。このガイドの原文はガンガンアップデートされていましたが、オレオレ翻訳版は更新をサボっていました。 あらためて新しい原文を見てみると、言ってることが1年前と真逆になっているような箇所もあり、これはいかんということで、更新しておきました。相変わらず英語が苦手だから自分で日本語化しておいた。という品質ですが。 当ブログ記事はエントリー時点のスナップショットです。このドキュメントはGitHubで管理していますので、最新版はGitHub miyamae/rails-style-guideをご確認ください。 序曲 役割モデルが重要なのだ。 -- アレッ
RubyGemsはRubyのライブラリ配布のパッケージ管理システムですが、なんか最近では、SassとかChefとか、Rubyプログラマ以外の人が使いそうなツールがRubyGemsで配布されるケースが多くなってきました。Rubyとか絶対書かなそうなウェブデザイナがgem installとか打つ時代の到来です。 例えばウェブデザイナが話題のSassを使ってみようと方法をググってみると「Rubyをインストールして、gem install sassと打てば使えるよ!」とか出てくるわけです。たしかにそうなんだけど、それだとシステムワイドにインストールされてしまうので、プロジェクトごとにバージョンを固定することができません。「昔のプロジェクトの動作がいつのまにかおかしくなってる!あれってどのバージョン使ってたんだっけ??」みたいなトラブルを避けるためにも、Gemパッケージはプロジェクトごとに個別にイン
昨晩、PayPalから「上海花千树信息科技有限公司北京分公司様へのお支払いのご連絡」というメールが来た。 一瞬フィッシングかと思ったけど、ガチの不正利用でした。www.jiayuan.comって中国の婚活サイト?で、125ドルのstampを購入したことになってる。 PayPalの案内に従って問題解決センターに異議を提出。するとWeb上でクレーム対応状況などが見られるようになります。すぐに売り手に確認中というステータスとなり、今日、払い戻し決定となりました。 夜間でも対応は早かったし、対応状況の履歴なども見られるので安心な感じではありました。 この一件で怖いなと感じたのはPayPalからの支払いメールを見落とすことですね。僕の場合PayPalは年に1度くらいしか使っていないので、フィッシングだと思ってうっかりスルーしたり、迷惑メールフォルダに入ってしまったりすると、気づかないままになる恐れが
Mac OS Xの/etc/passwdとか/etc/groupなどはダミー?これ編集しても反映されないのね。独自のディレクトリサービスを使っているとのことでで、代わりにdsclコマンドを使うことは分かったんだけど、作ったグループにユーザーを所属させるのがうまくいかず、少しハマったのでメモ。(10.6 Snow Leopard) グループを作る。 % sudo dscl . -create /Groups/XXXXX 空いているGIDを探す。 % dscl . -list /Groups PrimaryGroupID | sort -k 2 -n グループに適当なGIDを設定する。 % sudo dscl . -append /Groups/XXXXX PrimaryGroupID 999 ユーザーをグループに所属させる。 % sudo dscl . -append /Groups/XXX
WindowsからMacに乗り換えたプログラマがテキストエディタ難民になるパターン多いですよね。 ちなみに僕はWindowsではEmEditorを愛用していました。しかしMacに乗り換えてからは、定番とされるエディタを片っ端から試してみるも、どれも全然物足りない。 で、結局行き着いたのはEmacs。というか十数年ぶりにEmacsに戻ってきました。そもそもEmacsだけ使えればこんな苦労もせず今後どんな環境でも力強く生きていけるのでは?そんなふうに悟ったのです。 確かにEmacsなら必要な機能は完全にカバーするので、これで生きていけます。慣れてしまうと他のエディタを使う必要はなくなるし、特殊なキーバインドが馴染んで、どんどんEmacs依存になっていく。しかし本当にそれでいいの?一生この古くて重いエディタで?という思いが消えることはない。 だから他のエディタもたまにはチェックしたりしていたんだ
Rails 3 スタイルガイド(bbatsov/rails-style-guide)が良いまとめだなと思ったのですが、僕は英語が苦手なので辛いです。だから自分なりに日本語版を作っておくことにしました。誤訳上等。 自分の理解が不十分のところの訳文は特にヘンテコなままです。GitHubに置いておきますので、気になる方はご指摘またはPull Requestください。 この記事は古くなっています。最新の記事はGitHub miyamae/rails-style-guideを参照ください。 序曲 スタイルとは、偉人から良い所を分離したものである。 -- Bozhidar Batsov このガイドのゴールは、Ruby on Rails 3開発のための1セットのベストプラクティスおよびスタイル規則を示すことです。これは、コミュニティー駆動ですでに存在する Ruby coding style guide
Railsアプリのテストにrequest spec + Capybara(RSpec 2.10.0 + Capybara 1.1.2)を使い始めてみた 。Cucumberみたいに客も読めるみたいな文章風の文法ではないけど、単体テストからRSpecで統一できるのでお気軽。「受入テスト」というより「結合テスト」としてはいいかも。 基本的にはこんなふうにテストケースを書きます。 describe 'ユーザー情報' do it '詳細表示' vist users_path click_link '近藤勇' page.should have_content '近藤勇の詳細情報' end end いつでも回帰テストできる環境を知ってしまうと、もうテスト無しでは不安でコード書けません。 しかしJavaScript、Ajaxを使ったアプリがターゲットの場合は面倒そうだなあ。と思ったら簡単だった。descr
@gmail.com宛てのメールだけ届かなくなってたので調べてみた。 > ... while talking to gmail-smtp-in-v4v6.l.google.com.: > >>> DATA > <<< 550-5.7.1 [46.51.xxx.xxx] The IP you're using to send mail is not authorized to > <<< 550-5.7.1 send email directly to our servers. Please use the SMTP relay at your > <<< 550-5.7.1 service provider instead. Learn more at > <<< 550 5.7.1 http://support.google.com/mail/bin/answer.py?answer=1
とある拙作システムをご利用中のお客様より「投入したデータがIE9だと表示反映されない。IE7だと正常。」というような報告をうけました。「IE6/7だとおかしい」とか「IE6〜9全部おかしい」とかはよくあるけど、IE9だけ異常で古いIEだと大丈夫というパターンは初めて。 症状を確認すると、反映されないと言われたデータは自分の環境からは異常なく見えたので、当初は先方の勘違いかなと思ったんだけど、複数環境で異常が確認されたと言うことなので、ちゃんと調べてみた。こういうケースでまず疑うのは、ブラウザのキャッシュですね。…ということで的中でした。キャッシュを削除してもらったところ、表示されていなかったデータが表示されるようになったとのこと。 ググったところ、どうやらこれが原因のようです。 Internet Explorer 9 はRFC2616に準拠し、以前のバージョンに比べて積極的にキャッシュを利
「サクサク引けるRubyリファレンスマニュアル」ですが、ぼちぼちとアップデートを続けております。(参照) 大きな変更点としては、まずはk-tsjさんのパッチの取り込み。今までは、例えばStringクラスのunpackメソッドを引くために「unpack」と入力すると、候補が多くて目的のものが出てこない。そこで「String#unpack」とフルで入力する必要があったのですが、このパッチによって「str unp」などと部分文字列を入力するだけで目的の候補が出るようになりました。 もうひとつは別名メソッドの検索の対応。これまでだとEnumerableクラスのfindメソッドを探そうと「find」と入力しても、これまた候補が多い。そこで「Enumerable#find」と入力してみるわけだが、出てこない。フル入力での別名メソッドの検索に対応していなかったのでした。(Enumerable#findは
Windowsメインで使ってた時はchm版でサクサクだったんだけど、Macに乗り換えたら同じような環境を実現する方法が見つからなくて困った。 現状のRubyのリファレンスマニュアルは、るりまプロジェクトの成果により、申し分のない情報量があります(感謝!)。できればこれをchm的にサクサク引きたい。 ちなみに英語版ならrailsapi.comが非常に快適。こんな感じで「るりま」を引けたらいいなあ。と思って真似て作ってみました。 ≫ http://miyamae.github.com/rubydoc-ja/ 機能的にはrailsapi.comに及ばないけど、基本的な検索は一応サクサクいけるかと思います。 ソースはgithubに置いてあります。静的ファイルだけで構成されているので、ダウンロードしてローカルで使うこともできます。
iPhoneではメールのアカウント設定画面に「GMail」があるので、簡単にGMailを利用することができます。 しかしこれがイマイチでした。 普通に設定するとIMAPでのアクセスとなり、15分間隔のフェッチ受信しかできない。しかも通知ポップアップが表示されない(音は出る)。これではメールの確認が遅れてしまう。 1年くらい前からExchangeサーバを使ってのリアルタイムなプッシュ受信ができるようになりました。しかし通知ポップアップが出ないのは相変わらず。 そこでメールをリアルタイムに確認するために、通知ポップアップ用に別途@i.softbank.jpアドレス宛てにメール転送したり、Boxcarなどのサードパーティアプリを利用するなど、受信と通知を別々に行うという、ややトリッキーな運用をしていました。今までは。 それがiOS5になってメールの通知設定ができるようになり、これまでの問題が一気
HTMLの<textarea>をJavaScriptを駆使してWYSIWYGエディタに拡張するライブラリが色々と存在する。色々ある中で、TinyMCEとFCKeditorがこの分野の二大勢力となっている。当社のEagleRay CMSも、これら(両方対応)を使ってコンテンツを編集できるようになっている。いつもお世話になっております。特にFCKeditorはフォームの編集にまで対応していて非常に高機能。 長年のバージョンアップですっかり重量級になってしまったFCKeditorの後継として先日、完全に作り直されたCKEditorというのが正式リリースされた。 FCKeditorの公式後継バージョンなのでスムースに移行できるだろうと思ったら、1から作り直しというだけあってFCKeditorとは色々と違うようだ。 とりあえずハマったのはCSSの読み込み。編集領域のCSSを指定したいのだが、これには
Ruby 1.9とRails 3.0を使っているとよく出るというエラー。あるいはSQLiteも原因のひとつかもしれない? incompatible character encodings: UTF-8 and ASCII-8BIT ググると色々情報が出てくるけど、あまり綺麗な対応方法が見つからない... エラーのFull Traceを見てみたらこうなってた。 vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.7/lib/active_support/core_ext/string/output_safety.rb:80:in `concat' output_safety.rbを見てみると、ここにパッチを当てれば対応できそう。 でもbundlerを使っているで、インストールの度にパッチ当てなきゃとか良くない。 Rails本体には手を入れないモンキ
Powは、Mac OSX用のRackサーバです。これを使うと複数のRackアプリ(まあRailsアプリ)を同時に簡単に動かすことができます。開発環境に便利。Ruby on Railsの開発者であるDHHが所属する37signalsが公開しています。 Pow: Zero-configuration Rack server for Mac OS X ↓ こちらのブログ記事が気になって僕も試してみました。 Rails Hub情報局: Node.js+CoffeeScriptで書かれた「Pow」がカッコ良すぎる件 インストール方法 $ curl get.pow.cx | sh アプリ登録方法 ホームディレクトリに.powというディレクトリができているので、そこにアプリルートへのシンボリックリンクを作ります。 $ ln -s /path/to/myapp ~/.pow/ こんだけ。完了。 自動的に
僕自身一自転車通勤の人として。言いたいこと、結論からいいます。 車と同じように走れ ルール無視の自転車、危ないなあ、と思うことが毎日のようにあるのですが、そもそも交通ルールをよく知らずに走っている人も多いのではないかと思います。 提言します。どうしたらいいか分からなければ、少なくとも自動車と同じように走りましょうよ。自転車の交通ルールは、いくつかの例外を除いて自動車と同じですから。 特に 左側通行 信号順守 夜間ライト点灯 これらは車の運転においては常識中の常識です。守らないドライバーはほとんどいません。ルール以前に当たり前のこととしてみんな守っていることです。自転車の運転においても常識であるべきです。その他にも、道路標識に従うとか。道路を使用する市民の義務です。 自転車の交通ルールは基本的には自動車と同じですが、一部例外があります。その中で重要なのを2つ。まず車道の左側通行は当然として、
個人的にMacへの乗り換えにおいてキラーアプリとなったのは「ターミナル.app」でした。 デフォルトで普通にbashが使える快適さに酔った。Windowsの「コマンドプロンプト」とは比較にもならない。でもちょっと飽きてきたので試しにログインシェルをパワーユーザー御用達というzshに切り替えてみました。 設定項目多杉やばい。Emacsに加えてzshまで使い始めてしまうと、最強の環境を求めて旅立ち、遂には変態の森を見つけてそのまま突入する勢いです。 カスタマイズ性の高いソフトウェアをガチガチにチューニングして、自分の手になじむ道具を作り上げるというのは職人的で魅力的です。しかしあまりに変態的なカスタマイズをしてしまうと、やむを得ず他の環境で作業する時に自分の手の制御が効かなくなるという大きな欠点があります。 でも、.emacs.d/init.elや、.zshrcのように設定ファイルを書くだけで
ちょっと前の僕を知っている方なら信じられないかもしれないけど、僕は2ヶ月前にMacBook Airを買って以来、もう毎日ひたすらMacしか使っていません。Windowsを使うのはIEでテストする時だけ。 僕はこれまでアンチMacと言っていいほどMacを拒絶してきました。なぜならソフトウェア開発者からするとマイノリティで邪魔な存在だったから。 そんな僕がiPhone開発環境をきっかけにMacを使ってみて、...やっぱ使いにくいと思った。orz でもその後気が向いて本気で使ってみる決意をする。覚悟を決めた。きっかけは最近のRuby界隈のスクリーンキャストってMac多いよなあ。というミーハーな理由。...そしてハマった(良い意味で)。 ハマった理由は「UNIXだから」だと思う。OS標準アプリの「ターミナル.app」がキラーアプリ過ぎる。もうこれだけで生きていける。小回りの効くUNIX。その上にP
当サイト他、AT-LINK専用サーバから、さくらのVPSに移転作業中です。 コスト圧縮効果はかなりデカイです。月額19,950円 → 月額980円へ! 14年間、当サイトはAT-LINKの専用サーバで稼働しています(ハードウエアは何度か入れ替わっていますが)。開始当時(1997年)はまだダイヤルアップの時代。常時接続なんて夢の世界。そんな時代に、個人でも常時接続の専用サーバを持てるAT-LINKが当時どれだけ画期的だったことか... でもそれから月日は流れ、最近では月額千円以下のVPSやIaaSが出てきました。専用サーバには色々メリットはあるけど、今ではオーバースペック。移行を検討することとなりました。 とは言ってもAT-LINKには非常に感謝と信頼を持っています。長年、様々な局面で親身な対応を頂きました。今後も専用サーバが必要な状況ではAT-LINKを選択すると思います。
先日紹介した、RVMですが、具体的な使い方など。 インストールできるRubyの種類を一覧表示する。 $ rvm list known 表示された中から好きなものをインストールする。 $ rvm install ruby-1.9.2-head $ rvm install ruby-1.8.7-head インストール済みのRubyを一覧表示する。 $ rvm list Ruby 1.9.2を使いたくなったらこうする。 $ rvm use ruby-1.9.2-head Gemセットを作る。 $ rvm gemset create project1 作成済みのGemセットを一覧表示する。 $ rvm gemset list Gemセットを切り替える。 $ rvm gemset use project1 一発でRubyごと切り替えることも。これでごっそり環境を切り替えることができる! $ rvm
Mac miniを買ってみたものの、Objective-Cがどうしても気持ち悪くて使う気にならない。 Appleに蹴られる可能性があるというリスクがないわけではなさそうだけど、RubyやJavaScriptでiPhoneアプリを開発できるというRhomobile Rhodes、もしくはAppcelarator Titanium Mobileを検討してみる。 HTMLとかJavaScriptでUIを作ると聞いて、最初はネイティブ風?なのかと思ったけど、実はちゃんと本当のネイティブなツールキットに変換されるでびっくり。 RhodesもTitanimも、プリプロセッサでObjective-Cのネイティブコードに変換してコンパイルする仕組みのようだ。理屈的にはAppleの言い分には影響されないはず。 どちらも、iPhoneだけでなくAndroidにも対応しているというところがポイント。1つのコード
次のページ
このページを最初にブックマークしてみませんか?
『blog.bitarts.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く