新北市教育局程式應用研發社群工作坊(1060405)

日期:106年4月5日下午

地點:新北市教研中心

公文與計畫:

技術分享:

保太:校務系統匯出的學生XML檔案新增至資料庫 (使用 PHP)

學生XML檔案範例:


<?xml version="1.0" encoding="UTF-8"?>
<SCHOOL:report xmlns:SCHOOL="http://163.20.240.13">
  <SCHOOL:table table_name="table0">
    <SCHOOL:row roe_name="row0">
      <SCHOOL:col col_name="col0">學號</SCHOOL:col>
      <SCHOOL:col col_name="col1">姓名</SCHOOL:col>
      <SCHOOL:col col_name="col2">年級</SCHOOL:col>
      <SCHOOL:col col_name="col3">性別</SCHOOL:col>
      <SCHOOL:col col_name="col4">生日</SCHOOL:col>
      <SCHOOL:col col_name="col5">班級</SCHOOL:col>
      <SCHOOL:col col_name="col6">座號</SCHOOL:col>
    </SCHOOL:row>
    <SCHOOL:row roe_name="row1">
      <SCHOOL:col col_name="col0">102001</SCHOOL:col>
      <SCHOOL:col col_name="col1">蔡承堯</SCHOOL:col>
      <SCHOOL:col col_name="col2">1</SCHOOL:col>
      <SCHOOL:col col_name="col3">男</SCHOOL:col>
      <SCHOOL:col col_name="col4">20060910</SCHOOL:col>
      <SCHOOL:col col_name="col5">01</SCHOOL:col>
      <SCHOOL:col col_name="col6">01</SCHOOL:col>
    </SCHOOL:row>
  </SCHOOL:table>
</SCHOOL:report>

PHP 程式碼:


<?php
 
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->load('students_esa.xml');
 
$students = $dom->getElementsByTagNameNS("http://163.20.240.13", "row");
 
foreach($students as $row){
 $student = $row->getElementsByTagNameNS("http://163.20.240.13", "col");
 
 if( $student->item(0)->nodeValue == '學號'){
 continue;
 }
 $schoolno = $student->item(0)->nodeValue;
 
 $studentName = $student->item(1)->nodeValue;
 $classname = $student->item(2)->nodeValue . $student->item(5)->nodeValue;
 $gender = $student->item(3)->nodeValue;
 
 $birth = $student->item(4)->nodeValue;
 if( strlen($birth) == 8 ){ // 生日為西元年
 $birth = substr($birth,0,4) . "-" . substr($birth, 4,2) . "-" . substr($birth,6,2);
 }else{ // 生日>非西元年
 if( strlen($birth) == 6 ){
 $birth = (substr($birth,0,2)+1911) . "-" . substr($birth, 2,2) . "-" . substr($birth,4,2);
 }elseif( strlen($birth) == 7){
 $birth = (substr($birth,0,3) +1911) . "-" . substr($birth, 3,2) . "-" . substr($birth,5,2);
 }
 }
 
 $classno = $student->item(6)->nodeValue;
 
 $sql_insert =<<<SQLSTRING
 INSERT INTO user(
 username,
 cname,
 classname,
 classno
 )
 VALUES
 (
 '%s',
 '%s',
 '%s',
 '%s'
 )
SQLSTRING;
 
 $conn = mysql_connect('192.168.11.100', 'bob', '!23456');
 mysql_query('SET NAMES "UTF8" ');
 mysql_selectdb('mydb', $conn);
 if( mysql_query($sql_insert, $conn) ){
 echo $studentName . ' 資料已新增!!<br />';
 }else{
 echo $studentName . ' 資料新增失敗!!<br />';
 };
}

博文:匯入 XML 學生資料檔 (使用 Visual Studio)

程式碼: 1060405範例程式碼

伺服端程式:imageToBuffer

/// <summary>
/// 將 Byte 陣列轉換為 Image。
/// </summary>
/// <param name="Buffer">Byte 陣列。</param> 
public static Image BufferToImage(byte[] Buffer)
{
  if (Buffer == null || Buffer.Length == 0) { return null; }
  byte[] data = null;
  Image oImage = null;
  Bitmap oBitmap = null;
  //建立副本
  data = (byte[])Buffer.Clone();
  try
  {
    MemoryStream oMemoryStream = new MemoryStream(Buffer);
   //設定資料流位置
   oMemoryStream.Position = 0;
   oImage = System.Drawing.Image.FromStream(oMemoryStream);
   //建立副本
   oBitmap = new Bitmap(oImage);
  }
  catch
  {
    throw;
  }
  //return oImage;
  return oBitmap;
}

/// <summary>
/// 將 Image 轉換為 Byte 陣列。
/// </summary>
/// <param name="Image">Image 。</param>
/// <param name="imageFormat">指定影像格式。</param> 
public static byte[] ImageToBuffer(Image Image, System.Drawing.Imaging.ImageFormat imageFormat)
{
  if (Image == null) { return null; }
  byte[] data = null;
  using (MemoryStream oMemoryStream = new MemoryStream())
  {
    //建立副本
    using (Bitmap oBitmap = new Bitmap(Image))
    {
      //儲存圖片到 MemoryStream 物件,並且指定儲存影像之格式
      oBitmap.Save(oMemoryStream, imageFormat);
      //設定資料流位置
      oMemoryStream.Position = 0;
      //設定 buffer 長度
      data = new byte[oMemoryStream.Length];
      //將資料寫入 buffer
      oMemoryStream.Read(data, 0, Convert.ToInt32(oMemoryStream.Length));
      //將所有緩衝區的資料寫入資料流
      oMemoryStream.Flush();
    }
  }
  return data;
}

客戶端程式: kendoUI_fileupload

//載入Picupload元件
$("#xml_file").kendoUpload({
 template: kendo.template($('#fileTemplate').html()),
 multiple: false,
 async: {
 saveUrl: "./ASHX/FileUpload.ashx",
 removeUrl: "./ASHX/removeFile.ashx",
 autoUpload: false
 },
 upload: PonUpload,
 remove: PonRemove,
 success: PonSuccess,
 complete: PonComplete,
 enabled: true,
 validation: {
 allowedExtensions: [".xml"]
 }
});

function PonUpload(e) {
 e.data = {
 fcontrol_name: "uploadfile"
 };
 return e;
}

function PonRemove(e) {
 e.data = {
 fcontrol_name: "uploadfile"
 };
 return e;
}

function PonSuccess(e) {

}

function PonComplete(e) {
 var grid = $("#st_grid").data("kendoGrid");
 grid.dataSource.read();
}

//自動轉換儲存單位
function formatBytes(bytes, decimals) {
 if (bytes == 0) return '0 Byte';
 var k = 1000;
 var dm = decimals + 1 || 3;
 var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
 var i = Math.floor(Math.log(bytes) / Math.log(k));
 return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}

<script id="fileTemplate" type="text/x-kendo-template">
 <div>
 <table style="width:100%">
 <tr>
 <td>Name: #=name#</td>
 <td>Size: #=formatBytes(size)#</td>
 <%--<td>Extension: #=files[0].extension#</td>--%>
 <td><button type='button' class='k-upload-action' style='position: absolute; top: 0; right: 0;'>上傳XML檔案</button></td>
 </tr>
 </table> 
 </div>
</script>

保太:Git 程式碼版控

學習資源:

Kendo UI 網路資源:

資訊工作日誌(106年4月份)

4月28日(五):

  • 四年級學生仍有學生校務行政系統自訂帳號有問題,寄出校務行政系統重設自訂帳號申請表給教育局承辦人。
  • 與會計主任討論本校106年行動學習學校發展實施計畫經費概算-經常門項目數量調整事宜。
  • 三年10班鄭佑津老師借平板電腦15台,進行行動學習課程。

4月27日(四):

  • 研究教育局配發的無線基地台 FortiAP – 室內網路AP,並由李櫟永老師帶回班上進行行動學習應用。
  • 研究教育局配發的行動教學包。(中孚科技)
  • 本校行動學習資本門設備採購簽陳核准,相關文件送總務處進行招標採購。
  • 接獲國立臺中教育大學測驗統計與適性學習研究中心通知,本校申請「因材網」學校管理者帳號已開通,隨即登入更改密碼、並設定本校各年級各科教科書版本。
  • 五年5班教室電腦 Z430 故障,螢幕無法顯示,改配發另一台電腦。
  • 與教研中心李緯老師討論本校網路佈線問題,決定啟用 SMC ES4612 Edge-corE網管網路交換器。

4月26日(三):

4月25日(二):

4月24日(一):

  • 詹莉萍老師教師電腦螢幕故障,更換1台。(無電源反應)
  • 四年1班教室單槍吊架前沿過低,請工友協助調整。
  • 配發1條15米VGA線,請工友協助檢測單槍投影有重影問題的VGA線路。
  • 六年10班教室音源線故障,更換1條。
  • 六年級學生本週起開始指導 Arduino UNO 相關創客教學。
  • 本校單槍工期延後公文,發文至新北市汐止國中。
  • 校務評鑑家長問卷轉成 PDF 檔,寄給教務主任,準備列印給家長填答。
  • 請資訊老師協助五、六年級學生填答校務評鑑學生問卷。
  • 四年級學生仍有學生校務行政系統自訂帳號有問題,送出校務行政系統重設自訂帳號申請表。
  • 遞出「本校106年度行動學習學校經費資本門招標採購簽呈」。
  • 誠致教育基金會工程師討論班級組報名「均一教育平台」星空探險隊比賽相關事宜。
    • 新北市學校竟然無「碧華國小」,建議加入。(問題已改善)
    • 從系統匯入的班級學生資料與現況有出入。(因學生資料匯入系統時間較早)
    • 教練功能介面,效能太差,建議採行最新的網頁前端技術改進。(仍待改進)
    • 網頁版面宜考量行動載具操作的方便性。(提高行動學習者的操作意願)
    • 建議系統提供學校管理者介面,便利學校管理者了解全校教師班級管理、報名各項比賽活動情形,亦可方便管理者將學生資料從校務行政系統匯入系統中,減輕教師班級管理的負擔。(學校行政單位支援,提高教師使用意願。)
    • 可對所有學生指派任務,但無法僅針對部份班級指派任務,個別班級須分別指派任務,即使是相同的任務,也必須重新指派,無法將同一個任務,直接指派給不同的班級。(任務宜獨立)

4月21日(五):

4月20日(四):

  • 上午,夥同總務主任、合志工程師小廖、星崴許工程師至本校新建校舍二期工程工地,討論教育局配發的單槍及吊架安裝事宜:
    • 教育局配發之VGA線及HDMI線搭配白色壓條延著吊架上方天花板至黑板內側,使用視訊盒,單槍端只接HDMI線,VGA線不接,音源線不裝,直接發10米音源線給本校。
    • 星崴公司的VGA線、AV線、電源線,接到單槍端。
    • 合志工程師先安裝一間樣品。
    • 因新建校舍尚未完工,發文至教育局,延後安裝時程至七月。
  • 下午,夥同劉孝宏老師與學務主任討論畢業典禮視訊組工作事宜:
    • 資訊科任僅剩 1 名,無法負荷大量的影片後製工作。
    • 六年級老師普遍不願意花時間提供學生活動照片,取消向六年級老師索取學生活動照片,直接從畢業紀念冊光碟取得現成的學生個人照及活動照片。
    • 拍攝六年級學生感言得花非常多課堂時間,每一班至少都得花一節課,嚴重影響資訊課程進度,加上資訊科任僅剩 1 名,無法負荷大量的影片後製工作,取消六年級老師及學生感言攝影工作。(註:為了協助填寫校務評鑑家長及學生問卷、指導學生參與教育局來文相關網路競賽,已嚴重影響學生正常的資訊課程)
    • Live 攝影設備不足、效果不佳,取消畢業典禮當日 Live 攝影。
    • 安排畢業典禮當日定點攝影 1 名、跟拍 2 名,徵詢科任老師支援。
  • 準備採購106年度行動學習相關設備事宜。

4月19日(三):

4月18日(二):

4月17日(一):

  • 合志工程師至校更換電腦教室(二)學生用電腦一台。
  • 敬412教室 Z430 電腦故障,上午先暫時替換 1 台臨時用,下午修復後,再替換回來。(開關卡住,導致才一通電,就自動切斷電源。)
  • 配發實物投影機給本校行動學習團隊成員班級。
  • 下午將即將報廢的電腦、螢幕集中放至敬206教室存放。
  • 回收六年8班舊教室電腦 M8 一套。
  • 本校申請「教育部教師適性教學素養與輔助平臺」學校帳號一案,核判發文。
  • 上網填報「105年政府機關電腦作業效率書面查核」。

4月14日(五):

  • 電腦教室(二)群準廣播系統其中一組學生廣播盒連接的螢幕,一廣播就出現黑畫面,連絡群準工程師協助處理:
    • 重新插拔該組學生廣播盒與前後廣播盒的連接線路,問題解決。
    • 重新更新教師端及學生端廣播盒韌體。
    • 將所有視訊轉接頭及連接線栓緊。
    • 設定教師端主控台的網路設定為固定 IP,網路線直接連接教師端廣播盒,移除寬頻分享器。
    • 重新檢測群準廣播系統,確保不會再出現黑畫面。
  • 晚上至三民高中參加親職講座:網路不成癮-3C時代的親職教養術

4月13日(四):

  • 上午大同工程師至校進行網路設備定期保養。
  • 安裝實物投影機至三間電腦教室。
  • 電腦教室(二)群準廣播系統主控台畫面中,部份學生端座位編號不見了,疑是昨日更新韌體所導致的情形,已向群準工程師反應,在其電話指示下,重設了學生端座位編號。

4月12日(三):

  • 上午11點多,群準工程師至校安裝電腦教室(二)群準電腦教室廣播系統廣播盒韌體,結果發現有2台廣播盒故障,下午警急派人拿新品來更換。
  • 重設校務行政系統學生自訂帳號
  • 下午至教研中心參加「新北市教育局程式應用研發社群工作坊(1060412)」。

4月11日(二):

4月10日(一):

4月7日(五):

4月6日(四):

  • 因應新北市校務行政系統登入頁面強制要求得用「自訂帳號」登入,持續協助老師登入校務行政系統。
  • 上回發文至教育局,重設部份校務行政系統學生自訂帳號,今日起開始通知各教師重設學生自訂帳號。
  • 合志工程師送回本校報修的外接式DVD燒錄機。
  • 下午至中華高中參加「創客工作坊(十) :雷射雕刻創意實作

4月5日(三):