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がわからないだけでなく、そもそもの問題が何度読んでもわからないのが多かったけど、テストケースがついているのと、今回解答も載せたので、なんとなくわかるのがいい。テストケースだけではわからなくても文章でわかったり、プログラムを読んでわかったりすることもありますよね。

git cloneできない(解決)

何台かあるうちの一台のUbuntu 18.04マシンで、git cloneができないという事態が発生しました。

~$ git clone https://github.com/syl20bnr/spacemacs.git
Cloning into 'spacemacs'...
ssh: Could not resolve hostname github: Name or service not known
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

そんな馬鹿な、といろいろ調べたのですが解決しないでいたところ、ひょっとしてと思って、

https

http

に書き直したら問題なく、git cloneできました。

なぜだろう。

Google Home でスケジュールが聞けない

Google Homeで今日の予定は? と聞くと、

「3件入っています。最初のは午前7時からで、・・・」

とか言ってくれるのがとても便利だったのですが、先月くらいからカレンダーに予定を入れているのに聞けなくなってしまいました。

すいません、わかりません。
とか、
お役に立てそうにありません。
予定を見つけられませんでした。
とか返事をします。

いろいろやってみるとパソコンのChromeに入っているGoogle Calendarスマホに入っているGoogle Calendarは同期が取れているのに、それが見つけられないでいるみたいです。
メールやフォトは同期が取れているので不思議なのですが、最終的に解決しませんでした。

ところが!!!

Gmailのアドレスをもう一つ作成して、スマホをそれにして、Google Homeをリセットしたところ、そのアドレスの予定を読み上げてくれる。
とりあえず、ちょっとめんどうだけど、使えています。
パソコンのGoogl Chromeでアイコンをクリックするだけで切り替えられるのではじめ思ったほどめんどうではないです。

以上

クイズ 連分数

PythonのSymPyのネットにあるチュートリアルを読んでいたら、連分数のクイズがありました。

連分数とは分数の中に分数があるような以下のような形の分数です。

from sympy import *
init_printing()
x,y,z = symbols('x y z')

def list_to_frac(l):
    expr = Integer(0)
    for i in reversed(l[1:]):
        expr += i
        expr = 1 / expr
    return l[0] + expr
frac = list_to_frac([x,y,z])
frac

$$x + \frac{1}{y + \frac{1}{z}}$$

一般的な形としては添字付きの変数であらわします。

syms = symbols('a0:5')
syms

$$\left ( a_{0}, \quad a_{1}, \quad a_{2}, \quad a_{3}, \quad a_{4}\right )$$

a0, a1, a2, a3, a4 = syms

frac = list_to_frac(syms)
frac

$$a_{0} + \frac{1}{a_{1} + \frac{1}{a_{2} + \frac{1}{a_{3} + \frac{1}{a_{4}}}}}$$

さてこれを通分すると次のようになります。

frac=cancel(frac)
frac

$$\frac{a_{0} a_{1} a_{2} a_{3} a_{4} + a_{0} a_{1} a_{2} + a_{0} a_{1} a_{4} + a_{0} a_{3} a_{4} + a_{0} + a_{2} a_{3} a_{4} + a_{2} + a_{4}}{a_{1} a_{2} a_{3} a_{4} + a_{1} a_{2} + a_{1} a_{4} + a_{3} a_{4} + 1}$$

で問題は、変数をランダムに混ぜて、cancelされた式から元の連分数をつくれ、というものです。

import random
l = list(symbols('a0:5'))
random.shuffle(l)
orig_frac = frac = cancel(list_to_frac(l))
del l

ここでlを求めるわけですが、先に答えを見たりしないようにご丁寧にlを消去しています。
解いたあと、正解かどうかはorig_fracと、求めたlでcancel(list_to_frac(l))したものを比べれば確認できます。

frac

$$\frac{a_{0} a_{1} a_{2} a_{3} a_{4} + a_{0} a_{1} a_{3} + a_{0} a_{2} a_{4} + a_{0} + a_{1} a_{2} a_{4} + a_{1} a_{3} a_{4} + a_{1} + a_{4}}{a_{0} a_{2} a_{3} a_{4} + a_{0} a_{3} + a_{2} a_{4} + a_{3} a_{4} + 1}$$

l=[]
frac = apart(frac, a1)
frac

$$a_{1} + \frac{a_{0} a_{2} a_{4} + a_{0} + a_{4}}{a_{0} a_{2} a_{3} a_{4} + a_{0} a_{3} + a_{2} a_{4} + a_{3} a_{4} + 1}$$

l.append(a1)
frac = 1/(frac - a1)
frac

$$\frac{1}{a_{0} a_{2} a_{4} + a_{0} + a_{4}} \left(a_{0} a_{2} a_{3} a_{4} + a_{0} a_{3} + a_{2} a_{4} + a_{3} a_{4} + 1\right)$$

frac = apart(frac, a3)
frac

$$a_{3} + \frac{a_{2} a_{4} + 1}{a_{0} a_{2} a_{4} + a_{0} + a_{4}}$$

l.append(a3)
frac = 1/(frac - a3)
frac

$$\frac{a_{0} a_{2} a_{4} + a_{0} + a_{4}}{a_{2} a_{4} + 1}$$

frac = apart(frac, a0)
frac

$$a_{0} + \frac{a_{4}}{a_{2} a_{4} + 1}$$

l.append(a0)
frac = 1/(frac - a0)
frac

$$\frac{1}{a_{4}} \left(a_{2} a_{4} + 1\right)$$

frac = apart(frac, a2)
frac

$$a_{2} + \frac{1}{a_{4}}$$

l.append(a2)
frac = 1/(frac - a2)
frac

$$a_{4}$$

frac = apart(frac, a4)
frac

$$a_{4}$$

l.append(a4)
list_to_frac(l)

$$a_{1} + \frac{1}{a_{3} + \frac{1}{a_{0} + \frac{1}{a_{2} + \frac{1}{a_{4}}}}}$$

l

$$\left [ a_{1}, \quad a_{3}, \quad a_{0}, \quad a_{2}, \quad a_{4}\right ]$$

orig_frac

$$\frac{a_{0} a_{1} a_{2} a_{3} a_{4} + a_{0} a_{1} a_{3} + a_{0} a_{2} a_{4} + a_{0} + a_{1} a_{2} a_{4} + a_{1} a_{3} a_{4} + a_{1} + a_{4}}{a_{0} a_{2} a_{3} a_{4} + a_{0} a_{3} + a_{2} a_{4} + a_{3} a_{4} + 1}$$

cancel(list_to_frac(l))

$$\frac{a_{0} a_{1} a_{2} a_{3} a_{4} + a_{0} a_{1} a_{3} + a_{0} a_{2} a_{4} + a_{0} + a_{1} a_{2} a_{4} + a_{1} a_{3} a_{4} + a_{1} + a_{4}}{a_{0} a_{2} a_{3} a_{4} + a_{0} a_{3} + a_{2} a_{4} + a_{3} a_{4} + 1}$$

AnacondaとSageMathとJupyter

PythonやJupyterをインストールするのにAnacondaを使うと思いますが、するとSageMathが使えなくなります。問題は二つあって、

1.SageMathはPython2.7なのに対し、AnacondaはPython3である。

2.Anacondaと両立させるにはSageMathをローカルにインストールする必要があるが、sudo apt installではローカルインストールにならない。

この問題を解決するために以下の手順でSageMathをローカル・インストールします。

1.インストールの間、PATHからanaconda3/binを削除する。
echo $PATH > newpath.txt
newpath.txtを編集して、export PATH='newpath....'とする。
source newpath.txt
echo $PATH でanaconda3/binがないことを確認する。

2.http://www.sagemath.org/download-source.htmlからsage-8.3.tar.gzをダウンロードし、$HOMEに展開すると、sage-8.3というフォルダーができている。

3.環境を整える。自分の場合全部最新バージョンでした。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install binutils gcc g++ make tar git openssl libssl-dev
sudo apt-get install gfortran m4 perl build-essential gfortran sudo apt-get install imagemagick texlive dvipng

3.インストールする。4,5時間かかると思う。
cd sage-8.3
make

4.起動について
$HOME/sage-8.3/sage -n jupyter
で起動する。これでsageのnotebookが使える。
普通のjupyterを使う時はjupyter-notebookで起動する。

sageでつくったnotebookを普通のjupyterで開いたり、逆をするとnotebookが壊れて悲惨なことになるので注意する。

近い将来いろいろ解決すると思うのですが、いまのところこれで動いています。

環境は、Ubuntu 18.04、SageMath 8.3、conda 4.5。

質問: Ubuntu 18.04でSageMath

えっと、以下の記事はその後解決したので、別の記事にしてまた書きます。

基本的にUbuntu 18.04やSageMathがいけないのではなくて、AnacondaとSageMathが両立しないのが問題みたいで、解決方法も考えました。


質問: Ubuntu 18.04になってSageMathが動かないのですが、だれか動いている人いますか。

Jupyterがあるからいいじゃん、という答えはおいといて。

18.04では

sudo apt install sagemath

とするのが正しいインストール方法みたいなのですが、これでsagemathのバージョン8.1がインストールされるのですが、起動しません。

SageMathのホームページでダウンロードのメニューでは

sage-8.3-Ubuntu_16.04-x86_64.tar.bz2

というのが最新でsageは8.3と最新になっているけどUbuntuが16.04で17.04にすらなっていない。
ダウンロードして、解凍して、起動しようとするとエラーになります。

追記:
時間ができたらソースからmakeしてみようと思います。

追記:
ソースからのmakeはpatch-2.7.5がダメというエラーになります。ソースはsage8.3と8.0でやってみました。どちらも同じエラーになります。

追記:
conda install -c conda-forge sage
でインストールしてみました。インストールは終了しますが、起動ができない。環境変数SAGE_ROOTとかセットしろと言われるのでセットして、起動できるようになっても、起動の途中でエラーになる。Sage Crash Reportを出せと言われたのでsage-supportチームに送りました。
ということは少しは進んでいるのか。

感想
あちこちにほころびがあって、なんとなくSageMathは終わっているのかなぁ、という気がする。
いろいろ勉強させてもらったので残念です。