サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
TGS2024
zenn.dev/koduki
はじめに いつもはプログラム書いたり、Linuxとかアプリサーバの運用とかをする事が多いのですが、最近いわゆる情シスっぽい仕事をする機会がありWindowsサーバ管理の道を模索しています。ここで言う情シスっぽい仕事ってのは社内インフラとか言われるオフィス自体のNW(WiFiとかLAN)やPCの管理/運用のあとセキュリティ基盤ですね。なおクライアントはChromebookとかMacの事は忘れてWindowsのみの素晴らしきダイバーシティの無い世界です。やったね! さて、ではWindowsサーバをどう管理するか? 当然、GUIで丹精込めて作った手順書をベースにポチポチやって運用することは出来るのですが、その伝統的なやり方はあまりに多くの問題を含んでいます。そのためMFA/CLI/IaC/自動化をキーワードに管理方法を検討中です。まだ模索段階のため 「これがベスト!」 と言えるものでは無いですが
はじめに Unit Testが大事、ということ自体はあまり異論はないと思うのですが、最初からTDDがしっかりできてるような現場ならいざ知らず、そうではない場合は中々うまく入れれない事も多くあります。なのでこうすると導入しやすい、という観点で以下の動画でそのあたりのことを話したのですが、補足も含めて記事でもまとめておきたいと思います。 これはユニットテストですか? ユニットテストとは? ユニットテストとは何でしょうか? 一応、テストの資格試験を実施しているISTQBの定義では以下のように定義されます。 component testing (unit testing) A test level that focuses on individual hardware or software components. Synonyms: module testing, unit testing この
はじめに リアルタイム処理がもてはやされてから何十年もたちますが、それでもなんだかんだで無くならないのがバッチ処理です。 今回は小さなバッチをCloud Runで実行する方法を紹介します。 なぜCloud Runでバッチなのか? GCPのCloud RunはLibreOfficeを実行してPDFを生成したりだとか、AWS LambdaやCloud Functionsとは異なりDockerゆえになんでも実行できる、という特性を持っています。これを使う事でJSやPythonを実行する代わりにBashベースで様々なワークロードを動かすことが出来ます。私も上述のPDF変換や逆にImageMagicを使ってPDFを画像に変換したりとか便利に使っています。 バッチというのはその特性上 「動いて無い時間」 の方が圧倒的に長いです。そのためVMインスタンスを専用で作ると少し非効率なのですがCloud Ru
TL;DR Dockerは仮想化であるコンテナの実装の一種 ただし、広義のDockerはOCI系コンテナの総称 アプリの配布と実行の仕組みと思えばOK コンテナによりIaCや一貫したデプロイ、H/Wの効率的な利用がしやすくなる ※ コメントでいくつか指摘があったので記事を更新しました。ご指摘ありがとうございました! はじめに おそらく過去幾度となく生み出されたであろうDocker解説記事となります。正確には解説動画の解説記事。 というのも、Dockerあるいはコンテナはもはや当たり前、と言えるほど普及してるようにもSNSやブログとかだけ見てると思えますが、実際には話題は知ってるけど良く分かってない/業務で今度使う事を検討したいけどつまり何なの? って人もまだまだ多いです。 なので私が 「Dockerって何?」 と聞かれたとき答えてる内容を動画にしてみました。技術的な詳細を解説というよりは
はじめに いろんな話題が出ているコロナ予約サイトですが、横浜市の予約サイトが公開すぐに落ちたことでまず話題になりました。 ただ、最大34万人の予約者なので 1分あたり最大100万件のアクセスを想定していたが、開始直後に200万件のアクセスがあったということで33,000TPSというかなりのトラフィックが来た事が予想されます。 対応策がサーバを増やして目標値を当初設計の6倍に引き上げるとの事だったのですが、空席照会のついた予約システムってDBにある程度同期的に書き込む必要があるので、そんな簡単にスケールアウト出来ないはずです。 JSとかCSSとかも含めてるならさておき、メインのページなどのHTMLなどを含めたPVだと仮定してもDBに数千アクセスが行きますし参照だけではなく更新も入ります。どうやったのか本当に謎なんですが、特に工夫のないアプリ実装でどのくらいスケールするのか少し気になったので試
はじめに 後輩から実データからトークンキーを生成するの「SHA256とかでハッシュ化でも良いですか?」と聞かれたので「少なくともSaltは必須だね」的な話をしたところ「Saltは(短い可能性があるから)パスワードとかには使うイメージだったけど元データがそれなりに長ければ要らないと思ってました」的な話題になりました。 十分な時間を掛ければ解けるのでもちろんダメなのですが、そういえば十分な時間ってどのくらいだろうと思いちょっと試してみました。 そこそこ長くて識別子に使われる可能性がある番号だとクレジットカード番号が16桁で良い感じなので試してみました。 クレジットカード番号は何通り? 16桁で0-9の値ですが数字なので先頭に0はおけませんから以下のような式になります。 その数なんと9000兆通り! 果たしてこれは計算しきれるのでしょうか? ちなみに実際にはクレジットカード番号には下記のように取
TL;DR 基本的には二重での暗号は不要 ただし、転送後も暗号化したまま使うなら、転送前から暗号化するのは良い ルールXを無邪気に追加して不整合のあるセキュリティルールを作ってはいけない はじめに 社内のセキュリティルールやスタンダードを決めるときに、HTTPSなのにVPN必須になってたりファイル暗号も必須になってたりするケースたまに見ます。今回は、それは実際に必要なことなのか? セキュリティ的に有効なのか? という点で考察をしていきたいと思います。 背景 二重三重に暗号化しても性能ペナルティが無いなら「なんとなく安全そうだから」でOKにしてしまいがちなのですが、これはよく考える必要があります。 というのも 「ルールXを追加することで既存のルールAと不整合が出る」 ってことは割とよくあるからです。具体的には「SCPのファイル転送は(SCPのセキュリティに不備があった時の)安全性のためにファ
はじめに 飲み物じゃないIPAをご存じでしょうか? 漢字でいうと、独立行政法人 情報処理推進機構ですね。情報処理技術者試験を実施いる謎の組織という認識の方も多いと思います。 実はIPAはいろんなドキュメントを公開していてQiitaやZenn以上にお役立ちなサイトなのです。 まあ、AWSをどうこうとか、FireabaseやNext.jsのようなキラキラした奴は基本載ってないので特に代替えするものではないですが、ブログとかはまた種類の違った情報があるので個人的には結構使うことあります。しかも 「日本語」! こういう感じの事をTwitterでつぶやいたところ意外にイイねをされたので、せっかくだしどんなドキュメントがあるかちょっと紹介したいと思います。 セキュリティ関連NIST文書 まずはNISTドキュメントの翻訳版! これは良いですよね。NISTはアメリカの米国国立標準技術研究所で、セキュリティ
TL;DR GitHubのアクセス自体を禁止してもセキュリティリスクは高いまま 仮にやるならGitHubのPushだけを禁止するようなツールを使わないと意味がない GitHubでコード管理したいならアカウント管理や情報分類などの運用を組み立てよう はじめに 先日、大手銀行などのソースコードがGitHubを経由して漏れる、というキーワードが話題になりました。 そもそもGitHubってなによ? って方はこちらの四コマが分かりやすいです。 これだけ聞くと相当問題のようにも聞こえますが、別にGitHubの脆弱性を突かれたたとかではなく派遣業者の社給PCないしはそこを経由した私物のPCからGitHubにPushされたという良くある情報流出ですね。なお、幸いにも重要なコードは含まれていなかったようです。 幸か不幸かこのエンジニアがGitHubに不慣れだったので非公開ではなく公開設定にしていたため、SN
はじめに WebAssemblyをブラウザの外でも動かせるWasmerの1.0がリリースしたので試してみました。 Wasmerってなに? WasmerはWASI(WebAssembly System Interface)とEmscriptenに準拠したWASMを実行できるランタイムです。類似のものにFastlyのLucetがあるそうです。通常WASMはブラウザの中で実行するわけですがそのコンパクトでセキュアな仕様に注目して、ブラウザの外のあらゆる環境で動かすためにI/Oへのセキュアなアクセス方法も含めて定義されたのがWASIです。これによってセキュアでユニバーサルなランタイムを作るのがゴールみたいですね。 とりあえず触る前のリリース記事とか見た感想としては 「それ、なんてJava (JVM)?」 とりあえずインストール 公式ドキュメントを参考にしながら進めてみます。 $ curl http
はじめに 新年早々に面白そうな記事を見つけました。ReactでのAPI呼出しを最適化するために「部分的にサーバサイドで実行するコンポーネントを作る」というもののようです。 あるいは去年の記事ですが気になってたものとしてBlitz.jsでReactベースのFWであるnext.jsに永続化層を持たせてRailsのようなFWにしようというアプローチもあります。 どちらの記事も書かれてる内容自体は分かる気がするものの 「それをフロントエンドでやる意味あるの?」 というのが拭えずイマイチ腑に落ちなかったんですが、単純に 「私と最前線でやられてる方々で期待してるものがたぶん違う」 という気がしてきたので、その辺を整理のために書いてみます。 注意書き Vue.js/Nuxt.jsは少し触ったことがありますが、React Server ComponentsやBlitz.jsを触ったことは無いです 「なんで
はじめに Vue.jsのSPAだとTwitterのサムネイルに使うOGP等が指定できないと以前記事を書いたのですが、コメントの中にNuxt.jsやNext.jsを使うと良いよ、とありました。コメントありがとうございました。 ただ、既存のアプリを違うFWに移行させるのはちょっと面倒だと思いPrerender SPA Pluginとかを使って、下記あたりを参考にVue.js+プリレンダリングで出来ないかと頑張ってみたけど諦めた、という記録になります。 具体的にはビルド時にAPI呼び出しをしてるのに、ブラウザで表示するタイミングで値が初期化されてしまう 「APIが2回呼び出される問題」 を解決できなかったので。Nuxt.jsなら簡単に出来たので素直にそっちを使うことにしました。 この記事では他の誰かあるいは過去を忘れた未来の自分が同じ過ちを繰り返さないように、「Vue.js + Prerende
この記事はJava Advent Calendar 2020の21日目です。 TL;DR JFRはJavaに組込まれた診断の仕組み JFR Event StraemingはJFRと同じメカニズムを使う監視の仕組み MP Metrics/Micrometerを使ってPrometusなど既存の監視基盤に統合できる 今回使ったソースコードは下記に置いています。 はじめに 今年もアドベントカレンダーの季節がやってきました。「2018年:JFR APIを使ってメソッドの実行時間をタイムラインレポートにしてみる」, 「2019年:JFRをBigQuery/Metabaseのオレオレダッシュボードで可視化する」とJFRネタをやってきましたが今年はなんと。。。うん、「また」なんだ。済まない。 と言うわけではからずともなのですが、3年連続でJFRネタということで今年は2020年3月にでたJDK14に含まれた
この記事はRuby Advent Calendar 2020の17日目です。 TL;DR GraalVM: 問題無く動作するがgemとか考えるとめんどそう。JavaのエコシステムやJS/Pythonなど別言語と組み合わせたい時には便利。 RubyPacker: gem/bunlder含めて特に問題なく動く。フルスペックRubyが必要なら現状でベスト mruby-cli: ビルド速度含めて最軽量。使えるならこれがベストシナリオ。エコシステムが弱いのが欠点 はじめに 皆さんはRubyをなんに使っていますか? 多くの方は 「Railsを使ったWebアプリケーション」 と回答されるのではないでしょうか? 私の場合は少し違ってCLIのコマンドを作るのによく使います。Bashよりちょっと凝ったことをするのに自分にはちょうど良いんですよね。手に馴染んでるので。 ただ、今この手の用途に一番利用されるのはG
はじめに この記事はVirtualCast tips Advent Calendar 2020の12日目の記事なのですが特に他の人の投稿はなさそう。さみしい。。。 気を取り直して今回はVirtualCastを利用してVR上でプレゼンをするまでの道のりを解説しようと思います。 一応、下記のようなチャンネルを1年ちょっと細々とやってるので、その配信や動画作成で学んだ事なんかを書いていきます。 YouTubeのvideoIDが不正です 正直、特に凄くないというか詳しい人からすると当たり前のことばかりだけど、それでも右も左も分からなかった当時の自分が知りたかった事をまとめています。知らな過ぎて結構たどり着くのに時間がかかったし。なお私のUnity力は未だにゼロなのでそういうの知らなくても大丈夫。 ちなみに 「どうやったら面白いコンテンツが作れる」 とか 「チャンネル登録者数を増やしたり好評かが付く
何が起こったの? CentOSプロジェクトがCentOS Streamに開発をシフトしていくことを宣言しました。これに伴ってRHEL 8の再構築としてのCentOS Linux 8は2021年に終了予定となりました。 ref: https://blog.centos.org/2020/12/future-is-centos-stream/ CentOSはLinuxの2大ディストリビューションの一つであるRed Hat Enterprise Linuxから商用パッケージを抜いてリビルドしたバージョンです。 商用パッケージが抜いてあるため、サポート無しで良ければ無料で本番環境で利用できるという事でOSの商用サポートを必要としないようなケースでよく利用されています。 今回、CentOS Linuxが終了してCentOS Streamになる事でCentOS終了!? という感じで一瞬ビビりましたがそ
はじめに 平井卓也デジタル改革担当相は2020年11月17日、中央省庁の職員を対象に「パスワード付きZIPファイル」の送信ルールを廃止する方針を明らかにされましたね。とても良いニュースだと思います。 こちらは「デジタル改革アイデアボックス」からの意見を取り入れたものと言われていてこういうサイクルがさっそく回っているのには期待が持てますね! 省庁職員がメールにファイルを添付して送信する際に、暗号化した上でパスワードを別のメールで送る「自動暗号化ZIPファイル」を26日に内閣府と内閣官房で廃止すると明らかにした。 代替策は決まっておらず、民間企業の動きも参考にしながら望ましいセキュリティー向上策を検討するという。暫定的な対策として「(パスワードを)電話で教える」と例示した。他省庁の状況も実態調査を進める。 「パスワードを電話で伝える」と言う点を揶揄するコメントもありますが超面倒だけどセキュリテ
はじめに Twitterのタイムラインを見ていたらバッチ系のプログラムで逐次コミットをやめて一括コミットにしたら爆速になったというのを見ました。当たり前でしょ、と思ったけど確かに知らなければ分からないよね、と思って主に初心者向けにRDBを扱うときの注意点をまとめてみました。 プログラミングテクニック的なところからテーブル設計くらいの範疇でDBチューニングとかは入ってないです。 自分の経験的にOracleをベースに書いていますが、他のRDBでも特に変わらないレベルの粒度だと思います。 大量の逐次コミットをする バッチアプリケーションでDBにデータをインサートすると言うのはかなり一般的な処理です。しかしデータ量が少ない時はともかく大量のインサートを逐次コミットで処理するとめちゃくちゃ遅くなります。数倍から十数倍遅くなることもあるので、10分程度のバッチが1時間越えに化けることもザラにあるので原
はじめに 「Typescriptの次はRustかもしれない」という記事がバズってるのを見かけました。 なかなか面白くて、PAとしてのWASMとRustを比較している記事です。ちょうど最近「レガシーおじさん、SPAを始めてみた。そして限界を知る」でも書いた通り最近SPAに手を出してみたのですが、いろいろやろうとするとSSRのためのBackend for Frontend (BFF)等が必要になるとわかり「これJSでやる必要なくない?」とも感じていたのでちょうど良かったです。 こういうのを見るとRIAやGWTのように似たアプローチで廃れた技術や、登場が早すぎたMeteor、今も頑張ってるMSのBlazorなど色々頭をよぎります。といわけで歴史を俯瞰する意味でHTML + JavaScriptとそれ以外の技術のせめぎ合いの歴史やMSのBlazorやRustのyewなどWebassemblyを使う
はじめに 最近、Webの記事を見てるとReactだVue.jsばかりが上がっていてJSPやERBの話をしてる人は誰もいません。jQueryの記事ももちろん見ない。 つまり、Webだけ見る限りではほとんどの人がSPAを使ってるように見えます。 私はWeb界隈には居るもののどちらかというとバックエンド寄り、もっというとそもそもWebとか関係ない領域を見る事が多いので、ちょっとキャッチアップを兼ねていくつかの個人プロダクトにVue.jsを採用してみました。 jQueryくらいで頭が止まってたので。サーバサイドもマイクロサービスでAPI化が進んでるのでフロントもそれに合った技術を選ばないとですしね。 というわけで、今回はその中で得た知見というか、従来型のサーバサイドでのWeb開発をしていた人の視点でVue.jsをキャッチアップする流れで書いていきたいと思います。 まあ最終的な結論は正直「これすごく
Googleより新しいプロジェクト管理ツールの「Tables」が出たので、さっそくβ版を試してみました。 ツールの特徴 プロジェクト管理といえばJIRAやREDMINEのようなチケットシステム、MS Projectのようなガントチャート管理を思いつくかと思います。 触ってみた限りではTablesはそれらとは大きく違います。どちらかというと 「Excelのようなスプレットシートでタスク管理ツールを自作する」 という割と日本でも好きな人は好きなアプローチを支援するためのツールです。 「Tables」では「Workspace」という管理単位に以下のように「Table」という名前でスプレットシートが作られます。 各フィールドは任意のデータ型を選べるので、この辺はデジエやSharepointに印象が似ていると思います このスプレットシートにタスク管理や課題管理、あるいはプロジェクト管理に必要なカラム
はじめに 「テストが大事」 これは生産性と品質を高めるための基本的な考え方です。なので 「テスト書かないと」 ってことはみんな同意するのでUnitTestらしきものが書かれてることは多いのですが、役に立たなかったりむしろ有害ですらあるテストがあふれているプロジェクトもあります。作った人に罪は無いのですが、頑張ったのに悪い方向に行ってしまうのはもったいない これはユニットテストを有効活用するための最低限のルールが守られてないためです。あまり学校で習う類のものでもないかもしれないですし、大事だと思うので個人的な見解をまとめておきました。 ポータビリティを大事にする 繰り返し実行できるように作る Unit Testですべての自動テストをしない モックやスタブを過度に使わない ひとつのテストケースにはひとつの観点しか検証しない テスト内容が分かる名前をつける ログや標準出力は極力出さない Java
このページを最初にブックマークしてみませんか?
『kodukiさんの記事一覧』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く