MacでArduinoダウンロード
1、下記のホームページでダウンロードします。
2、このような画面があるので、黒い四角で囲った「JUST DOWNLOAD」クリック
ダウンロードが開始されます。
3、arduino-1.6.9-macosx.zipを解凍します。
4、すると上の画像のようにArduino.appが追加されるので「アプリケーション」に追加しましょう。
ONというラベルのLEDが点灯し、LというラベルのLEDが点滅します。
6、Arduino.appを起動
以下の画像のようになっていると思います。(誤差あり)
7、ツール→ボード→Arduinoの種類を選択
8、シリアルボード→以下の画像には2項目あるがどちらでも可
僕は、/dev/cu.usbmodem1411(Arduino/Genuino Uno)を選択。
以上でダウンロードから設定まで完了!
今度簡単な実行例などの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;
}
それでは、ターミナルを開いてコンパイルしましょう。
実行結果
このようになります。
「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);
に変更して実行してみてください。
実行結果
大丈夫ですね!!
今回は「printf文」の使い方やマニュアルには触れませんが、気になる方は是非調べてみてください。
C言語入門1 <MacでC言語をコンパイルし、実行する。>
MacでC言語
C言語について学んでいきます。
僕は学生の時に少しかじっているのですが、結構昔の話なので忘れているので復習を兼ねて基礎からスタートしたいと思います。
学生の時はVisualStudioを使用していたのですが、今回はMacのターミナルのgccで行います。(ローカル開発環境)
gccのバージョン確認
まず、gccのバージョンを確認しましょう。
・ターミナルを開いて、「gcc -v」とコマンドを入力しましょう。
僕は以下のようになりました。
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」というファイルができているはずです。
もしうまくいかなかったらコードを確認してみてください。
実行します。
・./hello 実行
「hello world!」と出力されるはずです。
実行できましたでしょうか?
次からは、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
ヘッダ部
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によると、
プログラミングを一言で言うと、「コンピュータに命令を与え動かす技術」だと思います。
ですが、そんな堅いことじゃなくて、もっと魅力のある言い方をしたいです。
・自分のできることを増やすための力
・自分の夢を叶えるための力
・自分の主張したいことをみんなに伝えるためのツール
・人の力になるための力
・仕事がなくて困っている人の力になれるもの
・体の不自由な人の力になれるもの
・恵まれない人の力になれる
・ゲームだって作れちゃう。
・あなたが使っている「スマホ」や「パソコン」だってプログラミングの技術でできている。
などなど。
僕はプログラミングには
「無限の可能性がある」
と思っています。
プログラミングをやってみて
僕はプログラミング歴1年ほどでまだまだ未熟です。
実際にプログラミングをやってみて気づいたこと。
・理数系の人に向いているかなと思っていたけど、そんなことない。どちらかというと文系の人の方が向いている気がする。
・IQや学力よりも根気強さの方が断然必要!
・常に壁にぶつかっている感じがする
・プログラミングの世界は広すぎる。それに新しいものが生まれてくるのも、ものすごく早い。
・専門用語が多すぎて全くわからない。プログラミングの記事は日本語でも日本語に感じない
・IT系ニュースも多い。
・全部を極めるのは無理!
・知識の量よりも調べる力の方が重要!
・プログラミングや勉強する時の環境が大事!お洒落な場所や気が引き締まる場所など。
・インターネット上でプログラミングの勉強になるサービスが多い(無料なものも多い)
などなど。
とにかく
やりがいがあるものです!!
オススメのサイト紹介
プログラミングを始めるにあたって僕のオススメのサイトをいくつか紹介します。
もっとオススメはあるんですが、結構出しすぎたと思うのでこれでやめときます。
プログラミングを始めて一番苦労したのは、専門用語の多さです。
なのでいろんな記事を読んで、わからない用語があったらその都度グーグルなどで調べることの繰り返しをしました。
終わりに、
プログラミングはとても難しいものです。ですが、それと同時にとても夢があります!決して不可能ではありません。努力を続けて諦めなければきっとやりたいことが実現するものです!まだ未熟な僕がこんなこと言っても説得力ありませんね。
僕は諦めずに努力を続けます!!
DB用語メモ
データベースに関係ありそうな用語メモ
Windows Server
ASP.NET
Translate
トランスレートとは、翻訳(する)、通訳(する)、訳文などの意味を持つ英単語。
ITの分野では、ある形式で記述されたデータなどを、意味や内容を変えずに別のデータ形式に変換することをトランスレートということが多い。トランスレートを行なう装置やソフトウェア、システムなどのことをトランスレータ(translator)という。
通信ネットワーク上で規格の異なる機器が通信できるよう、プロトコルやデータ形式を通信経路上で透過的に相互変換したり、あるプログラミング言語で書かれたソースコードを同じ処理を行う別の言語のコードに変換することをトランスレートということが多い。
動画圧縮の分野では、同じ圧縮形式で動画の品質・データ容量(ビットレート)だけを変更(特に、削減)する変換処理のことをトランスレートと呼び、異なる圧縮形式へ変換するトランスコード(transcode)あるいはトランスコーディング(transcoding)とは区別される。
ODBC(Open Database Connectivity)
ODBCとは、アプリケーションソフトがデータベース管理システム(DBMS)などに接続し、データの取得や書き込み、操作などを行う方法の標準を定めたもの。Microsoft社が制定したもので、主に同社のWindowsで動作するデータベース関連ソフトウェアで用いられる。
アプリケーションソフトなどからDBMSの基本的な機能を利用するための手順を定めたもので、データベースの作成や削除、SQLクエリなどによるデータの検索や取得、書き込みなど、データベースに対する基本的な操作を行なうことができる。ODBCはDBMS毎の違いを吸収し、同一のコードでデータベースにアクセスできるようにする。
ODBCを介してデータベースを操作するには、そのDBMSをODBCによるアクセスに対応させるソフトウェア(ODBCドライバ)が必要で、著名なDBMS開発元・販売元は標準でODBCドライバを添付したり配布したりしている。
ODBCは様々なDBMSに共通する基本的な機能を提供するため、DBMS固有の機能を利用したい場合はODBCを使わずにそのDBMSに直接アクセスする方法を用いる必要がある。また、DBMSごとのデータの管理方式やSQLの仕様の微妙な違いなどから、同一のコードが各DBMSで完全に同じように動作することは保証されない。
MSDN
DSN
Sybase
Sybaseとは、著名なデータベースソフトメーカーの一つ。また、同社の製品群や主要製品を指す場合もある。
1984年創業のデータベース業界大手の一社で、主要製品である商用のリレーショナルデータベース管理システム(RDBMS)およびデータベース関連のソフトウェアを提供している。
1987年にRDBMS「Sybase SQL Server」を発売し、翌88年にMicrosoft社と共同でWindowsおよびOS/2プラットフォーム向けに同製品を移植した。その後両社の提携は解消され、Microsoft社はSybase SQL Serverのコードを元に「Microsoft SQL Server」の最初のバージョンを開発した。
ADO.NET
ADO.NETとは、Microsoft社が提供する、Microsoft .NET環境でデータベースアクセスを行うための基盤となるソフトウェア。従来のADOを.NET環境に特化するよう進化させたもので、これを利用すると.NET環境で簡単にデータベースにアクセスすることができる。
ADOとの大きな違いとしては、データベースから引き出したデータを自身のメモリ上に保存しておく「非同期データセット」を、最初から利用可能なように設計されていることがある。
ADO.NETが直接に操作するのはこのデータセットだが、これはメモリ上にあるため高速に処理することができ、処理中にデータベースサーバと接続し続ける必要もなくなる。
Oracle
Oracleとは、企業の情報システムなどで利用される業務用ソフトウェアの開発・販売などを手がける世界的な大手企業の一つ。
Oracleの名称は同社の主要なソフトウェア製品群のブランド名としても使われており、特に、その中核を成すリレーショナルデータベース管理システム(RDBMS)の「Oracle Database」のことを略してOracleと呼ぶことが多い。
データベース製品を中核に、主に大企業向けのERPやCRMなど業務用ソフトウェアパッケージ製品を展開している。関連する開発ツールやソフトウェアの提供や、同社製品を扱うエンジニアの資格認定(ORACLE MASTER)なども行っている。2009年にはSun Microsystems社を買収、統合し、Javaをはじめとする同社製品・資産を継承した。
VBでPostgreSQLに接続 その2
前回はNpgsqlが未対応だったため断念せざるおえなかった。
なので今回は他の方法を探してみる。
Google先生に聞いてみる<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上で利用されることが多いがLinux、UNIXなどで利用されるケースもある。
(Wiki参考)
まず、ODBC Driverをダウンロード!
やり方は上記のサイトを参考に。
インストールが完了したので、 VBスクリプトをVisualStudioExpress2015に入力して試してみる。
が、ビルドするとエラーになってしまう。
エラーの内容を見てみるとSETはサポートされなくなったみたい。。。
他にコードが落ちていないかいろいろと検索してみたが、コードが古くて対応していない。
ODBC Driverではできないのか?
それなら、EntityFrameworkはどうだろう。
でも、またできなかったらダメージでかい。
ひとまずテラテイルで質問してみる。
でもMicrosoftのサイトでVisualStudio2015でPostgreSQL ODBC Driverは対応しているって書いてあったような気が。。。
次こそ、うまくいきますように。。。