タグ

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

  • Linuxにおける非同期IOの実装について - Qiita

    はじめに Linux 5.1に新しい非同期IOの仕組みとしてio_uringがマージされてから既に1年以上経ってしまいましたが、これまでのLinuxにおける非同期IOの使い方や実装を見ていきながら、io_uringが登場した背景やLinux AIO(libaio)の問題点をどのように解決しているのかについてまとめました。アプリケーションの書き方については大まかにしか説明していないので、それについてはmanページや別の記事を参照してください。 またIOという範囲が広いのですが、ここではブロックデバイス上のファイルシステムにおける通常ファイルに対するread/writeについて考えています(ネットワークは考えていないのでepollの話はないです)。 前提知識 簡単に前提となる話をおさらいします。 同期IOと非同期IO IOを行うシステムコールとしてすぐに思いつくのはread(2)/write(

    Linuxにおける非同期IOの実装について - Qiita
  • SSL/TLSのハンドシェイクってどんなの? - Qiita

    ようこそ、SSL/TLS Advent Calendarへ! QiitaもようやくSSLになったので、このカレンダーを読んでいる人はほぼ確実にqiita.comへのSSL接続を済ませていることかと思います。では、その接続とはどのような形で行われるものなのか、考えたことがある人はそんなに多くないかもしれません。 今回は、初回にふさわしく、SSL1の接続を開始してから成立するまでを考えていきます。 ハンドシェイクに要求されるもの 実際の流れを見ていく前に、SSLのハンドシェイクにはどのような特性が必要か考えてみましょう。両者で合意しないといけないものとしては、以下のようなものがあります。 使用する暗号化などの鍵スイート 使う暗号鍵 そして、ハンドシェイクにおいても次のような要件が必要です。 (切断以外の)中間者攻撃に耐えられる 鍵は第三者から特定不能な形で共有する 正しく接続できなければ接続を

    SSL/TLSのハンドシェイクってどんなの? - Qiita
    defiant
    defiant 2021/09/24
  • SSL/TLS(SSL3.0~TLS1.2)のハンドシェイクを復習する

    以下順を追って説明します。 HelloRequest 相手にClientHelloを送信するよう促すメッセージです。送信しなくても構いません。 ClientHello ServerHello ClientHelloとServerHelloは、TLSのひとつめの肝です。後ほど説明します。 ServerCertificate サーバ証明書を送信します。中間CA証明書なども、ここで送ります。 ServerKeyExchange 鍵交換メッセージその1です。鍵交換はTLSのふたつめの肝で、これも後ほど説明します。 CertificateRequest クライアント証明書を送信するように促すメッセージです。クライアント証明書が必要な場合に送信します。何そのクライアント証明書って?と思った方は読み飛ばして構いません。 ServerHelloDone サーバからの送信終了を示すエンドマークです。 Cli

    SSL/TLS(SSL3.0~TLS1.2)のハンドシェイクを復習する
    defiant
    defiant 2021/09/24
  • 「つみたてNISAは米国インデックスファンド放置で良い」は本当か? - Qiita

    こんにちは、最近になってつみたてNISAを始めた今年2年目の社会人です。つみたてNISAは運用益が非課税、半自動的に積立運用可能、途中で取り崩し可能と様々なメリットがあり、非常に有益な制度です。そんなつみたてNISAを活用する上でよく耳にするのは「信託報酬が安くてパフォーマンスの高い米国インデックスファンド一択!一時的に暴落しても戻るから気にするな!」という話です。確かに2000年のITバブル崩壊、2008年のリーマンショックという暴落を経験しながらも、S&P500といった代表的な米国インデックスの直近20年のパフォーマンスは素晴らしいです。 しかし、当に米国インデックスファンドを積立・放置するだけでいいんでしょうか?頭を使わずに、というのは言い過ぎかもしれませんが放置しているだけで資産が殖えるなんて美味い話、不安を感じるのも確かです。そこで過去に米国インデックスファンドを積立・放置して

    「つみたてNISAは米国インデックスファンド放置で良い」は本当か? - Qiita
  • 2つの公開鍵暗号(公開鍵暗号の基礎知識) - Qiita

    はじめに TLS/SSLをはじめとして、様々な場面で公開鍵暗号が重要な役割を果たしているのは良く知られていることと思います。 ここで公開鍵暗号が何かというと、「かたやデータを公開鍵で暗号化して、かたや秘密鍵で復号する。他人にはデータの内容が漏れない」という説明が一般的です。 そうすると大抵の人は「TLS/SSL、公開鍵で暗号化して秘密鍵で復号するのね」と2つの情報を組み合わせ、それで納得してしまうわけですが、実は今日これは大体において誤り1です。 この誤りはいまやどうしようもなく広く流布していています。これは、適切な入門書がないことや、そもそも情報の検証を行う人が少ない ( そこまでする動機がない ) という理由によるわけですが、公開鍵暗号という言葉が2通りの意味で流通しているという面も大きいように思われます。 ということで、この2つの意味の違いに着目しつつ、基礎の整理を行いたいと思います

    2つの公開鍵暗号(公開鍵暗号の基礎知識) - Qiita
  • クラウドエンジニア(AWS)ロードマップ2021 - Qiita

    お知らせ 2022年初頭に記事を元にしたAWS書籍が技術評論社より全国出版決定いたしました。 関係者各位のご協力に深く感謝いたします。 タイトル:AWSエンジニア入門講座――学習ロードマップで体系的に学ぶ 書籍出版までの制作プロセス、チーム執筆の方法論などをまとめました チームで技術書を出版して学べた共同執筆メソッド はじめに インフラ初学者がAWSを用いた設計・構築レベルに到達するため、学習の全体像をロードマップ図にまとめました。 背景 パブリッククラウド全盛期においてAWSは全エンジニアにとって「常識」となりました。 しかしながら、情報過多によってAWS学習に必要な情報がネット上のノイズに埋もれてしまい、初学者の直感による判断が誤った学習に行き着くこともあります。 このロードマップはAWS学習の全体像を俯瞰でき、パブリッククラウドを用いた設計・構築レベルに到達するまで導く体系的なス

    クラウドエンジニア(AWS)ロードマップ2021 - Qiita
    defiant
    defiant 2021/05/19
  • Let's Encryptのルート認証局移行についてちょっと調べてみた - Qiita

    私も大変有り難く利用させてもらっている、みんな大好きLet's Encryptはいろんな方の寄付のおかげで無料で利用できるSSLサーバー証明書の発行サービスですが、何やらルート認証局の移行が話題になっているので、ちょっと調べてみました。 問題の概要は、こちらのブログでとても詳しく解説されており、とても参考になりました。ありがとうございます。 公式から出ている説明だと、出てくる証明書の関係がわかりにくく、図もちょっと間違っていたので、別の図を起こしました。簡単には、DST Root X3ルート証明書が期限切れを迎えそうなので、新しいISRG Root X1ルート認証局に移行したいわけです。 certbotを使っていると /etc/letsencrypt/archive/ドメイン/ に発行された証明書、チェーン、秘密鍵の履歴が残りますが、その時期を頼りにどうなっていたのか見てみます。 2020

    Let's Encryptのルート認証局移行についてちょっと調べてみた - Qiita
  • HugoとGithub Pagesで自作ブログサイトを作ってみる #1 - Qiita

    ※これは自作ブログに投稿したものと同じ記事です。 Hugoで自作ブログサイトを作ってみる はじめに 最近、Twitter の有名なすごい人たちがみんな Hugo を使って自作ブログを作っていて、ほげーーやってみたいーー、ってなったので試してみた。 また、Go 製のツールということで、勉強したかった Go を使えるかも!という思いもあった。(結果、Go は 1 ミリも使わずに終わった) さんぽしさん Hugoでさくっと自作ブログを作った – さんぽしの散歩記 コミさん Hello My New Blog Hugo とは? HugoGolang 製の静的サイトジェネレーター。HTML とか CSS みたいなものを自動生成してくれるやつ。 The world’s fastest framework for building websites | Hugo そういえば昔、reveal.js

    HugoとGithub Pagesで自作ブログサイトを作ってみる #1 - Qiita
  • man systemd.service 日本語訳 - Qiita

    man systemd.service で表示されるマニュアルの日語訳。 名前 systemd.service-サービスユニット構成 概要 service.service 説明 名前が .service で終わるユニット構成ファイルは systemd によって制御・監視されるプロセスに関する情報をエンコードします。 このマニュアルページには、このユニットタイプに固有の構成オプションが列記されています。 すべてのユニット構成ファイルに共通するオプションについては systemd.unit(5) を参照してください。 一般的な構成要素は、一般に [Unit] と [Install] セクションで構成されます。 サービス固有の構成オプションは [Service] セクションで構成されます。 追加のオプションは、コマンドが実行される実行環境を定義する systemd.exec(5) と、サービス

    man systemd.service 日本語訳 - Qiita
  • Windows 10 ノートPC内蔵JISキーボードと外付けUSキーボードとの共存 - Qiita

    概要 Windows10搭載ノートPCに、USBで外付けのUS配列キーボードを接続したときに、ノートPC内蔵のJIS配列キーボードとスムーズに共存できる方法を調べて、まとめた 方法1:Windowsの設定で切り替える方法(その1) Windowsメニューなどから「設定」を開く 「時刻と言語」を選択して進む 左側サイドメニューの「言語」を選択する メイン画面の「優先する言語」→「日語」をクリックする 「日語」の枠に「オプション」が表示されるので「オプション」をクリックして次の画面に進む 「ハードウェア キーボードレイアウト」→「レイアウトを変更する」をクリックして次の画面に進む 「英語キーボード(101/102キー)」or「日語キーボード(106/109キー)」のいずれかを選択して「今すぐ再起動する」をクリックして再起動 再起動後、選択したキーボードレイアウトで使えるようになる 上記の

    Windows 10 ノートPC内蔵JISキーボードと外付けUSキーボードとの共存 - Qiita
    defiant
    defiant 2021/04/15
  • Nginxで複数条件のIF文を書く方法がすごいw - Qiita

    NginxでIf文を if ($host = 'www.example.com' && $request_uri ~ "/admin") という風には書けない。 入れ子にもできません。(ディレクティブなので?) そこで逃げ道は 文字列結合で判定。 if ($request_uri = /) { set $test A; } if ($host ~* teambox.com) { set $test "${test}B"; } if ($http_cookie !~* "auth_token") { set $test "${test}C"; } if ($test = ABC) { proxy_pass http://teambox-cms.heroku.com; break; }

    Nginxで複数条件のIF文を書く方法がすごいw - Qiita
  • nginxにおけるmapとその応用 - Qiita

    set $device "pc"; if ( $http_user_agent ~ iPhone) { set $device "iphone"; } if ( $http_user_agent ~ Android) { set $device "android"; } proxy_set_header X-Device $device; このように特定の条件毎に変数の値を代入して各種ディレクティブの動作を変更する、といったニーズは現実のシステムでは結構あります。ただ、ifディレクティブで分岐させるような設定はせいぜい数個くらいが限界でしょう。 また、nginxのifディレクティブはネストや条件の複数指定ができないのでちょっと凝ったことをしようとすると設定がかなり複雑になりますし、If is Evilという言葉があるくらいnginxではifを多用するスタイルはあまり推奨されていません。 こ

    nginxにおけるmapとその応用 - Qiita
  • FFmpegでMP4を作成する際に時間がずれる - Qiita

    FFmpeg で画像と音声から MP4 動画を作成する際に時間がずれるのに悩まされました。一旦、別の形式にしてから MP4 に変換することで回避しました。 【追記】個々の音声ファイルの時間を計測して指定する方法を追記しました。再圧縮が回避できます。 この記事の方法を応用して、複数の画像から動画を作成する方法は以下の記事を参照してください。 紙芝居方式で動画を作成 バージョン WSL 上の Arch Linux と Ubuntu で同じ現象を確認しました。 $ ffmpeg -version ffmpeg version n4.2.2 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 9.3.0 (Arch Linux 9.3.0-1) configuration: --prefix=/usr --disable-deb

    FFmpegでMP4を作成する際に時間がずれる - Qiita
  • 無料でどんどん音がずれる動画の問題を解消する! - Qiita

    はじめに この記事は CCC Advent Calendar 2018 14日目の記事です。 こちら2018年の記事のため、FFmpegやAudacityのバージョンが古いものになっています。 サイトの内容が異なる可能性もあるので、適宜現在の環境に合わせて、実施してください。 コマンド自体はあまり変わっていないと思われるので、そこらへんは心配しなくて大丈夫だと思います。 なにか別にもっといい方法があるよ!ってことがあればコメントまでお願いします! 前振り あるときですね、動画を撮ったんですよ。 よっしゃ一杯撮れた!と満足ホクホク顔で自宅に帰って動画チェックしたら、動画が音ズレしていることに気が付いて項垂れました。 最初はもちろんちゃんと動画が音源が同期していて問題なかったのですが、次第に動画と音がずれ始めてしまったんです。 こりゃ困ったと思って、どうにかならんかなーと思って調べてたら、少し

    無料でどんどん音がずれる動画の問題を解消する! - Qiita
  • Nginx Ingress Controllerで特定パスへのアクセスを拒否する - Qiita

    Nginx Ingress Controllerで特定パス、例えば/adminのアクセスを拒否する方法のメモ。 Minikube v0.32.0 Kubernetes v1.12.4 quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.21.0 設定方法 以下のように、server-snipetのアノテーションを使って設定できる。ただしserver-snipetは1つのホストにつき1回しか設定できず、同じホストを指定した複数のIngressに定義した場合は古いほうが有効となる。 またはconfiguration-snippetのアノテーションでも設定できる。 (補足) IBM Cloud Privateではアノテーションのプレフィックスがingress.kubernetes.ioとなることに注意。 apiVers

    Nginx Ingress Controllerで特定パスへのアクセスを拒否する - Qiita
    defiant
    defiant 2021/03/01
  • GNU Screen で複数サーバに一発でssh接続 - Qiita

    以前、Terminalで複数サーバに一発でssh接続 という投稿をしましたが、今回はそのGNU Screen版です。 やりたいこと コマンド1つで、Screenを起動し、画面を4分割し、さらにそれぞれの画面で別々のサーバに接続した状態にさせます。 手順 以下のようなScreen用のスクリプトを記述します。 ^Mという記載がありますが、これは特殊文字(CR)で、Vim上から<C-v><C-m>(Control-vの後にControl-m)と入力すれば、打込めます。(通常のコピペでは無理?) ^Mを省略したとしても、下記のスクリプトは動きます。ただし、最後のコマンドの部分は入力どまりで実行はされないので、手動で実行する必要があります。 # もともとの起動ファイルを読み込む source ~/.screenrc # 4つのウィンドウをタイトル付きで立ち上げる screen -t local 0

    GNU Screen で複数サーバに一発でssh接続 - Qiita
  • tmuxのおすすめconf設定@2019 - Qiita

    概要 最新記事をこちらに投稿していますので、もしよければこちらも御覧くださいませ。 https://red-full-moon.com/tmux-2020/ 正直何番煎じかわからないがQiitaでのtmux.confの情報が軒並み古くなってしまっているため、今日(2019年7月1日)現在でそこそこ新しいバージョンである2.9に対応したtmux.confを晒す。 みなさんのより良いtmuxライフの足しになればと思います。 tmuxってなに?何が便利なの?という人はこちらの記事が参考になります。 個人的な(tmuxをおすすめする)意見を書き始めるとそれはそれでまた一つの記事になりそうなので、省略しますが、ざっくり言うと下記の理由です。 私はiTerm2が非常に好きだったのですが、いかんせんWindowsにはない。 環境によらずペインの分割を自由自在にしたい 再起動時などにコンソールの状態を保存

    tmuxのおすすめconf設定@2019 - Qiita
    defiant
    defiant 2021/01/26
  • 日本語 LaTeX の新常識 2021 - Qiita

    オリジナルの TeX が誕生してから40年以上の歳月が流れ,そして日語 LaTeX が現在主流の姿 (pLaTeX2e) になってからも25年以上が経過しました.この間 LaTeX は多くの人に使われ続けて来ましたが,その歴史の中でさまざまな変遷を辿り,明示的なドキュメントにはなっていないながらも,ユーザ間ではある意味「常識」として定着した知識が積み重なってきました. 歴史が長く,よくも悪くも「安定している」と評されるために見過ごされているかもしれませんが,日語 LaTeX は今も開発が続く「生きた」ソフトウェアです.そのため歴史の中で培われた常識的な知識が古くなり,新しい知識が必要になる場合があります.そしてその傾向は特にこの数年顕著で,TeX コミュニティに属する人々が多く集まる TeXConf などの会議で,主に中上級者向けに新しい知識が啓蒙されてきました.稿では,そのような日

    日本語 LaTeX の新常識 2021 - Qiita
    defiant
    defiant 2021/01/20
  • Kubernetes: Topology Awareなデプロイの検証 - Qiita

    概要 Topology-Aware Volume Provisioningが、Kubernetes 1.12で追加されました。この機能により、ZoneやRegionを指定し、Podとそれに関連するPersistentVolume(PV)を指定したZoneやRegionにて作成し割り当てることができるようになります。この機能をつかうためには、KubernetesのNodeだけでなくストレージも対応している必要があります。 2019/3時点では以下のストレージが対応しています。 AWS EBS Azure Disk GCE PD CSI(alpha:https://kubernetes-csi.github.io/docs/topology.html) Region, Zoneとは Region, Zoneに馴染みの薄い人もいるかと思うので、Region, Zoneについて簡単に説明します。

    Kubernetes: Topology Awareなデプロイの検証 - Qiita
  • Raspberry Pi4 3台でKubernetesクラスタ構築 - Qiita

    ALHアドベントカレンダー2020 12/12(土)はきくりんが担当いたします!! サーバー、スイッチ、電源、筐体の選定から、組み込み、構築、ナレッジ化とインフラエンジニア総合格闘技的な内容となりました。 目的と背景 ずっとやろうと思っていたラズパイのクラスタ構成を使ったKubernetesの構築ですがこの度ついに着手出来たので情報まとめていきます。 とりあえずクラスタ構成の構築と、webサーバが上がることをゴールとします。 今回クラスタケースの収容数が4つのため、既に持っていたラズパイ3も収容したいと思います。 スイッチングハブと充電器も収容することを考えると3台がMAXだよね、ということに組んでから気付いたので3台構成とします。 一部写真で同居していますがまあ気にしないでください。 構築・ハードウェア編 準備したもの ・新規購入 ※主張の激しいマウスは無関係です。 ・後で追加+家に転が

    Raspberry Pi4 3台でKubernetesクラスタ構築 - Qiita
    defiant
    defiant 2020/12/14