ブックマーク / qiita.com (195)

  • TOMCAT殺害事件 - Qiita

    OOMKillerの殺意 顧客EC2のTomcatがアクセスの無い早朝にもかかわらずOOMKillerに突然殺されてしまったので、調査した顛末をたぶん同じような問題に直面されている方もおられるかと思いますので備忘録として記載します。 Javaヒープのチューニングにも多少役立つかと思います。 (この記事はJava8が対象となります。) OOMKillerとはOut of Memory時に、サーバ全体を守るためにメモリーを消費しているプロセスを停止するLinuxの標準機能です。 そのOOMKillerになんとTomcatが突然殺害されてしまいました。 問答無用の辻斬り状態です。 早朝ですのでアクセスログには何も記録されておらず、catalina.outには OpenJDK 64-Bit Server VM warning: Setting LargePageSizeInBytes has no

    TOMCAT殺害事件 - Qiita
  • PHP7.4の新機能その2 - Qiita

    PHP7.4 / PHP7.4その1 / PHP7.4その2 2019/06/13、PHP7.4.0α1がリリースされました。 今後はベータ、RCと完成度を高めていき、7.4.0のリリースは2019/11/28が予定されています。 なお仕様フィックスは2019/07/13で、それ以降は大きな変更は入らないようになります。 逆に言うとそれまでは追加が入る可能性はあるのですが、既にα1も出たことですし、さすがにこれからのタイミングでプロパティ型指定やらアロー関数レベルの大改修が入ることはないでしょう。 ということで前回以降入った新機能や変更点を見てみることにします。 RFC Arrow functions 2.0 賛成51、反対8で受理。 アロー関数です。 // 新構文 $fn = fn($x) => $x + $y; // ↓と同じ $fn = function ($x) use ($y)

    PHP7.4の新機能その2 - Qiita
  • 本番環境でやらかしちゃった人 Advent Calendar 2019 - Qiita

    番環境でやらかしちゃった人のアドベントカレンダーです。 例) DB吹き飛ばした 番サーバをデストロイした ネットワーク設定をミスって番サーバにアクセス出来なくなり、サーバが世界から孤立した などなど... 以下の2点については必須項目なので、記述お願いします。 惨劇はなぜおこってしまったのか 二度と惨劇を起こさないためにどうしたのか もう二度とあの惨劇を繰り返さないために、みなで知見を共有しましょう。

    本番環境でやらかしちゃった人 Advent Calendar 2019 - Qiita
  • ジャバの異常な愛情 またはSpringはいかにしてモダンであることを止めて時代遅れになったのか - Qiita

    Spring以前 RPC 業務で使うシステムはサーバー間で連携することが多い。2019年現在ではREST apiに対してjsonやprotocolbufferで呼び出す事が当たり前のように行われているが、まだjsonも発見されていない時代はもっと複雑な仕組みが取られていた1。異機種間でやりとりするためのCORBAや、機種に依存しないデータプロトコルのASN.1なども利用されていたが、仕様は複雑でそれぞれをハンドリングするライブラリは有償で売られ、ベンダーからサポートを受けながら使用するようなものだった。 RMI Javaの世界ではJava同士でやりとりするためのRMIが定義され、比較的に楽にRPCできるようになった2。とはいえhttpでrestをコールすることに比べたらアホみたいな複雑さである。 https://docs.oracle.com/javase/jp/1.3/guide/rmi

    ジャバの異常な愛情 またはSpringはいかにしてモダンであることを止めて時代遅れになったのか - Qiita
  • skaffoldでBuildKitを有効にする - Qiita

    Docker 18.09で正式にリリースされたBuildKit。これを有効にしてdocker buildを実行するとこれまでよりセキュアかつ並列化のおかげでビルド時間を短くすることが可能になります。 今回は、skaffoldとBuildKitの簡単な紹介と、そのBuildKitをskaffoldというCLIツールを使用した場合に有効化する方法と速度差を記載します。 skaffold? Kubernetesを使った開発がしやすくなるGoogle謹製のコマンドラインツール。簡単に説明すると、ソースコードをウォッチして、変更があればビルドしKuberntesクラスターにあげてくれるというところまでを自動でやってくれるツールになります。 より詳しく知りたい場合、こちらの記事が詳しいです。 Kubernetesの開発環境で困っているならskaffoldを使え BuildKit? 冒頭でも簡単に触れて

    skaffoldでBuildKitを有効にする - Qiita
  • SecretをGitHubに登録したくないのでSealedSecretを使う - Qiita

    仕組み SealedSecretはBitnamiが開発するOSSです。いわゆるCRD(Custom Resource Definition)で、クラスター内ではこのCRDを管理するSealedSecret Controllerを稼働させます。SealedSecretは公開鍵暗号を使用します。コントローラーが秘密鍵を持ちます。ユーザーは公開鍵を使ってSecretを暗号化してSealdSecretをリソースを作成します。SealdSecretリソースをクラスター内に作成すると、コントローラーがSealdSecretを復号し、Secretを作成します。 クラスターの中で復号が行われるのが特徴的なところで、Weaveworksの提唱するpull型のGitOpsの場合はこのような方法がマッチするのだろうと思います。push型のGitOpsの場合はkubesecのようなツールで復号してからkubect

    SecretをGitHubに登録したくないのでSealedSecretを使う - Qiita
  • たぶん仕事の役に立たないTerraform v0.12の鑑賞ポイント - Qiita

    ってなってて、これはもう完全に草w とか言ってたのが2018年の10月のことで、懐かしいです。 で、結局最終的なv0.11とv0.12のgitの差分がどうなったのか気になるじゃないですか。 というわけで計測してみると、これぐらいです。 [terraform@master|✔]$ git diff --shortstat v0.11.14...v0.12.0 5255 files changed, 606655 insertions(+), 1336138 deletions(-) warning: inexact rename detection was skipped due to too many files. warning: you may want to set your diff.renameLimit variable to at least 1922 and retry t

    たぶん仕事の役に立たないTerraform v0.12の鑑賞ポイント - Qiita
  • KubernetesのRBACについて - Qiita

    RBACとは RBAC(Role-based access control)とは、役割ベースのアクセス制御機能。 RBACリソースは4つのリソースがある。RoleリソースとClusterRoleリソースとRoleBindingリソースとClusterRoleBindingリソース。 RoleとClusterRoleは、どのリソースにどんな操作を許可するかを定義するためのリソース RoleBindingとClusterRoleBindingはどのRole/ClusterRoleをどのUserやServiceAcctountに紐付けるかを定義するためのリソース。 ユーザは以下のようにkubectl config set-credentialsを使って作成できる kubectl config set-credentials alice --username=alice --password=pa

    KubernetesのRBACについて - Qiita
  • Spinnaker+Kayentaでカナリアリリース 初期構築編 (local Kubernetes) - Qiita

    はじめに Kubernetesのエコシステムの中に、CDツールの役割としてSpinnakerが存在しています。今回は、On-Prem環境のKubernetesクラスタ環境で、SpinnakerとKayentaを利用したCanaryリリースの手法を確認します。 環境情報 Kubernetesクラスタ : 1.11.3 (kubeadmで構築済) Halyard導入マシン : Ubuntu16.04 Halyardバージョン : 1.10.1-20180912131447 Spinnakerバージョン : 1.9.4 前提作業 Halyard Install用マシンを準備 Spinnakerには、InstallerツールのHalyardというものが存在しています。Spinnakerの全機能を使用するために、Halyardが必要です。Halyardを導入するUbuntu16.04を適当に準備しま

    Spinnaker+Kayentaでカナリアリリース 初期構築編 (local Kubernetes) - Qiita
  • Goの新しいerrors パッケージ xerrors - Qiita

    先日 xerrors パッケージがリリースされました。 このパッケージは、Proposal: Go 2 Error Inspection で提案されているものをGo1向けに外部ライブラリとして試験的に実装したものです。 Goの標準ライブラリではありませんが、Go公式がメンテナンスをしています。 このパッケージができた背景は、今まで多くのGoエンジニアは下位層のエラーの情報を伝播させるために pkg/errors パッケージ などの外部ライブラリを利用していました。この手法が開発者の間で普及したため標準ライブラリで正式に検討を始めることとなりました。 2019/9/4更新 Go 1.13では %w でのラップや Is メソッド、 As メソッドは正式に導入されました。 しかし%+w や %+v によるスタックトレースの表示の採用は見送られました。 スタックトレースの表示が必要な場合はxerr

    Goの新しいerrors パッケージ xerrors - Qiita
  • Goのエラー処理とpkg/errorsの使い方 - Qiita

    やっぱり自分なりにまとめないと理解した気になれないので、まとめてみることにする。 https://godoc.org/github.com/pkg/errors Golangにおけるエラー処理(おさらい) Goは言語仕様として例外機構(Exception)がない。例外ではなく、複数の戻り値を返せるという特徴を利用し、最後の戻り値をエラーに割り当てるということをする。throwを書きたくなったら代わりにreturnを書くわけだ。 import "fmt" // helloはnameが空だったらエラー扱いにする func hello(name string) (string, error) { if name == "" { return nil, fmt.Errorf("name is invalid") } return fmt.Sprint("hello %v", name) }

    Goのエラー処理とpkg/errorsの使い方 - Qiita
  • Terraform職人入門: 日々の運用で学んだ知見を淡々とまとめる - Qiita

    はじめに この記事は CrowdWorks Advent Calendar 2017 の8日目の記事です。 Terraform職人の @minamijoyo です。Infrastructure as Codeしてますか? インフラのコード管理に Terraform を使い始めて2年ちょっと、番環境で運用していると日々色んな学びがあるので、Terraformやってみた系の入門記事では語られない、現場の運用ノウハウ的なものを共有してみようかと思います。 Terraformを使い始めた or 使っている人が、こんなときどうするの?っていうときに参考になれば幸いです。 書き始めたら超長文になりました。概要は以下のとおりです。 公式ドキュメントを読もう tfファイルを書く技術 インデントを揃える 組み込み関数に親しむ lifecycleブロックを使う リソースの差分を無視する リソース再生成のとき

    Terraform職人入門: 日々の運用で学んだ知見を淡々とまとめる - Qiita
  • GolangでwebサービスのAPIを叩くCLIツールを作ろう - Qiita

    はじめに この記事はGo (その3) Advent Calendar 2016の18日目の記事です。 最近Goの勉強がてら、とある社内向けWebサービスAPIを叩くCLIツールを書いてます。 有名どころのWebサービスならたいてい既に誰かがSDKなりCLIツールを作ってたりするので、それを使ればよいと思いますが、クローズドな社内向けのWebサービスとかだと、まぁ欲しい人が自分で書くしかないですね。 で、簡単なプロトタイプが動くようになったので、このあたりで覚えたことを整理してまとめてアウトプットしておこうかなと思います。 内容的には サブコマンド形式のCLIツールを作り方 spf13/cobraの使い方 viperと連携した透過的な設定ファイルの読み込み version番号の埋め込み、Makefile pkg/errorsによるエラーの伝搬、contextを使ったタイムアウト 標準のne

    GolangでwebサービスのAPIを叩くCLIツールを作ろう - Qiita
  • Firebaseの各機能を3行で説明する - Qiita

    Firebase は機能が多すぎてよく分からなかったので、自分の整理用に「 Firebase で何ができるか」をだいたい3行でまとめてみました。 利用可能な環境かどうかは、以下のアイコンで示しています。 … Android 利用可能 … iOS 利用可能 … Web 利用可能 [追記] 新しい機能が増えたので2018/09/26時点で整理しました。 Analytics Google Analytics for Firebase イベントベースでデータ収集・分析ができる。無料。 アプリの場合は Google Analytics for Firebase を、ウェブサイトの場合は Google Analytics を使うことになる。 BigQuery と統合して複雑な解析を行うこともできる。 Develop Firebase Authentication メールアドレスとパスワードを利用したユ

    Firebaseの各機能を3行で説明する - Qiita
  • Rust と非同期 IO の歴史 - Qiita

    この記事は Rust LT #1 で発表したものです 自己紹介 某社でサーバサイド Rust 書いてる 最近のサーバサイド Rust の話題 iron, gotham が開発停止 tokio-core が tokio runtime になった RFCS に async-await が入った futures 0.2 が yank されそう された 疑問 2018 年にもなって非同期 IO で疲弊している Rust は 2006 年に開発が始まった node.js も go も 2009 年には存在していた 今まで Rust は何をやっていたのか? 今まで Rust は(非同期 IO で)何をやっていたのか? 2006~2010 この頃の Rust Graydon Hoare が Rust を開発開始 この時代 2006: Firefox2.0, jQuery, Twitter, AWS 20

    Rust と非同期 IO の歴史 - Qiita
  • 他人のコミットをgit merge --squashするべきでないのではという話 - Qiita

    最近某OSSに出されたPRが、git merge --squash <branch> でマージされたことにより、コミットのAuthorが書き換えられてしまったことが一部界隈で話題になっていました。この件にはマージを行った人に悪意はなかったようなのですが、gitの理解不足により生じてしまった案件だとすると悲しい話なので一応メモ 何が起きたか コミッターが複数の内容が含まれたPRを送った 管理者はその中の一部の内容だけをマージするために、管理者はgit merge --squashを実施し、コミットを改変した上でmergeを実施した ←これが問題 コードの内容はコミッターのものなのに、Authorだけ管理者にすげ変わってしまいコミッターのモチベを損ねた そもそもsquashするとどうなるの ここに分かりやすくまとまっています。 アジャイルSEを目指すブログ 図で分かるgit-mergeの--f

    他人のコミットをgit merge --squashするべきでないのではという話 - Qiita
  • イマドキのJavaScriptの書き方2018

    PySpa統合思念体です。これからJavaScriptを覚えるなら、「この書き方はもう覚えなくていい」(よりよい代替がある)というものを集めてみました。 ES6以降の難しさは、旧来の書き方にプラスが増えただけではなく、大量の「旧来の書き方は間違いを誘発しやすいから非推奨」というものを作り出した点にあります。5年前、10年前のやウェブがあまり役に立たちません。なお、書き方が複数あるものは、好き嫌いは当然あると思いますが、あえて過激に1つに絞っているところもあります。なお、これはこれから新規に学ぶ人が、過去のドキュメントやコードを見た時に古い情報を選別するためのまとめです。残念ながら、今時の書き方のみで構成された書籍などが存在しないからです。 たぶん明示的に書いていても読み飛ばす人はいると思いますが、すでに書いている人向けではありません。これから書くコードをこのスタイルにしていくのは別にいい

    イマドキのJavaScriptの書き方2018
  • I/O負荷の正確な状況はiowaitでは分かりません - Qiita

    さくらインターネットのアドベントカレンダー9日目として、サーバ屋らしく、運用に関するコマンドの使い方を紹介します。 サーバの負荷が高まってきたときに、vmstatやtopなどのコマンドで調査する事が出来ますが、I/O負荷をwa(iowait)によって判断する人も多いと思います。 ただ、結論から言うと、iowaitは正確にI/Oの負荷を表しているわけではありません。 これらを、実際に演習をしながら見ていきたいと思います。 iowaitとidle iowaitとはあくまでも、CPUが空いているのにI/Oがボトルネックになっているプロセスを示しているだけで、CPUの利用率が高いときにはI/Oがボトルネックになっていてもiowaitが上がりません。 同様に勘違いされがちなのが、id(idle)はCPUの空きを示しているというものですが、idleは必ずしもCPUの空き時間を示しているものではありませ

    I/O負荷の正確な状況はiowaitでは分かりません - Qiita
  • golangの高速な構造化ログライブラリ「zap」の使い方 - Qiita

    はじめに 構造化メッセージが構築できる高速なロギングライブラリを謳っている『zap』を触ってみました。 ドキュメントがあまり充実していなくて、どんなことができるのかGodoc見ながら調査したので、その結果を自分用のメモがてら書いておこうと思います。 確認した環境とバージョン Mac OSX 10.11.6 (El Capitan) go v1.8 zap v1.0.0 zapの特徴 zapは以下のようなアプローチで高速化していると言っています。 Reflectionを使わない アロケーションしないJSONエンコーダを使用 可能な限りシリアル化のオーバーヘッドとアロケーションを避ける そして、独自のベンチマークによると、他の構造化ロギングライブラリだけでなく、標準ライブラリよりも高速に動作するそうです。 確かにReadMeのパフォーマンスを見ると圧倒的に高速で低アロケーションを実現しています

    golangの高速な構造化ログライブラリ「zap」の使い方 - Qiita
  • AmazonLinuxのcloud-initについての調査メモ - Qiita

    EC2の起動処理で色々やりたいのでUserDataにシェルスクリプトかcloud-configを書いてやってみようと思ったのですが、そもそもどうやって動いているのか起動タイミングや初回起動のみ実行されるのかなど分からなかったので調べてみたり、動作確認してみたメモ 参考 Linux インスタンスでの起動時のコマンドの実行 Amazon Linuxのcloud-initの動きについて調べてみた Amazon Linuxのcloud-initの実行順番を確認する cloud-init を None データソースで動作確認する cloud-initでスクリプトが実行されるタイミングを調べてみた AWS EC2インスタンス起動時 cloud-initによりホスト名をNameタグ_インスタンスID_IPアドレスに設定する cloud-initのper-xxxまとめ 結論 色々確認しましたが、結論として

    AmazonLinuxのcloud-initについての調査メモ - Qiita