n-hirokiのプログラミング軌跡

プログラミングのメモ

MacでArduinoダウンロード

MacでのArduinoのダウンロード方法です。

 

1、下記のホームページでダウンロードします。

Arduinoダウンロードページ

 

2、このような画面があるので、黒い四角で囲った「JUST DOWNLOAD」クリック

f:id:n-hiroki_zero:20160608184257p:plain

 

ダウンロードが開始されます。

f:id:n-hiroki_zero:20160608184649p:plain

3、arduino-1.6.9-macosx.zipを解凍します。

 

4、すると上の画像のようにArduino.appが追加されるので「アプリケーション」に追加しましょう。

 

5、ArduinoをUSBケーブルでMacとつなぐ

ONというラベルのLEDが点灯し、LというラベルのLEDが点滅します。

 

6、Arduino.appを起動

以下の画像のようになっていると思います。(誤差あり)

f:id:n-hiroki_zero:20160608185251p:plain

 

7、ツール→ボード→Arduinoの種類を選択

f:id:n-hiroki_zero:20160608185514p:plain

8、シリアルボード→以下の画像には2項目あるがどちらでも可

僕は、/dev/cu.usbmodem1411(Arduino/Genuino Uno)を選択。

 

f:id:n-hiroki_zero:20160608185603p:plain

 

以上でダウンロードから設定まで完了!

今度簡単な実行例などのblogを書きます。

 

C言語入門2 <変数>

変数

C言語を行っていく上でとても重要な変数について学んでいきます。

変数とは箱のようなもので、データや数値などが入ります。

その変数にはいろいろな型があり、その型によって入るデータや数値が異なることをデータ型と言います。

データ型

int(整数) ・・・1、13、100など

float(実数) ・・・1.32、10.236、0.1564など

char(1文字) ・・・A、D、Cなど

 など

変数の定義の仕方

変数を使用するにあたって定義する必要があります。

以下のように記述します。

int x;

int x = 13;

float f;

float f = 13.23;

1行目の「int x;」について見ていきましょう。

これは、「整数型(int型)の'x'という名前の変数を使っていきますよ。」という意味です。

2行目は1行目の文に「=」がついています。

この「=」は、等しいという意味ではなく、「右のデータを左の変数に代入するよ」という意味です。なので'x'に13が入った状態です。この「=」を代入演算子と呼びます。

 

サンプルコード 実際に出力してみましょう。

変数を理解するために簡単なコードを作成します。

 

test01.c

#include <stdio.h>

int main(void){
    int x = 13;
    float y = 56.4;
    char c = 'S';

    printf("x = %d, y = %f, c = %c\n", x, y, c);
    return 0;
}

 

それでは、ターミナルを開いてコンパイルしましょう。

 

実行結果

f:id:n-hiroki_zero:20160605161127p:plain

このようになります。

「y」の値が少しおかしいですね。56.4と表示して欲しいのに「56.400002」になってしまい、「0.000002」分高い値です。

実はプログラムにおいて、少数の計算は私たちが学んだ算数と比べると少し正確ではありません。

例えば、「0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 = 」この答えは通常「1」に思えますが、プログラムでは「1」になりません。

実際に試していませんが「0.99999999」となるのではないでしょうか?

 

あと、小数点をこんなに多く出力したくない場合があります。

その場合は「printf文」を少し工夫すればできます。

 

小数点第2位まで出力してみます。

先ほどのコードの

printf("x = %d, y = %f, c = %c\n", x, y, c);

の部分を、

printf("x = %d, y = %.2f, c = %c\n", x, y, c);

に変更して実行してみてください。

 

実行結果

f:id:n-hiroki_zero:20160605161039p:plain

大丈夫ですね!!

今回は「printf文」の使い方やマニュアルには触れませんが、気になる方は是非調べてみてください。

 

C言語入門1 <MacでC言語をコンパイルし、実行する。>

MacC言語

C言語について学んでいきます。

僕は学生の時に少しかじっているのですが、結構昔の話なので忘れているので復習を兼ねて基礎からスタートしたいと思います。

学生の時はVisualStudioを使用していたのですが、今回はMacのターミナルのgccで行います。(ローカル開発環境)

 

gccのバージョン確認

まず、gccのバージョンを確認しましょう。

・ターミナルを開いて、「gcc -v」とコマンドを入力しましょう。

僕は以下のようになりました。

f:id:n-hiroki_zero:20160604202557p:plain

C言語の実行までの流れ

・homeディレクトリ内に「C」という名前のフォルダを作成。

 「C」にファイルを置くようにします。

 

まずは簡単なプログラムを組んで実行までのやり方を確認しましょう。

以下の手順になります。

 

1、ソースファイル用意(コード記述)

2、フォルダ「C」内にソースファイルを「sumple.c」のように拡張子が.cで保存

3、ターミナルでディレクトリ「C」まで移動。(フォルダCに移動)

4、コンパイルする。

5、実行する。

 

このような形になります。

 

C言語ソースファイル用意(コード記述)

C言語を実際に書いていきます。

いつも使っているエディタで構いません。

 

今回は、手順確認のためなので簡単に、「hello world!」と表示させるものを作成します。

・ソースファイル「hello.c」を作成する。

以下コードです。

 

hello.c

 #include <stdio.h>

 int main(void){
  printf("hello world!\n");
  return 0;
 }

 

・「C」フォルダ内にhello.cというファイル名で保存する。

拡張子し注意してください。

 

コンパイル

コンパイルするためにまず、

・ターミナルで「C」ディレクトリまで移動する。

 

「C」ディレクトリで

gcc -o hello hello.c 実行

 

すると「C」ディレクトリ内

に「hello」というファイルができているはずです。

もしうまくいかなかったらコードを確認してみてください。

f:id:n-hiroki_zero:20160604210952p:plain

実行します。

・./hello 実行

 

hello world!」と出力されるはずです。

f:id:n-hiroki_zero:20160604211236p:plain

 

 実行できましたでしょうか?

次からは、C言語の文法についての基礎を学んでいきたいと思います。

HTTP通信

VisualStudioExpress2015使用VBからPostgreSQLに接続がうまくいかない。

 

・npgsqlが未対応になっていたこと。

odbc driverを使用しておこなおうとしてもうまくいかない。

・グーグル先生の情報が古い。(VisualStudioExpress2015の情報がない)

 

なので、PHPを使用してweb上のMySQLのDBに接続に変更。

VisualStudioからHTTP通信で引数をPHPファイルに渡し、DBに保存する。

 

なので、HTTP通信について今一度まとめたいと思います。

 

HTTP通信

HTTPとは

httpとは、通信プロトコルの一つでwebサーバとクライアント間で通信するための仕組み(ルール)。

httpがないと、インターネット上のサイトを見ることができなくなるので、なくてはならない技術です。

 ですが、ブラウザとWebサーバは「index.html HTTP/1.1」「HTTP/1.1 200 OK」といった文字列を送り合っているだけです。

ブラウザとWebサーバ間の通信で、どのようなデータをやり取りするかは、HTTPというルール(プロトコル)で定められています。

 

HTTPの仕組み

通信プロトコルの一つで、インターネット上でWebサーバーとクライアントが、相互に通信するために使用される仕組みです。

 

通信の流れとしては、まずWebサイトを閲覧したい人が、ブラウザを利用してサイトを公開しているWebサーバーへ、リクエストを出します。

 

次はWebサーバー側から、要求をしてきたブラウザに対してレスポンスがされます。

レスポンス情報には、Webサイトのコンテンツも含まれますので、返答された時点で、ブラウザ上にWebサイトが表示されることになります。

 

リクエストとレスポンスによって、私たちはWebサイトをみることができます。

それがHTTP通信です。

 

---- 例----

ヘッダ部

GET /index.html HTTP/1.1

Accept: image/jpeg, image/gif,・・・

Accept-Language:  ja-JP,en-US;q=0.5

User-Agent: Mozilla/4.0・・・

Accept-Encoding: gzip, deflate

Host: www.hoge.com

Connection: Keep-Alive

f:id:n-hiroki_zero:20160604091835p:plain

ヘッダ部

HTTP/1.1 200 OK

Content-Language: 4122

Server:Apache

Date: Mon, 6 June 2016 06:35:00 GMT

・・・・

Content-Type: text/html; charset=UTF-8

 

ボディ部

<html>

・・・・

・・・・

</html>

 

リクエストの1行目「GET /index.html HTTP/1.1」に注目します。これは、リクエストラインと呼ばれるもので「リクエストの方法」「リクエストの対象」「使用するプロトコル」という情報で作られている。

 

今回の場合では、

GET = リクエストの方法

/index.html = リクエストの対象

HTTP/1.1 = 使用するプロトコル

となっています。

 

この中で一番重要な情報は、リクエストの方法のGETです。

GETはWebサーバからWebページの情報を取得する時に使用するリクエストメソッドです。

他にはPOSTリクエストというリクエストメソッドもあります。

POSTはアンケートフォームなどの情報をサーバに送りたい時に使用します。

 

次は、レスポンスの1行目「HTTP/1.1 200 OK」に注目します。

これはステータスラインと呼ばれるもので、リクエストを受けてWebサーバの動作した結果が表示されます。

 

HTTP/1.1 = 使用するプロトコル

200 OK = 動作結果

 

このステータスラインの「200」は「リクエストが成功した」という意味のコードです。これをステータスコードといいます。

「OK」は補足メッセージです。

HTTPではかなり多くのステータスコードがあります。

Webサーバは、リクエストされた結果どうなったかをステータスコードという数値で返します。

今回は重要なものを以下で紹介します。

 

200 OK = リクエストが成功した

404 Not Found = リクエストされた対象が見つからない

405 Method Not Allowed = リクエストの対象が、使用したリクエストメソッドを許可していない

500 Internal Server Error = サーバ内部でエラーが発生した

 

レスポンスの2行目以降は「ヘッダ部」と「ボディ部」にわかれます。

ヘッダ部にはWebサーバがブラウザに送ったレスポンスに関する情報が書かれていて、ボディ部にはレスポンスのデータの本体が書かれています。

 

ヘッダ部の一番下にある「Content-Type: text/html; charset=UTF-8」はContent-Typeヘッダといい、ボディ部が何のデータであるかを示しています。

 

・HTMLをレスポンスする場合

Content-Type:text/html; charset=UTF-8

JPEGをレスポンスする場合

Content-Type: image/jpeg;

 

となります。(文字コードなどはその時により変わりますが、一般的にはUTF-8ですね)

 

 

簡単にですが、HTTP通信に触れてみました。

基礎ができないと応用ができないので、復習を兼ねて書きました。

参考になれば幸いです。

 

 

プログラミングというもの

「プログラミングをやったことのない人」や「これからプログラミングを学ぼうという人」向けに書きます。(ほぼ僕用のメモです)

 

正直、壁にぶつかり続けてモチベーションを維持するために書きたくなりました。

 

プログラミングって聞いたら何を思い浮かべますか?

いろんな答えが出てくると思います。

 

プラスな答え

・ワクワクする。

・楽しそう!

・ホームページやアプリを作るために必要な技術。

・これからの世の中を考えると必要な技術の一つだと思うので是非身につけたい。

・目指せマークザッカーバーグ!!!

 

マイナスな答え

・難しそうで手を出せない。

・何をどうやって始めればいいかわからない。

・興味ないしやりたくない。

・理数系じゃないとできないんじゃないの?

・IQが高くないとできなそう。

 

など、他にもいろんな答えが出てくると思います。

 

プログラミングとは

wikiによると、

プログラミング (コンピュータ) - Wikipedia

 

プログラミングを一言で言うと、「コンピュータに命令を与え動かす技術」だと思います。

 

ですが、そんな堅いことじゃなくて、もっと魅力のある言い方をしたいです。

 

・自分のできることを増やすための力

・自分の夢を叶えるための力

・自分の主張したいことをみんなに伝えるためのツール

・人の力になるための力

・仕事がなくて困っている人の力になれるもの

・体の不自由な人の力になれるもの

・恵まれない人の力になれる

・ゲームだって作れちゃう。

・あなたが使っている「スマホ」や「パソコン」だってプログラミングの技術でできている。

などなど。

 

僕はプログラミングには

「無限の可能性がある」

と思っています。

 

プログラミングをやってみて

僕はプログラミング歴1年ほどでまだまだ未熟です。

実際にプログラミングをやってみて気づいたこと。

 

・理数系の人に向いているかなと思っていたけど、そんなことない。どちらかというと文系の人の方が向いている気がする。

・IQや学力よりも根気強さの方が断然必要!

・常に壁にぶつかっている感じがする

・プログラミングの世界は広すぎる。それに新しいものが生まれてくるのも、ものすごく早い。

・専門用語が多すぎて全くわからない。プログラミングの記事は日本語でも日本語に感じない

・IT系ニュースも多い。

・全部を極めるのは無理!

・知識の量よりも調べる力の方が重要!

・プログラミングや勉強する時の環境が大事!お洒落な場所や気が引き締まる場所など。

・インターネット上でプログラミングの勉強になるサービスが多い(無料なものも多い)

などなど。

 

とにかく

やりがいがあるものです!!

 

オススメのサイト紹介

プログラミングを始めるにあたって僕のオススメのサイトをいくつか紹介します。

dotinstall.com

 

schoo.jp

 

prog-8.com

 

teratail.com

 

liginc.co.jp

 

www.gizmodo.jp

 

qiita.com

 

もっとオススメはあるんですが、結構出しすぎたと思うのでこれでやめときます。

プログラミングを始めて一番苦労したのは、専門用語の多さです。

なのでいろんな記事を読んで、わからない用語があったらその都度グーグルなどで調べることの繰り返しをしました。

 

 

終わりに、

プログラミングはとても難しいものです。ですが、それと同時にとても夢があります!決して不可能ではありません。努力を続けて諦めなければきっとやりたいことが実現するものです!まだ未熟な僕がこんなこと言っても説得力ありませんね。

 

僕は諦めずに努力を続けます!!

DB用語メモ

データベースに関係ありそうな用語メモ

Windows Server

Windows Serverとは、Microsoft社のサーバコンピュータ向けOSの製品シリーズ名。 同社のOS製品ブランド「Windows」のサブブランドの一つで、企業の情報システムなどで利用されるサーバ機に導入することを想定して開発された一連の製品群で構成される。

ASP.NET

ASP.NETは、マイクロソフトが開発・提供しているWebアプリケーションフレームワークで、動的なウェブサイトやWebアプリケーションXML Webサービスの開発や運用を行う。ASP.NETActive Server Pages.NET向けにしたものである。

Translate

トランスレートとは、翻訳(する)、通訳(する)、訳文などの意味を持つ英単語。

ITの分野では、ある形式で記述されたデータなどを、意味や内容を変えずに別のデータ形式に変換することをトランスレートということが多い。トランスレートを行なう装置やソフトウェアシステムなどのことをトランスレータtranslator)という。

通信ネットワーク上で規格の異なる機器が通信できるよう、プロトコルデータ形式を通信経路上で透過的に相互変換したり、あるプログラミング言語で書かれたソースコードを同じ処理を行う別の言語のコードに変換することをトランスレートということが多い。

動画圧縮の分野では、同じ圧縮形式で動画の品質・データ容量(ビットレート)だけを変更(特に、削減)する変換処理のことをトランスレートと呼び、異なる圧縮形式へ変換するトランスコードtranscode)あるいはトランスコーディングtranscoding)とは区別される。

また、文字通り、自然言語間の自動翻訳などをトランスレートということもある。

ODBC(Open Database Connectivity)

ODBCとは、アプリケーションソフトデータベース管理システムDBMS)などに接続し、データの取得や書き込み、操作などを行う方法の標準を定めたもの。Microsoft社が制定したもので、主に同社のWindowsで動作するデータベース関連ソフトウェアで用いられる。

アプリケーションソフトなどからDBMSの基本的な機能を利用するための手順を定めたもので、データベースの作成や削除、SQLクエリなどによるデータ検索や取得、書き込みなど、データベースに対する基本的な操作を行なうことができる。ODBCDBMS毎の違いを吸収し、同一のコードデータベースアクセスできるようにする。

ODBCを介してデータベースを操作するには、そのDBMSODBCによるアクセスに対応させるソフトウェアODBCドライバ)が必要で、著名なDBMS開発元・販売元は標準でODBCドライバを添付したり配布したりしている。

ODBCは様々なDBMSに共通する基本的な機能を提供するため、DBMS固有の機能を利用したい場合はODBCを使わずにそのDBMSに直接アクセスする方法を用いる必要がある。また、DBMSごとのデータの管理方式やSQLの仕様の微妙な違いなどから、同一のコードが各DBMSで完全に同じように動作することは保証されない。

ODBCDBMSの管理するリレーショナルデータベースRDB)にアクセスするために使われることが多いが、ODBCドライバの中には、DBMSが管理する方式ではないデータベースMicrosoft Access形式のデータベースファイルなど)を操作するためのものや、RDBではない形式のデータCSVファイルなど)を扱うことができるものもある。

MSDN

MSDNとは、Microsoft社ソフトウェア開発者向けサポートサービス。1年単位の会員制で、「ライブラリサブスクリプション」「プロフェッショナルサブスクリプション」「ユニバーサルサブスクリプション」の3コースがあり、定期的に各種のドキュメントや評価用オペレーティングシステム開発ツールなどが提供され、技術的サポートも受けることができる。また同社Webサイト上ではMSDN Onlineが公開されており、様々な開発者向け情報を無償で見ることができる。

DSN

DSNは、データベースの所在を表すファイル名、DBMS(データベース管理システム)の種類、接続に必要なドライバソフト、バッファメモリの容量といったパラメータ、ログイン時のユーザ名・パスワードなどをまとめたもので、データにアクセスするために必要とされる情報である

Sybase

Sybaseとは、著名なデータベースソフトメーカーの一つ。また、同社の製品群や主要製品を指す場合もある。

1984年創業のデータベース業界大手の一社で、主要製品である商用のリレーショナルデータベース管理システムRDBMS)およびデータベース関連のソフトウェアを提供している。

1987年にRDBMSSybase SQL Server」を発売し、翌88年にMicrosoft社と共同でWindowsおよびOS/2プラットフォーム向けに同製品を移植した。その後両社の提携は解消され、Microsoft社Sybase SQL Serverコードを元に「Microsoft SQL Server」の最初のバージョン開発した。

Sybase社は1995年にRDBMS製品を「Adaptive Enterprise Server」に改称し、現在までこの名称で提供している。2010年5月にERPパッケージ世界最大手のドイツSAP社に買収され、現在では同社の子会社となっている。

ADO.NET

ADO.NETとは、Microsoft社が提供する、Microsoft .NET環境でデータベースアクセスを行うための基盤となるソフトウェア。従来のADOを.NET環境に特化するよう進化させたもので、これを利用すると.NET環境で簡単にデータベースアクセスすることができる。

ADOとの大きな違いとしては、データベースから引き出したデータを自身のメモリ上に保存しておく「非同期データセット」を、最初から利用可能なように設計されていることがある。

ADO.NETが直接に操作するのはこのデータセットだが、これはメモリ上にあるため高速に処理することができ、処理中にデータベースサーバと接続し続ける必要もなくなる。

また、データ転送形式にXMLを採用しているため、他の環境との相互運用性も高くなっている。従来のADOの特徴であった言語独立性などは引き継ぎ、さらに.NETでホストされるあらゆる環境から利用可能なよう拡張されている。

Oracle

Oracleとは、企業の情報システムなどで利用される業務用ソフトウェア開発・販売などを手がける世界的な大手企業の一つ。

Oracleの名称は同社の主要なソフトウェア製品群のブランド名としても使われており、特に、その中核を成すリレーショナルデータベース管理システムRDBMS)の「Oracle Database」のことを略してOracleと呼ぶことが多い。

データベース製品を中核に、主に大企業向けのERPCRMなど業務用ソフトウェアパッケージ製品を展開している。関連する開発ツールソフトウェアの提供や、同社製品を扱うエンジニアの資格認定(ORACLE MASTER)なども行っている。2009年にはSun Microsystems社を買収、統合し、Javaをはじめとする同社製品・資産を継承した。

1977年6月にLawrence J. Ellison(ラリー・エリソン)氏が創業した企業で、本社は米国カリフォルニア州レッドウッドシティ。日本法人は1985年設立の日本オラクル株式会社。

VBでPostgreSQLに接続 その2

前回はNpgsqlが未対応だったため断念せざるおえなかった。

なので今回は他の方法を探してみる。

 

Google先生に聞いてみる<ODBCドライバ>

 

いろいろ検索してみたが、ODBCドライバを使えばいける気がする。

ですが、また結論から言うと今回もうまくいきませんでした。。。

 

 

以下参考サイト

データ ソース: 接続 (ODBC)

PostgreSQL + VB ADO 編1 - ODBC ドライバ、レコード更新、レコード参照 - SAK Streets

http://www.cyber-funnel.com/postgres/index1156.html

 

そもそもODBCドライバって何?

 

ODBCとは

Open Database Connectivityの略で、RDBMSにアクセスするための共通インターフェース(API)である。 データへのアクセスを統一化することを目的としており、たとえばクライアント/サーバ型ではないMicrosoft Accessの管理するデータベースファイル(MDB)や、そもそもRDBMSではないCSVファイルへのアクセスなども、それに対応するODBCドライバがあれば他の一般的なデータベースへのアクセスするのと同様な方法で利用することが可能になる。 ODBCは、主にMicrosoftWindows上で利用されることが多いがLinuxUNIXなどで利用されるケースもある。

Wiki参考)

 

まず、ODBC Driverをダウンロード!

やり方は上記のサイトを参考に。

 

インストールが完了したので、 VBスクリプトをVisualStudioExpress2015に入力して試してみる。

 

が、ビルドするとエラーになってしまう。

 

エラーの内容を見てみるとSETはサポートされなくなったみたい。。。

 

他にコードが落ちていないかいろいろと検索してみたが、コードが古くて対応していない。

 

ODBC Driverではできないのか?

それなら、EntityFrameworkはどうだろう。

でも、またできなかったらダメージでかい。

 

ひとまずテラテイルで質問してみる。

 

でもMicrosoftのサイトでVisualStudio2015でPostgreSQL ODBC Driverは対応しているって書いてあったような気が。。。

 

次こそ、うまくいきますように。。。