Yuya Sato のアーカイブ

[Python] 文字列を正規表現で判定

2017年4月26日

reモジュールをimportします。 search関数で、文字列の中でマッチした箇所を返します。 ``` import re hoge="sample1234hogesample5678" match = re.search("sample[0-9.*]", hoge) if match: match.group() # マッチした文字列を返す(最初にマッチしたもののみ) -> sample1234 ```
続きを読む

ファイルの途中の行に文字列を挿入する

2017年4月25日

``` echo "hogehoge" >> sample.txt ``` とすると、ファイルの末尾に追加されるが、途中の行に追加したい場合は以下のようにする。 ``` sed -e "12i hogehoge" -i sample.txt ``` 12は追加したい行の行番号です。
続きを読む

ファイルから特定の文字列を含む行の行番号を取得する

2017年4月25日

ある特定の文字列を含む行がファイルの何行目にあるのかを知りたい時に使用する。 ``` grep -e "特定の文字列" -n | sed -e 's/:.*//g' ```
続きを読む

[PHP] コマンドライン引数からオプションを取得する

2017年4月18日

自作PHPスクリプトをCLIやcronなどから実行する際、様々な追加情報のためにオプションを指定することがあるときは、 getopt()関数を使用します。 ``` $shortopt = ""; $shortopt .= "s:" #値必須 $shortopt .= "r::" #値必須ではない $options = getopt($shortopt); # $optionsには{"s" => "hoge", "r" => Null}のような連想
続きを読む

Macでウィンドウを右寄せ・左寄せする

2017年4月12日

Windowsにあるアプリのウィンドウを右寄せ・左寄せ・フルスクリーン化する機能はMacにはありません。 [Spectacle](https://www.spectacleapp.com/)を使用するとそれっぽいことが出来ます。 デフォルトでは、 ``` 左半分: Opt + Cmd + 上半分: Opt + Cmd + ↑ 下半分: Opt + Cmd + ↓ ``` ですが、Vimのように矢印の部分を`hjkl`で置き換えると無駄に手を移動す
続きを読む

SierraでKarabinerのVi Modeによるカーソル移動を行う

2017年4月11日

KarabinerのVi Modeによって、Macでのカーソル操作を`Command + hjkl`によって作業していた。 OS SierraではKarabinerが対応していなく、現状Karabiner Sierra版は出ていない。 そこで、[hammerspoon](http://www.hammerspoon.org/)を使用してこれを再現する。 ### 設定方法 brewでhammerspoonをインストールする。 ``` $ brew c
続きを読む

[Python] 余分な空白や改行文字を取り除く

2017年4月5日

Pythonではstrip()関数で指定した語を文字列から削除することができます。 このstrip()関数では引数になにも加えないと、空白及び改行文字を取り除いてくれます。 ``` hoge = " hugahogehoge¥n" hoge.strip('huga') -> " hogehoge¥n" hoge.strip() -> "hugahogehoge" ```
続きを読む

[rsyslog] 特定のログを別のログファイルに記録する

2017年3月29日

rsyslogでログを取っていると、同じファシリティのログでも監視対象として重要なものとそうでないものが混在している場合がある。 そこで、監視対象をデフォルト設定のログファイルに記録し、そうでないものは別のファイルに記録する設定をする。 rsyslogではif~then~形式でログを指定して別のログファイルに記録することができる。 ``` # ログメッセージにhogehogeが含まれていた場合/var/log/hogehoge.logに記録する if $ms
続きを読む

[SSH] 鍵認証のみによる接続の設定

2017年3月29日

sshにおいて、パスワード認証をやめて鍵認証による接続のみを受け付けるには、設定ファイルである/etc/sshd/sshd_configに以下のような設定をします。 ``` # 鍵認証の設定 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys # rootアクセスの禁止 PermitRootLogin no # パスワー
続きを読む

[MySQL] シェルからmysqlプロンプトに入らずにコマンド実行

2017年3月24日

シェルスクリプトなどで、mysqlの情報を知りたい時に、mysqlプロンプトに入らずにコマンドを実行するには-eオプションを使用します。 ``` $ mysql -uroot -e "show status;" ```
続きを読む

[Python] マルチプロセス処理

2017年3月22日

Pythonでマルチプロセス処理を行うときはmultiprocessingモジュールを使用する。 ``` from multiprocessing import Process def childProcess(data): print "Hello, " + data if __name__ == '__main__': datas = ["Rick", "Carl", "Daryl"] jobs = []
続きを読む

[PHP] 歯抜けの配列のインデックスを連番にする

2017年3月22日

PHPでarray_diff()関数などを使用していると返り値の配列が歯抜けの場合がある。 このような配列は、array_merge()関数で連番のインデックスに直すことができる。 ``` 出力結果: array(3) { [0]=> string(4) "Rick" [1]=> string(4) "carl" [2]=> string(5) "daryl" } ```
続きを読む

[Python] print出力先の変更

2017年3月15日

Pythonのprint文は通常標準出力に出力されますが、これをファイルに変更します。 ``` f = open("hoge.txt", 'w') print >> f, "hogehoge to file" f.close() ```
続きを読む

VimでEscを使わない

2017年3月8日

vimを操作する時、インサートモードからノーマルモードに遷移する際にはEscキーを使用しますが、キーボードに置いている手の位置を大きく動かさないといけないのでなにかと億劫です。 vimではデフォルトでEscの代わりに以下のコマンドでノーマルモードに遷移することが出来ます。 ``` ## インサートモードの時に Ctrl + [ ```
続きを読む

SNSでメールを送信

2017年3月3日

Lambdaなどで処理を実行した後に簡易的にSNSメールを用いて通知を行う場合が多々あるので、 テンプレート用に作りました。 ``` import boto3 def send_mail(region_name, topic_arn, subject, message): sns = boto3.resource('sns', region_name) try: response = sns.Topic(t
続きを読む

Nginxでリバースプロキシを構築する

2017年3月1日

Apacheで動かしているWEBサイトの上にNginxをリバースプロキシとして動作させます。 さらに、リクエストURLをrewrite機能を使って書き換えます。 ### Nginxの設定 `upstream`にApacheで動作しているWEBサーバを指定します。Apacheはポート81で動作しているものとします。 また、`proxy_set_header...`の項目はApacheのログの設定をしています。Nginxをプロキシにしているので、この設定をしな
続きを読む

WordPressの.htaccessを編集する

2017年2月24日

WordPressでは、パーマリンクなどの設定をWordPress管理画面上から行うと.htaccessを自動で書き換えます。 管理者が独自の設定を.htaccessに行いたい場合、この自動書き換えにより独自に設定した項目が上書きされてしまうため、設定を工夫する必要があります。 ``` # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] Rewri
続きを読む

boto3を使いdynamoDBに上書きさせずにデータを保存

2017年2月22日

boto3を用いてDynamoDBにデータを保存させる時、put_item()関数を使用すると既存のデータが存在した場合上書きを行ってしまう。 ``` # {key: "hoge", value: "hoge"}がすでにDynamoDB上に存在 table.put_item( Item={ 'key': "hoge", 'value': "piyo" } ) # 上を実行すると既存のデータが{key: "h
続きを読む

特定の行から特定の行までを抽出する

2017年2月15日

テキストファイルを操作する場合や複数行の文字列を操作する時、awkコマンドを用いることである特定の文字列が含まれる行から別の特定の文字列が含まれる行までを抽出することができます。 例えば、BEGINが含まれる行からENDが含まれる行までを抽出したいときは、以下のようにします。 ``` $ cat hogehoge.txt | awk '/BEGIN/,/END/' ```
続きを読む

tmux

2017年2月10日

ssh越しにサーバで作業をする時、複数の作業を行いたかったり何個かウィンドウを表示してコードを片方に出しておき作業したかったりする場合があります。 この場合ターミナルを複数立ち上げて都度sshアクセスする必要がありますが、tmuxを使用すると一つのsshアクセスでウィンドウを複数立ち上げることが出来ます。 http://qiita.com/vintersnow/items/be4b29652ff665c45198
続きを読む