2009年10月28日

Unix Timeの変換

Unix Timeをエクセルで変換する。
参考サイト:http://okwave.jp/qa3394853.html

■ Unix Time から 通常の日付時刻へ変換
= [UnixTime]/86400 + 25569 (UTC)
= ( [UnixTime] + 32400)/86400 + 25569 (日本標準時)

■ 通常の日付時刻から Unix Timeへ変換
= ( [UTC] - 25569) * 86400
= ( [日本標準時] - 25569) * 86400 - 32400

セルの書式は "yyyy/mm/dd(aaa) hh:mm:ss" にしておく。




タグ:UNIX time
posted by まきすけ at 10:19 | Comment(0) | TrackBack(0) | Linuxとか

2009年08月05日

Oracle JDeveloper 11g 起動時のエラー

環境:WindowsXP Pro

Oracle JDeveloper 11g をインストールしてみた。
目的は PL/SQLのデバッグ。

インストール後、起動しようとすると「Unable to create instance of the Java Virtual Machine Located at path: ...」とダイアログが出て起動しない。

JAVA VMのメモリ指定の問題らしい。

これを回避するため、[JDEV_HOME]\jdeveloper\ide\bin\ide.confの設定を変更する。

#AddVMOption -Xmx512M コメントアウト
AddVMOption -Xmx256M

2005年のときと同じだ…。

JBuilderが起動しない場合の対処

# JDeveloperのタブが8文字になっているのを修正できない…。
# みんな8文字でやっているのか、それともタブを使っていないのか?

posted by まきすけ at 15:06 | Comment(0) | TrackBack(0) | Linuxとか

2009年07月21日

Oracle 10gのスケジューラ

環境:Windows 2003 Server / Oracle 10g R2

オラクル10gのスケジューラ(DBMS_SCHEDULERパッケージ)をWindows上で使う場合(Batファイルをキックする場合)の注意事項。

■ ジョブスケジューラサービスを起動しておく。
OracleJobScheduler[SID]というサービスを起動しておきます。
起動しておかないとこんなエラーが出ます。

ORA-27370: ジョブ・スレーブは、タイプEXECUTABLEのジョブの起動に失敗しました
ORA-27300: OSシステム依存操作:accessing execution agentがステータス:2で失敗しました。
ORA-27301: OS障害が発生しました。メッセージ: 指定されたファイルが見つかりません。
ORA-27302: 障害が発生しました。場所: xxxxxxx
ORA-27303: 追加情報: 指定されたファイルが見つかりません。


■ batファイルはoracleユーザー(ORA_DBAグループ)に実行権限をつけておく。
基本ですね。

■ batファイルを実行する際は、CMD.exeを呼び出す
cmd.exeもフルパスじゃないといけません。
/q /c オプションも付ける必要があります。

c:\windows\system32\cmd.exe /q /c "d:\hoge\hage.bat"


■ 設定の際はOEMを使わない

OEMは腐ってますから、コマンド(DBMS_SCHEDULERパッケージ)で設定しましょう。


タグ:Oracle 10g Windows
posted by まきすけ at 20:33 | Comment(0) | TrackBack(0) | Linuxとか

2009年07月09日

Batメモ

環境:Windows系 bat処理

■ バッチファイルがあるディレクトリへ移動する。
CD /D %~dp0

参考リンク:強火で進め

■ Windows環境変数に本日の日付、時刻をセットする。
REM ##### 日付をセット #####
SET YMD=%DATE:~-10,4%%DATE:~-5,2%%DATE:~-2,2%

REM ##### テンポラリ変数に時刻をセット #####
SET TMPTIME=%TIME: =0%
REM ##### テンポラリ変数から時刻を取得 #####
SET HHMISS=%TMPTIME:~0,2%%TMPTIME:~3,2%%TMPTIME:~6,2%

echo %YMD% %HHMISS%

結果:20090709 093921

参考リンク:バッチ・ファイル中で日付をファイル名に使用する@IT

■ ダイアルアップネットワークへ接続
REM ##### RAS接続開始 #####
RASDIAL [ダイアルアップネットワーク接続名] [USER名] [パスワード]

REM ##### RAS接続エラーの場合は終了 #####
IF ERRORLEVEL 1 GOTO err

REM ##### RAS接続中の処理 #####
hogehoge...

REM ##### RAS切断 #####
RASDIAL /DISCONNECT

GOTO end

REM ##### エラー処理 #####
:err
echo RAS接続エラー

REM ##### 終了 #####
:end
echo RAS接続終了

[ダイアルアップネットワーク接続名]は コントロールパネル>ネットワーク接続 の中にあるダイアルアップ接続名のこと。

IDとパスワードがバッチファイル上に記載されてしまうのが難点。
別バッチに変数としてセットして呼び出すようにすればソースベタ書きは避けられるが…結局バレバレだしな...。

参考リンク:Microsoft TechNet(英語)

タグ:Windows BAT
posted by まきすけ at 09:41 | Comment(0) | TrackBack(0) | Linuxとか

2009年02月13日

Tomcat4.x→6.0でJSPエラー

Tomcat4.x + JDK1.4で動いていたアプリケーションを一気にTomcat6.0.18 + JDK1.5へアップグレードしたら一部のJSPでエラーが出たので対処法をメモ。

<環境>
OS:Linux(RHEL4)
Tomcat6.0.18
JDK1.5.0_17

エラーメッセージ
HTTPステータス 500 -

説明 The server encountered an internal error () that prevented it from fulfilling this request.

例外

org.apache.jasper.JasperException: /hogehoge.jsp(98,68)
Attribute value request.getParameter("PARAMNAME") is quoted
with " which must be escaped when used within the value

<対処方法>
その1.CATALINA_OPTSに以下の設定を加える(JSPの修正は必要なし)
-Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false

その2.JSPタグの部分をダブルクォートでエスケープする
http://www.nabble.com/TC-5.5.27-upgrade-JSP-tag-attribute-quoting-td19986031.html より引用
We have a few places where JSP tag attribute values have Java code that
itself contains double quotes, such as:

<tt:mytag value="<%=("field"+i)%>"/>
or
<tt:mytag value="<%=bean.get("name")%>"/>


今回は移行するプログラム全体を修正する時間が足りなかったので、1の方法で対応した。

具体的にはTomcat起動スクリプト(/etc/init.d/tomcat)の中にあるCATALINA_OPTSのexport文に1の設定を加えた。

また、eclipse上で開発する際にこの設定を反映する必要がある。
Sysdeo Eclipse Tomcat Launcher pluginを使っている場合は、

1.ウインドウ>設定>Tomcat>JVM設定 を開く。
2.JVMパラメーターへ追加 の横にある「追加」ボタンを押す。
3.オプションを入力し、OKを押して閉じる

参考リンク:
azlab 開発Memo

タグ:Tomcat
posted by まきすけ at 16:08 | Comment(0) | TrackBack(0) | Linuxとか

2009年02月04日

mailコマンド

コマンドラインからテストメールなどを送る際のメモ
$ echo hoge | mail -s "test" "root@localhost" -- -f "user@localhost"

mail -s "サブジェクト" "宛先アドレス" -- -f "送信元アドレス"

参考リンク:init9の日記
posted by まきすけ at 19:50 | Comment(0) | TrackBack(0) | Linuxとか

2008年12月09日

Aptana Studio 1.2でRuby

WindowsXP
Aptana Studio 1.2(http://www.aptana.com/
Ruby 1.8.6(mswin32)
RubyGems 1.3.1 (http://rubyforge.org/frs/?group_id=126)
OpenSSL 0.9.8(http://www.openssl.org/related/binaries.html
Zlib 1.2.3(http://www.zlib.net/

Aptana Studioをインストールした後にRubyの設定というのは順番が逆ですが…まあメモ。

■ インストール前の状況

Aptanaをインストールして、Aptana起動後のMy Aptana画面にある「Plugins」から「RadRails」をインストール。
この時点で間違ってますw

■ Rubyインストール

Ruby-mswin32版をダウンロード、解凍し、C:\rubyなどに配置。
(配置したDirを$Ruby_HOMEと書きます)

マイコンピュータ>プロパティ>詳細設定>環境変数 から$Ruby_HOME\binへのPATHを加える。

コマンドプロンプトから「ruby -v」と打ち込んで、パスが通っているか確認。
C:> ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]


■ Gemsインストール
GemsはPerlでいうCPANとかPHPでいうPEARみたいなもの。

http://rubyforge.org/frs/?group_id=126 からrubygems-1.3.1.zipをダウンロード、解凍(どこでもいい)

コマンドプロンプトで解凍したディレクトリへ移動し、下記コマンドを実行する
# ruby setup.rb
ずらずら〜〜〜っとインストールのログが出る。
gemのバージョンを確認する。
C:> gem -v
1.3.1


■ zlibインストール
http://www.zlib.net/からバイナリ(zlib-1.2.3-bin.zip)をダウンロード。

解凍し、binフォルダにある「zlib1.dll」を$Ruby_HOME\binへコピー。

zlib1.dll を zlib.dllに名前変更する。

■ Aptana Studioの設定

ウィンドウ>設定 を開く
Ruby>インストール済みのインタープリターを開く
追加ボタンを押し「Ruby VMホーム・ディレクトリー」の横にある参照ボタンを押す。
Rubyをインストールしたディレクトリ($Ruby_HOME)を参照すると、自動的に読み込んでくれるので「OK」を押す。
Ruby>インストール済みのインタープリターの画面に戻ったら、追加したインタープリターを選択(チェック)してOKを押す。

文字ばっかりでわかりずらいかもです。
posted by まきすけ at 22:19 | Comment(0) | TrackBack(0) | Linuxとか

Aptana Studio日本語化とか

【環境】
Windows XP
Aptana Studio 1.2(http://www.aptana.com
Pleiades(http://mergedoc.sourceforge.jp/

Ruby on RailsとかPHPとかAjaxとかできるというAptana Studioをインストールしてみました。メインの目的はPHP。

メニューは全て英語なので、これを日本語化する手順をメモ。

参考リンク:あいしん >> Aptana Studio 1.1の日本語化

参考リンク先は1.1ですが1.2でも同じ手順でできます。

Pleiades(http://mergedoc.sourceforge.jp/)をダウンロードする。今回のモノはpleiades_1.2.3.zip

ダウンロードしたzipを解凍。READMEを読む。

解凍したフォルダに「features」と「plugins」があるので、これらの中身をそれぞれ$APTANA_HOME\Aptana Studio\以下にある「features」と「plugins」にコピーする。

$APTANA_HOME\Aptana Studio\AptanaStudio.iniを編集する。
具体的には、下記1行を追加。
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar


起動すると日本語化される…ハズ。

READMEはよく読みましょう。
posted by まきすけ at 21:23 | Comment(0) | TrackBack(0) | Linuxとか

2008年09月27日

パスワード認証を設定しOracle DBをシャットダウン後、接続できなくなる

環境:Windows2003 Server + Oracle10gR2(10.2.0.4)

パスワード認証を設定、リモートからOracleに接続しDBをシャットダウン後、startupをすると
ORA-12505: TNS: リスナーは接続記述子で指定されたSIDを現在認識していません
と言われた。

さてさて、DBのローカルOSからsqlplusで接続しようとすると今度は
ERROR:
ORA-12514: TNS:
リスナーは接続記述子でリクエストされたサービスを現在認識していません
と言われる。

どうやらListenerの動的サービス登録ではなく、静的サービス登録を使わなければならないらしい(OEMを使う場合も静的サービス登録が必要)
具体的にはlistener.oraにSID_LIST_LISTENERパラメータを追加する。
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = server.domain.com)(PORT = 1521))
)
)

SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME = SID)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(GLOBAL_DBNAME = db_name.db_domain)
)
)
※(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))という記載は削除している。

翔泳社 オラクルマスター教科書 Silver Oracle Database 10g【DBA10g】編P90より
プロトコル「IPC」、キー「EXTPROC」とあるリスナーアドレスは、「外部プロシージャ」で使用されます。外部プロシージャは、PL/SQLストアドプログラムがC言語で作成された共有オブジェクトをコールする場合に使用されるプログラムです。


参考サイト:
Archive Redo Blog [Oracle] OEMでインスタンスを再起動するとORA-12514エラーが発生

タグ:Oracle 10g
posted by まきすけ at 22:20 | Comment(0) | TrackBack(0) | Linuxとか

2008年09月26日

PDO + Oracle

環境:
DBサーバ:Windows 2003 Server + Oracle10gR2
Client:WindowsXP + PHP5.2.6

Oracleの文字コード:SJIS
Clientの文字コード:NLS_LANG=Japanese_Japan.AL32UTF8

SJISでデータを格納しているOracleに対して、NLS_LANGをAL32UTF8とした環境からPDOで接続して処理を行ったところ、下記のWarningが表示された。
Warning: PDOStatement::fetch(): column 7 data was too large for buffer and was truncated to fit it in hoge.php on line 999

「データがバッファサイズを超えたので切り捨てましたよ」ということらしい。
NUMBER(16,0)という大きめの数値データを扱っていたのでこれの桁を切られたのかな?と思って出力を確認したところ、文字列が切り捨てられていた。

SJIS->全角2バイト、UTF8->全角3バイト、というところに原因があるようで、Oracle(SJIS)側でVARCHAR2(10)となっているカラムに全角5文字(10バイト)が入っていると、Clientで受け取る際は15バイトとなる。
PDO側ではOracleのカラムサイズだけを見てバッファを用意しているらしく、バッファが10バイトしか用意されないため「バッファ容量を超えた」という判断をするらしい。

結論としてはOracle側でVARCHAR2(10)となっているカラムを1.5倍し、VARCHAR2(15)とすることで回避することができた。
今回は変更しても問題ないテーブルだったけど、なんだかな…。

タグ:PHP PDO UTF8 Oracle
posted by まきすけ at 14:58 | Comment(0) | TrackBack(0) | Linuxとか

2008年09月19日

PHP + TCPDF + FPDI + FPDI_Template

環境:WindowsXP + PHP(5.2.6) + TCPDF(4.0.025) + FPDI(1.2.1) + FPDI_TPL(1.1.2)

FPDIのページを見たら「TCPDFにも対応したよ!」と書いてあったのでついでに試してみる。

FPDIのページから最新バージョンをダウンロード。
・FPDI 1.2.1
・FPDI_TPL 1.1.2

解凍したら全てのファイルを1つのフォルダにまとめて、PHPのincludeの下に配置する。
例)
phpをインストールしたフォルダ
└ includes
 └ fpdi ←このフォルダに全部入れる。
  ├ decodersフォルダ
  ├ fpdi2tcpdf_bridge.php
  ├ fpdi.php
  ├ fpdi_pdf_parser.php
  ├ pdf_context.php
  ├ pdf_parser.php
  ├ wrapper_functions.php
  └ fpdf_tpl.php

php.iniのinclude_pathにincludes/fpdiを追加。
(Windowsの例)
include_path = ".;c:/php/includes;c:/php/pear;c:/php/includes/fpdi"
続いて、簡単なテストをしてみます。

posted by まきすけ at 20:58 | Comment(0) | TrackBack(0) | Linuxとか

2008年09月17日

PHP + TCPDF

環境:WindowsXP + PHP(5.2.6) + TCPDF(4.0.025)

なんでこんなにPDFばっかやってんだか…。

Ruby + Prawn でのPDF出力がイマイチうまくいかなかったのでPHPでのPDF出力に変更。自分のRubyスキルと英文読解スキルが低いのが原因かと思うが…。

PHPでのPDF出力は以前FPDF+FPDIでやっていたので同じのを使おうかと思ったが、FPDFの後継でTCPDFができたよーんというので使ってみることにした。

参考リンク:
TCPDF
TCPDF Documentation
TCPDF Examples
IPAフォント

インストール

PHPが動く環境があることを前提に。
1.TCPDFをダウンロード、解凍する。
2.適当なフォルダに配置する。

私はバッチで使うつもりなので「適当なフォルダ」としましたが、Webで使う場合はWebから参照できるフォルダに配置(通常はそうだよね)

Webで使う場合は、以下のように変更
・フォルダ全体のアクセス権をWebサーバーのサービスを起動するユーザー/グループに付与する。
・TCPDFフォルダには読み取り専用アクセス権とする(chmod -R 644)
・cache、imagesフォルダは書き込み可能とする(chmod -R 666)

原文:
Post Installation

Once the installation is completed you must:

* Change the files' owner/group so they can be executed by the webserver.
* set as read-only the entire TCPDF folder (chmod -R 644 in POSIX systems);
* properly set the write permissions for the following folders where TCPDF will have to write (chmod -R 666 in POSIX systems):
o cache
o images
* point your browser to one of the example files to chek if it's all OK (i.e. http://www.yoursite.com/tcpdf/example/example_001.php)

フォントの用意

日本語フォントを用意します。今回はIPAのフリーフォントを使用。

TCPDFを解凍したフォルダの中の /fonts/utils に変換EXE(ttf2ufm.exe)があるのでこれを使ってフォントを変換。
DOS窓から
ttf2ufm.exe -a -F ipamp.ttf
ダーーーッとメッセージが出ます。WarningとかErrorっぽいのも出ますが無視。

次に同じフォルダにある makefont.php を実行
php -q makefont.php ipamp.ttf ipamp.ufm
※phpへのPATHを通しておいてくださいね。
実行すると、3つファイルができます。
・ipamp.z
・ipamp.ctg.z
・ipamp.php
※.ctg.zのファイルは原文を読む限り無い場合もあるらしい(if available と書いてある)
3つのファイルをTCPDFのfontsフォルダにコピーして終了。

以上でサンプルをいくつか動かして確認する。

WindowsXPでphp.iniの内部エンコーディングをSJIS、PHP実行ソースもSJISにて実行したところ日本語は文字化けした(TCPDFのデフォルト文字コードがUTF-8なので)
回避策としては
・環境はSJISで実行用PHPのソースをUTF-8N(BOMなし)にする(姑息な技)
・環境はSJISで日本語をmb_convert_encodingでUTF-8にする(これが正当かね〜)
・環境ごとUTF-8にする(既に他のプログラムが動いていたりすると…う〜ん)
・TCPDFのconfigを書き換える(原文読むのがメンドイ)

私はmb_convert_encodingにしときます。

続き:PHP + TCPDF + FPDI + FPDI_Template

タグ:TCPDF php5
posted by まきすけ at 19:25 | Comment(0) | TrackBack(0) | Linuxとか

PHP5 + PHP_PDO_OCI8 のエラー

環境:windowsXP + PHP5(5.2.6) + Oracle10g Client(10.2)

windowsXPにPHP5をインストールしてOracleへ接続できるように設定していたところ、下記エラーが発生。
なお、Apacheはインストールしておらず、コマンドプロンプトからOracleへの接続をテストした。
PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'php_pdo_oci8.dll' in Unknown on line 0

bugs.php.netに該当のPOSTを発見。

結論、Oracle8i/Oracle9i Clientを使う場合は php_pdo_oci8.dll を使い、Oracle10g Client(もしくはそれ以上)の場合は php_pdo_oci.dll を使えばよいとのこと。

[28 Jun 2007 4:44am UTC] alison dot holloway at oracle dot com

My suggestion is to change the installer so that the following occurs.

Under PDO extensions, have two options for the Oracle PDO drivers:

1. Oracle8i/Oracle9i Client
This installs php_pdo_oci8.dll

2. Oracle10g Client and above
This installs php_pdo_oci.dll

The PDO library is based on the Oracle Client, not the Oracle Database,
so I think it's important to state that in the install notes in the
right hand pane when selecting the option.

Each option should be mutually exclusive. So you can't install both.
This will cause problems.

The current two installs seem to do the same thing, install the
php_pdo_oci8.dll and php_pdo_oci.dll files. It doesn't make sense.

As for the errors that are currently happening, I haven't done any
further investigation, but I'd suggest getting the install right now,
then fixing the dll loading issues.
続きを読む

タグ:Oracle php5 Windows
posted by まきすけ at 16:57 | Comment(0) | TrackBack(1) | Linuxとか

2008年09月16日

VBA + oo4o de Oracle

ExcelVBAからオラクルへ接続してストアドプロシージャを実行するサンプル。

oo4oで接続して、通常のSQLを発行できる人向け。

お世話になったサイト:
SAK Streets VB oo4o + SQL 応用編8 oo4o ストアドファンクション - PL/SQL ブロック
@634 oo4o - ストアドプログラムの利用

Oracle側にテスト用ストアドを作成。
CREATE OR REPLACE PROCEDURE HOGE.OO4OTEST(
P_YMD IN VARCHAR2
, P_OUT OUT VARCHAR2
)
IS
BEGIN
SELECT TO_CHAR(TO_DATE(P_YMD || '01', 'YYYYMMDD') - 1,'YYYYMMDD') INTO P_OUT FROM DUAL;
END;

VBA側ではセッションオブジェクト・データソースオブジェクトのCreateまではいつものお約束どおり。
ストアドで受け渡しに使うパラメータを以下のようにセットする。
OraDB.Parameters.Add "バインド変数名", "初期値", IN/OUTパラメータ
OraDB.Parameters("バインド変数名").ServerType = 型
IN/OUTパラメータは ORAPARM_INPUT/ORAPARM_OUTPUT/ORAPARM_BOTH
型は ORATYPE_VARCHAR2/ORATYPE_NUMBER など。
バインド変数の値を変更する場合は
OraDB.Parameters("バインド変数名").Value = "値"


VBA側のソース
Option Explicit

Private OraSess As Object
Private OraDB As Object
Private username As String
Private passwd As String
Private dbname As String

'=====================================
' 準備
'=====================================
Private Const ORADB_DEFAULT = &H0
Private Const ORAPARM_INPUT = 1
Private Const ORAPARM_OUTPUT = 2
Private Const ORAPARM_BOTH = 3
Private Const ORATYPE_VARCHAR2 = 1
Private Const ORATYPE_NUMBER = 2
Private Const ORATYPE_SINT = 3
Private Const ORATYPE_FLOAT = 4
Private Const ORATYPE_STRING = 5
Private Const ORATYPE_VARCHAR = 9
Private Const ORATYPE_DATE = 12
Private Const ORATYPE_UINT = 68
Private Const ORATYPE_CHAR = 96
Private Const ORATYPE_CHARZ = 97
Private Const ORATYPE_CURSOR = 102

'=====================================
' メイン処理
'=====================================
Sub main()
On Error GoTo Err_Han

dbname = "TNSNAME" '//tnsnames.oraのTNS名
username = "HOGE"
passwd = "HOGEHOGE"
'// オラクルオブジェクトが無い場合は接続する
If OraDB Is Nothing Then
Call Conn
End If
'// コネクションOKの場合、ストアド呼び出し
If OraDB.ConnectionOK = False Then
Call Conn
End If
'// データ取得メイン処理を呼び出す
CallOraProcedure
'// 終了処理
Call Terminate
'// 処理終了
Exit Sub

Err_Han:
' エラー処理
MsgBox (Err.Description)
'// 終了処理
Call Terminate
End Sub

'=====================================
' データベース接続処理
'=====================================
Private Sub Conn()
'// セッションオブジェクトの生成
Set OraSess = CreateObject("OracleInProcServer.XOraSession")
If Err <> 0 Then
MsgBox "データベースに接続出来ません。" & Chr(10) _
& "CreateObject - Oracle oo4o エラー"
End
End If
'// oo4oデータベースオブジェクトの生成
Set OraDB = OraSess.OpenDatabase(dbname, username & "/" & passwd, ORADB_DEFAULT)
If Err <> 0 Then
MsgBox "データベースに接続出来ません。" & Chr(10) _
& Err & ": " & Error
End
End If
End Sub

'=====================================
'データ取得メイン処理
'=====================================
Private Sub CallOraProcedure()
' 変数定義
Dim ret As String '//MsgBox用
' IN パラメータの設定
OraDB.Parameters.Add "par_in", "200404", ORAPARM_INPUT
OraDB.Parameters("par_in").ServerType = ORATYPE_VARCHAR2
' OUTパラメータの設定
OraDB.Parameters.Add "par_out", "", ORAPARM_OUTPUT
OraDB.Parameters("par_out").ServerType = ORATYPE_VARCHAR2
' 実行
OraDB.ExecuteSQL ("begin oo4otest(:par_in, :par_out); end;")
If Err.Description <> "" Then
MsgBox Err.Description, vbOKOnly + vbExclamation, "エラー"
Exit Sub
Else
ret = MsgBox(OraDB.Parameters("par_out").Value, vbOKOnly, "結果")
End If
End Sub

'=====================================
' データベース切断処理
'=====================================
Private Sub Terminate()

If Not OraDB Is Nothing Then
Call OraDB.Close
Set OraDB = Nothing
End If

Set OraSess = Nothing

End Sub


タグ:VBA EXCEL oo4o
posted by まきすけ at 17:30 | Comment(0) | TrackBack(0) | Linuxとか

EclipseにAptanaをインストールする際のエラー

RubyのIDEを試してみようと思い、EclipseにAptanaをインストールしたらエラーが発生。
Graphical Modeling Framework Runtime (1.0.0.v20060627-1200) 
必須: フィーチャー"org.eclipse.emf.ocl (1.0.0)"、または互換。

こちらのポストを読んで対処したら正常にインストールできた。
以下引用。
Eclipseの「ヘルプ→ソフトウェア更新→製品構成」にて、「Graphical Modeling Framework Runtime 〜」と「Graphical Modeling Framework Runtime Language Pack 〜」を非活性にしました。
posted by まきすけ at 15:10 | Comment(0) | TrackBack(0) | Linuxとか

Virtual PC 2007 + CentOS5.2 de Oracle 10g

WindowsXPにVirtual PC 2007をインストールして、CentOS5.2をブチ込んでOracle10gも動かしてしまおうという無理な(無駄な)企画。

1.Virtual PC 2007をダウンロードしてインストール。

 あまり難しくないので割愛。

2.Microsoft LoopBack Adapterをインストール。

 なぜLoopBack Adapterを入れるかというと、Oracleは固定IP推奨のため。
 なので、ご自宅が固定IP使えるという人は入れなくてOK。うちはマンションタイプのDHCPなので入れました。

ホストOS(XP)… LoopBack Adapter 192.168.0.1/255.255.255.0
ゲストOS(CentOS)… LoopBack Adapter 192.168.0.2/255.255.255.0

参考リンク:Microsoft Loopback Adapterをインストールする

参考リンクより引用:
Microsoft Windows XP で Microsoft Loopback Adapter をインストールするには

1. [コントロール パネル] を開き、[ハードウェアの追加] をダブルクリックし、[次へ] をクリックします。
2. [はい、ハードウェアを接続しています] を選択し、[次へ] をクリックします。
3. [インストールされているハードウェア] 一覧から、[新しいハードウェア デバイスの追加] を選択し、[次へ] をクリックします。
4. [一覧から選択したハードウェアをインストールする (詳細)] を選択し、[次へ] をクリックします。
5. [共通ハードウェアの種類] 一覧から、[ネットワーク アダプタ] を選択し、[次へ] をクリックします。
6. [製造元] 一覧から、[Microsoft] を選択します。
7. [ネットワーク アダプタ] 一覧から、[Microsoft Loopback Adapter] を選択し、[次へ] をクリックします。
8. [次へ] をクリックし、[完了] をクリックします。


インストールすると、自分のPC(ホストOS)に新しいネットワークカードが認識されます。「マイ ネットワーク」を右クリック→「プロパティ」を開くと「ローカルエリア接続n Microsoft Loopback Adapter」(nは数字)があるのでまた右クリック→「プロパティ」

TCP/IPを選択して「プロパティ」を押す。
loopback01.gif

IPアドレスを固定にする。
設定したら「OK」を押して閉じる。
loopback02.gif


3.CentOSをインストール

 まずVirtual PCから「新規」を押してバーチャルマシンウィザードを立ち上げる。
 オペレーティングシステムは「その他」を選択し、RAMは512以上にする。
 ウィザードが終わったら、バーチャルマシンを閉じた状態で「設定」を開いて、ネットワークアダプタ数を「2」とし、片方をMicrosoft Loopback Adapterとする。

vm_network.gif

 Virtual PCを起動し、メニューの「CD」→「ISOイメージのキャプチャ」からインストールディスクを選択してリセットするとインストーラーが起動する。

 CentOS5.2の詳細なインストール手順は下記リンクを参照。
松のページ VirtualPC - CentOS -

 普通にグラフィカルインストーラを起動すると画面がぐちゃぐちゃになってしまうので、インストーラーの選択画面にて「boot:」に続けて以下のように入力して起動する。
linux vesa i8042.noloop psmouse.proto=imps clock=pit

 ほぼデフォルトでインストールを進めて問題ないが、Office系、グラフィック系のパッケージとか必要ないものは入れなかった。

・インストール後に起動オプションを修正
/boot/grub/memu.lst にインストール時に設定した起動オプションを追加する。
 kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet (実際には改行なし)
vesa i8042.noloop clock=pit


インストール後の問題点

・起動後に時刻が9時間ズレている
これはVirtual PCの問題らしい。以下松のページ VirtualPC - CentOS -より引用
Virtual PC 2007 上のCentOS 5.2で時刻が9時間進んで表示される場合
 VirtualPC上のゲストOSで時刻が9時間進んで表示される場合があります。これは、VirtualPCのホストOSとゲストOSで時刻の同期処理が行われるためです。この場合、VirtualPCの .vmc ファイルを編集することで修正することができます。

 CentOS5.2.vmcの中で、<integration> <microsoft> というタグを探します。
 その中に以下のように記述を追加します。
 
  <components>
<host_time_sync>
<enabled type="boolean">false</enabled>
</host_time_sync>
</components>

実際の.vmcファイル(抜粋)
  <integration>
<microsoft><mouse>
<allow type="boolean">true</allow>
</mouse><video>
<user_selected>
<depth type="integer">16</depth>
<height type="integer">480</height>
<width type="integer">640</width>
</user_selected>
</video>
<components>
<host_time_sync>
<enabled type="boolean">false</enabled>
</host_time_sync>
</components>  
</microsoft>
</integration>

・画面が800x600より大きくならない
 これはかなりハマッた。VirtualPC 2004のFAQはかなり見つかるが、2007の「コレ!」という情報がほとんど無かった。
 VirtualPC2007は、S3 Trio32/64のグラフィックボードをエミュレートしている(情報元)、ということで /etc/X11/xorg.conf を編集。
Section "Device"
Identifier "Videocard0"
Driver "s3"
EndSection
 編集後にrunlevelを3にして、X-windowの再起動をすぐできるようにしておく。X-windowを再起動して、システム>管理>ディスプレイを開く。
centosDisplay01.gif

 ハードウェアとモニター設定をする。
centosDisplay02.gif
centosDisplay03.gif

 次に、システム>設定>画面の解像度 を開く。
centosDisplay04.gif

ここで1024x768が選択できるようになっていればOK。
centosDisplay05.gif

4.Oracle10gのインストール


続きはまた今度。
・Oracleに必要なパッケージのチェック
rpm -q binutils \
compat-gcc-34-c++ \
compat-gcc-34 \
compat-libstdc++-33 \
compat-libstdc++-296 \
control-center \
gcc \
gcc-c++ \
gdbm \
glibc \
glibc-common \
glibc-devel \
libaio \
libgcc \
libgnome \
libstdc++-devel \
libXp \
make \
sysstat \
util-linux \
compat-db \
libgomp

・環境変数 LANG
Oracle Universal Installerが文字化けするので、環境変数LANGを設定する。
export LANG=C

参考リンク:
Oracle Database 10g インストール
Oracle 10g R2 (10.2.0.1.0) on Fedora Core Linux 2, 3 and 4
powerdee.com Oracle 10g のインストール
Oracle10gR2 インストレーションガイド EL5編




posted by まきすけ at 01:15 | Comment(0) | TrackBack(0) | Linuxとか

2008年09月13日

Ruby de Pdf

PDFをバッチで作成しなくちゃならんっつーことで。

以前PHP+FPDFで処理したが、FPDFがちょっと古めかしいとか環境がWindowsということもあってRuby+Prawnでできないかお試し。

Prawn
Prawn Document

参考リンク:
InfoQ RubyのPDF生成、Prawnを使って簡単かつきれいに
# s21g :: satoko's blog Rails:prawn & prawntoで日本語のPDF生成
Prawnのサンプルソース(英語)
とろ庵 印刷用単位の変換表(prawnはポイント指定なので…)


■ RubyとPrawnのインストール

Windowsには既にRuby(ActiveScriptRuby 1.8.5)が入っていたのでPrawnをGemsでインストールする。
# ActiveScriptRubyにはGemsが入っています。

Dos窓から
> gem install Prawn

これでインストール完了。

■ フォントのインストール

TTFフォントならOKらしいがMSゴシックはNGだったので、IPAのフリーフォントを落とした。

一般利用者向けIPAフォントのダウンロード

■ テストソースを作成(UTF-8Nで作成した)
begin
require 'rubygems'
rescue LoadError
end
require 'prawn'

Prawn::Document.generate(
"test.pdf" ,
:page_size => "A4" ,
:left_margin => 0
) do
font('C:\WINDOWS\Fonts\ipamp.ttf')
font_size(72) do
text "橋"
end
end

旧字体の「高」を使ってみたが正常。
 続きを読む

タグ:ruby Prawn PDF
posted by まきすけ at 03:13 | Comment(0) | TrackBack(0) | Linuxとか

2008年08月07日

2008年08月05日

【Excel VBA】全角カナを半角カナにするFunction

全角カナを半角カナに変換するお仕事があったのでメモ。
全角の漢字やひらがなはそのままで、なぜかカタカナだけ半角にしろという。いまどき半角カナってねぇ〜。21世紀ですぜ、ダンナ。

Excel VBAで全角カナを半角カナにするファンクションです。
str = ZenKana2HanKana(str) で変換できます。

ミソは長音(ー)が共通のコードなので、1文字前がカナだったら半角に変換するようにしています。

VBAなんて久々でこれでいいのか不安ですが、まぁ、動いてます(w

ソースそのままなので半角カナが入ってますが…スイマセン。


'//=========================================
'// ZenKana2HanKana
'//-----------------------------------------
'// 全角カナを半角カナにして返す
'//=========================================
Private Function ZenKana2HanKana(pStr As String) As String
Dim i As Integer
Dim str1 As String
Dim preStrKanaFlg As Boolean
ZenKana2HanKana = ""
'// 1文字前の文字がカナかどうか判断するフラグ
'// ー(長音)を判断するために使う
preStrKanaFlg = False
'// 文字列数ぶんだけ繰り返す
For i = 1 To Len(pStr)
str1 = Mid(pStr, i, 1)
'// ア〜ミ(0x8340〜0x837E)
'// ム〜ワ(0x8380〜0x838F)
'// ヰヱ(0x8390、0x8391)これは変換できないのでイエにする
'// ヲン(0x8392、0x8393)
'// ヴヵヶ(0x8394〜0x8396)ヵヶは変換しても全角なのでカケにする
'// 0x837Fは未定義文字となっている
'// 理由は「0x837f」でググれ
'// Shift-JISの文字では 2byteの文字の中で
'// 2byteめが 0x7F となる文字は定義されていません。
If ChkZenKana(str1) Then
'// 通常以外のカナの場合は特別に処理する
Select Case str1
Case "ヰ"
ZenKana2HanKana = ZenKana2HanKana & "イ"
Case "ヱ"
ZenKana2HanKana = ZenKana2HanKana & "エ"
Case "ヵ"
ZenKana2HanKana = ZenKana2HanKana & "カ"
Case "ヶ"
ZenKana2HanKana = ZenKana2HanKana & "ケ"
Case Else
ZenKana2HanKana = ZenKana2HanKana & StrConv(str1, vbNarrow)
End Select
'// 1文字前カナフラグを立てる
preStrKanaFlg = True
Else
'//1文字前がカナ、かつ"ー"(長音)の場合はカナの長音として判断
If str1 = "ー" And preStrKanaFlg = True Then
ZenKana2HanKana = ZenKana2HanKana & "ー"
Else
ZenKana2HanKana = ZenKana2HanKana & str1
End If
'// 1文字前カナフラグを消す
preStrKanaFlg = False
End If
Next
End Function
 
 
'//=========================================
'// ChkZenKana
'//-----------------------------------------
'// 文字列中に1文字でも全角カナがあればTrueを返す
'//=========================================
Private Function ChkZenKana(pStr As String) As Boolean
Dim i As Integer
Dim str1 As String
ChkZenKana = False
For i = 1 To Len(pStr)
str1 = Mid(pStr, i, 1)
'// ア〜ミ(0x8340〜0x837E)
'// ム〜ワ(0x8380〜0x838F)
'// ヰヱ(0x8390、0x8391)
'// ヲン(0x8392、0x8393)
'// ヴヵヶ(0x8394〜0x8396)
'// 0x837Fは未定義文字となっている
'// 理由は「0x837f」でググれ
'// Shift-JISの文字では 2byteの文字の中で
'// 2byteめが 0x7F となる文字は定義されていません。
If (&H8340 <= Asc(str1) And Asc(str1) <= &H8396) _
And Asc(str1) <> &H837F Then
ChkZenKana = True
Exit Function
End If
Next
End Function


タグ:VBA EXCEL
posted by まきすけ at 23:25 | Comment(0) | TrackBack(2) | Linuxとか

2008年03月12日

Excelシートの並びを入れ替えるスクリプト

エクセルのワークシートの並び順を反対にするスクリプト。
ファイルを指定(book.xlsの部分)すれば、対象のブックとは別のブックにマクロを記述してもOK

Sub hoge()
For i = 1 To ActiveWorkbook.Sheets.Count
Workbooks("book.xls").Sheets(1).Move after := _
ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count - i + 1)
Next
End Sub



posted by まきすけ at 18:34 | Comment(0) | TrackBack(0) | Linuxとか