スキップしてメイン コンテンツに移動

xyzzy のファイラ上でデコードやハッシュ値を

 BASE64 ,uuencode のエンコードやデコードをしたり、 MD5 などのハッシュ値を得たい場合はどうすれば?

……微妙にマイナーな気もしますが、好きなエディタ?ですので。
カスタマイズが LISP を切り貼りしなきゃいけないのが、ちょっと難易度高いんでしょうか。設定自体はテキストなので、バックアップなどはむしろ、やり易いと思うのですが……。

ファイラ上で Ctrl+8 を押すとメニューが出て、下記の事が出来るようになります。

エンコード、デコード
  • BASE64
  • uu encode
ハッシュ値生成
  • MD5
  • SHA-1
以下コード。
uubase64.l とでも名前を付けて site-lisp に保存し、siteinit.l に、(require "uubase64") とでも書いて再ダンプすれば動くでしょう、たぶん。
(provide "uubase64")

;;; BASE64 and UU エンコード、デコードメニュー
;; ファイラーに表示する一覧 Ctrl+8
(defvar *get-filer-file-endecode* nil)
(define-key filer-keymap #\C-8
     #'(lambda () (interactive)
  (unless *get-filer-file-endecode*
    (setq *get-filer-file-endecode*
   (define-popup-menu
     (:item nil "BASE64 エンコード (&E)"
      #'(lambda () (interactive) (filer-set-file-endecode 11)))
     (:item nil "BASE64 デコード (&D)"
      #'(lambda () (interactive) (filer-set-file-endecode 12)))
     (:item nil "UU エンコード (&E)"
      #'(lambda () (interactive) (filer-set-file-endecode 21)))
     (:item nil "UU デコード (&D)"
      #'(lambda () (interactive) (filer-set-file-endecode 22)))
     (:item nil "MD5 作成 (&M)"
      #'(lambda () (interactive) (filer-set-file-endecode 30)))
     (:item nil "SHA-1 作成 (&S)"
      #'(lambda () (interactive) (filer-set-file-endecode 40)))
     )))
  (track-popup-menu *get-filer-file-endecode*)))

;;filerでMD5ファイル作成
(defun filer-make-md5-string (name)
  (long-operation
    (with-open-stream (stream (open name :direction :input :encoding :binary))
      (si:md5 stream))))
(defun filer-make-md5-file ()
  (let* ((name (ed::filer-get-current-file))
         (name5 (concat name ".md5")))
    (if (ed::file-directory-p name)
        (message "フォルダはできません.")
        (when (or (null ed::*filer-query-before-process*)
                  (if (ed::file-exist-p name5)
                      (no-or-yes-p "~A~%のMD5は既にあります.~%MD5の生成を続けますか?" name)
                      (yes-or-no-p "~A~%のMD5を生成しますか?" name)))
              (message "MD5 creating...")
              (with-open-stream (stream (open name5 :direction :output :encoding :binary))
                (princ (filer-make-md5-string name) stream))
              (ed::filer-reload)      ; 再表示
              (message "MD5 done.")))))
;;filerでSHA-1ファイル作成
(defun filer-make-sha1-string (name)
  (long-operation
    (with-open-stream (stream (open name :direction :input :encoding :binary))
      (si:sha-1 stream))))
(defun filer-make-sha1-file ()
  (let* ((name (ed::filer-get-current-file))
         (namesha1 (concat name ".sha1")))
    (if (ed::file-directory-p name)
        (message "フォルダはできません.")
        (when (or (null ed::*filer-query-before-process*)
                  (if (ed::file-exist-p namesha1)
                      (no-or-yes-p "~A~%のSHA-1は既にあります.~%SHA-1の生成を続けますか?" name)
                      (yes-or-no-p "~A~%のSHA-1を生成しますか?" name)))
              (message "SHA-1 creating...")
              (with-open-stream (stream (open namesha1 :direction :output :encoding :binary))
                (princ (filer-make-sha1-string name) stream))
              (ed::filer-reload)      ; 再表示
              (message "SHA-1 done.")))))

;; BASE64 decode
(defun filer-decode-BASE64-string (name)
  (long-operation
    (with-open-stream (stream (open name :direction :input :encoding :binary))
      (si:base64-decode stream))))
(defun filer-decode-BASE64-file ()
  (let* ((name (ed::filer-get-current-file))
  (nameDEC (concat name ".dec")))
    (if (ed::file-directory-p name)
 (message "フォルダはできません.")
      (when (or (null ed::*filer-query-before-process*)
  (if (ed::file-exist-p nameDEC)
      (no-or-yes-p "~A~%と同じファイルがあります。~% BASE64 デコードを続けますか?" name)
    (yes-or-no-p "~A~%の BASE64 デコードを行いますか?" name)))
 (message "BASE64 decoding...")
 (with-open-stream (stream (open nameDEC :direction :output :encoding :binary))
   (princ (filer-decode-BASE64-string name) stream))
 (ed::filer-reload)
 (message "BASE64 decode done.")))))
;; BASE64 encode
(defun filer-encode-BASE64-string (name)
  (long-operation
    (with-open-stream (stream (open name :direction :input :encoding :binary))
      (si:base64-encode stream))))
(defun filer-encode-BASE64-file ()
  (let* ((name (ed::filer-get-current-file))
  (nameBASE64 (concat name ".base64")))
    (if (ed::file-directory-p name)
 (message "フォルダはできません.")
      (when (or (null ed::*filer-query-before-process*)
  (if (ed::file-exist-p nameBASE64)
      (no-or-yes-p "~A~% と同じファイルがあります。~%BASE64 エンコードを続けますか?" name)
    (yes-or-no-p "~A~%の BASE64 エンコードファイルを作成しますか?" name)))
 (message "BASE64 encoding...")
 (with-open-stream (stream (open nameBASE64 :direction :output :encoding :binary))
   (princ (filer-encode-BASE64-string name) stream))
 (ed::filer-reload)
 (message "BASE64 encode done.")))))
;; UU decode
(defun filer-decode-UU-string (name)
  (long-operation
    (with-open-stream (stream (open name :direction :input :encoding :binary))
      (si:uudecode stream))))
(defun filer-decode-UU-file ()
  (let* ((name (ed::filer-get-current-file))
  (nameDEC (concat name ".dec")))
    (if (ed::file-directory-p name)
 (message "フォルダはできません.")
      (when (or (null ed::*filer-query-before-process*)
  (if (ed::file-exist-p nameDEC)
      (no-or-yes-p "~A~%と同じファイルがあります。~% UU デコードを続けますか?" name)
    (yes-or-no-p "~A~%の UU デコードを行いますか?" name)))
 (message "UU decoding...")
 (with-open-stream (stream (open nameDEC :direction :output :encoding :binary))
   (princ (filer-decode-UU-string name) stream))
 (ed::filer-reload)
 (message "UU decode done.")))))
;; UU encode
(defun filer-encode-UU-string (name)
  (long-operation
    (with-open-stream (stream (open name :direction :input :encoding :binary))
      (si:uuencode stream))))
(defun filer-encode-UU-file ()
  (let* ((name (ed::filer-get-current-file))
  (nameUU (concat name ".uue")))
    (if (ed::file-directory-p name)
 (message "フォルダはできません.")
      (when (or (null ed::*filer-query-before-process*)
  (if (ed::file-exist-p nameUU)
      (no-or-yes-p "~A~%と同じファイル名があります。~%UU エンコードを続けますか?" name)
    (yes-or-no-p "~A~%の UU エンコードファイルを作成しますか?" name)))
 (message "UU encoding...")
 (with-open-stream (stream (open nameUU :direction :output :encoding :binary))
   (princ (filer-encode-UU-string name) stream))
 (ed::filer-reload)
 (message "UU encode done.")))))
;;;
;; 分岐
(defun filer-set-file-endecode (type)
  (interactive)
  (let ((n (filer-get-current-file)) str)
    (cond
     ((= type 11)(filer-encode-BASE64-file))
     ((= type 12)(filer-decode-BASE64-file))
     ((= type 21)(filer-encode-UU-file))
     ((= type 22)(filer-decode-UU-file))
     ((= type 30)(filer-make-md5-file))
     ((= type 40)(filer-make-sha1-file))
     )))

コメント

人気の投稿

ドコモマーケットからdメニューへ

何処に何があるのかさっぱりで、ユーザから好評だったドコモマーケットがdメニューへリニューアルされました。 自分が見つけることが出来なかったのかもしれませんが、 お客様サポートからspモード決済や月額課金状況のページへ辿ることが出来なくなってませんか? どうしてこういう事をするのかなぁ? spモード決済の履歴をたどるメニューは、マイメニューから入っていくようになっています。 dメニュートップページ 「マイメニュー」を選択すると このページへ飛んで、継続課金一覧や履歴を確認できるリンクがでる マイメニューに、何が表示されるのか知らされていないのに、こんな項目を置かれても。役割や名称を見ても、普通はお客様サポートへアクセスするでしょうに。 ……ただ理解できないのが、継続課金一覧等からログインして表示されるページから、用意されている「戻る」をタップすると、お客様サポートのページに戻るんですよね。なぜこのページをお客様サポートから確認できるページにしなかったのだろう?コンテンツ作るのに、失敗してるのかしらん? わかりやすくしたつもりなのかもしれません。 ただ、エンドユーザが迷うようなサポートページを提供してどうする。 身も蓋もないことですが、そもそもspモードで接続している場合はマイメニューこそトップページにすべきでしょう。dメニューはマイメニューから見たい人だけ行けばいい。

Edge 入れたくないでござる

PowerShell によるアンインストールも塞がれ、遂に消す方法がなくなってしまった。勝手に入るし。だから要らんのだ。 Windows10 22H2 に、Edge を入れたくないでござる、絶対に Edge を入れたくないでござる! なので。昔ながらの古典的な方法で、二度と勝手に入らないようにした。 まず削除だが、C:\Program Files (x86)\Microsoft にある、Edge、EdgeCore、EdgeWebView の3つのフォルダを削除。 アンインストーラが機能しないんだから、フォルダごとバッサリやってもいいよね? Microsoft365Apps で使う? いらねーよあんなゴミ。 他にインストールしてあるブラウザ上で開けばいい。PWA として動かすにしても、勝手にインストールしやがる EdgeWebView 上で動かす必要はない。 Windows10 22h2 なら、EdgeWebView を消しても、Microsoft Store は動く。Windows 11 は知らん。いつになったら安定するんだ、Windows11 は。23/11 現在、まだ使いもんにならん。 Win+x キーを押して、WindowsPowerShell(管理者)を開き、次の3行を入力。 echo "" >"C:\Program Files (x86)\Microsoft\Edge" echo "" >"C:\Program Files (x86)\Microsoft\EdgeCore" echo "" >"C:\Program Files (x86)\Microsoft\EdgeWebView" ファイル置いとけば中身入れらんないから、インストールもされまい理論。 タスクスケジューラには何もなかったが、サービスに、 MicrosoftEdgeElevationService っていうクソがいたので無効に。しつけーわ、ほんと。 追記: 11 でも一応可能。MicrosoftStore も問題はないが、EdgeWebView を内蔵せずに利用するアプリは動作しなくなる(Microsoft PC Manager とか。PDF24 はE...