地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

2020-01-01から1年間の記事一覧

【Python】nginxstats.pyをpython3に対応させてみた。

searchcode.com Nginxのサーバ状況監視ツールnginxstats.pyが便利そうで使いたかったけどpython2でしか動かないみたいだったのでちょっとだけ直して使ってみた。使うにはstub_statusを有効にされてるNginxが必要で取得用のエンドポイントの設定も必要です。 …

【Apache】mod_deflateで圧縮転送

<IfModule deflate_module> SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html SetEnvIfNoCase Request_URI\.(?:gif|jpe?g|png)$ no-gzip dont-vary Header append</ifmodule>…

【Go】GitHubActions GoのCIテンプレート

build -> test -> lintをするためのgo用のテンプレートyaml lintは以下を使ってます。 github.com jobs: setup: runs-on: ubuntu-latest steps: - name: set up uses: actions/setup-go@v2 with: go-version: ^1.13 id: go - name: check out uses: actions/…

【Ansible】grusterfsのブリックの設定をansibleでやる。

シェルスクリプトでゴリ押ししてたけど公式が良さげなモジュールを作ってくれていることに気づいた。ブリック関連の作成削除はこっちでやっても良さげかもしれない。 docs.ansible.com - name: create gluster volume with multiple bricks gluster.gluster.…

【TCP】acceptした相手を表示

accept(2) manページ accept(2)の第二引数addr 引き数は sockaddr 構造体へのポインタ。この構造体には接続相手のソケットのアドレスが入っている。構造体ポインタから接続元情報を表示することで接続相手が何者かを識別できる。 以下は最小限のサンプル。tc…

【Perl】AnyEvent::HTTPでhttpリクエストを投げてみるサンプル

metacpan.org perlで何も考えずにLWPとかでhttpリクエストをたくさん投げると取得すべきURLリストの中にレスポンスの遅いサイトが存在した場合そのリクエストの待ちが発生し後続のリクエストも遅くなります。 httpを簡単にノンブロッキングで実行してくれる…

【Linux】so_reuseportに関して

背景 SO_REUSEPORTってなんだろ。https://t.co/0YDyRDKrI2— Ryuichi@Gurasan:|| (@ryuichi_1208) 2021年6月26日 so_reuseportってなんやねんと思って調べた 各OSSでの対応 Nginx Socket Sharding in NGINX OSS Release 1.9.1 apache Redis Node.js サンプル…

【Redis】redis-py pipelineを使う

ある関数内で複数回Redisとのやり取りをしている場合はpipelineを用いることで処理を一括でRedisに投げることができる機能。何が嬉しいかというとプロセス間通信によるRTTを減らすことができる。 以下はサンプル。many_get()とmpipe_line()が計測対象。デー…

ちょっと便利な数学関連の関数

pythonデータ分析試験の勉強をしつつこれperlで書くとどうなんだろってものが何点かあったのでメモ的に記載 平均 sub mean { local($s) = 0; local($n) = 0; foreach $_ (@_) { if ($_ =~ /[0-9]/) { $s += $_; $n++; } } if ($n == 0) { ""; } else { $s /=…

【C】signalfd + epoll のサンプル

typedef enum { MYOP_ERROR = -1, MYOP_NONE = 0, MYOP_QUIT, MYOP_WAITCHILD, /* snip */ } MyOperation_t; /** * AnalyseEvent - epoll_eventから任意のコマンドIDを導く */ MyOperation_t AnalyseEvent (struct epoll_event *event) { if (event->data.fd…

centos7にgcc-9のインストール

レポジトリ登録 # yum install -y centos-release-scl インストール # cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) # yum install -y devtoolset-9 # scl enable devtoolset-9 bash ... 略 各種確認 # which gcc /opt/rh/devtoolset-9/ro…

perl array-hashあたりのtips

配列から重複を排除する my @array = qw/ a b c a/; my %hash = (); my @unique = grep { ! $hash{ $_ }++ } @array; ソートする # 配列 @tags = sort {$a cmp $b} @tags; # ハッシュ foreach ( sort { $hash_ref->{$a} <=> $hash_ref->{$b} } keys $hash_re…

makeが遅い!時に並列化するTIPS

キャッシュがない状態でmakeを大量に打つ機会があった。その時に並列化する方法を知ったのでメモ どうやらmakeには-jで簡単に並列化する仕組みがあるらしい。 $ make -j $(nproc) こんな感じでコア数分並列に動いてくれる。どれくらい変わるのだろう。

Nginxがユーザプロセスでulimitのハードを超えれるのはなぜか

突然思った。なんで?ulimitをユーザプロセス が変更する際はハードリミット以下で制限されるがworker_rlimit_nofileではこのハードリミットを超えることができる。 これはなんでって思ったので調べた。結論から言うとNginxは基本masterプロセスはrootで実行…

【TCP】TCPサーバーの非同期処理

手法 メリット デメリット select メモリやリソース消費が抑えられる 扱えるディスクリプタに制限がある一つのソケットの送受信処理の間に他のソケットを扱えない poll メモリやリソース消費が抑えられるディスクリプタ制限なし 一つのソケットの送受信処理…

grusterfs クライアントコマンド

構築中に調べてた際のメモ # 状態表示 gluster peer status # 指定されたブリックを使用してvolnameというボリュームを作成 $ gluster volume create # そのまま gluster volume start # そのまま(restartないのでaliasやると良いかも) gluster volume stop …

sed メモ

www.gnu.org 基本的な文字列処理 マッチした文字列を置換する $ echo 'before text' | sed 's/before/after/' after text マッチした文字列をすべて置換する $ echo 'before before before text' | sed 's/before/after/g' after after after text 複数の文…

sed メモ

www.gnu.org 基本的な文字列処理 マッチした文字列を置換する $ echo 'before text' | sed 's/before/after/' after text マッチした文字列をすべて置換する $ echo 'before before before text' | sed 's/before/after/g' after after after text 複数の文…

du -hのsort

ファイルやディレクトリ配下の使用サイズを単位をK,M,Gに変換しつつ表示してくれるdu -hですがsortする時に厄介だなって思ってました。 $ du -h ググってみるとこの単位をsortする際にいい感じにsortしてくれるオプションが追加されていること気付きました。…

fastapiを早速使ってみた

概要 最近話題のfastapiを早速使ってみた記事 fastapiとは Python製のASGI Web フレームワーク。ジャンル的にはFlaskのようなマイクロフレームワークになるみたいです。公式でも謳ってる「パフォーマンス、使いやすさ、運用設計」なんかが強いとのこと。後ド…

ansibleのテストで使えるモジュール

wait_for wait_for – Waits for a condition before continuing — Ansible Documentation タスクを適度に待たせて適切なタイミングで実行させるモジュール。 サービスを起動させた直後にポートチェックや、ログファイルの出力がきちんとされているか遅延実行…

Failed to load python3 host. You can try to see what happened by starting nvim with $NVIM_PYTHON_LOG_FILE set and opening the generated log file. Also, the host stderr is available in messages.

neovimでcoc-nvimを使いたいときにエラーが発生。入れ替えたpythonが使えるneovimパッケージがないよって意味。 python3 -m pip install neovim (何回やってるんだこれって感じなので、、、) hotoolong.hatenablog.com

Ansible よく使うフィルタ

覚えられるか!ってことでメモ。よく使うフィルタたち {{ val|default('aaa') }} - val が未定義の場合に aaa を採用。 {{ val|default('aaa', true) }} - val が false として評価される値の場合('' 等)に aaa を採用。 {{ val|escape }} - <>&"' を HTML …

【Linux】TCP keep aliveのパラメータ

① net.ipv4.tcp_keepalive_time 『TCP コネクション開始から KeepAlive の送信を開始するまでの時間』を指定します。単位は sec 、デフォルトでは 7,200 sec = 2時間です。(Windows と同じです) ② net.ipv4.tcp_keepalive_intvl 『KeepAlive 送信開始後、何…

can not make coc-python auto-completion work with Jedi

macでcocを使っていてpython3.8へ切り替えた際にjediの補完が上手く効かなくなった際に出たメッセージ。 pythonのインタプリタは切替済みでもモジュールだけが読み込めてない模様。 python.jediPathをjediのパスへ設定すれば問題なさそう。 "python.jediPath…

The ipaddr filter requires python-netaddr be installed on the ansible controller

ipaddrフィルターを使おうとしたらタイトルのエラーが出力された。 github.com python-netaddrパッケージをインストールする必要があるとのこと。 Name : python-netaddr Arch : noarch Version : 0.7.5 Release : 9.el7 Size : 983 k Repo : base/7/x86_64 …

perldocの便利な機能

ブラウザ開かずにモジュールの概要とか知れる便利なコマンドperldocですがperldpc moduleだけでも便利ですがそれ以外にも便利な機能があったりするので紹介 help perldoc [options] PageName|ModuleName|ProgramName|URL... perldoc [options] -f BuiltinFun…

debian × perl × memcached

社内勉強プロジェクトでDebianを触る機会があったのでそのついでに操作に慣れるためにperlとmemcachedのセットアップをしたのでメモ。 Debianにmemcachedをインストールし、Perlから接続する 名前を良く聞くmemcached http://code.google.com/p/memcached/ D…

【Docker】マルチCPUアーキテクチャに対応したビルドをしてみる

背景 ARM版macについて考えると欲しくて欲しくてたまらない。欲しい欲しい欲しい欲しいという思いを持ちつつ自分じゃ使いこなせないって心のなかで言い聞かせてる。やはりその一番の原因はARM。今まで作ってた便利Dockerもポンと移行できないのは辛い。そこ…

memcachedのメモ

memcached telnetから使う 接続 set/get/delete データ置換 全削除 memcahced-toolを使ってみる 実行結果 キー一覧の取得 memcached 今更memcachedのメモ github.com お試し用の環境として以下を用意しました。全てコンテナだけで済ませる予定です。 GitHub …