タグ

object*に関するsh19910711のブックマーク (264)

  • オブジェクト指向でなぜつくるのか 第3版 を読んだ

    sh19910711
    sh19910711 2025/02/26
    2021 / "オブジェクト指向を人類が得るまでの歴史など / 初版が発売されたのが2004年で、オブジェクト指向に対する期待が文面から伝わってきた / 著者のOOPについての熱や、この時代のOOPに対する期待"
  • PCI DSSの観点から見た セキュアなJavaアプリケーション開発

    sh19910711
    sh19910711 2024/06/20
    "アプリケーション開発に密接に関わるのは6章 / 適切なコードレビュー: 一度に少量のコードしかレビューしないというアドバイス / 脆弱性管理: 自分の作っているソフトウェアがそもそも何に依存しているかを把握する"
  • Nimで知る「オブジェクト指向をする/しない」ということ

    Nim は、「もしアラン・ケイがオブジェクト指向と言わなかったら」という歴史の if を感じさせてくれる言語だと思った話をします。 私自身は Nim 初心者です。細部の「こいつ慣れてないな」感はご容赦ください。この記事は、この言語については初心者だけれど、プログラミング言語とパラダイムを考えるうえでとても価値があると思った気付きがあったのを、図々しくも記事にしました。複数のプログラミング言語を歴史的な観点で評価するうえで、Nim を通して 70 年代以前の言語と 80 年代以後の言語、具体的には、C with classesC++ の境界線を見つめ直すことができるんじゃないかと思います。 ズバリ言うと、Nim はアラン・ケイのオブジェクト指向が通じない言語です。 Nim の言語標準には class キーワードがありません(マクロを作れば語句の拡張は可能ですがオプションです)。が、そん

    Nimで知る「オブジェクト指向をする/しない」ということ
    sh19910711
    sh19910711 2024/06/20
    "記法的な特徴をオブジェクト指向だと言うのなら、Nim は、データと振る舞いの組み合わせを、C ライクにも Java ライクにも記述することができ / オブジェクトから共通した形状の端子を実際に引き出してくるイメージ" 2023
  • Racketで抽象データ型を作る - Qiita

    Racketで抽象データ型(実装を捨象して、コンストラクタとデータを操作する関数だけを意識して使えるデータ型)を定義するのどうやればいいんだろう、となり、とりあえずスタックを書いてみた。 structを使うやり方と、classを使うやり方、両方試してみる。 例題 pop! push!が可能なスタックを作る。 リストとベクタによる二種類の実装を提供し、それぞれのコンストラクタも用意する。 structによる解法 define-genericsでインターフェースを定義 データの表現をstructとして定義し、#:methodsキーワードでインターフェースを実装 コンストラクタは関数として用意 # lang racket (require racket/generic) (require racket/vector) (define-generics stack (pop! stack) (pu

    Racketで抽象データ型を作る - Qiita
    sh19910711
    sh19910711 2024/06/18
    "Racketで抽象データ型を定義する / コンストラクタを関数として別に用意しなくてよいところはclassを使う記法のほうが綺麗な気がするが、記法としてはstructの方がずっとスッキリしている" 2020
  • JuliaのOOP事情の備忘録 - Qiita

    Julia来的にobject-orientedではない(資料1) object-orientedなコーディングをしたいときに使えるJulia特有のツール・概念がある Juliaはmultiple dispatch(wikipedia)というパラダイムに属する言語である(資料1,資料2) mutable struct という構文を使うと、一般的なOOP言語のクラスや構造体と似たような振る舞いを出来る。中に定義されるものは全てdataであり、関数も登録できるが、メソッドという概念は無いらしい。 単に連想配列を使いたいだけなら、「名前付きタプル」を使えばx = (name="Tom",age=21,job="engineer"); x.name #->Tomのように出来る。 典型的なOOP言語と似たような書き方をする方法もあるにはあり、色々な人が個別に研究している(資料3, 資料4)

    JuliaのOOP事情の備忘録 - Qiita
    sh19910711
    sh19910711 2024/06/17
    "Juliaは本来的にobject-orientedではない / object-orientedなコーディングをしたいときに使えるJulia特有のツール・概念がある / mutable struct という構文を使うと、一般的なOOP言語のクラスや構造体と似たような振る舞いを出来る" 2023
  • SpringbootでAPIを作成し仕様書をswaggerで自動作成する - Qiita

    目的 springbootでOpenAPI(swagger)を導入して簡単なアプリを作成する OpenAPIの使い方を学習すること APIの操作方法を学ぶこと CRUDを自作する 開発環境 ProductName: macOS ProductVersion: 11.3 IDE: eclipse_2021_03 REST(REpresentational State Transfer)とは? 設計方法のこと HTTPで定義されているメソッドの使用する(例:サーバ上にリソースを作成するにはPOST、リソースを取得するにはGET、リソースの状態を変更/更新するにはPUT、削除するにはDELETE) ステートレスであること(サーバーはクライアントのことを一切覚えない) 処理結果をHTTPステータスコードで返す 様々な設計原則の集合 RESTful API(REST API)とは? RESTの設計原

    SpringbootでAPIを作成し仕様書をswaggerで自動作成する - Qiita
    sh19910711
    sh19910711 2024/06/17
    "Swagger Codegen: スタブやSDKを生成することで、より高速なAPIをより早く構築 / Swagger Inspection: あらゆるAPIのOpenAPIドキュメントを自動生成してテストすることができるツール" 2021
  • graphql-java を使うときはクエリのサイズ制限に注意しよう - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    graphql-java を使うときはクエリのサイズ制限に注意しよう - Qiita
    sh19910711
    sh19910711 2024/06/16
    "計算リソースを過剰に消費させるような DoS 攻撃が成立し得るということで、デフォルトで制限が入っている / variables や fragment を使って GraphQL クエリをコンパクトにする + クライアントに「うまいことやってもらう」"
  • その単体テストは 振る舞い を検証できていますか? - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 記事は単体テストにおける偽陰性に焦点をあてています。偽陽性は別記事にします。 目次 振る舞いを検証できていない場合ただの負債になりかねない そもそも単体テストの目的って? 単体テストで検証したいものって? 振る舞い と 内部実装(実装の詳細) 観察可能な振る舞い とは 内部実装(実装の詳細) とは 注意:振る舞いと内部実装は視点によって変化する 検証したいものは外部から観察可能な1単位の振る舞い 現実世界で 振る舞い と 内部実装 を考える テストケースに内部実装が漏れ出ている例 このテストケースの問題点 テストケースで内部

    その単体テストは 振る舞い を検証できていますか? - Qiita
    sh19910711
    sh19910711 2024/06/16
    "コードは書いた時点で負債になる + 価値を生まないテストケースの作成は、本当に負債を積んでいるだけ / 単体テストを用意することで、コードの変更によるバグを検出するセーフティネットがプロジェクトに備わる"
  • Sorbetを使ってRubyでAbstract Classを使う - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Sorbetを使ってRubyでAbstract Classを使う - Qiita
    sh19910711
    sh19910711 2024/06/16
    "Abstract Class: インスタンスを作成しようとすると、型エラーを発生 / 継承やinclude, extendしたclass等で greet methodを定義しなかった場合、これも気づくことができます / SteepやSorbetを使うことでプログラムの実行前に気づく" 2023
  • GraalVM を使って WebAssembly を実行してみる - Qiita

    Zenn にも書籍として公開しています. 読みやすい方で読み進めていただけたらと思います. Zenn の方が最新版です. この記事の目的 GraalVM ずっと触ってみたかったんですが,WebAsssembly 周りの実装が増えてきていることで万を持して動かしてみることにしました! こちらの記事では,公式ドキュメントに従って GraalVM を動かしてみた結果と実装例,コメント等を残します. GraalVM とは GraalVM is a high-performance JDK distribution that compiles your Java applications ahead of time into standalone binaries. These binaries start instantly, provide peak performance with no wa

    GraalVM を使って WebAssembly を実行してみる - Qiita
    sh19910711
    sh19910711 2024/06/15
    "GraalVM 関連の GitHub は oracle (Core,各言語に関する統合機能等) と graalvm (ツール,フレームワーク等) に分散 / GraalWasm は GraalVM における WebAssembly インタプリタ・実行環境を提供"
  • R言語の最新のオブジェクト指向システムS7の紹介 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに こんにちは、事業会社で働いているデータサイエンティストです。 普段の業務ではR(とSQL)を使っていて、Rの最先端も確認していますので、今回の記事では最近CRANでリリースされた新しいオブジェクト指向システムS7について色々話そうと思います。 公式サイトはこちらです: 注意事項 公式サイトでも強調されていますが、S7はまだかなり早期の試みであって、パッケージとしては安定していません。なので、読者が記事を数ヶ月後に確認する時、すでに一部の機能に重大な変更が入ってコードが実行できない可能性があります。 また、まだテスト段階のパッ

    R言語の最新のオブジェクト指向システムS7の紹介 - Qiita
    sh19910711
    sh19910711 2024/06/15
    "R言語はもともとS3とS4という、クラスはデータを持ち、メソッドは総称関数が持つオブジェクト指向システムと ~ クラスが同時にデータとメソッドを持つR6システムがあります / S3とS4の「S」はR言語の前身のS言語が由来"
  • Python使いの皆さん、Rの自由すぎて怖いクラス作成方法をご覧ください - Qiita

    はじめに こんにちは、日のディップ株式会社 Advent Calendar 2023の記事です。 普段はデータサイエンティストの仕事をしていまして、主にRとSQLなどを利用しています。 今回の記事では、エンジニア向けに、Rの中で複数存在しているオブジェクト指向プログラミング(OOP)システムの中で、一番幅広く利用されて、歴史が古く、かつ単純なS3について実践的に説明します。 データ分析の話は一切出てきませんのでご安心ください。 前提 詳細はこの記事を読んでいただきたいですが、 Rには複数のOOPシステムがあります。中でもS3、S4、R6が有名です。S7はまだテスト段階で、今後S3とS4の正式な後継システムになる予定です。 まず、S3は確かに自由すぎて怖いです。恐ろしいことはやり放題です。ただ、S3はかなり歴史があるため、変な挙動とか、S3でやるべきではないことは大体整理されて、ググったり

    Python使いの皆さん、Rの自由すぎて怖いクラス作成方法をご覧ください - Qiita
    sh19910711
    sh19910711 2024/06/15
    "Rには複数のOOPシステムがあり + 中でもS3、S4、R6が有名です / S7はまだテスト段階で、今後S3とS4の正式な後継システムになる予定 / S3はかなり歴史があるため、変な挙動とか、S3でやるべきではないことは大体整理され" 2023
  • 何故Elasticsearchに32GB以上メモリ割り振るのはNGなのか - 動かざることバグの如し

    その理由を探るべく、我々はアマゾンの奥地へと向かった。 環境 少なくともElasticsearch 2以上はこの記事該当 概要 古事記にも書かれていたんじゃないかってレベルで、「Elasticsearchには32GB以上のメモリを割り当てるべきではない」とよく言われる。ESのオプション設定記事とか見てるとよく書かれている。 が、なぜ32GBなのか、Elasticsearchのヒープサイズに32GB以上を設定するとどうなってしまうのか。 そもそも当なのか 2020年11月15日現在の最新は7系だが、公式ドキュメントを確認してみる。 Important Elasticsearch configuration | Elasticsearch Reference [7.x] | Elastic Set Xmx and Xms to no more than the threshold that

    何故Elasticsearchに32GB以上メモリ割り振るのはNGなのか - 動かざることバグの如し
    sh19910711
    sh19910711 2024/04/25
    "「Elasticsearchには32GB以上のメモリを割り当てるべきではない」とよく言われる / その理由を探るべく、我々はアマゾンの奥地へと向かった / Javaには 圧縮オブジェクトポインター機能 + ヒープサイズが32GB未満が条件" 2020
  • JUnitで学ぶTest smells撃退法 / How to resolve Test smells using JUnit5

    スクラムフェス新潟2023で発表した際に使用した資料です! https://confengine.com/conferences/scrum-fest-niigata-2023/proposal/18389/junittest-smells

    JUnitで学ぶTest smells撃退法 / How to resolve Test smells using JUnit5
    sh19910711
    sh19910711 2024/04/20
    "Test Smells: ”Refactoring Test Code”(論文)が初手 + 「xUnit Test Patterns」で体系的に整理 / Test Smellsが埋め込まれる背景の一つには最新版のTesting Frameworkを使用していないことが挙げられ" 2023
  • [WASM] CheerpJ 3.0を使ってブラウザでJavaアプリを動かす [アプレット] | DevelopersIO

    Introduction つい先日、CheerpjJ 3.0というブラウザでJavaアプリを実行可能にする コンパイラ/ランタイムがリリースされました。 これを使えば古のアプレットやSwingで作ったJavaアプリケーションが 最新ブラウザでpluginなしで動きます。 また、ライブラリ用のjarファイルもそのまま動かすことができるので、 稿ではJavaライブラリをブラウザ上で使ってみます。 CheerpjJ 3.0? こことかで紹介されてますが、CheerpjJ 3.0について簡単に解説します。 CheerpJ 3.0は、Leaning Technologiesによって開発された、 ブラウザで動作するWASMベースのJavaランタイムです。 JavaバイトコードをJavascriptにJIT compileして実行できます。 何かを追加でインストールしたりする必要はありません。 現在は

    [WASM] CheerpJ 3.0を使ってブラウザでJavaアプリを動かす [アプレット] | DevelopersIO
    sh19910711
    sh19910711 2024/02/09
    便利そう👀 / "CheerpjJ 3.0: ブラウザで動作するWASMベースのJavaランタイム / 昔のJavaコードがそのままブラウザで動く / Java8が動くので昔つくったアプレットも動く / ライブラリ用のjarファイルもそのまま動かすことができる"
  • 「ニュアンス」と「エンジニアの心得」という新卒研修のお仕事 - jfluteの日記

    昨年、2017年に、とっても意外で、とっても嬉しかったことと言えば、jfluteとしては、こちらですね。 「”価値あるサービスを生み出すエンジニア”になるために」新卒エンジニア研修を全公開! | REACH ONE ビズリーチのイマとこれから 新卒が成長して新卒研修を 入ってくる新卒のスキルの前提や、会社としての状況の変化から、新卒研修自体の形が変わってきて、講義形式から実践形式に変わってきました。 というか、もともとそういうのもやりたいね、でもフォローできる体制がなかなか整わない、というところでしたが... 新卒研修を受けた新卒が成長して、自主的に新卒研修の運用をしていく これが年々しっかりと積み重ねられて、jfluteも驚くくらい自己組織化されていました。(素晴らしい...) ということで、「そろそろ俺もあまり出番ないかな」と感慨と寂しさの狭間にいたのですが... 「jfluteさんの

    「ニュアンス」と「エンジニアの心得」という新卒研修のお仕事 - jfluteの日記
    sh19910711
    sh19910711 2023/03/20
    2018 / "ソースコードを読む意識が付くような説明 / 何かと「ctrl+クリック」して奥のコードを読んで「だからこうなっているんだよ」的な感じ / JavaのAPIだろうがライブラリだろうが、ちょこっとコードを覗いて確認をする"
  • Javaのパッケージ名の命名には2019年でも所持ドメインの逆順を使うべきなのか調べた - Qiita

    発端 Java6までは言語仕様の中に命名規約の章があったけどJava7からはなくなった。あとパッケージ名もドメイン名逆順にしろというのが、ローカルでの利用を意図してるなら単一の識別子だけでいいということになった。そのころからlombokみたいにプロダクト名だけのパッケージ名を見るようになった気がする — きしだൠ (@kis) 2019年1月22日 今までjavaパッケージの命名はドメイン名の逆順というのが通例だと思っていたが、たしかにそれに沿わないライブラリも特にScala系のライブラリで見ることが増えてきた。 そもそもこの命名規則は確かに衝突を避けるためには合理的ではあるもののコード中の記述量が増えるため後発の言語でもまったく真似されていない。 最近のJavaでより短いパッケージの命名が許容されるならとても嬉しいと思い、当にJavaのFQDN逆順命名規約は無視していいのか調べた。 調

    Javaのパッケージ名の命名には2019年でも所持ドメインの逆順を使うべきなのか調べた - Qiita
    sh19910711
    sh19910711 2023/03/07
    2019 / "javaパッケージの命名はドメイン名の逆順というのが通例だと思っていた / 衝突を避けるためには合理的ではあるもののコード中の記述量が増えるため後発の言語でもまったく真似されていない"
  • うるう秒補正バグでHBaseクラスタがダウンしたお話 / HBase cluster goes down by leap second bug of Linux kernel

    6月30日(土)から7月1日(日)にかけて行われたうるう秒補正により HBase クラスタが全滅したというお話。 7月1日の出来事 この日は日曜日だったが昼頃から Java のうるう秒バグで CPU 使用率が 100% になったという話題が海外からちょいちょい流れてきて...

    うるう秒補正バグでHBaseクラスタがダウンしたお話 / HBase cluster goes down by leap second bug of Linux kernel
    sh19910711
    sh19910711 2023/03/07
    2012 / "この日は日曜日だったが昼頃からJavaのうるう秒バグでCPU使用率が100%になったという話題が海外からちょいちょい流れてきていた / 夜中にMacBookの前に座りSkypeを見たらHBaseクラスタがダウンしていると騒ぎに"
  • 「リアクティブ・バックエンドにはScala」、または、プログラミング言語はターゲットとする新プラットフォームの普及とともに普及するものだ、という話 - たなかこういちの開発ノート

    2015年現在、関数型言語が勃興しつつあります。エンタープライズ分野で関数型言語が次世代のプログラミング言語マーケットの覇権を握ることとなるのだとしたら、いつどのように握るのか、それはどの関数型言語なのか、その動向が大いに気になるところです。 ・ 関数型言語の行く末を見定めるにおいて、過去のプログラミング言語興隆の歴史はどうだったのか、エンタープライズにおける主たるプラットフォーム・アーキテクチャーの変遷に絡めつつ振り返ってみます。 今から40〜50年程前のメインフレームの時代、そのメインフレームをターゲットとしたプログラミング言語、COBOLが覇権を握っていました。 時代を下って20数年前程になるとWindowsを始めとするGUIそしてクライアント/サーバー・システム開発用として、次にはC++が覇権を握ることとなります。そしてJavaが登場しました。Javaは当初Microsoft社のW

    「リアクティブ・バックエンドにはScala」、または、プログラミング言語はターゲットとする新プラットフォームの普及とともに普及するものだ、という話 - たなかこういちの開発ノート
    sh19910711
    sh19910711 2023/03/06
    2015 / "エンタープライズ分野では、新しいプログラミング言語の普及は常に新しいプラットフォーム・アーキテクチャーの普及に伴う、という見方ができる"
  • 利き手のようにJava使うのやめたいなって

    sh19910711
    sh19910711 2023/02/26
    2017 / "もしかしたらPythonの方が良いかもしれないし、JavaScriptの方が良いかもしれない / それでも案外Javaで出来てしまったりするからタチが悪いというか。極端な話Semicolonless Javaみたいなことになる"