タグ

ブックマーク / qiita.com (962)

  • TypeScriptのオブジェクトリテラルとオブジェクト型を理解したい - Qiita

    オブジェクトリテラルとは MDNによると、 オブジェクトは new Object()、Object.create()、リテラル表記法 (初期化子表記法) を使用して初期化されます。オブジェクト初期化子はオブジェクトのプロパティ名と関連した値のゼロ以上のペアのリストで、中括弧 ({}) で囲まれます オブジェクトリテラル(オブジェクト初期化子)とは表記法のことです。 JSONとの違い JavaScriptのオブジェクトリテラルをベースに作られた軽量データフォーマットがJSONですが、 オブジェクトリテラルとJSONでは、記載方法が若干違います。

    TypeScriptのオブジェクトリテラルとオブジェクト型を理解したい - Qiita
  • TypeScriptの型記法「オブジェクトリテラル 」と「インデックスシグネチャ」を理解する - Qiita

    TypeScriptの型記法、「オブジェクトリテラル」と「インデックスシグネチャ」について、まとめます。 「オブジェクトリテラル」も「インデックスシグネチャ」も、あまり聞き慣れない言葉で、雰囲気で理解した気になっていませんか? 私は、なっていました。 私の場合、この記法に遭遇するたびに「これって、なんだっけ?」ってなることが多いです。 自分の理解のために、ここにまとめておきたいと思います。 誰かの理解の助けになれば幸いです。 初見殺しな「オブジェクトリテラル」と「インデックスシグネチャ」 例えば、以下のコードにおいて 変数objの型が、何を意味しているか理解できますでしょうか。 私には、初見殺しすぎて、さっぱりわからず「???」となりました。 この型の意味は、「変数objは複数のkeyを含む可能性があり、そのすべてのstring型のkeyは、string型の値をもつ」となります。 以下のコ

    TypeScriptの型記法「オブジェクトリテラル 」と「インデックスシグネチャ」を理解する - Qiita
  • そのLambdaの実行…同期?非同期? - Qiita

    はじめに AWSでサーバレスアーキテクチャ構築しようとなったときに欠かせないのが AWSLambda ですよね。 基的に他のサービスからのイベントでinvokeすることが多いと思いますが、その際 同期呼び出し でinvokeされるのか、 非同期呼び出し でinvokeされるのかを気にしたことはありますか? 今回は今更ではありますが、Lambdaがinvokeされるイベントが同期なのか、非同期なのかをまとめていこうと思います。 そもそも 同期 / 非同期 で、どんな違いがあるのでしょうか? 同期呼び出し 同期呼び出しの場合は直接Lambdaを 1回 実行します。 Lambdaが実行され、処理が完了してからレスポンスが返ってきます。 非同期呼び出し 非同期呼び出しの場合はLambdaを直接実行するわけではなく、キューイングされた後実行されます。 Lambdaの呼び出しに失敗した場合は自動的に

    そのLambdaの実行…同期?非同期? - Qiita
  • Lambda オーソライザーを設定したAPI Gatewayのリソースポリシーに注意 - Qiita

    はじめに AWSでサーバーレスwebアプリケーションを作りました. アーキテクチャはこんな感じ 認可処理は,cookieに設定したJWTにより検証を行っています. 表題の件 図にあるように,API GatewayへのアクセスはリソースポリシーによるIP制限をかけていました. こんな感じで { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:<region>:<account-id>:<api-id>/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "xxx.xx.xx.xxx", "xxx.xx.x

    Lambda オーソライザーを設定したAPI Gatewayのリソースポリシーに注意 - Qiita
  • TypeScriptのInterfaceとTypeの比較 - Qiita

    こういうコンパイルエラーにぶち当たった。 Interfaceだとコンパイルエラーになったのが、Typeなら問題なく通る。 declare function numMapToVoid(obj: {[key: string]: number}): void; // interfaceだとコンパイルエラー interface IObj { a: number } const iObj: IObj = {a: 1}; numMapToVoid(iObj); // エラー // typeだと問題なし type TObj = { a: number }; const tObj: TObj = {a: 1}; numMapToVoid(tObj); // OK これは不思議...というのがきっかけで、TypeScriptのInterfaceとTypeの機能上の違いを調べてみた。 比較まとめ TypeSc

    TypeScriptのInterfaceとTypeの比較 - Qiita
  • すぐ分かる Nullish Coalescing と短絡評価の違い - Qiita

    TL;DR JavaScript には null, undefined の他にもいくつか falsy な値がある || で短絡評価させる場合、 falsy な値なら何でも [falsyな値] || [default] で結果が [default] になる Nullish Coalescing の ?? を使う場合、 null ?? [default], undefined ?? [default] においてのみ、結果が [default] になる falsy な値 JavaScript には、Boolean コンテキストでは false と評価されるような値がいくつかあります。falseは当然そうですが、他にもnull, undefined, 0, NaN, ""などがあります。 短絡評価はこの性質を利用したものです。 null || "Hello World!" // "Hello Wo

    すぐ分かる Nullish Coalescing と短絡評価の違い - Qiita
  • [Typescript] 「なぜ enum の利用が推奨されないのか?」をまとめてみた - Qiita

    はじめに Typescript にも他の言語と同様にenumが記法として実装されているのですが、次の記事ではenumではなく、Union typeを利用しようという内容が記載してありました。 さようなら、TypeScript enum: Kabuku Developers Blog 色々関連する記事を読んだ結論として、特にこだわりがなければ「Union type」を利用する方が良いと僕も思います。 その根拠 / 背景を以降まとめたいと思います。 なお、記事のコードの検証には、Typescript Playground を利用しています。 Typescriptのenumについて enumはある型についてとりえる値を列挙します。(他の言語と同様) Typescriptでは文字列、または数値を値としてマッピングできます。 デフォルトでは、上から0,1,2...というように数値を自動で値として設

    [Typescript] 「なぜ enum の利用が推奨されないのか?」をまとめてみた - Qiita
  • Metal入門・・・の前の基礎知識 - Qiita

    Metalは入門するのがなかなか大変です1。UIKitやCore Graphicsを使ってグラフィックスを描画するのとはまったく違う手順が多く登場します。なので、その背景にある概念を理解していないままコードに臨むと、「なぜこんなことをやる必要があるのか」と理解しがたく感じることがあるかもしれません(私がそうでした)。 記事では、そんなMetalへ入門する「以前」の、Metalの基礎知識について解説します。 Metalの概要 Metalとは Metalは、Appleによって提供されているローレベルなグラフィックスAPIです。別の言い方をすると、GPUへのアクセスを提供するAPIです。GPUというハードウェア層を直接たたくAPI(=ローレベル)であり、GPUは"Graphics Processing Unit"の略であるとおり、そもそもは描画処理を担う演算装置なので、そのインターフェースであ

    Metal入門・・・の前の基礎知識 - Qiita
  • Raspberry Pi でTPMを使う - Qiita

    TPMが出来ることは大きく2つあります。ひとつは暗号と暗号鍵の管理、もうひとつは稼働するソフトウェアの改ざん検知です。前者はHSM(Hardware Security Module)では一般的な機能です。後者はTPMのユニークな機能ですが、この機能を使いこなすにはTPMとIoTデバイス上で稼働するすべてのSWとの連携が重要になります。Raspberry Piは便利なプラットフォームですが、TPMの主要な機能である、Trusted boot や Secure boot ができません。これはRaspberry Piで最初に移動するコードがブラックボックスだからです。製品化や実運用の際にはTrusted boot や Secure boot が可能な別のプラットフォームを選択してください。ただ、開発機として様々な実験やテストで使うには十分です。 また、LinuxのTPM2.0対応はまだ十分とはい

    Raspberry Pi でTPMを使う - Qiita
  • レキシカルスコープ/ダイナミックスコープとは? - Qiita

    そもそも、スコープには二種類ある。 レキシカルスコープ ダイナミックスコープ それぞれは、変数の参照の仕様のことであり、RubyJavaJavascriptpython等多くのメジャーな言語でレキシカルスコープが採用されています。 レキシカルスコープの例 非常に単純です。以下のコードを見て下さい。 var = '私はトップレベル' def a_method return var end def b_method var = '私はオブジェクトの中身' return var end a_method #-> '私はトップレベル' Ruby等を書いていると当たり前ですが、a_methodからb_methodのvarを参照することは出来ません。 これが レキシカルスコープ です...!!! しかし、世の中には関数を評価した時に変数のスコープが決定する言語があるらしいです。 それらをダイナミ

    レキシカルスコープ/ダイナミックスコープとは? - Qiita
  • Amazon CodeCatalystについてざっくりまとめてみる - Qiita

    はじめに 2023/4/20にGAされましたAmazon CodeCatalystについて、僕なりの所感だったり使用感を書いていきます。 ※GA・・・AWSのサービスが世に一般公開されること。「General Availability」の略。 Amazon CodeCatalystとは 公式サイトには「AWS上でアプリケーションを素早く構築し、提供するための統一ソフトウェア開発サービスです。」とあります。(https://codecatalyst.aws/explore より抜粋) Unified software development service to quickly build and deliver applications on AWS. つまり、CI/CDを簡単に迅速に実現するための統合ソフトウェア開発サービスということになります。 また既存のCI/CDツールと比較して、G

    Amazon CodeCatalystについてざっくりまとめてみる - Qiita
  • そろそろJavaScriptに採用されそうなOptional Chainingを今さら徹底解説 - Qiita

    みなさん、Optional Chaining使ってますか? 私は先日出たTypeScript 3.7 Betaを小さいプロジェクトに導入して使ってみました。これはとても快適ですね。 例によって、Optional ChainingはECMAScriptに対するプロポーザルの一つです。つまり、もうすぐ入りそうなJavaScriptの新機能です。プロポーザルはたくさんの種類がありますが、その中でもOptional Chainingはその高い有用性からこれまで多くの注目を集めてきました。Optional Chainingは2019年6月のTC39ミーティングでStage 3に上昇し、いよいよ正式採用が近く期待も高まってきたところです。TypeScript 3.7にも導入されたため、TypeScriptユーザーの方々は11月上旬に正式リリースが予定されているTypeScript 3.7を今か今かと待

    そろそろJavaScriptに採用されそうなOptional Chainingを今さら徹底解説 - Qiita
  • AWS Security Reference Architecture (AWS SRA) を利用したマルチアカウントのセキュリティ対策 - Qiita

    AWS Security Reference Architecture (AWS SRA) を利用したマルチアカウントのセキュリティ対策AWSSecurityIAMOrganizations はじめに AWSによって 「AWS Security Reference Architecture (AWS SRA)」 と呼ばれるセキュリティリファレンスアーキテクチャが公開されています。 SRAは、AWSセキュリティ対策をどう実装すべきかを指し示すガイドとしての位置付けであり、SRAを参考にすることで、AWSの数多くのセキュリティサービスをマルチアカウントの環境に最適化する形でデプロイする方法が分かります。 記事では、このSRAの中身を紐解き、SRAを活用してAWSアカウントのセキュリティ対策がどう実装できるのかを記します。 企業の課題 オンプレミスからAWSにサーバ環境を移行し始めたばかりか

    AWS Security Reference Architecture (AWS SRA) を利用したマルチアカウントのセキュリティ対策 - Qiita
  • 実務でよく使うgitコマンドライン - Qiita

    バージョン管理の個人的な考え方 基的に歴史は改変したくないタイプ。タイポの修正もわざわざrebaseしないで普通にcommitします。 初回のpushまでは色々試行錯誤もあるので、ローカルのコミットはしばらく放置していますが、目処が立ったらステージングしコミットを付けていきます。 Gitでやらかした時に使える19個の奥義がよく検索ヒットしますが、個人的にはあまり実務で使ってないんです。 そこで、ビギナー〜中級の人向けに役に立つコマンドを以下にまとめます。 という書き出しで当初はまとめていましたが、実は考えが変わってきました。 rebaseからのforced pushはやっても良い派になりました。ただし、forkからのPull Requestもしくはレビュー前のコミットの場合に限ります。自分のリポジトリのブランチなんだからキレイにした後にマージしてもらう方が親切だったり、レビューワーを意識

    実務でよく使うgitコマンドライン - Qiita
  • iOSのキーチェーンについて - Qiita

    キーチェンの仕組み ここでは一生懸命作成した図と一緒に説明します。 ・キーチェーンの保存のされ方 アプリで保存されたキーチェンの値はアプリのプロビジョニングファイルとひも付き、さらに保存した時のキーと一緒に暗号化されて保存されます。暗号化は秘密鍵、公開鍵方式(違う鍵使用)と共通鍵方式(同じ鍵使用)を合わせて(ハイブリッド暗号)行っているみたいです(データ全体的には共通鍵をかけてその鍵を受信者側の鍵で暗号化的なものらしい感じかと。 参考:(出るとこだけ! 基情報技術者)) <= 以前見た箇所を探せなかったのですが他のappleのサイトでは公開鍵とかいう言葉は使っていませんが、速度的に同じような感じかと思っています! ・キーチェーンの値を共有するには 参考→How to share Keychain between iOS apps 参考→[iOS] 複数のキーチェーンアクセスグループを持

    iOSのキーチェーンについて - Qiita
  • EC2 Instance Connect Endpoint ( EICE )を使ってローカルからインスタンスにアクセス - Qiita

    背景 RDSでAuroraDBを作ったが、そのDB操作をローカルから実行したい。でもDBは基的にプライベートサブネットにあるからローカルと接続するにはそれ用の踏み台サーバー作らなきゃいけないか… と、思っていたらつい最近EC2 Instance Connect Endpointっていうサービスが出たらしい。 EC2 Instance Connect Endpoint(EICE)とは 公式ではこう説明されている。 「EC2 Instance Connect Endpointを使用すると、インスタンスにパブリック IPv4 アドレスを持たせることなくインスタンスに接続できます。TCP をサポートする任意のインスタンスに接続できます。」 つまりEC2上のインスタンスへのアクセス用エンドポイントを簡単に設置できるようになった。 例えばプライベートなRDSをローカルから操作することもできる。しかも

    EC2 Instance Connect Endpoint ( EICE )を使ってローカルからインスタンスにアクセス - Qiita
  • WSL2で同じディストリビューションの仮想マシンを複数作成する。 - Qiita

    はじめに WSL2のUbuntuを触っていたとき、ふとVirtualBoxなどのように同じOSの仮想マシンを複数作成するにはどうするのだろうと思い、調べてやってみたことを残します。 WSLでの仮想マシンの作成 WSLで使えるディストリビューションを入手するにはMicrosoft Storeにアクセスし、インストールしたいディストリビューションを探し、「入手」ボタンを選択すればインストールされますが、一度入手してしまうと、再度同じディストリビューションを入手しようとしても以下のように「起動」ボタンしかなく、インストール済みであると表示されるため、同じディストリビューションで複数の仮想マシンを使うことができなくなっています。 しかし、wsl.exeのヘルプを見てみると、以下のようなimport、exportの引数があることから、できないわけではないようなのでやってみます。 Linux 用 Wi

    WSL2で同じディストリビューションの仮想マシンを複数作成する。 - Qiita
  • GitHub Copilotの威力(日本語からソースコード自動生成) - Qiita

    概要 「GitHub Copilot」を使用して、日語からソースコードを半自動生成させてみました。 また、しばらく試行してみて、Copilotの活用シーンを整理しました。 Copilotとは 2020年5月にイーロン・マスク氏らが関わっているAIの非営利団体OpenAIによって、自然言語モデルGPT-3が発表されました。このモデルは、生成された文章が、人間が書いたのかAIが書いたのか区別できないほど高精度なモデルということで当時、話題になりました。 OpenAIではGPT-3をカスタマイズし、自然言語からソースコードを生成するCodexモデルを開発していましたが、OpenAIGithubが提携したことによって、Githubで公開されている数十億行のコードを学習させることができるようになり、より高精度なソースコードを生成させることが出来るようになりました。 そして、2021年6月29日に

    GitHub Copilotの威力(日本語からソースコード自動生成) - Qiita
  • WSL2+asdf+venvでのpython環境構築メモ - Qiita

    はじめに メモ兼共有用 実行環境 windows11 + WSL2で実行 VSCode + Remote WSLが入っていることを前提 ubuntu20.04でも基は同じ(WSL2インストールパートを飛ばしてください) 実際の使用方法 先に使い方を書いときます # 作業するディレクトリの作成 mkdir myproject cd myproject # pythonのバージョンの設定 # asdf install python <使用するバージョン> asdf local python <使用するバージョン> # 仮想環境の作成 python -m venv .venv source .venv/bin/activate # パッケージのインストール pip install <packagename> # 実行 python <実行するファイル名> WSL2のインストール WSL2とは

    WSL2+asdf+venvでのpython環境構築メモ - Qiita
  • RESTful APIのHTTPステータスコード設計 - Qiita

    RESTfulなAPIでは、以下の理由によりAPIの処理結果は適切なHTTPステータスコードを利用することが推奨されている。 適切なHTTPステータスコードを返さないと、レスポンスボディの中身を解析して処理結果を判定する必要がある HTTPの標準仕様を使うことで、HTTPステータスコードから処理結果を判定することができる HTTPの標準仕様を使うことで、APIを利用する第三者にとっても理解しやすくなりバグの混入を減らすことができる ほとんどのHTTPクライアントライブラリはHTTPステータスコードを見てリクエストが成功したか、失敗したかを判別している ※ステータスコードは一律200で処理結果をレスポンスボディで表現するようなことはしてはいけない。例えば、API側で内部エラーが発生し来であれば500(INTERNAL SERVER ERROR)を返さなければいけないところを、200で返して

    RESTful APIのHTTPステータスコード設計 - Qiita