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

  • 放置されていた Rubocopのバージョンを上げて onkcop の導入を始めた - Qiita

    みんなのウェディング Advent Calendar 2017 の 14日目の記事です。 業務で Rubocop を使っています。ただし、2017年4月まで放置気味でした。 しかし「Rails 5.0 へのバージョンアップ作業過程」で Rubocop もバージョンをアップしました。 2016年1月 から 2017年4月まで 同じバージョンだった理由 ある日、tachikoma からのプルリクエストのテストが落ちました(当時、平日はtachikoma による gem のアップデートをしていました。現在は deppbot を利用しています)。原因は、Rubocop に入った cop の指摘の対応ができなくて、「あとでやる」と書いてそのまま放置してしまいました。1年ちょっとぐらい... 最新のバージョンにアップした方法 Rubocop の指摘について対応するツールはあるのですが、ツールだけじゃ足

    放置されていた Rubocopのバージョンを上げて onkcop の導入を始めた - Qiita
    Pocke
    Pocke 2017/12/15
  • RuboCop 入門 #omotesandorb - Qiita

    lib/rubocop/ ├ ast/ │ ├ node.rb │ ├ traversal.rb │ ├ ... │ └ cop/ ├ rails/ │ ├ action_filter.rb │ ├ ... │ ├ style/ │ ├ access_modifier_indentation.rb │ ├ ... イベント lib/rubocop/ast/traversal.rb に on_xxx が書かれている on_const on_casgn on_class on_def on_send ... etc 誤検知、エラーを直す 誤検知、エラー 新しい Cop はわりと がある v0.44.0 Rails/HttpPositionalArguments v0.46.0 Rails/EnumUniqueness 誤検知は英語だと false positive っぽい 偽陽性 (検知しては

    RuboCop 入門 #omotesandorb - Qiita
    Pocke
    Pocke 2017/02/02
  • Gry の設計思想と実装について - Qiita

    Gry とは? pocke/gry: Gry generates .rubocop.yml automatically そもそも Gry が何なのか知らない人が大半でしょう。 Gry はプロジェクト内のコードから自動的に .rubocop.yml を生成するツールです。 Ruby プロジェクトのルートディレクトリでgry >> .rubocop.ymlの様に実行するだけで、そのプロジェクトに最適な RuboCop の設定を自動生成することが出来ます。 詳しい使い方などは、隠れたコーディングスタイルを .rubocop.yml に抽出するツール、Gryをリリースしました! - SideCI Blog をご覧ください では、なぜ Gry は必要なのでしょうか? この章では Gry の設計思想について述べます。 RuboCop には非常に多くの Cop(ルール) があります。そして、それぞれのル

    Gry の設計思想と実装について - Qiita
    Pocke
    Pocke 2017/01/31
    便利ツールの実装とか気持ちの話です
  • Kaminari 1.0.0 でやってくる 5 つの大きな変更 - Qiita

    Rubygems には現在 Kaminari 1.0.0.rc1 が出ているが、近いうちに 1.0.0 をリリースする予定である。大きな変更点がいくつもあるので、利用者のためにこれらの重要な変更点をまとめておこうと思う。 古い RubyRails のバージョンのサポート打ち切り Kaminari 1.0.0 では、以下のバージョンのサポートを打ち切ることにした。 Ruby 1.9.3 JRuby 1.7 Rails 4.0 とそれ以前のすべてのバージョン これらのバージョンを使っている人は、まず kaminari 0.17.0 で RubyRails をアップグレードしてから kaminari 1.0.0 へアップグレードしてほしい。 Gem を細分化 Kaminari 1.0.0 で最も大きな変更はなんといっても、今まですべてのコードを一つの gem で管理していたものを、k

    Kaminari 1.0.0 でやってくる 5 つの大きな変更 - Qiita
    Pocke
    Pocke 2017/01/09
  • GitHubでのコードレビューが爆速になる新機能review requestsの使い方 - Qiita

    日(2016/12/08)のアップデートにより、GitHubコードレビューの為の機能が実装されました。エントリーでは、レビュー機能の機能と使い方について紹介します。 レビューを依頼する側 ① プルリクエストを作成します。 ② 画面右側「Reviewers」という箇所をクリックします。 ③ コードレビューして欲しい人を選択します。 以上でレビューの依頼ができました。 レビュー依頼を受けた側 ① メールやGitHub上から、レビュー依頼を受けた旨の通知が来ますので、「Add your review」をクリックします。 ② レビューします。 ③ レビューが反映されます。 レビューの種類について 下記のレビュー画面では、3つの種類のレビューができます。 レビューの種類は次の3つより選択できます。 Comment コメントを残します。 Approve プルリクエストの承認をしつつ、コメントを残

    GitHubでのコードレビューが爆速になる新機能review requestsの使い方 - Qiita
    Pocke
    Pocke 2016/12/08
  • 明日から出来る重い Gitレポジトリへの対抗策 - Qiita

    はじめに これは Git Advent Calendar 2016 の4日目の記事です。 今回の記事が対象とする大規模なレポジトリは、何年間も開発が続けられ、ファイル数、履歴、ブランチ、タグなど、全般的に肥大化してしまったようなレポジトリです。肥大化したレポジトリを何も気にせず扱った場合、以下のような不幸な自体に見舞われます。 終わらない git clone 止まらない disk full 帰ってこない git status これらは貴重な時間や資源だけでなく、エンジニアや周りの人の精神エネルギーまで持っていきます。 この記事においては、これらの原因を解決するための実践テクニックのうち、明日から利用できるものをまとめます。歴史を改ざんする系のもの、レポジトリ構成を変えるもの、アプリケーション層に入り込んだ改修などは今回の記事の範囲から割愛させていただきます。 また、巨大なレポジトリを扱うた

    明日から出来る重い Gitレポジトリへの対抗策 - Qiita
    Pocke
    Pocke 2016/12/04
  • テストでいい感じに一時ディレクトリを作る「rspec-temp_dir」 - Qiita

    rspec-temp_dirとは? rspecでいい感じに一時ディレクトリを作るためのgemです https://github.com/sue445/rspec-temp_dir https://rubygems.org/gems/rspec-temp_dir なぜ作ったか? テストで検証したい内容がメソッドの戻り値だとその戻り値をexpect で検証するだけなのでテストが楽なのですが、ファイルを出力するようなメソッドだとファイルが書き込まれているか検証する必要があります。 テストで作ったファイルを毎回 after で消すとテストコードが肥大化するので、「それなら最初から一時ディレクトリにファイルを書き出してやればファイル消す必要ないのでは?」という発想で作りました。 JUnitTemporaryFolder にインスパイヤされています。 使い方 describe や context

    テストでいい感じに一時ディレクトリを作る「rspec-temp_dir」 - Qiita
    Pocke
    Pocke 2016/12/04
  • Vim script の Lint 作者による誰得 Lint デザインパターン - Qiita

    この記事は、Lint における主要なデザインパターンを紹介します。 紹介するパターンは次の3つです: Policy パターン AST Visitor パターン Chained Config パターン 執筆者について Vim script の Lint 作者です。 詳しくは、インタビュー記事をご覧ください。 デザインパターンの紹介 Policy パターン Lint が指摘する項目を、個別のクラスや関数として実装するパターンです。 主要な Lint でも採用されています。 対象とするモデル 検査項目の例として、文字列リテラルの開始記号が「"(二重引用符)」のとき警告するものを考えます。 この場合、この検査項目は ProhibitDoubleQuotes のような名前を持っています。 また、この検査項目に違反したとしても、深刻度はそこまで高くないと推測できます。 このように、検査項目はそれぞれ名

    Vim script の Lint 作者による誰得 Lint デザインパターン - Qiita
    Pocke
    Pocke 2016/12/04
    Lint を実装する際のデザインパターン。
  • Rubocop v0.46.0 の changelog - Qiita

    2016/11/30 にリリースされた rubocop 0.46.0 のチェンジログから新機能部分についてまとめてみた。 Add new Bundler/DuplicatedGem cop. (@jmks) class ドキュメントに書いてあるとおり、Gemfile 内の重複定義を怒ってくれる。 単なる重複は当然として、group にまたがった重複も対象になる。 # # bad # group :development do # gem 'rubocop' # end # # group :test do # gem 'rubocop' # end # # # good # group :development, :test do # gem 'rubocop' # end # # # good # gem 'rubocop', groups: [:development, :test]

    Rubocop v0.46.0 の changelog - Qiita
    Pocke
    Pocke 2016/12/02
  • エンジニアだけどポートフォリオサイト作ってみた - Qiita

    先日、ある会社の面接に行くときに「ポートフォリオを持ってきて欲しい」ということだったので、 ポートフォリオサイトを作りました。 こんな感じです. http://musou1500.github.io/ これを作るときにこだわった点を数点上げていきたいと思います。 デザインについて 今回,面接まであまり時間がなく,デザインに時間がかけられない状況でした. こういうケースだと,写真や,各パーツで使う画像に凝ることは難しいと思います. そこで,Webフォントを使用し,ゆったりとしたレイアウトにすることで,ある程度綺麗に見せることを試みました. 日語はM+Font、英語Google fontsから「Raleway」を使用しました。 自己紹介用の画像やメニュー背景も,SNSのプロフィール等にあったものをほぼ無加工で使用しています. どんな技術が使えるのか こちらが一番重要だと思います. 私がポー

    エンジニアだけどポートフォリオサイト作ってみた - Qiita
    Pocke
    Pocke 2016/11/30
  • Rails Best Practices の警告をちゃんと考える - Qiita

    Railsを使っている際にはRails Best Practicesの内容を確認したりしているのですが、今までなんとなく「あー、この方がいいんだー」って眺めていただけなのですが、数が増えてきたので、いい加減ちゃんと読もうと思いました。 結構面白いものもあり、「へー」と感じたものを中心にまとめてみました。 更新履歴 2014/12/15 追加 Overuse route customizations を追加 Always add DB index を追加 Use Query Attribute ActiveRecord の attribute に値が入っているかチェックする際に nil?, blank?, present? とかは使わなくていいって意味です。 代わりに 'attribute名' + '?' を使いましょうって話です。 悪い例

    Rails Best Practices の警告をちゃんと考える - Qiita
    Pocke
    Pocke 2016/11/24
  • RubyVMの様子を観察したい - Qiita

    はじめに Rubyのプログラムは内部的にはコンパイルされてバイトコードとなり、RubyVM上で実行されます。 RubyVMはスタックマシンというタイプのVMで、オブジェクトをスタックに積み上げて演算を行っています。 諸事情によりスタックの様子を観察しながらRubyVMの命令単位でRubyプログラムを実行したかったのでやってみました。 いい記事があったのでこちらの記事を参考にさせていただきました。 RubyプログラムをVM命令単位で実行する 環境はMacです。 gdbセットアップ gdbというデバッグツールを使います。 Homebrewでインストールできます。

    RubyVMの様子を観察したい - Qiita
    Pocke
    Pocke 2016/11/17
  • 2016年のOSS圧縮ツール選択カタログ - Qiita

    まだgzipで消耗し(略) 2016年、人類が待ち望んでいた、gzipを圧倒するOSS圧縮ツールzstd(Zstandard)がリリースされたにも関わらず、なんかあんまり話題になっていなくて寂しいので、ちょろいかんじの賑やかし比較記事を書きました。圧縮ツールのカタログ的に眺めていただけるかと思います。 はじめに (この記事で言う)圧縮ツールとは何か 圧縮ツールという呼び名は正確ではない(はず)です。平たく言えば、gzipやbzip2、xz、lz4などですが、人によっては、tarの裏側としてしか使ってなくて、聞いたこともないかもしれませんね。そういうときはまずgzipのmanpageとか読んでください。 しかし、そういうツールを何と呼べばいいのかわからないので、ここでは圧縮ツールと呼んでいます。 ややこしいですが、アーカイバではありません。アーカイブとは実態が一つのファイルになっているフォル

    2016年のOSS圧縮ツール選択カタログ - Qiita
    Pocke
    Pocke 2016/11/13
  • glide - パッケージ管理のお困りの方へ - - Qiita

    glideってなんぞ? glideはGo1.5以降で使用可能なvendoring機能を利用した。 パッケージ管理ツールです。 (正確にはvendor管理) glideを使うと下記のようにvendorにプロジェクトに必要なパッケージがインストールされ、そのプロジェクト内でのみ利用が可能となります。 (通常のgo get, go installのようにグローバル管理ではない) - $GOPATH/src/myProject (プロジェクトのディレクトリ) | |-- glide.yaml | |-- main.go | |-- mySubpackage (サブパッケージ) | | | |-- foo.go | |-- vendor (この配下がglideで作成されるもの) |-- github.com | |-- Masterminds | |-- ... etc. 使いはじめた理由 実は、使

    glide - パッケージ管理のお困りの方へ - - Qiita
    Pocke
    Pocke 2016/11/02
  • Go のバイナリには -ldflags '-w -s' でコンパイルしてもたくさんパスが埋め込まれていた - Qiita

    とコンパイルすることで、 DWARF とシンボルテーブルの情報をバイナリに残さずコンパイルできる。 しかし、自分は気になったので strings コマンドを生成後のバイナリにかけてみた。 するとバイナリには というような行が、まだたくさん残っていた。 どうやら DWARF やシンボルテーブルの情報を削除しても、コンパイルの際のパスなどの情報は残ってしまうようだ。 消してみると 10% くらい節約できた そこで、全て浅いディレクトリでコンパイルしなおしたところ、約 5MB のバイナリが約 4.5MB ほどまで節約できた。 ソースコードを細分化していればしているほど、モジュールを使っていれば使っているほど、含むパスは多くなるので、これらにより節約できるサイズは大きくなる。 Go の単一バイナリを Docker コンテナにするような状況では、 10% の節約は心理的に大きい。 (嬉しい) 使い所

    Go のバイナリには -ldflags '-w -s' でコンパイルしてもたくさんパスが埋め込まれていた - Qiita
    Pocke
    Pocke 2016/11/01
  • PHP7調査(2)コンパイル時にASTを構築するようになった - Qiita

    PHP7から内部的にAST(抽象構文木)が実装されるよ!とのこと。反対票ゼロでPHP7への採用が決まっています。 構文解析とコンパイルの分離 PHPでは構文解析にYACCを利用しています。YACCでの構文解析は、概念的には構文木を辿るような処理なのですが、これまでのPHPでは実装として木構造を構築することはせず、構文解析をしながら即座にopcodeを作り出すような処理をしていました。 このようなつくりが原因で、これまでのPHPではYACCレベルの文法が冗長になったり、PHP文法に一見無意味な制約ができたりしていました。 PHP7からは一度ASTを作りあげてからopcodeの生成を行うため、パーサーや最適化の実装がシンプルになって保守性が上がったり、これまで技術的な理由で不可能だったスマートな文法が導入しやすくなると期待できます。 ソースコードを見たい方のために実装箇所も紹介しておきます。現

    PHP7調査(2)コンパイル時にASTを構築するようになった - Qiita
    Pocke
    Pocke 2016/11/01
  • まだ .gitconfig に core.excludesfile を設定しているの? - Qiita

    をして、 ${HOME}/.gitignore_global を置くと。 ダメなんだよ・・・・・・!そういうのが実にダメ・・・・!せっかくgitconfigをスカッとしようって時に・・・・その横着は傷ましすぎる・・・・・・・・! man gitignore を見ると Patterns which a user wants Git to ignore in all situations (e.g., backup or temporary files generated by the user’s editor of choice) generally go into a file specified by core.excludesFile in the user’s ~/.gitconfig. Its default value is \$XDG_CONFIG_HOME/git/igno

    まだ .gitconfig に core.excludesfile を設定しているの? - Qiita
    Pocke
    Pocke 2016/10/27
  • コーディング規約管理のgem「RuboCop」を導入してみた - Qiita

    RuboCopってなに? RubyのGemです。 設定したコーディング規約(後述)通りプログラムが書かれているかチェックします。 さらには自動で修正ができます。 どうしてコーディング規約が必要なの? プログラムの可読性を上げるため プログラムの品質を上げるため どうやってインストールするの? 以下のコマンドを入力します。 ※ バージョンはプロジェクトに合わせて変更してくださいね。

    コーディング規約管理のgem「RuboCop」を導入してみた - Qiita
    Pocke
    Pocke 2016/10/21
  • paragraph2vecの論文 要訳 (Distributed Representations of Sentences and Documents) - Qiita

    paragraph2vecの論文 要訳 (Distributed Representations of Sentences and Documents)自然言語処理機械学習word2vecparagraph2Vec論文読み 原文: Distributed Representations of Sentences and Documents 要訳者からのお知らせ この要訳はTSGの機械学習分科会での発表のために作られたものです。 雑に内容を理解するためのまとめであり、正確な内容を保証するものではありません。 致命的なミスはコメントか編集リクエストでお知らせください Abstract 機械学習するには入力を固定長のベクトルにする必要がある 既存手法で一番popularなのはbag-of-words だけどBOWはクソ 順序の情報が失われる 単語間のセマンティクスが失われる なので Paragr

    paragraph2vecの論文 要訳 (Distributed Representations of Sentences and Documents) - Qiita
    Pocke
    Pocke 2016/10/21
  • Yarnファーストインプレッション - Qiita

    Yarn とは 名前から yet another ... な雰囲気を漂わせてますが、 npm互換 です。(追記: 正確にはnpmの生成するpackage.jsonと互換とのことだった)。各所から node連中はまたツール増やしやがって!という雰囲気を感じるので、ここは明確にした方がいい。(techcrunchの記事とかそういう印象を与える書き方になってる) npm install 時のディレクトリ配置への介入 npm install 時のより賢いローカルキャッシュ yarn.lock ファイルでバージョン固定 yarn 環境下で yarn add, yarn install などを行った場合、 yarn.lock と package.json に同時に書き込み、 その環境で生成されたファイルは yarn なしでも動きます。つまり、yarn はより厳密に npm のバージョンを固定したい人向

    Yarnファーストインプレッション - Qiita
    Pocke
    Pocke 2016/10/12