動作確認環境 リンクを取得 Facebook × Pinterest メール 他のアプリ 当ブログの内容は以下の自作 PC で動作を確認しております。 CPU AMD Ryzen 3700X M/B MSI B450 TOMAHOWK MAX メモリ 32 GB (8 GB × 4) GPU GTX 1660 Super SSD WD Blue 1 TB (WDC1000T2B0B, SATA) OS Windows 10 Home リンクを取得 Facebook × Pinterest メール 他のアプリ
パソコンの Arch Linux に Chrome をインストール 今回は Arch Linux にウェブブラウザをインストール.せっかく GUI が使えるようになったんだから,Arch Linux 上でブログを更新したい. まだ GUI を導入していない場合, LXDE のインストール方法 が参考になるかも. Chrome のインストール ウェブブラウザとして,Chrome をインストールすることにした.Chromium は Chrome をベースとしたオープンソース版.pacman でインストールできるところが強み.ただ,Adobe Flash Player に対応していない.Chromium で Flash Player を使おうとすると,結局,Chrome をインストールすることになる.別に Flash Player が使いたいわけではないが,Windows 上の Chrome との互換性なども考慮して Chrome をインストールする. $ yaourt -S google-chrome 特に難しいことは何もない. 日本語入力 Chrome をインストールしただけでは日本語を入力できない.日本語を入力する方法にはいくつかあり,どれを選べばいいのか悩むところ.というか,Fcitx だの Ibus だの Mozc だの Anthy だの何なんだこれ. いろいろ調べて分かったことは,日本語入力を実現するためには,アプリごとの日本語入力を共通化してくれる「インプットメソッドフレームワーク」と実際に漢字変換を行う「インプットメソッド」を何にするかを決めなければならないということ. Fcitx,Ibus,Uim がインプットメソッドフレームワークと呼ばれ,Mozc,Anthy,ATOK がインプットメソッドと呼ばれる.漢字変換の賢さはインプットメソッドの性能に依存し,漢字変換の使い勝手はインプットメソッドフレームワークに依存する. 今回はインプットメソッドフレームワークとして Uim,インプットメソッドとして Mozc を採用する. Mozc のインストールでは Mozc を配布している非公式リポジトリを使うので, /etc/pacman.conf に以下の3行を追加して,パッケージデーターベースを更新する. $ sudo vi /etc/pacman.conf [pnsf... Read more »
第1回 ラムダ抽象と関数適用 Arch Linux 上に ghc をインストールする方法は こちら . Haskell は関数型言語の一種で,関数計算の連鎖でプログラムが動きます. C 言語などにも関数はありますが,Haskell の関数はより数学的です. まずは関数とは何かを説明します. 関数 Haskell において,関数は「 値を変換するもの 」です. 例えば,次のような,入力に$1$を加えて返す関数$f$を考えます. $$ f(x) = x + 1 $$ $x$が$1$だと$2$になります($f(1) = 2$). 関数$f$と$1$がくっつくと,$2$になってしまうのです. $x = 2$の場合,$f(2) = 3$ですし,$x = 3$の場合は$f(3) = 4$になります. つまり,関数というのは,定義という名のルールに従って,入力を出力に変換しているのです. では,C言語の関数と何が違うのでしょうか? Haskell の関数は,基本的に,同じ入力の時は同じ出力にならなければなりません. 上の関数$f$を見ると,どんな時でも同じ入力の時に同じ出力になります. ところが,C言語の場合は同じ入力でも簡単に違う出力にできてしまいます. 入力が void 型(つまり入力なし)の時でも自由自在に出力を変えることができます. 逆に,入力だけ見ても出力を決めることができないということもできます. Haskellの関数の基本は入力だけを見て出力が決まるという特徴があるので,「値を変換するもの」と見えるのです. ラムダ抽象 「関数=値を変換するもの」という考え方を発展させたものがラムダ抽象です. 中学や高校の数学において,関数というのは必ず名前がありました. 関数は値を変換してくれればいいだけなのに,必ず名前を決めてあげないと定義できません. これをラムダ計算(lambda calculus)では,「 入力をもらうと計算した結果を返すもの 」を定義できるようにしました. 例えば,入力が$x$なら,$x + 1$を返す関数を $$ \lambda x . x + 1 $$ と書くことにしたのです. 最初の$\lambda$と$.$の間には入力の変数を1つ書くことができます. ... Read more »
pandoc + xelatex で日本語 PDF を作る 前の記事「 Ubuntu 16.04 LTS 上で Pandoc を使って markdown から PDF を生成する 」では lualatex を使っていましたが,PDF の作成(タイプセット)の遅さが不満でした. たかが20〜30秒くらい,と言われそうですけど... いろいろ調べてみると xelatex は lualatex よりも速いらしく,早速試してみることにします. 例題 前の記事と同じ例題で,以下の文章を test.md という名前で保存します. % テスト % コタ これはテストデータです. 日本語でも PDF ファイルを生成できます. - test1 - test2 - test3 xelatex は前の記事のインストールでインストールされているので,新しくインストールする必要はありません. PDF の生成 PDF の生成は以下のようにします. $ pandoc -V documentclass=bxjsarticle -V classoption=pandoc,ja=standard --latex-engine=xelatex test.md -o test.pdf 時間計測 どのくらいタイプセットが違うのか調べてみました. $ time pandoc -V documentclass=ltjarticle --latex-engine=lualatex test.md -o test.pdf real 0m23.911s user 0m23.220s sys 0m0.684s $ time pandoc -V documentclass=bxjsarticle -V classoption=pandoc,ja=standard --latex-engine=xelatex test.md -o test.pdf real 0m6.510s user 0m6.132s sys 0m0.388s lualatex を使う時と比べて xelatex を使うほうが3倍ほど速いようです. 今日はここまで. Read more »