投稿

2020の投稿を表示しています

ブログの説明

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

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

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

Debian GNU/Linux 10でsnapdの削除をしようとしたらエラー

基本ソフト Debian GNU/Linux 10 (baster) Linuxカーネルのバージョン 4.19.0-11-amd64 APTのバージョン 1.8.2.1 snapdのバージョン 2.37.4 APTを使ってsnapdをパージするときに次のようなエラーメッセージが表示されて無事に削除が完了しないことがある。 Removing snapd cache rm: '/var/cache/snapd/aux' を削除できません: ディレクトリです dpkg: パッケージ snapd の処理中にエラーが発生しました (--purge): installed snapd package post-removal script subprocess returned error exit stat us 1 処理中にエラーが発生しました:

LibreOffice 6 Calc - セルの相対参照と絶対参照

LibreOfficeもしくはApache OpenOfficeのCalcのセルは、Microsoft Excelのセルと同様、列名を示すアルファベットの大文字と行名を示す自然数との組み合わせでA2やB4のように参照することができる。 参照とは、A2やB4などと入力することによってそれらのセルの値を別のところから指し示すことができることを意味する。別のところというのは例えば別のセル。 ただし別のセルにA2やB4などとただ入力するだけではそういう文字列だと認識されてしまう。それが別のセルを指し示す参照であることを示すには、それらの先頭に=をつけてそれが式であることをCalcに知らせる必要がある。要するに=A2や=B4のように入力する。 =A2や=B4のようにセルに入力すると、それが指し示しているA2というセルまたはB4というセルに入力されている値がそこに表示されるようになる。 この参照という機能を使えば、=A2 + B4という式を入力してその答えの値をそのセルに表示させることができる。=A2 + =B4でないことに要注意。=は式の先頭にのみ付ける。 相対参照とはベクトル 実を言えば、A2やB4といったセルの参照方法は相対参照を表わしている。本当は$A2や$B4と表わさなければならない。$A2や$B4とする参照の仕方を絶対参照と呼ぶ。 じゃあ、相対参照と絶対参照では何が違うのか。 相対参照はそれを入力したセルと参照対象になるセルとの間の距離を計っている。 どういうことかと言うと、セル$A2に64という値が入力されていてセル$B4に=A2という式を入力したとする。そうするとセル$B4には64と表示される。ここまでは絶対参照と同じ。 でも実際には=A2は、$A2の場所が$B4から見て左へ1つ、上へ2つ移動したところにあるという相対的な位置関係によって参照している。相対参照とはシートを平面上のデジタル的な座標と考えた場合のデジタル的なベクトルのようなもの。 相対参照であることはその式をコピーしたときにはっきりと分かる。 セル$B4に入力した式=A2を別のセル、例えば$C3というセルにコピーしてみる。そうすると、コピーした式が自動的に=B1に変わってしまう。相対参照ではその式が文字通りにコピーされない。参照先が変わってしまう。 LibreOffice

LibreOfficeのWindows10へのインストール時エラーの対処法

イメージ
LibreOfficeの現時点での最新版LibreOffice 7.0.1を公式サイトからダウンロードし、Windows 10へインストールする過程でエラーが生じ、インストールに失敗してしまった。 今回はこの問題への対処法を含めてLibreOfficeのダウンロードとWindows 10へのインストールの手順を記す。 公式サイトからLibreOfficeをダウンロード LibreOfficeの 公式サイト へウェブ・ブラウザでアクセスし、上のほうのナビゲーション・メニューにある「ダウンロード」というメニュー中の「ダウンロード」を選ぶ。そうするとダウンロード・ページへと遷移する。 ダウンロード・ページにはLibreOfficeの最新版とやや旧い安定板が表示されるので、いずれかを選ぶ。以降、最新版(現時点では7.0.1)を例に挙げる。 インストール対象となるオペレーティングシステムの種類(ここではWindows 10)を選ぶ。Windowsの場合は32bitか64bitの選択肢があるので、使っているマシンとOSに合わせて適切なほうを選ぶ。以降、64bitを例に挙げる。 「ダウンロード」を押し、LibreOffice_バージョン番号_Win_x64.msiをローカル・ディスク上の任意のフォルダー(ディレクトリとも言う)に保存する。ここでは「ダウンロード」(downloads)というフォルダに保存したことにする。 一方、ダウンロード・ページには「LibreOffice built-in help」の下に「(Torrent, 情報)」と書かれたハイパー・リンクが張られているはず。この「情報」のほうを開くと、そこにダウンロードしたファイルのハッシュ値が記されているはず。これを次に利用する。 ダウンロードしたファイルのハッシュ値を調べて照合するためにPowerShellを起動する。 ダウンロードしたファイルの保存先フォルダへとcdコマンドによって移動する。 > cd downloads lsコマンドによってファイル一覧を表示させる。その一覧の中から、ダウンロードしておいたmsiファイル名全体をアクティブな状態にしてCtrl+cキーを押し、ファイル名をコピーする。 > ls PowerShell上で次のように入力し、ダウンロードしたファイルの

Visual Studio 2019にはC++のためのフォームデザイナーがない件

イメージ
Visual Studio 2019を利用してC++でWindowsフォームアプリを作成しようと「新しいプロジェクトの作成」で「Windowsデスクトップアプリケーション」を選んでみたものの、フォーム・デザイナーが見当たらないことに気が付いた。ユーザー・インターフェイスはソースコードを直接いじれということか。これは厳しい。 C++を諦めてC#でフォームをデザインしろというのが常識的な対処法になるのかもしれないが、それでもC++で作る必要があるという隙間需要を考慮し、今回はこの問題に対処する二通りの対処法をインターネット上で見つけることができたので紹介したいと思う。 Visual Studio Installerでは、「.NETデスクトップ開発」と「C++によるデスクトップ開発」にチェックを入れてインストールしておいたのだけれど、これだけではデフォルトで「ビルドツールC++/CLIサポート」がインストールされないようだ。これを追加インストールする必要がまずあった。その手順は次のとおり。 対処法1 コードを追加する方法 Visual Studio Installerをまず起動した。 「インストール済み」のVisual Studio **** 2019に対して「変更」を選んだ。 「ワークロード」タブで「.NETデスクトップ環境」と「C++によるデスクトップ環境」の両方にチェックが入っていることを確認した。 「個別のコンポーネント」タブを選び、「C++/CLI」として検索した。そうするとビルドツールのC++/CLIサポートの一覧が表示された。 この執筆時点では「v142ビルドツール(14.27)のC++/CLIサポート」がどうやら最新版のように見えたのでこれにチェックを入れた。 そうしておいてからそのダイアログ・ボックス右下の「変更」ボタンを押した。 これでダウンロードとインストールが自動的に行われるので、しばらくの間待つ。 インストールが完了したが、「警告あり」と表示されてしまった。「問題の表示」によればMicrosoft.VisualStudio.AspNetDiagnosticPack.Msiのインストールに失敗したらしい。ここではこの問題には対処せず、無視して次の手順に進んだ。 Visual Studio Installerを終了

HTML5 Canvasで簡単な論理回路図を描いてみた

今回は、HTML5 CanvasのAPIを利用し、伝統的な論理ゲート記号によって簡単な論理回路図を描く手順について書き留める。 同じ論理ゲート記号を複数回使うことになるので、それらの論理ゲート記号を描く機能の一部をまずは 函数 かんすう 化してみた。 ここでは、オブジェクトを初期化するための特別な函数であるコンストラクター函数と呼ばれるものを使ってみた。コンストラクター函数はまるでクラスのように働き、これによって同じ種類の異なるオブジェクトを量産することができるようになる。 NANDゲート記号をコンストラクター函数化 実用論理ゲートだけによって基本論理ゲートと同じ機能を実現できることを示す論理回路図を描くため、NANDゲート記号のソースコードをコンストラクター函数にまとめてみた。 コンストラクター函数の引数としては、第1と第2に座標を、第3には輪郭線の太さを、第4には指定することができるようにしてみた。 こうすることで異なる属性を持つ複数のオブジェクトを一つの雛形から描画することができるようになる。 コンストラクター函数NoAndGateのソースコードは次のとおり。使っているスクリプト言語はJavaScript。 <script> /* コンストラクター函数でNoAndGateオブジェクトを定義 引数にはx座標, y座標, 輪郭線の太さ, 輪郭線の色 */ function NoAndGate(argX, argY, lineW, argColor) { //座標のプロパティ this.x = argX; this.y = argY; //輪郭線の太さのプロパティ this.width = lineW; //本体部分の輪郭線の色のプロパティ this.color = argColor; /* 2つの頭部直線先端と1つの尾部直線先端の座標を表わすプロパティ hornPoint1: 頭部(左端)の上の直線の先端の座標 hornPoint2: 頭部(左端)の下の直線の先端の座標 tailPoint: 尾部(右端)の先端の座標 */ this.hornPoint1X = x+0; this.hornPoint1Y = y+11; this.hor

HTML5 Canvasでその他の論理ゲート記号を描く

今回は、HTML5 CanvasのAPIを利用してMIL(軍事)規格のXNORゲート記号を描いてみた。 XNORゲートのシンボルの完成図は次のとおり。 あなたのブラウザはCanvas要素に対応していません。 XNORゲートのシンボルは、XORゲートのソースコードとNORゲートのソースコードとを合成するだけなので簡単。XORゲートの本体部分の末尾に小さな円をくっつけ、さらにそこに接尾する直線の位置をそれに合わせてやや調節してやればよい。 まず前回の実用論理ゲート記号を描いたときのXORゲートのソースコード全体をコピー&ペーストし、NORゲートのソースコードにある小さな円を描く部分のソースコードを挿入した。さらに、本体部分に付属する三つの直線を描く部分のソースコードをNORゲートのソースコードのそれに置き換えた。 これだけでXNORゲートのシンボル図のソースコードは完成。それは次のようになる。 <!DOCTYPE html> <head> <title>HTML5 Canvasで論理ゲート記号を描く</title> </head> <body> <div style="text-align: center"> <canvas id="exclusiveNotOrGateSymbol" width="100" height="50"> あなたのブラウザはCanvas要素に対応していません。 </canvas> </div> <script> //特定のcanvas要素を取得して変数に代入 var canvas = document.getElementById("exclusiveNotOrGateSymbol"); //2次元描画コンテキストを取得して変数に代入 var context = canvas.getContext("2d"); //translate(x,y)メソッドで図形を平行移動できる context.translate(0, 0); //scale()メソッドで図形を上下左右に伸縮で

HTML5 Canvasで実用論理ゲート記号を描いてみた

今回はMIL(軍事)規格の論理ゲート記号を描いてみたその2。前回は基本論理ゲートであるORゲートとANDゲートとNOTゲートを描いた。今回は実用論理ゲートであるNORゲートとNANDゲートと、そしてXORゲートをHTML5 CanvasのAPIを利用して描いてみることにした。 NORゲート記号を描く NORゲートのシンボルの完成図は次のとおり。 あなたのブラウザはCanvas要素に対応していません。 NORゲートを描くためのHTMLとJavaScriptのソースコードは次のとおり。 <!DOCTYPE html> <head> <title>HTML5 Canvasで論理ゲートを描く</title> </head> <body> <div style="text-align: center"> <canvas id="notOrGateSymbol" width="100" height="50"> あなたのブラウザはcanvas要素に対応していません。 </canvas> </div> <script> //特定のcanvas要素を取得して変数に代入 var canvas = document.getElementById("notOrGateSymbol"); //2次元描画コンテキストを取得して変数に代入 var context = canvas.getContext("2d"); //translate(x,y)メソッドで図形を平行移動できる context.translate(0, 0); //scale()メソッドで図形を上下左右に伸縮できる context.scale(1,1); /* NORゲートの本体部分の輪郭線を描く */ //輪郭線の太さ context.lineWidth = 2; //輪郭線の色 context.strokeStyle = 'black'; //パス(軌道)を初期化 context.beginPath(); //輪郭線を描き始める座標 co

HTML5 Canvasで基本論理ゲート記号を描いてみた

MIL(軍事)規格の論理ゲート記号(もどき)をHTML5のcanvas要素に描いてみた。今回は、ORゲート、ANDゲート、NOTゲートの3つの基本論理ゲートだけを描いた。 ORゲートを描く まずはORゲートを描いてみた。出来上がりは次のとおり。 あなたのブラウザはCanvas要素に対応していません。 ORゲートのためのHTMLとJavaScriptのソースコードは次のとおり。 <!DOCTYPE html> <html lang="ja"> <head> <title>HTML5 Canvasで論理ゲート記号を描く</title> </head> <body> <div style="text-align: center"> <canvas id="orGateSymbol" width="100" height="50"> あなたのブラウザはcanvas要素に対応していません。 </canvas> </div> <script> //特定のcanvas要素を取得して変数に代入 var canvas = document.getElementById("orGateSymbol"); //2次元描画コンテキストを取得して変数に代入 var context = canvas.getContext("2d"); //translate(x,y)メソッドで図形を平行移動できる context.translate(0, 0); //scale()メソッドで図形を上下左右に伸縮できる context.scale(1,1); /* ORゲートの本体部分の輪郭線を描く */ //輪郭線の太さ context.lineWidth = 2; //輪郭線の色 context.strokeStyle = 'black'; //パス(軌道)を初期化 context.beginPath(); //輪郭線を描き始める座標 context.moveTo(12,2); //本体上辺

1+1=1になるとき。ブール代数、数理論理学、論理回路

ブール演算が扱う数は0と1の2つだけ。しかも 位取 くらいど りなし。つまり複数の桁を持たない。 0を偽に、1を真に、真理値として対応付けると、ブール演算を論理演算と同等に扱うことができる。その場合、偽はfalseの頭文字のF、真はtrueの頭文字のTと記されることがある。 あるいはまた、0をOFFに、1をONに、そしてまた、0を電圧の低さに、1を電圧の高さに対応付けることでブール演算をスイッチング演算と同様に見なすことができる。 集合演算もまた、これらと極めて近しい関係にあることを直感できるはず。 ちなみに数理論理学にはFとTに限られない2値以上の値を扱う多値論理演算がある。ここではそれらについては触れない。 ここでは数学としてよりもコンピューター科学としての目的に重きを置くため、ブール演算と2値論理演算とを同じものとして扱う。それらの定理の証明にはほとんど触れない。各々の論理演算は、コンピューターに使われているデジタル集積回路を構成するデジタル電子回路の基本単位となっている論理ゲートと呼ばれるものにそれぞれ対応している。 以下では、ブール演算のパターンと各々の真理値表、それらに対応する論理ゲートを表わすシンボルを記した。\( a, b, c, \cdots \)はここではブール変数を表わすものとする。 論理和 (OR) ブール代数の加法は、与えられた数の内にどれか1つでも1が含まれていればその出力が必ず1になり、それ以外は0になる 函数 かんすう と見なすことができる。これに対応する論理演算は論理和。それはOR演算とも呼ばれ、\( a + b \)や\( a \vee b \)などと記されている。 ORは英語でorのこと。日本語では「または」という訳語が当てられていることが多いが、日本語の「または」には後に記す 排他 はいた 的論理和の意味合いがあるので要注意。 \[ \begin{align*} 0 + 0 &= 0 \\ 0 + 1 &= 1 \\ 1 + 0 &= 1 \\ 1 + 1 &= 1 \end{align*} \] 論理和の真理値表は次のとおり。 論理和の真理値表 \( a \) \( b \) \( a + b \) 0 0 0 0 1 1 1