2011年5月30日月曜日

MacOSのアイコンは通常気づかないところが凝っている!!

不意に拡大してみたら、このように紙質を再現するためにノイズのような柄があることに気付きましたw

 

Macのアイコンって細かいところ(見えないところ)にこだわっていてCoolですよねw

Pic 2011 05 30 13 29 24

 

というわけで他にも拡大してみました。

ほら、拡大しないと読めない文字があります。

Internal Hard Disk って書いてありますww

だから、なんだ?って感じですけどね。

Pic 2011 05 30 13 34 32

 

アドレスブックも拡大してみると結構高級感があります。

Pic 2011 05 30 13 36 15

 

ちょっとドアが大きすぎる家。。。w

Pic 2011 05 30 13 39 33

 

ほかにも色々あるんですけど。

今日はここまでで。

MT4でinvalid integer number...というよなエラーが出たときの原因

こんなエラーが出たときはもしかすると僕と同じように列挙型のstringをパラメータに設定しているのかもしれません。

invalid integer number as parameter 2 for Indicator call function

 

 

誤:

   string timeFrame1 = "PERIOD_H1";
  double bandH1UpperCurrent2=iBands(NULL,timeFrame1,20,2,0,PRICE_HIGH,MODE_UPPER,0);
   double bandH1UpperPrevious2=iBands(NULL,timeFrame1,20,2,0,PRICE_HIGH,MODE_UPPER,1);
   double bandH1LowerCurrent2=iBands(NULL,timeFrame1,20,2,0,PRICE_LOW,MODE_LOWER,0); 
   double bandH1LowerPrevious2=iBands(NULL,timeFrame1,20,2,0,PRICE_LOW,MODE_LOWER,1);

正:

   int timeFrame1 = PERIOD_H1;
  double bandH1UpperCurrent2=iBands(NULL,timeFrame1,20,2,0,PRICE_HIGH,MODE_UPPER,0);
   double bandH1UpperPrevious2=iBands(NULL,timeFrame1,20,2,0,PRICE_HIGH,MODE_UPPER,1);
   double bandH1LowerCurrent2=iBands(NULL,timeFrame1,20,2,0,PRICE_LOW,MODE_LOWER,0); 
   double bandH1LowerPrevious2=iBands(NULL,timeFrame1,20,2,0,PRICE_LOW,MODE_LOWER,1);

はまった人の確認用に投稿しました。(´。◕ω◕。)

2011年5月15日日曜日

localizationの際のコマンド

このページを参考した
http://d.hatena.ne.jp/chaoruko/20110416/1302967225
genstrings -a $(find . -name "*.m")

iPhone appのアイコンの規定

PNG形式 デフォルトのファイル名は「Icon.png」(「Info.plist」ファイルで変更可) アイコンサイズは57px×57px(iPadは、72px×72px、iPhone 4は、114px×114px) 角の丸みと光沢のエフェクトはシステムが自動的に付加(Info.plistファイルで変更可) アプリケーションのトップディレクトリに配置

2011年5月14日土曜日

xcodeで Code Sign error ~~~というようなエラーが出たときの対策

こんなエラー内容でずいぶんハマってました。。。 Code Sign error: The identity 'iPhone Developer' doesn't match any valid certificate/private key pair in the default keychain Googleで検索したら、認証鍵の設定を変えてみて。。。と書いてあったので試したけどエラーは消えず。。。それも当然、iPhoneシュミレータでのデバッグではなく実機でのデバッグをする!というような設定だったため。。。 同じように困っている人がいた場合は下記の動画を御覧ください。 見たらわかります。

2011年5月13日金曜日

objective-Cで配列や辞書のループをする。高速列挙も使ってみる

高速列挙はPythonのように簡単だ!ლ(・ิω・ิლ)
int main (int argc, const char * argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
    
    //for分を使って配列を参照
    NSArray *arr =[NSArray arrayWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",@"eee",@"fff", nil];
    for(int i=0; i<[arr count]; i++){
        NSLog(@"index: %d, value:%@",i,[arr objectAtIndex:i]);
    }
    
    NSLog(@"----------------");
    
    //for分を使って辞書を参照
    NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:
                         @"1",@"a",
                         @"2",@"b",
                         @"3",@"c",
                         @"4",@"d",
                         @"5",@"e",
                         @"6",@"f",
                         @"7",@"g"
                         , nil];
    NSArray *keys = [dict allKeys];
    for(int i=0; i<[keys count]; i++){
        NSLog(@"key:%@ value:%@\n",
              [keys objectAtIndex:i],
              [dict objectForKey:[keys objectAtIndex:i]]);
    }

    NSLog(@"----------------");

    //NSEnumeratorを使う
    //arrayをループ
    NSEnumerator *enumerator =[arr objectEnumerator];
    id obj;
    while(obj =[enumerator nextObject]){
        NSLog(@"value:%@",obj);
    }

    NSLog(@"------dictをループ----------");

    //辞書の値の列挙
    NSEnumerator *enumerator2 =[dict objectEnumerator];
    id obj1;
    while(obj1 =[enumerator2 nextObject]){
        NSLog(@"value:%@",obj1);    
    }
    //辞書のキーの列挙
    NSEnumerator *kEnumerator =[dict keyEnumerator];
    id key;
    while(key =[kEnumerator nextObject]){
        NSLog(@"key:%@",key);            
    }
    
    //高速列挙
    NSLog(@"-----高速列挙-----------");
    
    //NSArrayをループ
    NSLog(@"NSArrayをループ");
    for(id obj2 in arr){
        NSLog(@"%@",obj2);
    }
    //NSdictをループ
    NSLog(@"NSdictをループ");    
    for(id key in dict){
        NSLog(@"key:%@ value:%@",key,[dict objectForKey:key]);        
    }
    //NSEnumeratorをループ
    NSLog(@"NSEnumeratorをループ");
    NSEnumerator *enumerator3 = [dict objectEnumerator];
    for(id obj3 in enumerator3){
        NSLog(@"%@",obj3);    
    }
    
    [pool drain];
    return 0;
}

NSDictionaryの使い方--Objective-C--

int main (int argc, const char * argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
    //NSDictionaryを作成
    //値、キー,値、キー,・・・・・の順で指定していく
    NSDictionary *dict1 =[NSDictionary dictionaryWithObjectsAndKeys:
                          @"John",@"name",
                          [NSNumber numberWithInt:8],@"age",
                          @"blue",@"color"
                          ,nil];
    NSLog(@"%@",dict1);// age = 8 color = blue name =Jhon
    
    //値とキーをそれぞれ配列で指定して作成する
    NSArray *keys =[NSArray arrayWithObjects:@"name",@"age",@"color", nil];
    NSArray *vals =[NSArray arrayWithObjects:@"Paul",@"7",@"brown", nil];
    NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:vals forKeys:keys];
    NSLog(@"%@",dict2);// age = 7 color = brown name =Paul

    //キーを指定して要素を取得
    id obj1 =[dict1 objectForKey:@"name"];
    NSLog(@"%@",obj1);//John
    
    //値とキーをそれぞれ配列として取得
    NSArray *kArr =[dict1 allKeys];
    NSArray *vArr =[dict1 allValues];
    NSLog(@"%@and%@",kArr,vArr);//(name,age,color) and (John,8,blue)
    
    //辞書の要素数を取得
    NSUInteger dictCount =[dict1 count];
    NSLog(@"%d",dictCount);//3
    
    //辞書の比較
    BOOL isDictEquals =[dict1 isEqualToDictionary:dict2];
    NSLog(@"%d",isDictEquals);//0(False)
    
    [pool drain];
    return 0;
}

NSMutableArrayの使い方--objective-C--

int main (int argc, const char * argv[])
{
    
    NSAutoreleasePool *pool =[[NSAutoreleasePool alloc]init];
    
    //NSMutableArrayは自由に要素を追加、置換、削除できるクラスです。
    
    //空の可変配列を作成
    NSMutableArray *mArr = [NSMutableArray array];
    
    NSLog(@"%@",mArr);//()空白が出力
    
    //固定の配列をコピーして、可変する配列を作成
    NSArray *arr = [NSArray arrayWithObjects:@"aaa",@"bbb",@"ccc",nil];
    NSMutableArray *mArr2 =[arr mutableCopy];
    
    NSLog(@"%@",mArr2);//aaa,bbb,ccc
    
    //要素の追加、挿入、置換
    [mArr addObject:@"ABC"];//追加
    [mArr insertObject:@"DEF" atIndex:1];//挿入
    NSLog(@"%@",mArr);//ABC,DEF
    [mArr replaceObjectAtIndex:1 withObject:@"XYZ"];//置換
    NSLog(@"%@",mArr);//ABC,XYZ
    [mArr addObjectsFromArray:arr];//別の配列からコピーして追加
    NSLog(@"%@",mArr);//ABC,XYZ,aaa,bbb,ccc
    NSLog(@"%@",arr);//aaa,bbb,ccc(前の値はそのまま)
    
    //要素の削除
    //インデックスを指定して削除
    [mArr removeObjectAtIndex:3];//bbbを削除
    NSLog(@"%@",mArr);//ABC,XYZ,aaa,ccc
    
    //要素を指定して削除
    [mArr removeObject:@"aaa"];//aaaの要素を削除
    NSLog(@"%@",mArr);//ABC,XYZ,ccc
    
    //複数の要素を指定して、それらを削除
    [mArr removeObjectsInArray:[NSArray arrayWithObjects:@"ABC",@"XYZ", nil]];
    NSLog(@"%@",mArr);//ccc
    
    //一旦追加
    [mArr addObjectsFromArray:[NSArray arrayWithObjects:@"abc",@"def",@"ghi", nil]];
    NSLog(@"%@",mArr);///ccc,abc,def,ghi
    
    //範囲を指定して複数を削除
    [mArr removeObjectsInRange:NSMakeRange(1, 2)];
    NSLog(@"%@",mArr);//ccc,ghi
    
    //最後の要素を削除
    [mArr removeLastObject];
    NSLog(@"%@",mArr);//ccc
    
    
    [pool drain];
    return 0;
}

NSArrayの使い方

int main (int argc, const char * argv[])
{
    
    NSAutoreleasePool *pool =[[NSAutoreleasePool alloc]init];
    
    //配列の作成
    NSArray *array = [NSArray arrayWithObjects:@"abc",@"def",@"ghi",@"jkl",nil];
    NSLog(@"arra: %@",array);//arrayの要素が順番に出力
    
    //配列の要素数を取得
    int arrCount = [array count];
    NSLog(@"arrCount:%d",arrCount);//4
    
    
    //配列の要素を取り出す
    id obj01 = [array objectAtIndex:2];
    id obj02 = [array lastObject];
    NSArray *array2 =[array subarrayWithRange:NSMakeRange(1, 2)];
    
    NSLog(@"obj01: %@",obj01);//obj01: ghi
    NSLog(@"obj02: %@",obj02);//obj02: jkl
    NSLog(@"array2: %@",array2);//def,ghi
    
    //要素のインデックスを取得
    NSString *val = @"pqr";//array["pqr"]を取り出す
    NSUInteger objectIndex = [array indexOfObject:(id)val];
    if(objectIndex == NSNotFound){//ない場合はNSNotFoundという返り値になる
        NSLog(@"ないよ!");//これが実行される
    }else{
        NSLog(@"あるよ!");
    }
    
    //ある要素が含まれているか確認
    NSString *val2 =@"abc"; 
    BOOL isObjectContain =[array containsObject:val2];
    if (isObjectContain){
        NSLog(@"True");//これが実行される
    }else{
        NSLog(@"false");
    }
        
    
    //配列の比較
    NSArray *array3 = [NSArray arrayWithObjects:@"abc",@"def",@"ghi",@"jkl", nil];
    BOOL isArrayEquals =[array isEqualToArray:array3];
    
    if(isArrayEquals){
        NSLog(@"いっしょだよ!");
    }else{
        NSLog(@"違うよ!");
    }

    
    [pool drain];
    return 0;
}


2011年5月11日水曜日

base64の使い方 --python--

'''base64の使い方'''

part = base64.b64encode('pass')

print(part)#cGFzcw==
print(base64.b64decode(part)) #pass

'''URLのパラメータとして使う場合は下記'''
part = base64.urlsafe_b64encode('pass')

print(part)#cGFzcw==
print(base64.urlsafe_b64decode(part))#cGFzcw==

md5,shaの使い方 --python--

'''md5の使い方'''

m = md5.new('pass-word')

print (m) #
print (m.hexdigest()) #ed0eacb4e34e50c1c53f9698600d4b86

import urllib

'''多分クオートしないとエラーになる...'''
try:
	print m.digest()
except UnicodeDecodeError:
	print u'UnicodeDecodeErrorなのだ'


'''URLのパラメータとして使用する場合はクオートする必要がある'''
quoted =''.join([urllib.quote_plus(x) for x in m.digest()])

print quoted #%ED%0E%AC%B4%E3NP%C1%C5%3F%96%98%60%0DK%86
'''shaの使い方'''

m = sha.new('pass-word')

print (m) #
print (m.hexdigest()) #ed0eacb4e34e50c1c53f9698600d4b86

import urllib

'''多分クオートしないとエラーになる...'''
try:
	print m.digest()
except UnicodeDecodeError:
	print u'UnicodeDecodeErrorなのだ'


'''URLのパラメータとして使用する場合はクオートする必要がある'''
quoted =''.join([urllib.quote_plus(x) for x in m.digest()])

print quoted #%ED%0E%AC%B4%E3NP%C1%C5%3F%96%98%60%0DK%86

pickleの使い方--python--

'''pickleの使い方'''

'適当なオブジェクトを用意する'
o = [1,2,3,(1,2,3),{1,2,3,4,(1,2)}]

print o #[1, 2, 3, (1, 2, 3), set([(1, 2), 1, 2, 3, 4])]


"""書き込みモードで開く"""
opened = open('test.dump','w')

'''pickle化'''
pickle.dump(o,opened)		
'''同ディレクトリにtest.dumpとして保存されている'''

opened.close()

'''dumpファイルを開く'''
opened2 = open('test.dump')

o2 = pickle.load(opened2) 

print o2 #[1, 2, 3, (1, 2, 3), set([(1, 2), 1, 2, 3, 4])]
'''ちゃんとオブジェクトとして再現できる'''
print o2[3][2] #3

o2.append({'hoge':'foo'})

print o2 #[1, 2, 3, (1, 2, 3), set([(1, 2), 1, 2, 3, 4]), {'hoge': 'foo'}]
opened2.close()

opened3 = open('test.dump','w')
	
'再度保存するときはdump'
pickle.dump(o2,opened3)

shelveの使い方--python--

import shelve


def main():
	
	"""shelveの使い方"""
	
	'''shelvetestという名前のファイルを保存'''
	d = shelve.open("shelvetest",writeback=True)
	
	'辞書と同じ使い方でデーターを挿入'
	d.update({"one":"1","tow":"2"})
	
	print(d) #{'tow': '2', 'one': '1'}
	
	'''closeした時点でファイルとして保存される'''
	d.close()
	print "-"*30
	
	'ファイル名を指定して開く'
	d2 = shelve.open("shelvetest")
	
	print(d2) #{'tow': '2', 'one': '1'}

	d2.close()
	
if __name__ == '__main__':
	main()


xcode4でpythonを使う

参考したURLが英語だったので日本語に訳す。

  1. Xcode4を開く
  2. メニューバー→File→New→New Projectと選ぶ
  3. Mac OSXの範囲にあるOtherを選ぶ
  4. External Build Systemを選んでNext
  5. 任意のProduct nameを入力する
  6. Build Toolに/usr/local/bin/python3、/usr/bin/python等とpythonの位置を指定してNext
  7. 任意の保存場所を指定してCreate

 

 

  1. メニューバー→File→New→New Fileと選ぶ
  2. Mac OSXの範囲にあるOtherを選ぶ
  3. Emptyを選んでNext
  4. 任意の保存するディレクトリをえらんで.pyのpython形式でファイル名を指定してSave

 

  1. メニューバー→Product→Edit Schemeと選ぶ
  2. 左側にあるRunという項目をクリックする
  3. infoタブにあるExecutableをOtherに変更
  4. ⇧⌘Gと押すと隠しフォルダを指定して移動できるのでExternal Build Systemとして指定したファイルを指定(この方法は今回初めて知った!!便利>o<)
  5. Debuggerの項目はNoneに変更
  6. Base Expansions Onの項目に作成したproduct nameを指定
  7. Arguments Passed On Launchの項目の下にある+ボタンをクリックして・・・

ここからわからん。。。。w

一度保留して、hello worldを試してみたけど、xcodeがすぐ落ちる。。。

だれか、教えて〜〜〜><

  1. Click the "+" icon under "Arguments Passed On Launch". You may have to expand that section by clicking on the triangle pointing to the right.
  2. Type in "$(SOURCE_ROOT)/" without the quotes and then the name of the Python file you want to test. Remember, the Python program must be in the project folder. Otherwise, you will have to type out the full path here.
  3. Click "OK".
  4. Start coding.

原文:http://stackoverflow.com/questions/5276967/python-in-xcode-4

2011年5月2日月曜日

Python覚え書き

file = open('index.html') html = file.read()

↓短縮

html = open("index.html").read()