fvwmとかgwmって、いつの時代やねん…
電子情報のメインサーバも oldstable のままなので、 移行作業を始めるための準備。 使うだろうと入れてあるけど、実質使っていない gnome やら kde やら を削除したあと、aptitude をかけた時に競合パッケージを減らすために、 利用頻度が低いパッケージを目視で削除中。
ただ、fvwm-data やら gwm-data といった、過去の遺物のパッケージ名が 未だにインストールされてた。(さすがにバイナリは競合の中消えてしまっている)
もう少し、要らないパッケージを消して、夕方あたりから本格的な更新作業を 行うかな….
uptime 200を超えると再起動おそ…
ようやく、主要パッケージだけにできたので、更新作業を夕方から行った。 確認すると、uptime 250日。再起動をかければ、まちがいなく fsck が起動するから、 再起動中に他の方からのクレームが来ないか心配しながらの再起動。
途中、grubでなくLILOのブート画面に、クラクラしながらも、ルート,/home の fsck にイライラしながらの再起動が完了。 後は、監視系の munin , nagios3 を入れて、足場を固める。 gnome,KDEの再インストールとも思うが、ニーズが出るまではやめておこう。
oldstableをstableに
学科サーバやらアンケートシステムやらで、 Debianベースで色々なサーバを運用しているけど、 どれも5年近くの稼働。
きちんと更新はかけているけど、lenny から squeeze に 上げるのが面倒で、squeeze 登場の時に oldstable/lenny だけに sources.list を書いて運用していた。 しかし、さすがに oldstable のメンテナンス期間も過ぎ、 最近は、"aptitude safe-upgrade"かけても更新が無い。 限界。
ということで、メイン稼働でない oldstable なサーバで、 stable 切り替えを行う。ただ、大きな変更だけあって、 パッケージ間競合で、うまく自動更新スクリプトが止まらない。
何台か作業したけど、以下の手順だと競合が少ないかな。
aptitude install aptitude aptitude install gcc g++ aptitude install apache2 php5 aptitude install xserver-xorg aptitude install gnome # kdeと競合が多いけど、ばっさりkdeを一時的にremove...
ああ、サーバなのに使ってもいない gnome , KDE なんか、 こんなに律儀にインストールしてるんだろう…>オレ。
PHPが一般ユーザで動かなくなる
更新をかけたら、一般ユーザでのPHPが動かなくなる。 でも、自分のホームでは、動く。さっぱり訳の分からない状況で、 userdir が原因と疑い、検索をかけたらようやく解明。 PHP 5.3 あたりから、安易にユーザがPHPコードを使えないように、 設定ファイルが、変更されてる。
自宅サーバでは、問題なく動いていたし、設定ファイルを比較しまくったのだが、 違いが見つからず、解明まで時間ががかった。 自宅では、mod-enabled/userdir.conf は触らずに、 conf.d/php5.conf で設定していたものだから、気付くまでに手間取ってしまった。
(( /etc/apache2/conf.d/php5.conf )) <IfModule mod_php5.c> <IfModule mod_userdir.c> <Directory /home/*/public_html> php_admin_flag engine on </Directory> </IfModule> </IfModule>
オーダ記法と再帰関数
先週は、単純サーチ、最大選択法などの説明だったので、 2分探索方の説明を行い、
単純サーチ T(N) = Ta + Tb×N 最大選択法 T(N) = Ta + Tb×N + Tc×N^2 2分探索法 T(N) = Ta + Tb×log N
これらのTa,Tb,Tcは、計算機の性能に依存し、アルゴリズムの優劣判断には使えないので、 これらを記載しないオーダ記法を用い、 O(N) , O(N^2) , O(log N) のように記載する。
再帰関数
for 分による繰り返しの分析ができても、再帰処理を含む場合は、面倒になる。
以下のような再帰関数を示し、動作トレースのあと、一番簡単な fib について、 処理時間を示す。
int fact( int x ) { if ( x == 0 ) return 1 ; else return x * fact( x - 1 ) ; } int fib( int x ) { if ( x < 2 ) return 1 ; else return fib( x - 2 ) + fib( x - 1 ) ; }
変数のスコープと寿命、数値の範囲
制御構文の説明の後として変数の説明、数値の範囲を説明。
int x=123; // 大域変数 void foo( int x ) { // 局所変数の仮引数。 x++ ; printf( "%d" , x ) ; } void main() { int a= 234; foo( a ) ; // 235 値渡しでコピーされる。 foo( a ) ; // 235 }
関数の書き方の説明をしたけど、値渡し、ポインタ渡しの説明が不完全。 来週は、値渡し、ポインタ渡しを説明。
数値の範囲
char , short int , int , long int 、unsigned , signed といった型を説明。 数値の範囲は、他の授業で丁度やっていたので、すんなり説明が終わる。 ただし、2の補数表現の説明追加が必要かな。
職場の発注システムで、…(04/18)
この記事は、 の @TohruSaitohに掲載した #fnct タグ付き記事を、まとめたものです。
職場のSiteライセンスな…(04/13)
- 04/13 職場のSiteライセンスなDVDでWindows7のインストール。Install DVDが起動しないと思ったら、Upgrade用だった…只今、Fullインストール用DVDを借りてきて、やり直し。(x_x; #fnct おかげで、一番遠い部署と3往復。いい運動か…
この記事は、 の @TohruSaitohに掲載した #fnct タグ付き記事を、まとめたものです。
創造工学・実験(PHP)
創造工学の実験として、 ネットワーク系課題の取り組み者への実験テーマとして、PHPの説明を行う。
追記:実験中、ディレクトリのパーミッション変更を Samba 経由で行おうとしたけど、 Windows端末でのエクスプローラのフォルダ・プロパティに、「セキュリティ」タブが 表示されなくって、ちょっと焦る。 その場は、telnet login + chmod で対応したけど、なぜだろうと調べてみた。
なるほど、フォルダオプションの「簡易ファイルの共有を使用する」をOffにすればいいのか。5年の実験でも同じ環境を使うので、メモしておこう。
情報構造論ガイダンス
初回のガイダンスということで、この1年での授業予定などを説明する。 例年通り、「プログラムを作る場合、注意すべき点は?」を聞いてみる。 「わかりやすく/簡単に」が大多数。 「プログラムの効率」と答えるのがいたので、何の効率?と聞くと、 『処理速度」との答え。しかしながら、「メモリの使用量」が出てこない….
ということで、メモリ大量使用の高速化事例を紹介し、トレードオフ関係などを 説明した後、処理速度の見積もりの話として、単純サーチ(1重forループ)の処理時間、 最大選択法(2重forループ)の処理時間について説明する。 詳細は、昨年度と1回目と同じなので、リンクに留める。
プログラミング応用ガイダンス
3EI向けのプログラミング応用のガイダンスということで、 説明を行う。最初に、1年間の授業内容の予定や、 テストなどの評価方法、テスト過去問題のHP掲載などについて説明しておく。
授業では、2年の復習として、制御構文の説明を行う。 簡単な繰り返し構文の、実行順序トレースを下に、 文について解説を行う。
C言語の文
→式; →while(式)文 →do 文 while(式); →for(A;B;C)文 →if(式)文[else 文] →{ 文 文 ... } // 複文 →; // 空文
この他に、break,continue文、switch-case文などの 説明を行う。この際にswitch-case文でよくあるミスとして、 caseラベルに実数や文字列を記載した場合に動かない事例を示す。