Monthly Archives: 7月 2014

「Java入門」サーバー側Java NIO socketのサンプルプログラム

Javaコード:
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Set;

public class HTTPSocket {

public static void main(String[] args) throws IOException {

Selector selector=Selector.open(); //セレクターをオープン

//サービスリッスンチャネルをオープン
ServerSocketChannel serverSocketChannel=ServerSocketChannel.open();

//ノンプロキングに設定
serverSocketChannel.configureBlocking(false);

//リスナーチャネルがセレクタを受け入れるようにマークを登録
serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);

serverSocketChannel.socket().bind(new InetSocketAddress(8080));

SocketChannel channel=null;

boolean b=true;//書き込むことをマーク

StringBuffer buffer=new StringBuffer();

while(true){

selector.select();//最少一つのキー

Set<SelectionKey> selectionKeys=selector.selectedKeys();//キーを取得

for(SelectionKey selectionKey:selectionKeys){

if(selectionKey.isAcceptable()){

channel=serverSocketChannel.accept();

channel.configureBlocking(false);

channel.register(selector, SelectionKey.OP_READ);

selectionKeys.remove(selectionKey);

}else{

if(selectionKey.isReadable()){//読む可能

ByteBuffer bytebuffer=ByteBuffer.allocate(1);
channel.read(bytebuffer);
bytebuffer.position(0);

char c=(char)bytebuffer.get();
buffer.append(c);

if(c==’\n’){

System.out.println(buffer);
b=true;
if(!selectionKey.isWritable())
channel.register(selector, SelectionKey.OP_WRITE);
buffer=new StringBuffer();
}

}
else if(selectionKey.isWritable()){//書く可能

if(b){
ByteBuffer bytebuff=ByteBuffer.wrap(“こんにちは\n”.getBytes());
bytebuff.position(0);
channel.write(bytebuff);
b=false;
if(!selectionKey.isReadable())
channel.register(selector, SelectionKey.OP_READ);
}

}

}

}

}

}
}

Javaで配列から要素を検索するプログラム

package ArrayDemo;

/**
* Arrayクラスを実現
* @author anan
*/
import java.io.*;
import java.util.Scanner;

/*
* Arrayクラス
*/
class Array {
int[] array = new int[10];
int i;

public void search(int[] array, int searchKey) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + ” “);
}
System.out.println();
for (i = 0; i < array.length; i++) {
if (array[i] == searchKey) {
System.out.println(i + ” ” + array[i]);
break;
}
}
System.out.println(i + ” ” + array.length);
// 検索条件
if (i == array.length)
System.out.println(“key not found”);
else
System.out.println(“found the key ” + searchKey + ” at No. ”
+ (i + 1) + “element in the array”);
}
};

/*
* ArrayDemoクラス
*/
public class ArrayDemo {

public static void main(String args[]) throws IOException {
int[] array = new int[10];
for (int i = 0; i < array.length; i++) {
array[i] = i;
}
boolean flag = false;
// ループでプログラムを制御
do {
System.out.println(検索したいキーを入力—>”);
Scanner sc = new Scanner(System.in);
// int型を入力
int searchKey = sc.nextInt();
Array a = new Array();
a.search(array, searchKey);
System.out
.println(“do you want to play again? Input ‘y’ or ‘Y’ to continue”);
char c = 0;
try {
c = (char) System.in.read();
} catch (IOException e) {
e.printStackTrace();
}

// プログラムを続行するかどうかを決定
if ((c == ‘y’) || (c == ‘Y’)) {
flag = true;
} else {
flag = false;
sc.close();
break;
}
} while (flag == true);
}
};

Javaでwebサーバーの名前(tomcat、jetty、jboss、glassish、jonas、weblogic、websphere)を取得するプログラム

package com.arkgame.combine.server;
import com.arkgame.combine.StringEx;
import com.arkgame.combine.sys.ClassUtil;
//クラスServerDetector
public class ServerDetector {

public static final String TOMCAT_ID = “tomcat”;
public static final String JETTY_ID = “jetty”;
public static final String JBOSS_ID = “jboss”;
public static final String GLASSFISH_ID = “glassfish”;
public static final String GERONIMO_ID = “geronimo”;
public static final String JONAS_ID = “jonas”;
public static final String OC4J_ID = “oc4j”;
public static final String RESIN_ID = “resin”;
public static final String WEBLOGIC_ID = “weblogic”;
public static final String WEBSPHERE_ID = “websphere”;
private static String _serverId;
private static int _geronimo = -1;
private static int _glassfish = -1;
private static int _jBoss = -1;
private static int _jetty = -1;
private static int _jonas = -1;
private static int _oc4j = -1;
private static int _resin = -1;
private static int _tomcat = -1;
private static int _webLogic = -1;
private static int _webSphere = -1;
static {
if (isTomcat()) {
_serverId = TOMCAT_ID;
} else if (isJetty()) {
_serverId = JETTY_ID;
} else if (isJBoss()) {
_serverId = JBOSS_ID;
} else if (isGlassfish()) {
_serverId = GLASSFISH_ID;
} else if (isResin()) {
_serverId = RESIN_ID;
} else if (isWebLogic()) {
_serverId = WEBLOGIC_ID;
} else if (isWebSphere()) {
_serverId = WEBSPHERE_ID;
} else if (isOC4J()) {
_serverId = OC4J_ID;
} else if (isGeronimo()) {
_serverId = GERONIMO_ID;
} else if (isJOnAS()) {
_serverId = JONAS_ID;
} else {
throw new RuntimeException(“Server is not supported”);
}
}

public static String getServerId() {
return _serverId;
}
public static boolean isGeronimo() {
if (-1 == _geronimo) {
_geronimo = ClassUtil.detectResource(“/org/apache/geronimo/system/main/Daemon.class”) ? 1 : 0;
}
return 1 == _geronimo;
}
public static boolean isGlassfish() {
if (-1 == _glassfish) {
_glassfish = !StringEx.isNullOrEmpty(System.getProperty(“com.sun.aas.instanceRoot”)) ? 1 : 0;
}
return 1 == _glassfish;
}
public static String getClassfishVersion() {
if (!isGlassfish()) {
return null;
}
String value = System.getProperty(“product.name”).trim();
//”GlassFish/v3″
if (!StringEx.isNullOrEmpty(value)) {
return value.replace(“GlassFish/”, “”);
}
return null;
}
public static boolean isJBoss() {
if (-1 == _jBoss) {
_jBoss = ClassUtil.detectResource(“/org/jboss/Main.class”) ? 1 : 0;
}
return 1 == _jBoss;
}
public static boolean isJetty() {
if (-1 == _jetty) {
_jetty = ClassUtil.detectResource(“/org/mortbay/jetty/Server.class”) ? 1 : 0;
}
return 1 == _jetty;
}
public static boolean isJOnAS() {
if (-1 == _jonas) {
_jonas = ClassUtil.detectResource(“/org/objectweb/jonas/server/Server.class”) ? 1 : 0;
}
return 1 == _jonas;
}
public static boolean isOC4J() {
if (-1 == _oc4j) {
_oc4j = ClassUtil.detectClass(“oracle.oc4j.util.ClassUtils”) ? 1 : 0;
}
return 1 == _oc4j;
}
public static boolean isResin() {
if (-1 == _resin) {
_resin = ClassUtil.detectResource(“/com/caucho/server/resin/Resin.class”) ? 1 : 0;
}
return 1 == _resin;
}
public static boolean isTomcat() {
if (-1 == _tomcat) {
_tomcat = ClassUtil.detectResource(“/org/apache/catalina/startup/Bootstrap.class”)
|| ClassUtil.detectResource(“/org/apache/catalina/startup/Embedded.class”)
? 1 : 0;
}
return 1 == _tomcat;
}
public static boolean isWebLogic() {
if (-1 == _webLogic) {
_webLogic = ClassUtil.detectResource(“/weblogic/Server.class”) ? 1 : 0;
}
return 1 == _webLogic;
}
public static boolean isWebSphere() {
if (-1 == _webSphere) {
_webSphere = ClassUtil.detectResource(“/com/ibm/websphere/product/VersionInfo.class”) ? 1 : 0;
}
return 1 == _webSphere;
}
}
//クラスClassUtil

package com.arkgame.combine.sys;
public class ClassUtil {
/**
* クラスが存在するかどうかを確認
* @param className クラス名前
* @return
*/
public static boolean detectClass(String className) {
try {
ClassLoader.getSystemClassLoader().loadClass(className);
return true;
} catch (ClassNotFoundException cnfe) {
return false;
}
}
public static boolean detectResource(String fullName) {
return ClassUtil.class.getResource(fullName) != null;
}
}

//クラスStringEx
.package com.arkgame.combine;

public class StringEx{

public static boolean isNullOrEmpty(String str) {

return (null == str) || (str.equals(“”));

}

}

LinuxにJDK7、Tomcat7ソースパッケージをインストール、設定

1.システム要件:
Java7
tomcat7

2.インストール手順:
ダウンロード:
http://www.oracle.com/technetwork/java/javase/downloads/index.html

2.1 jdkをインストール
tar zxvf jre-7u5-linux-i586.tar.gz -C ../software/
cd ../software
cp -rp jre1.7.0_05/ /usr/local/
vi /etc/profile

次の内容を追加
JAVA_HOME=/usr/local/jre1.7.0_05/
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
. /etc/profile

2.2 Javaが正常にインストールされるかどうかテスト
chown -R root\: /usr/local/jre1.7.0_05/
java -version
java version “1.7.0_05″
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) Client VM (build 23.1-b03, mixed mode)

3.Tomcatをインストール

3.1 tomcat7をインストール
ダウンロード:
http://tomcat.apache.com/

cd /usr/local/src/tarbag
tar zxvf apache-tomcat-7.0.28.tar.gz -C ../software/
cd ../software
cp -rp apache-tomcat-7.0.28/ /usr/local/
cd /usr/local/apache-tomcat-7.0.28/

3.2 環境変数を設定
vi /etc/profile
CATALINA_HOME=/usr/local/apache-tomcat-7.0.28/
PATH=$JAVA_HOME/bin:/usr/local/apache-tomcat-7.0.28/bin/:$PATH
. /etc/profile

3.3 サービスが起動
/usr/local/apache-tomcat-7.0.28/bin/catalina.sh start
または
/usr/local/apache-tomcat-7.0.28/bin/startup.sh

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:759 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN
tcp 0 0 :::8009 :::* LISTEN
tcp 0 0 :::8080 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN

curl http://192.168.1.105:8080

3.3 サービスが停止
/usr/local/apache-tomcat-7.0.28/bin/catalina.sh stop
または
/usr/local/apache-tomcat-7.0.28/bin/shutdown.sh

Sumatra PDF 2.6.9337 Pre-Release をダウンロード

ダウンロード:
提供元サイトからダウンロード
cnetサイトからダウンロード
softpediaサイトからダウンロード

動画:

Dropbox 2.11.4 Experimental をダウンロード

ダウンロード:
提供元サイトからダウンロード
cnetサイトからダウンロード
softpediaサイトからダウンロード

更新内容:

  • Allow the tray popup to be opened with the keyboard.
  • Fix cutoff text in the Camera Uploads popup.
  • Fix a rare issue with file identifiers tracking on Mac.
  • Other small fixes.

オープンソースログ管理ツールLogstashログシステム環境を構築する手順

1.システム要件:
次のモジュールが必要
Logstash
Elasticsearch
Redis
Nginx
Kibana

サーバー側:
fqdn: dev.kanbier.lan (should be resolvable!)
ip: 10.37.129.8

ダウンロードURL:
http://logstash.net/

2.必要なモジュールをインストール
2.1 elasticsearch redis nginx logstashのインストール
$ vi /etc/yum.repos.d/logstash.repo
[logstash-1.4]
name=logstash repository for 1.4.x packages
baseurl=http://packages.elasticsearch.org/logstash/1.4/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

$ vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-1.0]
name=Elasticsearch repository for 1.0.x packages
baseurl=http://packages.elasticsearch.org/elasticsearch/1.0/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

$ vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

$ rpm -Uvh http://mirror.1000mbps.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm

$ yum -y install elasticsearch redis nginx logstash

2.2 Kibanaのダウンロード、設定
$ wget https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0.tar.gz
$ tar -xvzf kibana-3.0.0.tar.gz
$ mv kibana-3.0.0 /usr/share/kibana3
$ vi /usr/share/kibana3/config.js
elasticsearch: “http://dev.kanbier.lan:9200”,
default_route : ‘/dashboard/file/logstash.json’,

webページにアクセス:
$ wget https://raw.github.com/elasticsearch/kibana/master/sample/nginx.conf
$ mv nginx.conf /etc/nginx/conf.d/
$ vi /etc/nginx/conf.d/nginx.conf
server_name dev.kanbier.lan;
2.3 redisを設定
$ vi /etc/redis.conf
bind 10.37.129.8

2.4 Logstashを設定
操作手順:
/var/logディレクトリにファイルを読み書き
5544ポートを開放
logstash-complex.confを編集
$ vi /etc/logstash/conf.d/logstash-complex.conf
input {
file {
type => “syslog”

# Wildcards work, here <img src=”http://www.denniskanbier.nl/blog/wp-includes/images/smilies/icon_smile.gif” alt=”:)” class=”wp-smiley”>
path => [ “/var/log/*.log”, “/var/log/messages”, “/var/log/syslog” ]
sincedb_path => “/opt/logstash/sincedb-access”
}
redis {
host => “10.37.129.8”
type => “redis-input”
data_type => “list”
key => “logstash”
}
syslog {
type => “syslog”
port => “5544”
}
}

filter {
grok {
type => “syslog”
match => [ “message”, “%{SYSLOGBASE2}” ]
add_tag => [ “syslog”, “grokked” ]
}
}

output {
elasticsearch { host => “dev.kanbier.lan” }
}

サービスが起動
$ service redis start; chkconfig redis on
$ service elasticsearch start; chkconfig –add elasticsearch; chkconfig elasticsearch on
$ service logstash start; chkconfig logstash on
$ service nginx start; chkconfig nginx on
「/etc/rsyslog.conf」を編集
# ### begin forwarding rule ###
# The statement between the begin … end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
$WorkDirectory /var/lib/rsyslog
# where to place spool files
$ActionQueueFileName fwdRule1
# unique name prefix for spool files
$ActionQueueMaxDiskSpace 1g
# 1gb space limit (use as much as possible)
$ActionQueueSaveOnShutdown on
# save messages to disk on shutdown
$ActionQueueType LinkedList
# run asynchronously
$ActionResumeRetryCount -1
# infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
*.* @@10.37.129.8:5544

3.ファイアウォールのポートを開放
port 80 (for the web interface)
port 5544 (to receive remote syslog messages)
port 6379 (for the redis broker)
port 9200 (so the web interface can access elasticsearch)

参考URL:

http://www.denniskanbier.nl/blog/logging/installing-logstash-on-rhel-and-centos-6/

LibreOffice 4.3.0 をダウンロード

ダウンロード:
提供元サイトからダウンロード
cnetサイトからダウンロード
softpediaサイトからダウンロード

更新内容:

  • Writer
    • 段落中の文字数制限の緩和
    • ナビゲーションボタンの移動
    • フォントサイズ 拡大/縮小 ボタン
    • DrawingMLのインポート/エクスポート
    • ネストされたコメントのインポート/エクスポート
    • 図形サイズ変更時の比率の維持
    • 印刷されない文字の色が水色に
    • 相対テキスト枠のアンカリングの改善
    • 枠内テキストの垂直配置
    • コメントを余白に印刷
    • コメントの一括書式設定
    • Unicode準拠ソフトハイフン処理
  • Calc
    • セル内関数のハイライトがスマートに
    • 選択された行・列数をステータスバーに
    • 上段セルの内容を元に入力を開始
    • ユーザー選択可能なテキスト変換モデル
    • ピボットテーブルのレイアウトの向上
    • F数式エンジン
    • CoinMP ソルバーの有効化
    • 統計ウィザード (Excelの「分析ツール」アドインに相当)
    • ランダムな値の生成
  • Draw and Impress
    • ページ番号表示
    • スライドをウィンドウサイズに合わせる
    • スライドペインにおける選択/非選択スライドへのマウスオーバー
    • 3Dモデルのインポート
  • Core
    • アクセシビリティ
    • VCL (GUI Toolkit)
  • オプション / 全般
    • CUPS、FAXおよびspadmin
  • フィルター
    • PDFインポート機能の向上
    • OOXMLサポートの機能向上
    • 新しいインポートフィルタの追加
  • GUI
    • リフレッシュされたタンゴアイコン
    • OS X上でネイティブなバックグラウンドレンダリング
    • カラーピッカーの改善
    • スタートセンターの改善
    • Initial HiDpi support
    • DOCXドキュメントのためのプログレスバー
  • ローカリゼーション
    • New languages/locales in language list
    • New languages/locales with locale date
    • 新しい言語タグを追加
  • Scripting / Base
    • 新バージョンのAccess2Base
  • APIの変更
    • OSL macroをクリーンアップ
    • C++ UNO language binding and URE libraries
    • UNO API の変更
      • サービスの実装から XInitialization を削除
      • com.sun.star.lang.XTypeProvider.getImplementationIdを非推奨
  • プラットフォームの互換性
    • Windowsにおけるビルド環境の更新

動画:

Stinger 12.1.0.1014 をダウンロード

ダウンロード:
提供元サイトからダウンロード
cnetサイトからダウンロード
softpediaサイトからダウンロード

更新内容:

Enhanced detections are those that have been modified for this release.
Detections are enhanced to cover new variants, optimize performance, and correct incorrect identifications.

  • New Detections:
    Generic.tj
    Generic.tk
    Generic.tl
  • Enhanced Detections:
    Generic Downloader.z
    Generic.so
    Generic.tb
    JS/Wonka

 

MySQLのIPあたりの接続数を監視する

MySQLコマンド:
select SUBSTRING_INDEX(host,’:’,1) as ip , count(*) from information_schema.processlist group by ip;