Takunojiのプログラミング・プレイグラウンド(遊び場)

Javaプログラミングを基本にして、ゲーム作成に必要なことの調査結果、やったら面白そうなことなどを記載します。プログラミングのススメ的なことも記載します。プログラミングで楽しく遊ぶために色々と記載して行きます。

WifiはつながるのにLANはつながらない

それは、突然やってきます。
「ネットワーク接続ができません」。。。

解決するまでは「やばい、やばい、ヤバイ.....」と焦ります。
いろんなケースがあるのですが、

今回の「つながらない」ケースは
ある、ルータを挟んでそれ以降のPCが接続できなかったケースです。

【イメージ】
「接続できる」                   |      「このルータから先は接続できない」
<ブロードバンド・ルータ> → <内部ルータ> → PC

【対応】
ルータを再起動したら治った。。。

毎回のことですが、なおしてみると「なんだこんなことかぁ(笑)」となるのですが
回数を重ねると悔しいものがあります。。。

慣れましたが(笑)

Qtの使い方 インストール

前回JavaとC++の実装比較を行いました。
次は、C++での画面作成に「Qt」を使用しようと思い立ち...

早速。。。Qtの仕様などは割愛します。 別のサイトを参照してください。

Qt - Home (Japanese) ← 日本語版です。

上記のフレームワークを使用するうえでの注意は
ざっくりと、商用で使用するなら「お金を払いましょう」
      無料でやるなら「ソースを公開しましょう」
という認識です。

<ダウンロードについて >
開発で使用するのは「Qtクリエーター」です。(結構重いです)

Qtの実装ではノートPCでなく
デスクトップPCでの開発で行こうと思います。

<インストーラについて>
windows用のインストーラ、その他のプラットホーム..と別れています。
間違うと結構手間(ダウンロードに時間がかかりますので注意)
ダウンロードした後にインストーラーを起動したら、
あとはスルンと行きます(笑)

<Qt起動>

f:id:Takunoji:20170305113607p:plain

新しいプロジェクトを選択すると下記のように表示されます。

f:id:Takunoji:20170305112556p:plain

今回作成しようとしているのは「汎用画面AP」なので
「Qtウィジェットアプリケーション」を選択します。

f:id:Takunoji:20170305113511p:plain

f:id:Takunoji:20170305113429p:plain

f:id:Takunoji:20170305113531p:plain

f:id:Takunoji:20170305113543p:plain

f:id:Takunoji:20170305113731p:plain


ここからC++出の実装が始まります。
余談ですが「オブジェクト指向」を学ぶのに画面作成はとても入りやすいし
理解もしやすいと思います。

プログラム実行結果 → オブジェクトの表示
を直接目で確かめることができるからです。

次回は開発を始めたいと思います。

javadb Derby インストール

javaDB⇒「Derby」のインストール手順
1.アパッチのサイトにアクセスして derbyをダウンロードします。
   Apache Derby    Downloadページ

2.JAVA_HOMEを設定して、パスを通す
Windowsの場合は"$VAL"を"%VAL%"に読み替えてください

・~/.bash_profileに JAVA_HOME=jdkへのパス と記載する
・同様にPATH = $JAVA_HOME/bin:$PATH  と記載する

3.ダウンロードしたderby-binに環境変数を設定:derbyは使用しやすい場所に配置
 ※JDKの中に入っているのでそちらでも良い(JAVA_HOME/db/lib/derby.jar)
>sudo vi(vim) ~/.bash_profile
   DERBY_HOME = ダウンロードしたderbyのフォルダへのパス/bin

   CLASSPATH=$SERBY_INSTALL/lib/derby.jar:$DERBY_INSTALL/lib/derby-tools.jar

>source ~/.bash_profile →これでPATHを反映する

3.DERBYをインストールした場所に移動してセットアップバッチ(シェル)を叩く

>cd $DERBY_INSTALL /bin
>. setEmbeddedCP


4.インストール確認にDerby情報を出力する
java org.apache.derby.tools.sysinfo

f:id:Takunoji:20170304123607p:plain

以上で、セットアップ完了です。

C++ PostgreSQL library インストール

参考にしたページは以下になります

www.tutorialspoint.com


このページ
よりダウンロードしたいファイルを選ぶ

以下のコマンドでインストールする

wget http://pqxx.org/download/software/libpqxx/libpqxx-4.0.tar.gz
tar xvfz libpqxx-4.0.tar.gz
cd libpqxx-4.0
./configure
make
make install

libpqxx-」の後ろにバージョンが示されています

f:id:Takunoji:20170302215104p:plain

wget http://pqxx.org/download/software/libpqxx/libpqxx-2.5.5.tar.gz

一番上のファイルをダウンロードするコマンドになります。

例えばターミナルを開いて、カレントディレクトリ→「pwd」コマンドで表示されます

ターミナルで現在開いているディレクトリ=カレントディレクトリになります。
引き続き「tarコマンド」x, v, f, zと4つのオプションをつけて実行します。(実行結果)

f:id:Takunoji:20170302220557p:plain

tarファイルを解凍するコマンドになります。
カレントディレクトリに解凍されます。


 

 

mac wgetコマンド インストール方法

はじめに、「brewコマンド」がMacにインストールされていませんでした。
その代わり、「rubyコマンド」はインストールされていましたので
ruby -help」とターミナルにコマンドを入力してやるとインストールされていれば下記の様に画面に出力されます。

f:id:Takunoji:20170302212715p:plain
rubyコマンドが使用できるのであれば、以下の様にコマンドを入力(コピペ可能)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

実行結果

f:id:Takunoji:20170302213146p:plain
※上記の部分で「Enter」キー以外を押下すると処理が止まります。

f:id:Takunoji:20170302213725p:plain
上の様な表示が出力されていればインストール成功

では目的の「wget」をインストールします。

brew install wget

確認のため「wget -h」でヘルプが表示されていればインストール完了

仕事と勉強

社会人になると勉強する時間がなかなか取れませんのでひと工夫必要になります

<アプローチの工夫>

ボトムアップでなくアップダウンでやる

目的の作業を行う為に必要な知識を学ぶ

 今回の汎用画面APであればリソース管理、DBアクセス、UMLが対象になる

<普段の工夫>

生活のリズムを作る

1.家を出る⇒電車内で勉強

2.退社⇒電車

3.筋トレ⇒夕食

4.風呂上がり⇒ビール片手に本を読む

5.日記⇒就寝

<ポイント>

毎日必ず、5〜10分で良いのでやる

週に一度は休む

<動機の工夫>

 やる事で小遣い稼ぎになる

⇒イベントを企画、フリマ向けの商品作り、アフィリエイト(やった事を書き続ける)、副業のアイデアを練る...etc

 

 

javaとc++ のクラス実装比較

ここで、少し休憩がてらに作成した

javaのHumanクラスとc++ のHumanクラスを比較して見たいと思います。

<java>

f:id:Takunoji:20170301190001p:plain

f:id:Takunoji:20170301190020p:plain

Javaではコンストラクタ、フィールドメソッドと定義して実行
特に、メモリとかオブジェクトのインスタンスを気にしないで作れます
<c++ >

f:id:Takunoji:20170301190038p:plain

f:id:Takunoji:20170301190150p:plain

値の返却方法、ポインタなどインスタンスからオブジェクトの振る舞いなどを考慮に入れて作成しました。

Javaではoperator演算子のオーバーライドができません。


そして、名前空間の定義方法も違います

javaの場合はパッケージとディレクトリ構成が同じにならないとエラーになる

c++ の場合は別になっている

 

結論的に、c++ の方が複雑⇒自由度が高い javaは細かいところは気にせず実装出来る…
そんな印象を受けました。
フレームワークなどはオープンソースでたくさん手に入るJavaに軍配が上がりました。
JavaでもC++の様にリソース(インスタンス、オブジェクトなど)を考慮に入れた実装を心がけないといけないなぁ...と反省しました。
次回からはQtを使用して「汎用画面AP」の実装に着手したいと思います。

 

operator演算子2 "+="の実装

前回学んだ「operator演算子」には「++, --」以外にも「=, !=, +, -, <, >」など使用可能
ただし倫理演算子(&&, || など倫理演算を行う)は使用しない方が良いらしい原因は
「組み込み倫理演算子とクラス型の倫理演算子は一致させることができない」から...
と参考にしている本に書いてありました。

時間の都合で、「フレンド関数」まで届かなかったのでoperator演算子2をやります

<実装>

f:id:Takunoji:20170228212933p:plainhuman += 10と処理を記述可能になる
<Mainクラス>

f:id:Takunoji:20170228213019p:plain
ヘッダーファイルには

Human& Human::operator +=(int year);

の様に定義しいる、あくまで「参照を返却する」のでその様に実装してやらないと
ハマる、コンパイルエラーが残っていたりして時間がかかってしまった。
本当は、フレンド関数まで記載したかったが届かなかった。。。
次は、休憩してJavaC++で作成したHumanクラスの比較を行います。

takunoji.hatenablog.com

operator演算子の使い方

前回の「C++による、コンストラクタの種類」に引き続き、
オペレーター演算子の使い方を学びます。

operator演算子は下記の様な実装を可能にする演算子です。
「++, --』を使用可能にする。下のは++を実装可能にした形です。

f:id:Takunoji:20170227205851p:plain「Human human('z');」 ○「++human;」×「human++;」

f:id:Takunoji:20170227210404p:plainあと起き演算子は未定義でエラー

後置きの演算子を定義

f:id:Takunoji:20170227211851p:plain human++;のヘッダーファイル定義

f:id:Takunoji:20170227211934p:plain同様にソースファイルへの定義
実行結果

f:id:Takunoji:20170227212032p:plain前置き(after1)と後置き(after)の出力結果

<詰まったところ>
前置きと後置きの違いはインクリメント(演算)を行った後に「this」参照を返却するのと
演算後に「this」本体を返却するという違いがあった。ので式の内容も違う。
ここになかなか気づかなかった。。。

次回は、「フレンド関数  続operator演算子」について学習します。

C++による、コンストラクタの種類

前回のC++実装に引き続き、C++の勉強を続けます。
C++によるコンストラクタには以下の様な種類がありました。

・デフォルトコンストラクタ:Javaでのデフォルトコンストラクタと同義
・変換コンストラクタ:コンストラクタに引数を渡し初期値を設定します。
1. void クラス名::クラス名(引数...) (int num, char* ch)など...
2.変換コンストラクタ(前回のソースの引数ありの部分)

f:id:Takunoji:20170226210524p:plain単一の引数nameを初期化する

呼び出し方は、 Human human('z') の様になります。
そして次の様にも呼び出せます。Human human = 'z';

f:id:Takunoji:20170226212124p:plain

※これは知りませんでした。。。

そして「operator」演算子!!変換関数と呼ばれるものがあります。

f:id:Takunoji:20170226214852p:plain

実際の処理では、ここで年齢をします「age」ではなく他の値でも良い
他のロジックを、アルゴリズムを作成する可能性を持っていると思います。
次回は、「operator演算子」について学ぼうと思います。