タグ

ブックマーク / qiita.com (257)

  • BUNDLED WITH で Gemfile.lock が更新されてしまう件 - Qiita

    BUNDLED WITH って何? bundler 1.10.0 以降で作成された Gemfile.lock では、BUNDLED WITH というセクションがあって、使用された bundler のバージョンがトラックされるようになっている [3485] 。 例えば bundler 1.9.0 で作成された Gemfile.lock のあるプロジェクト上で、 最新の bundler 1.10.3 を使用して bundle install --path vendor/bundle すると、 Gemfile.lock には以下の差分ができる。 これをもう一度 1.9.0 で bundle install すると、上の文字はきれいさっぱり消える。 BUNDLED WITH の何が困るか 多人数で開発するときには、この変更は微妙に邪魔で、意図しない Gemfile.lock 変更が出てしまうことで

    BUNDLED WITH で Gemfile.lock が更新されてしまう件 - Qiita
    t-wada
    t-wada 2015/06/17
    各所でザワザワしている "BUNDLED WITH" の件について。機能の意図や過渡期の今やるべきこと等。
  • いちいちbundle execしたくない 決定版 - Qiita

    はじめに Gemfileを使ってgemを管理してるプロジェクトで、日常的にbundle exec 何々ってやってて、alias be='bundle exec'とかしてるけど、beすら打つのが面倒、って状況よくありますよね。 結論から 2013/12/26にリリースされたRubyGems 2.2.0以降であれば、環境変数でRUBYGEMS_GEMDEPS=-とすることでbundle execを使わなくてもGemfileを読んでくれる。 少し追記 RUBYGEMS_GEMDEPSは"gem dependency file"へのパスを指定する機能。RUBYGEMS_GEMDEPS=MyGemfileであればカレントディレクトリからMyGemfileを読むことになる。カレントディレクトリからの相対パス、絶対パスともに使用可能。存在しないファイルを指定してもエラーは出ないので注意。 "-"だけが特

    いちいちbundle execしたくない 決定版 - Qiita
    t-wada
    t-wada 2015/06/08
    "RubyGems 2.2.0以降であれば、環境変数でRUBYGEMS_GEMDEPS=-とすることでbundle execを使わなくてもGemfileを読んでくれる" おおお
  • Rails の `utf8=✓` の歴史と消し方と snowman ☃ - Qiita

    Rails の form_tag や form_for で form を作成すると <input name="utf8" type="hidden" value="✓"> という input 要素が自動で追加されて、submit すると utf8=✓ というパラメータが付いてくる。これの歴史と消し方を調べた。 Rails3 で、Internet Explorer 5、6、7、8 にパラメータを Unicode でエンコードさせるため、上記ヘルパーで作成された form に snowman というパラメータがつくようになった。詳しい経緯はコミットログや、snowman を追加した Yehuda Katz 人による stackoverflow の回答に書いてある。 その当時の rails を使ったことないけど、&#9731 ってこんなのらしいので、 _snowman=☃ って表示されていたん

    Rails の `utf8=✓` の歴史と消し方と snowman ☃ - Qiita
    t-wada
    t-wada 2015/06/08
    あのパラメータにこんな歴史があったのだなぁ
  • そろそろポリモーフィック関連について一言いっとくか - Qiita

    class Notification < ActiveRecord::Base belongs_to :notifiable, polymorphic: true end class Message < ActiveRecord::Base has_one :notification, as: :notifiable end class Like < ActiveRecord::Base has_one :notification, as: :notifiable end 一行で色んなクラスに対する関連が指定できて便利感がある。 だからって、これを安易に使う前にちゃんと考えよう。 ポリモーフィック関連は単に関連の定義を省力化するためのものじゃない。 ポリモーフィックという名前が示す様に、これは多態性を持ったものに対する関連を定義する事であって、インターフェースに対する関連の定義だということ

    そろそろポリモーフィック関連について一言いっとくか - Qiita
    t-wada
    t-wada 2015/06/03
    『SQLアンチパターン』を監訳してから、安易に使わないようになりました。便利な機能でもあるので、「ポリモーフィック関連を使っても良いとき」に監訳者の意見を追記したりもしました。
  • Symfony 2.6 から 2.7 への移行 - Qiita

    Global 非推奨機能を使用すると、警告 (@trigger_error('... is deprecated ...', E_USER_DEPRECATED)) が発生するようになりました。 デフォルトの設定では、警告は減殺され、PHP のエラーログにも書き込まれないようになっています。ただし、それら警告は Web のデバッグツールバーから確認できるため、どこのコードを直すべきかがわかるようになっています。 加えて、テストを走らせた際に非推奨機能の警告を行ってくれる phpunit-bridge の有効化を強く推奨します。 Router Routeのconditionで、%parameter% 記法を使用してコンテナのパラメータを参照できるようになりました。 条件式はコンパイル時にパラメータの置換が行われるので、既存の式に % が含まれる場合は注意が必要です。 例えば foo%bar%

    Symfony 2.6 から 2.7 への移行 - Qiita
    t-wada
    t-wada 2015/06/02
    Symfony 2.6 から 2.7 への移行手順の日本語訳
  • ES6 Modules 間では export/import された変数(?)は同期される - Qiita

    import { foo, bar } from './foobar'; console.log(foo); bar.changeFoo(); console.log(foo); babel-node index.js と実行すると Foo Bar と 出力されます。Foo Foo ではありません。Node.js で CommonJS を書いていた人からすると、???となる挙動ですね。index.jsでの foo はただの変数ではないのです。 CommonJS なら・・・ CommonJS で素直に同じようなモジュールを書こうとすると、以下のようになると思います。これだと当然 Foo Foo と出力されますね。bar.changeFoo() を呼んでも foobar.js の module.exports.foo も更新されませんし、index.js の foo も更新されません。

    ES6 Modules 間では export/import された変数(?)は同期される - Qiita
    t-wada
    t-wada 2015/05/26
    おっ、これは盲点だった……
  • What is Gradual Typing: 漸進的型付けとは何か - Qiita

    稿は Python に型アノテーションを追加するという PEP 483 - The Theory of Type Hinting の提案で参照されている Jeremy Siek (@jeremysiek) 氏と Walid Taha 氏が開発した漸進的型付けについての入門記事の翻訳です。 What is Gradual Typing Python 3.5 で導入された型アノテーションについて興味がある方は以下を参考にしてください。 Python と型ヒント (Type Hints) と #pyconjp [翻訳] PEP 0484 -- 型ヒント (Type Hints) Revenge of the Types: 型の復讐 私自身、型システムに明るくないため、一部未訳の部分があったり、勘違いや誤訳もあると思います。そういった誤りを見つけたら編集リクエストを送ってもらえると助かります。

    What is Gradual Typing: 漸進的型付けとは何か - Qiita
    t-wada
    t-wada 2015/05/26
    Gradual Typing (漸進的型付け) について
  • WebAPIリクエスト仕様書としてcurlコマンドのご提案 - Qiita

    WebAPIの仕様を記述する方法はいくつかあると思う。 普通に日語で記述する JSON Hyper-Schema、WADL、RAML、Swaggerなどを使う 仕様書の代わりにプログラムを書く HTTPメッセージそのものを記述しておく でも、文法にばらつきがあったり、読みにくかったり、ツールのセットアップが面倒だったり、どれもイマイチな所があって、手軽な方法が欲しいと思っていた。 何気なくcurlコマンドのオプションを調べていたら、「もうこれでAPIドキュメント扱いにしちゃえばいいんじゃね?」と思えてきたのでメモしておく。 curlコマンドのおさらい curlコマンドはlibcurlの付属コマンドで、最近のUnix系OSなら大抵最初から入っていると思う。コマンドの詳細はmanを読んでいただければ。 cURL - How To Use (マニュアルページ日語訳) curlコマンドのオプシ

    WebAPIリクエスト仕様書としてcurlコマンドのご提案 - Qiita
    t-wada
    t-wada 2015/05/26
    面白い。すぐ試せる、実行可能なドキュメントという側面はとても良いと思う
  • WebAPIでエラーをどう表現すべき?15のサービスを調査してみた - Qiita

    2017-01-05 追記 2016年3月にエラーの標準形式RFC7807「Problem Details for HTTP APIs」が提案され、今日現在proposed standard(標準化への提唱)となっています。こちらも是非ご覧ください。 RFC 7807 - Problem Details for HTTP APIs HTTP APIの詳細なエラー情報をレスポンスに持たせるための仕様 最近はREST APIを提供しているサービスが増えてきていますね!また公開されるAPIだけでなく、Microservicesなアーキテクチャを採用して、バックエンドがWeb APIで通信するケースも増えてきているように思います。 APIを使うときはあまり気にしたこともなかったですが、いざAPIを設計してみるとどんなインターフェイスがいいのか、どんな形式がいいのかといった疑問が次々と出てきます。

    WebAPIでエラーをどう表現すべき?15のサービスを調査してみた - Qiita
    t-wada
    t-wada 2015/05/26
    Web API のエラー表現 (エラー時のレスポンスボディ) を各社サービスがどのように設計しているかのまとめ。参考になる。実際の HTTP ステータスやヘッダがどうなっているのかも気になる。
  • AngularJSモダンプラクティス - Qiita

    Help us understand the problem. What is going on with this article? こんにちは、@armorik83です。私のAngularJS歴は2年弱で、これまでAngularJSに関する記事はQiitaにたくさん書いてきました。例えば次のような記事です。 AngularJSアンチパターン集 2014.9 ここらでDirective Scopeの@=&をまとめておきたいと思う 2014.9 TypeScriptで書くAngularJSのMVC 2014.2 AngularJS Directiveの処理順を網羅してみた 2014.12 他にもニッチなものやイマイチだったものも含めてけっこうな数となってきました。また、こういった記事の縁で勉強会でも登壇させて頂きました。 モダンAngularJS 2014.12 GDG中国 TypeScr

    AngularJSモダンプラクティス - Qiita
    t-wada
    t-wada 2015/05/22
    現時点 (と、これから) の AngularJS について。ものすごく力の入ったエントリ。
  • Mochaを使うときはassert.strictEqualを使ったほうがいいな?という話 - Qiita

    var assert = require('assert'); it('test1 strictEqual', function() { var a = 'abcde'; var b = 'abcdf'; assert.strictEqual(a, b); }); it('test1 eqeqeq', function() { var a = 'abcde'; var b = 'abcdf'; assert(a === b); }); it('test2', function() { var a = { hoge: 12 }; var b = { hoge: 13, fuga: 56 }; assert.deepEqual(a, b); }); 1) test1 strictEqual 2) test1 eqeqeq 3) test2 0 passing (15ms) 3 failing

    Mochaを使うときはassert.strictEqualを使ったほうがいいな?という話 - Qiita
    t-wada
    t-wada 2015/05/12
    Mocha は最近テスト失敗時の出力が改善され、 assert の出力も親切になってきている件。 power-assert も比較に入っていて嬉しいし、組み合わせたときのパワーも増していると思う。
  • オンメモリ分散ジョブキュー Disque コトハジメ - Qiita

    antirez/disque は Redis の作者が開発している、オンメモリ分散ジョブキューです。 まずは、簡単に動かしてみることにしましょう。 結論 普通にシンプルな分散ジョブキューです。 まだアルファ版という事だけれど、簡単に非同期を実現する仕組みとしてはかなり良いと感じました。 Redis の事を考えれば、今後ますます便利になっていくと思うので、早いうちに一通り触っておき、考え方を学んでおくのは良さそうです。 セットアップ Mac OSX 10.10.3

    オンメモリ分散ジョブキュー Disque コトハジメ - Qiita
    t-wada
    t-wada 2015/05/12
    "disque は Redis の作者が開発している、オンメモリ分散ジョブキューです" disque とても気になっている
  • ElectronでGyazoっぽいUIを実現する - Qiita

    Electron (旧atom-shell)を使えば、JSやモダンなWeb技術を活かしてクロスプラットフォームなPCアプリを作ることができる。 APIが充実していて、Webページをただ移植しただけの単純なアプリだけでなく、割と手の込んだUIも実現できるかもしれない。 たとえば、Gyazoのようなスクリーンショットを撮るための領域選択のUIを作ることができる。 実装方法 画面の全体に透明なウィンドウを作って、その上の透明なWebページでmousedownなどのイベントにあわせて必要なUI要素を描画する。 https://github.com/uiureo/electron-crop-rect/blob/master/main.js app.on('ready', function () { const Screen = require('screen') const size = Scree

    ElectronでGyazoっぽいUIを実現する - Qiita
    t-wada
    t-wada 2015/05/12
    "PCアプリ開発者はWeb技術を見くびらないほうがいい、あなたの仕事は今にも失われつつある"
  • 「ES6 クイズ」を AST で見てみる - Qiita

    $ mkdir es6_quiz && cd es6_quiz $ npm init $ npm install acorn espurify concat-stream var acorn = require('acorn'); var espurify = require('espurify'); var concat = require('concat-stream'); var parserOptions = { ecmaVersion: 6 }; process.stdin.pipe(concat(function (buf) { var jsCode = buf.toString('utf-8'); var ast = acorn.parse(jsCode, parserOptions); console.log(JSON.stringify(espurify(ast), nu

    「ES6 クイズ」を AST で見てみる - Qiita
    t-wada
    t-wada 2015/04/28
    「ES6 クイズ」が面白かったのでチートしてみました
  • ES6 クイズ - Qiita

    var a = 1; if (a => 2) { console.log('bigger'); } else { console.log('smaller') }; // bigger

    ES6 クイズ - Qiita
    t-wada
    t-wada 2015/04/28
    あーなるほど。これは罠だ…… (追記) チートしました http://qiita.com/t_wada/items/2187704e31d25e1ae414
  • モダンJavaScriptアプリケーション開発 in Salesforce - Qiita

    はじめに HTML5でのアプリケーション開発は、エンタープライズ向けアプリケーションでも当たり前のようになってきました。これはSalesforceにおけるアプリケーション開発でも同じです。 Salesforceでのアプリケーション開発はVisualforce/Apexで行うというのが数年ほど続いてきたので、HTML5つまりJavaScriptを主体とするアプリケーション開発にはなれていないベンダーも多数あるかと思います。自分は創業当時からJavaScriptでのSPA(Single Page Application)をメインプロダクトに据えた会社を運営しており、Salesforceのパートナーとしても長いことやっていますので、このあたりのノウハウは比較的多い方です。そのためこのエントリはそれなりに説得力を持ってお届けできるとは思います。 真っ先に行うべきこと もしあなたがSalesforc

    モダンJavaScriptアプリケーション開発 in Salesforce - Qiita
    t-wada
    t-wada 2015/04/20
    "JavaがいいだとかRubyが好きだとかの話ではもう無いのです。フロントエンド開発に関するほぼすべてのツールがNode.jsを前提としています。これを使わないのは一周遅れになることを余儀なくされるのは間違いありません"
  • ActiveRecordを速くしたいだけの人生だった - Qiita

    Help us understand the problem. What is going on with this article? Rails3.2からRails4.2に上げたらActiveRecordが遅くなったので、どうやって調査して、どのように対処したかを語ってみたい。 とても長いので、ダルい人は最初と最後だけ読めばよいです。 TL;DR 環境: Ruby 2.1.5 ARオブジェクトを大量に(ざっくり750kくらい)loadするバッチ処理 3.2系での実行時間は約480sec、 4.2系では約2900sec 約6倍の性能劣化 原因: preloadで性能劣化してた CollectionProxyの生成周りで遅くなってた Rails4からARオブジェクトの1attribute毎にObject生成するので遅い GCの時間も増えた 調査方法: Githubのcommit、Issueを

    ActiveRecordを速くしたいだけの人生だった - Qiita
    t-wada
    t-wada 2015/04/15
    yuroyoro 先生の大作。「推測するな、計測せよ」という姿勢の大切さもよくわかる。
  • RFC 準拠的な JSON 形式について - Qiita

    Help us understand the problem. What is going on with this article?

    RFC 準拠的な JSON 形式について - Qiita
    t-wada
    t-wada 2015/04/14
    "結論: 最新の RFC では、なんでもよくなってた" どういうことなの……
  • もうgulpで憔悴しない - 低依存gulpfileのレシピ - Qiita

    【追記150805】さらに憔悴しないための有用な記事『アカベコマイリ | gulp なしの Web フロントエンド開発』が掲載されましたので、こちらもお勧めします。 こんにちは、@armorik83です。皆さん、Grunt / gulp使ってますか。おなじみなので、ここでは説明はしません。 この記事の要点 なぜGrunt / gulpは憔悴に至るのか、経緯と問題点 npm run-scriptの仕組みについて package.jsonにscriptを羅列することに対する是非 シンプルなgulpfileについての提言 経緯 さて、先日このような記事が界隈で広まっていました。 Grunt/Gulpで憔悴したおっさんの話 この記事については同意できるところと、そうでもないところと、両方有りました。ただ、Grunt / gulpを使っていて色々歯がゆさを感じている方は昨今増えているだろうと感じます

    もうgulpで憔悴しない - 低依存gulpfileのレシピ - Qiita
    t-wada
    t-wada 2015/04/05
    "npm run は常に sh で実行されるので zsh で直接実行するのと違うことがある" というのはなるほど盲点だなぁ
  • 最近のjs非同期処理 PromiseとGeneratorの共存 - Qiita

    (2015/10/21追記) 記事を書いてから半年経ちましたが、最近はRxの良さを理解したり、ES7のasync/awaitがbabelによって実用的になりつつあったり等、またもやベストプラクティスとはなんだったのか状態です。とはいえ、いまのところPromiseは非同期処理の土台であり続けそうですし、Generatorもasync/awaitへの足がかりとして知っておくことのメリットは大きいかと思いますので、引き続き公開させたままとさせて頂きます。 (追記ここまで) 数ある非同期処理のプラクティスを試してみて、だいたいこれが良いんじゃないかというパターンが固まったので書きます。効用はコールバック地獄からの脱出と結局非同期どれが良いの感の払拭。ES6寄りです。 前提知識 JavaScript Promiseの http://azu.github.io/promises-book/ ジェネレ

    最近のjs非同期処理 PromiseとGeneratorの共存 - Qiita
    t-wada
    t-wada 2015/03/31
    "thenrable(Promiseに使えるインターフェイス)はyieldable(Generatorに使えるインターフェイス)である。つまり「共存できる」"