- 追加された行はこの色です。
- 削除された行はこの色です。
*[[Julia:http://julialang.org/]] [#mcc2f191]
#ref(http://upload.wikimedia.org/wikipedia/en/thumb/b/be/Julia_%28programming_language%29_logo.png/320px-Julia_%28programming_language%29_logo.png,right,around,nolink,Julia)
&color(White,#5F2F2F){ ''◆CONTENTS◆'' };&br;
#contents
*Summary [#lf53506c]
Julia は科学技術計算向けのプログラミング言語です.~
-[[The Julia Language:http://julialang.org/]]
-http://julia.readthedocs.org/en/latest/
-http://qiita.com/tags/julia
-[[Wikipedia:Julia_(programming_language)]]
-[[Julia vs. Python: Monte Carlo Simulations of Bitcoin Options:http://rawrjustin.github.io/blog/2014/03/18/julia-vs-python-monte-carlo-simulations-of-bitcoin-options/]]
-[[Python vs Julia - an example from machine learning:http://tullo.ch/articles/python-vs-julia/]]
-[[科学計算が得意な言語Juliaを試してみた:http://qiita.com/chezou/items/d090f26dcb31818d6964]]
-[[RユーザのためのJulia入門(行列編):http://rishida.hatenablog.com/entry/2013/11/30/194733]]
-[[30分で分かる最先端プログラミング言語Julia:http://mechawooser.blogspot.jp/2013/06/30julia.html]]
-[[Julia : スクリプト言語最速? 手軽さと速さを求めた科学技術計算向け言語:http://yohshiy.blog.fc2.com/blog-entry-246.html]]
-[http://bicycle1885.hatenablog.com/entry/2014/06/08/103010 Pythonのコマンドライン引数処理の決定版 docopt (あとJuliaに移植したよ)]
**Julia Benchmarks [#ob1e5eb8]
-http://julialang.org/benchmarks/
**IDE・エディタ [#r3bb2794]
***フリーソフトウェア (オープンソースソフトウェア) [#ob9c9c6e]
-[[Julia Studio:http://forio.com/julia/]]
--https://github.com/forio/julia-studio
--[http://cointoss.hatenablog.com/entry/2014/01/02/213638 Julia Studio で始める Julia 入門]
-[[Emacs]]
-[[Vim]]
*インストール [#m58994ce]
**Windows [#x1bdf474]
-http://julialang.org/downloads/
**OS X [#l34a1fe9]
-http://julialang.org/downloads/
**Linux [#ze24622a]
***Arch Linux [#ha701234]
-https://www.archlinux.org/packages/?name=julia
***Linux Mint [#m3c6af99]
-http://packages.ubuntu.com/ja/julia
***Debian [#f3f3a8ca]
-https://packages.debian.org/ja/julia
***openSUSE [#ha05c419]
-http://software.opensuse.org/package/julia
***Gentoo Linux [#lc2b8837]
-https://packages.gentoo.org/package/dev-lang/julia
*[[fwdsumatrapdf>SumatraPDF/fwdsumatrapdf]] &aname(fwdsumatrapdf); [#me14be9e]
**Julia 版 [#yd2ce169]
julia version 0.3.0-prerelease+3789 で動作確認しています.~
julia version 0.3.0-prerelease+3911 で動作確認しています.~
-----
-fwdsumatrapdf.jl
-----
# vim: ts=4 sw=4 expandtab:
# -*- coding: utf-8 -*-
TIMEOUT = 10000
type STARTUPINFOW
cb::Cuint
lpReserved::Ptr{Cwchar_t}
lpDesktop::Ptr{Cwchar_t}
lpTitle::Ptr{Cwchar_t}
dwX::Cuint
dwY::Cuint
dwXSize::Cuint
dwYSize::Cuint
dwXCountChars::Cuint
dwYCountChars::Cuint
dwFillAttribute::Cuint
dwFlags::Cuint
wShowWindow::Cushort
cbReserved2::Cushort
lpReserved2::Ptr{Cuchar}
hStdInput::Ptr{Void}
hStdOutput::Ptr{Void}
hStdError::Ptr{Void}
end
type PROCESS_INFORMATION
hProcess::Ptr{Void}
hThread::Ptr{Void}
dwProcessId::Cuint
dwThreadId::Cuint
end
function runSumatraPDF()
sinfo = STARTUPINFOW(
0,
C_NULL,
C_NULL,
C_NULL,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
C_NULL,
C_NULL,
C_NULL,
C_NULL)
pinfo = PROCESS_INFORMATION(
C_NULL,
C_NULL,
0,
0)
HKEY_LOCAL_MACHINE = uint32(0x80000002)
KEY_QUERY_VALUE = uint32(0x01)
keyPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\SumatraPDF.exe"
subKey = Cuint[0]
dwType = Cuint[0]
sz = Cuint[0]
ccall((:RegOpenKeyExW, "advapi32"), stdcall,
Clong,
(Cuint, Ptr{Cwchar_t}, Cuint, Cuint, Ptr{Void}),
HKEY_LOCAL_MACHINE, wstring(keyPath), 0, KEY_QUERY_VALUE, subKey)
subKey = subKey[1]
ccall((:RegQueryValueExW, "advapi32"), stdcall,
Clong,
(Cuint, Ptr{Cwchar_t}, Ptr{Cuint}, Ptr{Cuint}, Ptr{Cuchar}, Ptr{Cuint}),
subKey, C_NULL, C_NULL, dwType, C_NULL, sz)
sumatraPDFRegistry_wchar = Cuchar[1:sz[1]]
ccall((:RegQueryValueExW, "advapi32"), stdcall,
Clong,
(Cuint, Ptr{Cwchar_t}, Ptr{Cuint}, Ptr{Cuint}, Ptr{Cuchar}, Ptr{Cuint}),
subKey, C_NULL, C_NULL, dwType, sumatraPDFRegistry_wchar, sz)
CP_ACP = uint32(0)
WC_NO_BEST_FIT_CHARS = uint32(1024)
sumatraPDFRegLength = uint((sz[1] - 2) / 2)
sumatraPDFRegistry = Cuchar[1:sumatraPDFRegLength]
ccall((:WideCharToMultiByte, "kernel32"), stdcall,
Cint,
(Cuint, Cuint, Ptr{Cwchar_t}, Cint, Ptr{Cchar}, Cint, Ptr{Cchar}, Ptr{Cint}),
CP_ACP, WC_NO_BEST_FIT_CHARS, wstring(sumatraPDFRegistry_wchar), -1, pointer(sumatraPDFRegistry), sumatraPDFRegLength, C_NULL, C_NULL)
regValue = bytestring(sumatraPDFRegistry)
ccall((:RegCloseKey, "advapi32"), stdcall,
Clong,
(Cuint,),
subKey)
sumatraPDFCommandLine = "\"$regValue\" -reuse-instance"
ccall((:CreateProcessW, "kernel32"), stdcall,
Cint,
(Ptr{Cwchar_t}, Ptr{Cwchar_t}, Ptr{Void}, Ptr{Void}, Cint, Cuint, Ptr{Void}, Ptr{Cwchar_t}, Ptr{STARTUPINFOW}, Ptr{PROCESS_INFORMATION}),
C_NULL, wstring(sumatraPDFCommandLine), C_NULL, C_NULL, 0, 0, C_NULL, C_NULL, &sinfo, &pinfo)
ccall((:WaitForInputIdle, "user32"), stdcall,
Cuint,
(Ptr{Void}, Cuint),
pinfo.hProcess, TIMEOUT)
end
function ddeExecute(server, topic, command)
APPCMD_CLIENTONLY = uint32(0x10)
CP_WINUNICODE = int32(1200)
CF_UNICODETEXT = uint32(13)
XCLASS_FLAGS = uint32(0x4000)
XTYP_EXECUTE = (uint32(0x0050) | XCLASS_FLAGS)
idInstance = Cuint[0]
ccall((:DdeInitializeW, "user32"), stdcall,
Cuint,
(Ptr{Cuint}, Ptr{Void}, Cuint, Cuint),
pointer(idInstance), C_NULL, APPCMD_CLIENTONLY, 0)
idInstance = idInstance[1]
if idInstance == uint32(0) throw(ErrorException("DdeInitializeW error")) end
hszServer = ccall((:DdeCreateStringHandleW, "user32"), stdcall,
Ptr{Void},
(Cuint, Ptr{Cwchar_t}, Cint),
idInstance, wstring(server), CP_WINUNICODE)
if hszServer == C_NULL throw(ErrorException("DdeCreateStringHandleW error")) end
hszTopic = ccall((:DdeCreateStringHandleW, "user32"), stdcall,
Ptr{Void},
(Cuint, Ptr{Cwchar_t}, Cint),
idInstance, wstring(topic), CP_WINUNICODE)
if hszTopic == C_NULL throw(ErrorException("DdeCreateStringHandleW error")) end
hConvClient = ccall((:DdeConnect, "user32"), stdcall,
Ptr{Void},
(Cuint, Ptr{Void}, Ptr{Void}, Ptr{Void}),
idInstance, hszServer, hszTopic, C_NULL)
if hConvClient == C_NULL throw(ErrorException("DdeConnect error")) end
hDdeData = ccall((:DdeCreateDataHandle, "user32"), stdcall,
Ptr{Void},
(Cuint, Ptr{Cwchar_t}, Cuint, Cuint, Ptr{Void}, Cuint, Cuint),
idInstance, wstring(command), (length(command) + 1)*sizeof(Cwchar_t), 0, C_NULL, CF_UNICODETEXT, 0)
if hDdeData == C_NULL throw(ErrorException("DdeCreateDataHandle error")) end
hDdeTransactionData = ccall((:DdeClientTransaction, "user32"), stdcall,
Ptr{Void},
(Ptr{Void}, Cuint, Ptr{Void}, Ptr{Void}, Cuint, Cuint, Cuint, Ptr{Cuint}),
hDdeData, convert(Cuint, -1), hConvClient, C_NULL, 0, XTYP_EXECUTE, TIMEOUT, C_NULL)
if hDdeTransactionData == C_NULL throw(ErrorException("DdeClientTransaction error")) end
ccall((:DdeFreeDataHandle, "user32"), stdcall,
Cint,
(Ptr{Void},),
hDdeTransactionData)
ccall((:DdeFreeDataHandle, "user32"), stdcall,
Cint,
(Ptr{Void},),
hDdeData)
ccall((:DdeFreeStringHandle, "user32"), stdcall,
Cint,
(Cuint, Ptr{Void}),
idInstance, hszServer)
ccall((:DdeFreeStringHandle, "user32"), stdcall,
Cint,
(Cuint, Ptr{Void}),
idInstance, hszTopic)
ccall((:DdeDisconnect, "user32"), stdcall,
Cint,
(Ptr{Void},),
hConvClient)
ccall((:DdeUninitialize, "user32"), stdcall,
Cint,
(Cuint,),
idInstance)
end
if !isinteractive()
CP_ACP = uint32(0)
MB_PRECOMPOSED = uint32(1)
pdf_wchar = wstring(ARGS[1])
tex_wchar = wstring(ARGS[2])
ccall((:MultiByteToWideChar, "kernel32"), stdcall,
Cint,
(Cuint, Cuint, Ptr{Cchar}, Cint, Ptr{Cwchar_t}, Cint),
CP_ACP, MB_PRECOMPOSED, ARGS[1], -1, pdf_wchar, length(pdf_wchar))
ccall((:MultiByteToWideChar, "kernel32"), stdcall,
Cint,
(Cuint, Cuint, Ptr{Cchar}, Cint, Ptr{Cwchar_t}, Cint),
CP_ACP, MB_PRECOMPOSED, ARGS[2], -1, tex_wchar, length(tex_wchar))
server = "SUMATRA"
topic = "control"
pdf = string(pdf_wchar)
tex = string(tex_wchar)
line = uint(ARGS[3])
command = "[ForwardSearch(\"$pdf\",\"$tex\",$line,0,0,0)]"
try
runSumatraPDF()
ddeExecute(server, topic, command)
catch exn
error(exn)
end
end
----