読者です 読者をやめる 読者になる 読者になる

組み込み系知識諸々

RISCCISCの違い

CISCとRISC、何が違う? (3/3) - EDN Japan

普通に使う分にはあまり違いはないのかもしれない

 

Windowsの備忘録

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\ベンダ名\プロダクト名\

というディレクトリを作って、その中にアプリケーションへのショートカットを入れる

表示されないプログラムをメニューに表示する

 

Visual Studio 2015でc#でフォームアプリケーションを作って、そのアプリケーションから*.iniファイルを読み込むように作って、Visual Studioインストーラ作成ツールでインストーラを作った時にインストールされる先のProgram Filesのフォルダの中に.iniファイルが存在するようにするやり方がわからない。

Linuxでの補助記憶装置の管理とか

KiBやMiBやGiBと、KB, MB, GBとの違い

キビバイトメビバイトギビバイトと読む。

MiB = 220 B = 1,048,576 B(バイト)

MB = 10^6B = 1,000,000B

メビバイト - Wikipedia

 

バイスを挿した時に、認識されているか確認する関係

$ dmesg

$ lsusb -v (←USBデバイスの時)

 

UUIDを調べる

$ sudo blkid

 

補助記憶装置のときの状況確認

$ sudo fdisk -l

$ sudo parted -l

$ df -Th

$ cat /etc/fstab

 

バイス

ハードディスクだと/dev/sd*

SDカードだと/dev/mmcblk*や/dev/sd*

(どういうルールで名付けているのか不明)

 

df -Thの読みかた

/dev/rootがどのデバイスのことなのかは、cat /proc/cmdlineのroot=を見ることでわかる。RPi3の場合は/mmcblk0p7となっている。

/run/, /run/lock は

partitioning - What are "/run/lock" and "/run/shm" used for? - Ask Ubuntu

によると"they store temporary system files, including device locks and memory segments shared between different processes"

 

 

マウントのしかた

マウント先のディレクトリを作成して、mountコマンド。

$ mkdir /mnt/diskhoge

$ mount -t ext4 /dev/sda1 /mnt/diskhoge

アンマウント

$ umount /mnt/hoge

アンマウントできない時の状況確認

$ lsof /mnt/hoge

 

Raspberry Pi 3だと自動で/media/pi/(UUID)にHDDがマウントされた。

 

別のマウントポイントに変更(複数のマウントポイント)

$ mount --bind dir_old dir_new

 

4月開発作業用環境整備履歴

opencv3をインストール

この記事に従ってインストール

Ubuntu16.04 LTSにOpenCV3.1をインストール から顔認識のテストまで - 粗大メモ置き場

gst_app_sink_pull_sample not declaredと出たので

c++ - failure in compiling opencv with cap_gstreamer error - Stack Overflow

set WITH_GSTREAMER_0_10 to ONをやった

 

目的のプロジェクトのビルドで、CV_SQRが定義されてないと出る。githubopencv_contribのところにcv_sqrが定義されているので、opencv_contribをインストールするとよいのかもしれない。

OpenCV3.0とopencv_contribをubuntuに入れた作業メモ - Qiita

cmakeでエラーになる

OpenCV: Build opencv_contrib with dnn module

これに従って一からインストールし直し

最後にmake install、ldconfigなどする。正しくopencvがインストールされている模様。/usr/local/include/opencvgithub.com/opencv(opencv3.2.0)のmake installをすると更新されるので、/usr/local/includeはopencvのバージョン3に対応するものだと思われる。opencv/cv.hの中で、

#include "opencv2/core/core_c.h"

#include "opencv2/imgproc/imgproc_c.h"

などとされている。でも、GaussianBlurが宣言されているのはopencv2/imgproc.hppの中。おそらくopencvの使い方として、opencv2やopencv3は、opencv2/imgproc.hppをincludeして使うかたちと思われる。一方、ターゲットのプロジェクトでは#include <opencv2/*>をしておらず、#include "opencv/cv.h"や#include <opencv/cv.h>をしている。

→ターゲットのopencvのバージョンはopencv1系あるいはopencv2系かもしれない。

OpenCVとは? 最新3.0の新機能概要とモジュール構成 - Build Insider

contribモジュールはopencv3.0以降はopencv_contribになっている。これもopencv2系である可能性示している。

OpenCV2.1からOpenCV2.2の変更点(ChangeLog) | OpenCV.jp

これによるとopencv2.1から2.2への変更点として、推奨されるインクルードの書き方が、<cv.h>から<opencv2/imgproc/imgproc.hpp>に変更になっている。

 

OpenCVをLinuxにインストール - AkiWiki

これをみてopencv 1.1preをインストールsourceforgeからソースをとってきてmake。

#38168 (Conflicting declarations in tiff and opencv) – MacPorts

このエラーがでたので、cxtypes.hの当該箇所をtypedef long int64;に変更した

 

、、とやっている途中で、opencvはapt-get install ros-kinetic-opencv*とすればよいと聞いたのでいったん後回し。apt-getしたあとの/usr/local/includeが更新されていないような気がする。

----

これを見てQtの5.5を~/archiveの下にインストールした

LinuxでQtアプリを作る - Yahoo!知恵袋

----

インストールされているvtkのバージョンは6.2.0

http://www.pcl-users.org/PCL-1-7-Compilation-Problems-td4028868.html

 

-----

ターゲットの都合、/usr/include/cv_bridgeと/opt/ros/kinetic/include/cv_bridgeを別名にmv

----

ターゲットの都合/usr/include/boostを別名にmv ...だとだめだったのでもとに戻した 

----

ターゲットの都合/usr/lib/x86_64-linux-gnu/qt4を別名にmv→やっぱり元に戻した

 

★最後にもう一度クリーンなところからcatkin_makeをするべき。/usr/以下のファイルをmvしたりしているので

 -------

opencvを全部uninstallしてrosのopencvのみを使うようにする。現状どういったものがインストールされているかというと

/usr/local/lib/にlibopencv_*2.4.13とlibopencv_*3.2が入っている

/usr/local/include/にopencv/とopencv2/が入っている

/usr/lib/x86_64-linux-gnu/にlibopencv_*2.4が入っている

/usr/includeにopencv/とopencv2/が入っている

/opt/opencv-2.4.13がある

 

まずはmake uninstall。

/opt/opencv-2.4.13/build $ sudo make uninstall

~/archive/opencv_root201704020701/build_opencv $ sudo make uninstall

次にapt-get --purge remove。

sudo apt-get --purge remove opencv

$ sudo apt-get --purge remove libopencv* python-opencv

$ sudo rm /usr/local/lib/python2.7/site-packages/cv2.so

 

インストールされているパッケージを調べるには

$ dpkg --get-selections

libopencv-calib3d2.4v5

libopencv-contrib2.4v5

など、2.4v5が含まれるパッケージもアンインストール

 

全て消して入れ直してみるので

$ sudo apt-get --purge remove ros-kinetic-opencv3 ros-kinetic-vision-opencv

$ sudo apt-get install ros-kinetic-desktop-full

 

これでもだめ。

2017人気のプログラミング言語

Which Are The Most Loved and Most Hated Programming Languages | 2017

によると、人気の言語ベスト5は

1. Rust

2. Smalltalk

3. TypeScript

4. Swift

5. Go

だそうなのでこれらについて概要を調査

 

Rust

https://imoz.jp/note/rust-functions.html

によると「Rust は、Firefox を開発する Mozilla が開発し、次世代ブラウザの開発に使っているプログラミング言語」「現在、Mozilla はブラウザ開発に用いていますが、WebAssembly 等でも使えるようになりつつありますし、OS や組み込み等ではメモリの効率性と安全性で大きな優位性があり、今後様々な分野で使われるのは間違いないと信じています」とある。まずはウェブ系で使われているぽい。そんなに広く普及している感じがしないなあ。。「2015年中頃の安定版のリリースあたりから次第に注目を集めるようになりました」だそう。

 

Smalltalk

1980年公開だそうでとても古い言語。

smalltalk言語とは、どのような言語をいうのですか?何に使われ... - Yahoo!知恵袋

これによると、2014年時点ではあまり使われない言語だった模様。PharoというSmalltalk環境でwebアプリケーションを作る事例がある。ほかにはSqueakというSmalltalk環境もある。

Smalltalkで作るWebアプリケーション【10日目】 | Developers.IO

 

TypeScript

2012年登場。JavaScriptに「省略も可能な静的型付けとクラスベースオブジェクト指向を加えた」もの。パッと見それなりに使われているように見える。

 

Swift

iOSアプリを作る用途で使われているやつ。2014年登場。

 

Go

 

 

jenkins

似たようなCIツールにwerkerというものがあるそう。

これを見てインストール
Ubuntu 16.04: Jenkins(Apache2)をインストールする - Narrow Escape

 

 これをみて、pushしたときにビルドするように設定しようとした

JenkinsでGitにPush時に自動ビルドさせる – Simple IT Life

1分おきという設定  H/1 * * * という風に書いていたがこれは動作しない H/5 * * *くらいにしておかないといけない。

 

jenkinsにログインできなくなった。
sudo service jenkins stopしてから/var/lib/jenkins/config.xmlの<useSecurity>のところをtrueからfalseにして、sudo service jenkins startしたらパスワード無しでログインできるようになった。でももう一度、falseからtrueにしてパスワードがかかった状態にしようとしてもそうならない。jenkinsの画面からガイドの示すままにグローバル設定を開いてもそれっぽい設定項目がない。と思ったけどあった。ただ、前に作ったユーザが有効になっていない?

jenkinsがブラウザ上でreverse proxy setup is brokenというエラーを出す。

 

ビルド手順の追加のところでAntやGradle、Mavenという物がある。

nginx Apacheに替わる、高負荷に強いオープンソースのwebサーバ

Docker プロセスごとに起動できる軽量、高速な仮想マシンのようなもの

Vagrant 仮想マシンのラッパーのすごいやつ

redmine

JIRA

 

 

 

 

----

課題について

 

どんなコマンドを実行しているかはおそらく本来ならユーザアカウントの権限がちゃんとあるなら、jenkinsの「プロジェクト」の「設定」という欄で閲覧できるのだろうけど、閲覧できないので「コンソール出力」をみて推測するしかないのかもしれない

ちょっと見たところDockerを使っているように見える