Fedora 31でuptex環境を設定

久しぶりにlatex関係の情報を調べたら、ptexの拡張であるuptexを知った。早速設定してみた。

Fedora 31ではtexliveのパッケージがあるため、特に追加インストールがなくてもコンパイル、PDF変換ができるが、なぜか付属のxdviでは日本語を表示させることができないため、pxdviを導入する必要がある。

1.以下のサイトからpxdvi.tar.xz、pxdvi.x86_64-linux.tar.xz  をダウンロードし、解凍しておく。

https://texlive.texjp.org/current/tltexjp/archive/

 

2.以下のようにファイルをローカルにインストールする。(->の後ろはインストール後のフルパス)

(ちなみに、Linuxのインストールでは

install -m インストール後のファイルモード 元ファイルのフルパス インストール先のフルパス

のコマンドで実施可能(要root権限))

2-1) pxdvi.tar.xz の解凍ファイル

texmf-dist/xdvi/xdvi-ptex.map.sample  -> /usr/share/texlive/texmf-dist/xdvi/xdvi-ptex.map.sample

texmf-dist/xdvi/pxdvi.cfg  -> /usr/share/texlive/exmf-dist/xdvi/pxdvi.cfg

texmf-dist/fonts/map/pxdvi/xdvi-ptex.map -> /usr/share/texlive/texmf-dist/fonts/map/pxdvi/xdvi-ptex.map

2-2)  pxdvi.x86_64-linux.tar.xz の解凍ファイル

bin/x86_64-linux/pxdvi -> /usr/share/texlive/bin/x86_64-linux/pxdvi

bin/x86_64-linux/pxdvi-xaw -> /usr/share/texlive/bin/x86_64-linux/pxdvi-xaw

 

3.以下のような追加作業を実施する(要root権限

3-1) texmf.cnf リンク作成

ln -s /etc/texlive/web2c/texmf.cnf /usr/share/texlive/bin/

3-2) /usr/share/texlive/bin/pxdvi を修正(最後の行を変更)

変更前:

exec pxdvi-xaw $NAMEOPT ${1+"$@"}

変更後:

exec $(dirname $0)/pxdvi-xaw $NAMEOPT ${1+"$@"}

3-3) xdvi-ptex.map ファイルの修正

/usr/share/texlive/texmf-dist/fonts/map/pxdvi/xdvi-ptex.map に以下の行を追加(/usr/share/texlive/texmf-dist/fonts/map/dvipdfmx/updmap/kanjix.map から取得)

% uptex-ko-baekmuk.map
uphygt-h UniKS-UTF16-H dotum.ttf %!PS Baekmuk-Dotum
uphygt-v UniKS-UTF16-V dotum.ttf %!PS Baekmuk-Dotum
uphysmjm-h UniKS-UTF16-H batang.ttf %!PS Baekmuk-Batang
uphysmjm-v UniKS-UTF16-V batang.ttf %!PS Baekmuk-Batang
% uptex-sc-arphic.map
upstht-h UniGB-UTF16-H gkai00mp.ttf %!PS GBZenKai-Medium
upstht-v UniGB-UTF16-V gkai00mp.ttf %!PS GBZenKai-Medium
upstsl-h UniGB-UTF16-H gbsn00lp.ttf %!PS BousungEG-Light-GB
upstsl-v UniGB-UTF16-V gbsn00lp.ttf %!PS BousungEG-Light-GB
% uptex-tc-arphic.map
upmhm-h UniCNS-UTF16-H bkai00mp.ttf %!PS ZenKai-Medium
upmhm-v UniCNS-UTF16-V bkai00mp.ttf %!PS ZenKai-Medium
upmsl-h UniCNS-UTF16-H bsmi00lp.ttf %!PS ShanHeiSun-Light
upmsl-v UniCNS-UTF16-V bsmi00lp.ttf %!PS ShanHeiSun-Light

3-4) mktexlsrを実行

sudo mktexlsr

必ずroot権限で実行

 

4.以下の追加設定を実施(root権限不要)

4-1) xdvi スクリプトを追加

~/bin/xdvi を追加し、実行権限を付ける。中身は以下のようにする。

#! /bin/sh

/usr/share/texlive/bin/pxdvi "$@"

4-2) .bashrc を編集して、以下の行を追加

export TEXMF=/usr/share/texlive/

 

5.動作確認

5-1) helloj.tex (一番基本なtexファイル)

以下の内容をUTF-8エンコーディングで保存する。

\documentclass{ujarticle}
\begin{document}

こんにちは, \TeX!

\end{document}

以下のコマンドを実行する。

# texコンパイル

uplatex helloj

# dviファイルの表示

xdvi helloj

pxdviの画面

pxdviの画面

# PDFファイル作成
dvipdfmx helloj

# PDFファイルを表示(好きなPDFビューワーを使う)

atril helloj.pdf

atrilの画面

atrilの画面

5-2) cjk.texhttps://texwiki.texjp.org/?upTeX%2CupLaTeX#p5e56276 にあるCJKサンプルファイル)

以下の内容をUTF-8エンコーディングで保存する。

\documentclass{ujarticle}
% CJK fontの設定
\DeclareFontFamily{JT2}{jpnrm}{}
\DeclareFontFamily{JY2}{jpnrm}{}
\DeclareFontFamily{JT2}{schrm}{}
\DeclareFontFamily{JY2}{schrm}{}
\DeclareFontFamily{JT2}{tchrm}{}
\DeclareFontFamily{JY2}{tchrm}{}
\DeclareFontFamily{JT2}{korrm}{}
\DeclareFontFamily{JY2}{korrm}{}
\DeclareFontShape{JT2}{jpnrm}{m}{n}{<->s*[0.962216]upjpnrm-h}{}
\DeclareFontShape{JY2}{jpnrm}{m}{n}{<->s*[0.962216]upjpnrm-h}{}
\DeclareFontShape{JT2}{schrm}{m}{n}{<->s*[0.962216]upschrm-h}{}
\DeclareFontShape{JY2}{schrm}{m}{n}{<->s*[0.962216]upschrm-h}{}
\DeclareFontShape{JT2}{tchrm}{m}{n}{<->s*[0.962216]uptchrm-h}{}
\DeclareFontShape{JY2}{tchrm}{m}{n}{<->s*[0.962216]uptchrm-h}{}
\DeclareFontShape{JT2}{korrm}{m}{n}{<->s*[0.962216]upkorrm-h}{}
\DeclareFontShape{JY2}{korrm}{m}{n}{<->s*[0.962216]upkorrm-h}{}
\DeclareFontShape{JT2}{jpnrm}{bx}{n}{<->ssub*jpnrm/m/n}{}
\DeclareFontShape{JY2}{jpnrm}{bx}{n}{<->ssub*jpnrm/m/n}{}
\DeclareFontShape{JT2}{schrm}{bx}{n}{<->ssub*schrm/m/n}{}
\DeclareFontShape{JY2}{schrm}{bx}{n}{<->ssub*schrm/m/n}{}
\DeclareFontShape{JT2}{tchrm}{bx}{n}{<->ssub*tchrm/m/n}{}
\DeclareFontShape{JY2}{tchrm}{bx}{n}{<->ssub*tchrm/m/n}{}
\DeclareFontShape{JT2}{korrm}{bx}{n}{<->ssub*korrm/m/n}{}
\DeclareFontShape{JY2}{korrm}{bx}{n}{<->ssub*korrm/m/n}{}
\DeclareRobustCommand\jpnrm{\kanjifamily{jpnrm}\selectfont}
\DeclareRobustCommand\schrm{\kanjifamily{schrm}\selectfont}
\DeclareRobustCommand\tchrm{\kanjifamily{tchrm}\selectfont}
\DeclareRobustCommand\korrm{\kanjifamily{korrm}\selectfont}
\begin{document}
\section{日本語}
\jpnrm
すべての人間は、生まれながらにして自由であり、かつ、尊厳と権利とについて平等である。
人間は、理性と良心とを授けられており、互いに同胞の精神をもって行動しなければならない。
\section{中国語・簡体字 {\schrm 简体中文}}
{\schrm
人人生而自由,在尊严和权利上一律平等。
他们赋有理性和良心,并应以兄弟关系的精神相对待。
}
\section{中国語・繁体字 {\tchrm 繁體中文}}
{\tchrm
人人生而自由,在尊嚴和權利上一律平等。
他們賦有理性和良心,並應以兄弟關係的精神相對待。
}
\section{韓国語 {\korrm 한국어}}
{\korrm
\xkanjiskip=.1zw plus 1pt minus 1pt
모든 인간은 태어날 때부터 자유로우며 그 존엄과 권리에 있어 동등하다.
인간은 천부적으로 이성과 양심을 부여받았으며 서로 형제애의 정신으로 행동하여야 한다.
}
\end{document}

以下のコマンドを実行する。

# texコンパイル

uplatex cjk

# dviファイルの表示

xdvi cjk

pxdviの画面

pxdviの画面

# PDFファイル作成
dvipdfmx cjk

# PDFファイルを表示(好きなPDFビューワーを使う)

atril cjk.pdf

atrilの画面

atrilの画面

Db2でALTER TABLE後のエラー対応

Db2でALTER TABLEを実施した。そして、該当のテーブルに更新処理を行おうとするとき、以下のエラーが発生される。

Internal Exception: com.ibm.db2.jcc.am.SqlException: Operation not allowed for reason code "7" on table "スキーマ.テーブル名".. SQLCODE=-668, SQLSTATE=57016, DRIVER=4.17.29
Error Code: -668 

インターネットでいろいろ調べたが、以下のサイトには回答が書かれている。

[DB2 LUW] REORGペンディングの回復方法

単に、

db2 reorg table スキーマ.テーブル名

を実行すればよい。

 

pwgenでランダムパスワードを生成

ランダムパスワードを生成するため、以下のコマンドを実行すればよい。

pwgen -Bsy パスワードのサイズ 生成するパスワード数

それぞれの意味は以下:

-B 間違いやすい文字("l"と"1"など)を使用しない

-s 完全にランダムなパスワードを生成する

-y 生成されたパスワードに符号を含める

Windows10で検索のときWebから検索しないように設定

インターネットでいろいろ調べたが、

How to disable Bing web search results in Windows 10 Start Menu

に答えが書かれている。

レジストリーの

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Search] 

 に「BingSearchEnabled」というDWORD型のキーを新規作成して、値を0にすればよい。

JPA使用中のいくつの問題点

JPAは使うべきではないと思われるできごとが発生した。

恥ずかしいながら、2013年にリリースされたJava EE 7を最近使い始めた。JPA2.1をIBM WebSphere Liberty Profile 19で動かしている。

JPQLではいろいろ苦戦していて、以下の問題に直面していた。

1.JPQLでHAVING文が使えない。

JOINを使用したJPQLで、

HAVING テーブルA.項目1 条件

と書かれたJPQLが正しく解析されない。最初は「項目1が見つからない」とのエラーが出たが、ようやく真相が分かるできごとが発生し、組み立てたSQLでは

HAVING テーブルB.項目1 条件

となっていた(たまたまテーブルAとテーブルB両方項目1という項目が存在し、SQLの組み立てまでエラーなくできた)。明らかなバッグだろう!!!

 

2.JOINを使用時、順番がおかしい。

SELECT XXXX

FROM テーブル1

INNER JOIN テーブル2 ON テーブル2の項目条件

LEFT OUTER JOIN テーブル3 ON テーブル2とテーブル3の項目条件 

 のJPQLを勝手に

SELECT XXXX

FROM テーブル1

LEFT OUTER JOIN テーブル3 ON テーブル2とテーブル3の項目条件 

,テーブル2 

WHERE テーブル2の項目条件

 に組み立てて、赤字の条件でSQLの解析エラーになっていた。仕方なくテーブル2のJOINをLEFT OUTER JOINに変えざるを得なかった。

 

3.数式を勝手に書き換えられた。(もうJPAをやめたい!)

SELECT A - B - SUM(C) FROM XXXX

と書いたJPQLの実行結果がおかしい。実際に組み立てたSQLを見ると、

SELECT A - ( B - SUM(C) ) FROM XXXX

となっていた!勝手に括弧を入れられていた!!!

もうJPAをやめたい!!!

gitでpushされていないすべてのcommitを取り消し

gitを使い始めたが、まだまだ慣れない。一回間違えてほかのブランチとマージしてしまったが、pushされる前のすべてのcommitを取り消したくて、インターネットでやり方をいろいろ探した。最終的にはこちらのサイトで回答が書かれている。

git reset - How to discard local commits in Git? - Stack Overflow

​git reset --hard origin/ブランチ名

 を実行すればよい。

Node.js コンソールから終了する

普段では使わないが、たまにNode.jsを実行すると、コンソールから終了できなくなってしまった。「exit」も「quit」も「/exit」も効かない。

Node.js: Exiting from the Node console

に終了する方法が書かれている。

process.exit()

.exit

 を実行ればよい。