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

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

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

C言語 排他ロックする方法(mutex)

マルチスレッドプログラミングでスレッド間で共有データにアクセスするときに、 mutexを用いて、排他ロックを行うことがあります。 スレッドの同期には,pthread_joinによる合流の他に、ロックという方法があり今回は そちらを利用したスレッドの待ち合わせの…

vim script

vim scriptを始めてみようと思った。 色々言われているが一生使われていきそうな言語。 ゴリゴリ書く気は無いけどやり始めると大分書いちゃいそうで怖い。。。 変数について " 変数の定義、代入 let 変数名 = 式 " 変数の破棄 unlet 変数名 = 式 ex) let sam…

【Linux】linux 削除したファイルを復活させることができるかもしれない話

かもしれない

シグナルについて

シグナルとは シグナルは、UNIXやLinuxで使用されるプロセス間通信の一つです。 プロセスにシグナルを送信すると、そのプロセスの正常処理に割り込んで、シグナル固有の処理(シグナルハンドラ) が実行される」プロセス側では、シグナルを受信した際の動作(シ…

【vim】vimでHTMLのタグ補完 (NeoBundle)

背景 最近純粋なvimでは飽きたらずついにプラグインに手を出してしまいました。 そこで今回はHTMLでタグ補完を行える「emmet-vim」をご紹介 対象 Mac (macOS mojave) NeoBundleって何? NeobundleはShougoさんによって作られた、vimプラグインのパッケージマ…

C言語でシングルトンを実装

C言語でシングルトン(再入不可能な関数)を実装する方法 static 変数をフラグに使う 最も単純な方法。 次の関数は static 変数をフラグに使って再入を防いでいます。 void once(void) { static int entered = 0; if (entered == 1) { return; } entered = 1; …

Macのbrewコマンドリファレンス

概要 mac用のパッケージマネージャーであるHomebrewに関するコマンドのまとめです。 個人的に良く使うコマンドをまとめました。 所謂自分用メモ 用語 homebrew ⇒ パッケージ管理システム brew ⇒ make する Fomula ⇒ パッケージそのもの Keg ⇒ Formula のイン…

memccpy(3) で文字列をコピーする

memccpy(3)というシステム関数をご存知でしょうか? memcpyではなくmemccpyです。 こちらの関数は4.3 BSD で追加された関数ということがわかりました。 glibc に入っているので Linux でも使えます。 manを確認。 memccpy() は次のような関数です。 書式 voi…

【k8s】kubernetes使うならやっておきたいalias設定

k8s

alias k='kubectl' alias kc='k config view --minify | grep name' alias kdp='kubectl describe pod' alias krh='kubectl run --help | more' alias ugh='kubectl get --help | more' alias c='clear' alias kd='kubectl describe pod' alias ke='kubectl …

linux関連のブログとか

https://53ningen.com/ https://www.soum.co.jp/misc/programmer/ http://linux-dvr.biz/ https://wiki.bit-hive.com/north/ http://ascii.jp/elem/000/001/235/1235262/ https://k-onishi.hatenablog.jp/

Unix 哲学

UNIXという考え方 The UNIX philosophy 定理 1. Small is beautiful. 小さいものは美しい 小さいものは、大きい物にない利点がいくつもある。小さいもの同士なら簡単に独特の便利な方法で組み合わせることができる 小さなプログラムという発想 小さなプログ…

Chrome拡張「vimium」

Chromeの操作をvimっぽくするための拡張プラグインです。 結構vimってます。 ※ただし非対応なwebページもあるのでマウス操作が皆無になるかと思うとそうでもありません。 インストール方法 https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibh…

インテルCPUの世代メモ

第1世代 Nehalemマイクロアーキテクチャ 第2世代 Sandy Bridgeマイクロアーキテクチャ 第3世代 Ivy Bridgeマイクロアーキテクチャ 第4世代 Haswellマイクロアーキテクチャ 第5世代 Broadwellマイクロアーキテクチャ 第6世代 Skylakeマイクロアーキテクチャ …

再現性の確立とは

あらゆるバグや動作不良の確認だったり修正においてバグを何度でも全く同じように再現する方法を確立することは大切。 バグの調査対象ポイントを絞り込んだり結論を得るための工程を削減したりする近道でもある。 デバッグの心得として持つべきなのはまずバ…

【Linux】それなりのLinux カーネルチューニング

# 共有メモリの最大サイズ。サーバーの搭載メモリ(1GB)に合わせて変更 kernel.shmmax = 1073741824 # システム全体の共有メモリ・ページの最大数 kernel.shmall = 262144 # システム全体のプロセス数の上限 kernel.threads-max = 1060863 # システム全体のフ…

【GitHub Actions】オブジェクト

オブジェクトフィルタ * 構文を使って、フィルタを適用し、コレクション内の一致するアイテムを選択できます。 たとえば、fruitsというオブジェクトの配列を考えます。 [ { "name": "apple", "quantity": 1 }, { "name": "orange", "quantity": 2 }, { "name…

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

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

ネットワークの帯域とか速度とか

帯域とか速度とかの単位のまとめ 帯域=速度? 1GbE = 125MB/s 「bps」は1ビット単位、「B/s」は1バイト単位となり、「1バイト=8ビット」のため、「bps」は「B/s」の8倍、「B/s」は「bps」の1/8倍となります。 このため「100Mpbs回線=12.5MB/s回線」となり…

groovyの正規表現についてメモ

//正規表現文字列。 regex = /(ABC)/ // ~はPatternオブジェクトを作成する pattern = ~regex assert pattern instanceof java.util.regex.Pattern //=~はMatcherオブジェクトを作成する matcher = "ABCDEFG" =~ regex assert matcher instanceof java.util.…

GolangのGOPATHやGOROOT

GOROOT 基本設定しなくて良い。アプリケーションによっては必要な変数 GOPATH 個人がGoのプロジェクトを配置したい場所に(例: $HOME/go など)

Java スコープ

スコープとは スコープとは大雑把に言えば変数やメソッドなどが見える範囲のことを指す。 Javaの変数のスコープで一番簡単なのはローカル変数で、これは{から}まで(これをブロックという)の中で、宣言した位置より後ろで参照することができる。

【k8s】各リソースの雛形コマンド

k8s

各リソースの雛形用コマンド Deployment kubectl run mydeploy --image nginx -o yaml --dry-run Pod # --restart=Never を付けると Pod になる kubectl run mypod --restart=Never --image nginx -o yaml --dry-run Job # --restart=OnFailure を付けると J…

Docker Content Trust(DCT)

[CLOSED]401 unauthorized when trying to push signed container to ACR docker runした際に401が出たりするがこれは署名の検証なんかでエラーが出てる。 なので環境変数export DOCKER_CONTENT_TRUST=0を定義すれば良い

C言語の備忘録。プリプロセッサとは

■ プリプロセッサ define - プリプロセッサマクロ定義 ~~~c include <stdio.h> define COUNT 0x5 define MULTIPLE_COUNT (2 * COUNT) define DEVIDE_COUNT(x, y) *1 int main() { printf("%d\n", COUNT); printf("%d\n", MULTIPLE_COUNT); printf("%d\n", DEVIDE_COUN</stdio.h>…

再帰関数とは

再帰関数とは、関数の中からその関数自身を呼び出すような処理を行う関数のこと 簡単に言えば自分で自分を呼び出すことです #include <stdio.h> int fact(int n) { int m; if (n == 0) return 1; // 0! = 1 /* 以下、n が 0 でないとき */ m = fact(n - 1); \ return </stdio.h>…

【サーバ】ECC有無でのメモリの違い

ECC (エラー訂正機能) エラー訂正機能が備えられていると、メモリ内のデータが誤っていた場合でもエラー訂正ができます。エラー訂正によりメモリの信頼度が高まります。

【Linux】SSコマンドで取れない統計情報 netstat

milestone-of-se.nesuke.com オプションはnetstatもssもほぼ同じ。 -l, --listening リッスンしているやつ -n, --numeric ポートやナマのIPで表示 -t, --tcp TCPを表示 -u, --udp UDPを表示 -x, --unix UNIX Domainソケットを表示 TCPのやつを表示する場合は…

systemd概要

systemdの概略 OS起動の仕組みで、Upstartと同様に各プロセスを並列起動する Upstartより高速になっており、システム管理の共通化なども行っている 主なOSでいくと、CentOS7はsystemdを採用している systemdの特徴 高速なシステム起動 Upstartよりも高い並列…

DockerでGo言語開発環境を整える

最近並列的なバッチ処理でgolangを使いたくなりました。しかも大量のデータを並列で回したいので、リソースを増やしやすいdockerを使いたくなりました。 golangをdockerで立ち上げて開発するだけならそんなに難しいこともないのですが、dockerでdaemonを立ち…

DockerでPython開発環境を爆速で作る

DockerでPythonの開発環境を爆速で作ってみる $ sudo docker pull python:3.6 3.6: Pulling from library/python f49cf87b52c1: Pull complete 7b491c575b06: Pull complete b313b08bab3b: Pull complete 51d6678c3f0e: Pull complete 09f35bd58db2: Pull co…