Yuya Sato のアーカイブ

[Python] 長い文字列を改行して書く

2017年6月21日

pythonでrequestsモジュールなどを用いてparameterなどの値を設定したい時、追加したいparameterの値がたくさんあると文字列が長くなってコードが見づらくなる。 また、文字列内に変数を格納したいときなどはさらにややこしい書き方になってしまうので、見やすく改行して書く。 ``` import requests access_key = "XXXX" user = "XXX" password = "XXXYYY" keyword
続きを読む

[bash] ファイルの先頭を飛ばす or 後ろを飛ばす

2017年6月20日

ファイルの内容などを読み込むときに、ヘッダーのような項目がかいてあるような行はスクリプトで処理する時に邪魔になるので、 tailコマンドで飛ばします。 ``` # 先頭2行を飛ばす(3行目から表示) $ tail -n +3 hoge.txt # 逆に後ろ2行を飛ばす $ head -n -2 hoge.txt ```
続きを読む

[Python] dictで順番を記憶する

2017年6月7日

Pythonのdictは順番が記憶されないので、forなどで回した時に追加した順では無い時がある。 PythonではOrderedDictを用いると順番が記憶される。通常のdictと同じようにhas_keyなどのメソッドも使用可能 ``` from collections import OrderedDict dict = OrderedDict() dict["hoge"] = 1 ... ```
続きを読む

[Apache] TLSのバージョンによって処理を変更する

2017年6月7日

TLSのバージョンによって、他のページやサイトに遷移させたりする場合は、.htaccessに以下のような設定を記述する。 ``` RewriteEngine On RewriteCond %{SSL:SSL_PROTOCOL} !^TLSv1\.2$ RewriteRule ^(.*) http://google.co.jp [R=301,L] ``` 上の設定では、TLSv1.2以外のバージョンでアクセスされた場合googleにリダイレクトするよ
続きを読む

[Python] pipで任意のディレクトリにライブラリをインストールする

2017年6月2日

Lambdaなどの開発をしていると、開発環境で書いたコードをawsにアップロードする場合があります。 この時外部のライブラリを使いたい場合はそのライブラリ関連ファイルも一緒にアップロードしなければなりません。 pipなどを使ってライブラリをインストールする時は、Lambdaのプロジェクトディレクトリにライブラリをインストールします。 ``` $ pip install requests -t /path/to/lambda_project ``` tオ
続きを読む

[EC2] 仮想化タイプ

2017年5月26日

EC2には2つのか仮想化タイプが存在します。 ### PV (Paravirtual) 準仮想化方式。PV-GRUBという特別なブートローダーを使用して起動される。 ### HVM (Hardware-assisted VM) 完全仮想化。ベアメタルなどと同様に、BIOS->ブートローダー->OSのような感じで起動される。 ### 参考 http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserG
続きを読む

Centosのシステムバックアップを取る

2017年5月24日

Centosのシステムバックアップを取るオープンソース・ソフトウェアとしてMondo Rescueがある( http://www.mondorescue.org/ )。 ``` # repo追加 $ cd /etc/yum.repos.d $ wget http://www.mondorescue.org/ftp/centos/7/x86_64/mondorescue.repo # mondo rescueインストール $ yum install mondo
続きを読む

DataTablesを使用してtableにページングやソート機能を付ける

2017年5月17日

Bootstrapなどでtable要素をいい感じに作れますが、ページングやソート機能、検索機能などをつけようとすると自分で色々といじっていく必要がありますが、[DataTables](https://datatables.net/)を使うとそのような機能を簡単に作ることが出来ます。 使用方法は以下のようにhead内にcssとjsのリンクを追加します。 ``` jQuery(function($
続きを読む

[Python] 設定ファイルを扱う

2017年5月12日

Pythonのスクリプトなどで、アクセスキーやメールアドレス、パスワードなどの変数をスクリプトの直接書き込まずに、設定ファイルとして分離して扱うときにConfigParserモジュールを使用します。 ### 設定ファイルの作成 ``` from ConfigParser import ConfigParser config = ConfigParser() section = 'development' config.add_section(sec
続きを読む

[Apache] suEXECでCGIを実行するユーザを変更する

2017年5月10日

ApacheはCGIを起動する際デフォルトではApacheを起動しているユーザ(rootやapache)で起動します。 しかし、自前CGIなどを起動する場合などは思わぬ挙動を示して他ユーザのファイルを削除してしまったり、セキュリティ的に問題となる場合があります。 その時はsuEXECを使用してCGIを実行するユーザを指定します。 httpd.confに以下を追加することで指定できます。 ``` SuExecUserGroup taro taro ```
続きを読む

[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;" ```
続きを読む