並び順

ブックマーク数

期間指定

  • から
  • まで

281 - 320 件 / 1565件

新着順 人気順

シェルスクリプトの検索結果281 - 320 件 / 1565件

  • 静的型付きスクリプト言語 Cotowali

    この記事は未踏2021採択者アドカレ! の 23 日目の記事です。 Cotowali について Cotowali は、2021年度未踏に「シェルスクリプトへのコンパイルを行う静的型付けスクリプト言語の開発」のテーマで採択され、現在開発中のスクリプト言語です[1] Cotowali コンパイラは V言語で記述されています。Vコミュニティ公式ではないプロジェクトとしては規模が大きく、V言語コンパイラのバグ発見にも貢献しています[2]。 コンセプト POSIX 準拠シェルスクリプトへのトランスパイル シェルスクリプトの機能を取り入れながらも、一般的な言語に近く理解しやすい文法 シンプルな静的型付け ちなみに、Cotowali はあくまでシェルスクリプトをバックエンドに使う新規のスクリプト言語であり、シェルスクリプトに型をつけるものではありません。 静的型付けではありますが、型システムはごく簡易な

      静的型付きスクリプト言語 Cotowali
    • シェルスクリプトで変数に改行文字を入れる方法の細かすぎる解説 - Qiita

      すべての POSIX シェルで使用可能なので私はこれを推奨します。シェルスクリプトの改行コードは Windows の CR+LF ではなく LF を使用している前提です。いくつかの環境ではシェルスクリプトの改行コードに CR+LF を使用していても動くようなのですが(未調査)、遅かれ早かれ問題になるはずです。また需要は少ないと思いますが、POSIX シェル以前の Bourne シェルでも使える(おそらく)唯一の方法です。Solaris 10 などの古い環境にも対応させるのであればこの方法しかありません。 メリットはコードの量が最も少なく最も速いということです。デメリットは 2 行になるため少し不格好でインデントをする場合に困るだけですが、インデントに関してはこのような定数はスクリプトの上部の関数の外で定義するので通常は問題にならないはずです。 LF=$'\n' bash、ksh、mksh、

        シェルスクリプトで変数に改行文字を入れる方法の細かすぎる解説 - Qiita
      • 実例で学ぶ MySQL/MariaDB デバッグ - nayuta-yanagisawa's blog

        この記事では、MySQL/MariaDB のバグを修正するための典型的な手順を、具体例を通して解説する。次の MariaDB のバグを例として取り上げるが、基本的なデバッグの手順は MySQL でもまったく同様である。 MDEV-24868: Server crashes in optimize_schema_tables_memory_usage after select from information_schema.innodb_sys_columns なお、MySQL/MariaDB のデバッグ方法についての包括的な解説を与えるのは、この記事のスコープ外である。デバッグ手法の詳細を知りたい場合は、以下の一連の記事を参照してほしい。 Debugging MySQL/MariaDB (1): Build and Test Debugging MySQL/MariaDB (2): DBU

          実例で学ぶ MySQL/MariaDB デバッグ - nayuta-yanagisawa's blog
        • 開発効率を計測するデータ基盤の管理にDataformを使ってみた - yasuhisa's blog

          Dataformを初めて使ってみたので、雑に感想を書いておきます。結構よかった。 使ってみようとした背景 Dataformについて 試してみてどうだったか よかった まだまだこれからっぽいところ & 気になり 参考 使ってみようとした背景 今週、社内の開発合宿に参加していた。変更のリードタイムやデプロイ頻度などのFour Keysにあるような指標を計測できるデータ基盤を作るのが目標。様々なチームの開発のパフォーマンスをトラッキングしやすくして、うまくできているチームがなぜうまくいっているのかを明らかにしたり、改善施策を行なった結果指標も改善しているか定量的に確認できるようにして、開発効率を上げる土台を作るというのが目的。この辺の詳しいことは後々別のエントリで書かれると思う。 自分のチームは3人構成で、在宅のオンラインでやっていた。 id:shiba_yu36さん Mackerelチームでも

            開発効率を計測するデータ基盤の管理にDataformを使ってみた - yasuhisa's blog
          • 生きているのならシェルスクリプトにだってなってみせる、そうPerlならね - Sexually Knowing

            シェルスクリプトを書くのをやめる - blog.8-p.info これを見て: 夢の可能性が高くなってきたんですが、Perlのプラグマかなにかで、シェルスクリプトと混在できる……というか、存在しないサブルーチン呼び出しを外部コマンド呼び出しにするやつありませんでしたっけ— aereal / 青木華絵 (@aereal) 2021年9月16日 まじだ... https://t.co/IF6SyBR4o8— Kazuyoshi Kato (@kzys) 2021年9月16日 Shell - run shell commands transparently within perl - metacpan.org use Shell qw(cat ps cp); $passwd = cat('</etc/passwd'); @pslines = ps('-ww'), cp("/etc/passwd"

              生きているのならシェルスクリプトにだってなってみせる、そうPerlならね - Sexually Knowing
            • Webシステムにおける HTTPサーバ機能をどう用意するか?という問題に対して先人達の葛藤の歴史 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]

              こんにちは羽山です。 現代の Webシステム界隈は昔よりもはるかに洗練され、初心者からでも簡単に開発方法を学び作れる時代になっています。その反面で例えば Python なら WSGI や gunicorn、Waitress、uWSGI などが何のために存在しているのかが分かりにくいと思ったことはありませんか?Ruby の Rack、unicorn、puma だったり FastCGI など、いずれも Webシステムの構成要素として重要な一方で役割を理解しにくいのは事実です。 そこで今回は Webシステムが現代の形にたどり着くまでの先人達の葛藤の歴史を解説します。歴史を知ればこれらの仕様やプロダクトが何の役になっているかが分かるはずです。 前提 動的な Webサイト(=Webシステム)を作りたいニーズはインターネット黎明期からありますが、ブラウザからのアクセスを適切に処理するには HTTPサー

                Webシステムにおける HTTPサーバ機能をどう用意するか?という問題に対して先人達の葛藤の歴史 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]
              • 仕組みと一緒に作りながら学ぶシェル - Qiita

                はじめに みなさん、シェルについてご存じでしょうか?bashやzshなどエンジニアであれば誰もが触ったことのあるであろうターミナルから使用することのできるあれです。もちろん知ってるよという人もいると思いますが、意外とその仕組みまで知った上で使用している人は少ないのではないでしょうか?(自分もそのうちの一人です、、、) そこで!この記事では、シェルの全体像と仕組みについて解説してみたいと思います。また、最後に仕組みをなぞった上で簡単なシェルの実装を行ってみたので、この機会に改めてエンジニアの身近にあるシェルについて理解を一緒に深めていきましょう。 弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。 また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。 シェルとは? シェルとはオペ

                  仕組みと一緒に作りながら学ぶシェル - Qiita
                • ShellでSeleniumを作る ~Shellnium~ - Qiita

                  はじめに この記事はQiita夏祭り2020のイベントの1つ、パソナテックさんが開催している「〇〇(言語)のみを使って、今△△(アプリ)を作るとしたら」のテーマで投稿しています。 いやぁ良いお題ですよね。エンジニア心揺さぶられるし、景品も豪華だし、何よりちょっとワクワクしたので参加させていただきました。 今回は「ShellでSeleniumを作る ~Shellnium~」というお題でやっていきます。下記はShellniumで遊んでいるGIFです。 ブラウザの自動操作の模様をiTermの背景として鑑賞することができます。意味不明さがすごいですね。(透明度をいじってるとかではありません) いろんな言語でSeleniumは扱える Seleniumは皆さん御存知の通り、ブラウザの自動操作をするツールですね。 SeleniumはWebDriverを介してブラウザの自動操作を行っていくもので、php,

                    ShellでSeleniumを作る ~Shellnium~ - Qiita
                  • AWSでTerraformの実行を自動化する方法 - なになれ

                    AWSでTerraformの実行を自動化する環境を作成しました。 github.com AWS内で閉じた形で、Terraformを使い、自動的にAWSリソースを作成する前提です。 Terraformを実行する環境はCodeBuildで用意しました。 その実現方法を紹介します。 環境作成 ディレクトリ構成 terraform-auto-apply-example直下には、自動化の環境を作成するためのtfファイル(main.tf、codebuild.tf)があります。 exampleディレクトリ内のtfファイルが自動実行の対象になります。 terraform-auto-apply-example ├── Dockerfile ├── README.md ├── buildspec.yml ├── codebuild.tf ├── docker-build.sh ├── example │  

                      AWSでTerraformの実行を自動化する方法 - なになれ
                    • GitHub Actionsとtfupdateを使ってTerraformおよびTerraform Providerのバージョンアップを自動化する - ZOZO TECH BLOG

                      はじめに こんにちは。SRE部MLOpsチームの築山(@2kyym)です。 Infrastructure as Code(IaC)が一般的になり、またパブリッククラウドをフル活用したインフラ構築が当たり前となりつつあります。そんな中で、インフラの構成管理にTerraformを用いているチームも多いのではないでしょうか。本記事ではTerraformを用いたインフラ構成管理において避けては通れないTerraformやProviderのバージョンアップを自動化し、IaCの運用負荷を削減する方法をご紹介します。MLOpsチームでの運用を参考に、具体的な設定やハマりどころを交えつつ解説できればと思います。 目次 はじめに 目次 Terraformとは MLOpsチームにおけるTerraform運用の背景 Terraform管理の対象リソース Terraform運用において生じた課題 tfupdate

                        GitHub Actionsとtfupdateを使ってTerraformおよびTerraform Providerのバージョンアップを自動化する - ZOZO TECH BLOG
                      • GitHub Appを使ってDependabotが作るpull requestを自動マージさせる - inSmartBank

                        こんにちは。皆さんは自身がメンテナンスするソフトウェアが依存するパッケージの更新、いわゆるdependency updateをどのような形で行っていますか? SmartBankが提供するサービスB/43の開発では主にGitHubのDependabot version updates機能を用いて定期的なdependency updateを行っています*1。これは簡単にいえばGitHub repositoryにYAMLファイルを置いておくだけで自動的かつ定期的にversion updateのpull requestを作ってくれる便利なやつです。 便利ではあるのですが、アプリケーション規模やチーム体制によっては日々作成されるpull requestをさばくのに苦労することがあります。本記事ではそのような運用課題を解決するために導入した、GitHub Appを使った自動マージについて解説します。

                          GitHub Appを使ってDependabotが作るpull requestを自動マージさせる - inSmartBank
                        • Auth0からCognitoへのユーザー移行 - ROBOT PAYMENT TECH-BLOG

                          こんにちは。ROBOT PAYMENT (以下、ロボペイ)でエンジニアをしているtakamoriです。 私が所属しているチームでは、請求先マイページ機能を開発しており、その中でユーザー認証基盤をAuth0からCognitoへと移行させました。そこで今回は、Auth0からCognitoへのユーザー移行手順を書いていきたいと思います。 ※ 本記事ではAuth0やCognitoの環境構築は対象外で、それぞれの環境が構築済み前提となります。 移行手順 Auth0からユーザーをエクスポート Auth0ユーザー情報をCognitoユーザー情報へマッピング Cognitoへユーザーをインポート Auth0からユーザーをエクスポート Auth0からのユーザーをエクスポートするには、ExportUsersJob APIを利用します。GetUsers APIを利用して取得することも可能ですが1,000件の取得

                            Auth0からCognitoへのユーザー移行 - ROBOT PAYMENT TECH-BLOG
                          • 20H1とともに正式に来るWindows Subsystem for Linux 2の実力を見る (1/2)

                            そろそろ「May 2020 Update」こと、Windows 10 Ver.2004(以下コード名で20H1)が最終版になる。とりあえず、完成したよ的なアナウンスがあった。 20H1における最大の変更点は、Linuxカーネルを使うWSL2(Windows Subsystem for Linux 2)だ。そこで今回は、WSL1とWSL2を比較してみることにした。WSL2ではLinuxカーネルが仮想HDD上でネイティブのファイルシステムを動作させる。このため、NTFSの上でLinuxのファイルシステムをエミュレートしていたWSL1のVolFs(あるいはlxfx)に比較してファイル処理などが高速化するという。 その一方で、WSL2では仮想マシン環境でLinuxカーネルを起動させるためオーバーヘッドがある。また、WSL2からNTFS側をアクセスするには、9Pと呼ばれるネットワークプロトコルが用い

                              20H1とともに正式に来るWindows Subsystem for Linux 2の実力を見る (1/2)
                            • Lenovo ThinkCentre M75q-1 Tinyに浮かれている - sasasin’s blog

                              Lenovo ThinkCentre M75q-1 Tiny を買った。まさか据え置きPCを再び買うとは思ってなかった。Lenovo直販で 2020/05/10 に発注して、2020/05/21に到着した。 Macbook Pro 15を数年前から買い替えながら使ってて、MBP16にいまいち食指が動かない状況で、この同人誌にプッシュされた。 booth.pm 部品を揃える Lenovo直販サイトでグレードを上げると、無駄に値上りする。他所で部品を集める前提で、極限まで絞って購入した。 本体, 35000円 アホほど安い。部品構成だけ見ると平凡。だけど、Mac Miniと同じくらい小型で、自作PCとして組むとくっそ面倒くさい、という補助線をひくと、この価格設定はヤバい。 135w ACアダプタ, 5000円 本体付属のACアダプタは 65w で、本気出すと電力不足から貧血みたいな症状を起こす

                                Lenovo ThinkCentre M75q-1 Tinyに浮かれている - sasasin’s blog
                              • Haskellの型と直観論理 - 朝日ネット 技術者ブログ

                                開発部のxgotoです。Haskellの初級・中級者向けのトピックを取り上げたいと思います。 今回は型(Type)についてです。型はHaskellの入門書でも必ず最初のほうに説明されるもので、手元の本によれば、 型とは、互いに関連する値の集合である。 ---- 『プログラミングHaskell』 Graham Hutton 著 / 山本和彦 訳 だとか、 値の世界は型と呼ばれる系統的な集まりへと分割される。 ---- 『関数プログラミング入門 Haskellで学ぶ原理と技法』 Richard Bird 著 / 山下伸夫 訳 などのように書かれています。たとえば Bool は True と False の2つの値からなる集合だし、Intは整数の集合というように、型は値の集合というふうにみることができます。それならば型などと呼ばずに集合と呼べばいいと思いますが、「異なるものには異なる名前をつけろ

                                  Haskellの型と直観論理 - 朝日ネット 技術者ブログ
                                • ISUCON9予選で総合4位になり本選進出を決めました - Gマイナー志向

                                  ISUCON9予選1日目に「いんふらえんじにあー as Code」として参加し、1日目に3位(1位が棄権したため2位)で予選通過を勝ち取りました。 予選通過はISUCON4以来、5年ぶりです。なお、総合順位は4位だった模様です。 メンバー紹介 チーム名 いんふらえんじにあー as Code あいこん なまえ やくわり netmarkjp 司令塔 ishikawa84g レギュレーションやコードやログやDiscordを見る情報官 matsuu バリバリ実装する前衛 最終構成 nginx --+-- app(go) --+-- mysql 1台目 | | +-- app(go) --+ 2台目 | | +-- app(go) --+ 3台目 2台目と3台目は /login のアクセスのみ振り分け(bcryptのハッシュ処理のため) nginxとmysqlは初期バージョンのまま変更せず スコアの

                                    ISUCON9予選で総合4位になり本選進出を決めました - Gマイナー志向
                                  • GitHub Actions の JavaScript Action を TypeScript で書いた - はやくプログラムになりたい

                                    GitHub Action を TypeScript で作成したので,覚え書きがてらどうやって作ったかについて書きます. github-action-benchmark という Action をつくりました. 紹介記事:継続的にベンチマークを取るための GitHub Action をつくった Action とは 今年9月に GitHub Action v2 がリリースされました.GitHub Action は GitHub が提供する CI/CD サービスです. 既存のサービスと大きく違う点は,処理を汎用的に Action として切り出して再利用できることです. 例えば,GitHub からのリポジトリのクローン actions/fetch や Node.js のセットアップ actions/setup-node などの基本的な実行ステップも Action として実装されています. Acti

                                      GitHub Actions の JavaScript Action を TypeScript で書いた - はやくプログラムになりたい
                                    • JSONが格納された環境変数から、JSONのキーの名前とその値で環境変数をセットするツールを作った - でこてっくろぐ ねお

                                      2ヶ月くらいかけて毎日盆栽のようにちょっとずつ手を入れていたツールがまぁいい感じになってきたかなと判断したので、紹介エントリです。 2020/11/07 追記 このエントリを書いた2日後に、以下AWSの新機能が出て、以下私がこのツールを作った理由として述べている部分は、AWSの機能で代替可能となりました。まぁ、このエントリを読むと分かる通り、AWSがそこを実装していることを前提として、"捨てやすくする"という方針で開発したツールではあるので狙いどおりではあるんですが、ちょっと悔しい気持ちもありますね。捨てやすくする以前に使わなくてよくなった、的な。 AWS Fargate for Amazon ECS launches features focused on configuration and metrics CDKにもこの機能が来ましたので、もうなんでもできます。ecs: secret

                                        JSONが格納された環境変数から、JSONのキーの名前とその値で環境変数をセットするツールを作った - でこてっくろぐ ねお
                                      • Terraformとdriftctlで行うGoogle Cloud 権限管理の省力化 - ZOZO TECH BLOG

                                        はじめに こんにちは、ML・データ部MLOpsブロックの岡本です。 MLOpsブロックでは日々複数のGoogle Cloudプロジェクトを管理しています。これらのプロジェクトでは、データサイエンティストやプロジェクトマネージャーなど別チームのメンバーが作業することもあり、必要に応じてメンバーのGoogleアカウントへ権限を付与しています。 権限の付与はプロジェクトの管理者であるMLOpsブロックメンバーが行いますが、これは頻繁に発生する作業でありトイルとなっていました。 また権限付与後はこれらを継続的に管理し、定期的に棚卸しすることで不要になった権限を削除する必要があります。しかし当初の運用だと権限の棚卸しの対応コストが大きく、これが実施されずに不要な権限が残り続けるという課題もありました。 本記事ではMLOpsブロックで抱えていたGoogle Cloudプロジェクト内での権限管理における

                                          Terraformとdriftctlで行うGoogle Cloud 権限管理の省力化 - ZOZO TECH BLOG
                                        • GitHub Actions で学ぶシェル芸

                                          GitHub Actions は run でシェルを実行していくのが基本です。 シェルに詳しければサードパーティアクションを使わなくて済んだり[1]、複雑なロジックを組まずに済んだりするので、改めてシェルを学ぶきっかけにいいのではないかと思いました。 ネタ募集。 脚注 サードパーティアクションを使用するとセキュリティへの配慮が必要だったり、 Enterprise だと GitHub Connect の設定をしたり actions-sync したりしないといけなかったりするので意外と面倒です ↩︎

                                            GitHub Actions で学ぶシェル芸
                                          • 趣味Rustから業務Rustへ

                                            こんにちは!プロダクト開発部の熊谷です。 Fairy Devices(フェアリーデバイセズ) の 入社エントリ を書きます!! 背景 私が Rust に出会ったのが2019年。それまでは C, C# をよく書いていましたが、 Rust の型システムやメモリ安全性、パフォーマンスに魅了され、ますます没頭していきました。 当時学生だったわけですが、新卒時は Rust にこだわらず仕事の安定性を求めて、 SIer 業界に就職しました。 そこで働きつつ、こんなことを思っていました 業務でも Rust を書きたい! 自社製品を開発したい! 5000兆円欲しい! 業務経験も乏しい上に Rust の求人はまだ少なく狭き門になると考え、個人開発や勉強会への参加など頑張っていました。 そんなとき、 Rust.Tokyo で当社の存在を知り、入社に至りました。 何をやっているか mimi®クラウドAI のサー

                                              趣味Rustから業務Rustへ
                                            • どのプログラミング言語が使われているのか、JetBrainsが調査レポートを発表

                                              どのプログラミング言語が使われているのか、JetBrainsが調査レポートを発表:移行先はGo、Kotlin、Python JetBrainsは、開発者エコシステムの現状に関する4回目の年次調査の結果をまとめたレポート「The State of Developer Ecosystem 2020」を発表した。開発者がどのようにビッグデータを分析しているかについても調べた。 Java IDEの「IntelliJ IDEA」やプログラミング言語の「Kotlin」などを手掛けるJetBrainsは2020年6月11日(現地時間)、開発者エコシステムの現状に関する4回目の年次調査の結果をまとめたレポート「The State of Developer Ecosystem 2020」を発表した。 JetBrainsはこの調査を2020年初めに行い、2万人弱の開発者が回答した。調査結果の概要は次の通り。

                                                どのプログラミング言語が使われているのか、JetBrainsが調査レポートを発表
                                              • Deno + TypeScriptでzshプラグインを実装して最高になった

                                                概要 今回作ったプラグインは yuki-yano/zeno.zsh です。 昔 yuki-yano/fzf-preview.zsh というものを作っていたのですが、シェルスクリプトでの実装と保守が厳しすぎて放置しており、それをDenoで再実装したものになります。 zshで頻繁に使う機能の拡張を実装しており、zshの操作体験を改善できると思います。 まずはデモを見てみてください。 具体的なプラグインの機能としては以下があります。 abbrevを用いたsnippetの展開 ファジーファインダー(fzf)を用いた補完 fzfを用いたsnippetの挿入 その他いくつかの便利utility Denoを採用した理由はいくつかあるのですが、それについては後述します。 デモ Abbrev snippet Fuzzy completion zeno.zshの主要機能 Abbrev snippet zshで

                                                  Deno + TypeScriptでzshプラグインを実装して最高になった
                                                • Javaスクリプト入門 - きしだのHatena

                                                  みんなでJavaスクリプトに入門しましょう! クラスをちゃんと定義する それでは、まずはJavaっぽく書いてみましょう。 public class Main { public static void main(String[] args) { System.out.println("Hello!"); } } これを、任意のファイル名で保存します。たとえばhello。 実行するにはJava 11以降が必要です。みなさんすでにSDKMANを入れてると思うのでOracle OpenJDKの12.0.1を使ってみましょう。 $ sdk use java 12.0.1-open では実行します $ java --source 12 hello Hello! 実行できました! これではちょっと面白くないので、先ほどのファイルの先頭にちょっとなにか追加しておきます。 #! /home/naoki/.s

                                                    Javaスクリプト入門 - きしだのHatena
                                                  • Jamf ProでMacのゼロタッチデプロイをやってみた話 - SmartHR Tech Blog

                                                    こんにちは、コーポレートエンジニアの小石(@koipai)です。 この記事では、毎月10〜20人が入社してくるSmartHRにおいて、従業員PCにかかる初期セットアップを自動化して、オンボーディングをちょっと楽に、そしてリモートワークにも対応できるシステム構築をした話をしたいと思います。 なにが課題だったのか まず、前段となる話、つまり僕がSmartHRに入社してJamf Proを触り始める以前の話をすると、僕が入社した2019年11月時点、SmartHRでは既にJamf Proが導入済み、ゼロタッチデプロイっぽいことはやっていた、という感じでした。 SelfServiceによる「なんちゃってゼロタッチデプロイ」 Jamf ProにはSelfServiceという、Jamf独自のアプリ配布用アプリが存在します。 そして、SelfServiceでは管理者によって登録されたアプリを従業員が任意で

                                                      Jamf ProでMacのゼロタッチデプロイをやってみた話 - SmartHR Tech Blog
                                                    • 僕たちとECSとデプロイとその改善 | 株式会社ヌーラボ(Nulab inc.)

                                                      みなさんこんにちは。Backlog課のGitチームに所属するテリーです。今回は僕たちが日々運用するECS Fargate上のアプリケーションのデプロイ方法とそれをどう改善してきたかについてまとめました。デプロイについて迷っている方や日々の業務の改善が好きな人に読んでもらえたらと思います。 Git機能におけるデプロイ ECS上で動くアプリケーション BacklogのGitはEC2上で動くアプリケーションとECS Fargate上で動くアプリケーションで構成されています。 アーキテクチャの外観は上記のようなになっています。Gitのアーキテクチャについて過去に詳しく説明したブログを発表していますので詳しくはこちらを参照ください。 僕たちは上記のアーキテクチャ中の4つのアプリケーションをECS Fargate上で運用しています。また、内部的な話になりますがBacklogには内部構造として複数の本番

                                                        僕たちとECSとデプロイとその改善 | 株式会社ヌーラボ(Nulab inc.)
                                                      • .envでDocker開発環境をカスタマイズ!

                                                        こんにちは、エンジニアの籏野です。 以前、弊社のエンジニアが社内の Dockerfile のベストプラクティスを公開しました。 この頃から更に Docker を用いるための知見が増えてきており、アプリ開発時にはコンテナを利用することが当たり前になってきました。 新規アプリはもちろんのこと、昔からあるアプリに対してもコンテナによる開発環境を用意する動きが多くあります。 コンテナ起動には docker-compose(もしくは docker compose プラグイン)を利用していますが、いろんな開発者がコンテナを利用していると、「自分の環境では少しだけ設定を変えたい!」という場面が出てきます。 そんなニーズに応える docker compose の設定方法を紹介します。 3 行まとめ compose.yml の設定値を変数化しておく 変数は.env で定義する .env をシェルスクリプトで

                                                          .envでDocker開発環境をカスタマイズ!
                                                        • Dockerfile の RUN instruction で heredoc 記法をそのまま使うとコマンドが non-zero exit status で死んでも docker build が成功してしまう - polamjaggy

                                                          tl; dr Dockerfile の heredoc 機能の中で凝ったことをやるときはコマンド群の最初に set -e とか書くのが無難そう 近年 Dockerfile 内で heredoc 記法が使えるようになったことが知られていて、 www.docker.com 割と凝ったことができる機能で、シンプルには以下のように RUN にずらずら書くときシュッと書けて便利、というのがわかりやすいと思う。 思うんだけど、こういうふうに heredoc の中でなんかミスってしまったときに何が起こるかというと、 # syntax=docker/dockerfile:1.3-labs FROM debian RUN <<EOF apt-get install packagewhichdoesnotexists ls EOF こういう感じで docker build は成功扱いになってしまう。 % do

                                                            Dockerfile の RUN instruction で heredoc 記法をそのまま使うとコマンドが non-zero exit status で死んでも docker build が成功してしまう - polamjaggy
                                                          • zx + Datadog + GitHub Actions でフロントエンドのコードベースの健全性を可視化する

                                                            フロントエンドのダッシュボードを作ってみたらいい感じだったので紹介です。 作ったもの zx と Datadog、GitHub Actions を使って以下画像のように、フロントエンドのコードベースの各指標を可視化するダッシュボードを作りました。 値はデモ用に書き換えています 現在、計測している指標はこちらです。 Vue SFCファイルにしめるTypeScriptの割合 Vue SFCファイルにしめるComposition APIの割合 strict: trueにした場合のType Errorの数(tsc & vue-tsc) Jestの各種カバレッジ 各指標は毎朝9時に更新していて、時系列での推移も確認できます。 なぜ作った? 技術的負債解消等コードベースのリファクタリングの活動は、機能追加に比べ進捗を把握しにくい、成果が伝わりにくいという問題があり、それを解消したいと考えたからです。 こ

                                                              zx + Datadog + GitHub Actions でフロントエンドのコードベースの健全性を可視化する
                                                            • bashとzshの違い。bashからの乗り換えで気をつけるべき16の事柄

                                                              bashからzshに乗り換えるユーザーを対象に16の違いをまとめました。MacOSもbashからzshに変更になりましたので、zshを使い始めるにあたってのポイントを解説していきます。 はじめに zshとは? 2019年、WWDC19の基調講演でApple社は次にリリースする「MacOS X Catalina」より標準のシェルを「zsh」に変更すると発表しました。そして現在、Macを購入したり最新のバージョンにアップデートしてターミナルを開くとbashではなくzshが起動します。 もともとMacOS Xは当初tcshであったのがv10.3 Pantherよりbashに変更された経緯があり今回それがzshにさらに変更された形になります。 こうなった経緯としてはbashのライセンスとセキュリティによる事情があります。MacOS Mojaveまでに搭載されているbashはバージョンが3で実はこれ

                                                                bashとzshの違い。bashからの乗り換えで気をつけるべき16の事柄
                                                              • Docker 環境を作るなら Ubuntu のクロスプラットフォームな仮想化ツール Multipass を使おう

                                                                はじめに Web アプリケーションを開発する際、バックエンドの API サーバーやデータベースなどの複数のマシン環境を1台の PC で動かすことの可能なコンテナツールとして、Docker は広く利用されています。 この便利な Dockerですが、複数人で Web アプリケーションを開発しているチームで各メンバの開発用 PC の OS が異なる状態(例えば、A さんが Windows、B さんが macOS など)で、Docker をローカル環境に直接インストールしていた場合、下記のような不都合が発生します。 Docker のバージョンがメンバ間で統一されていない 😱 コンテナ外で使用必須のツールのインストール方法・バージョンがメンバ間で異なる 😱 コンテナ外で使用必須のシェルスクリプトは OS 毎で(または OS の差異を考慮して)作成する必要がある 😱 以上の問題は、Docker

                                                                  Docker 環境を作るなら Ubuntu のクロスプラットフォームな仮想化ツール Multipass を使おう
                                                                • Kaggleで世界トップレベルになるための思考法。Grandmaster小野寺和樹の頭の中 - Findy Engineer Lab - ファインディエンジニアラボ

                                                                  Kaggleとは、世界最大級の機械学習およびデータ分析のコンペティションです。コンペの主催企業や研究機関などがデータや分析のテーマを提供。その内容に基づいて世界中の参加者たちが機械学習モデルの精度を競います。 Kaggleにおけるランクの最高峰がGrandmasterであり、ゴールドメダル5枚とソロゴールドメダル(個人参加でのゴールドメダル)1枚がランク取得の条件となります。日本人でGrandmasterの称号を得ている数少ない方の一人が、NVIDIAの小野寺和樹(@0verfit)さんです。小野寺さんは「Kaggleに参加すること」を同社での仕事にしています。 どうすれば、スキルを向上させKaggleの上位ランクに入賞できるのでしょうか。今回は小野寺さんに、Kaggleに取り組むうえでどのような思考や行動をしているのかについてインタビューしました。 *…インタビューはオンラインで実施しま

                                                                    Kaggleで世界トップレベルになるための思考法。Grandmaster小野寺和樹の頭の中 - Findy Engineer Lab - ファインディエンジニアラボ
                                                                  • Gitでマージ済みのブランチを一括削除する - 詩と創作・思索のひろば

                                                                    こうしてます。 git for-each-ref --merged HEAD --no-contains HEAD 'refs/heads/**' --format '%(refname)' \ | while read s; do echo "$s $(git rev-parse "$s")"; git update-ref -d "$s"; done git branch を使ったやり方が一般的なようだが(Google調べ)、配管(Plumbing)コマンドを使って厳密にやるならこうでしょう。 git for-each-ref はリポジトリのrefを一覧するコマンド。refs/heads/** はいわゆるローカルブランチにマッチするパターン。--merged HEAD で現在のブランチであるHEADにマージ済みのブランチを、--no-contains HEAD でそのうちHEADを除い

                                                                      Gitでマージ済みのブランチを一括削除する - 詩と創作・思索のひろば
                                                                    • 第807回 Vaultwardenでパスワードをセキュアに管理しよう | gihyo.jp

                                                                      パスワードの安全な管理は頭の痛い問題ですよね。そもそも今時であれば、パスワードレス認証に移行すべきではあるのでしょう。ですが世の中のサービスすべてが、すぐにパスワードレス認証に対応してくれるわけでもありません。まだまだしばらく人類とパスワードの戦いは続きそうです。 パスワードを少しでも安全に使うためには、「⁠十分に複雑で長い文字列を使う」「⁠使い回しを避ける」といった対策が必須です。しかし十分な強度のパスワードを、サービスの数だけ暗記するのは、人間の頭脳では困難です。 図1 パスワードの暗記を諦めた人類は、こうしたアイテムに手を出しがちである そこで登場するのが「パスワードマネージャー」です。筆者は以前より、第508回でも紹介したpassword-storeを愛用していました。これはGPGで暗号化したテキストファイルをGitで管理するための、シェルスクリプトで実装されたパスワードマネージャ

                                                                        第807回 Vaultwardenでパスワードをセキュアに管理しよう | gihyo.jp
                                                                      • Rust for Linuxを手元で試す

                                                                        RustをLinuxカーネルに組込みプロジェクト、Rust for Linuxが進行中です。 このプロジェクトはLinuxカーネル全体をRustで置き換えるわけではなく、第二言語としてRustを採用してデバイスドライバなどのモジュールを書くことができるようにしようというものです。 RustはOSのような低レイヤーソフトウェアを実装する言語として、C言語に代わる選択肢として注目されてきたわけですが、Linuxのような広く使われているシステムに採用されるとなればかなり熱いですね。 実際にLinuxのメインラインに取り入れられるにはまだまだ課題は多いものの、Linus氏を含むLinuxの開発者からのフィードバックも比較的ポジティブでこれからが注目されています。 そんなRust for Linuxを手元でビルドして動かしてみました。 一応、基本的な手順はレポジトリ内のドキュメントにまとまっているの

                                                                          Rust for Linuxを手元で試す
                                                                        • 自動化するならちゃんとエラーを出せ。想定しろ。不安になれ。 - じゃあ、おうちで学べる

                                                                          はじめに 自動化やツール開発において、通常時に上手くいくのは当たり前です。大切なのは失敗を想定することです。自動化したツールがエラーも出さずに実行結果的にも成功してるので動いていると思っていたら、実は問題が発生していて泣いた経験は、多くの人にあるのではないでしょうか。エラーを出力し、適切に失敗させて、ログに記録することで、問題の早期発見と迅速な対応が可能になります。また、エラーが発生する可能性のある箇所を事前に想定し、適切に処理することで、ツールの信頼性と安定性が向上します。 しかし、エラーハンドリングができていても、それだけでは不十分です。優れた自動化ツールは、環境の変化に柔軟に対応できるようにコードが設計されているべきです。 また、自動化ツールの完成度を高めるには、エラーハンドリングだけでなく、保守性、拡張性、ユーザビリティなども考慮する必要があります。 自動化ツールを開発する際は、常

                                                                            自動化するならちゃんとエラーを出せ。想定しろ。不安になれ。 - じゃあ、おうちで学べる
                                                                          • BigQuery Scriptingの便利な使い方をまとめてみた - yasuhisa's blog

                                                                            背景 & Disclaimer 自分自身はこれまでBigQuery Scriptingをほぼ使っていませんでした BigQuery自体は3年くらいの利用歴 SQL単発で済ませるのが苦しそうな場合は、Pythonなどのプログラミング言語 + ワークフローエンジンの組み合わせで戦っており、自分としては特に困っていなかった 社内で他の方が使うケースをぼちぼち見ることがある 自分は困っていなくても、社内のBigQueryユーザーでBigQuery Scriptingを使っていて困っている人がそれなりにいる 著者はそれなりのBigQueryユーザーがいる企業のデータ基盤の人間です さすがに「使ったことないので、分からないですねー」で済ませるわけにはいかなくなってきた そもそもどんなユースケースで便利なのかすらも分かっていない状態なので、便利そうに思える場合をまとめてみることにしました というわけで、

                                                                              BigQuery Scriptingの便利な使い方をまとめてみた - yasuhisa's blog
                                                                            • コマンドラインでメールの内容に基づいた処理をするツールを書いた: letterknife - 詩と創作・思索のひろば

                                                                              メールに対する jq みたいなやつ……というと強力すぎるけど、そういう感じにメールを入力に受け取って何かしらの処理をした上で出力してくれるツールです。ここでいうメールとは MIME 形式のメール全体。Gmail なら "Show original" で見られるようなもの。 結局ターミナルでメールを読むことにした に書いたとおり最近はターミナルでメールを読むようになりそこそこ快適なんだけど、メールとの接し方がプログラマブルになったからには楽をしたい。だいたい通知のメールのこの部分をクリックするだけ(そして承認したりコメントしたりする)、みたいなパターンが決まってるものには DWIM(do what I mean)的にキー入力一発で対応したいわけです。それをやるためのツールとして書いた。珍しく名前を気に入ってる。 GitHub - motemen/letterknife 使い方 $ cat <

                                                                                コマンドラインでメールの内容に基づいた処理をするツールを書いた: letterknife - 詩と創作・思索のひろば
                                                                              • GitHub - charmbracelet/gum: A tool for glamorous shell scripts 🎀

                                                                                You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                                  GitHub - charmbracelet/gum: A tool for glamorous shell scripts 🎀
                                                                                • Raspberry Piで手軽にアニメを録画しよう!!!<エンコード&運用編>:きじのしっぽ

                                                                                  【概要】 『録画? エンコード? それラズパイでできるよ!』 Raspberry Piを使って動画のエンコードをしちゃおう! ちっこくて非力でも動画のエンコードをバリバリしちゃいます! 筆者謹製のシェルスクリプトも公開しているので、本書の手順通りに構築すれば誰でもエンコードサーバが作れちゃいます! 既刊と合わせれば「録画」ができて「圧縮」ができて、なんなら「外から」録画した番組が見れてしまいます! レッツ!自作おうちクラウド! 【ポイント】 撮り溜めた動画データを自動でエンコード!そして安定稼働の手引き付き! ほぼメンテナンス無しで動かすための手順を体系的に解説した一冊です。 「Raspberry Piに興味があるけどLinuxは初めて・・・」 「電子工作なんてしたことない・・・」 「パソコンに詳しくない・・・」 そんな人でも構築できるよう執筆していますので、初心者にもおすすめです。 また

                                                                                    Raspberry Piで手軽にアニメを録画しよう!!!<エンコード&運用編>:きじのしっぽ