2011年7月28日 星期四

Android - MapView上面的圖片跟著縮放

昨天在ptt的AndroidDev板看到有鄉民在問怎麼讓MapView上面的圖片跟著縮放,想起之前也有做過類似的測試,就寫了這篇和大家分享。

首先先看到layout檔的排版:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <com.google.android.maps.MapView
  android:id="@+id/mView_Main"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:apiKey="你自己的key">
 </com.google.android.maps.MapView>
</LinearLayout>

很簡單的一個地圖畫面。

Objective-C 的 self

今天查被Apple reject的原因,剛好看到有關self的一些解釋,趕緊記下來免得忘記。

假設現在有個類別Test,裡面有一個NSData的成員。

@interface Test : NSObject {
    NSData *iData;
}

@property(nonatomic,retain) NSData *iData;

@end

當我們使用 self.NSData 的時候,就等同於呼叫編譯器幫我們自動產生的getter方法,retain + 1。
當我們使用 self.NSData = [[NSData alloc] init],就等同於呼叫setter的方法。

而編譯器產生的getter/setter就等同於自己寫的:

-(void) setIData : (NSData *) newData {
  if(iData != newData){
    [iData release];
    iData = [newData retain];
  }
}

-(NSData *) getIData {
  return iData;
}

另外,在dealloc時,就不要再用self了!

2011年7月25日 星期一

中華電信 50M P2P實測

話不多說,看圖。平均在5MB/s上下跳動。

2011年7月18日 星期一

Android上的好用鬧鐘 - Alarm Clock Xtreme

Android上面有很多套鬧鐘軟體,今天介紹的這一套是我覺得還不錯用的鬧鐘軟體,除了會盡責的叫你起床之外,還有專為懶人設計的貪睡功能,每天最美好的時光之一就是鬧鐘響起到下一次貪睡期間的小小賴床,好像不賴一下床,今天就沒有辦法開始一樣XD

另外一個推薦原因就是...正(繁)體中文是我翻的啦!老王賣瓜,自賣自誇一下!

Market 連結:Alarm Clock Xtreme
免費版本:有廣告
付費版本:0.99 美金,去除廣告
QR Code

2011年7月16日 星期六

Android 模擬器打不開

今天為了測試一支半成品,不敢貿然安裝在實機上,打算安裝在那慢的可以的模擬器來做測試,沒想到一按啟動就跳出了怪訊息:

invalid command-line parameter: Files\android-sdk-windows\tools/emulator-arm.exe.
Hint: use '@foo' to launch a virtual device named 'foo'.
please use -help for more information

幹什麼!造反了!

2011年7月15日 星期五

StringBuilder append null in Java and C# test

今天檢查了一下StringBuilder對於附加null的處理做了個小實驗。

Java:
import java.util.Calendar;

public class main {
 public static void main(String[] args) {
  testStringBuilder();
 }

 public static void testStringBuilder() {
  StringBuilder sBuilder = new StringBuilder();
  
  System.out.println("1. string of new StringBuilder()");
  if(sBuilder == null){
   System.out.println("string:[is null]");
  }else{
   System.out.println("result:string:[" + sBuilder + "],length:[" + sBuilder.length() + "]");
  }
  
  StringBuilder sBuilder2 = new StringBuilder("");
  
  System.out.println("2. string of new StringBuilder(\"\")");
  if(sBuilder2 == null){
   System.out.println("string:[is null]");
  }else{
   System.out.println("result:string:[" + sBuilder2 + "],length:[" + sBuilder2.length() + "]");
  }
  
  StringBuilder sBuilder3 = new StringBuilder();
  String nullString = null;
  sBuilder3.append(nullString);
  
  System.out.println("3. string of new StringBuilder() append null");
  if(sBuilder3 == null){
   System.out.println("string:[is null]");
  }else{
   System.out.println("result:string:[" + sBuilder3 + "],length:[" + sBuilder3.length() + "]");
  }
  
  StringBuilder sBuilder4 = new StringBuilder("");
  sBuilder4.append(nullString);
  
  System.out.println("4. string of new StringBuilder(\"\") append null");
  if(sBuilder4 == null){
   System.out.println("string:[is null]");
  }else{
   System.out.println("result:string:[" + sBuilder4 + "],length:[" + sBuilder4.length() + "]");
  }
 }

2011年7月13日 星期三

中華電信 50M 實測

好不容易辦好了50個妹,當然要來測試一下50個妹的威力!下面會分成3個部分,分別有電腦的速度測試、Wifi的速度測試以及苦命的3G速度測試。

先說明一下,有關於速度換算:
下行:50Mbps = 6400 KB
上行:5Mbps = 640 KB

首先是電腦的部分,先來張種花的速度測試:
種花自己的測速網站
 我的老天爺啊!上行跑出了破表的速度,還敢說沒有作弊!這麼完美的速度要哪裡找?

2011年7月11日 星期一

I touchs: Finding memory leaks for apps in Xcode 4

I touchs: Finding memory leaks for apps in Xcode 4: "更新日期: 2011/03/ 17 參考資料: How To Debug Memory Leaks with XCode and Instruments Tutorial | Ray Wenderlich http://www.raywenderlich.com/2696..."