那些年,我在大學接案血淚史

我是誰 ?

在校園開發應用系統?

survey

事情是這樣的...

通識課的認識

​老師找我同學

老師希望做個流星檔案上傳系統

受託同學求救(他其實不會...)

​於是我就跳坑了...

架構

初出茅廬

那時候才二年級,什麼架構完全沒有概念,只知道兜出來,就對了,因此很悲劇的結構圖 ORZ...

架構很恐怖...

外加很歡樂的 server

  • Linux Ubuntu
  • 一直換機臺,硬體各種壞掉
  • 好不容易架起來,其實硬體還是壞的...←老師認為是好的

開發環境

  • PHP 5.4
  • SQLite → 資料較少且方便移植專案
  • jQuery

用到函式庫

  • MySQLi
  • PHPMailer
  • 內建 zip libraries

Demo

小結

  • 老師人很好
  • 溝通方便
  • 東西做出來最後還是沒上線成功
  • 開發時程:一年

接案的 offer

猜猜是多少 XD?

三下時...

強者我學長要我交接

就決定是你惹!

體育室校務系統

  • 特別助理
  • 組長
  • 主任
  • 體育系大二 / 大三全體學生(美宣,宣傳,機動組 ...)
  • 開發人員 X 1

運動會 / 水運會團隊人員配置

重點來了

學長也是從陌生到熟悉...

所以也留下了進擊的檔案結構...

幸運的是

與學長討論了

  • 重構架構圖
  • 重整資料表
  • 釐清使用者需求

到了大四

運動會 + 水運會接連上門...

開始日以夜繼的 coding...

語錄

  • 拜託,很急。
  • 從今天開始,一週內可以嗎?
  • 2/26,2/27,2/28 截止日到底是?
  • 我們已經改程用Google 表單代替了← WTF...
  • 獎狀樣板我沒有,要跟上屆開發學長要。
  • 請問這個需求可以辦到嗎?

要在開康樂會議時,講解操作系統...

server

  • 開放有限度使用 SSH 登入
  • 開放 phpMyAdmin 管理資料庫
  • PHP 5.3 with suhosin
  • MySQL 5.1,一般帳號無法新增資料庫
  • 有 Git ←最近才發現,已經太遲 ORZ...
  • Apache 沒有載入 mod_rewrite 模組

奇怪 server 加持下

只好自己自幹 MVC 架構...

<?php
        //controller.php
	interface Controller
	{
		public function invoke($action,$data);
	}
?>

<?php
        //model.php
	interface Model
	{
		public function handle_login($table_name,$account,$pwd,$recaptcha);
		//public function update_pwd($table_name,$pwd1,$pwd2);
		public function check_login($who);
		public function get_volunteer_item();
		public function admin_volunteer_item();
		public function get_checkvolunteer_item();
		public function post_user_id($user_id);
		public function post_check_item($item_id,$user_id);
		public function handle_signup($signId,$signup_open);
		public function cloth_set_action($cloth_size);
               
                //more public/private method...
	}
?>
<?php
        //route.php
	require_once("../Controller/controller.php");
	$url = $_SERVER["REQUEST_URI"];
	$url_arr = explode("=", $url);
	$url_len = count($url_arr);
	if($url_len>2 || $url_len<2)
	{
		echo "request-error";
	}
	else
	{
		$act_arr = explode("_",$url_arr[1]);
		$act_len = count($act_arr);
		if($act_len!=3)
		{
			echo "action-error";
		}
		else
		{
			$control = new my_controller();
			$data = array();
			if(!empty($_POST["data"]))
				$data = $_POST["data"];
			echo $control -> invoke($url_arr[1],$data);
		}
	}
?>

route 方法

//change_pwd.js
$(function(){
	$.post("/sports/67/handle/Route/route?action=check_login_student", function(response){
		res = $.parseJSON(response);
		if(!res["result"]){
			location.reload();
		}
	});
	
	
	
});

進擊的前端

後記

  • 他算是我的代理人,我沒有交接到這一塊。
  • 運動會從我這裡,又移到另一位助理 A,所以我不太清楚。
  • 我們以為這是志工,以此身分協助開發系統。
  • 我們要改寫成永久性的系統,那功能很簡單,就像 Google 表單一樣...
  • 一個人開發要多久?那再多找兩個人是不是可以縮短成半個月?

結論

  • 行政喜歡欺負學生(一打三)← 我不是葉問 ORZ...
  • 行政搞不清楚狀況
  • 行政怕老師 ← 老師出手,便知有沒有(誤
  • 與非資訊人員溝通上的困難

說好的 offer 呢 XD?

美好的專案

靜態網站鏡射

舊式網站在 Google 協做平台,對岸無法開啟

生醫計畫其中一部分

網站架設

重點:委託者是系上老師!

臨時工讀金 offer 隨你填

朝爽 der~

Q & A

大學接案史

By peter279k

大學接案史

在大學那幾年中接案所發生的 " 趣事 "

  • 1,141