20230310
Linux CPUのアーキテクチャを調べる
lscpu | grep "Architecture:"
Architecture: x86_64
全体だとこんな感じ
Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 63 Model name: Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz Stepping: 2 CPU MHz: 2400.135 BogoMIPS: 4800.01 Hypervisor vendor: Xen Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 30720K NUMA node0 CPU(s): 0 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology cpui d pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti fsgsbase bmi1 a vx2 smep bmi2 erms invpcid xsaveopt
20230212
WSL2のUbuntuのIPを調べる
ip addr show dev eth0
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:15:5d:2f:1b:42 brd ff:ff:ff:ff:ff:ff inet 172.26.129.189/20 brd 172.26.143.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::215:5dff:fe2f:1b42/64 scope link valid_lft forever preferred_lft forever
172.26.129.189 のとこがWSL側のIPなので、例えばWSL側でWebサーバーを立ち上げていたらWindows側のブラウザのアドレスバーに入力すればアクセスできる
20211109
Expressで静的なファイル表示
const express = require('express');
const app = express();
const port = 3000;
app.use('/aaaaa', express.static(__dirname + '/public'));
app.listen(port, () => {
console.log(`http://localhost:${port}/aaaaa de /public no nakami ga deru-`);
});
20211107
Ubuntu 20.04 メモリ使用量確認
free -h
total used free shared buff/cache available Mem: 983M 389M 136M 12M 457M 423M Swap: 0B 0B 0B
Ubuntu 20.04 ディスク使用量確認
df -h
Filesystem Size Used Avail Use% Mounted on udev 481M 0 481M 0% /dev tmpfs 99M 776K 98M 1% /run /dev/xvda1 39G 11G 29G 27% / tmpfs 492M 0 492M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 492M 0 492M 0% /sys/fs/cgroup /dev/loop6 34M 34M 0 100% /snap/amazon-ssm-agent/3552 /dev/loop2 25M 25M 0 100% /snap/amazon-ssm-agent/4046 /dev/loop4 56M 56M 0 100% /snap/core18/2128 /dev/loop3 100M 100M 0 100% /snap/core/11798 /dev/loop1 100M 100M 0 100% /snap/core/11993 /dev/loop0 56M 56M 0 100% /snap/core18/2246 tmpfs 99M 0 99M 0% /run/user/1000
20210725
TypeScript オブジェクト型を加工する型
type RemoveReadonly<T> = {
-readonly [P in keyof T]: T[P];
};
type RemoveUndefined<T> = {
[P in keyof T]-?: T[P];
};
type Unvalidated<T> = {
[P in keyof T]?: any;
};
2020-12-08
Node.js グローバルがどこ見てるか確認
global.module.paths
に配列でパスが入ってる
2020-11-22
package.json から npm install コマンド生成
※バージョンは無視
console.log(`npm i -s ${Object.keys(require('./package.json').dependencies).join(' ')}`);
console.log(`npm i -D ${Object.keys(require('./package.json').devDependencies).join(' ')}`);
2020-09-11
画像保存妨害
画像のラッパー要素に ::after
で同サイズの透明なボックスを乗せると……
.image-wrapper {
position: relative;
}
.image-wrapper::after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
content: "";
}
2020-09-08
Webpack 「hidden modules」を全部表示する
webpack --display-modules
2020-06-21
Prettier JSXのタグの部分はダブルクォート、それ以外はシングルクォートしたい
singleQuote
有効かつ jsxSingleQuote
無効
2020-06-19
AWS 東京リージョンにパブリックアクセスブロックONのS3バケットを作成する
コマンド2発必要
aws s3api create-bucket --bucket <名前> --create-bucket-configuration LocationConstraint=ap-northeast-1
aws s3api put-public-access-block --bucket <名前> --public-access-block-configuration BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true
2020-05-26
指定したサーバーでnslookup
nslookup
> server 8.8.8.8
> note.kiriukun.com
2020-05-24
apt
sudo apt autoremove piyopiyo
sudo apt --purge autoremove piyopiyo
apt list piyopiyo
apt search piyopiyo
sudo dpkg -l
2020-04-22
JavaScript 分割代入で再代入
カッコで囲わないと Unexpected token '=' が出る
const obj = { a: 1, b: 2 };
let a, b;
({a, b} = obj);
console.log(a, b); // -> 1 2
2020-04-09
AWS-CLI 接続先、接続ユーザーを取得
aws sts get-caller-identity
{ "UserId": "AAAAAAAAAAAAAAAAAAAAA", "Account": "999999999999", "Arn": "arn:aws:iam::999999999999:user/kiriukun" }
2020-04-08
anyenvをアンインストール
ホームディレクトリにインストール済みのanyenvと設定ファイルを削除
rm -rf ~/.anyenv
rm -rf ~/.config/anyenv
それから、インストール時に .bashrc
とか .bas_profile
あたりに以下の記述を追加してるはずなので、手動で削除する
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"
ターミナルを落として上げなおして (再ログイン)、anyenv versions
などでコマンドが使えなくなったことを確認する。
2020-04-06
シンボリックリンク削除
unlink /path/to/link
2020-04-04
Ubuntuのバージョン確認
cat /etc/os-release | grep VERSION
VERSION="18.04.4 LTS (Bionic Beaver)" VERSION_ID="18.04" VERSION_CODENAME=bionic
Ubuntu MariaDBを完全にアンインストール
sudo dpkg --force-all -r mariadb-server-10.1
sudo apt --purge remove mysql-server*
sudo apt --purge remove mysql-common*
sudo apt --purge remove mariadb-server*
aptはremoveじゃなくてpurgeしないと設定が残るらしい
最後の mariadb-server を消すとき、画面が出てきて消すか聞かれるのでYESを選択すること
Ubuntu シンボリックリンク作る
ln -s /path/to/target linkname
2020-03-16
AWS CloudFormationでRoute 53にエイリアスのAレコード追加
コメントのとこは公式マニュアル参照
MyAliasRecordSetIPv4:
Type: "AWS::Route53::RecordSet"
Properties:
HostedZoneId: "追加先のホストゾーンID"
Name: "ドメイン名"
Type: "A"
AliasTarget:
DNSName: "CloudFrontディストリビューションのドメイン名"
HostedZoneId: "Z2FDTNDATAQYW2" # CloudFrontならこれ固定
MyAliasRecordSetIPv6:
Type: "AWS::Route53::RecordSet"
Properties:
HostedZoneId: "追加先のホストゾーンID"
Name: "ドメイン名"
Type: "AAAA"
AliasTarget:
DNSName: "CloudFrontディストリビューションのドメイン名"
HostedZoneId: "Z2FDTNDATAQYW2" # CloudFrontならこれ固定
2020-03-10
Gitでconflictした時の BASE, LOCAL, REMOTE
- BASE … 共通の先祖
- LOCAL … 自分の変更
- REMOTE … 相手の変更
自分のを捨ててよければREMOTEを採用すればよい。
stashからpopしてconflictした場合は、LOCALとREMOTEが逆なので注意。(相手の変更が反映されたところに、popされた自分の変更が降ってくるわけだから)
2020-03-03
AWS CloudFormationでVPC Lambdaを作ろうとしたら CreateNetworkInterface がどうこう
please make sure your function execution role have permission to CreateNetworkInterface みたいなエラーが出たら、VPCで動かすLambdaの実行ロールのポリシーに ec2:CreateNetworkInterface
, ec2:DescribeNetworkInterfaces
, ec2:DetachNetworkInterface
, ec2:DeleteNetworkInterface
が足りない。
AWS S3の前にCroudFront置いたらS3のURLにリダイレクトされてAccessDeniedと言われる
CroudFront作ってすぐにアクセスしようとすると、設定に何も問題無くても、S3の生URLへのリダイレクトがCroudFrontにキャッシュされてしまうらしい。
2020-02-13
JavaScript オブジェクトの配列を特定のキーでソート
list
をオブジェクトの id
でソートするなら↓
list.sort((a, b) => {
if (a.id > b.id) return 1;
if (a.id < b.id) return -1;
return 0;
});
2020-02-12
設定ファイルを指定してwebpack
webpack --config webpack.config.js
設定ファイルを指定してwebpack-dev-server
webpack-dev-server --config webpack.config.js
2020-02-07
printableなASCII文字以外をヒットさせる正規表現
[^ -~]
printableなASCII文字と改行以外をヒットさせる正規表現
[^\r\n -~]
2020-02-03
VSCode settings.jsonの開き方
左下の歯車マークをクリック、または Ctrl + ,
で設定画面を開く → 画面右上にあるファイルのマークをクリック
このファイルのアイコンは、カーソルを合わせると『設定 (JSON) を開く』と表示される
VSCode ウィンドウのリロード
Ctrl + Shift + P
でコマンドパレットを開く
Developer: Reload Window
と入力して実行
2019-11-16
Windowsでシンボリックリンク
mklink /D %リンク置きたい場所% %リンク先%
2019-11-02
ゴミ
function toQueryString(params) {
var ret = '';
Object.keys(params).forEach(function(key) {
if (ret !== '') {
ret += '&';
}
var value = params[key];
if (value === '' || value === null) {
ret += key;
} else {
ret += key +'='+ encodeURIComponent(value);
}
});
return ret;
}
function getCookies() {
var ret = {};
var tmp = document.cookie.split(';');
for (var i = 0, len = tmp.length; i < len; ++i) {
var arr = tmp[i].split('=');
if (arr[1] === undefined) {
arr[1] = '';
}
ret[arr[0]] = arr[1];
}
return ret;
}
2019-10-31
npm インストールしたパッケージ確認
--depth=0
つけると、依存で入ったパッケージを省いて表示できる
# ローカル
npm list --depth=0
# グローバル
npm list -g --depth=0
pip インストールしたパッケージ確認
--not-required
つけると、依存で入ったパッケージを省いて表示できる
pip list --not-required
2019-10-27
ImageMagick 7 で一括crop, resize
ウィンドウモード (1600x900) のゲームのスクショ (1602x927) から枠を除去して640x360以下に縮小、フォルダ内 .png
全部
magick mogrify -crop 1600x900+1+26 +repage -resize 640x360 *.png
2019-10-05
ソフトバンクのルーターの初期ユーザーとパスワード
ユーザー名「user」パスワード「user」
Ubuntu16.04 IPアドレス固定
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens33
#iface ens33 inet dhcp
iface ens33 inet static
address 192.168.1.200
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
2019-09-17
普通にbabel7
npm install --save-dev @babel/core @babel/preset-env @babel/cli
{
"presets": [
"@babel/preset-env"
]
}
npx babel src -d lib
2019-08-29
ランレングス圧縮
やっつけ
function runlength(text) {
let compressed = '';
let n = 0;
let pc = null;
for (let i = 0, len = text.length; i < len; ++i) {
const c = text.charAt(i);
if (pc !== null && c !== pc) {
compressed += n + pc;
n = 0;
}
pc = c;
++n;
}
if (n > 0) {
compressed += n + pc;
}
return compressed;
}
console.assert( runlength('') === '' );
console.assert( runlength('a') === '1a' );
console.assert( runlength('aaabbbb') === '3a4b' );
console.assert( runlength('aaabbbbcccccabbaaaacc') === '3a4b5c1a2b4a2c' );
2019-08-27
webpackでbabel7
npm install --save-dev webpack webpack-cli
npm install --save-dev @babel/core @babel/preset-env babel-loader
{
"presets": [
"@babel/preset-env"
]
}
const path = require('path');
module.exports = {
mode: 'development', // productionにすると難読化&minifyされる
entry: './src/index.js',
output: {
path: path.join(__dirname, 'public/js'), // ここはフルパスで指定
filename: 'bundle.js',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: ['babel-loader']
}
],
}
};
npx webpack
gulp4でlessを自動コンパイル
npm install --save-dev less gulp gulp-less
const gulp = require('gulp');
const less = require('gulp-less');
// lessをコンパイルするタスク
gulp.task('less', function(done) {
gulp.src('./src/less/*.less').pipe(less()).pipe(gulp.dest('./public/css'));
done(); // done()しないと終わらない
});
// ファイルの変更を監視してlessタスクを起動するタスク
gulp.task('watch', function() {
gulp.watch('./src/less/*.less', gulp.series('less'));
});
// デフォルトのタスク (lessタスクとwatchタスクを両方やる)
gulp.task('default', gulp.series('less', 'watch')); // gulp.series()に渡したタスクは左から順に流れる
# lessタスクだけ実行
npx gulp less
# watchタスクだけ実行
npx gulp watch
# defaultタスクだけ実行
npx gulp
2019-08-21
AMIから復元したEC2インスタンスに踏み台から接続しようとしたら Permission denied(publickey)
AMIから作成したインスタンスは勝手にパスワードログインが無効化されるらしい
/etc/ssh/sshd_config
を PasswordAuthentication yes
にしてSSH再起動 sudo service sshd restart
2019-08-02
upstart 登録
/ect/init
以下に {ジョブ名}.conf
ファイルを作る
# 説明
description "hello"
# ランレベル3,4,5かつnetworkが開始したら動き出す
start on (runlevel [345] and started network)
# ランレベル3,4,5以外またはnetworkが停止したら止まる
stop on (runlevel [!345] or stopping network)
# プロセスが死んだら自動で復活する
respawn
# やること (例: ユーザー kiriukun で /my/terrible/program.sh を叩く)
exec sudo -u kiriukun /my/terrible/program.sh
upstart 設定をリロード
ジョブ追加したらやる
sudo initctl reload-configuration
upstart 起動、停止、再起動
piyopiyo はジョブ名。Amazon Linuxではログは /var/log/messages
に出てたから、動かなかったら見る。
sudo initctl start piyopiyo
sudo initctl restart piyopiyo
sudo initctl stop piyopiyo
2019-07-31
ApacheのMPMを確認する方法
httpd -l
コマンドで『Server MPM』を見る (※Windowsでしか確認してない)
WinNTはスレッド増える系だから、PHP乗せるならスレッドセーフ版にする
Server version: Apache/2.4.39 (Win64) Apache Lounge VS16 Server built: May 28 2019 17:12:51 Server's Module Magic Number: 20120211:84 Server loaded: APR 1.7.0, APR-UTIL 1.6.1 Compiled using: APR 1.7.0, APR-UTIL 1.6.1 Architecture: 64-bit Server MPM: WinNT threaded: yes (fixed thread count) forked: no Server compiled with.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses disabled) -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/apache" -D SUEXEC_BIN="/apache/bin/suexec" -D DEFAULT_PIDLOG="logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error.log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf"
2019-07-30
Amazon Linux 秘密鍵じゃなくてパスワードでログインできるようにする
/etc/ssh/sshd_config
を編集して PasswordAuthentication yes
に変更する
変更したら /etc/rc.d/init.d/sshd restart
で反映する
しくじると鍵でも入れなくなるから、他から入れることを確認するまで今のSSHを切ってはいけない
2019-07-25
Amazon Aurora (PostgreSQL互換) Serverless
- PostgreSQLのバージョンは必ず最新のものになる。
- パブリックアクセスは不可。踏み台EC2だの作って、そこからアクセスする。
- 作成時にデータベース名を決められないっぽいので、デフォルトの postgres データベースでログインして作業する。
- サブネットグループはRDSの画面の左メニュー『サブネットグループ』から作れる。
yum install postgresql96.x86_64
psql -h ${RDSのエンドポイント} -U ${データベース作成時に設定したユーザー名} -d postgres
Amazon Linux 踏み台サーバーの作り方
以下サイト様を参照
Amazon Linux sudoできるユーザーの作り方
sudo useradd kiriukun
sudo passwd kiriukun
sudo visudo
visudo
すると /etc/sudoers
を書き込み可能状態で開ける。開いたら以下を追記する。root
ユーザーで似たような記述があるはずだから、そこらへんに書けばいい。
kiriukun ALL=(ALL) ALL
これで作ったユーザーは、sudo
するときに自分自身のパスワードを求められる。rootユーザーのパスワードを入力させたいとか、パスワード入力しなくていいようにするには、以下サイト様を参照。
Amazon Linux ログインできないユーザーの作り方
sudo useradd -s /sbin/nologin kiriukun
もしこれで追加したユーザーで作業したいことがあったら、他のユーザーでログインしてから root
に昇格 → su -s /bin/bash - kiriukun
で入れる
プライベートVPC内のEC2でyumできるようにする
プライベートなVPCはプライベートだから当然 yum
も無理。でもAmazon Linuxの yum
リポジトリがS3にあるらしいので、VPCにS3へのエンドポイントを追加してやれば yum
できるようになる。
ただVPCのエンドポイントは存在するだけで有料なことは留意。