並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 126件

新着順 人気順

子プロセス 終了の検索結果1 - 40 件 / 126件

  • シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita

    はじめに シェルスクリプトで二重起動防止やロックをする方法を検索すると、いろいろな方法や書き方が見つかりますが、どれを使えばよいのか、本当に正しく動くのか、不安になりますよね? ディレクトリ (mkdir) やシンボリックリンク (ln) を使った独自実装の例も見かけますが、エラー発生時や予期せぬ電源断、CTRL+C で止めたときなどでも問題は発生しないのでしょうか? まず、ディレクトリやシンボリックリンクを使った独自実装はしない。これを肝に銘じてください。シェルスクリプトでのロック管理はとても難しく、一般的な排他制御の知識に加えて、シェルスクリプト特有の問題、シグナルやトラップ、サブシェルや子プロセスの問題、さらには特定のシェル固有の仕様やバグなどさまざまな問題に対処する必要があり大変です。独自実装の例では古いロックファイルが残ってしまい、それをいつどのタイミングで片付ければ安全なのか?

      シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita
    • シェルスクリプトとの対比で理解するPythonのsubprocess - 朝日ネット 技術者ブログ

      はじめに 開発部の ikasat です。 皆さんは git, ssh, rsync のような外部コマンドを呼び出すスクリプトを書きたくなったことはありますか? 個人的にこの類のスクリプトは最初はシェルスクリプトとして書くのですが、改修を重ねるうちに肥大化して処理も複雑になり、 後から Python のような汎用プログラミング言語で書き直すことがよくあります。 外部コマンド呼び出しを書き直す際に、Git 操作のために pygit2、 SSH 接続のために paramiko のようなライブラリをわざわざ使うのは大がかりだったり、 rsync に相当するようなこなれたライブラリが存在しなかったりする場合があります。 そのような時は標準ライブラリの subprocess モジュールを利用し、Python から外部コマンドを呼び出すことになるでしょう。 しかしながら、Python のチュートリアルペ

        シェルスクリプトとの対比で理解するPythonのsubprocess - 朝日ネット 技術者ブログ
      • Pythonで作るサーバーレス環境 AWSのスペシャリストが教えるLambdaの基本

        「みんなのPython勉強会」は、Pythonを中心として、プログラミングを仕事、研究、趣味など、さまざまなシーンで生かす方法を一緒に学ぶ勉強会です。56回の今回は、サーバーサイドエンジニアをテーマに学びます。 AWSソリューションアーキテクトの西谷圭介氏が、前半ではサーバーレスについて説明しましたが、後半はいよいよその実行環境であるAWS Lambdaの基本について解説します。関連資料はこちら。 イベントドリブン 西谷圭介氏:Lambdaには、イベントドリブンという言葉があります。イベントドリブンをちょっと簡単に説明したいと思うんですが、Lambdaとかサーバーレスアプリケーションにおける非常に重要なキーワードなんですね。先ほどのサーバーレスのスタックに置き換えたときにLambdaというものがようやく出てきたんですが、このイベントドリブンをキーワードにしたサービスと言えます。 イベントド

          Pythonで作るサーバーレス環境 AWSのスペシャリストが教えるLambdaの基本
        • ジュニアエンジニアを脱却するための「コンテナ流儀」 - Uzabase for Engineers

          こんにちは。ソーシャル経済メディア「NewsPicks」で検索システムを開発しております崔(ちぇ)です。 この記事は、 NewsPicks Advent Calendar 2023 の23日目の記事になります。 qiita.com 昨日ははぐっさんによる「SwiftUIのKeyframeAnimatorでちょっとしたカードアニメーション 〜猫の手を添えて〜」でした! はじめに コンテナ流儀: 必要最低限のものだけで運用する Point1)レイヤーは少ないほどいい TIP:ベースイメージを作る Point2)不要なパッケージをインストールしない Point3)いつ再起動してもいいコンテナを作る Point4)独立したアプリケーションにする TIP:複数のプロセスを実行したい場合もある TIP:環境変数を積極的に使う Point5)フォアグラウンドで実行する 終わりに まとめ 感想 告知 はじ

            ジュニアエンジニアを脱却するための「コンテナ流儀」 - Uzabase for Engineers
          • Bash シェルスクリプトのデバッグや入力補完ができる Visual Studio Code 拡張機能(WSL2,mac,Linux対応) - Qiita

            Bash シェルスクリプトのデバッグや入力補完ができる Visual Studio Code 拡張機能(WSL2,mac,Linux対応)ShellScriptBashdebugVSCodeWSL2 シェルスクリプトにも統合開発環境を Bash のシェルスクリプト (shell script) は Linux はもちろん mac や Windows でも動作します。 シェルスクリプトの文法にはかなりクセがありますが、仕様が安定しているために移植する必要がないという大きなメリットがあります。ただ、一般的なプログラミング言語と異なり、デバッガーが使えないため期待した動作と異なるときに動きが分かりづらいという弱点がありました。 しかし、それはもう過去の話です。 Visual Studio Code の Bash Debug 拡張機能を使えば、シェルスクリプトでもステップ実行や環境変数の値のウォッ

              Bash シェルスクリプトのデバッグや入力補完ができる Visual Studio Code 拡張機能(WSL2,mac,Linux対応) - Qiita
            • Efficient Linuxコマンドライン

              Linuxスキルをレベルアップする実用的な実践書。本書では、コマンドを組み合わせて複雑なコマンドを作成することで、手動で行われているタスクを自動化するための方法を学びます。具体的には、パスワードの管理、大量のテストファイルの生成、テキストファイルを変換してデータベースのように扱う方法など、現実的なビジネスの問題を解決する方法を明らかにします。単なるテクニックではなく、背後で何が行われているかについても学べるので、Linuxのシェルに対する理解が深まります。それと同時に、Linuxコマンドに関するさらに上級レベルの知識とテクニックが身につきます。 賞賛の声 監訳者まえがき まえがき 第I部 主要な概念 1章 コマンドの組み合わせ 1.1 入力、出力、パイプ 1.2 コマンドラインに取り掛かるための6個のコマンド 1.2.1 コマンド① wc 1.2.2 コマンド② head 1.2.3 コマ

                Efficient Linuxコマンドライン
              • 1コンテナ複数プロセスはやめておいた方が良い話 - Qiita

                概要 Docker コンテナの原則として「1コンテナ1プロセス」1というものがありますが、あえてこの原則を破りたいときがあるかもしれません。 公式: Run multiple services in a container 有志翻訳: コンテナー内での複数サービス起動 上記ドキュメントのラッパースクリプトを利用する方法には重大な問題があり、本番環境で使用するべきではありません。 (よりによって「本番環境でのアプリ運用」の項目にある) 公式ドキュメントに書かれているのに、死ぬというのはおかしいじゃないか それが罠だという証拠 ちなみに supervisord を利用する方法は問題ありません。 また、コンテナ向けに最適化された s6-overlay2 を利用する方法もあります。 ラッパースクリプトの問題点 プロセスの graceful shutdown が実行されない(プロセスに SIGKIL

                  1コンテナ複数プロセスはやめておいた方が良い話 - Qiita
                • Windowsにおける環境変数をあらためて整理する (1/2)

                  Windowsを始め、Unixの影響を受けているOSが持つ機能に環境変数がある。環境変数は、実行するプログラムに対してなんらかの情報/パラメーターを与える方法。1979年に作られたVersion 7 Unixに搭載され、Unixの基本的な機能の1つとして今でも使われている。 プログラムに対して情報やなんらかのパラメーターを与える方法にはコマンドラインがあるが、環境変数は事前に定義しておくもので、複数回実行されるプログラムに常に同じ情報/パラメーターを指定する。あるいは、デフォルト値のように常に情報/パラメーターを指定するといった使い方をすることが多い。 典型的なUnix系のコンソールアプリケーションでは、コマンドラインのオプション指定の一部を環境変数から受け取ることができるものが多い。 Windowsでも、cmd.exeの組み込みコマンドである「dir」は、「DIRCMD」という環境変数か

                    Windowsにおける環境変数をあらためて整理する (1/2)
                  • Re: WebサーバーアーキテクチャとPHP実行方式の理解から始めるphp-fpmとはなにか?

                    この記事のモチベーション 「php-fpmとはなにか?」を知るため、PHPのドキュメントを見ました。 しかし、ここに書いていることはまあそうなのですがあまりに焦点が絞られ過ぎてて「php-fpmとはなにか?」に対する答えとしては少し不十分な気がしていました。 例えるなら数学の問題に答えるにあたって、途中式を飛ばしたり証明の過程を飛ばしたりというような感じ。 不十分というのは、それを理解するための段階をすっ飛ばして答えだけが書かれている状態のことを指しています。 その不十分なところを自分も曖昧にしか理解できていない気がしており、いい機会なので整理しておこうというのがこの記事のモチベーションです。 そのためこの記事は、「php-fpmとはなにか?」をプロセス→Webサーバー→実行方式と順を追って説明していく構成になっています。 「細けぇこたぁいいんだ、おらぁ今すぐ答えだけ知りてぇンダ」という方

                      Re: WebサーバーアーキテクチャとPHP実行方式の理解から始めるphp-fpmとはなにか?
                    • プロと読み解く Ruby 3.1 NEWS - クックパッド開発者ブログ

                      技術部の笹田(ko1)と遠藤(mame)です。クックパッドで Ruby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 本日 12/25 に、ついに Ruby 3.1.0 がリリースされました(Ruby 3.1.0 リリース )。今年も Ruby 3.1 の NEWS.md ファイルの解説をします。NEWS ファイルとは何か、は以前の記事を見てください。 プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ プロと読み解くRuby 2.7 NEWS - クックパッド開発者ブログ プロと読み解くRuby 3.0 NEWS - クックパッド開発者ブログ 本記事は新機能を解説することもさることながら、変更が入った背景や苦労な

                        プロと読み解く Ruby 3.1 NEWS - クックパッド開発者ブログ
                      • WasmLinux: WebブラウザでLinuxカーネルとBusyBoxを動かす(エミュレーションなしで)

                        WebブラウザでOS動かしてどうすんだよ という根源的な疑問に回答が無いままとりあえずできちゃった。。 ※ コマンドが終了してもプロンプトが出ません。Enterを空打ちする必要があります (バグ) WasmLinuxは、WebAssembly "ネイティブ" なLinux環境です。カーネルもユーザーランドも、WebAssemblyのツールチェインでコンパイルされたWebAssemblyモジュール(をwasm2cでCにしたもの)です。 前回はカーネルしか動いていなかったんですが、今回はブラウザ上で ifconfig lo up して ping 127.0.0.1 したり top したり vi したりできます。BusyBox入ってるので。 ただしまだ実用性は皆無 です。Proof of Conceptって奴ですね。 前回の記事: 今回はMUSL libcを移植してBusyBoxが動くようになっ

                          WasmLinux: WebブラウザでLinuxカーネルとBusyBoxを動かす(エミュレーションなしで)
                        • Node.js v20 の主な変更点 - 別にしんどくないブログ

                          2023 年 4 月 18 日にリリースされた Node.js v20 の主な変更点を紹介します。 nodejs.org ファイルのアクセスやプロセスの起動を制限する新しいパーミッションモデル (experimental) --allow-fs-read でファイルの読み込みを許可する --allow-fs-write によるファイル書き込み許可 --allow-child-process による child_process の許可 --allow-worker による Worker Threads の許可 Permission Model  の参考記事 V8 11.3 による新しい JavaScript の機能 テストランナー(node:test)が stable に昇格 Single Executable Application JSON の config を使った Blob が必要に

                            Node.js v20 の主な変更点 - 別にしんどくないブログ
                          • ECS のアプリケーションを正常にシャットダウンする方法 | Amazon Web Services

                            Amazon Web Services ブログ ECS のアプリケーションを正常にシャットダウンする方法 この記事は Graceful shutdowns with ECS を翻訳したものです。 — はじめに Amazon Elastic Container Service (Amazon ECS) を利用することで、お客様はさまざまな方法でコンテナ化されたアプリケーションを柔軟にスケールできます。リクエストの急増に対してタスクをスケールアウトすることも、コスト削減のためにタスクをスケールインすることもできます。ECS ではさまざまなデプロイの選択肢があり、ローリングデプロイ・ブルー/グリーンデプロイ・カナリアデプロイなどがサポートされています。さらに、ECS では柔軟なコンピューティングの選択肢が用意されています。Amazon EC2 のオンデマンド/スポットのキャパシティ上や、マネージ

                              ECS のアプリケーションを正常にシャットダウンする方法 | Amazon Web Services
                            • 2021年IPA10大脅威とゼロトラスト | ロードバランスすだちくん

                              シンジです。情報セキュリティの方針として参考にされることの多い「情報セキュリティ10大脅威2021」がIPAから発表されました。情報セキュリティの脅威や被害は時代背景をうつしたものが多く、パンデミックによる影響も見て取れます。そんな時代に最適解のゼロトラストアーキテクチャで、ランキングの大半がゼロトラストによってカバーできることを具体的に説明します。 ざっくり書くと、こうです。 その前にゼロトラストアーキテクチャを理解しよう シンジ自体はパンデミックよりも前から会社まで作ってこのアーキテクチャを実践してきたので、最近では数少ないゼロトラスト警察のひとりとして、ネットニュースや各所のWebサイト、オンラインイベントで「ゼロトラスト」の単語が出るもののほぼ全てを確認してきましたが、基本的に「わかってない」ので、改めておさらいしておきましょう。 情報セキュリティを実践する=IT環境をシンプルにす

                                2021年IPA10大脅威とゼロトラスト | ロードバランスすだちくん
                              • 1日目:独学プログラマが語る「なぜPythonが世界を席巻しているのか?」 | gihyo.jp

                                PyCon JPとは PyCon JPは日本国内外のPythonユーザーが一堂に会し、互いに交流を深め、知識を分け合い、新たな可能性を見つけられる場所として毎年9月中旬に開催される国際カンファレンスです。 PyCon JP 2019は2019年9月14日のスプリント(HENNGE株式会社⁠)⁠、9月15日のチュートリアル、9月16日〜17日のカンファレンス(大田区産業プラザPiO)と4日間の会期で開催されました。来場者は4日間で約1160人と昨年を上回る大盛況で、Pythonへの注目が年々増していることがわかります。 今回は16日に行われたカンファレンスの中から、注目セッションやイベントの様子と感想について運営スタッフがレポートします。 基調講演「Why Python is Eating the World」― Cory Althoff (牛窪翔) 1日目の基調講演は、Cory Altho

                                  1日目:独学プログラマが語る「なぜPythonが世界を席巻しているのか?」 | gihyo.jp
                                • Low-level Container Runtime:Runc Internals - 鳩小屋

                                  参考 おさらい runc architecture file main.go and command process runc create setupSpec startContainer linuxContainer LinuxFactory createContainer CreateLibcontainerConfig loadFactory factory.Create runner.run newProcess linuxContainer.Start newParentProcess parentProcess.start() runc init nsenter nsexec runc init(After nsexec) linuxStandardInit.Init runc start 低レベルコンテナランタイムruncの内部処理のまとめです。 参考 2021/05現在:

                                    Low-level Container Runtime:Runc Internals - 鳩小屋
                                  • 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 [株式会社ラクーンホールディングス 技術戦略部ブログ]
                                    • Electronを使ったPC向け将棋アプリ開発 - Qiita

                                      はじめに 2022 年 1 月から、趣味で PC 向けの将棋アプリを開発しました。その中で取り組んだことや学んだことについて簡単にまとめます。 作ったもの Electron将棋 (electron-shogi) GitHub: sunfish-shogi/electron-shogi GitHub Pages: Electron将棋 背景 最近ではスマホやタブレットでも将棋の対局や研究ができるようになりましたが、本格的に将棋の勉強や研究をするには必ずしも十分ではなく、特に将棋 AI を動す上で PC の処理能力やカスタマイズ性は有用です。 2010 年あたりからオープンソースの将棋 AI が増えましたが、その多くは GUI や通信対局機能を備えておらず GUI のアプリケーションと組み合わせて使う必要があります。AI と GUI がやりとりするための USI という共通仕様があり、 USI

                                        Electronを使ったPC向け将棋アプリ開発 - Qiita
                                      • みてねの動画再生にHLSを導入した話

                                        こんにちは、みてねプロダクト開発部 基盤開発グループ SREチームの尾関です。 『家族アルバム みてね』(以下、みてね)ではユーザーがアップロードした大量の動画データをS3に保存していますが、非常に大きなコストがかかっています。 様々な方法でコスト削減を行ってきましたが、本記事ではその中でもユニークな、HLSを使った改善についてお話させていただきます。 みてねで動画をアップロードしてから再生できるまでの流れまず、従来(2022年3月頃まで)のみてねで動画をアップロードしてから再生するまでのフローを説明します。 アップロードした動画ファイル(original)が保存されるとともに、スマートフォンで再生するための少し解像度を調整した動画(smartphone)とサムネイル画像(small, medium, large)を保存しています。特に何の変哲もないシステムだと思います。 S3のストレージ

                                          みてねの動画再生にHLSを導入した話
                                        • RHEL8で端末の入出力を記録する - 赤帽エンジニアブログ

                                          レッドハットの森若です。 RHEL 8 では、 tlog という端末の入出力を記録する仕組みが導入されています。今回はこのtlogを紹介します。 シーン1 トラブルシュート ショートコント「チャットにて」 A> foobar.logっていうファイルがどこかにあるはずなんだけどどうやってみつけたらいい? B> "$ locate foobar.log" ってやったらいいよ A> command not foundってでた B> じゃあ"$ find / -name foobar.log" で出る? A> またcommand not foundってでた B> さすがにそれはないでしょー? A> でも bash: $: command not found ってでてる。 B> もしかして $ をコマンドとして入力してる? ここまで極端でなくても、作業の厳密な記録や、試行錯誤したときに「何を入力して

                                            RHEL8で端末の入出力を記録する - 赤帽エンジニアブログ
                                          • Go 1.16のsignal.NotifyContext() | フューチャー技術ブログ

                                            Go 1.16リリース記念連載の最終回はsignal.NotifyContext()です。 ご存知のように、Go 1.7でcontext.Contextが入ってから、少しずついろいろなAPIがContext対応になりました。 1.7 netのDialerがDialContext()メソッドを追加 net/httpのhttp.RequestがContext()とWithContext()メソッドを追加。 os/execがCommandContextを追加 1.8 database/sqlが大幅にcontext.Context対応を追加 net/httpのhttp.ServerがShutdown()を追加 netにcontext.Contextに対応したリゾルバーを追加 1.13 net/httpのNewRequestWithContextと、Request.Clone()が追加 外部へのネッ

                                              Go 1.16のsignal.NotifyContext() | フューチャー技術ブログ
                                            • 第804回 mininetでお手軽ネットワークテスト環境を構築する | gihyo.jp

                                              3月も半ばになり、暖かい日も増えてきました。これだけ暖かくなってくると、ちょっとしたアプリで少し特殊なネットワークフレームを流したり、普段使わないネットワークプロトコルを試したくなりますよね。でも本番環境でそれをやってしまうと、変質者としてしかるべき場所に通報されてしまいます。そこで今回は他人に迷惑をかけずに隔離されたネットワークテスト環境を構築できる「mininet」を使って、お縄にかからないようにしてみましょう。 Open vSwitchとネットワーク名前空間で気軽にテスト環境を構築する Linuxカーネルには「ネットワーク名前空間(netns)」という機能があります。これはホストや他のコンテナから隔離された環境でネットワークインターフェースを作成し、操作できるようになる仕組みで、特にLinuxのコンテナ系ツールで使っている基礎技術のひとつです。 Ubuntuだと「ip netns」コ

                                                第804回 mininetでお手軽ネットワークテスト環境を構築する | gihyo.jp
                                              • M:Nスレッドによる軽量な並行処理への挑戦 | gihyo.jp

                                                STORES株式会社でRubyインタプリタ開発をしている笹田です。お正月に新年早々おでんを腐らせてしまったので、今年は作ったらさっさと食べることを目標にしたいと思います。 この記事では、主に私が開発している、Ruby 3.3で導入されたM:Nスレッドについて紹介します。 M:Nスレッドはスレッドの性能向上のために導入されました。M個(大きな数)のRubyスレッドをN個(十分小さい数)のネイティブスレッドだけで実行するというモデルで、スレッド管理のオーバヘッドを抑えられる方法として知られており、ほかにもGo言語などで利用されています。今後、大量のネットワーク接続を処理するといったことをRubyで記述することを検討したい場面が出てくるしれません。そのようなときにRubyでスイスイとプログラムが書ければいいなと思っており、その一貫です。最終的には、Ractorを用いた軽量な並列・並行アプリケーシ

                                                  M:Nスレッドによる軽量な並行処理への挑戦 | gihyo.jp
                                                • Goでプロセス監視のTUIツールを作ったら便利だった件 - Qiita

                                                  ども、バナナとナタデココにハマっているゴリラです。つまり食物繊維大好きゴリラ。 最近なぜかプロセスをkillすることが多くて、毎度コマンド打つの面倒だったので2日くらいかけてTUIツールを作ってみました。 今日はそのツールの紹介と実装の話をしていきます。 どんな感じ? こんな感じ。 対応OS Mac OS(Catalinaで動いたことは確認できている) Linux 一応Windowsでも動くはずですが、動作確認していないのでダメだったらごめんなさい。 Windowsで動いたとしてもプロセスの詳細情報は見れないですが、今後対応予定なので、お待ち頂ければと思います。 画面構成 画面は全部で以下の3つがあります。 processes(現在動いているプロセス一覧) process info(選択したプロセスの詳細情報) process tree(選択したプロセスのツリー) 画面に加えて、プロセス一

                                                    Goでプロセス監視のTUIツールを作ったら便利だった件 - Qiita
                                                  • メモリプロファイラ「Memray」の解説 | gihyo.jp

                                                    Memray公式サイトのキャプチャ インストール方法は以下のとおりです。 $ pip install memray Memrayの基本的な使い方 Memrayがインストールされていると、memrayコマンドが使えるようになります。 プロファイリング対象のスクリプトをmemrayから実行すると、スクリプトを実行した同じフォルダに実行時のプロファイリング結果がバイナリ形式でファイルに保存されます。 プロファイルの実行 サンプルのPythonスクリプトとしてsample.pyを準備します。以下のコードでは、状態表示をわかりやすくするために1秒間の待ちを入れています。実行内容は、リスト内包表記で要素数が約1億個のリストを生成しています。 sample.py - リスト内包表記でリストを作る import time time.sleep(1) # 状態表示をわかりやすくするために1秒待つ resul

                                                      メモリプロファイラ「Memray」の解説 | gihyo.jp
                                                    • cgroupsに影響するLinuxの新たな脆弱性CVE-2022-0492 コンテナエスケープの条件は

                                                      By Yuval Avrahami March 3, 2022 at 5:09 PM Category: Cloud Tags: containers, CVE-2022-0492, Linux, vulnerabilities This post is also available in: English (英語) 概要 2022年2月4日、Linuxはカーネルにおける新たな特権昇格脆弱性CVE-2022-0492を公表しました。CVE-2022-0492はコンテナの基本構成要素であるLinuxの機能、コントロールグループ(cgroup)における論理バグです。この問題は最近発見されたLinuxの権限昇格脆弱性のなかでもとりわけその単純さできわだつもので、「Linuxカーネルが誤って特権的オペレーションを非特権ユーザーに公開してしまった」という内容になっています。 さいわい、ほとんどのコン

                                                        cgroupsに影響するLinuxの新たな脆弱性CVE-2022-0492 コンテナエスケープの条件は
                                                      • pipeエラーのハンドリング - Carpe Diem

                                                        概要 write: broken pipeといったクライアント側の強制的なコネクション切断でのエラーハンドリングをする際の知見まとめ。 環境 golang/go 1.13.3 事前知識 知っておくと良い知識を先に説明します。 そもそもpipeとは pipeはプロセス間通信をするための単方向のデータチャネルです。IOストリームを扱います。 読み出し側と書き込み側それぞれのfdを経由してプロセス間の通信を可能にします。 例えば親子プロセスで通信を行いたい場合、親プロセスでpipeを開きそれをforkして子プロセスを用意します。 ref: https://inzkyk.github.io/ocamlunix-jp/pipes.html そして親プロセスの書き込みfd・子プロセスの読み出しfdをそれぞれクローズすれば、以下のように子プロセス→親プロセスへ通信することができます。 pipeはシンプル

                                                          pipeエラーのハンドリング - Carpe Diem
                                                        • WindowsのPowerShellのプロファイルを設定する (1/2)

                                                          そもそもPowerShellのプロファイルとは PowerShellやWindows PowerShell(以下、PowerShellと総称)で、いつも同じオブジェクトを使うことがある。こうしたとき、Profile(プロファイル)と呼ばれる機能を使うことで、起動時に変数や関数などを登録できる。 Profileは、テキスト形式のスクリプトファイルであり、起動時に読み込まれて、その内容に従って、変数や関数、エイリアスなどの定義をする。 プロファイルには、ユーザー、ホストにより4種類の組み合わせがある。 ユーザーの種別は、すべてのユーザー用と現在のユーザー用の2つがある。またホストは、すべてのホスト用と現在のホスト用の2つがある。ホストの種別は、リモートシェル操作をするときに利用される。ローカルホストでは「すべてのホスト」と「現在のホスト」用が順に適用される。 リモートシェルの場合には、リモート

                                                            WindowsのPowerShellのプロファイルを設定する (1/2)
                                                          • そのテスト、最後まで実行されていますか? jestとnpm-run-allの恐るべき罠

                                                            皆さんこんにちは。この記事では、筆者が最近業務中に経験した恐るべき罠についてシェアしたいと思います。 CIでユニットテストを実行することは、とても多くのプロジェクトで行われています。ユニットテストは特に、既存のコードの変更を自信を持って行うために必要なものです。弊社でも、CI (GitHub Actions) でユニットテストを実行しています。 あるとき、CIの挙動が不安定になったことをきっかけに、CI上でのユニットテストの実行について調べてみました。その結果、とんでもないことが判明したのです。 不安定になったCI 時折、CIにすごく時間がかかり、30分経ったあたりでタイムアウトしてしまうことがありました。そのときのログを見てみると、jestによるユニットテストが実行されている最中に、何のログも出力せずに突然止まっているようでした。そのようなときはリトライするとそこそこの確率で成功します。

                                                              そのテスト、最後まで実行されていますか? jestとnpm-run-allの恐るべき罠
                                                            • Cloudflare Workers + Durable Objects でホワイトボードを作ってみた - ジンジャー研究室

                                                              Cloudflare の比較的新しい機能、 Durable Objects を使ってオンラインホワイトボードを作ってみた。 github.com エレベーターピッチ(テンプレはこちらからお借りしました) - 1秒で適当な概念図を描き始めて議論をしたい - ソフトウェア開発者向けの、 - Whiteboard というプロダクトは、 - オンライン共同編集アプリです。 - これは直感的かつ雑念の入る余地のない最低限の操作ができ、 - Google Jamboard とは違って、 - Slack コマンドから一瞬でログインできる仕組みが備わっている。 本当に Jamboard に勝ってるの?まあ、お遊びなので許して。 あと、今のところ組織内で使う想定だから自分でデプロイしないと使えないよ。 Durable Object を雑に紹介 ベータ版の公式のアナウンスが分かりやすい。エッジから状態を管理す

                                                                Cloudflare Workers + Durable Objects でホワイトボードを作ってみた - ジンジャー研究室
                                                              • Node.js で最近変わりそうな Permission Policy について - from scratch

                                                                さてさて、 25日目の Node.js アドベントカレンダーです。もう年の瀬ですね。振り返りシーズンなんで色々書きたかったんですが、ネタを見つけているうちにこの日になってしまいました。 Permission Policy とは Node.js に新しく Permission を提供しようという試みです。元々 Node.js では同じプロセス内で動いてしまえば どんなモジュールであろうと同じ権限で色々できますね。外部ネットワークにアクセスしたり、ファイルを読み書きしたり。 プロセスに元から許可されている権限は全てできてしまいます。これが今まででは普通でしたが、今後はもしかしたら変わるかも?という話です。 権限に関して制限をかけて、拒否させることが可能です。 以下のような要領で拒絶させることができるようになります。 $ node --policy-deny=net 上のオプションでプロセス内の

                                                                  Node.js で最近変わりそうな Permission Policy について - from scratch
                                                                • Apache HTTP Serverのgraceful stop/restartを理解する

                                                                  こんにちは、去年の8月に入社しましたMSP事業部エンジニアリンググループの鈴木です。 本記事は、Apache HTTP Server(以降「Apache」と略す)のgraceful stop/restart(以降、2つを指す場合「graceful」と略す)について調査・理解したことをまとめたものになります。具体的には以下について調査しました[※1]。 gracefulの概要、通常のstop/restartとの違いおよびユースケース systemd(systemctl)でgracefulを実行する方法 gracefulを実行する3つのコマンドの動作や関係性 gracefulを実行するコマンドの動作確認(ドキュメントの裏取り) 付録:graceful関連のソースコード解析(理解できている範囲のみ) なお、今回は私個人の学びの一環としてgracefulの基本的なことから調査しましたので、内容とし

                                                                    Apache HTTP Serverのgraceful stop/restartを理解する
                                                                  • isucon9q_bench.md

                                                                    isucon9q_bench.md ISUCONのベンチマーカーとGo catatsuy メルカリSRE mercari.go #11 - connpass https://mercari.connpass.com/event/148913/ ISUCONとは http://isucon.net お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル 競技者は与えられたWebアプリケーションを高速化する 複数の言語による実装(ISUCON9予選ではGo/Perl/PHP/Ruby/Node.js/Python)を運営側が用意する ベンチマークを実行するとアプリケーションに対して仕様確認・負荷走行をしてスコアが出力される 私とISUCON ISUCON4:2位(初出場) ISUCON5:8位 ISUCON6:運営(本選) ISUCON7:予選敗退 I

                                                                      isucon9q_bench.md
                                                                    • Fluentd実践入門 ──統合ログ基盤のためのデータ収集ツール

                                                                      2022年10月8日紙版発売 2022年10月6日電子版発売 田籠聡 著 A5判/544ページ 定価3,520円(本体3,200円+税10%) ISBN 978-4-297-13109-8 Gihyo Direct Amazon 楽天ブックス ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto 本書のサポートページサンプルファイルのダウンロードや正誤表など この本の概要 本書は,Fluentdについて網羅的に解説した書籍です。 Fluentdは,ログやそのほかのデータの収集および集約,転送,変換,保存を実現するためのソフトウェアです。すでに多くのユーザーに利用されているほか,Kubernetes環境におけるデファクトスタンダードなログ収集方法として扱われています。そのため,AWS,GCPおよびAzu

                                                                        Fluentd実践入門 ──統合ログ基盤のためのデータ収集ツール
                                                                      • mrubyを通じてWebAssemblyの未来を想う~新しいウェブサービスの開発課程にて | IIJ Engineers Blog

                                                                        日本Haskellユーザーグループ(愛称 Haskell-jp)発起人の一人にして、Haskell-jpで一番のおしゃべり。 HaskellとWebAssemblyとプリキュアとポムポムプリンをこよなく愛する。 こんにちは。ブラウザ外のWebAssemblyに関心が偏りすぎて、ブラウザにおけるWebAssemblyについて聞かれると戸惑うことが多い山本悠滋です。普段はIIJ-IIの技術開発室という部署で、IIJ本体をサポートするための開発をいろいろ行ったり、WebAssemblyを応用した新しいウェブサービスの開発に取り組んでいます。 今回は、開発している「WebAssemblyを応用した新しいウェブサービス」のサンプルとして、mrubyのインタープリタをWASIに準拠したWebAssemblyファイルにコンパイルするまでの課程や、それを通じてわかった、今のWebAssemblyに足りない

                                                                          mrubyを通じてWebAssemblyの未来を想う~新しいウェブサービスの開発課程にて | IIJ Engineers Blog
                                                                        • php-fpm の設定を理解してサイトのパフォーマンスを向上させる

                                                                          nginxでWordpressサイトを運用する場合、php-fpmを利用することが多いかと思います。(Apacheでも利用することができますが) php-fpmの設定によって、Webサイトのパフォーマンスは左右されます。それだけでなく、不適切な設定はメモリリーク等につながるので、Webサイトにとって重要な設定であるといえます。 この記事では、そんな php-fpm の設定の最適化方法について解説していきたいと思います。 php-fpmの役割と特徴 WordPress などの動的サイトは、Webサーバーがクライアントからリクエストを受けると、サーバー上でPHPを実行して動的にページを生成し、生成したページをレスポンスとしてクライアントに返します。 この、サーバー上でPHPを実行する仕組みがphp-fpmです。php-fpmでは、リクエストのたびにプロセスを生成していたのでは非効率なので、原則

                                                                            php-fpm の設定を理解してサイトのパフォーマンスを向上させる
                                                                          • 第47回 非特権コンテナの可能性を広げるseccomp notify機能 | gihyo.jp

                                                                            前回の連載が掲載されたあと、久々にコンテナの勉強会をオンラインで開催しました。2回に渡って、cgroupをテーマにカーネルの実装に踏み込んだ内容のお話が聞けました。私もcgroup v1の内部構造についてお話しました。動画は公開されていますのでぜひご覧ください。 さて、今年も気がつけばもう12月で、Advent Calendarの季節になりました。今年はいろいろなことがありましたが、今振り返るとあっという間だった気がします。今年もこの連載で毎年参加しているLinux Advent Calendarに参加します。この記事はLinux Advent Calendar 2020の15日目の記事となります。 この連載は、名前に「LXCで学ぶ」と付いているわりには、最近まったくLXCが出てきませんでしたが(^_^;)、今回は久々にLXCコンテナを使って機能の説明をしたいと思います。とは言ってもLXC

                                                                              第47回 非特権コンテナの可能性を広げるseccomp notify機能 | gihyo.jp
                                                                            • char* を Go の string に変換するテクニック

                                                                              はじめに Go には cgo と呼ばれる、Go からC言語を扱う為の機能があります。go build を実行すると、内部でC言語のコンパイラが実行され、ソースの一部が Go に取り込まれます。 cgo とは まずは以下を見て下さい。 //go:build ignore // +build ignore package main /* int add(int a, int b) { return a + b; } */ import "C" func main() { println(C.add(1, 2)) } func terminateProc(pid uint64) error { dll, err := syscall.LoadDLL("kernel32.dll") if err != nil { return err } defer dll.Release() f, err :=

                                                                                char* を Go の string に変換するテクニック
                                                                              • php-fpm リクエストサイクル - Shin x Blog

                                                                                php-fpm がリクエストを処理しているサイクルをざっくりとまとめました。 php-fpm ワーカープロセスの生成 リクエストループ 1) リクエスト接続待ち listen_socket の生成 FastCGI リクエスト 2) リクエスト開始処理 実行PHPファイルパスの決定 スーパーグローバルへの格納 3) PHPファイル実行 4) リクエスト終了処理 PHP コード実行リソースの解放 max_requests チェック FastCGI クライアントとの通信 接続開始 リクエスト読み取り レスポンス書き込み 接続終了 さいごに php-fpm ワーカープロセスの生成 php-fpm は FastCGI リクエストを処理する SAPI 実装の一つです。いわば、PHP コードを実行する FastCGI サーバです。prefork 型となっており、nginx 等からの FastCGI リク

                                                                                  php-fpm リクエストサイクル - Shin x Blog
                                                                                • VimとTUIツールをなめらかに切り替える

                                                                                  VimからTUIツールを呼び出す 私はVim以外のTUI(Terminal User Interface)ツールとしてファイラにRanger、Git操作にはTigを利用しています。 TUIはそれ自体の制約によりキーボード操作のみで完結することや、開発時の基本的なワークフローがターミナル内に閉じることによる環境のポータビリティにメリットがあります。 VimからはTUIツールの呼び出しは外部コマンド呼び出しの:!{cmd}やVimの組込みターミナル:terminal {cmd}でTUIツールを呼び出せます。 逆にTUIツールからエディタを呼び出すケースもあります。 たとえばファイラのRangerで選択したファイルを開く場合、環境変数$EDITORに登録されているエディタ(Vim)を使って開きます。 TigはGit操作でdiff表示しているときにeを押したときのカーソルのある行でエディタを使って

                                                                                    VimとTUIツールをなめらかに切り替える