2014年10月16日木曜日

CentOS6 でSubversion サーバを構築

ネット接続可能なCentOS 上に、Subversion サーバを構築します。
CentOS 側のNetwork 構成は、ブリッジ接続で固定IP を割り振りました。

以下、リファレンス的に記載していますので、流れを追ってやりたい方は、↓などを参照してみてください。
http://park1.wakwak.com/~ima/centos4_subversion0001.html

インストール系のコマンド集
$su
Password:
# yum install subversion
...
# yum install mod_dav_svn
...
# yum install httpd
...


いろいろ迷ったときに利用したコマンド集
service network restart
chown -R apache:apache /home/svn/repos/
chmod -R u+rw /home/svn/repos/
chcon -R -h -t httpd_sys_content_t /home/svn/repos
/etc/rc.d/init.d/httpd start
/sbin/service httpd reload
/etc/rc.d/init.d/httpd start
/etc/init.d/iptables restart
chkconfig --list httpd
chkconfig httpd on
chkconfig


vi で編集したファイルのコマンド集
vi /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/resolv.conf
vi /etc/httpd/conf.d/subversion.conf
vi /etc/httpd/conf/httpd.conf
vi /etc/sysconfig/iptables


/etc/sysconfig/network-scripts/ifcfg-eth0 の記載。
# 伏せ字使ってます。
DEVICE="eth0"
#BOOTPROTO="dhcp"
BOOTPROTO=none
IPV6INIT="no"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="07c8cac6-7c72-433e-a8c7-434023d6cb23"
IPADDR=xxx.xxx.xxx.86
#IPADDR=192.168.83.2
GATEWAY=xxx.xxx.xxx.1
#GATEWAY=192.168.83.1
NETMASK=255.255.255.0
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
NAME="System eth0"
HWADDR=00:0C:29:5B:BD:C1
DNS1=xxx.xxx.xxx.104
LAST_CONNECT=1413278137


iptables の記載。重要なのは11行目のPORT 80 を開放しているところ。
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT


/etc/httpd/conf.d/subversion.conf の記載
認証機能を利用したい場合は、以下のコメントアウト(#)を外して下さい。
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
<Location /svn>
   DAV svn
   SVNParentPath /home/svn/repos
#   AuthType Basic
#   AuthName "Subversion Auth"
#   AuthUserFile /home/svn/svn_passwd
#   Require valid-user
</Location>
コメントアウトを外した後、/home/svn/svn_passwd にパスワードファイルを作成しますが、詳細な手順は上記のサイト等を参照してください。

2014年9月22日月曜日

Windows Server 2012 で、.NET Flamework 3.5 をインストール

Server Manager > Manage > Add Roles and Features を選択


今回は、以下をチェックして、インストールを実施します。
Installation Type: Role-based or feature-based installation
Server Selection : インストールしたサーバを選択
Server Roles     : 何もチェックしない
Features         : .NET Flamework 3.5 Features を選択





これで、インストールを開始して、以下のエラーが出た場合の原因は、インターネットに接続できていないことが多いと思いますので、プロキシとかの確認をしてみてください。


接続確認してみて、まだこのエラーが続く場合は、
Control Panel > System and Security > Windows Update

で、Check for updates を選択してみてください。これで、チェックが正しくできていれば接続に問題はありません。
接続に問題なければ、Windows Update をした後に、.NET Flamework のインストールを実施してください。

以上を試してもインストールができない場合、OS をMount する際に利用したISO ファイルを用意して、 以下のURL に記載していることを試してください。

http://thepracticalsysadmin.com/net-framework-3-5-source-files-could-not-be-found/

log4j でWindows Event Log を書く

まず、↓から、log4j をダウンロードします。

http://logging.apache.org/log4j/2.x/download.html

適当なところに解凍します。
以下のディレクトリに、Jar ファイルがあるので、それを自分のJava プロジェクトのlib フォルダ辺りに配置してください。

また、同様に以下のディレクトリに、NTEventLogAppender (※1) というクラスを利用するためのdll ファイルがあるので、
それもlib フォルダ辺りに配置してください。
Eclipse で実行時、Debug Configuration > VM arguments で、以下を指定してください。
-Djava.library.path=<dll を配置したところのパス>

次に、log4j.properties ファイルを作成します。

後は、LoggingEvent (※2)クラスを適当に作ってあげて、NTEventLogAppender クラスのappend メソッドの引数に与えて上げる。
また、LoggingEvent クラスのコンストラクタの引数は、ある程度正しい値(例えば、timestamp であったら、現在時刻のlong 値、など)を入れてあげないと、Windows Event Log に正しく登録できない。 以下に、1例を示す。
LoggingEvent event = new LoggingEvent( null, logger, level, message, null );
NTEventLogAppender appender = new NTEventLogAppender( "ServiceName", new PatternLayout( "%m%n" ) );
this.appender.append( event );

これで、Windows Event Log が書き込みできたので、CTRL+R > eventvwr で、EventLog を確認できます。
以下に、利用したlog4j.properties ファイルを添付する。
# Logger Root
log4j.rootLogger=INFO,stdout,debuglog
# Logger OperationLog
log4j.logger.operation=DEBUG
# Appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%5p][%d{MM/dd/yyyy HH:mm:ss:SSS}] %m (%c) %n
# Debug
log4j.appender.debuglog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debuglog.encoding=UTF-8
log4j.appender.debuglog.layout=org.apache.log4j.PatternLayout
log4j.appender.debuglog.layout.ConversionPattern=%p,%d{MM/dd/yyyy HH:mm:ss:SSS},%c,%m,%n
log4j.appender.debuglog.File=logs/debug.log
log4j.appender.debuglog.DatePattern='.'yyyyMMdd


※1 https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/nt/NTEventLogAppender.html
※2 https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/spi/LoggingEvent.html

2014年9月11日木曜日

Axis2 のWSDL2Java でサーバサイドコードを自動生成

Axis2 のバイナリ版をダウンロード&解凍。(以下、Cドライブ直下に解凍するものとする。)


解凍したフォルダに、環境変数を通す。

AXIS2_HOME=C:\axis2-1.6.2

適当なフォルダ(ここでは、C:\workspace )を作り、その中にwsdl ファイル、xsd ファイル、services.xml等の必要なリソースファイルを置く。

コマンドプロンプトを開いて、以下のコマンドを実行。

%AXIS2_HOME%/bin/WSDL2Java -uri file:///C:/workspace/xxxx.wsdl -s -ss -sd -ssi


今回は、出力フォルダ指定のオプションを指定していないので、ユーザディレクトリの以下のフォルダにソースコードが自動生成される。
C:\Users\<UserName>\src

ちなみに、Axis2 が自動生成するときに利用するリソースファイルは、以下の所に移動されていた。
C:\Users\<UserName>\resources

2014年8月29日金曜日

共有フォルダに別アカウントとしてアクセス

具体的に書くと、

今、Aでログインしているが、共有フォルダは、Bでないとログインできません、という状況。

このとき、Bでログインしたいけど、フォルダにアクセスすると、以下のダイアログが出て失敗。
#ここでは、AのいるOS をWindows7 の話を記載しています。


これを解決するために、Aのアカウントを利用せず、Bでログインするようにコマンドプロンプトで指定してやる。

具体的なコマンドは、以下の通り。
net use

これを実行すると、以下のように、自分の接続状況がわかります。

以下、<アクセス先> と記載されている所は、上図のリモート名(白く塗りつぶされている箇所)、というカラムの文字列をコピペしてください。
net use <アクセス先> /user:username password

もし、1度でも、アクセスしたいフォルダにアクセスして失敗した場合、既存の接続を以下のようにして切断してから、上記を実施してください。
net use /delete <アクセス先>

または、以下ですべての記憶している通信履歴を強制的に削除。
net use * /delete /Yes <アクセス先>

参照ページ:
http://d.hatena.ne.jp/milkaz/20121126/1353904868

2014年8月20日水曜日

Mac にJad を入れてみた

基本的には、こちらのサイトを参照させて頂きました。
http://kijitoraneko.hatenablog.com/entry/20100629/1277817170

1つだけ違うのは、ファイルの関連付けのところ。
新しいEclipse には、以下の*.class without source があるので、
これにJad を関連付けておく。


2014年8月15日金曜日

Mac でSubversive 入れてみた

Help > Install New Software.. > Work with で、Luna のrelease サイト(下図の一番下のサイト)を開きます。


SVN でフィルタリングすると、Subversive が出力されるので、ここからOptional がついていない、以下2つを選択してインストールします。

上記の2Plugin のインストールが完了すると、Eclipse の再起動を促されますので、再起動します。
再起動後、以下の画面がでるので、SVN Kit 1.8.5 にチェックを入れ、再度Plugin のインストール > Eclipse の再起動をします。



完了したら、以下のウィンドウに+のアイコンを押してSubversive が使えるようになることを確認できます。



2014年8月12日火曜日

PC の状態を、コマンドプロンプトを利用して保管する

色々なPC情報の一覧をC直下にファイル出力しているだけです。

レジストリ一覧は、以下の通り

reg query HKEY_CLASSES_ROOT /s > C:\HKEY_CLASSES_ROOT.txt
reg query HKEY_CURRENT_USER /s > C:\HKEY_CURRENT_USER.txt
reg query HKEY_LOCAL_MACHINE /s > C:\HKEY_LOCAL_MACHINE.txt
reg query HKEY_USERS /s > C:\HKEY_USERS.txt
reg query HKEY_CURRENT_CONFIG /s > C:\HKEY_CURRENT_CONFIG.txt

特定のディレクトリ、ファイルすべての一覧は、特定のディレクトリに移動して、以下の通り

dir /b /a /s > directory.txt

ポート一覧は、以下の通り

netstat -a > C:\netstat-a.txt
netstat -n > C:\netstat-n.txt
netstat -r > C:\netstat-r.txt
netstat -e > C:\netstat-e.txt
netstat -s > C:\netstat-s.txt

プロセスは、以下の通り

tasklist > C:\process.txt

サービスも取りたい場合は、以下の通り

tasklist /svc > C:\processWithService.txt

2014年8月6日水曜日

Dropbox と、Google-code-prettify を使って、ブログにコードを書く

[ 2017/07/26 ]
以下の手順ではもうprettyprint できなくなっているため、以下のリンクを参照。
google blog にprettyprint を適用する

[ 手順1 ]
https://code.google.com/p/google-code-prettify/downloads/list
より、「prettify-small-X-XXX-20XX.tar.bz2」をダウンロード。(XXはバージョンとか日付とか)

[ 手順2 ]
手順1でダウンロードしたファイルを解凍して、prettify.css ファイルの40 - 47 行目を以下のようにコメントアウトする。

[ prettify.css ]
/* Pretty printing styles. Used with prettify.js. */
 
/* SPAN elements with the classes below are added by prettyprint. */
.pln { color: #000 }  /* plain text */
 
@media screen {
  .str { color: #080 }  /* string content */
  .kwd { color: #008 }  /* a keyword */
  .com { color: #800 }  /* a comment */
  .typ { color: #606 }  /* a type name */
  .lit { color: #066 }  /* a literal value */
  /* punctuation, lisp open bracket, lisp close bracket */
  .pun, .opn, .clo { color: #660 }
  .tag { color: #008 }  /* a markup tag name */
  .atn { color: #606 }  /* a markup attribute name */
  .atv { color: #080 }  /* a markup attribute value */
  .dec, .var { color: #606 }  /* a declaration; a variable name */
  .fun { color: red }  /* a function name */
}
 
/* Use higher contrast and text-weight for printable form. */
@media print, projection {
  .str { color: #060 }
  .kwd { color: #006; font-weight: bold }
  .com { color: #600; font-style: italic }
  .typ { color: #404; font-weight: bold }
  .lit { color: #044 }
  .pun, .opn, .clo { color: #440 }
  .tag { color: #006; font-weight: bold }
  .atn { color: #404 }
  .atv { color: #060 }
}
 
/* Put a border around prettyprinted code snippets. */
pre.prettyprint { padding: 2px; border: 1px solid #888 }
 
/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */
/*
li.L0,
li.L1,
li.L2,
li.L3,
li.L5,
li.L6,
li.L7,
li.L8 { list-style-type: none }
*/
/* Alternate shading for lines */
li.L1,
li.L3,
li.L5,
li.L7,
li.L9 { background: #eee }

[ 手順3 ]
手順2で解凍したファイルが入っているフォルダごと、Dropbox にアップロードする。
URL は、以下のような感じ。
https://www.dropbox.com/home/Blog/prettify-4-Mar-2013

[ 手順4 ]
Dropbox にアップロードしたURL をコピーして、blogger のHTML の編集から、HTMLを以下のように編集する。




</head> タグのすぐ上に、以下2行を追加。
<href link='https://www.dropbox.com/home/Blog/prettify-4-Mar-2013/google-code-prettify/src/prettify.css' rel='stylesheet' type='text/css'/>
<script src='https://www.dropbox.com/home/Blog/prettify-4-Mar-2013/google-code-prettify/js-modules/prettify.js' type='text/javascript'/>

元々ある、<body> のラインをコメントアウトし、以下を追加。
<body expr:class='"loading" + data:blog.mobileClass' onload='prettyPrint()'>

[ 手順5 ]
ブログを記載するときに、HTML 編集にして、以下のタグを使う。
<pre class="prettyprint">
// コードを挿入
</pre>
もしくは、行番号を表示したければ、
<pre class="prettyprint linenums">
// コードを挿入
</pre>
と記載すれば、出来上がり!

2014年8月5日火曜日

IDENTITY_INSERT のサンプルコード

以下のQuery を、INSERT する前に投げると、PRIMARY_KEY に値を代入可能。

SET IDENTITY_INSERT <TableName> ON

OFF で、上記を解除。
SET IDENTITY_INSERT <TableName> OFF

下の例では、外部ファイルを読み込んで、1行ずつクエリを投げています。
何万行も実行する必要があったので、PreparedStatement は使ってないです。

[ サンプルコード ]
try  (BufferedReader br = new BufferedReader(new FileReader(new File(filename)))){
       conn.createStatement().execute("SET IDENTITY_INSERT <TableName> ON");
       String sql = null;
       while( ( sql = br.readLine() ) != null ){
              conn.createStatement().executeUpdate(sql);    
       }
              conn.createStatement().execute("SET IDENTITY_INSERT <TableName> OFF");
       } catch (Exception e) {
               e.printStackTrace();
       } finally {
               if (conn != null) {
              try {
                     conn.close();
              } catch (Exception e) {
                     e.printStackTrace();
              }
       }
}

2014年7月30日水曜日

Vagrant を入れてみた。Proxy とかハマりそうな人へ。

こちら( http://www.arubeh.com/archives/217 )を参考に Vagrant を入れてみました。

VirtualBox
https://www.virtualbox.org/wiki/Downloads

Vagrant
http://downloads.vagrantup.com/tags/v1.3.5

http://www.vagrantbox.es/
より、自分の入れたい box をダウンロードする。

vagrant box add {title} {url} で、以下のエラー。
Downloading or copying the box...
An error occurred while downloading the remote file. The error--)
message, if any, is reproduced below. Please fix this error and tryagain.

Could not resolve host: (nil); Host not found

プロキシの問題。内部では、curl でダウンロードしているらしい。
ただ、パスワード指定のプロキシ設定方法を紹介しているところが以外となかった。
以下のように設定後、再度ダウンロードすれば、OK。

http_proxy=http://<username>:<password>@<proxy-host>:<proxy-port>
https_proxy=http://<username>:<password>@<proxy-host>:<proxy-port>

引用: http://d.hatena.ne.jp/tanakakns/20140107/1389085227


次に、
vagrant up 時に、VirtualBox が見つかりません。。。

Vagrant が探しに行くための環境パス(VBOX_INSTALL_PATH)が設定されていないみたいです。
VirtualBox の環境パス(VBOX_MSI_INSTALL_PATH)は設定されている。

引用:http://ict.matchy.net/2014/05/windows-vagrant-virtualbox.html

SSH でアクセスしたいが、Windows だとClient ソフトが必要なので、PuTTYを入れておく。
PuTTY: http://yebisuya.dip.jp/Software/PuTTY/


Git でも、ssh でアクセスできるらしい。。。

Git for Windows: http://msysgit.github.io/

引用: http://blog.withsin.net/2014/06/02/vagrant-windows7/


2014年7月16日水曜日

Eclipse から、外部提供用Jar の生成方法

具体的には、以下のファイルを含むJar を生成する。

  • MANIFEST.MF ファイル
  • 外部参照ライブラリ

以下の通り。



2014年6月18日水曜日

Apache Derby Server mode 起動時に、DB にリモート接続する

1.元々起動している、Embedded Server mode のDerby を起動しているプロセスを落とす

2.以前の記事( http://dah8ra.blogspot.jp/2014/06/apache-derby-ij.html )を参考に、Derby をインストールし、環境変数を設定する

3.以下のコマンドを実行。(これで、元々起動を行っていたプロセスが、DerbyDB を作成しようとすると、Derby 側で起動したJVM 上で、DerbyDB がブートする。)

java -jar %DERBY_HOME%\lib\derbyrun.jar server start

4.1.で落としていたをプロセス起動させる

5.起動したプロセスが元々作成していた、DB のパスではなく、Derby をインストールしたパス(bin 直下)に、DB が生成される

6.3.で実行していたServer プロセスを落とす

7.リモート接続用の以下のコマンドを実行する

startNetworkServer -h 0.0.0.0


8.クライアント側から、サーバ側へ、以下のコマンドで、リモートアクセスの確認が可能(Derby インストール物件内にある ij ツールを使用)

connect 'jdbc:derby://<IPAddress>:1527/xxx;user=<username>;password=<password>';

Apache Derby の ij ツール の使い方

1.http://db.apache.org/derby/derby_downloads.html から、Derby をダウンロード

2.ダウンロードしたZipファイルを適当なところに解凍

3.環境パスを設定する(ij ツール使うだけなら、設定しなくてもよいかも。)
 DERBY_HOME = Zipを解凍したフォルダの直下
 DERBY_INSTALL = Zipを解凍したフォルダの直下にある bin フォルダ

4.フォルダ内の "./db-derby-xx.xx.x.x-bin/bin" に移動して、ij.bat ファイルを実行

5.以下のコマンドを実行する
ij > connect 'jdbc:derby://localhost:1527/xxx;user=<username>;password=<password>';

6.ij(CONNECTION1)> と出れば、DBと接続できているので、後はSQL発行するだけ。

2014年4月25日金曜日

netstat を利用してバインド失敗ポートを閉じる

SNMP Trap LISTEN PORT のバインドに失敗したので、メモ。

netstat -nao | findstr 162

で、閉じたいポートを特定。(今回はPORT 162 を特定したい)
そのポートを利用しているアプリケーションを強制終了させる。

私のケースでは、Eclipseが落ちて、利用中PORTが残っており、Eclipseが参照しているjavawのプロセスが裏で動いていた。

2014年4月22日火曜日

2TB以上のSATAのHDDを2008R2に認識させるまで

タイトルを実行するときにハマった所に関するメモ。

[ 2TB以上のHDDを認識させるために ]
http://jisaku-pc.net/hddhukyuu/archives/892

[ 間違ってMBRでフォーマットした場合 ]
見つからなかったので、メモ程度。
diskpartコマンドで、cleanすると、再度フォーマットできる。

[ .NET3.5のインストール ]
http://testse1.blogspot.jp/2013/04/windows-server-2008-r2-net35.html

[ MSSQLの管理者アカウントパスワード変更方法 ]
http://www.timetracker.jp/support/documents/KB/Content/Tips/KB101201_01.htm

[ TCP/IPのプロパティのポート変更 ]
MSSQLで指定するポートを、最下段の TCP Dynamic Ports に指定する。



最後に、このHDDをVMPlayerで利用しようとしたら、2TBの壁に引っかかりました。
軽く検索した結果を以下に載せときます。

http://ameblo.jp/stocker1022/entry-11399060284.html

2014年3月26日水曜日

2014年3月19日水曜日

Jarファイルを作るときの注意(MANIFEST.MF)

Mainクラスの指定や、クラスパスの指定をしないと、Jarを配布しても、クラスが見つからない、とかExceptionがでる。
その辺りを解決するために参照したHPのメモ。

https://sites.google.com/a/orz-he.com/bibouroku/javano-ji-ben-denakoto/shi-xing-ke-nengjarwo-zuoru-fang-fa

http://www.tohoho-web.com/java/other.htm

http://archi.iza.ne.jp/blog/entry/108749/

バッチファイルとWinRARを連携して、Jarを生成する

バッチファイルを使用して、Jarファイル内のMANIFESTファイルを書き換える(予め用意していたものに上書きする)やり方。

set BATDIR=%~dp0
set JAR_NAME=XXX.jar
set ZIP_NAME=XXX-verXXX.zip
set ARCHIVER="C:\Program Files\WinRAR\WinRAR.exe"
mkdir %BATDIR%temp
%ARCHIVER% x %BATDIR%%JAR_NAME% %BATDIR%temp
rd /s /q %BATDIR%temp\META-INF
mkdir %BATDIR%temp\META-INF
xcopy %BATDIR%original\META-INF %BATDIR%temp\META-INF
cd %BATDIR%temp
rd /s /q %BATDIR%jar
mkdir %BATDIR%jar
%ARCHIVER% a -r -afzip %BATDIR%jar\%JAR_NAME% *
xcopy %BATDIR%original %BATDIR%jar
mkdir %BATDIR%jar\lib
xcopy %BATDIR%original\lib %BATDIR%jar\lib
cd %BATDIR%jar
%ARCHIVER% a -r %BATDIR%%ZIP_NAME% *
pause

2014年3月17日月曜日

JAR生成時の外部ファイル参照

Eclipse上で実行する場合のクラスパスと、他の環境にJARとして持って行って実行する場合のクラスパスは、当たり前だが異なる。
この問題を解決する方法。

JAR化したいプロジェクト上で右クリック>Exportを選択して、以下のJava>JAR fileを選択


JAR fileの出力場所を指定する。

途中の設定。(何もいじらない。)


外部Jarを参照する場合、META-INFフォルダの生成と、MANIFEST.MFファイルを生成する必要があるが、以下の指定だと正しく生成されなかったので、後で、できあがったJarファイルの中身を直接いじる。(※1)



※1
WorkingDirectoryが以下の場合のMANIFESTファイルのサンプルを書く。
もちろん、libファイルもJar化する時に、一緒にExportしてください。

[WorkingDirectory]/lib/XXX.jar

MANIFESTファイルのサンプル
Manifest-Version: 1.0
Main-Class: test.Test
Class-Path: . lib\XXX.jar

Class-Pathを指定することで、外部ファイルを参照させている。
また、Class-Pathの最初の要素に"."を入れることで、WorkingDirectoryも相対パスに設定している。
(が、正しく動いているかは未確認。)