Julia - PostgreSQL に接続する

環境 ArchLinux PostgreSQL 11.5 Julia 1.1.1 LibPQ.jl 0.11.0 Tables.jl 0.2.10 Docker で PostgreSQL を立ち上げる $ docker run -d --name postgres -e POSTGRES_PASSWORD=test -p 5432:5432 postgres:11.5 Julia から PostgreSQL に接続する julia> usin…

Julia - MySQL への接続・データを CSV・JSON で保存する

環境 ArchLinux MySQL 8.0 Julia 1.1.1 MySQL.jl 0.7.0 JSON.jl 0.21.0 Tables.jl 0.2.10 Docker で MySQL を立ち上げる $ docker run --name mysql -e MYSQL_ROOT_PASSWORD=test -d -p 3306:3306 mysql:8.0 # 以下 MySQL 8.0 の場合は必要 $ cd ~/.julia/pa…

Julia - 配列の実装について

2つの配列を結合するときは何故 push! よりも append! が推奨されるのか? sizehint! を何故使うべきなのか? とかあたりの話。今回は一次元配列 (Vector) のみの話で、多次元配列は扱いません。 最近今更ながらデータ構造とアルゴリズムを勉強しているのです…

Julia - 並列計算用のリダクション演算子を作る

ふと「そういえば、Juliaのリダクション (reduction) は分かりづらかったなぁ」と思い出したので複数の変数をリダクションする方法と自前のリダクション演算子(reduction operator, reducer)の作り方について紹介します。 環境 Julia での for 文の並列化 そ…

Julia - パッケージを効率よく読み込む ~ Requires.jl のすすめ ~

Julia 1.0 が出てから半年経って Julia に慣れてきた頃なのか、私のパッケージの作り方の記事が地味に見られているようなので、パッケージを作るときに知っておいて損はない Requires.jl について紹介します。 goropikari.hatenablog.com 環境 三種の神器 Re…

Julia - PackageCompiler.jl を使って Plots.jl を早くする

PackageCompiler.jl の README によるとついに Plots.jl がコンパイルできるようになったらしいので試してみました。 github.com 環境 Plots.jl をコンパイルする スピードを比較 Linux デフォルト PackageCompiler Windows 10 デフォルト PackageCompiler m…

Julia - IJulia のセルで Bash コマンドを使う

環境 Julia 1.1.0 OS: ArchLinux IJulia で ; から始めると Shell mode になるので Bash*1 コマンドが使えるけれども、2行以上書くと実行できなくなる。 run を使えば長々書くことも出来るけれども、それは面倒だなぁというときは以下のマクロを定義する。 #…

Julia - run を使って Julia の中から Julia を実行する方法

環境 Julia 1.1.0 Julia の中から Julia を実行する Julia を使っていると、 Julia の中から run を使って Julia を起動したいと思うことがあると思います。 このように run(`julia ex.jl`) ただこの方法はすでに julia へ PATH が通っていれば良いのですが…

Julia - キーボードから入力を受ける

環境 キーボードからの入力 任意の個数の入力を受ける 特定の文字が入力されたら停止する方法 Ctrl-D で停止する方法 環境 OS: ArchLinux Julia 1.0.5 ※ 2019/12/22 Base.prompt の例を追加 キーボードからの入力 Python3でいうところの input はJuliaではBa…

Julia - Aizu Online Judge の問題を Julia で解く

Aizu Online Judge (AOJ) を Julia で遊ぶための野良パッケージを作ったので使い方を紹介します。 AOJ とは? このパッケージで出来ること・出来ないこと 環境 インストール 使い方 問題を選ぶ プログラムを作る サンプルでテストする 判定する 制限時間を変…

Julia - @enum で割り当てられた番号から変数名を知る

環境 Julia 1.0.1 string(EnumName(数字)) とするとその数字を割り当てられた変数の名を文字列で取得することができる。 julia> @enum Fruit apple orange kiwi julia> apple apple::Fruit = 0 julia> orange orange::Fruit = 1 julia> Int(apple) 0 julia> …

Julia - 標準入力・出力・エラー出力先を変える

環境 入出力先を変える 使いどころ(?) 参考 環境 OS: ArchLinux Julia 1.0.1 入出力先を変える Python だと stdout を気軽に上書きして標準出力先をファイルにできますが、Julia の場合はそれができません。 julia> f = open("out.txt", "w") IOStream(<file out.txt>) jul</file>…

Julia - VSCode で Julia 1.0 を使う (仮)

julia-vscode v0.11.0 から Julia 1.0 に対応したのでこの記事を読む必要はありません。master ブランチのものを入れたい場合は手順だけ参考になるかもしれません。(2019/1/29) 現状、VSCode の Marketplace から入れることの出来る Julia の拡張機能を使う…

Julia - 関数の broadcast ( f.(arg...) ) をオーバーロードする方法

どこで使うと便利なのかわからないけれど、一応できたのでメモ。 公式ドキュメントだけでこの方法を思いつく人は相当訓練された Julian だと思う(思いたい)。 Julia 1.0 でのやり方 f.(arg...) の挙動を変えたい場合、broadcast でなく、broadcastedをオーバ…

Julia - 定義した method を消す方法

環境 無駄な method を消す pretty-print 落とし穴 参考 LICENSE 環境 Julia 1.0 無駄な method を消す Julia といえば多重ディスパッチが有名ですよね*1。 julia> f(x::Int64) = println("Intだよ") f (generic function with 1 method) julia> f(x::Float6…

Julia - 野良パッケージをパッケージ名だけで追加できるようにする: Custom General Repository の作り方

Julia でパッケージを追加する場合、pkg mode で (v1.0) pkg> add Example などとすれば良いですよね、公式パッケージ*1の場合は。 野良パッケージの場合は次の例のように github の URL を打ち込まないといけません。 (v1.0) pkg> add https://github.com/g…

Julia - 野良パッケージを公式パッケージにする方法

先日、DiracNotation.jl という拙作が METADATA.jl にマージされ、野良パッケージから公式パッケージ*1へと昇格しました。 Julia 1.0 が出て以降では初めてパッケージを新規登録したので不安もあったのですが、とりあえず無事にマージされてほっとしています…

NiZ Plum 75 を無刻印化

格安静電容量無接点式キーボード NiZ Plum 75 を購入してから2ヶ月弱経ちましたが概ね満足しています。 しかし、一つ問題があります。それはキートップに印字があること! 単純に無刻印に憧れがあったということもありますが、私は Dvorak 配列を使っている…

Julia - Jupyter notebook と Julia のソースコードの相互変換方法

Jupyter notebook って便利ですよね。私も数式の入ったメモを入れたい場合や、コードとプロット結果を一緒にしたいときにはよく利用しています*1。 ただ一つ問題があって git との相性が恐ろしいほどに悪いことで有名ですよね。たった1行コードを追加しただ…

Julia - 関数に型そのものを渡す

環境 OS: ArchLinux Julia 1.0.2 型そのものを関数に渡す 整数型の変数とかではなく Int とか型そのものを引数に取る関数を作りたい場合、 hoge(::Type{Int}) = println("Hello World!") の様に引数にとりたい型を Type でくるんでやればいいらしい。 julia>…

Julia - パッケージ作り

目次 目次 TL;DR 環境 自作のパッケージ オリジナルパッケージの雛形を作る テストを書く 自分のパッケージの中で他のパッケージを使う場合 Julia 以外のライブラリに依存する場合 UUID GitHub に公開する MyPackage に PATH を通す METADATA.jl に登録する …

Juia - print 入門 - Hello World から pretty-print まで -

この記事は Qiita に 2018/08/04 に投稿したものです。2020/3/26 移行しました。 目次 目次 できるようになること 環境 基本 IOContext 出力をきれいに魅せる カラフルにする 文字幅 小数・複素数の表示をきれいにする Base.alignment 1つ目の例を再現 配列 …

安価な静電容量無接点方式キーボード NiZ Plum 75 を買ってみた

購入まで 打ち心地 ファームウェアのアップデート キー配置を変更 参考 追記 購入まで 私は普段キーボードは HHKB Lite2 と Mistel BAROCCO MD600 (赤軸) を使っています。 MD600 は今年の4月より使い始めましたが、最近は MD600 の押下圧に慣れてきたせいで…

クロネッカー積と複合 n 進数

タイトルの ”複合n進数” というのは便宜上の用語で正式名称は知らない。 ここでは各桁ごとに繰り上がる数が違う数字列のことを "複合n進数" と呼ぶこととする。 例えば、 の0桁目*1は2進数、1桁目が3進数だとすると 00, 01, 10, 11, 20, 21 と数が増えていく…

QISKit: コンパイラーが空気を読んでくれる時くれない時

目次 目次 環境 QISKit を使う利点 QISKit を使った場合の CNOT ゲート QISKit を使った場合の Toffoli ゲート ゲートの省略 QISKit が空気を読んでくれない時 恒等演算子への変換編 SWAP ゲート編 まとめ 余談 参考 Jupyter Notebook 環境 OS: ArchLinux Py…

QISKit: OpenQASMを読み込む

環境 OS: ArchLinux import sys, qiskit print(sys.version) print("qiskit version:", qiskit.__version__) 3.6.5 (default, May 11 2018, 04:00:52) [GCC 8.1.0] qiskit version: 0.5.4 OpenQASM 文法で書いた文字列から回路を作る from qiskit import loa…

QISKit: 量子コンピュータ(実機) で1+1を計算する

下記のQiitaの記事を読んで実機でも試してみたいと思ったので試してみた。 qiita.com ※注意: 私は量子コンピュータの専門家ではありません。以下の内容は間違って入る可能性が十分にあります。 追記: 以下では Toffoli, CNOT, SWAP を自分で定義していますが…

QISKit: Toffoli gate の実装

import sys, qiskit print(sys.version) print("qiskit version:", qiskit.__version__) 3.6.5 (default, May 11 2018, 04:00:52) [GCC 8.1.0] qiskit version: 0.5.4 from qiskit import ClassicalRegister, QuantumRegister from qiskit import QuantumCir…

Julia - スレッド並列を使って簡単な並列計算を楽しむ

この記事は Qiita に 2018/01/12 に投稿したものです。2020/3/26 移行しました。 Youtube で Intel の Tim Mattson 氏の OpenMP の解説動画 を見ていて、Juliaでもスレッド並列やってみるかと思い立ったので試してみました。 ちなみに私は Julia使用歴 2 年 …

Julia - Latexify.jl: Juliaの式をLaTeXに変換する

この記事は Qiita に 2018/01/07 に投稿したものです。2020/3/26 移行しました。 Juliaの式をLaTeXコマンドに変換してくれる Latexify.jl を紹介したいと思います。 Latexify.jl は Mathematica でいったらTeXForm, Maxima でいったらtex, MATLAB でいったら…