跳到主要內容

精選文章

【公開聲明】關於近期網路特定言論與個資洩漏事件的說明

大家好,我是江舜智(紅色死神)。 近期有許多長期關注我的朋友、學生以及合作夥伴向我反映,網路上有特定人士(Threads 帳號 @drama.note)持續在各類與事件無直接關聯的討論串、課程資訊以及公開貼文下方留言,並引導他人前往我的個人網站與公開平台,同時以負面標籤及特定敘事方式討論我個人。 由於相關行為已持續相當長一段時間,甚至延伸至現實生活層面,對我的合作單位、教學夥伴以及部分學生造成困擾與壓力,我對此感到遺憾,也對受到影響的朋友們表達歉意。 因此,我希望藉此機會向所有關心此事的朋友,說明我的立場與態度。 一、關於事件本身:理性討論永遠受到歡迎 多年來,不論是在軟體開發、網頁前端教學領域,或是經營「Uniform Map 制服地圖」、進行攝影創作與分享個人觀點時,我始終相信公開透明與理性交流的重要性。 我並非完美的人,任何人都可能有思慮不周或與他人意見不同的時候。過去關於網站經營模式與相關議題,網路上確實出現過不少討論與質疑,而相關事項也曾進入司法程序接受調查。 經檢察機關完整調查後,最終依法作出不起訴處分,案件已告確定。 這代表相關指控經過司法審查後,並未認定存在違法情事。即使如此,我仍然願意以開放的態度面對外界意見。 如果有人對於我的教學內容、網站運作方式,或任何公開言論抱持不同看法,我始終歡迎在尊重彼此的前提下進行公開且理性的討論。 若有任何值得檢討與改進之處,我也願意虛心接受建設性的批評與建議。 二、關於持續性的騷擾行為:應以事實與法律為依據 我認為理性討論與持續性騷擾之間,存在明確界線。 近一年來,特定人士的部分行為已不再只是針對議題提出意見,而是逐漸演變成持續性的人身攻擊與現實層面的干擾,包括: • 在與事件無直接關聯的課程公告、教學資訊及各類公開討論串中,反覆張貼我的個人資訊與相關內容。 • 主動聯繫我的合作單位與工作相關機構,對其施加壓力或進行干擾。 • 在司法程序進行期間及收到相關通知後,仍持續以指名道姓方式發布涉及人格評價與攻擊性的言論。 我尊重每個人表達意見與監督公共議題的權利,但我同樣認為,任何討論都應建立在事實基礎上,並尊重法律程序與他人的基本權益。 無論支持或反對我的人,都有權自行查閱公開資訊、了解案件經過並形成自己的判斷,而不是透過片面標籤或情緒性指控來取代事實。 三、我的處理方式 對於相關爭議,我始終選擇透過法律與制度來處理,...

使用Yahoo! Weather API

最近好像google weather api停止服務了,今天來Yahoo! Open Hackday就研究一下Yahoo!的weather API,而剛好也看到網路上別人寫的範例,修修改改一下就很好用了。

API說明
Yahoo! Weather API

他的API網址大概如下
http://weather.yahooapis.com/forecastrss?w=location

location是Yahoo!定義的地點代碼,可以到Yahoo! Weather查詢地點代碼。

參考範例
How to use Geolocation and Yahoo’s APIs to build a simple weather webapp

透過定位取得天氣狀態
  1. function locationSuccess(position) {   
  2.         var lat = position.coords.latitude;   
  3.         var lon = position.coords.longitude;   
  4.   
  5.         var geoAPI = 'http://where.yahooapis.com/geocode?location='+lat+','+lon+'&flags=J&gflags=R&appid=';   
  6.                
  7.         var wsql = 'select * from weather.forecast where woeid=WID and u="'+DEG+'"',   
  8.             weatherYQL = 'http://query.yahooapis.com/v1/public/yql?q='+encodeURIComponent(wsql)+'&format=json&callback=?',   
  9.             code, city, results, woeid;   
  10. }  

透過weatherYQL取得天氣資訊
  1. $.getJSON(weatherYQL.replace('WID',woeid), function(r){   
  2.                    
  3.                 if(r.query && r.query.count == 1){   
  4.                        
  5.                     // Create the weather items in the #scroller UL   
  6.                        
  7.                     var item = r.query.results.channel.item.condition;   
  8.                        
  9.                     if(!item){   
  10.                         showError("We can't find weather information about your city!");   
  11.                         if (window.console && window.console.info){   
  12.                             console.info("%s, %s; woeid: %d", city, code, woeid);   
  13.                         }   
  14.                            
  15.                         return false;   
  16.                     }   
  17.                        
  18.                     addWeather(item.code, "Now", item.text + ' <b>'+item.temp+'°'+DEG+'</b>');   
  19.                        
  20.                     for (var i=0;i<2;i++){   
  21.                         item = r.query.results.channel.item.forecast[i];   
  22.                         addWeather(   
  23.                             item.code,    
  24.                             item.day +' <b>'+item.date.replace('\d+$','')+'</b>',   
  25.                             item.text + ' <b>'+item.low+'°'+DEG+' / '+item.high+'°'+DEG+'</b>'  
  26.                         );   
  27.                     }   
  28.                        
  29.                     // Add the location to the page   
  30.                     location.html(city+', <b>'+code+'</b>');   
  31.                        
  32.                     weatherDiv.addClass('loaded');   
  33.                        
  34.                     // Set the slider to the first slide   
  35.                     showSlide(0);   
  36.                   
  37.                 }   
  38.                 else {   
  39.                     showError("Error retrieving weather data!");   
  40.                 }   
  41.             });  

把天氣資訊append到DOM上
  1. function addWeather(code, day, condition){   
  2.            
  3.         var markup = '<li>'+   
  4.             '<img src="img/icons/'+ weatherIconMap[code] +'.png" />'+   
  5.             ' <p class="day">'+ day +  '</p> <p class="cond">'+ condition +   
  6.             '</p></li>';   
  7.            
  8.         scroller.append(markup);   
  9.     }  

抓到資料後可以根據自己想要的方式調整UI跟行為,就可以使用了。

留言

藍天小綿羊寫道…
如果可以註明一下插入點在哪一行,這樣要看會比較快 XD
赤紅翼零寫道…
意思是標這段是在source code哪一行嗎
匿名表示…
安安

熱門文章