Ubuntu 18.04 への SATySFi (v 0.0.3) の導入

個人的な覚書です

 

1. 本家README.mdを読んで実践します

github.com

 

2. opamを楽に管理できるppaを探しました

本家README.md では binary install の方法を提示している

opam.ocaml.org

 

基本本家README.mdの指示通りに進めます。 

opam pin add satisfy .  (<-カレントディレクトリの . を忘れないで!)

 

ipaのフォントと特殊なフォント一つを導入するときに参考にした

prololo.hatenablog.com

qiita.com

 

demoやdocを動かすのに必要だった otf, ttfフォントたち

Ubuntu – File list of package fonts-lmodern/trusty/all

↑ このサイトの情報を参考にして、以下のディレクトリにあるotfファイルを全部satysfiのフォントファイルの管理ディレクトリにコピーした

/usr/share/texmf/fonts/opentype/public/lm/

↓ 以下のサイトからフォントファイルをダウンロードして上のときと同様にコピーした

LM Math downloads — GUST Web Presence

 

あとは上に示した SATySFi インストールバトル等のページを参考にしてください

ほか参考サイト

miettal.hatenablog.com

 

感想

製作者さんに敬意を表します

VS Code, clang lldb, C/C++ デバッグ

環境

Ubuntu 18.04

clang-6.0, lldb-6.0, cmake

 

gdbの場合は以下のコマンドを実行すればC/C++デバッグが可能

sudo apt install gdb

 

lldbを利用したい場合は以下のプラグインを導入する

marketplace.visualstudio.com

 

 

以降の手順は以下のリンクを参考にしてください

qiita.com

 

Twitterのつぶやき内容に応じて、Microsoft Flowを利用してOffice 365 Outlookから自動でメールを送信する

japan.flow.microsoft.com

いわゆるIFTTTのMicrosoft

 

  • IFTTTとは?

ifttt.com

Twitter, Google カレンダー, Google Drirve, LINE, Outlook... etc.

異なるサービス同士を連携できるサービス

 

  • Office 365 Outlook を使う理由

1. 本当はSlackを使いたい、G Suite for Educationを使いたい…!

Slack -> セキュリティがどう(いまSkype使ってるけど :thinking_face:

G Suite for Education -> 個人的最適解。 でもこのサービス内でG Mailを利用するには、MXコードの編集が必須で大学のIT管理者問い合わせが必須条件。過去にG Suiteを取りやめたことがあるらしく、説得は困難かと予想(あとで聞きに行く)

 

2. IFTTTだと条件分岐を行うことが困難で、文面の指定が難しい

 

  • Twitterを使う理由:ツイ廃(自称)

 

 

今回の目的:

Twitterで特定のハッシュタグ、特定の単語を含んでいるかどうかを条件分岐で判断し、Office 365 Outlookメールで「遅刻連絡」または「欠席連絡」を行う

 

手順

1. Microsoft Flowにログインします

2. 「1からフローを作り」ます

3. トリガーにはTwitterの「新しいツイートが投稿されたら」を選択,

ここでは from: や #ハッシュタグ 等の検索オプションを使って、トリガーとするツイートを絞り込む

理由:ユーザを絞り込まないと他人のツイートに反応するし、ハッシュタグで制限しないとすべての自分のツイートがトリガーになるので危険きわまりないため

4. 遅刻や欠席の判別については条件分岐を駆使してください

以下のフローチャートを参照

f:id:heruwakame:20180606183414p:plain

私にはどうやっても使いこなし方が見い出せなかったけれども、MS のドキュメントを読み込めば、「式」(ラムダ式?)を使ってより簡易化できると考えられる

docs.microsoft.com

5. 「アクションを追加」でOutlookを選択、メールの宛先、件名、本文を設定。

6. 完了!

 

f:id:heruwakame:20180606184701p:plain

 

実情:Twitter社のAPI利用制限が邪悪なためか、15分に一回しか自動で実行してくれない。即応性を求める場合はこの方法を使用するべきではない。ただし、テストは15分待たずに行うことが可能。フロー編集画面右上にある Testをクリックすれば、トリガー待受状態になり、すぐに動作テストが行える。

Setup OpenGL 4.5 on Ubuntu 18.04 LTS

 

情報元

本記事は以下のWebサイトをもとにしています

無料で親切な、OpenGLに関する教材です。

learnopengl.com

 

本記事の目標

以下のレポジトリにあるソースコードをcmakeコマンドで一斉コンパイルすることなく、自前でちまちまコンパイルできるようにすること。

つまり、glad, glfwやopenglを導入し、自分が記述したソースコードを自前でコンパイルして実行できるようにすること。

github.com

 

CPUとGPU情報

$ lscpu

ベンダー ID: GenuineIntel
CPU ファミリー: 6
モデル: 60
モデル名: Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz

GPU : NVIDIARADEONもない、Intel HD Graphicsを利用

 

対応OpenGLバージョンの確認

OpenGLの場合

lscpuで確認した「CPUファミリー」に表示されている数字は、CPUの世代を表している。

私の場合は6であったので、第6世代インテルCoreプロセッサーの欄を確認した。

www.intel.co.jp

 

2018年4月下旬現在、手持ちのCPUが対応しているOpenGLの最新バージョンは4.5。

一方、OpenGLの公式サイトで発表されているOpenGLの最新バージョンは4.6。

OpenGL - The Industry Standard for High Performance Graphics

 

対応バージョンが最新版でない理由は、OpenGLを管理するKhronosが策定した仕様に対し、GPUメーカーが追従して開発するためと考えられる。

 

Mesaの場合

2018年4月下旬現在、Mesaの最新版は以下のサイトより、18.0.1

Bug fixが含まれているので、これより古ければアップデートを検討

The Mesa 3D Graphics Library

 

 

現在利用中のOpenGL等のバージョン確認

最新版情報を確認したあとは、現在利用しているソフトウェアのバージョンを確認する。

$ glxinfo | grep "version string"

 

server glx version string: 1.4
client glx version string: 1.4
OpenGL core profile version string: 4.5 (Core Profile) Mesa 18.0.0-rc5
OpenGL core profile shading language version string: 4.50
OpenGL version string: 3.0 Mesa 18.0.0-rc5
OpenGL shading language version string: 1.30
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 18.0.0-rc5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10

以上から、

  • OpenGL : 4.5
  • Mesa : 18.0.0-rc5

であることがわかる。

OpenGLは4.5で、対応バージョンの中では最新である。

Mesaは18.0.1がリリースされているため、アップデートを行いたいところだが、

$ tar xvzf mesa-18.0.1.tar.gz

$ cd mesa-18.0.1

$ ./configure

 ...

configure: error: --enable-llvm is required when building r300

というエラーを得た。

このエラーはよくわからないので、この記事を見てくれた人でプロがいらっしゃれば対処法を教えてください。

…というわけで、mesaのバージョンはこのままでいく

 

 

OpenGL関連ライブラリのインストール

GLFW

apt利用

sudo apt install libglfw3-dev libglfw3

GLFW - Download

Source packageから最新版をダウンロード&ビルドしても良いが、最新版のリリース日は2016年8月とちょっと古いうえ開発が滞っているため、aptでGLFWの最新版を導入できて楽である。

ビルド

Githubレポジトリからgit cloneしてlatestブランチに変更したあとでビルドしない限り、旨味はない。

GLFW: Compiling GLFW

 

GLAD

Githubレポジトリにいろいろ入っているけれども、無視してOK

github.com

 

以下のサイトにアクセス

http://glad.dav1d.de/

  • Language : C/C++
  • Specification : OpenGL
  • API :  gl -> version 4.5
  • gles 1, 2, 3 : None
  • Profile : Core
  • Extensions : 無視
  • Options : Generate a loader にチェック

を確認し、GENERATEを実行、生成されたZIPファイルをダウンロード.

$ unzip glad.zip

Archive: glad.zip
extracting: src/glad.c
extracting: include/glad/glad.h
extracting: include/KHR/khrplatform.h

src/glad.c は、プロジェクトフォルダと同じ階層に入れる。

includeに含まれているフォルダはフォルダごと /usr/include に入れる。

 

glfw3

GLFW - An OpenGL library

2018/4/27 (Fri) 18:18 "-lglfw3" の問題が出て、忘れていたことに気がつき追記

marina.sys.wakayama-u.ac.jp

 

 

実行

たとえば以下のファイルを実行したいとする

github.com

トップディレクトリのREADME.md曰く、必要なパッケージは以下の通り

g++ cmake git libsoil-dev libglm-dev libassimp-dev libglew-dev libglfw3-dev libxinerama-dev libxcursor-dev libxi-dev

現在のディレクトリを

> ~/Document/LearnOpenGL

としたとき、

  1. glad.cをこのLearnOpenGLフォルダに追加
  2. コピーしてきたソースコードの3行目くらいに以下の行を追加

#include "glad.c"

gcc, g++ コンパイル時のオプションは以下の通り

gcc <ファイル名>.c -lglfw3 -pthread -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -ldl -lXcursor

g++ <ファイル名>.cpp -lglfw3 -pthread -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -ldl -lXcursor

 

タイトルがLearnOpenGLの、真っ黒なウィンドウが表示されたら成功です

 

失敗したが自力で対処できた場合、本記事を加筆修正しますので、コメント欄にコメントを残してください

github.io + jekyll での自作サイト設定

ごめんなさいやっぱり無理でした…

流れ

  1. ローカルのコンピュータにruby, jekyllの環境を構築します
  2. jekyllで適当なサイトを作成します
  3. 作成したサイトをgithub pagesに反映させてみます
  4. 作成したサイトのテーマを変更してみます

参考資料

段階 1, 2, 3 で参考になります。

qiita.com

環境構築

まずはDependency versionsで、今github pages側が

  1. どのバージョンのrubyに対応しているか
  2. github-pagesのバージョンはいくつか

といったことを確認しましょう。 

pages.github.com

Rubyの導入 (Linux)

rubyの導入のためにまずはrbenvを入れます。

が、さらにその前にanyenvの導入をおすすめします。

anyenvはrbenvのみならずpyenvといった他の言語のenvをまとめて管理できるツールです。

github.comanyenvの導入や設定方法、使い方は上記のサイトを参照してください。

もちろん、rbenv単体で利用したとしても操作方法に一切差はありません。

 

さて、rbenvで、rubyのバージョンを指定しつつrubyをインストールします。

rbenv install (Dependency で指定されている rubyのバージョン)

rbenv global (Dependency で指定されている rubyのバージョン)

例) rbenv install 2.4.2

例) rbenv global (rubyのバージョン)

Ubuntuなら ~/.bashrcの編集等をお忘れなく。

github-pages の導入

続いてgem でgithub-pagesを導入。

gem install github-pages -v (指定のgithub-pages のバージョン)

例) gem install github-pages -v 175

これでDependency versions に書いてあるgemは全部一括で、しかも記載された通りのバージョンで導入できました。

jekyll new (ディレクトリ名)
rm Gemfile Gemflie.lock

rm Gemfile Gemfile.lock の実行についてはQiita記事を参考にしているのでなんとも言えません。Gemfileは削除してもしなくてもいいが、Gemfileを使う場合は必ず以下の1行目をコメントアウトし、2行目を追加する必要がある。

gem "jekyll", "~> 3.6.2"


gem 'github-pages', group: :jekyll_plugins

 

jekyll s

でローカルでどのようなサイトが出来上がるかを確認することができます。

github pagesに反映

で、とりあえずこのサンプルページをgithubpages上にあげてみます。

ちなみに、 (githubユーザー名).github.io に直接ページを作成するならリポジトリ名を(githubユーザー名).github.ioに設定すればよいですが、そうでないならばブランチ名をgh-pagesに設定することで、<githubユーザー名>.github.io/リポジトリ名に設定することができます。

git init

git add .

git commit -m "Initial commit"

git branch -m master gh-pages

git remote add origin https://github.com/(ユーザー名)/(リポジトリ名).git

git push -u origin gh-pages

見た目がおかしいとき

で、このままだとページの見た目が大きく崩れていると思います。

そこで、以下のStackOverflowのQ&Aを参考にして

stackoverflow.com_config.ymlからbaseurlの設定を見つけ出してリポジトリ名を書き込みます。

また、index.html の css の設定を変更します。

以上の変更をgithub上に反映すれば、ページは綺麗に表示できるようになったと思います。

 

他のテーマの使用

はじめに

他のテーマの使用のためには、Gemfileを編集する必要があります。

数字は一例ですが、以下の記述を

gem "jekyll", "~> 3.6.2"

以下のように変更してください。

# gem "jekyll", "~> 3.6.2" 

gem 'github-pages', group: :jekyll_plugins

また、念の為に libcurl4-openssl-dev を apt-get等で導入してください。

本題

minimal mistakes という、githubが公式で提供しているわけではないテーマを使うためには、

_config.ymlに対して以下の行を追加します。

plugins:
  - jekyll-remote-theme

remote_theme: mmistakes/minimal-mistakes

なお、おそらくminimal mistakes以外にも追加することは可能と思われます。

以下のissue内ではテーマカラーを選択することができないと言われていますが、現在では

minimal_mistakes_skin : "default" # この他 "dark" 等あり

 でちゃんと変更することができてます。

github.comほか、_config.ymlに設定を追加していくことで、minimal mistakesが持つ特徴を反映させることが可能です。

_config.ymlに追加するべきオプション等については、テーマ元となるリポジトリにある_config.ymlを参考にしてください。例えば、minimal mistakesであれば

以下のリポジトリ

github.com(↑テーマのはいったリポジトリ ↓リポジトリのなかでも参照すべきファイル)

minimal-mistakes/_config.yml at master · mmistakes/minimal-mistakes · GitHub

 

jekyll s をローカルで実行された方は気がつくかもしれませんが、github pages上サイトにテーマを反映させるにはわりかし長い時間がかかります(それでも記事一切無しで1分未満、細かく言えば36秒でした)。

 

注意点

ローカルでうまく動かないからと言って凹まないで…設定さえ合っていればリモートで動くから…

 

備忘録

Minimal Mistakesというテーマを気に入ったので、このテーマを利用します。

 

以下の手順1, 3の詳細はここ見ればOK

Adding a Jekyll theme to your GitHub Pages site with the Jekyll Theme Chooser - User Documentation

 

 githubpagesの導入

1. githubに登録したら、以下の手順に従います

pages.github.com

github側では既定のデザインテーマが用意されているのでそっち使ってもOK

この場合はrubyのインストールとか飛ばしてもへーき(手順も英語読めれば余裕)

Adding a Jekyll theme to your GitHub Pages site with the Jekyll Theme Chooser - User Documentation

 

jekyllの導入

2. PC上にrubyをインストールします

オブジェクト指向スクリプト言語 Ruby

(私はUbuntuのrbenvでインストールしました、Windowsでの設定はgemの設定で文句いろいろ言われるので調教を諦めました)

 

3. gemでJekyll, bundleを導入します

(rbenvでruby入れたせいか以下の設定が必要でした)

(ubuntuのaptだと普通にbundleのバージョンが古いし勝手にruby2.3をインストールしようとするのでダメ)

qiita.com

使いたいテーマの導入

4. 導入したいテーマがプリセットなものでない場合は以下を参考に導入する。

たまたま私もminimal mistakesが気に入ったので以下のバイブルを参考にした。

ともかく後の運びはこの記事を読めばわかる。

k11i.bi

以下のダウンロードからzipファイルを引っ張ってきて、

ローカルの<username>.github.io上に展開する

mmistakes.github.io

展開したらGemfileが見つかるはずなので、githubpages用にGemfileを以下のように編集する

source "https://rubygems.org"
gem "github-pages", group: :jekyll_plugins

その後 bundle update, または bundle installを実行

_config.ymlに以下を記述

remote_theme: "mmistakes/minimal-mistakes"

 

たぶんこの時点で

bundle exec jekyll serve

を実行すればローカルでページが生成されて、アドレスがコンソール上に表示される

そのアドレスをブラウザで開けば完成形が見られる。

 

 

Webサイトの設定

_config.ymlを編集する。

ファイルの末尾に以下を追加する

remote_theme : "mmistakes/minimal-mistakes"

以降はここ参照。

mmistakes.github.io

minimal_mistakes_skin : では様々なカラーテーマがあるので選ぶ

locale : "en-US" から "ja-JP"  に変更

title : "サイトのタイトル"

ほかにもsnsとの連携、サイト管理者情報(bio)、アクセス統計をとるシステムとの連携(google analyticsなど)、記事のタグ付け方法、コメント掲載機能(reCHAPTA対応、様々なアカウントと連携可能)

等々、設定はいろいろあるけれども、先ほど示した日本語のページに詳しく書かれているのでそちらを参照してください。

あと、_config.yml についてはそのファイル形式上極めて面倒な形式が決まっているのだけれども、エラーがでた時はその行数と位置を絶対当てにしないで欲しい。

 

あとはおいおいwikiを追っていけばわかる

RC直列回路

はじめに

以下のサイトの内容を実際に実験した結果をまとめたものです

Introduction to RC Circuits [Analog Devices Wiki]

回路図等の図は上記を参照願います

 

使用機器

www.analog.com

www.analog.com

実験結果

RC直列回路(@50Hz)

f:id:heruwakame:20180218193050p:plain

 

RC直列回路(@500Hz)

f:id:heruwakame:20180218193118p:plain

 

RC直列回路(@1000Hz)

f:id:heruwakame:20180218193150p:plain

 

RC直列回路(@1500Hz)

f:id:heruwakame:20180218193211p:plain

 

結論

周波数が高くなると明らかに振幅が小さくなっていることがわかります

測定結果を出力して周波数による振幅比の変化をグラフで表示しても良かったんですが、どうもExport Data機能が完全に死んでいるらしいので難しいですね。ソフトウェアを管理者権限で動かしたら保存できるのかな?

分圧・分流の法則

はじめに

以下のサイトの内容を実際に実験した結果をまとめたものです

M1K Basics and Voltage/Current Dividers [Analog Devices Wiki]

回路図等の図は上記を参照願います

 

使用機器

www.analog.com

www.analog.com

実験結果

分圧回路

定電圧源

f:id:heruwakame:20180218185755p:plain

電圧実測値:\(2.9221 {\rm V}\)

電圧理論値:\(V=5.0\times\frac{1.5}{1.0+1.5}=3.0 {\rm V}\)

 

正弦波電圧源(交流ではない)

f:id:heruwakame:20180218185816p:plain

 

電圧理論値-最大値:\(V_{\rm max}=4.5\times\frac{1.5}{1.0+1.5}=2.7 {\rm V}\)

電圧理論値-最小値:\(V_{\rm min}=0.5\times\frac{1.5}{1.0+1.5}=0.3 {\rm V}\)

電圧実験値:理論値とだいたい一緒(細かい電圧値を見る方法がわからないので…)

 

分流回路

定電流源

f:id:heruwakame:20180218185908p:plain

電圧実測値:\(2.7221 {\rm V}\)

よって\(1.0{\rm k}\Omega\)抵抗を流れる電流値は

電圧理論値:\(V=\frac{2.7221}{1.0}=2.7221 {\rm mA}\)

 

正弦波電流源(交流ではない)

f:id:heruwakame:20180218185920p:plain

 

何が起きたのかよくわからない。計算値と合わない。