2018年2月27日 星期二

八里 - 觀音山 - 硬漢嶺

2月 27, 2018 Posted by User31 No comments

概述

107年2月19日,大年初四,就用爬山當作今年的走春主題吧。
畢竟,身為一個有在健身的硬漢,不上個硬漢嶺怎麼行呢?

地圖

Google Map 直接搜尋 硬漢嶺登山步道,強烈建議走凌雲路三段上山,使用 Google Map 過關渡橋,可能會被導至小路孝義路,路小不說,沿途會經過一些先祖之地,實在是不方便打擾 

路線

觀音山_登山口

往登山口的路上,會先經過凌雲寺,再往上一點就會看到這個登山口了


觀音山_登山口

確定路線,也才1400而已?


觀音山_硬漢路

看起來很厲害?


觀音山_硬漢路

沿路都是鋪好的石階地,非常好走


觀音山_弱者俱樂部

第一個休息點 (折返點?),弱者俱樂部,身為硬漢怎麼能在這返回?


觀音山_櫻花

適逢春季,沿途有著剛開的櫻花


觀音山_硬漢嶺

看到這個畫面,就到了目的地了
走路要找難路走,挑擔要挑重擔挑。
違反人性?


觀音山_硬漢碑

終於抵達,山頂上的石碑,硬漢認證?


觀音山_風景

站在這看看台北的風景

結語

這是一條平順好走的山路,沿途的石階相當寬敞,這天攀爬的人頗多,還看到兩位赤膊的壯年,在此練單槓。
滿適合半日遊的行程,天氣好經過淡水,不妨來踏個青。

107年2月19日,大年初四,就用爬山當作今年的走春主題吧。.
畢竟,身為一個有在健身的硬漢,不上個硬漢嶺怎麼行呢?.....

2018年2月7日 星期三

Javascript Use Gmail API Send Mail
 (利用 Javascript 來寄 Email)

2月 07, 2018 Posted by User31 No comments

概述

起因來自於想在 Github Page 讓 User 留言能自動寄信給我。
但 Github Page 只能放 Html 網頁,不能使用 Server Side 所以只能使用 Javascript 來操作。

實驗結論 ...
不算成功,Google的權限問題,一定要使用者登入Google帳號才能使用 Javascript 呼叫 API
(如果是 Server Side 程式,還能使用 Service Account,Client Side 目前沒找到方法)

紀錄這次研究的過程,也許哪天用得到,也希望未來 Google 會有方法支援。

操作步驟

  • 建立一個 Project
  • 申請 Gmail API
  • 建立憑證與金鑰
  • 授權帳號使用 Google API
  • JavaScript 實作
以下文章將依照上面順序排列

建立一個 Project

javascript_gmail_1
建立 Project,專案名稱隨便取即可
javascript_gmail_1

申請 Gmail API

進入專案管理畫面,API 和服務 → 啟用 API 和服務
javascript_gmail_1
加入 Gmail API
javascript_gmail_1

建立憑證與金鑰

進入憑證畫面 (OAuth用戶端ID)
javascript_gmail_1
建立憑證
  • 應用程式類型 → 網路應用程式
  • 已授權的 JavaScript 來源 → http://localhost:8000
    (Ps.local端開發,使用預設,有其他正式網址也可以自行更改,驗證時會檢查網站位置)
javascript_gmail_1
產生憑證 (重要)
  • 用戶端ID = ClientID
  • 用戶端密鑰本次未使用
javascript_gmail_1
產生金鑰 (重要)
進入專案管理畫面,憑證 → 建立憑證 → API 金鑰
本金鑰為稍後用到的 API Key
javascript_gmail_12

javascript_gmail_13

授權帳號使用 Google API

你也可以參考 Google 官方教學

步驟說明

  1. 複製底下程式碼,並建立一個 html 檔案(記得更改ClientID)
  2. 利用 Python 建立一個 Server
    (我使用 python,亦可使用 IIS 或 Visual Studio 等開發環境,只要運行的網址符合第三步驟設定的 ex.http://localhost:8000)
  3. 運行該頁面,並登錄Google帳號,以進行授權動作
步驟 1 建立 html 檔案,並修改 Client ID
以下只標註改的地方,完整程式碼請 下載
<script type="text/javascript">
//下載文件記得修改Client ID
var CLIENT_ID = ''; //步驟三的 Client ID
</script>
步驟 2 利用 Python 建立 Server
Python Simple Server Code
from http.server import HTTPServer, CGIHTTPRequestHandler
port = 8000
httpd = HTTPServer(('', port), CGIHTTPRequestHandler)
print("Starting simple_httpd on port: " + str(httpd.server_port))
httpd.serve_forever()
終端機執行
python3 -m 檔案名稱
javascript_gmail_1
步驟 3 運行該頁面,並登錄Google帳號
運行畫面
javascript_gmail_1
帳號授權
javascript_gmail_1

JavaScript 實作

程式碼摘錄

以下只放JavaScript,完整程式碼可下載
<script type="text/javascript">
  var CLIENT_ID = 'Client ID';
  var API_KEY = 'API Key';
  var SCOPES = 'https://www.googleapis.com/auth/gmail.send';

  //進入畫面立即執行
  function handleClientLoad() {
     gapi.client.setApiKey(API_KEY);
     window.setTimeout(checkAuth, 10);
   }
   
   //檢查權限
   function checkAuth() {
      gapi.auth.authorize({
        client_id: CLIENT_ID,
        scope: SCOPES,
        immediate: true
      }, handleAuthResult);
     }
 
   //檢查權限結果
     function handleAuthResult(authResult) { 
   if(authResult &amp;&amp; !authResult.error) {
      loadGmailApi();
   }
   else{
      document.getElementById("warning-text").style.display = "";
      document.getElementById("send-div").style.display = "none";
   } 
  }

  //Load API
  function loadGmailApi() {
   gapi.client.load('gmail', 'v1',displayMail); //執行後呼叫 displayMail
  }

  //顯示寄信畫面
  function displayMail(){
   document.getElementById("warning-text").style.display = "none";
     document.getElementById("send-div").style.display = "";
  }

  function sendEmail(){  
     document.getElementById("send-button").disabled = true;//disable button
     var content = "Name:"+"\r\n"+document.getElementById('inputName').value + "\r\n"+
          "Email:"+"\r\n"+document.getElementById('inputEmail').value + "\r\n"+
          "Message:"+"\r\n" + document.getElementById('inputText').value;
     sendMessage(
     {
       'To': document.getElementById('inputEmail').value,
       'From': 'me',
       'Subject':  document.getElementById('inputText').value
     },
     content,
     reloadpage
   );
   return false;
  }

  function reloadpage(){
   alert('Send OK');
   location.reload();
  }

  //gapi.client.gmail.users.messages.send
  //https://developers.google.com/gmail/api/v1/reference/users/messages/send
  function sendMessage(headers_obj, message, callback)
  {
     //內容
     var email = '';
     for(var header in headers_obj)
       email += header += ": "+headers_obj[header]+"\r\n";
     email += "\r\n" + message;

     //轉 base64
     var base64EncodedEmail = btoa(unescape(encodeURIComponent(email)));
           
     var request = gapi.client.gmail.users.messages.send({
    'userId': 'me',
    'resource': {
     'raw': base64EncodedEmail
    }
      });
      return request.execute(callback);
  }
 </script>
 <!--啟動 api-->
 <script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>

參考資料


起因來自於想在 Github Page 讓 User 留言能自動寄信給我。.
但 Github Page 只能放 Html 網頁,不能使用 Server Side 所以只能使用 Javascript 來操作。....

2018年1月30日 星期二

台灣百岳列表

1月 30, 2018 Posted by User31

概述

因為認識妳,我開始爬山,想寫點文章紀錄這一起走過的旅程。
或許等我們老了的那天,能笑著看看這裡的文字 ...
一邊回憶、一邊傻笑,原來我們曾一起爬了這麼高,走了這麼遠。

一些小常識

五嶽:玉山主峰、雪山、秀姑巒山、南湖大山、北大武山
三尖:中央尖山、大霸尖山、達芬尖山
一奇:奇萊北峰(又稱一怪)
四秀:品田山、池有山、桃山、喀拉業山
十峻:玉山東峰、玉山南峰、馬博拉斯山、關山、奇萊北峰、大劍山、品田山、無明山、能高南峰、
               新康山
八秀:玉山北峰、向陽山、東巒大山、志佳陽大山、桃山、郡大山、鈴鳴山、閂山
十崇:南湖北山、大雪山、三叉山、東郡大山、馬西山、北合歡山、奇萊南峰、卑南主山、
               太魯閣大山、內嶺爾山
三高:新高山(玉山)、次高山(雪山)、能高山

列表

點欄位可做排序、可依照地區做篩選
編號▲ 山名 縣市 標高(m) 分級 登頂日 備註
1 玉山 南投縣、高雄市、嘉義縣 3952 A
2 雪山 苗栗縣、臺中市 3886 A
3 玉山東峰 南投縣、高雄市 3869 C+
4 玉山北峰 南投縣 3858 B
5 玉山南峰 高雄市 3844 C+
6 秀姑巒山 花蓮縣、南投縣 3825 B
7 馬博拉斯山 花蓮縣、南投縣 3785 C+
8 南湖大山 臺中市 3742 B
9 東小南山 高雄市 3711 C
10 中央尖山 臺中市、花蓮縣 3705 C+
11 雪山北峰 苗栗縣、臺中市 3703 C+
12 關山 台東縣、高雄市 3668 C
13 大水窟山 花蓮縣、南投縣 3642 B
14 南湖大山東峰 臺中市、花蓮縣、宜蘭縣 3632 B
15 東郡大山 南投縣 3619 C+
16 奇萊北峰 花蓮縣 3607 B
17 向陽山 高雄市、台東縣 3603 A
18 大劍山 臺中市 3594 B
19 雲峰 高雄市 3564 C
20 奇萊主山 花蓮縣、南投縣 3560 B 奇萊主峰
21 馬利加南山 南投縣、花蓮縣 3546 C+
22 南湖北山 宜蘭縣、臺中市 3536 B
23 大雪山 苗栗縣、臺中市 3530 C
24 品田山 新竹縣、臺中市 3524 B
25 玉山西峰 嘉義縣、南投縣 3518 A
26 頭鷹山 臺中市、苗栗縣 3510 C
27 三叉山 花蓮縣、台東縣、高雄市 3496 A
28 大霸尖山 新竹縣、苗栗縣 3492 A
29 南湖大山南峰 臺中市、花蓮縣 3475 C
30 東巒大山 南投縣 3468 C+
31 無明山 臺中市、花蓮縣 3451 C+
32 巴巴山 臺中市、花蓮縣 3449 C
33 馬西山 花蓮縣 3443 C+
34 北合歡山 南投縣、花蓮縣 3422 A 合歡山北峰
35 合歡山東峰 南投縣、花蓮縣 3421 A
36 小霸尖山 苗栗縣 3418 B
37 合歡山 南投縣 3417 A 合歡主峰
38 南玉山 高雄市 3383 C
39 畢祿山 花蓮縣、南投縣 3371 A
40 卓社大山 南投縣 3369 C
41 奇萊南峰 南投縣 3358 A
42 南雙頭山 花蓮縣、高雄市 3356 C
43 能高山南峰 南投縣、花蓮縣 3349 C
44 志佳陽大山 臺中市 3345 A
45 白姑大山 南投縣、臺中市 3341 B
46 八通關山 南投縣 3335 A
47 新康山 花蓮縣 3331 C
48 丹大山 南投縣、花蓮縣 3325 C
49 桃山 新竹縣、臺中市 3325 A
50 佳陽山 臺中市 3314 B
51 火石山 苗栗縣、臺中市 3310 C
52 池有山 新竹縣、臺中市 3303 A
53 伊澤山 苗栗縣、新竹縣 3297 A
54 卑南主山 高雄市、台東縣 3295 C
55 干卓萬山 南投縣 3284 C
56 太魯閣大山 花蓮縣 3283 C+
57 轆轆山 高雄市 3279 C
58 喀西帕南山 花蓮縣 3276 C+
59 內嶺爾山 花蓮縣 3275 C
60 鈴鳴山 臺中市、花蓮縣 3272 B
61 郡大山 南投縣 3265 A
62 能高山 南投縣、花蓮縣 3262 C
63 萬東山西峰 南投縣 3258 C
64 劍山 臺中市 3253 C
65 屏風山 花蓮縣 3250 B
66 小關山 高雄市、台東縣 3249 C
67 義西請馬至山 花蓮縣、南投縣 3245 C+
68 牧山 南投縣 3241 C
69 玉山前峰 嘉義縣、南投縣 3239 A
70 石門山 花蓮縣、南投縣 3237 A
71 無雙山 南投縣 3231 C+
72 塔關山 台東縣、高雄市 3222 A 大關山
73 馬比杉山 宜蘭縣、花蓮縣 3211 C
74 達芬尖山 南投縣、高雄市、花蓮縣 3208 C
75 雪山東峰 臺中市 3201 A
76 南華山 南投縣、花蓮縣 3184 A
77 關山嶺山 台東縣、高雄市 3176 A
78 海諾南山 台東縣、高雄市 3174 C
79 中雪山 苗栗縣 3173 A
80 閂山 臺中市 3168 A
81 甘薯峰 花蓮縣、臺中市 3158 C+
82 西合歡山 南投縣 3145 A 合歡山西峰
83 審馬陣山 宜蘭縣、臺中市 3141 A
84 喀拉業山 新竹縣、宜蘭縣 3133 A 加留坪山
85 庫哈諾辛山 高雄市 3115 A
86 加利山 苗栗縣 3112 A
87 白石山 南投縣、花蓮縣 3110 C
88 磐石山 花蓮縣 3106 C
89 帕托魯山 花蓮縣 3101 C
90 北大武山 屏東縣、台東縣 3092 A 大武山
91 西巒大山 南投縣 3081 A
92 塔芬山 花蓮縣、高雄市 3070 C
93 立霧主山 花蓮縣 3069 C
94 安東軍山 花蓮縣、南投縣 3068 C
95 光頭山 南投縣、花蓮縣 3060 C
96 羊頭山 花蓮縣 3035 A
97 布拉克桑山 台東縣、花蓮縣 3026 C
98 駒盆山 南投縣 3022 C+
99 六順山 南投縣、花蓮縣 2999 B
100 鹿山 高雄市 2981 C
因為認識妳,我開始爬山,想寫點文章紀錄這一起走過的旅程。.
或許等我們老了的那天,能笑著看看這裡的文字 .
一邊回憶、一邊傻笑,原來我們曾一起爬了這麼高,走了這麼遠。....

2018年1月24日 星期三

台灣小百岳列表

1月 24, 2018 Posted by User31

概述

2017年底,因緣分而開始爬山,索性做個表格紀錄那些我走過的足跡。

列表

點欄位可做排序、可依照地區做篩選
編號▲ 山名 縣市 標高(m) 登頂日 備註
1 大屯山 台北市北投區、新北市淡水區 1092
2 七星山 台北市北投區 1120 2018/01/14
3 大武崙山(砲台山) 基隆市安樂區 231
4 槓子寮山 基隆市中正區 163
5 觀音山 新北市八里區 616 2018/02/19 硬漢嶺
6 基隆山 新北市瑞芳區 588
7 紅淡山 基隆市仁愛區 210
8 大崙頭山 台北市士林區、台北市內湖區 478
9 劍潭山 台北市士林區 153 2017/09/30 老地方觀機坪
10 五分山 新北市瑞芳區、新北市平溪區 757
11 姜子寮山 基隆市七堵區 729
12 汐止大尖山 新北市汐止區 460
13 南港山 台北市信義區、台北市南港區 375
14 土庫岳(大坪山) 新北市深坑區 389
15 大棟山 新北市樹林區、桃園市龜山區 405
16 南勢角山 新北市中和區、新北市新店區 302
17 二格山(石尖山) 台北市文山區、新北市石碇區 678
18 天上山 新北市土城區 429
19 福德坑山(鳶山) 新北市三峽區 321 並非標高300公尺之鳶山
20 獅仔頭山 新北市新店區、新北市三峽區 858
21 金面山(鳥嘴尖) 桃園市大溪區 667
22 東眼山 新北市三峽區、桃園市復興區 1212
23 溪洲山 桃園市大溪區 577
24 石門山(小竹坑山) 桃園市龍潭區 551
25 石牛山 桃園市復興區、新竹縣關西鎮 671
26 十八尖山 新竹市東區 130
27 飛鳳山(中坑山) 新竹縣芎林鄉 462 非423m的飛鳳山,而是二等三角點的中坑山
28 李崠山(李棟山) 桃園市復興區、新竹縣尖石鄉 1914
29 獅頭山 苗栗縣三灣鄉、苗栗縣南莊鄉 492
30 五指山 新竹縣竹東鎮、新竹縣北埔鄉、新竹縣五峰鄉 1062
31 鵝公髻山 新竹縣五峰鄉、苗栗縣南莊鄉 1579
32 向天湖山 苗栗縣南莊鄉 1225
33 仙山(紅毛館山) 苗栗縣獅潭鄉 967
34 加里山 苗栗縣南莊鄉、苗栗縣泰安鄉 2210 台灣富士山
35 火炎山 苗栗縣苑裡鎮、苗栗縣三義鄉 596
36 關刀山 苗栗縣三義鄉、苗栗縣大湖鄉 889
37 馬那邦山 苗栗縣大湖鄉、苗栗縣泰安鄉 1407
38 鐵砧山 台中市外埔區 236
39 稍來山 台中市和平區 2307
40 聚興山 台中市潭子區 500
41 頭嵙山 台中市北屯區、台中市新社區 859
42 南觀音山 台中市北屯區 318
43 三汀山 台中市太平區 480
44 暗影山 台中市太平區 997
45 大橫屏山 台中市太平區、南投縣國姓鄉 1205
46 阿罩霧山 台中市霧峰區 249
47 九份二山 南投縣中寮鄉、南投縣國姓鄉 1174
48 橫山 南投縣南投市、南投縣名間鄉 444
49 貓囒山 南投縣魚池鄉 1016
50 集集大山 南投縣集集鎮、南投縣中寮鄉 1392
51 松柏坑山(松柏嶺) 彰化縣二水鄉、南投縣名間鄉 430
52 後尖山 南投縣魚池鄉、南投縣水里鄉 1008
53 鳳凰山 南投縣鹿谷鄉 1696
54 金柑樹山 南投縣竹山鎮、南投縣信義鄉 2091
55 石壁山 雲林縣古坑鄉、嘉義縣阿里山鄉 1751
56 雲嘉大尖山 雲林縣古坑鄉、嘉義縣梅山鄉 1299
57 梨子腳山(掘尺嶺山) 嘉義縣梅山鄉 1176
58 獨立山 嘉義縣竹崎鄉 840
59 大塔山 嘉義縣阿里山鄉、南投縣信義鄉 2663
60 大凍山 嘉義縣梅山鄉、嘉義縣阿里山鄉 1967
61 大湖尖山 嘉義縣竹崎鄉、嘉義縣番路鄉 1313
62 紅毛埤山 嘉義市東區 150
63 大棟山 臺南市白河區、嘉義縣大埔鄉 1241
64 崁頭山 臺南市東山區 844
65 三腳南山 嘉義縣大埔鄉、臺南市南化區 1186
66 西阿里關山 臺南市南化區、高雄市甲仙區 973
67 竹子尖山 臺南市楠西區、臺南市南化區 1090
68 東藤枝山 高雄市桃源區 1804
69 白雲山 高雄市甲仙區 1044
70 刣牛湖山 臺南市南化區、高雄市杉林區 730
71 鳴海山 高雄市茂林區 1411
72 旂尾山 高雄市旗山區 318
73 尾寮山 屏東縣茂林區、高雄市三地門鄉 1427
74 大崗山 高雄市岡山區、高雄市阿蓮區、高雄市田寮區 312
75 觀音山 高雄市大社區、仁武區 169
76 笠頂山 屏東縣瑪家鄉 659
77 壽山 高雄市鼓山區 356
78 棚集山 屏東縣來義鄉 899
79 女仍山 屏東縣獅子鄉、屏東縣牡丹鄉 804
80 里龍山 屏東縣獅子鄉、屏東縣牡丹鄉 1062
81 萬里得山 屏東縣滿州鄉 528
82 灣坑頭山 宜蘭縣頭城鎮 616
83 三角崙山 新北市坪林區 1029
84 鵲子山 宜蘭縣礁溪鄉 679 礁溪富士山
85 三星山 宜蘭縣大同鄉 2352
86 祖輪山 花蓮縣秀林鄉 1599
87 立霧山 花蓮縣秀林鄉 1274
88 初英山 花蓮縣吉安鄉、花蓮縣秀林鄉 906
89 鯉魚山 花蓮縣壽豐鄉 601
90 月眉山 花蓮縣壽豐鄉 614
91 八里灣山 花蓮縣豐濱鄉、花蓮縣瑞穗鄉 924
92 萬人山 花蓮縣富里鄉 886
93 都蘭山 台東縣東河鄉、台東縣延平鄉 1190
94 太麻里山 台東縣太麻里鄉 1340
95 加奈美山 台東縣大武鄉 780
96 巴塱衛山 台東縣大武鄉 614
97 紅頭山 台東縣蘭嶼鄉 552
98 蛇頭山 澎湖縣馬公市 20
99 太武山 福建省金門縣金湖鎮 253
100 雲台山 福建省連江縣南竿鄉 248
2017年底,因緣分而開始爬山,索性做個表格紀錄那些我走過的足跡。.....