//tips
//基本情報理解
FPGA/field programmable gate awayは汎用論理回路を備え、ハードウェア記述言語によってプログラミングすることで目的にあった論理回路を構築できる。
プログラミング言語に似た文法で論理回路の種類や配線状態、動作条件などを記述することができる。
一般的なモータは、モータに与える電圧と電流の積により仕事量を制御できる。負荷が同じ場合は乾電池一本よりも2本を直列に接続して電圧を2倍にした方がより高速に回転する。
PWM/pulse width modulationは電圧を変えるのではなく、電気を通している時間を制御することで仕事量を制御する。つまり、スイッチのオンとオフを制御することでモータの仕事量を制御する。
800*600ピクセル、24ビットカラーで30フレーム/秒の動画の配信に最小限必要な帯域幅を計算する。
1ピクセルあたり24ビットカラー使うので、1フレームあたりのデータ量はとして
800*600*24=11,520,000ビット
1秒に30フレームなので11,520,000ビット*30となり約350Mビット/秒であることがわかる。
//fittr
fittrは、ワークアウトをオンラインでユーザーごとにカスタマイズして提案するアプリのよう。マンツーマンでの個別レッスンよりリーズナブルで一ヶ月千円程度という価格提案にインパクトを感じた。一般的には個人レッスン一回で二千五百円程度のようなのでこれはかなりお得に思われた。
どのような内容のことを行うのかわからなかったので、youtubeを見た。かなりカスタマイズ性能が高そうに見え興味深かった。ピッチとしては触りの部分の価格インパクトで引きつけた後でクロージングという方向性だったのだろうか。
//smart contract
昨日記述していった内容を文法や構成を見直し、理解していく。
まずはsolidityから。codeをかきながらpureやviewってなんだったかを振り返った。
contract My1017Contract{
int a = -5;//負を取れる
uint b = 3;//整数のみ、小数点以下は存在せず。少数で書きたい場合は、weiの10階乗で表すことになる。
bool c=true;
string d="hi";//文字数はいくらでも良い
bytes32 e="ETH";//決まった長さの文字
address f=0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
function add(uint x, uint y) public pure returns(uint){
//pureはxとyの変数しか使わず、関数の外部の変数を取らないということ
//returns(uint)はuintで結果を返すということ
uint result;//変数
result =x+y;
return result;
}
function addByB(uint x)public view returns(uint result){
//viewは関数外の変数を使用する時に使う。今回は変数bを使用。
result = x+b;//bは上部にあるb = 3;
}
function changeB(uint x)public returns(uint){
//今回はviewでもpureでもなく関数外の変数の中身を変える。そのためview部分はなし。
b=x;
return b;
}
}
配列とmappingの仕組みも一緒に見ていく。
pragma solidity 0.8.4;
contract Array1{
uint[] numbers=[1,2,3,4,5];
function getNumbers() public view returns(uint[] memory){
//stringをリターンする時と同様に配列を返す場合もmemoryをつける
return numbers;//配列をreturnできる
}
function getNumberLength() public view returns(uint){
return numbers.length;
}
function addNumber(uint _number) public {
numbers.push(_number);//配列に引数_numberを加える
//登録していない配列場所にnumbers[5]=_number:とすることはできない。
//そのような場合はpushで追加する必要がある。
}
function popNumber() public {
numbers.pop();//配列の右端を消したい時。真ん中部分を消すときは全てずらしていく必要があるので厄介。
}
}
contract Array2{
uint[6] numbers=[1,2,3,4,5];
function getNumbers() public view returns(uint[6] memory){
return numbers;//[1,2,3,4,5,0]でリターンできる
}
function modifyNumber(uint _index,uint _number)public {
numbers[_index]=_number;
}
}
contract Mapping{
mapping(address=>uint) balance;//keyとなるアドレスに紐づいた残高の組み合わせ
function addBalance(uint _toAdd) public returns(uint){
//残高の振り込み
//送った人のアドレスはmsg.senderで得られる
balance[msg.sender]+=_toAdd;
return balance[msg.sender];//送った人の残高
}
function getBalance(address _address) public view returns(uint){
return balance[_address];//アドレスの人の残高
}
この修行はまだまだ続く模様。jsと構築の理解は少し先になるか。。