投稿

ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ございません。

このブログでは広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLaTeXのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

Debian GNU/Linux 10でLibreOffice 6 BaseをPostgreSQL 11に接続するには?

イメージ
今回の目標は、LibreOffice BaseとPostgreSQLを接続し、LibreOffice BaseをPostgreSQLデータベース・サーバーのクライアントとして使うこと。その準備をすること。 LibreOffice Baseはデータベース・クライアントのひとつ。標準ではHSQLDBまたはFireBirdというデータベースのクライアントとして働く。LibreOffice Baseは外部のデータベースとも接続することができる。 結論から先に書くと、Debian GNU/Linux 10ではlibreoffice-sdbc-postgresqlというdebパッケージをインストールし、PostogreSQLサーバーが稼動している状態でLibreOffice Baseを起動し、データベース・ウィザードでもってhost=localhost dbname=postogresを対象にして接続すればいい。PostgreSQLのデフォルトのデータベース名はpostgresで、スーパーユーザー名はpostgres。 以下、ここではPostgreSQLとの接続の手順を書き留める。 ここで前提となるソフトウェア構成は次のとおり。 $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster PostgreSQLのバージョンは次のとおり。 $ psql --version psql (PostgreSQL) 11.7 (Debian 11.7-0+deb10u1) LibreOfficeのバージョンは次のとおり。 $ libreoffice --version LibreOffice 6.1.5.2 10(Build:2) PostgreSQLのインストール Debian GNU/Linux 10 (buster)では公式のリポジトリからpostgresqlというdebパッケージをインストールする。これによってPostgreSQLのクライアント用debパッケージも同時にインストールされるはず。 $ su # ...

DockerとTensorFlowをDebian GNU/Linux 10にインストール

ここではDebian GNU/Linux 10 (buster)のユーザーがTensorFlowをインストールして深層学習(ディープ・ラーニング)の準備をする手順を書き留める。 TensorFlowをインストールして管理する方法には色々あるが、ここでは開発者が使用中のマシンの環境から開発環境を分離して個別に管理することができるDockerと呼ばれるコンテナ化ツールを用いる。 CPUのアーキテクチャ x86_64 uname -mで分かる。 GPUの有無 なし $ lspci | grep nvidia -i --colorで有無を確認できる。 Linuxディストロ Debian GNU/Linux 10 (buster) lsb_release -dで分かる。 カーネルとそのリリース番号 Linux 4.19.0-10-amd64 uname -srで分かる。 Pythonのバージョン Python 3.7.3 python3 -Vで分かる。 Dockerのバージョン 19.03.12 インストール後にdocker -vで分かる。 TensorFlowのバージョン 2.1.0 インストール後に import tensorflow as teflo print(teflo.__version__) で分かる。 Dockerをインストール Debian GNU/Linux 10の環境でDockerをインストールするために必要なパッケージをあらかじめインストールしておく。ウェブ・ブラウザを使う場合にはcurlは不要。 $ su # apt update; apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common PGP公開鍵が記されたgpgというファイルをcurlを用いて取得する。 $ curl -SL https://download.docker.com/linux/debian/gpg -O gpg % Total % Received % Xferd Average Speed Time Time Time Current ...

Debian GNU/Linux 10でLibreOffice 6 BaseをSQLite 3に接続するには?

イメージ
今回の目的は、LibreOffice 6のデータベース・アプリであるBaseを簡易データベースであるSQLite 3に接続し、SQLite 3のクライアントとしてBaseを利用するための準備をすること。この課題を実現する過程で若干の壁にぶちあたったので、そのひとつの解決法をまとめてみた。 前提となるソフトウェア環境 Linuxディストリビューション Debian GNU/Linux 10 (buster) 自分がどのLinuxディストロを使っているかはlsb_release -aで分かる。 インストールするもの LibreOffice 6.1.5 Base OracleかOpenJDKのJavaランタイム環境(JRE) SQLite 3.27.2 libsqlite3odbc.so DB Browser for SQLite 3.10.1(必須ではない) LibreOffice 6 Baseが標準で利用するデータベースはHSQLDBというもの。これはJavaランタイム環境上で動くので、Javaのランタイム環境(JRE)をインストールして環境変数を設定しておく必要がある。 Debian GNU/Linux 10では、公式のリポジトリからopenjdk-11-jreというdebパッケージをインストールすればいいが、libreoffice-baseというdebパッケージをインストールすればおそらく依存関係のために自動的にインストールされるはず。 SQLiteはバージョン3をここでは利用する。Debian GNU/Linux 10の公式リポジトリからsqlite3というdebパッケージをインストールする。 SQLite 3とLibreOffice 6 Baseを繋ぐにはODBCを利用する。そのためにはlibsqliteodbcというdebパッケージをDebian GNU/Linux 10の公式リポジトリからインストールする。 DB Browser for SQLiteはSQLiteにアクセスしてそれを操作することができるグラフィカルなインターフェイスを持った専用のブラウザ。これによってデータベース、テーブル、フィールドを新たに作成し、データを追加・変更・削除することなどができる。インストールしておくと便利な場合があるかもしれないが、必須...

LibreOffice BasicでCalcのセルに値を入力するには?

イメージ
LibreOffice バージョン6.1 Calc LibreOffice Basicを用いてCalcのセルにデータを入力するためには、まず次のようなオブジェクト型の変数を宣言しておく。 Dim Doc As Object Dim Sheet As Object Dim Cell As Object DocはCalcのドキュメントを参照するための変数。Sheetはそのドキュメントの中のシートを参照するための変数。Cellはセルを参照するための変数。オブジェクト型の変数なのでo-という接頭辞を付け、oDoc、oSheet、oCellと名づける流儀もある。 現在のアクティブなドキュメントを得てオブジェクト型変数に代入。 Doc = StarDesktop.CurrentComponent このようにStarDesktop.CurrentComponentを利用してもいいが、これだとLibreOffice Basicの統合開発環境(IDE)上で実行したときにランタイムエラーが生じてしまう。この問題を避けるためにはStarDesktop.CurrentComponentの代わりにThisComponentを使う。 Doc = ThisComponent Sheetsオブジェクトの中から特定のシートを得るためにSheetsの番号を指定し、それをオブジェクト型変数に代入。Sheetsの番号は0から始まる。 Sheet = Doc.getSheets.getByIndex(0) 番号ではなくシートに付けられた固有の名前を指定する方法もある。それにはgetByName()メソッドを次のように用いる。 Sheet = Doc.Sheets.getByName("Sheet1") 特定のシートの特定のセルを得るためには、そのセルを座標系で指定する方法、または、列名と行番号との組み合わせから成るセル名で指定する方法がある。座標系によって指定する場合はgetCellByPosition()メソッドを用いる。そしてそれをオブジェクト型変数に代入。 Cell = Sheet.getCellByPosition(0, 0) セル名で特定のセルを指定する場合にはgetCellRangeByName()メソッドを次のように用いる。 Cell = ...

10の補数と9の補数と2の補数と1の補数

10進数と10の補数 10進法の四則演算に慣れている人なら算術的な直感で分かるのが10の補数。 算盤 そろばん を使っている人は10の補数と5の補数を出力する函数を会得しているかもしれない。 例えば、2に対して10の補数はいくつかと問われればそれは8だと分かるし、6に対して10の補数はいくつかと問われればそれは4だと分かるし、5に対して10の補数はいくつかと問われれば5だと直感的に分かる。 また、3に対して5の補数はいくつかと問われればそれは2だと分かるし、2に対して5の補数はいくつかと問われれば3だと分かる。 10の補数とは、ある自然数に対してそれにいくつの自然数を加えれば10になるのかという問いに答えたもの。自然数とは、ここでは0, 1, 2, 3, 4, 5, 6, 7, 8, 9のこと。 ある自然数xに対する10の補数yは次のように計算することによって答えることができる。 \[ y = 10 - x \] 10進法の位取り記数法では、桁上がり(位上がり)が起こる数が10であるので、ある数にあといくつ足すと桁上がりが起こるかを理解していることは、その四則演算においてとても重要な暗記事項になっている。 10進法の四則演算に慣れた人の頭の中には次のような函数または対応表があるのかもしれない。 \[ f(x) = 10 - x \] xは引数。「xに対する10の補数」を出力してくれる函数f(x)。 10の補数の対応表 10進数 10の補数 0 10 1 9 2 8 3 7 4 6 5 5 6 4 7 3 8 2 9 1 10 0 補数のこの対応表を見ると、数値を小さい順から並べた昇順と数値を大きい順から並べた降順との写像(マッピング)関係に見える。 10の補数と桁上がり 例えば、\( 6 + 7 = \)を計算するとき、人は6または7の補数を瞬時に思い浮かべ、加える数がそれを上回っている場合に桁上がりが起こると即座に認識するはず。つまり、6に対する10の補数である4を思い浮かべ、その4より大きい7から4を引いた数である3と10を足し合わせて答えを計算するかもしれない。 \begin{align*} 6 + 7 &= 7 -...

Debian GNU/Linux 10にゲームエンジンUnity 2020をインストール

イメージ
今回の目的は、Debian GNU/Linux 10 (buster)にビデオゲーム・エンジンとして有名なUnityをインストールし、ビデオゲーム開発の準備をすること。 インストールするもの Unity Version 2020.1.3f1 Personal Unity 2020.1で公式にサポートされているハードウェア及びソフトウェアの構成は例えば次のウェブ・ページで確認することができる。 https://docs.unity3d.com/ja/2020.2/Manual/system-requirements.html Debian GNU/Linux 10は公式にサポートされていないが、Ubuntuがサポートされているのでおそらく大丈夫だろうという考え。 ここで前提とする環境は次のとおり。 $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster カーネルは次のとおり。 $ uname -sr Linux 4.19.0-10-amd64 NVIDIA製やAMD製のような本格的なグラフィクス・カードは搭載していない。インテルの第2世代のコア・プロセッサのグラフィクス・コントローラ。 $ lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09) マシンのハードウェア構成を調べるには例えばlshw-gtkのようなdebパッケージをインストールすると便利。 $ su apt update; apt install lshw-gtk UnityHub.AppImageファイルを取得 Unityの公式サイト からUnityHub.AppImageというファイルを取得する。この手順においてUnity IDの取得は不要。 https://unity3...

Linuxでキリル文字をローマ字入力(UIM編)

イメージ
GNU/LinuxのX Window System上でのキリル文字の入力は、他の言語と同様に、iBusやSCIMやuimといった入力メソッドのフレームワークと多言語化のライブラリであるm17nを導入することで実現することができる。 例えばLinuxディストリビューションがDebian GNU/Linux 10 (buster)の場合、かつ、iBusを使う場合、ibus、ibus-m17nといったdebパッケージをインストールすればよい。他の必要なパッケージも依存関係によって一緒にインストールされるはず。SCIMの場合はscim-m17n、UIMの場合はuim-m17nlibが代わりに必要になる。 ここでは以降、UIMを例に挙げる。 キリル文字の入力方法は一般に、キーボードのひとつひとつのキーにキリル文字がひとつひとつ割り付けられてある直接入力による方法か、ローマ字入力をする方法か、それらの二種類がある。ここではキリル文字をローマ字入力する方法を採り上げる。 UIMではuim-pref-gtk3かuim-pref-qt5を起動し、「全体設定」の「入力方式の利用準備」のフレームにある「使用可能にする入力方式」の「編集」を押してダイアログ画面を開き、そこでm17n-ru-translitを有功にする。 入力メソッドのツールバーが起動している場合はそこから「設定」を選んでuim-pref-*を起動することもできる。 m17n-ru-translitはローマ字入力を支援するので、キリル文字とローマ字との対応を理解している人であるならば新たに覚えるべきことはあまりない。ただし対応する文字がローマ字にはない場合がある。 m17n-ru-translitはスラブ語族で使われるキリル文字入力にほぼ対応している。中央アジア諸国、例えばカザフ語やキルギス語などの非スラブ語族(チュルク系言語)で使われているキリル文字には対応していない。 以下にキリル文字とm17n-ru-translitによる入力キーとの対応表を作ってみた。ほぼローマ字入力になることが分かる。入力方法が複数ある場合はカンマで区切って複数示した。 translitキリル文字入力対応表 入力方法 キリル文字 a а b б v в g г /g ѓ ...