Ruby
ハマったので久しぶりに記事を書きました。 使用しているLoggerはlibrary logger (Ruby 2.7.0 リファレンスマニュアル)です。 ある日プログラムを書いていると、 log writing failed. closed stream log shifting failed. closed stream ... .. . という警告…
自分が作ったDiscordBotの紹介です。 招待したい場合は、 自身がサーバーの管理者権限を持っている場合 招待urlにアクセスすると導入する画面が出てきます。権限についてはできる限り絞ってあります。 持っていない場合 サーバーの管理者権限を持っている人…
さて、4ヶ月ぶりの更新です。 まぁ、やることはタイトルのとおりです。 改行、セミコロンと、セミコロンに近いもの((a=2)&&([a,a]) #=>[2, 2])は縛っていきます。 まずは逆ポーランド式電卓から f = ->(s){->(t){(t==s)? s : f[t]}[s.gsub(/(-?\d+) (-?\d+) …
ある日。フィボナッチ数列の10億万番目とその前2つの値を計算して、割って黄金比を求めているときのメモ。 nilを代入しないとGCは片付けてくれない まぁ、メモリがそこまで逼迫することはあまりないと思うけど。 割り算ができない(浮動小数点数にできない) …
ある時、ふと疑問に思ったのです。 file_nameと、filenameはどっちがいいのだろうかと。 ふつう単語の間にアンダーバーを入れる記法だと、file_nameです。 ですが、filenameの方をよく見かける気がします。 ってことで、githubで検索してみました。 filename…
コンパクト。悪く言ったら低機能。 irbやpryとシェルの相性が悪かったので。 github.com (作ったよ!って言う割には別リポジトリに数か月前からあるのは内緒のお話) 対応してるもの ローカル変数 マルチバイト文字 対応していないもの 定義途中の改行(Enter…
普通のヒアドキュメント <<-EOS なんかいろいろ EOS メソッドがついたヒアドキュメント <<-EOS.length なんかいろいろ EOS ・・・配列のコンマはどこに置くんだ・・? 2回目のEOSの後ろ、2回目のEOSの次の行、3回目のEOSの前・・どれもうまくいかない メソッ…
ループと言いつつ、やっているのは1から10の整数の乱数を作って、そこから6以上の値はもう一度やり直す。というもの 言い換えると、途中脱出が可能な無限ループです。え?スタックオーバーフロー?・・・ 多分、最初のと最後(2018年11月24日追記分)がいいと…
(2017/11/16)あああタイトル間違ってましたぁ・・更新前に見た方申し訳ないです・・ 合っているかは自信ないです・・ ゲームの乱数くらいにお使いください。 require "random_bell" # http://pmsl.planet.sci.kobe-u.ac.jp/~seto/?page_id=316 # をRubyに移…
define_method("!bar", ->{"foo"}) p method("!bar") p method("!bar").call # 呼び出し方 !bar #< 呼び出せない こんなことができるとは思ってなかった ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]にて確認
Hamlをテキストから直接実行したいときのメモ require "haml" template = <<'EOS' %p= a1 %p= a2*3 - a3.each do |i| %p= i**2 EOS haml_engine = Haml::Engine.new(template) puts haml_engine.render(Object.new, a1:123, a2:10, a3:[1, 2, 3, 5]) ヒアド…
いいページがあるものの、検索でなかなか引っかからないので自分でページを作ってみた。 d.hatena.ne.jp これのものです。 File.expand_path(File.dirname(__FILE__))
((false)? a=123 : nil) この後のaの値が気になる。 実際にやってみた。 irb(main):001:0> ((false)? a=123 : nil) => nil irb(main):002:0> a => nil nilが代入されていた。 それならifはどうなるのか、 irb(main):003:0> if(false); b=123; end => nil irb…
受け取るところを (ARGV[0] || gets) こう書けばいい。
ringとか使ってました。 感想は「始めやすいlisp」という感じでした。 同じことをruby、scheme、clojure(末尾再帰最適化なし・あり)で書いてみました(短いのであまり参考にはならないかもしれませんが・・・) def power(a, b) power_i(a, a, b) end def powe…
また忘れてしまっていたので。 >>>>> tap <<<<< 誰かのtap押しの記事。 qiita.com 間違えてdupって書いてた。
folder1と、その中身を列挙したい。 files.include(%W{folder1}) # => ["folder1"] # 中身が列挙されない。 files.include(%W{folder1/*}) # => ["folder1/file2.txt", "folder1/folder2"] # folder1自体と、folder2の中身が表示されない。 files.include(%W…
pryで見てる時に、なんか目的のメソッドが出てこないなと思っていたけど、やっぱり違うそうで。 class Aaa def a_i end def self.a_c end end p Aaa.methods - Object.methods # => [:a_c] p Aaa.new.methods - Object.new.methods # => [:a_i] Objectからあ…
元 qiita.com 付け方、実行の仕方を何回も忘れるのでここに書いておく。 task :default, [:args1]do |task, args| p [task, args] end $ rake default[aaa] ["default", <Rake::Task default => []>, {:args1=>"aaa"}] もう一つタスクを定義してみる。 task :default, [:args1] => </rake::task>…
こんなのを読み込みたかった aaa = 123 bbb = 456 ほかのサイトだと「作れない」と書いてありますが、全然いけます。 def run(__path) __src_binding = eval(open(__path).read+"\nbinding") __src_binding .local_variables .delete_if{|name| name.to_s[0.…
最終回です。 前回 eval class AAA def get_binding binding end def aaa @aaa end end aaa = AAA.new aaa.aaa # => nil aaa.bbb # NameError: uninitialized class variable @@bbb in AAA aaa.get_binding # => #<Binding:0x00000002a16ab0> eval("@aaa=123",aaa.get_binding) aaa.aaa</binding:0x00000002a16ab0>…
使ってやってください。 github.com 利用方法 ソースをコピーしてくる。 それをプロジェクトのパスから実行する。 ソースのファイルのパスを入力する。 図にするmoduleを入力する。 inheritance.dotにdotファイルがが出力される。 使い勝手が悪いかもしれま…
eachで今の要素の処理をやめて、次の要素に移りたい時に 「forみたいにbreakで行けるでしょー」 (1..4).each do |n| break if n<=2 p n end 「あれ?何も出ない?」 =>調べる (1..4).each do |n| next if n<=2 p n end # 3 # 4 nextでした
STDIN.readlines だけです。getsなんていりません! ただ、改行は残ってしまうので、 STDIN.readlines.map(&:chomp) こうしておきましょう。
前回 5.5まで(一部理解できてない) 特異メソッド a = [1,2,3] b = [1,2,3] c = a def a.xx self.inject(:+) end a.xx # => 6 b.xx # NoMethodError: undefined method `xx' for [1, 2, 3]:Array c.xx # => 6 [1,2,3].xx # NoMethodError: undefined method `…
前回 読んでたら疲れたので第4章までで知ったこととか。 ObjectはKernelモジュールをincludeしている なので def aaa "call aaa(#{self})" end aaa #=> "call aaa(main)" [].aaa #=> "call aaa([])" /aaa/.aaa #=> "call aaa((?-mix:aaa))" 余り使うことはな…
メタプログラミングRuby(第2版)を図書館でリクエストしていて、今日やっと届きました。 7月30日までに返さないと <- とりあえず第3章まで読んだので覚えたこととか。 使いすぎは良くない(当たり前) メタプログラミングにも静的なものと動的なものがある。 …
blog.toshimaru.net を見て。 使えそうなところにはどしどし使っていきたいです。
resulr = val[0] / val[2] 分子の方しか出てこなくてあーだこーだやってやっと見つかった。 正しいのは result = val[0] / val[2] resulr result ^
今まで a = 1.5+1 b = String.new('str') STDOUT.puts "#{a},#{b}" これから a = 1.5+1 b = String.new('str') STDOUT.puts "#{a},#{b}" 前の記事も直しておきます。