hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

2010-01-01から1年間の記事一覧

Oracleで所有しているテーブルのDDL文を出力するPHPスクリプト

Oracleで自分のユーザーが所有しているテーブルのDDL文を一括で出力するPHPスクリプトを作ってみました。 DDLについてはSQLで取得が可能なので、SQL Plusから出力することも出来るのですが、今回はテーブル毎にファイルを分けたかったので、PHPで実装してみ…

git diffで比較した差分のファイルだけを抽出するスクリプト

HTML等をgitで管理していると、サーバーへのアップロード用のファイルとしてコミットした差分のファイルだけを抽出したい事があります。 「git diff」で差分の表示は出来るのですが、ディレクトリ構造を保持した状態でのファイル抽出みたいな事は出来ないよ…

Perlでディレクトリ内の画像ファイルのピクセル数を調べる

特定のディレクトリの中から特定のピクセル数以上の画像ファイルを抽出&リストアップするperlスクリプトです。 WEBサイト等でドキュメントルート以下の画像サイズを知りたいときや、○○ピクセル以上のサイズの画像を抜き出して画像サイズを変更する場合等に使…

rsyncの簡単な使い方いろいろ

最近rsyncを使う機会があったので、備忘録として書いておきます。 rsyncとは? rsync は、ファイル・ディレクトリのバックアップやミラーリングを行うコマンドである。ミラーリングやバックアップを行うだけなら cp コマンドでも実現可能だが、rsync コマン…

クエリ文字列(URLパラメタ)があるURLでのmod_rewriteの使い方

mod_rewriteを使用してクエリ文字列(URLパラメタ)があるURLを変換してリダイレクトしようとしたときに少しハマリかけたので、備忘録として書いておきます。 今回リダイレクトしたURL 今回は、以下の旧URLから新URLにリダイレクトさせるケースでやってみまし…

diff & patch コマンドでのパッチを適用する方法

diffとpatchコマンドを使うとファイルの変更を別のファイルに簡単に適用することができます。 例えば、サイトでWEBサーバーを複数台で運用していて1台のWEBサーバーに行った設定ファイルの変更を他のサーバーに適用するときなどに使えます。 基本的な作業の…

.htaccessでのPC/携帯サイトの振り分けとアクセス制限

Apacheで.htaccessを使ってPCサイト/携帯サイトの振り分けを行う方法をまとめてみました。 ユーザーエージェントでの振り分け 携帯電話ブラウザからアクセスされた場合、ユーザーエージェントとして「DoCoMo」「KDDI」「SoftBank」などが含まれています。 こ…

よく使う圧縮/解凍コマンドをまとめ(zip,gzip,tar)

圧縮/解凍コマンドって結構使うことが多いのですが、使い方を忘れることが多いので、よく使うコマンドをまとめてみました。 tar.gzで圧縮(tarアーカイブしてgzipで圧縮) tar.gzで圧縮する場合は、「tar」でファイルをまとめた(アーカイブした)ものを、パイプ…

PHPから登録したCLOB型の文字化けについて

以前に、 PHPセッションをDBで管理 - OracleでのAutoIncrement用テーブルを作成編 PHPセッションをDBで管理 - PHPセッション管理のコールバック関数を設定編 というエントリを書きましたが、その時に使用したPHPから「OracleのCLOB型」にデータ登録をした場…

PGPからGPGに公開鍵を移行する

古いサーバーなどの場合、「GPG(GnuPG)」ではなく「PGP」を使用していたりします。 その場合に、鍵自体は変更せずに「PGP」の公開鍵をそのまま「GPG(GnuPG)」に移行するのをやってみました。 ※鍵のセキュリティレベルなどはあまり意識していません。その辺の…

getElementByIdとgetElementsByNameの違い

getElementByIdとgetElementsByNameってよく使い方を間違えます。(私だけかもですが。) ということで、基本中の基本のgetElementByIdとgetElementsByNameの使い方をまとめてみます。 ※「getElementByName」では無く「getElementsByName」だってところがち…

PHPスクリプトの実行時間を制御する(max_execution_time)

php

PHPで処理に時間のかかるスクリプトを実行すると以下のようなエラーメッセージが表示される場合があります。 Fatal error: Maximum execution time of 60 seconds exceeded (日本語訳 -> 致命的な誤り: 超えられていた最大60秒の実行時間) 簡単に言うと、「6…

PHPでファイルをダウンロードさせる方法

php

サイトからファイルをダウンロードさせるには、「

JavaScriptのreplaceの引数としてfunctionを使用する

JavaScriptのreplaceの第2引数には関数(function)を使用することが出来ます。 その簡単な使い方と簡単な説明です。※ずっと前にも一度書いたことがあったのですが、読み返したときに意味不明状態になるような内容だったので、情報を整理して改めて書いていま…

.htaccessでHTTPアクセスをSSLでリダイレクト(逆もアリ)

.htaccessを使って、HTTPでアクセスされたページをSSLでリダイレクトする方法と、SSLでアクセスされたページをHTTPでリダイレクトする方法です。今回は、以下の2パターンで試してみました。 環境変数「HTTPS」を使用する。 環境変数「SERVER_PORT」を使用す…

preg_splitで検索キーワードをスペース分割して配列に入れる方法

php

preg_splitを使用すると、指定した正規表現によって文字列を区切って配列を作ってくれます。 サイト等で入力された検索キーワード等をスペースで区切って検索条件の設定をするのにスゴク便利に使えます。 が、ちょっとだけ落とし穴があったので、備忘録とし…

セッションID発行のハッシュアルゴリズムの設定

php

今更ながら、PHPのセッションIDのハッシュアルゴリズムの変更と、セッションIDに使用する文字種を設定する項目があることを知りました。(PHP5以降のみ) session.hash_functionとsession.hash_bits_per_character 今回設定する項目は、 session.hash_function…

git commitをやり直しする&取り消しする(「get commit --amend」と「git reset」)

git

git commitを実行あとでコミットをやり直したり、コミット自体を取り消す方法です。 直前にしたコミットをやり直す(git commit --amend) 直前にしたコミットをやり直す場合、「git commit --amend」を使用します。例えば、直前のコミットログが以下のよう…

git addでステージングしたファイルをアンステージング(キャンセル)する

git

git add を実行あとで修正していなかった部分に気づいてしまった場合や、 「git add .」で間違って.swpとかのバックアップファイルがステージングに入ってしまった場合に、 git addをキャンセルする方法です。 コマンドの構文 ファイルをキャンセルする場合 …

OracleのMERGEの使い方

OracleでINSERT/UPDATEの処理を書くのってなかなか面倒なので、なにか良い方法は無いかと探してみたらMERGEって方法がありました。 何気に便利だったので、覚え書きとして書いておきます。※MERGEはOracleでしか使えないようです。 MERGEの基本構文 MERGE INT…

Ubuntu10.4でRedmine1.0.1(まとめ直し版)

以前にまとめたUbuntu10.4でRedmineを元に記述間違いや新たな問題が発生したので、新しいエントリとして、情報を整理してまとめ直してみました。以前との違いは Ubuntuはデュアルブートでインストール → 前回は仮想環境(VirtualBox) Redmine1.0.1 → 前回は0.…

PHPでハッシュ配列をJSON形式の文字列に変換する関数

PHPでハッシュ配列をJSON形式の文字列に変換する関数を作ってみました。通常、PHPで配列をJSON形式に変換するには「json_encode」を使用するのですが、この関数は「UTF-8 エンコードされたデータでのみ動作」という制約があるため、SJISの場合などは使用でき…

diff + grep + perlで相違点(差分)だけを抽出する

csvファイルやtsvファイルでデータ作成をする場合、過去に作ったファイルと新しいファイルとの差分だけを抽出したファイルを作成したいことがあります。 ※私の場合、DBに登録するデータをtsvで相手先に2回に分けて送る必要があり、2回目は差分だけのデータを…

PerlでCSVファイルやTSVファイルを列マージする

前回のエントリでは、csvファイルのある列を境にしてのファイル分割をしましたが、 今回は逆に2つに分かれているファイルを1つにマージする処理をPerlで書いてみました。 ※ハッキリ言って、たいした内容じゃないです。前回のエントリ:PerlでCSVファイルやTS…

PerlでCSVファイルやTSVファイルを列で分割する

csvファイルのある列を境にしてファイル分割が必要だったのでPerlで書いてみました。 今回やりたかった事としては、以下のhoge.csvからfoo.csvとbar.csvを生成するというものです。 データサンプル hoge.csv(元ファイル) NAME AGE ADDRESS MAIL TEL Emacs君 …

findで特定のディレクトリを検索対象外(除外)にする

複数ディレクトリをfindで検索する場合、特定のディレクトリを検索対象外にする方法です。 findコマンドの「-prune」と「-o (-or)」オプションの組み合わせで実現することができました。 UNIXの部屋 コマンド検索: find より -prune それ以上ディレクトリを…

findで空のディレクトリを削除する

たくさんあるディレクトリの中からファイルが一つも無いディレクトリ(いわゆる空ディレクトリ)を削除する方法です。 削除する方法としては、findで空ディレクトリを探して、見つかったディレクトリを削除するという方法になります。空ディレクトリの検索はfi…

findとPerlワンライナーで複数ファイルの文字列を一括置換

あるディレクトリ以下のファイルの文字列を一括置換する方法。 find,xargs,perlで一括置換 カレントディレクトリ以下のテキストファイル(*.txt)の文字列"hoge"を"foo"に置き換えする場合。 $ find . -type f -name '*.txt' | xargs perl -i -pe 's/hoge/foo/…

PHPセッションをDBで管理 - OracleでのAutoIncrement用テーブルを作成編

PHPのセッション管理はデフォルトがファイルでの管理になりますが、WEBサーバーを冗長化した時などは各サーバーにセッション用ファイルが格納されてしまうため、途中でセッションが切れてしまうといった問題が発生します。そうならないために、PHPのセッショ…

PHPセッションをDBで管理 - PHPセッション管理のコールバック関数を設定編

前回エントリ PHPセッションをDBで管理 - OracleでのAutoIncrement用テーブルを作成編 の続きです。 前回はOracleでセッション管理用のテーブルを作成するところまで行ないました。 今回は、そのテーブルを使って実際にPHPからセッション管理を行うのをやっ…