タグ

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

  • NestJS Service 初期化 非同期 - Qiita

    この記事は NestJS アドベントカレンダー 2019 8 日目の記事です。 はじめに この記事では DB のコネクションやクラウドサービスの認証など、 Service として切り出したいが初期化が非同期になるものの扱い方を説明します。 サンプルコードのリポジトリは以下になります。 https://github.com/nestjs-jp/advent-calendar-2019/tree/master/day08-initialize-async-provider なお、環境は執筆時点での Node.js の LTS である v12.13.1 を前提とします。 おさらい: NestJS における Provider の初期化タイミング NestJS の Module において定義された Provider (Service など) は、 NestJS のエントリーポイントで NestFac

    NestJS Service 初期化 非同期 - Qiita
  • NestJS API バージョニング - Qiita

    この記事は NestJS Advent Calendar 2019 13日目の記事です。今日は小ネタになります。 2019 年に Web API を新規開発する場合、基的には設計段階で API バージョニングを前提とします。バージョニングによって、Public API は勿論、Private API でも、 /v1/ から始めておき、大きな変更に応じてバージョンを変えていく事によって適切に後方互換を保つことが可能となります。 最近だと開発面だと monorepo が、インフラ面だと L7 Switch の活用で、うまい具合に古いコードベースを生かしたまま新しく書いていくこともやりやすい土壌が整っているので、バージョニングはできるだけしたいところです。 NestJS でも同様の設定を付与したいところですが、愚直に Controller のデコレータ引数でバージョン情報を付与するのは少し手間

    NestJS API バージョニング - Qiita
  • Chrome拡張の高速な英語辞書ツールをつくりました(Mouse Dictionary) - Qiita

    経緯 もともとMouseoverDictionaryという素晴らしいFirefox用辞書があったのですが、Quantumの登場とXULの廃止とともに使えなくなってしまったため、自分用にChrome拡張をつくった次第です。 ソースコード 実装に関わる技術寄りの用語: React, esbuild, chrome.storage.local, chrome.storage.sync, Cross-extension messaging, Hogan, debounce, resizable/draggable, intl.v8BreakIterator, deinja, クロスブラウザ, など。 ※詳細は「Mouse Dictionaryの技術的な話」をご参照ください https://qiita.com/wtetsu/items/2a5568cb0b5a38c003fb 使い方 インストール

    Chrome拡張の高速な英語辞書ツールをつくりました(Mouse Dictionary) - Qiita
  • iPhoneの実機で位置情報をシミュレーションする方法 - Qiita

    ポケモンGOで位置情報偽装で不正アカウントがBANされ始めていますが、BANされる方法をご紹介します。 これから、ポケモンGOみたいな位置情報アプリを作れと言われたときに使える便利なデバッグ方法です。 iPhoneGPSの位置情報はXcodeのSimulate Locationを使うとを偽装できます。 iOSの位置情報は端末内のすべてのアプリで共通になるため、他のiOSアプリにも影響を起こすことができます。 1.Xcodeで新規プロジェクトを作る 中身は空で良いのでSingle View Applicationを選択してプロジェクトを作成します。 2.AppDelegate.swiftにバックグランドでも処理を継続するよう書き加える iOSの位置情報はアプリ内で共通ですが、Simulate Locationはアプリがサスペンドされると機能しなくなります。 そのためアプリにバックグランド継

    iPhoneの実機で位置情報をシミュレーションする方法 - Qiita
    yuzu441
    yuzu441 2020/02/14
    ふと気になって見たんだけど、こういう動きだとどこまでデバッグに活用できるんだろ
  • Goのtimeパッケージのリファレンスタイム(2006年1月2日)は何の日? - Qiita

    Goのtimeパッケージのフォーマットは独特だ。普通のUnixのstrftimeとかだとフォーマット文字列は%Yとか%mといった文字列なのだけど、Goの場合はそのかわりにある種の「サンプル文字列」を与えるという仕組みになっている。 たとえば次の文字列はGoでは時刻の正しいフォーマット文字列だ。 %Y(年)の代わりに"2006"、%b(月の名前)の代わりに"Jan"と書くといったルールになっている。"%Y-%m-%d"の代わりに"2006-01-02"と書くのは見た目にわかりやすいといえばわかりやすいが、"2006年1月2日15時04分05秒"以外の時刻は正しいフォーマット文字列としては認識されない。2006の代わりに2007とか書いても意味がない。 では一体この2006年1月2日という特別な日は、なんの日なのか? 最初は1970年1月1日(エポック)から特定の時間が経過した日だとか、あるい

    Goのtimeパッケージのリファレンスタイム(2006年1月2日)は何の日? - Qiita
    yuzu441
    yuzu441 2020/01/10
    知らなかった
  • Express (Node.js) の Graceful shutdown - Qiita

    的な実装の仕方と、実装した場合 / しなかった場合、で実際にどういう動作をするか〜、について書きます。 Linux, Node.js 12.13.0, での話だけをします。 Graceful shutdown ? Express (Node.js) に限りませんが、Web サーバーを停止する際、クライアントから接続中のリクエスト (リクエスト受付してまだレスポンスしていない接続) はどうなるでしょうか? Graceful shutdown とは一般的に以下の停止を指します。 停止指示後に、新しい接続を受付しない 残った処理中の接続が完了するのを待ってから、プロセスを安全に停止する SIGNALs そもそも Web サーバープロセスはどうやって停止するかというと、 SIGNAL を用いて停止します。 具体的には下表の通り、コマンド等によって SIGNAL を送信できます。 SIGNAL

    Express (Node.js) の Graceful shutdown - Qiita
    yuzu441
    yuzu441 2020/01/10
  • 「zeit/swr」のpagination exampleでScroll Position Restoreを試す - Qiita

    こちらはNext.js Advent Calendar 2019の22日目の記事です。 はじめに 例えばYoutubeをスマホで見ていたときに、↓のように一度ページ遷移をしてからブラウザバックしたときにスクロール位置が一番上まで戻ってしまった経験はないでしょうか。 これはSPAが抱える課題の1つで、解決するためには「Scroll Position Restore」と呼ばれる「スクロール位置の保持」とその「リストア(復元)」が必要です。 また、それ以外にも「もっと読む」などで画面内に非同期で要素が追加された場合はその要素も合わせて復元しないと正しいスクロール位置には戻れません。これには複雑なStateの管理も必要になってきます。 このように「Scroll Position Restore」を実現するにはいくつか超えなくてはいけない壁があります。 zeit/swr の登場 2019年10月、

    「zeit/swr」のpagination exampleでScroll Position Restoreを試す - Qiita
    yuzu441
    yuzu441 2019/12/30
  • Goでオブジェクト生成の返り値にinterfaceを使うとnil Pointer Receiverができないという話 - Qiita

    package main import ( "fmt" "reflect" ) type Fooer interface { Foo() } type Fooo struct{} func (f *Fooo) Foo() { if f == nil { fmt.Println("nil!!") } else { fmt.Println("not nil!!") } } func newFooer() Fooer { return &Fooo{} } func bar(f Fooer) { f.Foo() } func main() { // 型を代入したあとnilを入れても型情報は消えない z := &Fooo{} fmt.Println(reflect.TypeOf(z)) // *main.Fooo z = nil fmt.Println(reflect.TypeOf(z)) // *

    Goでオブジェクト生成の返り値にinterfaceを使うとnil Pointer Receiverができないという話 - Qiita
  • axiosのinterceptorsで、リクエストの前処理を共通して行う - Qiita

    axiosを使ってAPIリクエストを送る際に、前処理を行いたいケースがありました。 リクエストを送る前に毎回処理を記載する方法もあるのですが、interceptorsを使用することで綺麗に書けそうだったので調べてみました。 interceptorsとは interceptは途中で捕まえるといった意味のようです。 You can intercept requests or responses before they are handled by then or catch. リクエストを送る前にログを出してみる interceptorsを使用して、毎回リクエストとレスポンスの前にログを出力させてみます。 import axios from 'axios'; axios.interceptors.request.use(request => { console.log(request.url)

    axiosのinterceptorsで、リクエストの前処理を共通して行う - Qiita
  • JWTは使うべきではない 〜 SPAにおける本当にセキュアな認証方式 〜 - Qiita

    React/Redux/Spring Boot/AWSでSPAを作っているのですが 認証の方式をどうするか悩みました。 ベストと思われる認証方式をこちらに記載することにしました(随時更新します)。 JWTは使うべきじゃない ログイン済みであるという事実を サーバーサイドのセッションを使わずに保存しておく場合、 ログインした後でJWTなどのトークンをサーバーで生成し、 それをクライアントサイドで何らかの形で保存しておく必要がある。 なぜなら、ReactおよびReduxのstateで管理してしまうと、 ページをリロードされたときにstateがクリアされてしまうから。 具体的な保存先はローカルストレージくらいしか無いのだが JWTをローカルストレージに格納するのは危険。 なぜなら、ローカルストレージはJavaScriptで簡単に読み込めてしまうから。 自ドメイン以外のJavaScriptを読み込

    JWTは使うべきではない 〜 SPAにおける本当にセキュアな認証方式 〜 - Qiita
    yuzu441
    yuzu441 2019/12/18
  • Serverless VPC AccessでGAE(Standard)からCloud Memorystore使ってみた - Qiita

    いまきたさんぎょう GAE(Standard)で Cloud Memorystoreに アクセス出来るよ 注意 Serverless VPC Accessはbetaです。 いつの間にか変わっていても私のせいじゃないです。 Serverless VPC Accessとは GAE(かCloud Functions)から、VPC内のリソースに、プライベートIPアドレスでアクセス出来るようになります 詳しくは公式ドキュメントを読んでください。 で、具体的に何できんの? CloudSQL Cloud Memorystore GCEサーバー などのVPC中にあるリソースを、外部に公開することなく、GAE(やCloud Functions)からアクセスすることが出来るようになります。 また、GAEの2nd Generation(Python3.7)では、1st Generation(Python2.7)

    Serverless VPC AccessでGAE(Standard)からCloud Memorystore使ってみた - Qiita
    yuzu441
    yuzu441 2019/12/04
    いつのまにか使えるようになってるらしい🤟
  • TypeScriptで簡単にChrome Extensionを作る方法 - Qiita

    Githubで草を生やす活動は楽しいですね! 増えてきて芝みたいになると達成感があって、モチベーションも上がります。 ところで、この前の10/30に草がハロウィン仕様になっていたのを見て、 草を自分の好みの色を変更できればもっと楽しくなるのでは?と思い 草の色が変更できる(ついでにお絵描きもできる)Chrome Extensionを作りました。 その時にgenerator-chrome-extension-kickstart-typescriptを使って、TypeScriptで簡単にChrome Extensionが作れたので、アプリ作成から公開までの手順をまとめます。 1. プロジェクトの雛形を生成する yomanとgenerator-chrome-extension-kickstart-typescriptで簡単に雛形が作れるのでコレらを使っていきます。 yomanとgenerator

    TypeScriptで簡単にChrome Extensionを作る方法 - Qiita
  • MongoDBを立てよう~ユーザ認証とBackup/Restore~(Windows) - Qiita

    MongoDB 4.0.9 Windows10 ネットワーク上の複数の端末から複数のDBを安全に使えるように、管理者、あるいは指定のアプリケーション以外からDBにアクセスできないようにしたい。 MongoDBサーバーをセットアップしたあと、ユーザ認証で使えるようにする設定と、ついでにバックアップ/リストアのハナシ インストール 公式からMongoDBをダウンロードしてインストール。 win版のver4からは、すべてデフォルトでインストールすると自動的にwindowsサービスにインストールされるはずなので、windowsのサービスを確認する。 MongoDBのプロパティを見ると、実行ファイルのパスは "C:\Program Files\MongoDB\Server\4.0\bin\mongod.exe" --config "C:\Program Files\MongoDB\Server\4.

    MongoDBを立てよう~ユーザ認証とBackup/Restore~(Windows) - Qiita
  • 【AWSメモ②】請求アラーム機能の設定 - Qiita

    AWS使用料金が一定枠を越えた際にメールで通知する機能。 無料枠だと以下が基準 Amazon EC2 ・1 か月あたりの Linux、RHEL、または SLES t2.micro インスタンスの使用量 …750時間 ・1 か月あたりの Windows t2.micro インスタンスの使用量 …750時間 Amazon S3 ・5 GB 標準ストレージ ・20,000 件の Get リクエスト ・2,000 件の Put リクエスト Amazon RDS ・Amazon RDS Single-AZ db.t2.micro インスタンスの使用…750時間 ・DB Storage: General Purpose (SSD) または Magnetic の任意の組み合わせ …20GB ・バックアップ (RDS Magnetic ストレージを使用)…20GB ・1,000 万 I/O その他 htt

    【AWSメモ②】請求アラーム機能の設定 - Qiita
    yuzu441
    yuzu441 2019/11/16
  • Go言語らしいLoggingについて - Qiita

    Go言語でlogを扱う場合、サードパーティのロギングライブラリを使う人は少なくないと思います。 理由としては標準のlogパッケージの機能の貧弱さ、特にレベルが無いというのが多いと思います。 しかしGo言語原理主義的にはやっぱり標準を使いたいですよね。 安心してください、標準logパッケージにはレベルがありませんがレベルについて考慮していないというわけではありません。 ロギングパッケージとしての役割が他の言語でも見られる通常のログライブラリと異なるだけです。 ログレベルについてですが そもそもログレベルは基的に統一されていません、DebugLevelがなかったりWarningLevelがなかったり文字列で表現したり色々あると思います。 統一されていないのが問題なのでなく、プログラムの対象によって必要なログの機能というのは異なるのは当然なので 来必要なレベルは自分で宣言できるべきです。 例

    Go言語らしいLoggingについて - Qiita
  • Nuxt.js(SPA)とFirebaseで強制リビジョン(バージョン)アップするならPWAモジュールを使おう - Qiita

    これはなに? SPAのキャッシュコントロールは難しい問題だけど、ちゃんと仕組みを理解してただしい戦略を使えばそんなに難しくないよという話。 Disclaimer この記事は2019年10月くらいにおける筆者の経験と見解に基づくものです。だいたい間違ってないとは思いますが内容の正確性は保証しませんし、2ヶ月くらいするとFirebaseないしNuxt.jsの進歩によりココに書かれていることが嘘になる可能性はあります。また、特定の記事や個人を中傷する意図はありません。筆者の所属する組織やその類とは関係がありません。 なんで難しい(と思われている)の? そもそもの前提としてちゃんとやらないとアプリケーションのリリースがままならないというプレッシャーがあります。 そのうえで... (1) SPAの構成ファイルをキャッシュしようとする輩がたくさんいる Hostingサービス(ブラウザキャッシュ) CD

    Nuxt.js(SPA)とFirebaseで強制リビジョン(バージョン)アップするならPWAモジュールを使おう - Qiita
    yuzu441
    yuzu441 2019/10/30
    “ 絶対にキャッシュしてはいけない”
  • TypeScript v3.7.2 変更点 - Qiita

    更新 2019/11/06 正式版がリリースされて微妙に差分があったので更新 更新 2019/11/01 Call Hierarchy について更新 こんにちはメルペイ社な@vvakameです。 TypeScript 3.7がアナウンスされました。 What's new in TypeScript in 3.7 Breaking Changes in 3.7 TypeScript 3.7 Iteration Plan TypeScript Roadmap: July - December 2019 Roadmapはこちら。 この辺に僕が試した時のコードを投げてあります。 変更点まとめ Optional Chainingのサポート Add support for Optional Chaining stage 3になったので foo?.bar.baz() とか書けるやつ ?. でワンセット

    TypeScript v3.7.2 変更点 - Qiita
  • Let’s Encryptの使い方。standaloneとwebroot - Qiita

    #Let's encrypt(Let's Encrypt 認証局)とは まずはここから簡単に解説を。「無料のSSL」です。通常、年間3万円程度費用がかかるイメージでしたが、そのために普及が遅れてしまっては、インターネットの発展がなかなか進まない、ということもあってインターネット界隈の主要な会社たちが集まって、無料の認証局を作ろうということになりました。 以下、日語訳抜粋。 Let's Encrypt を運営している Internet Security Research Group (略称:ISRG) は、アメリカ合衆国カリフォルニア州にある公益法人で、アメリカ合衆国内国歳入法 Section 501(c)(3) による非課税法人として、アメリカ合衆国内国歳入庁 (IRS) による承認を受けています。 インターネットを介した安全な通信を行う際の、経済面・技術面・教育面での障壁を減らすことが

    Let’s Encryptの使い方。standaloneとwebroot - Qiita
    yuzu441
    yuzu441 2019/10/19
  • はじめての Elasticsearch - Qiita

    この記事は全文検索エンジン「Elasticsearch」の入門チュートリアルです。 Elasticsearch とは Elasticsearch は Elastic 社が開発しているオープンソースの全文検索エンジンです。 大量のドキュメントから目的の単語を含むドキュメントを高速に抽出することができます。 Elasticsearch では RESTful インターフェースを使って操作しますが、「Elasticsearch SQL」を使って SQL 文でクエリを記述することもできます。 OracleMySQL などのリレーショナルデータベースに慣れている人にとっては、最初はとっつきにくいと感じるかもしれません。 しかし、Elasticsearch の API はとてもシンプルなので、心配しなくても大丈夫です。 Elastic Stack とは Elastic Stack は Elasti

    はじめての Elasticsearch - Qiita
  • プログラミングで一番難しいのは「見積もり」だと思う - Qiita

    前書き プログラミングで一番難しいところの一つは、「見積もり」だと私は思う。人から頼まれてプログラミングをする時、必ず最初に聞かれるのが「だいたいどれくらいで終わるか?」だ。厳しいところだと「何日に納品してくれるのか?」を問われる(むしろこれが普通かもしれない)。まっさらな状況から過去の経験を総動員してかかる時間を予想したり、可能な限りタスクに分解して時間を見積ったりするが、いつも不安に駆られる。多くの人も、見積もりに対して困難と不安を感じているのではないかと思われる。見積もりに対する自分の知識と経験を話して他の人にも参考にしてもらいたいと思って記事を書いた。 見積もりという言葉には色々な意味を含むが、今回の記事では「プロダクトをリリースするまでの期間の見積もり」から「頼まれた一つの機能の完成させるための期間の見積もり」までのスコープで話をしたい。 なぜ見積もりをしないといけないのか? 見

    プログラミングで一番難しいのは「見積もり」だと思う - Qiita
    yuzu441
    yuzu441 2019/10/13