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は終わっているのかなぁ、という気がする。
いろいろ勉強させてもらったので残念です。

リュックサックに2リットルのペットボトルが何本入るか

筋トレをやるのにリュックをウエイト代わりにする、というアイデアがあります。

リュックサックは30Lとか書いてあるけどこれは容量であって、30リットルの水やウエイトが入るわけではない。
ネットで検索すると、ボックスタイプのノースフェイスの30Lのリュックで2Lのペットボトルが6本入ったというのを誰かが書いていました。2Lのペットボトルはそれ以上入らないけど、まだ余裕はある、とのことでした。

我が家にファスナーがこわれた30-34Lのファウデ(vaude)のリュックが捨てずにあったので実験してみました。

まず縦に8本入りました。
その上に横に一本。 両脇のポケットに1本ずつ。 合計11本、22kg入りました。

いつもダンベルやバーベルで40kgくらい持ち上げているので22kgは大したことない、と思ったのですが、リュックで22kgは相当重い。
これでスクワットを20回やって死にかけました。
荷重が腰の上に来るので、背骨には楽ですが、下半身、大臀筋につらい。
筋肉痛で歩けない。

以上

Ubuntu 18.04でAndroid StudioとSDK

えっと、UbuntuAndroidスマホ)の開発ができるのか、と思って調べたらAndroid Studioが動くらしい。ということでやりはじめたらいろいろトラブルがあってそれでもSDKエミュレーター)も含めて環境ができたみたいなのでとりあえずご報告。

本来はどんなトラブルがあってどんなふうに解決したのかを書きたいのですが、よくわからないまま進んでいるのでいまのところ出来た、ということだけ。
追記でなにか書くかもしれない。

わたしの経験では誰かが出来た、と書いてくれているだけでどんなに助けになるか(笑)ということもあるのでお許し下さい。

とりあえず、プロンプトで

android-studio

とタイプしてリターンを押すと、

Command 'android-studio' not found, but can be installed with:
sudo snap install android-studio

となって、なにこれ。snapってなに。

sudo snap install android-studio

とすると、今度は

sudo snap install android-studio --classic

とせよ、と叱られる。

まあ、この辺が序の口でいろいろありますので、続きはまたいつか。

プログラミング言語別四則演算+剰余べき乗+整数割り算

以前、プログラミング言語別四則演算+剰余べき乗というのを書いたのですが、それに整数割り算を付け加えてみました。

Ruby => + - * / % ** 整数割り算はそのまま 9 / 4 -> 2  
C => + - * / % pow(x,y) 整数割り算はそのまま 9 / 4  -> 2  
Python3 => + - * / % **(or pow(x, y)) 整数割り算は //  
Java => + - * / % Math.pow(x, y) 整数割り算はそのまま 9 / 4 -> 2  
J(プログラミング言語) => + - * % |~ ^ 整数割り算はfloor(<.)を使う  
R => + - * / %% ^  整数割り算はfloor()を使う  
Scala => + - * / % Math.pow(x, y) 整数割り算はそのまま 9 / 4 -> 2  
Groovy => + - * / % **(or Math.pow(x, y)) 整数割り算はintdiv()を使う  
PHP => + - *\ / % **(or pow(x, y)) 整数割り算はintdiv()を使う  
Perl => + - * / % **(or pow(x, y)) 整数割り算はint()を使う  
JavaScript => + - * / % Math.pow(x, y) 整数割り算はMath.floor()を使う  
Lisp(CLisp) => + - * / mod expt 整数割り算はfloorを使う  
Scheme(Racket) => + - * / modulo expt 整数割り算はfloorを使う  
Go => + - * / % math.Pow(x, y) 整数割り算はそのまま 9 / 4 -> 2  
Basic => + - * / mod ^ 整数割り算はint()を使う  
Haskell => + - * / mod ^ 整数割り算は divを使う div 9  4 -> 2  

python2.7とpython3の四則演算の違い "/" について

python2では 9 / 4  -> 2  
python3では 9 / 4 -> 2.25  

なるほどね。