2013年4月10日星期三

如何用xcode命令行工具生成ipa程序

最近iPhone的项目有个需求,需要改动程序源代码一个参数然后编辑N个版本,发到N个市场,总不能动手一个一个编辑吧,打开谷歌大神开始搜索,于是跳到这篇文章,
Automating Over The Air Deployment for iPhone,但是和我的需求还不大一样,于是又写了个python脚本,于是把修改源代码和编译过程一块写到了脚本里面了,具体代码在这里,python代码表达力强写起来比较强大,强制空格看起来比较优美。
编译过程主要用到了两个工具,xcodebuild和xcrun,装完xcode这些都是自带的,还有个xcode-select设置路径的这里没用上。
python程序用了主要两步,
第一步用xcodebuild生成app文件
首先切换到你的工程目录
os.chdir(PROJDIR)
然后

        build_app_command = "xcodebuild -target " + TARGET_NAME + " -sdk " \
                            + TARGET_SDK + " -configuration Release"
TARGET_NAME是你的工程里面的目标文件名称,TARGET_SDK是iphoneos,当然也可以写模拟器或其他

这样会在工程文件下产生一个build目录里面就会有app程序了

第二步是生成ipa文件也就是用xcrun打包
build_ipa_command = "/usr/bin/xcrun -sdk iphoneos PackageApplication -v " \
                            + PROJECT_BUILDDIR + TARGET_NAME + ".app" + " -o " \
                            + "~/Desktop/ipa/"+ipa_name.rstrip()+".ipa" \
                            + " --sign " + SIGN_NAME \
                            + " --embed " + EMBED
需要指定sdk,PackageApplication参数,app路径和输出ipa路径,以及证书

好了,执行完就可以到你指定生成的文件夹内找到N个编译好的ipa文件了。

2013年4月4日星期四

利用FFmpeg转换音视频

老罗开了锤子发布会,又请了左小祖咒,左小祖咒唱的《忧伤的老板》,请了更牛的李延亮伴奏。于是想把视频下载下来看,奈何优酷没有mac os的客户端,第一个想法是到mac chrome的缓存里面去找,找了网上说的路径,Chrome:/Users/XXX/Library/Caches/Google/Chrome/Default/Cache
里面发现了其他的视频但没有发现优酷的
safari的是这个Safari:/Users/XXX/Library/Caches/com.apple.Safari
但是也只有一个很大Cache.db文件。

于是登陆iPhone的优酷客户端找到最近观看记录里面的这个视频,用缓存文件的功能
把视频缓存下来。打开iFunbox(由于优酷没有打开iTunes里面的共享文档目录只能用这种方式往外拷贝,不越狱还不行)在优酷应用程序里面的文档目录找到视频,ts格式的m3u8文件,一共是18段,优酷iPhone客户端比较会省事,我说下载下来用优酷本地播放的时候怎么一段一段的呢。

下面该ffmeg出马了。
谷歌一下搜到ffmpeg官方文档主页
http://ffmpeg.org/faq.html#How-can-I-join-video-files_003f
用了这种方式


Additionally, you can use the concat protocol instead of cat or copy which will avoid creation of a potentially huge intermediate file.
ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
一共十八个ts文件如果一个一个写就太坑爹了,简单的方式是写一个shell脚本,但是脚本不是很熟悉,于是又该vim神器出马了,用vim的宏操作也就是q(recored)功能加上ctrl+a数字加一功能可以不算很优雅但是很快的把脚本写出来


vim的q操作 具体是把一系列操作存到一个寄存器中(a-z)
然后@(a-z)就可以重复执行刚才记录的操作了、

具体操作步骤如下
1.vim的 normal 模式下 按下q开始记录接着按a,也就是存到寄存器a中,接着按0跳到行首,接着用vim的一些motion操作跳到这一行的你要增加的数字,然后ctrl+a,接着本行的下一个数字也这样,然后跳到下一行,然后按q结束宏录制。

好了这次可以按18@a然后刚才的一系列操作就会执行18次

文件最后合并成为一个MP4文件可以看了

都到这一步了,又想把这个视频转换成mp3,以便路上骑车的时候听,用ffmpeg也很容易做到

ffmpeg -i output.mp4 -f mp3 -ab 192000 -y -vn output.mp3
-f 指定格式 -ab指定声音码率 -y 覆盖已存在 -vn 不处理图像

转完又有一个问题,老罗开头的说话不想要,可以,重新剪切下音频
ffmpeg -i output.mp3 -ss 00:00:38 -t 00:05:51 -acodec copy -y recreate_output.mp3

-ss指定开始时间 -t指定结束时间 -acodec copy  表示编码不变
时间格式也可以直接是秒 像123这种

以上参数可以到 man ffmpeg里面搜索

好了
下面把我生成的脚本贴出来
https://github.com/sunjun/Tool/blob/master/concatenate_ffmpeg.sh
还有一个时间格式转换的小函数
https://github.com/sunjun/Tool/blob/master/convert_second_to_readable_string.c













2012年8月22日星期三

一些新的东西


最近了解了一些新的语言,lisp,scheme,Haskell
据说这些都是函数式编程语言,看起来真是费劲啊到处都是括号,
每一句的信息量看起来比c语言多不少。
听说大牛们都在用这些语言,大体搜了下他们的一些应用,用这些开发是不是会很痛苦?
学习新的东西总是很有意思,网上很多资源可以参考

最近又重新复习了下vim自己一直处于很低级的水平,也就是会个基本的操作
上一次学习的Emacs由于很久不用已经遗忘干净了,只记得都是组合按键
最近又要开始熟悉一下了

最近还看了斯坦福大学的最新iPhone开发公开课,翻译的一塌糊涂,老教授说话又快,信息量很大,老教授真厉害啊,不时的讲一下背后的原理,看起来也很费劲,得看好几遍。
话说国外这么优秀的人才都在讲课真是很厉害。

为毛我不会的东西这么多,算法导论也没看过,唉惜,需要学习的东西太多了!
有什么办法呢以前玩的太多了,努力的学习吧!

2012年7月30日星期一

毕业了



又看了一遍阿甘正传,现在在阿甘正传很美的主题曲中记下这么一些东西。
距离我上一次写日记又过很长时间了,趁着自己有时间来记录一下已经过去的事。
我们应该经常让自己多一些独处的机会来思考一下自己,荀子曰:吾日三省吾身。

最近发生了一些事,首先是从大学里毕业了,感激父母能让自己有机会来到大学。

上大学是一件很有意义的事,因为在人的一生中很少有和大学这样美好的时间段。
大学里没有社会上的生存的压力,大学里可以毫无压力的自由的寻找自己喜欢的东西,做自己喜欢的事情,在社会上对一个普通人如果能没有目标的闲上两个月来学习就会压力很大。
即使你能有很宽松的时间来学习,也很难找到和大学里一样环境。抛开图书馆之类的硬件环境不说,能找到和大学同学样类似的文化背景,没有利益关系的人也是不容易的事。如果说这些你都能有,但你能有大学时旺盛的精力和求知欲么?如果说这些你都具备了,那么你一定在大学里。

自己很幸运能在大学里学到C语言,感激Ken Thompson发明了C语言。
进而自己又了解了Unix,Linux,Richard Stallman,Donald Knuth, Linus Torvalds,Google。。。
一些企业,一些大神,一些文化
互联网能让我们知道并了解世界上很牛的人正在干什么并能用上他们发明的一些工具语言是一件很令人激动的事情。
科技在改变人类的生活。

看了阿甘正传强烈的感觉是,人的一生会很快的过去。
每当我在想人的一生该怎么来过时,浮现在脑海中的第一句话就是:人的一生该这么度过,当你回首往事时不因。。。
还有乔布斯说的:活着就是为了改变世界。
当人们问巴菲特如何才能改变世界时,他说:和优秀的人在一起,学习他们并影响他们。

一路走来发现自己一直在跟着感觉走,迷茫过,走过弯路,也养成了很多坏毛病(比如缺乏纪律性,不愿干的事情就不干)。
能坚持到现在而没有变的很惨主要还是靠的同学和朋友们的帮助,就像马克·扎克伯格说得交好朋友很重要,我们除了感谢感激之外,能做的就是帮助那些需要帮助的人。

想了很多却只记下这么零碎的几句,以供以后查阅,人生就像巧克力,你永远不会知道接下来会发生什么,希望自己能坚持下去。
God bless China!


窗外有个骑自行车的长发美女路过。
我发现了一个现象,当有几个人在讨论一件事时,人们总是先把谈话的内容往自己身上靠,看是否和自己相关。

2011.7.17 18:55 于新东方花园 302

2012年7月29日星期日

吐槽与总结

吐槽:
最近一直没有更新博客,一个重要原因是因为gae翻墙不好用了(老是提示错误),直到最近更新了ml系统,又好好看了一遍猫理会的教程,发现了其中一句是在六月一号前上传的应用不能用了,我又上传了一次,果真gfw被穿透了,关于推特上不去那个还是有个证书导入不对设置了下就好了,fuck gfw!

重装系统很曲折,先是下载了盗版的ml安装文件(惭愧),安装重启,然后到安装界面,找不到安装硬盘,磁盘工具里面提示错误了,硬盘分区估计有错误(装过efi),需要用磁盘工具修复磁盘,修复了半天修复失败,格式化磁盘也不成功,在安装界面的终端下把资料拷贝到移动硬盘,最后把我的160G的移动硬盘格式化了,暂时把ml装到移动硬盘上了。开机成功,在ml里面把电脑硬盘重新格式化成功,重复安装过程成功。不过软件都没了需要重新安装,泪。。。


下一步就是拷贝数据了,数据被存到移动硬盘里面了,拷贝的时候巨慢,生气拔出来,悲剧又出现了,再插上又提示初始化硬盘,换到windows下面往外拷贝吧,安装macdrive不管用换了个p什么hfs+可以了,拷贝出来了图片和一些文件代码死活拷贝不出来,一拷贝就不动了估计是驱动有问题,换了台电脑不行ubuntu下面直接也不行,重新从老大拷贝代码幸好只是那一部分有问题。

总结:
至此折腾完毕,装了些常用的软件,剩下的用到的时候再安装。
于是买了个硬盘750G 499rmb,准备做一个time machine。又买了个苹果视频转接器,考虑进一步购置一台显示器和键盘鼠标套装。

谷歌chrome的输入法bug貌似还没有解决,就是有时候在浏览器输入中文的时候会卡住。

又一次翻墙成功,看了前几篇博客,最近关注推特,微博,博客的时间明显增多了。
在中国网络真是算是最言论自由的地方了,我也要经常经常发言写博客了。

2012年4月20日星期五

GFW太坏了


一个月没更新了
GFW太坏了,FUCK GFW,不知道咋回事,最近goagent翻墙不是很好用了,昨天晚上又重新设置了一遍,又可以用了,host翻墙的g+一直很好用,那天可以开放啊,啥youtube都可以不翻墙就可以看了。
但是https的twitter还是不好用,哎
今天刚刚整理了下我的GoogleReader给它分了一下类(MD本来想传个图片来,真费劲没传上来),现在真是阅读的资源多了,阅读的时间缺编少了,比较悲剧。
统计一下自己有的设备,mac book pro, iphone 3gs, kindle fire, kindle 4,最后这3个设备是最近添加的,上回也说了自己也买了很多书,但是阅读的时间明显减少了。

反思一下,自己经常上的,网站包括新浪微博,腾讯微博,知乎,豆瓣,人人,空间,gmail,googlereader,G+,优酷,糗事百科。

糗事百科,零碎时间或者一星期看一次。
人人网和qq空间争取一个星期看一次就可以了,慢慢一个月看一次。
微博和知乎和googlereader尽量在零碎的时间看看,不要占用大块时间来看了。
豆瓣只有在看书评影评买书的时候再去看。
qq也尽量每天少登陆。

把大块的时间拿出来看看自己买的书,技术类书籍,人文类书籍,看完书籍就来这博客上写一下感想,或描述一下记录一些技术问题,看书尽量用kindle4和实体书籍。

时刻意识到自己的真实水平与缺陷。

用米兰·昆德拉的这句话来作为这篇文章的结尾:
永远不要认为我们可以逃避,我们的每一步都决定着最后的结局,我们的脚正在走向我们自己选定的终点。

2012年3月20日星期二

我的最近



最近需要看的书:最近又买了不少书,那天算了一下从当当,亚马逊上买了1400多RMB的书了,书不能只买不看,所以要抓紧一切时间看书,最近看的书目:程序员的自我修养,C专家编程,打工旅行,暗时间。
读书需要做读书笔记么?需要,那我就把我看到的认为有用的做几个关键词链接吧,每天总结下发到博客上来。
最近需要完成的工作:最近公司搞封闭开发呢,需要完成的工作还真多,当务之急是对播放器的修改,包括ffmpeg,看了下安卓上的MXplayer,QQplayer都支持切换音轨字幕了,这个要赶快的加上才对。
最近学到的东西:最近入手了亚马逊的烈火,安卓平板电脑,悲剧的是当天就被我刷成砖头了,鼓捣到深夜,未遂,睡觉,第二天终于弄好,刷了CM9,安卓4.0.3,安装了不少游戏应用,网上关于它的评测已经很多了,7寸的平板用来看书用户体验还是比较好的,除了个别应用不能用。今天还看了朱会灿的关于搜索引擎的讲座。
最近期望达到的状态:保质保量把手头上的工作完成,认真看书,能从书上多学到点东西。
时间安排:每天看新闻看杂志是睡前一到两小时,其他时间禁止看杂志新闻,专心工作。
看书的时间需要大块的时间每天看四个小时吧。在电脑前面就要干活查资料不要干其他的。
还有就是需要把这三个书签记下来以后看,第一个是关于VIM的http://stevelosh.com/blog/2010/09/coming-home-to-vim/,第二个是杂文关于网络的http://m.wired.com/geekdad/2011/08/world-wide-web-20-years/,第三个是 Ken Thompson的Reflections on Trusting Trusthttp://cm.bell-labs.com/who/ken/trust.html
学了点这个看了点那个是不行的,要深入研究。