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

  • SREとDevOpsのオルタナティブを考える(あるいはCAMPFIRE SREのその後) - Qiita

    はじめに 2009年に John Allspaw と Paul Hammond が DevOps についてプレゼンした当初から、 DevOps の課題はいかに Dev と Ops の対立を解消し、組織のアジリティを上げるかでした。 DevOps はこの対立を Dev と Ops のコラボレーションやツールによって解決しようとしましたし、 SRE は厳密な SLO とエラーバジェットの適用によって、あるいは運用をソフトウェアエンジニアリングの領域に持ち込むことによって解決しようとしました。また、「You build it, you run it」や「Full Cycle Developers」などの考え方は開発エンジニアが一緒に運用(などを含めた周辺領域)も行うという手法で解決を試みました。 もちろんこれらは全て有効な手段ですが、 SRE や Full Cycle Developers はか

    SREとDevOpsのオルタナティブを考える(あるいはCAMPFIRE SREのその後) - Qiita
    cocoasynn
    cocoasynn 2020/12/11
  • 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
    cocoasynn
    cocoasynn 2020/12/06
  • 開発環境をGKE運用からサーバーレス運用に変更してみた - Qiita

    はじめに 記事はQualiArts Advent Calendar 2020 3日目の記事です。 肥大化するゲーム開発の開発環境をサーバーレスにしようと試みている最中の話です。運用してみてやっぱりダメだった場合は戻しているかもしれません。 始まりはGCPのCloud Run(サーバーレス)を使ってみたいという欲求だったため手段が目的化しています。導入理由を説明している記事ですが少し弱いです、ご了承ください。 terraformによるCloud Run関連(SecretManagerやIAM、CloudBuildによるCD等)の導入編は別記事で上げるかもしれません。 2020-12-07 追記 - Google Cloud + Gaming Advent Calendar 2020 7日目にCloud Run関連のアドカレを書かせていただきました。「Eventarcを使用した非同期でジョブ

    開発環境をGKE運用からサーバーレス運用に変更してみた - Qiita
    cocoasynn
    cocoasynn 2020/12/03
  • 1億DAUの中華ゲームを支えるアーキテクチャ - Qiita

    前書き 「AWS & Game Advent Calendar 2020」二日目の記事になります。 近年日では、アズールレーン、荒野行動、原神など中国制のゲームが多く進出されています。 最近では、「原神1ヶ月間251億円を稼いだ」や「王者栄耀のDAUが1億を超えた」などニュースにもなっています。 私は中国出身のため、この1年の仕事中でも、関連の内容が聞かれたことは何回かありました。今回のAdvent Calendarをきっかけに、王者栄耀や荒野行動をはじめ、典型的な中華ゲームのアーキテクチャと日ゲームの違いについて、説明したいと思います。 最後、AWS&Gameのカレンダーですが、ゲーム自体はAWSで動いていることとイコールになりません。実際この記事で触れたゲームの中、荒野行動のグローバルとアーチャー伝説だけがAWSの公開事例になります。また、この投稿は、個人の意見であり、所属する企

    1億DAUの中華ゲームを支えるアーキテクチャ - Qiita
    cocoasynn
    cocoasynn 2020/12/03
  • [翻訳] Developing an Artificial Intelligence for Othello/Reversi - Qiita

    [翻訳] Developing an Artificial Intelligence for Othello/Reversi機械学習オセロゲームAI オセロプログラム FOREST を開発した方の記事、Developing an Artificial Intelligence for Othello/Reversi の日語訳です。 FOREST 作者に許可をいただいて公開しています。 執筆時期がやや昔であり、最新の情報を踏まえると異なる見解があるかもしれませんが、オセロ AI 開発全貌を知るにはとても良い記事だと思いました。 Logistello や Edax の偉大さとそれを支える技術、昨今の Neural networks による試みまでを、ざっくり(/時に深く)説明してくれています。 FOREST 作者が指摘してくれている(See: sensuikan1973/othello-co

    [翻訳] Developing an Artificial Intelligence for Othello/Reversi - Qiita
    cocoasynn
    cocoasynn 2020/12/03
  • 【withコロナ】超リアルな対局サイトをビデオ通話付きで実現する - Qiita

    はじめに 昨年に引き続きオセロ Advent Calendarに誘っていただいたので記事を書くことにしました。今年(2020年)のトピックといえば新型コロナ(COVID-19)でした。Withコロナ/Afterコロナ等の言葉もできたように、社会状況が一変してしまいました。オセロ界にとっても同様で、これまで会場に集まってやっていた大会が開催できなくなる事態に直面しました。ネット上のオンラインゲームはこれまで通りでしたが、リアルな大会特有の雰囲気は失われてしまいました。そこで、少しでもリアルな大会の雰囲気を取り戻すべく、オンライン上でも超リアルに対戦ができるようなサイトの作成を試みました。今回はその実現方法や工夫点について書いてみたいと思います。 コロナ禍で囲碁や将棋等の他の対局競技でも同じような状況だと思いますが、この記事が何かの参考になれば良いなと思っています。 実現してみた内容 オンライ

    【withコロナ】超リアルな対局サイトをビデオ通話付きで実現する - Qiita
    cocoasynn
    cocoasynn 2020/12/03
  • Rust で競技プログラミングの作問支援ツールを作った話 - Qiita

    $ cd problem-directory/ $ ls -l total 8 -rw-r--r-- 1 koba_mac xxx 315 11 26 01:38 creo.toml drwxr-xr-x 2 koba_mac xxx 64 11 26 01:38 etc drwxr-xr-x 2 koba_mac xxx 64 11 26 01:38 in drwxr-xr-x 2 koba_mac xxx 64 11 26 01:38 out drwxr-xr-x 2 koba_mac xxx 64 11 26 01:38 sol drwxr-xr-x 2 koba_mac xxx 64 11 26 01:38 task creo.toml が唯一の設定ファイルです。リポジトリの sample_aplusb を参考に、creo.toml に然るべき行を追加したり、然るべきディレクトリに

    Rust で競技プログラミングの作問支援ツールを作った話 - Qiita
    cocoasynn
    cocoasynn 2020/12/01
  • Goで始める分散データ処理。Bigsliceパッケージ入門 - Qiita

    はじめに Go言語で開発された有名な製品はDockerKubernetesを筆頭に数多く存在します。アプリケーション開発としてもWebAPIのバックエンドやCLIツール開発で利用されることも増えていると感じます。IoTの文脈ではTinyGoなど組み込みプログラム領域でも進化を続けていて、WebAssemblyWASM)向けビルドと相まって今後さらなる拡張に期待を持っている人も多いかと思います。 一方で、大規模(1台のサーバに収まらない)データの分散処理分野では、Apache Spark(もちろんHadoop, YARN, etc.)とそのエコシステムが圧倒的に強いと感じます。AWS上であればSparkのマネージドサービスたるAWS Glueがありますし(EMRもありますが)、GCPだとDataprocでSpark(DataflowをApache Beamで扱うことが多そうですが)が広く

    Goで始める分散データ処理。Bigsliceパッケージ入門 - Qiita
    cocoasynn
    cocoasynn 2020/12/01
  • shellの-cオプションについてUbuntuのsh(dash)、bash、zshはそれぞれ違う挙動をする - Qiita

    shellの-cオプションについてUbuntuのsh(dash)、bash、zshはそれぞれ違う挙動をするBashZshshellshDash manコマンドで見てみるとこんな感じ。 For sh(dash) ubuntuの場合shはdashという軽量シェルにリンクしています Read commands from the command_string operand instead of from the standard input. Special 0 will be set from the command_name operand and the positional parameters (\$1, \$2, etc.) set from the remaining argument operands. For bash If the -c option is present,

    shellの-cオプションについてUbuntuのsh(dash)、bash、zshはそれぞれ違う挙動をする - Qiita
    cocoasynn
    cocoasynn 2020/11/08
  • 大阪都構想の投票結果を区ごとに分析してみた - Qiita

    はじめに 私は現在大阪市に住んでおり、一昨日の都構想投票はテレビにかじりつきながら見ていました。 経過を見ていて思ったのが、区ごとの結果の差が顕著に出ており、分析対象として適したデータが得られそうだと感じたため、詳しく分析してみました。 ※下図はおおさか維新の会HP掲載の、都構想における新旧区分け GitHubに、使用したスクリプトやクレンジング後のデータをアップロードしています Qiitaのガイドラインにあるように、あくまで技術記事としての領分を超えないよう、政治的な深い考察は避け、得られた事実のみを列挙していこうと思います。 また、私は因果推論のような高度な分析のスキルは持ち合わせていないので、「さらに深い知見を得るためにはこうしたらいい」 というような手法に関するアドバイスがございましたら、コメント頂けると大変ありがたいです! 結論 結論に至るまでの手順は次章以降で述べますが、以下の

    大阪都構想の投票結果を区ごとに分析してみた - Qiita
    cocoasynn
    cocoasynn 2020/11/05
  • BigQuery アクセス権設定まとめ & グループ設計例 - Qiita

    2021年時点でも、そこそこ参照されているため、BigQuery Advent Calendar 2021 25日目の記事としてアップデートします。 BigQuery リソースのアクセス権設定は難しいですが、データ資産の保護と活用のバランスを自由に設計できます。組織に合わせたアクセス権をうまく設定 & 設計して、データ資産を活かしていきたいですね。 稿では、アクセス権の設定方法と、叩き台になりそうな具体的な設計例について述べます。 アクセス権の設定方法 BigQuery リソースのアクセス権設定にあたり、覚えておく軸は 3 つです。 具体的な人間やアカウントを示すプリンシパル、権限範囲の対象(プロジェクトやデータセット)を示す対象レイヤ、具体的な一つ一つの権限、これらをおさえておけば、BigQuery の権限設定は安心です。 プリンシパルは Google アカウントを筆頭に 7 種類 以

    BigQuery アクセス権設定まとめ & グループ設計例 - Qiita
    cocoasynn
    cocoasynn 2020/10/06
    良い
  • パケットキャプチャツールをつくる - Qiita

    はじめに ネットワークと C 言語の勉強を兼ねて、簡易的なパケットキャプチャツールをつくってみました。参考にしたのは「ルーター自作でわかるパケットの流れ」という書籍です。 表紙に書かれている「ネットワークはどのようにつながるのかパケットの気持ちになって考えてみたことはありますか?」というコメントにが若干引いておりましたが、こういったディープな内容のは中々ないので有り難かったです。なお、このはタイトルのとおりルータを自作することがゴールになっていて、パケットキャプチャツールの作成はそのための練習という位置付けです。 また、特別講座 ネットワークプログラミング ( FWをつくろう )というサイトも非常に参考になりました。図入りで説明されていてとても分かりやすかったです。 ちなみに、C 言語は大学の時に少しかじったものの、ほぼ初心者に近い状態だったので Udemy の「イメージでわかる!基

    パケットキャプチャツールをつくる - Qiita
    cocoasynn
    cocoasynn 2020/09/21
  • Kubernetesの負荷試験で絶対に担保したい13のチェックリスト - Qiita

    概要 ※この記事は弊ブログ記事(はてな)、Kubernetesの負荷試験で絶対に担保したい13のチェックリストと同内容です ここ最近、Kubernetesクラスタを番運用するにあたって負荷試験を行ってきました。 Kubernetesクラスタに乗せるアプリケーションの負荷試験は、通常の負荷試験でよく用いられる観点に加えて、クラスタ特有の観点も確認していく必要があります。 適切にクラスタやPodが設定されていない場合、意図しないダウンタイムが発生したり、想定する性能を出すことができません。 そこで私が設計した観点を、汎用的に様々なPJでも応用できるよう整理しました。 一定の負荷、スパイク的な負荷をかけつつ、主に下記の観点を重点的に記載します。 Podの性能 Podのスケーラビリティ クラスタのスケーラビリティ システムとしての可用性 記事ではこれらの観点のチェックリスト的に使えるものとして

    Kubernetesの負荷試験で絶対に担保したい13のチェックリスト - Qiita
    cocoasynn
    cocoasynn 2020/09/14
  • Unikernelな情報 (in Japanese) - Qiita

    はじめに 「Unikernelって知ってますか!?」という質問を日で(というか海外でも)聞くとだいたい「知らない」と冷たい回答が返ってくるので、啓蒙活動の一環としてこの記事を書いてみることにしました。 サーバ仮想化用ハイパバイザの中の人のおしごとに就いて5年くらい経った頃、「次の面白いネタは何かなぁ」と探していたらフラッとUnikernelの話が一部の界隈で盛り上がり始めたのが2016年前半。 そこからずっと、「将来のコンピューティングスタイルを変えるのはUnikernelだね」と超個人的に熱い視線を注ぎ続けています。 Unikernelとは ちょっと"Unikernel"とググると、英文で結構記事が出て来ます。よく目にする記事は「2016年1月にDocker社がUnikernel Systems社を買収した」という内容で、有名な企業がUnikernelという技術に注目し始めたという点で

    Unikernelな情報 (in Japanese) - Qiita
    cocoasynn
    cocoasynn 2020/08/24
  • リモートのtfstateを書き換えずに安全にterraform state mv後のplan差分を確認する手順 - Qiita

    はじめに Terraformを長く運用しているとリソース名をリネームしたいというようなリファクタリングが稀によくあります。 これは terraform state mv コマンドを使うとできるのですが、このコマンドはtfstate(Terraformの状態管理ファイル)をデフォルトではその場で書き換えてしまいます。 https://www.terraform.io/docs/commands/state/mv.html しかしながらチーム開発をしている場合、 *.tf はgitでバージョン管理し、 tfstateはリモートのbackend(AWS S3とか)に保存するという管理方法が一般的です。つまり、リモートのtfstateをその場で書き換えてしまうと、masterブランチの状態と差分が出てしまいます。 tfファイル変更のレビュー前に、リモートのtfstateを書き換えずに、terraf

    リモートのtfstateを書き換えずに安全にterraform state mv後のplan差分を確認する手順 - Qiita
    cocoasynn
    cocoasynn 2020/08/07
    これ自分もたまによくやるんだけどけっこうめんどくさいからもっと楽にやれるといいなといつも思ってる
  • GitHub Actions Self-Hosted RunnerをDockerコンテナ内で動かしてみてわかったこと - Qiita

    TL;DR; 公式Dockerイメージがないので、まずはdocker runしたコンテナ上にSelf-Hosted Runnerをインストールし、稼働させるところまでやってみました。 まとめ ~ Dockerfileを書くにあたって抑えたいポイント GitHubさんへのお願い まえおき GitHub Actions v2がGAになる直前に、Self-Hosted Runnerという新機能が追加されました。 これはCIのコントロールプレーンをSaaSに管理してもらい、ワーカーのみを自社ネットワーク内にデプロイできるという機能です。 例えばCIから利用する強い権限につながるクレデンシャル類を他社サービスに渡したくないが、かといって自社でCIをセルフホストするのも避けたい・・・という場合に必要になる機能です。 これまで、運用の手間をできるだけ減らしつつ、他社サービスにクレデンシャル類を直接渡した

    GitHub Actions Self-Hosted RunnerをDockerコンテナ内で動かしてみてわかったこと - Qiita
    cocoasynn
    cocoasynn 2020/07/30
  • なぜContextを構造体に含めてはいけないのか、またそれが許される状況について #golang - Qiita

    はじめに Goのcontext.Context はリクエストスコープにおいてキャンセルの情報の伝播や値の受け渡しに利用するためのものですが、使う上でいくつかの注意が必要です。 Go Doc - Package contextに以下のような一文が存在します。 Do not store Contexts inside a struct type; instead, pass a Context explicitly to each function that needs it. The Context should be the first parameter, typically named ctx: Contextは構造体の中に保存せずに、Contextを必要としている関数に渡してください。コンテキストは変数名ctxとして第1引数に渡すべきです。 func DoSomething(ctx

    なぜContextを構造体に含めてはいけないのか、またそれが許される状況について #golang - Qiita
    cocoasynn
    cocoasynn 2020/07/23
  • 非エンジニアから相談を受けたときの心得 - Qiita

    まえがき 非IT企業で社内SEをやっている人です。 私が入社して1ヶ月後にケガで長期入院してしまった上司の代わりに、社員から「こういうシステムって作れますか?」「このツールの設定がわかんないから教えて〜」みたいな相談を受ける窓口となって、要件定義的なことしてきました。 最近この役割を後輩に譲ることにしたので、おもに自分が失敗してきた経験をもとに社内SEが非エンジニアから相談や依頼を受けたときに意識したいことをまとめてみました。 後輩だけでなくこの記事を読んだ人にも役立てていただけると幸いです。 目次 日語でちゃんとコミュニケーションをとる 技術のことはいったん忘れる 言われたとおりにやらない ユーザーシナリオを書く あとがき 日語でちゃんとコミュニケーションをとる 日語も立派なエンジニアリングスキルの1つです。 「スキルアップしたいです!」っていうエンジニアには「まず日語の使い方を

    非エンジニアから相談を受けたときの心得 - Qiita
    cocoasynn
    cocoasynn 2020/07/20
    良い話だった
  • 【Go言語】 time.Time - t.Sub(u)はu→t の実際の経過時間を返さない(かもしれない) - Qiita

    問題 time.TimeのSubメソッドを利用すると、2つのtime.Time間のDurationを取得することが出来ます。 例えば↓なカンジで処理時間を計測したりします。 start := time.Now() (何か処理) elapsed := time.Now().Sub(start) fmt.Println(elapsed) このコード自体間違いではないですが、今回実行していて明らかに実際の経過時間を返していない事象に遭遇し、軽くハマりました。 9:02にスタートし9:10に終了しているのに、elapsedに 3m などと出力されたり。 startとnowも出力↓ start:2020-07-08 09:02:00.243095 +0900 JST m=+0.003321332 now:2020-07-08 09:10:25.388989 +0900 JST m=+222.3889

    【Go言語】 time.Time - t.Sub(u)はu→t の実際の経過時間を返さない(かもしれない) - Qiita
    cocoasynn
    cocoasynn 2020/07/09
  • 図解 X.509 証明書 - Qiita

    はじめに X.509 証明書について解説します。(English version is here → "Illustrated X.509 Certificate") ※ この記事は 2020 年 7 月 1 日にオンラインで開催された Authlete 社主催の『OAuth/OIDC 勉強会【クライアント認証編】』の一部を文書化したものです。勉強会の動画は公開しており、X.509 証明書については『#4 X.509 証明書(1)』と『#5 X.509 証明書(2)』で解説しているので、動画解説のほうがお好みであればそちらをご参照ください。 1. デジタル署名(前提知識) この記事を読んでいただくにあたり、デジタル署名に関する知識が必要となります。つまり、「秘密鍵を用いて生成された署名を公開鍵で検証することにより」、「対象データが改竄されていないこと」や「秘密鍵の保持者が確かに署名したこと

    図解 X.509 証明書 - Qiita
    cocoasynn
    cocoasynn 2020/07/08