Skip to content

Instantly share code, notes, and snippets.

View blacklee's full-sized avatar

Black Lee blacklee

  • Hangzhou, China
View GitHub Profile
@blacklee
blacklee / ffmpeg-to-480p.sh
Created February 19, 2016 13:43
ffmpeg convert video to 480p
ffmpeg -i input.mp4 -s hd480 -c:v libx264 -crf 23 -c:a aac -strict -2 output.mp4
@blacklee
blacklee / SpeechVoiceFromLocaleLanguageCode.m
Created April 10, 2018 05:31
Get AVSpeechSynthesisVoice by [NSLocale preferredLanguages]
AVSpeechSynthesisVoice *SpeechVoiceFromLocaleLanguageCode(NSString *langCode) {
NSArray<NSString*> *langCodeParts = [[langCode stringByReplacingOccurrencesOfString:@"-" withString:@"_"] componentsSeparatedByString:@"_"];
NSArray<AVSpeechSynthesisVoice*> *availTTSVoices = [AVSpeechSynthesisVoice speechVoices];
NSMutableArray<AVSpeechSynthesisVoice*> *filteredVoices = [NSMutableArray array];
AVSpeechSynthesisVoice *selectedVoice = nil, *defaultVoice = nil;
// first round filter, uses prefix.
for (AVSpeechSynthesisVoice *voice in availTTSVoices) {
if (!defaultVoice && [voice.language isEqualToString:@"en-US"]) {
defaultVoice = voice;
}
@blacklee
blacklee / gist:8470154
Created January 17, 2014 08:34
git tag command
create:
git tag tagname
push to master:
git push --tags
list tags:
git tag --list
git tag -l
@blacklee
blacklee / aqi.lua
Created April 9, 2019 07:27
Hammerspoon-AQI
local url = "https://api.waqi.info/feed/@UID/?token=Demo-Token"
-- fill your UID and token
local menubar = hs.menubar.new()
function getColor(aqi)
if aqi <= 50 then
return {red = 0, blue = 0, green = 1}
end
if aqi <= 100 then
@blacklee
blacklee / AppDelegate.m
Created August 30, 2016 03:02
Using this partial codes to share test data across all simulators in your Mac.
- (void)setupSharedDirectoryForMacTest {
#ifndef DEBUG
return;
#endif
#ifndef TARGET_IPHONE_SIMULATOR
return;
#endif
NSLog(@"--------------------------------------------------------------------------------------------------------");
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
set -e
set -x
input=$1
output=$2
input_cert=$(echo $input)-cert.p12
input_key=$(echo $input)-key.p12
input_file_not_exists=0
@blacklee
blacklee / MobClickOpenUDID+Swizzled.m
Created January 21, 2014 07:42
使用友盟统计分析提交时被拒的一种解决方案
#import "MobClickOpenUDID+Swizzled.h"
#import <objc/message.h>
#import <JRSwizzle.h> // Swizzle 类方法,这样可以避免类去调用某些Apple可能不允许的方法,通过审核
#import "YourDevice.h" // 你的设备相关类,用于生成自己的Device Unique ID
#import <RegExCategories.h> // 正则表达式
#import <NSString+Ruby.h> // 字符串工具类
static NSString * const kOpenUDIDKey = @"OpenUDID";
static NSString * const kOpenUDIDSlotKey = @"OpenUDID_slot";
@blacklee
blacklee / gist:8108962
Last active January 1, 2016 06:59
when layoutSubviews do not work
当 layoutSubviews 里设置了 frame 但是界面不刷新时,检查一下 xib 里面是不是勾上了 use Autolayout ,把这个去掉就好
When you have set frame in layoutSubviews but it do not refresh the view, we should uncheck the [use Autolayout] in xib.
@blacklee
blacklee / gist:7782293
Created December 4, 2013 04:22
UITableView load content while scrolling
- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
// somecode
[self performSelectorInBackground:@selector(loadMoreData:) withObject:nil];
}
- (void) loadMoreData:(id) s {
// some code to pull data from remote
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
@blacklee
blacklee / gist:7781853
Last active December 30, 2015 05:19
UITableViewCell displays incorrectly before reusing.
UITableViewCell reuse problem.
appearance:
dynamic height cell, with dynamic UILabel...
the cell's height is calculated correctly, but the label shows wrong.
cell display incorrect before reuse, after reused, everything displays well.
in CostomCell's layoutSubviews method, each subview's frame is right if you print them.
reason:
App's using xib to draw custom UITableViewCell.