git reset ワーキングツリーとインデックスとHEADの関係
最近仕事でgitを使うことになりました。
よく混乱するので、ワーキングツリーとインデックスとHEADの関係図をアップして置きます。
Aqua Utopia|海の底で記憶を紡ぐ
almost home

祝日 / Permanent Vacation
Show & Tell

#extradirty
Sade Olutola
occasionally subtle
todays bird

Janaina Medeiros

@theartofmadeline
dirt enthusiast
Stranger Things
Three Goblin Art
Claire Keane
Not today Justin
RMH
hello vonnie
let's talk about Bridgerton tea, my ask is open

titsay
Mike Driver
seen from Italy

seen from United Kingdom
seen from United States
seen from United States
seen from United States

seen from United States
seen from Mexico
seen from United States

seen from United States

seen from Singapore
seen from Singapore
seen from Malaysia

seen from United States

seen from Australia

seen from Malaysia

seen from Malaysia
seen from United States
seen from United States

seen from Singapore

seen from United Kingdom
@ervin818
git reset ワーキングツリーとインデックスとHEADの関係
最近仕事でgitを使うことになりました。
よく混乱するので、ワーキングツリーとインデックスとHEADの関係図をアップして置きます。
Apacheログ系のソートについて
複数のログファイルから日付でソートしたい場合、
access.log-20160619 access.log-20160703 access.log-20160704 access.log-20160706
一旦置換してからソートして、まとめたファイルに出力します
$ cat access.log-* | sed -e "s:/Jan/:/01/:" -e "s:/Feb/:/02/:" -e "s:/Mar/:/03/:" -e "s:/Apr/:/04/:" -e "s:/May/:/05/:" -e "s:/Jun/:/06/:" -e "s:/Jul/:/07/:" -e "s:/Aug/:/08/:" -e "s:/Sep/:/09/:" -e "s:/Oct/:/10/:" -e "s:/Nov/:/11/:" -e "s:/Dec/:/12/:" | sort -t " " -k 4.8,4.11 -k 4.5,4.6 -k 4.2,4.3 -k 4.13,4.14 -k 4.16,4.17 -k 4.19,4.20 > access.log-sorted
SSL証明書の期限を確認する
任意のホストのSSL証明書の有効期限を取得します。
$ echo | openssl s_client -connect example.com:443 2>/dev/null |openssl x509 -dates -noout
※ポート番号も指定可能
$ echo | openssl s_client -connect www.google.co.jp:443 2>/dev/null |openssl x509 -dates -noout notBefore=Oct 7 10:08:36 2015 GMT notAfter=Jan 5 00:00:00 2016 GMT
Linuxのコマンド履歴を残したくない
LinuxのコマンドLINEの操作で実行したコマンドは、
履歴として残るようになっています。
どうしても、historyに残したくないような場合は
↓↓↓のコマンドを実行!
HISTIGNORE=*;history -d `history|awk '{a=$1;}END{print a;}'`
このコマンドも含め、以降は履歴が残りません。
極秘作業完了後は↓
unset HISTIGNORE
で解除できます。
rsyncだけでサーバー移行
rsync \# システムディレクトリ --exclude=/proc \ --exclude=/sys \ # デバイスファイル --exclude=/dev\ # lost+found (破損しているファイル置き場。無ければ不要。) --exclude=/boot/lost+found \ --exclude=/lost+found \ # リムーバブルメディア --exclude=/media \ --exclude=/mnt \ # ネットワーク設定 --exclude=/etc/sysconfig/network \ --exclude=/etc/sysconfig/network-scripts \ # カーネル関連 --exclude=/boot \ --exclude=/etc/sysconfig/modprobe.conf \ --exclude=/lib/modules \ # テンポラリディレクトリ --exclude=/tmp \ --exclude=/var/tmp \ # ファイルシステムの自動マウント設定 --exclude=/etc/fstab \ # DNSのresolv設定(自動で生成される場合が多い為) --exclude=/etc/resolv.conf \ # ログファイル(上書きをしてはいけない場合のみ) --exclude=/var/log \ -alze ssh [移行元]:/ /
スマホをUA以外の判別方法
<script>
var smp = ((’createTouch’ in document) || (’ontouchstart’ in document));
if (smp == true) {
// タッチイベントあり!スマホからですね。
} else {
// タッチイベントありません!PCからですね。
}
</script>
RPMコマンドでARCHを表示する
64bit OSを使用している場合、パッケージを確認する際、
32bitまたは64bitなのかわかりづらいため、下記の方法で確認できます。
$ rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n' [package name]
FFmpeg最新版のインストール
ffmpegをyumで入れるとバージョン古いのでソースコードからインストールすることにしました。
作業フォルダを作成する。
# mkdir ~/ffmpeg_src
x264 ffmpegの最新版を利用するのでgitをインストール
■GIT
# yum --enablerepo=epel install git
■YASM
アセンブラ x264 ffmpegで使用される
# yum --enablerepo=epel yasm
■X264
# cd ~/ffmpeg_src
# git clone git://git.videolan.org/x264.git
# cd x264
# ./configure --enable-shared --disable-asm
# make
# make install
■libfdk_aac
# cd ~/ffmpeg_src
# git clone --depth 1 git://github.com/mstorsjo/fdk-aac.git
# cd fdk-aac
# autoreconf -fiv
# ./configure
# make
# make install
■ライブラリの設定
# export LD_LIBRARY_PATH=/usr/local/lib/
# echo /usr/local/lib > /etc/ld.so.conf.d/custom-libs.conf
# ldconfig
■ffmpegのインストール
# cd ~/ffmpeg_src
# git clone git://source.ffmpeg.org/ffmpeg.git
# cd ffmpeg
ブランチ一覧の表示
# git branch -a
* master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/oldabi remotes/origin/release/0.10 remotes/origin/release/0.11 remotes/origin/release/0.5 remotes/origin/release/0.6 remotes/origin/release/0.7 remotes/origin/release/0.8 remotes/origin/release/0.9 remotes/origin/release/1.0 remotes/origin/release/1.1 remotes/origin/release/1.2 remotes/origin/release/2.0 remotes/origin/release/2.1 remotes/origin/release/2.2 remotes/origin/release/2.3
1.2のブランチに切り替えするなら
# git checkout -b n1.2 origin/release/1.2
切り替わっているか確認
# git branch
master
* n1.2
インストール
./configure --enable-gpl \ --enable-nonfree \ --enable-libfdk_aac \ --enable-libx264 \ --enable-shared \ --arch=x86_64 \ --enable-pthreads \
--enable-libfreetype
※freetypeエラー出るなら、devel版も入れてください。
# yum install freetype-devel
# make
# make install
確認
# ffmpeg -version
ffmpeg version 1.2 built on Mar 3 2013 03:53:58 with gcc 4.4.6 (GCC) 20120305 (Red Hat 4.4.6-4) configuration: --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libx264 --enable-shared --arch=x86_64 --enable-pthreads libavutil 52. 18.100 / 52. 18.100 libavcodec 54. 92.100 / 54. 92.100 libavformat 54. 63.104 / 54. 63.104 libavdevice 54. 3.103 / 54. 3.103 libavfilter 3. 42.103 / 3. 42.103 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100
これで完了です。
ライセンスについて
x.264 aacは商用の場合はライセンス料が発生するので注意してください。ライセンスがきになる方はAmazon Elastic TranceCoderを使えばいいと思います。
Linux文字化けで消せないファイル・ディレクトリを消す方法
日本語のファイルやディレクトリが文字化けてしまい、削除できなくなりコマンドラインから削除できない場合がある。
各ファイル、ディレクトリにはi-node番号があるので「ls -i」で調べてfindコマンドに渡す。
# ls -i
1325146 ?R?s?[ ?` test.txt
1325145 ?R?s?[ ?` test2.txt
findコマンドで探す
# find . -inum 1325146
./?R?s?[ ?` test.txt
findで見つけてexecオプションで削除する
# find . -inum 1325146 -exec rm -rf {} \;
これで削除できるようになりました。
ディレクトリ・ファイルを削除できないように権限を変更する
■削除できないファイルを作成
まずは、削除できないファイルにするため、権限を変更してみましょう。
# touch foo.txt
# chattr +i foo.txt
# rm foo.txt rm: remove write-protected 通常の空ファイル `foo.txt'? y rm: cannot remove `foo.txt': 許可されていない操作です
# echo "xyz" >> foo.txt -bash: foo.txt: 許可がありません
chattrコマンドに「+i」オプションをつけることで、削除・変更ができないファイルとなります。
ちなみにファイル名の変更もできなくなります。
rootユーザでさえ削除・変更が行えなくなります。なお、この権現を削除したい場合は「-i」オプションをつけて実行すれば解除できます。
# chattr -i foo.txt # rm foo.txt rm: remove write-protected 通常の空ファイル `foo.txt'? y (削除される)
■追記モードでしか開けないファイルを作成
ファイルを「追記モード」でしか開くことができず、また削除もできないファイルを作ってみます。
用途としては、例えばログファイルを作る場合に有効ではないでしょうか。
時に重要な意味を持つログファイルは、運用の中で削除されてしまっては困ります。
ただ、変更もできないとなるとログファイルへの書き込みができません。
追加で書き込むのは許可しつつも、ファイルの削除はされたくないという場合に、この権限設定が活きてきます。
# cat foo.txt abc # chattr +a foo.txt # echo "xyz" > foo.txt -bash: foo.txt: 許可されていない操作です # echo "xyz" >> foo.txt # cat foo.txt abc xyz # rm foo.txt rm: remove 通常ファイル `foo.txt'? y rm: cannot remove `foo.txt': 許可されていない操作です # chattr -a foo.txt # rm foo.txt rm: remove 通常ファイル `foo.txt'? y (削除される)
追記モードでしかファイルを開かせないためのオプションは「+a」オプションです。
この特殊な権限を取り除きたい場合は、「-a」オプションをつけて実行します。
■特殊な権限を見るためのlsattrコマンド
この特殊な権限は、lsコマンドでは表されていません。
lsattrコマンドで権限が閲覧できます。
共通鍵、秘密鍵、公開鍵の暗号化について
■共通鍵で暗号
opensslコマンドを通して共通鍵暗号でファイルを暗号化
$ openssl enc -e -aes256 -in secret.txt -out secret.txt.enc
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
上記ではAES暗号の方式(アルゴリズム)でファイルを暗号化しています。
opensslコマンドで暗号化したファイルを復号化
$ openssl enc -d -aes256 -in secret.txt.enc -out secret.txt
■よりセキュリティを意識して暗号化したい場合は、公開鍵暗号を利用する方法もあります。
公開鍵暗号を利用する場合は、まず秘密鍵と公開鍵の2つを作成します。
$ openssl genrsa -out private.key
Generating RSA private key, 1024 bit long modulus .....................++++++ .........++++++ e is 65537 (0x10001)
次に、上記の秘密鍵のペアとなる公開鍵を作成します。
$ openssl rsa -in private.key -pubout -out public.key
そして、公開鍵でファイルを暗号化してみます。
$ openssl rsautl -pubin -inkey public.key -in secret.txt -encrypt -out secret.rsa.txt
上記の暗号化したファイルを秘密鍵で解読してみます。
$ openssl rsautl -inkey private.key -in secret.rsa.txt -decrypt -out secret.txt
鍵ペアさえ作っておけば、コマンドラインで完結することができるので、プログラムから操作する場合でも簡単に使えます。
プロキシやロードバランサー環境でのIP制限設定方法
WEBサーバをロードバランサー経由にする場合、
リモートアドレスがロードバランサーのものになってしまいます。
その場合、多くのロードバランサーも「X-Forwarded-For」ヘッダに、
アクセス元のIPアドレスを設定してくれるので、
CGIなどのアプリケーション的にも問題がなくなるはずです。
まず、httpd.confにこのように設定すれば上記を実現できる。
SetEnvIf X-Forwarded-For ".+" forwarded RewriteEngine On RewriteRule ^(.*) - [E=CLIENT_ADDR:%{REMOTE_ADDR},L] RequestHeader set X-Forwarded-For "%{CLIENT_ADDR}e" env=!forwarded
実際に下記のPHPスクリプトで、ロードバランサー経由でアクセスすると
該当変数を確認できる。
<?php print("REMOTE_ADDR=" . $_SERVER["REMOTE_ADDR"]); print("forwarded=" . $_SERVER["forwarded"]); print("CLIENT_ADDR=" . $_SERVER["CLIENT_ADDR"]); print("HTTP_X_FORWARDED_FOR=" . $_SERVER["HTTP_X_FORWARDED_FOR"]); ?>
アプリケーションではなく、httpd.confのみで設定したい場合、
SetEnvIf X-Forwarded-For "^123\\.456\\.789\\.111$" allowed_ip
<Location /> Order deny,allow Deny from all Allow from env=allowed_ip </Location>
これでリモートIPアドレス123.456.789.111は許可されるはずです。
やっと25件の投稿! (´・ω・`)
Linuxをチューニング
/etc/sysctl.conf の設定内容
各パラメータの説明はこちらです。
# 共有メモリの最大サイズ。サーバーの搭載メモリ(1GB)に合わせて変更
kernel.shmmax = 1073741824
# システム全体の共有メモリ・ページの最大数
kernel.shmall = 262144
# システム全体のプロセス数の上限
kernel.threads-max = 1060863
# システム全体のファイルディスクリプタの上限
fs.file-max = 5242880
# 受信用ウィンドウ・サイズの最大値
net.core.rmem_max = 16777216
# 送信用ウィンドウ・サイズの最大値
net.core.wmem_max = 16777216
# データ受信バッファサイズ
net.ipv4.tcp_rmem = 4096 349520 16777216
# データ送信バッファサイズ
net.ipv4.tcp_wmen = 4096 65536 16777216
# TCPソケットが受け付けた接続要求を格納するキューの最大長
net.core.somaxconn = 4096
# カーネルがキューイング可能なパケットの最大個数
net.core.netdev_max_backlog = 4096
# ソケットあたりのSYNを受け付けてACKを受け取っていない状態のコネクションの保持可能数
net.ipv4.tcp_max_syn_backlog = 4096
# ネットワークのルート・メトリクスの保持を無効化する
net.ipv4.tcp_no_metrics_save = 1
# スプーフィング対策 送信元IPの偽装防止
net.ipv4.conf.all.rp_filter = 1
# RFC1337に準拠させる
# TIME_WAIT状態のときにRSTを受信した場合、TIME_WAIT期間の終了を持たずにそのソケットをクローズする
net.ipv4.tcp_rfc1337 = 1
# SYN flood 攻撃対策
net.ipv4.tcp_syncookies = 1
# OOM killer 対策
# メモリオーバーコミットを無効
vm.overcommit_memory = 2
# mallocによる確保するメモリ量の上限(%)を指定
vm.overcommit_ratio = 99
# kernel panic で自動再起動
kernel.panic = 30
# OOM killer 発動した場合は kernel panic を起こして再起動させる
vm.panic_on_oom = 1
# TCP/IP 送信用ポート範囲の変更
net.ipv4.ip_local_port_range = 1024 65535
# TCP:time wait bucket table overflow の解消とTIME_WAITを減らすチューニング
net.ipv4.tcp_tw_recycle = 1
# TIME_OUT 状態のコネクションを再利用
net.ipv4.tcp_tw_reuse = 1
# FIN-WAIT2からTIME_WAITに遷移する時間の設定(秒)
net.ipv4.tcp_fin_timeout = 30
# NAT/Softbank携帯対策。tcp_timestampsを無効にする
net.ipv4.tcp_timestamps = 0
# CLOSE_WAITを減らす対策
(アイドル接続状態のTCP接続に対し検査する頻度)
net.ipv4.tcp_keepalive_time = 10
# TCP/IPが、既存の接続に応答されていないキープアライブ・メッセージを再送する回数
net.ipv4.tcp_keepalive_probes = 2
# 相手側からのキープアライブ応答から受信されない場に、TCP/IPがキープアライブ送信を繰り返す頻度
net.ipv4.tcp_keepalive_intvl = 3
上記設定を/etc/sysctl.confに保存する上、
■書きコマンドで設定を反映します。
sysctl -p
■設定を反映して、状態を確認
sysctl -a
yumリポジトリ設定
■リポジトリの優先順位を管理するプラグイン yum-priorities をインストール
# yum -y install yum-priorities
■各リポジトリが優先されるように設定する
# vi CentOS-Base.repo
[base]
:
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=10
exclude=php* mysql*
[updates]
:
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=10
exclude=php* mysql*
[extras]
:
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=10
[centosplus]
:
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=20
[contrib]
:
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=20
# vi epel.repo
[epel]
priority=11 // 追加
# vi rpmforge.repo
[rpmforge]
priority=11 // 追加
[rpmforge-extras]
priority=11 // 追加
[rpmforge-testing]
priority=11 // 追加
# vi remi.repo
[remi]
priority=1 // 追加
CentOS6でRPMforge、Remi、EPELをyumレポジトリに追加する方法
RPMforge、Remi、EPELは、サードパーティが提供しているyumレポジトリです。
※環境はx86_64(64bit)
■レポジトリファイルをダウンロード
・epel
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
・remi
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
・rpmforge
# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
■レポジトリをインストール
# rpm --upgrade --verbose --hash epel-release-6-8.noarch.rpm remi-release-6.rpm rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
■デフォルト無効(enabled=0)にする
インストール完了したらそれぞれの設定ファイルを開き、enabled=1となっている箇所をenabled=0に書き換えます。
※使うときに--enablerepo=epel,remi オプションを付けて有効にします。
# cd /etc/yum.repos.d/
# vi remi.repo
# vi epel.repo
# vi rpmforge.repo
■PHPをremiからインストールする方法
# yum --enablerepo=epel,remi,rpmforge install php
Zeta SH-02E 愛機の操作Tips集
■ライト
ロック画面で「音量(+)」を1秒程度押すとカメラ用のライトが点灯します。
何かボタンを押すとロック画面を解除、または30秒経つと消灯します。
■マナーモード
ロック画面で「音量(-)」を1秒程度押すとマナーモードの切替ができます。
■音声ランチャー
「設定」→「音声ランチャー設定」
スリープ中に背面を2回タップすると音声ランチャーが起動します。
■クイックサイレント
「設定」→「通話」→「クイックサイレント」
着信時に端末を裏返すとサイレントになります。急な着信に便利です。
■スクリーンショット
「電源ボタン」→「音量(-)」でディスプレイに表示している画面を画像形式で保存できます。
■強制電源OFF
フリーズした時など通常の方法では電源が切れない時に強制的に電源を切ります。
「電源」を13秒以上押すと電源が切れます。
■セーフモード
工場出荷状態に近い状態で起動するモードです。
電源OFF状態から電源いれ、ホーム画面が表示されるまで音量(-)を押し続けます。
セーフモードが起動すると画面左下に「セーフモード」/[Safe mode]と表示されます。
電源を入れ直すとセーフモードは解除されます。
■LTEを無効にする
SH-02Eには頻繁に自動再起動現象が多く、LTE⇔HSPA⇔3Gの切替が頻繁に行うと再起動現象がおきます。
※OS4.1にアップデートしましたら再起動現象もなく快適になりました。
「電話」から「*#*#4636#*#*」とダイヤルします。
「テスト中」という画面になるので、
「携帯電話情報」の「優先ネットワークを設定」リストから
「GSM/CDMA auto(PRL)」を選択。
バックキーで戻れば設定完了です。
※ドコモサービス開くとSIMカードを挿入していませんと認識してしまうことがあります。再起動すれば元通りになります。