サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
参議院選挙2025
qiita.com/tbpgr
Ruboty のコードリーディングで Ruboty の仕組みを理解すると共に Ruby の設計・実装の定石を学ぶ #ruboty 概要 Ruboty のコードリーディングで Ruboty の仕組みを理解すると共に Ruby の設計・実装の定石を学びます。 確認対象は、コマンドラインで ruboty を実行して Ruboty が起動するまでの部分です。 はじめに Ruboty の構成を理解するために、この解説を作ろうと思ったのですが、 Plugin による拡張などを含めた高レイヤの設計技法 適切な命名により、単一責務で分割されたメソッド群 メモ化、 alias method chain , ..etc など様々な Ruby のイディオム など、 Ruby の良い作法を 高レイヤの設計技法 から 低レイヤのイディオム まで幅広く学ぶ素材として 非常に魅力的なソフトウェアであることに気づきました
条件分岐とループベースのロジックからコレクションパイプラインを利用したロジックへ 概要 条件分岐とループベースのロジックからコレクションパイプラインを利用したロジックへの 置き換えについて説明します。 コレクションパイプラインに関する概要を説明 コレクション操作の基本: select / map ( collect ) / reduce ( inject ) はしやすめ コレクションパイプライン サンプルケース この記事の対象 コレクションパイプラインによるロジックを扱ったことがない方・不慣れな方が対象です。 コレクション操作の変遷 コレクションに対する処理はどの言語、どの領域のプログラミングでも頻出の課題です。 コレクションの操作は言語の基本的な文法としてサポートされている 条件分岐やループで処理することもできます。 コレクションパイプラインを利用すると、分かりやすく・スマートに記述する
概要 Ruby の private と protected の歴史と使い分けについて説明します。 いろんなところで断片的に書かれていることなのですが、有益な情報を 一箇所に集めると自分の理解が深まりそう=>他の人にも役立つかな? と思ったのでまとめてみました。 具体的には、伊藤淳一さんのブログ・るりま・Rubyメーリングリストの内容を 一箇所にまとめた上で、私が書いたサンプルコードを少し足した内容になっています。 ちなみに Java や C# 畑の人が Ruby の private / protected を使って驚いた、 的な情報が多いですが、私も例にもれず Java => Ruby 勢で驚いたパターンです。 Java の private と protected public => どこからでもアクセス可能 protected => クラス内、同一パッケージ、サブクラスからアクセス可 p
GitHub Pages の User site で 個人ポータル作成のススメ。情熱プログラマ Chad Fowler 先生曰く「自分のブランドを築こう」 #github 概要 GitHub Pages の User site で 個人ポータル作成について。 なぜ個人ポータルを作るか? 2つの理由を挙げます。 自分のブランドを築く 情熱プログラマ Chad Fowler 先生曰く マーケティングはスーツ族だけのものではない 自分の業績をアピールする 業界で名前を売る など、書籍「 情熱プログラマ」においてエンジニアのセルフマーケティングについて触れています。 その 1 つの手段として自分の実績・情報を周知するためのポータルを GitHub Pages で作成するのです。 自分が作成したり、継続して貢献している OSS プロダクト Web の寄稿記事 公表できる開発実績 ブログ、QA サイト
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Rebuild.fm のススメ #rebuildfm 概要 Rebuild.fm について Rebuild.fm って? 宮川達彦さん(詳しくはこちら)の Podcast 。 システム開発に関わる様々なトピックを扱っている。 Rebuild.fm イメージ 下記ページに分かりやすい図があります。 Rebuild.fmクライアント(非公式)をリリースしました リスナーになると何を得ることができるか 最新の技術情報 旬の話題を知ることができる 分かりやすい技術の解説を聞くことができる 各技術の有力な情報源を知ることができる ドレイファスモデルで言うところの「達人」の思考を知ることができる 現場の話を聞ける 技術選定基準 ノウハウ 利用ライブラリ ※ドレイファスモデルについて詳しく知りたい場合は下記書籍を推奨 リファクタリング・ウェットウェア アプレンティスシップ・パターン 話題 プログラム言語
Ruby の CLI ツールの作成を支援する、 thor gem の基本について。 概要 Ruby の CLI ツールの作成を支援する、 thor gem の基本について。 Thor 関連資料 thor GitHub thor RubyGems Thor Official Document CLI のクラス作成 Thor クラスを継承し、 public メソッドを定義すると 該当メソッドがコマンドになります。 require 'thor' class SampleCLI < Thor desc "command1 usage", "command1 desc" def command1(name) puts "command1 #{name}" end desc "command2 usage", "command2 desc" def command2(name) puts "comma
Ruby | case と === の歴史 #ruby 概要 Ruby の case 文と === の歴史について 昔の case 昔の Ruby には String 化症候群 というものがあったそうです。 ※参考資料(ruby-list 10525) case の内部では no.to_s =~ 1.to_s のような比較をしていた。 しかし、何でも文字列で比較するのはおかしいということで変更することになったが、 文字列以外に =~ を利用するのも気持ち悪いので新たな演算子を利用することに。 そこで === の登場。 現在へ・・・ 現在の case 現在の case 文は内部比較に === を利用しています。 これによって、クラスに合わせた比較処理を実現し、 case をポリモーフィックに利用することができます。 サンプル String#=== るりま | String#=== 文字列の内
Ruby | did_you_mean gem でスペルミスを検出+ did_you_mean gem のコードリーディング 概要 スペルミスを検出する gem、 did_you_mean が話題になっていたので早速試してみます。 また、実装が気になったのでコードリーディングもしてみます。 名前の類似度はレーベンシュタイン距離で算出している。 レーベンシュタイン距離 Wikipedia 文字数比でレーベンシュタイン距離が30%以上離れていなければ類似候補として表示する。 候補が複数ある場合は、複数表示。 インストール require 'did_you_mean' module Hogeable def hogeable "hogeable" end def hogec "hogec" end end class Hoge include Hogeable include Enumerabl
Ruboty | Gemfury に登録した Private な Gem を利用した Ruboty を Heroku にデプロイして、 Slack と連携する #ruboty #gemfury #slackHerokurubygemsRubotyGemfury Ruboty | Gemfury に登録した Private な Gem を利用した Ruboty を Heroku にデプロイして、 Slack と連携する 概要 Ruboty で利用する自作 Handler は、 ChatOps の性質上、外部公開できないものもあると思います。 そういった際に、下記記事で紹介している gemfury など、 Private な Gem を管理できる クラウドサービスや社内サーバーに geminabox を利用した gem server を立てることになると思います。 今回は、 Gemfury を
Itamae | recipe plugin で 板前によるトイレ設置をプラグイン化する #devops #itamae 概要 プロビジョニングツール Itamae recipe plugin で 板前によるトイレ設置をプラグイン化します。 ※toilet コマンドのインストールをプラグイン化します。 ※toilet コマンドについては下記リンク参照 http://www.tecmint.com/20-funny-commands-of-linux-or-linux-is-fun-in-terminal/ recipe plugin 公式 Wiki による Recipe Plugins の説明 https://github.com/itamae-kitchen/itamae/wiki/Recipe-Plugins Itamae の recipe は gem で管理 Itamae では re
Ruboty | 基本構成図解 #ruboty #chatops 概要 Rubotyの基本構成を図解します 構成図 構成要素 Adapter チャットクライアントとの接続用アダプタ。 デフォルトは Shell Adapter。 Slack, Idobata, HipChat, Twitter など様々な Adapter がある。 Brain 永続化を行う Handler 後述の Action とワンセットで Hubot の Script に相当。 正規表現と ruboty help に利用する情報の登録、Actionの振り分けが責務。 ping, help などチャットから実行する個別のコマンド。 Action 前述の Handler とワンセットで Hubot の Script に相当。 Handlerから呼び出され、具体的な振る舞いを記述する。 ping, help などチャットから実
RubyKaigi 2014の知見。 Microservices について #rubykaigi RubyKaigi 2014 における Microservices に関する話題 キーワードとして直接登場していたのは、 2014年9月20日の 「Ohayō Rails (おはよう Rails」 のパネルディスカッションの最中でした。 他の講演でも下記などは Microservices の構成要素と考えることもできます。 Continuous Delivery at GitHub GitHub社の継続デプロイの話 Hypermedia: the Missing Element to Building Adaptable Web APIs in Rails Web API の話 前提 実際に Microservices を導入した経験はありません。 これから着手するシステムで段階的に導入予定で
# 動作確認用に私の自作 gem , defoker をインストール(要 Ruby 2.0 以上) $ gem install defoker --no-ri --no-doc Fetching: defoker-0.0.7.gem (100%) Successfully installed defoker-0.0.7 1 gem installed $ defoker v "0.0.7" # 20141101 から 90日分のフォルダを作成 $ defoker days 20141101 -c 90 -a itamae $ ls 20141101_itamae 20141124_itamae 20141217_itamae 20150109_itamae 20141102_itamae 20141125_itamae 20141218_itamae 20150110_itamae 201
Ruby | RubyKaigi2014で話題に。安全に Ruby のコードを変換できる Synvert gem をインストール 概要 RubyKaigi2014で話題になった安全にRubyのコードを変換できる Synvert gem をインストールして 簡単な動作確認をしてみます。 Synvert GitHub Synvert Document Synvert って? Synvert は Ruby のコード変換用の gem です。 RubyKaigi 2014 の発表により注目度アップ中。 Rubyは動的言語の特性上、リファクタリングを行う際などに ツールの補助を受けられない(or 受けにくい)ケースが多々あります。 そのため、 正規表現などで文字列置換する ripper などで AST を操作する などの方法がありますが、前者は誤った置換などの可能性があったり厳密さを欠くし、 後者は厳
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? RubyKaigi 2014 1日目まとめ #rubykaigi 入場前 毎朝、会社の始業前に45分~1時間は勉強することにしているので、 船堀駅前のモスバーガーに1時間前に到着してお勉強。 早めに到着して、電源のある場所で開場待ちをしたい方におすすめです。 入場 9:30 会場。 オープニングの前にノベルティを漁る。 本日の成果物 クリアファイル(Akatsuki様) クリアファイル(pixiv様) ステッカー(GMOペパボ様) ステッカー(pixiv様) ステッカー(食べログ様) ステッカー(CodeIQ様 ※要問題挑戦) チョコ(
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 部下のコンテキストスイッチを防ぐための上長としての振るまい 概要 部下のコンテキストスイッチを防ぐための上長としての振るまいについて コンテキストスイッチの重要性については、自分自身のパフォーマンスを発揮する,と言う意味では 理解出来ているつもりなのですが、自分の部下・後輩に対してきちんと配慮できているだろうか、 という点が曖昧だったので整理しました。 コンテキストスイッチ システム開発は集中して頭を使います。 そのため、設計中やバグの原因について検討している最中などに話しかけられたりすると、 そこまでの思考をやり直す必要が出てしまいま
Ruby | ObjectSpace で Heap 内にある全てのオブジェクトを取得し、Classごとのインスタンス数を一覧化する 概要 ObjectSpace で Heap 内にある全てのオブジェクトを取得し、Classごとのインスタンス数を一覧化します。 ObjectSpace については下記参照。 http://docs.ruby-lang.org/ja/2.1.0/class/ObjectSpace.html#M_EACH_OBJECT コード require 'tbpgr_utils' print ObjectSpace .each_object .group_by { |e|e.class } .map { |k, v|{k => v.size} } .sort_by { |k, v|k.to_s } .to_table __END__ to_table は自作 gem tbp
次のページ
このページを最初にブックマークしてみませんか?
『@tbpgrのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く