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

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

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

【Linux】サーバに入ったらやるよね?ってコマンド

初めて入るサーバはワクワクします。 「どんなスペック?」「どんな構成で動いてるんだろ?」 ってなるのでそんな時に使えるコマンド集

git-flow

git-flowについての記事

【k8s】各コンポーネント

k8s

kube-apiserver コントロールプレーンのフロントエンドサーバ。APIリクエストを処理 etcd ノードの詳細やクラスタに存在するリソースの詳細など、あらゆる情報を保存 kube-scheduler 新たに作成するPodを実行する場所を決定する kube-controller-manager Dep…

Cが早いと言われる理由を考察

早い理由 ・ポインタを扱えるから ・処理は自分で書いた行だけだから ・インタプリタ言語だと内部的に処理が増える ・GCがある。参照の計算がある。Cは自分でfree。 ・メモリアクセスが制限。制限部分が遅い ・歴史が長い分最適化(アセンブリレベル)されてる

【TCP】コネクション永続化

Persistent Connection数の上限値 Persistent Connection数の上限値を設定することで,一つのTCPコネクションで連続してリクエストを処理できるWebクライアント数を制御します。TCPコネクション数が指定した上限値を超えた場合,リクエスト処理終了後に切断…

MacBookPro 2019への希望

MacBookProの現行発売から早くも1年が経とうとしてます。 今年もおそらく新型が発売すると思われます。 個人的に希望しているスペックを何となく記載してみる CPU CPUは今年から本格出荷されるIce Lakeを希望したい。 厳しいとは思うが希望したい。 マイナー…

【http】http キャッシュの話メモ

HTTPヘッダー Right align Cache-Control コンテンツをキャッシュしても良いかなど、キャッシュ方針を細かく指示する Expires コンテンツの有効期限を示す Etag コンテンツの識別子を表す。コンテンツが変わるとEtagの値も変わる Last-Modified コンテンツの…

bash ワンライナー [ループ術]

ワンライナー ループ

【Linux】lsコマンド

いまさらですが、lsコマンドについてまとめます。 lsコマンド list segmentsの略。 ファイルやディレクトリの情報を表示する。 $ ls a.txt b.txt c.txt test test2 上記コマンドでカレントディレクトリ内のファイルの一覧を表示する。 ls -a : すべてのファ…

【k8s】ローリングアップデート

k8s

k8sの標準の機能だけでローリングアップデートを実現する。 サンプルアプリケーションは以下を使用 github.com 以下がmanifestの全文 apiVersion: apps/v1 kind: Deployment metadata: name: helloweb labels: app: hello spec: replicas: 4 selector: match…

gdb スレッド切り替え

cプログラム #include <stdio.h> #include <pthread.h> #include <unistd.h> pthread_t thread; void* thread3 (void* d) { int count3 = 0; while(count3 < 1000){ sleep(10); printf("Thread 3: %d\n", count3++); } return NULL; } void* thread2 (void* d) { int count2 = 0; while(cou</unistd.h></pthread.h></stdio.h>…

【k8s】masterで動いてるpod

k8s

etcd クラスタ内のさまざまなデータを保存している一貫性のある高可用性のKVS kube-apiserver クラスタに対する全ての操作を司るAPIサーバー 認証や認可の処理なども行う kube-scheduler PodのNodeへの割り当てを行うスケジューラー Podを配置するNodeの選択…

【C】pread(2)/pwrite(2)

C

指定したオフセットでファイルディスクリプターを読み書きするpread(2)/pwrite(2)を使ったサンプルコード #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/types.h> #include <assert.h> int main(int argc, char **argv) { char c; int fd, ret; fd = open("test.txt", O_R</assert.h></sys/types.h></sys/stat.h></fcntl.h></unistd.h></stdio.h>…

【C】pread(2)/pwrite(2)

C

指定したオフセットでファイルディスクリプターを読み書きするpread(2)/pwrite(2)を使ったサンプルコード #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/types.h> #include <assert.h> int main(int argc, char **argv) { char c; int fd, ret; fd = open("test.txt", O_R</assert.h></sys/types.h></sys/stat.h></fcntl.h></unistd.h></stdio.h>…

vim 先頭追記/末尾追記 no plugin

プラグインなしで先頭追記と末尾追記 「行頭」に文字を挿入する手順 「control + v」で矩形選択モードへ 「Shift + G」で一番下まで選択 「I」で挿入モードへ 例えば「#」を入力 「esc」で抜ければ完成! 「行末」に文字を挿入する手順 「control + v」で矩…

【Perl】 配列の和・積・差

和集合 A∪B my @array_a = qw/1 2 3 4 5/; my @array_b = qw/3 4 5 6 7/; my %cnt = (); my @array = grep { ++$cnt{$_} == 1 } (@array_a, @array_b); 積集合 A∩B my @array_a = qw/1 2 3 4 5/; my @array_b = qw/3 4 5 6 7/; my %cnt = (); my @array = gr…

【Ansible】callback pluginでslackに通知を出す

[defaults] stdout_callback = slack [callback_slack] channel = '#deploy-reports' nme = ansible webhook_url = https://hooks.slack.com/services/XXXXXXXXX/YYYYYYY/ZZZZZZZZZZZZZZ

pythonで始めるatcoder [超絶初心者編]

超絶初心者がpythonでatcoderを始めた時に役立つコード集です。 スニペット import sys import math import fractions from functools import reduce 入力処理 1行 / 1列 s = input() n = int(input()) x = float(input()) 1行 / R列 l = list(map(int, inpu…

入門監視を読んだので殴り書き的メモ

背景 入門監視を読んだので殴り書き的なメモを書いただけの記事 何が言いたいかの記事かというととりあえずいい本なので買いましょう。 第Ⅰ部 監視の原則 1章 監視のアンチパターン 1.1 アンチパターン1:ツール依存 1.2 アンチパターン2:役割としての監視 …

【Linux】net.ipv4.tcp_tw_reuse=1

webサーバに置けるTCP TIME_WAIT

【Linux】ロードバランサ L4 L7

ロードバランサ

OSC2019 Spring 東京へ参加した際の殴り書き

注意:この記事は新幹線の中で書いた殴り書き記事です。 参加セッション 1日目 1コマ目 OPEN SDS はじめてみませんか 2コマ目 AnsibleとServerspecの話 Serverspecでテストを行う。rubyで書く 3コマ目 Zabbixで楽して監視を開始 昔と違ってコンテナで簡単に…

Dartコンテナで遊ぶ

hub.docker.com DartはGoogleによって開発されたウェブ向けのプログラミング言語。 FROM google/dart WORKDIR /app ADD pubspec.* /app/ RUN pub get ADD . /app RUN pub get --offline CMD [] ENTRYPOINT ["/usr/bin/dart", "main.dart"] 上のようなDockerf…

コンパイル方式とか

github.com インタプリタ方式 プログラミング言語の命令を一つずつ,機械語に解釈しながら実行する方式で, 解釈実行方式ともよばれます。 コンパイラ方式 ソースプログラムをいったん機械語に翻訳し,その機械語になったプログラムを実行する方式 JITコンパ…

みんなのプロコン2019

atcoder.jp ヤフー株式会社主催のプログラミングコンテスト 上位入賞者には下記のような賞金がでるらしい。 1位:20万円相当 2位:10万円相当 3位:5万円相当 4位:2万円相当 5位:1万円相当 この領域で戦ってる人たちってどんな感じでコーディングして…

perlワンライナーメモ書き

perlコマンドのオプション -e 'code' コードの実行 -w 警告 -n 読み込み(出力しない) -p 読み込み(出力する) -l 行末処理 -M'モジュール名' モジュールのロード -a awkモード

【Linux】カーネルパラメータの変更方法

概要 カーネルパラメータを変更する機会があったわけですが、全くといっていいほど今まで気にしたことがなかったのでこれを機にカーネルパラメータ周りや sysctl の使い方を整理してみます。 sysctl 説明 man sysctl より抜粋 sysctl は カーネルのパラメー…

【Linux】mm_struct は何してるか

mmap: vm_area_struct の先頭を保持する。 mm_rb: メモリエリアを高速に探すための red-black tree を保持する。 mmap_cache: メモリ参照の局所生(locality)を生かして高速化するためのもの。 pgd: page global drectory へのポインタ。後述。 mm_users: 共…

python ターミナルサイズ

pythonでCLIツールを作るときに表示系でターミナルサイズが知りたいとき os.get_terminal_size()もあるが今回はshutilを使った方法をご紹介 import shutil terminal_size = shutil.get_terminal_size() print(type(terminal_size)) # => <class 'os.terminal_size'> print(terminal_siz</class>…

dstatでサーバリソースのリアルタイム監視

dstatとは vmstatやnetstat、iostatの基本機能がまとまっている便利コマンド $ dstat You did not select any stats, using -cdngy by default. --total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai stl| read writ| recv…