トップ 最新 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|

2023-03-03 [長年日記]

_ [雑記]AQC113ドライバー

FreeBSD portsのnet/aquantia-atlantic-kmodは、AQC107系ドライバで、新しい世代のAQC113系をサポートしていないのだが…

NetBSDドライバが出てきた模様 aq(4)ソース

Linuxドライバーよりは、ライセンス・構造的に移植しやすいはず… というか、書き換わっていて原型止めてない部分が多いが、FreeBSD版のaq(4) driverが元ネタらしい


2023-03-17 [長年日記]

_ [雑記]Ruby2.7 EoL

2023/04/12にRuby2.7系がEoLするので、移行先を考えないといけない

依存しているは、Web Serviceとして運用しているCGI環境tDaiary-4.1と Hiki-1.0で、両者とも色々ローカルパッチを当てている

  • tDiary v4.1
    • 数式環境 - MathJax pluginへ切り替え済み
    • contrib plugin image_ex.rbを組み込み
    • ローカルパッチ
      • misc/plugin/counter.rb - アクセスカウンターの置き場所のカスタマイズ (バックエンドデータの履歴管理用)
    • 移行をサボってきたが開発継続しているので、最新版に移行すれば良いはず
  • Hiki v1.0 (Ruby3.1で、そのまま動かないことは確認済み)
    • 数式環境 - X-Math plugin + MathWiki styleを使用中
    • ローカルパッチ
      • Ruby 2.x環境向けの細かな修正
      • configuration file名の変更 (管理都合)
      • Page Lock Stateの導入
        • 元来ある管理者以外改変禁止状態freezeより若干緩い匿名改変禁止状態lockedの導入
        • 匿名編集可な設定で運用している環境で、一部ページを保護したいが管理者のみにしたく無いために開発
          • spamerによる匿名編集からの保護的にも必要だった
        • 匿名編集を許可しない設定だとそもそも必要無い
      • directory revisionの不一致による svn commitの失敗からの回復処理 (svn working copyを他のものと共有するため)
      • svn commit/delete log形式を変更 (操作ユーザーの追加)
      • page revision処理にコード変換機能の追加 (repository上の古いページデータがUTF-8で無いケースのサポート)
      • @repos_rootでの URI表現のサポート(ReposSvnのinitialize)
      • 添付ファイルアップロードの拡張
        • ページ単位の添付ファイル管理
        • misc/plugin/edit_user.rbによる添付ファイル編集の認証
        • 正規表現による匿名upload可能なページの限定 (its plugin用途)
        • svn repositoryサポート
      • its pluginへのattach_form追加
      • its/comment pluginでのSPAM避け

現行のWiki運用上、重要な拡張機能

  • ユーザー認証
    • ページ編集権限 - adminのみ, 認証済みユーザーのみ(パッチで追加), 制限無し
  • 数式環境 (X-math plugin)
  • 添付ファイル (attach plugin)
    • Issueに関連したファイル類の収録、記事に関連したパッチ類の収録
    • page単位で管理出来る用に拡張している
  • Issue Tracker (ITS plugin)
    • Software関連の観的なバグ報告管理

Wiki移行先の候補

  • Hiki v2.0pre
    • 過去のデータがそのまま移行出来るはず
    • ローカルパッチは吟味の上、移植する必要あり
    • X-Math pluginは、MathJax pluginを作成すべき
    • 大規模改修が成されているので、動作に関しては要検証 (svn backendがきちんと動くかなど…)
  • Gollum
    • Markdownベース
    • バックエンドは、git repository
    • ports/www/rubygem-gollum に収録されている
    • 機能面
      • ユーザー認証 - 含まれていないが、追加は可能
        • 外部公開用のHTTP Proxyで認証する
          • 編集用・閲覧用のGollumを別々に動かして、公開URIで認証の有無を制御する事例有り (ユーザー一人であれば、こちらが簡潔か?)
        • config.rb経由で認証機構を組み込む (編集制御ではなくアクセス制御なので閲覧も制限される?)
          • BASIC認証を組み込む
          • OmniAuthを組み込む omnigollum
      • 数式環境 - --mathjaxでMathJaxがつかえる
      • ファイルアップロード - --allow-uploadsで使える。wiki_optionsのper_page_uploads属性でページ単位に紐付けた管理が出来る模様
      • Issue Tracker - 無いぽぃ (requestは挙がったことがある模様)
        • SAD wiki以外の文書管理には充分使える
  • GitLab
    • Markdownベース
    • Issue Trackerもついてくる
    • 運用環境規模がかなり大きくなる気が…

とりあえず、始めるべき作業

  • tDiaryの掃除
    • アクセスカウンターを外して、標準構成 + contrib pluginだけにする
  • Hiki-1.0の掃除
    • tDiaryのMathJax pluginを参考にプラグインを開発・X-Mathから置き換える
  • lang/ruby27の snapshotを保存する
  • lang/ruby27・ruby31の平行運用モードへ移行する
    • 本番環境の CGI scriptを/usr/local/bin/ruby27を参照する様に書き換える
    • 本番環境の rubyを dual ruby構成に変更する
    • 掃除済みの tDiaryを最新版に更新する

2023-03-18 [長年日記]

_ [雑記]Ruby2.7 EoLに向けて…

環境整理作業実施

  • tDiary-4.1
    • プラグイン組み込みを見直し
      • 使われていないプラグインを外す・設定削除
      • counterプラグインを外す・ローカルパッチ削除
    • contrib plugin image_ex.rb取り込みと環境設定以外は、標準状態に戻ったはず (確認完了すれば、最新版への更新準備完了のはず)
  • Hiki-1.0
    • MathJax v2/3 plugin実装 (add_header_procで挿入するだけだが)
      • v3はマークアップ記号の設定法がv2と違うので、しばらくドキュメントを読み漁ったが…
    • mathwiki style + X-Math pluginから default style + MathJax v3 pluginへ切り替え実施
    • X-Math plugin, MathML library, mathwiki style削除実施
    • comment・footnote・todo・trackback pluginを外す
    • its/comment plugin間で共用化しているNG設定を分離
    • comment pluginのローカルパッチ削除
  • テスト環境にruby31 & ruby27を準備 (検証作業用)
  • tDiary-5.2.4までをvendor dropに取り込み
  • 検証環境作業
    • tDiary-5.2.4/ruby-3.1.3へのアップグレード検証実施・基本動作確認

2023-03-19 [長年日記]

_ [雑記]Hiki-1.0 with Ruby 3.1

hiki-1.0.0ベースに手を入れてRuby2.7環境で動く状態になった物でRuby3.1対応を試している

一応、閲覧回りは動くようになったが、Ruby3.1だとページ更新でエラーになるのでゴソゴソ調査してみた

どうやらメソッド呼び出し時のキーワード引数とハッシュの自動変換回りの挙動がRuby3.0で変更になっているのが原因の模様

githubにあるHiki側のコードも見てみたけど、hiki/db/flatfile.rbの移動先のコードlib/hiki/storage/flatfile.rbも暗黙のハッシュ→キーワード引数展開を期待するメソッド呼び出しが残っている

あと、hiki-1.0.0ベースのコードだとハッシュの書き方が旧い模様

FileUtils.copy(textdir(page), backupdir(page), { :preserve => true })

に現れるシンボルに対するハッシュ要素 :preserve => trueは、Ruby1.9以降ではpreserve: trueと記述できる

Hikiの改修だとこの辺

Ruby 3.1対応進捗

hiki-1.0.0からフォークしたコードベースで、ページ閲覧・ページ更新が出来るところまで修正完了

現時点までは、Ruby 2.7とも互換性を維持している

後は、添付ファイルのアップロード系の機能確認を行ったら、本番環境に反映予定

アップロード系のcgiに関しても改修すべき点があるが、それは後ほどか…


2023-03-20 [長年日記]

_ [雑記]tDiary & Hiki

運用環境のtDiaryを最新版に、Hikiは 1.0.0ベースでRuby 3.1対応改修版に更新して、Ruby3.1での運用に切り替え実施

Hiki環境に関しては、Ruby2.7 EoL後にtaint回りのmethodを削除して廻る必要あり(Ruby 3.2で削除予定)


2023-03-22 [長年日記]

_ [SAD]同梱ドキュメントFRAMEWORK.Library清書

残る清書待ちの同梱ドキュメントは FRAMEWORK.PkgConfigのみ

core code実装者向けの内部インターフェース(*.h)の解説は、 まあ読めば分かるはずなので現時点ではスコープ外


2023-03-23 [長年日記]

_ [SAD]同梱ドキュメントFRAMEWORK.PkgConfig清書

当初予定分の同梱ドキュメントの清書作業完了!


2023-03-24 [長年日記]

_ [SAD]レポジトリアーカイブ生成停止

とりあえず、helper scriptを減らすためのbuild framework関連の細かな修正と READMEの更新を突っ込んだ r7739をKEKレポジトリに寄贈して プライベートレポジトリのアーカイブ生成を停止させた

併せて、SAD Hikiの編集属性も変更


2023-03-25 [長年日記]

_ [tDiary]weather plugin

2018年3月頃から動いていないことに今更ながら気が付く

どうやら情報ソースのパースに失敗している? wrong number of arguments (given 2, expected 3)が出てるからRuby側の変更で動かなくなってるぽぃ

どの関数だ?Weather::parse関数の模様???入力文字列からおかしいか?

Ruby側の仕様変更が原因だとすると、時期的には 2017年12月リリースの Ruby 2.5.0あたり?

さすがに当時の運用環境の詳細は記録に残っていないぞ

メソッド呼び出しがうまく辿れないので、プローブ差し込んで地道に調査…


2023-03-31 [長年日記]

_ [tDiary]weather plugin続き

weather pluginの不具合の件だが、直した!

  • 2018年 3月から問題が発生した原因は、情報サイト側のhttpsリダイレクト開始
  • エラーになるのは、pluginの実装不備
    • wrong number of arguments (given 2, expected 3)の原因は、同plugin内のWeather.fetchの実装で、Net::HTTPRedirection時にfetchメソッドを再帰呼び出しする際に3引数必要なところ 2引数で呼び出している
      • 第3引数 headerを追加
    • weather plugin Weather.fetchがhttps://に未対応
      • URI schmeが httpsのとき、Net::HTTP.start前に Net::HTTP.use_ssl=trueする (session = Net::HTTP.new(...)した後、use_ssl操作後に session.start do ... endさせる)
      • リダイレクトの遅延を避けるため、STATION_URL_TEMPLATEhttps://に切り替える
Index: misc/plugin/weather.rb
===================================================================
--- misc/plugin/weather.rb      (.../vender/tDiary.org/tdiary-core/stable/misc/plugin/weather.rb)       (revision 759)
+++ misc/plugin/weather.rb      (.../trunk/public:amorita/diary/misc/plugin/weather.rb) (revision 759)
@@ -64,7 +64,7 @@
 - first draft
 =end

-require 'net/http'
+require 'net/https'
 require 'cgi'
 require 'timeout'
 require 'date' # DateTime.strptime
@@ -154,7 +154,7 @@
        AVIATIONWEATHER_STATION_REGEXP = %r|(?:aviationweather.gov/adds/metars/\?.*station_ids=)([A-Z]{4,4})\b|
        NOAA_STATION_REGEXP = %r|(?:weather.noaa.gov/weather/current/)([A-Z]{4,4})\b|
        RAW_STATION_REGEXP = %r|\A([A-Z]{4,4})\z|
-       STATION_URL_TEMPLATE = "http://www.aviationweather.gov/adds/metars/?station_ids=%s&std_trans=translated&chk_metars=on&hoursStr=most+recent+only"
+       STATION_URL_TEMPLATE = "https://www.aviationweather.gov/adds/metars/?station_ids=%s&std_trans=translated&chk_metars=on&hoursStr=most+recent+only"

        def Weather::extract_station_id(url)
                        [AVIATIONWEATHER_STATION_REGEXP, NOAA_STATION_REGEXP, RAW_STATION_REGEXP].each do |r|
@@ -292,12 +292,14 @@
                px_host, px_port = (@conf['proxy'] || '').split( /:/ )
                px_port = 80 if px_host and !px_port
                u = URI::parse( url )
-               Net::HTTP::Proxy( px_host, px_port ).start( u.host, u.port ) do |http|
+               session = Net::HTTP::Proxy( px_host, px_port ).new( u.host, u.port )
+               session.use_ssl = u.scheme == "https"
+               session.start do |http|
                        case res = http.get( u.request_uri, header )
                        when Net::HTTPSuccess
                                res.body
                        when Net::HTTPRedirection
-                               fetch( res['location'], limit - 1 )
+                               fetch( res['location'], limit - 1, header )
                        else
                                raise ArgumentError, res.error!
                        end

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記