$ python -c 'import sys; print len(sys.stdin.read().decode("utf-8"))'
標準入力からUTF-8のテキストを流し込む。
なお、この方法の場合は、ひらがな・漢字が1文字とカウントされるが、同時に、数字など半角文字も1文字と数えられる。
2018-08-26
日本語の文字数を数える方法
UTF-8になって、全角文字が2バイトでなくなったこともあり、文字数を数えるのが面倒になった。
やや面倒だが、以下のコマンドで、日本語混じりの文字数をカウントできる。
2018-07-21
GPG: ファイルを共通鍵で暗号化する方法
暗号化
$ gpg -c fileこれにより、
file.gpgが生成される。
$ file file.gpg file.gpg: GPG symmetrically encrypted data (AES cipher)復号化
gpg -d file.gpg(標準出力へ出力される) 公開鍵暗号と違って、鍵のセットを用意するなどの必要がないので、個人で使う分には便利。
2018-06-07
PulseAudioのpipe-sourceとpipe-sink
PulseAudioのpipe-sinkやpipe-sourceとffmpegとをプロセス間通信する方法のメモ.
ところで, スピーカーへ再生している何かを録音したい場合, sink-monitorっていうsourceから録音すれば良いので, pipe-sinkは必要ない.
pactl load-module module-pipe-sink file=/tmp/sink.fifo pactl list | less # どのようなサンプリングスペックになっているか確認. ffmpeg -f s16le -ac 2 -ar 48000 -i /tmp/sink.fifo save.wav新しくできたシンクに向かってアプリケーションから再生すると, ffmpegによって取り込むことができる.
pactl load-module module-pipe-source file=/tmp/source.fifo ffmpeg -i input.wav -f s16le -ac 2 -ar 48000 /tmp/source.fifo新しくできたソースからアプリケーションで録音ができる. この方法単体では役に立たないが, 独自のソース・シンクを開発する場合に便利だろう. PulseAudioのモジュールを書かなくても, pipeへ読み書きするだけでソース・シンクのディバイスを作ることができる.
ところで, スピーカーへ再生している何かを録音したい場合, sink-monitorっていうsourceから録音すれば良いので, pipe-sinkは必要ない.
2018-05-12
パスワード無しでsudoできるコマンドをsudoersへ設定
通常は
sudoを使うとユーザーのパスワードを要求するが,
パスワードなしで実行できるように設定することができる.
その方法をメモする.
シャットダウンやサスペンドなどのコマンドをsudoを通して呼び出すことがあるが, そのような場合に便利だ.
以下にユーザー名user1のユーザがpm-suspendをパスワードなしで実行できるようにする方法を例示する.
user1 ALL=NOPASSWD: /usr/sbin/pm-suspend
2018-03-10
確定申告の添付書類台紙へ本人確認書類を電磁的に貼り付ける
確定申告書を印刷して提出する時, 源泉徴収票 (原本) とマイナンバーカード (写) を添付書類台紙へ貼る必要がある.
わざわざ別の紙に印刷して貼るのは面倒かつ紙の無駄である.
pLaTeXを使用して電磁的に貼る方法を説明する.
まず, 貼る予定のカードをスキャンし, 大きさをそろえて周囲を切り取る. 各ページをEPSで保存する. 一例としてGimpを使用するとこのような作業ができる.
貼り付け台紙のページをEPSへ変換する.
pLaTeXのコードを作成し, PDFを作成する.
以下に, TeXのソースコードを示す.
$ pdftops -f 2 -l 2 ../h29syotoku.pdf id-format.epsもしAcrobat Reader等からEPSを作成したい場合, このページが役に立つかもしれない.
platex id && dvipdfmx id
\documentclass{jarticle}
\usepackage{wallpaper}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{color}
\geometry{left=0mm,right=0mm,top=20mm,bottom=20mm}
\begin{document}
\thispagestyle{empty}
\ThisCenterWallPaper{1.0}{id-format.eps}
\center \begin{tabular}{c}
~\vspace{77mm}~ \\ % 位置を調整する
\colorbox{white}{
\begin{tabular}{cc}
~ \\
\includegraphics[width=90mm]{taxid-1.eps} & % マイナンバー 表
\includegraphics[width=90mm]{taxid-2.eps} \\ % マイナンバー 裏
~ \\
% 本人確認書類を貼る場合:
\includegraphics[width=90mm]{lic-1.eps} &
\includegraphics[width=90mm]{lic-2.eps} \\
~ \\
\end{tabular}
}
\\
\end{tabular}
\end{document}
width=90mmの箇所は, 周囲を切り取ったときの大きさに合わせて設定する.
あるいは, EPSに大きさを正しく設定していれば, widthは不要になる.
2018-01-19
Postfix+Procmail: 電子メールの添付ファイルを自動で保存する方法
Linuxメールサーバ上で, 送られて来た電子メールの添付ファイルを自動で保存する方法をメモする.
Pythonのスクリプトを以下のように用意する.
#! /bin/env python
import sys
import email
import re
import os
re_fname = re.compile('[^\./][^/]*\.[a-zA-Z0-9]*$') # この箇所は適宜修正をすること.
dest_dir = '/home/hoge/email/' # 保存先のディレクトリ
msg = email.message_from_string(sys.stdin.read())
for part in msg.walk():
fn = part.get_filename()
if not part.is_multipart() and fn and re_fname.match(fn):
print dir(part)
fp = open(os.path.join(dest_dir, fn), 'wb')
fp.write(part.get_payload(decode=True))
fp.close()
上記のスクリプトを ~/Maildir/attach2file.pyという名前で保存した場合,
.procmailrcに以下のように記述する.
:0c *^Content-Type: multipart | $HOME/Maildir/attach2file.pyなお, re_fnameの箇所は,
..など他のディレクトリへファイルを書き込まれないようにするなどセキュリティに配慮して記載する.
2018-01-09
EPSをWMF経由でPowerPointにインポート
以前に, EPSをPowerPoint 2007にインポートすると失敗することを記事にした.
InkscapeでWMFに変換してインポートすることで, ベクターフォーマットを保ってPowerPointにインポートできることが分かった.
その方法をメモしておく.
破線が実線になる. (破線の間隔が狭すぎて, 実線に見える.)
網掛けの色が変わる.
枠と塗りつぶしが別々のオブジェクトに分割される. (EPSの仕様?)
白の矩形で消した箇所が現れることがある. (たぶん, 白色の塗りつぶしが消えた.)
矢印が消える
- EPSをInkscapeでWMFに変換する.
inkscape tmp.eps --export-wmf tmp.wmf
GUIで操作する場合, テキストをパスに変換するかなど, 色々なオプションがある. - PowerPointで
tmp.wmfをインポートする.
- [グループ化解除] を行うことで, ベクターの図になる.
- EPSをInkscapeのSVGフォーマットへ変換する.
inkscape tmp.eps -l tmp.svg
- 必要に応じて, SVGを編集する. 以下の例では, フォントをTimesからsans-serifへ変換する.
sed \ -e 's/font-family:Times;/font-family:sans-serif;/g' \ -e 's/-inkscape-font-specification:Times-/-inkscape-font-specification:sans-serif,/g' \ -i tmp.svg
- WMF形式で出力
inkscape tmp.svg --export-wmf tmp.wmf
登録:
投稿 (Atom)