wafuの技術

技術習得の努力メモです。

Ruby

Ruby TK にメニューの追加

リストビューだけでは不便なのでメニューも追加です。 メニュー画面require 'tk' menubar = TkMenu.new Tk.root.configure(menu:menubar) file = TkMenu.new(menubar, tearoff: false) help = TkMenu.new(menubar, tearoff: false) menubar.add_cascade(labe…

Rubyでwhois アプリ

RubyでWhoisアプリの画面Rubyでwhoisアプリを作ってみました。 ソースはわかりやすいように短くしています。 10行ぐらいで作れました。 ocraでexe化も成功です。 #rubyでwhoisアプリ require 'whois' require 'tk' #whois関数 def whois_proc(a) b = Whois::…

Ruby3でtk+ocraの成功

Ruby3でocraを使うとエラーが表示されるようになりました。いろいろ実験して、実行ファイルが作れるようになりました。 もっと、良い方法があると思います。■エラー内容 in `_invoke': can't invoke "font" command: application has been destroyed (Runtim…

RubyでSQLITE3

RubyでSQLITE3 require 'sqlite3' #データベースの作成 db = SQLite3::Database.new 'test.db' #idとnameを持つusersテーブルを作成 sql = <<-SQL create table users( id integer primary key, name text ); SQL #usersテーブルを作成 db.execute(sql) #テ…

RubyでWebページのスクレイピング(mechanize)

Rubyには、mechanizeというライブラリを使うと スクレイピングが簡単にできそうです。 gem install mechanize■基本 ホームページデータの取得 require 'mechanize' sitedata = Mechanize.new page = sitedata.get("https://www.example.com") puts page.body…

Rubyでホームページの取得(1)

Rubyでホームページの取得方法は open-uriを使う方法が簡単です。 他にはnet/httpを使うと、高度な設定が可能です。例1 open-uri require "open-uri" open("https://www.example.com/" do |f| print f.read end例2 open-uri require 'open-uri' io = OpenURI…

Rubyでnokogiriの利用

Rubyでnokogiriの利用方法です。Nokogiriは、Rubyでよく使われている構文解析ライブラリです。 注意としてUTF-8以外の場合は注意が必要例1 require 'nokogiri' require 'pp' require 'open-uri' url = 'https://www.aaaaa.com' htdata = Nokogiri::HTML(URI.…

Ruby open-uriのエラー

rubyのopen-uriでエラーが出ました。initialize': Invalid argument @ rb_sysopen - https://www.aaa.com (Errno::EINVAL)確認すると、 Rubyの3からは openではなく、URI.openを使うようです。 require 'open-uri' url = 'https://www.aaa.com' #aaa = open…

RubyでCSV

■CSVファイルの読み込みTSV版 require 'csv' CSV.open("sample.tsv'.col_sep:"\t",headers:true) do |csv| csv.read do |row| row.each do |header,value| puts "#{header}:#{value}" end puts '-----' end end■CSVファイルの読み込み2 require 'csv' data …

Rubyで文字変換(編集中)

Rubyで値の変更メモ #ASCIIコードを文字に変換 a = 65 a.char #=>"A" #数字を文字に変換 a.to_s #=> "65" #数字を16進数に変換 a.to_s(16) #=> "a" a.to_s.hex() #=> "16" 10を16にしたら意味が違う・・・ #その他変換 "11111111".to_i(2) #=>255 "255".to_i…

Rubyのブロック構文とdo

Rubyを勉強していて、理解ができなかったのが、ブロックという考え方です。ループ処理ならわかるのですが、処理の単位ということでしょう。■eachメソッドの例 (1..10).each do |v| puts v end doからendをブロックとして表す。 この処理は{}でも表せます。 (…

Rubyでファイル処理(1)

Rubyでファイルの読み込みRubyの読み込みはブロックの読み込みが一般的なようです。 ブロックは、{}で囲んだ方法です。 特徴は、open,closeが不要です。■1行ずつ読み込み File.open("sample.txt","r") do |f| while line = f.gets puts(line) end end■1行ず…

Rubyで別のRubyを呼び出す

Rubyで別のRubyを呼び出すmain.rb puts “start” IO.popen(“ruby sub.rb”) do |f| f.each do |line| print line end end puts “finish”sub.rb STDOUT.sync = true #文字列を全て受け取る puts “sub start” sleep 4 puts “sub end”実行結果 start sub start su…

Rubyでメール送信

Rubyでメール送信 require “net/smtp” require “time” smtp_server = “localhost” from = “user@mail.example.com” to = “user@mail.subdomain.com” Net::SMTP.start(smtp_server) do |smtp| From: #{from} To: #{to} Date: #{Time.now.rfc2822} Subject: te…

Rubyでファイル一覧の取得

Rubyでファイル一覧を取得する基本です。■ファイル一覧 Dir.glob('*') do | item | puts item end ■ファイル一覧(拡張子を指定) Dir.glob('*.jpg') do |item| puts item end■ファイル一覧(下位ディレクトリを含める) Dir.glob('**/*') do |tem| puts ite…

Rubyの配列

Rubyで配列を扱います。■配列の作り方 a = Array.new a = Array.new(5) 5個のnil a = Array.new(5,0) 5個の0lang = %w(Ruby Python C++) lang = %i(“Ruby”,”Perl”,”Python”)■文字列のsplitメソッドを使う a = “This is a Ruby” b = a.split(‘,’)■要素の置換 …

Rubyのメモ(編集中)

Rubyのメモですが、おかしい気がします。Rubyのコメント■1行のコメント #a = 1■まとまったコメント =begin コメントアウトされた内容 =end■変数の種類 ・ローカル変数 通常使用する変数、小文字から始まる ・グローバル変数 $で始まる ・インスタンス変数 @…

Rubyでfiddle(2) オリジナルのDLLを使う

Rubyのfiddleを使って、DLLを使ってみました。 思わぬところではまりました。 最初にC++でメインとDLLを作り確認しました。 そのDLLをRubyで呼び出しましたが、エラーになります。 ・エラー内容1 in `import_function': cannot find the function: dllfunc(…

OCRAのエラー 「libgmp-10.dllが見つからないため」

Ruby3で、OCRAで実行ファイルはできました。 しかし、次のエラーです。 libgmp-10.dllが見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。 これは、以前の対応と同じです。 ocra sa…

OCRAのエラー 「fiber.soが見つかりません。」

Ruby3.1で、OCRAを実行すると、エラーが出てきました。 ■状況 C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:1188:in `initialize': No such file or directory @ rb_sysopen - *****/fiber.so (Errno::ENOENT) fiber.soファイルが見つから…

RubyとPythonのtkでListview

RubyとPythonのtkでリストビューを作ってみました。 RubyもPythonも本当によく似ています。 ■Rubyの例 # coding: utf-8require 'tk' $tree = Tk::Tile::Treeview.new() #列インデックスの作成$tree['columns'] = ['1','2','3'] #各列の設定$tree.column_conf…

Rubyでfiddle(1) メモ帳を操作

rubyでfiddleを使用して、windows11のメモ帳を操作して見ました。 windows10までのメモ帳は値の変更が必要です。 require "fiddle/import"require 'fiddle/types' module WIN32API extend Fiddle::Importer dlload 'C:\\Windows\\System32\\user32.dll' incl…

ocraのエラー libssp-0.dll

ocraで作成したexeファイルを実行しようとしたところ、 エラーが出ました。 「ruby_builtin_dlls\libssp-0.dllが見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。」 調べると、コ…

BLACKHAT RUBY

洋書ですがRubyのおもしろそうな本が出ていました。 BLACKHAT Pythonは知っていましたがRubyです。 おもしろいです。 Amazon | Black Hat Ruby: Offensive Ruby programming for Hackers and Pentesters | Hassanyah, Sabri Saleh | Professional

Rubyのインストールエラーへの対応(再び)

久しぶりにRubyを使っていましたが、sqlite3でエラーです。 昨年つまづいたのに、もう忘れていました。 手順です。 1 Ruby+msysをインストール 2 ウイルスバスターでディレクトリを除外 3 ファイルの編集(不要かも) msys2のmsys64/etc/pacman.confの #Xfer…

Rubyのインストールエラーへの対応

久しぶりにRubyをインストールしたところ、エラーでインストールできません。 以前、あんなに簡単に入ったのに困りました。 インストールしたのは、RubyInstall+MSYS2です。 Rubyだけを入れた場合は、gemでsqlite3を入れると証明書関係のエラーが出るのでMS…

gemのエラー

久しぶりにrubyを使っていて、アップデートしようとしたらエラーです。 調べても原因がわかりません。 ERROR: While executing gem ... (Errno::EADDRNOTAVAIL) The requested address is not valid in its context. - connect(2) for "0.0.0.0" port 53 ■結…

Rubyでレジストリファイルを確認

Rubyで、ロードしていないWindowsのレジストリファイルを確認するソースです。これなら、Linuxからでも動作できます。 入手先 Volatile Minds: Reading offline registry hives in pure ruby

RubyでExcel操作 少しまとめ

RubyでExcel操作です。 また、調べることがあります。 # -*- Encoding:UTF-8 -*- require 'win32ole' class Excel end excel = WIN32OLE.new('Excel.Application') WIN32OLE.const_load(excel, Excel) #Excelファイルをダイアログで開く場合 #book_file = ex…

RubyでExcel 罫線

罫線に成功です。 # -*- Encoding:UTF-8 -*-ire 'win32ole'require 'win32ole'class Excelendexcel = WIN32OLE.new('Excel.Application')WIN32OLE.const_load(excel, Excel) # 新規ブックを作成book = excel.workbooks.add#画面に状況を表示させる。excel.vi…