目が疲れてショボショボ…(08/01)
- 07/31 目が疲れてショボショボで、今日は採点途中で打ち止め。どちらにしろ、情構論は出題にヒネリが足りなかったようだ。 #fnct
- 07/30 およっ、OSX Mountain Lion で tgif 動かんじゃん。macports 入れなおしかよ。テスト問題作ってんのによぅ… #fnct
この記事は、 の @TohruSaitohに掲載した #fnct タグ付き記事を、まとめたものです。
学習障害などの基礎知識と支援
本日、メンタルヘルス講習会ということで、学習障害などを 専門としている富山大学の先生を招いての講習会ということで、
『障害に対する基礎知識と基礎知識と障害学生に対する教育支援の実践例』
個別支援を大切にしながらも、すべての学生に平等であるためには、 支援の組織化が重要。
- 学習障害(Learning Disabilities) / ノートが取れない。論述問題が苦手。
- 注意欠如多動性障害(Attention Deficit Hyperactivity Disorder) / じっとしていられない。考えなしに直ちに行動。
- 自閉症スペクトラム障害(Autism Spectrum Disorders),(自閉症障害,アスペルガー症候群) / コミュニケーション問題,常識的なことを知らない。
関わり方の基本姿勢(SPELL)
- Structure/構造化(環境生活の枠組み作り)
- Positive/肯定的な姿勢
- Empathy/共感(パーソナリティを受け止める)
- Low arousal/低刺激(ストレス刺激を減らす)
- Links/連携(人・組織的な支援)
効果的な対応で基本的な例: スケジュール帳を付けさせる。優先順位をつけ、何をいつまで…
職場支援のノウハウを修学支援に活かす…
- 曖昧な指示や目的不明確な指示を避ける。
- 直接・具体的な手順を示す。
- 口頭指示も文書で補足。
- 相手の感情に過剰に反応するので、落ち着いた表現で伝える。
目付きの悪いライオンさ…(07/26)
- 07/26 目付きの悪いライオンさんが取れるまで、テスト問題作りをがんばろう。 #fnct
- 07/26 [ぼそっ] マルチセット簡略化 #fnct
- 07/23 gccとかは自分でinstallすんのか… "複数のgccを切り替えて使う update-alternatives" http://akihiro-i.net/~akihiro-i/wiki/ind… #fnct
この記事は、 の @TohruSaitohに掲載した #fnct タグ付き記事を、まとめたものです。
network-managerの罠…
ちょっと前からmulti-coreなサーバの活用として、 仮想化の実験を始めている。試しに debian の Xen パッケージを入れている。 んで、自室のlinuxでも同じ事をしたら、ネットワークが変。 /etc/network/interfaces に記載してもいない、ネットワークが有効になったり、 変なルーティングが出てきたり、分けわからない状態。
よくよく確認したら、xen管理用のvncviewer入れる歳に、gnome,KDEの更新を かけて、network-manager + network-manager-gnome あたりがインストールされ、 GUI環境のネットワーク初期化ツールが原因みたい。
# 絶対、また同じようなことすると思うので、BLOGに書いておく。
サーバ用途なのでチョイチョイネットワーク設定を変更することはないので、 早々に"network-manager" をアンインストール。 代わりに、"resolvconf"を入れる。
# aptitude remove network-manager # aptitude install resolvconf
リストの利点/欠点と双方向リスト
前回のリストを使った集合演算のように、データを連ねたリストは、 単純リストとか線形リストと呼ばれる。 特徴はデータ数に応じてメモリを確保する点や、途中へのデータの挿入削除が得意な点 があげられる。 一方で、配列は想定最大データ件数で宣言してしまうと、 実際のデータ数が少ない場合、メモリの無駄も発生する。 しかし、想定件数と実データ件数が一致していれば、無駄も必要最小限となる。 リスト構造では、次のデータへのポインタを必要とすることから、 常にポインタ分のメモリは、データにのみ注目すれば無駄となる。
もう1つの欠点がシーケンシャルアクセスとなる。 テープ上に記録された情報を読む場合、後ろのデータを読むには途中データを読み飛ばす 必要があり、データ件数に比例したアクセス時間を要する。 一方配列は、どの場所であれ、一定時間でデータの参照が可能であり、これは ランダムアクセスと呼ばれる。O(1)のアクセス時間。 線形リストは、シーケンシャルアクセスを行うため、データ件数が増えれば N番目 データの参照には、O(N)の時間を要する。
このため、エディタの文字データの管理などに単純リストを用いた場合、 1つ前の行に移動するには、先頭から編集行までの移動で O(N) の時間がかかり、 大量の行数の編集では、使いものにならない。
これらの問題に対応するために、1つ前のデータへのポインタを保存する、 双方向リストが利用される。
struct BDList { struct BDList* prev ; int data ; struct BDList* next ; } ;
このデータ構造の特徴を理解してもらうための簡単なプログラムとして、 双方向リストの指定ポインタの前に1件データ挿入を紹介。
void insert( struct BDList* p , int x ) { struct BDList* n ; n = (struct BDList*)malloc( sizeof( struct BDList ) ) ; if ( n != NULL ) { n->data = x ; n->prev = p->prev ; n->next = p ; p->prev->next = n ; p->next = n ; } }
リダイレクトとパイプ
ファイルの話はほぼ終わったので、リダイレクトとパイプについて説明を行う。
標準入出力とリダイレクト
以下のプログラムは、先週バッファリングの説明のために示した、 入力の小文字を大文字に変換して出力するプログラム。 まずは、このプログラムを保存し、実行プログラム”upper.exe”を 起動し、バッファリングが使われていることを再確認。
#include <stdio.h> int main() { int c ; while( (c = getchar()) != EOF ) { if ( c >= 'a' && c <= 'z' ) c = c - 'a' + 'A' ; putchar( c ) ; } return 0 ; }
標準入力とは、通常キーボードに割り当てられているが、 通常のOSでは、入力をプログラム起動時にファイルに切り替えて実行することができる。
((コマンドプロンプトを開いて、)) ((upper.c と同じディレクトリに入る。)) $ upper.exe This is a pen. THIS IS A PEN. ^C $ upper.exe < upper.c #INCLUDE INT MAIN(){ :
ファイルに切り替えて実行するには、 “<“マークの後ろにキー入力の代わりのファイルを書けばいい。 この様な機能を”入力リダイレクト”と呼ぶ。
出力リダイレクト
同じように、通常ディスプレイに割り当てられているが、 プログラム起動時に出力を画面でなくファイルに保存するように実行するには、 “>”マークの後ろに保存先のファイル名を書けば良い。 このような機能を”出力リダイレクト”と呼ぶ。
((出力リダイレクト)) $ upper.exe > out.txt This is a pen. That is a pencil. ^C $ type out.txt THIS IS A PEN. THAT IS A PENCIL. ((入力リダイレクトと出力リダイレクト)) $ upper.exe < upper.c > out.txt $ type out.txt #INCLUDE :
出力リダイレクトの際に、”>> ファイル名” を付けた場合は、 追記モードで書き込みが行われる。
$ echo "abc" > out.txt $ type out.txt abc $ echo "def" >> out.txt abc def
パイプ
入力リダイレクトでは、標準入力をデフォルトのキー入力をファイル入力に 簡単に切り替えることができる。 同様に、出力リダイレクトでは、標準出力の画面を、ファイル出力に 簡単に切り替えることができる。 言い方を変えれば、キー入力や画面出力とファイル入出力を、 同じ概念で操作できる所が大きな特徴。 これと同じように、プログラムの出力と別のプログラムの入力も、 区別なく使うことができたらさらに便利ではないか?
((リダイレクトでabcdeを大文字変換)) $ echo "abcde" > out.txt $ upper.exe < out.txt ABCDE ((上記作業を一発で実行)) $ echo "abcde" | upper.exe ABCDE
この例では、echo プログラムの出力をそのまま upper.exe の標準入力に渡し、 そのupper.exe の標準出力として、ABCDEが画面に表示されている。 プログラム起動時の”|”がパイプで、左側のプログラムの標準出力を 右側のプログラムの標準入力に渡している。
パイプの話の延長として、WebのCGIプログラムではパイプが使われていることや、 フィルタプログラムを組み合わせれば複雑なプログラムを書かなくていいなどを説明する。 また、フィルタプログラムでは、処理中に発生したエラーの警告をprintfで出力すると、 警告メッセージが次のプログラムに送られてしまい、確認ができなくなったり、 警告メッセージのデータを処理できなくなる。このために、標準エラー出力という ものがあることを説明する。