十一月 2024
 123
45678910
11121314151617
18192021222324
252627282930  

彙整

STEAM與運算思維教學實務班–Swift課程(1060721)

日期:106年7月21日(五)

主題:STEAM與運算思維教學實務班–Swift課程

單位:資訊工業策進會 數位教育研究所

主講人:黃正全

上課地點:

  • 台北市信義路三段153號3樓

課程計畫:

課程目標:

  • 受訓老師能夠了解運算思維之流程與步驟
  • 受訓老師能夠分辨不同的程式語言適用之環境
  • 受訓老師能完成Swift Playground的各種任務
  • 受訓老師能夠將Swift課程教案導入校內資訊課程

課程大綱:

  1. STEAM趨勢、運算思維與程式教育
  2. Swift簡介及操作環境介紹
  3. Swift Playgrounds任務關卡實作
  4. Swift課程教案解說

課程內容:

  • 彩虹牧場
  • 彩虹牧場學院 – 資策會
    • (國小_第1梯)Swift程式設計營-自學課程
    • (國中)Swift程式設計營-自學課程
  • 彩虹牧場 | Facebook

Swift Playgrounds

Run Swift code online – Swift Playground | iSwift

學習資源:

認識DiFi學習板

課程主題:認識DiFi學習板

參考網站:竹林資訊站 – 宜蘭縣教育支援平台

  • DiFi第0課認識DiFi學習板及課前準備

DiFi 是 Scratch外部感應器另一種選擇。

DiFi 是一塊整合感測元件在板子上的學習板,可省去接線的困擾。直接用這一片,不用再去接擴充板及繁雜的接線,針對短時間(半天)的研習,做基礎教學應該夠用了。

DiFi 以ESP8266系列wifi晶片為基礎,加上繼電器光敏電阻RGB LED按鍵開關紅外線感測器蜂鳴器DHT11溫濕度感測器等感測元件。

除了基本的感測器之外,你還是可以很容易的再連接麵包板及其他感測器。

因為是以wifi晶片為基礎,也可以做遠端遙控喔!

有3種供電方式:110V ~ 200V 市電、MicroUSB、圓孔5V插座

———————————

因為DiFi的腳位和arduino不同,所以WFduino特別製作了一個腳位對照表方便大家使用。

開啟WFduino,選擇[幫助],[腳位對照表],[DiFi]

就會出現腳位對照表

————————

腳位說明:

A0:讀取類比輸入訊號

D0~D10:數位輸出、輸入,也可以做類比(PWM)輸出。(D9、D10做USB傳輸使用)

3V3:正極(3.3V)

GND:接地(負極)

————————-

實際對照圖如下:

只要將輸出、入腳位用麵包線跟感測器插孔連接,就可以使用。

左上方那個大黑色方塊是[變壓器],可以直接將家用電源的火線、零線(中性線)接上供電。(請參考DiFi第十三課繼電器),比較危險,要注意絕緣,建議教學上不要用。

A是[繼電器]:COM、長閉、常開,接外部要控制的電器。控制方法就是拿一條麵包線,一端接輸出腳位D0~D8其中一個插孔,一端接板子上寫[REALY]的插孔(上圖標a)。使用方法請參考DiFi第十三課繼電器。

C是[蜂鳴器]:控制方法就是拿一條麵包線,一端接輸出腳位D0~D80其中一個插孔,一端接板子上寫[BEEP]的插孔(上圖標c)。使用方法請參考WFduino第七課(蜂鳴器)。

RGB是[RGB三色LED]:燈的顏色分別由板子上的插孔[LEDG](上圖標d)、[LEDR](上圖標e)、[LEDB](上圖標f),來控制綠、紅、藍三個顏色,採用低電位觸發(類似共陽極RGB LED)。使用方法請參考DiFi第2~7課

H是[按鍵]:由板子上的插孔寫[KEY](上圖標h)來控制,使用方法請參考DiFi第九、十課按鍵

J是[光敏電阻]:由板子上的插孔寫[PhotoR](上圖標j)來控制,使用方法請參考DiFi第11課(光敏電阻)

K是[DHT11溫溼度感測器]:由板子上的插孔寫[DHT22](上圖標k)來控制,使用方法請參考DiFi第十五課DHT11溫濕度感測器

M是[紅外線感測器]:由板子上的插孔寫[IRSW](上圖標m)來控制,使用方法請參考DiFi第12課主動式紅外線感測器

板子上寫[D2]的LED由(上圖標D0)的腳位來控制,採用低電位觸發(預設是亮燈)。

數位輸出高電位是3.3V

——————————–

使用USB線連接電腦後,板子上有3顆LED會亮

開啟WFduino,選擇連接埠後,程式會自動掃描附近的基地台,此時板子上寫[D2]的LED(上圖標D0)會先熄滅,等它再次亮起來,就是連接完成了。

——————–

更新韌體:

——————–

1.如果要更新韌體,請選[功能],[韌體更新],選擇板子的型號[ESP8266系列]

2.顯示[正在更新ESP8266晶片]。請稍等

3.顯示[更新完成,請按RST重開,已完成重置動作]。

4.請按板子上面的[RESET]鍵,重新啟動

5.等板子上寫[D2]的LED(上圖標D0)燈亮起,再選一次連接port 就可以使用了。

————————————————-

安裝WFduino

————————————————-

WFduino新版下載使用方法,請參考:

http://blog.ilc.edu.tw/blog/blog/868/post/97509/660050

————————————

安裝離線版Scratch 2.0

————————————

請先連結 Scratch 2.0 離線版 下載網址:https://scratch.mit.edu/scratch2download/

下載安裝檔,然後依照指示安裝即可,過程中會要求安裝[Adobe AIR],就按[確定]把它裝完。

————————————

注意:

WIN7 系統上沒有預設安裝USB連接晶片的驅動程式,所以插上板子不會有動作,請先安裝CH340系列的驅動程式。

參考下載點

win7 http://www.arduined.eu/files/CH341SER.zip

win8 http://www.arduined.eu/files/windows8/CH341SER.zip

Mac http://kig.re/downloads/CH341SER_MAC.ZIP

小學生的 FABLAB 創客教室檔案下載區(黃輝聲老師網頁)

https://app.box.com/shared/iemr21so8a942l6pu9r6tygy787eg7ol/1/3157139133

————————————————————

安裝CH340系列的驅動程式(WIN7 系統)

————————————————————

註:win10系統會自動安裝,chromebook也可以省略這個步驟。

下載程式後解壓縮,請點[CH341SER]資料夾

執行[SETUP.EXE]

點[INSTALL],就可以完成驅動程式安裝。

 

相關連結:

DiFi課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/100870/660551

WFduino(Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433

Kendo UI for Angular

【課程主題】:Kendo UI for Angular

【課程內容】:

範例網站http://webnas.bhes.ntpc.edu.tw/chiubor/ng-demo-kendoui/

範例網站程式下載:ng-demo-kendoui

  • 下載解壓縮後,請至專案資料夾中,下達下列指令:
    • npm install => 重建 node_modules
  • 安裝後若仍有缺元件:
    • npm install –save 元件名稱

注意事項:

  • npm install 完成後,會出現下列警告訊息:

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.2 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

警告原因是因為此元件僅適用於 darwin 作業系統,不適用於 Windows 作業系統,故予以跳過不安裝。

但若有其他元件相依於此元件,將導致其他元件無法正常安裝設定。因此最好是強制將其安裝,否則此訊息及此問題會不斷重演。

強制安裝指令:

npm install --force fsevents


課程相關教材:

開發環境與工具:

更新 Node.js, npm, Angular CLI

Node.js 重新安裝即可

npm i -g npm

npm unstall -g @angular/cli

npm i -g @angular/cli

網站佈署:

ng build --prod --base-href /ng-demo-kendoui/

將專案目錄下的 dist 資料夾整個複製到網站根目錄下(或另建置虛擬目錄),將 dist 更名為 ng-demo-kendoui

重點提示:

  • index.html 中的 base 修改成
    <base href="/VirtualDirectory/">
  • 或是在 build 的時候使用
    ng build --prod --base-href /VirtualDirectory/
    這個帶有 --base-href 參數的指令

Angular 學習資源

Synology NAS 網站維運(1060717)

Synology NAS Server 系統更新:

版本: 6.1.3-15152

(2017/07/13)

問題修正

  1. 修正某些套件可能無法自動修復的問題。
  2. 修正 DS1817 上可能無法建立 SSD cache 的問題。
  3. 修正有關 administrators 群組使用者配額設定的數項問題。
  4. 修正在刪除並重新整理網域清單後,受信任的網域可能無法顯示的問題。
  5. 修正當沒有可用的外部 IP 位址時,存取檔案服務頁面可能會發生連線逾時的問題。
  6. 修正 DSM 在重新開機後可能無法建立網路連線的問題。
  7. 修正有關 FFmpeg 的安全性弱點 (CVE-2017-9993)。
  8. 修正有關 DSM 登入頁面的安全性弱點 (CVE-2017-9553, CVE-2017-9554)。
  9. 修正與 Nginx 相關的安全性漏洞 (CVE-2017-7529)。

版本: 6.1.2-15132-1

(2017/07/10)

問題修正

  1. 修正在刪除並重新整理網域清單後,受信任的網域可能無法顯示的問題。
  2. 修正有關 FFmpeg 的安全性漏洞 (CVE-2017-9993)。

新北市教育局程式應用研發社群工作坊-Angular 2 進階(1060712~0714)

日期:106年7月12日~7月14日

地點:新北市教研中心

公文與計畫:


課程主題:Angular 2 進階

講師:林士立老師

【課程內容】:

開發環境與工具:

安裝開發環境與工具

  • 安裝開發工具 (WebStorm)
  • 安裝 Git
  • 安裝 Chrome 擴充功能:Angular Augury

更新 Node.js, npm, Angular CLI

Node.js 重新安裝即可

npm i -g npm

npm unstall -g @angular/cli

npm i -g @angular/cli

實作操作指令:

練習專案檔下載:ng-demo-routing

  • 下載解壓縮後,請至專案資料夾中,下達下列指令:
    • npm install => 重建 node_modules 

ng new ng-demo-routing --routing

npm start

ng build --prod

ng g c intro/group1

ng g c intro/group2

ng g c navbar

ng g c home

ng g c page-not-found

ng g c intro/intro

ng g m intro --routing


實作延遲載入及預先載入:

練習專案檔下載:ng-demo-routing (同上).

  • 下載解壓縮後,請至專案資料夾中,下達下列指令:
    • npm install => 重建 node_modules 

ng g m m2 --routing

installing module
create src\app\m2\m2-routing.module.ts
create src\app\m2\m2.module.ts
WARNING Module is generated but not provided, it must be provided to be used

ng g c m2/demo1

installing component
create src\app\m2\demo1\demo1.component.css
create src\app\m2\demo1\demo1.component.html
create src\app\m2\demo1\demo1.component.spec.ts
create src\app\m2\demo1\demo1.component.ts
update src\app\m2\m2.module.ts

ng g c m2

installing component
create src\app\m2\m2.component.css
create src\app\m2\m2.component.html
create src\app\m2\m2.component.spec.ts
create src\app\m2\m2.component.ts
update src\app\m2\m2.module.ts


Module 功能介紹

Feature Module => 功能

  • Lazy Loading Module
  • Pre Loading Module

Core Module

Share Module


Angular Form 實作練習:

練習專案檔下載:ng-demo-forms

  • 下載解壓縮後,請至專案資料夾中,下達下列指令:
    • npm install => 重建 node_modules

ng new ng-demo-forms --routing

npm start

ng g c reactive


WebStorm 操作指令:

  • Ctrl + Alt + o:移除未用的指令行
  • Ctrl + Shift + 上下方向鍵:程式碼上下移,若為陣列元素,為自動調整 “," (逗號)。

Todo 專案前、後端程式整合實作

後端程式安裝:

安裝 XAMPP 及 Composer

範例檔下載:ng2-php-todo-demo (註:已將原 vendor 及 node_modules 資料夾刪除)

cd todo-php

composer install => 重建 vendor 資料夾

將 todo-php\app 設為 Apache 首頁路徑

設定 todo-php\.env => 連線至 MySQL 資料庫的組態設定

.\vendor\bin\phinx migrate => 建立測試資料表

使用 http://localhost 測試網站系統

  • adminer.php => MySQL 線上管理程式
  • todos.php => 顯示測試資料表內容

前端 Todo 專案建立實作:

練習專案檔下載:ng-demo-todo

  • 下載解壓縮後,請至專案資料夾中,下達下列指令:
    • npm install => 重建 node_modules

ng new ng-demo-todo --routing

npm start

ng g s todo

app.component.ts

import { Component, OnInit } from '@angular/core';
import { TodoService } from './todo.service';
@Component({
 selector: 'app-root',
 templateUrl: './app.component.html',
 styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
 title = 'app';
todos = []; // {id: 1, title: '...', content: '...'}
constructor(private todoService: TodoService) {}
ngOnInit(): void {
 this.todoService.getlist().subscribe(res => this.todos = res.data);
}
addTodo() {
 let newTodo = {
   title: this.title,
   content: this.title,
 }
 // this.todos.push(newTodo);
 this.todoService.add(newTodo).subscribe(
 // success
   res => {
     newTodo['id'] = res.data.id;
     this.todos.push(newTodo)
   }
 // error
 // complete
 )
 }
}

todo.service.ts

import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions, Response } from '@angular/http';
import 'rxjs/add/operator/map'
@Injectable()
export class TodoService {
headers = new Headers({'Content-Type': 'application/json'});
 options = new RequestOptions({headers: this.headers});
constructor(private http: Http) { }
add(todo) {
 return this.http.post(
   'http://localhost/todos.php?op=addTodo',
   todo,
   this.options
 ).map((res: Response) => res.json());
}
getlist() {
 return this.http.get(
   'http://localhost/todos.php'
   ).map((res: Response) => res.json());
 }
}

 app.component.html

Title:
<input type="text" [(ngModel)]="title">
<button (click)="addTodo()">Submit</button>
<hr />
<ul>
 <li *ngFor="let todo of todos">
   {{ todo.id }} - {{ todo.title }}
 </li>
</ul>

【學習資源】:


Angular 線上讀書會

投影片:Angular 2 新手急救站

投影片:Angular 2 開發實戰:進階開發篇 – RxJS 新手入門


【網路資源】