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

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

【Makefile】変数加工のtips

$(name:op%os=np%ns) $(name)の各語に対し、先頭のopと末尾のosを削除して、先頭にnp, 末尾にnsを付加する。 用途としてはこんな感じ。特定ディレクトリ配下のファイルを取得して指定したパスに加えて拡張子をつけるみたいなケース vars := $(filter-out Mak…

【Perl】CによるPerl拡張 XSに入門する

概要 休み明け一発目から古のperlを使った謎モジュールのビルドエラーの確認作業になった。cもmakefileもそれなりに読めるし余裕だろって思ってたらそんなことはなかったのでメモ XSでハマったというよりはそもそもXSが何なのかをそんなに理解してなかったの…

【Go】ベンチマーク ツールのtips

Go

golang.org -benchmem メモリ関連の情報を出力。 -benchtime t 計測に使う時間をtで指定する。defaultは1s -cpuprofile=*.prof 詳細なCPUプロファイルが取れる go tool pprofで内容を見る -count テストする回数を指定 -cpu 実行するcpu数 -memprofile=*.pro…

【Docker】パッケージアップデートのベストプラクティス

pythonspeed.com 必須パッケージが古いことがわかっている場合は、ベースイメージのメンテナーに連絡した上で、アップデートするみたいなのがベストプラクティスってなっていたけど最近は上記の記事で言っているように違うらしい hadolintで検証 検証用Docke…

【AWS】Amazon Web Service 負荷試験入門の読書メモ

概要 Amazon Web Services負荷試験入門 ――クラウドの性能の引き出し方がわかる Software Design plus | 仲川 樽八, 森下 健 | 工学 | Kindleストア | Amazon この本を読み始めたので気になったところとかをメモしていく 負荷試験とPDCAサイクル 負荷試験にお…

【Linux】シスパフォ本メモ 用語

https://www.amazon.co.jp/exec/obidos/ASIN/4873117909/aknow-22/ ファイルシステム データをファイルとディレクトリに組織したもの ファイルベースインターフェイス、ファイルパーミッション、特殊ファイルタイプ(デバイス、ソケット、パイプ)、メタデー…

【Linux】mmapリーディングの開始地点あたりのメモ

概要 mmapを読もうと思ったのでその開始地点のメモ。迷子になったらここに戻ってくるように書いておく github.com mmapの実装 asmlinkage long sys32_mmap(struct mmap_arg_struct32 __user *arg) { struct mmap_arg_struct32 a; if (copy_from_user(&a, arg…

【Perl】usageの書き方メモ

use Getopt::Long; use Data::Validator; my $tweet_id; my $print_key; my $help; GetOptions('i=i' => \$tweet_id, 'p=s' => \$print_key, h => \$help); if ($help) { die show_help(); } validate( tweet_id => $tweet_id, print_key => $print_key ); s…

【Linux】TCPの再送制御あたりのソースを眺める

概要 ブラウザからWebサーバを経由しAPサーバにアクセスする場合の通信に関する説明をざっくりまとめてみました。再送制御あたりがメインです。 記事を書こうと思った背景 AWSの資格学習をしていてRDSあたりのフェールオーバ ーあたりで「DNSベースでやるの…

【memcached】スピンロックでatomic操作を実現するためには

概要 マルチプロセス環境配下における、同一レコードへの書き込みが大量に発生するwrite heabyな環境でmemcachedの更新をどうやってatomicに行うかを考えた時に出てきたスピンロック的なことやってみた記事。 memcachedとは書いたもののCAS操作を提供してい…

【Ansible】collection インストールでバージョン指定

docs.ansible.com バージョン指定してインストール $ ansible-galaxy collection install test:1.0 開発バージョンをインストール $ ansible-galaxy collection install test:==0.0.3-alpha ディレクトリを指定してインストール $ ansible-galaxy collection…

【Ansible】Ansibleにおける冪等性とは

概要 仕事でひたすらplaybook書いてたら「冪等生ってなんだ?」ってなったので調べたメモ。 そもそも冪等性とは 同じ操作を何度繰り返しても、同じ結果が得られるという性質です。以下あたりが詳しく書かれてます。 qiita.com よくある冪等生の説明の数式で…

【MySQL】my.cnfのメモ

[client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock key_buffer_size=16M max_allowed_packet=8M pid-file = /usr/local/var/mysql/MacOSX.local.pid #エラーログの確認 log-error=/var/log/mysql/error.log #クエリログ…

【Linux】systemdのrestartとreloadの違い

restartとreloadの違い restart 起動中のUnitを停止後、起動する 再起動で失敗する場合は、起動しない reload Unitに対して設定ファイルの再起動を促す 対象のUnitがreload動作に対応している必要がある 再読み込みで失敗する場合は停止しないので、稼働状態…

【Apache】httpd 2.2と2.4で微妙に違うrewrite rule

適当なrewrite ruleを使ってproxyする設定を書いた。以下の挙動が2.2と2.4で微妙に違うことに気づいたのでメモ config <VirtualHost *:80> ServerName www.test.com SSLProxyEngine On RewriteEngine on RewriteRule ^/(.*) $1 [P,L,QSA] </VirtualHost> vhostのwww.test.comへのアクセス時に…

【Perl】xsファイル入門

概要 休み明け一発目から古のperlを使った謎モジュールのビルドエラーの確認作業になった。cもmakefileもそれなりに読めるし余裕だろって思ってたらそんなことはなかったのでメモ XSでハマったというよりはそもそもXSが何なのかをそんなに理解してなかったの…

【Linux】負荷試験の勘所

【Solr】Apache Solrへ入門する

概要 今更ながらApache Solrへ入門してみたのでその辺の情報の取りまとめ記事。 目次 概要 目次 Apache Solrとは 触ってみる Dockerを使って環境構築 Dockerfile docker-compose.yml コアを生成する サンプルデータを投入する 検索APIを使う サンプルクエリ …

【HTTP】キャッシュあたりを整理してみる

概要 HTTPのキャッシュについて色々調べてみたのでメモ的な意味も兼ねて書いた。 動機としては以下の本を読む上で先に事前知識を入れておきたかったなというのがあります。キャッシュだけで400ページ超え。とても楽しみです。 gihyo.jp 目次 概要 目次 それ…

【Linux】IOバウンドの処理はどの程度まで並列数を上げればよいかの考察(ちょっと修正版)

概要 IOバウンドについて考える機会があったのでその辺の話についてまとめてみた。ちなみにブロッキングIOしか出てきません。以下の本が大体の参考になってます。 https://www.amazon.co.jp/exec/obidos/ASIN/4774143073/hatena-blog-22/www.amazon.co.jp 忙…

【Linux】agメモ

# ディレクトリ階層の深さ指定 --depth NUM Search up to NUM directories deep (Default: 25) # (マッチした)ファイル名のみを出力 -l --files-with-matches Only print filenames that contain matches (dont print the matching lines) # マッチしなかっ…

【Bash】sedの最短一致

$ echo "<aaa>b<ccc> <ddd>e<ccc>" という文が会った時にbというのを取り出したいケースで以下のようにsedを使おうとするとb以外の不要な部分まで取れてしまう。 $ echo "<aaa>b<ccc> <ddd>e<ccc>" | sed -r 's/<aaa>(.*)<ccc>/\1/' b<ccc> <ddd>e これはsedが最短一致ではなく最長一致がデフォルトで機能するためでそして</ddd></ccc></ccc></aaa></ccc></ddd></ccc></aaa></ccc></ddd></ccc></aaa>…

【Linux】O_LARGEFILEフラグ

linuxjm.osdn.jp O_LARGEFILEというフラグを見つけ気になったのでメモ。 O_LARGEFILE (LFS) off_t ではサイズを表せない (だだし off64_t ではサイズを表せる)ファ イルをオープン可能にする。この定義を有効にするためには、(どのヘッダーファイ ルをインク…

【Apache】http/2を試す

httpd.apache.org この辺を参考に入れていく。CentOS7なら何もせずにビルドも成功したしモジュールも問題なく動いた。 <VirtualHost *:443> SSLEngine on <IfModule http2_module> ProtocolsHonorOrder On Protocols h2 http/1.1 </IfModule> DocumentRoot "/var/https/example.com/htdocs/" …(省略)… </VirtualHost>

【Linux】ポートフォワードを使ってローカルのサービスを外部へ公開してみる

sshのリモートフォワードを使ってローカルで起動したサービスを外部からフォーワードする # 以下を修正 $ vi /etc/ssh/sshd_config GatewayPorts yes # 再起動 $ systemctl restart sshd 以下のようにsshを起動することで192.168.1.1:8433へのアクセスが全て…

【HTTP】http/2におけるConnectionヘッダーの扱い

概要 http/2を喋る環境でバックエンドがConnectionヘッダーやらの取り扱いがどんな感じなのか気になって調べた。RFCとかみてもきちんと定められていて無視するなり不正リクエストにするべきであるというのが決まりの模様。 Connection や Keep-Alive などの…

【Python】bit探索

>>> a = 777 >>> len(bin(a)) - 2 10 >>> bin(a) '0b1100001001' >>> for i in range(len(bin(a)) -2): ... print(a >> i & 1)

【Go】ビルド時に情報を埋め込む

Go

goでビルド時に動的に値を入れてバイナリを生成するやり方です。ビルドの引数に -ldflags "-X main.version=バージョン" をつけることで実現できます。 package main var version string func main() { println("version: " + version) } makeでビルド時に動…

【Solr】Apache Solrへ入門する

概要 今更ながらApache Solrへ入門してみたのでその辺の情報の取りまとめ記事。 目次 概要 目次 Apache Solrとは 触ってみる(Docker) Dockerfile docker-compose.yml コアを生成する サンプルデータを投入する 検索APIを使う スキーマの話 configの書き方 高…