FireBase資料庫

Size: px
Start display at page:

Download "FireBase資料庫"

Transcription

1 FireBase 資料庫 建國科技大學資管系饒瑞佶 2016/6 V1 2016/9 V2 2016/10 V3

2 FireBase 資料庫 (I) Firebase 是專為行動應用開發者所提供的後端服務平臺 (Backend as a Services,BaaS) Firebase 整併 Google 既有的雲端服務與工具 增加了免費的數據分析工具 雲端訊息推播 通知系統 當機報告 遠端配置及動態連結等功能

3 FireBase 資料庫 (II) Google 目前開放免費使用 Firebase 的服務, 不論是網頁 應用系統或目前最熱門的手機, 都能透過 Firebase 所提供的 API 儲存或讀取在雲端上的資料, 開發人員不需要自己建置資料庫與設計伺服器端的程式, 就能快速地讓自己的應用程式能夠將資料儲存在雲端上

4 Firebase 特色 Schemaless 改以 structure 取代 table fileds 需要網路 內建雙向資料繫結 (two-way data-binding) 改以 API 取代 SQL 指令 回歸到 www 本質, 使用 HTML+JS 就可以存取使用 適合於即時資料分享與更新, 不適合儲存大量資料 不需要租用 / 建置 / 維護伺服器

5 使用 Firebase 使用 Firebase 最快的方式是以原有的 Google 帳號登入並開始使用, 先註冊後再進入網站操作資料

6 使用 Google 帳號登入後 點擊右上方的 Console 即可進入主控台

7 建立新專案

8 輸入專案資料

9 建立專案後 功能區 連結應用程式

10 資料庫管理 (Database) 未來程式連結的根節點

11 建立資料 Firebase 並不是以傳統關連式資料庫的表格, 而是以 JSON 格式儲存資料, 它就是一個 JSON 樹狀結構 (JSON Tree), 請按下加號後, 在 Firebase 中建立一個聯絡人資料的名稱請輸入 contacts/1/name, 值為 小叮噹

12 加入第二筆資料

13 Client 存取 FireBase

14 Client 存取 FireBase 分成有認證 authentication 與沒有認證兩個方式 分成沒有 rules 與有 rules 兩個方式 分成 Web Android 與 ios 三個主要 Client 提供有 JavaScript API REST API Android SDK 與 ios SDK

15 沒有認證 + 沒有 rules

16 JavaScript API jquery vs. Firbase

17 訂定讀寫規則 連結 Firebase 中的 contacts 記錄 請按上方的 規則 標籤進行資料存取的規劃訂定 Firebase 預設只有已經驗證過的帳號才能夠讀取 (read) 或寫入 (write) 資料

18 訂定讀寫規則後發佈 true 代表不設定 rules

19 第一種取得資料方法

20 <script src=' <script src=" <script src=' <script> $(document).ready(function(){ // Initialize Firebase var config = { apikey: "AIzaSyDjjqsqfpcYJSQim2wqpldIUwuM8rg5E80", authdomain: "test-73ef6.firebaseapp.com", databaseurl: " storagebucket: "test-73ef6.appspot.com", messagingsenderid: " " }; firebase.initializeapp(config); }); </script>

21 即時資料更新 Firebase 上節點資料有更新時, 可以同步通知其他 client 進行更新 Firebase data structure

22 作法 針對節點透過 on 或 once 事件讀取 需要注意節點的 rules 規則設定

23 同步讀取資料 <script> $(document).ready(function(){ // Initialize Firebase var config = { apikey: "AIzaSyDjjqsqfpcYJSQim2wqpldIUwuM8rg5E80", authdomain: "test-73ef6.firebaseapp.com", databaseurl: " storagebucket: "test-73ef6.appspot.com", messagingsenderid: " " }; firebase.initializeapp(config); // 同步顯示資料 var db = firebase.database(); db.ref("messages/").on("value", function(snap) { var data = snap.val(); // 顯示資料到 UI document.getelementbyid('messagesdiv').innerhtml= data; }, function(err) { alert(' 取得資料失敗!'); }); }); </script> <div id='messagesdiv'></div>

24 可以直接放入 Tibbo 中的 web server 執行

25 如果改 Firebase 上的資料?

26 第二種取得資料方法

27 步驟 1 引入必要的 js 函示庫 In HTML <head> section <script src=' ebase.js'></script> <script src=' /1.9.0/jquery.min.js'></script>

28 步驟 2 連結存取 Data 的 URL 位置 在註冊登入 FireBase 後建立 project 就可以取得

29 步驟 3 取得資料 為達到當資料寫入 FireBase 時能即時更新畫面, 需要監聽 child_added 事件, 共有 5 種事件 :1. Value 2. Child Added 3. Child Changed 4. Child Removed 5. Child Moved, 當資料寫入後 callback function 將執行後續動作 請加入下列監聽事件 mydataref.on('child_added', function(snapshot) { });

30 使用回傳資料 Snapshots 使用 jquery 將 callback function 傳回的資料顯示在畫面上 // 監聽事件 mydataref.on('child_added', function(snapshot) { var message = snapshot.val(); displaychatmessage(message.name, message.text); }); function displaychatmessage(name, text) { $('<div/>').text(text).prepend($('<em/>').text(name+': ')).appendto($('#messagesdiv')); };

31 步驟 4 顯示資料 <body> <div id='messagesdiv'></div> <script> var dbref = new Firebase(" var mydataref = dbref.child('member') // 資料庫名稱 // 監聽事件 mydataref.on('child_added', function(snapshot) { var message = snapshot.val(); displaychatmessage(message.name, message.age); }); function displaychatmessage(name, age) { $('<div/>').text(age).prepend($('<em/>').text(name+': ')).appendto($('#messagesdiv')); }; </script> </body>

32 改用 list 顯示資料 var mydataref = new Firebase( 節點 /'); $(document).ready(function () { mydataref.once('value', function (snapshot) { var data = snapshot.val(); var list = []; for (var key in data) { if (data.hasownproperty(key)) { name = data[key].name? data[key].name : ''; text = data[key].text? data[key].text : ''; if (name.trim().length > 0) { list.push({ name: name + text, key: key }) } } } // refresh the UI refreshui(list); }); property

33 用 list 取得資料 function refreshui(list) { var lis = ''; for (var i = 0; i < list.length; i++) { lis += '<li data-key="' + list[i].key + '">' + list[i].name + '</li>'; }; document.getelementbyid('messagesdiv').innerhtml = lis; } }); 顯示資料的 <div>

34 加入資料異動

35 <div id='messagesdiv'></div> <input type='text' id='nameinput' placeholder='name'> <input type='text' id='ageinput' placeholder='message'> <script> var mydataref = new Firebase(' $(document).ready(function(){ showdata(); // 顯示資料 $('#ageinput').keypress(function (e) { if (e.keycode == 13) { var name = $('#nameinput').val(); var age = $('#ageinput').val(); mydataref.push({name: name, age: age}) $('#messagesdiv').empty(); $('#nameinput').val(''); $('#ageinput').val(''); alert('ok'); showdata(); }); } }); Firebase 使用 chronologicallyordered globally-unique IDs 當做 key 改成 set 可以修改資料改成 remove 可以刪除

36 function showdata(){ mydataref.once('value', function (snapshot) { var data = snapshot.val(); var list = []; for (var key in data) { if (data.hasownproperty(key)) { name = data[key].name? data[key].name : ''; age = data[key].age? data[key].age : ''; if (name.trim().length > 0) { list.push({ name: name + age, key: key }) } } } // refresh the UI refreshui(list); }); } function refreshui(list) { var lis = ''; for (var i = 0; i < list.length; i++) { lis += '<li data-key="' + list[i].key + '">' + list[i].name + '</li>'; }; document.getelementbyid('messagesdiv').innerhtml = lis; } </script>

37 如果要加一個節點 var dbref = new Firebase(' var mydataref = dbref.child( contacts1 ) // 加入 contacts1 節點

38 上述範例可以直接轉換成 ASP.NET vs. Firbase

39 第三種取得資料方法 FireSharp

40 FireSharp Docs Installation (NuGet) Install-Package FireSharp -Version Install-Package FireSharp.Serialization.JsonNet Install-Package FireSharp.Serialization.ServiceStack

41 For ASP.NET 與 WinForm 與 WebService protected void Button1_Click(object sender, EventArgs e) { IFirebaseConfig config = new FirebaseConfig(); // Firebase URL config.basepath = " config.serializer = new ServiceStackJsonSerializer(); //Register ServiceStack.Text config.serializer = new JsonNetSerializer(); //Register Json.Net } IFirebaseClient client = new FirebaseClient(config); // 要異動的資料, 需要建立 class Todo var todo = new Todo { name = TextBox1.Text, age = Convert.ToInt16(TextBox2.Text) }; // 下面可以改用 SET,REMOVE,UPDATE 等方法 PushResponse response = client.push("user/1", todo); Response.Write(response.Result.Name); // 傳回 key

42 Todo.cs internal class Todo { public string name { get; set; } public int age { get; set; } }

43 FireSharp 取得資料 IFirebaseConfig config = new FirebaseConfig(); // Firebase URL config.basepath = " config.serializer = new ServiceStackJsonSerializer(); //Register ServiceStack.Text config.serializer = new JsonNetSerializer(); //Register Json.Net IFirebaseClient client = new FirebaseClient(config); FirebaseResponse response = client.get("contacts/1"); Todo todo = response.resultas<todo>(); Response.Write(todo.name);

44 如果有設定 rule ".read" :"auth!=null 需要加入 config.authsecret 設定 以下取得 secret

45 修改 code 加入本行 IFirebaseConfig config = new FirebaseConfig(); // Firebase URL config.authsecret = xxxxxxxxxxx"; config.basepath = " config.serializer = new ServiceStackJsonSerializer(); //Register ServiceStack.Text config.serializer = new JsonNetSerializer();

46 修改資料 var todo1 = new Todo { name = "rcjao", age = 11 }; FirebaseResponse response1 = client.update("contacts/3", todo1); 如果用下方指令, 會直接在跟節點下方新增 name 與 age 兩個屬性資料 FirebaseResponse response1 = client.update("", todo1);

47 Firbase REST API

48 REST API rt.html 透過 curl 進行傳輸 curl -X PUT -d '{ "alanisawesome": { "name": "Alan Turing", "birthday": "June 23, 1912" } }' '

49 使用 ASP.NET 撰寫 curl 連結 FireBase 寫入資料 protected void Page_Load(object sender, EventArgs e) { // 後面的每段都是一個節點, 最後一段 users 就是結點名稱 var url = " var jsondata = "{\"name\":\"ctu\",\"birthday\":\"june 23, 2016\"}"; } using (var client = new WebClient()) { client.headers.add("content-type", "application/json"); var response = client.uploadstring(url, jsondata); }

50 讀取 FireBase 資料 public string GetFireBase() { string response; // 後面的每段都是一個節點, 最後一段 users 就是結點名稱 var url = " } using (var client = new WebClient()) { client.encoding = System.Text.Encoding.UTF8; client.headers.add("content-type", "application/json"); byte[] bresult = client.downloaddata(url); response = Encoding.UTF8.GetString(bResult); } return response;

51 Android vs. Firbase

52 Android 端 建立新專案與新 Activity

53 導入 Firebase Android API 加入 firebase SDK

54 Add Android Permissions <uses-permission android:name="android.permission.internet " />

55 Setup Firebase on Android Activity's oncreatemethod

56 Read & Write to your Firebase Database by passing the URL of your database into the Firebase constructor Firebase myfirebaseref = new Firebase("

57 Reading Data by attaching an event listener and handling the resulting events. myfirebaseref.child("contacts").addvalueeventlistener(new ValueEventListener() public void ondatachange(datasnapshot snapshot) { tv1.settext(snapshot.child("1").child("name").getvalue().tostring()); } public void oncancelled(firebaseerror error) { }

58 Writing Data // 寫入資料 myfirebaseref.child("contacts").child("3").child("name").setvalue(" 來自 android"); myfirebaseref.child("contacts").push().child("name").setvalue("aaa");

59 整筆寫入 建立 class User public class User { public String name; public int age; public User() { // constructor } { } } public User(String inputname, int inputage) this.name = inputname; this.age = inputage; User user = new User("ctuim", 23); myfirebaseref.child("contacts").push().setvalue(user);

60 整筆讀取 透過前面的 class User myfirebaseref.child("contacts/1").addvalueeventlistener(new ValueEventListener() public void ondatachange(datasnapshot snapshot) { tv1.settext(snapshot.child("name").getvalue().tostring()); // 整筆讀取 User post = snapshot.getvalue(user.class); Toast.makeText(Main.this,post.name.toString(),Toast.LENGTH_LONG).show(); } public void oncancelled(firebaseerror error) { }

61 透過 ListView 顯示 (I) ListView list = (ListView) findviewbyid(r.id.listview); final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, android.r.id.text1); list.setadapter(adapter); 需要 Firebase.setAndroidContext(this);

62 透過 ListView 顯示 (II) String url = " new Firebase(url).addChildEventListener( new ChildEventListener() public void onchildadded(datasnapshot datasnapshot, String s) { adapter.add((string) datasnapshot.child("name").getvalue()); public void onchildremoved(datasnapshot datasnapshot) { adapter.remove((string) datasnapshot.child("name").getvalue()); public void onchildmoved(datasnapshot datasnapshot, String s) { public void oncancelled(firebaseerror firebaseerror) { public void onchildchanged(datasnapshot datasnapshot, String s) { }); } 如果要同步更新, 可把本段放在 ondatachange 內

63 Firebase Authentication

64 共有 6 種方法 多數是使用 rule:auth!=null 需要做的都寫在 firebase.auth().onauthstatechanged 事件中

65 Github Sample 要安裝 Firebase CLI( 要安裝有 NODE.JS) npm install -g firebase-tools 啟動 SERVER( 需要到指定目錄, 且目錄下要有 firebase.json) 模擬 www server firebase serve

66 測試匿名認證

67 測試 Anonymous Authentication 啟用認證 加入 JS CODE 不需要 Firebase CLI 在 firebase.auth().onauthstatechanged 中加入讀寫程式 ( 可配合 P19 中第一種取得資料方法 )

68 測試 Google 認證

69 測試 Google Sign-in(1) 啟用認證 加入 JS CODE 建立 Oauth 憑證 entials 需要 Firebase CLI

70 測試 Google Sign-in(2) 選擇專案

71 測試 Google Sign-in(3)

72 取得 Client-ID 測試 Google Sign-in(3)

73 測試 google-credentials.html 將目錄切換到 google-credentials.html 所在目錄 啟動 firebase serve

74 修改 google-credentials.htm 填入 Client-ID 加入 js

75 執行 在 firebase.auth().onauthstatechanged 中加入讀寫程式 ( 可配合 P19 中第一種取得資料方法 )

76 測試 FB 認證

77 需要 Firebase CLI FB 建立應用程式

78 測試 facebook-credentials.html 啟用認證

79 修改 facebook-credentials.html 加入 JS CODE 修改 FB CODE

80 執行 在 firebase.auth().onauthstatechanged 中加入讀寫程式 ( 可配合 P19 中第一種取得資料方法 )

81 測試 custom 認證

82 建立 service count json file redentials/serviceaccountkey?project=_

83 修改 exampletokengenerator\auth.html 修正 註解掉, 否則無法執行!

84 執行 auth.html

85 執行 customauth.html

86 JavaScript API Web Application

87 Firebase Authentication 6 種不同方式

88 啟用電子郵件 / 密碼

89 建立帳號 直接建立 重要的參數

90 Database structure 第一個節點第二個節點 ( 使用者的 UID) 設定讀寫規則需要節點 UID== 登入認證的 UID

91 透過程式 建立帳號 首先將 firebase 加入 web 網路應用

92 建立帳號 // 利用 建立使用者 firebase.auth().createuserwith andpassword(" ", "password").then(function(){ alert(' 建立完成 '); }).catch(function(error) { // 建立失敗 var errorcode = error.code; var errormessage = error.message; alert(errormessage); });

93 搭配 jquery 加入 jquery <script src=' y/1.9.0/jquery.min.js'></script>

94 使用 jquery 設計註冊程式 <script> $(document).ready(function(){ // Initialize Firebase var config = { apikey: "AIzaSyDjjqsqfpcYJSQim2wqpldIUwuM8rg5E80", authdomain: "test-73ef6.firebaseapp.com", databaseurl: " storagebucket: "test-73ef6.appspot.com", messagingsenderid: " " }; firebase.initializeapp(config);

95 使用 jquery 設計註冊程式 $('#signup').click(function(){ // 利用 建立使用者 var =$('#mail').val(); var password=$('#pwd').val(); firebase.auth().createuserwith andpassword( , password).then(function(){ alert(' 建立完成 '); }).catch(function(error) { // 建立失敗 }); }); }); </script> var errorcode = error.code; var errormessage = error.message; alert(errormessage);

96 UI <body> <h1>firebase Authentication 建立電子郵件 / 密碼 </h1> <br> <input type=text id="mail"> <br> 密碼 :<input type=password id="pwd"> <br><input type=button value= 註冊 " id="signup"> </body>

97 登入 UI <body> <h1>firebase Authentication 建立電子郵件 / 密碼 </h1> <br> <input type=text id="mail"> <br> 密碼 :<input type=password id="pwd"> <br><input type=button value=" 註冊 " id="signup"> <input type=button value=" 登入 " id="login"> </body>

98 登入 // 登入 $('#login').click(function(){ var =$('#mail').val(); var password=$('#pwd').val(); // 使用 登入 Firebase firebase.auth().signinwith andpassword( , password).then(function(){ alert(' 登入成功 '); }).catch(function(error) { var errorcode = error.code; var errormessage = error.message; alert(" 登入失敗 :"+errorcode+"\n 訊息 :"+errormessage); }); });

99 登入後觸發事件 firebase.auth().onauthstatechanged // 不管登入成功或失敗, 都會觸發 firebase.auth().onauthstatechanged((user) => { if (user) { // 登入成功, 取得使用者 //alert(user.uid); // 登入者的 uid // 儲存 uid, 之後讀取與寫入資料用 localstorage.setitem("uid", user.uid); }else{ alert(' 尚未登入 '); } });

100 登出 UI <body> <h1>firebase Authentication 建立電子郵件 / 密碼 </h1> <br> <input type=text id="mail"> <br> 密碼 :<input type=password id="pwd"> <br><input type=button value=" 註冊 " id="signup"> <input type=button value=" 登入 " id="login"> <input type=button value=" 登出 " id="logout" style="display: none;"> </body>

101 登出 修改登入 firebase.auth().signinwith andpassword( , password).then(function(){ alert(' 登入成功 '); $("#logout").show(); $("#login").hide(); }).catch(function(error) { var errorcode = error.code; var errormessage = error.message; alert(" 登入失敗 :"+errorcode+"\n 訊息 :"+errormessage); });

102 登出 $('#logout').click(function(){ firebase.auth().signout().then(function() { alert(' 已登出 '); $("#logout").hide(); $("#login").show(); }, function(error) { alert(' 登出失敗 '); }); });

103 登入後顯示資料 設定讀取規則 rules 規則需要搭配資料庫結構而訂

104 rules 第一個節點第二個節點 ( 使用者的 UID) 設定讀寫規則需要節點 UID== 登入認證的 UID

105 資料結構 第一個節點 第二個節點 ( 使用者的 UID) 要讀取的資料

106 依 rule 讀取資料 首先加入 Firebase client <script src=' ebase.js'></script>

107 依 rule 讀取資料 UI <body> <h1>firebase</h1> <br> <input type=text id="mail"> <br> 密碼 :<input type=password id="pwd"> <br><input type=button value=" 註冊 " id="signup"> <input type=button value=" 登入 " id="login"> <input type=button value=" 登出 " id="logout" style="display: none;"> <input type=button value=" 顯示資料 " id="showdata" style="display: none;"> <div id='messagesdiv'></div> </body>

108 依 rule 讀取資料 修改登入 / 登出 firebase.auth().signinwith andpassword( , password).then(function(){ alert(' 登入成功 '); $("#logout").show(); $("#showdata").show(); $("#login").hide(); }).catch(function(error) { var errorcode = error.code; var errormessage = error.message; alert(" 登入失敗 :"+errorcode+"\n 訊息 :"+errormessage); });

109 依 rule 讀取資料 只要登入 / 登出狀態改變會觸發 firebase.auth().onauthstatechanged 裡面將會有登入者資訊 user, 前面已經將其儲存起來 localstorage.setitem("uid", user.uid); 使用登入者資訊判定是否登入與登入者身分, 再配合 rule 設定, 決定是否能讀取資料?

110 依 rule 讀取資料 (1) // 顯示資料 $('#showdata').click(function(){ // 開始讀取資料 ( 這裡與.read:true 設定時的讀取方式不同 ) var uid= localstorage.getitem("uid"); // 取回 uid var db = firebase.database(); db.ref("user/" + uid).once("value", function(snap) { var data = snap.val(); var list = []; for (var key in data) { if (data.hasownproperty(key)) { name = data[key].name? data[key].name : ''; age = data[key].age? data[key].age : '';

111 依 rule 讀取資料 (2) if (name.trim().length > 0) { list.push({ name: name, age : age, key: key }) } } } // 顯示資料到 UI refreshui(list); }, function(err) { alert(' 取得資料失敗!'); }); });

112 依 rule 讀取資料 (3) // 使用 jquery 更新畫面 function refreshui(list) { var lis = ''; for (var i = 0; i < list.length; i++) { lis += '<li data-key="' + list[i].key + '">' + list[i].key + '/' + list[i].name + '/' + list[i].age + '</li>'; }; document.getelementbyid('messagesdiv').innerhtml = lis; }

113 加入顯示條件 搜尋 name 中是 ray 的資料 db.ref("user/" + uid).orderbychild("name").equalto("ray").once("value", function(snap) { 搜尋 name 中 c 開頭到 d 開頭的資料.orderByChild("name").startAt("c").endAt("d\uf8ff") 顯示前 3 筆資料.limitToFirst(3)

114 加入顯示條件 依據 key 排序.orderByKey() Like + % -part-2-advanced-searches-with.html

115 依 rule 寫入資料 UI <body> <h1>firebase</h1> <br> <input type=text id="mail"> <br> 密碼 :<input type=password id="pwd"> <br><input type=button value=" 註冊 " id="signup"> <input type=button value=" 登入 " id="login"> <input type=button value=" 登出 " id="logout" style="display: none;"> <input type=button value=" 顯示資料 " id="showdata" style="display: none;"> <div id='messagesdiv'></div> <div id="newdata" style="display: none;"> name:<input type=text id="newname"> <br>age:<input type=password id="newage"> <br><input type=button value=" 建立資料 " id="createdata"> </div> </body>

116 依 rule 寫入資料 修改登入 firebase.auth().signinwith andpassword( , password).then(function(){ alert(' 登入成功 '); $("#logout").show(); $("#showdata").show(); $("#newdata").show(); $("#login").hide(); }).catch(function(error) { var errorcode = error.code; var errormessage = error.message; alert(" 登入失敗 :"+errorcode+"\n 訊息 :"+errormessage); });

117 依 rule 寫入資料 // 建立資料 $('#createdata').click(function(){ var uid= localstorage.getitem("uid"); // 取回 uid var newname = $('#newname').val(); var newage = $('#newage').val(); var db = firebase.database(); db.ref("user/" + uid).push({name: newname, age: newage}, function(error) { if (error) alert(' 建立失敗 '); else{ alert(' 建立成功 '); $('#showdata').click(); } }); });

118 刪除資料 修改顯示資料函數 function refreshui(list) function refreshui(list) { var lis = ''; for (var i = 0; i < list.length; i++) { lis += '<li data-key="' + list[i].key + '">' + list[i].key + '/' + list[i].name + '/' + list[i].age + '</li><input class="del" type="button" data-key="' + list[i].key + '" value=" 刪除 "><input class="modify" type="button" data-key="' + list[i].key + '" value=" 修改 ">'; }; document.getelementbyid('messagesdiv').innerhtml = lis; }

119 刪除資料 加入按鈕事件 // 取得刪除按鈕事件 $("#messagesdiv").on("click", "input.del", function () { DeleteNode($(this).attr('data-key')); });

120 刪除資料 加入對應的函數 DeleteNode // 刪除資料 function DeleteNode(nodeid) { // Get a key for a new Post. var uid = localstorage.getitem("uid"); // 取回 uid var db = firebase.database(); db.ref("user/" + uid + "/" + nodeid).remove( function (error) { if (error) alert(' 刪除失敗 '); else { alert(' 刪除成功 '); $('#showdata').click(); } }); }

121 修改資料 加入按鈕事件 // 取得修改按鈕事件 $("#messagesdiv").on("click", "input.modify", function () { var newname = $('#newname').val(); var newage = $('#newage').val(); writenewpost($(this).attr('data-key'), newname, newage) //alert($(this).attr('data-key')); });

122 修改資料 加入對應的函數 writenewpost // 修改資料 function writenewpost(nodeid, name, age) { // 修改資料集 var postdata = { name: name, age: age }; var uid = localstorage.getitem("uid"); // 取回 uid var db = firebase.database(); db.ref("user/" + uid + "/" + nodeid).update(postdata, function (error) { if (error) alert(' 修改失敗 '); else { alert(' 修改成功 '); $('#showdata').click(); } }); }

123 Android Application by /PWD

124 Android vs. Firbase auth 2016/10 v1 th/android/password-auth

125 Create a New Project

126 導入 Firebase Android API 加入 firebase SDK

127 app buid.gradle 加入 compile 'com.google.firebase:firebaseauth:9.6.1'

128 取得開發環境金鑰的指紋碼 選取並複製 SHA1 後方的指紋碼

129 取得 google-services.json 設定檔

130 下載設定檔 google-service.json

131 放入 google-service.json

132 google-service.json 這裏面有連結到 firebase 的資訊

133 最後 build.gradle 中加入必要的函式庫 與外掛語法

134 專案層級的 build.gradle

135 應用程式階層的 build.gradle 最後, 請按一下顯示在 IDE 中工具列上的 [ 立即同步處理 ]

136 如果錯誤 Error:Execution failed for task ':app:processdebuggoogleservices'. > Missing api_key/current_key object 重新再產生一次 google-service.json 裡面就會有 api_key": [ { "current_key"

137 Firebase Notification

138 更新 Google Repository

139 加入 修正 app\build.gradle compile 'com.google.firebase:firebasecore:9.6.1 compile 'com.google.firebase:firebasemessaging:9.6.1'

140 In Firebase

141 設定訊息與發送對象 當初設定的 packagename

142 建立 帳號

143 LAYOUT <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" 帳號 :" android:textsize="20sp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>

144 LAYOUT <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" 密碼 :" android:textsize="20sp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onclick="signup" android:text="register" /> </LinearLayout> </LinearLayout>

145 CODE private FirebaseAuth mauth; private EditText m field; private EditText protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } mauth = FirebaseAuth.getInstance(); m field = (EditText) findviewbyid(r.id.field_ ); mpasswordfield = (EditText) findviewbyid(r.id.field_password);

146 CODE // 註冊帳號按鈕 public void signup(view v){ mauth.createuserwith andpassword( m field.gettext().tostring(), mpasswordfield.gettext().tostring()).addoncompletelistener(this, new OnCompleteListener<AuthResult>() public void oncomplete(@nonnull Task<AuthResult> task) { Toast.makeText(Main.this, "Sign-up successfully", Toast.LENGTH_SHORT).show(); if (!task.issuccessful()) { Toast.makeText(Main.this, "Sign-up FAIL", Toast.LENGTH_SHORT).show(); } } }); }

147 登入

148 UI 加入 login button <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onclick="login" android:text="login" />

149 private FirebaseAuth.AuthStateListener protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); mauth = FirebaseAuth.getInstance(); m field = (EditText) findviewbyid(r.id.field_ ); mpasswordfield = (EditText) findviewbyid(r.id.field_password); } mauthlistener = new FirebaseAuth.AuthStateListener() public void onauthstatechanged(@nonnull FirebaseAuth firebaseauth) { FirebaseUser user = firebaseauth.getcurrentuser(); if (user!= null) { // User is signed in Log.d("AAA", "onauthstatechanged:signed_in:" + user.getuid()); Toast.makeText(Main.this, " 歡迎登入 Firebase:" + user.getuid(),toast.length_short).show(); } else { // User is signed out Log.d("AAA", "onauthstatechanged:signed_out"); Toast.makeText(Main.this, " 您已登出 Firebase",Toast.LENGTH_SHORT).show(); } } };

150 // 登入 public void login(view v) { mauth.signinwith andpassword(m field.gettext().tostring(), mpasswordfield.gettext().tostring()).addoncompletelistener(this, new OnCompleteListener<AuthResult>() public void oncomplete(@nonnull Task<AuthResult> task) { Log.d("AAA", "signinwith oncomplete:" + task.issuccessful()); if (!task.issuccessful()) { Log.w("AAA", "signinwith failed", task.getexception()); Toast.makeText(Main.this, " 認證錯誤 ",Toast.LENGTH_SHORT).show(); } } }); protected void onstart() { super.onstart(); mauth.addauthstatelistener(mauthlistener); protected void onstop() { super.onstop(); if (mauthlistener!= null) { mauth.removeauthstatelistener(mauthlistener); } }

151 登出

152 UI 加入 <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="logout" android:onclick="logout" />

153 code // 登出 public void logout(view v) { FirebaseAuth.getInstance().signOut(); }

154 寫入資料

155 修改 build.gradle 加入 compile 'com.google.firebase:firebasedatabase:9.6.1'

156 // 寫入資料 寫入資料 <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="writedata" android:onclick="writedata" /> public void writedata(view v) { FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myref = database.getreference("contacts"); // myref.setvalue("abcd").addoncompletelistener(this, new OnCompleteListener<Void>() { // public void oncomplete(@nonnull Task<Void> task) { // if (!task.issuccessful()) { // Toast.makeText(Main1.this, "Write FAIL", Toast.LENGTH_SHORT).show(); // } // } // }); User user = new User("ctuim", 23); myref.push().setvalue(user).addoncompletelistener(this, new OnCompleteListener<Void>() public void oncomplete(@nonnull Task<Void> task) { if (!task.issuccessful()) { Toast.makeText(Main1.this, "Write FAIL", Toast.LENGTH_SHORT).show(); } } }); }

157 配合 UID 寫入資料 String loginuseruid; // 取得登入者 FIRBASE 上的 UID 在 onauthstatechanged 中加入 loginuseruid=user.getuid(); 修正下面紅框部分 User user = new User("ctuim", 23); myref.child(loginuseruid).push().setvalue(user).addoncompletelistene r 注意要判斷 loginuserid 是否有值?

158 配合設定 rules 第一個節點第二個節點 ( 使用者的 UID) 設定讀寫規則需要節點 UID== 登入認證的 UID

159 顯示資料

160 使用 ListView UI 加入 <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" />

161 String loginuseruid; // 取得登入者 FIRBASE 上的 UID ArrayAdapter<String> adapter; //FOR Listview 下段加入 oncreate(bundle savedinstancestate) // 使用 listview ListView list = (ListView) findviewbyid(r.id.listview2); adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,android.R.id.text1); list.setadapter(adapter);

162 <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="showdata" android:onclick="showdata" /> public void showdata(view v) { if (loginuseruid!= null) { FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myref = database.getreference("contacts/" + loginuseruid);// Read from the database myref.addvalueeventlistener(new ValueEventListener() public void ondatachange(com.google.firebase.database.datasnapshot datasnapshot) { for (DataSnapshot child : datasnapshot.getchildren()) { adapter.add(datasnapshot.child(child.getkey()).child("name").getvalue(string.class)); } public void oncancelled(databaseerror error) { // Failed to read value } Toast.makeText(Main1.this, " 讀取失敗 ", Toast.LENGTH_SHORT).show(); } }); } else { Toast.makeText(Main1.this, " 尚未登入 ", Toast.LENGTH_SHORT).show(); }

163 Storage

164 設定 需要啟動 加入 JS CODE 設定上傳的節點

165 執行

166 Firebase

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

Android Fragment

Android Fragment Android Fragment 建國科技大學資管系饒瑞佶 2017/10 V1 Android 3.0 後才支援 Fragment 解決部分 App 適應螢幕大小的問題 它類似於 Activity, 可以像 Activity 可以擁有自己的版面設計, 也和 Activity 一樣有自己的生命週期 ( 具備 oncreate() oncreateview() 與 onpause() 方法 ) LifeCycle

More information

導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式

導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式 導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式語言篇第 3 章 C# 程式語言基礎 C# C# 3.0 var 第 4 章 基本資料處理 C# x

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

建立Android新專案

建立Android新專案 經濟部工業局 Android 智慧型手機程式設計實務應用班 Android WebService 建國科技大學資管系 饒瑞佶 2012/4 WebService 需要 ksoap2-android-assembly-2.5.2-jar-withdependencies.jar 或 ksoap2-android-assembly-2.5.2-jar-withdependencies_timeout1.jar

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

Dynamic Layout in Android

Dynamic Layout in Android Dynamic Layout in Android 建國科技大學資管系 饒瑞佶 2013/5 V1 Layout 多半都透過 res/layout/xml 格式設定來達成 Android 是 OOP, 所以可以動態產生 Layout 重點是 Layout 的階層關係 (Hierarchy) 需要處理對應事件 最後一樣用 setcontentview 加入 Layout 一 加入現有 Layout 中

More information

RecyclerView and CardVew

RecyclerView and CardVew RecyclerView and CardView 建國科技大學資管系饒瑞佶 2017/10 V1 CardView CardView A CardView is a ViewGroup. Like any other ViewGroup, it can be added to youractivity or Fragment using a layout XML file. To create an

More information

chapter 2 HTML5 目錄iii HTML HTML HTML HTML HTML canvas

chapter 2 HTML5 目錄iii HTML HTML HTML HTML HTML canvas Contents 目錄 chapter 1 1-1... 1-2 1-2... 1-3 HTML5... 1-3... 1-5 1-3... 1-9 Web Storage... 1-9... 1-10 1-4 HTML5... 1-14... 1-14... 1-15 HTML5... 1-15... 1-15... 1-16 1-5... 1-18 Apps... 1-18 HTML5 Cache

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

RUN_PC連載_8_.doc

RUN_PC連載_8_.doc PowerBuilder 8 (8) Web DataWindow ( ) DataWindow Web DataWindow Web DataWindow Web DataWindow PowerDynamo Web DataWindow / Web DataWindow Web DataWindow Wizard Web DataWindow Web DataWindow DataWindow

More information

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii 前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time

More information

投影片 1

投影片 1 2014 大 學 18 學 群 講 座 管 理 / 財 經 / 建 築 / 資 訊 學 群 介 紹 主 講 人 : 張 奇 博 士 張 奇 老 師 簡 介 學 術 經 歷 高 中 輔 導 經 歷 «英 國 倫 敦 大 學 國 王 學 院 博 士 後 研 究 員 «高 雄 女 中 竹 北 高 中 彰 化 高 中 中 和 高 中 衛 道 中 學 彰 «國 立 大 學 企 業 管 理 學 博 士 化 藝

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

Android Android Android SDK iv

Android Android Android SDK iv Android Market Google Android SDK Apple Google Microsoft b2c b 2010 Internet Android how why iii Android 240... Android Android SDK iv Android Market Google Android SDK Visual C++ Java N-tier J2EE Unix/Linux

More information

關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK

關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK 2 l 跨裝置網頁設計 Android ios Windows 8 BlackBerry OS Android HTML 5 HTML 5 HTML 4.01 HTML 5 CSS 3 CSS 3 CSS 2.01 CSS 3 2D/3D PC JavaScript

More information

05 01 accordion UI containers 03 Accordion accordion UI accordion 54

05 01 accordion UI containers 03 Accordion accordion UI accordion 54 jquery UI plugin Accordion 05 01 accordion UI containers 03 Accordion accordion UI accordion 54 05 jquery UI plugin 3-1

More information

Partition Key: 字 符 串 类 型, 表 示 当 前 Entity 的 分 区 信 息 这 个 Property 对 于 Table Service 自 动 纵 向 和 横 向 扩 展 至 关 重 要 Row Key: 字 符 串 类 型, 在 给 定 Partition Key 的

Partition Key: 字 符 串 类 型, 表 示 当 前 Entity 的 分 区 信 息 这 个 Property 对 于 Table Service 自 动 纵 向 和 横 向 扩 展 至 关 重 要 Row Key: 字 符 串 类 型, 在 给 定 Partition Key 的 4.2 使 用 Table Service Table Service 相 对 来 说 是 三 个 Storage Service 中 最 好 理 解 和 最 易 于 接 受 的, 它 主 要 用 来 存 储 结 构 化 数 据 但 是 Table Service 却 并 不 是 一 个 关 系 型 数 据 库 Table Service 由 两 个 部 分 组 成 :Table 和 Entity

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

實作SQLiteOpenHelper類別

實作SQLiteOpenHelper類別 SQLiteOpenHelper 類別存取 SQLite 建國科技大學資管系 饒瑞佶 2013/5 V1 Android 連結資料庫 MySQL SQL Server Web Service 遠端資料庫 Internet Intranet Android SQLite 單機資料庫 Android vs. SQLite 透過 SQLiteOpenHelper 類別來操作 建立資料庫 ( 建構子 ) 建立資料表

More information

Azure_s

Azure_s Azure ? Azure Azure Windows Server Database Server Azure Azure Azure Azure Azure Azure Azure Azure OpenSource Azure IaaS Azure VM Windows Server Linux PaaS Azure ASP.NET PHP Node.js Python MS SQL MySQL

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

Microsoft Word - PHP7Ch01.docx

Microsoft Word - PHP7Ch01.docx PHP 01 1-6 PHP PHP HTML HTML PHP CSSJavaScript PHP PHP 1-6-1 PHP HTML PHP HTML 1. Notepad++ \ch01\hello.php 01: 02: 03: 04: 05: PHP 06:

More information

ext-web-auth-wlc.pdf

ext-web-auth-wlc.pdf 使 用 无 线 局 域 网 控 制 器 的 外 部 Web 身 份 验 证 配 置 示 例 目 录 简 介 先 决 条 件 要 求 使 用 的 组 件 规 则 背 景 信 息 外 部 Web 身 份 验 证 过 程 网 络 设 置 配 置 为 来 宾 用 户 创 建 动 态 接 口 创 建 预 先 身 份 验 证 ACL 在 WLC 上 为 来 宾 用 户 创 建 本 地 数 据 库 配 置 外 部

More information

RunPC2_.doc

RunPC2_.doc PowerBuilder 8 (5) PowerBuilder Client/Server Jaguar Server Jaguar Server Connection Cache Thin Client Internet Connection Pooling EAServer Connection Cache Connection Cache Connection Cache Connection

More information

untitled

untitled 1 .NET sln csproj dll cs aspx 說 料 料 利 來 料 ( 來 ) 利 [] [] 來 說 切 切 理 [] [ ] 來 說 拉 類 類 [] [ ] 列 連 Web 行流 來 了 不 不 不 流 立 行 Page 類 Load 理 Click 滑 料 Response 列 料 Response HttpResponse 類 Write 料 Redirect URL Response.Write("!!

More information

The golden pins of the PCI card can be oxidized after months or years

The golden pins of the PCI card can be oxidized after months or years Q. 如何在 LabWindows/CVI 編譯 DAQ Card 程式? A: 請參考至下列步驟 : 步驟 1: 安裝驅動程式 1. 安裝 UniDAQ 驅動程式 UniDAQ 驅動程式下載位置 : CD:\NAPDOS\PCI\UniDAQ\DLL\Driver\ ftp://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/unidaq/dll/driver/

More information

RUN_PC連載_10_.doc

RUN_PC連載_10_.doc PowerBuilder 8 (10) Jaguar CTS ASP Jaguar CTS PowerDynamo Jaguar CTS Microsoft ASP (Active Server Pages) ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar Server ASP

More information

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 : EditText 实现城市搜索 1801210778 邹宇航 摘要 : 使用 EditText 实现搜索城市的功能, 以此为依据更新 ListView 1. 效果图 : 2. 主要步骤 (1) 在 select-city.xml 布局文件中中添加 EditText 控件用作搜索框, 然后添加 ListView 控件用来显示城市名字内容 代码如下 : 预览图 : (2) 在 SelectCity.java

More information

ebook140-9

ebook140-9 9 VPN VPN Novell BorderManager Windows NT PPTP V P N L A V P N V N P I n t e r n e t V P N 9.1 V P N Windows 98 Windows PPTP VPN Novell BorderManager T M I P s e c Wi n d o w s I n t e r n e t I S P I

More information

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM CHAPTER 6 SQL SQL SQL 6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM 3. 1986 10 ANSI SQL ANSI X3. 135-1986

More information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft PowerPoint - ch6 [相容模式] UiBinder wzyang@asia.edu.tw UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner

More information

INTRODUCTION TO COM.DOC

INTRODUCTION TO COM.DOC How About COM & ActiveX Control With Visual C++ 6.0 Author: Curtis CHOU mahler@ms16.hinet.net This document can be freely release and distribute without modify. ACTIVEX CONTROLS... 3 ACTIVEX... 3 MFC ACTIVEX

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立

More information

Microsoft Word - template.doc

Microsoft Word - template.doc HGC efax Service User Guide I. Getting Started Page 1 II. Fax Forward Page 2 4 III. Web Viewing Page 5 7 IV. General Management Page 8 12 V. Help Desk Page 13 VI. Logout Page 13 Page 0 I. Getting Started

More information

untitled

untitled 1 .NET 利 [] [] 來 說 切 切 理 [] [ ] 來 說 拉 類 類 [] [ ] 列 連 Web 行流 來 了 不 不 不 流 立 行 Page 類 Load 理 Response 類 Write 料 Redirect URL Response.Write("!! ives!!"); Response.Redirect("WebForm2.aspx"); (1) (2) Web Form

More information

第一章 章标题-F2 上空24,下空24

第一章 章标题-F2 上空24,下空24 Web 9 XML.NET Web Web Service Web Service Web Service Web Service Web Service ASP.NET Session Application SOAP Web Service 9.1 Web Web.NET Web Service Web SOAP Simple Object Access Protocol 9.1.1 Web Web

More information

untitled

untitled ArcGIS Server Web services Web services Application Web services Web Catalog ArcGIS Server Web services 6-2 Web services? Internet (SOAP) :, : Credit card authentication, shopping carts GIS:, locator services,

More information

1. 2. Flex Adobe 3.

1. 2. Flex Adobe 3. 1. 2. Flex Adobe 3. Flex Adobe Flex Flex Web Flex Flex Flex Adobe Flash Player 9 /rich Internet applications/ria Flex 1. 2. 3. 4. 5. 6. SWF Flash Player Flex 1. Flex framework Adobe Flex 2 framework RIA

More information

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63> 基 于 Android 平 台 的 电 子 拍 卖 系 统 摘 要 本 电 子 拍 卖 系 统 其 实 就 是 一 个 电 子 商 务 平 台, 只 要 将 该 系 统 部 署 到 互 联 网 上, 客 户 都 可 以 在 该 系 统 上 发 布 想 出 售 的 商 品, 也 可 以 对 拍 卖 中 的 商 品 参 与 竞 价 整 个 过 程 无 须 人 工 干 预, 由 系 统 自 动 完 成 本

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

untitled

untitled PowerBuilder Tips 利 PB11 Web Service 年度 2 PB Tips PB9 EAServer 5 web service PB9 EAServer 5 了 便 web service 來說 PB9 web service 力 9 PB11 release PB11 web service 力更 令.NET web service PB NVO 論 不 PB 來說 說

More information

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466> packages 3-31 PART 3-31 03-03 ASP.NET ASP.N MVC ASP.NET ASP.N MVC 4 ASP.NET ASP.NE MVC Entity Entity Framework Code First 2 TIPS Visual Studio 20NuGetEntity NuGetEntity Framework5.0 CHAPTER 03 59 3-3-1

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

關於本書 Part 3 CSS XHTML Ajax Part 4 HTML 5 API JavaScript HTML 5 API Canvas API ( ) Video/Audio API ( ) Drag and Drop API ( ) Geolocation API ( ) Part 5

關於本書 Part 3 CSS XHTML Ajax Part 4 HTML 5 API JavaScript HTML 5 API Canvas API ( ) Video/Audio API ( ) Drag and Drop API ( ) Geolocation API ( ) Part 5 網頁程式設計 HTML JavaScript CSS HTML JavaScript CSS HTML 5 JavaScript JavaScript HTML 5 API CSS CSS Part 1 HTML HTML 5 API HTML 5 Apple QuickTime Adobe Flash RealPlayer Ajax XMLHttpRequest HTML 4.01 HTML 5

More information

epub 61-2

epub 61-2 2 Web Dreamweaver UltraDev Dreamweaver 3 We b We b We Dreamweaver UltraDev We b Dreamweaver UltraDev We b We b 2.1 Web We b We b D r e a m w e a v e r J a v a S c r i p t We b We b 2.1.1 Web We b C C +

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

Android + NFC

Android + NFC Android + NFC 建國科技大學資管系饒瑞佶 2017/3 v1 讀取 Tag UUID Android 2.3.3 (API Level 10) 才有支援完整的 NFC 功能 只要 NFC 相容都讀的到 (NFC 或 Mifare) 建立新專案修改 AndroidManifest.xml 加入 , 如果有 NFC Tag 進入感測範圍, 本 App 也會變成可處理的

More information

目 录 第 五 部 分 第 六 部 分 第 七 部 分 第 八 部 分 投 标 邀 请 投 标 人 须 知 附 表 评 标 方 法 和 评 分 细 则 项 目 需 求 和 技 术 方 案 要 求 1

目 录 第 五 部 分 第 六 部 分 第 七 部 分 第 八 部 分 投 标 邀 请 投 标 人 须 知 附 表 评 标 方 法 和 评 分 细 则 项 目 需 求 和 技 术 方 案 要 求 1 政 府 采 购 招 标 文 件 ( 服 务 类 ) 第 二 册 项 目 编 号 :SDGP2016-224 项 目 名 称 : 公 共 法 律 服 务 系 统 开 发 项 目 包 号 :A1 山 东 省 省 级 机 关 政 府 采 购 中 心 目 录 第 五 部 分 第 六 部 分 第 七 部 分 第 八 部 分 投 标 邀 请 投 标 人 须 知 附 表 评 标 方 法 和 评 分 细 则 项 目

More information

Microsoft Word - 最新正文.doc

Microsoft Word - 最新正文.doc 2 2 Web 2.0 Ajax StarTrackr! GPS RFID jquery JavaScript StarTrackr! JavaScript jquery 1 jquery jquery jquery JavaScript HTML jquery JavaScript jquery jquery jquery $(document).ready()! jquery jquery (document)

More information

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID 58 2016. 14 * LireSolr LireSolr CEDD Ajax CSpace LireSolr CEDD Abstract In order to offer better image support services it is necessary to extend the image retrieval function of our institutional repository.

More information

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF Chapter 2 WF 2.1 WF 2.2 2. XAML 2. 2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF WF WF WF WF EDI API WF Visual Studio Designer 1 2.1 WF Windows Workflow Foundation 2 WF 1 WF Domain-Specific

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

06 01 action JavaScript action jquery jquery AJAX CSS jquery CSS jquery HTML CSS jquery.css() getter setter.css('backgroundcolor') jquery CSS b

06 01 action JavaScript action jquery jquery AJAX CSS jquery CSS jquery HTML CSS jquery.css() getter setter.css('backgroundcolor') jquery CSS b 06 01 action JavaScript action jquery jquery AJAX 04 4-1 CSS jquery CSS jquery HTML CSS jquery.css() getter setter.css('backgroundcolor') jquery CSS background-color camel-cased DOM backgroundcolor.css()

More information

基于UML建模的管理管理信息系统项目案例导航——VB篇

基于UML建模的管理管理信息系统项目案例导航——VB篇 PowerBuilder 8.0 PowerBuilder 8.0 12 PowerBuilder 8.0 PowerScript PowerBuilder CIP PowerBuilder 8.0 /. 2004 21 ISBN 7-03-014600-X.P.. -,PowerBuilder 8.0 - -.TP311.56 CIP 2004 117494 / / 16 100717 http://www.sciencep.com

More information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

2.4 Selenium Python Selenium Selenium Selenium Selenium pip install selenium Chrome WebDriver Google Chrome (Linux, Mac, Windows) Chrome WebDriv

2.4 Selenium Python Selenium Selenium Selenium Selenium pip install selenium Chrome WebDriver Google Chrome (Linux, Mac, Windows) Chrome WebDriv Chapter 02 大數據資料爬取與分析 Python Python Requests BeautifulSoup Regular Expression Selenium Pandas Python 2.4 Selenium Python 2.4.1 Selenium Selenium Selenium Selenium pip install selenium Chrome WebDriver

More information

( )... 5 ( ) ( )

( )... 5 ( ) ( ) 2016 大學校院招收大陸地區學生聯合招生委員會 71005 臺南市永康區南臺街 1 號 E-mail:rusen@stust.edu.tw WEB:http://rusen.stust.edu.tw TEL:+886-6-2435163 FAX:+886-6-2435165 2 0 1 6 0 1 1 9 2016... 2... 3... 5 ( )... 5 ( )... 5 1... 6 2...

More information

untitled

untitled ADF Web ArcGIS Server ADF GeocodeConnection control 4-2 Web ArcGIS Server Application Developer Framework (ADF).NET interop semblies.net Web ADF GIS Server 4-3 .NET ADF Web Represent the views in ArcMap

More information

untitled

untitled 1 LinkButton LinkButton 連 Button Text Visible Click HyperLink HyperLink 來 立 連 Text ImageUrl ( ) NavigateUrl 連 Target 連 _blank _parent frameset _search _self 連 _top 例 sample2-a1 易 連 private void Page_Load(object

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8 Smart TPM Rev. 1001 Smart TPM Ultra TPM Smart TPM TPM...3 1. BIOS... 3 2. Infineon TPM Smart TPM... 4 2.1. Infineon TPM...4 2.2. Smart TPM...4 3. TPM... 5 3.1. Smart TPM TPM...5 3.2. Advanced Mode...8

More information

Microsoft Word zw

Microsoft Word zw 第 1 章 Android 概述 学习目标 : Android Android Android Studio Android Android APK 1.1 1. 智能手机的定义 Smartphone 2. 智能手机的发展 1973 4 3 PC IBM 1994 IBM Simon PDA PDA Zaurus OS 1996 Nokia 9000 Communicator Nokia 9000

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

目次 

目次  軟 體 工 程 期 末 報 告 網 路 麻 將 91703014 資 科 三 黃 偉 嘉 91703024 資 科 三 丘 祐 瑋 91703030 資 科 三 江 致 廣 1 目 次 壹 前 言 (Preface) P.4 貳 計 畫 簡 述 及 預 期 效 益 (Project Description and Expected Results) P.4 參 系 統 開 發 需 求 (System

More information

Microsoft Word - Functional_Notes_3.90_CN.doc

Microsoft Word - Functional_Notes_3.90_CN.doc GeO-iPlatform Functional Notes GeO Excel Version 3.90 Release Date: December 2008 Copyrights 2007-2008. iplatform Corporation. All rights reserved. No part of this manual may be reproduced in any form

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

AL-M200 Series

AL-M200 Series NPD4754-00 TC ( ) Windows 7 1. [Start ( )] [Control Panel ()] [Network and Internet ( )] 2. [Network and Sharing Center ( )] 3. [Change adapter settings ( )] 4. 3 Windows XP 1. [Start ( )] [Control Panel

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

幻灯片 1

幻灯片 1 Delivering accurate maps to Chinese Android users 为中国安卓用户提供准确的地图服务 Work at Mapbox includes: Android apps, demos, starter kits, documentation, support, syncing Android team with other departments, etc.

More information

untitled

untitled 1 Access 料 (1) 立 料 [] [] [ 料 ] 立 料 Access 料 (2) 料 [ 立 料 ] Access 料 (3) 料 料 料 料 料 料 欄 ADO.NET ADO.NET.NET Framework 類 來 料 料 料 料 料 Ex MSSQL Access Excel XML ADO.NET 連 .NET 料.NET 料 料來 類.NET Data Provider

More information

IP505SM_manual_cn.doc

IP505SM_manual_cn.doc IP505SM 1 Introduction 1...4...4...4...5 LAN...5...5...6...6...7 LED...7...7 2...9...9...9 3...11...11...12...12...12...14...18 LAN...19 DHCP...20...21 4 PC...22...22 Windows...22 TCP/IP -...22 TCP/IP

More information

概述

概述 OPC Version 1.8 build 0925 KOCRDK Knight OPC Client Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOC_Init...5 2.2.2 KOC_Uninit...5 2.3...5

More information

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile.. WebSphere Studio Application Developer IBM Portal Toolkit... 1/21 WebSphere Studio Application Developer IBM Portal Toolkit Portlet Doug Phillips (dougep@us.ibm.com),, IBM Developer Technical Support Center

More information

计算机软件技术专业教学计划

计算机软件技术专业教学计划 计 算 机 软 件 技 术 专 业 人 才 培 养 方 案 ( 服 务 外 包 方 向 ) 专 业 大 类 名 称 ( 代 码 ):++(++) 专 业 类 名 称 ( 代 码 ):++++++(++++) 专 业 名 称 ( 代 码 ):+++++++(++++++) 修 业 年 限 : 三 年, 全 日 制 招 生 对 象 : 三 年 制 普 通 高 中 及 对 口 中 职 专 业 毕 业 生

More information

JSON

JSON JSON 建國科技大學資管系 饒瑞佶 2016/3 v1 JSON JavaScript Object Notation 一種用於資料傳輸與交換的輕量級資料結構 目前網路資料傳輸或 OPEN DATA 都支援此格式, 也使用此格式 以文字為主 從 JavaScript 的陣列子集所演變而來 (JS 用 [] 來表示陣列 ) 並非程式語言 JSON sample var employee = { "fullname"

More information

mvc

mvc Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication

More information

Android + WebService

Android + WebService Android + Web Service 建國科技大學資管系饒瑞佶 2017/3 V1 呼叫 OpenData Web Service http://data.taipei/opendata/datalist/apiaccess?scope=resourceaquire& rid=e7c46724-3517-4ce5-844f-5a4404897b7d http://data.taipei/opendata/datalist/apiaccess?scope=resourceaquir

More information

untitled

untitled Inside ASP.NET 2.0- ASP.NET 1.1 2. 理念 讀 了 了 度 讀 了 理 類 來 來說 流 了 來 來 來 來 理 來 不 讀 不 不 力 來參 流 讀 了 異 行 來了 錄 行 不 了 來 了 來 行 論說 了 更 不 例 來了 力 行 樂 不 說 兩 例 利 來 了 來 樂 了 了 令 讀 來 不 不 來 了 不 旅行 令 錄 錄 來 了 例 來 利 來 ManagerProvide

More information

封面-12

封面-12 第十二章 701Client TECHNOLOGY CO.,LTD. 701Client 701Server 701Client "701Client", 12-1 :supervisor :supervisor : 1. : 00~99 100 2. : 00~63 ( 63 / / ) 3. : 18 9 4. : 18 9 5. 12-2 TECHNOLOGY CO.,LTD. 701Client

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f Web Chapter 22 SharePoint Web Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web 21 22-1 SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f Views.asmx View SharePoint

More information

untitled

untitled 12-1 -2 VC# Web Blog 12-1 -1-1 12-1.1-1 C:\ ChartModuleSample_CSharp\Application\2001\ Files\ 4096 KB 120 Web.Config httpruntime maxrequestlength executiontimeout 12-2

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2 CHAPTER 1 Understanding Core Database Concepts 1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2 1 Understanding Core Database Concepts

More information

untitled

untitled 1 .NET 料.NET 料 料來 類.NET Data Provider SQL.NET Data Provider System.Data.SqlClient 料 MS-SQL OLE DB.NET Data Provider System.Data.OleDb 料 Dbase FoxPro Excel Access Oracle Access ODBC.NET Data Provider 料

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

SQL Server SQL Server SQL Mail Windows NT

SQL Server SQL Server SQL Mail Windows NT ... 3 11 SQL Server... 4 11.1... 7 11.2... 9 11.3... 11 11.4... 30 11.5 SQL Server... 30 11.6... 31 11.7... 32 12 SQL Mail... 33 12.1Windows NT... 33 12.2SQL Mail... 34 12.3SQL Mail... 34 12.4 Microsoft

More information

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型 文 章 编 号 :1007-757X(2012)1-0036-04 领 域 驱 动 模 型 的 WEB 软 件 系 统 设 计 研 究 摘 要 : J2EE 3 JDK1.7 Tomcat WEB 关 键 词 : 中 图 分 类 号 :TP311 文 献 标 志 码 :A 0 引 言 Web 软 件 系 统 的 分 层 结 构 典 型 的 J2EE 软 件 系 统 开 发 方 法 分 为 三 层 结

More information

目錄

目錄 資 訊 素 養 線 上 教 材 單 元 五 資 料 庫 概 論 及 Access 5.1 資 料 庫 概 論 5.1.1 為 什 麼 需 要 資 料 庫? 日 常 生 活 裡 我 們 常 常 需 要 記 錄 一 些 事 物, 以 便 有 朝 一 日 所 記 錄 的 事 物 能 夠 派 得 上 用 場 我 們 能 藉 由 記 錄 每 天 的 生 活 開 銷, 就 可 以 在 每 個 月 的 月 底 知

More information

12 第二章 RFID 12 RFID RFID RFID RFID RFID NFC NFC NFC RFID NFC RFID RFID NFC RFID NFC NFC NFC NFC WiFi WiFi WiFi NFC NFC 10 WiFiNFC NFC NFC WiFi

12 第二章 RFID 12 RFID RFID RFID RFID RFID NFC NFC NFC RFID NFC RFID RFID NFC RFID NFC NFC NFC NFC WiFi WiFi WiFi NFC NFC 10 WiFiNFC NFC NFC WiFi 11 第二章 NFC RFID RFID Radio Frequency Identification 無線射頻辨識 E-ZPass RFID RFID NFC Near Field Communication 近距離無線通訊 RFID RFID NFC NFC RFID tag RFID NFC NFC RFID RFID NFC NFC Android Arduino NFC RFID NFC

More information

1 2 <CAHhX17dox1o7cv63SgXVrJRs

1 2  <CAHhX17dox1o7cv63SgXVrJRs ParaView 2019 1 21 1 1.1 ParaView [1] 2001-2018 ParaView Bug 2018 ParaView ParaView ParaView [5, 3] ParaView https://public.kitware.com/pipermail/paraview/ 1.2 URL URL Javascript document.queryselectall()

More information