ラベル プログラミング の投稿を表示しています。 すべての投稿を表示

プログラミング出来る人にとって嫌な言葉

言っている相手は気づかないかもしれないけど、
プログラミングやっている人にとっては、とても嫌な言葉があります。

自分自身言われて嫌だな〜と思う事をここに書いて行きます。

【C++メモ】クラスの基本

今回は実際にC++のソースを記述したので、そこで覚えた事をメモします。
結論として、JavaScriptのClassよりは簡単です。



class sample{
	private:	//外部からは見えない領域
		int sampleData;
	public:		//外部から見える領域
		sample(int data): sampleData(data){}
		void dataview(){
			cout<<"値:"<

プログラミングをする時の開発者の脳内

私自身大した開発者ではないですが、ある程度プログラミングする人として、
プログラミングをする時は脳内でどんな事を考えているのかを書いて行きたいと思います

Qtを使ってみた

今回初めて、Qtを使ってみました。

使ってみた感想等を今回は淡々と書いていきます。また、ある程度Qtの使い方??等も説明出来ればな〜っと思います。


Qtとは??

そもそもQtが何なのか分からない方の為に説明すると、
どんなOSでも動くGUIライブラリ?? いや、コンソールアプリケーションも出来るから違うと思いますが、とにかく低級言語で幅広い事するのに使われます。

いや、そもそもC言語が低級言語だと言う事は有名だけど、C++もその内に入るのかな??




格OSに開発環境が用意されているので、正直誰でも開発は可能です。
Qt Creator 」と言う公式の開発環境では、デザイナーがあり、あのWin向けにある、
とあるVから始まる開発環境と似た様なデザイナーがあるので、

あのVから始まる開発環境を使った事のある方は直ぐに使いこなす事が出来るでしょう。


使用する言語はC++です。


昨日辺りに、C++の勉強をまともに初めたのでこのQtを今日使い始めました。

以前まではWinのVから始まるソフトでC#を使って簡単な物を開発していましたが、
正直その時はC#自体あまり理解していない状態で、デザイナーで作ったGUIを上手く操作する事すら一苦労でした。

ってかそもそもC#のあの複雑?面倒な文法が嫌でCへ逃げて来ました。
一つ言われる事はCはC#より難しいとの事だけですが、諦めずCにこびり付いていました。

そこで、文法も理解出来る言語で、手軽にGUIを使えるなんて、超素敵じゃないですか!



あ、話が色々と脱線しましたねww


上に添付されている画像からするに、ソースコードめっちゃ書かれてて結果難しそうとなるかもしれませんが、正直C言語でWinAPIを使ってGUIを作るより楽ですw

ま〜とにかく、どんな感じで作業して行くのかをご覧になれば早いと思います。




まず新規プロジェクトを作成すると、
添付画像の様にエディタが開きます。

エディタの横にプロジェクトファイルが並んでいるのが分かると思いますが、その中の「フォーム」フォルダーを開きます。
「widget.ui」と言うファイルがあるのでそれを開くとデザイナーが開きます。






デザイナーでは横にあるツールボックスから追加したい部品をドラッグして配置するだけの単純作業となります。

今回は試しに、ボタンとラベルを配置します。




画面右下にあるボックスで、部品のプロパティ等を設定出来ます。

また、部品の大きさ等も自由に変更可能ですので色々試してみてください。






次に、ボタンをクリックした時に何らかの動作をする様にイベントを設定しましょう。

ボタンを右クリックして、「スロットへ移動...」を選択して、使いたいイベントを選択します。




すると、エディタが開き、
void Widget::on_pushButton_clicked()
が作られているので、この中にイベント発生後のプログラムを記述して行きます。

今回は試しにラベルの文字を変更しましょう。




void Widget::on_pushButton_clicked()
{
    char test_data[] = "こんにちは";
    ui->label->setText(test_data);
}


あとは、ソースを記述して実行するだけです。
「▶︎」ボタンを押すと実行されます。


どうですか??ちゃんと動作したでしょうか??
これで大体の流れは分かったと思います。


今回はここまでですが、Qtを始めたいと思っている方は、今直ぐに初めてくださいね。

初めてC++のお勉強を真面目にしたのでメモ〆

C++と言えば、Cの進化系で、やっぱオブジェクト指向が一番重要ですよね。
まず、C++を学ぶ理由は、CでGUI作るならC++で作った方がいいと言う意見と、
Cより若干情報量が多い。あとは...文字列の扱いが簡単になった??


とかですね。

って事で今回初めてC++を真面目に勉強したのでメモしておきます。
そもそもCを自分は今まで使ってたので、大体の基礎知識はありました。
なので、今回はオブジェクト指向について色々お勉強しましたよ。

入門サイトは以下のURL先です。
http://www.asahi-net.or.jp/~yf8k-kbys/newcpp0.html

そして、まず始めにビルドの方法を書いて置きます。
※Winの方法は知らん&Microsoftの便利な開発環境を使えばいい。

Macだと、Xcodeと言うアプリケーションをインストールしてくださいね。
このXcodeで実際にソース記述して実行するのもいいですが、個人的に使いにくいソフトだと思うので、普通にターミナルからビルドします。

ターミナルでは、g++コマンドでビルド出来ます。
自分てっきりCもC++も同じだと思い、gccコマンドで実行してました。

 g++ FileName                                                                                                              

以下に今回実際に書いたソースです。

 Test.cpp                                   
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;

class Fukumi
{
string name;
public:
Fukumi(string s) : name(s){}
void nosi() const{
cout<<name<<"ヾ(*´д`*)ノシ"<<endl;
}
};

int main(){
Fukumi dora("ふっくん");
printf("動作開始\n");
dora.nosi();

}


まず、一番感動したのが、[string型]がある事です。Cの場合char[]で「[~]」の中に入れる文字数を指定しないといけませんでした。

ですが、sring型はそんな指定しなくても文字が入るので、文字数を気にする事なく代入可能です。何故か[]が付いていると配列を意識してしまうので、string型がある事はとても魅力的です。

そして、classは、class Name{~};に書く様です。

プログラムの最適化について

今回は初心者さん限定の記事となるのですが、今回お教えするのは、
「プログラムの最適化」です。具体的にどのような事なのか分からない方も居ると思いますけど、プログラムのソースを出来るだけ短縮し、分かりやすく書くと言う事を自分では最適化と思っています。(勝手に)



ではちょいと手元にあったソースを元にしてみます。

今回書いたソースは +竹内史 にお願いされて書いた簡単な関数です。

function url_TextData(data){
    
    var val = 0;
    
    var Textif0 = new RegExp("^https?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    var Textif1 = new RegExp("^http?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    if (data.match(Textif0)) { val++; }else if(data.match(Textif1)){ val++; }
    return val;
}


関数の内容は、URLであるかでないかを判断するプログラムです。
URLでは無いときは0を返して、URLである場合は1を返します。

至って簡単なプログラムですね。
このソースはもう既に最適化しています。

これを最適化してない状態だと以下の様になります。

function url_TextData(data){
    
    var val = 0;
    
    var Textif0 = new RegExp("^https?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    var Textif1 = new RegExp("^http?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    
    var a = data.match(Textif0);
    var b = data.match(Textif1);
    if (a) { val++; }else if(b){ val++; }
    return val;
}


これだと、無駄に変数に値を入れている感じしますよね。
なんせC言語を使ってたら、そんなどうでもいい事まで気になってしまいます。

こういった変更をする事により、無駄に記述を無くし、かつ、奇麗にソースを書く事が出来ます。

皆さんも試してみてね。

開発環境を紹介

MyPCをMacにしてからWinの時の開発と異なる為今回はMacバージョンの開発環境を紹介したいと思います。Winの方は見てもつまらないかもしれません。



ま~主な開発環境はこんな感じですね。ローカルアプリケーション等は、Xcode等を現在は利用しています。


  • Dreamweaver (HTML/CSSのコーディングに使用)
  • Editor (主にサーバーサイドのプログムやローカルアプリケーションの開発に使用)
  • MAMP (php実行環境設備)
  • Xcode (C/Obj-C等の開発に使用)
以上の開発環境で私は過ごしています。


Macを使い始めた方でまだ開発環境をどうするか悩んでいる方の参考になれば幸いです。
また、これからMacに乗り換える予定の方の参考にもなればうれしいです。

Macのいいエディタがあった。

今回紹介するのは、「Editor」です。


このEditorは様々なプログラミング言語に対応し、UIもシンプルで使いやすいです。
一応有料となりますが、たった1,000円なので大丈夫。

私自信主に、PHP/C等の開発に使う予定なので、十分です。





人的気に入っている機能




このアプリケーションの凄い所は、
「自動入力補助機能」が凄い所です。複数の言語の補助をしてくれる為長い関数等、キーワードを記述する際にとても役立ちます。

補助単語も任意で追加する事が出来るので尚便利ですね。

補助されない単語も自分で追加すれば後から幾らでも補助してくれるのでこの機能はとても便利です。





他にもテキストカラー設定も可能で、最初から幾つかテンプレートは用意されています。

気に入るテンプレートが無い場合は任意で独自のデザインにしていきましょう。







これは実際に使ってみて分かるのですが、とても使いやすいです。
入力補助でこまでしてくれる入力補助を持つエディタは大抵高額だったりしますが、
このアプリケーションではたった1,000円なので無駄な買い物した気にはなりませんね。

UIもシンプルでMac本来の美しさを消していません。


ダウンロードは以下のURLからどうぞ、

https://itunes.apple.com/jp/app/editor-simple-texteditor/id661536561?mt=12

ソフト作成方法

※タイトルはいかにもPC初心者が検索しそうなワードです。

今回はパソコン初心者または今までプログラミングと言うのに無縁の方を対象に、
ソフトウェアの作成どの様な物なのかを説明して行きます。

本気でこの道に進みたい方の手助けになれば幸いです。




ソフトウェア作成手順



  1. 計画(妄想)
  2. プログラミング
  3. ビルド&デバッグ
  4. 完成

上記リストの様に至って簡単な手順です。

多分昔の自分だと、「プログラミング」と言う単語がある時点で他のページを探すでしょう。
ただ1つ言うと、ソフトウェアの作成にはプログラミングの知識は必要不可欠なので、
プログラミングをこの際覚えるといいでしょう。


プログラミング言語とは?


プログラミング言語とは、人間コンピューターが唯一会話の出来る言葉の事です。

機械は人間の言葉は一切理解出来ません。(※Siri例外)
ですが、唯一人間と機械の共通語として会話が出来る言語がプログラミング言語です。

っと言う事は、プログラミングを勉強すれば、機械とお話が出来るわけです。(一方的に)


ただ、プログラミング言語には幾つか種類があります。

言語ごとにメリットデメリットがあるのですが、それらは後から考えましょう。

今回はあの有名なC言語ちゃんを使って機械とお話をしましょう。




その前に、



開発環境とはプログラミングを作成・実行するのに必要な環境の事です。
私は、「Microsoft VisualStudio」と言うソフトウェアを使って開発をしています。

この環境があると前提で話を進めるのでご了承下さい。

※「Microsoft VisualStudio」を略してVSoと記述していくのでご了承下さい。



プロジェクト作成



VSoを開いたら、
[新しいプロジェクト]->[Visual C++]->[Win32]->[Win32コンソールアプリケーション]

[アプリケーション設定]->{追加オプション->[空のプロジェクト]}->[完了]

「ソースファイル右クリック」->[追加]->[新しい項目]->[C++ ファイル]->[追加]


これでプロジェクトの作成が完了です。
エディタ上に新しいタブから表示されると思います。

そこにプログラムを記述して行きます。

プログラム

※ブログの仕様上#文字列が特殊文字扱いになるので、「#include <stdio.h>」は省略しますが、
本来はプログラムの一番上に記述する物なのでご注意下さい。

void main(void){
 printf("hello");
}

このプログラムを実行すると、コンソールが起動し、
hello」と表示される至ってシンプルなプログラムです。

では簡単に説明しましょう。

「void main(void) {」と書かれている部分は関数定義しています。

main関数はプログラムの中で一番最初に実行されるので、基本的に、main関数内にプログラムを記述して行きます。

「printf()」と言うのは文字列を表示する関数です。(〜)の間に表示する文字列記述します。

では、ここで関数の簡単な説明をします。

関数には、引数と言うのがあります。
引数とは関数の処理に必要な情報の事で、「plus()」関数があったとします。
この関数では足し算がしたいわけです。

なので、足す値が関数には必要です。そこで引数と言う物を使います。
「plus(1, 2)」この様に引数で1と2を渡す事で、
関数は1と2を足して3と言う結果を出す事が出来るわけです。

引数は「,」で区切る事が出来ます。


ここではコンピューターとお話をしました。

お次は、「Arduino」とC言語ちゃんで会話しましょうか。




Arduino」へのプログラム書き込みやArduinoの準備を直ぐに出来ないでしょうから、詳細は省略。


int led_pin = 13;

void setup(){
  pinMode(led_pin, OUTPUT); 
}

void loop(){
  digitalWrite(led_pin, LOW);
  delay(200);
  digitalWrite(led_pin, HIGH);
  delay(200); 
}


PICにこのプログラムを書き込んだら、13番ピンにLEDの+
GNDに-を刺すとLEDが点滅します。



この様にしてプログラミングが出来ればソフトウェアだけではなく、
デバイスの制御・操作も可能になります。



是非プログラミングに興味のある方は試してみて下さい。

PHPでMySQLのテーブルを複数作成する方法

最近とある依頼が沢山あり、作業を猛スピードで勧めているのですが、
依頼自体が結構大規模で嘔吐寸前のふっくんです。


今回は、ショップ用CMSの開発時に汎用性かつ簡単に誰でも使えるCMSを作成しなくてはいけなくて、今回初めてPHPを使いMySQLのテーブルを複数作成しました。

(今回がMySQLに初めて触れたんです。)




今回の記事ではWebMatrixを利用した開発になります。
WebMatrixをお持ちでなくてもPHPとMySQLが利用出来る方は今回の対象内に入ります。

以前「WebMatrixでMySQL接続」と言う記事を書いたので、WebMatrixをお持ちの方はその記事を始めにお読みになると理解しやすいかと思います。



  • PHPの基礎知識のある方
  • MySQL存在を知っている方
  • 自己解決出来る方
  • ロリコンの方

上記4項目に当てはまる方は対象です。



まず始めに私は知っている情報だけを元にソースを書いてみたのですが、
エラーしか出ん........

[教えて!? プログラミング のPost]


始めは質問しても全然回答が来ないので、ハングアウトにて、
+竹内史 に質問してみた所、PDOと言う物を教えてもらいました。


Q「PDOとはなんぞや!?」っと思う方の為説明します。

PDOとは、PHPでデータベース操作する時に便利なクラス?で、newでオブジェクト化?して利用する事が出来ます。〇(多分そんな感じだと思う。)

大体のデータベースに対応していて、今まで使っていたデータベースを他のデータベースに切り替える時も大規模な変更を行わなくても大丈夫な物です。

PHP公式サイトでもmysql_系の関数は将来的に消えるとの報告があるので、
PDOを使う事をお勧めします。


っで話の戻るのですが、まずテーブルを作るクエリから紹介します。


CREATE TABLE table_name (id int(11) auto_increment,Column_name CHAR(15),mail CHAR(100),PRIMARY KEY  (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

上記のクエリ文をご覧下さい。
この文でデータベースにテーブルを作成します。

[table_name]この部分では作成するテーブル名を指定します。
[Column_name]では、カラム名を指定します。

id int(11)と言う部分も同じです。

カラムの設定ではデータ型の指定は必須です。


PRIMARY KEY  (`id`)

これはIDを指定しています。



今回やる事はこのクエリ文を「.sql」拡張子で保存し、それをPHPで全ての文を実行すると言う至って簡単な事です。


require_once 'database_access00.php';


$dbn = new PDO(ACCESS_TEXT, USER_NAME, PASSWORD);
$dbn -> query('SET NAMES UTF-8');


$fopens = fopen("ファイル名.sql", "r");
$i = 0;
while(!feof($fopens)){
    $fprint = fgets($fopens);
    $dbn -> query($fprint);
   $i++;
}

//footer
$stmt -> execute();
$dbn = NULL;




大体ソースを見れば分かるでしょう。
普通にrモードでファイルを開き1行ずつquery()で処理しています。
これでテーブルの作成は完了です。

初めてC言語でWinAPIを使ってウィンドウを作成した。

今回初めてC言語を使ってWindowsFormを作成したので、記録として残しておきます。

私も完全に理解しているわけでもなく確実にここに載っている情報が確かとは言えませんのでご了承下さい。また、間違っている箇所等間違った理解等があった場合コメントにて指摘して下さいますようよろしくお願い致します






今回の学習の参考にさせて頂いたサイトは以下のURLのサイトです。

Win32 API 階梯 - C による GUI アプリケーション開発




ではまず、ウィンドウ自体の作成方法なのですが、流石C言語です。
ウィンドウを作成するだけでも相当なコード量になります。

その前にプロジェクトから作成しましょう。

開発環境は「Microsoft VisualStudio」で行います。

まず、「新しいプロジェクト」をクリックし、
[Visual C++] -> [Win32] -> [Win32 プロジェクト] -> [OK]


[アプリケーションの設定] -> [空のプロジェクト] -> [完了]


補足:アプリケーション種類はコンソールアプリケーションではなく、Windowsアプリケーションです。




次に、ソースファイルの作成を行います。
[ソリューションエクスプローラー] -> [ソースファイル右クリック] -> [追加] -> [新しい項目]
-> [Visual C++] -> [C++ファイル(.cpp)]

これでソースファイルの準備が完了です。

後はコードを書くだけです。



手始めに以下のソースを書いてみましょう。

#include 


//プロトタイプ宣言
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
				   LPSTR lpszCmdLine, int nCmdShow)
{
	TCHAR szAppName[] = TEXT("testApp");
	WNDCLASS wc;
	HWND hwnd;
	MSG msg;

	//ウィンドウクラス属性設定

	wc.style			= CS_HREDRAW | CS_VREDRAW;					//スタイル
	wc.lpfnWndProc		= WndProc;									//ウィンドウプロジャ
	wc.cbClsExtra		= 0;										//追加領域
	wc.cbWndExtra		= 0;										//追加領域
	wc.hInstance		= hInstance;								//インスタンスハンドル
	wc.hIcon			= LoadIcon(NULL, IDI_APPLICATION);			//アイコン
	wc.hCursor			= LoadCursor(NULL, IDC_ARROW);				//カーソル
	wc.hbrBackground	= (HBRUSH) (COLOR_WINDOW + 1);				//背景
	wc.lpszMenuName		= NULL;										//メニュー名
	wc.lpszClassName	= szAppName;								//クラス名


	//ウィンドウクラス登録.
	if(!RegisterClass(&wc)) return 0;

	//ウィンドウを作成
	hwnd = CreateWindow (
		szAppName, TEXT("title"),
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT,
		CW_USEDEFAULT, CW_USEDEFAULT,
		NULL, NULL,
		hInstance, NULL);

	if(!hwnd) return 0;

	//ウィンドウ表示
	ShowWindow(hwnd, nCmdShow);
	UpdateWindow(hwnd);

	while(GetMessage(&msg, NULL, 0, 0) > 0){
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){

	HDC hdc;
	PAINTSTRUCT ps;

    switch (uMsg) {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
	return DefWindowProc(hwnd, uMsg, wParam, lParam);
}


うむ。長いですね。
一応このソースでウィンドウを表示出来ます。

では私が分かる範囲で説明をしていきます。

まず、「ウィンドウクラス属性」と言うのはウィンドウの細かい設定の様な物です。
ここで私がまず躓いた所は、「ウィンドプロジャ」です。

上記URLのサイトでは最初は、[DefWindowProc]と記載していました。
ですが、これだとタスク自体はある状態らしいです。

なので、正しくは[WndProc]です。


次に、「ウィンドウの作成」ですが、
これも各種設定の様な物ですね。

	//ウィンドウを作成
	hwnd = CreateWindow (
		szAppName, TEXT("title"),
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, 
		CW_USEDEFAULT,
		100, 
		150,
		NULL, 
		NULL,
		hInstance, 
		NULL);


上記の様にすればformのサイズ等も設定出来ます。
詳しくは以下を参考に、
http://walk.wgag.net/winapi/createwnd.html#03



次に

LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){

	HDC hdc;
	PAINTSTRUCT ps;

    switch (uMsg) {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
	return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

の部分ですが、これはいわばイベントハンドラの様な物らしいです。
フォーム上で起こった出来事をPostしてそれを受け取り、その時の状況に応じてどう処理するか等を書いていきます。


ま〜私が理解した所はここぐらいですね。

Javaプログラミングを始める宣言

今回Java言語を始めようかと思います。

そもそも何故Javaなのか?



それは.....





噂ではどこでも動く言語だからだそうです。
本来私自身使えたらいいな〜と思う言語候補の中で、C言語とJavaが入っています。

元々プログラミング言語の親玉と言われるのがC/C++ですね。
これさえ理解出来れば他の言語の習得に苦労しないそうです。なんかカッコイイですねw

っで話に戻りますが、一応私C/C++とJavaには一度触れた事があるのですが、
その時はPHPさえ使えない様なカスの時でしたので理解が難しかったです。


一応触れた事ある言語としては、


  1. C/C++
  2. C#
  3. VB
  4. Java
  5. JavaScript
  6. PHP
  7. ASP.net(C#)

とかですけど、実際に使えるとしたらこの中の
JavaScriptとPHPのみです。

C#も描画とか音楽再生とかその程度....

なので今回候補にあるJavaを選びました。

C/C++を選ばなかった理由は開発環境揃ってるし、始めようと思えばいつでも始められる。
他にも理由はあります。「手続きと言うか文法自体が面倒」

利点ももちろんあります。「関数がめっちゃ覚えやすい」

とかそのた色々



ただJavaはどこでも動くらしいですし、使えたら人生自由に生きていけそうなので、
まして、なんか本を読んだ限り面白そうなので今回はJavaで!!

って事でこれからJavaを学んでいくのですが、いい情報があれば提供よろしくお願いします。

- Copyright © I aim to creator. - Hatsune Miku - Powered by Blogger - Designed by Johanes Djogan -