タグ

chidakiyoのブックマーク (963)

  • OAuthの言葉周りを整理する

    OAuthの仕組みとToken認証周りの言葉はいつまで経ってもはっきり理解できないものの一つでした。 しかし最近ようやく理解できるようになってきたのでとりあえずそれぞれの言葉の指すものや定義をここで整理してみようと思います。 リフレッシュトークン リフレッシュトークンとは アクセストークンの有効期限が切れたときに、認可サーバーにアクセストークンの更新リクエスト認証をするためのトークン。 OAuth自体はリフレッシュトークンがなくとも実装できるが、リフレッシュトークンはOAuthをより便利にするためのもの。 一般的に有効期限は長い。 ないとどうなるのか アクセストークンの期限が切れたらその度にSNS認証のあのログイン画面に飛ばされてメアドとパスワードの入力が必要になる。 セキュリティに関すること 有効期限が長くても安全性に問題がないと考えられる理由としては、アクセストークンの期限切れ時にしか

    OAuthの言葉周りを整理する
  • Goのhttp.Handlerやhttp.HandlerFuncをちゃんと理解する - oinume journal

    はじめに GoでHTTP Serverを作ろうとすると、標準ライブラリを使う場合以下のようなコードをよく書くと思う。 package main import ( "fmt" "log" "net/http" ) func main() { mux := http.NewServeMux() mux.Handle("/hello", http.HandlerFunc(hello)) log.Fatal(http.ListenAndServe(":8080", mux)) } func hello(w http.ResponseWriter, _ *http.Request) { w.WriteHeader(http.StatusOK) fmt.Fprintf(w, "Hello World") } このコードの登場人物としては以下になるが、それぞれなんだっけ?というのをいっつも忘れてしまうの

    Goのhttp.Handlerやhttp.HandlerFuncをちゃんと理解する - oinume journal
  • JavaScriptエンジンでの処理を理解する

    参考 https://developer.mozilla.org/ja/docs/Web/JavaScript/About_JavaScript https://gihyo.jp/book/2017/978-4-7741-8967-3 2 JavaScriptエンジンでの処理の流れ JavaScriptが実行されるまでの過程は、JavaScriptエンジンによって異なりますが、一般的には下記のようになります。 大きな流れとしてJavaScriptコードから、Token、AST(Abstract Syntax Tree、抽象構文木)を経て、CPUが実行可能なByte Codeにコンパイルされ、JavaScriptは実行されます。 例えは、console.log("Hello World !");というコードがByte Codeに変換されるまでのイメージ図は下記のようになります。 それでは、こ

    JavaScriptエンジンでの処理を理解する
  • TypeScriptでよく見る「?」「!」と仲良くしたい

    どうも、株式会社iCAREフロントエンドエンジニアのoreoです。 弊社フロントエンドは、Vue.js, TypeScriptで開発をしています。あるPRで、弊社技術顧問の方から、下記レビューを頂きました。 リファクタするときに気になったんですが、不要なところに?がついているのを散見しましたキャスト! | ? | asはどれも危険なコードでレビュワーの負担も大きくなるので、きちんと必要なところだけに入れるように気をつけてみてください 今まで?や!を安易に使っていたので、彼らの挙動について整理してみたいと思います! ?について オプションパラメーター(?) 概要 引数にオプションパラメーターをつけると、その引数が省略可能になります。例1.1で、test()を実行した場合、Expected 1 arguments, but got 0. と怒られますが、オプションパラメーターをつけると(例1.

    TypeScriptでよく見る「?」「!」と仲良くしたい
  • ゲームの仕様書を書こうまとめ

    ゲームの仕様書を初めて作成する人のための足掛かりのスライド ▼以下のスライドを一つにまとめました ・ゲームの仕様書を書こう1 仕様書作成の分業とリストの作成 https://www.slideshare.net/ChizuruSugimoto/ss-173331109 ・ゲームの仕様書を書こう2 仕様書に記載する機能内容 https://www.slideshare.net/ChizuruSugimoto/ss-173332578 ・ゲームの仕様書を書こう3 仕様書に記載するデータと画面 https://www.slideshare.net/ChizuruSugimoto/ss-173333150 ・ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用 https://www.slideshare.net/ChizuruSugimoto/confluence-17333

    ゲームの仕様書を書こうまとめ
  • Go1.18のGenericsで出来ないこと

    はじめに 先日Go1.18がリリースされました. リリースノートを見るとGo1.18の時点でのlimitationsが書いてあるのでコード書いて確認します. 全部で6つあります. 1つ目 The Go compiler cannot handle type declarations inside generic functions or methods. We hope to provide support for this feature in Go 1.19. genericな関数やメソッドの中で型宣言できない. package main import "fmt" func main() { fmt.Println("Hello, 世界") } func GenericsF[T any]() { // [NG] type declarations inside generic func

    Go1.18のGenericsで出来ないこと
  • Rustでゲームボーイアドバンスエミュレーターを書いた

    一通りちゃんと実装したので、大抵はちゃんと動いてくれるはずです。動かなかったり、画面がおかしかったり、音がおかしかったりしたらバグなので、ご報告いただけるとうれしいです。 エミュレーションコアが2つになったので、せっかくなのでエミュレーションコアのインターフェースを抽象化して、マルチエミュレーターにしました。 リリースページ からコンパイル済みバイナリをダウンロードできます。 マルチエミュレーター エミュレーターを作るうえで割と面倒でバカにならないのがフロントエンドUIの作成です。GUIアプリを作るのはそもそも結構大変で、ましてや昨今のアプリケーションはPCだけでなくスマホやWebといったタイプの異なる複数のプラットフォームで動かしたいというモチベーションがあります。特定プラットフォームにべったりで何となく動くように書けばいいやというのと比べると、取れる選択肢も限られてかなり面倒になってき

    Rustでゲームボーイアドバンスエミュレーターを書いた
  • 共通化すれば良いとは限らない - Object.create(null)

    ここのところ偶然なのか「共通化」という言葉を多く聞いているのですが, その言葉を聞くたびに身構えていることに気がついたので, この気持ちの出どころを共有しておきます. なぜ身構えているかというと, 共通化が必ずしもコードを良い状態にするとは限らないにも関わらず, それ自体が目的になってしまっている (ように見える) ことが多いからです. この手のリファクタリングの目的はあくまでコードの改善のはずで, そのことを忘れて共通化するだけで満足してしまうと, 良くてリファクタリングの効果が半減, 悪ければ逆効果になってしまいます. 個人的にコードを共通化する上で注意してほしいと思っているのは以下の二つです. コードを共通化すべきでない場合もある 共通化されたコードは一般的な原則にしたがって設計されなければならない 似たようなことは歴史の中で何度も繰り返し言われていることだろうと思いますが, 改めて

    共通化すれば良いとは限らない - Object.create(null)
  • nouhau/workflows/example/spanner-to-bigquery at master · gcpug/nouhau

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    nouhau/workflows/example/spanner-to-bigquery at master · gcpug/nouhau
  • Cloud Run: Concepts of Networking

  • Goで時刻を扱うチートシート

    この記事について 上のチートシートは、Goで時刻を扱う際に出てくる表現法と、それらを互いに変換するためにはどうしたらいいのかを一枚の図にまとめたものです。 この記事では、このチートシートに出てくる処理の詳細について掘り下げて説明しています。 使用する環境・バージョン OS: macOS Catalina 10.15.7 go version go1.18 darwin/amd64 OSのタイムゾーン: JST(日標準時、UTC+0900) 想定読者 この記事では、以下のような方を想定しています。 Goの基的な文法は分かっている人 異なる時刻の表現法を、Goではどのように変換することになるかを知りたい人 逆に、以下のような方は読んでも物足りないか、ここからは得たい情報が得られないかもしれません。 一般的にサーバーサイドで、どうすればタイムゾーンを正しく扱うことができるかを知りたい人 タイ

    Goで時刻を扱うチートシート
    chidakiyo
    chidakiyo 2022/05/23
  • ITエンジニア採用入門

    今、IT関連の技術は様々な企業の競争力の源泉です。一方で、実際に企業が必要とするよりもITエンジニアの数は少ないため、採用競争は激化するばかりです。そこで、元ウェブエンジニアITエンジニアの採用担当を経験した私の視点で、ITエンジニア採用に関する情報をまとめることにしました。 なお、ここでいうITエンジニアはアプリケーションエンジニアインフラエンジニア機械学習エンジニア、QAエンジニアなどIT関連エンジニア全般を指します。 # 更新情報 * 2022/05/17 - 公開 * 2022/05/17 - 中途採用前提であることを Chapter 1 に追記 * 2022/05/18 - 誤字の修正 Chapter 15 「行進」 -> 「更新」 ※はてなブックマークでの指摘ありがとうございます * 2022/05/19 - 活用事例の Chapter を追加 * 2022/05/20

    ITエンジニア採用入門
  • DBの無い世界線でECアプリを作ってみた話。〜Stripe Search APIを活用〜

    作ったもの 自社でDBを持たず、Stripeのダッシュボードで顧客管理、商品管理、注文管理ができる、LINEチャットコマースアプリを作りました。 友だち追加から商品詳細 単品商品購入手順 定期販売購入手順 定期販売のキャンセル手順 作った経緯 2022年4月に公開されたStripe Search APIにより、Stripeに保存している顧客、注文、商品、といった情報にクエリをかけることができるようになりました。 それにより、「自社でDBを作らなくても、Stripeに保存した情報だけでアプリが作れるのでは?」と思い、一番作り慣れているLINE×ECアプリで実験することにしました。 しかしStripe APIだけでは、以下の処理に対応できません。 在庫管理 トランザクション 注文のステータス管理(商品準備中や配送中など) ECサイトにおいて在庫管理は生命線といれるかもしれません。 しかし、SU

    DBの無い世界線でECアプリを作ってみた話。〜Stripe Search APIを活用〜
  • OpenSLOについて | フューチャー技術ブログ

    はじめにはじめまして、原木と申します。 皆さまはSRE NEXTをご覧になりましたでしょうか? SRE NEXTは 先日実施された『信頼性に関するプラクティスに深い関心を持つエンジニアのためのカンファレンス』です。国内外のエンジニアが日々SRE(サイト信頼性エンジニアリング/Site Reliability Engineering)の実践手法を共有することで、Webサービスが今後運用、成長していくための次世代の信頼性を担おうとしています。 もしもWebサービスの運用を安定的に行う手法やそのためのチームビルディングに興味がある場合、SRE NEXTの動画セッションやスライドが公開されると思うのでご覧ください1。 さてブログではそんなSREとも関係の深い、OpenSLOに関して取り上げたいと思います。 OpenSLOとは最近、SLOモニタリングという言葉が注目を集めつつあります。例えば、Go

    OpenSLOについて | フューチャー技術ブログ
  • GA4移行で最低限やっておくことを解説!よくある質問と解決方法も更新中 | [マナミナ]まなべるみんなのデータマーケティング・マガジン

    まだ旧Googleアナリティクス(UA)からGoogleアナリティクス4(GA4)移行していない人は、プロパティ作成とデータ保持期間の延長だけ設定しておきましょう。 この記事を書いている成瀬はUAを3年ほど使っています。もちろん実際にGA4に移行する方法も知っているため、その手順や早めに作業しておくことだけ分かりやすく解説することも可能です。先にGA4そのものを知っている人にむけて今すぐやるべき最低限の作業だけ解説します。 プロパティ作成の際に入力するのは基情報と追加情報、データストリーム種別、サイトURLとストリーム名になります。ここで言う基情報とはプロパティ名、レポートのタイムゾーン、通貨、業種、ビジネスの規模、ビジネスにおける利用目的です。データストリーム種別ですがWebデータを取得する場合は「ウェブ」、アプリの場合なら「Android アプリ」「iOSアプリ」を選択してください

    GA4移行で最低限やっておくことを解説!よくある質問と解決方法も更新中 | [マナミナ]まなべるみんなのデータマーケティング・マガジン
  • オシャレでカッコイイGolangテク 15選 - 3DプリンタとITとプリキュアのブログ

    なんか最近異常にブログの下書きが溜まっていて、書きかけの記事が全部で100件を超えました。 その中でGoでこんな書き方できるよ〜みたいなのが結構いっぱいあって、一気にまとめて放出したくなったのでその話。 スワップ インスタンスを作らないメソッド呼び出し struct cast 式なしswitch unpack operator キャストiota 式にiotaを含める 不規則なiota 無名引数 ブール定数数値定数文字列定数以外にもconstが使いたい! 無名再帰関数 GoStringer interface 多値戻り値を引数にする ソート済みスライスへのinsert アロケーションをしないFilter まとめ スワップ 多値を使うと一時変数を必要としないスワップが書けて「そうそうこれが書きたかったんだよね〜」って気分になれます。 a := 10 b := 20 a, b = b, a これ

    オシャレでカッコイイGolangテク 15選 - 3DプリンタとITとプリキュアのブログ
  • Cloud SpannerとCloud Pub/Subとで実装するTransactional outboxパターン | メルカリエンジニアリング

    Credit Designチームでバックエンドエンジニアをしている@iwataです。主にメルペイスマート払い関連の開発をしています。 Merpay Advent Calendar 2021 の21日目の記事をお届けします。 メルペイスマート払いの開発においてもご多分に漏れず、マイクロサービスアーキテクチャを採用しています。マイクロサービス開発において避けては通れない問題として、分散トランザクションによるデータ整合性の担保があります。メルペイスマート払いマイクロサービスでは一部APIにおいて整合性担保のために、Transactional outboxパターンを用いた実装をしています。 記事ではテーブル設計を含めたその実装の詳細を紹介したいと思います。 tl;dr Transactional outboxパターンを使ったSpanner, Pub/Sub間での整合性担保 Spannerならでは

    Cloud SpannerとCloud Pub/Subとで実装するTransactional outboxパターン | メルカリエンジニアリング
  • 中日新聞:自動車工場のガロア体 QRコードはどう動くか

    その誕生を地元新聞も経済新聞も記事にしなかった。2年後、『コードの情報を白黒の点の組み合わせに置き換える』と最下段のベタ記事で初めて紹介された時、その形を思い浮かべることができる読者はいなかった。いま、説明の必要すらない。QRコードはなぜ開発され、どう動くのだろうか。 QRコードは、自動車生産ラインの切実な要請と非自動車部門の技術者の「世界標準の発明をしたい」という野心の微妙な混交の下、1990年代前半の日電装(現デンソー)で開発された。 トヨタグループの生産現場では、部品名と数量の記された物理的なカンバンが発注書、納品書として行き来することで在庫を管理する。そのデータ入力を自動化するバーコード(NDコード)を開発したのがデンソーだ。 バブル全盛の1990年ごろ、空前の生産台数、多様な車種・オプションに応えるため、部品も納入業者も急激に増え、NDコードが限界を迎えていた。63桁の数字しか

  • Git の仕組み (1) - こせきの技術日記

    目次 はじめに Git を使ったことがない方へ 生のデータが見たい方へ Git の全体像 .git の中身 Git オブジェクトデータベース 4種類のオブジェクト リファレンス リファレンスのリファレンス 大きなツリー Git オブジェクトの ID と 中身 ハッシュ関数 SHA1 の簡単な説明 tree と blob オブジェクト tree と blob の参照関係 ルートツリーの ID でツリー全体を識別する commit オブジェクト リファレンスとブランチランチランチ先頭を指すリファレンス HEAD リファレンス detached HEAD 2種類のタグ 一時待避 (stash) インデックス キャッシュとしての役割 マージ Fast-Forward マージ non Fast-Forward マージ rebase reset 2種類のブランチ 各リポジトリが自分のブランチ

    Git の仕組み (1) - こせきの技術日記
  • 1000万ユーザに耐えるサーバを作ってみた

    概要 スケーラビリティが高く1000万ユーザに耐えるAPIサーバを作成しました。TwitterのようなSNSです。実装はGitHubで公開しています。 開発環境は次の通りです。 Node 16.14 Express 4.17.3 DynamoDB 2012-08-10 機能要件は次の通りです。 ツイート機能 ツイートに対してコメント機能 フォロー機能 タイムライン機能 導入 Facebook、Amazon、Youtubeのような数億人のユーザを抱えるサービスでは大量のトラフィックを捌く必要があります。大量のトラフィックを捌くためのアプローチとして一般的に使われるのはスケールアップではなくスケールアウトです。スケールアップは性能の高い機器を使うためにコストが高いです。また、1つのサーバで運用するためにパフォーマンスの限界が存在します。 スケールアウトについて考えます。アプリケーションは大きく

    1000万ユーザに耐えるサーバを作ってみた