議事録(127) - hamamatsu-rb/hamamatsu-rb.github.com GitHub Wiki
Hamamatsu.rb #127
こんなの作りました or 知りましたの枠
メモリドカ食いしてた件
- in_batchesで1000件ずつ取ってた
- in_batchesをやめた
- 結局どれが一番効果があったかはわからん
- 一定にはなった
- sidekickも使ってるがメモリリークする??らしい
- 断片化?はRubyのビルドオプションで挙動を替えれるらしかった…がうまく働かなかった
- ActiveRecord.uncachedが効いた
- バッチ処理だからループ中にどれくらい食ってるのかよくわからなかった
- printfデバッグのオーバーヘッドもバカにならない…
- コンテナはメモリ0.5GBでしょぼかった😭
- Rubyのメモリ使用量の計測をmemsize_of_allとpsコマンドで行う
- https://nishinatoshiharu.com/ruby-profile-memory-usage/
def print_memory_usage
require 'objspace'
memsize_before = ObjectSpace.memsize_of_all * 0.001 * 0.001
rss_before = `ps -o rss= -p #{Process.pid}`.to_i * 0.001
yield
memsize_after = ObjectSpace.memsize_of_all * 0.001 * 0.001
rss_after = `ps -o rss= -p #{Process.pid}`.to_i * 0.001
puts "memsize_of_all: #{(memsize_after - memsize_before).round(2)} MB, rss: #{(rss_after - rss_before).round(2)} MB"
end
複数ブランチ運用は『単一のコードベース』と言えるのか / What are your justificatio
- https://speakerdeck.com/toricls/what-are-your-justifications-for-the-multi-branches?slide=21
- いいアプリを作るための12箇条・・・
- 開発用と検証用のブランチを持つのは良くない?
- dockerfileを開発と検証用で用意しても差が小さく
redcar ~ 開発停止してるエディタ
- https://github.com/danlucraft/redcar
- JDKのインストールが必要だったので断念
- Macでは動かなかった
赤電の時刻表API
ペアプログラミング中
- メイン:コーディング/単体テスト
- サブ(私):要件定義/基本設計/詳細設計/結合テスト
- サブ(私):単体テストの洗い出しもやるべきだったかな…
- 今結合テスト中だけど品質ぼっこぼこ
- そもそも難しい課題だった
- プログラムそのものの時間はかなり減らすことができた
- リリースまで一緒にやるべき
- プロジェクトに浸かるつもりでやってほしい🧟♂️
- ↑↓プロジェクトに依存するコードも困る…
- 設計時点の問題だったのでは
- 今後に生かしていこう
自動テストツール
- JAVA … JUnit
- Ruby … rspec , test/unit https://docs.ruby-lang.org/ja/latest/library/test=2funit.html
- minitest https://docs.ruby-lang.org/ja/latest/library/minitest=2funit.html
- C# … NUnit
- 関数をちっちゃくしないとテストできないよね
- テストはリファクタリングツール
コメントの書き方
- メソッドコメントくらいは書いてほしい
- コメントは意味があることを書こう
- ぶっちゃけ話を書く
- TODO、NOTEとか
- コピペ元のURL書くとかいいかも
# 関連 issue
# @see https://github.com/xxxx/issues/1365
- レビューのコメント
- https://qiita.com/kuniyonkunisan/items/2ed8c48ff349e6add45b
- オリジナルはjavadocですね @xxxx のスタイル
- https://ja.wikipedia.org/wiki/Javadoc
- VS Code のSpell Chcker
- https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker
- みんなの書いたコメントサンプル:
begin
yield(feed)
ensure
# エラーで更新できなくてもloaded_atは更新しないと、次のループで常に最初の処理対象になり、
# いつもエラーになるFeedばかりが処理され続けることになってしまう
feed.update(loaded_at: Time.current)
end
# 一度設定した日付をnilにしてリセットはできない
restore_published_at! if published_at.nil? && published_at_was
# 遠い未来の日付が設定されていて、ソートでずっとトップに居座る項目が作られたことがあるため、現在時刻を上限とする
self.published_at = [published_at, Time.current].compact.min
# @param type[String] :weekday(平日) or :weekend(土日祝)
# @param detection[String] :upto(上り、新浜松行き) or :downto(下り、西鹿島行き)
def clawling(type:, detection:)
Scraper.new(station: @station, type: type, detection: detection)
.run(page)
end
プログラマのための英単語
-
メソッド名生成
-
時刻表をクロールする => crawl_timeline
-
プログラミングでよく使う英単語のまとめ
-
アプリケーションをつくる英語 (達人出版会)
-
existsA
-
existsB
-
existsC
-
↑みたいな小さいメソッドをまとめてる奴はどうする?
-
→なにをまとめているかうまく表現する
-
runとかdoとかになっちゃう…
-
コメントでうまく表現できていればいいのでは?
def do_run
Crawler.run
end
- 翻訳サイト DeepL
- https://www.deepl.com/ja/translator
メソッド内で例外を投げるか、-1を返すか
- Cには例外はなくて-1を返していた。自動テストするならエラー投げるより-1返す方が都合がいい?
- throwを期待するテストもjunitは書けたはず
- たいていのテストするツールはcatchできるようになってる
- throwの方が楽なのでthrowを使っていくべき
- 例外でトランザクション rollbackするフレームワークもあるし
- Rustは例外が無い https://qiita.com/fujitayy/items/cafe661415b6aa33d884
クラウド化
- クラウドつおい人が引っ張ることがある
- そういう人がまだ必要
- 工場のIoT化
- https://pages.awscloud.com/rs/112-TZM-766/images/EV_awsloft-tko-iot-loft-19-lt1_May-2021.pdf
複数DB対応アプリってどうなの
- パフォーマンス出したりするためにストアド作ると大変
- エンタープライズだとありがち、既存のDBとアプリケーションのDBシステム違ったり、OracleとMySQLとか
- リポジトリをインタフェースにして間に噛ませてSQLアクセスするインフラ層に実装を書く
- TEMPORARY TABLE
- https://qiita.com/kamedono/items/dfb25d444f8f817c2ca2
- BigQueryもSQLでアクセスする
ビッグデータ
- とりあえずS3にいろいろぶっこんであとで引っ張ってきたり
- アクセスログとか蓄積しているとすごい量になる
- https://aws.amazon.com/jp/big-data/datalakes-and-analytics/what-is-a-data-lake
- ログはElasticSearchに入れてる
- grafanaはkibanaと同じ
- https://knowledge.sakura.ad.jp/6831/
- elasticsearchとかMySQLをDBにして表示させる
- 生産個数とか1分単位でデータ生まれる
- https://pages.awscloud.com/JAPAN-field-OE-iotloft19-0519-2021-reg-event.html
Rails7
KPT
KEEP
- 色々な話を聞けて、良かったです。 ★2
- 話題たくさんでて良かったです
- コードやコメントの具体的な話が結構できた ★1
- 仕事で困ってることを聞けた ★1
- コメントの書き方の話が面白かった ★3
- 議事録 ★2
- ちょ~久し振りに参加した(^o^) ★1
- (部分)参加できた
PROBLEM
- 話題を提供できなかった… ★1
- 話すぎた気がする ★1
- redcar、DLしたけど動きません ★2
- 自己紹介が遅かった ★1
- 残業 ★1
TRY
- LTネタを探す
- 次回のネタを提供する。 ★1
- DB周りの勉強をする。
- なんか作ってくる(できればRubyで) ★2
- 工場のIoT可視化ネタ面白いので是非見て欲しい ★3
- 次回は 10/13(水) 19:00~
- 新しい人がいたら自己紹介! ★1
- JSONをいい感じにパースするCLIをRubyで書く ★1
自己紹介
- Hamamatsu.rb仕切ってる人。浜松でRuby on Railsを使って開発中。JAWS-UGにも参加中
- 普段C#で生産管理作って売ったりしてる人。
- 浜松でRuby on Railsを使って開発中の人。主に受託開発。RubyとたまにJAWS
- 学部時代からHamamatsu.rbにいる人。JAWSにも参加したい
- 組み込み系のプログラマの人。CとかC++。Rubyは趣味。
- 製造業の仕事。管理業務がメインだがコードも書いている。TypeScriptとReact
- デザインの仕事の人。仕事を控えて3カ月くらいはRailsの勉強をしてます
ruby girls
- https://railsgirls.jp/
- チュートリアルがわかり易いらしい
次回
- 次回は 10/13(水) 19:00~