adbird(広告鳥) 備忘録

記事一覧・このブログの主要カテゴリー

記事一覧

ブログ(無料版)の仕様で、デフォルトのトップページだと投稿記事の1つ1つが全部表示されてしまい、ブログ全体を把握しづらい。下記のリンクから入ったほうが記事を探しやすいかも。このブログをブックマークする際も下記リンクをブックマークすることをオススメする。

最近よく更新するカテゴリーなど。

Ubuntu 22.04 インストール後に追加する個人的アプリ等

端末からインストールできるもの

ブラウザやメディアプレイヤー、ファイヤーウォールメーラーほか

sudo apt install chromium-browser vlc smplayer gimp geany gufw pandoc mozc-utils-gui sylpheed sylpheed-i18n sylpheed-doc

フォント

sudo apt install fonts-ipaexfont fonts-ipamj-mincho fonts-mplus fonts-kouzan-mouhitsu fonts-aoyagi-kouzan-t fonts-takao fonts-umeplus

pdf関係

sudo snap install pdftk xournalpp
sudo apt install qpdfview

公式サイト等から個別にインストールするもの

Vivaldiブラウザ

wkhtmltopdf

(with patched qt)版をインストールするために、公式サイトからダウンロード・インストールする。

wkhtmltopdfからバージョンにあったdebをダウンロード。

sudo apt install ./wkhtmltox_X.XX.......deb

「X.XX.......deb」のところは適宜変更の上、インストール。

プリンタドライバのインストール

LBP6030 Linux ソフトウエア選択|キヤノン

サウンド関係

時々はまるサウンド関係

sudo apt install qasmixer pavucontrol

右クリックで「新しいドキュメント」ができるようにする

「テンプレート」ディレクトリ内で端末を開いて、以下を実行。

touch ./新しいドキュメント

zip ファイル展開で文字化けした場合

Japanese Teamによる追加パッケージを入れているにもかかわらず、zipファイルが文字化けする場合

sudo apt install unar

unarでインストール。

unar sample.zip

などとして展開。

TeXLive

Ubuntu 22.04 に KH coder をインストール

基本は公式サイトkhcoder/Vagrantfile at master · ko-ichi-h/khcoder · GitHubを参考に。一部、追加しないといけないモジュールがあったり、必要に応じて公式サイトと違う方法を取ったりしたけど。

事前準備

まずはリポジトリをアップデートし、事前に必要なものをインストールしておく。

$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install -y curl gcc make perl

諸々インストールするためのhkcoder.sh スクリプト

khcoder/Vagrantfile at master · ko-ichi-h/khcoder · GitHubに書いてある下記の部分をコピペして(最後の ubuntu-desktop は入れない)、ファイル名を hkcoder.sh としたスクリプトを作成。

apt-get install -y                 \
  cpanminus                        \
  fonts-ipafont-gothic             \
  libalgorithm-naivebayes-perl     \
  libclass-accessor-lite-perl      \
 ︙
 ︙
  r-cran-cowplot

上記スクリプトを実行。

$ sudo sh hkcoder.sh

なんかいろいろ。よく分からないけど…w。

$ sudo cpanm Lingua::JA::Regular::Unicode Statistics::ChisqIndep
$ sudo Rscript -e 'install.packages(c("ggnetwork", "som", "topicmodels", "proxy"))'
$ cpanm DOY/Spreadsheet-ParseXLSX-0.17.tar.gz

(上記の3番めを sudo を付け忘れていたからもしれないが…)KH Coderをインストール後、KH Coderを起動しようとしたら、

Can't locate Spreadsheet/ParseXLSX.pm in @INC (you may need to install the Spreadsheet::ParseXLSX module) (@INC contains: /opt/khcoder-3.Beta.07/kh_lib/screen_code/rde_kh_spreadsheet /opt/khcoder-3.Beta.07/kh_lib/screen_code CODE(0x5631deb5efa0) /opt/khcoder-3.Beta.07/kh_lib /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.34.0 /usr/local/share/perl/5.34.0 /usr/lib/x86_64-linux-gnu/perl5/5.34 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.34 /usr/share/perl/5.34 /usr/local/lib/site_perl CODE(0x5631deb5f000) .) at /opt/khcoder-3.Beta.07/kh_lib/screen_code/rde_kh_spreadsheet/rde_xlsx.pm line 7.

のエラーが出たので、教えて!ChatGPTくん!ということで、ChatGPTに聞いたら、以下でPerlモジュールを入れろとご教示いただいたいので、以下でインストール。

$ sudo apt-get install libspreadsheet-parsexlsx-perl

KH Coderをダウンロード・インストール

ここから先は、公式 khcoder/Vagrantfile at master · ko-ichi-h/khcoder · GitHubのやり方から少し外れて、Ubuntu 20.04 に KH Coder を、ほぼ apt-get install のみでインストールするを参考にしている。

公式サイトのやり方だと KH Coderの起動に、毎回 sudo をつけないといけなくなるので…。

一度、端末を閉じ、sudo を抜ける。端末を再起動して、$HOME(/home/〜)〔端末を再起動すると自動的にここになる〕で以下を実行。

$ KHCODER_VERSION=3.Beta.07
curl -sLO https://github.com/ko-ichi-h/khcoder/archive/refs/tags/${KHCODER_VERSION}.tar.gz
$ tar xf ${KHCODER_VERSION}.tar.gz -C ./
$ ln -s ./khcoder-${KHCODER_VERSION} ./khcoder

たぶんこれは英文を分析するのに必要っぽい。英文を分析しないのであれば必要ないかも。

$ curl -sLO https://nlp.stanford.edu/software/stanford-postagger-full-2015-04-20.zip
$ unzip stanford-postagger-full-2015-04-20.zip -d ./khcoder

MySQLの設定を編集。

$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

nanoエディタで mysqld.cnf が開くので、

[mysqld]
local-infile=1

[client]
loose-local-infile=1

を最終行に追記。

MySQLを再起動

$ systemctl restart mysql.service

MySQLにユーザーを作成し、権限を付与。

sudo mysql -uroot -p
CREATE USER khcoder@localhost IDENTIFIED BY 'khcoder';
GRANT ALL ON *.* TO khcoder@localhost;

ここで一旦KH Coderを起動し、画面を閉じてKH Coderを終了。(config/coder.iniが生成される)

$ cd khcoder
$ perl kh_coder.pl

エディタでKH Coderの設定を開いて

$ nano config/coder.ini

以下のように編集。

mecab_unicode   UTF-8
mecabrc_path    /etc/mecabrc
sql_username    khcoder
sql_password    khcoder

再度、KH Coder を起動をしてみると、無事起動。

$ cd /opt/khcoder
$ sudo perl kh_coder.pl

設定

プロジェクト>設定 で

mecab-ipadic-NEologd のインストール

上記まででKH Coderは使用できるようになったが、解析のための辞書として、mecab-ipadic-neologd とやらが賢いらしい。

公式サイトmecab-ipadic-neologdのとおりにインストールしていく。

$ sudo aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file

$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git

$ sudo ./bin/install-mecab-ipadic-neologd -n

インストール先を確認する。

$ echo `mecab-config --dicdir`"/mecab-ipadic-neologd"

今回は

/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd

と出た。

使い方は MeCab の -d オプションにカスタムシステム辞書のパス(例: */lib/mecab/dic/mecab-ipadic-neologd/)を指定して使う。

$ echo "8月3日に放送された「中居正広の金曜日のスマイルたちへ」(TBS系)で、1日たった5分でぽっこりおなかを解消するというダイエット方法を紹介。キンタロー。のダイエットにも密着。" | mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd

で、公式サイトのように解析されていれば、OK。

-d オプションを使わないで、mecabコマンドだけで、mecab-ipadic-neologdの辞書を使うようにする。

sudo nano /etc/mecabrc

エディタが開いたら、以下の前述で確認したインストール先に指定し直す。

; dicdir = /var/lib/mecab/dic/debian
dicdir = /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd

mecabを標準辞書に戻すには上記の1行目を有効にして、2行目は無効にすればいいはず。

アンインストール

KH Coder が入っているフォルダを削除するだけ。

参考リンク

タブが使えるPDFビューアー

たくさんのPDFファイルを開いていると、タブブラウザのように1つのアプリのウィンドウの中で、タブで開きたい。

もちろん、最近はブラウザでもPDFは開けるのだけど、ブラウザで開くと、若干もっさりする気がするので…。

qpdfview

Linuxの場合、qpdfview

$ sudo apt install qpdfview

タブが使えるだけでなく、機能が豊富。

  • shift + マウスのカーソル範囲指定:「文をコピー」、「文を選択」、「画像をコピー」、「画像をファイルに保存」
  • Ctrl + マウスのカーソル範囲指定:「文を追加」(付箋〔メモ〕をつけられる)、「強調部を追加」(黄色のマーカーをつけられる)
  • 「しおり」をつけられる

Sumatra PDF

Windowsの場合、Sumatra PDF

Windows での wkhtmltopdf でCSSの明朝体が効かない場合の対策

結論。wingetでインストールしなおす。

環境はWindows11。

すでに公式サイトwkhtmltopdfからインストーラーをダウンロードして、インストールしていたら、一旦、それをアンインストール。
PATHも一度削除しておいたほうがいいかも。

Windows PowerShell

winget install wkhtmltopdf

を実行して、インストール。

PATHを通しなおす(Windowsでプログラムやスクリプトにパスを通す)。

経緯

公式サイトからインストーラーをダウンロードして、インストールしたwkhtmltopdfが、cssで游明朝などシステムにインストールされているフォントを指定しているのに、効いてくれない…。

IPAexフォント | 一般社団法人 文字情報技術促進協議会をダウンロードしてインストール、cssでIPAex明朝を指定したら、これは効いた。

もしかしたら、フォントのインストール先の問題化かも。

游明朝は C:\Windows\Fonts にインストールされており、
IPAexフォントは C:\Users\ユーザー名\AppData\Local\Microsoft\Windows\Fonts にインストールされていた。

つまり、システム全体とローカルユーザーとの違い。

游明朝フォントをIPAex明朝フォントと同じ場所にコピペして、PCを再起動したけどダメだった…。

諦めかけていた時、pandocのインストール方法でwingetでのインストール方法があることを知り、もしかして、wkhtmltopdfもwingetで入手できるのでは…?と思い、やってみたらできて、問題解決。

エクセル(.xlsx)の任意のセルから値を抽出し、htmlに挿入する。さらにPDF変換。

今回もChatGPTさんに大変、お世話になった…。

pythonインストール

Windowsの場合、Microsoft Store から python(3.11で動作確認) をインストール。

openpyxl パッケージ

openpyxl パッケージを使用するので、それをインストールするために、
まずPythonの標準パッケージ管理システムであるpipをインストールして、
その後、pipを使って、openpyxl パッケージをインストール。

Windowsの場合、Microsoft Store からインストールした時点ですでにpipは入っているはずなので、2行目だけ実行。

$ sudo apt install python3-pip
$ pip install openpyxl

PDF変換のためのツールをインストール

後述のスクリプトではwkhtmltopdfの方を有効にしている。

wkhtmltopdfを使う場合

Windowsの場合

1) インストール

ターミナル(コマンドプロンプトWindows PowerShellなど) を立ち上げて

winget install wkhtmltopdf

を実行してインストール。

2) wkhtmltopdf への pathを通す

おそらく C:\Program Files\wkhtmltopdf\bin の中に、「wkhtmltopdf.exe」がインストールされたはずなので、

Windowsの「設定」で

  • 環境変数を編集」を検索して出てきたら、それクリック。
  • 「Path」を選び「編集」をクリック。
  • 「新規」をクリック。
  • 「参照」でパスを通したいプログラム(wkhtmltopdf.exe)が入っているフォルダ「C:\Program Files\wkhtmltopdf\bin」(exeファイルではないので注意)を追加。

Ubuntuの場合

aptでインストールしたものはオプションが効かない場合があるので、公式サイトwkhtmltopdfからダウンロード・インストールすることをオススメする。

Ubuntuchromium-browserを使う場合

$ sudo apt install chromium-browser

pythonスクリプト

ディレクトリ(フォルダ)内に sample.xlsx があり、そのエクセルからC1とB2のセルの内容を抽出して、htmlに挿入する。

以下をsample.xlsxと同じディレクトリ内に xlsxtopdf.py として保存。

import openpyxl
import sys
import subprocess

# Excelファイルを開く
wb = openpyxl.load_workbook(f'{sys.argv[1]}.xlsx')
sheet = wb['Sheet1']

# シート全体のセルに対して、改行を<br>に置換する
for row in sheet.iter_rows():
    for cell in row:
        if cell.value is not None and isinstance(cell.value, str):
            cell.value = cell.value.replace('\n', '<br>')

# セルの値を読み取る
# セルの値を取得
C1 = sheet['C1'].value
B2 = sheet['B2'].value

# HTMLの作成
html = f"""
<html>
<body>
<head>
<meta charset="utf-8">
</head>
<table>
<tr><td>見出し1</td><td>{C1}</td></tr>
<tr><td>見出し2</td><td>{B2}</td></tr>
</table>
</body>
</html>
"""

# HTMLのファイルへの書き込み
with open(f'{sys.argv[1]}.html', 'w') as f:
    f.write(html)

#PDF変換

#chromium-browserを使う場合
#input_file = f"{sys.argv[1]}.html"
#output_file=f"{sys.argv[1]}.pdf"
#command = ["chromium-browser", "--headless","--print-to-pdf="+output_file, input_file]
#subprocess.run(command)

#wkhtmltopdf  0.12.6 (with patched qt)を使う場合。 バージョンによって上手くいかなくなることがあるので注意。
input_file = f"{sys.argv[1]}.html"
output_file=f"{sys.argv[1]}.pdf"
options = [
    "--enable-local-file-access",
    "--disable-smart-shrinking",
    "--margin-top", "18",
    "--margin-left", "18",
    "--margin-right", "18",
    "--margin-bottom", "18",
    "--footer-font-size", "9",
    "--footer-center", "[page]" ]
command = ["wkhtmltopdf"] + options + [input_file, output_file]
subprocess.run(command)

端末で、次を実行(拡張子xlsxは入力しない)。htmlファイルとpdfファイルが生成されているはず。

$ python3 xlsxtoodf.py sample

Windowsではコマンドは「python3」ではなく、「python」。

csvの任意のセルから値を抽出し、htmlに挿入する

全部、ChatGPTさんに教えてもらいました。

LinuxUbuntu)環境だけならBashだけでいいんだけど、最近、(Linuxを使っていない)Windows環境の人たちとも共同で作業することが多くなってきたので、「Pythonで書けないかなぁ…、でも、Pythonの書き方全く知らないし…、そうだ、ChatGPTさんに聞いてみよう」と思い立って…。

僕はPythonについては本当に知識ゼロだったのに、ChatGPTさんとやり取りしながら、比較的簡単にスクリプトが作れちゃったよ…。

いや、本当にプログラミングに関しては、ChatGPTさん、マジ便利。

Pythonスクリプト

以下を sample.csv と同じディレクトリ(フォルダ)内に test.py として保存。

import csv
import sys

# csvファイルからC1とB2の値を取得
with open(f'{sys.argv[1]}') as f:
    rows = list(csv.reader(f))
c1_value = rows[0][2]
b2_value = rows[1][1]

# HTMLの作成
html = f"""<html>
<body>
<table>
<tr><td>見出し1</td><td>{c1_value}</td></tr>
<tr><td>見出し2</td><td>{b2_value}</td></tr>
</table>
</body>
</html>"""

# HTMLのファイルへの書き込み
with open('python_output.html', 'w') as f:
    f.write(html)

端末で次を実行。

$ python3 test.py sample.csv

python_output.html というファイルが同じフォルダ内にできているはず。

Bashスクリプト

以下を sample.csv と同じディレクトリ(フォルダ)内に test.sh として保存。

#!/bin/bash

# csvファイルからC1とB2の値を取得
c1_value=$(cut -d ',' -f 3 $1 | head -n 1)
b2_value=$(cut -d ',' -f 2 $1 | sed -n '2p')

# HTMLの作成
cat <<EOF > bash_output.html
<html>
<body>
<table>
<tr><td>見出し1</td><td>${c1_value}</td></tr>
<tr><td>見出し2</td><td>${b2_value}</td></tr>
</table>
</body>
</html>
EOF

端末で次を実行。

$ bash test.sh sample.csv

bash_output.html というファイルが同じフォルダ内にできているはず。

decktapeを使って、reveal.js のスライドを PDF に変換する方法

decktape: PDF exporter for HTML presentations

nodejs、npm の最新版をインストールする

apt で入る nodejs、npm は古いものらしいので、新しいものを入れる。

1.とりあえず古くてもよいのでnpmが必要なためインストール

$ sudo apt install nodejs npm

2.n をインストール

$ sudo npm install -g n

3.n を使って 推奨版(LTS版)にする。

$ sudo n lts

もし、最新版にしたいのであれば、

$ sudo n latest

4.古いほうのnodejs、npmはアンインストールする

$ sudo apt purge nodejs npm
$ sudo apt autoremove

decktape をインストール

$ npm install -g decktape

npm install -g xxxでパッケージをインストールしようとすると、権限絡みのエラー(permission denied)が出る場合

ホームディレクトリにグローバルインストール用のディレクトリを作成

$ mkdir ~/.npm-global

新しいディレクトリパスを使用するようにnpmを構成

$ npm config set prefix '~/.npm-global'

任意のテキストエディタで、~/.profileファイルを開いて次の行を追加

# nmpのグローバルインストール用のディレクトリにパスを通す
PATH="$HOME/.npm-global/bin:$PATH"

更新

$ source ~/.profile

PCを再起動。

$ decktape -h

で確認。

decktape でスライドをPDFに変換。

$ decktape --size 1123x794 入力.html 出力.pdf

私のある環境では、--size 1123x794 でPDFがA4横置きになった。たぶんPC環境によって入れる数値が変わる?

参考