タグ

ブックマーク / qiita.com/suin (11)

  • TypeScript: 異なる2つの型システム「公称型」と「構造的部分型」 - Qiita

    稿では、異なる2つの型システム「公称型」と「構造的部分型」の差異について説明します。 型の互換性とは? まず型の互換性とは何でしょうか? TypeScriptでは、ある型に別の型を代入できるかどうかが「互換性」の判断基準になります。例えば、1はnumberに代入できるので、1はnumberに互換しています。一方、trueはnumberに代入できないので、trueはnumberとは互換していないことになります。 TypeScriptは、互換性の有無の判断基準(つまり、代入できるかどうかの基準)が、JavaPHPなどとは異なっています。どのように異なるのか、それぞれ見ていきましょう。 公称型 - 継承関係に着目するJava JavaPHPは、公称型(nominal typing)という型システムを採用しています。公称型では、型の互換性は、オブジェクト同士の継承関係(is-a関係)に着目し

    TypeScript: 異なる2つの型システム「公称型」と「構造的部分型」 - Qiita
    yojik
    yojik 2023/07/10
  • PostGraphile: クエリー名をシンプルにする方法 - Qiita

    PostGraphileで、GraphQLのクエリー名をシンプルにする方法です。次の図のようになります。 PostGraphileのクエリー名をシンプルにする方法 PostGraphileでクエリー名をシンプルにするには、@graphile-contrib/pg-simplify-inflectorプラグインを使います。 まず、このプラグインをインストールします:

    PostGraphile: クエリー名をシンプルにする方法 - Qiita
    yojik
    yojik 2022/11/18
  • はじめてのNetlify: git pushでサイトを公開する極小手順 - Qiita

    この投稿では、GitHubへのgit pushを引き金に、gitリポジトリ内の静的HTMLNetlifyにデプロイし、サイトを公開する方法を紹介します。 稿の手法は、Netlify入門者が分かるよう、下記のとおり極限まで単純化してます: 静的サイトジェネレーター不使用 「HTMLをgit pushしたら、Netlifyにデプロイできる」を体験することが稿の目的です。なので、現実のサイト構築で使うことになる静的サイトジェネレーターは使いません。現実的なデモではないですが、HTMLをデプロイできることが知れれば、静的サイトジェネレータで生成したHTMLもデプロイできることになるので、ここで学んだことは活きます。 作るのはHTML1ファイル & Netlify設定ファイル1つ 作るファイルはHTML1つと、Netlifyの設定ファイル1つだけです。HTMLは「Hello World」の1行

    はじめてのNetlify: git pushでサイトを公開する極小手順 - Qiita
    yojik
    yojik 2021/06/18
  • Fluentdのhttpアウトプットを調査してみた - Qiita

    この投稿では、Fluendのhttpアウトプットプラグインについて調査した結果についてお伝えします。 Fluentdのhttpアウトプットプラグインとは? Fluentdではアウトプットプラグインを設定することで、ログの送信先をファイルやElasticsearchなどさまざまなストレージに送信できます。httpアウトプットプラグインもその一種ですが、送信先のミドルウェアが決まっているものではなく、HTTPリクエストを受け取れるミドルウェアならどんなものに送信できる万能選手です。httpアウトプットを使うと、Webhook的なことができます。受け取る側のHTTPサーバーはどんな言語で実装しても構わないので、ログを受け取ったら任意の処理を行うことができます。 公式ドキュメント: https://docs.fluentd.org/output/http out_httpがビルトインになったのはv

    Fluentdのhttpアウトプットを調査してみた - Qiita
    yojik
    yojik 2021/03/25
  • awaitできるsetTimeoutを1行で書く方法 - Qiita

    await new Promise(resolve => setTimeout(resolve, 3000)) // 3秒待つ // ... 3秒後の処理 ... // よくある長めの実装 const sleep = () => new Promise(resolve => { setTimeout(() => { resolve() }, 3000) }) await sleep() // ステップ1: () => { resolve() } は resolve に短縮する const sleep = () => new Promise(resolve => { setTimeout(resolve, 3000) }) await sleep() // ステップ2: resolve => {} は resolve => に短縮する const sleep = () => new Prom

    awaitできるsetTimeoutを1行で書く方法 - Qiita
    yojik
    yojik 2019/10/30
  • AWS食わず嫌いのプログラマーがTerraformハンズオンに参加したときのログを晒す - Qiita

    稿は、社内で行われた @reoring 主催のTerraformハンズオンに参加したときの作業ログです。一応、ハンズオンを再現しやすいように書いたつもりですが、TerraformAWSも疎いため誤りがあったらお教えください。 読者対象者 プログラマーTerraformAWSの環境構築を自動化してみたい人。 ちなみに、筆者 AWS: 管理画面でEC2立てたり、S3バケット作ったりはできるが、VPSに逃げがち。 プログラミング歴: PHP15年。他にGo言語などもやったことある。 インフラ: 小規模なウェブアプリをホスティングするために、アプリに関係がある周辺のインフラ知識だけつまみいしたレベル。 ハンズオンで得るもの TerraformAWS上にEC2インスタンスを建てられるようになる。(hello worldレベル) Terraformコードを再利用性・保守性があるものにするモ

    AWS食わず嫌いのプログラマーがTerraformハンズオンに参加したときのログを晒す - Qiita
    yojik
    yojik 2019/09/06
  • 「例外を投げない」という選択肢をとる言語 - Qiita

    新しめの言語では例外を投げることを推奨しない言語が出てきているように思えるが、そうした言語が例外をどう考え、例外の代わりにどのようなアプローチを奨励しているかを調べてみた。 稿での「例外」とは、Javaのthrow構文のようにスコープを脱出してcatchされるまでエスカレートされる「投げる例外」のことを指し、エラーを表現したオブジェクト(エラーオブジェクト)については「例外オブジェクト」と呼び区別するものとする。(この2つを同一に扱うと、例外を使わないということは、エラーオブジェクトは使わないの?という話になるため) Go言語 - 例外はコードを複雑にする Go言語では、通常、エラーは戻り値として扱われる。(当の当に例外的なエラーのためにpanic, recoverがあるが、ほとんど使われることがないように見受けられる。) 例外がないGoでは、どう呼び出し元にエラーを伝えているかとい

    「例外を投げない」という選択肢をとる言語 - Qiita
    yojik
    yojik 2019/03/07
  • DDD: ImmutableなEntityの実装方法〜ステートソーシングなEntityとイベントソーシングなEntity〜 - Qiita

    DDD: ImmutableなEntityの実装方法〜ステートソーシングなEntityとイベントソーシングなEntity〜ScalaDDDドメイン駆動設計 ドメイン駆動設計では、Value ObjectはImmutable、EntityはMutableという雰囲気があるように思うが、ScalaでDDDを実践しようとなると、EntityがMutableでは逆に実装が複雑になることが多い。僕がDDDを始めた2013年頃は、ImmutableなEntityの実装に関する情報がほとんどなく実装方法を試行錯誤していた。その中で、個人的にImmutable Entityの実装方法が落ち着いてきたので、僕がどのように実装しているかについて紹介したい。 なお、ここで紹介するScalaコードはGitHubのsuin/scala-playgroundで公開しているので、コンパイル・実行など試してみたい場合はご

    DDD: ImmutableなEntityの実装方法〜ステートソーシングなEntityとイベントソーシングなEntity〜 - Qiita
    yojik
    yojik 2016/05/18
  • WebAPIでエラーをどう表現すべき?15のサービスを調査してみた - Qiita

    2017-01-05 追記 2016年3月にエラーの標準形式RFC7807「Problem Details for HTTP APIs」が提案され、今日現在proposed standard(標準化への提唱)となっています。こちらも是非ご覧ください。 RFC 7807 - Problem Details for HTTP APIs HTTP APIの詳細なエラー情報をレスポンスに持たせるための仕様 最近はREST APIを提供しているサービスが増えてきていますね!また公開されるAPIだけでなく、Microservicesなアーキテクチャを採用して、バックエンドがWeb APIで通信するケースも増えてきているように思います。 APIを使うときはあまり気にしたこともなかったですが、いざAPIを設計してみるとどんなインターフェイスがいいのか、どんな形式がいいのかといった疑問が次々と出てきます。

    WebAPIでエラーをどう表現すべき?15のサービスを調査してみた - Qiita
    yojik
    yojik 2015/05/26
    ステータスコードとヘッダ情報も必要だと思う。(レスポンスがシンプルな奴はヘッダ側に情報があるのではないだろうか)
  • パッケージ管理は姿を消すか? - Qiita

    開発環境を構築したり、ツールを導入したりするのに、パッケージ管理システムはよく使われる。よく目にするものでも、Homebrew・yum・apt-get・npm・pip・gem...などいろいろある。 パッケージ管理システムはエンジニアを面倒な作業から開放してくれる。コマンドひとつで、オンラインからパッケージを探せて、ダウンロードでき(リポジトリの機能)、パッケージを追加したり削除したりもできる(インストーラの機能)。さらに、パッケージに必要な別のパッケージを同時にインストールしてくれる(依存関係解決機能)。たとえば、Ubuntuでhttpieが欲しいと思ったら、次のコマンドを打ってしばらく待てば使えるようになる。 パッケージ管理システムとしてのDocker ところで、話題のツールにDockerがある。Dockerはインフラ構築の文脈で、開発環境や番サーバのプロビジョニングして配置するよう

    パッケージ管理は姿を消すか? - Qiita
    yojik
    yojik 2014/08/22
  • 箱で考えるFunctor、ApplicativeそしてMonad

    モナドについて勉強していて見つけた英語記事を翻訳してみました。 誤訳等あれば編集リクエストやコメントください 原文: Functors, Applicatives, And Monads In Pictures - adit.io ここに単純な値(value)があります。

    箱で考えるFunctor、ApplicativeそしてMonad
    yojik
    yojik 2014/06/17
  • 1