Anaconda2_x64 本格導入

2018-01-08 :  PCクリニック
前回(2018-01-05)の記事「Python は、Anaconda x64 で」で、
Anaconda2 5.0.1 による、Python2.4.14 の 64-Bit 版に決めた。


そこで、
腰を据えて、メインマシンに導入した。


「Anaconda2-5.0.1-Windows-x86_64.exe」 2017-10-15 付 499MB
を実行(インストール)。
対話型レスポンスでは:
  Install for:
    Just Me
  インストール先は、
    D:/TOOL/Anaconda2/
  また、
   PATH 登録にチェックを入れた。(警告出るが無視)
・・・・・ でも、登録されなかった?

そうではなくて、
パスへの登録は、されていた!

システム環境変数(S) の方のPath を見ていた。
この場合は、
  kami のユーザー環境変数(U) の方のPATH
に登録されるのでした。

そして、
ファイルD&DでAP起動(レジストリ版) 流で、
レジストリに登録するための「hogehoge.reg」ファイルを作って、実行した。


さらには、
conda でパッケージを2つ追加:

menpo / packages / opencv3 3.2.0 から、
  DOS プロンプトで:
   conda install -c menpo opencv3

clinicalgraphics / packages / pydicom 1.0.0a1 から、
  DOS プロンプトで:
   conda install -c clinicalgraphics pydicom


最後に、
インストールパッケージのリストを取得した:
   conda list >pkg.txt

  234 のパッケージが入っている。

因みに、インストールディレクトリ:D:/TOOL/Anaconda2/
には、104,837 のファイルがあって、そのサイズは 4.33GB に成っている。
(以前の WinPython32_2763 は、ファイル数 52,503 で、1.41GB だった。)


と云うことで、本格的に Anaconda2_x64 の学習を始めよう。


本日はここまで。

Anaconda(Python) 学習の始まり。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171222,26

Python は、Anaconda x64 で

2018-01-05 :  PCクリニック
前回(2018-01-03)の記事「GSL Shell から、Python に」では、
今後のメイン言語は Python2 で、
distribution(デストリビューション)は、Anaconda とした。

だが、
その後条件が追加され、x64 で行けないか?

と云うことで、
再度確認をおこなった。

Anaconda
即ち、「Anaconda 5.0.1 For Windows Installer」
の、
  Python 2.7 version
から、
  64-Bit Graphical Installer (500 MB)
をダウンロードした。

つまり、
「Anaconda2-5.0.1-Windows-x86_64.exe」 2017-10-15 付 499MB

そして、(前回とは別)の VMの
Windows 7 x64 マシンにインストールし、
動作確認を行った。


既存の、WinPython 32bit Ver.2.7.6.3 で作ったプログラムを実行。

NumPy、SciPy、Pillow、matplotlib そして、OpenCV3 も行けそう?

前回と同じで動作した。
更に、
2GB以上の配列など、合計 12GB の領域確保も出来た。


これからは、本格的に Anaconda2_x64 の学習ダ。


本日はここまで。

Anaconda 学習の開始。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171216-19

GSL Shell から、Python に

2018-01-03 :  PCクリニック
訳あって、GSL Shell から足を洗う?ことになった。

代替は、GSL Shell にのめり込む前の、Python でしょうか?
条件として、100本以上ある現状プログラムが使えること。
そして、最新版であること。
そうすると、Python 2.7.14 となる?

Python については、
Portable Python - <紙>さんLoG
ActivePython - <紙>さんLoGActivePython - ActiveState
そして、
WinPython - <紙>さんLoGWinPython - Winpython project
と来ていた。

今、Portable Python - Portable Python を見ると、・・・・・

  ・PythonXY

  ・WinPython

  ・Anaconda

  ・Python Anywhere

とあった。


PythonXY も気になったが、
Anaconda
では、
  “Anaconda 5.0.1” ( Python 2.7 version )
として、2種類あり:
  64-Bit Graphical Installer (500 MB)
  32-Bit Graphical Installer (403 MB)
しかも、バージョンは、2.7.14 と最新のものである。

殆どのパッケージが含まれており、
追加したいのは、“menpo / packages / opencv3 3.2.0
のみくらい???

これに決め でしょうか?


早速、
「Anaconda2-5.0.1-Windows-x86.exe」 2017-10-15 付 403MB
をダウンロードして、
VMの Windows 7 x64 マシンにインストールし、
動作確認を行った。


既存の、WinPython 32bit Ver.2.7.6.3 で作ったプログラムを実行。

NumPy、SciPy、Pillow、matplotlib そして、OpenCV3 も行けそう?

1点エラーとなったのは:
  “if hoge == None:”
これは、
  “if hoge is None:”
で無いとダメでした。


本日はここまで。


再びの、Python 学習が始まる?


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171212-15

今年(H29年)のブログ記事:後半

2017-12-29 :  その他
今年(2017年)も(今日を含めて)あと3日。
前(2017-12-27)の記事「今年(H29年)のブログ記事:前半」に続いて、
7月初から12月25日迄に投稿した85件の記事を纏めた。

相変わらず、GSL Shell の学習がメイン。


  7月の記事:
5月からの“Python から Lua ( GSL Shell ) への移植”の続きが主で、
“Penlight 学習”や“OpenCV 学習”が中心。
特に、“cvFindContours”で手こずった。

Lua ( GSL Shell ) / Penlight 学習:ディレクトリ一覧(H28-07-01)
GSL Shell 学習:ヒストグラム(改)(H28-07-03)
Lua 学習:Rosetta Code サイト(H28-07-05)
Lua ( GSL Shell ) / Penlight 学習:range 関数(H28-07-07)
OpenCV 学習:GrayScale/'RGB' 変換(H28-07-08)
OpenCV 学習:画像・回転変換処理(H28-07-10)
OpenCV 学習:画像群から .avi ファイル作成(H28-07-12)
afxLua / winman 実用的な? 応用例(H28-07-14)
gnuplot 学習:極座標モード(H28-07-15)
OpenCV 学習:画像サイズ変更(H28-07-17)
Lua ( GSL Shell ) 学習:DLL 呼び出し(H28-07-19)
GSL Shell/OpenCV 学習:cvFitEllipse2(H28-07-21)
GSL Shell/OpenCV 学習:cvFitEllipse2 は正常(H28-07-22)
GSL Shell/OpenCV 学習:輪郭(エッジ)検出(H28-07-24)
OpenCV 学習:輪郭追跡処理(H28-07-26)
LuaCV:OpenCV library wrapper for Lua language(H28-07-28)
OpenCV 2.3.1 でも変わらない?(H28-07-29)
OpenCV:cvFindContours 正常に出来た(H28-07-30)


  8月の記事:
“OpenCV 学習”の深化で、もろもろ“CvMat型”が使えるかを学習。
そして、“GSL”との対比。

LuaCV:CvMat型も使える(H28-08-01)
OpenCV 学習:cvFitEllipse2をCvMat型点データで(H28-08-03)
OpenCV 学習:定数コードの値(H28-08-05)
OpenCV 学習:CvMat型学習サイト(H28-08-07)
GSL 学習:gsl_stats_max_index(H28-08-09)
OpenCV 学習:cvMinMaxLoc(H28-08-11)
OpenCV 学習:関数プロトタイプ宣言一覧(H28-08-12)
GSL Shell 学習:“cv2_a.lua”モジュール?(H28-08-14)
GSL 学習:“gsl_a.lua”モジュール?(H28-08-16)
OpenCV / cvSum : Calculates the sum of array elements(H28-08-18)
GSL 学習:配列要素の合計(H28-08-19)
OpenCV 学習:cvReduce(H28-08-21)
GSL 学習:配列要素の並び替え(H28-08-23)
OpenCV 学習:CvMat 型のソート機能は無し(H28-08-25)
OpenCV 学習:cvCopy で 型変換(H28-08-26)
“DLL”ファイルから“DEF”ファイルを作る(H28-08-28)
OpenCV 学習:GrayScale 画像の2値化(H28-08-30)


  9月の記事:
主に“DICOM 学習”でしょうか?
なかなか、しっくりするツールを見つけられなかった。

GSL Shell 学習:LuaJIT は2つのみで可(H28-09-01)
画像ファイルじゃない gif ファイル(H28-09-04)
OpenCV 学習:CvMat 型のヒストグラム機能は無し(H28-09-06)
OpenCV 学習:cvSolve(H28-09-08)
DICOM 学習:初め?(H28-09-11)
DICOM 学習:ファイル読み込み(H28-09-13)
DICOM 学習:Pydicom(H28-09-15)
DICOM 学習:.dcm ビューアー(H28-09-18)
AMIDE:Free tool for viewing,・・・medical imaging data sets(H28-09-20)
DICOM 学習:ImageMagick(H28-09-22)
… XMedCon:The project stands for Medical Image ・・・(H28-09-25)
DICOM 学習:GraphicsMagick(H28-09-27)
DICOM 学習:ApolloView Lite(H28-09-29)


  10月の記事:
“DICOM”アクセスには、“MRIConvert / mcverter”が一番?
そして、“ImageJ 学習”も。

YAKAMI DICOM ツール集 ( フリーの DICOM Viewer/・・・ )(H28-10-02)
DICOM 学習:参考サイト(H28-10-04)
dcm2niix:DICOM to NIfTI conversion(H28-10-06)
MRIConvert files / mcverter(H28-10-09)
nii ファイルとは何?(H28-10-11)
MRIConvert 使って DICOM から TIFF に変換(H28-10-13)
DICOM ファイルを TIFF に変換(H28-10-16)
ImageJ 学習:CLAHEでコントラスト調整(H28-10-18)
ゼロのゼロ乗は?(H28-10-20)
ImageJ 学習:“Re-ImageJで学ぶ!”サイト(H28-10-23)
ImageJ 学習:“OpenCV”の利用(H28-10-25)
Python プログラム:xyz2mol.py(H28-10-27)
GSL Shell プログラム:xyz2mol.gsl(H28-10-30)


  11月の記事:
“DICOM 学習”の続きから、
“3元1次連立方程式を解く”コード、“結晶内原子の座標表現形式を変換”するコード、
そして、“Microlight 学習”など。

image_viewer 自作(H28-11-01)
GSL Shell 学習:結晶格子の座標変換(H28-11-03)
Lua & gnuplot:gnuplot モジュール改訂2(H28-11-06)
GSL Shell コード・テンプレート(H28-11-08)
DICOM ファイルを TIFF に変換(改訂版)(H28-11-10)
DICOM ファイルを TIFF に変換(再改訂版)(H28-11-13)
3元1次連立方程式を解く(H28-11-15)
3元1次連立方程式を解く(Perl版)(H28-11-17)
結晶内原子の座標表現形式を変換(H28-11-20)
Microlight - a very compact Lua utilities module(H28-11-22)
Python-like string formatting(H28-11-24)
Microlight 学習:split 関数(H28-11-27)
Lua 学習:文字列分割3法(H28-11-29)


  12月の記事:
“GSL Shell”コーディングの纏めとしてコード・テンプレート(改)を作った、
また、“gsl_b.lua”モジュール?も。
そして、もろもろ“GSL Shell 学習”の纏めメモ。

GSL Shell コード・テンプレート(改)(H28-12-01)
Lua ドキュメント・サイト(改)(H28-12-04)
GSL 学習:“gsl_b.lua”モジュール?(H28-12-06)
Lua 学習:math.deg、math.rad(H28-12-08)
GSL Shell 学習:FFT(離散フーリエ変換)(H28-12-11)
GSL 学習:ヒストグラムは double型データのみ(H28-12-13)
Lua 学習:文字列の連結を別の記号で(H28-12-15)
GSL Shell 起動時の設定:_k_init.lua(H28-12-18)
Potrace:ラスター画像をベクター画像に(H28-12-20)
P2VJ:ラスター画像をベクター画像に(H28-12-22)
LuaJIT-tcc 学習:Csub 利用サンプル(H28-12-25)


本日はここまで。

本年は、これまで。
ご訪問頂き、有り難う御座いました。

来年もまた、頑張りますので、
宜しくお願いいたします。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171203

今年(H29年)のブログ記事:前半

2017-12-27 :  その他
今年(2017年)も(今日を含めて)あと5日。
今年(H29年)前半のブログを纏めてみた。

1月初から6月末迄で、112件の記事を投稿している。

相変わらず、GSL Shell の学習がメイン。


  1月の記事:
昨年12月から行っていた、
“Perl から Lua ( GSL Shell ) への移植”準備その2から始まった。
その後“Rclient”を学習し、
“クライアント/サーバ:プロセス間通信”へと進んだ。

Perl から Lua :バイナリファイルの出力(H28-01-02)
Perl から Lua : TIFF画像ファイルの入出力(H28-01-04)
Perl から Lua : 関数Fitting ( By gnuplot )(H28-01-06)
Perl から Lua : 関数Fitting ( By GSL )(H28-01-08)
GSL Shell 学習:Fitting サブ(H28-01-09)
拡張子が FDF なるファイル(H28-01-11)
TIFF 学習 : 画像 type(H28-01-13)
OpenCV 学習:cvSaveImage の制限(H28-01-15)
TIFF画像出力サブプログラム 自作(H28-01-16)
OpenCV 学習:CvMat型の type 項目(H28-01-18)
GSL Shell 学習:Rclient(H28-01-20)
GSL Shell & Rclient 学習(H28-01-22)
クライアント/サーバ:プロセス間通信(H28-01-23)
クライアント/サーバ:プロセス間通信・改(H28-01-25)
クライアント/サーバ:Lua - Python プロセス間通信(H28-01-27)
クライアント/サーバ:イベント学習(H28-01-29)
Win32 APIの定数:定義は?(H28-01-30)


  2月の記事:
“クライアント/サーバ:PIPE 1本”へと進んだ。
そして、“Lua から Python”に進み、
“Rclient”対抗の“PyClient”もどきに。

クライアント/サーバ:PIPE 1本で双方向通信(H28-02-01)
クライアント/サーバ:PIPE 1本で双方向+EVENT(H28-02-03)
Lua/Python:PIPE 1本で双方向+EVENT(H28-02-05)
Lua から Python:PIPE 1本で双方向+EVENT(H28-02-06)
Lua/Lua:PIPE 1本で双方向+EVENT(H28-02-08)
PIPE 1本双方向+EVENT:Lua から Python でグラフ出力(H28-02-10)
IUP で GUI アプリ:コード改訂(H28-02-12)
LuaPy_gsl:GSL Shell による LuaPy.dll 相当品(H28-02-13)
LuaPy_gsl 経由で使う汎用 Python サブ(H28-02-15)
LuaPy_GSL モジュール化(H28-02-17)
LuaPy_GSL モジュールで SymPy(H28-02-19)
タイマー:Win32 API 版(H28-02-20)
タイマー:IupTimer 版(H28-02-22)
タイマー:OpenCV 版(H28-02-24)
LuaPy_GSL モジュール:格納場所(H28-02-26)
PyClient:LuaPy_GSL モジュールのラッパー(H28-02-27)


  3月の記事:
“PyClient”も何とか完成?
そして、JavaScriptに手を出した。
結局“SpiderMonkey 学習”。

PyClient:curve_fit 版(H28-03-01)
PyClient:SymPy 版(H28-03-03)
JavaScript はどうか?(H28-03-04)
WSH / JScript 学習初め(H28-03-05)
WSH / JScript - Win32API(H28-03-06)
JavaScript:SpiderMonkey で行く(H28-03-08)
SpiderMonkey 学習:js-ctypes 入門(H28-03-10)
SpiderMonkey/js-ctypes 学習(H28-03-11)
js-ctypes 学習:文字列データの変換とファイル入出力(H28-03-12)
js-ctypes 学習:LuaPy 使用(H28-03-13)
js-ctypes 学習:プロセス間通信の例(H28-03-15)
js-ctypes 学習:画像ファイルの入力(H28-03-17)
js-ctypes 学習:外部プログラムの実行(H28-03-18)
js-ctypes 学習:cast そして OpenCV(H28-03-19)
js-ctypes 学習:msvcrt.dll 利用( fopen、_popen )(H28-03-20)
SpiderMonkey:バージョンアップ(H28-03-22)
js-ctypes 学習:コールバック処理(H28-03-24)
js-ctypes 学習:KWF_list 関数(H28-03-25)
js-ctypes 学習:OpenCV のマウスコールバック処理(H28-03-26)
js-ctypes 学習:IUP - Portable User Interface(H28-03-27)
js-ctypes 学習:IUP でドラッグ&ドロップ(H28-03-29)
SpiderMonkey 学習:再入門(H28-03-30)


  4月の記事:
発想を変えて、Luaを呼び出す“call_Lua 似非モジュール”の学習
そして、“jnr-ffi”の学習。

js-ctypes 学習:Webブラウザでは使えない?(H28-04-01)
GSL Shell に pre3d がある?(H28-04-02)
OpenCV 学習:任意のタイプの画像表示+alpha(H28-04-03)
GSL Shell 学習:Fitting サブ(改)(H28-04-05)
GSL Shell 学習:サブプログラムとしたいもの(H28-04-07)
Lua 言語仕様:備忘録(忘れやすい事)4言語対比表(H28-04-08)
TIFF画像ファイル:ゴミ付着可?(H28-04-09)
GSL Shell と Lua で、プロセス間通信(H28-04-10)
GSL Shell 学習:見た目の前方参照?(新方式)(H28-04-12)
call_Lua 似非モジュール(H28-04-14)
call_Lua 似非モジュール:Lua51.dll 利用版(H28-04-15)
call_Lua 似非モジュール:Lua プログラム汎用化(H28-04-16)
call_Lua 似非モジュール:Lua51 汎用・決定版(H28-04-17)
SpiderMonkey:call_Lua51 似非モジュール(H28-04-19)
call_Lua52 似非モジュール(基本Lua呼び出し)(H28-04-21)
wxLua: dll の利用にはムリがある(H28-04-22)
UFO - includes OpenGL and glu, ・・・(H28-04-23)
Python:call_Lua51 似非モジュール(H28-04-24)
Java SE 8 導入(H28-04-26)
Java 学習:jnr-ffi 導入(H28-04-28)
Java:call_Lua51 似非モジュール(H28-04-29)
JNR-FFI :ImageJ プラグイン(Java)では使えない?(H28-04-30)


  5月の記事:
“tcc - Tiny C Compiler”の学習から、
“LuaJIT-tcc 学習”へ。

見た目の前方参照(新方式):応用例(H28-05-01)
tcc - Tiny C Compiler(H28-05-03)
tcc 学習:同梱例題その他(H28-05-05)
tcc 学習:lua52.dll 利用その他(H28-05-06)
tcc 学習:既存 DLL を呼び出す DLL の作成(H28-05-08)
tcc 学習:call_lua51_Gen モジュール作成(H28-05-10)
luajit-tcc:Tiny C Compiler 0.9.26 binding for LuaJIT(H28-05-12)
LuaJIT-tcc:例題から学習(H28-05-13)
tcc 学習:オブジェクト性能(H28-05-15)
tcc 学習:libtcc 直接使用(H28-05-17)
tcc 学習:libtcc 直接使用(成功)(H28-05-19)
LuaJIT-tcc 学習:利用法まとめ(H28-05-20)
LuaJIT-tcc 学習:これって、コールバック処理?(H28-05-22)
Python & tcc 学習:libtcc 直接使用(H28-05-24)
GSL Shell 学習:“CSV”モジュール(H28-05-26)
メール添付ファイル“winmail.dat”なら“Winmail Opener”(H28-05-27)
tccINT もどき(H28-05-29)
LuaJIT-tcc 学習:コールバック処理?(その2)(H28-05-31)


  6月の記事:
Webアクセスで、cURLWget
そして、非線形方程式の求解モジュールの自作。
“gnuplot 学習:matrix 形式データ”とか。

cURL : command line tool and library for transferring ・・・(H28-06-02)
cURL 学習:クッキーの扱い(分からない)(H28-06-03)
Lua 学習 : os.date と lfs.attributes(H28-06-05)
GNU Wget - Wget for Windows(H28-06-07)
Wget for Windows:クッキー使えた(H28-06-09)
Lua 学習:wget & nkf(H28-06-10)
Lua 学習:ファイルのコピー(H28-06-12)
Lua ( GSL Shell ) / Penlight 学習(H28-06-14)
Lua ( GSL Shell ) / Penlight 学習:これは頂き(H28-06-16)
gnuplot 学習:PDF出力で replot したら(H28-06-17)
GSL Shell 学習:Solve(Findroot)(H28-06-19)
GSL Shell:非線形1変数方程式の求解モジュール自作(H28-06-21)
GSL Shell 学習:Solve(Findroot)2変数関数版(H28-06-23)
GSL Shell:非線形2変数方程式の求解モジュール自作(H28-06-24)
Lua & gnuplot:gnuplot モジュール改訂(H28-06-26)
gnuplot 学習:マルチ・プロット(H28-06-28)
gnuplot 学習:matrix 形式データ(H28-06-30)


本日はここまで。


後半に続く、・・・・・


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171203

LuaJIT-tcc 学習:Csub 利用サンプル

2017-12-25 :  PCクリニック
5月(2017-05-20)の記事「LuaJIT-tcc 学習:利用法まとめ」では、

  “tcc.lua”の利用パターンをまとめた。

  ・・・・・
  ・・・・・
  次に、Cコードをコンパイルして即時に実行するパターン
  当面考えられる全てのパターンを集めた場合を考える。

  即ち、Cコードで、SUB 関数を定義し、即時に実行する。

  この時、SUB 関数は、
  パターンA:C の AAA 関数を呼ぶ
  パターンX:Lua の 標準関数(例:math.sin)を呼ぶ
  パターンB:Lua の 自作 BBB 関数を呼ぶ
  パターンC:既存DLL にある CCC 関数を呼ぶ
  これらのパターンを含めるとすると、
  ・・・・・
  ・・・・・

と云うことで、

  ・・・・・
  ・・・・・
  些か分かりにくいかナ?
  ・・・・・
  ・・・・・


そこで、
一番利用頻度の高そうなパターンAに限定して、
サンプルコードを整理した。
-- Cコードをコンパイルして即時に実行するパターンA
-- C の 関数 Csub を呼ぶ
----- 以下3行は必須。
tcc=require'tcc'('libtcc')
TCL = tcc.new()
TCL:set_output_type( 'output_memory' )
----------------------

TCL:compile_string [[ // Csub 関数のコード
double Csub( double x, double y ){
double z;
z = x + y;
return z;
}
]]
TCL:relocate( 'relocate_auto' )
Csub = TCL:get_symbol( 'Csub', 'double(*)( double, double )' )

-- ここで、関数 Csub を使う LuaJIT のコード
x, y = 2.5, 5.1
z = Csub(x,y); print( z ) --> 7.6
となるかナ?


本日はここまで。


luajit-tcc 学習も続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171113

P2VJ:ラスター画像をベクター画像に

2017-12-22 :  PCクリニック
前(2017-12-20)の記事:「Potrace:ラスター画像をベクター画像に」に続いて、
SVGを制作できるアプリ,お絵描きソフトを徹底的に調べました! 114個
に載っている、

  ・P2VJ

について。

別の検索で見つけた:
P2VJ - 複数のJPEG-PNG画像をドラッグ&ドロップでSVG形式に一括変換
から、
ダウンロード:

 p2vj_0.9.zip 263KB  2015-12-27 付

早速、展開。


起動は、“runp2vj.bat”をダブルクリック。

但し、中を若干弄らないとダメ。
<紙>マシンのOSは 64bit 版だから。


それで、手元の“hoge.png”を変換・・・

変換できたが、処理が遅すぎ?

また、変換結果の図形がつぶれたような状態ダ。


残念ながら、これもダメ。
他をあたってみよう。


本日はここまで。


画像のラスター化 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171127

Potrace:ラスター画像をベクター画像に

2017-12-20 :  PCクリニック
Kinza(Webブラウザ)を操作していたら、
ADOBE CAPTURE CC」の広告が目に付いた。

曰く:
  写真の中のオブジェクトをすばやくベクターシェイプに変換できます。

これ即ち、ラスター画像(ビットマップ画像)をベクター画像に変換する。

一寸興味がそそられた。

「画像 ベクター オフライン ツール フリー」で検索してみた。
でも、“ベクター”が“Vector ソフト”に成ってしまう。
で、
「画像 SVG 変換 オフライン ツール フリー」で検索した。

こんなページが見つかった:
SVGを制作できるアプリ,お絵描きソフトを徹底的に調べました! 114個

  ・・・・・
  ・・・・・
  ラスター画像からの変換ツール

  JPEG,GIF,PNGなどのラスター画像をベクター画像に変換して利用したい、
  という場面もあるでしょう。そうした時に役立つツールです。

  ・P2VJ
  ・Vector Magic ※有料
  ・Super Vectorizer ※有料
  ・Potrace

  これらへの所感としては身も蓋もないことを言えばいっそ Adobe
  Illustratorで変換するのが最も使いやすく編集しやすいので
  素直にそれが一番お勧め……というのが結論です。
  とは言え、お高い有償ソフトウェアですから
  比較対象としてはアンフェアですが。

  それでもP2VJは健闘している印象ですね、
  Vector Magicは回数制限がありますが試用を行えます。
  Super VectorizerはMac OS X用。

  PotraceはオープンソースでGUI版も制作されていたりと
  様々なバリエーションがあるのですが、上述のInkscapeでは
  Potraceをベースにラスター画像を変換する機能があり、
  その後の編集もしやすいです。
  ・・・・・
  ・・・・・

と云うことで、
Potrace」とかを参考にして、
本家:「Potrace - Peter Selinger」から、

 Precompiled distributions: Windows (32 bit)
の、
 potrace-1.15.win32.zip 169KB  2017-08-05 付
をダウンロードして展開。

早速、手元の“hoge.png”を変換・・・

ダメ
エラー:
  Possible input file formats are: pnm (pbm, pgm, ppb), bmp


残念。
他をあたってみよう。


本日はここまで。


画像のラスター化 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171127

GSL Shell 起動時の設定:_k_init.lua

2017-12-18 :  PCクリニック
GSL Shell システムに含まれている、
LuaJIT では、“ffi = require'ffi'”が必要なのだが、
gsl-shell では、宣言しなくても使える。

と云うことは、
システムが立ち上がるときに何がしかの初期設定処理を行っている?

システムに最初からあるモジュールを見ていたら、・・・・・

gslext.lua が見つかった。
中身は:
-- load initialization files for GSL Shell

require('iter')
require('matrix')
require('eigen')
require('num')
require('rng')
require('rnd')
require('integ-init')
require('fft-init')
require('graph-init')
require('randist')
require('import')
require('contour')
require('sf')
require('help')
require('vegas')
require('gdt')
require('gdt-parse-csv')
require('gdt-hist')
require('gdt-plot')
require('gdt-lm')
require('gdt-interp')
require('linfit')

num.bspline = require 'bspline'

local demomod

function demo(name)
if not demomod then demomod = require 'demo-init' end
local entry = demomod.load(name)
if not entry then
demomod.list()
else
print(entry.description)
entry.f()
end
end
でした。

ffiについては?
gsl.luaにあった:
最初の行が、
local ffi = require 'ffi'
だけど? ・・・・・ ( local宣言 )


まあ、それは置いておいて、

この gslext.lua を弄れば、
自分流の初期化処理が行える?


と云うことで、
gslext.lua モジュールの最後に、
require'_k_init' を追加する。

そうすれば、
何か実行したい処理を記述した、
_k_init.lua モジュールを使える様になる。


今回、以下のようなものを作った:
-- _k_init.lua
ffi.cdef[[
typedef unsigned char Byte;
typedef unsigned char uchar;
typedef unsigned short Word;
typedef unsigned short ushort;
typedef unsigned int DWord;
]]
charA = |s| ffi.cast( 'char*', s )
voidA = |a| ffi.cast( 'void*', a )
intA = |v| ffi.cast( 'int*', v )
doubleA= |v| ffi.cast( 'double*', v )
NULL = voidA(0)

-----------------------------------------

--- for Python-like string formatting ---
getmetatable("").__mod = function(a, b)
if not b then
return a
elseif type(b) == "table" then
return string.format(a, unpack(b))
else
return string.format(a, b)
end
end

time = require'time'
csv = require'csv'
初めてなので、こんなもの。

更には、
  require 'ml'.import()
も追加してもイイかな?

  range( x1, x2, d )

  split( s re, n )

等々が、即使えるが?


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171112

Lua 学習:文字列の連結を別の記号で

2017-12-15 :  PCクリニック
先日(2017-11-24)の記事「Python-like string formatting」で、

  getmetatable("").__mod = ・・・
関数を学習した。

これで、
  % (剰余) 演算子をオーバーライドすることができる。

他に何か出来ないか?・・・

+ (加算) 演算子 はどうか?
getmetatable("").__add = function( a, b )
return a .. b
end
と云ったもの。


本来の + (加算) 演算子 では、

数値+数値・・・数値の加算。
文字+数値・・・文字が数値を表すなら数値加算。で無ければエラー。
数値+文字・・・文字が数値を表すなら数値加算。で無ければエラー。
文字+文字・・・文字が数値を表すなら数値加算。で無ければエラー。


と成っているが、
上記の関数定義後は、


数値+数値・・・数値の加算。
文字+数値・・・文字が数値を表すなら数値加算。で無ければ文字列連結
数値+文字・・・文字が数値を表すなら数値加算。で無ければ文字列連結
文字+文字・・・文字が数値を表すなら数値加算。で無ければ文字列連結


となりますネ。



更に、他には?・・・

^ (ベキ) 演算子 はどうか?
getmetatable("").__pow = function( a, b )
return a .. b
end
と云ったもの。


本来の ^ (pow) 演算子 では、

数値^数値・・・本来のベキ演算。
文字^数値・・・文字が数値を表すならベキ演算。で無ければエラー。
数値^文字・・・文字が数値を表すならベキ演算。で無ければエラー。
文字^文字・・・文字が数値を表すならベキ演算。で無ければエラー。


と成っているが、
上記の関数定義後は、


数値^数値・・・数値のベキ演算。
文字^数値・・・文字が数値を表すならベキ演算。で無ければ文字列連結
数値^文字・・・文字が数値を表すならベキ演算。で無ければ文字列連結
文字^文字・・・文字が数値を表すならベキ演算。で無ければ文字列連結


となりますネ。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171105,11

GSL 学習:ヒストグラムは double型データのみ

2017-12-13 :  PCクリニック
ヒストグラム機能について、・・・・・

OpenCV では、CvMat 型データによるhistogram機能は無い。
→ 2017-09-06 付の記事:OpenCV 学習:CvMat 型のヒストグラム機能は無し

GNU Scientific Library 即ち GSL Shellについては、
2017-07-03 付「GSL Shell 学習:ヒストグラム(改)」で、
double 型データに対して纏めている。


先日(2017-12-06)の記事「GSL 学習:“gsl_b.lua”モジュール?」を
纏めるにあたって、GNU Scientific Library を精査(?)してみたが、
double 型データに対してしか載っていない?

と云うことは、
バイト型、2バイト型、4バイト型など、整数型配列データに対しては、
double型領域を用意してそこに代入(型変換)して使う必要がある?



本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171103

GSL Shell 学習:FFT(離散フーリエ変換)

2017-12-11 :  PCクリニック
ふと、FFT(Fast Fourier Transforms)は?
と、気になった。
過去記事を見直してみると、
3年前(2014-05-01)の記事「Python 学習:FFT(高速離散フーリエ変換)
があった。

  ・・・・・
  ・・・・・
  「R: 高速離散フーリエ変換」
  なるページをブックマークしていた。

  ・・・・・
  ・・・・・

  このような数学的な(?)処理は、Perl には些か不向き?

  今回、Python の学習途中で、
  FFT はどうなのか?
  学習した。

  先の「R」では、・・・
  久しぶりに、「RStudio」を立ち上げて、
    x <- 1:4
    fft(x)
  の2行を打ち込んでみると、
    [1] 10+0i -2+2i -2+0i -2-2i
  となった!

  それでは、「Python」では?

  先ずは、パッケージ/モジュールの検索。
  「Python FFT」での検索結果、
  「NumPy v1.8 Manual」の、
  「Discrete Fourier Transform (numpy.fft)」
  やはり、「Numpy」でしたか。
  ・・・・・
  ・・・・・


では、今回のGSL Shellでは?

GSL Shell 2.3.1 documentation」の、
第15章:Fast Fourier Transform
にあった。

このドキュメントについては、
昨年2月頃、頑張って学習していた?
例えば、2月24日の記事「GSL Shell 学習:Nonlinear Least Squares Fit
では、13章だった。

だが、なぜか15章を飛ばしていた。


で、今回改めて学習した。

上記3年前の記事にある、

R言語:
  x <- 1:4
  fft(x)

Python:
  import numpy as np
  x = range(1,5)
  np.fft.fft(x)

に対応するのは?


GSL Shell では、
  x = matrix.vec{1,2,3,4}
  num.fft(x)

ですネ。

で、以上3言語とも、
結果は全く一緒ですネ。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171104

Lua 学習:math.deg、math.rad

2017-12-08 :  PCクリニック
ひょんなことから、
Lua 5.2 リファレンスマニュアル”に、
math.degmath.rad が載っている事に、今更ながら気が付いた。


これまでは、

三角関数 : math.sinmath.cos、・・・

逆三角関数 : math.asinmath.atan2、・・・

ばかりに、注目していたようダ。



それで、
最初に書いた2つの関数は、
角度の表現形式を変換するものですネ。

math.deg( math.pi ) --> 180

math.rad( 180 ) --> 3.1415926535898


この様な、
一見煩わしい事に対する関数は
効果的に使って行こう。


本日はここまで。


Lua 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171102

GSL 学習:“gsl_b.lua”モジュール?

2017-12-06 :  PCクリニック
8月(2017-08-16)の記事「GSL 学習:“gsl_a.lua”モジュール?」では、
  ・・・・・
  ・・・・・
  そして、取り敢えずdouble版と、long版について、
  一部、計 16 ヘッダーファイルを取り込んだ。
  「gsl_block_double.h」「gsl_block_double_long.h」「gsl_histogram.h」
  「gsl_histogram2d.h」「gsl_interp.h」「gsl_permute_double.h」
  「gsl_permute_long.h」「gsl_sort_double.h」「gsl_sort_long.h」
  「gsl_statistics_double.h」「gsl_statistics_long.h」「gsl_spline.h」
  「gsl_matrix_double.h」「gsl_matrix_long.h」「gsl_vector_double.h」
  「gsl_vector_long.h」

  これらのファイルから“構造体”と“関数”の定義を抜き出した。
  ・・・・・
  ・・・・・

そして、
“gsl_a.lua”モジュールもどきを作った。


今回、
それらに加えて、
uchar版と、ushort版にも対応すべく、
機能拡張を行った。

前回と同じ gsl-1.9.tar.gzから、
一部、計 12 ヘッダーファイルを取り込んだ。
 「gsl_block_uchar.h」「gsl_permute_vector_uchar.h」「gsl_sort_uchar.h」
 「gsl_statistics_uchar.h」「gsl_matrix_uchar.h」「gsl_vector_uchar.h」
 「gsl_block_ushort.h」「gsl_permute_vector_ushort.h」「gsl_sort_ushort.h」
 「gsl_statistics_ushort.h」「gsl_matrix_ushort.h」「gsl_vector_ushort.h」

これらのファイルから(“構造体”と)“関数”の定義を抜き出し、
「gsl_cdef_Func_uchar.lua」と「gsl_cdef_Func_uchort.lua」を作った。
(専用スクリプトを作成して実行)

この2ファイルを併合して
「gsl_cdef_Func_uchar_ushort.lua」を作り、
前回と同様に、過不足チェックを行った。

不足する“構造体”等の定義:
----- gsl_cdef_Struct_uchar_ushort.lua -----
ffi.cdef[[

typedef unsigned char uchar;
typedef unsigned short ushort;

typedef struct { size_t size1; size_t size2; size_t tda;
uchar * data;
gsl_block * block; int owner;
} gsl_matrix_uchar;

typedef struct { size_t size; size_t stride;
uchar * data;
gsl_block *block; int owner;
} gsl_vector_uchar;

typedef struct { size_t size1; size_t size2; size_t tda;
ushort * data;
gsl_block * block; int owner;
} gsl_matrix_ushort;

typedef struct { size_t size; size_t stride;
ushort * data;
gsl_block *block; int owner;
} gsl_vector_ushort;


typedef gsl_vector_uchar _gsl_vector_uchar_view;
typedef gsl_vector_uchar _gsl_vector_uchar_const_view;

typedef gsl_vector_ushort _gsl_vector_ushort_view;
typedef gsl_vector_ushort _gsl_vector_ushort_const_view;

]]
を作った。


最後に、
「gsl_cdef_Func_uchar_ushort.lua」と「gsl_cdef_Struct_uchar_ushort.lua」
の2ファイルを集めて、「gsl_b.lua」とした。

ここで、
以前の“gsl_a.lua”は 内部で呼び出すことにした。


これで、従来の

  require'gsl_a'

は継続して使え、

  require'gsl_b'

とすることも可能である。


さらに、

  require'gsl_b'

  M = ffi.new('uchar[6]', 2, 20, 5, 11, 0, 4 )
  k = gsl.gsl_stats_uchar_max_index( M, 1, 6 )

も使える。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171103

Lua ドキュメント・サイト(改)

2017-12-04 :  PCクリニック
前(2017-12-01)の記事「GSL Shell コード・テンプレート(改)」に
対応して、・・・・・
昨年3月(2016-03-28)の記事「GSL Shell 学習:Lua ドキュメント・サイト」の
内容を見直した。


言語仕様:

GSL Shell 2.3.1 documentation

LuaJIT / Extensions

Lua 5.2 リファレンスマニュアル



ガイドブック:

Learn Lua in 15 Minutes

Programming in Lua (first edition)

Lua Tutorial

Hyperpolyglot / Perl, Lua

Lua 5.1 言語仕様メモ - Qiita



モジュール別:

Penlight Lua Libraries 1.5.4

Microlight - a very compact Lua utilities module

LuaFileSystem ( Luapower )

time ( Luapower )

OpenCV 2.4.13.4 / API Reference

GSL Reference Manual / GNU Scientific Library

gnuplotスクリプトの解説

IUP:Portable User Interface

afxLua - MS Windows API Library

Tiny C Compiler 0.9.26 binding for LuaJIT



本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171105,20

GSL Shell コード・テンプレート(改)

2017-12-01 :  PCクリニック
先月下旬(2017-11-22)の記事「Microlight - a very compact Lua utilities module」と、
その後(2017-11-27)の記事「Microlight 学習:split 関数
に対応して、
先月初め(2017-11-08)の記事「GSL Shell コード・テンプレート」で書いた、
Code Template「Code_Template.gsl」を改訂した。


プログラム「Code_Template_Rev.gsl」:
----- Code_Template.gsl     <== プログラムの名前

--[[
   プログラムの仕様・コメント 等々

  プログラム・ファイルのコード:'Shift-JIS'

  コマンドライン引数:
   arg 引数リスト    #arg 引数の個数
arg[0] 当プログラム名

]]
--======================
require'cv2_a' -- 'OpenCV' 使用: cv2.cvLoadImageM 等々
require'gsl_a' -- 'GSL' 使用: gsl.gsl_rng_get 等々
gp = require'gnuplot' -- 'gnuplot' 使用: gp.Plot 等々
require'pl' -- 'Penlight'使用: path.currentdir 等々
require'ml'.import() -- 'Microlight' : split、range 等々?

require'winman' -- 'afxLua/winman'使用: winman.send 等々
Iup = require'IUP' -- 'IUP' 使用: Iup.Open 等々

lfs = require'lfs' -- 'LFS' 使用: lfs.attributes 等々
--- 'Penlight' 経由で 'lfs' を使いたいなら
_ = path.currentdir()

--==================================
-- use'math' -- 'math.log' を 'log' と モジュール名の省略
-- use'bit' -- 'bit.band' を 'band' ※  これは使用注意

f = |x| x^2 - 1 --=== function f(x) return x^2-1 end

--==================================

----- ディレクトリ内ファイル一覧取得:
require'pl'
f_list = dir.getfiles( Dir )


----- ファイル(不)存在チェック:
require'afx'
if not afx.fileexists( f ) then
-- ~
end


-- D&D でファイル名取得:
require'pl'
Dir, Fname = path.splitpath( arg[1] )
lfs.chdir( Dir ) -- これ必要?


----- 入力テキストファイルについて、
-- ファイル全体を一括で(文字列として)読み込む:
require'pl'
wstr = file.read( 'hoge.txt' )
----- 又は、
require'ml'.import()
wstr = readfile( 'hoge.txt' )

-- ファイル全体を行毎の文字列配列で読み込む:
require'pl'
w = utils.readlines( 'hoge.txt' )
-- 更に、一行分を分割(空白区切り):
v = stringx.split(w[i])
----- 又は、
require'ml'.import()
v = split(w[i])


-- CSVファイル全体をテーブルとして読み込む:
t = csv.read( 'hoge.csv' )
-- 更に、数値のみなら行列に変換:
m = matrix.def( t )
----- 非数値データの行(テーブル要素)を除くには:
table.remove( t, 1 ) -- とかで。

----- 入力バイナリファイルについて、
-- ファイル全体を4バイト整数配列として読み込む:
IN=io.open('hoge','rb'); buf=IN:read('*a'); IN:close()
pt=ffi.cast('int32_t*',buf)


----- 出力テキストファイルについて、
-- 'fprintf' で書き出し:
require'pl'; OT=io.open('f.txt','w')
utils.fprintf( OT, ' %g %d %s\n' , floatv, intv, str )
OT:close()

--===============================
----- 文字列が数値を表すか?判定
if tonumber( str ) ~= nil then
-- ~
end

--===============================

----- Python の 'range'
require'pl'

for k in seq.range( 0, n-1 ) do -- for k in range( n ) :
-- ~ -- # ~
end -- # 無し

for k in seq.range( i, j-1 ) do -- for k in range( i, j ) :
-- ~ -- # ~
end -- # 無し

----- 又は、
require'ml'.import()
for k in range( 0, n-1 ) do
-- ~
end


plc = require'pl.comprehension'.new()
T = plc('x for x=1,5')() -- T は { 1, 2, 3, 4, 5 }
--- plc 'x for x=1,5' () -- これでも可
V = matrix.vec( plc'x for x=1,5'() ) -- これで 'matrix'ベクトル


--===============================
----- 三角関数 逆三角関数
-- sin、cos、tan、・・・・・ asin、acos、atan、atan2
------------------ rad、deg

----- 特殊関数
-- sf.fact(n) ・・・ 階乗(factorial) n!
-- sf.gamma(x)・・・ ガンマ関数(gamma function)
-- x は正数。 use:real Lanczos method ( ランチョス法 )


--===============================
--[[ ----- 過去記事/備忘録 -----

備忘録:(2017-04-08)記事
「Lua 言語仕様:備忘録(忘れやすい事)4言語対比表」
 http://jn1inl.blog77.fc2.com/blog-entry-2523.html
「H29-03-04_Lua言語仕様_備忘録.html」H29-03-22 /_GSL/

関数フィッティング:(2017-04-05)記事
「GSL Shell 学習:Fitting サブ(改)」
 http://jn1inl.blog77.fc2.com/blog-entry-2521.html
「SUB_GSL_Fit.lua」H28-02-04 /_GSL/H28-12-10_FitGSL/

非線形1変数方程式の求解:(2017-06-21)記事
「GSL Shell:非線形1変数方程式の求解モジュール自作」
 http://jn1inl.blog77.fc2.com/blog-entry-2569.html
「NL_1var_Rev.gsl」H28-05-07 /_GSL_tcc/H29-05-06_Solve_Newton/

非線形2変数方程式の求解:(2017-06-24)記事
「GSL Shell:非線形2変数方程式の求解モジュール自作」
 http://jn1inl.blog77.fc2.com/blog-entry-2571.html
「NL_2var_Rev2.gsl」H28-05-11 /_GSL_tcc/H29-05-06_Solve_Newton/

スプライン補間:(2016-09-19)記事
「GSL Shell 学習:スプライン補間」
 http://jn1inl.blog77.fc2.com/blog-entry-2404.html
「GDT_Spline.gsl」H28-08-12 /_GSL/H28-08-12_Spline/

'OpenCV' サンプルコード:(2017-07-30)記事
「OpenCV:cvFindContours 正常に出来た」
 http://jn1inl.blog77.fc2.com/blog-entry-2592.html
「cvFitEllipse2_7.gsl」H29-06-28 /_GSL_CV/H29-06-27_FindContours_FitEllipse2/

'GSL' サンプルコード:(2017-08-23)記事
「GSL 学習:配列要素の並び替え」
 http://jn1inl.blog77.fc2.com/blog-entry-2605.html
「gsl_sort.gsl」H29-07-17 /_GSL_gslib/H29-07-17_Sorting/

'gnuplot' 用モジュール定義:(2017-11-06)記事
「Lua & gnuplot:gnuplot モジュール改訂2」
 http://jn1inl.blog77.fc2.com/blog-entry-2638.html
「gnuplot.lua」H29-06-20 /_gnuplot/H29-06-20_gp_lua/

'IUP' サンプルコード:(2017-02-12)記事
「IUP で GUI アプリ:コード改訂」
 http://jn1inl.blog77.fc2.com/blog-entry-2486.html
「IUP_Exact_Dbl_Entou_Rev.gsl」H29-01-18 /_GSL/H29-01-18_IUP_3/

'afxLua' サンプルコード:'afx'、'cio'、'clipboard'、'winman'、'winreg'
検索「afxLua」
 http://jn1inl.blog77.fc2.com/?q=afxLua
]]
今回は、こんなところ?


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171120

Lua 学習:文字列分割3法

2017-11-29 :  PCクリニック
Lua ( GSL Shell ) において、
文字列分割については、・・・・・

昨年3月(2016-03-12)の記事:
GSL Shell 学習:split 関数(再)」の“mysplit”関数

今年6月(2017-06-16)の記事:
Lua ( GSL Shell ) / Penlight 学習:これは頂き」の“utils.split”関数

そして、前(2017-11-27)の記事:
Microlight 学習:split 関数」の“split”関数

これら3法の仕様について比較検証を行った。
 1)タブの扱い
 2)先頭に空白が有る場合
----- test_prog.gsl -----

--「GSL Shell 学習:split 関数(再)」で書いた mysplit 関数
function mysplit( str, sep )
if sep == nil then sep = '%s' end
local t={} ; i=1
for str in string.gmatch( str, "([^"..sep.."]+)") do
t[i] = str i=i+1
end
return t
end

-- Penlight の utils.split 関数
require'pl'
--[[ utils.split( str, sep, plain, n )
・ s: The input string
・ re: A Lua string pattern; defaults to‘%s+’
・ plain: plain don't use Lua patterns
・ n: optional maximum number of splits
]]

-- Microlight の split 関数
require'ml'.import()
--[[ split( s, re, n )
・ s: The input string
・ re: A Lua string pattern; defaults to '%s+'
・ n: optional maximum number of splits
]]

--====================================

-- テストデータ
s1 = ' a b c'; s2 = ' a \t b \t c'

-- 実行1:
print( mysplit(s1) ) --> {"a", "b", "c"}
print( utils.split(s1) ) --> {"", "a", "b", "c"}
print( split(s1) ) --> {"", "a", "b", "c"}

-- 実行2:
print( mysplit(s2) ) --> {"a", "b", "c"}
print( utils.split(s2) ) --> {"", "a", "b", "c"}
print( split(s2) ) --> {"", "a", "b", "c"}

-- 結果:
--[[ 何れも、タブ空白と同じ扱い。
   行頭に空白があった場合の扱いは:
     mysplit:空白が無いのと同じ扱い。
     pl / ml:先頭にが有るとみなす。
]]
と云うことですか。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171030

Microlight 学習:split 関数

2017-11-27 :  PCクリニック
先日(2017-11-22)の記事「Microlight - a very compact Lua utilities module
では、range 関数だった。

更なる学習で、
String utilties に、
split 関数があった。

 split( s, re, n )
   split a delimited string into an array of strings.

 Parameters:
   ・ s: The input string
   ・ re: A Lua string pattern; defaults to '%s+'
   ・ n: optional maximum number of splits

 Returns:

 an array of strings


試しのテストメイン:
--- test.gsl ---
require'ml'.import()

w = 'ABC XYZ'

print( split(w) ) ---> {"ABC", "XYZ"}
関数名が 単なる 'split' であって、
これは good.


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171030

Python-like string formatting

2017-11-24 :  PCクリニック
前(2017-11-22)の記事「Microlight - a very compact Lua utilities module
に続いて、
Lua関連での捜しもので、

Lua Unofficial FAQ (uFAQ)

を見つけた。

このサイトは、

昨年2月(2016-02-18)の記事「GSL Shell 学習:require と、dofile
と、
同年3月(2016-03-06)の記事「GSL Shell 学習:グローバル・テーブル arg
で、参照している。


それで、
改めて中を見ていたら、

1.29 Is there string Interpolation, for example in "$VAR is expanded"?
に、

  Python-like string formatting can be done in Lua:
  Pythonの様な文字列フォーマッティングも Luaで出来る:
print( "%5.2f" % math.pi )
print( "%-10.10s %04d" % { "test", 123 } )
The implementation is short and cool:
実装は短く、かっこいい:
getmetatable("").__mod = function(a, b)
if not b then
return a
elseif type(b) == "table" then
return string.format(a, unpack(b))
else
return string.format(a, b)
end
end
  Lua strings share a metatable,
  so this code overrides the % (modulo) operator for all strings.
  Lua 文字列はメタテーブルを共有するので、
  このコードはすべての文字列の % (剰余) 演算子をオーバーライドする。


そうすると、
この、「関数定義」をしておけば、
string.format ( sprintf )も、
w = ( "%-10.10s %04d" % { "test", 123 } )
w = '%-10.10s %04d' % { 'test', 123 } -- これでもOK
も可能ダ。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171028

Microlight - a very compact Lua utilities module

2017-11-22 :  PCクリニック
Lua関連で捜しものをしていたら、・・・・・

  stevedonovan / Microlight
  A little library of useful Lua functions,
  intended as the 'light' version of Penlight

を見つけた。


このページにも解説はあるが、
ドキュメントは、これ:Module ml ですね。

  Microlight - a very compact Lua utilities module
  Steve Donovan, 2012; License MIT


この Microlight は、
最初にあるように、
  Penlight の、
  the 'light' version


試しに、
当記事最初のページの右側にある
緑色の「Clone or download」ボタンから

「Microlight-master.zip」 2015/04/06 版  25.9KB

をダウンロードした。

書庫内には幾つかあるが、
(多分) ml.lua 27.5KB 1つでOK?


少々学習(?)していたら、
7月7日の記事「Lua ( GSL Shell ) / Penlight 学習:range 関数
に比べて、シンプルなものがあった。

  range ( x1, x2, d )
    create an array of numbers from start to end.
    With one argument it goes 1..x1.
    d may be a floating-point fraction


対話型で確認:( 'ml.lua' を置いた場所で )
・・・ DOS 窓で、・・・

> gsl-shell

> _ = require 'ml'.import()

> range( 2, 10 )
{2, 3, 4, 5, 6, 7, 8, 9, 10}

> range( 5 )
{1, 2, 3, 4, 5}

> range( 1, 2, 0.3 )
{1, 1.3, 1.6, 1.9}
となった。


時と場合によっては、'Penlight' よりは使い勝手が良い?


本日はここまで。


Lua ( GSL Shell ) / Microlight 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171028
おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
01 | 2018/02 | 03
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク