並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 308件

新着順 人気順

object*の検索結果1 - 40 件 / 308件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

object*に関するエントリは308件あります。 プログラミングprogrammingTypeScript などが関連タグです。 人気エントリには 『Value Objectについて整理しよう - Software Transactional Memo』などがあります。
  • Value Objectについて整理しよう - Software Transactional Memo

    Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a

      Value Objectについて整理しよう - Software Transactional Memo
    • テストの説明に安易に「正しく」とか書かない - Object.create(null)

      みなさんテストは書いていますよね. 書いていなければふりだしに戻る. 例えば関数 add に対して, 以下のようなテストコードがあるとします. describe("add", () => { it("正しく計算できる", () => { expect(add(1, 2)).toBe(3); }); }); よさそうですね? もしよくないと思うのであればここから下は読まなくても大丈夫なくらい理解している方だと思います. 続いて関数名を変えただけのこちらをどうぞ. describe("sub", () => { it("正しく計算できる", () => { expect(sub(1, 2)).toBe(3); }); }); なんだか明らかに間違っている気がします. もしこのテストが通過してしまったとき我々はどうすればよいのでしょうか. 考えられるパターンは 2 つあります. 実装もテストも正

        テストの説明に安易に「正しく」とか書かない - Object.create(null)
      • オブジェクト指向は必要なのか / Is object-oriented needed?

        2024/3/24に開催されたObject-Oriented Conferenceでの登壇資料です。 https://ooc.dev/2024/

          オブジェクト指向は必要なのか / Is object-oriented needed?
        • 値オブジェクト(Value Object)は3種類ある - パンダのプログラミングブログ

          Value Object(値オブジェクト)は3種類あった Value Object(値オブジェクト) の意義と使い所がわからなかった。そこで調べてみたらなんと3種類あった。面白かったのでその調査過程を紹介する。 なお、現在では DDD の意味での Value Object がメインであること、またこれは自転車置き場の議論であり、DDD Quickly の Value Object の章を読む方が有意義であることを先に記しておく。 1. Data Transfer Object 1つ目は、Data Transfer Object(DTO)の意味だ。これは PoEAA に少しだけだけ出てくる。かつてのJava界隈の一部では(?)DTOのことを Value Object と呼んでいた。だが、現代では Value Object と DTO は別物として定着している。PoEAA は2000年代前半に

            値オブジェクト(Value Object)は3種類ある - パンダのプログラミングブログ
          • Java 20, 21, オブジェクト指向からデータ指向へ / Java20, 21, Object Oriented to Data Oriented

            2023/5/10(水)に開催されたTechFeed Experts Night#18での登壇資料です。 https://techfeed.io/events/techfeed-experts-night-18

              Java 20, 21, オブジェクト指向からデータ指向へ / Java20, 21, Object Oriented to Data Oriented
            • TypeScript エラー処理パターン - Object.create(null)

              M 年前にも N 年後にも人類は同じ話をしている. まとめ エラーの発生方法は throw と return に大別できる throw には簡潔さ, return には明瞭さと型安全性といった特徴がある どちらの方法がより適しているかはプログラムの規模, エラーの種類, ハンドリングの方法などが判断の材料になる 実際にどちらの方法を使うかは上の判断材料と, フレームワークやプロジェクトのコーディング規約なども合わせて複合的に決めるのがよい エラー発生方法の分類 まず前提として, 関数から呼び出し元にエラーを伝える方法は以下の 2 つに大別できます. 逆にこの記事ではこれ以上の具体的な方法についての議論はしません. throw エラーを throw して呼び出し元に伝える方法です. 例えば以下のようなものが当てはまります. throw new Error("...") Promise.rej

                TypeScript エラー処理パターン - Object.create(null)
              • TypeScript 型レベル関数型プログラミング in 2023 - Object.create(null)

                ちょっと前に話題になった hotscript の技法の紹介やら, ラムダ計算を TypeScript の型にコンパイルする話やらなんやら. 通常の型レベル関数 TypeScript の型エイリアスはパラメータを取れるので, これは型レベルの関数であるとみなせます. type IsNumber<X> = X extends number ? true : false; type A = IsNumber<42>; // = true 一方でこのようにして定義された関数は第一級ではない, つまり関数そのものを他の関数の引数として渡したりすることができません. type FilterUnion<F, X> = X extends unknown ? (F<X> extends true ? X : never) : never; // ~~~~ // ^ Error: Type 'F' is n

                  TypeScript 型レベル関数型プログラミング in 2023 - Object.create(null)
                • 中止ボタンがしいたけに見えて困る - Object.create(null)

                  令和最新版. Vivaldi でアイコンがカスタマイズできるようになっている テーマ設定画面を眺めていたら, Vivaldi 6.0 からツールバーのアイコンがカスタマイズできるようになっているのに気がつきました. 流石 Vivaldi です (?) vivaldi.com しいたけ復活 こうなっては中止ボタンをしいたけにするしかありません. しいたけアイコンは以下で用意されていたものを拝借します*1. バッテン髪飾り派の人も安心. momizine.hatenadiary.org というわけで完成です. フラットデザイン全盛の時代にスキュモーフィックしいたけが悪目立ちしていて最悪ですね. *1:画像の究極の出典ではないかもしれないので, そのあたりの扱いは自己責任で

                    中止ボタンがしいたけに見えて困る - Object.create(null)
                  • 共通化すれば良いとは限らない - Object.create(null)

                    ここのところ偶然なのか「共通化」という言葉を多く聞いているのですが, その言葉を聞くたびに身構えていることに気がついたので, この気持ちの出どころを共有しておきます. なぜ身構えているかというと, 共通化が必ずしもコードを良い状態にするとは限らないにも関わらず, それ自体が目的になってしまっている (ように見える) ことが多いからです. この手のリファクタリングの目的はあくまでコードの改善のはずで, そのことを忘れて共通化するだけで満足してしまうと, 良くてリファクタリングの効果が半減, 悪ければ逆効果になってしまいます. 個人的にコードを共通化する上で注意してほしいと思っているのは以下の二つです. コードを共通化すべきでない場合もある 共通化されたコードは一般的な原則にしたがって設計されなければならない 似たようなことは歴史の中で何度も繰り返し言われていることだろうと思いますが, 改めて

                      共通化すれば良いとは限らない - Object.create(null)
                    • JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった

                      ASTをみてみよう この不思議な現象を調査するために、AST(Abstract Syntax Tree: 抽象構文木)の状態を見てみることにしました。ASTはソースコードを構文解析した結果をツリー構造にしたもので、AST Explorerを使うと簡単に見ることができます。 ({}) + "" のAST ({}) + "" のASTをみると、ひとつの ExpressionStatement となっているのがわかります。ExpressionStatement の leftは ObjectExpression 、 operator は + 、rightは Literal となっていて、たしかに Object と String の足し算になっています。これなら確かに"[object Object]" が返ってくるでしょう。 {} + ""のAST しかし、{} + "" のASTをみると、Bloc

                        JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった
                      • プログラムの複雑さ・表面積・グラフの構造 - Object.create(null)

                        特に何かしらの出典はありません. プログラムの複雑さに対する大局的で直感的な指標として, 表面積とグラフの構造というのを個人的に意識しているという話. いわゆる code smell をどう嗅ぎつけているか. 表面積 プログラムは最も単純には 1 つの入力チャンネル (引数) と 1 つの出力チャンネル (戻り値) でモデル化できます. 要するに関数ということですが, 関数型プログラミングに限らず大抵は似たような考え方ができます. graph LR yield[ ] -- 引数 --> program[プログラム] -- 戻り値 --> return[ ] 一方で現実世界で価値のあるプログラムとなるためには引数と戻り値だけでは不十分で, 実際にはその他の入出力チャンネルも必要になってきます. 例えば, 可変な変数の読み書き 環境変数の読み取り ユーザー入力の読み取り 画面への出力 ファイル

                          プログラムの複雑さ・表面積・グラフの構造 - Object.create(null)
                        • 写真パシャ→3Dデータ完成。3DキャプチャーAPI「Object Capture」 #WWDC21

                          写真パシャ→3Dデータ完成。3DキャプチャーAPI「Object Capture」 #WWDC212021.06.08 04:2018,205 ヤマダユウス型 3Dづくり、どんどん身近になっていくね。 新たなmacOS Montereyにて実装された機能のひとつが「Object Capture」。デベロッパー向けの3DキャプチャーAPIで、3Dオブジェクトが簡単に作れますよーというものです。 やり方は、3D化したいアイテムをiPhoneやiPadで撮影するだけ。アイテムの周辺をぐるりと撮影することで、一連の2Dイメージをフォトグラメトリー(二次元の写真から3Dモデルを作成する技術)で3D化します。LiDARには触れてなかったから、LiDAR非搭載のデバイスでも使えるのかな? 作成したデータはCinema 4Dに取り込んだり、ARオブジェクトにすることもできるみたい。デベロッパー向けにAPI

                            写真パシャ→3Dデータ完成。3DキャプチャーAPI「Object Capture」 #WWDC21
                          • TypeScript の DI 手法あれこれ - Object.create(null)

                            TypeScript で DI (依存性注入) するためのライブラリを作ったんですが, それを紹介する前に既存手法をまとめておいた方が説明が楽だなと思ったのでまとめておきます. そもそも DI の目的とは, みたいなところは詳しく説明しないのであしからず. 手法の比較 DI なし Service Locator エフェクト Constructor Injection Setter Injection デコレータ typed-inject 次回予告 手法の比較 DI なし まずは DI を使わない場合を見ていきましょう. ここでは例として, 以下のような時刻と乱数を必要とするコンポーネント MyService が, 時刻と乱数を扱う機能をそれぞれ提供するコンポーネント Clock と Random に依存するような場合を考えます. type Clock = { getTime: () =>

                              TypeScript の DI 手法あれこれ - Object.create(null)
                            • k6 + Echo + go-sqlite3 + Litestream + Linode Object Storage 簡易負荷試験メモ

                              注意 とっても雑な検証なので参考などにはしないでください。ちょっとした興味で自分用に調べてるだけです。 結論 Echo を利用した秒 1 万リクエストを超えないウェブサービスで、かつ SQLite の機能で要件がみたせるのであれば、SQLite + Litestream 十分と判断出来る結果だった。 利用技術 Load testing for engineering teams | Grafana k6 Grafana に買収された Go で書かれた負荷試験ツール JS でシナリオが書ける Litestream - Streaming SQLite Replication SQLite リアルタイムバックアップツール mattn/go-sqlite3: sqlite3 driver for go using database/sql Litestream も使ってる 安心と信頼の matt

                                k6 + Echo + go-sqlite3 + Litestream + Linode Object Storage 簡易負荷試験メモ
                              • 内田樹 on Twitter: "「飛しょう体」ってflying object のことですよね。それがなんだかわからないということは、unidentified ということですから、これからは「北朝鮮がUFOを発射」に表現を統一しませんか。 https://t.co/2PkCwbBvu2"

                                「飛しょう体」ってflying object のことですよね。それがなんだかわからないということは、unidentified ということですから、これからは「北朝鮮がUFOを発射」に表現を統一しませんか。 https://t.co/2PkCwbBvu2

                                  内田樹 on Twitter: "「飛しょう体」ってflying object のことですよね。それがなんだかわからないということは、unidentified ということですから、これからは「北朝鮮がUFOを発射」に表現を統一しませんか。 https://t.co/2PkCwbBvu2"
                                • TypeScript をより安全に使うために まとめ - Object.create(null)

                                  こういう一連の記事を書きました. susisu.hatenablog.com susisu.hatenablog.com susisu.hatenablog.com TypeScript の型安全性 TypeScript の型システムは健全ではありません. TypeScript Design Goals にある通り, そもそも言語設計の段階で完璧な型安全性は目標になっておらず, 既存の JavaScript の言語仕様や資産を活用しやすいように, 生産性や利便性とのバランスをとることを目標としています. では TypeScript の型システムではどの程度の安全性が保証されるのでしょうか? 型安全性を第一の目標に置いていないとはいえ, TypeScript がまったく見当違いな型検査をしているというわけではありません. したがって, ある制限された範囲内であれば, 安全性を担保するのに十分

                                    TypeScript をより安全に使うために まとめ - Object.create(null)
                                  • TypeScript 型レベルプログラミング フリースタイルガイド - Object.create(null)

                                    TypeScript の型レベルプログラミングのための真面目なスタイルガイドではありません. 型なしラムダ計算で喜ぶような人間が使うための諸刃の剣です. この記事の内容は TypeScript の 2022 年 1 月時点での最新版である 4.5.4 に基づいています. 将来のバージョンでの妥当性は保証しません. 「型〜」「〜型」という用語の「型」はしばしば省略します. 値レベルの話題は一切登場しません. 以前作った型レベル Brainfuck インタプリタはこのスタイルに則っているので参考にどうぞ. いつまでこのネタを引きずるんですか? パラメータに対して制約を付与しない 型定義のパラメータに対して extends を使って制約を付与すると, そのパラメータに与えられる引数を制約を満たすもののみに限定することができます. 例として, 以下の Append には string の部分型のみ

                                      TypeScript 型レベルプログラミング フリースタイルガイド - Object.create(null)
                                    • オブジェクト指向で考える アプリケーションアーキテクチャ設計 / Object-Oriented Conference 2020

                                      [Object Oriented Conference](https://ooc.dev/)での登壇資料です。 [オブジェクト指向で考えるアプリケーションアーキテクチャ設計 by 弓山彬 | トーク | Object-Oriented Conference #ooc_2020 - fortee.jp](https://fortee.jp/object-oriented-conference-2020/proposal/12a38ba1-bfbd-4699-a4f8-061de24d0683)

                                        オブジェクト指向で考える アプリケーションアーキテクチャ設計 / Object-Oriented Conference 2020
                                      • #fukabori をきいて Value Object と Value Object パターンについて頭の中を整理 - Mitsuyuki.Shiiba

                                        連休の余韻も楽しんだので今日から散歩を再開した。ちょっと前までは「陽の光を浴びなきゃ!」と思って3時過ぎにウロウロしてたけど、これからはもうちょっと涼しい時間帯がいいなと思って、夕暮れ時に散歩しながら fukabori.fm を聴いてた。Value Object のお話。面白いなぁ 73. Value Object w/ kumagi | fukabori.fm kumagi さんの記事はこちら Value Objectについて整理しよう - Software Transactional Memo お絵描き PoEAA や DDD はだいぶ前に読んだことがあるけど、Value Object を雰囲気で捉えてるからちゃんと見直しておこうと思って、調べたりしながら絵を描いた。こういうことなのかな? (絵をかくほどでもなかった・・・ Value Object とは? kumagi さんも書いてる

                                          #fukabori をきいて Value Object と Value Object パターンについて頭の中を整理 - Mitsuyuki.Shiiba
                                        • TypeScript をより安全に使うために その 2: オブジェクトの具体的な形にアクセスするのを避ける - Object.create(null)

                                          前回はこちら. susisu.hatenablog.com 引き続き環境は以下を前提とします: TypeScript 4.4 (この記事を書いている 2021 年 11 月時点の最新版) strict: true 原則: オブジェクトの具体的な形にアクセスするのを避ける 具体例 in 演算子による型の絞り込み Object.keys の誤った使用 Object.values, Object.entries の使用 リテラルの先頭以外での object sperad 次回 原則: オブジェクトの具体的な形にアクセスするのを避ける ここで「オブジェクトの具体的な形にアクセスする」とは, 静的な型によらずに, 実行時にオブジェクトがどのようなプロパティを持っているかといった情報を取得することを指しています. ある種のリフレクションと呼んでも良いかもしれません. こういった操作には, JavaSc

                                            TypeScript をより安全に使うために その 2: オブジェクトの具体的な形にアクセスするのを避ける - Object.create(null)
                                          • TypeScript をより安全に使うために その 1: オブジェクトの mutable な操作を避ける - Object.create(null)

                                            ふだん TypeScript のコードレビュー時に参考に貼ったりしている内部ドキュメントがあるのですが, 内部では何かと人目につきにくいので, 内容を整えて公開していきます. TypeScript の型システムは安全ではありません. つまり型検査を通過したコードであっても, 実行時にエラーが発生する可能性があります. TypeScript の設計についてのドキュメントにおいても, non-goals の一つとして Apply a sound or "provably correct" type system. Instead, strike a balance between correctness and productivity. が挙げられており, 完全に安全なものを目指すのではなく, 安全性と利便性とのバランスをとるものとされています. かといって TypeScript を使うなら

                                              TypeScript をより安全に使うために その 1: オブジェクトの mutable な操作を避ける - Object.create(null)
                                            • TypeScript で実行時の入力を含む文字列を型で弾く - Object.create(null)

                                              TypeScript (4.7 時点) において, 文字列に付けられる型には以下の 3 つ (とそのユニオン型) があります. 文字列型 string 文字列リテラル型 ("foo" など) テンプレートリテラル型 (`data-${string}` など) これらのうち, 実行時の入力, 特に事前にパターンが想定されていないような任意の入力が含まれるような文字列に対しては, string や string を含むテンプレートリテラル型を付けることはできても, 文字列リテラル型を付けることはできません. 文字列リテラル型を付けるためには型検査時 (実行の前) に入力文字列の内容がわかっている必要があるので, まあそれはそうですね. このことを利用して, 実行時の入力を含む文字列を与えようとすると型検査に失敗するような関数を作ることができそうです. まずは与えられた型が文字列リテラル型, ま

                                                TypeScript で実行時の入力を含む文字列を型で弾く - Object.create(null)
                                              • COM(Component Object Model)は古い技術だが、いまだに現役 あらためて解説する (1/2)

                                                前回解説したプレビューハンドラなど(「エクスプローラーのプレビューウィンドウについて解説する」)、エクスプローラーの拡張機能は、COM(Component Object Model)を使って作られている。 COMは、すでにWindowsでは主流ではなく、後継として.NET Frameworkが登場している。しかし、COMは廃止されたわけではなく、いまだにWindowsのさまざまな場所で使われ続けている。というのも、Windows XPまでは、WindowsのOSの主要オブジェクト技術であり、Windows自身がCOMで構築されていたと言っていいほど利用されていたからである。 エクスプローラーや関連技術でいまだにCOMが使われているのは、その名残でもある。長らく続けてきた本連載だが、COMについては解説するタイミングを失っていた。ちょうどいい機会なので、今回はCOMを簡単に解説してみたい。

                                                  COM(Component Object Model)は古い技術だが、いまだに現役 あらためて解説する (1/2)
                                                • Value Object (値オブジェクト) でリファクタリングしたら結構良かった

                                                  ドメイン分析とモデル化ここで「モデル化」と呼ぶのは、実装者が理解しやすいように重要な側面に注目して、端的な形に抽象化する行為であると定義します。 また、実際に実務で行なっている自身のモデル化を行う時の書き振りを近しく再現(中身は変更)しているため、わかりづらいかもしれませんが、”実務ではこうやっている” というのを理解していただければ。 先の要件を整理すると、数という概念に金額とポイントという2つのドメインモデルが含まれる。 金額とポイントという異なる概念を計算して最終的に獲得ポイント数を導き出す必要がある。 存在する制約 金額が負の数になることはありえない。ポイントが負の数になることはありえない。金額は日本円のみを考慮し、外貨は存在しない。ポイントは文脈によって呼び名が変わるが、単位は変わらない。支払い金額合計以上にポイント利用数が設定されることはない。金額に小数点は存在しない。ポイント

                                                    Value Object (値オブジェクト) でリファクタリングしたら結構良かった
                                                  • オブジェクト指向プログラミング入門 -- Java object-oriented programming primer

                                                    Javaで学ぶ、オブジェクト指向プログラミングの基礎知識。型とカプセル化が腹落ちすると、びっくりするくらいオブジェクト指向プログラミングがわかようになる/できるようになるRead less

                                                      オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
                                                    • Amazon S3 Object Lambdaが提供開始、S3から取得するデータの処理が可能に

                                                      米Amazon Web Servicesは、Amazon Simple Storage Service(S3)から取得したデータをアプリケーションへ返す前に、独自のコードを追加して処理できる「Amazon S3 Object Lambda」の提供を、3月18日(現地時間)に開始した。 Amazon S3 Object Lambdaは、既存のアプリケーションと連携してAWS Lambda関数を使用し、Amazon S3から取得するデータを自動的に処理・変換する。Lambda関数は標準のS3 GET requestを使ってインラインで呼び出せるので、アプリケーションコードを変更する必要はない。 Amazon S3 Object Lambdaの使用によって、以下のようなユースケースの単純化が可能になる。 分析環境または非実稼働環境で個人を特定できる情報を編集 XMLからJSONへの変換など、デー

                                                        Amazon S3 Object Lambdaが提供開始、S3から取得するデータの処理が可能に
                                                      • デザインにオブジェクト指向を適用する / Apply Object-Oriented to your design

                                                        ゼロから理解するDependency Injection / Understanding Dependency Injection from the Ground Up

                                                          デザインにオブジェクト指向を適用する / Apply Object-Oriented to your design
                                                        • Git's database internals I: packed object store

                                                          EngineeringOpen SourceGit’s database internals I: packed object storeThis blog series will examine Git’s internals to help make your engineering system more efficient. Part I discusses how Git stores its data in packfiles using custom compression techniques. Developers collaborate using Git. It is the medium that allows us to share code, work independently on our own machines, and then finally com

                                                            Git's database internals I: packed object store
                                                          • S3 Object Lambda を使って処方箋プレビューに透かしを入れる | MEDLEY Developer Portal

                                                            2022-10-28S3 Object Lambda を使って処方箋プレビューに透かしを入れるこんにちは。医療プラットフォーム本部プロダクト開発室エンジニアの中畑です。主にオンライン診療・服薬指導アプリ CLINICS の開発を担当しています。 今回は CLINICS アプリ内で扱う処方箋プレビューに透かし(watermark)を入れた話を紹介したいと思います。なぜ実施したのか、実装方法、パフォーマンスチューニングの 3 本立てでお送りしたいと思います。 課題と解決方針まず、なぜ処方箋プレビューに透かしを入れることにしたのか。 CLINICS では診察後に患者が希望すると、かかりつけ薬局支援システム Pharms を導入している調剤薬局にてオンライン服薬指導を受けることができます。その際に医療機関から処方箋の画像ファイルや PDF をアップロードし、患者は CLINICS アプリを通じて、

                                                              S3 Object Lambda を使って処方箋プレビューに透かしを入れる | MEDLEY Developer Portal
                                                            • Introducing Amazon S3 Object Lambda – Use Your Code to Process Data as It Is Being Retrieved from S3 | Amazon Web Services

                                                              AWS News Blog Introducing Amazon S3 Object Lambda – Use Your Code to Process Data as It Is Being Retrieved from S3 March 15, 2023 – You can now use S3 Object Lambda with Amazon CloudFront to tailor content for end users. When you store data in Amazon Simple Storage Service (Amazon S3), you can easily share it for use by multiple applications. However, each application has its own requirements and

                                                                Introducing Amazon S3 Object Lambda – Use Your Code to Process Data as It Is Being Retrieved from S3 | Amazon Web Services
                                                              • TypeScript で型レベル Brainfuck - Object.create(null)

                                                                2024-04-15 追記: 内容をアップデートした記事を書きました. susisu.hatenablog.com TypeScript の型システムはチューリング完全ということが知られていますが, 同じくチューリング完全な言語である Brainfuck のインタプリタを実装することで, その計算能力を確認することができます. この記事のコードは TypeScript 3.8.3 で動作確認しています. ゴール 型レベルで Brainfuck のインタプリタを実装します. type Program = [ ",", ">", ",", "<", "[", ">", "[", ">", "+", ">", "+", "<", "<", "-", "]", ">", "[", "<", "+", ">", "-", "]", "<", "<", "-", "]", ">", ">", ">",

                                                                  TypeScript で型レベル Brainfuck - Object.create(null)
                                                                • JavascriptのObjectリテラルとJSON.parseについて - abcdefGets

                                                                  V8のJSON.parseについて 最近(ちょっと前か)話題のオブジェクトリテラルよりもJSON.parseのほうが早い件について。 その理由を内部実装の観点から書く。 また注意点を最後に書いた。 話題のブログは以下から https://v8.dev/blog/cost-of-javascript-2019 パースについて V8はjavascriptコードをパースするにあたって、Lazy Parseを行っている。 Lazy Parse javascriptはブラウザという特殊な環境で実行される言語であるため、パースにも少々工夫が必要になる。 基本的にV8はすべてのソースコードをパースしない。 一旦グローバルスコープにあるものだけをちゃんとパースして、それ以外はPreParserというパーサで関数だけをかき集める。 function foo() { } function bar() { fu

                                                                    JavascriptのObjectリテラルとJSON.parseについて - abcdefGets
                                                                  • Object.keys() が返す配列の順序における数値キーの昇順には上限がある - カミナシ エンジニアブログ

                                                                    はじめに こんにちは。昨年の10月にカミナシに入社したソフトウェアエンジニアの tokuse です。 気が付けば入社してから既に半年以上経っており、光陰矢の如しで驚愕しています! カミナシではフロントエンドを TypeScript で開発しています。そんな中、先日 Object.keys() の仕様に起因する不具合が発生し、その際に Object.keys() が返す配列の順序に関する仕様について詳しく知りました。当稿ではその仕様について説明します(ECMAScript 最新前提です)。 はじめに 問題となった処理 Object.keys() の仕様 まとめ 余談 おわりに 問題となった処理 まず、問題となった処理をサンプルコードで紹介します。次のコードは、オブジェクトの数値キーのうち最大値を取得しようとした処理です。 type UserId = number; type User = {

                                                                      Object.keys() が返す配列の順序における数値キーの昇順には上限がある - カミナシ エンジニアブログ
                                                                    • JavaScript Object の === による比較では中身は比較されないので JSON.stringify() して比較する - KAEDE Hack blog

                                                                      object の中身が比較で見られていないことを確認する === で同じ内容の object が true にならなかった object の比較をして、うまくいかなかった const dog = { name: 1, age: 5, } const dog2 = { name: 1, age: 5, } console.log(dog === dog2); これが 中身のプロパティは同じなのに false になる 同じ中身を持つ違う名前の object を === で比較できない。 同一参照のみ === で true になることを確認 www.deep-rain.com 同一参照、同じメモリ?同じものを参照している物の場合のみ === が効くようだ。 しかし、ハードリンクのように、全く同じものを参照しているかどうかを JS の === は判定しているわけではない。 const dog =

                                                                        JavaScript Object の === による比較では中身は比較されないので JSON.stringify() して比較する - KAEDE Hack blog
                                                                      • JavaScriptでObject.entries/fromEntriesでreduceの利用頻度を減らす

                                                                        entriesとは JavaScriptにはObject.entries() / Array.prototype.entries() など、イテレーションができるものにはentitiesというものが実装されている。 これは要素を[key, value] の配列として変換するものだ。 また、Object.fromEntriesというものがある。これは逆に[key,value]で構成された配列をObjectへ変換するものになる。 Array / Map / Setはprototype実装されているので、someArray.entries()などできるが、Objectはそういうものを持てないので、Object.fromEntries(obj)とする必要がある 詳しくはMDNを参照してほしい https://developer.mozilla.org/ja/docs/Web/JavaScript/

                                                                          JavaScriptでObject.entries/fromEntriesでreduceの利用頻度を減らす
                                                                        • イベントストーミングによるオブジェクトモデリング・オブジェクト指向プログラミングの適用・開発プロセスの変遷・アーキテクチャの変革 / Object modeling with Event Storming.

                                                                          Object Oriented Conference 2024 にてお話ししました 【アブストラクト】 本トークでは、イベントストーミングを活用したオブジェクトモデリングの実践が開発プロセスとアーキテクチャにどのような変革をもたらしたかについて詳しくお話しします。 「どのようなオブジェクトを実装するのか」 この単純な問いに私たち開発者は多くの悩みを抱えています。 イベントストーミングの結果として得られるモデルはこの問いに対する解答の示唆に富んでいます。 その有用性を認め、私たちは過去2年間、組織的にイベントストーミングに取り組んでまいりました。 もちろん、ただイベントストーミングを採用すれば、それですべて片付くといったものではありませんでした。 イベントストーミングの採用は開発プロセスを一変させました。 アーキテクチャの選定基準を変えました。 組織的に取り組むには多大な努力と適応が求められ

                                                                            イベントストーミングによるオブジェクトモデリング・オブジェクト指向プログラミングの適用・開発プロセスの変遷・アーキテクチャの変革 / Object modeling with Event Storming.
                                                                          • Brainfuck 実装で学ぶ TypeScript 型レベルプログラミング - Object.create(null)

                                                                            およそ 4 年前に「TypeScript で型レベル Brainfuck」という記事を書きました. susisu.hatenablog.com それから 4 年間の間に TypeScript も進化し, 型レベルプログラミングの技法にも大きな変化がありました. 特に顕著な影響があったものでは, TypeScript 4.0 のタプル型の改善 TypeScript 4.1 のテンプレートリテラル型や条件型での再帰 TypeScript 4.5 の条件型での末尾再帰の除去と, 再帰の上限の緩和 などがあります. こういった変化も踏まえた上で, いまから TypeScript の型レベルプログラミングに入門する人に向けて改めてまとめ直したものがこの記事です. 内容は記事執筆時点の最新版である TypeScript 5.4.5 で動作を確認しています. ぜひ Playground などを使って,

                                                                              Brainfuck 実装で学ぶ TypeScript 型レベルプログラミング - Object.create(null)
                                                                            • GitHub - skovy/cooky-cutter: 🍪 Object factories for testing in TypeScript

                                                                              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

                                                                                GitHub - skovy/cooky-cutter: 🍪 Object factories for testing in TypeScript
                                                                              • Object.assign({}, obj) と { ...obj } の違い - Qiita

                                                                                オブジェクトリテラル内のスプレッド構文は、ES2018で追加されたたいへん便利な構文です。特に、{ ...obj }という形のコードでオブジェクトをコピーするのはJavaScriptプログラミングでは極めて頻出です。 スプレッド構文が無かった時代はObject.assign({}, obj)として同様のことを達成していた方も多いと思われます。Object.assignはES2015から使用可能でした。 では、この2種類の方法は同じでしょうか。タイトルにもある通り、もちろん違います。今回は、この違いに触れている日本語資料がMDN日本語版で一瞬触れているくらいしか無かったので記事にまとめました。 結論 最初に結論を述べると、Object.prototypeが汚染されていた場合にのみ違いが発生します。特に、Object.prototypeにsetterを持つプロパティ名が存在し、そのプロパティ名

                                                                                  Object.assign({}, obj) と { ...obj } の違い - Qiita
                                                                                • TensorFlow 2 meets the Object Detection API

                                                                                  https://blog.tensorflow.org/2020/07/tensorflow-2-meets-object-detection-api.html https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKis9ECId8eIwn_p0SVMBt3a1vfvKOcOZXy6zK0fWoyzXnzQTguKc2CV__6oI1Pwg22NjWsErpDKqjwQdzjilvmqwWkXPj2ncglphh6mAhpoZ_QXQiDwxnwo-GjKEP0fEOb3uBlNlh9sc/s1600/tensorflow2objectdetection.png July 10, 2020 — Posted by Vivek Rathod and Jonathan Huang, Google Research At the

                                                                                    TensorFlow 2 meets the Object Detection API

                                                                                  新着記事