メモ帳ではじめてのC#

諸事情によりIDEを使わずに簡単にC#を試したい。
使ったのはメモ帳じゃないけどテキストエディタなので許してほしい。

使うもの

前提環境

ソースコード

// Hello1.cs
public class Hello1
{
   public static void Main()
   {
      System.Console.WriteLine("Hello, World!");
   }
}

コンパイル

Windowsコンパイラが付属している(?)そうなのでそれを利用します!
参考:Visual Studioではなく、Windows付属のcsc.exe だけでC#実行ファイルを作る - Qiita

>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe Hello.cs

Hello.csと同じフォルダにHello.exeが作られました。早速実行。

実行

>Hello.exe

結果

Hello, World!

やったね!

MacにVagrantを使って仮想環境を作る

まだ何も理解してないけどAWSのアカウントを取ったので使おうと話したらまずはローカルでLinux系の動きに慣れてみたらと言われて紹介されたので入れてみます。単語だけ聞いたので何を入れているのかは多分正しく理解してない!

手順

Mac 上で Vagrant を使って CentOS + Apache をセットアップ - Qiita こちらのサイト様に従って頑張ります!

  1. Vagranthttps://www.vagrantup.com/ からダウンロードしてインストールする。
  2. Vagrant Version確認

    $ vagrant -v
    Vagrant 1.7.4

  3. Virtual Boxを https://www.virtualbox.org/ からダウンロードしてインストールする。
  4. 作業フォルダを作成する。

    $ mkdir CentOS66

  5. 作成したディレクトリに移動しOSのBoxをダウンロードする(ちょっと重い)。

    $ vagrant box add CentOS66 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.0.0/centos-6.6-x86_64.box

  6. 初期設定(Vagrant fileの作成)する。

    $ vagrant init CentOS66

  7. 作成されたVagrantfileを編集する(コメントアウトされている部分)。SSHでログインするために必要だそう。

    config.vm.network "private_network", ip: "192.168.33.10"

  8. 仮想環境を起動する。

    $ vagrant up

  9. SSHでログインしてみる。

    $ vagrant ssh

ログインできた! とりあえず何もせずにexitで出て行きました笑

(追記)

参考サイト様の手順を最後までやろうと奮闘していたところ、以下のエラーが発生。

default: httpd: Could not open configuration file /etc/httpd/conf/httpd.conf: Permission denied

調べてみるとSELinuxが親切にもファイルアクセスを制御しているということで(恥ずかしながら存在すら知らなかった)一時停止にしてみる。

vagrant$ setenforce 0 setenforce: setenforce() failed

ダメなようだ。もう少し調べてみるとこちらのサイトSELinux の動作状況を確認や設定するを発見。

vagrant$ sudo setenforce 0

こっちは通った。
もう一度Provisionして開くとindex.htmlが開きました。やったね!

$ vagrant provision

$ open http://192.168.33.10

Java EE 7 入門のエラーを解消する2

とりあえずMacNetBeansも使いにくいということを覚えた。

例のJava EE 7 入門 〜 NetBeansで始めるJavaEE7 First Tutorial #javaee7 #jjug #jav…チュートリアルを進めている。
※Createで5件以上登録できない件、>MAXじゃなくて>=MAXにしないとダメだった。メモ。

さてp.154でまたエラー。
こちらのサイトさんで引数なしのコンストラクタがないからだよと書かれていたので修正。
GlassFish: Java EE 7 入門ではまったこと - from The Edge of the (Java) World

元のコードをできるだけ変えないようにするためにこうしてみたら、ちゃんと404が返るようになったけどメッセージが返らなかった。
うーんよく分からない…
とりあえず上記サイトさんのコードの通り@Deprecated外してフィールドのfinal外してsetter作ったらメッセージもちゃんと返るようになりました!

public class ErrorModel {

    private final List<String> errorMessages;

    // 非推奨で引数なしコンストラクタを作る
    @Deprecated
    public ErrorModel() {
        this.errorMessages = null;
    }

    public ErrorModel(List<String> errorMessages) {
        this.errorMessages = errorMessages;
    }

    public List<String> getErrorMessages() {
        return errorMessages;
    }

}

それからp.197でjavax.enterprise.event.Eventが見つからなくてしばらく詰まったけど、これは単純にJavaEEのライブラリが入ってなかっただけだった。
Projectのプロパティからライブラリ追加で参照できるようになりました。
そして無事チュートリアルは完了。
まだまだ理解は追いついていないけど少しずつ覚えていこうと思います。
簡単に手を動かすための資料を作成いただいた作者様に感謝を。

JavaEE 7 入門の最初のエラーを解消する

JavaEE入門チュートリアルをやっている。

www.slideshare.net

問題

p.70でどうしてもエラーになるので試行錯誤してみた。
無事解消したのでメモ。

エラー内容

Unit testをするとエラーがでてしまうのです。

Invalid resource : jdbc/tutorial__pm

無視しても大丈夫な記事も見つかるけどせっかくなので頑張ってみる。

ヒント

この辺を見ると、JDBC resourceが無いんだよって言われてる気がする。
Java, JPA, Glassfish, Invalid resource : jdbc/__default__pm - Stack Overflow

手順

  1. サービスタブからサーバーを選んで管理コンソールを開く。
    f:id:vostochnaya:20150714232505p:plain
  2. JDBC Connection Poolで新規作成する。
    Resource Type:はjavax.sql.DataSourcesでClassnameはorg.apache.derby.jdbc.ClientDataSourceでOK。
    URL、ユーザー名、パスワード、データベース名を入力します。
    URLはjdbc:derby://localhost:1527/tutorial
    ※SecurityMechanismを削除しておかないとログインエラーになりました。
    f:id:vostochnaya:20150714233912p:plain
  3. JDBC Resourceを新規作成する。名前はjdbc/tutorialでOK。
    f:id:vostochnaya:20150714234450p:plain

再テスト

テスト通過!!
f:id:vostochnaya:20150714234658p:plain

NetBeansでProjectに使うサーバーを変える

簡単すぎて調べても見つからなかったのでメモ。良くこういうの忘れる。

やりたいこと

サーバーをGlassfishからPayaraに変えた。
今までGlassfish使ってたのでNetBeansに新しくPayaraを登録したのだけどProject実行した時のサーバーをどこで変えればよいのやら。

設定場所

Project右クリック > Properties
ダイアログメニューの Run にある Server を変える。

アプリ認証エラー(auスマートパス)

何かと不具合が多く、しかもそれを認識しながら放置しているauスマートパス。
今回も公式が助けてくれないので自力解決。
やっぱ解約すべきだな。

事象

先日から日本語入力するたびにATOKさんが認証エラー。
さらに本日乗換案内が認証エラーで起動しない事態に。
今すぐ電車乗るのに!!
※ちなみにただ電車調べるだけなら無料版オススメします。起動スピードが違いすぎる。

解決法

auマーケットのせいでした。
作業前に再起動したけど必要だったかは不明。

  1. 設定→アプリ→auマーケット
  2. データクリア、アップデートの削除
  3. 乗換案内を開くとauマーケット最新化しないと使えませんと怒られるので最新化
  4. インストール後にもう一度乗換案内を開くと少し時間がかかるけど無事認証成功
  5. ATOKも無事認証成功


(2014/12/20 追記)
ちなみにログインできない場合はau ID設定を疑ってみると良いかもです。
auスマートパスの不具合(犯人はau ID設定) - Така блог

NetBeansで日本語を入力すると落ちる

NetBeansの検索窓などで日本語を入力すると落ちる。
それはそれはサクッと。

(2014/10/18追記)
JDK8u25で解決しました。

少し古いものになりますが
Re: [nbdiscuss_ja] NetBeans のバグ? ATOK の? -- Ctrl+Z でエディタの表示が乱れる
という記事があったり
バグ報告:ATOKで入力中にエディタ全体が真っ白になる
という記事があったりでATOKのせいかと思いきや、NetBeansでバグ登録されていた。
Bug 246854 - NetBeans crashes when typing via input-method(IME) for input Japanese words.
MS IMEでも起こるようなのでATOKが原因ではなくJDK8u20が原因のよう。

バグとして登録された方のブログがこちら。条件ぴったり。
Windows 7、Java SE 8u20、NetBeans 8の組み合わせで落ちる
暫定対応としてJDK8u11にすることで回避できた。

なお、JDK8u11のインストールだけではNetBeansはJDK8u20を参照したままだったので、confファイルを編集する必要があった。

  1. NetBeansのインストールフォルダにあるetcフォルダを開く
  2. netbeans.confファイルをテキストエディタで開く
  3. netbeans_jdkhomeのパスを8u11のフォルダに変更する

参考:In NetBeans how do I change the Default JDK?

(2014/9/25 追記)
confファイル変えなくてもコマンドラインオプションでいけることを教えてもらいました。torutkさんありがとうございます。
元々AutoHotKey使ってショートカットキーからコマンドラインで起動してたのでありがたい。
ついでにスクリプト編集してどのJDK使うか選べるようにしました。便利ー。
サンプルは書くまでもないけど…。

C:\NetBeans\bin\netbeans64.exe --jdkhome "C:\Java\jdk1.8.0_11"