elm-uiから入るelm入門

ホームページelm-lang.orgにElmのチュートリアル(guide)があってそれはそれはすばらしいので、そこ以外で勉強するのはもったいないので、余計な入門は書かない方がいいのですが、思いついたのでしょうがない。

あとたぶんどんどん仕様が変わっているので他のところのサンプルが全滅しているよね。

だから本家のホームページで勉強しなさい。

と責任のがれをしておいて、

やっぱ本家のサンプルは色がついていなかったり、フォントがいじくってなかったりさびしいよね。

ハローワールドを書いて、すぐ色をつけたいとかセンタリングしたい、というタイプの人はelm-uiから入るという手もある。

絶対おすすめしないけど。

といいながらサンプルを作り始めたので見てみてください。

https://kalz2q.github.io/elm-examples/index002.html

Ubuntuがfreezeして立ち上がらない(解決)

環境 Ubuntu 19.04

いろいろいたずらしているとハードディスクから立ち上がらなくなってクリーンインストールせざるを得ないことが(たまに)あります。

たいがいのことはクラウドにバックアップしてあるのでデータがなくなることはないのですが、それでも不便。すくなくともめんどくさい。

今回以下の手順で解決したので記録しておきます。

ubuntu harddisk won't boot

で検索してヒットしたMakeUseOfというサイトが参考になりました。

まずインストール用のDVDで起動します。

起動したら、インストールには進まず、アクティビティから端末(terminal)を開いて

sudo apt-add-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
boot-repair

で再起動します。

これでいろんなことができるようになるので、あとはご自由に。

こんなことがいつからできるようになってたのだろう。
ずいぶん時間をムダにしてたと思います。

以上

Ubuntuでfrescobaldi(lilypond)でmidiの音がでない(解決)

追記 2019/10/06

以下の記事はとりあえず残しておきますが、

sudo apt install timidity++

で解決するのが普通らしいです。


環境ですが ubuntu 19.04
lilypond 2.18.2
frescobaldi 3.0.0
timidity(timidity++) 2.14.0

久しぶりにlilypondで楽譜を作ろうと思ってインストールしたら音が出ないのであせっていろいろ調べました。

sudo apt install lilypond

sudo apt install frescobaldi

この状態でlilypondもfurescobaldiもちゃんと立ち上がって使えますが音が出ない。

次に

sudo apt install timidity

すると、midiファイル(frescobaldiとlilypondで作ったやつとか)はfresobaldiの環境でないところ(端末)では音が出ます。

timidity test.midi

とか。

次に一旦frescobaldiを閉じて、終了させてから

timidity -iA

としてからもう一度frescobaldiを立ち上げると音がでました。

Menu -> Edit -> Preferences -> MIDI Settings のPlayer Outputが TiMidity port 0に変わっています。
音が鳴らなくて、ここがtimidityになってなかったら間違えています。

さて、毎回timidity -iAしてからfrescobaldiを立ち上げてもいいのですが、デーモンに登録してこれもうまく行ったので書いておきます。

自己責任でよろしくおねがいします。

/etc/systemd/system/timidity.service

というテキストファイルを作って

[Unit]
Description=TiMidity Daemon
After=sound.target

[Service]
ExecStart=/usr/bin/timidity -iA

[Install]
WantedBy=multi-user.target

としてセーブします。

あとは

sudo systemctl daemon-reload
sudo systemctl enable timidity
sudo systemctl start timidity
sudo reboot

で再起動。

frescobaldiのサイト

https://github.com/frescobaldi/frescobaldi/wiki/MIDI-playback-on-Linux

ではtimidityでもいいけどFluidSynth(Qsynth)の方がアクティブに開発が進んでいるのでおすすめとありますが、わたしはtimidityがおすすめです。

fluidsynthでも音がなるようにはなりましたが、手順がもっと多いです。少なくともfrescobaldiのサイトに書いてあるやりかただけでは無理だとおもいます。

以上

追記:
deamonを走らせて、timidityは鳴るけど他の音がでなくなったので

sudo systemctl stop timidity

としたら、普通に戻りました。

Elmおもしろいね

elm-projects

Elmという言語を知りました。

バージョンが0.19でまだまだ環境が整っていないのですが、やたらおもしろい。

発展するといいな。

elm-lang.orgというところにチュートリアルやドキュメントがあります。

おもにそれからのコピペが多いのですが、githubに出来上がったページを載せました。

https://kalz2q.github.io/elm-projects/

htmlにするとgithubはそのままホームページの形で見れるようになったので便利です。

もとのElm言語によるソースも含めすべて、

https://github.com/kalz2q/elm-projects/

にあります。ソースはelm-srcに、htmlはsrcに入れました。

elm make elm-src/hogehoge.elm --output=src/hogehoge.html

というふうにして作っています。

VSCodeキーボード・ショートカット(Linux/Ubuntu)

一般

Ctrl+Shift+P, F1 コマンドパレットを開く
Ctrl+P 任意のファイルに移動(クイックオープン)
Ctrl+Shift+N 新規ウィンドウ
Ctrl+W ウィンドウを閉じる
Ctrl+, ユーザー設定
Ctrl+K Ctrl+S キーボード・ショートカット
Ctrl+Shift+W (または Ctrl+Q) VSCodeを終了する、閉じる Exit

基本編集操作

Ctrl+X 行削除
Ctrl+C 行コピー
Alt+Up/Down 行を上下に動かす
Ctrl+Shift+K 行削除
Ctrl+Enter 行末に改行(カーソルは下に移動)
Ctrl+Shift+Enter 行頭に改行(カーソルは上に移動)
Ctrl+Shift+\ 対応するカッコにカーソル移動
Ctrl+]/Ctrl+[ 行をインデントする
Home/End ファイルの先頭、末尾に移動
Ctrl+Home/End ファイルの先頭、末尾に移動
Ctrl+Up/Down 画面を1行ずつスクロールする
Alt+PgUp/PgDn 画面を1ページずつスクロールする
Ctrl+Shift+[/] 折りたたみ/展開
Ctrl+K Ctrl+[/] 再帰的に折りたたみ/展開
Ctrl+K Ctrl+0 すべて折りたたみ
Ctrl+K Ctrl+J すべて展開
Ctrl+K Ctrl+C 行コメントの追加
Ctrl+K Ctrl+U 行コメントの削除
Ctrl+/ 行コメントの切り替え
Ctrl+Shift+A ブロックコメントの切り替え
Alt+Z 折返しの切り替え
Ctrl+Z アンドゥやり直し元通りにする
Ctrl+Shift+Z リドゥやり直しのやり直し

言語編集

Ctrl+Space 候補表示
Ctrl+Shift+Space パラメーターヒント表示
Ctrl+Shift+I ドキュメントの整形
Ctrl+K Ctrl+F 選択範囲の整形
F12 定義へ移動
Ctrl+Shift+F10 定義を覗く
Ctrl+K F12 定義を横に開く
Ctrl+. クイックフィクス
Shift+F12 すべての参照を表示
F2 シンボルの名前修正
Ctrl+K Ctrl+X 末尾の空白のトリミング
Ctrl+K M 言語モードの変更

マルチカーソルと選択

Alt+Click カーソルの挿入
Shift+Alt+Up/Down カーソルを上下に挿入
Ctrl+U カーソル操作のアンドゥー(元に戻す)
Shift+Alt+I 選択範囲の各行末にカーソルを挿入
Ctrl+L 行選択
Ctrl+Shift+L すべての一致を選択
Ctrl+F2 単語ですべての一致を選択
Shift+Alt+Right 選択範囲を拡大
Shift+Alt+Left 選択範囲を縮小
Shift+Alt+マウスドラッグ 矩形(ボックス)選択

表示

F11 フルスクリーン切り替え
Shift+Alt+0 エディターレイアウトの縦横切り替え
Ctrl+=/- 拡大/縮小
Ctrl+B サイドバー表示の切り替え
Ctrl+Shift+E エクスプローラーを表示/フォーカスの切り替え
Ctrl+Shift+F 検索の表示
Ctrl+Shift+G ソース管理の表示
Ctrl+Shift+D デバッグの表示
Ctrl+Shift+X 拡張機能の表示
Ctrl+Shift+H 複数のファイルで置換
Ctrl+Shift+J 検索の詳細の切り替え
Ctrl+Shift+C 新規のコマンド/ターミナルを開く
Ctrl+K Ctrl+H アウトプットパネルを表示
Ctrl+Shift+V マークダウンプレビューを開く
Ctrl+K V マークダウンプレビューを横に開く
Ctrl+K Z 禅モードに移行(Esc Escで抜ける)

検索と置換

Ctrl+F 検索
Ctrl+H 置換
F3/Shift+F3 次を検索/前を検索
Alt+Enter 検索に合った対象をすべて選択
Ctrl+D 次の検索に合った対象を選択に追加
Ctrl+K Ctrl+D 次の検索に合った対象に選択を移動

ナビゲーション

Ctrl+T すべてのシンボルを表示
Ctrl+G ライン番号へ移動
Ctrl+P ファイルへ移動
Ctrl+Shift+O シンボルへ移動
Ctrl+Shift+M 問題パネルの表示
F8 次のエラーまたは警告へ移動
Shift+F8 前のエラーまたは警告へ移動
Ctrl+Shift+Tab エディターのグループヒストリーを選択
Ctrl+Alt+- 戻る
Ctrl+Shift+- 進む
Ctrl+M Tabによるフォーカスの移動の切り替え

エディター管理

Ctrl+W エディターを閉じる
Ctrl+K F フォルダーを閉じる
Ctrl+\ エディターを分割する
Ctrl+1/2/3 n番目のエディターグループのフォーカスを移動
Ctrl+K Ctrl+Left フォーカスを前のエディターグループに移動
Ctrl+K Ctrl+Right フォーカスを次のエディターグループに移動
Ctrl+Shift+PgUp エディターを左へ移動
Ctrl+Shift+PgDn エディターを右へ移動
Ctrl+K Left アクティブなエディターグループを左(上)へ移動
Ctrl+K Right アクティブなエディターグループを右(下)へ移動

ファイル管理

Ctrl+N 新規ファイル
Ctrl+O ファイルを開く
Ctrl+S 保存
Ctrl+Shift+S 名前をつけて保存
Ctrl+W 閉じる
Ctrl+K Ctrl+W すべて閉じる
Ctrl+Shift+T 閉じたエディターを再度開く
Ctrl+K Enter プレビューモードで開いたファイルを開く
Ctrl+Tab 次のタブを開く
Ctrl+Shift+Tab 前のタブを開く
Ctrl+K P アクティブファイルのパスをコピー
Ctrl+K R アクティブファイルをエクスプローラーで表示
Ctrl+K O 新しいウィンドウでアクティブファイルを開く

デバッグ

F9 ブレークポイントの切り替え
F5 スタート/コンティニュー
F11/Shift+F11 ステップの開始/終了
F10 ステップオーバー
Shift+F5 ストップ
Ctrl+K Ctrl+I ホバーの表示

統合ターミナル

Ctrl+` 統合ターミナルを表示
Ctrl+Shift+` 新しい統合ターミナルを作成
Ctrl+Shift+C 選択対象のコピー
Ctrl+Shift+V アクティブターミナルに貼り付け
Ctrl+Shift+Up/Down スクロールアップ/ダウン
Shift+ PgUp/PgDn ページ単位のスクロールアップ/ダウン
Shift+ Home/End 一番上にスクロール/一番下にスクロール

キーワード: 逆引き, Visual Studio Code, キーバインド, キーバインディング

Googleマップで3D表示ができない(解決 => 未解決)

以下の記事、その後トラブルが発生してますので、やらないほうがいいと思います。
18.04では一見解決したように見えて、その後18.10にアップグレードする際にドライバーとgnome display managerの相性がわるいのか
started gnome display manger
で止まってしまいます。

なんとかして(F6とか)でrecovery modeに入って  
sudo apt-get remove --purge nvidia-*
としてもとに戻りましたが、なかなか大変。

<以下の記事> Ubuntu 18.04でGoogleマップで3D表示ができなくなってNVIDIAのグラフィックドライバーを入れることで解決したので手順を書いておきます。
3D表示とは地図を航空写真にしてコントロールキーを押しながらマウスを動かすと立体的に見えるやつです。Googleマップの「地球」メニューで見える見え方かな。

使っているUbuntuマシンの1台で成功したので、ほかのマシンでやりながらメモを作ります。

まずubuntuの画面の右上の電源ボタンのマークのなかのツール>設定>詳細でグラフィックのところをみるとNVA5とか買いてある。これをGeForce GT 430とか使っているグラフィックに変えるのが目的です。

~$ lspci | grep VGA  
04:00.0 VGA compatible controller: NVIDIA Corporation GT216 [GeForce 210] (rev a2)

おっと古いね。まあいいか。

https://www.nvidia.co.jp/Download/index.aspx?lang=jp

ここからドライバーをダウンロードですが、わたしのこの機械の場合、

製品のタイプ: GeForce  
製品のシリーズ: GeForce 200 Series  
製品ファミリー: GeForce 210  
オペレーティングシステム: Linux 64-bit  
言語: Japanese  

で検索ボタンを押すと

バージョン 340.107

が選ばれたのでダウンロードします。別画面に飛ぶのでそこでもダウンロードを押すとダウンロードされます。

私の場合
ダウンロードディレクトリーに

NVIDIA-Linux-x86_64-340.107.run

という名前でダウンロードされました。拡張子がrunなのでどうやって実行するか別途調べます。chmod +xで実行ファイルにして、sudo ./NVIDIA-Linux-x86_64-340.107.runにするか、sudo sh ./NVIDIA-Linux-x86_64-340.107.runということなのですがどちらでも大丈夫みたいです。

すぐエラーになっていまあるドライバー(Nouveau kernel driver)が邪魔しているのでダメですというエラーになるので、一旦OKするとそのまま続けるか聞かれるので中断します。続けてもいいけどたぶん成功しない。

でいまのドライバーを削除する作業に入るわけですが、これが失敗するとパソコンがこわれそうな作業なので一応自己責任でお願いします。大丈夫だと思うけどね。

エディターで次のファイルを作ります。

sudo vim /etc/modprobe.d/blacklist-nouveau.conf

中身に

blacklist nouveau
options nouveau modeset=0

と書いてセーブします。

sudo update-initramfs -u

成功したら

sudo reboot

すると、グラフィックドライバーがない状態で立ち上がるので、27インチのディスプレイに巨大な文字の画面になるけどびっくりしないで作業を進めます。

そそ、途中でgccがないとか言われるのでgccは事前にインストールしておいて下さい。

Ubuntuにログインしてcd ダウンロードとかして、

sudo sh ./NVIDIA-Linux-x86_64-340.107.run

でドライバーのインストールを続けます。

途中で失敗したけど続けますかとか出て、Are you sure you want to continue? と聞かれるけどデフォルトが

Continue installation

なので大丈夫そうなのでそのまま続けます。ほかにもいろいろ聞かれるけど適当に選んで進めると終了。またsudo rebootすると

グラフィック GeForce 210/PCIe/SSE2

とかになっているし、Googleマップも無事3D表示できました。

めでたし

4Clojure問題の翻訳と解答

Clojureに4Clojure Problemsという問題集のサイトがあって、とてもよくできているので翻訳してみました。

GitHub - kalz2q/4clojure-jp: translation of 4clojure problems in japanese

Markdownで書いて、README.mdにはりつけてあります。

問題はさまざまだけど数学系が多いかな。

解答はいろんな人が書いているのをコピペして、コピペする前に一応テストを走らせたので大丈夫だと思います。

ほんとははてなに貼り付けたかったのですが、ちょっと大きすぎるみたいなのでgithubにしました。

勉強し始めたばかりなのでClojureがわからないだけでなく、そもそもの問題が何度読んでもわからないのが多かったけど、テストケースがついているのと、今回解答も載せたので、なんとなくわかるのがいい。テストケースだけではわからなくても文章でわかったり、プログラムを読んでわかったりすることもありますよね。