發表文章

目前顯示的是 2012的文章

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); } private function mouseMove(evt:Event):void { gardengnome.x = mouseX - 15; gardengnome.y = mouseY - 15; } public function Enemy() { trace("I'm alive"); Test();

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

求兩點的距離

CGFloat GetPointDistance (CGPoint p0, CGPoint p1) {     CGFloat xDiff = p0.x - p1.x;     CGFloat yDiff = p0.y - p1.y;          return sqrtf ((xDiff * xDiff) + (yDiff * yDiff)); }

在iphone中如何讓某個uiview順著某個圓心轉

首先定義,把角度轉換成弧度 #define RADIANS( degrees ) ( degrees * M_PI / 180 )  [NSTimer scheduledTimerWithTimeInterval:0.01f                                     target:self                                   selector:@selector(testeeee)                                   userInfo:nil                                    repeats:YES] ; -(void)  testeeee{  if (angle > 360) {         angle = 0;     }              angle++;     //    NSLog(@"%f",angle);     int r = 100;     //    testView.frame = CGRectMake(120, 120, 50, 50);     CGPoint newCarPosition;     newCarPosition.x = (160) + r*cos(RADIANS(angle));     newCarPosition.y = (230) + r*sin(RADIANS(angle));     CGRect new = touchView.frame;     new.origin = newCarPosition;     touchView.frame = new; }

單點讓UIView同時縮放與旋轉

UITouch *touch1 = [sortedTouches objectAtIndex:0]; //觸控移動的點         CGPoint beginPoint1 = *(CGPoint *)CFDictionaryGetValue(touchBeginPoints, touch1);         CGPoint currentPoint1 = [touch1 locationInView:self.superview];         double layerX = self.center.x;//指定UIView的中心點         double layerY = self.center.y;//指定UIView的中心點         double x1 = beginPoint1.x - layerX;         double y1 = beginPoint1.y - layerY;         double x2 = layerX - layerX;         double y2 = layerY - layerY;         double x3 = currentPoint1.x - layerX;         double y3 = currentPoint1.y - layerY;         double x4 = layerX - layerX;         double y4 = layerY - layerY;                  double D = (y1-y2)*(y1-y2) + (x1-x2)*(x1-x2);         if (D < 0.1) {             return CGAffineTransformMakeTranslation(x3-x1, y3-y1);         }                  double a = (y1-y2)*(y3-y4) + (x1-x2)*(x3-x4);         double b = (y1-y2)*(x3-x4) - (x1-x2)*(y3-y4);      

Objective-C的數學運算函式

在寫程式的時候,常常需要用到一些數學運算,這邊整理一下常用的。 pow(x,y) : x 的 y 次方 sqrt(x) : x的平方根 floor(x) : 小於 x 的最大整數 ceil(x) : 大於 x 的最小整數 exp(x) : e 的 x 次方 log(x) : 以 e 為底 x 的對數值 log10(x) : 以10為底 x 的對數值 abs(x) : 整數 x 的絕對值 fabs(x) : 浮點數 x 的絕對值 srand(x), rand() : 產生亂數

asp.net c# 學習筆記

使用MasterPage的方法 1.在aspx的原始檔,按下編輯程式碼的頁面,到最上面加入MasterPageFile及Title <%@ Page Language="c#" AutoEventWireup="false" CodeFile="test.aspx.cs" Inherits="test" MasterPageFile="MasterPage名稱.master" Title="網頁標題名稱" %> 2.<html></html>、<head></head>、<title></title>、<body></body>標籤這些都刪除 3.在設計頁面的ContentPlaceHolder元件按右鍵→建立自訂內容 4.再將原<body></body>中的內容複製到<asp:Content...略></asp:Content>中即可 讀取get post的方法 get的方法 string id = Request["ID"] post的方法 Request.Form["變數"]

c# 學習筆記 - 將英文字串中,每個單字第一個字母變大寫

將一串英文字,每個單字第一個字母轉換成大寫 using System; using System.Collections.Generic; using System.Web; /// <summary> /// Summary description for Tools /// </summary> public class Tools { public Tools() { // // TODO: Add constructor logic here // }     public static string UppercaseWords(string value)     {         char[] array = value.ToCharArray();         // Handle the first letter in the string.         if (array.Length >= 1)         {             if (char.IsLower(array[0]))             {                 array[0] = char.ToUpper(array[0]);             }         }         // Scan through the letters, checking for spaces.         // ... Uppercase the lowercase letters following spaces.         for (int i = 1; i < array.Length; i++)         {             if (array[i - 1] == ' ')             {                 if (char.IsLower(array[i]))                 {                     array[i] = char.ToUpper(array[i]);                 }  

如何讓app只能在iphone 4以上運行的方法

設定必要的相容性,一定要有陀螺儀,因這個只有iphone 4以上才有的晶片。 <key> UIRequiredDeviceCapabilities </key> <array>     <string> gyroscope </string> </array> 以下是其他網友被退件後,apple回覆的方法 : Yes, it's possible to make an App only for iPhone 4. However in this case you MUST make use of the UIRequiredDeviceCapabilities to limit the App to some iPhone4-only feature like camera-flash. (My iPhone4 App got rejected because I did not limit it to certain features. I just had added to the description: "Runs only on iPhone 4". The rejection letter told me that I must use the UIRequiredDeviceCapabilities if I want to limit the App to a certain hardware. Resubmitted the App with UIRequiredDeviceCapabilities set and the App got approved right away)

ARMv6 與 ARMv7

現在研究如何讓app只限定在iphone 4上運行,剛好找到下列的文章。 What is ARMv7? It's a new CPU architecture of iPhone. Make some apps run faster. What does ARMv7 to do with me? Here is a post by most_Unique found on iPhoneCake. Most apps today use FAT binary which cracked on ARMv7 device will not work on ARMv6 device. ARMv7 = iPhone 3GS/4, iPod 3G, iPad ARMv6 = iPhone 2G/3G, iPod 1G/2G Most crackers, like me, have 3GS. This means when cracking any app it will not work on ARMv6 devices. We have tried to fix it but haven't yet been able to. Now to my understanding apps cracked with ARMv6 device will work on any device. But since most of us have already upgraded some of you with older devices are just stuck. Sorry. So if an app crashes and you have one of these old devices it is likely the app has FAT binary and that is the problem.

將GLPaint的PaintView與底圖一起存成image

在xib檔中,有一個drawview,放在這個drawview下方再加上一個UIimageView,並把他的名字定為backgroundView。接下來把這個View設定IBOutlet到AppController上。 接下來我們可以設定一個save的funcation。 -(void)saveImage{//使用這個方法就可以把圖片全部合併起來,並寫入到Album裡面了。  UIImageWriteToSavedPhotosAlbum([self imageRepresentationForBackground], self, @selector(image:didFinishSavingWithError:contextInfo:), nil); } -(UIImage*) imageRepresentationForBackground {     UIImage* blendedImage=nil;     UIImageView* imageView = [[UIImageView alloc] initWithFrame:backgroundView.bounds];     imageView.image= backgroundView.image;     imageView.contentMode=backgroundView.contentMode;     UIImageView* subView   = [[UIImageView alloc] initWithImage:[drawingView imageRepresentation]];     [imageView addSubview:subView];     UIGraphicsBeginImageContext(imageView.frame.size);     [imageView.layer renderInContext:UIGraphicsGetCurrentContext()];     blendedImage = UIGraphicsGetImageFromCurrentImageContext()

iOS 拍照以及從相簿取出照片

最近在開發camera and album 相關功能的app。將一些用法以及代碼筆記下來。 LCSViewController.h and LCSViewController.m #import @interface LCSViewController:UIViewController @property(nonatomic,retain)IBOutlet UIImageView *imageView; @property(nonatomic,retain)IBOutlet UIBarButtonItem *saveImageBotton; -(IBAction)showCameraAction:(id)sender;//拍照 -(IBAction)saveImageAction:(id)sender;//將照片存到相簿 -(IBAction)pickPhotoFromLibery:(id)sender;//從相簿取出照片 @end #import "LCSViewController.h" @interface LCSViewController () @end @implementation LCSViewController @synthesize imageView; @synthesize saveImageBotton; #pragma mark - Show camera -(IBAction)showCameraAction:(id)sender { UIImagePickerController *imagePickController=[[UIImagePickerController alloc]init]; //You can use isSourceTypeAvailable to check imagePickController.sourceType=UIImagePickerControllerSourceTypeCamera; imagePickController.delegate=self; imagePickController.allowsEditing=YES; imagePickController.showsCamer

讓你的iOS app可以與你的 Rails server溝通

圖片
今天在fb的社團看到網友分享這個類庫,真的實在太方便了~~ NSRails  is a light-weight Objective-C framework (iOS or OS X) for simple but powerful communication with your Rails server.  The comments above were posted using the demo iOS app bundled with the source.  Download it  and  get started! http://nsrails.com/

使用權重控制隨機選取

圖片
水果  |  Apple  | Orange | Banana | Mango ------------------------------------------ 權重  |   70    |   10   |   10   |   10 從這個表中,我們分派了各個權重,我們希望Apple最常被抽中,所以將權重設定較高的值。 因此我們從這個表來實現作法。 fruits = [[NSArray alloc] initWithObjects:@"apple",@"orange",@"banana",@"mango", nil]; //定義水果 weights = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:70],[NSNumber numberWithInt:10],[NSNumber numberWithInt:10],[NSNumber numberWithInt:10], nil]; //定義權重  int currentfruit=0;     NSMutableArray *weighedfruits = [[NSMutableArray alloc] init];         while (currentfruit<[fruits count]){ //step through each fruit[] element        for (int i = 0; i < [[weights objectAtIndex:currentfruit] intValue]; i++) {                  [weighedfruits addObject: [fruits objectAtIndex:currentfruit]];                                  }             currentfruit++;             if (currentfruit==[fruits coun