2008年12月23日 星期二

【程式】程式碼作業相似度比對工具

今天跟濟強助教聊到系上大一程式作業抄襲的問題,

因為通常學生交上來的作業數量非常多,人力單薄的助教此時就非常辛苦。


為了減輕助教的工作量,另外也造福系上學弟妹(希望大家不要抄襲),

我就到網路上找看看有沒有人寫好的工具可以用。



下載之後,拿某班學弟妹作業的程式碼來測,發現準確度很高!

但是此版一次只比較兩個檔案,想拿來改作業的話,要再加個批次檔才行。

  • 努力...努力...努力,好久沒寫批次檔了,因此又花了一些時間研究。

寫了一堆批次檔終於讓程式可以多檔比較之後,才發現作者已經寫了第二版

有多檔比較功能,而且比我用批次檔跑還快很多....Orz...

不過作者的輸出跟我要的比較不同,所以動手改了一下

  • 這次不採用批次檔呼叫的方式了,改用C++刻檔案IO


改好的版本在此:連結

此版本是以原作者的1.0版當作核心,新增了以下功能:
  • 多檔比較
  • 相似度比例篩選設定
  • 語言選擇
  • 顯示花費時間
69份code交叉比對大約花了772781 ms,應該算是個堪用的工具了 :)

2008年12月11日 星期四

【-勵志-】Mind and hand



上圖是Massachusetts Institute of Technology (MIT)的校徽,

圖中背對背依靠著“Science and Art”油燈座而站的工匠與學者代表的

意思就是如同人物下方的小字 “Mens et Manus”,「動腦也動手」。

雖然我不是MIT的學生,但對這句話還是相當的推崇。

在此期許自己能在未來生活中實踐這樣的精神,並朝Science and Art前進。


仿造這樣的精神做了下面的小圖:心中擁有豐富知識的工人

2008年11月28日 星期五

[-FX-]Tinyurl-0rz-plugin

Firefox Tinyurl-0rz-plugin

修改 http://mozmonkey.com/ 的TinyUrl Creator 2.0,
新增0rz.tw短址功能。


XPI檔案下載:載點

[-FX-]Firefox Search Plugin:元智大學圖書館


Firefox Search Plugin:元智大學圖書館

Plugin提供功能:元智大學圖書館館藏的關鍵字查詢、ISBN查詢

適用版本:Firefox 3.0以上

檔案下載:載點

自動安裝方式:自動安裝網頁

手動安裝方式:
1. 下載之後,將xml檔案放置於 "Firefox安裝目錄\searchplugins"
2. 重新開啟Firefox即可完成安裝。

2008年11月20日 星期四

[程式]高等物件導向程式設計-作業2-程式



AOOP-HW2-選課系統 (程式下載)


程式執行需求:
JRE 1.5以上的環境,並且已經設定好環境變數(PATH)。

程式執行方式 :
a. 點選run.bat
b. 進入程式後點控制列的File->使用者登入
c. 輸入帳號
(管理員帳號:adm,管理員密碼:iamroot)
(學生帳號:學號,學生不需要密碼。學號範例:941407)
d. 使用完課務系統之後,可以點選控制列的File->使用者登入,
取消該項勾選即登出資料庫。
e. 預離開程式,可以點選控制列的File->離開程式,或者直接點右上角的"X"。

※註:SQL語法輸入區目前接受會回傳Table的Query語法
及系統維護的語法(EX:insert,delete)。

[程式]高等物件導向程式設計-作業2-ref


JDBC
JDBC入門 (連結) pdf檔案
Java JDBC 連接MySQL-使用Eclipse (簡易範例) (連結)


MySQL
Tutorial (連結)
※Loading Data into a Table (連結)
MySQL學習摘要 (連結)
編碼設定 (連結)
常用指令 (連結)
Windows下 MySQL的啟動與關閉 (連結)
MySQL資料庫的備份與還原 (連結)


Eclipse
簡易教學 (連結)
使用教學 (連結)
plug-in:fat jar (方便編出Jar檔案) (連結)
plug-in:Visual Editor (開發Java視窗程式的Eclipse的Plug-in) (連結一) (連結二)
※Visual Editor Tutorial (連結)

Swing
SwingWiki: Java Swing Developer Wiki (連結)
Trail: Creating a GUI with JFC/Swing (連結)


Ref books
O'Reilly Database Programming with JDBC and JAVA (2nd) (連結)
O'Reilly Learning SQL (連結)

[程式]高等物件導向程式設計-作業2-題目


作業內容如下:

a) 學生,老師,課程資料,選課共 4 tables;
b) 應用SQL99或SQL2003,可提供PPT提到之complex data
types;
c) 要求同學建立DB;
d) 要求同學用JAVA寫程式與DB聯結,
i) User先建立學生,老師,課程資料
ii) User可替某學生選課
iii) User可查詢,列印學生,老師,課程資料及選課.
Tables 內容:

學生: 學生學號、姓名 (至少這二項)
老師: 老師編號、姓名、開課課程(使用SET)
課程資料:課程ID、課程名稱、老師名稱、課程時間(SET)
選課資訊:學生學號、課程ID(所選課程之ID)

SET說明:
連結

*所有內容均自行設定

不特別規定寫法, 下列寫法會加分:

1.能將各table 分別寫一個class 對應 (每個class
有get類及set類之Method)
2.以 GUI 呈現
3.選課若有衝堂, 則無法選

============================================================
詳細敘述:
i) User先建立學生,老師,課程資料
可能說明中沒有很詳細。

的確這次作業也是一個自由發揮的題目

作業可分2個角度看

1. 學生(即User)角度:可選課,可查詢資料
2. 行政人員(Programmer)角度:事先建立起DB
資料(包含課程及時間)及搭起溝通橋樑 (要
寫的程式)。

所以一開始在coding的過程中,先是扮演行政人
員的工作,等到coding 結束後的測試就是扮演
學生。

總結就是,課程及時間在建立DB前就要先規劃好
( 自行設計 )
=================================================================
行政人員也提供修改資料, 更新資料 ( 但是不能更動
data type 為set 的欄位)
也就是事先建立的DB 可以做新增及修改 (於程式中達成)

PS. set為一最大集合, 事先就必須定義好有哪些object在其中

2008年10月12日 星期日

[MEMO]目前擁有的Domain Name


網域相關網頁
TWBBS.org 自由網域
DynDNS
TWNIC網域名稱註冊系統
tw網域名稱申請
















































Domain IP/CNAME 註冊日 到期日
mLog.twbbs.org 140.134.25.14 2004-04-15 2008-12-31
kpxx.twbbs.org mLog.selfip.net 0000-00-00 2008-12-31
cmc.twbbs.org 140.138.38.48 0000-00-00 2008-12-31
test2.twbbs.org kpxx.homedns.org 0000-00-00 2008-12-31
mLog.cse.tw kpxx.twbbs.org 0000-00-00 0000-00-00
kpxx.cse.tw 61.63.4.212 0000-00-00 0000-00-00

[MEMO]Linux Kernel相關知識






Kernel介紹(中文) (連結)

Linux核心(中文) (連結)

Kernel Howto (英文版) (中譯版)

How to compile kernel in ubuntu (連結)

2008年9月2日 星期二

[MEMO]Linux分享課程大綱


Day1投影片:http://0rz.tw/0b4HT

1. Linux歷史簡介
Linux 家族簡介 ( 上 ) - 歷史篇 Link
Linux 家族簡介 ( 中 ) - 現況篇 Link
Linux 家族簡介 ( 下 ) - 發展篇 Link

2. Linux檔案結構簡介

3. ubuntu簡介
Link

4. 安裝ubuntu
LiveCD Link

5. 網路設定
ADSL Link
固定IP

※update-notifier (系統安全更新提醒程式) Link
※Firestarter (防火牆)

6. X環境設定
字型 Link
Link
※fc-cache

lxde桌面 Link
Link

7. 編輯器使用教學
ee editor Link
VIM Link/

※PCManX 0.3.8編譯
Link
PCmanX官網

>----Day 1 End-----<

8. LAMP安裝與簡易設定
Link

9. FTP伺服器vsftpd安裝與設定
Link

※VMware
Link

>----Day 2 End-----<

2008年5月13日 星期二

[測試]Code Style


Code Style CSS測試
使用注意事項,得對於預張貼之程式碼做以下置換:
#雙引號「"」 => "
#單引號「'」 => '
#大於符號「>」 => >
#小於符號「<」 => <
#AND符號「&」 => &


/*
target: ID check
create:2008.04.15
author:KPXX
*/

import java.util.Scanner;

public class prog3
{
public static void main(String[] args)
{
String area="ABCDEFGHJKLMNPQRSTUVXYWZIO"; //Area to num (0~25) + 10
int len, valueTemp,value,checkNum;
Scanner keyin = new Scanner(System.in);

System.out.print("請輸入身分證字號,英文字母請大寫:");
String id =keyin.next();
len = id.length()-2;

try
{
//----format check----
if(id.length()!=10)
throw new Exception("身分證字號長度不正確");
if(!id.matches("[a-zA-Z].{9}"))
throw new Exception("身分證字號縣市欄不正確");
if(!id.matches(".[1-2].{8}"))
throw new Exception("身分證字號性別欄不正確");
if(!id.matches(".[0-9]{9}"))
throw new Exception("身分證字號後九碼須為數字");

//----verify checksum
valueTemp = area.indexOf(id.charAt(0))+10;
value =valueTemp / 10 *1 + valueTemp%10 *9 ;

for(int i=1,j=8;i&lt;=len;i++,j--)
value += Integer.parseInt( id.substring(i,i+1) )*j;

checkNum = 10- value %10;

if(Integer.parseInt(
id.substring(id.length()-1,id.length())) == checkNum)
System.out.println(id + "為正確的身分證字號");
else
throw new Exception("身分證字號驗證碼不正確");

}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}