2017年7月14日金曜日

雑記


・WindowsとUbuntuの更新について
今、UbuntuをいれているマシンとWindows10をいれているマシンの2台を使ってますがWindowsの更新は面倒ですね。何回も再起動を促されたりしてぐったりです。Ubuntuも再起動が必要なことはあるのですが、Windowsほどしつこくないです。

・Bloggerのアカウント切り替えについて
Gooogleのアカウントを複数使っているのですがBloggerは複数アカウントに対応してないとかで、他のアカウントをサインアウトしないと使えない問題がありました。苦肉の策としてChromeとFireFoxで別アカウントでサインインすれば使えるようになりました。

2017年6月30日金曜日

yutubeでタイトルが切り替わらずに新しい動画が再生される

うーん どうしてなんだろう?
ひとつの動画が再生されて次の動画に移っても、タイトルはそのままで動画だけ次の動画になるので、何をいま再生されているのかよくわからない状況になります。

環境はUbuntu16.04.2上のGoogole Chromeです。

似たような現象が起こっている方いませんかね?

2014年4月20日日曜日

Ubuntu14.04LTS

すっかりご無沙汰です。
日曜になってよくやく時間が出来たのでUbuntu14.04LTSに手元の環境をアップデートしました。正確には土曜の夜中に初めて起きだしてはインストールの質問に答えるという半分寝ながらインストールしました。
linuxカーネルは3.13、gccは4.8.2、clangは3.4になったようです。前回Ubuntu13.10のclang3.3でコンパイルエラーになったプログラムをコンパイルしたところ、警告がひとつ出ただけでコンパイルできました。
 google mapsも正式にリリースされてインタフェースが少し改善されているようですが、そちらはまだ細かく見る時間がないです。というかインタフェースなんて本来、意識しなくてすむならそれに越したことはないのです。でもなくなったり、変更されて初めていろいろ意識するものですね。
 簡単ですが、今回はこの辺で。

2013年11月24日日曜日

Ubuntu 13.10とclang3.3

お久しぶりです。
個人的にいろいろ変化があって、記事を投稿出来る時間がありませんでした。

さて、Ubuntu13.10が10月にリリースされて一応アップデートだけはしていたんですが、
なかなか触る時間もなくて放置していました。

Ubuntu13.10ではgccも4.8.1になって以前書いた記事のように自分で関連ライブラリのビルド後に本体のビルドをして半日が潰れるみたいなことしなくても良くなりました。

clangはデフォルトでは3.2.7が用意されているようでこれも

sudo apt-get install clang

というコマンド一発でインストールOKです。

ところで、Ubuntu13.10にはclang-3.3というパッケージも用意されているようです。
試しにインストールしてみました。

$sudo apt-get remove clang
$sudo apt-get install clang-3.3

自分の作ったとあるソースをコンパイルしてみます。

$ clang++ test.cc -std=c++11 -O3 -o test_cl
In file included from test.cc:1:
In file included from /usr/lib/gcc/i686-linux-gnu/4.8/../../../../include/c++/4.8/algorithm:60:
/usr/lib/gcc/i686-linux-gnu/4.8/../../../../include/c++/4.8/utility:68:10: fatal error:
      'bits/c++config.h' file not found
#include <bits/c++config.h>
         ^
1 error generated.

あれ、clang3.2.7ではコンパイル出来たプログラムがエラーになる!


この現象をググった所、


という所で同じような現象が話されています。
2013年9月頃の投稿ですね。

斜め読みするとどうやら最新のclang3.3では修正された様ですが、Ubuntuが取り込んだものではまだ残っている様ですね。

せっかくパッケージになって楽になったのにこういうのが残っているので自分でコンパイルしなくちゃいけないようです。


2013年8月9日金曜日

フィボナッチ数

とあるテレビドラマでフィボナッチ数について触れられていました。
前の日記にも書きましたが、私は数学の知識があまりなくて、フィボナッチ数とは何か興味を持ちました。

n番目のフィボナッチ数を Fnと表すと
$$F_0 = 0\,$$ $$F_1 = 1 \,$$ $$F_{n+2} = F_n + F_{n+1} \quad (n \ge 0)$$ で定義されるそうです。

この数列はフィボナッチ数列と呼ばれ、
0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,…
と続きます。最初の二項は0,1と定義され、以後どの項もその前の2つの項の和となっています。

フィボナッチ数の一般項が次の様な式で表わされるそうです。

$$\frac{1}{\sqrt{5}} \left\{ \left( \frac{1+\sqrt{5}}{2} \right)^n - \left( \frac{1-\sqrt{5}}{2} \right)^n \right\} = {{\phi^n - (-\phi)^{-n}} \over \sqrt{5}}$$

ただし、$$\phi = \frac{1+\sqrt{5}}{2}$$ ここで数学音痴の私は、 $$(-\frac{1+\sqrt{5}}{2})^{-1}= \frac{-2}{1+\sqrt{5}}= \frac{-2(1-\sqrt{5})}{(1+\sqrt{5})(1-\sqrt{5})}= \frac{-2(1-\sqrt{5})}{-4}= \frac{1-\sqrt{5}}{2} $$ と手計算してみないと上の式が納得出来ませんでした。

そこで次のような簡単なプログラムで計算してみました。
#include<iostream>
#include<cmath>

int main()
{
    const double phi=(1+sqrt(5))/2;

    for (int n=0; n<17; n++)
    {
        double f=(pow(phi,n)-pow(-phi,-n))/sqrt(5);
        std::cout << "F" << n << "=" << f << std::endl;
    }

    return 0;
}

結果は、
F0=0
F1=1
F2=1
F3=2
F4=3
F5=5
F6=8
F7=13
F8=21
F9=34
F10=55
F11=89
F12=144
F13=233
F14=377
F15=610
F16=987
となり意外と誤差もなく綺麗に出力されました。たぶん表示桁数を増やすと誤差が出てくるのではと思いますが。

2013年8月1日木曜日

Libeofficeとか

日記しばらく更新してませんでしたが一応生きています。

UbuntuにもLibreOfficeを入れているんですが、デフォルトで入ってるバージョンを消して、インストールしようとしたら、どうにもならない感じに壊れたみたいで、Ubuntu13.10をクリーンインストールして、12.10の環境から必要なものを移すとかの作業をやってました。
 この際だからデフォルトのシェルはbashを試しに使ってみてます。補完機能がtcshに比べるとすっきり行かない感じがしますが、なんとか使えてます。gccは4.7.3のままです。後2ヶ月するとUbuntu13.10が出てgcc4.8がデフォルトで入ると思うので、そこまでC++11を使ってない僕には4.7.3でもまあ大丈夫です。たまにコンパイル通らないのがありますが、そこは書き換えてみるとかでやってます。
とりあえず、近状報告でした。

2013年7月19日金曜日

clang 3.3 Ubuntu12.10へインストール

前回の日記
clangのインストール
で中断したclangのインストールをまたやってみました。

日本の諺に「急がば回れ」というのがありますが、今回は正攻法にソースをダウンロードしてビルドするという方法で行いました。パッケージのインストールはどこかの誰かがビルドしてくれたものをインストールする訳なのですが、微妙に違っただけでも出来ないことがあるので、やはりこの方法がいいのかなと思いました。

参考にしたのはこのブログです。
[C++11対応記念] clang/LLVMのインストールとGMPを使って円周率ベンチ。

ダウンロードしてきたのはこの3つです。
llvm-3.3.src.tar.gz LLVM source code
cfe-3.3.src.tar.gz Clang source code
compiler-rt-3.3.src.tar.gz Compiler RT source code

適当にllvmというディレクトリを作ってその中にllvm-3.3.src.tar.gzを展開します。
その展開したディレクトリ中のllvm/toolsにcfe-3.3.src.tar.gzを展開します。
このとき
mv cfe-3.3.src clang
とディレクトリ名を変えてやりました。

同じようにprojectsの下にcompiler-rt-3.3.src.tar.gzを展開します。
また
mv compiler-rt-3.3.src compiler-rt
と名前を変えてやりました。

llvm
tools
clang
projects
compiler-rt

という感じです。


以上の準備をしてから次のコマンドを順番にやりました。
./configure --enable-optimized --enable-jit
make
make check
make install
と言っても初心者なので何度か失敗しました。

gccより体感でインストール作業が半分か3分の1の時間で終わった感じです。
gccのコンパイル時には大量のワーニングが出たのですが、clangはそうでもなかったです。

これからgccとclangでコンパイルして比べてみたいと思います。

追記
ビルドに使ったディレクトリのものとインストールされたものでサイズ、時間が何故か違います。

62121304  7月 19 14:00 ~/llvm/llvm-3.3.src/Release+Asserts/bin/clang
51831756  7月 19 15:10 /usr/local/bin/clang

2013年7月17日水曜日

clangのインストール

Ubuntu12.10が手元の環境なんですが、これがLTSでない影響があるみたいです。
clangをインストールしようとしたいのですが、ソースからコンパイルするのはあまりにも時間がかかるし出来たら避けたいです。

UbuntuにCLANGをインストールする

これが一番簡単な方法なのでしょうが、これインストール出来るclangはバージョンがやや古い様です。

%sudo apt-get install clang
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libgc1c2 linux-headers-3.5.0-17 linux-headers-3.5.0-17-generic
これを削除するには 'apt-get autoremove' を利用してください。
以下の特別パッケージがインストールされます:
  binfmt-support cpp-4.6 g++-4.6 gcc-4.6 gcc-4.6-base libclang-common-dev libffi-dev libllvm3.0
  libstdc++6-4.6-dev llvm-3.0 llvm-3.0-dev llvm-3.0-runtime
提案パッケージ:
  gcc-4.6-locales g++-4.6-multilib gcc-4.6-doc libstdc++6-4.6-dbg gcc-4.6-multilib
  libmudflap0-4.6-dev libgcc1-dbg libgomp1-dbg libquadmath0-dbg libmudflap0-dbg binutils-gold
  libstdc++6-4.6-doc llvm-3.0-doc
以下のパッケージが新たにインストールされます:
  binfmt-support clang cpp-4.6 g++-4.6 gcc-4.6 gcc-4.6-base libclang-common-dev libffi-dev
  libllvm3.0 libstdc++6-4.6-dev llvm-3.0 llvm-3.0-dev llvm-3.0-runtime
アップグレード: 0 個、新規インストール: 13 個、 削除: 0 個、保留: 407 個。
48.0 MB のアーカイブを取得する必要があります。
この操作後に追加で 134 MB のディスク容量が消費されます。
続行しますか [Y/n]? n
中断しました。

gcc4.8.1がはいった環境にいまさらgcc4.6とclang3.0を入れるのもどうかと思い、インストールを中断しました。

Ubuntu 12.04LTSに clang 3.3インストール

sudo apt-get install clang-3.3 clang-3.3-doc libclang
-common-dev libclang-dev libclang1 libclang1-dbg libllvm-3.3-ocaml-dev libllvm3.3 libllvm3.3-dbg lld
b-3.3 llvm-3.3 llvm-3.3-dev llvm-3.3-doc llvm-3.3-examples llvm-3.3-runtime
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 clang-3.3 : 依存: libclang-common-dev (= 1:3.3~svn181304-1~exp1) しかし、1:3.4~svn182727-1~exp1 は インストールされようとしています
 libclang-common-dev : 依存: libllvm3.4 (= 1:3.4~svn182727-1~exp1) しかし、1:3.4~svn186465-1~exp1 はインストールされようとしています
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。


やはりclang3.3を入れたいところなのですが、Ubuntu12.10と12.04の違いなのかエラーとなり入れられませんでした。

12.04を作り直すのもものすごく手間がかかるし、今回はインストールは中断しました。
はやく簡単にインストール出来るようにならないかなー。

2013年7月13日土曜日

ホリエモンとGoogle日本語入力

この記事をみて興味を持ったのでちょっと調べてみました。

第9回 クラウド時代の日本語入力システム - ホリエモンのコレいいかも!

 これ、使ってみるとわかるがすごく便利。グーグルでよく検索される文字などをクラウド上の辞書データでアップデートしており、最近出てきた新しい言葉でも変換候補として表示されるなど、思った以上に使い勝手がいいのである。
~中略~
 スマホの操作に常日頃から慣れてしまい、予測変換やクラウド辞書などの利便性がないと生きていけなくなっている自分に気付いた。こういうのが当たり前になってくると、クラウドにつながっていないのに日本語入力させるガジェットはクソだなーとまで思ってしまうねぇ……
このコミックに書いてある内容によると、

・Google日本語入力の辞書データは検索エンジンそのものにバイナリデータとして入っている。
・Google日本語入力の動作はWebサーバにアクセスせずにローカルで完結している。
・Google日本語入力の辞書データはGoogle検索で得られたindexから作成されている。
・Google日本語入力は自動的に検索エンジンのアップデートを行なっている。

ということが読み取れました。


別のページに

・クラウド手書き入力は Google のサーバと連携して手書き文字を認識します。

と記述はありますが、クラウド上の辞書データ~という記述は少々誤解を与えてしまう記述じゃないかなと思いました。この日記がホリエモン本人が書いているのかはわかりませんが。

なお、わたしはGoogleの回し者でもなんでもないので、この解釈に誤解があるかもしれません。この日記の他のページを見ていただくと分かる通り、特にGoogle賛美した日記を書いている訳でもありませんので。

2013年7月7日日曜日

どのUNIXシェルを使ってますか?

今日も出かけないといけないので、ごく短い記事を書きます。
皆さん、Unix LikeのOSを使っている時にどのシェルを使ってますか?
私はずっとcshを使ってましたが、最近tcshに置き換えました。
でもtcshってスクリプトには向いていなくて、処理が遅いそうです。
まあスクリプト内ではkshとかを指定されてるので問題ないですけどね。

とあるサーバ上でwコマンドでどのシェルを使っているかを見たところ、

bash  17人
ksh    18人
ksh93 1人
tcsh   5人
zsh    4人

bashが人気の様ですね。でもkshが18人もいたことにも少し驚きました。
また帰宅したら記事を追加したいと思います。
それでは。

私個人としてはもともとcshから使い始めたので、設定ファイル等がcsh用の物があり、わざわざほかのシェルに乗り換えるほどのことはないかなと思っています。もともとシェルスクリプトは使わないほうですし、cshが遅いと言っても最近のコンピュータでストレスを感じるほどではないと思います。

でもbashは試しに使ってみると、ヒストリ機能はtcshと同じような使い勝手だし、それほど不便は感じませんでした。zshはなんか最初にメニューが出た来た時点でやめました。ksh系はスプリプトが得意なシェルですので、やっぱりできる人は使っているみたいなイメージはあります。上の例であげたのでもtcshだけcsh系ですしそういう意味ではマイナーなのかな。