パスワードを忘れた? アカウント作成

t-nissieさんのトモダチの日記みんなの日記も見てね。 ログインするとコメント表示数や表示方法をカスタマイズできるのを知っていますか?

12977360 journal
インターネット

t-nissieの日記: 【タレコミ】宇多田ヒカル『30代はほどほど。』と題して3DVR配信を計画 7

日記 by t-nissie

今年6年ぶりに活動を再開したシンガーソングライターの宇多田ヒカルが
2016年12月9日(金) 21:00~21:30 GYAO!から
『30代はほどほど。』と題して3DVRの生中継を計画している。
(2Dマルチアングル版/通常版の配信もあり。)

コの業界において宇多田ヒカルは20歳の誕生日の2003年1月19日に
『20代はイケイケ!』と題した初期的で大規模なインターネットストリーミング放送を
成功させたことで知られているかもしれない。
同年のUNIX MAGAZINE4月号と5月号には沖本忠久による技術解説が掲載された。
上記GYAO!の告知ページではそのダイジェスト映像が視聴可能だ。
タレコミ子はストリーミング放送は見逃してしまったが、
あとからDVDを買って、観て、
天才じゃなくて普通の女の子なんだ→歌い始める→やっぱ天才だわ、
と思ったことを憶えている。

これからの活動に目が離せないヒッキーに対する思いや、
インターネットストリーミングについてのあれこれ、
中の人の思い出話や現在の苦労話などをコメントしていただけたら幸いである。

12970477 journal
アップグレード

t-nissieの日記: 【電脳】Juliaのtypeof(x → x[1])

日記 by t-nissie

ありがたいことに、どこかの誰かがどこかのバグを直してくれたのか、
Pkg.update("Winston")したらWinstonがJulia-0.5で動くようになった。

WARNING: Base.FS is deprecated, use Base.Filesystem instead.

って警告は、$HOME/.julia/v0.5/Winston/src/Winston.jl を

diff --git a/src/Winston.jl b/src/Winston.jl
index ecfaaa6..8f7b5ee 100644
--- a/src/Winston.jl
+++ b/src/Winston.jl
@@ -1868,7 +1868,7 @@ function savesvg(p::PlotContainer, io::IO, width, height)
  end
 
  function savesvg(p::PlotContainer, filename::AbstractString, width, height)
-    io = Base.FS.open(filename, Base.JL_O_CREAT|Base.JL_O_TRUNC|Base.JL_O_WRONLY, 0o644)
+    io = Base.FileSystem.open(filename, Base.JL_O_CREAT|Base.JL_O_TRUNC|Base.JL_O_WRONLY, 0o644)
     savesvg(p, io, width, height)
     close(io)
     nothing

と直せば、抑制できる。

だがしかーし、

Julia-0.4.6:

julia> VERSION
v"0.4.6"
 
julia> typeof(x -> x[1])
Function

Julia-0.5:

julia> VERSION
v"0.5.0"
 
julia> typeof(x -> x[1])
##1#2

これはバグなのか新しい仕様なのか。

追記:
仕様みたい→Julia言語の0.5の変更点
こんなかんじで困っている:

julia> VERSION
v"0.5.0"
 
julia> function g(f::Array{Function,1})
           x = [1,2,3]
           map(f_each -> f_each(x), f)
       end
g (generic function with 1 method)
 
julia> g([x -> 1x[1], x -> 2x[2], x -> 3x[3]])
3-element Array{Int64,1}:
  1
  4
  9
 
julia> g([x -> 1x[1], x -> 2x[2]])
2-element Array{Int64,1}:
  1
  4
 
julia> g([x -> 1x[1]])
ERROR: MethodError: no method matching g(::Array{##13#14,1})
Closest candidates are:
  g(::Array{Function,1}) at REPL[1]:2

function g(f::Array{Function,1})と引数の型を指定しないで、ただ
function g(f)と書けば動くけど。

12944601 journal
数学

t-nissieの日記: 【電脳】Juliaのbool(x::Number)

日記 by t-nissie

0.4.6でdeprecated

julia> VERSION
v"0.4.6"
 
julia> bool(Complex(1.0,-0.0))
WARNING: bool(x::Number) is deprecated, use x != 0 instead.
  in depwarn at deprecated.jl:73
  in bool at deprecated.jl:50
while loading no file, in expression starting on line 0
true

0.5でError

julia> VERSION
v"0.5.0"
 
julia> bool(Complex(1.0,-0.0))
ERROR: UndefVarError: bool not defined

12905767 journal
GNU is Not Unix

t-nissieの日記: 【電脳】GNU a2ps で Julia のコードをハイライト【ソースコードの印刷】

日記 by t-nissie

ソースコードを印刷する機会はあまりなくなってきている。
しかし、どうしても取れないバグを見つけたいときや
新しい言語を学びたいときはまだソースを印刷してぼんやり眺めたり
鉛筆で書き込みを入れながら流れを追うことがある。

で、Juliaのコードを印刷したくなって、a2ps用のスタイル
シートを書いた→highlighting Julia code with a2p(1)

    $ LANG=C a2ps --header='Printed by t-nissie' --media=a4 --prologue=color\
      --portrait --columns=1 --margin=3 --borders=off -f 11.0 --pretty-print=julia\
      -o RungeKutta.ps ~/.julia/v0.4/RungeKutta/src/RungeKutta.jl

などと使う。

で、ruby.sshはこうしないと、module名とかdefで定義される
関数の名前とかがハイライトされないような気がする。

--- a2ps-4.14/sheets/ruby.ssh    2007-12-29 10:35:15.000000000 +0900
+++ /usr/share/a2ps/sheets/ruby.ssh    2016-09-04 07:08:35.675506024 +0900
@@ -48,8 +48,8 @@
     /^=begin/           Comment_strong        /^=end/,
 
     # Some declarations
-    (/\\(def\\|class\\|module\\)/    # \1. the keyword
-     /\\([[:blank:]]+\\)/        # \2. blanks
+    (/(def|class|module)/    # \1. the keyword
+     /([[:blank:]]+)/        # \2. blanks
      \1 Keyword_strong, \2 Plain) (Label_strong  + Index1)
     closers are
       /$/ Plain,

12857981 journal
日記

t-nissieの日記: 【国民投票】簡単な技術計算に何使ってる? 18

日記 by t-nissie

* 関数電卓
* 携帯電話のアプリ
* GNUPLOTのプロンプト(数学関数豊富、履歴機能、グラフもすぐ描ける)
* Juliaのプロンプト(2\1で割り算も)
* bc(1)
* Emacsの*scratch*でEmacs Lisp
* 逆ポーランド記法の何か

わたくしは、GNUPLOT、Emacsの*scratch*、関数電卓の順。

12836565 journal
日記

t-nissieの日記: 【電脳】Mac OS Xでコンパイルしたruby-2.3.1やruby-2.4.0でrequire "tkextlib/tkimg/png"できない 1

日記 by t-nissie

Mac OS X 10.11.5, Xcode 7.3でコンパイルしたruby-2.3.1やruby-2.4.0-preview1で
require "tkextlib/tkimg/png"できなくて困っています。お助けを。

$ cat tktest.rb
require "tk"
require "tkextlib/tkimg/png"
$ ruby --version
ruby 2.4.0preview1 (2016-06-20 trunk 55466) [x86_64-darwin15]
$ ruby tktest.rb
/usr/local/lib/ruby/2.4.0/tk/package.rb:87:in `rescue in require': TkPackage dlopen(/System/Library/Tcl/8.5/Img1.4/libtkimgpng1.4.dylib, 10): image not found (RuntimeError)
    from /usr/local/lib/ruby/2.4.0/tk/package.rb:84:in `require'
    from /usr/local/lib/ruby/2.4.0/tkextlib/tkimg/png.rb:15:in `<top (required)>'
    from /usr/local/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from tktest.rb:2:in `<main>'
 
$ ls -l /System/Library/Tcl/8.5/Img1.4/libtkimgpng1.4.dylib
ls: /System/Library/Tcl/8.5/Img1.4/libtkimgpng1.4.dylib: No such file or directory
$ ls -l /System/Library/Tcl/8.4/Img1.4/libtkimgpng1.4.dylib
-rwxr-xr-x  1 root  wheel  27296 12  3  2015 /System/Library/Tcl/8.4/Img1.4/libtkimgpng1.4.dylib

12763746 journal
GNU is Not Unix

t-nissieの日記: 【電脳】GCC 6.1がリリース

日記 by t-nissie

ついにGNU Compiler Collection (GCC) 6.1がリリースされましたね.

ソースは日本のミラーなどからダウンロードできます.
(URLにftpが含まれるから,Safariがなんか変.)

わたくしは
pow(x, 1/32.)とかが速くなっているらしいので、
GCC-6でpow(x, 1/32.), pow(x, 1/48.), pow(x, 1/72.)のベンチマークを取ってみたり,
ifのインデントのミスを警告してくれる-Wmisleading-indentationを試してみたりして遊びました.

どなたかタレコミをお願いします(タリキ・ホーガン).

12755775 journal
Ruby

t-nissieの日記: Ruby 2.4で追加されるArray#sumで配列の要素の総和が正確かつ高速になる 2

日記 by t-nissie

2016年(のクリスマス?)にリリースされるRuby 2.4、追加される
Array#sumで配列の要素の総和が正確かつ高速になるようです。

Array#sumはカハン (Kahan) の加算アルゴリズムを使うので、要素がFloatの場合
inject(:+)より正確で高速。injectのように初期値やブロックも引数にできる。便利そう。

Feature #12217: Introducing Enumerable#sum for precision compensated summation and revert r54237
結局Enumerable#sumでなくArray#sumになった。

しかし、Rubyは配列内の要素の型をちゃんぽんにできるから
array.cのrb_ary_sum()がスパゲッティ!
OCamlなら型は一意だから楽か。
Juliaのsum_kbnは(暗黙の型変換があるから?)
Juliaでそのまま書いてあるけどなんであんなに速いのか。

$ ./miniruby --version
ruby 2.4.0dev (2016-04-18) [x86_64-darwin15]
$ /usr/bin/time ./miniruby -e 'p Array.new(10_000_000,0.1).inject(:+)'
999999.9998389754
        0.45 real        0.41 user        0.03 sys
$ /usr/bin/time ./miniruby -e 'p Array.new(10_000_000,0.1).sum'
1000000.0
        0.12 real        0.08 user        0.03 sys
$ /usr/bin/time ./miniruby -e 'p Array.new(10_000_000,0.1).sum(999.0){|e| e**2}'
100999.00000000001
        1.21 real        1.17 user        0.03 sys
$ /usr/bin/time ./miniruby -e 'p Array.new(10_000_000,0.1).sum(999.0){|e| e*e}'
100999.00000000001
        0.74 real        0.70 user        0.03 sys

なお、Ruby 2.4のinjectは2.3のよりちょっと速くなってはいるみたい。

$ ruby --version
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
$ ruby -r benchmark -e 'Benchmark.bm(6){|r| r.report("inject"){Array.new(10_000_000,0.1).inject{:+}}}'
            user    system      total        real
inject  0.790000  0.020000  0.810000 (  0.814554)
$ /usr/bin/time ruby -e 'p Array.new(10_000_000,0.1).inject(:+)'
999999.9998389754
        0.78 real        0.73 user        0.04 sys

計時はすべて
Intel Core i5 (Ivy Bridge) 2.5 GHz on MacBook Pro (Retina, 13-inch, Late 2012)
で実行。

追記
Juliaで暗黙の型変換があるのは
配列に代入する時でした

using Base.Test
## Kahan ##
a = [0.1 for i=1:10_000_000]
a[10] = 1
println(a[10])
@test isa(a[10], Int64)   == false
@test isa(a[11], Int64)   == false
@test isa(a[10], Float64) == true
@test isa(a[11], Float64) == true
@test sum_kbn(a) == 1_000_000.9

追記2
Kahanのアルゴリズムは使われないけど、複素数の和も取れる。
文字列はつながらない。

$ ./miniruby -e 'p Array.new(10_000_000,0.1+0.1i).sum'
(999999.9998389754+999999.9998389754i)
$ ./miniruby -e 'p ["abc", "def"].sum'
-e:1:in `+': String can't be coerced into Fixnum (TypeError)
    from -e:1:in `sum'
    from -e:1:in `<main>'

12742814 journal
Intel

t-nissieの日記: Intel Fortran (ifort): エラー #13002: 予期しない generic メッセージ引数です: X%.8X }。

日記 by t-nissie

Intel Fortran (ifort)で-march=nativeコンパイラオプションを付けたら顕在化した
「エラー #13002: 予期しない generic メッセージ引数です: X%.8X }。」は
LANG環境変数を、ja_JP.UTF-8ではなく、Cに設定すれば回避可能。というメモ。

$ ifort -V
インテル(R) 64 対応インテル(R) Fortran コンパイラー (インテル(R) 64 対応アプリケーション用)、バージョン 16.0.1.150 ビルド 20151021
$ ifort -DHAVE_CONFIG_H -I. -I../../src -I..   -I/usr/include -I/usr/local/include -r8 -O3 -warn all -openmp -parallel -qopt-report=2 -march=native -FR  -c -o dVddi-unharmonic.o ../../src/dVddi-unharmonic.F
ifort: リマーク #10397: 最適化レポートは出力先の *.optrpt ファイルに生成されます。
エラー #13002: 予期しない generic メッセージ引数です: X%.8X }。
$ LANG=C ifort -DHAVE_CONFIG_H -I. -I../../src -I..   -I/usr/include -I/usr/local/include -r8 -O3 -warn all -openmp -parallel -qopt-report=2 -march=native -FR  -c -o dVddi-unharmonic.o ../../src/dVddi-unharmonic.F
(正常にコンパイル終了。)

最新のバージョンではbug-fixされているかもしれないが、
予算不足でライセンスの更新ができず
コンパイラをバージョンアップできないので、確認できない。
バグリポートもできない。
どなたか研究費をおめぐみください。

なお、feramは-march=nativeコンパイラオプションを付けても特に速くはならなかった。

$ . /opt/intel/bin/compilervars.sh intel64
$ wget https://sourceforge.net/projects/loto/files/feram/unstable/feram-0.25.04unstable/feram-0.25.04unstable.tar.xz
$ tar xf feram-0.25.04unstable.tar.xz
$ cd feram-0.25.04unstable/
$ ./configure FC=ifort --with-fft=fftw3_omp --with-lapack=mkl FCFLAGS="-r8 -O3 -warn all -openmp -parallel -qopt-report=2 -march=native"
$ make -j8

12739727 journal
GNU is Not Unix

t-nissieの日記: GCC-6でpow(x, 1/32.)とかが速くなっているらしい 3

日記 by t-nissie

GCC-6でpow(x, 1/32.)とかが速くなっているらしいので、
GCC-6でpow(x, 1/32.), pow(x, 1/48.), pow(x, 1/72.)のベンチマークを取ってみた。
Intelのコンパイラに負けた。
より速くできるコンパイルオプション募集中。

typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...