Uncategorized

amazon_link.rb

@tsut

script

    # use Format link as org-mode on Chrome browser.
  require 'clipboard'

  link = Clipboard.paste
  link.match(/\[\[https:\/\/www\.amazon\.co\.jp(?:\/.*)?\/(?:dp|product)\/(\w{10}).*\]\[Amazon(?:\.co\.jp)?(?:\s?(?:\||:)\s)(.*)\]\]/)

  if $1 && $2
     Clipboard.copy(%Q[{{< amazon asin="#{$1}" title="#{$2}" >}}]) # 実際の使用の際は"/*" "*/"を外す
     puts %Q[#{Clipboard.paste} が clipboard に入ったよ〜]
  else
     puts %Q(Check! Clipboard, press [M-y])
  end

変更履歴

  • 2024/12/03: amazon.co.jp/dp パターンに対応
  • 2024/11/18: 正規表現の変更(dp|product)と(\||:)など
  • 2024/11/09: amazon_link.rbを抜き出す。正規表現をちょっと変更。

example

example_1

link

[[https://www.amazon.co.jp/%E3%81%9D%E3%82%89%E3%81%9D%E3%81%86%E3%82%84-%E5%8D%98%E8%A1%8C%E6%9C%AC-%E9%BB%92%E5%B7%9D-%E5%8D%9A%E8%A1%8C/dp/4120058352/ref=sr_1_1?dib=eyJ2IjoiMSJ9.TC_AIKR0Y1knl64SMxUkY2Dy_JBtQ07x0bdozqo4m3wpSje5ubc9rrZFuO-uxYws7Ck9iNZYb2YLhqatEohN8xPXoknP-fqMlmU8I7As4mKiWMA-xdPris3pFv6by4bjaU2pOGT7ha--k4L24j7rh1PyBVryLiD1jvHbRfgVpw-bSHsvrYTfJj0-fOVYLLx2-aAHmEWMfyZkzTtPmeosXDJEBr-MJN_rjMkmPbO4-Jc1sE3bZVFSZOEctWaGllRkDAqF35nBYbOZk_N3Ct4yu8ujjaOdcKBGA4tkmRKaN4g.P3p3JvqO4opZV8PLDk01FoT4R4tbM2Wfpc4GOBxYRrA&dib_tag=se&keywords=%E9%BB%92%E5%B7%9D&qid=1731119937&sr=8-1][Amazon.co.jp: そらそうや (単行本) : 黒川 博行: 本]]

result

source
{{< amazon asin="4120058352" title="そらそうや (単行本) : 黒川 博行: 本" >}}
sample
そらそうや (単行本) : 黒川 博行: 本
そらそうや (単行本) : 黒川 博行: 本 amazon.co.jp

example_2

link

  [[https://www.amazon.co.jp/%E3%82%BF%E3%82%AB%E3%83%93%E3%82%B7%E5%8C%96%E5%AD%A6-%E3%82%AB%E3%82%A4%E3%83%AD%E7%94%A8NT%E3%83%99%E3%83%B3%E3%82%B8%E3%83%B3-500ml/dp/B005CIVO78?pd_rd_w=l2kWN&content-id=amzn1.sym.cd47c52a-1e28-4096-8155-47f0b4df2bea&pf_rd_p=cd47c52a-1e28-4096-8155-47f0b4df2bea&pf_rd_r=YPX29E65CY57QSW77FRD&pd_rd_wg=z1hN4&pd_rd_r=5e242759-dc85-4ff9-930b-a6481a155388&pd_rd_i=B005CIVO78&ref_=pd_bap_d_grid_rp_0_1_ec_pr_bnp_bia_i&th=1][Amazon | タカビシ化学 カイロ用NTベンジン 500ml | タカビシ化学 | 使い捨てカイロ]]

result

source
  {{< amazon asin="B005CIVO78" title="タカビシ化学 カイロ用NTベンジン 500ml | タカビシ化学 | 使い捨てカイロ" >}}
sample
タカビシ化学 カイロ用NTベンジン 500ml | タカビシ化学 | 使い捨てカイロ
タカビシ化学 カイロ用NTベンジン 500ml | タカビシ化学 | 使い捨てカイロ amazon.co.jp

netlify.toml

@tsut

Production: main@xxxxxxx Failed

netlifyでhugoのbuildがこけるようになった。apt upgradeで入った手元のhugo v0.128.2とかでエラーや警告がでないよう設定してるうちにnetlyfy上の新しくないhugoではbuildできない設定になってしまった模様。

対策

  1. 手元のhugoをダウンバージョンする
  2. netlify上のhugoを手元に合わせる

netlifyをなんとかする方向でググる。netlyfi.tomlでhugoのversionなどの環境を設定できるらしい。

hugo_insert_image.rb

@tsut

画像をリサイズして取ってくるやつその2

  require 'rmagick'
  require 'date'
  require 'fileutils'
  require 'optparse'
  # gem install clipboard; 要 gem
  # sudo apt install xsel; 要 xsel
  require 'clipboard'

  # default resize 大きさ = 480
  mysize = 480

  opt = OptionParser.new
  opt.on('-r', '--resize VALUE', 'リサイズする大きさ(px)') { |v| mysize = v.to_i }
  # opt.on('-t', '--target DIR',   '出力先ディレクトリ') { |v| target = v.to_s }

  begin
     opt.parse(ARGV)
  rescue OptionParser::InvalidOption => e
     abort "無効なオプション指定が含まれています"
  end

  # 移動先は /yymmdd/
  date_dir = %Q(#{Date.today.strftime("%Y%m%d")})
  # target_dir = ~/blog/static/images/yymmdd
  target_dir = File.expand_path("~/blog/static/images/#{date_dir}")
  # ディレクトリが無ければ作る
  FileUtils.mkdir_p(target_dir) unless File.exist?(target_dir)

  ARGV.each do |f|
     if File.extname(f).downcase =~ /.jpe?g|.png/ then #add .png
        img = Magick::ImageList.new(f)
        # mysizeより小さい画像は大きくなるのでresizeしない。
        img = img.resize_to_fit(mysize,  mysize) if [img.rows,  img.columns].max > mysize
        img = img.auto_orient.strip!
        image_file_name = %Q(#{File.basename(f, ".*")}.webp)
        img.write(target_dir + "/" +  image_file_name)
        # Clipboardにshortcodeを入れる 実際の使用には '/*'と'*/'を削除する必要あり
        Clipboard.copy(%Q({{< figure src="/images/#{date_dir}/#{image_file_name}" alt="" title="" width="#{img.rows}" height="#{img.columns}" >}}))
        # メッセージ
        puts %Q[#{Clipboard.paste} が clipboard に入ったよ〜]
     end
  end

変更履歴

2024-10-14 Monday

画像サイズを指定する

org-modeでhugoする

@tsut

hugoを使ってorg-modeをhtmlとかにするってことだが、いまいち良くわからない。画像とかリンクとかをなんとかしたいだけなのにいちいち悩む。調べて、やってみたことを記す。参考は こちら(ショートコード | Hugo)とか。

以下、あまり自信なし。

ショートコード

  {{% shortcodename arguments %}}

ショートコードネームと引数との区切り(前後も含め)スペース必須

ショートコードをそのまま表示する

2024-06-05 追記

M-x list-package エラー

@tsut
環境
  • Ubuntu 22.04.4 LTS on wsl2(Windows10)
  • GNU Emacs 27.1
状況

M-x list-package でエラー。

Failed to verify signature archive-contents.sig:
No public key for 645357D2883A0966 created at 2024-05-27T06:05:05+0900 using EDDSA
Command output:
gpg: 2024年05月27日 06時05分05秒 JSTに施された署名
gpg:                EDDSA鍵0327BE68D64D9A1A66859F15645357D2883A0966を使用
gpg: 署名を検査できません: 公開鍵がありません
対処方法
  • scratchバッファに (setq package-check-signature nil) と入れて"C-x C-e"
  • M-x list-package から gnu-elpa-keyring-update をinstall

満年齢早見表

@tsut

満年齢早見表

rubyです。どうでしょう?

  require 'date'
  this_year = Date.today.year
  def wareki(y)
     nengo_eiji_kanji = { 'M' => '明治',
                          'T' => '大正',
                          'S' => '昭和',
                          'H' => '平成',
                          'R' => '令和'}
     # 大晦日現在の年号を得る
     input = Date.new(y,12,31).jisx0301
     input = input.split(".") # ["R06", "12", "31"]
     nengo = input[0].split(//) # ["R", "0", "6"]
     nengo[0] = nengo_eiji_kanji[nengo[0]]
     nengo = nengo.join
  end
  def eto(y)
     eto = '子丑寅兎辰巳午未申酉戌亥'.split(//)
     eto = eto[y.modulo(12)-4]
  end
  120.times do |i|
     year = this_year - i
     # printf("%3d年前\t", i)
     # puts "#{year}年\t#{wareki(year)}年"
     # printf("%s年(%s) %d年 %3d歳\n" ,wareki(year), eto(year), year, i)
     printf("%d年 %s年(%s) %3d歳\n" ,year, wareki(year), eto(year), i)
  end

test5

@tsut

Test

さて、どうでしょう。2022/10/21 18:15

twitter

だめっぽい

hilight

<section id="main">
  <div>
   <h1 id="title">{{ .Title }}</h1>
    {{ range .Pages }}
        {{ .Render "summary"}}
    {{ end }}
  </div>
</section>

hugoの使い方

@tsut

hugoでの記事作成

M-x my/easy-hugo-newpost

すっかり忘れてる…(泣)

参考:hugoとorg-modeの融合(URLの変更) - (仮)

ちょっと訂正

init.el で ↓ のようにしてるから新しいポストは M-x easy-hugo-newpost でおk(たぶん?)

  (advice-add 'easy-hugo-newpost :override 'my/easy-hugo-newpost)

つーことで

M-x easy-hugo

からメニューをたどって [n . . new blog post] ってするってこと。

そらこて、ねっ!

そらこて、ねっ!

@tsut

sorakote.net

sorakote.net

sorakote.net

やったこと

レンタルサーバーの引っ越し

  • m10.coreserver.jp => v2005.coreserver.jp

ドメイン取得

日記のようなものを復旧

  • gem 'tdiary-style-emptdiary'をGemfileに追記
- bundle config set path 'vendor/bundle'
- bundle config set --local without 'development'
- bundle install --without development
  • とりあえず動くことを確認

Netlifyhugoをsorakote.netに

  • value-domain.comのネームサーバーをdns1〜4.p03.nsone.netとかに書き換えてしまう
  • sorakote.netでhugo表示できる
  • これで良いならレンタルサーバーとかいらねんじゃね?(Netlifyとvalue-domainしか使ってない)と、気づく
  • あたりまえに 日記のようなものはディレクトリごと消えてる

画像をリサイズして取ってくるやつ

@tsut

そういうツール作ってみた。よくありがちなやつとは思うが for my hugo ってことで。

オプションでサイズと場所を指定できる。(たぶん使わない。)

# coding: utf-8

require 'rmagick'
require 'date'
require 'fileutils'
require 'optparse'

# default resize 大きさ = 480
mysize = 480

# ターゲットディレクトリ
target = "/home/tsut/blog/static/images/"

opt = OptionParser.new
opt.on('-r', '--resize VALUE', 'リサイズする大きさ(px)') { |v| mysize = v.to_i }
opt.on('-t', '--target DIR',   '出力先ディレクトリ') { |v| target = v.to_s }

begin
   opt.parse(ARGV)
rescue OptionParser::InvalidOption => e
   abort "無効なオプション指定が含まれています"
end

# サイズ指定
# mysize = 480
width = height = mysize

# 移動先は /yymmdd/
prefix = "#{Date.today.strftime("%Y%m%d")}"
targetdir = target + "/" + prefix + "/"
# ディレクトリが無ければ作る
FileUtils.mkdir_p(targetdir) unless File.exists?(targetdir)

ARGV.each do |f|
   if File.extname(f).downcase =~ /.jpe?g/ then
      img = Magick::ImageList.new(f)
      # EXIF情報を削除してリサイズ
      img_new = img.strip!.resize_to_fit(width, height)
      # img_new = img.blur_image(20.0, 10.0)
      img_new.write(targetdir + "#{File.basename(f)}")
   end
end