Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? TL;DR (概要) Crystalのような破壊的変更がアクティブなプログラミング言語の本を作る場合、バージョンアップで本の内容が壊れることが よくある。 この問題に対処するため、技術書典5で頒布する予定の本では、サンプルコードが正しく動作することをCIで確認するようにした。 ソースコードのフォーマット忘れが無いかもチェックするようにした。 ↑のようなことができたのはAsciidoctorのソースコードをincludeする機能の力が大きい。 ついでにRedPenで文章の校正も行なうようにした。 長期間に渡ってメンテナンスする予定の本であ
クロスアビリティ Winmostarサポートチームです。 0. はじめに 結晶系の第一原理計算を実施する場合、事前に対象となる結晶の対称性を把握する必要がある。また、計算セルをPrimitiveセルへと変換しなければならない。しかしながら、比較的に大きなユニットセルを有する結晶においては、空間群を特定してPrimitiveセルを抽出することは容易ではない。少なくとも、手作業ではまず不可能である。本記事では、任意の結晶について、その対称性および空間群に関する処理を遂行するライブラリー"spglib"を紹介する。 1. spglib spglibはBSDライセンスにて、以下のURLからダウンロードできる。 当該ライブラリーのコンパイルおよびインストール方法については、このURLを参照のこと。この記事では、spglibライブラリーの使い方について解説する。C言語、Fortran、Python、R
# !/usr/bin/env crystal # http://nabetani.sakura.ne.jp/hena/orde27ligmir/ # https://qiita.com/Nabetani/items/0b2f459ec128c89948f4 # x,y D={ '.'=>{ [0,-1]=>[0,-1], #N [1,0]=>[1,0], #E [0,1]=>[0,1], #S [-1,0]=>[-1,0], #W }, '1'=>{ [0,-1]=>[1,0], [1,0]=>[0,-1], [0,1]=>[-1,0], [-1,0]=>[0,1], }, '0'=>{ [0,-1]=>[-1,0], [1,0]=>[0,1], [0,1]=>[1,0], [-1,0]=>[0,-1], }, } H=5;W=5 while line=gets m=line.chomp
なんかエモいこと書きたくなったので書きます。 はじめに CrystalというRubyライクなプログラミング言語のコンパイラに、1年間(2016/12/26〜2017/12/25)で150個のPull Requestを出しました。 https://github.com/search?p=1&q=author%3AMakeNowJust+type%3Apr+repo%3Acrystal-lang%2Fcrystal+created%3A2016-12-26..2017-12-25&type=Issues&utf8=✓ 今年は閏年ではなかったので365 / 150 = 2.43333...、というわけで3日に1回以上のペースでPull Requestを出したことになります。 随分とたくさんのPull Requestを出したものです。 また、150個のうちマージされたものは106個でした。 htt
require "./lib_dpdk" def hello_thread(arg : Void*) : LibC::Int LibC.printf("Hello from lcore: %d\n", LibDpdk.per_lcore__lcore_id) 0 end fun main(argc : Int32, argv : UInt8**) : Int32 Crystal.main do LibDpdk.rte_eal_init(argc, argv) LibDpdk.rte_eal_mp_remote_launch(->hello_thread, nil, LibDpdk::RteRmtCallMasterT::CallMaster) LibDpdk.rte_eal_mp_wait_lcore end end % sudo crystal run src/hello.cr EAL:
Crystal bindings to DPDK, development in progress. Hello World (examples/hello.cr) require "../src/dpdk" class Hello < Dpdk def hello_thread printf("Hello from lcore: %d\n", rte_lcore_id) end def main(argc, argv) rte_eal_init(argc, argv) rte_eal_mp_remote_launch(hello_thread) rte_eal_mp_wait_lcore end end Hello.run Requirements Crystal (0.24.1) Recent Clang (5.0) or GCC, make and coreutils Working
x = Array(Float64).new(100){ rand(10.0..20.0) } y = Array(Float64).new(100){ rand(100.0..200.0) } Gnuplot.plot do |s| s << "set title 'SCATTER'" s << "plot '-' pt 6 lt rgb 'red' t 'circle'" s << to_gp([x, y]) end memo = 0 x = Array(Float64).new(100,0.0) 100.times do |i| memo = memo + rand(-0.9..1.0) x[i] = memo end Gnuplot.plot do |s| s << "set title 'LINES'" s << "plot '-' with lines title 'x'" s
・Crystal 言語の 2015年とそれまでの生い立ちを振り返ってみて ・Crystal 言語の 2016年を振り返ってみて ・Crystal 言語周辺の 2017年は?(妄想) ・ドラマ仕立てで見た、Crystal 言語の2017年の継続として書きました。 Crystalプログラミング言語 (日本語Crystal言語)の特徴は、"Fast as C, Slick as Ruby" です。 Crystalプログラム言語は、私が長年待ち焦がれていた言語です。 それは多くの方が同様に感じていると信じています。 振り返ってみるとプログラム言語は、ソフトウェア工学の初期から最も基本的で進展を支える技術の一つとして、多くの企業、研究機関が取り組んできました。したがって、いまさらまた新しい言語?と感じられる方も多い分野だと感じられるかもしれません。一方でプログラム言語は、実際100種どころか多種多様
公式 crenv rubyのスクリプトで処理が遅いと思うところでcrystalを取り入れてみようかな、程度のモチベーションで使ってみる。 crystalのDockerfileを示す。 yumで必須はgcc,git FROM centos:centos7.4.1708 MAINTAINER TestUser ENV container docker ##### crystal environment var ENV crystal_ver=0.20.0 #最新は投稿時点で0.24.1 ENV CRENV_ROOT=/usr/local/crenv ##### yum setting & install RUN yum update -y && yum clean all RUN yum swap -y fakesystemd systemd && yum clean all #RUN yum
require "../src/lib/base" module IpBlockingMethods private macro target_addresses? src = pkt.u32(IP_SRC_OFS) blocking_ips.any? { |x| x == src } end private macro process_per_type mark_drop_and_next if ipv4? && target_addresses? end end module ProcessPacketsMethods private macro process_each_packets each_packet do process_per_type end end end module MainMethods macro main_loop until @quit_signal rt
require "../src/dpdk" class Hello < Dpdk def hello_thread printf("Hello from lcore: %d\n", rte_lcore_id) end def main(argc, argv) rte_eal_init(argc, argv) rte_eal_mp_remote_launch(hello_thread) rte_eal_mp_wait_lcore end end Hello.run # # Run the program # # sudo build/hello % sudo build/hello EAL: Detected 8 lcore(s) EAL: Multi-process socket /var/run/.rte_unix EAL: Probing VFIO support... EAL: PC
spawnの構文はGoっぽい。 それはともかく。2から9まで配列にProcをセットする部分で、別のProcを噛ませないと、 internal errorで 落ちた。びっくり。 #!/usr/bin/env crystal #http://qiita.com/Nabetani/items/1c83005a854d2c6cbb69 #http://nabetani.sakura.ne.jp/hena/ord24eliseq/ def isqrt(n) return 0 if n<=0 return 1 if n<4 # 1 x,y=0,n while x!=y&&x+1!=y x,y=y,(n//y+y)//2 end x end def icbrt(n) return -icbrt(-n) if n<0 return 0 if n==0 return 1 if n<8 # 1,7 x,y=0
#!/usr/bin/env crystal #http://qiita.com/Nabetani/items/23ebddb44f0234e7fb15 #http://nabetani.sakura.ne.jp/hena/ord28spirwa/ dir="ESWN" while l_=gets line=l_.chomp.split(':') n,e,s,w=line[0].split(',').map(&.to_i64) l=[e,s,w,n] days=line[1].to_i64+1 (0..1/0.0).each{|i| [ l[i%4]+(i%4==0 ? 1 : 0), (i/4+1)*2, l[i%4]-(i%4==3 ? 1 : 0), ].each_with_index{|e,j| days-=e if days<0 puts dir[(i+j)%4] break e
#!/usr/bin/env perl #http://nabetani.sakura.ne.jp/hena/orde24tancho/ #https://qiita.com/Nabetani/items/928d6a94d83c21ef64d7 use strict; use warnings; use IO::Handle; STDOUT->autoflush(1); sub comb{ my($n,$k)=@_; my $r=1; for(my $i=0;$i<$k;$i++){ $r=$r*($n-$i)/($i+1) } return $r } while(<>){ my($b,$n)=split(',',$_); $b--; $n--; my $topdigit=1; for(;;){ my $x=comb($b,$topdigit); last if($b<$topdigit
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く