タグ

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

  • OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る

    認証は単純な概念で、別の言葉で言えば人確認です。Web サイトにおける人確認の最も一般的な方法は ID とパスワードの組を提示してもらうことですが、指紋や虹彩などの生体情報を用いた人確認方法もありえます。どのような確認方法だとしても (ワンタイムパスワードを使ったり、2-way 認証だったりしても)、認証とは、誰なのかを特定するための処理です。開発者の言葉でこれを表現すると、「認証とは、ユーザーの一意識別子を特定する処理」と言えます。 一方、認可のほうは、「誰が」、「誰に」、「何の権限を」、という三つの要素が出てくるため、複雑になります。加えて、話をややこしくしているのは、この三つの要素のうち、「誰が」を決める処理が「認証処理」であるという点です。すなわち、認可処理にはその一部として認証処理が含まれているため、話がややこしくなっているのです。 認可の三要素をもう少し現場に近い言葉で表

    OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る
  • 公開鍵暗号RSAの数的構造 - Qiita

    はじめに 背景 これまで、電子署名DSA/ECDSAの数的構造や電子署名EdDSA(ed25519)の数的構造など、離散対数問題に基づく公開鍵暗号について記事にしてきましたが、オーソドックスながらRSAについても数的な構造と簡単な実装サンプルをまとめてみることにしました。 RSAの特徴 RSAの機能的特徴 ※記事で特には触れませんが予備知識として DH法 ( ディフィー・ヘルマンの鍵交換 ) に次いで古く、非常にポピュラーな公開鍵暗号 暗号化 ( RSA暗号 )・電子署名 ( RSA署名 ) に両用できる、今では珍しい方式 特にRSA署名が、SSL/TLSやSSHなど各所で利用されている RSAの数的構造 巨大な数の素因数分解の困難さにより、計算の一方向性を実現 べき乗のあまりの周期性を利用し、逆変換の関係にある2処理を実現 → 暗号化・電子署名への両用のカギ 2つ ( あるいは複数 )

    公開鍵暗号RSAの数的構造 - Qiita
    t_mori
    t_mori 2021/07/19
  • CentOSなどで使う、EPELってなんだ? - Qiita

    TL;DR EPELは、Extra Packages for Enterprise Linuxの略 エンタープライズLinux用の高品質な追加パッケージセットが含まれている Red Hat Enterprise Linux、CentOS、Scientific LinuxOracle Linuxなどでの利用に限定されるものではない 使う場合は自己責任で CentOSに関するリポジトリ CentOSおよび、サードパーティ製のリポジトリに関する一覧は、こちらのページに記載があります(完全なリストではないようですが)。 Available Repositories for CentOS 大きく、CentOSが提供するリポジトリと、サードパーティ製のリポジトリがあり、EPELはサードパーティ製のリポジトリに該当します。 サードパーティ製のリポジトリに関する注意点は、こちらです。 WARNING:

    CentOSなどで使う、EPELってなんだ? - Qiita
    t_mori
    t_mori 2021/07/19
  • expectやsshpassを使わずにシェルでSSHパスワード認証を自動化する - Qiita

    はじめに 接続先サーバ側を変更できるのであれば公開鍵認証方式をおとなしく使いましょう。 どうしてもパスワード認証方式を使わないといけない場合は、接続クライアント側にソフトウェアをインストール可能ならSSHPassを使いましょう。巷にはexpectコマンドを使った方法があふれていますが、インストール可能な環境ならSSHPassのほうが良い (参考: sshにパスワードで自動ログインするならexpectよりもsshpassを使おう サーバ側もクライアント側も変更がどうしてもできない…残念ながら大人な事情でそういうこともあります。そんな時は記事が参考になるかと思います。 実現方式 sshにはSSH_ASKPASSという仕組みがあります。以下、引用。 SSH_ASKPASS パスフレーズを入力する際、ssh が端末から起動されているとssh はパスフレーズをその端末から要求します。ssh が制御

    expectやsshpassを使わずにシェルでSSHパスワード認証を自動化する - Qiita
    t_mori
    t_mori 2021/05/14
  • 混沌を極めるWindowsのssh-agent事情 - Qiita

    どうしてこうなった。 何の話? WindowsでのSSH-AGENTとSSHの話です。 この記事での用語: SSHとssh, SSH-AGENTとssh-agent この記事では、SSH-AGENTと書いたときにはカテゴリとしてのSSHエージェントを意味します。 ssh-agentと書いたときには、実行プログラムとしてのssh-agentコマンドを意味します。 同様に、SSHと書いたときにはカテゴリとしてのSSHクライアントを意味します。 sshと書いたときには、実行プログラムとしてのsshコマンドを意味します。 SSH-AGENTって? SSH-AGENTは、秘密鍵での署名を代行1してくれるツールです。 SSH-AGENT に秘密鍵をロードしてしまえば、あとはパスワード(パスフレーズ)入力なしでSSH認証できる agent forward機能を使うことで、SSHした先でさらにSSHすると

    混沌を極めるWindowsのssh-agent事情 - Qiita
    t_mori
    t_mori 2021/05/14
  • すべての開発者へ。すごいGitHubリポジトリ10選 - Qiita

    記事は、Simon Holdorf氏による「10 Extraordinary GitHub Repos for All Developers」(2021年4月4日公開)の和訳を、著者の許可を得て掲載しているものです。 こちらもどうぞ すべてのウェブ開発者へ。人気GitHubリポジトリ9選 面接のリソース、build your own X、優れたパブリックAPIのリストなど Photo by Vishnu R Nair on Unsplash はじめに GitHubは、あらゆる種類の技術、フレームワーク、ライブラリ、コレクションなどを共有するためのNo.1プラットフォームです。しかし、その巨大さゆえに、最も有用なリポジトリを探すのが難しいという問題もあります。そこで私は、すべてのソフトウェアエンジニアに大きな価値のある、素晴らしいリポジトリ10選を作ることにしました。すべてに多くのGitH

    すべての開発者へ。すごいGitHubリポジトリ10選 - Qiita
    t_mori
    t_mori 2021/05/04
  • 5歳娘「パパ、余分なpropsいっぱい書くんだね!」 - Qiita

    新しい記事もよろしくやで! 5歳娘「パパのReact、めっちゃ遅いね!」 とある平日 娘(5歳)「パパ、今日は何のお仕事してるの?」 ワイ「おお、娘ちゃん」 ワイ「今日はな、ショッピングサイトを作ってんのや」 今日のお仕事内容 ワイ「↓このデザインの通りに、コーディングをせなあかんのや」 娘「なるほどー」 娘「このショッピングサイトで商品を売りたい!っていうお店があったとして」 娘「そのお店の人が、最初にお店の情報を登録するためのページだね!」 ワイ「せやせや」 まずはデザインを眺めてみる ワイ「この店舗登録ページにはなぁ」 ワイ「↑こんな感じの」 ワイ「項目名と入力欄がセットになったパーツが何度も登場するから」 ワイ「そのためのコンポーネントを作ろうかなー、って」 ワイ「そう思ってたとこなんや」 娘「ふーん」 娘「ラベル付きテキストフィールド的なコンポーネントってことだね」 娘「どこまで

    5歳娘「パパ、余分なpropsいっぱい書くんだね!」 - Qiita
    t_mori
    t_mori 2021/04/12
  • Javascriptで巨大なテキストファイルを少しずつ読み込む - Qiita

    stack overflowのコードをアレンジして実現。 chunk_sizeずつファイルを読み込み、読み込んだファイルを一文字ずつ変数に追加、改行を見つけたら callbackを適用して変数のメモリを解放する。なお、全ての改行コードに対応しているが、出力時には \n に統一される。 残念ながら改行のないテキストデータには使えない。javascriptの変数に格納できる文字数の最大値(Chromeであれば268,435,440文字)を超えた時点でエラーが起きる(その前にタブが落ちる可能性もあるが)。 readBigTextForEachLine = (file, callback, chunk_size = 1024) => { let offset = 0; let text = ""; let slice = ""; let fr = new FileReader(); fr.onlo

    Javascriptで巨大なテキストファイルを少しずつ読み込む - Qiita
    t_mori
    t_mori 2021/04/12
  • kintoneのスレッド投稿がスマートになるChrome拡張をVue.jsで作る - Qiita

    🎄こちらは kintone Advent Calendar 2020 25日目の記事です🎅 今年もたくさんの記事ありがとうございました!! おかげさまでPart2まで広がっています!! 今年はPart2は埋まらなかったけど・・・ これはアドベントカレンダーのオーナーとしてあとで全部埋めておくべきか・・・ 怒涛のQiitaラッシュが始まる・・・ はじめに 2年前に投稿した Chrome拡張の作り方 (超概要) が、今でも定期的にいいねもらえている状況でして、ふと、 またChrome拡張関連の記事書けばいいね貰えるのでは・・・ という不純な動機でこの記事書きますw しかもVue.jsというこちらも人気のやつで、「いいね物乞いだ!」と言われても否定できません( ̄ー ̄)ニヤリ でも真面目に記事は書きますよ! つくったもの(はいけい) kintoneのスレッドは標準でいろいろと文字のデザインとか

    kintoneのスレッド投稿がスマートになるChrome拡張をVue.jsで作る - Qiita
  • やってみたら簡単!ディープラーニング・オセロを作って自分を負かすまで強くした話(その1) - Qiita

    オセロのAIアルゴリズムをディープラーニングで作成し、私が勝てないぐらいまでには強くなった、という話です。 また私の場合は2ヶ月ぐらいかかってしまいましたが、実装自体はそんなに難しくなかったので、実装方法についても説明したいと思います。 この記事でわかることは、ディープラーニングでオセロのAIアルゴリズムを作る方法です。基的な考え方は他のボードゲームも同じなので、流用できると思います。 対象読者は、TensorFlowなどディープラーニングのライブラリを使い始めて、MNISTの数字分類など基的な処理はできたけれど、それ以外の問題だとやり方がわからない、というような方です。 きっかけ 私の所属するエンジニア人生コミュニティで、リバーシチャレンジなるものが開催されたことがきっかけです。このコンテストは「リバーシならどこにこだわっても良い」というルールでした。 私は、ちょうど少しまえに「将

    やってみたら簡単!ディープラーニング・オセロを作って自分を負かすまで強くした話(その1) - Qiita
    t_mori
    t_mori 2021/01/19
  • ぐるぐるSQLは止めてくださいという話 - Qiita

    1. はじめに 仕事の都合で DB/SQL の性能問題を調査する機会が少なくありませんが(決してメインの仕事ではないですが)、その中でよく出くわす問題の1つに「ぐるぐるSQL」(もしくは「ぐるぐる系」)といわれる、ループで大量の SQL 文を呼び出しているものがあります。 感覚ですが、私の周りでは OLTP 系システムの DB/SQL の性能問題の原因の割合は以下のように感じています。 30%:ぐるぐる SQL 20%:SQL 文の書き方が不適切 15%:索引がない or 不適切 15%:パーズが遅い 10%:データモデルがおかしい 10%:その他 (大昔は2番目 / 3番目がほとんどだったのですが、最近はなぜがぐるぐる SQL が多い…) ぐるぐる SQL の実装では、ネットワーク通信や、アプリ側のクエリ生成 / 結果データ構築、DB 側のクエリ受信 / 結果送信といった、処理の質的で

    ぐるぐるSQLは止めてくださいという話 - Qiita
    t_mori
    t_mori 2021/01/19
  • C#でまともなアプリ開発を行うために - Qiita

    はじめに C#は「Windowsでしか開発出来ない言語」などクローズドなイメージから一転し、.NET Coreの誕生によって様々なことが出来るようになりました。最近ではokazukiさんのC# で出来ること一覧が大きな反響を呼び、C#であらゆるアプリが作れることを多くの方に知ってもらえたかと思います。C#のよさを知ってもらうことは嬉しい限りではありますが、他言語をやってきた身としてはC#を取り巻くエコシステムの情報が少ないと感じることが多く、新たに参入される方にとって抵抗があるのも事実だと思います。この記事ではまともなアプリ開発を行うために必要なエコシステムなどご紹介し、C#でも快適に開発出来ることを知ってもらえれば嬉しいです。筆者はWEB開発を主としているので、WEB寄りな話が多くなる可能性がありますがご了承下さい。 「まとも」とは? タイトルにも書いたまともなアプリ開発とは、一定の品質

    C#でまともなアプリ開発を行うために - Qiita
    t_mori
    t_mori 2021/01/18
  • Windows Terminal で Git Bash を表示する - Qiita

    Windows TerminalBuild 2019 で発表された Windows 向けの新たなターミナルです。マルチタブが導入されており、複数の PowerShell やコマンドプロンプトなどを切り替えながら利用することができます。また、Windows10 v1809 から Unix / Linux 互換の擬似コンソール ConPTY が導入されたため Bash on Ubuntu on WSL などの Linux シェルを表示することも可能です。せっかくなので Git Bash も利用できるように設定してみました。 設定手順(GUI) (2021-05-19追記) Windows Terminal のバージョンアップに伴い、GUIでの設定が可能になりました。 Windows Terminal を起動し、設定画面を開きます。 サイドメニューの[プロファイル]-[新規追加]からプロフ

    Windows Terminal で Git Bash を表示する - Qiita
    t_mori
    t_mori 2021/01/06
  • FlutterでFirebaseのTwitterログインを実装する - Qiita

    編集履歴 2020年12月 プラグインを使用 Firebaseの更新に合わせてコードを変更 事前準備 Firebase とTwitter Developer でTwitterログインができるように準備をしてください。 Twitterログインには申請が必要です。申請がまだの方は先に申請をお願いします。 Twitter Developer の設定 Twitter Developer を開きAuthentication settings にCallback URLs を設定します。 今回は例としてexample:// を追加しました。 TwitterSDK を使用しないのでtwittersdk:// の追加が必要ありません。 Twitterログインプラグインの追加 今回使用するプラグインは twitter_login を使用します。 2020年12月24日 現在 最新バージョン 2.1.1

    FlutterでFirebaseのTwitterログインを実装する - Qiita
    t_mori
    t_mori 2020/12/25
  • SSGとperlさえあればウェブサイトなどサクッと作れてしまうんじゃないのか? (perl side) - Qiita

    SSGとperlさえあればウェブサイトなどサクッと作れてしまうんじゃないのか? (perl side)Perl静的サイトジェネレーターAdventCalendar2020 この記事は、Perl Advent Calendar 2020 17日目の記事です。 同時に、Static Site Generator Advent Calendar 2020の17日目の記事の姉妹版でもあります。両記事の内容に一部重複があることをご了承ください。 はじめに 2020年現在、ブログを公開して情報発信というとwordpressなどを使ったウェブコンテンツの動的な生成が主流のようです。しかし、これとは一線を画した静的コンテンツの構築というスタイルも健在です。ユーザに見せるべきHTMLデータをあらかじめ全て作り置いておくわけです。このために利用されるソフトが「静的サイトジェネレーター」です。 perlと静的サ

    SSGとperlさえあればウェブサイトなどサクッと作れてしまうんじゃないのか? (perl side) - Qiita
    t_mori
    t_mori 2020/12/24
  • 結局、Go言語をやめる理由はなかった件 - Qiita

    この記事は Go 2 Advent Calendar 14日目の穴埋め記事です。 はじめに @okdyy75 さんによる Go 5 Advent Calendar 14日目の の記事「だから僕はGo言語を辞めた」 が「ベンチマークっていうのはこうやるんだよ」というのを説明するために反面教師的な意味で良い教材だと思ったので、反証記事を書きたいと思います。 ベンチマークを取りながらコードを改善して、最終的にGoは遅くないからやめる必要はないということ、そして、なぜ遅いという結論になってしまったのかを掘り下げていきたいと思います。 下準備 幸いなことに、ベンチマークのソースコードがGitHubにある ので、こちらを実行しながら問題点を改善していきましょう。 ちゃんとコードが上がっているのは素晴らしいですね! 一方で、元記事には測定環境が明記されていませんでしたので、同じ環境で測定することはできま

    結局、Go言語をやめる理由はなかった件 - Qiita
    t_mori
    t_mori 2020/12/17
  • Linuxカーネルビルド大全 - Qiita

    はじめに (記事は Linux Advent Calendar 2020 および 東京大学 品川研究室 Advent Calendar 2020の11日目の記事として書かれました。) カーネルのビルドについての情報はググると色々と出てきますが、「ここを見ればOK」と思えるサイトに巡り会えていないので、自分で書いてみることにしたのが記事です。 いずれLinuxカーネルをビルドする必要にかられるであろう研究室・学科の後輩や、忘れっぽい将来の自分のためにも、改めてLinuxカーネルのビルド方法についてまとめてみたいと思います。 概要 さて、「カーネルをビルドしよう」という状況に置かれた場合、実際にすべきことは主に以下の4点だと思います。 ソースコードの取得 ビルド環境の構築 カーネルコンフィグの準備 ビルド及びインストール そこで記事では、カーネル体のビルド上記の4点の他、関連して以下の

    Linuxカーネルビルド大全 - Qiita
  • 2で割ることと3で割ること - Qiita

    この記事でお題にするのはCPUレジスタ上の整数除算です。以下、単に除算とも書きます。 除算は非常に高コストな演算なため、コンパイラは最適化によって、できるだけ整数除算を別の計算に置き換えようとします。 最適化ができる場合の一つとして、割る数が定数である場合があります。頭のいいコンパイラは、除算を乗算とビットシフト等を駆使した演算に置き換えます。この記事では、そういった最適化の背景にある理屈を部分的に解説します。 計算機環境としてはモダンなx86 CPUを仮定します。したがってレジスタは32/64ビットであり、負数は2の補数表現になっています。ある程度は他の命令セットでも通用する話になっているかもしれません。 そもそも整数の除算とは プログラミングにおける整数の除算の定義について確認します。整数$n$を整数$d$で割るとき $$ n = q \times d + r $$ が成り立つように除

    2で割ることと3で割ること - Qiita
    t_mori
    t_mori 2020/12/09
  • Angular と Firebase で月間 3.5億PV になった PWA の収益性改善とコストカット - Qiita

    と、振り返ってみると毎年綺麗に 300% 成長でこれていますね。 (流石に来年はきついと思います^^; 今回は、そんな サービスを拡大する上で欠かせない収益の話 と 成長したからこそ表面化したコストの話 をまとめていきたいと思います。 収益の話 参照:https://jp.freepik.com PWA は稼げない 昨年の Advent Calendar にて、私はたいそう嘆いておりました(TДT) Web 側の広告は MPA(マルチページアプリ)を前提にしているものがほとんど Web 側では広告の表示を最適化できない(MPA 前提の規約上バックグラウンドで読み込んでおけない それに加えて、SPA のページ遷移が早すぎて広告が表示される前に通過してしまう アプリ側にはインタースティシャル広告やリワード広告といった単価の高い広告商材が豊富に存在する そういった要因から、PWA におけるページ

    Angular と Firebase で月間 3.5億PV になった PWA の収益性改善とコストカット - Qiita
    t_mori
    t_mori 2020/12/08
  • 管理者用初期化URLを踏んでWebサービスのデータをふっとばした話 - Qiita

    自己紹介 職のエンジニアではありませんが、ちょっとICT系に詳しそうなやつって感じで、部署のサーバ管理を任されたりもしています。 背景 私の(当時所属していた)部署では、毎年、数週間かけて前年の各人の業務実績をとりまとめて一つの冊子(PDF)にするという仕事があり、この作業を少しでも自動化するため、Webサービスが内製されました。当初は単純に各ユーザが自分の業務実績一覧をテキストで用意してアップロードするというものでしたが、秘伝のタレのように毎年少しずつ改良されたり、大幅に作り直されて別システムから業務データを取り込んでからブラウザ上で編集できるようになったりしつつ、なんやかんやあって私が引き継ぎます。他にやりたい人もなく、ひとり鯖管です。OSはCentOS6でした。 このシステムでは、毎年新しいデータを編集するため、その作業開始時にデータを初期化する必要があります。この作業も自動化し、

    管理者用初期化URLを踏んでWebサービスのデータをふっとばした話 - Qiita
    t_mori
    t_mori 2020/12/08