ホーム » 2011 » 11月 » 10

日別アーカイブ: 2011年11月10日

2011年11月
« 10月   12月 »
 12345
6789101112
13141516171819
20212223242526
27282930  

最近の投稿(電子情報)

アーカイブ

カテゴリー

Microsoft包括協定のソフトインストールにイライラ

高専では、Microsoftの包括協定にて、OSやOfficeのインストールにて、 適正なライセンス手続きを経れば、無償でOS,Officeをインストールできるようになった。

んで、今回Office2010を卒研用のPCに入れようとしたけど、かなり苦戦。

学内のサーバより、教員のメールID、パスワードを入力すれば、インストール用の データをダウンロードできる。これを使ってインストールを開始すると、 改めてメールID,パスワード,パソコンの管理台帳の番号を入力すれば、 利用ができる。

でもOfficeをインストールをすると、どうしても失敗する。 OSが、「Windows 7/Vista/XPじゃない」って文句を言ってくるけど、 購入時にWindows 7 Home Edition 64bit が入ってるじゃん。 よくよくインストールの手順書を見ると、7/Professional/Enterpriseじゃないとダメ らしい。 じゃあということで、Windows 7 の Anytime Update で、アップグレード をしようとするが、なぜか失敗。 OSの方も、包括協定でのアップグレードが必要みたい。 しかし、ライセンスを設定するプログラムは、サーバからダウンロードできるけど、 アップグレードには今度は学校指定のメディアが必要とな。
# 面倒だなぁ…イライラ。

2分木と式の表現・B木

2分木の応用として、式の表現の説明を行う。

まず、式の表現にあたって、演算子の優先順位の話として、 "1+2+3"が、"((1+2)+3)"として扱われる左結合で、 "x=y=z=0"は、"x=(y=(z=0))"で扱われる右結合といった話を説明する。 これらの優先順位情報は、分かり難いのでプログラムと処理しやすいように扱う必要がある。 "2+3*4"といった式は、前置記法では"+,2,*,3,4"と表現される。 一方、後置記法(逆ポーランド記法)では、"2,3,4,*,+"となる。 特に逆ポーランド記法は、計算の機械語生成に結びつくので、よく利用される。

でも、2項演算子は2分木として表現できるため、以下のようなプログラムで 式を扱うこともできる。

struct Exp {
int type ;
int data ;
struct Exp* left ;
struct Exp* right ;
} ;
struct Exp* Integer( int x ) {
struct Exp* n ;
n = (struct Exp*)malloc( sizeof( struct Exp ) ) ;
if ( n != NULL ) {
n->type = 0 ;
n->data = x ;
n->left = n->right = NULL ;
}
return n ;
}
struct Exp* Operator( int op , struct Exp*l , struct Exp*r ) {
struct Exp* n ;
n = (struct Exp*)malloc( sizeof( struct Exp ) ) ;
if ( n != NULL ) {
n->type = 1 ;
n->data = op ;
n->left = l ;
n->right = r ;
}
return n ;
}
int eval( struct Exp* x ) {
if ( x->type == 0 ) {
return x->data ;
} else {
int l = eval( x->left ) ;
int r = eval( x->right ) ;
switch( x->data ) {
case '+' : return l + r ;
case '*' : return l * r ;
}
}
}
void main() {
struct Exp* x =
Operator( '+' , Integer( 2 ) ,
Operator( '*' , Integer( 3 ) ,
Integer( 4 ) ) ) ;
printf( "%d" , eval( x ) ) ;
}

次に、演算子といっても単項演算子、2項演算子、3項演算子などがあり、 これらのデータを表現することを考えると、2分木は3分木といった拡張の イメージもでてくるであろう。これをもっと一般的にすれば、n分木も 考えられる。これをデータベース用にしたものはB木となる。 この方式は、n件のデータと(n+1)件のポインタで実装される。 詳しくは、B木にて。

この話のおまけとして、データベースシステムについて簡単に話す。 特に、データベースが使われるような巨大なシステムになると、 3段スキーマ構成といった事例や、SQLによるアクセスといった、 一般的な話の導入について紹介する。

データベース演習

# 前回の授業から間が長かったのもあり、内容忘れ気味。
前回の授業で説明が抜けていた、集約関数(count,sum,avg,max,min)、 集合演算子(union,except,intersection)、ソート(order by)、グループ化(group by … having…)をひと通り説明する。

第1週に渡した演習の環境の説明資料を元に、 https://www.ei.fukui-nct.ac.jp/~t-saitoh/edu/DB/exp/の使い方を説明する。

演習テーマは、何らかの意味のある2つのSQL命令を実行し、 その動作結果を確認、さらにその命令と同じような処理をするC言語のプログラムを 作成し、データベース命令の意味やその便利さを確認する。 レポートには、動作結果とその内容の説明や分かったことを記載すること。

職場の事務用ファイル共…(11/09)

  • 11/09 職場の事務用ファイル共有サーバ、ディレクトリの内容を見るだけでも激遅。見たいファイル見つける度に30秒近く待たされる。どうもディレクトリアクセスが遅いようなので、探したいフォルダごっそりコピー。 #fnct

この記事は、twitter の @TohruSaitohに掲載した #fnct タグ付き記事を、まとめたものです。