2023年9月8日のブックマーク (9件)

  • Bun 1.0 | Bun Blog

    Bun is an all-in-one toolkitWe love JavaScript. It's mature, it moves fast, and its developer community is vibrant and passionate. It's awesome. However, since Node.js debuted 14 years ago, layers and layers of tooling have accumulated on top of each other. And like any system that grows and evolves without centralized planning, JavaScript tooling has become slow and complex. Why Bun existsBun's g

    shingo-sasaki-0529
    shingo-sasaki-0529 2023/09/08
    Bun もう 1.0 (production ready) なんだ。 Bun が置き換える既存ツールの一覧見るとほんとにすごいな。 Rome が掲げてた世界だいぶ実現しちゃってるじゃん。
  • RubyKaigi 2023に向けた勉強会を行いました - SmartHR Tech Blog

    こんにちは。プロダクトエンジニアのyudaiです。5/11から開催されるRubyKaigi2023に向けて、社内で勉強会を実施しました。自己学習のきっかけづくりとして、RubyKaigiのトークを聞く準備方法、トークテーマ、RubyKaigiで話題になりがちな技術について広く浅くお話しました。 RubyKaigi 2023に参加される方のお役に立つかもしれませんので、この勉強会で使った資料を公開します。 RubyKaigi 2023 予習資料 留意事項 この記事はyudai(@ytnk531)が、RubyKaigi 2023の予習のために調べた内容をまとめたものです。誤った内容や古い内容が多く含まれる可能性があることをご留意ください。誤りなどについてご指摘を頂ける場合は、TwitterのDMかリプライなどでご連絡をいただけると大変助かります。 内容 事前に理解していたほうが良さそうなRub

    RubyKaigi 2023に向けた勉強会を行いました - SmartHR Tech Blog
    shingo-sasaki-0529
    shingo-sasaki-0529 2023/09/08
    こういう取り組みすごく良い。一歩上にチャレンジするための土台がしっかり社内に醸成されててみんなで先に進もう感がある。
  • JSONとBigInt

    ちょっと前にblueskyで見かけた話題。もとは「GraphQLのスキーマではintが32ビットしかなくて、64ビット整数とかないのがイケてない」といった話だったかなと思う。直感的にはこれは「Javascriptではすべてが倍精度浮動小数点数だから64bit intがないから」ということになるが、よくよく調べてみるといろいろややこしい歴史的事情があるようだ。 たしかにJSにはもともとひとつのNumber型しかなく、いわゆるdouble型(倍精度浮動小数点)だけで数値を表現してきた。IEEE754の倍精度浮動小数点数は仮数部が52ビットあるので、実際には32ビット整数ていどであれば全て誤差なく表現できる。なので32ビット整数または倍精度浮動小数点数がどちらも使えるというふうに理解されてきた。 そうはいっても不便なので、現代のJSにはBigIntがある。ES2020で導入されたらしい。ただし普

    JSONとBigInt
    shingo-sasaki-0529
    shingo-sasaki-0529 2023/09/08
    Number と BigInt の暗黙の変換が無いってのがネックか。でも暗黙に変換されたらそれはそれで昔ながらの The JavaScript みたいな挙動だなとは感じそう。
  • 入社してわかったSmartHR本体の難しさ - SmartHR Tech Blog

    どうも2022年9月にSmartHRに入社したエンジニアの大澤(@qwyng)と申します。SmartHR体を開発しています。 SmartHRというサービスは、従業員情報を集約したアプリケーションをコアとし、そのコアと連携する複数のアプリケーションを配置した構成になっています。 そのコアというのがSmartHR体です。 SmartHR体は歴史が長いプロダクトです。カジュアル面談でも「キャッチアップはどうされました?」、「SmartHRの開発って技術的に何が大変ですか?」といった質問をよく頂きます。 記事はそういったSmartHRの開発の大変さを知りたい方に向けて自分が感じたことを言語化したいと思います。 2022年初頭に弊社の@sugamasaoさんがSaaS.techで発表した. 「アプリケーションが大きくてつらい・・・ってこと!?」*1 というスライドを見たことがある方もいると

    入社してわかったSmartHR本体の難しさ - SmartHR Tech Blog
    shingo-sasaki-0529
    shingo-sasaki-0529 2023/09/08
    BiTemporal Data Model を ActiveRecord レベルで強制するのおもしろ!レコード数爆発的に増えるし都度作成でパフォーマンス問題も出てくる劇薬ではあるけど、確かな履歴管理、タイムトラベルができるようになるんだ。
  • SaaS.tech #1 / SmartHR

    SaaS.tech #1 SmartHRの事例紹介です https://saas-tech.connpass.com/event/239175/ 当日の動画はこちら https://www.youtube.com/watch?v=YJ6Uv6cUFdM

    SaaS.tech #1 / SmartHR
    shingo-sasaki-0529
    shingo-sasaki-0529 2023/09/08
    つらそうなのはわかった
  • RailsでUNIQUE制約を遅延実行できるようにしました - SmartHR Tech Blog

    SmartHRではRuby on Railsを多くのサービスで採用しています。 そのため、不足している機能や不具合があればrails/railsへコントリビュートすることがあります。 今日は、日々のぽつぽつとしたコントリビュートの中から、Rails 7.1に追加したUNIQUE制約について紹介します。 unique_constraint(UNIQUE制約) UNIQUE制約(unique_constraint)はRails7.1(執筆時は未リリース)から利用可能になるActiveRecordの新機能です。 rails/rails#46192 PostgreSQLでしか利用できませんが、下記のようにunique_constraintで遅延可能なUNIQUE制約を定義できるようになりました。 # create_table内で使う場合 create_table :items do |t| t.i

    RailsでUNIQUE制約を遅延実行できるようにしました - SmartHR Tech Blog
    shingo-sasaki-0529
    shingo-sasaki-0529 2023/09/08
    UNIQUE制約のチェックを遅延させることに何の意味があるんだって思ったけど、トランザクションの途中ならチェック待ってくれるのか!例示されてるようにユニークではあるが値の交換が可能ってケースだと割と役立ちそう
  • Prettier 3.0 の VSCode 拡張対応における技術的な意思決定~VSCode 拡張で dynamic import が動かない~

    VSCode 拡張で dynamic import が動かない

    Prettier 3.0 の VSCode 拡張対応における技術的な意思決定~VSCode 拡張で dynamic import が動かない~
    shingo-sasaki-0529
    shingo-sasaki-0529 2023/09/08
    課題から解決策まですごいわかりやすかった。満を持して Prettier 3 出したのに、確実に抑えておく必要がある vscode で動かせないってなったときしんどかったろうなぁ。
  • 「アルファベット」「ローマ字」「ラテン文字」の違いとは? | Revontulia[レヴォントゥリア]

    正しく使っているつもりでも、実は間違っていたり、正確じゃなかったりする。そんな言葉、たくさんありますよね。 言語関連でもそういった言葉はいくつかあります(例:「母国語」「〇ヶ国語」など)。今回のテーマは「アルファベット」です。 外国語の4技能のうち一番重要なのは「リーディング」だと思う「〇ヶ国語」という数え方への強烈な違和感【英語は何ヶ国語?】母国語と母語の違いとは?混同するのはもう止めませんか<記事は広告の後にも続きます> アルファベットとは「一文字一音素の文字体系」のこと「英語を書くのに使う文字」という意味で「アルファベット」と言う人が結構いますよね。ですがこれ、正確には間違い。 アルファベットとは、「一つの文字が一つの音素に対応する表音文字体系」のこと。つまり表音文字の一種です。 「音素」とは、ざっくりいえば子音と母音をまとめて呼ぶ名前です。言語によっては、声調も音素のうちに入ります

    「アルファベット」「ローマ字」「ラテン文字」の違いとは? | Revontulia[レヴォントゥリア]
    shingo-sasaki-0529
    shingo-sasaki-0529 2023/09/08
    はぇ〜、ハングルもアルファベットの一種って言われて、いままで完全に誤解してたことに気づいた。
  • Active RecordでRow Level Securityを使って安全にテナント間のデータを分離する - SmartHR Tech Blog

    従業員データベース機能の開発を担当している渡邉です。最近公開したGemであるactiverecord-tenant-level-securityの紹介をします。 SmartHRにおけるマルチテナントの現在 私たちが開発するSmartHRはお客様ごとに1つの環境を提供する、マルチテナント型SaaSです。サービス全体で1つのデータベースを持ち、複数のテナントのデータが混ざらないように、SQLで問い合わせを行います。 1つの環境ごとに1つのデータベースを持つ方式は安全性の面で優れていますが、スキーマの保守やマイグレーションにかかる時間の増加など、多くの技術的な困難をもたらします。この選択の背景については、2018年に書かれた以下の記事もご覧ください。 tech.smarthr.jp とはいえ、常にテナントごとのWHERE句を意識しながらコードを書くのは大変ですし、不具合の温床になります。幸い、私

    Active RecordでRow Level Securityを使って安全にテナント間のデータを分離する - SmartHR Tech Blog
    shingo-sasaki-0529
    shingo-sasaki-0529 2023/09/08
    生SQL使うことあんまりないとは思うけど、だからこそレビューで見落としがちだし安全に振り切れて良さそう。