【関数型言語】IntelliJ での fpinscala の練習問題を解く環境

演習問題をビルド・実行する環境をどうしたものかと思っていた。演習問題以外のソースコード(テキストに載っている List や Option など)を打ち込まないとビルドできないからだ。だが、いいページを見つけた。感謝。 qiita.com ubuntu でも問題なく下記の…

【関数型言語】名前渡し(call by name) と必要渡し(call bye need)

Scala 関数型デザイン&プログラミング http://amzn.asia/bIfSCQS の「第5章 正格と遅延」に Scalaの非正格かんすうは引数を値渡しではなく名前渡しでうけとります。 という記述があった。「名前渡し」は初めて聞いたので、ぐぐった。 引数の値渡しと名前渡…

【関数型言語】例外を使わないエラー処理

Scala では Option/ Either型を使う。 Hakell だと Maybe/Eitherモナドを使うらしい。 C++17だと optional - cpprefjp C++日本語リファレンス javascript だとMaybe/ Eitherモナド。 elixir:通常はタプルを返すが、Option/Either と同等?要調査。 ==> elix…

【関数型言語】promiseとかfutureとか

恥ずかしながら、今日初めて promise とか future を知った(汗 postd.cc qiita.com okapies.hateblo.jp 非同期処理を行うための機能らしい。今どきの言語は大抵持っているとか(大汗 Scala Java Javascript C++ Haskell と elixir については、該当機能があ…

【関数型言語】CPS(継続渡し)と末尾再帰最適化

ループと再帰 関数型言語ではループを再帰で表す(ことがおおい)らしい。だが、再帰はスタックオーバーフローする危険がある。それを避けるには、末尾再帰最適化をすればよい。これを使うと、再帰呼び出しにもかかわらず、スタックを消費しない。 scala, ha…

gibo と git-flow をインストールした

myuon.github.io という記事で、 gibo と git-flow を知った。あ、git-flow は以前にもググったことがあったが忘れていた。 gibo は .gitignore をプロジェクトごとに自動生成してくれるツール。各種言語に対応している。 対応言語は gibo -l で表示してくれ…

GitClaken を使ってみた

コマンドラインでは git clone でgithub に作ったリポジトリをローカルにクローン git add で、ローカルなリポジトリにファイルを追加。 git commit でバージョン管理の対象にし、コミットメッセージをつける git push でgithub のリポジトリにも反映 といっ…

【関数型言語】IDEのインストール

今までコマンドラインツールでコードを書いていたが、試しにIDEも使ってみることにした。 ググッて見ると、 scala, elixir, haskell の全てに対し、 IntelliJ Community Edition が対応していることがわかった。(^^) 最初に Windows10 に IntelliJ をインス…

【関数型言語】scala関連ツール

開発に必要なツール類をリストアップしてみる。 ビルドツール デバッガ テスティングフレームワーク モックライブラリ 統合開発環境 ビルドツール sbt 一択の模様。パッケージ管理、プロジェクト管理なども兼ねているみたい。 デバッガ 不明。調査が必要。 …

【関数型言語】勉強の進め方

[Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド](http://amzn.asia/1I1hIlZ) は、演習問題が多数あるのがとてもよい。 関数型言語を理解するのに、複数の言語を比較してみようと思う。 C++ Java Scala Haskell elixi…

【C++11】コレクションとスマートポインタ

標準ライブラリのスマートポインタには std::unique<T> と std::shared_ptr<T> がある。 また、コレクションには vector list map set などがある。コレクションに格納する型も 値(実体)T 参照 T& 生のポインタ T* と、上記2種類のスマートポインタがある。 コレ</t></t>…

GDBのシミュレータでエンディアンを確かめる

インテルのCPUはリトルエンディアン、ルネサスの SH や H8 はビッグエンディアン。 これをどうやったら確かめられるか考えた。GDBにはシミュレータ機能があることを思い出した。そこで、簡単なソースコードをシミュレータで動かし、メモリの内容を表示させて…

関数型言語のツール整理

関数型言語の各種ツールについて、整理する パッケージ管理 対話的実行環境 ビルド テスト Web Application Framework 対象言語は Haskell Elixir Scala Typescript また、関数型言語の特徴について、比較する。 カリー化 高階関数 部分適用 パターンマッチ…

関数型言語のツール整理

関数型言語の各種ツールについて、整理する パッケージ管理 対話的実行環境 ビルド テスト Web Application Framework 対象言語は Haskell Elixir Scala Typescript また、関数型言語の特徴について、比較する。 カリー化 高階関数 部分適用 パターンマッチ…

PlayFramework, Scala, typescript を触ってみよう

Webなアプリケーションはほとんど作ったことがない。 すこし勉強してみることに。

memory leak check by sanitizer

#include <iostream>using namespace std; class X{public: X(); ~X();}; X::X(){ cout << "X()" << endl;}X::~X(){ cout << "~X()" << endl;} int main(){ X* pX = new X(); //pX->~X(); delete pX; return 0;} kzono@rachael:$ g++ -Wall callDestructor.cpp -fsanit</iostream>…

std::chrono::system_clock::time_point と time_t

時刻を秒単位で記録できればよいのであれば、time_t で十分見たい。 system_clock - cpprefjp C++日本語リファレンス 今回は通信用または記録用に時刻をシリアライズしたいわけなので、結局は time_t に変換することになりそう。 time_t は long に typedef …

MessagePack と日時(タイムスタンプ)

各種のセンサーから取得した値をサーバへ送る場合、シリアライズする必要がある。MessagePack が良さげ。圧縮率、対応言語の多さ、IDL不要など。 google さんの protocol buffers はIDLが必要。 で。センサーの計測データなので、計測日時が必要。C**の場合…

raspberrypi, mbed, esp32

デバイスの制御はラズパイよりmbed, esp32 のほうが適している。タイマーやADコンバータなどのペリフェラルが違う。 ラズパイに 向いているのは、タッチパネル、動画のストリーミングなど。 、

シリアライズライブラリ

ソケット通信でデータを送受信するとき、ネットワークバイトオーダや構造体のパディングなどを考慮して、通信用バイト列に変換する必要がある。 自分でゴリゴリ作るより、便利そうなライブラリを探し、使うことにする。 Google Protocol Buffers MessagePack…

【ソケット通信】ネットワークバイトオーダと recv の戻り値

C言語のソケット通信プログラムの続き。固定長文字列の送受信まで昨日成功していたので、shot int(16bit) や int(32bit) ,long(64bit) など、ネットワークバイトオーダが問題となるデータを送受信するサンプルを今日動かした。 が。簡単だと思ってやってみる…

【ソケット通信】CとC++ サンプルコードの修正

動いたサンプルをベースに、言語をまたいでクライアント/サーバのソケット通信をするため、通信仕様を揃えるべく、修正。 昨日、C言語の修正がうまく行かなかったのは、送受信のときにデータ長を固定で送受信しなかったこと。可変長でテストしてしまった。 …

C言語でソケット通信

漸くC言語でクライアント・サーバなソケット通信プログラムのサンプルが動いた。 ネット上のサンプルと、微妙にヘッダファイルの名前やパスが違っていて手こずった。 これで、C/C++/python の3言語で、それぞれクライアントとサーバのサンプルが動いたこと…

nc(netcat) on ubuntu

サーバ・クライアント間のソケット通信サンプルプログラムの動作確認などに便利なコマンドを発見。 nc(netcat)コマンドで覚えておきたい使い方8個 | 俺的備忘録 〜なんかいろいろ〜 ネットワーク診断の現場から(netcat編・その1) | NTTデータ先端技術株式…

すこし汎用的な Makefile

比較的簡単なプロジェクト用に Makefile のテンプレートを作った。 ソースファイルとオブジェクトファイルのディレクトリを分けたところが、少し工夫したところ。 とはいえ、昔は階層化 Make まで頑張って対応していたので、あくまで簡易版。 # DirectoriesS…

【ESP32】Boost.asio を使ったソケット通信

ubuntu への boost のインストール boost のパッケージがリポジトリにあるかどうか探した。 $ sudo apt-cache search boost たくさん見つかった。おそらく最新版ではなく結構古いバージョンだと思われるが、標準でサポートされているのが安心。自分でビルド…

【ESP32】ソケット通信のお勉強

ESP32の特長は、WiFiとBluetooth を安価(チップは800円、ボードで1600円)で使えること。しかも、ROM/RAMはArduino(AVRMega386)より多いこと。 マイコンとしてのペリフェラルも充実している。ペリフェラルのサンプルコードも公開されているので後で…

【ESP32】HelloWorld まで成功!

Windows10上の MinGW+MSYS や Cygwin だと、微妙にエラーが出てしまった。 VirtualBox 上の Ubuntu で環境構築を試みたところ、サンプルプロジェクトのビルドまではできるのだが、USBケーブルによるダウンロードができなかった。USBシリアル変換チップを使い…

【ESP32】arduino IDE シリアル通信できた

Arduino のシリアル通信のスケッチがそのまま動いた。(^^) esp32用ライブラリがシリアル通信をサポートしているということ。 GPIO:LEDとスイッチ ADC:可変抵抗器(ボリューム)、各種センサ(加速度) Timer(PWM):LED調光、スピーカ、DCモータ、サーボモ…

ESP32DevkitC を始めるよ

しばらく前に買って放置していたESPDevkitC をいよいよ触り始めることにする。