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
この記事は、 の @TohruSaitohに掲載した #fnct タグ付き記事を、まとめたものです。