發表文章

[Python] 將 Matplotlib 的圖形轉換成Array

實作Matplotlib產生圖形並取得Array資料 最近剛好在做實驗的時候,遇到一個狀況要讓ML對某個圖表做處理,而這張圖表是已經將資料處理過的了,試了好幾種方式讓ML做判斷,還是沒有辦法達到預期的結果,後來才想說把圖轉成Array直接做處理,以下是分享如何將Matplotlib產生好的圖型取出Array。 點這裡看程式碼 參考資料: Agg Buffer To Array

[心得] 圖解 微分、積分生活中的微積分-第一章

這本書應該是目前看過教微積分最白話的書藉。 記得以前只要聽到微積分就覺得非常的害怕,而且這科也是被當最多次的,對於非理科學生還要上微積分真的是很痛苦,而這也是求學階段最害怕的一門課之一。 而隨著時間的推移有時工作上會用到微分,才開始對這個有一些認識,了解到說學了微積分後是能夠做什麼,例如 : 經濟相關的計算、物理運動上的計算,當然還有現最熱門的機器學習也有用到。 在這本書的第一章概略的提到積分與微分的不同,而且用了生活上的東西來描述這兩個是怎樣的概念。 微分 : 用拍照的過程來描述, "時間" 對 "揮動雙手的朋友" 做微分= "朋友揮動雙手的瞬間樣貌",用意在於求瞬間的變化量。 另外也有提到將地球看成一個平面圓形時,對圓形半徑做微分,就是求腳下這一點的切線。 積分: 控制料理的火候、用時間對火力做積分而得到適當的熱度。 在這本書中用了幾個生活中的例子,可以比較容易的認識這兩個是什麼,目前讀完第一章覺得還滿有趣的。

2018 的年度計畫

大家已經定好年度計畫了嗎? 過去的一年花了大部份的時間在日語學習上,雖然現還沒有辦法很流利想說什麼就說什麼,但是也算初步完成了2017的年度計畫了。 新的一年也不能忘記重新定目標,首先重新開始寫Blog這邊荒廢了很久,此外重新定義這邊的主題,未來不再只是分享iOS開發,將會加入更多其他的東西,目前將會加入的有 Python、MQL4/5、C#,同時也會紀錄學習機器學習的過程。 今年上半年的書單 : Deep Leaning-用Python進行深度學習的基礎理論實作 Python 資料科學學習手冊 Python 期貨演算法交易實務121個關鍵技巧詳解 文科生也看得懂的電路學 圖解微分、積分-生活中的微積分 寫到這邊,覺得一本比一本還要硬,之後會再分享閱讀的進度與心得。

OpenGL Float texture 實驗

最近在寫一個智慧剪圖的 app  Cutto , 裡面因為需要執行大量的影像處理,所以有非常多的浮點運算,需要用 OpenGL 來維持使用的流暢度。在使用 OpenGL 來做計算的時候,input 常常是是以一個圖像(或稱 texture)的方式來輸入。對 Cutto 來說,input 必須要是浮點數,因此驗證 iPhone 是否志願 float textures 就變得很重要了。 下面的實驗結果證實在 iPhone 4S 以上的裝置上,GL_FLOAT 或是 GL_HALF_FLOAT_ES 的 texture 都是支援的。這個結果真是欣慰! 不過順帶一提的是,假如我們的 output 也要是浮點數怎麼辦?答案是在 OpenGL 裏,所有浮點 texture 都不是 color-renderable  OpenGL ES 3.0 spec Table 3.12 ,也就是不能當作 output render to FrameBuffer object。唯一的辦法是自己做  floating point pack in glsl 。看起來 OpenCL 真的是有他的需求在,希望 apple 趕快在 iOS 上支援啊。 下面是實驗的 code:

使用 Cordova 3.0 做Hybrid App 就上手

圖片
所謂Hybrid App : 混合式應用程式 (Hybrid App) 開發在此指的是,以一般以 Web App 方式開發用戶端程式,但最後可在 包裝後像 原生 App 一樣上架至應用程式商店的作法 。  Cordova (前身為Phonegap )近期發佈了3.0的版本, 這次做了蠻大的一個創新 使用CLI (Command line interface) 好處是一切透過終端機下命令來執行, 解決了以往繁瑣的初始化步驟 (久了就會忘記怎麼裝的Orz) 輕量化的核心,有需要用的套件再引入即可 透過下載的方式安裝套件ex:透過Github的網址下載open source plugin. 看著Cordova頻繁的更新版本,讓我對於Hybrid app 開發又更有信心了 使用Cordova cli 步驟 需要安裝 node.js  nodejs.org  有詳細的安裝流程說明 安裝cordova 工具 $ sudo npm install - g cordova 安裝好以後會看到以上畫面 接著建立你的app resource 在你的工作目錄內建立你的 app  空的資料夾 $ cordova create hello com . example . hello HelloWorld 安裝的過程可能會花費一點時間,可以先喝杯咖啡~ 參數說明: hello -  你的資料夾路徑 com.example.hello - 反轉的網址是提供你的專案作為識別這裡先隨便打即可 HelloWorld -  就是在手機裡面顯示的app 名稱 當然以上的參數 在於app 專案建立後  都是可以修改的 接下來你需要安裝發佈的平台: 所以先切換回根目錄 $ cd hello 然後選擇你要的平台一一輸入: $ cordova platform add ios $ cordova platform add android $ cordova platform add blackberry10 $ cordova platform add firefoxos 可以透過這個指令列出已經安裝過的平台 $ cordova p...

Caffeine+ Boost Your Productivity

圖片
Most people wouldn't doubt that coffee shop is one of the best places to work, since it seems to have certain magic power to make people being highly productive. But, do we must go into the coffee shop in order to enjoy the cozy atmosphere? The answer now is "NO"!! The app called "Caffeine" could able to give you a portable coffee shop anytime and anywhere you like. You could have all of the coffee shop buzz you want without trying hard to fight for a seat in the real shop, or spend much money to buy latte one after another. "Caffeine", an awsome app which re-create the coffee shop atmosphere for you by serving you many coffee shop buzz easily. You can mix one unique coffee shop buzz along with your own beloved music together to play at a time. Oh, and don't forget to help yourself to make a cup of coffee before you start to stick to this app!! Now, with "Caffeine", who will say that we must go to the real coffee shop to enj...

快速將List中重覆資料排除

最近工作的關係要從不同的table來撈資料。對於Linq不太熟的我真的是一大挑戰。 以前用SQL就可以很快的將不同table組在一起同時可以做group資料。現回到Linq上來 Linq也可以做grounp資料。但是如果中間做了很多復雜的查詢與應用到~可能不太方便用group的話…雖然網路上有很多方法是用泛型加foreach的方式去比較,但是操作上可能還是有點復雜與要再加工一下…這個時候可以用下列的方法做處理。 var list = new List<string> {"A", "C", "B", "D", "A", "B", "E", "D", "B", "C"};     var set = new HashSet<string>(list);  foreach (string item in set)    {      Console.WriteLine(item);     }

第一次寫套件於github就上手

圖片
昨天去了第一次的Angular.js 社團讀書會 受到各個大大致力於分享open sourse的感招 小弟我也分下一下最近經手的專案所寫的套件iScaleBar 這個套件跟達康地圖幾乎可以說是綁在一起 有鑒於該網站提供的地圖控制項非常之...."好看" 團隊leader 命小弟我客製化一個地圖控制項 話不多說 看code吧! 點我

舊系統導入Asp.net MVC -資料存取篇

最近都在處理把舊系統升級成asp.net mvc,在這個修改的過程遇到了不少的問題。以這篇來講,要說的就是舊系統大多都是用ado.net的方式來取資料。目前大部份的mvc教學中,都是搭配entity framework做操作。但是用這個就會遇到一個狀況。舊有的sql要翻譯成linq的語法。在翻譯的過程式如果神智不清的話,問題就變得很多。 其實在導入mvc的時候,不一定非要用entity framework來存取資料,我們也可以整合現有的ado.net來進行操作。 首先我們先到Nuget中,查詢 dapper 找到後直接安裝他。 接下來我們需要建立一些Model,這個部份我們可以使用entity framework來幫我們產生。這樣比較省時間。接下來我們對資料的處理就像以下所示。在 connection.Query的後面把我們model加上去。後面直接加入sql的語法。 string myConnectionString = "xxxxxxx"; using (var connection = new SqlConnection(myConnectionString))             {                 connection.Open();                 var posts = connection.Query<TEST_20130426>("SELECT TOP 20 *FROM [xxxx].[dbo].[TEST_20130426]");                 foreach (var xx in posts) {                     System.Diagnostics.Debug.Write("測試sql ...

知名美商M公司面試的javascript考題

圖片
去M公司面試... 還要一對一coding整個很戳屎... 我盡力恢復記憶把題目紀錄一下 Check out this Pen! Check out this Pen! Check out this Pen! Check out this Pen!

Block學習筆記

定義block typedef float (^kkkk)(int xxx); 定義這個block的一些方法,  kkkk 表示這個block的型別   kkkk _k = ^float(int value){              return value * 10;     };       NSLog(@"%f",_k(2));

關於DbUpdateConcurrencyException

Building an MVC 4 App with Database First and Entity Framework 最近遇到的專案,是已經有大量的資料在資料庫裡。對於這種情況,就不適合使用 比較熟悉的code first的方式來開發,所以將採用DB First的方式來進行。當我們用 ADO.NET Entity Data Model,visual studio 將會為我們先建立好相關的類別、模 型。 在這個時候問題來了,採用這種方式的話,我們在code first中,我們會直接把 表單驗證的條件寫在model中,但是db first的方式,我們取得的model是經由範本 產生的,所以當我們資料庫有做了異動,或是我們的model有做更新的話,我們把 驗證的條件寫在自動產生的model中,將會全被清掉。 在自動產生的類別可以看到這幾行的註解。 //------------------------------------------------------------------------------ // <auto-generated> //    This code was generated from a template. // //    Manual changes to this file may cause unexpected behavior in your application. //    Manual changes to this file will be overwritten if the code is regenerated. // </auto-generated> //---------------------------- 所以這時候我們將要用到Buddy Class的幫忙。 例如一開始我們建立的model如下 :  namespace MvcLeaning . Models {     using System ;     usin...

GPS Wake Me Up

圖片
前陣子聽到有朋友在國外旅行的時候,因為搭車搭過站,導致接下來的行程整個都受到影響,這讓我想到當我們到人生地不熟的地方,加上不熟悉當地的語言,如果沒有注意站點很容易發生這種狀況。或是當下班的時候後累,想說在車上小睡一下,就會發生不小心睡過站的問題。因這幾點讓我想到以前曾經與朋友合作開發過的App,現再重新改裝調整,重新上架。 而這個App審查的過程也是遇到一些狀況,現有用到背景運行的功能,都要加註標語,之前在做的時候都沒有注意到這件。所以讓這個app上架又晚了幾天。不過後來還,只要把文案調整後,就可以了。 以下是介紹。 你是否曾經搭公車或是捷運有過站的經驗嗎?或是當下班後太累不小心睡著,公車又坐錯過站了呢? 這個App就是為您而設計,簡單的設定好目的地後,按下追踨後可以放心好好休息,當快到站的時候,它就會提醒你。 點我下載GPS Wake Me Up 請注意: 1.當使用此應用程式時,務必"開啟鈴聲模式"!!! 2.如長時間在背景模式使用GPS會大量消耗電池可用時間。本程式經啟用後即使於背景中也會保持GPS開啟狀態,不使用時請關閉GPS以節省電力。 3.必須使用具有GPS功能的設備,例如iPhone 3GS、iphone 4、iPhone 4s、iPhone 5、iPad 3G。此應用程式不建議使用在iPod Touch、非3G版的iPad。 4.使用前需同時開啟智慧型行動電話GPS定位服務及3G上網功能,以便app取得您所在的位置。在訊號較差的環境下可能會影響到定位的準確度。

FlashDevelop 復習(3)

如何下指令關閉AIR程式。 package com.lovecocoa { import flash.display.Sprite; import flash.display.MovieClip; import flash.media.StageWebView; import flash.geom.Rectangle; import flash.events.Event; import flash.display.Graphics; import flash.events.MouseEvent; import flash.desktop.NativeApplication; import flash.display.NativeWindow; import flash.display.NativeWindowInitOptions; import flash.display.NativeWindowSystemChrome; import flash.display.NativeWindowType; public class Main extends Sprite { public function Main():void { //新增一個按鈕 this.testButton(); } protected function testButton():void { var button:Sprite; //Create a new instance of a Sprite to act as the button graphic. button = new Sprite(); //Set the color of the button graphic button.graphics.beginFill(0xFFCC00); //Set the X,Y, Width, and Height of the button graphic button.graphics.drawRect(0, 0, 200, 200); //Apply the fill butto...

FlashDevelop 復習筆記(2)

圖片
package com.loveococa { import flash.display.Bitmap; import flash.display.Sprite; import flash.events.Event; import flash.ui.Mouse; /** * ... * @author Alex */ public class Enemy extends Sprite {                 //載外外部圖片,要注意圖片資料夾的階層,如上圖所示。 [Embed(source = "./img/gardengnome.png")]                 //定義圖片的類別,要用圖片名稱再接class為命名 private var gardengnomeClass:Class;                 //這邊要特別注意,圖片的檔案是什麼,名字就要定義一樣。                 //如果不採這種方式將會一直出錯。 private var gardengnome:Bitmap = new gardengnomeClass (); public function Test():void { Mouse.hide();                         //以下就如同呼叫物件的方式使用。 gardengnome.height = 30; gardengnome.width = 30; addChild(gardengnome); this.addEventListener(Event.ENTER_FRAME, mouseMove); ...

FlashDevelop 復習筆記(1)

package  { //載入其他的類別庫需要在這撰寫 import flash.display.Sprite; import com.loveococa.Enemy;//載入自建的類別 /** * Hello World * @author benny! */ // This overwrites the Project specific settings                 //定義顯示的視窗大小,以及背景 [SWF(width = "640", height = "480", backgroundColor = "#000000")] public class HelloWorld extends Sprite { public function HelloWorld() { trace( "Hello World" );         this.initGame();//呼叫初始化的方法 } public function initGame():void { var enemy:Enemy = new Enemy(); addChild(enemy)     } } }

取得Master Page的物件

有時候我們在開發asp.net 的時候會使用master page,但是如果master page上有某個物件或是控製元件,我們希望他進到不同的頁面時,可以有做一些改變,或是取值,這個要怎麼做呢? 方法如下。 在Master Page的c#檔中的PageLoad裡定義屬性 /// DropdownList   public string ddl_menu {         get { return nav.MenuValue;}         set { nav.MenuValue = value; }         } 在index.aspx中 給值 this.Master.ddl_menu = "1"; 取值 String temp = this.Master.ddl_menu;

筆記Entity SQL的用法

找了滿多篇如何做到像SQL 語法中的 inner join或是Left join,但看了還是不太熟,在這邊筆記一下。讓自已不要忘記。 如果有兩個Table一個是基本資料、一個是教育程度,在基本資料中關於學位的部份,只存放的教育程度的ID,以方便日後再增加其他的項目。如果想要把資料顯示的時候不要顯示basic時,在學位的部份只有id這邊可以使用inner join的方式。 var query = from basic in context.BasicInfo                    join ed in context.Educations on basic.Education equals ed.ID                   select new{                        姓名=basic.LocalName,                        學位=ed.Name                    } gvResult.Datasource = query; gvResult.DataBind();

把我們的iPhone變成網頁伺服器!

圖片
來到新公司已經兩個月了,終於可以感覺到對工作有點上手,終於可以來分享最近的技術心得了:)這兩個月真的把我操成一個ruby人了,看了好多好多ruby的gem,rack, sinatra, redis-objects, 寄iOS notifications的gem, 等等好多,也寫了好多ruby code。 雖然這些都很值得一說,但是對我來說更有趣的是我最近的專案"your iPhone as a web server"。原始碼在 https://github.com/fumin/rubymotion-zeromq 與 https://github.com/fumin/world 。 這個軟體簡單來說就是讓使用者可以“只透過瀏覽器”就可以與自己的iPhone交流。舉凡瀏覽iPhone裡的照片,閱讀iPhone裡的筆記,下載檔案等等,以後不再需要經由拖曳到dropbox,上傳到免空,或是寄給自己沒有標題的郵件來完成了! 整個系統的架構大致為使用者經由瀏覽器連接到web server,web server代理連到broker server,broker server再與與之有socket連接的iPhone做request,回來的response再循原路回到瀏覽器。 有趣的是整個系統都是用ruby寫的喔,連iPhone程式本身!因為有了rubymotion:)其他使用的核心技術還包含了zeromq,web server則是使用sinatra搭配unicorn,並且host在hiroku上。 http://www.rubymotion.com/ http://www.zeromq.org/ http://www.sinatrarb.com/

c# 把List中重復的資料去掉

using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { // List with duplicate elements. List<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(3); list.Add(3); list.Add(4); list.Add(4); list.Add(4); foreach (int value in list) { Console.WriteLine("Before: {0}", value); } // Get distinct elements and convert into a list again. List<int> distinct = list.Distinct().ToList(); foreach (int value in distinct) { Console.WriteLine("After: {0}", value); } } } Output Before: 1 Before: 2 Before: 3 Before: 3 Before: 4 Before: 4 Before: 4 After: 1 After: 2 After: 3 After: 4