GNU Wget - Wget for Windows

2017-06-07 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
先日(2017-06-03)の記事「cURL 学習:クッキーの扱い(分からない)」で、
悩んでいたが、・・・・・

ハタと気が付いた:
“curl”は、Linuxのコマンドにある。
・・・「ITpro」の「Linuxコマンド集」:
   「【curl】ファイルのダウンロードやアップロードを行う
そうすると、もう1つ“Linuxコマンド”があった。
・・・「Linuxコマンド集」:
   「【 wget 】ファイルをダウンロードする

そこで、
「Windows wget」で検索してみた。

“Qiita”の「Windowsでwgetする色々な方法

“アシマネくんのほんわか日記”の「Windows版 wgetをインストールしよう

そして、本家?
“GnuWin32”の「Wget for Windows

等々が見つかる。


「Wget for Windows - GnuWin32」の、
Homepage」にある、
  Downloading GNU Wget
を見に行った、・・・・・
最新版は、「wget-1.19.tar.gz」か「wget-1.19.tar.xz」???

それで、「Wget for Windows」で検索したら、
“eternallybored.org”の
GNU Wget 1.19.1 for Windows」が見つかる。

ここでは、最新版(1.19.1)の32-bit binary は2種類:
  ・wget-1.19.1-win32.zip
  ・wget.exe

そこで、
 「wget-1.19.1-win32.zip」 2017/02/25 付 1.74MB
をダウンロードした。


実質、
 「wget.exe」 3.32MB
1つですネ。


適当な場所に「wget.exe」を取り出し、
コマンドプロンプトで、

  wget http://jn1inl.blog77.fc2.com/ -O kami.html

と打ち込むと、読み込めた!


改めて、導入した:

フォルダを作り:D:/TOOL/wget4Win/
そこに、(取り敢えず)展開結果の5つを格納。
そして、
'PATH' に登録:D:\TOOL\wget4Win


これで、
LuaSocket

cURL
もヤメテ、
Wget for Windows 1本で行く?


本日はここまで。


Wget for Windows 学習は続く。


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


170503

Lua 学習 : os.date と lfs.attributes

2017-06-05 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
昨年11月(2016-11-11)の記事「Lua 学習:ファイル存在確認」で書いている、
“LFS ( LuaFileSystem )”の、“lfs.attributes”関数で、
ファイルの更新日付等々が得られる。

-- f : 対象ファイル名
mt = lfs.attributes( f, 'modification' )
print( mt )
とやってみた。

mt は、1433217246 の様な数値!


これは、
昨年末(2016-12-19)の記事「Kinza のブックマーク・データ」で書いている、
  Firefox では、 ADD_DATE="1472162037"
に相当する。


つまり、
UNIX時間”(即ち) 秒数で表した時刻
ですね。

これは、os.date 関数で変換できたのですネ。
DT = os.date( '%Y/%m/%d %H:%M:%S', mt )
print( DT )
としたら、

DT は、2015/06/02 12:54:06

の様に ( ローカル時刻で ) 表示された。


ここで、
n を時刻じゃなく時間として、
0 ~ 60*60-1 のとき、

  os.date( '%M:%S', n )

の結果は、
キッチリ した値になる。

では、

  os.date( '%H:%M:%S', n )

では、
9時間異なる。

つまり、ローカル時間だから?


ここで、学習したこと。

  os.date( '!%H:%M:%S', n )

とすると、local timeじゃなくてUTCになる。

なので、
n が、0 ~ 60*60*24-1 まで、キッチリ した値が得られる。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


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


170502

cURL 学習:クッキーの扱い(分からない)

2017-06-03 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-06-02)の記事「cURL : command line tool and library for ・・・」の後、

俺的備忘録 ~なんかいろいろ~
の、

  11.Cookieを用いてログイン情報を保存する

  curlで、Cookieを用いてログイン情報を保存し、
  その後認証が必要なページにアクセスする場合は、
  以下のようにログイン情報を転送する。
  ・・・・・
  ・・・・・

とか、

「curl クッキー ファイル」検索で見つけた:
curl コマンドでリダイレクト時にcookie の維持

  ・cookieを使ってコンテンツ取得

  ・サーバーから発行されたcookieを保存

  ・HTTP 302 Found のリダイレクトに対応する

などを、
頑張って学習しているが、・・・・・

目的のページを取得することが出来ない???


出直しが必要ダ。


もっと学習します。


本日はここまで。


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


170428

cURL : command line tool and library for transferring ・・・

2017-06-02 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
昨年末(2016-12-21)の記事「Lua で Web アクセス」で書いた如く、
LuaSocket を導入したが、純粋なLua の、Ver.5.1 向け?
苦労した結果、
続く記事「GSL Shell で Web アクセス」で書いた如く、
何とか、Perl における「LWP::Simple」に相当することは出来た。
しかし、ログインを必要とする様な事を行う方法が分からない。


「Lua http login」で検索してみたところ、・・・
“スタック・オーバーフロー”の
simulation login using lua」が見つかった。

そこの回答にある方法で試してみたが、・・・
クッキーの扱いが分からない?


ならば、C言語ではどうか?
「gcc Webページ 読み込み」で検索したら、・・・

“mk-mode BLOG”の
C++ & cURL で Web スクレイピング!」が見つかった。

記事の初めの部分に、
  cURL(HTTPやFTPでデータのやり取りをするライブラリ)
と云う記述がある。

cURL って???

“ウィキペディア”の記事:「cURL」には、

  対応OS : クロスプラットフォーム

とあるので、
「cURL Windows」で検索した。

“いろいろやってみるにっき”の
WindowsにcURLコマンドを入れて動作確認する
を見つけた。

「CURL.exe」、「LIBCURL.DLL」など4ファイル。
でOK?


早速、ダウンロード。
本家サイト:「curl and libcurl」の
ダウンロードページ」の下の方にある、
  Win32 - Generic
から、
  Win32 7zip 7.54.0 binary SSL SSH (Viktor Szakats) 1.67 MB
つまり、
  「curl-7.54.0-win32-mingw.7z」
をダウンロードした。
展開すると、“bin”フォルダ等4つと、11ファイル。

で、“bin”フォルダには、
「curl.exe」、「libcurl.dll」とあと1つ。
多分2つさえあれば使える?

取り敢えず、展開した全部を、「D:/TOOL/cURL/」に置き、
そして、 'PATH' に 'D:\TOOL\cURL\bin' を登録した。


そして、手始めに、
GSL Shell で Web アクセス」で書いた:
http = require'socket.http'
ltn12 = require'ltn12'
http.request{ url='http://jn1inl.blog77.fc2.com/', sink=ltn12.sink.file(io.open('kami.html','wb')) }
相当をコード化して見た ( GSL Shell で )
os.execute( 'curl http://jn1inl.blog77.fc2.com/ > kami.html' )
この1行!

これは便利ダ!


もっと学習してみよう。


本日はここまで。


cURL 学習は続く。


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


170426

LuaJIT-tcc 学習:コールバック処理?(その2)

2017-05-31 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
先日(2017-05-22)の記事「LuaJIT-tcc 学習:これって、コールバック処理?」では、
  ・・・・・
  ・・・・・
  これって、所謂コールバック処理でしょうか?
  まあ、それは置いておいて、
  今回、データの共有が出来るのか?
  確認してみた。
  ・・・・・
  ・・・・・
と書いている。

今回は、
この方式で更に確認して見た。

それは、
GSL(GNU Scientific Library) による乱数生成の処理で、・・・

メインの GSL Shell で初期化を行っておき、
乱数を用いた処理を tcc で行うが、
順次乱数を発生させる処理は、
Cコードから呼び出す、GSL Shell で行う。

序でに、goto に依る、見た目の前方参照も。

作ったのは:
---------- L_C_L_rnd.gsl -----
-- 先ずは、tcc 利用準備2行:
tcc=require'tcc'('libtcc')
TCL=tcc.new(); TCL:set_output_type('output_memory')

-- 以下にCから呼ぶ GSL Shellコード
r_get = || rr:get() -- rr は、global

TCL:add_symbol( 'r_get', r_get, 'double(*)(void)' )
goto CsubComp -- Cコードコンパイル
::MAIN::
C_SUB=TCL:get_symbol( 'C_SUB', 'void(*)(int,int*)' )

-- 以下がメイン処理:
rr=rng.new('mt19937'); rr:set(os.time()) -- rr は、global
T = ffi.new( 'int32_t[10]' )
C_SUB( 10^6, T ) ----- Lua → C → Lua
for i=0,9 do print( T[i] ) end

TCL:delete(); os.exit(0)
----- 以下、Cコード&コンパイル
::CsubComp::
TCL:compile_string[[
double r_get();
void C_SUB( int n, int* T ){
for( int i=0; i double v = r_get(); // これが コールバック?
int k = (int)(v*10);
T[k]++;
}
}
]]; TCL:relocate( 'relocate_auto' )
goto MAIN
これで?

行けた!


本日はここまで。


luajit-tcc 学習は続く。


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


170423

tccINT もどき

2017-05-29 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
先日(2017-05-03)の記事「tcc - Tiny C Compiler」以降、

さらに、
先日(2017-05-12)の記事「luajit-tcc:Tiny C Compiler ・・・ for LuaJIT」以降

そこそこ tcc を学習して来た。


ここで、ふと、
5年前(2012-11-28)の記事「CINT:C言語インタプリタ」を思い出した。

出来るかどうかは分からないが、
tcc 版 CINT を作りたくなった。

取り敢えず、tccINT と勝手に呼ぶ。
でも、インタプリタでは無い。


手始めに、以下のような手順を考えた:

“tccINT.gsl”なるファイルを用意しておく。


“tccINT.gsl”をエディタで開いて、
指定場所に、tcc ソース・コードを記述する。

一旦“上書き保存”する。

“tccINT.gsl”をダブルクリックして実行する。


これで、インタプリタもどきと(強引に)呼ぶ???


で、
“tccINT.gsl”ファイルに、tcc コードを入力した例:
----- tccINT.gsl -----
C_Prog=[[
/********** 以下に、tcc ソースを記述する **********/
#include <math.h>
int main(){
for( double x=0; x<=3; x+=0.3 ){
printf( "sin(%f)=%f\n", x, sin(x));
}
return 0;
}
/****************** ここまでに ***************/
]]
tcc = require 'tcc' ('libtcc')
TCL = tcc.new()
TCL:set_output_type( 'output_memory' )
TCL:compile_string( C_Prog )
TCL:run{}
TCL:delete()
------------------
_=io.read(1)
と云った感じ。


出来た。自己満足。


本日はここまで。


luajit-tcc 学習は続く。


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


170420

メール添付ファイル“winmail.dat”なら“Winmail Opener”

2017-05-27 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
某文書ファイルをメールで送ってもらったところ、・・・・・

添付ファイルが winmail.dat と成っていた?

こんなファイルは目にしたことが無く、
どう足掻いても<紙>には復元できなかった。

仕方なく、検索してみたら・・・・・

分かり易いページが見つかった:
winmail.datという添付ファイルを受け取ったときの対処法

それによると、
  winmail.datとは何か
  Winmail.dat ファイルは、リッチ テキスト形式を保持するために使用されます。
  Outlook では、リッチ テキスト形式のメッセージを送信するときに使用します。
  送信中に、メッセージの内容が変更され、受信側のクライアントで書式情報を
  読み取ることができないことがあります。
  また、受信側のクライアントで、winmail.dat ファイルを使用または
  認識できないことがあります。
と云うことで、
  この現象が起きる条件
  これは、Microsoft社のOutlookというメールソフトを使用したユーザーが、
  リッチテキスト形式(RTF)の 電子メールにファイルを添付して送信し、
  受け取った人がOutlook以外のメールソフトで受信すると
  発生することが多い現象です。
だそうです。

<紙>の場合は、当然、Outlook以外のメールソフト


それで、“対処法”が3通り載っている。

  対処法1 テキスト形式のメールで再送信してもらう

  対処法2 Gmailで見る

  対処法3 フリーソフトを使う


“対処法1”は先方に申し訳ない。

“対処法2”はイヤだ。


と云うことで、“Winmail Opener”を導入することにした。


解説(補足):
  Winmail Openerのダウンロード先に指定されているサイト。
  CNETは老舗・有名どころのサイトなので安心なのですが、
  広告にもダウンロードボタンがたくさん出てきてわかりにくい。
  左の方にある緑色のダウンロードボタンが正解。
  また、インストールする際に、
  続けて別のソフトのインストールをおすすめされるので、
  きちんと読んで判断してください。
  (※ フリーソフトなので、・・・・・)
があったので、・・・・・


「Winmail Opener」で検索

“Yahoo! 知恵袋”の
安全なwinmail openerのダウンロード元を教えて下さい。
が見つかった。
これの回答から、

  とりあえず本家:http://www.eolsoft.com/

へ行き、
その中から“Winmail Opener”を探した:

  「Winmail Opener

ここから、

  Download
  You can download ・・・ from our download page.

に行き、ダウンロードするのだが、・・・

右の緑色ボタンではなく、
下の
“Direct link (without Download.com installer)”
から行った。

「winmail_opener.exe」 version: 1.6 2014-03-25 353KB


早速実行(インストール)。


アプリを起動すると、窓が現れるので、
窓の中に“winmail.dat”をドラッグ&ドロップすると、
復元・表示される。

「ファイル」メニューから“保存”が出来る。


メデタシ、目出度し。


本日はここまで。


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


170412

GSL Shell 学習:“CSV”モジュール

2017-05-26 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
GSL Shell で“CSV”ファイルを読み込む事については、
“GSL Shell 学習”の初期の頃
つまり、昨年4月(2016-04-04)の記事:
GSL Shell 学習:“CSV”ファイル読み込み
で“General Data Tables”を使うと、

  ・・・・・
  ・・・・・
  つまり、
    M = gdt.read_csv( 'hoge.csv' )
  とするだけで、
  'hoge.csv' ファイルを読み込める。
  ・・・・・
  ・・・・・

と書いている。

しかしながら,

  'M' の各要素へのアクセスは?
   v = M:get( r, c )
   M:set( r, c, v )
  の様に ( 1オリジンで、) r 行、c 列 の要素にアクセスできる。

と、些か<紙>の性に合わない。
これは、
テーブルの要素が、数値データに限らずどんな型でも許しているから。


だが、数値データに限定すれば、
もっと、<紙>の気に入る方式を発見した。
今頃に成ってですが、・・・・・


GSL shell documentation」の、
第23章「Comma Separated Values Parsing Utilities」にあった。

  The module csv offers a few useful functions to
   read data files in 'csv' format.
  This latter is a quite popular format used to easily save
   simple tabular data as comma-separated values with several lines.
  This format can be used to exchange data with
   spreadsheets applications.

=== Google翻訳

  モジュールcsvは、'csv' 形式のデータファイルを読み込むための
   いくつかの便利な関数を提供しています。
  後者は、単純な表形式のデータを複数の行でカンマ区切りの値として
   簡単に保存するために使用される非常に一般的な形式です。
  この形式を使用すると、スプレッドシートアプリケーションと
   データを交換できます。

例が載っている:
csv = require 'csv'

-- load some data and save the results in a table
t = csv.read('examples/data/sige-sims-prof.csv')

-- if the data contains only numbers it can be easily converted
-- intro matrix form
m = matrix.def(t)

-- ・・・・・
  Please note that the function returns a table, not a matrix.
  If the table is in rectangular form and if it contains only numbers,
  it can easily be converted into a matrix using the function matrix()
   as shown in the example above.

=== Google翻訳

  この関数は行列ではなくテーブルを返します。
  テーブルが長方形であり、数値のみを含む場合は、
  上の例に示すように関数matrix() を使用して
  簡単に行列に変換できます。


そうすると、
非数値のデータが最初の行のみに存在する場合は、

  m = matrix.def(t)

の前に、

  table.remove(t,1)

を追加すればOKですね。


これで、

  v = m[r][c]
  m[r][c] = v

の様に ( 1オリジンで、) r 行、c 列 の要素にアクセスできる。


蛇足:
ゼロオリジンの r 行、c 列 にアクセスしたいなら。
(1次元配列となるが)

  v = m.data[r*Z+c]
  m.data[r*Z+c] = v

の様になる。( Z は 列数即ち、Z = # m[1] )
( 又は、_, Z = m:dim() )


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


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


170411

Python & tcc 学習:libtcc 直接使用

2017-05-24 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
先日(2017-05-19)の記事「tcc 学習:libtcc 直接使用(成功)」では、

  ・・・・・
  ・・・・・
  つまり、
  カレントには、(正しい?)use_libtcc_inline_C.gsl ダケで十分。

  結局、以下のコードで十分:
  ・・・・・
  ・・・・・

と云うことで、
libtcc.dll”を直に使うだけで、
所謂インラインCコードが使えた。


なので、
今回は Python での“libtcc 直接使用”に挑戦。


先日の“use_libtcc_inline_C.gsl”の移植と云うこと?

出来たコードは:
# -*- coding: utf-8 -*-
# ---------- use_libtcc.py -----
import ctypes as ct
tcc = ct.CDLL( 'libtcc' )

ST=''' int Add( int x, int y ){
return x + y;
}
'''
relocate_auto = ct.c_void_p(1)

TCL = tcc.tcc_new();
z = tcc.tcc_set_output_type( TCL, 0 );

z = tcc.tcc_compile_string( TCL, ST );
tcc.tcc_relocate( TCL, relocate_auto )

Add_proto = ct.CFUNCTYPE( ct.c_int, ct.c_int, ct.c_int )
Add = Add_proto( tcc.tcc_get_symbol( TCL, 'Add' ) )
# ------------------

z = Add( 2, 5 )
print( z )

# ------------------
tcc.tcc_delete(TCL)
_=raw_input()
これ1本でOK。

コーディング量は Lua に比べて少ない!


本日はここまで。


luajit-tcc 学習は続く。


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


170408

LuaJIT-tcc 学習:これって、コールバック処理?

2017-05-22 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-05-20)の記事「LuaJIT-tcc 学習:利用法まとめ」で、
  ・・・・・
  ・・・・・
  即ち、Cコードで、SUB 関数を定義し、即時に実行する。
  この時、SUB 関数は、
  ・・・・・
  ・・・・・
  パターンB:Lua の 自作 BBB 関数を呼ぶ
  ・・・・・
  ・・・・・
と書いているが、・・・・・

これって、所謂コールバック処理でしょうか?


まあ、それは置いておいて、
今回、データの共有が出来るのか?
確認してみた。

テスト・プログラムはつまらないもの:
メイン処理で作ったテーブルを(上記の)関数でアクセスできるか?
----- L_C_L_global.gsl
tcc = require 'tcc' ( 'libtcc' )
TCL = tcc.new()
TCL:set_output_type( 'output_memory' )
-------------------- 以上は、固定

function Lget(n) return tbl[n] end

-------------------
TCL:add_symbol( 'Lget', Lget, 'double(*)(int)' )

TCL:compile_string [[
double Lget( int );
double Cget( int n ){ return Lget( n ); }
]]
TCL:relocate( 'relocate_auto' )

Cget = TCL:get_symbol( 'Cget', 'double(*)(int)' )
-------------------

tbl = ffi.new( 'double[5]', 0.1, 1.2, 2.3, 3.4, 4.5 )
z = Cget(3) -- Lua から、C を呼ぶ。その C は、Lua を呼ぶ。
-- 「tbl」共有可能か?確認
print( z )
-------------------- 以下は、固定
TCL:delete()
これを実行すると。
結果は 3.4 となる。
これは正解ですネ。


つまり、グローバルデータは使える。

当然のことでしたか?


本日はここまで。


luajit-tcc 学習は続く。


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


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



おきてがみ

最新記事
カレンダー
05 | 2017/06 | 07
- - - - 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 29 30 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

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

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


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

Google Analytics
ブックマーク