Gradle, ProGuard, intellij-plugin周りの備忘録

intellij plugin開発時に難読化したbuildを生成しようとした時の備忘録。 流れ intellij marketplaceドキュメントを見て、ProGuardがいいかなと適当に判断 ざっとググったらandroid関係の記事ばかりでよくわからなかったのでProGuardドキュメントへ そもそも…

gomのトレース

https://github.com/mattn/gom パッケージマネージメントツール プロジェクトの依存するpackage(revisionを含む)を管理できる。 go標準のパッケージマネージメントツールがない時からあって、結構な利用者がいそう。 概要 データとしては、プロジェクト毎の…

gopwtのトレース

概要 power assertのgolang版のgopwtのトレース github.com どうやったか 使い方と全体ディレクトリ構造とコードをざっくり見た後に、インクリメンタルに動作させつつコードを書き写していった。 gopwtの使い方 main_test.go func TestMain(m *testing.M) { …

fuelphpのvalidationについて

filedsetに対して定義できるものと、modelに対して定義できるものがある。 Fieldsetのvalidation Fieldsetと1対1で紐付いたvalidationインスタンスのrunメソッド(return bool)を呼び出す。 $fieldset->validation()->run() ruleの設定 各fieldに対して個別…

bootstrapのモーダルを複数開いたときの問題と対処法

bootstrapのモーダルは複数重ねて開いたときにいくつか細かい問題が発生する。 versionは3系。 2つめのモーダルの背景(.modal-backdrop)より1つめのモーダルが上に表示されてしまう 標準の挙動 背景(.modal-backdrop)はmodalごとに、bodyにappendされる…

デザインパターン入門【マルチスレッド編】備忘録

android開発を少しすることになってマルチスレッド周りの知識が残念な感じだったので、良い本だと噂の Amazon CAPTCHA を読んだので備忘録。 メモ synchronizedがあったら何か守るべきものがあると考える InterruptedException throws InterruptedException…

vuexでのデータの扱いについて少し困ったので整理

目的 vuexを使っているある程度複雑なvueコンポーネント上で、定数的なものをどう扱っていいか解らなかったので、一旦考えを整理しておきたい。 現状の整理 なぜvuex? コンポーネントの階層が4つまであって、propsだけで実現しようとすると、rootコンポーネ…

開発の進め方の反省(少し複雑なフォーム編)

概要 既存のフォームのUIなどがあまりイケてないので、少しリッチな感じのUIに改修しようというプロジェクトで進捗がよくなかったので反省メモ。 体調があまり良くなくて頭が回らなかったというのもあったけど、体調に依存せずに安定したアウトプットを出し…

CleanArchitecture備忘録(前編)

Amazon CAPTCHA いい本だと噂になっている気がしたので読んでみた備忘録。 日本語版もあるけど、英語の勉強も兼ねて英語版を読んでみた。 一旦PART 1 Introduction から PART3 Design Principle まで。

ノンブロッキングI/Oがよく解っていなかったので作りながら調べてみた

モチベーション WEBエンジニアとして活動してきてますが、技術的な棚卸しとして、普段良く使っているツールがどういったものかを少し深掘りしてみようという活動の一環。 nginx軽くて早くてお世話になっていますが、どうして軽くて早いのかよく解っておらず…

Deep Workを読んでみて

かなり良かったので感想をまとめてみる 日本語版もあるけど、英語の勉強も兼ねて英語版を読んでみた。 単語解らなすぎてきつい時もあったけど、後半ぐらいまで進むとコンテキストがだいぶ解ってくるので割とスラスラ読めて良かった(それでも日本語の5倍ぐら…

ActiveRecordへのattributeの代入時に何が起こっているか

ActiveRecordを継承したモデルへのattributeの代入時の挙動について。 通常の attribute activerecord/attribute_methods/write.rb 内で #{attribute_name}= メソッドを動的に定義している。 その中で @attributes<ActiveRecord::AttributeSet> (ハッシュ的なもの)に対して attribute_n</activerecord::attributeset>…

devise_for

Deviseを使うとき、 routes.rbに書く devise_for が何をやっているか。 devse_for? devise/rails/routes.rb の devise_for のコメント欄のところ # Includes devise_for method for routes. This method is responsible to # generate all needed routes for…

Sidekiqの仕組み

Railsのジョブキューのgemで有名なSidekiq。 どのように動いているかよくわかっていないので調べてみた。 エンキュー ActibeJob.perform_later キューに入れたい処理はActiveJob::Baseを拡張したクラスのperformメソッドに実装し、 perform_laterを呼び出す…

TCPのウィンドウ制御とコネクション識別

ウィンドウ制御 TCPは送信と応答確認によってデータ送信の信頼性を高めているが、パケット毎にそれをやっていると効率が悪い。 この問題を解決するために、ウィンドウ制御という概念を取り入れている。 具体的には、応答確認をする単位を1パケットではないく…

initialPropsとstate - React.js

Props in getInitialState Is an Anti-Pattern | React getInitialState内でpropsを用いてstateを生成するやり方は、どのデータが本筋のデータかがわかりづらくなってしまう状況になってしまうことがあるので、注意して使ったほうがいい。 コメントフォーム…

Model周り - helpy code reading

共通部分を切り出す CakePHPでいうBehaviorやComponent, Helper Rails 共通部分を切り出す (View, Controller, Model) メモ - Qiita 関連したモデルのフォームでの扱い Rails ネストした関連先のテーブルもまとめて保存する (accepts_nested_attributes_for…

ログイン後の初期設定 - helpy code reading

github.com 初期ログイン後に表示される初期設定画面周りのコードを見ていく。 流れ ログイン後のリダイレクト admin's root admin/dashboard#index to admin/topics#index def index #@topics = Topic.mine(current_user.id).pending.page params[:page] if…

Decorator Pattern - Design Pattern in Ruby

あるオブジェクトの機能に追加の機能を付け足したい、 さらにいろいろな組み合わせで追加機能を実装したいという時に使えるパターン。 Interface 元の機能を持ったオブジェクト(ConcreteComponent)と追加機能を実装するオブジェクト(Decorator)という登…

redux/examples/real-world を見て学ぶ

GitHub - reactjs/redux: Predictable state container for JavaScript apps Githubのアカウント名を入力すると、 starしているリポジトリと作者の一覧が表示される。 一覧表示のリポジトリ名やアカウント名をクリックすると、それぞれ対応したページに切り…

redux/examples/shopping_cart を見て学ぶ

redux/examples/shopping-cart at master · reactjs/redux · GitHub 仕様 商品リストとカートがあり、商品をカートに入れることができる 商品は在庫があり、在庫がなくなると、sold out と表示される カートでは合計金額を表示する state間の連携について st…

Command pattern - Design Pattern in Ruby

「何かを実行するもの」をオブジェクトとして扱う方法。 これによる恩恵として、実行の記録の保管が容易になり、undo, redoなどの実装もしやすくなる。 よく使用されるケースとしては、GUIのパーツで、パーツのデザインや配置などの処理と、何かしらのアクシ…

ActionController#respond_to - code reading

requestのMIME TYPEに応じたレスポンスを定義する機能 定義は rails/mime_responds.rb at 48f140cf7459c963a54637c897448b959dbbfd26 · rails/rails · GitHub ActionController:: MimeResponds#respond_to def respond_to(*mimes) raise ArgumentError, "res…

Iterator pattern - Design Pattern in Ruby

複数の要素を持つオブジェクトが、それぞれの要素に順繰りにアクセスする方法を提供するパターン。 External iterator has_next, next_item のような順繰りに必要なメソッドを提供することで、外部からの要素へのアクセスを可能にする。 loop処理などを自分…

Composite pattern - Design Pattern in Ruby Chapter 6

共通のオペレーションを行う要素と、その要素の集合体を同じように扱うことで、複雑な構造をシンプルに扱う。 用語 Component 共通のインターフェース Leaf ミニマムの要素 Composite 要素の集合体 注意点 compositeとleaf,異なる属性のものを全く同じように…

Observer Pattern - Design Pattern i Ruby Chapter 5

注意点 更新頻度を考える。 考えなしにすべての変更時にobserverオブジェクトに通知すると、かなりの数の冗長な通知が飛び交ってしまう可能性がある。 どういったタミングで通知を行うかの戦略は考えておくべき。 変更の一貫性 上記の高新頻度にも似ているが…

Strategy Pattern - Design Pattern in Ruby Chapter 5

www.amazon.co.jp まとめ Templateパターンと同じ問題を解決するが、compositionとdelegateの形式で行う分、疎結合で柔軟な設計になる。 似たようなことを行うオブジェクト(family objects)をまとめ同じインターフェースを定義することで、使う側のオブジェ…

extends core Date - Rails code reading

activesupport/lib/active_support/core_ext/date/conversions.rb to_sで指定できるフォーマットを拡張している。 一番上に対応するフォーマットが定義されている。 class Date DATE_FORMATS = { :short => '%d %b', :long => '%B %d, %Y', :db => '%Y-%m-%d…

React.jsで将棋盤を作ってみた

React,Reduxのキャッチアップ - エンジニアの勉強日記 上記記事で基本をキャッチアップしたので、もう少し実践的なプログラムを作ろうということで、将棋盤を作ってみた。 GitHub - kitabatake/react-shogi 構成 webpackでes6, jsxをトランスパイル viewコン…

Chapter9 - Practical Object Oriented in Ruby

Designing Cost Effective Tests まとめ 効果的なテストを書くことの目的は、これまでやってきた設計に関する考えと同じで、コストを減らすこと。 テストはあるオブジェクトに対して、どういった文脈で、どのように扱えばいいかを最小限の形で記述するので、…