My RSS Reader

Description about Blog Author


chezmoiでdotfilesを管理する

コンピュータの初期セットアップって面倒ですよね。この手間を省くためにdotfilesを使ってる方も多いのではないでしょうか。dotfilesと言っても管理方法は人それぞれで、ツールを使ってる方もいれば自分なりのやり方で実践してる人もいるかと思います。私はalias dotfiles='git --git-dir ~/.dotfiles --work-tree ~'をSHELLの設定に入れているので、dotfiles add /path/to/file、dotfiles commit -m 'update' -aみたいなのでちまちま管理しています。 これでも十分といえば十分なのですが、設定ファイルってプレーンテキストなのでGitHubなどにコミットするには少し慎重になりますよね。機密情報が載ってないかなど心配になります。 そこで今回は安全にdotfilesを管理できるchezmoiを紹介します。 chezmoi www.chezmoi.io dotfilesを安全に管理するためのツールです。マルチプラットフォームに対応しているため、Linux、macOS、Windowsどこでも同じように管理できます。 執筆時点ではGitHub Topicsの「#dotfiles-manager」で1番人気でした。 インストール 公式ドキュメントのInstallを参考にしてください。 私の環境はMacなのでbrew install chezmoiしました。 管理してみる $ chezmoi init 初回は「init」サブコマンドでdotfilesを管理するためのリポジトリを作成します。 引数なしで実行した場合は~/.local/share/chezmoiにローカルリポジトリが作成されます。 既にリモートリポジトリを持っている場合はinitの後ろにリモートリポジトリのURLを指定します。すると~/.local/share/chezmoiにリポジトリがクローンされます。 $ chezmoi init git@github.com:/dotfiles.git またはURLを省略してGitHubのユーザー名を指定するだけでもクローンできます。 $ chezmoi init この場合https://github.com/<github-username>/dotfilesリポジトリがクローンされます。SSHのURLでクローンしたい場合は--sshオプションをつけましょう。 リポジトリ名がdotfilesではない場合は<github-username>/<repo-name>で指定します。 $ chezmoi add ファイルをchezmoiの管理対象に加えます。 例えば~/.bashrcを管理対象にする場合は下記の通りです。 $ chezmoi add ~/.bashrc こうすることで~/.local/share/chezmoi/dot_bashrcというファイルが作られます。 このファイルをホームディレクトリにコピーすることで設定を反映します。 では機密情報が含まれたファイルがaddされたらどうなるでしょうか。 $ chezmoi add ~/.aws/credentials すると・・・ {“level”:“trace”,“time”:“2024-12-18T12:02:56+09:00”,“message”:“skipping generic-api-key finding (aws_access_key_id = REDACTED), aws-access-token rule takes precedence (REDACTED)”} chezmoi: /Users/ttanaka/.

Read more...

月刊VS Code通信(2024/12月号)

今年も残すところわずかとなりました。2024年は皆さんにとってどのような年だったでしょうか。 月刊VS Code通信は年内ラスト回となります。また、年明け1月は例年であればリリースがないため、執筆をお休みします。 今月も新しいバージョンがリリースされたので、リリースノートを眺めていきたいと思います。 目次 目次 Visual Studio Code ニューリリース 主なリリース 気になった機能をお試し JavaScriptとTypeScriptのインポート Visual Studio Code ニューリリース Visual Studio Codeのバージョン1.96がリリースされました。 主なリリース 変更点 変更内容 GitHub Copilot ワーキングセットの推奨ファイルやデバッグ、Copilot Editsの進捗状況改善など JavaScriptとTypeScriptのインポート JavaScriptとTypeScriptで貼り付け時にインポートが自動挿入されるように TypeScript 5.7 TypeScript 5.7がメジャーアップデートによりデフォルト設定に 上書きモード 入力時のモードでテキストを上書きできるモードが追加 拡張機能のディスク使用量 拡張機能が使用しているディスク容量が確認できるように 拡張機能の検索改善 拡張機能の検索時の表示順位でインストール済みの拡張機能が上位に表示されるように その他詳しいリリース内容については Visual Studio Code November 2024 にアクセスしてください。 気になった機能をお試し ここからは筆者として気になった機能を少しだけ深掘りしています。 JavaScriptとTypeScriptのインポート JavaScriptやTypeScriptに限った話になってしまうのですが、かなり便利な機能が追加されました。 リファクタリングなどの過程で他のファイルにモジュールや処理を移動することはよくあると思いますが、インポートを解決することが地味に面倒な作業だったのではないでしょうか。 今回のリリースでコピペするときにインポートを追加してくれる機能です。使用するためにはTypeScript 5.7+が条件のようです。 実際にコピペしてみるとこのように画面で選択できるようになっています。インポートと貼り付けを選択するとインポートが自動で追加されます。 実際にボタンを押してみるとこのような感じでインポートが追加されました。 もちろん、通常の貼り付けもできるようなので、必要に応じて使い分けるとより効率的に作業できそうですね。 [source]

Playwrightを使ってPleasanterのE2Eテストをやってみよう

Pleasanterでは、JavaScriptやCSSなどをカスタマイズして標準ではサポートされていない機能を追加できます。何かしらのカスタマイズを行った場合、エンジニアであれば十分なテストをしてからリリースしますが、Pleasanterでは現場の方も巻き込んでプログラミングできる方も開発に参加するケースがあります。そのような時でも最低限の動作を保証したり、不具合に早期に気づけるような仕組みとしてE2Eテストを導入することが有効です。 また、主要な業務プロセスを2E2テストでカバーすることにより、新しいバージョンがリリースされた際に、そのバージョンが正常に動作するかどうかを確認すできます。新しいバージョンを素早く顧客に提供ができますし、問題が発生した場合には素早く対応できます。 他にも手動での動作確認では、回帰テストなどが担当者の負担となったり、テストの網羅性が担保されないこともあります。そのため、E2Eテストを自動化することで、テストの網羅性を高め、テストの効率化を図ることができます。 早速、Playwrightを使ってPleasanterのE2Eテストをやってみましょう。 Playwrightとは Playwrightは、ブラウザの自動化を行うためのツールです。Playwrightを使うことで、ブラウザの操作を自動化できます。Playwrightは、Chromium、Firefox、WebKitの3つのブラウザエンジンをサポートしており、クロスプラットフォームのブラウザテストも効率的に行うことができます。 https://playwright.dev/ 環境構築 初期化 Playwrightには初期化コマンドが用意されているので、それを使って初期化します。 npm init playwright@latest 初期化コマンドを実行すると、いくつかの質問が表示されます。以下のように回答します。 ? Do you want to use TypeScript or JavaScript? … ❯ TypeScript JavaScript 使用する言語を選択します。今回はTypeScriptを選択します。 ? Where to put your end-to-end tests? › tests テストコードを配置するディレクトリを指定します。今回はtestsディレクトリを指定します。 ? Add a GitHub Actions workflow? (y/N) › false GitHub Actionsのワークフローを追加するかどうかを尋ねられます。今回は追加しないのでfalseを選択します。 ? Install Playwright browsers (can be done manually via ’npx playwright install’)? (Y/n) › true Playwrightのブラウザをインストールするかどうかを尋ねられます。今回はインストールするのでtrueを選択します。 テストの実行 Playwrightの初期化が完了したら、始めから用意されているサンプルコードを実行して主要なコマンドを確認します。 ヘッドレスモードでテストを実行する npx playwright test

Read more...

月刊DevOpsニュース 2024年11月号

12月にも入り師走感が増してきましたね。 例年通りですが本記事が年内最後となりますので、少し早いですが 本年も大変お世話になりました。来年もどうぞよろしくお願いします。 仮想化/コンテナ クラウド プログラミング 生成AI OS リリース 仮想化/コンテナ Docker Desktop 4.36: New Enterprise Administration Features, WSL 2, and ECI Enhancements www.docker.com コンテナランタイム「containerd 2.0」正式リリース、登場以来初のメジャーバージョンアップ。1.xとの互換性は維持 www.publickey1.jp クラウド さくらインターネット、生成AIのプラットフォームサービスを開発すると発表。基盤モデル、ベクトルデータベース、APIなど提供予定 www.publickey1.jp Announcing future-dated Amazon EC2 On-Demand Capacity Reservations aws.amazon.com マイクロソフト、「Azure Local」発表。低スペックのサーバもAzureのエッジとして利用可能に www.publickey1.jp Amazon CloudFront now accepts your applications’ gRPC calls aws.amazon.com Google Cloudが開発したPostgreSQL互換ソフトウェア「AlloyDB Omni」がバージョンアップ、より高性能に www.publickey1.jp AWS、リードもライトもスケールするPostgreSQL、「Amazon Aurora PostgreSQL Limitless Database」正式リリース www.publickey1.jp Akamaiがクラウド強化、新たなデータベースサービスやKubernetes対応など投入 www.publickey1.jp プログラミング VSCodeのCopilotがAzureの料金から開発まで何でも教えてくれる「GitHub Copilot for Azure」プレビュー公開 www.publickey1.jp 生成AIによるプログラミング支援のCodeium、VSCodeフォークの「Windsurf」エディタ発表。変数名を1カ所変更して残りの修正を生成AIが行うなど高度な開発支援を提供へ www.publickey1.jp 「Ruby on Rails 8」正式リリース。SQLiteを本番DBとして利用可能に。今後は6カ月ごとに新バージョンをリリース

Read more...

ECSでAWS FireLensを使ってみる

CloudWatch Logsにログを溜め込むのはコスト的に避けたいですよね。CloudWatch LogsにはS3にログをエクスポートする機能がるのですが、なぜか手動実行にしか対応していません。自動的にエクスポートするにはLambdaを定期実行するか、EventBridge Schedulerで定期的にエクスポートすることになります。 EventBridge SchedulerでS3にエクスポートするのがもっとも簡単な方法だと思うのですが、これには考慮する点があります。それはCloudWatch Logsの削除のタイミングとEventBridgeの実行のタイミングが同期していない点です。削除とエクスポートのタイミングで同期していないため、エクスポートより先に削除の処理が走るとその分ログが欠損します。そこで、保存期間よりもエクスポートを実行するタイミングを短く設定することで、エクスポートするログが被ってしまうのですが、安全に運用する方法があります。。。 と色々考えて面倒になってしまったので、S3とCloudWatch Logs両方に出力できるFireLensを使うことにします。 FireLens aws.amazon.com FireLensはFluentdやFluent Bitのフロントエンドとして動作します。FluentdやFluent BitではなくFireLensを使う利点は先のサイトにも書かれています。 Fluentd と FluentBit を使用して、ログをどこにでも簡単に送信する方法を必要としているユーザー。 Fluentd と FluentBit のフルパワーを必要としており、タスクのログをこれらのログルーターにパイプするために必要な差別化につながらない重労働は AWS に管理して欲しいユーザー。 FireLensを使うことでFluentdやFluent Bitの運用を気にすることなく、ログの転送先やログのフィルタに注力できます。 試す docs.aws.amazon.com ただ試すだけであれば、こちらに記載のタスク定義をECSにデプロイするだけで動作します。 軽く説明するとcontainerDefinitionsの1つ目の要素がFireLensのタスクです。 { "name": "log\_router", "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:stable", "cpu": 0, "memoryReservation": 51, "portMappings": \[\], "essential": true, "environment": \[\], "mountPoints": \[\], "volumesFrom": \[\], "user": "0", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-aws-firelens-sidecar-container", "mode": "non-blocking", "awslogs-create-group": "true", "max-buffer-size": "25m", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "firelens" }, "secretOptions": \[\] }, "systemControls": \[\], "firelensConfiguration": { "type": "fluentbit" } }, 「logConfiguration」にはFireLens自体のログが「awslogs(CloudWatch Logs)」に出力されるように設定されています。「firelensConfiguration」でfluentbitを使用するように指定されています。

Read more...

k6のシナリオをポチポチで作成する

前回の記事では「k6 new」で雛形を作れることは説明しましたが、処理のほとんどを自分で記述していく必要があります。Javascriptが得意な方はそれほど問題にはならないでしょうが、Javascript初心者にとってはその言語を使えるようになることが、k6を使い始めるために超えなければいけない壁となってしまいます。 そこで今回はブラウザからぽちぽちでコードをジェネレートする方法をご紹介します。 har-to-k6 github.com har-to-k6とは、HAR(HTTP Archive File)ファイルをコンバートしてk6のシナリオをジェネレートするCLIツールです。ある操作をレコーディングしてHARを出力し、har-to-k6でJavascriptにコンバートしてストレステストを実行する、といったように、処理のほとんどをツールによってジェネレートできます。 試す HARはChromeやFirefoxのDevToolsからダウンロード可能なので簡単に試してみましょう。 har-to-k6のインストール GitHub - grafana/har-to-k6: JSON config representation of K6 script インストール方法はこちらに書かれている通りです。 Dockerで起動してもいいですし、npmでインストールしてもOKです。今回はnpmでインストールしたツールを使用します。 サンプルアプリを用意 github.com こちらのサンプルアプリを使用します。アプリケーションの起動にはDockerが必要になるので、事前にインストールしておきます。 Developmentに実行方法が書かれているので、その通りに実行します。 起動が完了するとhttp://localhostにアクセスすればTodo Appが表示されるはずです。 HARを出力 [F12]キーかメニューを辿って「デベロッパーツール」を起動してください。 デベロッパーツールの「Network」パネルに移動します。 Networkパネルでは、現在表示中のWebページのHTTPリクエストが見られます。すでに何かしらのHTTPリクエストが記録されている場合はレコーディングを一度停止しておきましょう。 ↓↓↓ 黒マルになっていればレコーディング停止状態です。 再度レコーディングボタンをクリックし、レコーディングを開始します。 「New Item」と書かれてテキストボックスに何かしらも文字を入力し「Add Item」ボタンをクリックします。 いくつかアイテムを追加したらHARファイルをダウンロードします。 私の場合は「localhost.har」というファイル名でダウンロードされました。 コンバート それでは実際に「localhost.har」をk6のシナリオにジェネレートしてみます。 $ har-to-k6 localhost.har info: Converting ’localhost.har' info: Wrote k6 script to ’loadtest.js' 「loadtest.js」というファイルが出力されました。 中身を確認してみるとk6のシナリオであることがわかります。http.postで先ほど入力した文字列などがポストされているのではないでしょうか。 実行 それでは実行してアイテムが追加されるか確認してみましょう。 k6の実行前にTodo Appに追加されたアイテムを一度削除してしまった方がわかりやすいかもしれません。 $ k6 run loadtest.js エラーなく完了しました。 ブラウザを確認すると、たしかに先ほど追加したアイテムが再度追加されています。 loadtest.jsにはoptionsが設定されています。試しにvusなどを設定してみます。 diff –git a/loadtest.js b/loadtest.

Read more...

k6でストレステストを試す

最近お仕事でk6に触れる機会がありました。Apache JMeterやLocustは触ったことがあったのですが、k6は初めてだったので、備忘録的に記事を残しておきます。 k6 k6.io github.com k6はGrafana Labsが開発している負荷テストツールです。Javascriptで書かれたシナリオを「k6」コマンドで実行します。SaaSも提供されているので、マシンに空きリソースがない場合はSaaSを利用するのがいいかもしれません。k6-operatorというのを使えばK8sで実行できるようなので、AWS EKSやGoogle Cloud GKEなどで動かすのもいいかもしれないですね。 使ってみる なにはともあれインストールしてみましょう。といっても、Linux/macOS/Windowsでパッケージが用意されています。インストールドキュメントを参考にインストールしてください。 *arm64のDebパッケージは配布されていないようです。 publish arm64 builds in linux repos · Issue #2136 · grafana/k6 · GitHub GitHub Releasesにはlinux-arm64のバイナリがアップされているので、こちらからダウンロードしてPATHの通ったディレクトリに配置するといいでしょう。 インストールが完了したら「k6」コマンドを実行してみます。 Usageが表示されれば成功です。 シナリオを作る 1からシナリオを作成してもいいのですが、k6にはシナリオの雛形を作る「new」サブコマンドが用意されています。実行してみます。 $ k6 new Initialized a new k6 test script in script.js. You can now execute it by running `k6 run script.js`. newコマンドを実行するとscript.jsというファイルが作成されました。中身はほとんどコメントアウトされています。 newコマンドの結果に出力されている通り、runコマンドを実行してみます。 $ k6 run script.js なんだか色々表示されました。 コメントアウトされている部分を除外してscript.jsの中身を見てみると下記のようになっていました。 import http from ‘k6/http’; import { sleep } from ‘k6’;

Read more...

イベントレポート '24/11月開催 とことんDevOps勉強会「Visual Studio CodeのDev Containersを使って開発環境構築してみよう」

今回のとことんDevOps勉強会は「イベントレポート ‘24/11月開催 とことんDevOps勉強会「Visual Studio CodeのDev Containersを使って開発環境構築してみよう」」と題して、日本仮想化技術の石本が講師として登壇しました。 今回は毎年9月のオープンデベロッパーカンファレンスで開催しているワークショップの内容をデモする会としてお送りしました。 今年開催した内容から大幅リニューアル中ではありますが、少しずつ形になってきており、後続レッスンも順次追加中です。 今回のレッスン1を見ていただき、Dev Containersに興味を持って頂けたらと思います。 セミナー動画 発表資料 Q&A まとめ IDE向けの設定が保持される場所について Rancher desktopでの利用について VS CodeとJetBrains社IDEのDev Containersの考え方の違いとコンテナの共用について セミナー動画 www.youtube.com 発表資料 speakerdeck.com Q&A まとめ IDE向けの設定が保持される場所について 質問 VSCodeのプラグイン等のIDE向け設定は、DevContainerの外側にあるのでしょうか?Container内に含まれるのでしょうか? 回答 Dev Containersの外側にあり、その設定を元にDev Containersが立ち上がります。 Rancher desktopでの利用について 質問 Docker Desktop ではなく、Rancher desktop を使用して、DevContainerを使用することは可能ですか? 回答 はい、可能です。詳しくはRancher Desktopの公式サイトにまとめられていました。 https://docs.rancherdesktop.io/how-to-guides/vs-code-remote-containers/ VS CodeとJetBrains社IDEのDev Containersの考え方の違いとコンテナの共用について 質問 VS Code向けに作成したDev Containerと、JetBrains社IDE向けのDev Containerで、考え方に違いはあるのでしょうか?コンテナを共用可能だったりするでしょうか? 回答 VS Code固有の設定項目やJetBrains社IDE固有の設定項目で書き方や内容などインターフェースレベルでの違いはあるかもしれませんが コンテナを動かす上で必要なものや実行している環境はどちらも共通してDockerのコンテナを使用ているため、大きなコンテナに違いはないと思います。 また、VS CodeとJetBrains社IDEで同じコンテナへアクセスすることで共用は可能かと思います。 同時編集を上手く処理してくれるかは試していないのでわかりません。 [source]

月刊DevOpsニュース 2024年10月号

今年も残すところ2ヶ月になりました。少しずつ年末の慌ただしさが出始めた頃でしょうか? 10月のDevOpsニュースまとめを作成しましたので、振り返りがてらお読み頂ければ幸いでございます。 PostgreSQL クラウド プログラミング 生成AI OS リリース PostgreSQL Webブラウザ上のWASM版PostgreSQLをサーバとし、PostgreSQLクライアントから接続可能になる「dabase.build:Live Share」、Supabaseが発表 www.publickey1.jp クラウド マイクロソフト、独自Armプロセッサ「Azure Cobalt 100」の仮想マシンを正式提供開始 www.publickey1.jp AWS、Redisをフォークした「Valkey」をAmazon ElastiCacheとAmazon MemoryDBで提供開始 www.publickey1.jp 国内プライベートクラウド市場は2023年の2兆円から5年で2倍以上の4兆円超に。IDC Japanの予測 www.publickey1.jp プログラミング GitHub⁠⁠、自然言語でAIと対話してアプリを開発するツールGitHub Sparkを発表⁠⁠、GitHub CopilotでAnthropic⁠⁠、Google⁠⁠、OpenAIのAIモデルを選択可能に gihyo.jp Announcing TypeScript 5.7 Beta devblogs.microsoft.com JetBrains、JavaScript/TypeScriptのためのIDE「WebStorm」と.NETのためのIDE「Rider」、非商用利用ならば無償で利用可能に。RustRoverやAquaに続き www.publickey1.jp Webブラウザ上でWebAssembly製コンパイラによりC言語をWebAssemblyにコンパイル、そのまま実行可能に。Wasmer 4.4の新機能 www.publickey1.jp PythonでJITコンパイラとマルチスレッド処理が実験的に実装された「Python 3.13.0」正式公開 www.publickey1.jp 「Deno 2」正式リリース、Deno 1/Node.js互換性を保ち、フォーマッタ、リンター、Jupyter Notebook機能など統合。LTS版で企業ニーズにも対応 www.publickey1.jp Electron代替を目指す「Tauri 2.0」正式版に到達。デスクトップアプリとモバイルアプリ開発の両方に対応 www.publickey1.jp JavaScriptランタイムのBunが、C言語のコンパイルとJavaScriptプログラムからの実行をサポート www.publickey1.jp 生成AI ChatGPTがコーディング支援を強化。コードエディタ機能を統合、コードレビューやデバッグ、他言語への移植ツールなどを含む新機能「Canvas」が登場 www.publickey1.jp OS AlmaLinux⁠⁠、新たな開発ブランチAlmaLinux OS Kittenをローンチ gihyo.jp Linux Foundation⁠⁠、無料のオンライン講座「Linux入門」の提供開始 gihyo.jp リリース Ubuntu 24.10の変更点 gihyo.jp [source]

Pleasanterのプロセスで作成したボタンのアイコンをスクリプトで上書きする方法

Pleasanterのプロセス機能でボタンを作成すると、作成や更新と同じアイコンが表示されます。 誤操作や誤解を防ぐために、ボタンのアイコンを実際の処理近いものに変更したいことがありますが、標準機能ではアイコンを変更することはできません。 今回は、Materialアイコンを設定する方法を紹介します。ただし、PleasanterのバージョンによってはMaterialがサポートされていない可能性があります。 具体的にどのバージョンからとは言えないのですが、噂によるとログイン時のパスワード表示/非表示アイコンが出ていたらサポートされているみたいです。 ボタン名とアイコンの意味が一致していないですが、こんな感じで変更できます 使用したいアイコンを決める Materialアイコンから今回使用したいアイコンを選びます。今回はpost_addを使用します。Materialアイコンの一覧は以下のURLから確認できます。 Material Symbols and Icons - Google Fonts 必要な<span>...</span>タグをコピーしてメモ帳やエディターに貼り付けて用意します。 スクリプトの作成 以下のスクリプトをPleasanterのスクリプトに追加して保存します。 function overrideButtonIcon(id, newClassName, newText) { const element = document.querySelector(`#${id} > span.ui-button-icon.ui-icon.ui-icon-disk`); if (!element) { console.error(`要素が見つかりません: #${id}`); return; } element.className = newClassName; element.innerText = newText; element.style.fontSize = “16px”; element.style.verticalAlign = “middle”; } window.addEventListener(“load”, (event) => { overrideButtonIcon(“Process_1”, “material-symbols-outlined”, “post_add”); }); 中の処理を簡単に説明するとclass属性とinnerTextを置き換えて、フォントサイズなどを整えているだけです。 先ほどコピーした<span>...</span>タグの中身をoverrideButtonIcon関数の引数に渡しています。 Process_1: ボタンのIDをoverrideButtonIcon関数の第1引数に渡します。プロセスIDに応じて置き換えてください material-symbols-outlined: class属性の値をoverrideButtonIcon関数の第2引数に渡します。 post_add: innerTextの値をoverrideButtonIcon関数の第3引数に渡します。 <span class=“material-symbols-outlined”> post_add スクリプトの変更ができたら、更新して編集画面を開いてボタンのアイコンが変更されていることが確認できたら成功です。 [source]

1 of 3 Next Page