2012年7月24日火曜日

PHP のアップロードファイル容量制限変更

お暑うございます。熱中症対策でこまめに水分補給しましょう。ってアルコール類は水分補給にならないですよ。

またまた、自分用のメモ。
php ではアップロードファイルの容量が制限されています。この制限を解除するには php.ini を修正します。
CentOS では /etc/php.ini に存在します。これを vi エディタなりお好きなエディタで下記の箇所を探して修正。
  • upload_max_filesize
  • post_max_size
  • memory_limit
修正が終わったら Apache を再起動して完了です。 CentOS では下記コマンドで再起動。
/etc/init.d/httpd restart

2012年7月23日月曜日

Oracle 置換変数 & を無効にする

今回も自分用のメモです。
業務で使っている bat ファイルの処理で、データファイルから SQL の INSERT 分を生成し ORACLE に更新をかけていました。
あるとき、更新がいつまで待っても終わらない事件発生。ログを確認すると、"~に値を入力してください: "とメッセージが表示され入力待ちで停止していた。
なぜ入力待ちに?

原因は INSERT SQL に & 文字が入っていたため。データファイル内に & があり、生成された SQL にも入り込んでいる。
この & は Oracle では置換変数。
解決方法は下記の3とおり。

  • 置換変数を無効にする
  • 置換変数の文字を他の文字に割り当てる
  • エスケープ文字を設定し、置換変数と認識させない


今回は置換変数を無効にするコマンドで対応しました。INSERT SQL 実行時に下記コマンドを先行して処理します。
SET DEFINE OFF

参考サイト
SET DEFINE - オラクル・Oracle SQL*Plus リファレンス
SET ESCAPE - オラクル・Oracle SQL*Plus リファレンス

2012年7月21日土曜日

iPhone 移行計画停滞中

Hang Up and Drive
iPhone 移行計画の現状報告です。停滞しております。

田舎だからか、 WiMAX の通信速度が遅いのです。速度的には 3G 回線に毛が生えたぐらいのものです。 WiMAX と 050 plus で電話機能を持たせていいものか、ためらっています。
とは言え、現在使っている iPhone 3GS のバッテリの持ちがだいぶ悪くなってきたし、ホームボタンもダブルクリックを何度も試さないと反応しない始末。そろそろ寿命か。
Apple には早めに新しい iPhone と iPod touch を発表してもらいたいなあ。それ次第で気持ちが後押しされそうなんだけど……

2012年7月18日水曜日

CentOS Linux に NAS をマウント

仕事で使うサーバは、可能な限り Linux を使うようにして、バックアップは crontab を使って夜間に自動実行しています。
バックアップ先を TeraStation とか LinkStation などの NAS にして、コマンドで接続切断しているのですが、よくどうやるんだったけ?と忘れてる事が多いので、自分のためのメモとして記載します。
#!/bin/sh
# マウント
mount -o username=ユーザ,password=パスワード //192.168.100.123/Backup/CentOSServer /mnt/NAS
# ここでバックアップを実行する

# アンマウント
umount /mnt/NAS

mount, unmount コマンドについては下記がわかりやすい。
ITpro【 mount 】 ファイル・システムをマウントする
ITpro【 umount 】 ファイル・システムをアンマウントする

梅雨は明けたようです。セミの声も聞こえてきて、いよいよ夏ですね。

2012年7月13日金曜日

ruby でエクセルファイル書き出し

Ruby を職場で着々と活躍させていますよ。
今回は Ruby で、テキストファイルからエクセルファイルを作成しました。エクセルファイルは Office 2007 以降の xlsx 形式ではなくて、これまでもこれからもの xls 形式です。

エクセルを扱うため spreadsheet をインストールします。下記コマンドを実行してインストール。

gem install spreadsheet

これでRuby からエクセルファイルを操作できます。
テキストファイルの項目は、カンマ "," で区切られているものとします。それなら CSV ファイルで良いじゃないか!とか言わないでください。うちの職場のちょっとした事情なんです。

# encoding: Shift_JIS

=begin
処理概要
テキストファイルからエクセルファイルに変換します。
全てが文字として扱われます。

引数について
引数1:入力ファイル
引数2:出力ファイル
引数3:出力シート名
=end

require 'date'
require 'rubygems'
require 'spreadsheet'

print Time.now, " 処理開始\n"

inFile      = ARGV[0]   # 入力ファイル
outFile     = ARGV[1]   # 出力ファイル
sheetName   = ARGV[2]   # 出力シート名

Spreadsheet.client_encoding = 'Shift_JIS'
workbook = Spreadsheet::Workbook.new
worksheet = workbook.create_worksheet(:name=>sheetName) # シート名
fr = open(inFile)                                       # 入力ファイルオープン
i = 0
while line = fr.gets do                                 # 入力ファイルを1行ずつ読込
    ary = line.split(",")                               # カンマで切り分け
    j = 0
    for data in ary
        worksheet[i, j] = data                          # 1セルずつデータをセット
        j += 1
    end
    i += 1
end
workbook.write(outFile + (Time.now.strftime "%Y%m%d") + '.xls')   # ファイル名

print Time.now, " 処理終了\n"

うむうむ、 Ruby は学びやすいですね。学習コストが低そうです。

2012年7月11日水曜日

050 plus 契約


先日計画した iPhone 移行計画 は順調に進んでいます。 WiMAX Try の機器を借りている間に、 050Plus が使えるか試しました。

050 plus とは
  • iPhone、 iPod Touch、 iPad または Android で利用可能な NTT Communications 提供のサービス
  • 月額基本料315円で、050から始まる電話番号を手に入れられる。
  • 通話料はアプリ同士なら無料、固定電話へは3分8.4円。携帯電話には1分16.8円。
  • 公式サイトはこちら

通話音質の確認

契約前にどのようなものか、簡単な確認ができます。
  1. iTunes から無料アプリ 050 plus をダウンロード。
  2. アプリの設定からテストコールを選択し、発信するをタップ。
  3. 050 plus テストコールサービスに繋がり、発信音の後に10秒間メッセージをいれられます。10秒後そのメッセージが帰ってくるのでだいたいの音質がわかります。
050 plus と契約

通話音質で問題なかったので、 050 plus に申し込みました。手順は下記のとおり。
  1. iPhone のブラウザから 050 plus のサイトにアクセス。(PC からはアクセスできない、スマートフォン用のページです)
  2. "お申込みはこちら"が表示されるのでタップ。
  3. このあとは利用規約に同意するなど、ページの指示通りに進めていけば契約が完了します。取得する電話番号は下4桁を指定するか、幾つかの候補の中から選択して取得します。良い番号はすでにないようですので、妥協して適当な番号を選びます。
  4. お客様情報として自身の氏名、住所、メールアドレス、パスワードなどを登録します。この時携帯電話番号が必要です。
  5. 数値4桁の確認コードを入力し、確認コールを待ちます。
  6. 4.で入力した携帯番号に自動音声の電話がかかってきて、5.の確認コードを入れます。
  7. 確認コードが確認されたら数分後にメールで契約完了のお知らせが届きます。このメールに取得した電話番号も載っています。
  8. 050 plus アプリを起動し、設定 > 050 plusの初期設定 をタップ。 050番号とパスワードを入力し、初期設定開始をタップ。これで 050 plus を利用できます。
050 plus の欠点

まだ少ししか触っていないのですが、いくつか不便だなと思うことがありました。
  • アプリを起動していないと着信されません。バックグラウンドで起動していないと、かけた相手には「おかけになった電話番号は現在〜」のメッセージが流れて繋がりません。
  • アプリを起動中に機内モードにすると、 WiFI をオンにしても使用できなくなります。WiFI で使用ができないのではなくて、通信回線の切り替えが上手くできないようです。アプリを一度落として起動しなおすと使えます。あまり機内モードにはしませんが、気をつけたいところ。

2012年7月10日火曜日

ruby でテキストファイルのバッチ処理

Ruby でバッチ処理する雛形を作成したので、メモとして載せます。おかしいところとか、こうした方が良いよ。というのがありましたら、コメントにでも書き込んでいただけると助かります。

私の作業では何らかのファイルを読んで抽出とか編集、マッチングなどをして、出力ファイル作成となる処理がほとんどです。雛形はファイルを1行ずつ読んで、1行ずつ出力して終わりのシンプルなものです。。
ファイルをまとめて読んで、処理してからまとめて出力なんて事もできますが、うちの環境では少なくて数万行、多くて数千万行のファイルを扱うので、まとめて処理するのは現実できでありません。1行ずつ処理していきますよ。

# encoding: Shift_JIS

print Time.now, " 処理開始\n"

=begin
ファイルオープン時の入力モード
r   : 読込み専用モード
r+  : 読込み/書き込み用
w   : 書き込み専用(ファイルが無ければ作成し、存在すればファイルをクリア。)
w+  : 読込み/書き込み用(その他は"w"と同様)
a   : 追加書きモード(ファイルが無ければファイルを作成する。)
a+  : 読込み/追加書きモード(ファイルが無ければファイルを作成する。)
    : 何も指定しなければ、"r"の読込み専用モード
=end

fr = open("read.txt")       # 入力ファイルオープン
fw = open("write.txt", "w") # 出力ファイルオープン
while line = fr.gets do     # 入力ファイルを1行ずつ読込
    
                            # 編集等何らかの処理
    
    fw.write(line)          # 出力ファイル書込
end
fr.close                    # 入力ファイルクローズ
fw.close                    # 出力ファイルクローズ

print Time.now, " 処理終了\n"

ruby のコードは読みやすい気がします。

2012年7月9日月曜日

Windows で Ruby


最近 Mac でゲームでも作ってみたいな。と自分の能力で言えば、だいそれた野望を持ちました。ウェブアプリとかバッチプログラムは仕事でさわることもありますが、 GUI 系のローカルアプリというものはほとんど手を出したことがなく、どこから手を付ければいいのかわからない状況です。

作成に使用する言語からしてどれがいいのかよくわからないのですが、とりあえず MacRuby でやろうと考えています。とは言え、 Ruby もたいして使ったことがないのでそこからの学習。ドットインストールの Rubyの基礎は終えました(笑)。
仕事のバッチ処理を Ruby で置き換えながら言語をマスターしようと考えたので、 Windows で Ruby が使えるように開発環境を設定しました。メモとして残します。以下が手順です。


Windows Ruby 環境構築手順
  1. RubyInstaller for Windows (http://rubyinstaller.org/) から最新の Ruby Installer をダウンロード。現時点では Ruby 1.9.3-p194 が最新。
  2. インストール先を指定して、パスや拡張子の関連付けなどチェックボックスにはすべてチェックを入れてインストール。
  3. Ruby パッケージ管理システムの Gem が使えるように、同じRubyInstaller for Windows から DEVELOPMENT KIT をダウンロード。現在の最新版は DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe 。
  4. 先ほどの Ruby をインストールしたフォルダ内に devkit 等の適当に名前をつけてフォルダを作成し、ダウンロードしたファイルを実行してその中に解凍する。
  5. 解答したフォルダ(先ほどの例で言えば devkit)の場所で下記のDOSコマンドを実行。
  6. ruby dk.rb init
    
  7. Initialization complete! ほにゃららと表示されれば完了。作成された config.yml をテキストファイルで開き、Ruby 実行環境のパスが入っていれば大丈夫。
ゲームを作成できたら公開したいと思っていますが、随分先の話です……ライフワークとして晩年に公開を目指します。

2012年7月4日水曜日

iPhone 移行計画

7月ですが梅雨が開けず、雨の日が多いですね。
晴耕雨読で、私は最近図書館で本を借りて読んでいます。いい本に巡り会えたときはうれしいものです。


さて、話は変わります。
秋ぐらいには新しい iPhone が出ると噂もチラホラ。 iPhone 3GS ユーザの私もそろそろ乗り換えようと思います。 iPod touch に。


以前、iPod 電話化計画で検討をしましたが、気は熟した。
いや、しびれが切れた。行動に移ります。


私が立てた計画は以下のようなものです。
  1. iPhone SIM カードなしで使用可能か?
    iPod touch の新製品が出て購入するまで、 iPhone を解約して SIM なしで使います。 SIM なしでも WIFI 環境で使えるのか確認します。
  2. Try WiMAX 試用
    WiMAX を使って町中でも通話したいので、最低限よく行く場所で WiMAX が使えるか確認します。確認が終われば返品。Try WiMAXで試しますよ。
  3. Broad WiMAX 契約
    WiMAX が問題なく使えたなら、 数ある WiMAX プロバイダの中で最も月額料金の安い Broad WiMAXに申し込みます。今はキャンペーンでルータは無料みたいです。
    契約事務手数料 3,150円
    初期費用 19,800円
    月額使用料 2,999円
  4. 050 Plus 契約
    WiMAX 環境でも電話として使えるよう、050 Plus アプリを使います。アプリ自体は無料です。
    月額基本料 315円
    通話料 固定 8.4円/3分 、携帯 16.8円/分
  5. 電話番号、メールアドレス変更の通知
    知人に変更を通知します。また色々なサービスに携帯のメールとか登録しているので、それらも変更作業が必要です。これが一番面倒かも。
  6. iPhone 解約
    私は Softbank で使っているので、そちらで解約を申し込みます。スムーズに解約できるかな?
以上が iPhone を WiMAX 環境下の 050 電話で使うシナリオです。 iPod Touch をいずれ購入して iPhone ともおさらばとなります。
今のところ、1. iPhone SIM カードなしで使用可能か? で、 SIM を挿さなくても使えることを確認しました。また 2. Try WiMAX 試用 もつい先程申し込みました。近々試用ルータが届くでしょう。

また報告します。