Wang_Tai

Wang_Tai 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑

为了获得勋章才写的

个人动态

Wang_Tai 赞了回答 · 2014-06-18

解决cocoapods慢如何解决

我为cocoapods做了两个国内的镜像 目前 十分钟更新一次 可以更换为国内源 具体设置方法参考我博客
cocoapods sepcs

关注 6 回答 7

Wang_Tai 赞了回答 · 2014-04-09

解决你最喜欢的开发工具是什么?

我也来加点东西:
楼上大神们都是基于Mac的。让我们这种穷学生只能羡慕啊。

Linux工具:
首先说发行版:
个人开发还是在Ubuntu的衍生版本上挑。最好不要用Ubuntu就行。强烈推荐的是Deepin,可以免除你特别多的折腾。比如自带Sougou输入法。QQ(虽然不好用)。Deepin开发的音乐播放器还支持DoubanFM。简直是良心的良心了。

再次说明:免除折腾。尽量选用Ubuntu衍生版本。Mint和Deepin。除非你是做Linux系统开发的。或者是开源的死爱好者。Gentoo和Arch折腾很多。所以开发Linux系统环境的应用或者偏向底层可以用。或者服务器。
为什么不用Ubuntu。因为谁用谁知道。难用。尤其是unity。
还有源不算特别好用。虽说有国内镜像。但是很多时候我相信一个新手,安软件的时候是不想去了解镜像这个概念的吧。而且涉及到镜像又会有版本号一堆麻烦的东西。
暂时推荐Mint和Deepin。KUbuntu。

C/C++:尝试过用Eclipse。事实证明很糟糕。最佳的方案是Vim+Youcompleteme插件。
Debug用DDD。项目管理暂时只能用Make。写起来简直是痛苦啊。没有IDE确实很糟糕。
不过一定要用IDE。QtCreator勉强能用。真的能用。

java:
IDEA。jetbrain的货。业界良心。Community版本都耍Eclipse一条街。
个人是Eclipse-->Vim+eclim插件+Eclipse(调试必须)--->IDEA的进化史。
Vim+Eclim插件的那段时间是写Java代码最快的时间。用Eclipse1分钟写的代码。Vim+Eclim应该只需要40秒左右。不过这样写起来也累。

python:
还是推荐jetbrain的那货。Pycharm。因为python的代码补全一直是个问题。Pycharm是我觉得最靠谱的了。不过对Python很熟的话,不怎么需要代码补全的话或者工程不大的话。推荐Vim。插件只要装jedi/pyflakes 就行。不要指望Vim的代码补全。一直都是给跪的。
推荐Vim的原因是。真的很快。因为Vim切换屏幕。分屏。打开文件。操作起来行云流水。debug的话不特别需要。python语言对Debug的原生支持让我觉得特别受用。

other:
有Jetbrain产品的Jetbrain吧,没有的Vim。实在没得挑Eclipse。
混合开发的话。还是Vim吧。虽然每门语言支持都不是那么好。但是每门语言支持都不是那么差。

顺便说说Vim:
没深度用过SublimeText和Emacs。所以只能说个人感觉的Vim而无法对比。
自己折腾vim很久了。也不知道是值得还是不值得。
Vim不仅是写代码的工具。更可以当做操纵代码的工具。尤其是遇到冗余很大的语言的时候(java就是你)。你可以通过正则。或者是通过保存操作的方式。去快速操作更新你的代码。
还有就是因为插件的缘故。所有语言都可以在Vim里面支持。而不需要一个IDE对应一门语言。
这点是最好的。

效率工具:
因为Linux的软件实在够少。只能像云端要。哎

办公软件:Linux现在有了Wps(Deepin也内置),不过推荐GoogleDoc。对于不是特别复杂的操作GoogleDoc绝对够了。思维导图推荐一家ProcessOn,Markdown推荐StackEditor。都是跟GoogleDriver联系一起的。保存其来很方便

云盘:Dropbox。原因。没得挑。量小。但网速不差。全覆盖。比国内安全。
GoogleDriver:第三方的SyncDriver。勉强能用。主要是GoogleDriver越来越重要。所以。实在得挑一个来用。
国内的金山开发了云盘。可以去下一个。。

Terminal:
Deepin原生的还不错。该有的功能都有。Tmux不想学了就用这个。

笔记软件:
Evernote。没办法的办法。可以用Wine成功运行。不过资源占的比较大

翻墙:
Goagent必备。问题是最好加上一个google Remove redirect的插件。

最推荐几个网站:
SourceGraph:是搜索Python代码的。直接你就可以看到某些代码的用途或者源代码。不需要下过来看。而且功能支持很牛X。
GrepCode:是搜索Java代码的。能用。功能没那么牛叉。

Chrome插件:
Fiddle:Fiddle在Chrome上的翻版。能用。
Vimium:Vimium是Vim的Keybind在Chrome上。
PostMan:模拟Http操作的
Evernote Web Clipper:这个是截取网页到Evernote。这也是我为什么用Evernote的最主要原因。

快速启动:synapse
文档查看:zeal 这个是Dash再Linux下的翻版。

Linux下软件比较少。只能勉强的用。不济的话开个虚拟机来用。
对。虚拟机。推荐Vwmare的。

关注 29 回答 45

Wang_Tai 赞了回答 · 2014-04-09

解决你最喜欢的开发工具是什么?

我不得不把这次更新放在顶上,因为 Linux 和 Windows 的用户们,Dash 的替代品来了:

http://zealdocs.org/


为 Mac 平台抛砖引玉一下,我总结一下作为我的开发用机在反反复复折腾了不知道多少遍之后最终被认定是“离不开”级别的各种工具们:

  1. Xcode,这个没得说,除了 AppCode(Jetbrains 出品)以外,在其领域几乎没有竞争对手,更不要说使用 Mac 开发必不可少的 Command Line Tools(需要 Apple ID)——当然,不做 OC 开发的话,CLT 是可以单独下载的。

  2. Homebrew,另外一个没得说。Mac 下的 apt-getyumpacman……,曾经还有老资格的 MacPorts 可以选择一下,但这两年已经被 Homebrew 甩下好远,无可替代。
    另外要推荐一下 Homebrew Cask,依托于 Homebrew 之上专门用来安装和管理 GUI Applications 的插件,从此以后安装软件都是一句话搞定。哪怕是目前还没有“配方”的软件,你也可以很容易写个脚本发布下载地址上去,那叫一个省心啊!

  3. Alfred,Mac 上有那么几款“神器”级别的应用,Alfred 首当其冲!你很难简单的定义它是个什么工具,只要你想,它几乎可以做任何事情!当然,它的老本行还是快速的本地搜索(应用程序、文件、媒体资料、翻译、计算器……等等等等)。不过 Mac 平台下此类软件还是呈百花齐放状的,有许多非常棒的代替者可以挑选,但是像 Alfred 这样集大成者且样样都做得出类拔萃还是非常难能可贵的,无愧于“神器”一名。

  4. Dash,大约两年多以前,我在无意之中发现一款默默无名的小软,那时候它还在 Alpha 测试尚未上架 App Store,但是我当时就被它征服了——这么有用的东西为什么以前没有人做呢?!没错,这就是程序员的利器:文档查询工具 Dash。我给作者写了一封邮件表达我在使用后的欣喜之情,没想到竟然换来了一个终生免费(当时还是不收费的),而随着时间流逝,Dash 也从未让人失望。此后每当看到有人在纠结要不要为了这么个小东西花几十块钱的时候,我就笑而不语:少年,出手吧,这是让你绝对无悔的东西。

  5. Vim & Emacs。轻量级的编辑器我简直数不清楚用过多少,回头看看能够停留在我硬盘上的,并且每次遇到新机器都不能不装的还就是这俩“老货”。虽然说对于现代开发者而言,Sublime Text 越来越多的崭露头角,但我说句良心话,在能把 Vim/Emacs 玩得如臂使指的人面前,ST 还是略显稚嫩。如果你想在这个领域长期玩下去,Vim & Emacs 二者择其一坚持用下去,你终将会知道这个选择是没有错的。对于我个人来说,这个选择是 Vim,缘分而已,没有原因。不过我要告诉所有的 Vim 党,学学 Emacs 是非常有好处的,这是两种哲学的碰撞。总结一句话,在任何环境下,你可以没有 Sublime Text,Textmate……等等,但是你不能没有 Vim/Emacs。

  6. …… 没了,竟然没了!没错哦,我想说的几个都是“没有它我就活不下去”级别的,除此之外虽然还有很多值得推荐的东东,但是真的都还没有到这个级别。现如今,绝大部分的工具我都尽可能在命令行下找到替代品了,这个要介绍下去就太琐碎了些。

哦,说到命令行,每次都会有人推荐 iTerm2,没错,它的确比 Terminal 好用多了。但是它依然不算是“没有就不能活”级别的,因为哪怕是原生的 Terminal 也能很好的工作,无非是缺点灵活性而已。

IDE 的话,除了 Jetbrains 家的,其他的我一概不理会。这就叫正宗的“良心产品”,一门十几款产品,个个业届良心。不光是产品本身的质量,单就说 Supporting 的响应速度和反馈质量,在这个级别的厂商里我就没见过更好的。Jetbrains 的 IDE 不算便宜,但是非常值,买了绝对不会后悔。我长期使用 WebStorm 和 Rubymine,IntelliJ IDEA 和 PyCharm 都玩过,以上四款可以做做证明人。一句话,用过 Jetbrains 的 IDE,其他的牌子再也不用纠结了。

说句题外话,虽然这几年也有不少人开始使用 Jetbrains 的 IDE,并且也逢人说项,大力推荐。但是我真没见过几个能把这家 IDE 完全吃透的。如果你开始用了,真心请你静下心来好好阅读一下使用帮助,真的是博大精深。如果你只能把它们玩个皮毛,那你觉得不值我也无话可说咯。

最后再列一下常用的各类软件,非推荐,仅供参考(按字母顺序):

  1. Airmail:Sparrow 堕落了……还好我们有 Airmail。

  2. ColorSnapper:抓取颜色工具。这类工具我是用过最多种的,但是没有一种能面面俱到,ColorSnapper 是目前为止最令我满意的。虽然浏览器也有很多抓颜色的工具,但我讨论的是系统级别的工具,全屏幕,不受任何软件的限制,随意抓取目光范围之内的任何一个像素点,具备局部多级缩放,多种颜色数字格式可选,一次快捷键直接复制等等……我说的是各种细节。

    • 感谢楼下 @周良粥凉 的答案,让我发现了 ColorSnapper 的一个优秀替代者:Sip,刚才下来使用了一会儿,感觉很不错,值得推荐!Sip 的特色有(ColorSnapper 不具备的):

      1. 最重要的:免费!ColorSnapper 是30RMB,这个就相当超值了哦!
      2. 支持的输出格式超级多,更适合多平台的开发者!
      3. 更多自定义快捷键,虽然 ColorSnapper 的自定义快捷键已经够用了,但是谁会嫌多?
      4. 历史颜色列表里的颜色可以直接调用 Email 发送给别人!这个很有趣~
    • 尚有不足之处:

      1. ColorSnapper 有一个很重要的功能,就是在放大镜取色的时候旁边会有数值显示(附图),这在像素级渐变区域取色的时候非常重要,真心希望 Sip 加上这个功能。
        Text Overlay
      2. ColorSnapper 会在顶栏图标处显示上一次取的颜色,就是图标的颜色会变。这个功能很友好,也希望 Sip 加上。
      3. Sip 的放大镜可调级别少了点,不能满足我这样的龟毛者的偏好(这个不重要)
      4. Sip 的放大镜有时候会卡顿,不够流畅,但也不是回回都这样,间歇性的,(这个应该优化一下就好了)
    • 总体评价:很好!考虑到性价比,非常好!以后我会给别人推荐这个。再次感谢 @周良粥凉 的推荐,期待下一个!
  3. ColorSchemer Studio:刚才是取色,现在是调色,这个就不多说了非设计出身的话也很难理解它的妙处。

  4. haroopad#:最近才新发现的一款所见即所得 Markdown 编辑器,韩国同行出品,有很多出彩的地方。就功能性而言,基本能够达到我心目中理想的 Markdown 编辑器级别了,只不过 UI 略烂……好在刚出道,还有大把时间进步,我拭目以待。
    插一句嘴,Markdown 虽然简单,不过用多了你就会发现有两种使用场景。第一种是写文档类型了,基本上就是文字和代码,这类情况下我是不会考虑所见即所得的,直接 Vim 的干活。另外一种是多媒体类型的,插入各种图片、公式、内嵌页面等等,此时为了排版和美观的即时反馈,专用编辑器还是有其用武之地的。那些武断地说一切皆文本的人,我只能表示:Too naive...

  5. Kaleidoscope:这玩意说实话我很少用很少用,因为大部分的 Diff 工作都被 Vim+Git 解决了,但是的确有那么些个偶尔我要对比一下图片的时候,Kaleidoscope 总是能让我小爽一下子,好东西。

  6. Moom:能够帮你调整窗口的位置和排列的工具多如牛毛,Moom 可能是其中的可控制能力最强的,但是也不是说其他的就不如它,只是看你的需要而已。

  7. Parallels Desktop & VitualBox:PD 是我用来跑各种虚拟机的,多年的老客户了,比较信赖它而且也的确好用;VitualBox 则是专门用来跑 Vagrant 的,专项专用,没问题就好,无甚可说。

  8. ReadKit:Reeder 也堕落了……幸好冒出来个 ReadKit——注意,和 Airmail 相比,ReadKit 仅仅是够用,并没能做到超越前辈。(Airmail 也有缺点,但是从产品立意和功能设计上就注定了它不会平凡),差点忘了说:这是 RSS 阅读器。

  9. ScreenFlow:录屏“神器”。哦哈哈,不小心漏了一个神器级产品,不过它的确和开发本身没有直接关系,因此虽然也是不能不装,但因为稍微有点跑题只好屈居此处了。我经常录制各种教学和演示视频,所以此类软件也用过不少,ScreenFlow 是我唯一掏腰包买下的正版,因为它的确好用。如果你有心的话就会知道,CodeSchool,Tuts+,Peepcode,以及几大知名在线教育网站的教学视频基本上都是使用 ScreenFlow 录制的,已然是该领域的标配了——当然了,如果你从来不录视频也就当浮云了事。

  10. Sketch:呃……好吧,对于一部分人来说,这也是”神器“,能够取代 Photoshop+Illustrator 的神器。

  11. SourceTree:说来好笑,我自己从来不用它(GUI Git 客户端),但是每每逢人我就推荐,因为不考虑命令行的话,SourceTree 真是太好用了(注意,前提是你搞不定命令行的话)。然而实话实说,Git 你用的好不好本身不在于工具,而是在于你对 Git 的理解。

  12. Voila:截屏工具花样繁多,好用的也非常多,我唯独推荐 Voila 是为什么呢?因为它有一个独特的功能:内置浏览器引擎进行页面全屏截图。这是我见过的截取全屏 Web 页面功能和效果最好的截屏软件了,加上其他的功能它也都有,比如说常规/定时/定尺寸/菜单……截图,标注,美化等等等等,我就不一一列举了,反正它虽然算不上出类拔萃,但也称得上面面俱到,一应俱全。


补充(关于浏览器)

我精心炮制了这份答案,细心挑选了多种应用,唯独没有讲浏览器。有朋友问我你为啥不讲浏览器,这也是必备的啊!我的想法很简单:能上网的设备有不装浏览器的吗?

浏览器是一个非常大的话题,且值不值得推荐尚在两可之间。对于非常了解浏览器的人群(比如靠谱的前端工程师)你根本不需要推荐,他们心里自然有数。而对于其他人群,自己用的舒心就好了,你推荐的即使有一千个理由也不会让他们觉得有什么必要。

如果要让我推荐的话,那就没完没了了,我机器上足足有 20 个可用的浏览器,统计:

  • Chrome 家族 4 个(stable,dev,canary,chromium)
  • Firefox 家族 2 个(stable,nightly)
  • Safari 家族 1 个
  • Opera 家族 2 个(stable,next)
  • IE 家族……9 个!是的,你没看错,我恨 IE(包括最新的 版本,什么狗屁 Developer Tool,难用的要死)

有什么办法呢?前端工作的苦不是一般人能理解的,尽管经验告诉我很多时候一定没问题,但是你还得测,还得截图发报告,还得挖空心思去寻找和理解各种稀奇古怪的情况。昨天还因为 Chrome 的一个 Bug(HTML5 模式下,內联元素的居中对齐会导致外容器顶部多出一像素,官方已经有 fix 计划)在 SO 和人争执了一番,很遗憾,我错了。

所以我恨浏览器,当然我也爱浏览器,可以看出我是 Chrome 的粉丝,我的日常浏览器是 Chrome,但是我不觉得有什么理由一定要推荐给别人,一定要推荐的话我宁愿推荐各种插件:

Chrome Extensions

然而这些插件我也经常换来换去,这里就不细数了。


杂记:作为曾经的职业音乐人,我竟然没有推荐任何一款和音乐有关的工具(须知对于很多程序员,音乐是敲代码时必不可少的佐料),原因无它,用好你的 iTunes 吧!如果你有更高的追求,那么你要做的不是捣鼓播放器,而是:1)你需要的是好的音频设备,比如 Apogee One;2)你需要好的监听设备,耳机是不推荐的,无论它多贵多好(当然是在不考虑隔离环境的前提下);3)听音乐,不是听音响。


找不到 iTunes 的 Internet Radio?见下图:

Internet Radio in iTunes

关注 29 回答 45

Wang_Tai 赞了回答 · 2013-03-22

[摆个擂台]设有一整数数组,元素个数为N,求其中N-1个元素相乘的最大乘积

php写代码太难受,我就不写了,主要要注意的几个点供参考:

1. 积可能会很大,要用大整数乘法。即使如此,大整数和一个int直接乘也可能会溢出,所以int也要先转换成一个大整数。php的整数底层是(有符号)long存的,32bit和64bit的最大数情况不一样,题目没有明确,保守点吧。

2. 会有0,两个以上的0结果直接返回0; 1个0和偶数个负数、无正数的情况也可以直接返回0。

3. 会有负数,要分别考虑奇数/偶数个负数的情况,分别考虑应该删掉绝对值最小的负数/正数。

4. 如果有偶数个负数的话,应当删除绝对值最大的负数。

后三个的逻辑(也许还有漏掉的情况)可以用暴力简化一下,把输入分成正数、零、负数三类,分别去掉1个零、最大的正数、最小的正数、最大的负数、最小的负数(最多去掉N个, N<=5)算出结果,然后再分别乘以那N个中的任意N-1个,比较一下结果,然后输出最大的就行了,这个效率也足够高。

想想还是写了个python的版本,我估计应该可以通过绝大部分测试了,比php写起来真是舒服太多了。

#!/usr/bin/python

def pop_min_max(l):
    if len(l) == 0:
        return []

    max_item = max(l)
    min_item = min(l)

    l.remove(max_item)

    if max_item == min_item:
        return [max_item]
    else:
        l.remove(min_item)
        return [max_item, min_item]


def findMaxProd(nums):
    if not isinstance(nums, list) or len(nums) == 0:
        raise Exception('bad input')

    if len(nums) == 1:
        return 1

    positive = filter(lambda x: x > 0, nums)
    negtive  = filter(lambda x: x < 0, nums)
    n_zero   = len(nums) - len(positive) - len(negtive)

    if n_zero > 1:
        return 0

    check_list = pop_min_max(positive) + pop_min_max(negtive)
    if n_zero:
        n_zero -= 1
        check_list = [0] + check_list

    pre_ans = reduce(lambda a, b: a * b, [0] * n_zero + positive + negtive, 1)

    ans = []
    for i in check_list:
        ans.append(reduce(lambda a, b: a * b, filter(lambda x: x != i, check_list), pre_ans))
    return max(ans)

print findMaxProd([2, 3, -1, -2, -3])
测试结果

根据题主的单元测试输出了一组测试用例,结果是有两组没通过(最后两组),其中一个是[10]这样的情况,我认为0个数相乘应该返回1(类似于x的0次方=1,这个见仁见智,不能算错吧),另一个是没有考虑数组中出现非int的情况。

由于python原生支持大整数运算,所以如果测试中出现超过int的数据,这代码应当也能顺便做对。

tests = [ 
    (0, [0,0,0,0,0,0,0,-38,8,-28,86,-12,93,-3,3,-74,81,-57]), 
    (39200, [-1,-14,2,5,-14,0,10,-2]), 
    (62500, [-5,-2,0,-1,-25,-25,-10]), 
    (0, [-5,-21,-35,-64,-36,-72,-71,-64,-59,-83,-58,0,86,33,44,43,46,81,87]), 
    (0, [-50,-23,-60,-68,-72,-84,-16,-66,-50,-54,-74,0]), 
    (324900, [-10,-2,-5,-1,-57,-57,10]), 
    (-86490, [-1,-1024,-93,-5,-2,-93]), 
    (819200, [64,-5,4,-2,-10,64]), 
    (451250, [-5,-2,95,-10,95]), 
    (None, [10]), 
    (None, [-2,True,-5]), 
]

for answer, arr in tests:
    if answer != findMaxProd(arr):
        print 'failed for:', str(arr)

运行测试输出

failed for: [10]
failed for: [-2, True, -5]

关注 1 回答 7

Wang_Tai 回答了问题 · 2013-03-21

解决如何让一个APP下载链接的二维码同时支持iOS和Android市场?

很简单啊,检查ua就行了

关注 1 回答 5

Wang_Tai 收藏了问题 · 2013-02-22

有没有办法同步 Coding 与 GitHub

如果一个项目同时在 GitHub 和 Coding 上都有仓库,能不能一次 commit 就可以更新到两个地方?

Wang_Tai 赞了回答 · 2013-02-22

解决有没有办法同步 Coding 与 GitHub

git同时push到多个仓库

为防止一个git仓库由于各种原因造成无法访问,可以将代码push到多个仓库。

编辑本地仓库目录下面的.git目录下的config文件。

添加:

[remote "all"]
url = git@github.com:licess/licess.git
url = git@gitcafe.com:licess/licess.git

再push时,运行

git push all master

关注 3 回答 3

Wang_Tai 赞了回答 · 2013-02-22

正则表达式 懒惰型 {n,}? 和 {n} 有什么区别吗

{n} Exactly n of the preceding element. (只能匹配连续n个字符)

e.g.
a{2},会匹配aa

{n,} n or more of the preceding element.(可以匹配n,或任意大于n个连续字符。贪婪匹配,会尽量匹配多的字符)

e.g
a{2,},会匹配aa, aaa,aa... 等等

{m,n} Between m and n of the preceding element.(可以匹配n到m个连续字符,贪婪匹配,连续n个字符比连续m个字符优先匹配)

e.g
a{2,4} 只会匹配aa,aaa,aaaa三种情况

http://regexpal.com/ 测试{n,}的情况,属于贪婪型匹配,黄色和蓝色为匹配的字符串:
QQ20130221-1.png

另外一种有情况 {n,}?这个正则表达式,则属于懒惰型匹配,因为有了通配符‘?’。(也就是匹配尽量少的字符,参见@minus回复)
e.g
QQ20130221-2.png

但是这个{n,}? 和{n}还是有区别的。举例如下:
正则表达式a{2,}?bb 会优先完整匹配 aaabb
QQ20130221-4.png

而正则表达式a{2}bb不能够完整匹配 aaabb,只能匹配后四个字符
QQ20130221-5.png

//参见@minus 和 @liushishi的回复和评论

关注 0 回答 2

Wang_Tai 关注了用户 · 2013-02-22

高阳Sunny @sunny

SegmentFault 思否 CEO
C14Z.Group Founder
Forbes China 30U30

独立思考 敢于否定

曾经是个话痨... 要做一个有趣的人!

任何问题可以给我发私信或者发邮件 sunny@sifou.com

关注 2119

Wang_Tai 接受了回答 · 2013-02-22

建议增加回答问题的草稿功能

嗯,这个在开发计划中~

认证与成就

  • 获得 18 次点赞
  • 获得 4 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 4 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2011-08-02
个人主页被 220 人浏览