作業ノート

様々なまとめ、雑感など

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版この商品を含むブログを見る 継続的デリバリーを読んでいて、各フェーズのテスト方法とその内容を理解しつつも、テストに関して少…

gitで最後に付けられたタグを確認する

git

git describeコマンドを使って、対象のブランチの最新のタグ名を確認できる。 例えば # 0.リポジトリ作成 $ git init # 1.ファイルを1つ追加 $ touch tag01.txt $ git commit -m 'add' [master (root-commit) aede06b] add 1 file changed, 0 insertions(+),…

bashスクリプトでコマンドオプションを解析する

このエントリーの最後でリンクしている各ページの内容を元に、コマンドオプションを解析するサンプルスクリプトを書いた。主に自分用のツールを自作するときに参考にするために書いた。 以下が実行した結果。今のところ、これだけ対応できれば十分。 $ ./get…

Macのシステム環境設定からhostsファイルが編集できるplugin

Mac

VagrantでローカルIPを割り当てた仮想マシンに対して名前をつけるためにhostsを編集するが、都度ターミナルから編集するのはちょっと面倒。 ということで探してみたら、システム環境設定でhostsが編集できるpluginを見つけた。 specialunderwear/Hosts.prefp…

include_recipeで指定したcookbookがエラーになる

現象 今、Vagrant上でjenkinsを試している。今回jenkinsのインストールのためにopenjdkとjenkinsのcookbookを自作した。 openjdkでは、attributesで # site-cookbooks/openjdk/attributes/default.rb default['openjdk']['version'] = "1.7.0" バージョンを…

AuthorのメールアドレスをGitHub用のアドレスに変更する

GitHubにpushするとき、Authorのメールアドレスにどのメールドレスを設定しようかと悩んで少し調べたところ、 GitHubのアカウント用のメールアドレスが利用できることを知ったので、その方法をまとめた。 1. GitHubの設定 まずは、GitHubの設定。 1.1. GitHu…

Silexを試してみた(7) - その他と雑感

最後に今回試したSilexに関するその他のまとめと雑感について。 今回試さなかったこと Controller Providers index.phpに、簡単にRouteが定義できるとはいえ、その数が多くなるとそれらをまとめて管理したくなると思う。そういうときに使えそうなのがControl…

Silexを試してみた(6) - Doctrine DBAL

Doctrine DBALを使ったDBへのアクセスについて。 Doctrine DBALのインストール slim版にMonologは含まれていないので、composerを使ってインストールする。 composer.jsonを { "require": { "silex/silex": "~1.1", "twig/twig": ">=1.8,<2.0-dev", "symfony…

Silexを試してみた(5) - Logging

SilexのMonologServiceProviderを使ってログを出力する。 Monologのインストール slim版にMonologは含まれていないので、composerを使ってインストールする。 composer.jsonを { "require": { "silex/silex": "~1.1", "twig/twig": ">=1.8,<2.0-dev", "symfo…

Silexを試してみた(4) - Twig

SilexのTwigServiceProviderを使ってTwigを利用する。 Twigのインストール slim版にはTwig自体が含まれていないので、composerを使ってTwigをインストールする。 composer.jsonを { "require": { "silex/silex": "~1.1", "twig/twig": ">=1.8,<2.0-dev" } } …

Silexを試してみた(3) - URLを生成する

UrlGeneratorServiceProvider Silexが提供するUrlGeneratorServiceProviderを使うとURLが生成できる。 Service ProviderとはSilex Applicationで再利用することを目的とした機能のこと。 Service Providerの登録 Silex\Applicationのregisterメソッドで登録…

Silexを試してみた(2) - 基本的なこと

基本 require_once __DIR__.'/../vendor/autoload.php'; $app = new Silex\Application(); ... $app->run(); Silex\Applicationクラスのインスタンスを作成し、そのインスタンスで 挙動を設定し、runメソッドでリクエストの処理を行う。 インスタンスはPimpl…

Silexを試してみた(1) - きっかけとインストール

きっかけ 仕事で、既存のシステムの拡張でOAuth2を使った認証とAPIの提供をするかもしれない、という話が出たので、個人的にOAuth2の調査を始めた。 そのシステムはphpで作られていたので、ひとまずphpで利用できるOAuth2のライブラリを調べる。 そこで、bsh…

Subversionのリポジトリからgitリポジトリに移行する

会社で管理していたリポジトリをsvnからgitに移行したときの方法。 1.コミッターのリストを作成する 移行対象のsvnリポジトリをローカルにチェックアウト(svn checkout)している状態で、そのルートディレクトリ下で $ svn log ^/ --xml | perl -ne 'print if…

Chef実践入門を読んだ

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)作者: 吉羽龍太郎,安藤祐介,伊藤直也,菅井祐太朗,並河祐貴出版社/メーカー: 技術評論社発売日: 2014/05/22メディア: 単行本(ソフトカバー)この商品を含むブログ (7件) を見る 本書を読…

pecl-uuidを使ってUUIDを生成しようとしたがSegmentation faultで失敗した

PHP

CentOS 6.5で、phpを使ってUUIDを生成するためにLes RPM de Remiのpecl-uuidをインストール。 $ sudo yum install php-pecl-uuid そして、確認のために $ cat uuid.php

PHPのバージョン情報をレスポンスヘッダに含めないようにする

PHPを使ったページのレスポンスヘッダで X-Powered-By:PHP/5.4.32 のように、X-Powered-ByにPHPのバージョンが含まれてしまう。それを止める方法。 php.iniに expose_php = Off を設定し、apacheを再起動する。 参考 PHPのX-Powered-Byヘッダを送らないよう…

gitで最初のコミットを取り消す

git

最初のコミットをキャンセルしたいと思い、git resetコマンドを使用したが $ git reset HEAD~ fatal: ambiguous argument 'HEAD~': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] </revision></command>…

gitでリモートリポジトリで削除されたブランチをローカルでも削除する

git

GitHubを使っているプロジェクトで、あるタイミングでpullしたときに取得したトピックブランチが削除されてしまい、一方でローカルにはまだある、というときの対応。 以下のコマンドで差があるブランチを確認。 $ git remote prune --dry-run origin 削除さ…

homebrewを使って、Rictyフォントをインストールする

$ brew tap sanemat/font $ brew install ricty を実行。インストール完了時に表示される指示に従って、 $ cp -f /usr/local/Cellar/ricty/3.2.3/share/fonts/Ricty*.ttf ~/Library/Fonts/ $ fc-cache -vf を実行する。 brew tapは、githubにあるformula rep…

CentOS 6.5 x86_64 minimalのVagrant boxを作ってみた

(2015/05/11追記) 下記の方法を元にCentOS 6.6のVagrant boxの作成方法を、別エントリーにまとめた。 CentOS 6.6 x86_64 minimalのVagrant boxを作る - 作業ノート 少し前に、 実践 Vagrantを読み終えた。書籍の感想は別のブログに書いたが、ここではVagrant…

macのメニューバーから、chromeの通知メニューを消す

いつのまにか(というか勝手に?)macのメニューバーにGoogle Chromeの通知メニューが出ていたので、それを非表示にする設定を調べて、変更した。 Google Chromeを起動する。 Location Barに chrome://flags を入力したリターンキーを押し、設定画面を開く。 …

Knack

Knack (輸入版:北米版)出版社/メーカー: Sony Computer Entertainment(World)発売日: 2013/11/15メディア: Video Gameこの商品を含むブログを見る PS4の同梱版でクリアまでプレイ。 PS4のベンチマークソフトのような感じで、PS4でできることが体感できる。グ…

対象のパーミッションを調べる

bashスクリプトで、対象が期待したパーミッションであるか確認するときに使った方法。 $ stat -c %a /path/to/target -cオプションは出力内容フォーマット指定で、%aは、パーミッションを8進数で表現する。 スクリプトでは、 perm=`stat -c %a /path/to/targ…

git logでマージしたファイルを確認する

git

ベースとなるブランチからサブブランチを作成し、それをno-ffでマージしたときに困ること。 普段、一つの機能を実装するときにサブブランチを作成する。そこから、サブ機能や変更点をファイル単位に切り分けて考え、その単位で実装、テストを行い、少しずつ…

実践Vim

実践Vimを読んだ。元々この手の本はほとんど読まないけど、コア機能を中心に説明していると知って興味を持ったので、読んでみた。 以下は、今回読んで新しく知ったことや気づいたことについて。 normalコマンド(TIP30) ‘<,’>normal . で、ビジュアルモードで…