2011|08|
2013|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|07|08|09|10|11|12|
2016|01|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|

2017-03-24 "Please make sure that directory "/home/xxxx/ダウンロード" exists or configure it with blueman-services" が出てきて、誠にうっとうしい件。 [長年日記]

ラズパイのUbuntu 16.04の立ち上げに
 
==========================================================
Please make sure that directory "/home/xxxx/ダウンロード"
exists or configure it with blueman-services
==========================================================
 
が出てきて、誠にうっとうしい件。
 
「システム」→「設定」→「ハードウェア」→「Bluetoothマネージャ」→「表示」
→「ローカルサービス」→「転送」→「incoming Folder」に"Downloads"を選ぶ
 
これで消えるようになる

2017-03-23 ラズパイのNAS化に上手くいかなくて困っていた時のメモ [長年日記]

ラズパイ(Rasberry Pi3)をホームセキュリティサーバとして稼動させて(24時間営業)います。
 
折角なら、これに、ラズパイにUSBメモリ(128GB)を装着して、ファイルサーバ(ビデオサーバ)
としてしまう、と思って随分がんばったのですが、どうにも上手くいかず困っていました。
 
■環境
ラズパイには、ubunts16.04を入れて(ディストリビューションを色々使うのが面倒なので 
ubuntsで統一)います。
 
■前提
sambaが動くことは確認していること。
 
■結論
原因は、UBSメモリがNTFSフォーマットだったことだったこと(らしい)。
 
■対策
 
[Step.1]
WindowsのNTFSでフォーマットしたHDDを使用出来るようにします。
>sudo apt-get -y install ntfs-3g
 
[Step.2]
マウントする。
>sudo mount -t ntfs-3g /dev/sda1 /mnt/usb_mount
 
[Step.3] 
(以下は、まったく関係ないかもしれないけど)
>sudo chown -R nobody:nogroup /mnt/usb_mount
>sudo chmod 777 /mnt/usb_mount
を実行
# 手当たりしだい実行したので、効果があるかどうか分からない。
 
その証拠に、
ebata@ebata-desktop:/mnt$ ls -la
total 48
drwxr-xr-x  3 root root  4096 11月  8 22:22 .
drwxr-xr-x 22 root root  4096  4月 21  2016 ..
drwxrwxrwx  1 root root 40960  3月 23 20:59 usb_mount
とオーナが全然変更していないから。
 
[Step.4] 
あとは、"/etc/samba/smb.conf"に以下のような[usb_mount]を作る
 
# Un-comment the following and create the netlogon directory for Domain Logons
# (you need to configure Samba to act as a domain controller too.)
;[netlogon]
 
 
[share]
   comment = Network Logon Service
;  path = /home/samba/netlogon
   path = /var/samba
   writeable = true
   force create mode = 0666
   force directory mode = 0777
   guest ok = yes
   guest only = yes
 
[usb_mount]
   comment = Network Logon Service1
;   path = /media/ebata/7FAD-461E/testtest ← 苦労のあと
   path = /mnt/usb_mount
;   path = /media/ebata/A6F69570F695420B ← 苦労のあと
   writeable = true
   force create mode = 0666
   force directory mode = 0777
   writeable = yes
   guest ok = yes
   guest only = yes
   public = yes
 
# Un-comment the following and create the profiles directory to store
 
[Step.5] 
最後に、sambaを再起動します。
>service smbd restart
 
[Step.6] 
立ち上げ時に自動的にマウントするには、"/etc/fstab"の最後に以下の一行を加えます。
/dev/sda1       /mnt/usb_mount  ntfs-3g locale=ja_JP.UTF-8 0      0
 
但し、メディアが差し込まれていないままに、これを実行すると、軌道に失敗するみたいなので、使わない時はコメントアウトすることを忘れないように。
 
■確認
 
あとは、Windowsの方で"usb_mount"を叩いて、中身が見えたら成功しています。
(上手く動かない時は、「権限がどーのこーの」と言われる)
 
以上

2017-03-18 「教師なし」とは何か? [長年日記]

eepLearningの一つCNNは教師あり である。http://www.vision.cs.chubu.ac.jp/flabresearcharchive/bachelor/B13/Paper/fukui.pdf

では、教師なしのDeepLearningとは何か? そもそも「教師なし」という言葉の意味が分からない。

K-meansが教師なし、というのは理解できる。あれは 「ハミング距離」が教師であるとも言えると思うが。

―― AIの記事書く野郎どもの「無勉強さ」に、本気で腹立ってきたなー


2017-03-17 Makefileの使い方例 [長年日記]

"XFLAG"というオプションを作って、"ABC"."PRT"などをつかってみた結果

/* test.cpp */
#include <stdio.h>
 
int main(int argc, char *argv[]){
  printf("Hello C World\n");
 
#if defined(ABC)
  printf("Morning ABC World\n");
#endif
 
#if defined(PRT)
  printf("Goodby PRT World\n");
#endif
 
  return 0;
}
# Makefile for test.cpp
 
test: test.cpp
 
ifeq ($(XFLAG),-DABC)  # ここは"ABC"ではダメで "-DABC"と記載する
# "mingw32-make XFLAG=-DABC"のときこっち  
    gcc  -Wall -O2 -o test test.cpp 
else
#"mingw32-make XFLAG=-DPRT" または"mingw32-make"のときはこっち
    gcc $(XFLAG) -Wall -O2 -o test test.cpp 
endif

2017-03-16 Makefileサンプル [長年日記]

# mingwの4.9.1では、
# >mingw32-make
# で起動する
 
CC        = g++
 
CFLAGS    = -g -std=c++11
 
INCLUDE   = -I./include -I"C:\opencv\build\include"
 
LDFLAGS   = -L"C:\opencv\build\x64\test_mingw\lib"
 
LIBS      = -lopencv_core310
 
SRCS      = $(wildcard *.cpp)  # 全部のcppファイルを片っ端から拾う
# 上記は、以下の内容を実施している
#SRCS     = api.cpp common_utils.cpp FlowGraph.o MaxFlowPathOptimizer.cpp PassengerVectorIntegrator.cpp SequentialCsvReader.cpp SimpleLogWriter.cpp StationTable.cpp TransporterResourceProposer.cpp TransporterResourceTable.cpp
 
OBJS      = $(SRCS:.cpp=.o) #SRCSの各ファイルのサフィックスの.cppを.oに変換
# 上記は、以下の内容を実施している
#OBJS      = api.o common_utils.o FlowGraph.o MaxFlowPathOptimizer.o PassengerVectorIntegrator.o SequentialCsvReader.o SimpleLogWriter.o StationTable.o TransporterResourceProposer.o TransporterResourceTable.o
 
PROGRAM   = TransporterResourceProposerDll.dll
 
.cpp.o:
    $(CC) $(CFLAGS) -c $(INCLUDE) $(LDFLAGS) $< -o $@ 
# 上記は、以下の内容を実施している
# g++ -g -std=c++11 -c -I./include -I"C:\opencv\build\include" -o api.o api.cpp  
# g++ -g -std=c++11 -c -I./include -I"C:\opencv\build\include" -o common_utils.o common_utils.cpp  
# ..... 
 
$(PROGRAM):     $(OBJS)
    $(CC) $(INCLUDE) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -shared -o $(PROGRAM) 
# 上記は、以下の内容を実施している
# g++ -I./include -I"C:\opencv\build\include" -g -std=c++11 -L"C:\opencv\build\x64\test_mingw\lib" api.o common_utils.o .... TransporterResourceTable.o (ここの改行は取り除く) 
# -lopencv_calib3d310 -lopencv_core310 -shared -o TransporterResourceProposerDll.dll
 
.PHONY: clean
clean:
    del *.o *.exe *.dll
 
# Makefileの説明は、これが秀逸 → http://shin.hateblo.jp/entry/2012/05/26/231036
# "gmake"で実行
# 無理にマクロなんか使わない(よけい分からなくなる)
 
.PHONY: all
all: ca-server ca-client ca-track ca-wire ca-operation1 ca-operation2 ca-monitor
 
ca-server: ca-server.o ca-tools.o ca-init.o ca-mediate.o c-anemone.h ca-tools.h ca-init.h ca-mediate.h
    gcc -g -o ca-server ca-server.o ca-tools.o ca-init.o ca-mediate.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows
 
ca-client: ca-client.o ca-tools.o ca-init.o ca-track-init.o c-anemone.h ca-tools.h ca-init.h
    gcc -g -o ca-client ca-client.o ca-tools.o ca-init.o ca-track-init.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows
 
ca-track: ca-client.o ca-tools.o ca-init.o ca-track-init.o c-anemone.h ca-tools.h ca-init.h
    gcc -g -o ca-track ca-client.o ca-tools.o ca-init.o ca-track-init.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows
 
ca-wire: ca-client.o ca-tools.o ca-init.o ca-wire-init.o c-anemone.h ca-tools.h ca-init.h
    gcc -g -o ca-wire ca-client.o ca-tools.o ca-init.o ca-wire-init.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows
 
ca-operation1: ca-client.o ca-tools.o ca-init.o ca-operation1-init.o c-anemone.h ca-tools.h ca-init.h
    gcc -g -o ca-operation1 ca-client.o ca-tools.o ca-init.o ca-operation1-init.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows
 
ca-operation2: ca-client.o ca-tools.o ca-init.o ca-operation2-init.o c-anemone.h ca-tools.h ca-init.h
    gcc -g -o ca-operation2 ca-client.o ca-tools.o ca-init.o ca-operation2-init.o -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows
 
 
ca-monitor: ca-client.o ca-tools.o ca-init.o ca-monitor-init.o c-anemone.h ca-tools.h ca-init.h
    gcc -g -o ca-monitor ca-client.o ca-tools.o ca-init.o ca-monitor-init.o  -Wl,--subsystem,console -lGrWin -lpthread -lwsock32 -lws2_32 -mwindows
 
 
 
.PHONY: clean
clean:
    del *.o *.exe
 
#ヘッダファイルの依存関係 (gcc -MM ca-server.cpp で調べられる)
ca-server.o: ca-server.cpp c-anemone.h ca-tools.h ca-init.h ca-mediate.h 
ca-client.o: ca-client.cpp c-anemone.h ca-tools.h ca-init.h
ca-track-init.o: ca-track-init.cpp c-anemone.h ca-tools.h
ca-wire-init.o: ca-wire-init.cpp c-anemone.h ca-tools.h
ca-operation1-init.o: ca-operation1-init.cpp c-anemone.h ca-tools.h
ca-operation2-init.o: ca-operation2-init.cpp c-anemone.h ca-tools.h
ca-monitor-init.o: ca-monitor-init.cpp c-anemone.h ca-tools.h
ca-init.o: ca-init.cpp c-anemone.h
ca-tools.o: ca-tools.cpp c-anemone.h ca-tools.h
 

2017-03-15 minGWを用いて, windows7にOpenCV3.1.0をインストールした時の話 [長年日記]

参考文献 http://www.malab.se.ritsumei.ac.jp/jp/member_only/page-4220/

前提: mingwは4ベースの(現時点での最新gcc version 4.9.1 (x86_64-posix-seh-rev0, Built by MinGW-W64 project) )を使用

[Step1] opencv-3.1.0.exe をダウンロードして、c:\の直下に展開

[Step2] GUI版のCmakeもダウンロードして、適当なところに展開

[Step3] cmakeを立ち上げて、(1)"Where is the source code" を"C:/opencv/sources"に、(2)"Where is the build code" を"C:/opencv/build/x68/test_mingw"に、(2)Current Generator:#MinGW Makefiles"に設定

[Step4] configure..で、真っ赤になって上手くいかないので、

BUILD_DOCS OFF
WITH_FFMPEG OFF
WITH_IPP OFF
WITH_TBB ON

とすると、上手くいく(こともある) → configureして白くなったら, Generateです(これもしつこく押していると、いずれ白くなることがある)

C:/opencv3.0.0/sources/Cmake/OpenCVCompilerOptions.cmake”
のファイルの中身
add_extra_compiler_option(-Werror=non-virtual-dtor)
を
#add_extra_compiler_option(-Werror=non-virtual-dtor)
に変えることで, make時のエラーをパスする(らしい)

[Step4] cd C:\opencv\build\x64\test_mingw

で、
mingw32-make
で
mingw32-make install

[Step5] "C:\opencv\build\x64\test_mingw\bin"にPathを通しておく。あとはPC再起動しておいた方が安心

試してみたファイル(ネットに落ちていたものの一部(インクルード)を変更)

#include <stdio.h>
#include "opencv2/highgui/highgui.hpp"
#include <time.h>
 
int
main (int argc, char **argv)
{
  int i, j;
  int nrow = 3;
  int ncol = 3;
  CvMat *src, *dst, *mul;
  double det;
  CvRNG rng = cvRNG (time (NULL));      /* 乱数の初期化 */
 
  // (1) 行列のメモリ確保
  src = cvCreateMat (nrow, ncol, CV_32FC1);
  dst = cvCreateMat (ncol, nrow, CV_32FC1);
  mul = cvCreateMat (nrow, nrow, CV_32FC1);
 
  // (2) 行列srcに乱数を代入
  printf ("src\n");
  cvmSet (src, 0, 0, 1);
  for (i = 0; i < src->rows; i++) {
    for (j = 0; j < src->cols; j++) {
      cvmSet (src, i, j, cvRandReal (&rng));
      printf ("% lf\t", cvmGet (src, i, j));
    }
    printf ("\n");
  }
 
  // (3) 行列srcの逆行列を求めて,行列dstに代入
  det = cvInvert (src, dst, CV_SVD);
 
  // (4) 行列srcの行列式を表示
  printf ("det(src)=%lf\n", det);
 
  // (5) 行列dstの表示
  printf ("dst\n");
  for (i = 0; i < dst->rows; i++) {
    for (j = 0; j < dst->cols; j++) {
      printf ("% lf\t", cvmGet (dst, i, j));
    }
    printf ("\n");
  }
 
  // (6) 行列srcとdstの積を計算して確認
  cvMatMul (src, dst, mul);
  printf ("mul\n");
  for (i = 0; i < mul->rows; i++) {
    for (j = 0; j < mul->cols; j++) {
      printf ("% lf\t", cvmGet (mul, i, j));
    }
    printf ("\n");
  }
 
  // (7) 行列のメモリを開放
  cvReleaseMat (&src);
  cvReleaseMat (&dst);
  cvReleaseMat (&mul);
 
  return 0;
}
 

_

なんとか通したコンパイル

g++ -I"C:\opencv\build\include" -L"C:\opencv\build\x64\test_mingw\lib" test.cpp -lopencv_calib3d310 -lopencv_core310 -lopencv_features2d310 
 -lopencv_flann310 -lopencv_highgui310 -lopencv_imgcodecs310 -lopencv_imgproc310 -lopencv_ml310 -lopencv_objdetect310 
 -lopencv_photo310 -lopencv_shape310 -lopencv_stitching310 -lopencv_superres310 -lopencv_video310 -lopencv_videoio310 
 -lopencv_videostab310 -o test
 
 (よく分からないので、dllを全部リンクした悪例)
 (コンパイル時には改行は取ること)

実行結果

d:\>test
test
src
 0.174088    0.378289    0.761955   
 0.174153    0.467867    0.709499   
 0.328849    0.444654    0.578379   
det(src)=0.043136
dst
 2.825524   -7.556030    5.546670   
-8.348085    9.436506   -0.578052   
 4.811443   -2.958592   -0.980295   
mul
 1.000000    0.000000   -0.000000   
 0.000000    1.000001    0.000000   
-0.000000    0.000000    1.000000   

opencvを使ってライブラリを作る時の手順(私だけが分かれば良い)

■前提環境
 
(http://www.kobore.net/diary_techno/?date=20170315
 
に記載されたことを実施する)
 
 
■実施手順
 
(1)ファイル修正(2箇所のみ)
 
D:\home\resource2\src\TransporterResourceProposerDll\include\SequentialCsvReader.h
に 
#include <stdexcept>
を追加
 
D:\home\resource2\src\TransporterResourceProposerDll\
//ss >> std::get_time(&timeval, "%H:%M"); ebata 1行コメントアウト
を実施
(この1行だけは、どうしてもコンパイルエラーが取れなかった)
 
(2)オブジェクト作成
 
D:\home\resource2\src\TransporterResourceProposerDllにて
 
g++ -c -I"D:\home\resource2\src\TransporterResourceProposerDll\include" -I"C:\opencv\build\include" SequentialCsvReader.cpp -o SequentialCsvReader.o -std=c++11
g++ -c -I"D:\home\resource2\src\TransporterResourceProposerDll\include" api.cpp -o api.o -std=c++11
g++ -c -I"D:\home\resource2\src\TransporterResourceProposerDll\include" common_utils.cpp -o common_utils.o -std=c++11
g++ -c -I"D:\home\resource2\src\TransporterResourceProposerDll\include" TransporterResourceTable.cpp -o TransporterResourceTable.o -std=c++11
g++ -c -I"D:\home\resource2\src\TransporterResourceProposerDll\include" TransporterResourceProposer.cpp -o TransporterResourceProposer.o -std=c++11
g++ -c -I"D:\home\resource2\src\TransporterResourceProposerDll\include" StationTable.cpp -o StationTable.o -std=c++11
g++ -c -I"D:\home\resource2\src\TransporterResourceProposerDll\include" FlowGraph.cpp -o FlowGraph.o -std=c++11
g++ -c -I"D:\home\resource2\src\TransporterResourceProposerDll\include" -I"C:\opencv\build\include" PassengerVectorIntegrator.cpp -o PassengerVectorIntegrator.o -std=c++11
g++ -c -I"D:\home\resource2\src\TransporterResourceProposerDll\include" -I"C:\opencv\build\include" MaxFlowPathOptimizer.cpp -o MaxFlowPathOptimizer.o -std=c++11 
g++ -c -I"D:\home\resource2\src\TransporterResourceProposerDll\include" SimpleLogWriter.cpp -o SimpleLogWriter.o -std=c++11
 
(3)ライブラリの作成  → ここでは"testtest.dll"という名前にしておく
 
g++ -I"D:\home\resource2\src\TransporterResourceProposerDll\include" -I"C:\opencv\build\include" -I"C:\opencv\build\include" 
-L"C:\opencv\build\x64\test_mingw\lib" -shared -o testtest.dll api.o common_utils.o FlowGraph.o MaxFlowPathOptimizer.o
 PassengerVectorIntegrator.o SequentialCsvReader.o SimpleLogWriter.o StationTable.o TransporterResourceProposer.o
 TransporterResourceTable.o -lopencv_calib3d310 -lopencv_core310 
-lopencv_features2d310 -lopencv_flann310 -lopencv_highgui310 
-lopencv_imgcodecs310 -lopencv_imgproc310 -lopencv_ml310 
-lopencv_objdetect310 -lopencv_photo310 -lopencv_shape310 
-lopencv_stitching310 -lopencv_superres310 -lopencv_video310 
-lopencv_videoio310 -lopencv_videostab310 -std=c++11
 
(ちなみに、上記のリンクは、面倒くさかったので、片っ端からリンクしたものであって、多分、こんなにリンクする必要はないはず。ちなみにコピベする時は、改行をを取り除くこと)
 
(4)テストファイルの作成 
 
D:\home\resource2\src\TransporterResourceProposerに移動して
 
testtest.dllをここに移動した後、
 
g++ -L./ -o resource_proposer_main.exe resource_proposer_main.cpp -ltestest
(ちなみに、この" -L./" (← リンクの場所を指定(ローカルであっても) が、あなどれないので注意)
 
(5)実行テスト 
 
resource_proposer_main station _info.csv transport_resource_info.csv person_vector_info.csv restoration_time.csv  new_transporters.csv, new_routes.csv, inout_table.csv
 
で稼動を確認
 
 

2017-03-11 .htpasswd やら .htaccess を設定するも、動かなくて困っていた [長年日記]

 Webの特定のページにパスワードをかけようと
 .htpasswd やら .htaccess を設定するも、動かなくて困っていた
 
 いろいろ調べて、
 
 /etc/apache2/apache2.conf
 
 の
 
 <Directory /var/www/>
         Options Indexes FollowSymLinks
         AllowOverride None
         Require all granted
 </Directory>"None"のところを"All"とすると、 
 
 <Directory /var/www/>
         Options Indexes FollowSymLinks
         AllowOverride All
         Require all granted
 </Directory>
 
 動いているようだ。もう少し確認が必要だと思うけど
 
ebata@ebata-desktop:~/video$ cat .htpasswd
tom:q3489p7wtrghui423058-pw
ebata@ebata-desktop:~/video$ cat .htaccess
AuthType     Basic
AuthName     "HOME VIDEO"
AuthUserFile /var/www/html/video/.htpasswd
require valid-user
<Files ~ "^.ht">
   deny from all
</Files>

最後に、sudo /etc/init.d/apache2 restart で再起動


2017-03-10 Synergyで画面移行ができなくなった時 [長年日記]

 
シナジー立ち上げて
 
NOTE: Cursor is locked to screen, check Scroll Lock key
 
てなメッセージを、見つけたら
 
"Scroll-Lock" を押すことで解決できる
 
HHKBなら "Fn + o"ScrLkに割り当てられている
 

2017-03-07 推測と推定の違い [長年日記]

推測とは、手持ちのデータから未知のものを推(お)し測るという全般的な概念のこと。

推定とは、推測の具体的な手段の1つで、標本の値を元に、母集団の持つ何らかの値を求めること。


2017-02-28 0x000000007702f3b0 in ntdll!RtlUnicodeToCustomCPN () from C:\Windows\system32\ntdll.dll [長年日記]

win7で、mingw (gcc (GCC) 4.5.4 20111030 (prerelease) [svn/rev.180676 - mingw-w64/oz])を使って、gdbでデバッグしていると

Program received signal SIGTRAP, Trace/breakpoint trap.
0x000000007702f3b0 in ntdll!RtlUnicodeToCustomCPN () from C:\Windows\system32\ntdll.dll

というエラーが出てきて、デバッグが進められくて困っていたのですが、原因が不明で困っていました(ちなみにgdbを使わない分には、ダウンしない)

訳が分からないので、全部のvoid関数の返り値に、片っぱしから、"return;"を付けてみたら、この現象が出てこなくなりました(これまでは、付けたり、付けなかったりしていた)

忘れない内に、メモをしておきます。