タグ

akatakunのブックマーク (4,669)

  • 飲み会を1,000回やって学んだ、「最高の飲み会」のつくりかた(長い)|udon

    (この記事は全文無料で公開しています) これは何人生を30年、会社員を10年やってきたが、飽き性であまりずっと続いてることがない。10年続いてることがあるとすれば相方との関係、書くこと、そして飲み会である。稿では、20歳以後一貫して取り組んでいる飲み会についての1個人の知見を極めて真面目に記したい。ここ10年でだいたい週3-4くらいはコンスタントに飲み会をして、そのうち体感6-7割は自分で企画しているので1,000回以上は飲み会を主催してると思う。その経験をもとに学んだことを書きたい。 なお、査読をお願いした相方には「長すぎ。強いられないと最後まで読む人はいない」と愛の鞭(?)をもらった14,500字ですが、必要な際に参照され、どこかの誰かには染み渡る箇所があればいい(ダシみたいですね)と願い、そのまま出します。 わいわい飲み会とは稿では、あくまで個人が娯楽目的に開催する会について記し

    飲み会を1,000回やって学んだ、「最高の飲み会」のつくりかた(長い)|udon
    akatakun
    akatakun 2023/11/20
    よく言語化してまとめたなー
  • Rails6でProtocol Buffersを使用する - Qiita

    こんにちは。 SmartHR アドベントカレンダーの4日目を担当しますエンジニアの@kurobaraです。 SmartHRでは、プラットフォーム化を促進するプラスアプリの開発をしています。 プラスアプリについては、弊社社長によるSmartHR Next 2018やCTO 芹澤の中長期戦略などに詳しく書かれています。 ところで、前日が社長だと次に渡されるバトンを担当する側としても緊張しますね>< 前置き 皆さん、型は大好きですか? 僕も好きです。 特にサーバサイドになんらかの言語でAPIフロントエンドTypeScriptで・・・ そして、サーバサイドとフロントエンドのI/Fとして、JSONを使用する 割とよくあるパターンかつ比較的デファクトだと思います 比較的、最近だとサーバサイドにGraphQLを使用しているという話もチラホラ聞くことが多くなってきましたが、今回の話とはちょっと異なるの

    Rails6でProtocol Buffersを使用する - Qiita
  • Zeitwerkの壊し方 - Qiita

    この記事はRuby on Rails Advent Calendar 2019の13日目です。 インフルエンザにやられて完全に出遅れました。ごめんなさいごめんなさい。 Zeitwerkとは みなさん、定数解決してますか? Rails6から導入されたZeitwerk、旧来のconst missingを利用した仕組み(classic mode)で見られた困った挙動のほとんどを解決してくれる素晴らしいヤツですね。 クラスを定義しても定義しても一向に参照されず、星空見つめてすすり泣いたあの日はもう過去のもの 🎉 ここでは、Zeitwerkのドキュメント、およびコードリーディングを通じて気づいた、導入の注意点やTIPSなどを紹介してみたいと思います。 (検証環境) Ruby 2.6.5 Ruby on Rails 6.0.0 前提知識として、Rubyの定数解決の仕組みを多少理解していると良い・・か

    Zeitwerkの壊し方 - Qiita
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 8.4.4 MySQL での内部一時テーブルの使用

    場合によっては、サーバーはステートメントの処理中に内部一時テーブルを作成します。 これが発生した場合、ユーザーは直接的に制御できません。 サーバーは、次のような条件下で一時テーブルを作成します: UNION ステートメントの評価 (ただし、後で説明するいくつかの例外があります)。 TEMPTABLE アルゴリズム、UNION または集計を使用するビューなど、一部のビューの評価。 導出テーブルの評価 (セクション13.2.11.8「導出テーブル」 を参照)。 共通テーブル式の評価 (セクション13.2.15「WITH (共通テーブル式)」 を参照)。 サブクエリーまたは準結合の実体化用に作成されたテーブル (セクション8.2.2「サブクエリー、導出テーブル、ビュー参照および共通テーブル式の最適化」 を参照)。 ORDER BY 句と異なる GROUP BY 句を含むステートメント、または結合

    akatakun
    akatakun 2023/11/08
    ステートメントに一時テーブルが必要かどうかを判断するには、EXPLAIN を使用し、Extra カラムをチェックして、Using temporary と表示されているかどうかを確認します
  • TypeScriptでキャッチされたエラー情報を型安全に扱いたい - FLINTERS Engineer's Blog

    こんにちは。中途6ヶ月の生田です。 現在は GANMA! というサービスの管理画面開発でWebフロントエンドを担当しています。 今回は実業務で直面した以下の課題について、キャンプ1期間にどう対処していったかをご紹介します。 TypeScriptでエラー処理をいい感じにしたいが例外機構によってthrowされるオブジェクトがanyで辛いのでEither2のようなものを返り値として対処してみる ◇ 目次 ◇ 目次 ◇ 前提 ◇ 課題 TypeScriptではcatch時におけるthrowされたデータはany ◇ 方針 説明用設定 案1. 呼び出す側で型を指定する 案2. throwableな処理をラップしてEitherのような返り値で表現する ◇ 実装編 1. TypeScriptでEitherのようなものを実現する 1-a. Result<T, U>のように書ける 1-b. Result型は利

    TypeScriptでキャッチされたエラー情報を型安全に扱いたい - FLINTERS Engineer's Blog
    akatakun
    akatakun 2023/10/11
    JSではどんなオブジェクトでもthrowできる、且つ実行環境に依存したエラーがthrowされ得るということからError型ではなく、any型になる(TS 4.0よりunknown型が指定できる)
  • 「Go言語で楽しくなるシステム開発:基礎から実践テクニック」mattn × 渋川よしき | Forkwell Press | フォークウェルプレス

    【ちょっと宣伝】上級エンジニア特化のキャリア支援サービスをはじめました! 市場の変動がキャリアへの不確実性をもたらす昨今、これまで以上にエンジニアに寄り添いたいという想いから、上級エンジニア特化のキャリア支援サービスをはじめました。スポーツ選手のエージェントのようにエンジニアの立場で次のキャリアを提案いたします。一般的な転職エージェントのように募集中の案件を紹介するだけでなく、あなたの理想のキャリア実現に向けて、ニーズがありそうな企業へ交渉し、望ましい案件を創出する働きかけも行います。無料で利用できますので、お気軽にお申し込みください。

    「Go言語で楽しくなるシステム開発:基礎から実践テクニック」mattn × 渋川よしき | Forkwell Press | フォークウェルプレス
    akatakun
    akatakun 2023/10/11
    一問一答。なるべく曖昧さを与えない。明示的に開発者がコードで意思決定するプログラミングが方針, error handlingの手間はそのため。全てのエラーを明示的に対処し暗黙をなくし、early returnすることでバグを減らす
  • BigQueryでユニーク数を推測するHyperLogLog++について - LCL Engineers' Blog

    バックエンドエンジニアの高橋です。 弊社ではデータ分析・可視化のためのデータ基盤としてBigQueryを用いていますが、その中でHyperLogLogアルゴリズムを活用したユニーク数の計測における工夫についてご紹介します。 なお、HyperLogLogアルゴリズム自体については詳細に理解していなくても実用上困ることは少ないのでこの記事では扱いません。詳細についてはネット上の記事を探ったりGoogleが公式に出している論文を当たるといいです。(私も説明できるほど詳細な理解はしてないです) ユニーク数の計測の面倒臭さ Webサイトのアクセス解析において重要な指標としてPV(ページビュー数)とUU(ユニークユーザー数)がありますが、PV数は単純に足し合わせでカウントすればいいのに対し、UUについては重複を排除した上でカウントする必要があるので分析上の取り扱いが面倒です。 簡単なお題で考えてみまし

    BigQueryでユニーク数を推測するHyperLogLog++について - LCL Engineers' Blog
    akatakun
    akatakun 2023/10/03
    この計算コストを抑えるテクニックとして、事前にある程度集計した中間テーブルのようなものを作るケースがありますが、更にHyperLogLogアルゴリズムを組み合わせることでよりスマートになります
  • React.ComponentProps 型を積極的に使おう

    Atomic Design でいう Atoms に相当する、汎用コンポーネントについての小話です。次の様に Props 型定義を用意し、解説している記事をよく見かけます。<input />タグを使わずコンポーネント化している理由は style を施すためかと思いますが、このコンポーネントが受け取れる Props は限定的で、メンテナンスコストが高いためお勧めできません。 type Props = { value: string; onChange?: React.ChangeEventHandler<HTMLInputElement> onBlur?: React.FocusEventHandler<HTMLInputElement> } export const Input = ({ value, onChange, onBlur }: Props) => ( <input value=

    React.ComponentProps 型を積極的に使おう
    akatakun
    akatakun 2023/09/26
    React.ComponentPropsWithoutRef, React. ComponentPropsWithRefで従来のHTMLタグが取りうる属性のPropsを楽に定義する, typeofと併用することでComponentに対しても適応できる
  • Ruby: gemが生成するコードを無名モジュールとprependで動かす(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Using anonymous modules and prepend to work with generated code | Arkency Blog 原文公開日: 2016/02/29 著者: Robert Pankowecki サイト: Arkency Blog 前回のセッター記事で、セッターメソッドがgemによって作成されている場合はどうすればよいのかというコメントをいただきました。このような場合、セッターをどのように上書きできるでしょうか? たとえばawesomeという名前のgemがあり、そのgemのAwesomeモジュールが自分のクラスでawesomeゲッターとawesome=(val)というセッターを導入し、そこに興味深いロジックが仕込まれているとしましょう。これを次のように使うとします。 class Foo e

    Ruby: gemが生成するコードを無名モジュールとprependで動かす(翻訳)|TechRacho by BPS株式会社
    akatakun
    akatakun 2023/09/25
    extendはクラスツリーに突っ込まれるわけではないから、愚直にsuperしてもメソッドが見つからない。メタプログラミングで継承をうまく動かすには工夫が必要
  • Rails のキャッシュ機構 - Railsガイド

    ガイドでは、キャッシュを導入してRailsアプリケーションを高速化する方法を解説します。 「キャッシュ(caching)」とは、リクエスト・レスポンスのサイクルの中で生成されたコンテンツを保存しておき、次回同じようなリクエストが発生したときのレスポンスでそのコンテンツを再利用することを指します。 多くの場合、キャッシュはアプリケーションのパフォーマンスを効果的に増大するのに最適な方法です。キャッシュを導入することで、単一サーバーや単一データベースのWebサイトでも、数千ユーザーの同時接続による負荷に耐えられるようになります。 Railsには、すぐ利用できるキャッシュ機能がいくつも用意されています。ガイドでは、それぞれの機能について目的を解説します。Railsのキャッシュ機能を使いこなすことで、応答時間の低下や高額なサーバー使用料に悩まされずに、Railsアプリケーションが数百万ビューを

    Rails のキャッシュ機構 - Railsガイド
    akatakun
    akatakun 2023/09/11
    MemoryStore,エントリーを同じRubyプロセス内のメモリに保持する。 キャッシュが限度を超えるとクリーンアップが開始され、直近の利用が最も少ない(LRU: Least Recently Used)エントリから削除される
  • type-fest でおくる快適な型ライフ

    はじめに 個人的にではありますが、型ロジックを書くのに最近ハマっていました(型パズルと呼ぶ人の方が多いかも)。私が最近使っていた type-challenges には、こういう型を書いてみなさい? と言う型ロジックの問題集が用意されており、非常に練習になるのでおすすめです。 はてさて、日、この記事を書こうと思った理由としては、もう型ロジック書きたくないなぁ、型ロジックをまとめたライブラリもあるだろう、と思って github をサーフィンしていたところ、type-fest と言うまさにこれを探していたと言うライブラリがあり、かなり良かったのでその紹介記事です。 余談 これは余談ですが、IsEqual と言う型を書いたプルリクが type-fest にマージされ、先日、リリースされました。はじめてのまともな OSS へのコントリビュートだったので(= 以前のコントリビュートはまともじゃなかっ

    type-fest でおくる快適な型ライフ
    akatakun
    akatakun 2023/09/06
    「例えば、フロントエンドは TypeScript で開発されており、バックエンドは Python が採用されているプロジェクトがあるとします。」まさにこれ自作してた
  • type-challenges/README.ja.md at main · type-challenges/type-challenges

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    type-challenges/README.ja.md at main · type-challenges/type-challenges
  • 今さら聞けないハッシュ化

    これは一般に「レインボーテーブル」と呼ばれる攻撃手法です。 こういった攻撃手法に対応すべく、ハッシュ化にはいくつかの工夫がされるのが一般的です。 ソルト Salt(ソルト)はハッシュ化される前の文字列(平文)に付随される任意の文字列です。 例えば、パスワードをハッシュ化するにあたり「ユーザID」をSaltとして使うことで 「同じabcdefgというパスワードを設定しているユーザがいても、出力されるハッシュ値が異なる」 という状態にすることができます。 こうすることで先のレインボーテーブル上にpasswordやadminといったよく使われるパスワードの平文とハッシュ値があったとしても、実際のパスワードの推測がしにくくなります。 ペッパー Saltはその性質上、ハッシュ値と対応して管理されていることが多いです。 上記の例でいうところの、「パスワードのハッシュ値」と「ユーザID」はおそらく同じテ

    今さら聞けないハッシュ化
    akatakun
    akatakun 2023/08/27
    PepperはHash化される平文に付随される固定の文字列。Saltが平文ごとに異なるのに対してPepperは全ての平文に対して共通の値になる。アプリケーションの設定ファイルなどに組み込まれることが多い
  • Bloom filter calculator

  • 何故パスワードをハッシュ化して保存するだけでは駄目なのか? - NRIネットコムBlog

    不正アクセスによるIDとパスワードの漏洩を受けて、MD5によるハッシュ化について話題になっていました。システムを作る上で、パスワードの管理や認証はどう設計すべきかを考えるために、少し整理をしてみます。もし事実誤認があれば、どしどしご指摘ください。 == 2023/8/21追記 == この記事は、ハッシュの保存の仕方一つとっても、沢山の対策方法が必要であるということをお伝えするために記載しています。そして、これから紹介する手法を取れば安全とお勧めしている訳ではないので、その点をご留意いただければと思います。攻撃手法に応じての対応策の変遷を知っていただくことで、セキュリティ対策は一度行えば安全というものではないことを知って頂くキッカケになれば幸いです。 == 追記終わり == パスワードのハッシュ化 まず最初にパスワードの保存方法です。何も加工しないで平文で保存するのは駄目というのは、だいぶ認

    何故パスワードをハッシュ化して保存するだけでは駄目なのか? - NRIネットコムBlog
    akatakun
    akatakun 2023/08/21
    MD5やSHA-1は、既に非推奨となっています, パスワード毎にソルトを用意する, ペッパー(シークレットソルト), ストレッチング
  • React.memo / useCallback / useMemo の使い方、使い所を理解してパフォーマンス最適化をする - Qiita

    React.memo / useCallback / useMemo の使い方、使い所を理解してパフォーマンス最適化をするJavaScriptReactreact-hooks はじめに React(v16.12.0)のReact.memo、useCallback、useMemoの基的な使い方、使い所に関しての備忘録です。 「React でのパフォーマンス最適化の手段を知りたい」 「なぜReact.memo、useCallback、useMemoを利用するのかわからない」 といった人達向けに書いた記事です。 デモは CodeSandbox 上に置いてあります。編集して動作を確認してみると理解が深まると思います。 記事で用いている用語 メモ化 計算結果 メモ化 計算結果を保持し、それを再利用する手法のこと。 キャッシュのようなものだとイメージすれば良いと思う。 そのため、以下の言葉の意味は

    React.memo / useCallback / useMemo の使い方、使い所を理解してパフォーマンス最適化をする - Qiita
    akatakun
    akatakun 2023/08/07
    通常親コンポーネントがre-renderされる・local stateが変化するとre-renderされる。メモ化すると前者はpropsが変化しない限り防げる
  • そうです。わたしがReactをシンプルにするSWRです。

    この記事について SWR について色々と学んだので、その知見をここで共有したいと思います 💪 ※ 基的に以下の公式サイトの情報を参考にしています 📖 そのため、この記事で出すサンプルコードなどは主に上記の公式サイトから引用させてもらっています。予めご了承ください 🙏 SWR とは何か? SWR は、Next.js を作っているVercel 社が開発しているデータフェッチのための React Hooks ライブラリです。"SWR"と言う名前は、 stale-while-revalidate の頭文字をとって名付けられています。そのため、SWR はstale-while-revalidateに基づいた処理と設計になっています。 stale-while-revalidateについて解説したい所ですが、解説するとすごく長くなってしまうため、ここでは「 キャッシュをなるべく最新に保つ機能 」

    そうです。わたしがReactをシンプルにするSWRです。
    akatakun
    akatakun 2023/07/31
    useSWRが返すdata, error ,isValidatingはそれぞれに変化がある度にCompはRenderingされるため、必要なものだけ展開する
  • preload、eager_load、includesの挙動を理解して使い分ける - stmn tech blog

    目次 はじめに 使用する関連付け preload、eager_load、includesの挙動 includesはどのような場合にpreloadとeager_loadの挙動となるのか preload、eager_loadの使い分け さいごに はじめに こんにちは、株式会社スタメンでエンジニアをしているワカゾノです! 4月からサーバーサイドエンジニアとして、弊社プロダクトTUNAGの開発を行っております。 先日、弊社CTOの松谷とペアプロを行いました。 パフォーマンス改善のタスクを行いましたが、タスクを通してN + 1問題に複数回直面しました。 Active Recordにおいて、N + 1問題を解消する方法として、関連テーブルのデータを事前に読み込んでおき、キャシュしておくという方法を取ると思いますが、Railsではその方法としてpreload、eager_load、includesメソッ

    preload、eager_load、includesの挙動を理解して使い分ける - stmn tech blog
    akatakun
    akatakun 2023/07/29
    preload: 関連tableを別queryで取得・cacheする・別queryなためwhere不可・joinしない, eager_load: left joinnする・cacheする, include: whereの有無でpreloadかeager_load, eager_loadは必ずleft joinするため、has_manyや関連tableが多いと重い
  • Reactの状態管理ライブラリ「Recoil」について - Qiita

    Reactの状態管理ライブラリとして何を使っていますか。巷には状態管理ライブラリが溢れており、選択に悩むことが多いと思います。ここではその選択肢の一つであるRecoilに重きを置いてReactにおける状態管理について解説します。Recoilについてだけ知りたい場合はrecoilについてから読んでください。 この記事ではクラスコンポーネントは利用せず関数コンポーネントを扱う前提で書きます。 Reactの原理と思想 Reactは ユーザインターフェース構築のための JavaScript ライブラリ https://ja.reactjs.org/ であり、以下の3つの理念が掲げられています。 宣言的な View コンポーネントベース 一度学習すれば、どこでも使える Reactは理念を大事にしているライブラリですので、これらは頭に置いておきたいです。Reactはバージョンアップによる破壊的変更は比

    Reactの状態管理ライブラリ「Recoil」について - Qiita
    akatakun
    akatakun 2023/07/28
    useContextはstateを細かく分けるとProviderがたくさんネストする。Providerの位置が原因でバグが起きたり、利用側からは上位にProviderが存在するのか確かめようがないのがネック
  • Reactの状態管理ライブラリ「Recoil」について - Qiita

    Reactの状態管理ライブラリとして何を使っていますか。巷には状態管理ライブラリが溢れており、選択に悩むことが多いと思います。ここではその選択肢の一つであるRecoilに重きを置いてReactにおける状態管理について解説します。Recoilについてだけ知りたい場合はrecoilについてから読んでください。 この記事ではクラスコンポーネントは利用せず関数コンポーネントを扱う前提で書きます。 Reactの原理と思想 Reactは ユーザインターフェース構築のための JavaScript ライブラリ https://ja.reactjs.org/ であり、以下の3つの理念が掲げられています。 宣言的な View コンポーネントベース 一度学習すれば、どこでも使える Reactは理念を大事にしているライブラリですので、これらは頭に置いておきたいです。Reactはバージョンアップによる破壊的変更は比

    Reactの状態管理ライブラリ「Recoil」について - Qiita
    akatakun
    akatakun 2023/07/28
    useContextはstateを細かく分けるとProviderがたくさんネストする。Providerの位置が原因でバグが起きたり、利用側からは上位にProviderが存在するのか確かめようがないのがネック