サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
319ring.net
自分のMBPをEl Capitanにアップグレードするタイミングで、MBPを初期化して、Atomやらfishやらをインストールしてみています。IDEはIntelliJをずっと使っていたのですが、ここ数年はRailsしか書いていないので、Java系はとりあえず今はいいか…と思い、IntelliJのインストールもライセンス更新もしていません。というのも、更新したらRubyプラグインを使ってしまうので。 半強制的にエディタを変えるいいチャンスだと思ったのですが、今の所は特に不満もなく使えています。コードジャンプとかはRubyMineに比べたら超弱いですが(設定次第だと思います)。 ついでにシェルをfishに変更してみました。bashしかつかったことがなかったのですが、fishがいいよという話をずいぶん前に聞いていて、GTDにfishを試すと書いてはいたものの、これもまた惰性でそのまま(bashの
この記事は 大都会岡山 Advent Calendar 2015 の12月9日目のエントリーです。 昨日は @bleu48さんの 大都会のサイクリングについて | the48’s diary でした。 岡山に来てから4年が経ちますが、一昨年に結婚、昨年家が完成し、今年は息子が生まれました。最近は子育てに奮闘しているところです。 さて、昨年は我が家(通称:パトランド)を紹介したわけですが、今年はその家を建てた際に家の屋根に搭載した太陽光パネルの売電結果を載せようと思います。ちょうど1年が経ったので、実際のところ年間どれくらい売電してくれるのか振り返るチャンスでもあるわけです。 太陽光発電スペック 一応我が家の太陽光パネルのスペックを載せておきます。 家(屋根)・南向き: 10.8KW カーポート(カーポートの屋根)・南向き (但し近隣の屋根によって一部隠れる時間あり): 3.9KW 合計:
岡山でgroovyやってる人があんまりいないからちょっとやってみるか、というくらいの気持ちでgroovyの勉強を始めようと思い、とりあえずGrailsを使ってみることにしました。といってもまだアプリを作ってないですが、とりあえず素のJavaScriptとCSSは嫌だなぁと思っていたので、CoffeeScriptとSASSを使えるようにしてみました。 groovyとGrailsのインストール groovyとgrailsはgvmを使ってインストールしました。 まずはgvmのインストール。 curl -s get.gvmtool.net | bash 次に、groovyとgradleとgrailsのインストール。 gvm install groovy gvm install gradle gvm install grails Grailsプロジェクトの作成 次に、grailsプロジェクトを作成し
昨日の続きみたいなもんですが、Grailsでbootstrap-sassを使いたいのだけれど、どうしたらいいかなーと思っていたんですが、前にspring bootの練習をしていたときにWebJarsというのがあったなというのを思い出したので、それを使ってみることにしました。WebJarsっていうのは、JavaScriptのライブラリをmavenやgradleを使って管理しようという仕組みです。Railsでいうところのrails-assetsみたいなもんですね。 http://www.webjars.org/ その中で、Bower WebJarsというのがありました。Classic WebJarsは、WebJarsチームがOK出したものが登録されていくけれど、Bower WebJarsは誰でも登録可能のようで、最新のバージョンのライブラリが使えます(Classic WebJarsはバージョン
前提条件 Elasticsearch + kuromoji Ruby/Rails 前回の記事では、カタカナで検索するところまででした。 今回はカタカナで並び替え(ソート、sort)します。 前回の条件のまま、ソートの条件としてヨミガナ昇順、降順を指定したら、順番がめちゃくちゃになりました。おそらく文字コード順になってるのかなぁと推測しましたが、まぁわかりません。 追記: ここから analyzerで分割した結果の中から採用されるそうです。詳しくはコメントをみてください。 追記: ここまで そこで、なんかいい方法ないかなぁと調査していたら、本家のコードにありました。 elastic: String Sorting and Multifields fieldsのrawに設定をすればよいようです。 "tweet": { "type": "string", "analyzer": "english
最近データベースというかSQLについて勉強しているんですが、奥が深いですね。この前の第9回中国地方DB勉強会のときに聞いたrank関数を使って、ランキング機能をリファクタリングしよう!と思って最近頑張ってます。というのも、複雑なクエリ(遅い)を業種数分(10回くらい)呼んでいたため、Herokuだと結構ギリギリの速度になることもあったので、なんとかしなければ!と思っていたのです。 とりあえず、私の開発環境を載せておきます。 Mac Yosemite Ruby 2.2 Rails 4.2.1 PostgreSQL 9.3.4 ひとまずrank関数を使うところまで まず、NewRelicを使ってActiveRecordが出力しているSQLを取得し、それを0xDBEのコンソールに貼り付けて、rank関数を使って業種でパーティションしてランキングを出すところまでしてみました。rank関数は、関数名
Google PageSpeedが終了するよという情報が流れてきて、初めてGoogle PageSpeedを知った。どんなものかと思っていたら、URLを入力したら高速化できていない部分を指摘してくれるものだった。うわー、もっと早く知っていれば…。私が開発に携わっているサービスも徐々に表示速度が遅くなってきていたので、これを参考に高速化を行ってみた。 ちなみに2015年5月12日現在、本番環境はHerokuでプログラムはRails4.2でできている。 Google PageSpeed 静的リソースのキャッシュの有効期限を設ける PageSpeedで怒られた中でズラーッと並んでいたのがこれだったので、とりあえず設定することに。 参考ページ: qiita: herokuでブラウザのキャッシュを利用する config/environments/production.rbに以下を設定。 config
またまたDeviseです。 どうもDeviseは自分自身のパスワードを変更した場合、勝手にログアウトするようです。まぁそれはそれで正しい動作な気はしますが、そうしない方法はないかなーと思って探していたら、ありました。 class UsersController < ApplicationController load_and_authorize_resource def update @user.skip_reconfirmation! # メールアドレス変更確認しない result = if current_user.id == @user.id # 自身の更新ならパスワード入力を求める @user.update_with_password(user_params) else @user.update(user_params) end if result # パスワード変更でログアウトす
JSのMV*は何がいいのか論争は最近収束気味な気はしますが、あんまり触ることができていなかったので、きよくらさんの話を聞いて興味を持っていたKnockout.jsを、仕事で作っているプロダクトに導入してみました。 AngularJSは途中から導入するには難しいですし、BackboneJSはなんか面倒臭かった記憶がありました。結局jQueryで頑張ろうと思えばなんとかなるレベルなので、とりあえずjQueryでDOMと戦っていましたが、面倒臭さが勝ち始めてきました。Knockout.jsは、MVVMとしてシンプルな機能を提供してくれているので、途中から導入できそうでした。 ちなみにKnockout.jsとjQueryを合わせて使っているので、プロジェクト内からjQueryを撲滅するとかそういうことはありません。相変わらずjQueryは便利に使っています。 jQueryのみで作ってDOMを掘って
Google Playにkotlinで作り直したBatteryCrystalをリリースしてみました。 Javaで作られたアプリをKotlinで作り直して行く上で、とてもイライラもしつつも、面白かったです。 なので、kotlinでAndroidアプリを作るためのTipsを書いていこうかなと思います。 まぁ正直なところ、自分のための備忘録ですw その前にアプリの紹介を少々。 BatteryCrystalは、バッテリーの残量を表示するウィジェットです。また、ウィジェットをタップすると、WiFiやBluetoothやGPSのON,OFFや、マナーモードの切り替えなどができます。ウィジェットがメインのアプリなので、普通のアプリとはちょっと違いますが、そのためいろいろと楽しめました。 Intentを作るには? 次のActivityを呼び出すために、Intentを作りますよね。しかし、kotlinではど
昨日、PHPの保守性・管理性が上がるPHPの書き方というブログ記事の話題がTLでありました。 どうも炎上して消されてしまったようですが、魚拓があるようです。 http://megalodon.jp/2014-0812-0928-28/bulkserver.jp/blog/2014/08/07/php-code/ あんまりよくない書き方が書かれていて、PHPを随分書いていない俺も卒倒してしまったので、ちょっと俺なりに書いてみようかなと思った次第。 保守性・管理性とは? そもそも保守性・管理性とは何かと言えば、読みやすさ、理解しやすさ、思い出しやすさだと思います。先の記事がなんで話題になったのかというと、多分、保守性も管理性も乏しかったからです。「これはこう書けるよ」くらいの記事だったら、コーディングを少し減らせるとかでよかったのかもしれません(それでも話題にはなってたかもしれないけれど)。
ActiveDecoratorで作ったメソッドにアクセスできなかったのでメモ。 @hoge.piyo.decorate_methodみたいな感じで、Hogeモデルに対してbelongs_toなモデル(Piyo)のメソッド(PiyoDecoratorで定義したdecorate_method)にアクセスしようとしたらmethod_missingになってしまった。 ググったら以下のサイトとスライドがとても分かりやすかった。 ActiveDecoratorでhas_manyな関連モデルに対応する ActiveDecorator導入の話 ActiveDecoratorが有効になるのは、renderされるタイミングrender partialされるタイミングで、そのときに渡されている変数に対してのみらしい。 なので、@hoge.piyoをrender partialのlocalesで変数として違うテン
railsって1つのレコードを更新するのには特に困らないんですが、複数レコード更新したい場合に結構困ります。リスト表示してフラグにチェックいれて更新とか、そういうやつです。似たようなことをやっていたところのコードをコピーして作ろうとしたんですが、strong_parametersのところでエラーが発生。うまくいかず、悩んでいたら、ゆうじさんに教えてもらえました。 fields_forで作った要素をstrong_parametersで許可したいんだがなー…。配列じゃなくて…。 — 尾古 豊明(パトラッシュ) (@patorash) 2014, 6月 10 @patorash obj.each { fields_for … } みたいな感じですか? — ゆうじ@最近カメじゃないです (@yuji_developer) 2014, 6月 10 @patorash ぼくはたしかfields_for
前回、私がRSpecを書く場合のやり方についての記事を書きました。 今回はインテグレーションテストについて書きます。 私の場合はController,Viewのテストは基本的には書かず、インテグレーションテストで済ませています。インテグレーションテストフレームワークは、 Cucumber Turnip RequestSpec FeatureSpec Steak など色々あります。以前はCucumberを使っていたのですが、現在担当しているプロジェクトを始める前に、Cucumberに不満があったので、他のやつを試そうという話になって、Steak, RequestSpec, FeatureSpecを試して、FeatureSpecにしました。Turnipはこれらを検討していた頃は有名でなかったので、試していませんが、うちの会社の他のプロジェクトでは、Cucumberの代わりにTurnipを使うよ
まぁ完全にミスだったんですが、secrets.ymlにproduction環境のsecret_key_baseを設定するのは環境変数SECRET_KEY_BASEを使うのに、一度SSHでログインして設定して満足してしまって、永続化するのを忘れていました。それでcapistranoでデプロイしたら環境変数ないから止まってしまったというね…(開発環境だったからよかった) # Be sure to restart your server when you modify this file. # Your secret key is used for verifying the integrity of signed cookies. # If you change this key, all old signed cookies will become invalid! # Make sure
今日は木曜日だったので、ハンバーグの会(Okayama.rb)に参加してきました。 今日は@mako_wisにテストの書き方について相談を受けたので、粒度とかについて説明しましたが、私は説明し始めると早口になってしまうので詰め込みすぎたかもしれないと思ったのでちょっとまとめておこうと思いました。ちなみに、書き方といってもRSpecの始め方とかではないです。その点はあしからず。 Railsプロジェクトのいいところは、テストがとてもしやすいところだと思います。 私は今の会社に入るまで、テストは書きたいけれど、どう書けばいいのかわからなかったのと、頑張って書いてみたものの、成果が周りに評価されなかったのでこのままでいいのだろうか?と思い悩んでいました。しかし、既にテストがあるプロジェクトに入って書き方を学べた事と、同僚とThe RSpec Book読書会を社内で開いて勉強したおかげで、結構綺麗に
オープンセミナー岡山に行ってきました。 今回は、テーマが『フロントエンドとサーバサイド』であったためか、 参加者が例年より多かったような気がします。 オープンセミナー2014@岡山のサイト セッションの内容ですが、以下の順番でした。 1.パソコンは私たちのもう1つの目-見やすく、聞きやすいWebページづくりにぜひご協力を! スピーカー:毛並 みけ 2.ソフトウェアエンジニアの目指す道〜フロントエンドとサーバーサイドを超えて スピーカー:倉貫 義人 3.実践 大都会式 プロトタイピング&フロントエンド2014 スピーカー:前川 昌幸 & 久保木 博 4.オープンで柔軟なクラウドプラットフォーム ”Microsoft Azure“ スピーカー:井上 大輔 5.明日からできる、デザイン脳! スピーカー:秋葉 ちひろ 6.ベンチャーのサービス開発におけるフロントエンドとサーバサイドの間 スピーカー
MAMPでImageMagickを使えるようにするのは結構大変でした。 今回、自分がやりたかったことは、MAMP上で動いているウェブアプリで、pdfファイルからpng画像を作り出すというやつでした。 しかし、phpコマンドやpeclコマンドが、MAMPのものではなく、HomeBrewでインストールしたphpになっていたため、難儀しました。 参考にさせてもらったサイトは以下の通り。 MAMP2.0.5のPHPにImageMagickをインストール ImageMagickのPDF変換用gsコマンドを差し替える Issue with Imagick and also with phmagick: Postscript delegate failed / No such file or directory とりあえず、まずHomeBrewで入れているphpを削除します。 brew uninstal
Okayama.rbでとあるプロジェクトをしているのですが、その最初のほうを自分が作り込むから待っててくれといって早数週間。めっちゃDeviseでハマってました…。 rails-apiを使って、jsonを返すだけのapiサーバーを作ろうとしているので、deviseでのログインはトークンからだけでいい。 なので、config/routes.rbでdevise_forを使わないでもいいだろうと思ってコメントアウトしたらテストが死んでしまったので調査開始。 また、グループウェア的なのを作ろうとしているのだけれど、だれでも登録できるグループウェアだとダメなので、登録機能をオフにするのもどうすればいいんだろう?と思っていたら、自分でオンにしているだけだった…。まず登録機能をオフにするには:registerableをコメントアウトすればいい。 class User < ActiveRecord::Ba
twitter上ではもう宣伝していますが、SelfieGirlをリリースしました。 SelfieGirlは、twitter上で話題になっている#グラドル自画撮り部のハッシュタグを元に検索して、スマートフォンで見やすいように整形したWebサービスです。Androidアプリはちょこちょこ出ているようなので、Androidじゃなくて別の方法でやってみようかなと思っていました。 SelfieGirlを作っている技術は以下になります。 Ruby on Rails Ruby製フルスタックフレームワーク AngularJS JavaScript MVCフレームワーク ionic framework AngularJSを前提にしたスマートフォン用に最適化されたhtml5フレームワーク heroku Ruby on Railsを簡単にデプロイできるPaaS。様々な言語をサポートしている。 oauth.io
現在作っているプロジェクトの高速化のために、キャッシュの利用を考えたのですが、本番環境としてherokuを検討しているので、herokuでmemcachedが使える方法を模索していました。ちなみにherokuではmemcachedのadd-onが2つあります。 MemCachier Memcached Cloud 今回は料金の安い方のMemCachierを使う事にしてみます。 Rails3,4での導入方法は、Heroku DevCenterに書かれています。 Gemfileに以下を追加。 gem 'memcachier' gem 'dalli' そしてインストール。 bundle install そしてcache_storeにdalliを設定します。 config.action_controller.perform_caching = true config.cache_store = :
Cordova(PhoneGap)でAndroidアプリを作って公開してみました。 Cordovaはhtml5でマルチプラットフォームのアプリを作るためのツールです。今回は、かねてから調べていたionic frameworkで作ってみました。 IonicRssReader(Android 4.2+) RSSフィードのタイトルとURLを登録する タイトルを押すとフィードを読み込んでカードリスト表示 登録したRSSフィードの削除 外部ブラウザでフィードを表示 くらいまでできます。 見た目はこんな感じ。 作り方の説明は全部していると長いので、概要だけざっと書きます。 機会があればどこかにちゃんと記事を書きたいなぁ〜。 html,js,cssの生成はMIDDLEMANを使っています。middlemanは静的サイトを生成するためのツールです。記述は流行りのHaml, Coffeescript, Sa
Railsを使っていても実はメールを使うようなところを担当したことがなかったので今更ActionMailerについて勉強中です。 ActionMailerの設定はenvironments/(production|development|test).rbとか、もしくはapplication.rbに書くのでしょうが、普通はenviroments以下だと思います。こんな感じですね。 config.action_mailer.default_url_options = { host: 'localhost:3000' } config.action_mailer.default_url_options = { host: 'example.com' } しかしですね、いろんな環境でお試しで動かしたい場合があると思うんですよ。ステージングとか。デモとか。 そういうときにどういう風にすればいいのか。
Kotlin Advent Calendar 2013で空いていた枠を書くようにしていたんだけれど、 全然書けていなかったので、とりあえず書いておきます。 HerokuでKotlinは動くよ、という報告です。 HerokuはPaaSとして有名ですが、いろんな言語をサポートしています。 Javaもサポートされているので、うまいことすればKotlin動くかなと思っていました。 まず、Heroku Javaのサイトに行きます。 Containerless web app with Embedded Jettyから、Create Appを押してアプリを作ります。 すると、Javaアプリが作られます。 Herokuにログインして、gitリポジトリを確認して、そこからcloneしましょう。 cloneすると、今デプロイされている内容がDLされるので、これを修正していきます。 まず、pom.xmlを修正
先日からguard + spork + rspecを使った自動テストを行うようになってノリノリでテストをしています。いちいち自分でテストを走らせないでいいので便利ですね!sporkのおかげでテストのロードも速くて快適です。 さて、現在仕事でもゴリゴリとテストを書いているのですが、同じような処理を毎回書くことがあります。例えば、ユーザーの権限が管理者・会員・ゲストなどがある場合、それぞれの権限での動作を検証しなければなりません。でも権限毎に同じ振る舞いのテストを書いていると冗長ですよねぇ…。 会社で@kazuhisa1976と@ore_publicと一緒にThe RSpec Book読書会をやっているのだけれど、そこで学んだ検証方法で、共通処理をまとめることができることを知りました。それが、shared_examples_forとit_behaves_likeです。 使い方ですが、まずはユー
Rails4プロジェクトをデプロイしようとしたらassets:precompileで落ちた…。 twitter/bootstrap/bootstrap.lessがないよと怒られる。 ん〜?require_tree . しているから、bootstrap_and_overrides.css.lessも読み込んでいるはずなのだが…(ここでtwitter/bootstrap/bootstrap.lessを読んでる)。 ぐぐったらstackoverflowがヒット。 ‘twitter/bootstrap/bootstrap.less’ wasn’t found Gemfileでassets groupを削除しなさいと書かれていた。 削除してからrake assets:precompileしたらうまくいった。 ちなみに自分はassets groupってなんのことだかよくわかってなかったのでさらにぐぐっ
今回はインテグレーションテストにはCucumberを使わずRequestSpecを使ってみよーぜーということになった。Deviseでのユーザーをログインさせる方法を考えていたのだが、普通にログイン画面を開いてメアドとパスワードを打たせてログインしてから、さてさて…とやるのは時間がかかるだろうから、いい方法を調べよう!ということになったので、メモ。 参考にしたサイトは以下の通り。 Devise認証なコントローラーをRSpecでテストする : さかなチキンぱん。 rspec & devise test helpers Integration tests with Devise and RSpec spec_helpers.rbに RSpec.configure do |config| # Devise config.include Devise::TestHelpers, :type => :
CodeIgniterでコントローラーでbefore_filterやafter_filterするにはどうすればいいんだろう?と思い、調べてみたところ、CodeIgniterではフックが使えるらしいです。 フックとは、決められたタイミングで行われるコールバックのことです。 今回は認証機能をフックで呼んでみるような感じのサンプルを作ってみます。 application/config/config.phpの$config[‘enable_hooks’]をTRUEに設定します。 application/config/hooks.phpに、フックで使用するクラスを指定します。ここでは、BeforeFilterクラスを指定してみます。 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); // コントローラ
追記:inverse_ofを使いましょう。 http://319ring.net/blog/archives/2724 以下、原文。 Railsやってていつもbelongs_toの項目の検証をどうするのかで迷っていたのですが、自分はこれが最適解なのかなーと思ったのがあったので書いておきます。 belongs_toのデータを必須にしたいのですが、:presence => trueだと必須というだけでちゃんとリレーション先に存在するidじゃない場合があるので信頼性にかけるので、どうするべきか?と悩んでいました。:inclusionでやるのがいいのかな?と思っていたのですが、どうにも重たそうだし、ほかに方法があるんじゃないのかなーと。 Web+DB Pressの70号で紹介されているのですが、Rails3.2以降ならば、modelでpluckというメソッドが使えるようになっています。これは、指定
次のページ
このページを最初にブックマークしてみませんか?
『自転車で通勤しましょ♪ 自転車通勤応援サイト』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く