この記事は はてなエンジニア Advent Calendar 2021 11日目の記事です。 コンテナのベースイメージとしてdistrolessを選択肢にするということがここ最近増えてきました。 そんなdistrolessを非rootユーザで使おうとしたらとても簡単だったのでその紹介です。 どのくらい簡単かというと、Goのアプリケーションであれば以下のように変えるだけで対応できます。(コメントアウト部分は元々のrootユーザで動かしていた場合のもの) FROM golang:1.17 as builder WORKDIR /go/src COPY go.mod go.sum . RUN go mod download COPY . . RUN go build -o /out/myapp . # FROM gcr.io/distroless/static:latest FROM gcr.i
ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog Yahoo! JAPANアプリの通知系バックエンドシステムを主に担当しているエンジニアの福盛です。 Yahoo! JAPANアプリの通知系バックエンドシステムについては、以下の記事でも紹介しています。もし興味があればこちらも参照ください。 チームのスキル向上にもつながるシステム刷新 〜 Yahoo! JAPANアプリ「お知らせ」機能の開発事例 Scalaで使うMessage Queue 〜 Yahoo! JAPANアプリのお知らせ送信でのApache Pulsarの活用 今回は開発とトラブルシュートの効率を大幅に向上する、アプリケーションログの埋め込みと活用方法について紹介いたします。 本記事では「JavaおよびScalaで構築さ
初めに 最近開発環境を整備していて、コンテナでGoアプリケーションをリモートでデバッグするのにちょっと面倒だったので、自分のメモも兼ねてやり方を残しておきます。 要件 プロジェクトによりますが、今の現場では主要エディタがVSCodeです。 もちろんVimユーザー(うち一人はぼく)がいるので、ターミナルでもデバッグできるように対応する必要があります。 また、コード変更を反映させるために都度イメージをビルドしてコンテナを再作成するは開発スピードが落ちるため、コンテナ再起動だけで反映されるようにする必要があります。 デバッガのしくみ Goにはdelveというデバッガがあります。 delveはClient-Serverモデルになっていて、次の2つのプロトコルで通信が可能になります。 JSON-RPC DAP JSON-RPCはdelveのCLIに使われています。 DAPはMicrosoftが策定し
Storybook first な開発とは Storybook での呼び出され方を意識しながらアプリケーションコードを書くことをそのように呼んでいます。 道具に設計がひきづられるのはアンチパターンと言われそうな気もするのですが、コンポーネントのカタログを整備していくことは、コンポーネントが良い感じに再利用可能な形で分離できるということでもあり、やっていくとむしろ正道に近づいていくと思います。 Storybook First のコンポーネント設計や型定義をすると、パーツに限らず Storybook でカバーできる範囲が広がり、ページそのもののサンドボックスを作れます。 そして API がない状態でもデータを使って開発ができたり、特定のスナップショットの再現やタイムトラベルに近いことも可能になるというメリットがあります。 つまり、ただのコンポーネントカタログとしてではなく、開発のためのサンドボ
こんにちは!今年の冬も暖房なしで頑張る佐藤です。 みなさん、C#(.Net)使ってますか?弊社では、主にバックエンド開発に使われていますが、Java8とかで開発してた時に感じた、いろいろな不満が解消されていて、いい言語だなあとひしひし感じています。 さて、C#の開発をする際にメジャーなエディターといえば、Visual Studio、Riderだと思います。 それらも、とても便利なエディターではあるのですが、IDEなのもあって多少スペックが必要+ライセンス契約をする必要がある=金銭のやりとりが発生する、等の理由のために、多少敷居の高さがあるんじゃないかな〜と個人的に感じています。 また、私自身が、他の言語の開発ではほぼVisual Studio Codeを使っているのもあって、VSCodeとVisual Studioを一緒に起動して開発するのもなんだかなあ… と感じていました。 そこで、11
ブログ読者のみなさん、はじめまして。 株式会社セガのベテランプログラマー阿部です。 このエントリーではデバッグ手法のあれこれについての体験談と、デバッグをテーマに一昨年に実施されたプログラマー向け新人研修の概要をお伝えしたいと思います。 EXE ファイルのデバッグ イーサネット絡みのデバッグ 周辺機器絡みのデバッグ デバッグスキルブートキャンプ 黒子に徹する、裏方系エンジニア EXE ファイルのデバッグ 同僚が作った EXE ファイルが手元にあり、あなたはこれを Windows で起動しようとしています。 起動してみたところ何も反応がなく、しかもそれは想定外のことでした。 「何コレ、動かないんだけど」とあなたが同僚に文句を伝えると、同僚はあなたに返します。 「こっちでは動いてるよ」 困りましたね。 あなたの手元には EXE のソースコードも無ければ、Visual Studio もありません
太古の時代、ISDN回線でフロッピーディスクのデータをまるまる転送できるFDトランスファーという驚異のマシンが存在していた。電子メールで1MB以上のデータを送るのも憚られた時代だった。 pic.twitter.com/7o2j28MD8w — Watanabe (@nabe1975) September 2, 2020 これは、初期のISDN回線(64K)を使ってフロッピーのデータをやりとりできる、という代物。 ISDNは64キロビット=秒8キロほどの転送速度なので2HDの約1000キロバイトだと、だいたい2分ちょっとぐらい通信時間はかかることになる。 でも、当時使っていた人たちは、みんな(僕も含めて)数分以上かかったという記憶があるので、たぶんエラーチェックのやりとりまで含めると数分以上かかっていた、ということだろう。 ついでに書いておくが、これでも当時最高速に近かった28800ボーのモ
本記事では、1日目におこなわれた『ファイナルファンタジーVII リメイク』(以下、『FFVII リメイク』)のデバッグに関するセッション“"FINAL FANTASY VII REMAKE"における自動QAシステムの構築と運用”をリポート。 本セッションで語られたのは自動QAシステムについて。まずQAとは、Quality Assuranceの略称で、日本語で言えば、品質保証。ゲーム開発においては、ゲームが正しく動作しているか、バグが発生しないか、検証する仕事・部門・チームのことを指す。ゲームファンにとっては、デバッグと言ったほうが伝わりやすいかもしれない。つまり、自動QAシステムとは、自動でデバッグをおこなうシステムということだ。 セッションには、スクウェア・エニックスのAIエンジニアを務める太田健一郎氏が登壇した。 ゲームに最適化した自動QAシステムを目指して ゲームというのは、そもそも
マイクロソフト、WebIDEの「Visual Studio Codespaecs」を「GitHub Codespaces」に統合へ マイクロソフトはWebブラウザで利用可能な統合開発環境、いわゆるWebIDEの「Visual Studio Codespaces」を、GitHubで提供を予定しているWebIDEの「GitHub Codespace」へ統合することを発表しました。 Visual Studio Codespacesは、2019年5月に行われたMicrosoft Build 2019でVisual Studioファミリーのなかで、Web版のVisual Studioの位置づけとなる「Visual Studio Online」として発表され、その1年後の今年2020年5月に「Visual Studio Codespaces」と名称変更され、パブリックプレビューとして利用可能になりまし
エムスリーエンジニアリンググループ マルチデバイスチーム所属の荒谷(@_a_akira)です。 弊社では、昨年の12月に医師向けの新規アプリをAndroid, iOS向けにネイティブ実装しリリースしました。 今回は、その際Kotlin Multiplatform Projectを用いてユーザの行動ログ送信部分を共通化した話をしたいと思います。 Kotlin Multiplatform Projectとは Kotlin Multiplatform Project(以後MPP)とは、 Kotlinで書かれた単一のコードを Kotlin/JVM,(Android, Server等) Kotlin/Native(iOS, Windows, Linux等) Kotlin/JS の各プラットフォーム向けにトランスパイル可能なプロジェクトのことです もっと詳しく知りたい方は 公式ドキュメントだったり、私
Lambdaを実装しているとき、ふと「ログのレベルって決めてたっけ?」となりました。 個人の基準はあってもチームとしては曖昧だったので(開発者のさじ加減)、チームで話し合って明文化してみました。 前提 対象はLambdaのログです ERRORレベルのログがあるとき、Slackに通知する仕組みがあります この通知を元に開発者が確認を行い、必要に応じて対処します AWSの環境は3つです development staging production ログを残す理由 Lambdaの処理で何かあったことを認識するため 何らかの対応(暫定・恒久)を行うとき、参考情報とするため CloudWatch AlarmでLambdaのエラー監視をすればLambdaの実行が失敗したことは分かりますが、適切なログが無ければ、「何をしようとして失敗したのか?」「その時のパラメータは何か?」などが分かりません。 また、
自作RISC-Vシミュレータがある程度落ち着いてきたので、キリがいいところでGitHubで公開することにした。 github.com まあSpike(riscv-isa-sim)の劣化Cloneだと言ってしまえばそれまでなので、あまり意味はないのだけれど。。。 図. 自作RISC-Vシミュレータの外部インタフェース 使い方はGitHub上のREADME.mdに書いてある。BSDライセンスなので自由に改造してやってください。 まあこういうツールの場合BSDライセンスが良いのかどうかもよく変わっていないけれども? RISC-Vの精神に基づいてみた。 Spikeシミュレータとの差分点としては、デバッグ情報がしっかり出力できるようにした。レジスタアクセス情報からメモリアクセスの情報まで、--debugオプションによりしっかり情報を出力する。 その影響で--debugオプションをかなり遅くなってしま
11. hprof: JVM標準 プロファイラ • jvmオプションつけてsbt compile • 結果はjava.hprof.txtに出力されま す $ sbt -J-agentlib:hprof=cpu=samples,depth=5 clean compile 12. 結果見る • depth=5で荒い解析 • クラスのロードが大量にされている……? rank self accum count trace method 1 12.04% 12.04% 2158 300093 java.util.zip.ZipFile.getEntry 2 9.90% 21.95% 1775 300065 java.lang.Throwable.fillInStackTrace 3 7.21% 29.16% 1293 303874 java.lang.Class.forName0 4 5.40% 3
Javaトラブルでは『情報がなくて、再現もなかなかしません』といった状況に陥ることがある。このような状況を回避するために、以下の3つの代表的なトラブルを例に、アプリケーションサーバを再起動する前に何を取得すれば良いのかをまとめてみる。 アプリケーションから応答がない アプリケーションが遅い ヒープメモリが足りない(OutOfMemoryErrorの発生) アプリケーションから応答がない 取得する情報 スレッドダンプ データ取得方法 スレッドダンプとは、コマンド実行時点でのJavaスレッド実行状態を出力したものである。応答がない場合、何らかの要因によりどこかで処理が止まっていることが想定される。スレッドダンプは『どこで止まっているのか?』を切り分けるのに大切な情報である。 取得方法はJDKのバージョンによって色々ある。 kill -3 <pid> (少なくとも1.4.2にはある〜JDK7でも
Eclipseデバッガを活用するための31のtips from Hiroki Kondo speakerdeckに貼ろうかどうか迷ったけれども、どこかで話したわけではないのでslideshareに。 Eclipseのデバッガを活用すると開発が捗ります。自宅ではIntelliJを使い始めてみて、さくさくコードが書ける事を体感しているのですが、デバッグはEclipseの方がやりやすいです。で、自分の知っているノウハウをチームで共有するために作りはじめたんですが、広くみんなに公開したほうがいいと思っておすそ分け。調べてみると、結構知らなかったネタがゴロゴロでてきました。Run to Lineとかお手軽で強力な機能だと思う。 「こんなネタ知りたい」とか、フィードバックを是非お寄せください。調査して追記していきますので、コメントとかよろしくお願いします。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く