作業ノート

様々なまとめ、雑感など

logrotateの設定メモ

仕事で小さなプログラムを書くことになり、その出力ログを管理するために簡単なlogrotateの設定を行った。そのときのメモ。 cat <<'EOT' | sudo tee /etc/logrotate.d/foo > /dev/null /path/to/log/foo.log { missingok monthly rotate 36 compress ifempty…

論理トレーニング101題を読んだ

随分前に購入したが、読む機会ができたので読んだ。 論理トレーニング101題作者: 野矢茂樹出版社/メーカー: 産業図書発売日: 2001/05/15メディア: 単行本(ソフトカバー)購入: 75人 クリック: 1,253回この商品を含むブログ (551件) を見る 本書の例題を通じ…

みんなのPython 第4版を読んだ

みんなのPython 第4版作者: 柴田淳出版社/メーカー: SBクリエイティブ発売日: 2016/12/22メディア: 単行本この商品を含むブログ (1件) を見る ここのところずっとPHPのレガシーなシステムを担当しているのもあって、他の言語を使う機会がない。そこで、久し…

CentOS 6.6にag(the_silver_searcher)の最新版(2.0)をRPMパッケージにして、インストールする

epelでインストールしたagのバージョンが古かったことが気になり、新しいバージョンのパッケージがないか探してみたが見つからなかった。 仕方ないのでソースからインストールするためagのソースを展開したところ、specファイルがあった。それならrpmパッケ…

小さな習慣を読んだ

小さな習慣作者: スティーヴン・ガイズ出版社/メーカー: ダイヤモンド社発売日: 2017/04/28メディア: Kindle版この商品を含むブログを見る 個人的に習慣化したいことがいくつかあって、色々試していたときにたまたま見つけた本。 小さな習慣とは、より良いこ…

CentOS 7.2にGraphvizをインストールする

SchemaSpy6のRC1が出ていたので試そうとしたときのこと。 SchemaSpyではGraphvizを使ってリレーションを図示する。6のRC1で実行するとCentOS7.2のgraphvizのバージョン(2.30)では古い、というワーニングが出たので、本家からrpmパッケージをインストールした…

gitでトピックブランチをマージ中にリモートブランチが更新されたときの対応

git

例えば自分の環境で $ git merge --no-ff feature/add-c トピックブランチをmasterブランチにマージして $ git push error: failed to push some refs to '********' hint: Updates were rejected because the remote contains work that you do hint: not h…

PHPのfor文で、配列の数を評価するときの違いによるベンチマークを取ってみた

PHP

きっかけは仕事でコードレビューをしていたときに、以下のようなfor文をみたこと。 for ($i = 0, $count = count($data); $i < $count; $i++) { // 何らかの処理 } $countはfor文の条件判定でしか使用されていなかったので、そのときは変数を使わずに直接書…

参照整合性制約で参照されるテーブルから、定義したテーブルと制約名を取得するSQL

以下はFOOテーブルのカラムを参照するテーブルと制約名を取得するSQL。 SELECT uc.table_name, uc.constraint_name FROM user_constraints uc JOIN user_constraints ruc ON ruc.owner = uc.r_owner AND ruc.constraint_name = uc.r_constraint_name WHERE u…

Oracleで特定テーブルの参照整合性制約を確認するSQL

今、Symfony2を使用した開発をしている。DBはOracle。 Symfony2のconsoleでORMの設定からSQLを作成することができる。利用しているDBの状況から最新にするために必要なSQLを作成できるので便利。しかし、その作成に時間がかなりかかるため、その調査をした。…

systemdの環境でapacheユーザのumask値を変更する

RHEL6までは/etc/sysconfig/httpdにumaskを書けば、/etc/init.d/httpdを実行することで変更できた。 RHEL7からはデーモンの管理がsystemdに変更になった。 systemdでも/etc/sysconfig/httpdは使用するが、そこで設定できるのは環境変数のみで、umaskを書いて…

RHEL 7.1でOracle 12cのためのfirewalldの設定をする

仕事で、Oracle 12c Enterprise EditionをRHEL7.1にインストールした。 Oracleでは通常、Oracleのリスナーで1521、EM Expressで5500のポートを使用する。 RHEL6のときはiptablesの設定をしていたが、RHEL7からはfirewalldに変更されたので、その設定方法を調…

Oracleのシーケンスの取得値を所定値に変更する

OracleのDBで、シーケンス値を使用するカラムを持つテーブルのデータを移行するときに起きる問題。 Oracleでは、シーケンスとテーブルは別に扱う。このため、テーブルのデータを移行するときには あわせてシーケンスの値も変更しないと、値が重複してしまう…

Oracleユーザの有効期限を変更する

会社の開発環境でOracle 12cのDBを構築し、その確認時に作成したユーザに有効期限がついていた。 意識的にそのような設定をした憶えはなく、期限が過ぎて無効になると困るので、設定の確認と無制限にする対応を行った。以下はその手順。 1. sysdbaでログイン…

コマンドの先頭にバックスラッシュをつける理由

RVMをインストールする機会があり、手順を確認してインストールした。 \curl -sSL https://get.rvm.io | bash -s stable このときcurlの先頭に\がついているのが気になり、付けない場合と何が違うのか調べた。 \つける理由は、shellのエイリアスの影響を受け…

Oracleで「user」という名前のテーブルが作成できなかった

最近、既存システムを刷新することになり、その調査で知ったこと。 Oracleを使用することが決まっていて、プロジェクトの要件、使用するフレームワークなどを確認する過程で、試しにuserという名前のテーブルを作成しようとしたところ、 SQL> create table u…

curlコマンドでHTTPレスポンスのヘッダを確認する

以前クリックジャッキングの対応で、X-Frame-Optionsヘッダを出力するようにhttpdの設定を変更したが、その確認でcurlを使って確認した時の方法。 $ curl -s -D - http://www.example.com -o /dev/null HTTP/1.1 200 OK Accept-Ranges: bytes Cache-Control:…

Vagrantのディスク容量を増やす

開発の過程で、開発用のVagrantのディスク容量が足りなくなったので、増やすことにした。 VirtualBoxのゲストOSのディスク容量を増やすでまとめた方法は、ディスクイメージがVDI形式の場合。VagrantのディスクイメージはVMDKなので、この手順では増やせない…

Pythonでコマンドの実行結果の標準出力を取得する

仕事で個人的に使用するコマンドをPythonで書いてみようと思い、Pythonでコマンドを実行してその標準出力を取得する方法を調べた。 $ cat test.py #!/usr/bin/python def main(): for line in exec_cmd('ls -l'): print line def exec_cmd(cmd): from subpro…

CentOS7.1でNetwork ManagerのCUIを使ってネットワーク設定をする

CentOS6から、Network Managerでネットワークを管理するようになっていたようだが、ずっと/etc/sysconfig/network-scriptsを直接編集して設定していた。 今回、CentOS7.1をインストールする機会があったので、Network ManagerのCUIを使って設定してみること…

bashのヒアドキュメントで、root権限下のディレクトリにスクリプトを作成する

以前、bashのヒアドキュメントを使ったスクリプトの作成で、catを使ったスクリプトの作成方法を紹介した。 [vagrant@localhost ~]$ cat <<'EOT' > test.sh > #!/bin/bash > set -eu > > echo 'test' > > EOT [vagrant@localhost ~]$ ls -l test.sh -rw-rw-r-…

CentOS 7.1にVNC Serverをインストールする

Oracleの環境を構築するために、RHEL7.1にGUIをインストールすることになったが、対象がリモートの環境になるのでVNCを使用する。 以下はRHELで構築することを考慮して、ひとまずCentOSを対象に調査したときのまとめ。 環境 自作したvagrant boxのCentOS 7.1…

bashのヒアドキュメントを使ったスクリプトの作成

仕事で行った作業を社内のwikiなどにまとめるとき、その作業で実行したコマンドを含めてまとめている。 最近ではスクリプトの作成手順を示す際に、catコマンドを使って $ cat <<EOT > foo.sh #!/bin/bash set -eu ... EOT このように表記している。 これはbashのヒ</eot>…

CentOS 6.6 x86_64 minimalのVagrant boxを作る

1年ほど前にCentOS 6.5 x86_64 minimalのVagrant boxを作った。今回はその方法を元にCentOS 6.6 x86_64 minimalのVagrant boxを作る。 前回とは以下の点が違う。 本家のドキュメントに従い、以下の設定を行った。 OSインストール前に、仮想マシンのオーティ…

VirtualBoxのゲストOSのディスク容量を増やす

VirtualBoxの環境下でゲストOSのハードディスク容量を増やす必要があり、その方法をまとめた。 容量を8GBから16GBに増やす。 環境 ホストOSはMac OS X Yosemite 10.10.3で、VirtualBoxのバージョンは4.3.26。ゲストOSの仮想ディスクはVDIで可変ディスク。 ゲ…

git rebaseで、誤って終了したときの対応方法

git

前回のエントリでは、マージコミットが含まれるブランチでrebaseする方法をまとめた。 実はこのとき $ git rebase -i HEAD~~ -iオプションのみ指定して実行して、マージコミットが含まれていないことに気づいたので $ git rebase -i HEAD~~ Successfully reb…

gitでマージコミットが含まれるブランチをrebaseする

git

確認したのは以下のバージョン。 $ git --version git version 1.7.12.4 例えば以下のように、マージコミットを含むブランチのコメントを編集したいとき。 $ git log --graph --pretty=format:'%h -%d %s' --abbrev-commit --date=relative * cd00264 - (HEA…

jQueryを使ったformのリセット処理ではまった

仕事で管理しているシステムで、テキストフォームの値が更新された時にjQeuryを使って自動計算をするようなページがある。 そこには入力値を元に戻す機能もあるのだが、単純にリセットボタンだけでは再計算はされないので、値をリセットして再計算するように…

OracleのSQLでUNIX timeを日付に変換する

UNIX timeをOracle DBに保存している古いシステムがある。 システム改修などで確認のためにSQLを使ってそれを持つデータを取得することがあるのだが、秒数ではわかりにくい。 そこで、SQLでUNIX timeを日付に変換する方法。 select to_date('1970-01-01','YY…

知識ゼロから学ぶソフトウェアテストを読んでみた

知識ゼロから学ぶソフトウェアテスト 【改訂版】作者: 高橋寿一出版社/メーカー: 翔泳社発売日: 2014/01/08メディア: Kindle版この商品を含むブログを見る 継続的デリバリーを読んでいて、各フェーズのテスト方法とその内容を理解しつつも、テストに関して少…