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系ですしそういう意味ではマイナーなのかな。




2013年7月3日水曜日

gcc4.8.1

先週の事になるのですが、手元のVmware上のUbuntu12.10にgcc4.8.1を入れてみました。
まずUbuntuソフトウエアセンターでgccがあるか確認しました。


現在インストール済み(4.7.2)という表示です。
このUbuntuをVM上にインストールしたときに入れたままです。

次にソフトウェアパッケージはないか検索してみました。
4.7はある様ですが、4.8.1はまだ無い様ですね。

しょうがないのでgccをダウンロードしてコンパイルすることにします。
Googleで"gcc4.8.1 Linux"とかで検索してみると以下のブログ記事が参考になりました。

さくら VPS 上に gcc4.8 をインストールする方法

ほぼこの記事どおりの手順で進めたのですが、いくつかインストールされていないものがありました。
sudo apt-get install bash
sudo apt-get install autogen
sudo apt-get install runtest
sudo apt-get install dejagnu

もしかすると他にも入れたかもしれませんが、コマンド履歴が残ってなくて、
わかっているのでは上のインストールをしました。
VM上でわたしのホストマシンもそんなにスペック良くないので丸1日くらい時間かかったと思います。

最後に確認のため適当なサンプルをコンパイルしてみました。

#include <iostream>
#include <string>
#include <vector>

using Words = std::vector<std::string>;

std::ostream& operator<<(std::ostream& os, const Words & words)
{
    for (const auto & word : words)
    {
        os << word << " ";
    }
    return os;
}

int main()
{
    Words words = { "Hello", "from", "GCC", __VERSION__, "!" };  
    std::cout << words << std::endl;
}

g++ hello.cc -o hello -std=c++11
 ./hello
Hello from GCC 4.8.1 !

うまくインストール出来た様です。

2013年6月28日金曜日

新しいgooglemaps(続々編)

・45゜表示がなくなった。
 古いマップでは対応していたのに新しいGooglemapsでは表示できない。
古いマップで45゜で表示した例

新しいgooglemapsではまだ45゜で表示出来ない。

もっともこれは私のPCがライトモードで表示しているせいかもしれませんが、古いGooglemapsでは出来たことを新しいGooglemapsで出ないのは不便です。

・短縮URLのボタンが見当たらない
 上の古いGoogleMapsで赤い□で囲んだ短縮URLのボタンが新しいGooglemapsでは見当たりません。この機能は便利だったので早めに対応して欲しいです。

(新旧Googlemaps共通)
 小学校の名前の表示がおかしい。
Googlemapsの新旧どちらでも確認したのですが、小学校等の表示がその小学校を管轄している教育委員会の表示になっている場合があります。地図の縮尺を変えると◯◯教育委員会◯◯小学校等となっています。この地図の情報はZENRINが提供している様ですが、同じようにZENRINが提供している他のオンライン地図ではこの様な表示にはなっていません。これはわたしの勝手な想像なのですが、ZENRINから受け取った地図データをGooglemaps上のデータして加工する過程で何らかの手違いがあってこうなったのではないかと思われます。

新しいgooglemapsで小学校の表示がおかしい例

おなじZENRINからデータ提供を受けているgooの地図では普通の表示になっています。

Googlemaps使いやすいマップだと思いますが、まだまだ完成度が低いと言わざるをえないとおもいます。
なお投稿時に素人である私がわかる限りで書いていますので、解決策等あるかもしれませんが、それについては一切責任を追わない事を最後に書いておきます。

2013年6月21日金曜日

新しいgooglemaps(続編)

前回、いろいろ注文をつけた新しいgooglemapsですが、諦めずに使ってみました。

インドアmapに新しいgooglemapsは現時点では対応していないようです。


以前のgooglemapsに切り替えると表示されます。


前回も指摘したヘルプについてですが、どうも不親切な感じがします。

「ヘルプとフィードバック」はマップ画面の時に表示され、「問題の報告」はストリートビューの時に表示されます。その事がどこにも説明されていないからです。ヘルプ自身についてのフィードバックは画面コピーを取れないので送信出来ません。

経路検索は色々工夫のされてる様です。

日本の大都市圏ではこの例のように複数の鉄道会社が同じ区間を、価格、経路、スピードで競争している場所があります。前のgooglemapsでは様々な経路を検索出来たのですが、今回のはいまいちまだ慣れません。慣れがまだ足りないのか、もう少し検証してみる必要があると思います。
例に示したのは大阪、神戸間の大まかには3つの鉄道会社が競合している区間です。


また時間が出来れば試してみたいと思います。

2013年6月18日火曜日

新しいgooglemapsを使ってみました。

新しいgooglemapsを使ってみました。

ごく普通の日本人のユーザの感想を言わせてもらいます。
これは個人の感想であり、この感想によって生じたいかなる損害、不利益についても責任を追わないことを踏まえた上で御覧ください。

結論:まだ完成度が低いです。改善されるまでもう少しまったほうがいいと思います。

・パフォーマンスが悪いです。
 普段使っているコンピュータではそうでもなかったのですが、私のよりいいCPUとGPUのマシンを 借りて使ってみた時に遅さを感じました。

・操作性が私には使いづらいと感じました。
 特に不便だと感じたのはストリートビューの画面の操作性です。従来のストリートビューで出来たカーソルボタンでの操作が出来なくなっています。そのため画面の端に表示される小さなコンパス表示をクリックして方向を変えないといけなくなり大変不便です。カーソルボタンでの操作をすると写真とストリートビューが入り混じった画面の切り替えになっていて、どっちの方向を向いてるのかが直感的じゃなくなっています。
もしかしたら、最近のタッチパネルの端末ではそうでないのかもしれませんが・・・。

・バグが残っています。
 画面右上の
「ヘルプ/ご要望」-「ヘルプ」-「新しい Google マップについて」
を選択した場合のヘルプ画面の表示で不自然な空白が表示されます。

しかもフィードバックの送信でこの画面についてのフィードバックを送ることが出来ません。
地図本体のスクリーンショットは取れても上の画面のスクリーンショットは取れないからです。
もしかするとこの問題は日本語表示の場合だけの問題かもしれませんが、他の言語の場合を確認するつもりはありません。なぜなら私は日本語を母国語とする日本人だからです。
同様に
 「ヘルプ/ご要望」-「ヘルプ」-「ルート検索」
                                         「地図のカスタマイズ」
                                         「画像とストリートビューの概要」
を選択した場合でも、不自然な空白が表示されます。

2013年6月13日木曜日

1から1000

最近stackoverflowというサイトを知りました。
その中であった質問の一つにこういうのがありました。

Task: Print numbers from 1 to 1000 without using any loop or conditional statements. Don't just write the printf() or cout statement 1000 times.
How would you do that using C or C++?
printing-1-to-1000-without-loop-or-conditionals

簡単な日本語に訳すと
「1から1000までの数字をループや条件分岐を使わずに表示しなさい。ただしprintf()やcoutを1000回書くのは無しね。CかC++を使ってあなたならどうする?」
といったところでしょうか。

ループを書けば一瞬で終わる処理もこれらがないと普通じゃないやり方になるようです。
一番投票が多かった回答は、

#include <iostream>
template<int N>
struct NumberGeneration{
  static void out(std::ostream& os)
  {
    NumberGeneration<N-1>::out(os);
    os << N << std::endl;
  }
};
template<>
struct NumberGeneration<1>{
  static void out(std::ostream& os)
  {
    os << 1 << std::endl;
  }
};
int main(){
   NumberGeneration<1000>::out(std::cout);
}

というものでした。
テンプレート関数を使ってひたすら関数を展開していく方法でした。
このプログラムを手元の環境でコンパイルすると

$clang++ 1000.cc -o 1000 
175890 Jun 12 18:55 1000*
     339 Jun 11 03:32 1000.cc

実行形のサイズがかなり大きいですね。

私が気に入ったのは以下の様なサンプルです。(自分で書きなおしたものです。)

#include <iostream>

static int n=1;

class out
{
public:
    out()
    {
        std::cout << n++ << std::endl;
    }
};
int main()
{
    out o[1000];
}

コンストラクターに出力を書いてます。
これなら

$clang++ my1000.cc -o my1000 
6064 Jun 11 08:00 my1000*
  136 Jun 11 07:59 my1000.cc

実行形のサイズも小さくてすみますね。
もちろん、パフォーマンスはこの問題には関係ないとは思いますが・・・。




2013年6月9日日曜日

ハスラー2

普段テレビをあまりみない生活なんですが、今日ふとテレビをつけたら懐かしい映画がやってました。途中から観たのですが、「ハスラー2」という映画でした。ポール・ニューマン、トム・クルーズが主なキャストです。あらすじはなんとなく知ってましたが、いま見てもいいですねー。ポール・ニューマンがとにかく渋いです。

ちょうど撮影された時期のポール・ニューマンは60歳前後だと思うのですが、私の周りにこんな素敵な大人はいませんね。もちろん映画だからというのはあると思いますが・・・。私の周りにいる大人は自分の事しか考えてなく、視野が狭く、思慮も浅い人間ばかりの様に見えます。人生の先輩として尊敬できる大人は残念ながらいませんね。

Chrome 文字化け多すぎる(続編)

以前にも同じトピックCrome の文字化けで書きましたが続編です。
Google プロダクトフォーラムのGoogle Chromeに関しての以下の様なページを見つけました。
エンコードの自動判別を付けて欲しい
やはり私と同じような要望を持っている方はいる様です。

今回はとあるページを例にして見てみます。

http://www.mnet.ne.jp/~tnomura/

このページを表示させると最初文字化けしました。
そのときのChromeの設定は日本語(ISO-2022-JP)で自動検出にチェックがついた状態です。

そこでこのページのソースを見ると

<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<TITLE>I love CUI</TITLE></HEAD>

きちんとutf-8を指定しているようです。

ここでUTF-8を指定するともちろん正常に動作しますが、ここでは別の操作を仕方をしてみます。エンコードの自動検出のチェックを1回外して、再度チェックをします。すると正常にUTF8が選択された状態になってページも文字化けされずに表示されます。

Chromeはユーザの指定のエンコードをまず優先して、自動検出は最初の表示の時にはうまく動作しないのではないか?

という疑問が残ります。どうなんだろう?中途半端ですいません。でもフィードバックも簡単にできず個人のブログで書いても無視されるのかなー?ちなみにこのブログはGoogleの運営しているBloggerです。部署とか違うだろうけど^^;

2013年6月7日金曜日

摂氏と華氏

日本はというか僕の部屋は既に夏です。
毎日30℃を超す暑さです。

華氏を使う人達にはなかなか伝えにくいですが、華氏と摂氏の関係は、華氏をF摂氏をCとすると

F=9/5(C)+32

だそうです。今は摂氏が国際単位系(SI)なんですが、慣れたものをなかなかは変えられないようでまだ華氏を使っている国もあるそうです。

だから上の式をプログラムすると本当にシンプルなものになるはずが…。


なんだかややこしくなりました。 テクニックもないのにクラスなんか作っていじってたら温度クラスからセルシウスとファーレンハイトを派生させて・・・ 最後の
int main()
{
    celsius    c;
    fahrenheit f;
    for(c.set(25.0);c.val()<37.0;c.add(0.5))
    {
        f.transform(c);
        std::cout<<c<<"\t\t"<<f<<"\n";
    }
    return 0;
}
の部分だけ簡単にしたかったのですが。

ちなみに結果は以下の様になり30℃は華氏で86度ですね。
25C    77F
25.5C  77.9F
26C    78.8F
26.5C  79.7F
27C    80.6F
27.5C  81.5F
28C    82.4F
28.5C  83.3F
29C    84.2F
29.5C  85.1F
30C    86F
30.5C  86.9F
31C    87.8F
31.5C  88.7F
32C    89.6F
32.5C  90.5F
33C    91.4F
33.5C  92.3F
34C    93.2F
34.5C  94.1F
35C    95F
35.5C  95.9F
36C    96.8F
36.5C  97.7F

2013年6月1日土曜日

libereofficeを更新しました

新しいバージョンが出てもすこし様子をみようと思っていたけど、速くなったという情報もあり今日更新しました。今回インストールしたのはlibereoffice4.03日本語版です。面倒だったのは以前のバージョンのlibereofficeが新しいバージョンをインストールしても残っていたこと。もうひとつlibereofficeにすると以前のOpenOfficeで作った表が崩れたので残しておいたOpenOfficeも残っていて、同じオフィスソフトが3種類もある状態になったことです。手動でOpenOffice、旧バージョンのlibereofficeをそれぞれアンインストールしました。そのままではファイルが関連付けられていなかったのでこれも手動で関連付けてようやく最新バージョンのlibereofficeだけの状態になりました。簡単に使ったところ表も崩れないし、やや速度が速くなった印象です。私の場合マイクロソフトのファイルは滅多に使わないので、どのバージョンでも良かったのですが。とりあえずこのバージョンで使って見ようと思います。

2013年5月31日金曜日

疲れてます

体が疲れて、何も出来ない。
ウェブブラウズさえ読んでいる最中に寝てしまう始末。
時間がないのにたまのオフもこう疲れていては何も出来ない。

2013年5月29日水曜日

図書館

普段行かない図書館に立ち寄ることがあったので何を見ようと思ってチラッとパソコンコーナを見るとWindows7でした。でもブラウザしか動かない設定になってますしフィルター機能があるので個人のブログ(もちろんこのブログも)は見れないようでした。

次に辞書のコーナーに行ったら英和だけでなくいろんな言語の辞書がありました。辞書も一般家庭では揃えることが出来ない大型の辞書を見るのが楽しいですね。ただ辞書はあまり大切に扱われていないのか、それとも多くの人が触るからなのか、結構傷んでいましたね。

何故か「土佐日記」というものを手にとってみました。。「男もすなる日記(にき)といふものを、女もしてみむとてするなり。それの年の師走の二十日あまり一日(ひとひ)の日の、戌(いぬ)の時に門出す。そのよし、いささかにものに書きつく」。男の人がする日記と言うものを、女である私も書いてみようと思う。それ迄漢文の堅苦しい日記というものから、ひらがなを多く使って日記文学を初めて書いたそうです。


2013年5月26日日曜日

円周率と近似分数

とあるところで355/113が円周率の近似値という話を読みました。 実際に計算してみると3.14159292035…で3.141592まで合っています。 円周率は分数で表せない事が知られていますが、ならばもう少し大きな桁の数字で円周率を近似出来る分数はないのでしょうか? 分数をひたすら計算して近似できるか試してみればいいです。 そういう素朴な疑問でプログラムを作ってみました。

  これを実行すると結果は

   208341/66317:0.000008
    312689/99532:0.999997
    521030/165849:0.000005
    625378/199064:0.999994
    833719/265381:0.000002
    938067/298596:0.999991
   1146408/364913:0.999999
   1354749/431230:0.000008
   1459097/464445:0.999997
   1667438/530762:0.000005
   1771786/563977:0.999994
   1980127/630294:0.000002
   2084475/663509:0.999991
   2188468/696611:0.000010
   2292816/729826:0.999999
   2501157/796143:0.000007
   2605505/829358:0.999996
   2813846/895675:0.000004
   2918194/928890:0.999993
   3126535/995207:0.000001

 となりました。 1146408/364913あたりがいいみたいですね。まあこんな桁数の分数が実用になるのかというとあまりなりませんが。 試しに1146408/364913で検索してみると
Continued Fractions
みたいに同じ事を既にやった人は一杯いるみたいですね。

2013年5月25日土曜日

DMMを支える技術

ウェブブラウズをしてたらこんな事を書いている人がいました。

dmmのエンジニアと話をしてみたいという話 - たごもりすメモ

dmmというのは通販サイトdmm.comとアダルトサイトのdmm.co.jpを運営しているようです。
dmm.co.jpの方が人気がある様です。コンピュータ技術はエロの為に発展してきた側面は否定出来ません。

試しにdmm.co.jpをランキングサイトalexa.comで調べると

日本(jp)では20位のアクセスがあるらしいです。
このdmmのサイトで使われている技術が結構スゴイらしいです。日本語のサイトで運営も日本の会社らしいのですが、技術者はどんな人なのでしょうか?
上のブログで書かれている方は
「ありとあらゆる技術系勉強会でdmmの人というのに会ったことがない。これでもそれなりに広い範囲の勉強会に行っていろんな人と話をしたと思うんだが、dmmの人は本当に会ったことがない。誰に聞いてもまったく会ったことがある人がいない。」
と書かれています。

これは私の勝手な憶測なのですが

1)実は技術者は日本人じゃないし日本にも住んでいない。
  →でも日本語メインなので日本人が商品の情報はメンテしているけど、便利なツールを使うだけでOKなしくみ。

2)技術的な勉強会に出かけても直接サイトとの関係を表明することを禁じられている。
 →会社の守秘義務かなにかで関わっていることをオープンに出来ないのかも。
  こういうことは日本の勉強会で可能なのでしょうか?例えば会社名だけでは直接の関係はわからないかもしれません。

3)勉強会に参加していない。
 →こういう分野の技術は日進月歩です。いくら技術をもった人でもアップデートしないと取り残される気はしますけど。

まあ勝手な想像でしかないので、真実はわかりません。
  



コマンド履歴

unixコマンドのhistoryの出力はシェルによって微妙に変わるらしい。
最近使うシェルをcshからtcshに変えました。
bashとかkshとか使ってる人はunixコマンドが得意そうに見えるけどtcshは便利だけどシェルスクリプトを作るのにはあまり使われないのかな?僕の様な面倒くさがりの人間は↑↓でコマンド履歴がすぐ使えるのが便利なので変えたのです。

history | head とか打つと

   274  20:50   ls -lst
   275  20:50   g ; ; booltest.cc -o booltest
   276  20:51   g++ booltest.cc -o booltest
   277  20:51   ls -lst
   278  20:51   ./booltest
   279  20:52   vim booltest.cc
   280  20:52   ./booltest
   281  20:54   date
   282  20:54   vim booltest.cc
   283  20:54   g++ booltest.cc -o booltest

とか表示されます。この時はbooltest.ccのプログラムを何度も編集してはコンパイルしてたらしいです。275はお恥ずかしい事にタイプミスまでしてます。

よく使うコマンド履歴はgoogleさんで調べると

history | awk '{print \$3}' | sort | uniq -c | sort -rn | head -n 10

となるらしいです。print $3の箇所は上の例の時刻が表示されない場合は$2とかになります。
これを実行すると

 120 ls
  87 vim
  37 g++
  32 cd
  23 make
  16 vi
  12 which
  11 cls
  10 top10
   9 time

うーん、典型的な初心者ですかね。lsをものすごく使ってます。clsをみてオヤッと思われるかもしれませんがこれはclearのaliasです。top10は上のコマンドをシェルスクリプトに書いて10回も試したのが出ています。

2013年5月24日金曜日

無料で1TBのストレージ
http://www.flickr.com/

うーん、こういう無料ストレージ使ったことないですね。
Google Driveもよくわからないまま放置してるし…。
Flickrは画像とかを保存するのが主な用途みたいですね。

無料で容量1TBに増えた「Flickr」にどんなファイルでも保存できるようにするストレージエンジン「Filr」


2013年5月23日木曜日

NETBSD 6.1に関連して

NETBSD6.1がリリースされたそうです。現地時間2013年5月18日でたぶん日本時間では19日になるのかな。

日本語のニュースとして報じたサイトは

http://sourceforge.jp/magazine/13/05/21/191000
2013年5月21日18:15

http://news.mynavi.jp/news/2013/05/22/045/index.html
2013/05/22(時刻不明)

があるようです。


も5月21日1時(UTCだから日本時間で言うと10:00くらい)

http://en.wikipedia.org/wiki/NetBSD
は5月19日の19:52これもUTCだから日本時間で5月20日の4:52くらいに変わってます。


ところでJapan NetBSD Users' Group
http://www.jp.netbsd.org/ja/JP/index.html
のページはまだ更新ありません。
有志の方がボランティアで翻訳してるのでまだなのかな?
お仕事忙しいのかな?

なんて想像してみたりしてます。
マイナーなOSだからとか言うのはなしで…。

2013年5月21日火曜日

bloggerの事なんもわからずはじめたのでメモ
ここに登録するとトラックバック出来るようになるらしい^^;

カテゴリーはプログラミングにしたけどプログラミングの要素少ないですね。
あまりわかってない初心者だけど、いろいろ更新して行きたいです。

ソース表示のテスト


とりあえずソース表示するサンプルを作ってみました。言語はC++11指定しないとコンパイル通らなかった。ソースはどっかから取ってきたのを組み合わせて作ったものです。いわゆるコピペプログラム。UPしてmain()の最後にreturnがなかったのに気がつきました。なくても動くけど。。。他のサービスも試してみようかな。

2013年5月19日日曜日

自動改札機の値段(と私の妄想)

最低賃金についてちょと妄想してみました。
最低賃金は今どのくらいなのかというと
http://www.mhlw.go.jp/seisakunitsuite/bunya/koyou_roudou/roudoukijun/minimumichiran/
を見ると650~850円くらいで全国加重平均というのは749円だそうです。
最低賃金に近い仕事と言えばコンビニの時給とか最低賃金に近いのでしょうか。

ここで一つの妄想をしてみます。ここでは妄想なので最低賃金を750円だとしましょう。自動改札機の賃金は年間いくらになるのかを最低賃金で計算してみます。都市部の路線を除き、大体6時~24時くらいの時間帯で動いているとします。18時間になりますので、

750×18=13500

となります。(仮に18時間を人間がやった場合にも交代勤務でやったとして、超過分とか、深夜分とかの計算は全く考えてません。)自動化改札機は当然、年中無休ですから、年間にすると

13500×365=4927500

となります。しつこいようですが妄想なので概算です。つまり自動改札一台あたり年間約500万円かかる計算になります。

自動改札機の値段は最低でも1台650万円から700万円近くであり、多機能なものになると1台1,000万円から1,500万円を超えるそうです。あと電気代とか経費もかかりますが、人間がやった場合よりはるかに速く処理できてこの値段なのですから妥当なのかもしれません。

最低賃金を上げると最低賃金に近い職種の人達の時給は当然上げないといけません。時給を上げる他の方法としては、賃金が安い海外で生産するか、自動改札機みたいに自動化するなどがあります。最近スーパーなどではセルフレジが増えてきてるようです。スーパーの時給もコンビニと同じで最低賃金に近いとおもいますが、いろいろな理由で自動化されてるのかなと。

以上妄想でした。


2013年5月18日土曜日

Google chromeの文字化け

Google chromeのエンコードエラー多すぎな気がします。
そしてエンコードを手動で指定する方法が面倒です。
menuの階層が深過ぎでいちいち辿るのが面倒なんです。
ツール→エンコード→言語と3段階で選ばないといけないとかもっと簡単にしてくださいよGoogleさん。

ネット上でそのことについて文句を言ってる人あまりいないような気がするけど誰も気にしてないのかな?





2013年5月17日金曜日

chromeで表示した文字列を選択して右クリしてgoogleで「」を検索を行うと以前は日本語(google.co.jp)での検索が出来ていたのに最近英語(google.com)での検索になってしまって不便です。同じ単語をgoogle.co.jpにコピー&ペーストで検索しなおさないといけなく手間がかかります。

その解決策をググってみたら
http://misawa-times.com/ajoboji/2010/04/12/google-chrome%E3%81%A7%E3%80%81%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%83%90%E3%83%BC%E3%81%8B%E3%82%89%E3%81%AE%E6%A4%9C%E7%B4%A2%E7%B5%90%E6%9E%9C%E3%81%8C%E8%8B%B1%E8%AA%9E%E3%81%AB%E3%81%AA/
という有用な情報がありました。

ちなみに上のブログ内で紹介しているADDボタンは既になくなっていて、検索サイト一覧の一番下に入力用のテキストボックが3つ配置されているだけです。chromeはユーザに意識させることなく勝手にバージョンアップしていく仕組みですが、こういうUIも逆に使いづらくなって困ることがあります。

2013年5月16日木曜日

計算して暇つぶし

計算して暇を潰すというのは昔からある方法です。 ただ私は数学的教養がないのでワンパターンになります。 これはラマヌジャンの発見したπの近似式です。
$\pi\simeq \frac{63\left(17+15\sqrt5\right)}{25\left(7+15\sqrt5\right)}=3.1415926538\cdots$
ちょうど関数電卓の精度で計算出来る範囲で小数点以下9桁まであっています。
πの近似式でもう少し精度のいいのは
$\frac{Ln(640320^3+774)}{√163}$
というのがあるそうです。 小数点以下30桁まで合っているそうです。 これはどこから来たのか私は知りません。 知ってる方お教え下さい。

2013年5月15日水曜日

所用で外出してきたら交差点で見た光景がカオスだった。
まず、私の横で自転車に乗ってたおばちゃんが信号が赤になった途端に交差点の対角側に斜めにダッシュしていくし、信号が赤になってもアクセルを踏んで突っ込んでくる車はいるし、もうここは日本だけど、日本じゃないと思うくらいカオス。
春があっという間に終わって夏になってしまった気がします。
ムシムシしてるし室温31℃まで急上昇。

2013年5月14日火曜日

VCも独りぼっち

VC用に作られたC++のソースをgccで動くようにしてみました。
数値計算のライブラリだけどVCって独自に定義されたマクロが多いです。


DWORD
ULONGLONG
DOUBLE
LPCTSTR
BOOL
TCHAR
TRUE
FALSE

とかを置き換えました。

あと関数も
_tprintf()

みたいなのがあってこれも置き換えました。

VCってWindowsのバージョンとか使用してる言語とか変わったりしてもその環境に合わせてコンパイル出来るように独自の定義が多いけどGUI全然使ってないプログラムでさえこんなに置き換えないといけないから、移植するのにすごく手間がかかります。

あとC++も少し古めの文法みたいで素直に通らない箇所が何個かあったのも修正しました。
普段Windowsしか使ってないけどプログラム作る環境としてはいろいろ面倒ですね。。。

独りぼっちの僕へ

家族と一緒に暮らしてるけど独りぼっちです。
稚拙な私ですが、日記を書いてみます。