SSブログ

JuliaHub の画面が変わっていて困った [julia]

不具合が報告されたので、
https://github.com/nakagami/Firebird.jl/issues/3
(これが、こんなに長いこと放置されていたってことは、使っている人いないんだなと嘆きつつ・・・)
修正して JuliaHub にあるパッケージを更新しようとした。

https://nakagami.blog.ss-blog.jp/2021-04-12
この時のメモを見て、
「JuliaHub にログインして、Contribute -> Register Packages に URL を入力すればいいんだったな」
と思って、ログインしても、画面が全然変わっていて、該当の遷移がない!

結局、ここにある(以前の) JuliaHub のスクリーンショットから
https://gist.github.com/genkuroki/618e7e143e954f0c77052b75c84ccaa2
ここの URL で更新できそう
https://juliahub/ui/Registrator
・・・ってことで、 この画面から github URL を入力して Register ボタンを押下したら
github の認証を経て、無事 Pull Request が作成された

https://github.com/JuliaRegistries/General/pull/97830

おそらく、新規のパッケージの登録も https://juliahub/ui/Registrator から行えば良さそうなんだけど、
JuliaHub が、JupyterHub みたいに、julia の環境を提供するサービスに重点が置かれていて、
パッケージ登録、更新の手順がこのまま維持されるのか、不安があるなぁ


2023-01-15 追記
URL が https://juliahub.com/ui/Packages に変わってるっぽい。
コメント(0) 

Firebird.jl status [julia]

これは、
Firebird Advent Calendar 2022 https://qiita.com/advent-calendar/2022/firebird
JuliaLang Advent Calendar 2022 https://qiita.com/advent-calendar/2022/julia
22日目の記事です

Julia で、 RDBMS に接続するライブラリは、 DBInterface
https://github.com/JuliaDatabases/DBInterface.jl
のインターフェースを実装しているようでした。

・・・というわけで、昨年 2021 年に Julia の Firebird ドライバーを書いてリリースしました。
https://juliahub.com/ui/Packages/Firebird/

・・・が、最近、WireCrypt の取り扱いに不具合があって、WireCrypt=Required の場合に接続できていないことを発見しました。
ショック。

最新のバージョン 0.2.3 では修正されているので、

- Julia に Firebird のドライバ=があることを知らなかった
- 以前使ってみようとして接続できなかった

という方は、使ってみていただけるとうれしいです。
コメント(0) 

Issue を立ててくれる人はありがたい。 Pull Request をくれる人はもっとありがたい [julia]

先日、 Awabi.jl に、ユーザー辞書があるとエラーになるよ、という Issue をいただいた。
https://github.com/nakagami/Awabi.jl/issues/3
再現手順を丁寧に書いてくれて修正案までつけてくれたので、テストコードを書いて動作を確認できた。
ありがたい。

Awabi.jl 0.1.3 をリリースした。
https://juliahub.com/ui/Packages/Awabi/BwiBs/0.1.3


不具合を発見しても、Issue を書いてくれる人はあまりいない。
Issue の中で修正案をつけてくれる人はさらにいない。
Pull Request 送ってくれる人はほとんどいない。

Github に、ソースを公開し始め頃は、不具合を発見したらみんな報告してくれるだろうし、なんなら、 Pull Request をマージボタンでマージするだけで、どんどん改良が進むと思っていた。

ちょっと動かして動かなかったら諦めてほかを探しちゃうんだろうなぁ。
まったくの趣味で、プライベートの時間にやっていることなので成果を期待されてないから、まだいいものの仕事として OSS を開発している人は、それなりに注目を集めなくちゃいけないから大変だろうなぁ。
コメント(0) 

Ubuntu22.04 に julia をバイナリインストール [julia]

Ubuntu22.04 に julia をインストールしようとしたら apt のパッケージがなくてびっくり。
$ sudo apt install julia
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package julia is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'julia' has no installation candidate

Ubuntu20.04 の時には 1.4.1 がインストールできたのに・・・

snap でインストールできるらしいので snap でインストールしてみたら 32bit 版がインストールされた。
そして、自分の書いた julia のパッケージのテストを実行したら、その 32bit 版ではエラーになって動かなかった。
一瞬、パッケージが 32bit 版で動くようにしようかと思ったけど、かなりの労力がかかりそうで、今から 32bit 版を動かさないといけない状況は、ほとんど無かろうということで挫折。

結局、以下の手順で julia 1.7.3 をダウンロードして /opt において、 /usr/local/bin/julia にシンボリックリンクを張った
wget https://julialang-s3.julialang.org/bin/linux/x64/1.7/julia-1.7.3-linux-x86_64.tar.gz
tar zxvf julia-1.7.3-linux-x86_64.tar.gz
mv julia-1.7.3 /opt
sudo chown root:root -R /opt/julia-1.7.3
ln -s /opt/julia-1.7.3/bin/julia /usr/local/bin


ダウンロードする tarball は
https://julialang.org/downloads/
ここの画面で、 良さげなバージョンの Generic Linux on x86 の 64-bit (glibc) を選択した。
コメント(0) 

Awabi.jl 0.1.2 リリース [julia]

この時、 https://nakagami.blog.ss-blog.jp/2022-06-05 Julia 言語研究会 https://julialang.jp/ で Awabi.jl を使ってくれていることに気づいた。
ありがたやありがたや。

その後も、 Awabi.jl を使ってくれていたのだが、本日のエントリーで、不具合を発見してくれていた
https://julialang.jp/2022/06/25/zipfs-law/#toc4
ありがたやありがたや。

未知語の扱いに不具合がありました。

「目玉がたくさんあれば、全てのバグは洗い出される」
https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%83%8A%E3%82%B9%E3%81%AE%E6%B3%95%E5%89%87
・・・ということで、修正して Awabi.jl 0.1.2 として JuliaHub に登録した
https://juliahub.com/ui/Packages/Awabi/BwiBs/0.1.2
コメント(0) 

形態素解析器 Awabi.jl と、初めて Julia を書いた感想 [julia]

これは Julia Advent Calendar 2021 https://qiita.com/advent-calendar/2021/julia の3日目の記事です

昨年は、 mecab の辞書を使った形態素解析器 awabi を色々なプログラミング言語で書いてみました。
https://nakagami.blog.ss-blog.jp/2020-12-02

今年は、「プライベートな時間でJulia を書く」を年始の目標を掲げました。
https://nakagami.blog.ss-blog.jp/archive/20210101

・・・ということで、Awabi.jl を書いて https://github.com/nakagami/Awabi.jl
JuliaHub に公開しました https://juliahub.com/ui/Packages/Awabi/BwiBs/0.1.0

Julia は、クラスとかメソッドとかはないものの、引数の型によるディスパッチとコンストラクタはあるので、python で書いたもの https://github.com/nakagami/pure-pyawabi を真似ればできるだろうと思い、実際そうだったんですが、やはり移植に際しては、配列が 1始まりなのが難しかったですね。
わかっていても、(あ、ここもひとつずれてる)ということが何度もありました。

Python の 数値計算、統計処理のライブラリに追いつき追い越したいと考えている他言語のライブラリはたくさんあるようですが、書くことの簡単さと実行速度とのバランスとか、他言語のライブラリを使えるようにしているところとか、バランスが絶妙で、この分野を Julia が、置き換えていく可能性はあるなと感じました。
何しろ、 Julia で書いた部分が速いので。

ただ、データサイエンティストでない僕のような Webプログラマーは、仕事で使うことはあまりないだろうとも思いました。
コメント(0) 

Julia の missing と nothing [julia]

Julia の Missing 型の missing という値は、計算結果が全て missing に
なるという代物で、 SQL の NULL に相当する、とのこと。
https://docs.julialang.org/en/v1/manual/missing/
比較演算子の結果も missing になるけど、isequal() で missing 同士の同値チェックはできる。
julia> a = missing
missing

julia> b = missing
missing

julia> a + b
missing

julia> a + 1
missing

julia> a == b
missing

julia> isequal(a, b)
true


他に、似たようなものとして、 Nothing型の nothing というものもあって
そっちは、何か不正な値を表現するものらしい。
演算すると例外が発生するが、 == で比較すると同値として true が返る。
julia> a = nothing

julia> a + 1
ERROR: MethodError: no method matching +(::Nothing, ::Int64)
Closest candidates are:
  +(::Any, ::Any, ::Any, ::Any...) at operators.jl:529
  +(::Complex{Bool}, ::Real) at complex.jl:301
  +(::Missing, ::Number) at missing.jl:115
  ...
Stacktrace:
 [1] top-level scope at REPL[13]:1

julia> isequal(a, nothing)
true

julia> nothing == nothing
true


コメント(0) 

JuliaHub から、Julia の公式パッケージに登録する [julia]

公開パッケージにする手順は、ここに日本語で解説してくれている人がいて(高校生!)
https://abap34.github.io/my-website/julialang/2021/01/31/julia-make-public-pkg.html
簡単そうな、 JuliaHub からの登録をしてみることにした。

https://juliahub.com の Contribute -> Register Packages から必要事項(自分は、 Package URL に https://github.com/nakagami/Awabi.jl を入力しただけで、いい感じに補完された)を入力して、
Submit すると・・・
この↓リポジトリに pull request が作成される
https://github.com/JuliaRegistries/General/pulls

今回のは↓これ
https://github.com/JuliaRegistries/General/pull/33897

最初、 Project.toml に [compat] の項目がなかったら(requiredではないが)bot のチェックでエラーが出た。
[compat]の項を追加して https://github.com/nakagami/Awabi.jl/blob/master/Project.toml#L10
再度、 https://juliahub.com の Contribute -> Register Packages から Submit したら、チェックにパスした。

いろんな人のパッケージ公開の解説を見ると PkgTemplates.jl で雛形を作って、 docs ディレクトリの下にドキュメントを書かないと、公式パッケージにできないという記載もあったんだけど、 README.rst に記載があれば docs ディレクトリのドキュメントは必須ではないようだ。

3日経つと、マージされた。他の Pull Request 見ると、問題なさそうでも3日は置いておくようなので、3日は待つことになりそう。
その前に、コメントが付いたら、それを見て何か対処する必要はある。

コメント(0) 

Julia の第一印象 [julia]

文法は Python に似ている。もっというと、型が指定できてそれがコンパイルしてバイナリになって速く動く Cython に似ていると思った。
自分は Ruby はわからないけど、おそらく Python や Ruby と言ったスクリプト言語書いている人ならとっつきやすいのでは。

- 配列のインデックスが1始まり
- クラスとかメソッドとかはなくて、関数の引数の型によって同じ名前でも呼ばれる関数が変わる(多重ディスパッチ)でオブジェクト指向的な処理が書ける
- 配列は多次元配列が基本で、Python でいうところのリストは、1次元の配列
- C, Python, R などの実装を呼び出す機能が充実している

というあたりが特徴的かなと思っている。
もっと慣れてくると違うことを感じるかもしれないけど。

数値計算をしない(数学がわからない)ので、そうすると Julia を使うメリットは自分にはそれほどないのかなと思っている。
コメント(0) 

新しいプログラミング言語を学ぶこと [julia]

年末年始に Julia の本を読み始め、少しコードを書いて、これはいけるかな?と思っているところ。

過去 Perl, PHP, Scala は、何度本を読んでもしっくりこなくて、少しコードを書くところまで行かずに挫折してしまった。
条件分岐、式、関数あたりの説明を読んで理解したつもりでも、
「僕の知っている言語だとこう書くけど、新しいこの言語ではどう書くのか?」
という時によくわからない場合があって、そうなると挫折ということになる。
仕事で、どうしても必要になったらまた違ったかもしれないけど、今となっては Perl, PHP, Scala を僕が書くことはなさそうなので、これらはマスターできないまま終わってしまった。
結構時間かけたんだけどなぁ。
Julia は、ちょっと書いてみて雰囲気掴むところまで来たので手応えある。

「このプログラミング言語がすごい」みたいな話を聞くと気になっちゃうけど、僕の残りの人生の時間と、新しく学んだプログラミング言語で書く成果まで考えると、もう(Juliaの次の)新しいプログラミング言語の習得は無理なのかなぁと思う。

コメント(0)