« August 2010 | Main | October 2010 »

2010.09.30

Monaがビルドできない><

最新版をgitで持ってきたつもりだけども、上手くmakeが走ってくれないです。

natu@natu-laptop:~/tmp$ git clone git://github.com/higepon/mona.git
Initialized empty Git repository in /home/natu/tmp/mona/.git/
remote: Counting objects: 60714, done.
remote: Compressing objects: 100% (16891/16891), done.
remote: Total 60714 (delta 43725), reused 59771 (delta 42962)
Receiving objects: 100% (60714/60714), 41.27 MiB | 116 KiB/s, done.
Resolving deltas: 100% (43725/43725), done.
natu@natu-laptop:~/tmp$ cd mona
natu@natu-laptop:~/tmp/mona$ cd mona
natu@natu-laptop:~/tmp/mona/mona$ git submodule init
You need to run this command from the toplevel of the working tree.
natu@natu-laptop:~/tmp/mona/mona$ git submodule update
You need to run this command from the toplevel of the working tree.
natu@natu-laptop:~/tmp/mona/mona$ ls
HowToGDB Makefile.inc configure doc include test
Makefile RELNOTE core external share tool
natu@natu-laptop:~/tmp/mona/mona$ cd ..
natu@natu-laptop:~/tmp/mona$ ls
README.md contrib mona
natu@natu-laptop:~/tmp/mona$ git submodule update
natu@natu-laptop:~/tmp/mona$ git submodule init
Submodule 'mona/core/mosh' (git@github.com:higepon/mosh.git) registered for path 'mona/core/mosh'
natu@natu-laptop:~/tmp/mona$ git submodule update
Initialized empty Git repository in /home/natu/tmp/mona/mona/core/mosh/.git/
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Clone of 'git@github.com:higepon/mosh.git' into submodule path 'mona/core/mosh' failed
natu@natu-laptop:~/tmp/mona$ cd mona
natu@natu-laptop:~/tmp/mona/mona$ make
Makefile.inc:1: share/configs/Makefile.inc: No such file or directory
make: *** ターゲット `share/configs/Makefile.inc' を make するルールがありません. 中止.
natu@natu-laptop:~/tmp/mona/mona$ ls
HowToGDB Makefile.inc configure doc include test
Makefile RELNOTE core external share tool
natu@natu-laptop:~/tmp/mona/mona$ cd ..
natu@natu-laptop:~/tmp/mona$
natu@natu-laptop:~/tmp/mona$ ls
README.md contrib mona
natu@natu-laptop:~/tmp/mona$ make
make: *** ターゲットが指定されておらず, makefile も見つかりません. 中止.
natu@natu-laptop:~/tmp/mona$ less README.md
# What is Mona?
MonaOS is a free operating system.
See detailed information on http://www.monaos.org.

# Building and Running Mona
## Requirements
- git
- Mingw
- nasm
- mkisofs
- QEMU

## Building and Running
% git clone git://github.com/higepon/mona.git
% cd mona/mona
% git submodule init
% git submodule update
% cd mona
% make
% cd ..
% cd contrib
% make
% cd ../mona/tool/qemu
% ./start.sh

natu@natu-laptop:~/tmp/mona$ cd mona
natu@natu-laptop:~/tmp/mona/mona$ ls
HowToGDB Makefile.inc configure doc include test
Makefile RELNOTE core external share tool
natu@natu-laptop:~/tmp/mona/mona$ make
Makefile.inc:1: share/configs/Makefile.inc: No such file or directory
make: *** ターゲット `share/configs/Makefile.inc' を make するルールがありません. 中止.
natu@natu-laptop:~/tmp/mona/mona$ cd share/
natu@natu-laptop:~/tmp/mona/mona/share$

| | Comments (4) | TrackBack (0)

2010.09.27

Amazonが良くなっている件

Amazon_x4

カートに同じ商品が入っているときに、さらに追加すると警告出してくれるようになった。

一回しかクリックしてないのに、4冊もカートに入っている件は謎。

| | Comments (0) | TrackBack (0)

2010.09.25

boost::unitsを使ってみた

Stroustrup先生の、Programming Principles and Practice Using C++を読んでます。
四章で単位変換の練習問題があったので、Boost::unitsを使ってみました。
新しい単位系を作る場合は、cgs系がどのように定義されているかを見て、真似していけばいけました。

以下、自分用メモとして、コード貼り付け。

#include <iostream>
#include <boost/units/conversion.hpp>
#include <boost/units/systems/si/length.hpp>
#include <boost/units/systems/cgs/length.hpp>
#include <boost/units/systems/si/prefixes.hpp>
#include <boost/units/systems/si/io.hpp>

// inch を使うための設定
#include <boost/units/base_units/us/inch.hpp>

namespace boost {
namespace units {
namespace us {
typedef make_system<inch_base_unit>::type system;
} // namespace us
} // namespace units
} // namespace boost

namespace boost {
namespace units {
namespace us {
typedef unit< length_dimension, us::system > length;

static const length inch;
BOOST_UNITS_STATIC_CONSTANT(inch,length);
}
}
}


//feet を新しい単位系として追加
#include <boost/units/config.hpp>
#include <boost/units/base_unit.hpp>
#include <boost/units/physical_dimensions/length.hpp>
#include <boost/units/base_units/si/meter.hpp>
#include <boost/units/conversion.hpp>

namespace boost {
namespace units {
namespace ft {
// 1 feet = 12 inch
typedef scaled_base_unit<us::inch_base_unit, scale<12, static_rational<1> > > foot_base_unit;
} // namespace ft

template<>
struct base_unit_info<ft::foot_base_unit> {
static const char* name() { return("feets"); }
static const char* symbol() { return("ft"); }
};
} // namespace units
} // namespace boost

namespace boost {
namespace units {
namespace ft {
typedef make_system<foot_base_unit>::type system;
} // namespace ft
} // namespace units
} // namespace boost

namespace boost {
namespace units {
namespace ft {
typedef unit< length_dimension, ft::system > length;

static const length foot;
BOOST_UNITS_STATIC_CONSTANT(foot,length);
}
}
}


using namespace boost::units;

int main()
{
double val;
std::string unit;
quantity<si::length> len_m;

while(std::cin >> val >> unit) {
if(unit == "cm"){
len_m = static_cast<quantity<si::length> >(val * cgs::centimeter) ;
} else if(unit == "m") {
len_m = val * si::meter;
} else if(unit == "in") {
len_m = static_cast<quantity<si::length> >(val* us::inch) ;
} else if(unit == "ft") {
len_m = static_cast<quantity<si::length> >(val * ft::foot);
}
quantity<cgs::length> len_cm(len_m);
quantity<us::length> len_inch(len_m);
quantity<ft::length> len_feet(len_m);

std::cout << len_m << std::endl;
std::cout << len_cm << std::endl;
std::cout << len_inch << std::endl;
std::cout << len_feet << std::endl;

}
}

| | Comments (0) | TrackBack (0)

2010.09.16

veritakがUbuntuで動作

Veritak

特に何もしなくても、Ubuntuのwineでサンプルが動きました。同じPCのXP上で動かすよりも速く感じます。

| | Comments (3) | TrackBack (0)

2010.09.07

コンパイラの本

誰も作ってくれなかったので、自分でまとめてみた。
目次からざくっと拾っただけなので、間違いあるかも。本を買うときは自分で中身確認してくださいね。

ドラゴンブックタイガーブック中田先生の本optimizing compilers modern architecturesの4冊は、コンパイラで使われる技術について、最適化まで含めてひととおり書いてある。

あとは作ってみよう系で適当にまとめた。本当は「○○という最適化が載ってる載ってない」までまとめたいけど、まだそこまで理解が進んでない。

 
書名ゴール実装言語字句解析構文解析VMGC最適化練習問題その他
はじめてのコンパイラ 原理と実践インタプリタの実装C自力自力(再帰的下向き) SLR無し無し少し有り
スクリプトエンジンプログラミングスクリプトエンジンの実装 C++ flex, boost::spritbison, boost::spritスタック型 無し 少し 無し
プログラミング言語を作る VMで動く言語の実装 C flex bison mark-sweep GC 少し 無しクラス、クロージャ、例外、鬼車の導入、UNICODE対応、 自作言語でゲームの実装まで
コンパイラ入門  構文解析の原理とlex/yacc, C言語による実装 コンパイラの実装 C lex yacc 無し 無し 無し 有り
コンパイラの理論と実現 インタプリタの実装 C lex yacc レジスタ型 無し 少し 有り
コンパイラ入門 C#で学ぶ理論と実践 コンパイラの実装 C# 自力 自力 無し 無し 無し 有り x86アセンブラ出力、自作言語のIDE有り
ふつうのコンパイラを作ろう コンパイラの実装 Java JavaCC JavaCC 無し 無し 無し 無し x86アセンブラ出力、ELF実行ファイルの作成まで
A retargetable C compiler design and implementation Cコンパイラの実装 C 自力 自力 無し 無し 無し 有り 中間コードから、MIPS、SPARC、x86のコード生成

だれかもっとしっかりまとめて欲しい。

| | Comments (3) | TrackBack (1)

« August 2010 | Main | October 2010 »