タグ

dorapon2000のブックマーク (815)

  • CIを高速化する技術⚡️ - 10X Product Blog

    この記事は 10X アドベントカレンダー2023 という企画の1日目(12/1)の記事です。 こんにちは、10Xでソフトウェアエンジニアをしている 岡野(@operandoOS)です。 今回 10Xで3回目となるアドベントカレンダー企画の1日目をありがたく担当させていただきます💪 目次 目次 10X アドベントカレンダー2023ってなに? さてさて、題へ CIは絶対に速い方がいい CIを高速化するテクニックの紹介 キャッシュの利用 マシン性能の調整 ジョブの並列実行とテスト分割 最適なテスト分割 ジョブの実行順序・依存関係の最適化 不要なジョブ・ステップを削除する テストコードの実行速度を上げる 紹介したテクニックを活用した10XでのCI高速化事例 アプリのビルド時間の大幅短縮に成功!! APIのテスト実行時間の大幅短縮に成功!! CIを高速化するために日々取り組んでいること CI/C

    CIを高速化する技術⚡️ - 10X Product Blog
  • 管理職に教えたいハックマンとオルダムの職務特性モデル | ビジネスゲーム研修なら株式会社HEART QUAKE

    Hackman,J.R.&Oldham,G.R.(1975)“Development of the job diagnostic survey.”Journal of Applied Psychology, 60, 159-170. Hackman,J.R.&Oldham,G.R.(1980) Work redesign, Addison-Wesley. モデルをざっくり解説していくと、左側の中心的職務次元に該当する5つの基的特性が従業員に3つの臨界的心理状態というものを生み出し、その結果が仕事上の成果や、従業員のモチベーションに影響するということです。 それぞれの項目を少し細かく見ていきたいと思います。 中心的職務次元とは まずは、5つの基特性とされる中心的職務次元について見ていきたいと思います。5つの項目を簡単に紹介すると以下のようになります。 ・技能多様性:その仕事を行うにあたっ

    dorapon2000
    dorapon2000 2023/11/30
    “左側の中心的職務次元に該当する5つの基本的特性が従業員に3つの臨界的心理状態というものを生み出し、その結果が仕事上の成果や、従業員のモチベーションに影響するということです。”
  • Git の Squash マージをやめた話 - Mobile Factory Tech Blog

    こんにちは!ブロックチェーンチームでエンジニアをしている id:dorapon2000 です。最近買ってよかったものは「潮の華 あおさといわしふりかけ」です。 今回は Git の Squash マージについての知見を共有したいと思います。端的に言うと、 チーム開発で Non Fast-Forward マージをやめて Squash マージを採用し、再び Non Fast-Forward マージに戻した経緯の説明です。Squash マージを運用に導入するか考えたことがある方の参考になればと思います。 Squash マージとは マージには 3 種類ありますね。みなさんはトピックブランチを main へマージする際にどのマージ方法を利用していますか? Fast-Forward マージ git merge --ff-only Non Fast-Forward マージ git merge --no-f

    Git の Squash マージをやめた話 - Mobile Factory Tech Blog
    dorapon2000
    dorapon2000 2023/11/29
    書きました。
  • NestJS Way より TS Way を意識したバックエンド設計事例と Tips - Mobile Factory Tech Blog

    こんにちは!BC チームでエンジニアをしている id:d-kimuson です。 最近、弊チームで構築した社内向け Web API のバックエンド設計をしたので事例として紹介しようと思います。 フレームワークとして NestJS を採用していますが、NestJS Way よりも TS Way を意識した設計をしており、このエントリの主題でもあるため、TS Backend の設計事例として読んでいただければと思います。 対象システムの概要 社内の他サービス向けの Web API で、他チームのサービスを経由してエンドユーザーに届く中間システム チーム内のサービスからもチーム外のサービスからも叩かれる想定 チーム外からも叩かれるため、なんらかのスキーマを共有したいというモチベーションがある → 2023 年現在で標準的な OpenAPI Specification (以後 OAS と呼びます)

    NestJS Way より TS Way を意識したバックエンド設計事例と Tips - Mobile Factory Tech Blog
    dorapon2000
    dorapon2000 2023/11/28
    型駆動でドメインのデータ構造を宣言し、ふるまいを関数として分離する関数型的なアプローチのほうが相性が良いと考えています。
  • エンジニアデビューして3か月たったけど、どう? - Qiita

    はじめに こんにちは。エンジニア歴3か月の駆け出しエンジニア(?)です。 今年の4月から社会人となり、6月までは全体での研修、そこから2か月間の開発研修、そして7月からエンジニアとして実務に入り始めました。 実務が始まってから丁度3か月くらいたったので、この3か月間で取り組んだこと、学んだこと、気持ちの変化などをつらつらと書いてみようと思います。 この3か月間で取り組んだこと 7月下旬 配属決定、配属先でのオンボーディング開始 配属前、新製品開発をやりたい!とずっと言っていたら、リリース仕立てホヤホヤの製品の開発チームへの配属となりました。やったー!そしてエンジニアとしての実務が開始しました。最初はチームで用意してもらったオンボーディング資料に従い、自分が携わる製品の理解、環境構築、開発で使うツールの理解を進めていきました。 私が携わるプロダクトでは、フロントはreact, typescr

    エンジニアデビューして3か月たったけど、どう? - Qiita
    dorapon2000
    dorapon2000 2023/11/14
    “そこで、自分が今何をしていて、こんなことで悩んでいて、こういう仮説を立てこういうことを試そうとしている、ということを発信しておくことで、リモートワークであっても自分の状況がわかる材料を提供すること”
  • アンチパターンを理解して package by feature へ

    はじめに ニコニコ生放送でフロントエンドを担当している misuken です。 今回は関心が分散してしまう理由やその原理、この問題に対する適切な対処法を通して、package by feature の合理性や、そこで重要になってくる関心の単位などについて解説していきます。 規模の大きなものを扱っている方、分類が苦手な方、分類に関して悩みを感じている方には特に有用です。 前提 Reactでコンポーネントを管理する例で説明します 当然React以外の様々なディレクトリ構成でも応用できます BCD Design の概念も覚えておくとより体系的に理解できます 精度の高い明名ができれば、分類の効率も精度も上がります 現実世界で捉える関心の分散 通常、自宅や職場でトイレに行くとき、同じフロアや同じ建物内のトイレに行きます。 もしもトイレだけの建物が隣に建っていて、そこに行かなければならないとなったらと

    アンチパターンを理解して package by feature へ
    dorapon2000
    dorapon2000 2023/11/12
    “"ただ単にあるものを組み立てただけの構造ではなく、一番最初に挙げた例 "家には「食卓 部屋 トイレ」がある" という構成のように、文脈に沿って具現化された構成にこそ価値があります。”
  • ナメやがってこの型ァ!!超イラつくぜぇ~~~~~ッ!!

    const colors = ["赤","青"] as const; type Colors = typeof colors[number]; //"赤" | "青" typeof colors[number]・・・ってよォ~~~~~ typeofはわかる。スゲーよくわかる TypeScritの世界では、typeofで変数から型を作れるんだよなァ だがnumberってのはどういう事だああ~~~~っ!? 配列にnumberを渡せるかっつーのよ───────ッ!! ナメやがってこの型ァ!! 超イラつくぜぇ~~~~ッ!! 解説 これはよォ 「Lookup Type」ってやつらしいぜぇ たとえばよォ 👇みたいに書くとPerson型からプロパティの型を取り出せるよなァ~?? type Person = { name: string, age: number } type name = Person

    ナメやがってこの型ァ!!超イラつくぜぇ~~~~~ッ!!
    dorapon2000
    dorapon2000 2023/11/10
    最近自分が思ってたことに代わりにイラついてくれてすごい助かる。
  • MemcachedとRedisの統合によるコスト削減の紹介 - Mobile Factory Tech Blog

    駅メモ!チームエンジニアの id:yumlonne です。 この記事では駅メモ!で使っていた Memcached を廃止し Redis に統合した経緯や流れを紹介します。 記事内で提供するサンプルコードは、駅メモ!の実装に合わせ Perl となってます。 簡単なコードなので Perl に詳しく無い方でも十分理解できると思います。 KVS 統合の背景 駅メモ!は AWS を使ってサービスを提供しています。 統合前は Amazon ElastiCache で Memcached と Redis の両方を運用していました。 Memcached はプライマリノードのみ、Redis はプライマリノードとレプリカノードそれぞれ 1 台の構成でした。 それとほとんど同じ構成が他に 2 セットあるため、全体を見ると Memcached は 3 ノード存在していました。 Memcached は m6g.la

    MemcachedとRedisの統合によるコスト削減の紹介 - Mobile Factory Tech Blog
    dorapon2000
    dorapon2000 2023/11/07
    “そこで既存の Memcached を使うキャッシュモジュールと同じインターフェースを持つ Redis 実装のキャッシュモジュールを作成して差し替えることにしました。”
  • ブラウザでリロードしながらキャッシュの挙動を確認してる全ての開発者へ | blog.jxck.io

    Intro こういうタイトルを付けるのはあまり好きではないが、あえてこのようにした。 「ブラウザでキャッシュがヒットしない」 以下は、 Web における Caching の FAQ だ。 サーバで Cache-Control を付与したのにキャッシュがヒットしない サーバで ETag を付与したのに If-None-Match が送られない サーバで Last-Modified-Since を付与したのに If-Modified-Since が送られない 先日も、筆者が書いた MDN の Cache セクションで「記述が間違っているのでは?」と同様の質問を受けた。 Issue about the Age response header and the term "Reload" · Issue #29294 · mdn/content https://github.com/mdn/cont

    ブラウザでリロードしながらキャッシュの挙動を確認してる全ての開発者へ | blog.jxck.io
    dorapon2000
    dorapon2000 2023/11/06
    “では、「キャッシュの挙動」、正確には「ユーザが体験するキャッシュの挙動」はどのように検証すれば良いのだろうか? 答えは、最初に言ったように Navigation を用いることだ。”
  • その例外、いつキャッチするの?

    はじめに 最近、若手のコードレビューをしていて例外の使い方を教える機会があったので、ブログの方にもまとめたいと思います。今回はバッチ編。オンラインだとまた少し違う観点があると思います。また、言語はJavaを前提していますが考え方は例外機構をもつ言語ならあまり変わりません。 TL;DR 例外は原則キャッチしない。バッチは速やかに殺せ 個別箇所でログを出さずに必要な業務情報はExceptionを入れ子にして乗せる 長いバッチのためにはスキップもやむなし 原則、例外はキャッチしない JavaにはErrorとExceptionが存在し、OutOfMemoryErrorとかプログラム上ではどうしようもないものがエラー、ファイルが存在しない(FileNotFoundException)とかプログラム側でハンドリングするもの、と教科書では習うと思います。なのでException系はキャッチするものと、と

    その例外、いつキャッチするの?
  • 最近好きな『要素が重なっていく表現』を簡単に再現してみた!

    スピッカートの金山(@spicato_kana)です。 久しぶり(約 1 年ぶり)のテックブログです。。。 今回は、最近よく見かける『要素が重なっていく表現』を再現してみたいと思います。 参考サイトリスト Casa ZIZO 株式会社ニューピース Heure Bleue この表現を使うことにより、レイヤー感を出すことで奥行きを出し立体感、没入感を出すことが出来るのかなと思っています。 実装方法はいろいろありますが、今回は GSAP を使って実装してみたいと思います。 実装内容 実際のコード内容を上記の codepen をご覧ください! 今回は、GSAP を用いていますが、GSAP を使わなくても IntersectionObserver を使って実装することも可能です。 また、GSAP のpinを使っているサイトが多いのですが、どうしても安定して実装することが難しく、iPhone だとずれ

    最近好きな『要素が重なっていく表現』を簡単に再現してみた!
  • 会議全部ふっとばして社員の集中力を10xした話(ビッグバン) - 10X Product Blog

    こんにちは!経営企画の仕事をしているudonです。1年半前の見習いQA以来、2度目の文章です。今回は10X社内の会議のルールを整理し、そして全社員の未来のカレンダー予定を一旦全部消す、通称「ビッグバン」の第一回を実施したのでその背景や内容について書きます。 (イメージ) 10Xでは社内におけるコミュニケーションを大きく「同期」「非同期」に分けています。同期は会議や突発的な電話など同じ場にいることが前提であるコミュニケーションを指し、Slackなど非同期は必ずしも同じ時間での往復を前提としない文章やドキュメントによるコミュニケーションを指します。入った当初は「ドウキ・・?ヒドウキ??」とドキドキしてた私ですが、2年も経つと慣れてしまいました。慣れって怖いですね。 話が長いという皆様の期待を裏切ることなく、タイトルにもなっているビッグバン(会議の全削除)の話にいくまで5,000文字嵩んでしまっ

    会議全部ふっとばして社員の集中力を10xした話(ビッグバン) - 10X Product Blog
  • 偽の講演依頼を通じて東京大学教員が被害にあった標的型攻撃についてまとめてみた - piyolog

    2023年10月24日、東京大学は教員が使用していたPCがマルウエアに感染し、PC上に保管されていた情報が外部に流出した可能性があると公表しました。ここでは関連する情報をまとめます。 教員が在宅勤務で使用していたPCで被害 被害に遭ったのは東京大学大学院総合文化研究科・教養学部の教員(教授)で、在宅勤務で使用していたPCがマルウエアに感染していた。*1 大学が被害を覚知したのは、「標的型攻撃メールの事案を調査していた専門機関」からの指摘を受けたため。感染判明後に端末の調査を指摘をした機関と別の専門機関で調査をしたところ、PC内部の情報を盗み取った痕跡が確認された。 偽の講演の日程調整をやり取りする中でマルウエア感染 やり取り型の標的型攻撃のメールを通じて教員が使用してたPCがマルウエアに感染した。実在する組織の担当者を騙る人物から講演依頼のメールを受信し、日程調整のために教員がやり取りして

    偽の講演依頼を通じて東京大学教員が被害にあった標的型攻撃についてまとめてみた - piyolog
    dorapon2000
    dorapon2000 2023/10/27
    “依頼を受けていた(偽の)講演について、最終的に「講演が中止になった」と連絡を受けたことでやり取りが終わったことから教員はマルウエアの感染に気付くことができなかった。”
  • Typescript では !! と Boolean() が完全に同じ動作ではない

    🌼 はじめに 皆さんは Javascript である値を boolean に変換するときどういう方法も使いますか?よく使われる方法は!!(二重否定・Double negation)か、Boolean()だと思います。 const hello = Boolean("hello"); // true const world = !!"world" // true Typescript のハンドブックでもその2つを紹介してます。 You can always coerce values to booleans by running them through the Boolean function, or by using the shorter double-Boolean negation. いちおう型の観点では、!!を使ったら型がtrueかfalseになり、Boolean()関数を使った

    Typescript では !! と Boolean() が完全に同じ動作ではない
    dorapon2000
    dorapon2000 2023/10/26
    “型ガードしたいときはBoolean()はやめよう”
  • simple-gitを使ってみたら便利だった | DevelopersIO

    simple-git を使って、TypeScript による自動化事例を記事に致しましたが、TypeScript による cli のフレームワークを主に説明していたり、方向性が微妙なポストだなぁと反省…。 こんにちは、高崎@アノテーション です。 はじめに 我々が行っている作業におきまして、手動でファイルを更新することや環境を整備することは少なくありません。 以前から手を抜いて少ない工数で効率よく、かつ人為的ミスを削減することを生き甲斐としておりまして、手動でファイル操作をするものがあれば、以前ですと Linux のターミナル上で作業していたこともあり bash シェルで自動化を行う方法はないか、を常に考えていました。 ファイルの変化を見る場合はgitを使ってローカルでリポジトリを組んでみたり、結果の文字列を捏ねて諸々処理する時には、シェルを実装するに当たって欠かすことのできないawkやs

    simple-gitを使ってみたら便利だった | DevelopersIO
    dorapon2000
    dorapon2000 2023/10/24
    “simple-git にはaddやcommit、pushといったものも一通り揃っているので、”
  • さまざまなUSB-Cコネクタをスキャンして違いを検証、Appleの1万円超え純正ケーブルと安価なケーブルではどんな違いがあるのか

    「USB-Cケーブル」というカテゴリの中では、AppleのThunderbolt 4(USB-C)Proケーブルのように1万円を超えるような高額商品からたった数百円で購入できる安価なものまでさまざまな商品が存在しています。価格帯によって中身がどのように違うのかについて、産業用CTスキャナーを手がける企業「Lumafield」が分析結果を公表しています。 USB-C head-to-head teardown https://www.lumafield.com/article/usb-c-cable-charger-head-to-head-comparison-apple-thunderbolt-amazon-basics ◆Apple Thunderbolt 4(USB-C)Pro AppleのThunderbolt 4(USB-C)ProケーブルはThunderbolt 3・Thund

    さまざまなUSB-Cコネクタをスキャンして違いを検証、Appleの1万円超え純正ケーブルと安価なケーブルではどんな違いがあるのか
  • 「それは、本当に安全なんですか?」 セキュリティ専門家が「GitHub Copilot」の全社一斉導入時に考えたあれこれ

    GitHub Copilot 導入時に考えたセキュリティのあれこれ」というタイトルで登壇したのは、freee株式会社のただただし氏。タイミー社主催の「GitHub Copilotで拓く開発生産性」で、「GitHub Copilot 」を全社一斉導入する際に考えるべきセキュリティリスクについて発表しました。 freee株式会社 PSIRT マネージャーのただただし氏 ただただし氏:freee株式会社のただただしと申します。 今日は、「GitHub Copilot 導入時に考えたセキュリティのあれこれ」ということで、Copilotのセキュリティリスクについて語るわけですが、考えてみたら、GitHubの中の人を前にこんなことをしゃべるのは相当大胆な話だと思います。最後にいいことで締めるのでちょっと我慢してください。 自己紹介をいたします。ただただしと申します。PSIRTという組織でマネージャー

    「それは、本当に安全なんですか?」 セキュリティ専門家が「GitHub Copilot」の全社一斉導入時に考えたあれこれ
    dorapon2000
    dorapon2000 2023/10/20
    “「for Business」。ビジネス用のライセンスの場合、「テレメトリ、プロンプト、候補は、GitHub側に保存されませんよ」と書いてあります。学習しないだけでなく、保存もしませんよということですね。”
  • MySQLでSQLのみを使用してランダム取得を劇的に早くする方法 - 僕のススメ。

    MySQLでランダムに20行をとるためには以下のようにやればいい。 SELECT * FROM table_name ORDER BY RAND() LIMIT 0, 20; 簡単に取得できるのはいいんだけど、行数が増えると劇的に遅い。どれくらい違うかって言うと10万行のデータベースでも↓ぐらい違う。 表示中の列 0 - 19 (20 合計, クエリの実行時間 0.0070 秒) SELECT * FROM table_name LIMIT 0 , 20 表示中の列 0 - 19 (20 合計, クエリの実行時間 1.1884 秒) SELECT * FROM table_name ORDER BY RAND() LIMIT 0, 20; なんでこんなに時間がかかるのかと調べてみると、どうも*を使うから遅いらしい。ということで、列名に主キーを指定して試してみる。 表示中の列 0 - 19

    MySQLでSQLのみを使用してランダム取得を劇的に早くする方法 - 僕のススメ。
    dorapon2000
    dorapon2000 2023/10/17
    “なんでこんなに時間がかかるのかと調べてみると、どうも*を使うから遅いらしい。ということで、列名に主キーを指定して試してみる。”
  • JavaScriptでObjectじゃなくMapを使う場面の一例 - Qiita

    例題 与えられた文章に対し、単語の数を数え上げる関数を作ってみましょう。 ある一つの単語ではなく、出てくる単語全部について数えます。 function countWords (text) { // ??? } const text = 'base base kick kick base kick kick' const counts = countWords(text) console.log(counts) // -> 'base'が3個!'kick'が4個! function countWords (text) { const words = text.split(' ') // 単語と数のペアを並べた配列をこれから作っていきます。 // 例:[['base', 3], ['kick', 4]] const wordAndCountPairs = [] for (const word

    JavaScriptでObjectじゃなくMapを使う場面の一例 - Qiita
    dorapon2000
    dorapon2000 2023/10/16
    “他にも「属性とかメソッドとかじゃなくて、単にキーと値を並べたいだけなんだよなぁ」という時にはMapを使いましょう。 キーが動的な場合は大体Mapが適しています。”
  • Amazon Machine Image(AMI)のブロックパブリックアクセスが2023/10/16からすべてのAWSリージョンでデフォルト有効化されます | DevelopersIO

    Amazon Machine Image(AMI)のブロックパブリックアクセスが2023/10/16からすべてのAWSリージョンでデフォルト有効化されます たぬき( @tanuki_tzp )です。 突然ですが、AWSからこんな通知を受け取った人はいませんか? Amazon マシンイメージブロックパブリックアクセス (AMI BPA) は、2023 年 10 月 16 日からすべての AWS リージョンでデフォルトで有効になることをお知らせします。 こちらについて、Amazonマシンイメージブロックパブリックアクセスとはなんなのか、どんな内容の設定変更があるのか等をお知らせしていきたいと思います。 Amazonマシンイメージブロックパブリックアクセス(AMI BPA)とは AMIのパブリックアクセスとは Amazonマシンイメージ(AMI)とは、AWS上でインスタンスを起動する際に使用する

    Amazon Machine Image(AMI)のブロックパブリックアクセスが2023/10/16からすべてのAWSリージョンでデフォルト有効化されます | DevelopersIO
    dorapon2000
    dorapon2000 2023/10/13
    “AMIを引き続きプライベートでのみ使用したい場合 特にユーザーが取るべきアクションはありません。”