パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください -16ページ目

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

お久しぶりです。こにしです。


今回はDJUNITでテスト実装しているので
そこでよく使っていて、自分は知らなかったのでMethod文を紹介しようと思います。

Method文
主にクラス内あるメソッドを強制的に呼び出すことができるものです。
なので、主にprivateのメソッドも呼び出すことができます。


使い方

//呼びたいクラスを宣言
SampleClass sampleclass = new SampleClass();


Class[] cls = {第1引数のクラス,第2引数のクラス};

Object[] obj = {第1引数の値,第2引数の値};

Method test = sampleclass.Class.getDeclaredMethod("ここに呼びたいメソッド名",
                             cls);
//privateメソッドにアクセス可能にする
test.setAccessible(true);

test.invoke(sampleclass,obj);

と以上で呼び出せるはずです。
また引数がない場合は、invokeとgetDeclaredMethodの引数をnullにすることでできます。


と今回自分が知らなかったプログラムを紹介しました。
もし知らなかった人は是非使ってみてください。


以上
こにしでした。

こんにちは、むらしです。初投稿となります。
”こんなこともわからねーのか”というような事ばかり書くと思いますが、何かに役立てば幸いです。

DBの勉強をするためにMySQLを自宅パソコンにインストールすることになりました。
その時に設定ファイルで詰まってしまいましたが、以下の方法で解決しましたのでまとめておきます。

今回は勉強ということもあり、インストーラーを使わずに行いました(*1)。順を追って書いていきますので、インストーラ無しでインストールする方の手助けになれば幸いです(設定ファイルの内容は意図的に間違えています。ですので最後まで読んでください!!)。

今回OSとしてwindows7、使用するMySQLのバージョンは5.6を用いました。

順を追って説明していきます。

まずダウンロードしたものを任意の場所(僕の場合はC直下)に解凍、そしてコマンドプロンプトで(MySQLフォルダ/bin)に移動します。次に

mysqld.exe --install(ハイフンは2つ)

と打ちます(環境変数をこのフォルダに設定しておくと楽です、下記からは設定したものとして進めます(*2)。

次に設定ファイルを作成し、指定のフォルダへ置きます。今回は「my.ini」というファイルを作成し、中身に以下の内容を書き込みました。指定のフォルダは、僕の環境では"C:/windows"でした(*3)。

//////////////my.ini///////////////////

[mysqld]
basedir = C:/(MySQLフォルダ)/
datadir = C:/(MySQLフォルダ)/data
default-character-set = utf8

[mysql]
default-character-set = utf8

///////////////////////////////////////

MySQLのサービスを開始します。方法は「コントロールパネル」→「管理ツール」→「サービス」に移動してMySQLを選択し、”サービスを開始”をクリック。コマンドプロンプトで行う場合は、管理者権限で実行して

net start mysql

と打つとサービスが開始されます。…のはずが以下の内容がポップアップで表示されました。

ローカルコンピュータのMySQLサービスを開始できません。エラー1067:プロセスを途中で強制終了しました

コマンドプロンプトで開始しようとすると以下の内容が…

MySQL サービスを開始します…MySQL サービスを開始できませんでした。システムエラーが発生しました。システムエラー1067が発生しました。プロセスを途中で強制しました。

エラー1067が立ちはだかります。再起動してみたり、設定ファイルを何回も見たり…時間が水のように流れます。調べたところ、このエラーは設定ファイルの"my.ini"が原因であるようです。汎用エラーコードのため、特定できませんので、設定ファイル内のパラメータをコメントアウト(*4)するなりして、ひたすらサービスを開始し続けます(*5)。そして[mysqld]の"default-character-set = utf8"をコメントアウトすると…

開始出来ました!!!

よくわからないけど出来たからいいや…いや、何かひっかかる。スペルミスはなかったはずなのに…!?調べたところ、"default-character-set"は、MySQL5.5から表記が変わったようです。正しくは"character-server-set"。設定ファイル"my.ini"を以下のように書き直します。

//////////////my.ini///////////////////

[mysqld]
basedir = C:/(MySQLフォルダ)/
datadir = C:/(MySQLフォルダ)/data
character-server-set = utf8

[mysql]
default-character-set = utf8

///////////////////////////////////////

これでサービス開始したところ、うまく開始出来ました。安心、安心…。
コマンドプロンプトでmysql -u rootでMySQLのコンソールに移ります。


せっかくなので設定ファイルについて軽くお勉強してみました。
設定ファイルはmysqlをコンソール上で実行した時に起動オプションとして実行されるもののようです(そこからか!)。設定ファイルが読み込まれる場所なのですが、デフォルトでは3か所あるようです(下記)。

●(WINDIR)¥my.ini(*3)
●C:¥my.cnf
●(MySQLフォルダ)¥my.ini

設定ファイル名は"my.ini"又は"my.cnf"、複数置いてしまうと、パソコンがどれを読み込んでよいのかわからなくなるのでやめましょう。

中身はクライアントセクションサーバーセクションに分かれているようです。

<クライアントセクション>
[mysql]はクライアントが参照します。クライアントセクションには他に[client]があります。[client]は、設定ファイルを参照するクライアント全てに適用されるのに対して、[mysql]はMySQLコマンドラインツール(mysql)だけが参照するようです。
<サーバーセクション>
[mysqld]はMySQLサーバが利用します。

mysqlを実行する時に起動オプションを付けますが(例えば"mysql -u root")、この起動オプションを設定ファイルに書き込んであげれば(mysqlで実行するので[mysql]内に記述)、いちいち入力しなくてすみます。
起動オプションは"mysql --help"と入力してあげると、一覧が出力されす。起動オプションを紹介しているサイト様もあるようなので、そちらも参考にしてみると良いかもしれません。default-storage-engine=InnoDBとか便利かもしれません(デフォルトのストレージエンジン変更)。


これでやっと勉強が始められる…本当に環境設定って嫌いです。


(*1)MySQL(http://dev.mysql.com/)のMySQL Community Serverのダウンロードページに飛び、
アーカイブ版をダウンロード
(*2)コマンドプロンプトに"setx"という、環境変数を設定するコマンドがあるようです
(setと異なり、永続的)
(*3)確認するには、コマンドプロンプトで"echo %WINDIR"と打ちましょう
(*4)"#"でコメントアウト出来るようです
(*5)設定ファイルで指定したdataフォルダの中に(コンピュータ名).errファイルがあるのです
が、そこを見ればエラーになったパラメータがわかりました

参考サイト
http://d.hatena.ne.jp/nightmare_tim/20110530/1306704112
http://darutk-oboegaki.blogspot.jp/2014/03/mysql-error-1067-process-terminated.html
http://www.dbonline.jp/mysql/myini/
会員No.18です。

ブロックチェーンはインフラだけでなくいろいろ応用が効くので世の中を変えそうな気がする。
下記ページにあるmijinの説明動画のナレーションが恐らく北斗の拳の声優の方で面白いです。

http://jp.techcrunch.com/2015/09/25/mijin/
はじめまして、こにしです。


今回初めての投稿なので、しょぼくても怒らないでくださいね。

今、10月に受けるrubyシルバー試験に向けて勉強中です。

今まで、やってきたC言語やJAVAとは全く違くてなかなかギャップに戸惑ってます。

しかし、やっているのが暗号みたいものを解読している気分でこれはこれでたのしいので

この試験を受かり、ゴールド試験への道を切り引けたらなぁと思ってます。


しかし、今までのプログラムとはギャップが激しくてなかなか試験のプログラムを見ても

頭でどういう動きなのかがイメージがわかなくて難しいです。


自分のなかで一番ギャップを感じている部分は
変数に型がないってことです。
今までは

int a = 1;
String str = "abc";

など、宣言することで使っていたものが

a = "abc"
a = 1

rubyでは宣言しないので利点そしてはキャストなどの変数を変換みたいなものがないですが
C言語やjavaに慣れてしまっているので型がないのは混乱しています。
会員No.18です。

TomcatをLinuxでinitd(CentOS や Redhat の7系だとsystemdが一般的)でサービス登録、起動することがありますが、Tomcat8をサービス起動した際にハングアップしたことがあったので記事にします。
※Tomcat7では発生しません。

■環境
Red Hat Enterprise Linux 7.1
Java Version 8 Update 45
Tomcat 8.0.23

■現象
Tomcat8起動時にsetenv.shで下記のようにCLASSPATHを設定していました。
--setenv.shの内容 ここから--
export CLASSPATH="$CLASSPATH:xxx:yyy:zzz"
--setenv.shの内容 ここまで--

上記設定で$CLASSPATHがブランクの場合、CLASSPATHが:(コロン)から始まる文字列になり、Tomcat8が起動時にハングアップしてしまいます。

(参考) https://bz.apache.org/bugzilla/show_bug.cgi?id=57823


■対処
$CLASSPATHがブランクの場合はsetenv.shから必要のない$CLASSPATH:を削除する。

・修正前
export CLASSPATH="$CLASSPATH:xxx:yyy:zzz"

・修正後
export CLASSPATH="xxx:yyy:zzz"