高専祭が始まりました
今日10/20(金)から、福井高専の「高専祭」が始まりました。
スペースバルーンプロジェクト「ふーせん宇宙船」
スペースバルーンプロジェクトにて、電子情報の山本君も参加
EthernetとCSMA/CD
ネットワークトポロジ
ネットワークに機器を接続する方式をネットワークトポロジと言う。
1本の線を共有するバス型、機器どうしがリング型に接続するリング型、中央の機器を通して接続されるスター型が基本となる。
基本的に、Ethernet は 1本の線を機器で共有するバス型。ただし、10BASE-T,100BASE-TX などの HUB で繋がることから、HUB を中心に広がるスター型とも言える。それぞれれのネットワークは相互につながることから、木の枝状に見えるものはツリー型と呼ばれる。また、上流ネットワークでは、機器が故障した場合に一切の通信ができなくなるのは問題があるため、複数のネットワークで相互に接続される。この場合、網が絡むような構造になることから、ネットワーク型と呼ばれる。
2分探索木への追加
2分木へのデータの追記
前回の授業で、2分探索木のデータに対する処理を説明したので、今回は木にデータを追加する処理。
struct Tree { int data ; struct Tree* left ; struct Tree* right ; } ; struct Tree* tcons( int x, struct Tree*L, struct Tree*R ) { struct Tree* ans ; ans = (struct Tree*)malloc( sizeof( struct Tree ) ) ; if ( ans != NULL ) { ans->data = x ; ans->left = L ; ans->right = R ; } return ans ; } struct Tree* top = NULL ; void insert( int x ) { struct Tree** tail = &top ; // 書換えるべき末端ポインタへのポインタ while( (*tail) != NULL ) { if ( (*tail)->data == x ) break ; // 同じデータは重複するので、追加処理は行わない else if ( (*tail)->data > x ) tail = &( (*tail)->left ) ; // 左の枝を降りていく else tail = &( (*tail)->right ) ; // 右の枝を降りていく } if ( (*tail) == NULL ) (*tail) = tcons( x , NULL , NULL ) ; }
単純リストの時は、2重ポインタの混ざった式の部分的に、型を意識する説明をした。今回は、”tail = &( (*tail)->left )“の赤のカッコが省略されたら、青のカッコが省略されたら、どちらが文法エラーかを「演算子の優先順位」の話を交えながら説明する。 (さらに…)
サーバのメンテナンス
Azureサーバのバックアップ
管理しているAzureサーバだけど、クラウドだし簡単には落ちないとバックアップ処理を真面目にしてなかったけど、そろそろ対策をと設定を行った。
- 各仮想サーバの定時処理で、主要データディレクトリを .tar.gzでバックアップ
- 自室のサーバで、RAID-NAS上に仮想サーバのバックアップを rsync
- 仮想サーバの容量逼迫を防ぐために、2月以上は削除。自室サーバは空き容量をみて削除時期を考えよう。
差分バックアップを加える(2017/10/19追記)
バックアップ処理、2週間おきに設定していたけど、いざという時のためにもう少し頻繁にバックアップを取りたい。
そこで、1週間毎に差分バックアップを取るように、処理を追加する。
MovableTypeの記事を復活
サーバ故障による移行作業で、CMS を MovableType から WordPress に変更したけど、古い記事の移行ができていなかった。自宅サーバも同様の移行作業を行い、過去記事の吸出しがうまくいったので、同様に電子情報の過去記事を吸い出し、WordPress にインポート。
# メモ
((追記))
古い記事を抽出する際に、preタグ内の空白が削除されてらぁ。おかげで、プログラムのコードのインデントが消えてしまってる。(x_x;;
高専ライブ:2017年10月15日(第546回)
- 高専祭について
- 専攻科デザイン工学コンペの様子
- 高専生に聞きたい5つのこと
- 研修旅行、遠足の話
担当:水島(3C、MC)、西島(3EI、MIX)、中島(3C)、坂田(F1)、西(教員)
サーバの更新作業
職場で管理しているサーバの更新作業。
snapd の更新トラブル
以前より、snapd の更新に失敗しているサーバだけど、post-install , prerm スクリプトのエラーが出るので、スクリプトに”exit 0″などを書き加えながら、無理やり更新。
AzureサーバのUbuntu wilyがサポート外
別サーバでは、Ubuntu wily が対象サポート外になって、更新が止まっていたので、Ubuntu 16系 の xenial に更新。
aptitude safe-upgrade を実行したら、定番の競合,保留パッケージ数がガンガン増えていく。自宅サーバなら、競合パッケージの探索処理の途中で止まっちゃうけど、今回はなんとかクリア。数百程度のパッケージ更新で無事に xenial に更新完了だった。
物理層WAN接続
前回の物理層のLANの話に引き続き、WANの話を説明。
バス接続(LAN)と転送速度
基本的な Ethernet の接続では、1本の通信路を共有するバス型接続のため、1本の信号線をパケット単位の通信の短い時間に区切って、送信を交代しながら行う時分割多重方式で行い通信を行う。
このため、下図で通信路が10BASE/T であった場合、PC-A から PC-B にCD1枚のデータ700MBを送る場合、
>-----+-----------+------< CD1枚 700MB | | をPC-A⇒PC-Bに転送 PC-A PC-B 何秒かかる? 700M[Byte] * 8 = 5.6 G[bit] を 10M[bps] で送ると 5.6G[bit] / 10M[bit/sec] = 560[sec]
また、PC-A から、PC-B , PC-C に同時にCDデータをダウンロードする場合、時分割多重となるため、時間は倍かかる。
>-----+------+------+-----< | | | PC-A PC-B PC-C
2分探索木
2分木(2分探索木)
struct Tree { int data ; struct Tree* left ; struct Tree* right ; } ; struct Tree* tcons( int x, struct Tree*L, struct Tree*R ) { struct Tree* ans ; ans = (struct Tree*)malloc( sizeof( struct Tree ) ) ; if ( ans != NULL ) { ans->data = x ; ans->left = L ; ans->right = R ; } return ans ; } void main() { struct Tree* top = tcons( 52 , tcons( 24 , tcons( 10 , NULL , NULL ) , tcons( 35 , NULL , NULL ) ) , tcons( 73 , tcons( 60 , NULL , NULL ) , tcons( 95 , NULL , NULL ) ) ) ; }
出来上がった木構造のイメージ
top \ 52 / \ / \ 24 73 / \ / \ 10 35 60 95