完成の儀(2026年6月24日追記)
できたっぽいです。
https://www.oit.ac.jp/labs/rd/rssrv/kobayashi-lab/~yagshi/articles/phomemo/
完成に当たり大阪工業大学の小林裕之先生の上ウェブページを参考にし、私の場合はchroot 下で次に記すコマンド操作を行ったことを示しておきます、一応。
記
$ cat rastertopm02_t02.py|sed -e s'/255/65535/'g>./tmp;mv ./tmp ./rastertopm02_t02.py
続編(旧本編)
元々簡単に磔られるUSBプリンタを買ったのでした。
自分用だよ?シール貼ってあるし(前回)。
はいはい
一般にバーコードのチェックサム計算するのって大変ですよね。関数電卓で計算すると何回も間違えてしまう。
なので自家需要から一発で生成できるのを書きました。
自家用原本の公開用抄のコピペ
#!/usr/bin/ruby
#
# [ The "Lazy Address Box" ] 公開版
#
# -- Handcrafted by asaone --
#
# 経緯や開発状況:
# 2026年6月18日 例のやつに住所印刷を果たしていただこうかと。
# 2026年6月20日 前作を基にRuby がもうちょい前に出てくるようにしようかと。
# 2026年6月21日 一生懸命作ったかと。
# 2026年6月22日 雑な機能削除して@公開版(v1.0.0)もできたかと。
# 2026年6月25日 分かりやすくリファクタリングできたかと。@公開版(v1.0.1)。
# 2026年7月20日 「そんなクソコード公開して放置しながら胡散臭い発言ばっかりしてて恥ずかしくないのか!」との貴重なお声をいただいたので徹夜で改善し、事情を別紙に示しました。ご一読を。@公開版(v1.0.2)。
# 2026年8月19日 チェックサムが0のときの処理(「セグフの2番です!」)の修正。@公開版(v1.0.3)。
# 2026年8月28日 主に入出力の成型と細やかなコメントの追加。@公開版(v1.0.4)。
# 使用方法は下記取説のとおりなんとなく。
#
# 取説:
# =================================================
# 0. postal_code とpostal_mach を変える(その2点だけで網羅的に居所が特定できるという)。
#
# 1. $ which ruby は/usr/bin/ruby でありファイル文字列の起点を成す。ファイル全体は./lazyab.rb と定義。
#
# 2. $ chmod u+x ./lazyab.rb を実行する。
#
# 3. $ ./lazyab.rbを実行する。
#
# 4. データやエラーが得られると考えられる。
# =================================================
# :取説以上
#
#
# 郵便番号数字7桁
postal_code ='1820021'.to_s
# 丁目以降の番地等。長屋住まいなら文句言わないで 1-2-30-404 とかにしといて
postal_mach ='1-5-1'.to_s
def kigou_to_int(input_kigou)
# 0 から 18 に対応する記号を定義
henkan_table = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
# まず input_kigou.to_s が 0 から H から発見されてほしいというおまじない
hakken = false
hakken_soeji = 1145144545
(0..18).each do |i|
if input_kigou.to_s == henkan_table[i] then
hakken = true
hakken_soeji = i.to_i
end
end
if (hakken == true) then
hakken_soeji.to_i
# おまじないこのへんまででさ
# あったってことでよいかと
else
puts 'セグフの1番です!'
exit!
end
end
# kigou_to_int おしまい
def intlike_to_kigou(input_int)
# 0から18に対応する記号を定義(例のやつ。めんどくさいからまとめない。ごめんなちゃい。)
henkan_table = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
# ほんとに input_int が 0 から 18 までかくらいは調べておく
hakken = false
(0..18).each do |k|
if henkan_table[input_int.to_i].to_s == henkan_table[k.to_i].to_s then
hakken = true
end
end
# ほんとに input_int が 0 から 18 までかくらいは調べた
if hakken == true then
henkan_table[input_int.to_i]
else
puts 'セグフの2番です!'
exit!
end
end
# intlike_to_kigou おしまい
postal_bar = []
# 1桁目[0]は( 。
postal_bar[0] = '('.to_s
i=0
j=0
(1..7).each do |i|
postal_bar[i] = postal_code[i-1]
end
(8..20).each do |j|
if ( postal_mach[j-8] == nil ) then
postal_bar[j] = "D".to_s
else
postal_bar[j] = postal_mach[j-8]
end
end
# ここでpostal_bar[] について:
# 21桁目[20] までをデータやらDやらで埋めた。
# チェックサム桁たる22桁目[21] を計算。
k=0
postal_goukei = 0
(1..20).each do |k|
postal_goukei += kigou_to_int( postal_bar[k].to_s )
end
postal_yuka = 0
csum_kigou = 0
postal_yuka = postal_goukei.div(19).to_i * 19.to_i
csum_suuji = postal_goukei.to_i - postal_yuka.to_i
postal_bar << intlike_to_kigou("#{csum_suuji}")
# 22桁目[21](チェックサム)が定まった。
postal_bar[22]=")"
# 23桁目[22]の) 。
m=0
# はい一丁。
(0..22).each do |m|
print( postal_bar[m] )
end
puts()
はいはい
はい。
