WifiはつながるのにLANはつながらない
それは、突然やってきます。
「ネットワーク接続ができません」。。。
解決するまでは「やばい、やばい、ヤバイ.....」と焦ります。
いろんなケースがあるのですが、
今回の「つながらない」ケースは
ある、ルータを挟んでそれ以降のPCが接続できなかったケースです。
【イメージ】
「接続できる」 | 「このルータから先は接続できない」
<ブロードバンド・ルータ> → <内部ルータ> → PC
【対応】
ルータを再起動したら治った。。。
毎回のことですが、なおしてみると「なんだこんなことかぁ(笑)」となるのですが
回数を重ねると悔しいものがあります。。。
慣れましたが(笑)
Qtの使い方 インストール
前回JavaとC++の実装比較を行いました。
次は、C++での画面作成に「Qt」を使用しようと思い立ち...
早速。。。Qtの仕様などは割愛します。 別のサイトを参照してください。
Qt - Home (Japanese) ← 日本語版です。
上記のフレームワークを使用するうえでの注意は
ざっくりと、商用で使用するなら「お金を払いましょう」
無料でやるなら「ソースを公開しましょう」
という認識です。
<ダウンロードについて >
開発で使用するのは「Qtクリエーター」です。(結構重いです)
Qtの実装ではノートPCでなく
デスクトップPCでの開発で行こうと思います。
<インストーラについて>
windows用のインストーラ、その他のプラットホーム..と別れています。
間違うと結構手間(ダウンロードに時間がかかりますので注意)
ダウンロードした後にインストーラーを起動したら、
あとはスルンと行きます(笑)
<Qt起動>
新しいプロジェクトを選択すると下記のように表示されます。
今回作成しようとしているのは「汎用画面AP」なので
「Qtウィジェットアプリケーション」を選択します。
ここから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
以上で、セットアップ完了です。
C++ PostgreSQL library インストール
参考にしたページは以下になります
このページよりダウンロードしたいファイルを選ぶ
以下のコマンドでインストールする
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-」の後ろにバージョンが示されています
wget http://pqxx.org/download/software/libpqxx/libpqxx-2.5.5.tar.gz
一番上のファイルをダウンロードするコマンドになります。
例えばターミナルを開いて、カレントディレクトリ→「pwd」コマンドで表示されます
ターミナルで現在開いているディレクトリ=カレントディレクトリになります。
引き続き「tarコマンド」x, v, f, zと4つのオプションをつけて実行します。(実行結果)
tarファイルを解凍するコマンドになります。
カレントディレクトリに解凍されます。
mac wgetコマンド インストール方法
はじめに、「brewコマンド」がMacにインストールされていませんでした。
その代わり、「rubyコマンド」はインストールされていましたので
「ruby -help」とターミナルにコマンドを入力してやるとインストールされていれば下記の様に画面に出力されます。
rubyコマンドが使用できるのであれば、以下の様にコマンドを入力(コピペ可能)
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
実行結果
※上記の部分で「Enter」キー以外を押下すると処理が止まります。
上の様な表示が出力されていればインストール成功
では目的の「wget」をインストールします。
brew install wget
仕事と勉強
社会人になると勉強する時間がなかなか取れませんのでひと工夫必要になります
<アプローチの工夫>
ボトムアップでなくアップダウンでやる
目的の作業を行う為に必要な知識を学ぶ
今回の汎用画面APであればリソース管理、DBアクセス、UMLが対象になる
<普段の工夫>
生活のリズムを作る
1.家を出る⇒電車内で勉強
2.退社⇒電車
3.筋トレ⇒夕食
4.風呂上がり⇒ビール片手に本を読む
5.日記⇒就寝
<ポイント>
毎日必ず、5〜10分で良いのでやる
週に一度は休む
<動機の工夫>
やる事で小遣い稼ぎになる
⇒イベントを企画、フリマ向けの商品作り、アフィリエイト(やった事を書き続ける)、副業のアイデアを練る...etc
javaとc++ のクラス実装比較
ここで、少し休憩がてらに作成した
javaのHumanクラスとc++ のHumanクラスを比較して見たいと思います。
<java>
Javaではコンストラクタ、フィールドメソッドと定義して実行
特に、メモリとかオブジェクトのインスタンスを気にしないで作れます
<c++ >
値の返却方法、ポインタなどインスタンスからオブジェクトの振る舞いなどを考慮に入れて作成しました。
Javaではoperator演算子のオーバーライドができません。
そして、名前空間の定義方法も違います
javaの場合はパッケージとディレクトリ構成が同じにならないとエラーになる
c++ の場合は別になっている
結論的に、c++ の方が複雑⇒自由度が高い javaは細かいところは気にせず実装出来る…
そんな印象を受けました。
フレームワークなどはオープンソースでたくさん手に入るJavaに軍配が上がりました。
JavaでもC++の様にリソース(インスタンス、オブジェクトなど)を考慮に入れた実装を心がけないといけないなぁ...と反省しました。
次回からはQtを使用して「汎用画面AP」の実装に着手したいと思います。
operator演算子2 "+="の実装
前回学んだ「operator演算子」には「++, --」以外にも「=, !=, +, -, <, >」など使用可能
ただし倫理演算子(&&, || など倫理演算を行う)は使用しない方が良いらしい原因は
「組み込み倫理演算子とクラス型の倫理演算子は一致させることができない」から...
と参考にしている本に書いてありました。
時間の都合で、「フレンド関数」まで届かなかったのでoperator演算子2をやります
<実装>
human += 10と処理を記述可能になる
<Mainクラス>
ヘッダーファイルには
Human& Human::operator +=(int year);
の様に定義しいる、あくまで「参照を返却する」のでその様に実装してやらないと
ハマる、コンパイルエラーが残っていたりして時間がかかってしまった。
本当は、フレンド関数まで記載したかったが届かなかった。。。
次は、休憩してJavaとC++で作成したHumanクラスの比較を行います。
operator演算子の使い方
前回の「C++による、コンストラクタの種類」に引き続き、
オペレーター演算子の使い方を学びます。
operator演算子は下記の様な実装を可能にする演算子です。
「++, --』を使用可能にする。下のは++を実装可能にした形です。
「Human human('z');」 ○「++human;」×「human++;」
あと起き演算子は未定義でエラー
後置きの演算子を定義
human++;のヘッダーファイル定義
同様にソースファイルへの定義
実行結果
前置き(after1)と後置き(after)の出力結果
<詰まったところ>
前置きと後置きの違いはインクリメント(演算)を行った後に「this」参照を返却するのと
演算後に「this」本体を返却するという違いがあった。ので式の内容も違う。
ここになかなか気づかなかった。。。
次回は、「フレンド関数 続operator演算子」について学習します。
C++による、コンストラクタの種類
前回のC++実装に引き続き、C++の勉強を続けます。
C++によるコンストラクタには以下の様な種類がありました。
・デフォルトコンストラクタ:Javaでのデフォルトコンストラクタと同義
・変換コンストラクタ:コンストラクタに引数を渡し初期値を設定します。
1. void クラス名::クラス名(引数...) (int num, char* ch)など...
2.変換コンストラクタ(前回のソースの引数ありの部分)
単一の引数nameを初期化する
呼び出し方は、 Human human('z') の様になります。
そして次の様にも呼び出せます。Human human = 'z';
※これは知りませんでした。。。
そして「operator」演算子!!変換関数と呼ばれるものがあります。
実際の処理では、ここで年齢をします「age」ではなく他の値でも良い
他のロジックを、アルゴリズムを作成する可能性を持っていると思います。
次回は、「operator演算子」について学ぼうと思います。