タグ

Shimojuのブックマーク (507)

  • Rails 6.1のままRuby 3.2にアップデートし、YJITの恩恵を受ける

    先日、携わっているサービスで一番大きいRailsアプリをRuby 3.2にアップデートし、YJITを有効化できました。 方針を検討した結果、今回はRails 6.1およびPsych 3系のままRuby 3.2にアップデートする戦略をとったため、その手順をまとめます。 先週にメインのサービスをRuby 3.2にしてYJITを有効にできました! 実際に速くなったし嬉しい大YJIT記念日だ🎉 https://t.co/Wkhc6fDfj9 — Hiroshi Shimoju (@shimoju_) July 19, 2023前提#今回のRailsアプリはサービスの機能がほぼすべて詰まっているモノリスで、歴史も8年と比較的長いです。 アップデート前のバージョンはRuby 3.0、Rails 6.1で、Psychは3系。 正攻法では、おおむね以下の手順でアップデートを進めていくことになります。 R

  • DockerでcronしたいときはBusyBox crondが便利

    Dockerコンテナでプログラムを定期実行したいとき、それぞれの言語で実装されたタスクスケジューラを使うほか、手っ取り早くcronを使ってしまう方法もあります。しかしDockerで使うにはやや面倒な点があります。 cronで実行するプログラムにコンテナに設定した環境変数を渡したい環境変数が独立しているのはcronのよくあるハマりどころですねファイルに書き出して読み込んで、とやるのは面倒ログは標準出力・標準エラー出力に書き出したい標準出力に出せばdocker logsで扱えるし、ファイルだとローテートが面倒このようなとき、BusyBoxに含まれるcrondを使うと、以上の課題を解決してシンプルに定期実行することができます。 インストール#Debian系ではapt-get install busybox-staticでインストールし、busybox crondで起動します。 Alpine Li

  • Blueskyのハンドルネームにカスタムドメインを設定する

    同僚からBlueskyの招待コードをもらったので登録してみた。 https://bsky.app/profile/shimoju.jpどうやら現状はログインしていないとプロフィールすら閲覧できないっぽい。招待コードは2つ余っているのでTwitterなどで声をかけていただければ。 いまのところ見た目はまんまTwitterという感じ。非中央集権型SNSを実現するプロトコルとしてもActivityPubという先例があるので、AT Protocolがどのように差別化を図っていくのか気になる。 Twitterの雲行きが怪しい昨今、Mastodonなど含め色々試しつつ、複数の発信手段を確保しておきたい気持ち。このブログを整備し直したのもその一環だし。 ハンドルネームにカスタムドメインを設定する#Blueskyはハンドルとして任意のドメインを設定できるようになっており、DNSレコードを用いて人認証を実

  • HugoとCloudflare Pagesでブログを作り直した

    このブログはNode.js製の静的サイトジェネレーターであるHexoで作っていたけど、放置しすぎて(最新の記事が3年前…)Node.jsやnpmがだいぶ古くなっており、アップデートが面倒な状態になっていた。 最近はScrapboxにシュッと書いてしまうことが多いものの、やっぱりすべてをコントロールできる自分のサイトを持ちたいよなーということで作り直した。 静的サイトジェネレーター#前回の構築時にも比較に上がっていたHugoを採用。 以前と比べて、Markdownとアセットをまとめて管理できるPage Bundles機能などが追加されて順調に進化していることや、Hexoから大きくディレクトリ構成やfront-matterを変えなくてもよかったのが理由。 GatsbyやAstroも考えたけど、そんな凝ったことやるわけでもないし、アップデート業もめんどいし、ということで。ワンバイナリでオールイン

  • Kaigi on Railsでリモートワークについて発表しました

    Kaigi on Railsにて「快適なリモートワークを実現するために〜RailsでSSOを実現する3パターン」というタイトルで発表しましたshimojuです。無事燃え尽きていましたが、遅ればせながら感想ブログを書きました。 資料はこちらです。動画については順次公開中なのでそのうちアップされるはずです。 快適なリモートワークを実現するために〜RailsでSSOを実現する3パターン当日の配信環境についてKaigi on Rails 発表動画初めてのオンライン登壇ですが、特にトラブルなく終えられて一安心でした。当日の配信環境については上に書いてありますが、事前に練習会があり、Zoomの画面共有やYouTube配信側でどう見えるかのテストができたのがよかったです。これがなかったら当日かなり焦っていました。 発表では会社特有の事情などもあるためどう説明すればいいか悩む箇所もありましたが、単にSAM

  • v-modelを受け付けるカスタムコンポーネントの書き方の好み - mmag

    Vue.js 2系を対象とします。 何がしたいかというと、 <my-great-text-input v-model="text" /> ということがしたい。 とりあえずドキュメントを見ると、以下のような方法が書いてある。 https://jp.vuejs.org/v2/guide/components.html#カスタムイベントを使用したフォーム入力コンポーネント <template> <input type="text" :value="value" @input="updateText"> </template> <script> export default { props: ['value'], methods: { updateText(e) { this.$emit('input', e.target.value) } } } </script> ただ、必ずしもこれしか方法が

    v-modelを受け付けるカスタムコンポーネントの書き方の好み - mmag
  • NoSQLデータモデリング技法

    NoSQLデータモデリング技法.markdown #NoSQLデータモデリング技法 原文:NoSQL Data Modeling Techniques « Highly Scalable Blog I translated this article for study. contact matope[dot]ono[gmail] if any problem. NoSQLデータベースはスケーラビリティ、パフォーマンス、一貫性といった様々な非機能要件から比較される。NoSQLのこの側面は実践と理論の両面からよく研究されている。ある種の非機能特性はNoSQLを利用する主な動機であり、NoSQLシステムによく適用されるCAP定理がそうであるように分散システムの基的原則だからだ。一方で、NoSQLデータモデリングはあまり研究されておらず、リレーショナルデータベースに見られるようなシステマティック

    NoSQLデータモデリング技法
  • Kotlin Coroutines Flow + LiveData + Two-way Data Binding - Qiita

    Kotlin Coroutines 1.2.0からFlowというCold Streamを実現する仕組みが導入されました。これまではChannelというHot Streamの仕組みがあったのでRxにだいぶ近づいてきた感じがあります。 この記事では、FlowとLiveData、双方向データバインディングを使っていい感じにUIのイベントを処理してみます。 LiveData as Flow まずは、LiveDataにセットされた値をFlowとして扱うための拡張関数を作ります。Channelを作るときはchannelやproduceといったChannel Builderで作っていましたが、FlowではflowやflowViaChannelというFlow Builderが用意されています。 flowではFlowに値を流す処理emitがsuspend関数になっており、ObserverのonChanged

    Kotlin Coroutines Flow + LiveData + Two-way Data Binding - Qiita
  • Androidのライフサイクルの基礎からViewModel, LiveData, Kotlin Coroutinesまでを流れるように説明したい - Qiita

    Androidのライフサイクルの基礎からViewModel, LiveData, Kotlin Coroutinesまでを流れるように説明したいAndroidlifecycleJetpackAndroidX 先日、Google Developer Expert for Androidになりました。 これからもよろしくおねがいいたします。 Androidの初心者がステップアップできるような記事を書いてみます。 なにかツッコミがあればコメントしてください🙏 ライフサイクルについて少し学んだ後に、ViewModel, LiveData, Kotlin Coroutinesについて、ライフサイクルに関連する課題とその解決策という位置づけで話していきます。 1. ライフサイクルの基礎 ライフサイクルとは生き物の蝶でいうと生まれて、卵から幼虫になってさなぎになって、蝶になって死んでいく感じですが、A

    Androidのライフサイクルの基礎からViewModel, LiveData, Kotlin Coroutinesまでを流れるように説明したい - Qiita
  • authorization_code_flow

    authorization_code_flow 1�U�U ��V�U @startuml UA -> App: /login UA <-- App: Redirect UA -> 認可サーバー: /auhorize UA <- 認可サーバー: ログインページ表示 UA -> 認可サーバー: ログイン UA <- 認可サーバー: 認可(AppにXXXを許可しますか? UA -> 認可サーバー: OK UA <-- 認可サーバー: Redierct UA -> App: /callback?code=xxx&state=xxx App -> 認可サーバー: /token に認可コードを渡す App <- 認可サーバー: AccessToken App -> App: セッションにAccessToken保存 UA <- App: ログイン完了 @enduml bad_practice_auth

    authorization_code_flow
  • RxViz - Animated playground for Rx Observables

    Visualize any Rx Observable, and export SVG of the marble diagram.

  • GMOペパボのエンジニアが語るHeroku活用ノウハウ | Salesforce Developers

    Web セミナーでは、Heroku を使ったサービスを開発、運用されている GMO ペパボ株式会社様より、エンジニアの山 浩平様と下重 博資様をお迎えし、ペパボのサービス「カラーミーリピート」と「SUZURI」の実際のケースをもとに、Heroku の活用事例をご紹介します。 カラーミーリピートは、事業者様が手間をかけずに定期販売を始められる EC プラットフォームです。また、SUZURI はオリジナルグッズを手軽に作成・販売できるサイトで、両サービス共に Heroku の上で運用されています。 現場のエンジニアから体験談を聞くことができる貴重な機会となります。自社ビジネスの参考にされたい方はもちろん、Heroku に興味のある方は是非ご参加ください。 ご紹介する内容 (予定) Heroku で稼働しているサービスの概要、紹介 Heroku 採用に至った経緯 ペパボで実践している He

    GMOペパボのエンジニアが語るHeroku活用ノウハウ | Salesforce Developers
    Shimoju
    Shimoju 2019/07/08
    初のWebセミナー発表でした。録画内ではスライドにないことも話しています〜
  • Node.js Performance 改善ガイド - from scratch

    Node.js Performance 改善ガイド Memory の場合 メモリリークかどうかを特定する メモリリークではない場合 CPU の場合 どこの処理に時間がかかっているのかを確認する v8 simple profiler flame graph を取得する File の場合 大きなサイズのファイルをどうしても扱う時 Network の場合 keepalive を on にする その他: 全体的にパフォーマンスを改善するためにやること JIT が効いているかを確認する clusterが使えないか検討する C++ addons vs JavaScript libraries まとめ 参考資料 Node.js Performance 改善ガイド この記事は Node.js 2 Advent Calender の 5日目の記事です。 qiita.com Node.js のパフォーマンスに

    Node.js Performance 改善ガイド - from scratch
  • Webサイトの利用規約(無料テンプレート・商用利用可)

    Webサイトの利用規約 kiyaku.jp へようこそ。 当サイトでは、Webサイト用の「利用規約」「プライバシーポリシー」等のひな型(雛形・テンプレート)を掲載しています。 ひな型(雛形・テンプレート)のご利用は無料です。 個人・法人を問わず、どなたでも自由にご利用いただけます(商用利用可)。 ご利用の際は、ご利用の際の注意事項をご確認ください。

  • RxJSでMVVMやってる - @hadashiA

    Rxは、すごくUIを書くのに向いているのではないだろうか。アプリケーションの状態を山盛りの変数で管理することから解放され、状態から状態へ変換する関数を書けばよくなるから。 非同期処理を同期っぽく書きたいならawait でいいじゃん。UIイベントを宣言的に書きたければ 2-wayバインディングがあれば良いじゃん。という話では終わらず、その辺の問題解決に加えて、値の発生器を全て同じ宣言にまとめられ、状態変数がなくなるところが書いていて楽しいところです。 // たとえば、、 Observable.fromEvent(searchBox, 'input') // 検索窓に字が打ちこまれたら .debounce(500) // 0.5秒ごとに .map(e => e.target.value) // 入力されたテキストを .filter(q => q.length > 0) // 1文字以上の場合だ

    RxJSでMVVMやってる - @hadashiA
  • 正真正銘のReactだけの不純物なしでReact入門

    Reactのチュートリアル、たくさんありますよね。どれも質が高く、どこから手をつければいいかわからなくなっちゃいます。 ですがやはり巷のチュートリアルには面倒な問題もあります。今回は面倒ごとを全部すっ飛ばしてReactでのウェブアプリ作りに入門してみましょう。 Reactを始めるには、まずあれとこれとそれとどれと…… Reactやるには、まずNode.js入れてbabel入れてreact入れてreact-router入れて、ついでにredux入れてreact-redux入れて、redux-saga入れて…… Reactめんどくせえ!!!ってのが正直なところだと思います。はい、私もそう思います。ただ、まあ、色々必要なのも事実なので……。 それでもやっぱり「ReactやるならReactだけやりたい。他はどうでもいい」という気持ちは簡単に捨てられるものではありません。そこで今回はそういう面倒全部

    正真正銘のReactだけの不純物なしでReact入門
  • HerokuのAPIデザイン

    Herokuが自ら実践しているAPIデザインガイドをGithubに公開した. “HTTP API Design Guide” このガイドは些細なデザイン上の議論を避けて,ビジネスロジックに集中すること目的としている.Heroku特有なものではなく,一般にも十分適用できる知見となっている. 最近は,モバイル向けにAPIをつくることも多いため,勉強もかねて抄訳した.なお内容は,HTTP+JSONのAPIについて基的な知識があることが前提となっている. 適切なステータスコードを返す それぞれのレスポンスは適切なHTTPステータスコード返すこと.例えば,“成功"を示すステータスコードは以下に従う. 200: GETやDELETE,PATCHリクエストが成功し,同時に処理が完了した場合 201: POSTリクエストが成功し,同時に処理が完了した場合 202: POSTやDELETE,PATCHリク

  • Go Modulesの概要とGo1.12に含まれるModulesに関する変更 #golangjp #go112party - My External Storage

    TL;DR Go Modules(vgo)はGo1.11から導入され始めたGoの新しいバージョン管理 Go1.12ではまだ有効にはなっていない(Go1.13からはデフォルトで有効になる) Go Modulesの概要とTipsなどを簡単にまとめた Go1.12のModules関連の変更をDockerを動かして確認してみた GOPATHi外でgo.modがなくてもgo run可能 replaceディレクティブで依存パッケージをローカルのコードを使って解決 etc… 確認に利用したDockerfileやスクリプトは以下のリポジトリにある。 https://github.com/budougumi0617/gomodules-explore vgo発表前のGoのバージョン管理は以下のような手法が取られていた。 go getでgo1タグ・ブランチもしくは最新のmasterブランチを取得する go g

    Go Modulesの概要とGo1.12に含まれるModulesに関する変更 #golangjp #go112party - My External Storage
    Shimoju
    Shimoju 2019/02/17
  • SF Mono を使って最高のプログラミング用フォントを作った話 - Qiita

    みなさんターミナルは使ってますか? Terminal.app? iTerm2? Hyper? それとも他の何か? それではフォントは何を使っていますか? Menlo? Consolas? Ricty? 今日はそんなお話です。 対象とする読者 ターミナルやエディタでカコイイ等幅フォントが使いたい人。 既存のフォントを FontForge + Python で色々いじって遊びたい人。 プログラミング用フォント SF Mono Square ずっと Ricty を使っていたのですが、色々こだわる余り自分でフォント作ってしまいました。作ったものをそのまま配布するのはライセンス上できませんが、Homebrew で誰でも導入できるようにしています。 brew tap delphinus/sfmono-square brew install sfmono-square # /usr/local/opt/

    SF Mono を使って最高のプログラミング用フォントを作った話 - Qiita
  • 分散型メッセージングミドルウェアの詳細比較 | POSTD

    メッセージキュー について書いている連載の続きとして、今週末は分散型メッセージングを実行するための様々なライブラリを詳細に分析していきたいと思います。今回の分析では、APIの特性、デプロイメントやメンテナンスの容易さ、そしてパフォーマンスの質を含めて2、3種類の異なる側面に着目します。メッセージキューは2つのグループに分類できます。ブローカレス(brokerless)とブローカード(brokered)です。ブローカードなキューはエンドポイント間に何かしらのサーバを挟んでいますが、ブローカレスなメッセージキューは、メッセージ送信の際でも間に何も挾まないP2Pです。 今回分析するのは以下のシステムです。 ブローカレス nanomsg ZeroMQ ブローカード ActiveMQ gnatsd Kafka Kestrel NATS NSQ RabbitMQ Redis 取り掛かりとして、ほぼ間違

    分散型メッセージングミドルウェアの詳細比較 | POSTD