wafuの技術

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

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…

C++ 部分文字列の取得

C++

C++で部分文字列の取得 #include <string> #include <iostream> using namespace std; void main(void) { string str1("Hello World"); cout << "右から3文字:" << str1.substr(0,3) << endl; cout << "3文字から6文字まで:" << str1.substr(3,6) << endl; cout << "6文字以降:</iostream></string>…

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…

UbuntuのIPアドレスの設定

UbuntuのIPアドレスを変更する方法です。 ■UbuntuのIPアドレスの設定等 IPアドレスの一時変更 >sudo ip addr add 192.168.2.50/24ゲートウェイの設定 >sudo ip route add default via 192.168.2.1動的DNSの一時中止 >systemctl stop systemd-resolved 恒久的…

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■変数の種類 ・ローカル変数 通常使用する変数、小文字から始まる ・グローバル変数 $で始まる ・インスタンス変数 @…

Realforce修理

最初に疑問 Realfoceのキーが次第に重くなっていると感じるのは私だけ? 以前にも書きましたが、Realforceのキータッチが重くなった気がしています。 おそらく、経年劣化でラバーカップが硬化したようです。 どこかのサイトでHHKBの対処法で行っているのが、…

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

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

VIの使い方 メモ

viの使い方 間違っているかも知れません。 ■上下左右の移動 h 左 s 下 k 上 l 右 ■移動 w 一番右へジャンプ b 一番左へジャンプ 0 行の先頭へジャンプ(^やhomeキー) $ 行の末尾にジャンプ(Endキー) H 画面の一番上の行にジャンプ M 画面の中央の行へジャ…

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…

Realforceの寿命とメンテナンス  追記

※追記です。 ~ ショックなことに、Realforceはラバードームが劣化して固くなるようです。 当たり前といえば当たり前でした。 安いキーボードが、だんだん柔らかくなってきていたので、誤解していました。 こんなことなら、買い換えの負担の少ないキーボード…

Dovecotの編集

久しぶりにDovecotを触りました。 pop3が動作しているようなので停止させたいのですが、 以前は、設定ファイルを直接編集しのですが、 現在のやり方がわかりません。 いろいろ調べると、 10-master.confファイルを設定するようです。 少し気持ち悪いですが、…

moodleのインストール

moodleのインストール moodleを使ってみようと思いましたが・・・インストールが難しそうです。 成功した例を記述します。 1. OSのインストール ubuntu20.4.3をインスト-ルします。 2. 必要なパッケージのインストール 以下のような作業です。 ・mysqlのイン…

Raspberry PIでWi-Fiの認識

Raspberryを久しぶりに触りました。 久しぶりなのでアップデートと・・・ 翌日、使おうとすると、Wi-Fiが認識しなくなりました。 認識しなくなったデバイスは BUFFALO製のUSB接続WI-U2-433です。 ■認識していない状況・ifconfigでwlan1 が表示されない・iwco…