ホーム » 2020 (ページ 5)
年別アーカイブ: 2020
高専プロコン2020-2日目
リモート開催の高専プロコン2020の2日目、福井高専の3チームは発表・質疑応答が全チーム2日目。
最終結果
課題部門 Labocket
–XRによる理科学習サポートアプリケーション–敢闘賞 オーラルボイス
–機械学習による英語発音支援アプリケーション–敢闘賞
NICT賞(起業家甲子園挑戦権)🎉自由部門 House Pointer
–写真×AIで木造建築を守れ!–敢闘賞
発表風景
色々と経験です
オブジェクト指向のUML図
専攻科2年のオブジェクト指向プログラミングでは、レポート課題の最終テーマがUMLで自分の特別研究のテーマを表現する内容。
今年のレポートでは、なかなかいいUML図を書いてくる人が多かったので、メモ。
参照渡しを積極的に使う
オブジェクト指向のレポート課題を採点していると、若干きになることがあったので、補足説明。
複素数クラスのレポート課題で、add() などのメソッドが、私がサンプルコードで示したのがそうなっていたのが原因だと思うけど、以下のようなコードとなっている。
class Complex { // 略 public: void add( Complex z ) { re += z.re ; im += z.im ; } // ~~~~~~~~~ 値渡し } ;
処理速度の効率を考える場合は、以下のような参照型(参照渡し)を使うのが一般的。上記のような値渡しだと、機械語を生成する際には、実引数の複素数のコピーが行われるので、無駄な処理が発生しがち。参照型を使えば実引数をコピーする手間が不要なので、処理の無駄が省ける。(Complexのような簡単なクラスなら無駄というほどのものじゃないけど)
class Complex { public: void add( const Complex &z ) { re += z.re ; im += z.im ; } // 定数型 ~~~~~~~~~~参照渡し } ;
ただ、上記の参照型を使うと、addメソッドで、zの内部を書き換えるような間違った処理を記述してしまうと、add()の処理で実引数に副作用が発生する。このため、こういった書き間違いによる影響がないことを明示するために、上記のように、z に const 指定子を記載しておくのが一般的。const がついていれば、addメソッド内部で間違って、zを書き換えるような処理を記載しても、コンパイラが間違いを指摘してくれる。
PHPとセキュリティのレポート講評
5年生の前期実験で「PHPとセキュリティ」のテーマについて、レポートの採点を行った。
以下に、レポート記載での注意点や減点評価を行なったポイントをあげる。
レポートの記載書式について
- 電子レポート提出でも所属や報告者の記載をつけること。
今回は、遠隔実験でPDFファイルのアップロード提出であったため、表紙のつけ忘れなどが見られた。印刷媒体で残す可能性を考慮し、文章内に所属・出席番号・氏名なりの記入は必須。 - 図番号・表番号を必ず引用すること。
実験結果に図番号や表番号をつける習慣はみなさんついているが、本文中で必ず図番号や表番号を引用すること。前表によれば…はNG。「図1をみると…」「(表1参照)」などをつけること。図表は配置の都合で本文とは別のページに記載することもあるので、異なるページに配置されても、わかるように記載する必要がある。 - 章・節のインデントはしない。
今回は減点対象としていないが、卒業論文や卒研中間報告では、節や小節でインデントをしないこと。
特に、2段組みをする文書の場合、インデントが入るとただでさえ狭い1行が、スカスカになる。1. 論文書式ではダメな書き方 □この実験は... □のようなインデントは不要!! □...であった。 □1.1 背景 □□この問題の背景として... □□1.1.1 なんとかかんとか □□□なんとかかんとか
レポートの考察内容について
- PHPのプログラムの改良で、<input … maxlength=”xx”>とか、<input type=…> とか、<input … pattern=”xxx”>をとるといった考察があったが、これは不十分。例えば、Webページの HTML を、自分のサイトにコピーして、maxlenthやpatternを削除したページを作ってそこからPHPにデータを送ることで、相変わらずセキュリティの問題を引き起こすことが可能。HTMLのページを偽装しなくても、プログラムからphpに対して直接データを渡すこともできる。
このため、送られてくる入力値のチェック(一般的にはサニタイジングと呼ばれる)は、php側でも十分に行う必要がある。 - password の管理については、/etc/shadow ファイルの話までしか調べていない考察があった。
passwdコマンドは、SUID の説明と、その機能「一時的にpasswdコマンドの所有者rootの権限を借りる」の説明がないと減点とした。
考察のヒントに記載した、自分のパスワードが変更できるのなら/etc/passwdへの書き込み権限があるはず…と同じで、自分のパスワードを変更可能なら/etc/shadowに書き込み権限がある…という話になってしまうから。
(追記)
レポートの採点結果つけたよ…とTeamsで伝えたら、ゾロゾロと自分の点数を聞きにくる人多数。いつも、レポート返却しても教室に放置されてるし、他の先生の評価で平均されるから、あまり気にしないと思ってた。