トップページ > プログラム > 2016年02月13日 > 3L3e3K/U

書き込み順位&時間帯一覧

3 位/208 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000006120000001000010



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Julia Juno Jupyter part1 [無断転載禁止]©2ch.net
くだすれPython(超初心者用) その28©2ch.net

書き込みレス一覧

Julia Juno Jupyter part1 [無断転載禁止]©2ch.net
6 :デフォルトの名無しさん[sage]:2016/02/13(土) 10:10:05.58 ID:3L3e3K/U
漏れもなんとなく見覚えがある気がするんだよなぁ・・・

落ちる条件ってなんだっけ
Julia Juno Jupyter part1 [無断転載禁止]©2ch.net
7 :デフォルトの名無しさん[sage]:2016/02/13(土) 10:11:00.83 ID:3L3e3K/U
という訳で保守がてら

juliaからCの関数を呼んでみた

julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}), "%s", "abc")
abc
julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}, Int), "%s%d", "abc", 9)
abc9

引数の数が自由なのがいいねっ!
Julia Juno Jupyter part1 [無断転載禁止]©2ch.net
8 :デフォルトの名無しさん[sage]:2016/02/13(土) 10:12:28.35 ID:3L3e3K/U
おれおれDLLだと呼び出し方がちょっと変わるみたい
(最近仕様が変わったらしいので古いドキュソの通りやると動かない
っていうか最新のドキュソもまだ動かないサンプルのままだぞω)

julia> libcurl = Base.Libdl.dlopen_e("./libcurl.dll")
Ptr{Void} @0x2c76e2c0
julia> curl_version = Base.Libdl.dlsym(libcurl, :curl_version)
Ptr{Void} @0x6b25c740
julia> curl_getenv = Base.Libdl.dlsym(libcurl, :curl_getenv)
Ptr{Void} @0x6b25c854
julia> curl_free = Base.Libdl.dlsym(libcurl, :curl_free)
Ptr{Void} @0x6b25cbf8
julia> p = ccall(curl_version, Ptr{Cchar}, ())
Ptr{Int8} @0x6b29c060
julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}), "%s", p)
libcurl/7.30.0 OpenSSL/1.0.1e zlib/1.2.7
julia> q = ccall(curl_getenv, Ptr{Cchar}, (Ptr{Cchar}, ), "NUMBER_OF_PROCESSORS")
Ptr{Int8} @0x2c76df10
julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}), "%s", q)
8
julia> ccall(curl_free, Cuint, (Ptr{Void}, ), q)
0x00000001
julia> Base.Libdl.dlclose(libcurl)

うっかり解放忘れそう
Julia Juno Jupyter part1 [無断転載禁止]©2ch.net
9 :デフォルトの名無しさん[]:2016/02/13(土) 10:14:00.39 ID:3L3e3K/U
stdcallな関数だとさらにこんな感じだよ

julia> user32 = Base.Libdl.dlopen_e("user32.dll")
Ptr{Void} @0x2c767300
julia> MessageBoxA = Base.Libdl.dlsym(user32, :MessageBoxA)
Ptr{Void} @0x76c6cf50
julia> err = ccall(MessageBoxA, stdcall, UInt, (Ptr{UInt}, Ptr{Cchar}, Ptr{Cchar}, UInt), 0, "Hello, work!", "Message", 0)
0x00000001

wchar_tはArray{UInt16,1}らしい(UTF8を表示したければ先にwchar_tへの変換が必要)

julia> MessageBoxW = Base.Libdl.dlsym(user32, :MessageBoxW)
Ptr{Void} @0x76c6d280
julia> err = ccall(MessageBoxW, stdcall, UInt, (Ptr{UInt}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt), 0, Array{UInt16,1}([0x304C,0x3063,0xFF01,0]), Array{UInt16,1}([0x306C,0x308B,0x307D,0]), 0)
0x00000001
julia> Base.Libdl.dlclose(user32)

解放解放

引数や戻り値の定義を呼び出しのたびに何度も書くの面倒なのでマクロを書くのが良いらしいよ
Julia Juno Jupyter part1 [無断転載禁止]©2ch.net
10 :デフォルトの名無しさん[sage]:2016/02/13(土) 10:17:20.41 ID:3L3e3K/U
>っていうか最新のドキュソもまだ動かないサンプルのままだぞω

ああごめん動くわ
Julia Juno Jupyter part1 [無断転載禁止]©2ch.net
11 :デフォルトの名無しさん[sage]:2016/02/13(土) 10:22:27.58 ID:3L3e3K/U
ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}), "%s", ccall((:curl_version, :libcurl), Ptr{Cchar}, ()))

err = ccall((:MessageBoxW, :user32), stdcall, UInt, (Ptr{UInt}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt), 0, Array{UInt16,1}([0x304C,0x3063,0xFF01,0]), Array{UInt16,1}([0x306C,0x308B,0x307D,0]), 0)

Array{UInt16,1}のところはArray{Cwchar_t}とかVector{Cwchar_t}とも書ける

err = ccall((:MessageBoxW, :user32), stdcall, UInt, (Ptr{UInt}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt), 0, Vector{Cwchar_t}([0x304C,0x3063,0xFF01,0]), Array{Cwchar_t}([0x306C,0x308B,0x307D,0]), 0)

これでいいね
loadは省けるけど毎回loadと解放してくれてるんだろうか
Julia Juno Jupyter part1 [無断転載禁止]©2ch.net
13 :デフォルトの名無しさん[]:2016/02/13(土) 11:59:14.88 ID:3L3e3K/U
もう少しちらうら
julia> bytes2hex([65,97,66,98,0x5c])
ERROR: MethodError: `bytes2hex` has no method matching bytes2hex(::Array{Int32,1})
julia> bytes2hex(Array{UInt8,1}([65,97,66,98,0x5c]))
"416142625c"
julia> bytestring(Array{UInt8,1}([65,97,66,98,0x5c]))
"AaBb\\"
julia> hex2bytes("416142625c")
5-element Array{UInt8,1}: 0x41 0x61 0x42 0x62 0x5c
julia> string2bytes("AaBb\\")
ERROR: UndefVarError: string2bytes not defined
julia> stringbytes("AaBb\\")
ERROR: UndefVarError: stringbytes not defined
julia> read(IOBuffer("AaBb\\"))
ERROR: MethodError: `read` has no method matching read(::Base.AbstractIOBuffer{Array{UInt8,1}})
julia> read(IOBuffer("AaBb\\"), UInt8)
0x41
julia> read(IOBuffer("AaBb\\"), UInt8, length("AaBb\\"))
5-element Array{UInt8,1}: 0x41 0x61 0x42 0x62 0x5c

んー
マニュアルにはreaddim()があるって書いてあるのに・・・
何かimport忘れてるとか?
length省略できんのもなんだかな
勘違いならいいけど
くだすれPython(超初心者用) その28©2ch.net
905 :デフォルトの名無しさん[]:2016/02/13(土) 12:09:09.57 ID:3L3e3K/U
>>903
日本語でググるとひどいことになるな
くだすれPython(超初心者用) その28©2ch.net
906 :デフォルトの名無しさん[sage]:2016/02/13(土) 12:11:40.25 ID:3L3e3K/U
>>901
ここに速度比較っぽいものがあるね
http://blog.rawrjustin.com/blog/2014/03/18/julia-vs-python-monte-carlo-simulations-of-bitcoin-options/
https://chezou.wordpress.com/2014/05/07/julia-vs-python-bitcoin-option/
くだすれPython(超初心者用) その28©2ch.net
923 :デフォルトの名無しさん[sage]:2016/02/13(土) 19:03:45.02 ID:3L3e3K/U
virtualenv とかみたいに windows の時刻表示も環境ごっそり替えられたらいいのに


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。