chevron_left

メインカテゴリーを選択しなおす

cancel
i407なプログラマ https://i-407.com/

すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開!他エンジニアリング情報などネタ多め。

ason
フォロー
住所
未設定
出身
未設定
ブログ村参加

2022/01/02

arrow_drop_down
  • NYM-Mixnetによる誰にも傍受されないプライバシー通信を試してみた

    さて、NYMというプロジェクトをご存じだろうか?2022年4月現在、おそらくほぼすべてのインフラエンジニアやネットワークエンジニアがNYMを知らないだろう。一方で仮想通貨トレーダでこのページたどり着いたひともいるだろう。この記事ではNYMへの投資のお話は一切しないのでご注意いただきたい。エンジニア目線でのプライベートネットワークについてあれこれ考察してみたいというのが目的である。 NYMとは NYMとは以下のプロジェクトのことだ。 https://nymtech.net/ 詳しい解説は公式の動画等を参考にしてもらいたいが、平たく言うと、通信の秘匿性を高めるネットワークを提供するプロジェクトのことらしい。 近年ではWebリクエストはHTTPS(SSL)通信が一般的で、“暗号化"されているといわれる。確かにそれは事実だが、エンジニアの諸君はご存じだと思うが、IPHeaderやトランスポートヘッダーなど"暗号化"されていない部分がある。これは、例えばあなたが入力し送信するクレジットカード情報はしっかり暗号化されているが、あなたの家のグローバルIPアドレスと送信先のIPアドレスやポートなどは見えてしまうってことだ。当然、ハッカーや、国家権力、巨大企業でないと、そもそも特定の通信を傍受することは難しいかもしれない。しかし、例えばあなたが如何わしいエロサイトを見ていたとして、国家権力などがそのエロサイトのサーバーをおさえて調べれば当然、あなたが見たということも突き止められるはずだ。(IPアドレス開示で特定される) VPNやTorではだめか? NYMのサイトでは、VPNやTorとNymを比較している。 VPNはどこかのVPNサーバーやVPN事業者を介して通信する方法だが、VPNサーバーにはあなたが接続した形跡が残ってしまう。そしてVPN事業者がその情報を外に漏らすならまったく秘匿性がなくなってしまう。また、Torも同じで、Proxyサーバが本当にあなたの秘匿性を確保してくれるかどうかは疑わしい。むしろTorは匿名の存在が無償でネットワークを構築しているらしいので、その中に悪徳な人間がいたり、国家権力がTorネットワークを傍受している可能性がある。 そこでNYMでは、ネットワークのノード提供者にNymトークンの報酬を与え、さらに通信パケットをばらばらにしてMixnetを通す技術によりプライバシー通信を実現しているらしい

  • ENSとfleek(IPFS)でWeb3.0なWebサイトを作成してみた

    2020年ごろから巷で「web3.0」みたいな言葉が流行っている。また、もっと前から仮想通貨のブームもあり、システム業界ももしかしたらどんどんと「分散型」のweb3の時代に突入していくのかもしれない。 私は仮想通貨なんかを少し嗜む程度でweb3の世界のDAOなどのシステムを構築した経験はない。なので完全な素人なのだが、今回簡単にweb3を体験してみたのでこの情報をシェアする。もしかすると5年後くらいにはweb3の掲げるDAO(Decentralized Autonomous Organization)が一般化しているのかもしれないし、今のうちにちょっとかじっておこうと思う。 完全分散型なWebサイト構成 今回の構成は以下で行う。 ENS(Ethereum Name Service) Fleek(IPFS) ENSの購入や設定にETH(イーサリアム)が必要なので、完全に無料ではできない。また、以下はすべてイーサが入ったウォレットと接続している前提だ。 DNSではなくENS 従来のシステム業界ではDNSという言葉が存在するが、このWeb3の世界ではENS(Ethereum Name Service)が最も有名だ。

  • ブラウザ上のカメラでかざし画像を識別するWasmライブラリ(pHash)

    ブラウザ上でカメラを起動して映っている映像を操作することができる。そして映しているものがあらかじめ用意されたどの画像と一致するのかというシステムを作成した。よいライブラリが存在しないか探してみたんだが見当たらなかったので、自分用に作成したものを公開してみた。正直汎用性はないけど参考にしてみて。(Rust,Node必須) https://github.com/j7w2/image-scanner 全体的な仕様 カメラの起動、映像の判定などすべてブラウザ上で動作させ、バックエンドなどとは一切通信しない。 QRコードを撮影するように特定の形の対象をカメラにおさめるので機械学習での物体検知や画像の解析は行わない 画像が同一か否かについては"Perseptual Hash (pHash)“で判定 hash化の処理に多少の時間がかかるのでRustのwasm(WebAssembly)を作成してJSから呼び出す pHash値の距離で画像判定 画像が近似しているかどうかの判定ロジックで手軽なものに画像のhash値の距離で測定するpHashという方法がある。今回これをを使用するが、手軽といっても画像のピクセル値をハッシュ値計算するのは結構なマシンパワーを使用するようだ。なので処理効率が良さそうなRustで画像ハッシュ化するモジュールを作成し、WasmとしてJsから読み込む形をとる。 RustでgRPCが最速か?1msを追い求める 目次 リクエストからレスポンスまでの時間はなるだけ短いほうがいい。ユーザー操作性的にも好ましいし、昨今ではリクエスト~レスポンスまでの時 … Read More また500px~1000px程度の画像のハッシュ値での精度が、最も高そうなのは(12bit×12bit)程度だったのでデフォルトでhash_sizeは12とした。

  • AWS-NLBでwwwありなし・HTTP/HTTPS通信に強制リダイレクトする方法(Network Load Balancer)

    AWSのALB(Application Load Balancer)を使って、HTTPS強制や、wwwありなし強制のリダイレクトを行うと思われる。その場合特に難しいことはなくそのための情報も腐るほど出てくる。ALBは料金も少し安いし通常はこのALBを使用すると思われる。 ALBが使えないケース(Route53が使えない) しかし、ALBを使用できないケースもある。それは、NS(ネームサーバー)をRoute53に設定できない時だ。Route53以外でDNSを設定する場合、ALBへのルーティングはCNAMEを設定せざるを得ない。しかし、例えば、WEBサーバーをドメインaaa.comとwww.aaa.comで運用したい場合(wwwなしをwwwありにリライトして)、「aaa.com」はCNAMEを設定できないのだ。DNSの仕組み上不可能である。そのため、独自ドメイン(aaa.com)をALBへ向けることができないのだ。(自分が知らないだけで、外部NSでALBを運用する方法があるのかもしれないが) こういう場合は、NLB(Network Load Balancer)を利用すれば、リダイレクトを実現することができる。このNLBの情報があまり引っかからないので紹介する。ちなみに今回は「wwwありSSL通信」へリダイレクトするケースを紹介する。 NLB、NginxでSSL通信 NLBでは、 ロードバランサに対してStaticIPアドレスを設定できる。そのため、DNSにwwwなしもwwwありもAレコードで設定できNLBに向けることができる。しかもAWSのACMによってSSL証明書をセットしてhttps通信も簡単にできる。以下のイメージだ。 そして、Webサーバー側は80ポートで受けるので、ロードバランサではなくNginxでHTTP通信をHTTPS通信へリダイレクトするはずだ。ググると以下のconf設定がよく出てくる。 if ($http_x_forwarded_proto != https){ return 301 https://$host$request_uri; } しかし、これはALB用の書き方で、NLBではうまくできない!!

  • RustでgRPCが最速か?1msを追い求める

    目次 リクエストからレスポンスまでの時間はなるだけ短いほうがいい。ユーザー操作性的にも好ましいし、昨今ではリクエスト~レスポンスまでの時間で課金されるクラウドサービスも多い(GCPのCloudRunとか)。特にマイクロサービス設計の場合は、リクエスト~レスポンスまでの時間がより重要になってくる。 今回はプログラミング言語や通信プロトコルによってどのくらい時間が変わるのかを紹介。このような記事は量産されてきているだろうけど、その量産に加わることにする。なお以下検証は、普通にググって出てくるような実装方法で行っているので、最速最適化を行ったプログラムコードではないことをご了承いただきたい。 みんなの280時間を奪ってはいないか? ものすごい単純計算なんだけど、10,000人のユーザーが存在していて、年間で1人あたり1000回コールするサービスがあるとするじゃん?もし、そのWebAPIのレスポンスまでの時間を100ms(ミリ秒)短縮できると、全部でおよそ280時間もの短縮になるんだよね。 逆に言うと、よろしくないプログラムコードを書いたり通信方法の選択によって、 みんなから280時間も時間を奪っているかもしれない。しかもそのうち無駄なコンピュータ処理時間もかかっているため、コストも上がる。もちろんユーザーの通信状態によってレスポンス時間が大きく変わるのは間違いないが、今回は、プログラム言語(プログラムの実行時間)と通信プロトコル(リクエスト・レスポンスの通信時間)のみにフォーカスする。またAPIの実行環境はGCPのCloudRun(1cpu 512MB)とする。

  • なぜみんなFXで勝てないのか。Pythonでシミュレートしてみた

    今回のような検証は多分何十年も前からいろんな人にやり倒されてきたことかと思うが、ここであえて書いてみる。今回はプログラミングは無関係だ。ていうかPythonも無関係だ。 自分は10年ちょいくらい前にFXで多額のお金を溶かしてしまった人間だ。と言っても数百万円程度だが、若かりし自分にとっては首吊りレベルに落ち込んだ。あれから月日はたったが、あのときのトラウマからFXで勝つことは不可能とさえ思っている。以下のような記事で、AIでFXの取引を行うという検証を行っているところだが、投資金額はものすごく少なくしている。 AIでFXのトレード判定実装したらゼニの匂いがしてきた 前回の記事でFX(為替)のレートと速報ニュースの関係についてデータを調査してみたが、今回は速報ニュースを受けたらすぐに機械学習(AI)のNLPモデルで分類し … Read More いろんな情報を収集したり、テクニカル分析を駆使して自信満々にポジションを持って、朝起きたら給料数か月分が吹き飛んでてオハギャーみたいなのは二度と経験したくないんものだ。以下の内容は、トレーダー達は誰でも知っていることだろうけど、無知な私が気付いたことを書きたい。 な~んにも考えずに無心でランダム取引の場合 ポジションをいつ持つか、LかSかなどの判断が間違えているのか原因は定かではないが、ひとまず何も考えずにコイントスで ランダムに意思決定する場合 を考えてみる。そして膨大な試行回数で一体どのくらいの期待値になるのかを調査してみる。

  • 非認証APIのアクセス対策(粗大ごみセンターのシステムの例)

    目次 前回の記事で書いたとおり、全くユーザーが動作させる機能がないようなコーポレートサイトやLPサイトは静的サイトで作成するほうが、あらゆる面でメリットがある。ところがそれら以外の普通のWEBシステムでは、バックエンドでの動的な処理が必要なはずだ。今回はそのセキュリティの話。 バックエンドのアクセス制御・セキュリティ対策 今回考えたいのは以下のようなことだ。これは静的サイトだけでなく普通のSSRサイト(.NetとかRailsとかlaravelで作ったシステム)でも起こりうることだ。ちなみにクライアントはブラウザやアプリのことを意味する。 つまり、特定のクライアント以外からAPIを悪い人がたたきまくれる状態って非常に怖いよねってこと。ある程度対策が存在するけど、特に静的サイトではこういう対策がお粗末なサイトがたくさん存在する。 これはCORS, CSRFなどの話か、、否! まず、適切なユーザー認証を行うこと、そしてCORSの許可ドメインをガバガバにしない、CSRFトークンを送信するなどの対策は当たり前にやってほしい。CORSとかCSRF、XSSなどでググるとSSRサイト、SPAサイトそれぞれの対策方法が出てくるので、よくわからない人はチェック。

  • Rustのwasmを逆コンパイルして丸裸にされるのを難読化で抗う

    WebAssembly(wasm)が世の中に登場して久しいが、今回はこのWasmのDecompile(逆コンパイル)の話。 聞くところによるとWasmは、不正にマルウェアの稼働など悪用に使われていることが多いのだとか。またwasmはJavascriptに比べてマシンパワーを効率的に使うことができるタスクがいくつかあるが、2022年現在では未だブラウザ内のほとんどのDOM操作、UI操作がJSの処理速度に劣っているとも言われているので、結局将来的にwasmも消えていく可能性もある。 WebAssembly(wasm)にセキュリティ情報を含めて良いか コンパイル後のwasmファイルはバイナリデータであるが、当然デコンパイルして人間が理解できそうなコードに戻すことができる。なので、重要なシークレットキー的なものをwasmの中に入れてしまうと抜き出されてしまう可能性がある。なので、結論から言うと 重要な情報(dbの接続情報、他のサービスへのシークレットキーなど)は絶対にwasmに含めてはいけない。 一方、別に抜き取られてもそれだけで何か被害があるわけではなく、できれば知られたくないような情報ってこのwasmに隠せないかなと思ったわけ。例えば認証無しでコールできる公開APIの接続キーとか。もちろんブラウザのインスペクターでNetworkを見ると接続時のキーなどは見えてしまうけど、wasmでワンタイムトークンを発行しさらに暗号化したものをHTTPヘッダーに付与して送信するとかにしたらどうだろう?APIへの接続キーを自由に生成するにはwasmを逆コンパイルして中身を解析しないと分からず、このコストが高ければ高いほどハッカーはあきらめてくれる可能性が高い。 ということで今回はRustによるWebAssembly(wasm)のデコンパイルと文字列の難読化について調査してみた。 Rustでのwasmのコード 今回は以下のコードでwasmをコンパイルして使ってみる。 externcratewasm_bindgen;usewasm_bindgen::prelude::*;#[wasm_bindgen]pubfn secret(key: &str )-> String {ifkey!="this is pass!"{returnString::from("error");}returnString::from("success")} バ

  • 静的サイトホスティングは万能か?

    目次 WEBサイトって一般的にブラウザがHTMLやCSS、Js、その他画像などのファイルを読み込んで描写されているものを言うよね?一方Webサイトを作成するには、Webサーバーが必要という。特に有名なCMSであるWordPressではサーバーでPHPやデータベースが動作してサイトが構築される仕組みになっている。私が学生のとき、WEBサイトはHTMLやCSS,JSによって表示されているのに、なんでサーバーサイドの言語(PHPなど)とかDBが必要なのかなと思ったことがある。 当然PHPとかDBは動的な挙動をするために必要なわけだ。例えばブログのコメント機能とかログイン認証機能とかのためにサーバーサイドのプログラムが必要だということだ。ただ、世の中の多くのサイトやブログにサーバーサイドの処理が必要かって言われると、はっきり言って不要じゃないかと思う。たとえば多くの小さな会社のコーポレートサイトはWPで作成されていることが多いけど、 わざわざWPで作成する必要ある? サーバーでPHPが動いたりMySQLに接続してデータの読み書きが頻繁に行われたり、まるで無駄な動作が多い。 ワードプレス使う必要あるか? 例えば3ページしかないコーポレートサイトで、ユーザーが操作する機能(コメントなど)がないサイトを考えてみよう。トップページとAboutUsページとかプライバシーポリシーとかのページのみで文字列と画像で構成される。こういうサイトは静的サイトと呼ばれる。本来ならサーバーサイドでプログラムが動作する必要はないしデータベースも必要ない。

  • フィッシング詐欺サイトに大量のゴミをプレゼントできるか

    ここ2年ほど スミッシング詐欺(=SMSフィッシング) のメッセージを何通か受けたことはないだろうか?Amazonとか銀行からSMSのメッセージが届き、そこにURLが書かれていてタップすると詐欺サイトに飛ばされるあれのことだ。まぁ普通に若い人はあんなバカな詐欺に引っかかるとは思えないけど、飛んでくること自体にイラついたりする。なぜ電話番号を知っているのか?って思うかもしれないが、なんでも、犯罪者はランダム(または連番で大量)でSMSを送信しているらしいから、たまたまあなたの携帯に届いてしまっているってことだ。 今回この詐欺師達の手口を分析して、反撃手段を考えてみたい。ジョーダン半分で楽しんでもらいたい。 実際に届いた詐欺SMS URLを見てみて。“https:abnrno.com"って。いや、どこかに"amazon"くらい入れろよってくらいやる気なし。でもお年寄りとかはURLなんて見ずにポチるからどうでもいいんだろうね。そしてこのURLをタップした先が以下だ。 amazonのログイン画面やん!これにあなたの本当のamazonのアカウントを入力したら、個人情報が抜き取られるっていう詐欺ね。実際の本物のAmazonのログイン画面は以下で、見た目は少し違っている。 詐欺師に関する情報はどこかに書かれているか? WHOISコマンドで見ても、所有者の情報は全く分からないようだ。分かるのはnamesilo.comというサービスで取得されているドメインってことくらい。 dig打ったら以下の情報が出た。 abnrno.com. 0 IN A 172.

  • リーダブルコードを意識して人に優しく

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • Dockerのヤバさを再認識

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • Gitがなかった時代はみんな頭悪かった

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • ロボットで「私はロボットではありません」を突破してみる

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • AIでFXのトレード判定実装したらゼニの匂いがしてきた

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • Pythonでニュース速報と為替レートの関係を調べてみる

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • WordPressサイトを守る最低限の設定

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • 情弱が運営するWordPressサイトを攻撃する

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • RESTfulなAPI。それは魔法です。

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • 特定の箇所を自分でいじって。それがWebAPI開発上達の基本

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • Webサーバーが出来上がるまで

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • HTTP通信の基本をイメージできなければバックエンド実装は何もできない

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • リファクタリングが自分を成長させてくれる

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • 簡易投票システムプレビュー

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • え、ウソ!?プログラミング簡単すぎ!

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • プログラミング下手な人、変わりたいならまず

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • プログラミング宝典目次

    プログラミングの初心者が誰でもすぐに上達できるノウハウをまとめた宝典!

  • まずはこれだけ!VSCodeのショートカット操作!

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • いいから黙ってVSCodeとVimバインド

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • 初心者プログラマは基本動作だけで年間66時間以上も損しているかも?

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • 誰でも短期間でプログラマになれる

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • 検索結果

    i407プログラミング技術サイト検索結果

  • 膨大なサイズのCSVファイルから爆速でMySQLへインポート

    CSVファイルからDB(MySQL)にインポートする機能はよくあるし、情報もゴロゴロとある。前回の記事では大量のデータをCSVファイルとして素早く書き込む方法を書いたが、今回はその逆と言っても良い。 ただ、CSV→DBは色々な制約を受けるので最も早く確実なただ一つの答えがあるわけではなさそう。今回紹介するのはサーバーのupload_max_filesizeや利用可能メモリについては度外視している。 CSVのMySQLインポートの手段 先に方法を列挙すると以下のようになる。 1レコードずつインサート(激遅) バルクインサート(速い) バッチでインサート(ちょっと遅い) LOAD DATA LOCAL INFILEインサート(最速) 全てのやり方ができる環境かどうかも考慮に入れる必要がある。 また今回はフレームワークで使用されることを前提としてPHP(Laravel)で検証しているが、Insertの処理速度という意味ではDBの問題なのでどのフレームワークであろうが、どの言語であろうが同じである。

  • 【PHP】大量データをfputcsvで瞬時にCSVファイル出力する方法

    phpでcsvを作成する場合、fputcsv関数を使用するだろう。しかし数十万行・20MB以上のデータをcsvファイルとして書き込みする場合、かなりの時間がかかってしまう。 今回通常のレスポンスタイム内(3秒以内)でPHPのfputcsvでファイルを書き出す必要があり、多少情報が少なくて調べたことをまとめる。 クッソ遅いfputcsvのやり方 ネットで調べると以下のやり方がずらりと出てくる。ほとんどこればっかり書かれている。 $list = [ ["hoge", "fuga"], //省略 ] $fp = fopen('export.csv', 'w'); foreach ($list as $fields) { fputcsv($fp, $fields); } fclose($fp); 30万行以上のデータを上記のfputcsvでファイル書き出ししようとしたら30秒程度かかったのだ。そりゃ一行ずつflieにputしていくからそのくらいかかるのだろう。

  • Android端末とリーダー(外部機器)をUSB接続して充電する

    ソフトウェアの話から逸れるのだが、アプリケーション(iOSやAndroidなどのスマホアプリ)からUSBで機器に接続する場合、USBハブなんかでポート増やしたい時がある。 今回Androidタブレットを充電しながらリーダー(felicaなど)にUSB接続するアプリを開発する必要があった。 通常のスマホやタブレットにはUSB端子またはライトニング端子が1つしかないはずだ。そのため、端末からハブを使って端子を増やす方法をとるだろう。 充電しながら外部機器とusb接続って普通に考えてできそうなことであり、ネットでもこのような情報が出てくるのに、えらくハマったので以下に書き記す。そこにはアプリ開発以前の問題が存在したのである。 USBハブにはホスト・クライアントがある まず、タブレットと外部リーダーを通常のUSBハブで接続してみたが充電状態にはならなかった。 そもそもUSBハブとは接続元(ホスト)のUSBポートを分岐させるもののようで、分岐先(クライアント)同士でデータのやり取りもできないようだ。 上記の例では電力はそれぞれ供給されているが、タブレットと外部機器をUSB接続できない。 クライアントポート同士で接続できない、そしてハブにはホストポートが1つ、クライアントポートが複数という事実。 スマホ・タブレットを充電しながら外部機器にUSB接続できない? そしてもう一つの事実として、通常のUSBハブではクライアント機器に対しては電力を供給するが、ホストには電力供給されない。 つまり通常のUSBハブではホスト(タブレット)に電力供給を行えない。(充電できない) このような単純な構成がなぜできないのか!?さっぱりわからん。もしスマホやタブレット側にUSB端子以外の充電方法があればUSBポートから電力供給されなくても問題ないのだが。 USBハブにはPD(Power Delivery)対応のものがある 2015年にUSB 3.1の追加仕様として定義されたもので、従来のUSBバスパワーでは4.5W、USB BC(Battery Charging)仕様でも7.5Wまでだったが、最大で20V/5Aの100Wの電力を供給することができる。

  • Node.jsのclass-validatorでユニークバリデーション

    nodejsのclass-validatorについて。 https://github.com/typestack/class-validator class-validatorインストール modelクラスのプロパティにアノテーションでバリデーションルールを記載し、1つのメソッドでバリデーションチェックしてくれるライブラリだ。 ほとんど使い方は公式にある通りでする理解できるが、ユニークチェックに少しハマったのでメモ。 class-validatorでユニークバリデーションチェック Hogeクラスはhogeテーブルのモデルで、emailカラムの重複チェックをしたい時は以下のようにする。 import { validate, registerDecorator, ValidationOptions, ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments } from "class-validator"; export class Hoge { @Unique({ message: "このメールアドレスは既に使用されています。" }) public email: string null = null; } @ValidatorConstraint({async: true}) export class UniqueConstraint implements ValidatorConstraintInterface { async validate(value: any, args: ValidationArguments) { // DBに接続してvalueの一致レコードを取得 // 一致レコードが存在する場合はfalse(バリデーションエラー) return true } } export function Unique(validationOptions?

  • AxiosでCookieを送信してSessionを共有する

    ブラウザからAxiosでCookieセット ブラウザのSessionCookieなどをaxiosでそのままサーバーに送信したい時は以下のようにセットする。 axios.get('url', { withCredentials: true } ) そしてサーバー側は次のように許可する。(cors使用) 今回はサーバーサイドがNoneJSのexpressの場合の例だが、他の言語・フレームワークでも同じだ。 import * as express from "express"; const cors = require('cors') const app = express() app.

  • CentOSサーバ上DockerコンテナでDNS解決されない時は

    dockerコンテナ内でDNS名前解決されない 本番サーバーを以下の環境で構築する場合。 CentOS7 Docker Dockerコンテナ内から外部のエンドポイントにアクセスするとき、DNS名前解決できず困ったことがある。 以下の2つのうちどちらかの方法でコンテナにDNSを指定することで解決できた。 docker-compose.ymlでDNS直接指定 docker-compose.ymlに以下のように記述。 version:'3.3'services:app:restart:alwaysdns:8.8.8.8 resolv.confマウント 以下のresolv.confを作成し、コンテナ内の/etc/resolv.confにvolumeマウント。 search google.internal nameserver 8.

  • No Search Found

    すべてのプログラマを上級者に導くサイト!最短距離で一人前のプログラマになるためのノウハウを公開します!

  • Contact

    メールアドレス 件名 本文 送信 送信が完了しました new Vue({ el: "#app", data: { email: "

arrow_drop_down

ブログリーダー」を活用して、asonさんをフォローしませんか?

ハンドル名
asonさん
ブログタイトル
i407なプログラマ
フォロー
i407なプログラマ

にほんブログ村 カテゴリー一覧

商用