- (NSString *)getHEX:(NSData *)data
{
const unsigned char *dataBytes = [data bytes];
NSMutableString *ret = [NSMutableString stringWithCapacity:[data length] * 2];
for (int i=0; i<[data length]; ++i)
[ret appendFormat:@"%02X", (NSUInteger)dataBytes[i]];
return ret;
}
2014年3月12日 星期三
iOS 開發筆記 - NSData to HEX NSString
最近把玩 Apple Push Notification service 時,需要將 App 取得的 Device Token 轉成 HEX String 來使用。
[Javascript] Bootstrap - 使用大量 Collapse 與 錨點(anchor/hashchange) 處理
最近在使用 Bootstrap 來包裝 Web UI ,有一卡車多的東西就先用 Collapse 包起來,而官網的範例:
其中可以留意 collapseOne 的 class 屬性中有 in,這效果是預設展開。
然而,如果又額外做了個 Menu 維護這群 Panels/Collapse 時,希望點選某項時可以讓瀏覽器 scrollbar 移到恰當地點時,則需要處理一下:
HTML:
Javascript:
然而,如果預設 Collopse 是關閉的,那上述可能無法正確顯示效果,則需要把錨點切換到預設不會關閉的地點,例如 panel-heading 的位置:
而 Menu 的 href 則改為 collapseOneHead 即可:
註:由於採用 CodeIgniter 的關係,在 錨點(anchor) 的變化有點不如預期,所以改在 <a> 點擊上處理,而非用偵測 hashchange 事件。
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
Collapsible Group Item #1
</a>
</h4>
</div>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
</div>
</div>
...
</div>
其中可以留意 collapseOne 的 class 屬性中有 in,這效果是預設展開。
然而,如果又額外做了個 Menu 維護這群 Panels/Collapse 時,希望點選某項時可以讓瀏覽器 scrollbar 移到恰當地點時,則需要處理一下:
HTML:
<div id="menu">
<ul>
<li><a data-toggle="collapse" data-target="#collapseOne" href="#collapseOne">collapseOne</a></li>
<li><a data-toggle="collapse" data-target="#collapseTwo" href="#collapseTwo">collapseTwo</a></li>
<li><a data-toggle="collapse" data-target="#collapseThree" href="#collapseThree"> collapseThree </a></li>
</ul>
</div>
Javascript:
$(document).ready(function(){
$('a[href*=#]').click(function(e){
var target = $(this).attr('href');
//console.log($(this).attr('href'));
if( target[0] == '#' ) {
//target = target.substr(1);
if( $(target) && $(target).offset() && $(target).offset().top )
$('html,body').animate({
scrollTop: $(target).offset().top
}, 1000 );
}
});
});
然而,如果預設 Collopse 是關閉的,那上述可能無法正確顯示效果,則需要把錨點切換到預設不會關閉的地點,例如 panel-heading 的位置:
<div class="panel-group">
<div class="panel panel-default">
<div id="collapseOneHead" class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
Collapsible Group Item #1
</a>
</h4>
</div>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
....
</div>
</div>
...
</div>
而 Menu 的 href 則改為 collapseOneHead 即可:
<div id="menu">
<ul>
<li><a data-toggle="collapse" data-target="#collapseOne" href="#collapseOneHead">collapseOne</a></li>
<li><a data-toggle="collapse" data-target="#collapseTwo" href="#collapseTwoHead">collapseTwo</a></li>
<li><a data-toggle="collapse" data-target="#collapseThree" href="#collapseThreeHead"> collapseThree </a></li>
</ul>
</div>
註:由於採用 CodeIgniter 的關係,在 錨點(anchor) 的變化有點不如預期,所以改在 <a> 點擊上處理,而非用偵測 hashchange 事件。
標籤:
anchor,
Bootstrap,
Collapse,
hashchange,
javascript,
js,
panels
2014年3月11日 星期二
iOS 開發筆記 - 使用 AssetsLibrary (assets-library://) 取得相簿內照片的原圖、縮圖
一直以來都是自己檔案管理,最近開始想要用內建相簿來管理儲存。
用法:
其中 key 是類似這樣:assets-library://asset/asset.JPG?id=xxx&ext=JPG。
用法:
#import <AssetsLibrary/ALAssetsLibrary.h>
#import <AssetsLibrary/AssetsLibrary.h>
typedef void (^DoneHandler)(NSDictionary *ret);
- (void)get:(NSString *)key callback:(DoneHandler)handler {
ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
[assetslibrary assetForURL:[NSURL URLWithString:key] resultBlock:^(ALAsset *asset) {
//NSLog(@"asset:%@",asset);
UIImage *image = nil;
image = [UIImage imageWithCGImage:[asset aspectRatioThumbnail]];
image = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
image = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]];
handler(@{@"image":image});
} failureBlock:^(NSError *error) {
handler(@{});
}];
}
其中 key 是類似這樣:assets-library://asset/asset.JPG?id=xxx&ext=JPG。
iOS 開發筆記 - 使用 MD5
忽然發現,自己在 iOS 上沒有用過 MD5 耶,一定是太少寫程式了 Orz
驗證方式:
參考資料:Calculate MD5 on iPhone
#import <CommonCrypto/CommonDigest.h>
- (NSString *)md5:(NSString *)str
{
const char *cStr = [str UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5( cStr, strlen(cStr), result );
return [NSString
stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1],
result[2], result[3],
result[4], result[5],
result[6], result[7],
result[8], result[9],
result[10], result[11],
result[12], result[13],
result[14], result[15]
];
}
驗證方式:
$ echo -n "string" | md5
參考資料:Calculate MD5 on iPhone
[OSX] 使用 ntpdate 和 systemsetup 更新系統時間 @ Mac OS X 10.9.2
公司的 Air 被幫我當成不關機的裝置,只是隨著不關機的時間拉長時,系統的時間就會開始延遲,解法就是用 ntpdate 設定一下。
$ sudo su
# ntpdate -u $(systemsetup -getnetworktimeserver|awk '{print $4}')
標籤:
ntp,
ntpdate,
OSX,
system time,
systemsetup
訂閱:
文章 (Atom)