
高雄風車公園


駁二藝術特區

紅毛港文化園區


武德殿


鳳儀書院


如果您設定了 PPTP VPN 伺服器,iOS 10 和 macOS Sierra 使用者將無法連線到該伺服器。iOS 10 和 macOS Sierra 會在使用者升級裝置時,移除任何 VPN 描述檔的 PPTP 連線。(If you’ve set up a PPTP VPN server, iOS 10 and macOS Sierra users won't be able to connect to it. iOS 10 and macOS Sierra will remove PPTP connections from any VPN profile when a user upgrades their device.)此時改用其他人的手機 (如 android 手機或 iOS 10 以前的手機),卻可以成功連上 VPN ,代表是 iOS 將 PPTP 的 VPN 連線拒絕了,此時只能改用非 iOS 10 的手機來連線,或是更改 VPN Server 的協定,改用更安全的 L2TP/IPSec、IKEv2/IPSec 或 Cisco IPSec 等 protocols
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | { "manifest_version": 2, "name": "Build Chrome Extension With AngularJS", "description": "利用 AngularJS 建置 Chrome Extension ", "version": "1.0", "permissions": [ "activeTab", "storage"], "browser_action": { "default_icon": "img/icon.png", "default_popup": "todo.html", "default_title": "Build Chrome Extension With AngularJS" }, "commands": { "_execute_browser_action": { "suggested_key": { "default": "Alt+Shift+D" } } }, "background": { "scripts": ["js/background.js"] }, "options_page": "options.html" } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | var myVar = setInterval(myTimer, 3000); function myTimer() { var now = new Date(); var year = now.getFullYear(); var month = now.getMonth() + 1; var date = now.getDate(); var hour = now.getHours(); var minutes = now.getMinutes(); var seconds = now.getSeconds(); var time = year + '/' + month + '/' + date + ' ' + hour + ':' + minutes + ':' + seconds; console.log(time); } |
java.lang.IllegalArgumentException: The maximum length of cell contents (text) is 32,767 characters
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private void writeIssueDataForEachRow(Issue issue, Row row, CellStyle style, List<ColumnIndex> customFieldDefinitions) { Cell cell = row.createCell(0); cell.setCellValue(issue.getId()); // 編號 cell.setCellStyle(style); cell = row.createCell(1); cell.setCellValue(issue.getSubject()); // 主旨 cell.setCellStyle(style); cell = row.createCell(2); cell.setCellValue(issue.getDescription()); // 敘述 cell.setCellStyle(style); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | private void writeIssueDataForEachRow(Issue issue, Row row, CellStyle style, List<ColumnIndex> customFieldDefinitions) { Cell cell = row.createCell(0); cell.setCellValue(issue.getId()); // 編號 cell.setCellStyle(style); cell = row.createCell(1); cell.setCellValue(issue.getSubject()); // 主旨 cell.setCellStyle(style); // substring 的原因是要避開 The maximum length of cell contents (text) is 32,767 characters cell = row.createCell(2); cell.setCellValue(StringUtils.substring(issue.getDescription(), 0, 32767)); // 敘述 cell.setCellStyle(style); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | { "manifest_version": 2, "name": "Build Chrome Extension With AngularJS", "description": "利用 AngularJS 建置 Chrome Extension ", "version": "1.0", "permissions": [ "activeTab", "storage"], "browser_action": { "default_icon": "img/icon.png", "default_popup": "todo.html", "default_title": "Build Chrome Extension With AngularJS" }, "commands": { "_execute_browser_action": { "suggested_key": { "default": "Alt+Shift+D" } } }, "options_page": "options.html" } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <!DOCTYPE html> <html> <head> <title>設定初始工作</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script src="js/angular.min.js"></script> <script src="js/bootstrap.min.js"></script> <link href="css/bootstrap.min.css" rel="stylesheet" media="screen"> <script src="js/options.js"></script> </head> <body> <div ng-app="optionsApp" ng-controller="optionController" class="container" > <div class="row"> <label>inital task:</label> <input id="initialTask" name="initialTask" ng-model='initialTask' autofocus="true"> <button id="save" class="btn btn-primary btn-md" ng-click="addInitialTask()"> <i class="glyphicon glyphicon-pencil"></i> </button> </div> </div> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | angular.module('optionsApp', []) .controller('optionController', function($scope) { $scope.initialTask = ''; $scope.addInitialTask = function () { var initialTask = $scope.initialTask; // Save data using the Chrome extension storage API. chrome.storage.sync.set({ 'initialTask' : initialTask }, function () { alert("設定成功!"); }); } }); function init(){ // Get data using the Chrome extension storage API. chrome.storage.sync.get( 'initialTask' , function(data) { document.getElementById('initialTask').value = data.initialTask; }); } // call init function as page loaded document.addEventListener('DOMContentLoaded', init); |
1 2 3 4 5 6 7 8 9 10 11 12 | { "manifest_version": 2, "name": "Build Chrome Extension With AngularJS", "description": "利用 AngularJS 建置 Chrome Extension ", "version": "1.0", "permissions": [ "activeTab" ], "browser_action": { "default_icon": "img/icon.png", "default_popup": "todo.html", "default_title": "Build Chrome Extension With AngularJS" } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <!DOCTYPE html> <html style="min-width:220px;"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Todo list Page</title> <script src="js/angular.min.js"></script> <script src="js/todo.js"></script> <script src="js/bootstrap.min.js"></script> <link href="css/bootstrap.min.css" rel="stylesheet" media="screen"> </head> <body> <div ng-app="todoApp" ng-controller="todoController" class="container"> <form id='myForm'> <div class="row"> <input type="text" ng-model="task"> <button class="btn btn-primary btn-xs" ng-click="addTask()"> <i class="glyphicon glyphicon-plus"></i> </button> </div> </form> <div class="row"> <ul> <li ng-repeat="t in tasks track by $index">{{ t }} <button class="btn btn-default btn-xs" ng-click="deleteTask()"> <i class="glyphicon glyphicon-minus"></i> </button> </li> </ul> </div> </div> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | angular.module('todoApp', []) .controller('todoController', function($scope) { $scope.tasks = []; $scope.addTask = function() { if(isNotEmptyOrUndefined($scope.task)){ $scope.tasks.push($scope.task); $scope.task = ''; } else { alert('task name cannot be null'); } } $scope.deleteTask = function() { $scope.tasks.splice(this.$index, 1); } }); // 檢查是串是否不為空值且不為undefined function isNotEmptyOrUndefined(str) { return str != '' && !angular.isUndefined(str) && str != null; } |
1 2 3 4 5 6 7 8 9 10 11 12 | { "manifest_version": 2, "name": "搜尋Flicker照片", "description": "Flicker Search Extension", "version": "1.0", "permissions": [ "activeTab" ], "browser_action": { "default_icon": "icon.png", "default_popup": "helloworld.html", "default_title": "搜尋Flicker照片" } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> <html style="min-width:210px;"> <head> <meta charset="UTF-8"> <title>Hello Page</title> <script src="helloWorld.js"></script> </head> <body> <form id='myForm'> <img src="magnifier.png" height="20" width="20"> <input type="text" id="queryString" style="width:100px"> <button type="submit" id="doSearch">Search</button> </form> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* The DOMContentLoaded event is fired when the initial HTML document * has been completely loaded and parsed, without waiting for stylesheets, * images, and subframes to finish loading. */ document.addEventListener('DOMContentLoaded', function() { var searchBtn = document.getElementById('doSearch'); // Execute the following steps as user click Search button searchBtn.addEventListener('click', function(){ // Gets query string var queryString = document.getElementById('queryString').value; // Create URL with query string var newUrl = 'https://www.flickr.com/search/?q='+queryString; // Creates a new tab. chrome.tabs.create({ url : newUrl}); }, false); }, false); |
albert@albert-PC MINGW64 /d/git/ChromeExtensions (master) $ git add --all fatal: LF would be replaced by CRLF in HelloWorld/manifest.json