想问一下大伙,现在环球黑卡不想要了ez4最好的内核是哪个版本

FLYCO 飞科 FR5001 毛球修剪器(赠刀头) 9.9元包邮(29.9-20)_天猫精选优惠_什么值得买
当前位置:
FLYCO 飞科 FR5001 毛球修剪器(赠刀头)
9.9元包邮(29.9-20)
更新时间: 10:08
鼠标移到标签上方,
尝试关注标签~
白菜价好价再来~秋冬必备。
飞科FR5001毛球修剪器,带有双重安全保护装置,刀网采用高硬度不锈钢,按压不变形,特指3叶旋风式刀头,升级600毫安充电电池。精密蜂巢式网孔设计,带有可拆卸式大储屑盒。充电时间8小时,可使用30分钟。
飞科凡臣专卖店售价29.9元,可领取,券后实付9.9元包邮,还赠送一个原装刀头。昨日没买到的赶紧领券入手,日常很实用的小电器,刚需可入。
什么值得买是一家中立的消费门户网站,好价信息来自热心值友爆料和商家自荐,经小编人工审核或小值机器人智能判断后发布。促销折扣可能随时变化,请值友们购买前注意核实。
我要举报:
请选择举报理由:
信息涉及黄色,反动内容
虚假优惠信息
&&值得买&5
已有 150用户参与
微信号:smzdm_smzdm
国内优惠:海量网友爆料+编辑精选的国内超值好价商品,每款推荐都精挑细选,且有详实的网友点评。
赞16评论35
赞18评论41
赞15评论10
热门优惠券
已领: 88803 张
已领: 599 张
已领: 269 张
已领: 25102 张
已领: 7045 张
minij小吉 G1K-MZB水珠壁挂洗衣机(非智能版)
上汽通用别克GL6
【轻众测】CB12 漱口水
Yeelight皓石LED吸顶灯Pro
【轻众测】心想 即热饮水机
A.O.史密斯JSQ26-VT01燃气热水器
赞1170评论635
赞122评论97
赞148评论102
收藏0评论0
收藏0评论0
收藏2评论0
收藏338评论4
收藏1207评论34
收藏1014评论35
扫一下,分享更方便,购买更轻松我对ez4黑版烧录卡的测试!不说好也不讲差,公平评价!【gba吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:96,309贴子:
我对ez4黑版烧录卡的测试!不说好也不讲差,公平评价!
前一段时间,有位吧友以低价出售ez4卡,我本想以更低的价买研究的,当然我没有买到!后来我的一位朋友买来一张多手ez4卡,黑版的!
朋友说,你帮我测试一下,我不是太懂!我拿到手后,看了看,整体的外壳不是太好!tf卡经常卡在卡槽里!插到gba里,发现内核已经是1.76版的!我拿掉朋友的16gbtf卡,换上了自己的2btf卡开始测试!
我是知道新版ez4卡不支持中文名称的!我在电脑上新一个文件夹,用来存放转好的游戏!需要逐个的手动更改每个游戏与存档!发指呀!
ez4卡有两个存储芯片,一个16mb,另一个32mb分别是直接加载游戏运行和烧录后加载游戏运行!一个关机后游戏消失,一个关机后游戏不消失,直到下烧录加载游戏运行!
我的游戏取名方式为前四位为英文,后四位为数字!我先测试了银河战士,马力奥,后测试了一些32mb的游戏,古墓丽影!运行了32次后,花屏!(大家也可以学!进了游戏退出游戏!反反复复的来!)再次加载其它32mb游戏,依旧花屏,需要重新烧录!加载16mb的口袋386版,也是反复进出!就是不花屏!
我用16mb以下的游戏测试了2小时,还是不花屏,最后,我把那样撸的发热的ez4卡还给朋友!说到:这张卡我已经撸过了,32mb游戏花屏后,加载其它16mb游戏玩一段时间,再次加载32mb游戏玩,就不花屏,不需要重新在电脑上转换后放到卡里烧录了!朋友看着这张满是我的汗水与银水的卡,激动的说,你真是好人,为人民服务呀!大好人呀!我说应该,下次有什么烧录卡,请找我来测试!
真有耐心……
干得好 说是不是黑ez卖不出去了?
1.76确实还是不太好,直接运行白屏很多,按住L再运行能提高很多兼容性。对于tf我也是醉了,缝太大,居然会掉进去…
楼主并没有测试烧录16mb的游戏 不是前几天说逆转裁判都花屏吗?
为啥我手里的这张卡基本上完美运行任何游戏。。。
“32mb游戏花屏后,加载其它16mb游戏玩一段时间,再次加载32mb游戏玩,就不花屏,不需要重新在电脑上转换后放到卡里烧录了!”这句话没看明白。是说32M的A游戏花瓶后,运行个16M的B游戏(加载式还是烧录式?),然后重新运行A(是直接去运行烧好的A,还是重新烧录一次A?),A就正常了?
这卡NOR质量参差不齐,看人品
这个烧录卡很好没得说
奇怪家里那张EZ4白色的挺好的,也没这么折腾啊
确实,这个卡好蛋疼
我觉得挺好用的,有些游戏需要按l键进
用了这么长时间,感觉黑色还是不错的,这卡比较吃电压,耗电也很厉害。爱乐普充电电池如果电量不满,运行32M游戏有小概率死机。其他没的说,运行大部分游戏还算不错,就是只能改英文或数字名称有点头疼,到现在都不知道怎么中途直接快捷键回到烧录主页,说有补丁啥的,大部分游戏都不成功。存档还不错,关机后开机强制存档,丢不了,高兴。说这卡差的是你综合了其他烧录卡的优点,如果就这么一个可用的烧录卡,那这也能称得上效果拔群。
贴吧热议榜
使用签名档&&
保存至快速回贴&figure&&img src=&https://pic1.zhimg.com/v2-24d92b618da0e8ec67b26_b.jpg& data-rawwidth=&720& data-rawheight=&339& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&https://pic1.zhimg.com/v2-24d92b618da0e8ec67b26_r.jpg&&&/figure&&blockquote&3 月的第一天,谷歌就为各级别的 AI 开发者和研究人员带来了福利:免费的机器学习和人工智能课程。首先推出的机器学习速成班课程约为 15 小时,包括互动课程、谷歌研究人员的讲座以及 40 多个练习,全是干货!&/blockquote&&figure&&img src=&https://pic1.zhimg.com/v2-818ec660e20cb859fc695d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&720& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&https://pic1.zhimg.com/v2-818ec660e20cb859fc695d_r.jpg&&&/figure&&p&&br&&/p&&p&3 月的第一天,谷歌发福利了!&/p&&p&今天,谷歌上线人工智能学习网站 Learn with Google AI,网站设有一门名为机器学习速成班(Machine Learning Crash Course ,MLCC)的免费课程。该课程基于谷歌内部课程,最初旨在帮助谷歌员工对 AI 和机器学习基础知识进行介绍。&/p&&p&现在,MLCC 将面向所有人开放,而且有中文版网站!&/p&&p&跟着谷歌学机器学习的机会来了,还是免费的,3 月的第一天,谷歌你能对开发者们再好一点吗?&/p&&p&&br&&/p&&h2&&b&Learn with Google AI:适用于所有级别的人工智能热点&/b& &/h2&&p&谷歌一直在追求人工智能教育的普及,包括开放了像 TensorFlow 这样的高级项目,也有 Doodles 这样的低门槛且有趣的项目,这些项目旨在以更实用的方式展示 AI。&/p&&p&Google 想通过把 Learn with Google AI 网站作为机器学习和人工智能材料库,让人们能够 “了解核心 ML 概念,开发和磨练 ML 技能,并将 ML 应用于现实世界”。网站内容从高级研究人员到初学者全面覆盖。&/p&&p&Learn with Google AI 网站设有一门名为机器学习速成班(Machine Learning Crash Course ,MLCC)的免费课程。该课程基于谷歌内部课程,最初旨在帮助谷歌员工对 AI 和机器学习基础知识进行介绍,已有 18000 名员工入学。&/p&&p&现在,谷歌正在通过 Learn with Google AI 网站向所有人开放 MLCC,该课程能提供训练,采用交互式可视化和教学视频以帮助教授机器学习概念。&/p&&p&&br&&/p&&p&MLCC 有中文版网站!网址是:&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//developers.google.com/machine-learning/crash-course/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&developers.google.com/m&/span&&span class=&invisible&&achine-learning/crash-course/&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&MLCC 课程约为 15 小时,包括互动课程、谷歌研究人员的讲座以及 40 多个练习。它是为没有任何机器学习经验的菜鸟设计的。但谷歌建议菜鸟们应该掌握入门级代数,熟练掌握编程基础知识和 Python。 MLCC 也是谷歌计划推出的众多课程和资源中的第一个,接下来,还有很多课程和资源将陆续推出,敬请期待!&/p&&figure&&img src=&https://pic4.zhimg.com/v2-ea40c73f771b1bee9bcc7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1046& data-rawheight=&493& class=&origin_image zh-lightbox-thumb& width=&1046& data-original=&https://pic4.zhimg.com/v2-ea40c73f771b1bee9bcc7_r.jpg&&&/figure&&p&&br&&/p&&h2&&b&MLCC 是最大亮点,完美支持汉语!&/b& &/h2&&p&MLCC 目前提供英语、西班牙语、法语、韩语和汉语普通话版本。&/p&&p&机器学习速成(MLCC)课程包含一系列视频讲座课程、实际案例分析和实践练习。正如官网所描述的,这是 “机器学习热爱者的自学指南”。&/p&&ul&&li&40 多项练习&/li&&li&25 节课程&/li&&li&15 小时&/li&&li&Google 研究人员的讲座&/li&&li&实际案例研究&/li&&li&以互动方式直观呈现算法的实际运用&/li&&/ul&&figure&&img src=&https://pic1.zhimg.com/v2-7d281dd38b98d9e192c10b6d3b2f2458_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&309& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic1.zhimg.com/v2-7d281dd38b98d9e192c10b6d3b2f2458_r.jpg&&&/figure&&p&课程提供机器学习关键概念的解释,更重要的是,你可以在该课程中直接了解谷歌的专家针对各类机器学习任务提供的最佳做法。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-37e66c1acbed79ca3a8bf3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&878& data-rawheight=&727& class=&origin_image zh-lightbox-thumb& width=&878& data-original=&https://pic4.zhimg.com/v2-37e66c1acbed79ca3a8bf3_r.jpg&&&/figure&&p&课程界面&/p&&p&&b&课程目录:&/b&&/p&&p&&b&第一部分:机器学习概念&/b&&/p&&ul&&li&机器学习简介(3 分钟)&/li&&li&框架处理(15 分钟)&/li&&li&深入了解机器学习(20 分钟)&/li&&li&降低损失(60 分钟)&/li&&li&使用 TF 的基本步骤(60 分钟)&/li&&li&泛化(15 分钟)&/li&&li&训练集和测试集(25 分钟)&/li&&li&验证(40 分钟)&/li&&li&表示法(65 分钟)&/li&&li&特征组合(70 分钟)&/li&&li&正则化:简单性(40 分钟)&/li&&li&逻辑回归(20 分钟)&/li&&li&分类(90 分钟)&/li&&li&正则化:稀疏性(40 分钟)&/li&&li&神经网络简介(55 分钟)&/li&&li&训练神经网络(40 分钟)&/li&&li&多类别神经网络(50 分钟)&/li&&li&嵌入(80 分钟)&/li&&/ul&&p&&b&第二部分:机器学习工程&/b&&/p&&ul&&li&生产环境机器学习系统(3 分钟)&/li&&li&静态训练与动态训练(7 分钟)&/li&&li&静态推理与动态推理(7 分钟)&/li&&li&数据依赖关系(14 分钟)&/li&&/ul&&p&&b&第三部分:机器学习现实世界应用示例&/b&&/p&&ul&&li&癌症预测(5 分钟)&/li&&li&18 世纪文学(5 分钟)&/li&&li&现实世界应用准则(2 分钟)&/li&&/ul&&p&&b&总结&/b&&/p&&ul&&li&后续步骤&/li&&/ul&&p&&br&&/p&&p&我们以 “深入了解机器学习” 一节为例,体验一下:&/p&&p&&br&&/p&&h2&&b&深入了解机器学习 (Descending into ML)&/b&&/h2&&p&线性回归是一种找到最适合一组点的直线或超平面的方法。本模块会先直观介绍线性回归,为介绍线性回归的机器学习方法奠定基础。&/p&&p&&b&学习目标&/b&&/p&&ul&&li&复习前面学过的直线拟合知识。&/li&&li&将机器学习中的权重和偏差与直线拟合中的斜率和偏移关联起来。&/li&&li&大致了解 “损失”,详细了解平方损失。&/li&&/ul&&figure&&img src=&https://pic3.zhimg.com/v2-2c5ea3f48de_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&853& data-rawheight=&482& class=&origin_image zh-lightbox-thumb& width=&853& data-original=&https://pic3.zhimg.com/v2-2c5ea3f48de_r.jpg&&&/figure&&p&视频讲座的配音是使用机器学习技术生成的。用户可以点击上方的 “发送反馈” 即可提交错误报告和建议,协助谷歌改进配音技术。&/p&&p&课程提供英语、西班牙语、法语、韩语和普通话 5 种版本,可以从下拉列表中选择语言。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-a01e50be2f792ff7ba0cb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&845& data-rawheight=&477& class=&origin_image zh-lightbox-thumb& width=&845& data-original=&https://pic4.zhimg.com/v2-a01e50be2f792ff7ba0cb_r.jpg&&&/figure&&p&PPT 第 2 页,PPT 中的内容可以直接复制,这点比其他 MOOC 课程的体验要好。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-40853aab6a020d9f2dcde_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&844& data-rawheight=&474& class=&origin_image zh-lightbox-thumb& width=&844& data-original=&https://pic2.zhimg.com/v2-40853aab6a020d9f2dcde_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-7bd5c4deebb61c1a708e634_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&846& data-rawheight=&477& class=&origin_image zh-lightbox-thumb& width=&846& data-original=&https://pic1.zhimg.com/v2-7bd5c4deebb61c1a708e634_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&视频也可以调语速,有 1.5 倍和 2 倍速的选择。在这个 3 分钟的短视频里,课程简明讲解了机器学习中的权重和偏差,损失和平方损失等概念。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-04d293f8fdca8b55bcf0_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&955& data-rawheight=&557& class=&origin_image zh-lightbox-thumb& width=&955& data-original=&https://pic1.zhimg.com/v2-04d293f8fdca8b55bcf0_r.jpg&&&/figure&&p&&br&&/p&&p&除了视频讲座外,课程还提供大量教程和练习,以及相当全面的&a href=&http://link.zhihu.com/?target=https%3A//developers.google.com/machine-learning/crash-course/glossary& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&术语库&/a&。&/p&&p&&br&&/p&&p&总而言之,谷歌新推出的这个项目和系统的课程是名副其实的 “机器学习热爱者的自学指南”,与吴恩达著名的 Deep Learning 五门课相辅相成,务必体验一下。&/p&&p&&br&&/p&&p&&b&Learn with Google AI 网站:&/b&&a href=&http://link.zhihu.com/?target=http%3A//ai.google/education& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&ai.google/education&/span&&span class=&invisible&&&/span&&/a&&/p&&p&&/p&
3 月的第一天,谷歌就为各级别的 AI 开发者和研究人员带来了福利:免费的机器学习和人工智能课程。首先推出的机器学习速成班课程约为 15 小时,包括互动课程、谷歌研究人员的讲座以及 40 多个练习,全是干货! 3 月的第一天,谷歌发福利了!今天,谷歌上线…
推荐iPad上的Textastic这个神器,用了一年多,感觉没有比它更适合在iPad上写代码了。&br&说说其中几个优点:(图片均来自网络,懒得自己截图了)&br&1. 支持识别80多种编程语言的语法,其中包括 HTML, XML, Markdown, Objective-C, C++, PHP, Perl, Python, SQL, JavaScript, CSS, shell scripts,当然也包含你所提到的Lua。(完整支持列表在这里:&a href=&//link.zhihu.com/?target=http%3A//www.textasticapp.com/v4/manual/lessons/Which_file_types_are_supported.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Which file types are supported?&/a&)&br&&br&&figure&&img src=&https://pic3.zhimg.com/50/ceadac1ae56b9ada736d1_b.jpg& data-rawwidth=&1024& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic3.zhimg.com/50/ceadac1ae56b9ada736d1_r.jpg&&&/figure&&br&&br&2. 代码自动补全提示,支持 HTML, CSS, JavaScript and PHP。&br&&br&&br&3. 强大的文件共享和传输。支持FTP, FTPS, SFTP (SSH connection), WebDAV,还有很重要的,支持从Dropbox下载。另外文件还可以通过电邮发送,通过电脑上的iTunes来管理,或者通过其他软件里面的&Open in&按钮来读取。&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/948ee046d8af09cdc1aa_b.jpg& data-rawwidth=&768& data-rawheight=&1004& class=&origin_image zh-lightbox-thumb& width=&768& data-original=&https://pic4.zhimg.com/50/948ee046d8af09cdc1aa_r.jpg&&&/figure&&br&4. 强大的内置虚拟键盘和游标控制,以及对外置蓝牙键盘的支持。&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/d91ee67afddfec5b9d0efed923ea8d8a_b.jpg& data-rawwidth=&1536& data-rawheight=&2048& class=&origin_image zh-lightbox-thumb& width=&1536& data-original=&https://pic4.zhimg.com/50/d91ee67afddfec5b9d0efed923ea8d8a_r.jpg&&&/figure&&br&5. 方便的查找,替换,。。。&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/a3ce233a2e536982fbf062_b.jpg& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&https://pic4.zhimg.com/50/a3ce233a2e536982fbf062_r.jpg&&&/figure&&br&6. 各种字体,设置。。。&br&&br&&figure&&img src=&https://pic1.zhimg.com/50/73a81dc24849_b.jpg& data-rawwidth=&1024& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic1.zhimg.com/50/73a81dc24849_r.jpg&&&/figure&&br&iPhone和iPad版是分开的,每个$8.99, 我买的时候还是$9.99.&br&刚发现居然还出了Mac版,$5.99.&br&iTuens链接:&a href=&//link.zhihu.com/?target=https%3A//itunes.apple.com/us/app/textastic-code-editor/idFmt%3D8& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&itunes.apple.com/us/app&/span&&span class=&invisible&&/textastic-code-editor/id?mt=8&/span&&span class=&ellipsis&&&/span&&/a&&br&官网:&a href=&//link.zhihu.com/?target=http%3A//www.textasticapp.com& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Textastic - Text, Code and Markup Editor with Syntax Highlighting&/a&&br&&br&最后奉劝一句,Macbook Air才是正道。
推荐iPad上的Textastic这个神器,用了一年多,感觉没有比它更适合在iPad上写代码了。 说说其中几个优点:(图片均来自网络,懒得自己截图了) 1. 支持识别80多种编程语言的语法,其中包括 HTML, XML, Markdown, Objective-C, C++, PHP, Perl, Python, SQL, J…
&p&再更新:&br&新推荐一款好用到爆的 Git 工具 + 代码编辑器,Iodine Code&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-a0e4fb6a670_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&302& data-rawheight=&306& class=&content_image& width=&302&&&/figure&&p&之前用了几个别的 Git 工具比如 Source 之类的,经常 clone 不下代码很尴尬。。Iodine Code 比较给力,我 Gitlab、Github 和阿里云上的 repo 都能 clone 没问题,支持 ssh/http/https 的 repo。Git 方面支持很完备,git clone, commit, push, pull, 切 branch/tag,看 git log 都可以,基本满足日常需求,不过还不支持 cherry-pick 和 checkout -b,不然可以抛弃 Mac 命令行了。。&/p&&p&然后代码编辑跟 Xcode 感觉很像,支持多 Tab 文档,快捷键都是一样的,比如Command+Shift+O 快速打开文件,然后我是写 OC 的,还带跟 Xcode 一样的代码提示,UI 也是好看到爆~查 Git Log 也是很方便~&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-133e37d638c34dd6c421c7a2e90c6847_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2732& data-rawheight=&2048& class=&origin_image zh-lightbox-thumb& width=&2732& data-original=&https://pic1.zhimg.com/50/v2-133e37d638c34dd6c421c7a2e90c6847_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/50/v2-a34d61d790fbd6aa249de3d04624db29_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2732& data-rawheight=&2048& class=&origin_image zh-lightbox-thumb& width=&2732& data-original=&https://pic3.zhimg.com/50/v2-a34d61d790fbd6aa249de3d04624db29_r.jpg&&&/figure&&p&然后缺点就是试了一个 java 的工程,还不支持 java 的语法提示,代码提示目前只支持 OC。&/p&&p&平台:iPhone/iPad&br&价格:下载免费,7天试用,然后之后是 12 一个月或者 128 解锁无限使用。&br&iTunes 下载:&/p&&a href=&//link.zhihu.com/?target=https%3A//itunes.apple.com/cn/app/iodine-code/id%3Fmt%3D8& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-1bd2b980c0f236bb4ca864_ipico.jpg& data-image-width=&630& data-image-height=&630& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&App Store 上的“Iodine Code”&/a&&p&------------------------------------&br&更新:&br&日 Iodine MySQL 已更新支持了 MySQL 编辑器的语法高亮,还更新了中文本地化,点赞~&/p&&p&------------------------------------&br&原始回答:&/p&&p&一直以来都比较喜欢折腾 iOS 平台 去年 iPad Pro 12.9 寸发布后就立即购入了一台,连同Apple Pencil和Smart Keyboard一起,因此使用iPad Pro也有了一年多的时间,借此机会分享一下 iPad Pro 上编程方面的生产力工具~&/p&&p&其实吧,很多声音表示 iPad Pro 并不适合码农使用,这话没毛病,谁要是卖了 mbp 换了台 iPad Pro 做主力机,至少在今天来看,基本就要告别行业了 然而,如果 iPad 只是作为 mbp 的补充,或者是出差时临时解决一下线上的问题,iPad Pro 用对了姿势那也是个神器→_→&/p&&p&(当然,硬件前提是一个 Smart Keyboard 键盘,屏幕键盘还是太拉低效率。。另外尺寸的话,对于干活使用来说当然最好还是12.9寸,9.7寸也OK但是就不要分屏使用啦)&/p&&p&&b&A. 代码管理篇&/b&&br&说到上述的使用场景,最重要的要属代码管理了。对于小项目来说,老板/客户说有个bug,要是在外出差不用带电脑就可以直接改了,那还是很不错的。。&/p&&p&1. Coda&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-af8f616a33be409fd9ad6977_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&204& data-rawheight=&204& class=&content_image& width=&204&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&在曾经灰常 Naive 的初学前端的学生时代,Coda for mac 是作为窝的主力代码编辑器存在的(别笑)。虽然今日在 Jetbrain 大家族的碾压下,Coda 简直弱得不能再弱了。然并卵,Jetbrain 家还尚未进军 iOS 平台(从官方论坛来看短期内也不会有这个打算,只不过应该会支持一下 nmbp 上的 Touch Bar 而已),Coda for iOS 继承一贯的风格,在 iOS 这个 IDE(或者说代码编辑器吧)稀缺,好 IDE 更是屈指可数的平台上,竟然已经算是相当不错的存在了。跟 mac 版功能类似,可以远程通过 ftp、sftp 到服务器查看和编辑文件,支持部分语言比如 html, js, php 等的代码着色和语法高亮和自动补全提示(虽然这个自动补全和着色有些 bug),还自带 js playground 和 SSH 终端,那是相当的好用。就是价格有些小贵,163 大洋,虽然记得当时买的时候应该是 68,大家可以等等看限时优惠或者限免时出手咯~&br&平台:iPhone/iPad&br&价格:163&br&iTunes 下载:&/p&&a href=&//link.zhihu.com/?target=https%3A//itunes.apple.com/cn/app/coda/idFmt%3D8& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-5a81b01f180c9081dadc7_ipico.jpg& data-image-width=&630& data-image-height=&630& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&App Store 上的“Coda”&/a&&p&2. Pythonista&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-c7aa1bf71cb330db7f50_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&204& data-rawheight=&204& class=&content_image& width=&204&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&写 Python 的小伙伴应该都多少听过这个强大的 App 了吧,纯 iOS 平台的 Python 编辑、编译和运行环境,可以在 iPad 上用 Python 编写 iPad 系统扩展、小程序甚至是游戏,甚至还可以用 python 写完后导出 Xcode 工程在 mac 上继续编辑,实在是一个强大的 App。界面也十分的友好,兼容 12.9 寸 iPad Pro,也支持分屏使用,价格 68,感觉相当的值啊。不过美中不足的是本 App 并无办法编辑服务器上在线的 python,用 python 的后端同学可能不太能用它来当临时运维咯。另外,本 App 最近已经出了 Pythoista 3 了,但是升级还需另外收费,所以窝并没有升级,还请用过的同学多多评价~&br&平台:iPad&br&价格:68&br&iTunes 下载:&/p&&a href=&//link.zhihu.com/?target=https%3A//itunes.apple.com/cn/app/pythonista/idFmt%3D8& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pythonista:在 App Store 上的内容&/a&&p&3. Git2Go&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-070aff173c7bd4f9d4c45de2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&208& data-rawheight=&204& class=&content_image& width=&208&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&相信大部分小伙伴所在的公司或者个人项目不会不用git或者类似的版本管理工具吧?当 Coda 只能在线编辑的时候,Git2Go 却可以帮助我们进行 Git 的 clone,分支切换,log 查看,commit 和 push、pull 等操作,也算是相当的实用了,支持 github、gitlab 和其他 ssh 或者 http 的 git 仓库(后两者需要内购)。当时刚入手本 App 的时候没有找到导入 ssh 仓库的功能,正当绝望之时(窝所有的项目的 git 仓库都在 ssh 服务器上)联系了 App 的支持,受教了一个灰常隐蔽的操作才得以成功导入(步骤比较麻烦就不写了,同样被坑的同学可以私信 )。不过这个 App 的代码编辑做的相当烂,很多语法高亮不支持,也没有任何提示,甚至连最基本的自动缩进都没有,实在是一处败笔,对不起它的价格。希望日后能在版本更新中带来这些功能~&br&平台:iPhone/iPad&br&价格:免费+导入SSH仓库的内购98&br&iTunes 下载:&a href=&//link.zhihu.com/?target=https%3A//itunes.apple.com/cn/app/git2go-git-client-you-always/idFmt%3D8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&https://itunes.apple.com/cn/app/ ... ys/id?mt=8&/a&&/p&&p&&br&&/p&&p&&b&B.数据库管理篇&/b&&br&除了代码,第二重要的那就是数据库了。在移动端查看数据库,临时执行个 SQL 查询,甚至是直接建表捣鼓外键神马的,往往也是我们运维同学很常见的需求。目前在成熟项目中只用 MySQL,所以本篇仅说 MySQL Client。&/p&&p&1. Iodine MYSQL&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-1bd121e8fa80cf_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&208& data-rawheight=&207& class=&content_image& width=&208&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&App Store 里 MySQL 数据库管理的 App 不算少,但放眼望去都是 iOS 6 时代的界面,Xcode 模板项目般的 UI,开玩笑一样的易用性,要真说能够像 Coda 那样同步跟进所有 iOS 最新的 features 的还真很难找到一个。Iodine MYSQL 就是比较另类的一个数据库管理 App,暗色风格的设计,对 3D Touch 和 iPad Pro 的 Smart Keyboard 快捷键都有着很好的支持,还支持 iCloud Keychain,在跟进 iOS 新功能方面还是挺“上进”的。功能上可以很轻松地管理数据表的字段、索引和外键,还有数据本身,以及执行查询。值得一提的是这个 App 引入的 Smart Table 数据查看模式,大部分数据库管理的 App 都是像 Excel 一样把数据所有的字段一股脑平铺开来,在 iOS 上简直就是灾难,而 Iodine MYSQL 会自动分析数据表或者查询结果里面有意义的标示性字段,比如 name, label, title 这种,然后用iOS特有的方式显示出来,界面上十分好用。对 Smart Keyboard 的支持也是另一大亮点,建表之类的操作基本不用碰屏幕就可以完成了。缺点的话就是 MySQL 编辑器没有高亮提示不太方便,希望后续能够改进。&br&平台:iPhone/iPad&br&价格:68&br&iTunes 下载:&/p&&a href=&//link.zhihu.com/?target=https%3A//itunes.apple.com/cn/app/iodine-mysql-pretty-friendly/id%3Fmt%3D8& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-e3e53a369a0bb33eeeaa142f6e5a549f_ipico.jpg& data-image-width=&630& data-image-height=&630& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&App Store 上的“Iodine MySQL”&/a&&p&&br&&/p&&p&&b&C.终端篇&/b&&br&随时能ssh上服务器查个内存占用,杀个进程也是不错的呢。&/p&&p&1.WebSSH&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-632acff5a06dc4c7d139c23_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&204& data-rawheight=&206& class=&content_image& width=&204&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&iOS 上一个支持多屏的 SSH 终端,还是很好用的,终端屏幕和字符编码什么的也都可以自己配置,因为支持多屏所以也可以同时连接多个 SSH 服务器,然后在各种之间 copy & paste 这一点点个赞。不过美中不足的是竟!然!不!支!持!中!文!输!入!!不过还好支持终端窗口 copy & paste,所以可以在备忘录里写完以后粘贴进来,但是还是不太方便,对不起价格。&br&平台:iPhone/iPad&br&价格:30&br&iTunes 下载:&/p&&a href=&//link.zhihu.com/?target=https%3A//itunes.apple.com/cn/app/webssh-pro-best-ssh-terminal/idFmt%3D8& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic2.zhimg.com/v2-3fddaa1785_ipico.jpg& data-image-width=&630& data-image-height=&630& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&App Store 上的“WebSSH Pro”&/a&&p&&br&&/p&&p&&b&D. 抓包篇&/b&&br&在 Mac 上做接口开发时常开 Charles 做抓包,iOS 上没了 Charles 怎么办呢?&/p&&p&1 .Surge&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-ef2ce159bfeb837b1ce504f963c6c85a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&204& data-rawheight=&204& class=&content_image& width=&204&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&Surge 是一个很火的 App,当然主要的大众化用途不是用来抓包和开发的(你们懂得)。说实话,窝并没有用过,因为知道的时候已经太贵了。。所以用的是 Surge 同一个开发商出的 Replica 来抓包,每次只有 10 个请求的限制。这里就说说 Replica 的使用感受吧,因为 Surge 只会比 Replica 更好用。Replica 分屏打开以后,点击开始抓包就可以了,抓到的包都会在 log 里面显示,很全面,Request 这边的 Header、Content 都可以看到,Response 也可以看到所有的 Header 和 Body,但是启动抓包似乎有些延迟,打开开关以后过个几秒钟之后的请求才能被捕获,不知道为什么。不过 Replica 作为一个免费的 App 来说已经是很不错了~ Surge 的话就不知道啦&br&平台:iPhone/iPad&br&价格:328&br&iTunes 下载:&/p&&a href=&//link.zhihu.com/?target=https%3A//itunes.apple.com/cn/app/surge-web-developer-tool-proxy/id%3Fmt%3D8& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&https://itunes.apple.com/cn/app/ ... y/id?mt=8&/a&&p&咦,发现 replica 好像下架了?&/p&&p&&br&&/p&&p&&b&E. 文档篇&/b&&/p&&p&1. Dash&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-dffb5d71d5b1a153d6ef66_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&251& data-rawheight=&146& class=&content_image& width=&251&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&这是一个时代的牺牲品。。希望各位手中还留有 Dash 没有删掉。。&br&Dash 是一个语言和库参考文档集中查看、管理的软件,多达一百多种文档,应有尽有,界面和交互也都很友好,然而前些时候因为某些吃瓜群众不得而知的原因被苹果大大下架了。。默哀三分钟&br&现在 Dash 的官网还提供 ipa 下载,越狱用户还可以下得到哈~&/p&&p&平台:iPhone/iPad&/p&&p&价格:已下架&/p&&p&iTunes 下载:官网越狱下载&/p&
再更新: 新推荐一款好用到爆的 Git 工具 + 代码编辑器,Iodine Code之前用了几个别的 Git 工具比如 Source 之类的,经常 clone 不下代码很尴尬。。Iodine Code 比较给力,我 Gitlab、Github 和阿里云上的 repo 都能 clone 没问题,支持 ssh/http/https 的 …
精通C++是一个艰巨的任务。为什么C++比别的语言难学这么多?其实这基本上是因为C++他爹Bjarne Stroustrup说过的一句话“我特别讨厌语言的设计者把自己的喜好强加给用户”(看向go)。结果C++为了不限制你的想法,于是也就变成了现在这个样子——包含若干范式,大概有&br&&ul&&li&面向对象(灵活应用virtual继承+shared_ptr可以达到java/C#的效果)&/li&&li&模板(这里分两类,分别为type rich programming和meta programming,区别很大)&/li&&li&函数式编程(如今有了lambda,配合&algorithm&文件,简直无敌了)&/li&&li&过程式&/li&&/ul&但是难能可贵的是,这几种东西在C++混在一起用也是多么的自然。不过,这需要你花时间去掌控他。&br&&br&那到底有没有必要真的学到这个地步呢,我觉得跟你的领域是有关系的。譬如说我,基本上算是人格分裂的,因为:&br&&ul&&li&当我搞语言设计和编译器的时候,我总是会倾向于创造各种小DSL来给自己用,用的都是模板(想想boost的spirit大概就明白我的意思了,虽然我不用它),尽量让跟我有同样背景的人一眼能看懂我代码的意思。&/li&&li&当我做我那个GUI库(&a href=&//link.zhihu.com/?target=http%3A//www.gaclib.net& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&www.gaclib.net&/a&)的时候,纯粹是用OO和IoC那一套。&/li&&li&当我写3D渲染程序的时候,我会变成一个为了性能不惜牺牲可读性的人。&/li&&/ul&当我是不同的我的时候,我当然只会用C++的一部分来完成我当前的这个任务。这好像是多重标准,但是实际上是由于项目本身的性质而定的。&br&&br&到了这个时候你会觉得,C++真是一门好语言。当你需要为了你的项目放弃不同的部分的时候,C++都能帮你做到。当你需要不同的抽象层次需要不同的性能要求的是,C++还是能够帮你做到。如果你用别的语言,你最终会发现那个语言只能做某几类的项目。这是因为,&strong&C++能够自由的让你放弃某些部分,而别的语言会阻止你放弃某些部分&/strong&。&br&&br&为了达到这个层次,你必须进入一个无限接近于精通C++的状态里,这个时候你才能收放自如,不被C++社区的各种不同的价值观所捆绑。倘若你的项目非常大,不同的部分有不同的特征的时候(什么,一个没有遍布全世界的一两千人写了20年的程序能叫程序吗?),就更加需要你有这种本事了。&br&&br&说到这里,大家大概都明白精通C++大概是个什么感觉了吧——&strong&大丈夫能屈能伸&/strong&。
精通C++是一个艰巨的任务。为什么C++比别的语言难学这么多?其实这基本上是因为C++他爹Bjarne Stroustrup说过的一句话“我特别讨厌语言的设计者把自己的喜好强加给用户”(看向go)。结果C++为了不限制你的想法,于是也就变成了现在这个样子——包含若干范…
&p&既然你是在校学生,而且编程语言和数据结构的基础还不错,我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫,然后才去读编程方面的 APUE、UNP 等书。&/p&&br&&p&下面简单谈谈我对学习这两门课的看法和建议,都是&b&站在服务端程序员的角度,从实用主义(&/b&pragmatic&b&)的立场出发&/b&而言的。&/p&&br&&p&&b&学习操作系统的目的&/b&,不是让你去发明自己操作系统内核,打败 Linux;也不是成为内核开发人员;而是理解操作系统为用户态进程提供了怎样的运行环境,作为程序员应该如何才能充分利用好这个环境,哪些做法是有益的,哪些是做无用功,哪些则是帮倒忙。&/p&&br&&p&&b&学习计算机体系结构的目的&/b&,不是让你去设计自己的 CPU(新的 ISA 或微架构),打败 Intel 和 ARM;也不是参与到 CPU 设计团队,改进现有的微架构;而是明白现代的处理器的能力与特性(例如流水线、多发射、分支预测、乱序执行等等指令级并行手段,内存局部性与 cache,多处理器的内存模型、能见度、重排序等等),在编程的时候通过适当组织代码和数据来发挥 CPU 的效能,避免 pitfalls。&a href=&//link.zhihu.com/?target=http%3A//www.lighterra.com/papers/modernmicroprocessors/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Modern Microprocessors&/a&&/p&&br&&b&这两门课程该如何学?看哪些书?&/b&这里我告诉你一个通用的办法,去美国计算机系排名靠前的大学的课程主页,找到这两门课最近几年的课程大纲、讲义、参考书目、阅读材料、随堂练习、课后作业、编程实验、期末项目等,然后你就心里有数了。&br&&br&&p&&b&学习任何一门课程都要善于抓住主要矛盾、分清主次、突出重点&/b&,关键是掌握知识框架,学会以后真正有用的知识和技能,而不要把精力平均分配在一些琐事上。&/p&&br&&p&请允许我再次引用孟岩的观点:&a href=&//link.zhihu.com/?target=http%3A//blog.csdn.net/myan/article/details/5877305& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.csdn.net/myan/arti&/span&&span class=&invisible&&cle/details/5877305&/span&&span class=&ellipsis&&&/span&&/a&&/p&&blockquote&&p&我(孟岩)主张,在具备基础之后,学习任何新东西,都要抓住主线,突出重点。对于关键理论的学习,要集中精力,速战速决。而旁枝末节和非本质性的知识内容,完全可以留给实践去零敲碎打。&/p&&br&&p&原因是这样的,任何一个高级的知识内容,其中都只有一小部分是有思想创新、有重大影响的,而其它很多东西都是琐碎的、非本质的。因此,集中学习时必须把握住真正重要那部分,把其它东西留给实践。对于重点知识,只有集中学习其理论,才能确保体系性、连贯性、正确性,而对于那些旁枝末节,只有边干边学能够让你了解它们的真实价值是大是小,才能让你留下更生动的印象。如果你把精力用错了地方,比如用集中大块的时间来学习那些本来只需要查查手册就可以明白的小技巧,而对于真正重要的、思想性东西放在平时零敲碎打,那么肯定是事倍功半,甚至适得其反。&/p&&br&&p&因此我对于市面上绝大部分开发类图书都不满——它们基本上都是面向知识体系本身的,而不是面向读者的。总是把相关的所有知识细节都放在一堆,然后一堆一堆攒起来变成一本书。反映在内容上,就是毫无重点地平铺直叙,不分轻重地陈述细节,往往在第三章以前就用无聊的细节谋杀了读者的热情。&/p&&/blockquote&&br&&p&比如说操作系统,应该把精力主要放在进程管理与调度、内存管理、并发编程与同步、高效的IO等等,而不要过于投入到初始化(从 BIOS 加载引导扇区、设置 GDT、进入保护模式)这种一次性任务上。我发现国内讲 Linux 内核的书往往把初始化的细节放在前几章,而国外的书通常放附录,你可以体会一下。初始化对操作系统本身而言当然是重要的,但是对于在用户态写服务程序的人来说,弄清楚为什么要打开 PC 上的 A20 地址线真的有用处吗?(这不过是个历史包袱罢了。)&/p&&br&&p&再比方说《计算机网络》,关键之一是理解如何在底层有丢包、重包、乱序的条件下设计出可靠的网络协议,这不算难。难一点的是这个可靠协议能达到“既能充分利用带宽,又能做到足够公平(并发连接大致平均分享带宽)”。而不是学会手算 CRC32,这更适合放到信息论或别的课程里去讲。&/p&&br&&b&注意分清知识的层次&/b&。就好比造汽车与开汽车的区别,我认为一个司机的技能主要体现在各种道路条件和天气状况下都能安全驾驶(城市道路、高速公路、乡间公路 X 晴、雨、雪、雾),平安到达目的地。作为一名司机,了解汽车运行的基本原理当然是好事,可以有助于更好地驾驶和排除一些常见故障。但不宜喧宾夺主,只要你不真正从事汽车设计工作,你再怎么研究发动机、传动、转向,也不可能比汽车厂的工程师强,毕竟这是人家的全职工作。而且钻研汽车构造超过一定程度之后,对开好车就没多大影响了,成了个人兴趣爱好。“有的人学着学着成了语言专家,反而忘了自己原本是要解决问题来的。”(语出孟岩 &a href=&//link.zhihu.com/?target=http%3A//blog.csdn.net/myan/article/details/3144661& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&快速掌握一个语言最常用的50%&/a&)&br&&br&对于并发编程来说,掌握 mutex、condition variable 的正确用法,避免误用(例如防止 busy-waiting 和 data race)、避免性能 pitfalls,是一般服务端程序员应该掌握的知识。而如何实现高效的 mutex 则是 libc 和 kernel 开发者应该关心的事,随着硬件的发展(CPU 与内存之间互联方式的改变、核数的增加),最优做法也随之改变。如果你不能持续跟进这一领域的发展,那么你深入钻研之后掌握的知识到了几年之后可能反而成为累赘,当年针对当时硬件的最优特殊做法(好比说定制了自己的 mutex 或 lock-free 数据结构)在几年后有可能反而会拖低性能。还不如按最清晰的方式写代码,利用好语言和库的现成同步设施,让编译器和 libc 的作者去操心“与时俱进”的事。&br&&br&&b&注意识别过时的知识。&/b&比方说&b&《操作系统》&/b&讲磁盘IO调度往往会讲电梯算法,但是现在的磁盘普遍内置了这一功能(NCQ),无需操作系统操心了。如果你在一个比较好的学校,操作系统课程的老师应该能指出这些知识点,避免学生浪费精力;如果你全靠自学,我也没什么好办法,尽量用新版的书吧。类似的例子还有&b&《计算机体系结构》&/b&中可能会讲 RISC CPU 流水线中的 delay slot,现在似乎也都废弃了。&b&《计算机网络》&/b&中类似的情况也不少,首先是 OSI 七层模型已经被证明是扯淡的,现在国外流行的教材基本都按五层模型来讲(&a href=&//link.zhihu.com/?target=http%3A//en.wikipedia.org/wiki/Internet_protocol_suite%23Layer_names_and_number_of_layers_in_the_literature& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Internet protocol suite&/a&),如果你的教材还郑重其事地讲 OSI (还描绘成未来的希望),扔了换一本吧。其次,局域网层面,以太网一家独大(几乎成了局域网的代名词),FDDI/Token ring/ATM 基本没啥公司在用了。就说以太网,现在也用不到 CSMA/CD 机制(因为 10M 的同轴电缆、10M/100M 的 hub 都过时了,交换机也早就普及了),因此碰撞检测算法要求“以太网的最小帧长大于最大传播延迟的二倍”这种知识点了解一下就行了。&br&&br&另外一点是 low level 优化的知识非常容易过时,编码时要避免过度拟合(overfitting)。比方说目前国内一些教科书(特别是大一第一门编程语言的教程)还在传授“乘除法比加减法慢、浮点数运算比整数运算慢、位运算最快”这种过时的知识。现代通用 CPU 上的实际情况是整数的加减法和乘法运算几乎一样快,整数除法慢很多;浮点数的加减法和乘法运算几乎和整数一样快,浮点数除法慢很多。因此用加减法代替乘法(或用位运算代替算术运算)不见得能提速,反而让代码难懂。而且现代编译器可以把除数为小整数的整数除法转变为乘法来做,无需程序员操心。(目前用浮点数乘法代替浮点数除法似乎还是值得一做的,例如除以10改为乘以0.1,因为浮点运算的特殊性(不满足结合律和分配率),阻止了编译器优化。)&br&&br&类似的 low level 优化过时的例子是早年用汇编语言写了某流行图像格式的编解码器,但随着 CPU 微架构的发展,其并不比现代 C 语言(可能用上 SIMD)的版本更快,反而因为使用了 32-bit 汇编语言,导致往 64-bit 移植时出现麻烦。如果不能派人持续维护更新这个私有库,还不如用第三方的库呢。现在能用汇编语言写出比 C 语言更快的代码几乎只有一种可能:使用 CPU 的面向特定算法的新指令,例如 Intel 的新 CPU (将会)内置了 AES、CRC32、SHA1、SHA256 等算法的指令。不过主流的第三方库(例如 OpenSSL)肯定会用上这些手段,及时跟进即可,基本无需自己操刀。(再举一个例子,假如公司早先用汇编语言写了一个非常高效的大整数运算库,一直运转良好,原来写这个库的高人也升职或另谋高就了。Intel 在 2013 年发布了新微架构 Haswell,新增了 MULX 指令,可以进一步提高大整数乘法的效率 &a href=&//link.zhihu.com/?target=https%3A//gmplib.org/list-archives/gmp-devel/2013-August/003353.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GMP on Intel Haswell&/a& ,那么贵公司是否有人持续跟进这些 CPU 的进化,并及时更新这个大整数运算库呢?或者直接用开源的 GMP 库,让 GMP 的作者去操心这些事情?)&br&&br&&b&如果你要记住结论,一定要同时记住前提和适用条件。&/b&在错误的场合使用原本正确的结论的搞笑例子举不胜举。&br&&ol&&li&《Linux内核源码情景分析》上分析内核使用 GDT/LDT 表项的状况,得出进程数不超过 4090 的结论。如果你打算记住这个结论,一定要记住这是在 Linux 2.4.0 内核,32-bit Intel x86 平台上成立,新版的内核和其他硬件平台很可能不成立。看完书后千万不要张口就来“书上说 Linux 的最大进程数是 4090”。&br&&/li&&li&一个 Linux 进程最多创建 300 余个线程,这个结论成立的条件是 3GB 用户空间,线程栈为 10M 或 8M。在 64-bit 下不成立。&/li&&li&Reactor 模式只能支持不超过 64 个 handle,这个结论成立的条件是 Windows 下使用 WaitForMultipleObjects 函数实现的 WFMO_Reactor,对于 Linux 下使用 poll/epoll 实现的 Reactor 则无此限制。&/li&&li&C++ STL 的 vector 容器在 clear() 之后不会释放内存,需要 swap(empty vector),这是有意为之(C++11 里增加了 shrink_to_fit() 函数)。不要记成了所有 STL 容器都需要 swap(empty one) 来释放内存,事实上其他容器(map/set/list/deque)都只需要 clear() 就能释放内存。只有含 reserve()/capacity() 成员函数的容器才需要用 swap 来释放空间,而 C++ 里只有 vector 和 string 这两个符合条件。&br&&/li&&/ol&&br&最后一点小建议,服务端开发这几年已经普及 64-bit 多核硬件平台,因此在学习操作系统的时候,可以不必太关心单核上特有的做法(在单核时代,内核代码进入临界区的办法之一是关中断,但到了多核时代,这个做法就行不通了),也不必太花精力在 32-bit 平台上。特别是 32-bit x86 为了能支持大内存,不得已有很多 work around 的做法(困难在于 32-bit 地址空间不够将全部物理内存映射入内核),带来了额外的复杂性,这些做法当时有其积极意义,但现在去深入学似乎不太值得。&br&&br&关于项目,&b&我出两个练手题目&/b&:&br&&p&&b&一、多机数据处理&/b&。有 10 台机器,每台机器上保存着 10 亿个 64-bit 整数(不一定刚好 10 亿个,可能有上下几千万的浮动),一共约 100 亿个整数(其实一共也就 80GB 数据,不算大,选这个量级是考虑了 VPS 虚拟机的容量,便于实验)。编程求出:&/p&&p&1. 这些数的平均数。&/p&&p&2. 这些数的中位数。&/p&&p&3. 出现次数最多的 100 万个数。&/p&&p&*4. (附加题)对这 100 亿个整数排序,结果顺序存放到这 10 台机器上。&/p&&p&*5. (附加健壮性要求)你的程序应该能正确应对输入数据的各种分布(均匀、正态、Zipf)。&/p&&p&*6. (附加伸缩性要求)你的程序应该能平滑扩展到更多的机器,支持更大的数据量。比如 20 台机器、一共 200 亿个整数,或者 50 台机器、一共 500 亿个整数。&/p&&br&&p&&b&二、N-皇后问题的多机并行求解&/b&。利用多台机器求出 N-皇后问题有多少个解。(注意目前的世界纪录是 N = 26,&a href=&//link.zhihu.com/?target=http%3A//oeis.org/A000170& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&A000170 - OEIS&/a& )&/p&&p&1. 8 皇后问题在单机上的运算时间是毫秒级,有 92 个解,编程实现之。&/p&&p&2. 研究 N-皇后问题的并行算法,写一个单机多线程程序,争取达到线性加速比(以 CPU 核数计)。再设法将算法扩展到多机并行。&/p&&p&3. 用 10 台 8 核的机器(一共 80 个 CPU cores),求解 19-皇后和 20-皇后问题,看看分别需要多少运行时间。你的方案能否平滑扩展到更多的机器?&/p&&p&*4. (附加题)如果这 10 台机器的型号不一,有 8 核也有 16 核,有旧 CPU 也有更快的新 CPU,你该采用何种负载均衡策略,以求缩短求解问题的时间(至少比 plain round-robin 算法要好)?&br&&/p&&br&&p&你可以用 Amazon EC2 或 Google GCE 来验证你的程序的正确性和性能,这两家的虚拟机都是按小时(甚至更短)收费,开 10 台虚拟机做一个下午的实验也花不了多少钱。&/p&
既然你是在校学生,而且编程语言和数据结构的基础还不错,我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫,然后才去读编程方面的 APUE、UNP 等书。 下面简单谈谈我对学习这两门课的看法和建议,都是站在服务端程序员的角度,从实用主义(pr…
最近在忙着GRE的事情所以回答这边先缓一下,日后还会持续更新,在这边可以分享一个自己用node写的小工具,希望大家喜欢。 &a href=&//link.zhihu.com/?target=https%3A//github.com/Marswang92/Focus& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - Marswang92/Focus: Keep you away from the distracting websites.&/a&&br&&br&顺便,本人正在找2017暑假国内前端或是全栈实习的机会,感兴趣的大大们请私信邮箱,求收留~&br&&br&-----------------------------------------------原回答分割线-----------------------------------------------------&br&&br&本人在知乎的第一个正经回答,最近正在学Node.js,权当笔记了。&br&&br&首先要了解Node.js,我们可以先要了解什么是v8引擎,可以说Node.js的诞生很大程度上归功于v8引擎的出现。&br&我们都知道计算机处理器智能识别机器语言,而JavaScript是一门高级语言,计算机并不能直接读懂。所以我们需要所谓的引擎来将其转化成计算机所能理解的语言。v8引擎是由Google推出的,为其浏览器Chrome所设计的开源JavaScript引擎。得益于JIT,编译模式的改变与编译阶段的优化,JavaScript的性能得到了一个飞跃。其源代码是用c++写的,感兴趣的可以点&a href=&//link.zhihu.com/?target=https%3A//github.com/v8/v8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - v8/v8: The official mirror of the V8 git repository&/a&&br&除了对JavaScript性能的大幅提升,v8引擎也提供了“嵌入”的功能,使得开发者也可以在自己的c++程序中使用“嵌入”的v8引擎,从而高效地编译JavaScript,并加入c++的feature。要知道,作为一个底层得多的语言,c++可以实现的feature可要比JavaScript多得多。举例说明,JavaScript本身并没有read这么一个function。然而通过v8,我们可以将其绑定到一个用c++写的read callback上,从而通过JavaScript我们也可以直接加载文件了。&br&&br&于是,借助于v8种种便利的功能,Node.js诞生了。&br&Node.js是一项服务器技术。我们都知道客户端提出服务请求,而服务器端负责处理请求并提供服务。而对于互联网来说,在Node.js之前JavaScript是一项完全的客户端技术,被用于浏览器中实现各种动画,对DOM的操作等等。而后端,即服务端则是由PHP、Python、Ruby、Java等等语言来实现。Node.js的出现,使得前后端使用同一种语言,统一模型的梦想得以实现。&br&所以Node.js到底解决了JavaScript的什么痛点和问题?&br&&ol&&li&更好的组织代码,提升复用性。当然在ES6中这一点也得到了很大的提升。&/li&&li&处理文件与数据库。&/li&&li&与互联网进行沟通,以标准化的格式处理请求并发送回答。&/li&&li&快速地解决如上问题。&/li&&/ol&同时,Node.js还带来了许多别的后端技术所不具备,或是不完善的优点,如其他人回答中的事件驱动,异步编程,非阻塞式io等等。JavaScript本身语言的特性,以及其的流行程度与社区活跃度给Node.js带来了各种意义上的优势。&br&&br&新人,如有理解上的偏差请各位指正,谢谢!
最近在忙着GRE的事情所以回答这边先缓一下,日后还会持续更新,在这边可以分享一个自己用node写的小工具,希望大家喜欢。
顺便,本人正在找2017暑假国内前端或是全栈实习的机会,…
先回答题主第一个问题:Raspberry Pi是什么?&br&------计算机&br&(整体概念)计算机的定义是有运算器控制器IO等硬件以及由操作系统应用程序组成的软件组成的整体,树莓派虽然只有信用卡大小,CPU,1 GHz的,IO有四个USB插口和HDMI输出音频输出口,以太网接口,存储系统,MicroSD卡用作硬盘(具有一般台式主机的所有必备组件)。以及用作硬件开发的GPIO口(这个是一般电脑没有的),然后是搭载在硬件上的系统,有很多主流的linux都有Pi衍生版可以安装,最可怕的是win10,即将支持树莓派(装win需谨慎,严防360)。&br&&br&然后是应该怎么玩:&br&满足一颗炽热的geek心呗&br&&figure&&img src=&https://pic4.zhimg.com/50/f2b0807b51faefc3aaeeb52af52924b7_b.jpg& data-rawwidth=&820& data-rawheight=&509& class=&origin_image zh-lightbox-thumb& width=&820& data-original=&https://pic4.zhimg.com/50/f2b0807b51faefc3aaeeb52af52924b7_r.jpg&&&/figure&(看起来确实很geek)&br&安装过程有可能会遇到问题,本农就遇到显示器不匹配的问题因为树莓派只支持HDMI输出,我屏幕是VGA的所以搞了个转接头,但是在上电开机的时候遇到了黑屏的问题最终是prefix的问题,改了prefix得以点亮小PI&br&&figure&&img src=&https://pic1.zhimg.com/50/ff495d556_b.jpg& data-rawwidth=&869& data-rawheight=&650& class=&origin_image zh-lightbox-thumb& width=&869& data-original=&https://pic1.zhimg.com/50/ff495d556_r.jpg&&&/figure&&br&&br&非骨灰级玩家真的可以把它配置好当个电脑用,还挺好用的,说实话,刚在树莓派上装好debain的时候把我吓坏了真的,一个运行在sd卡上的系统竟然预装的wolfram计算内核并携带mathematica!!!!&br&&figure&&img src=&https://pic4.zhimg.com/50/4a080f8d647ca_b.jpg& data-rawwidth=&552& data-rawheight=&485& class=&origin_image zh-lightbox-thumb& width=&552& data-original=&https://pic4.zhimg.com/50/4a080f8d647ca_r.jpg&&&/figure&&br&&br&我幼小的心灵受到的了惊吓,这是我生平第一次在arm核基础上的硬件驱动的设备上见到mathematica&br&&br&接着对于众码农树莓派准备了IDE包括codeblocks,qt这一系列的主流IDE在树莓派软件源里都能找到(没图我说的杰宝)于是你可以用树莓派编程了-0-&br&&figure&&img src=&https://pic3.zhimg.com/50/35aa32fa1afca_b.jpg& data-rawwidth=&559& data-rawheight=&381& class=&origin_image zh-lightbox-thumb& width=&559& data-original=&https://pic3.zhimg.com/50/35aa32fa1afca_r.jpg&&&/figure&&br&对于我这种理工狗狗是到哪里都想装上mathematica和matlab,前者已经有了,后者显然不可能,就算精简版对raspberry还是太大,在网上找了找,还是找到个卵用,这个卵是octave&br&&br&它是matlab的计算内核,好处是精简,即便是精简的计算内核,也有百兆量级,然后是坏处,坏处是没有图形界面不过geek要啥图形界面哈哈哈哈哈哈哈哈&br&附图一张是我计算方法作业matlab代码,完美运行(^o^)&br&&figure&&img src=&https://pic4.zhimg.com/50/2cc69e96d7ea91a28fdf543dbffd28f0_b.jpg& data-rawwidth=&863& data-rawheight=&650& class=&origin_image zh-lightbox-thumb& width=&863& data-original=&https://pic4.zhimg.com/50/2cc69e96d7ea91a28fdf543dbffd28f0_r.jpg&&&/figure&截止目前为止,还都是软件层面的东西&br&&br&然而树莓派最帅气的是GPIO数模转换口啊,可以搞个呼吸灯啊,无线外设啊,牛逼点有做出来四轴的(这就是骨灰级玩家的玩法了)&br&&br&love_life&pjer
先回答题主第一个问题:Raspberry Pi是什么? ------计算机 (整体概念)计算机的定义是有运算器控制器IO等硬件以及由操作系统应用程序组成的软件组成的整体,树莓派虽然只有信用卡大小,CPU,1 GHz的,IO有四个USB插口和HDMI输出音频输出口,以太网接口,…
高斯模糊,听起来很高大上,其实就是一种很基础的数学算法应用,不要被“高斯”迷惑了双眼,它并没有高斯本人那么深不可测。。&br&&br&高斯模糊之所以叫高斯模糊,是因为它运用了高斯的正态分布的密度函数,我记得是大二时候学的:&br&&figure&&img src=&https://pic1.zhimg.com/50/v2-3bea22d46ad2d7cadf2a366_b.jpg& data-rawwidth=&540& data-rawheight=&120& class=&origin_image zh-lightbox-thumb& width=&540& data-original=&https://pic1.zhimg.com/50/v2-3bea22d46ad2d7cadf2a366_r.jpg&&&/figure&其中,μ是x的均值,σ是x的标准差(评论提醒)。由于每次计算都以当前计算点为原点,所以μ等于0。于是公式进一步简化为:&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-0ebf93231ddbe359f9e57f_b.jpg& data-rawwidth=&459& data-rawheight=&120& class=&origin_image zh-lightbox-thumb& width=&459& data-original=&https://pic3.zhimg.com/50/v2-0ebf93231ddbe359f9e57f_r.jpg&&&/figure&&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-cf0fa0aa41e5c_b.jpg& data-rawwidth=&650& data-rawheight=&342& class=&origin_image zh-lightbox-thumb& width=&650& data-original=&https://pic4.zhimg.com/50/v2-cf0fa0aa41e5c_r.jpg&&&/figure&&br&&p&在图形上,正态分布是一种钟形曲线,越接近中心,取值越大,越远离中心,取值越小。&/p&&br&计算平均值的时候,我们只需要将&中心点&作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值。&br&&br&而他的二维方程是:&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-cad9cda202a184e_b.jpg& data-rawwidth=&508& data-rawheight=&80& class=&origin_image zh-lightbox-thumb& width=&508& data-original=&https://pic3.zhimg.com/50/v2-cad9cda202a184e_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/50/v2-d8e1d45a56e7a044d19887_b.jpg& data-rawwidth=&411& data-rawheight=&319& class=&content_image& width=&411&&&/figure&&br&&br&也就是说,把它运用于图像算法中,就会使图像出现模糊的效果:&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-e762abe034b_b.jpg& data-rawwidth=&312& data-rawheight=&160& class=&content_image& width=&312&&&/figure&&br&我从最基础的开始举例子,以一维方程做起,将x,y轴分别进行高斯模糊。&br&&br&我们假设σ为1.5吧,假设有x轴上三个像素点,中间点为原点:&br&&br&&figure&&img src=&https://pic1.zhimg.com/50/v2-6d55bd862b653e64c8c88dc47eaac41d_b.jpg& data-rawwidth=&300& data-rawheight=&100& class=&content_image& width=&300&&&/figure&&br&带入公式后,三个点的值为:&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-978deb42_b.jpg& data-rawwidth=&300& data-rawheight=&100& class=&content_image& width=&300&&&/figure&这3个像素的权重总和等于0.,如果只计算这3个点的加权平均,还必须让它们的权重之和等于1,因此上面3个值还要分别除以0.。&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-b0cc9364da3_b.jpg& data-rawwidth=&300& data-rawheight=&100& class=&content_image& width=&300&&&/figure&&br&&br&那么,这个数字有什么用呢?&br&&br&我们都知道,每一个像素点,决定它色差的是RGB值,计算加权平均的时候要分别计算;&br&&br&现在我们把GB设为0,只计算R,我们来假设一个点,R值为27,125,22:&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-a0cce72b5d3fff26fa32b_b.jpg& data-rawwidth=&299& data-rawheight=&101& class=&content_image& width=&299&&&/figure&&br&将三个数字乘以加权平均值后,分别为6.5,6.8391&br&&br&而中心点的R值就变为
6.5+6.8391 = 75.5137
记为75;&br&&br&变为:&br&&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-5f07cb16c741947fabbcc2d_b.jpg& data-rawwidth=&299& data-rawheight=&101& class=&content_image& width=&299&&&/figure&&br&就使像素点相对于旁边两点更加柔和了。&br&&br&具体到代码实现上面:&br&&br&循环遍历各个点,归一化之后放入临时数据:&br&&figure&&img src=&https://pic2.zhimg.com/50/v2-59f087bad3d3ea754d46bcb6_b.jpg& data-rawwidth=&832& data-rawheight=&463& class=&origin_image zh-lightbox-thumb& width=&832& data-original=&https://pic2.zhimg.com/50/v2-59f087bad3d3ea754d46bcb6_r.jpg&&&/figure&&br&在x轴方向上进行高斯模糊:&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-bbb98a8cf4cc24ee0f3b87_b.jpg& data-rawwidth=&686& data-rawheight=&739& class=&origin_image zh-lightbox-thumb& width=&686& data-original=&https://pic3.zhimg.com/50/v2-bbb98a8cf4cc24ee0f3b87_r.jpg&&&/figure&&br&y轴同理:&br&&figure&&img src=&https://pic1.zhimg.com/50/v2-eeecffea6ce_b.jpg& data-rawwidth=&614& data-rawheight=&719& class=&origin_image zh-lightbox-thumb& width=&614& data-original=&https://pic1.zhimg.com/50/v2-eeecffea6ce_r.jpg&&&/figure&最后清理内存:&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-a1ca6d762fae47cd8cd0f35_b.jpg& data-rawwidth=&615& data-rawheight=&97& class=&origin_image zh-lightbox-thumb& width=&615& data-original=&https://pic4.zhimg.com/50/v2-a1ca6d762fae47cd8cd0f35_r.jpg&&&/figure&&br&&br&这个是c语言的代码。。不论ios安卓,在原生代码中通过JNI调用就可以了&br&&br&参考地址:&br&&a href=&//link.zhihu.com/?target=http%3A//www.ruanyifeng.com/blog/2012/11/gaussian_blur.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&ruanyifeng.com/blog/201&/span&&span class=&invisible&&2/11/gaussian_blur.html&/span&&span class=&ellipsis&&&/span&&/a&&br&&br&&a href=&//link.zhihu.com/?target=http%3A//www.swageroo.com/wordpress/how-to-program-a-gaussian-blur-without-using-3rd-party-libraries/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&swageroo.com/wordpress/&/span&&span class=&invisible&&how-to-program-a-gaussian-blur-without-using-3rd-party-libraries/&/span&&span class=&ellipsis&&&/span&&/a&&br&&br&&a href=&//link.zhihu.com/?target=http%3A//m.2cto.com/kf/616.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&m.2cto.com/kf/&/span&&span class=&invisible&&6616.html&/span&&span class=&ellipsis&&&/span&&/a&
高斯模糊,听起来很高大上,其实就是一种很基础的数学算法应用,不要被“高斯”迷惑了双眼,它并没有高斯本人那么深不可测。。 高斯模糊之所以叫高斯模糊,是因为它运用了高斯的正态分布的密度函数,我记得是大二时候学的: 其中,μ是x的均值,σ是x的标准…
我大概13年的时候听说有深度学习这回事,然后跟着UFLDL学习了如何推导矩阵导数,练习了一些常见层的推导和代码编写。&br&&br&后来出了caffe,因为当时在外地出差,搬砖之余就看了不少caffe的代码,慢慢地就开始在caffe上写layer,前向cpu、后向cpu、前向gpu、后向gpu,一共4份代码。为了写一个layer,需要学会推导矩阵求导的公式(我研究生时期才学到相关知识),要会写c++,会使用BLAS(一个矩阵运算的库,参数非常繁复,每次都要看半天文档才能写出一个函数),还要会写GPU上运行的CUDA代码。如果是一名编程基础不是很好的研究生,可能到了研二结束都写不出一个layer。&br&&br&还好,当时我是个编程基础还不错的研究生,上手还不算很困难。然而当我刚刚能够熟练写layer的时候,深度学习的各种library如雨后春笋般一个个冒出来了,各个都有自动求导、cpu gpu代码自动转换的功能!这意味着不需要推导公式,不需要会BLAS,不需要会CUDA,只需要写1份前向代码,而其他所有工作都由library自动完成!&br&&br&一开始我并没有在意,后来实现neural style(就是之前很火的Prisma用的方法:&a href=&//link.zhihu.com/?target=http%3A//www.pcpop.com/doc/3/.shtml& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&免费摄影APP“Prisma”将照片变成名画&/a&)的时候我花了2天时间写了个gram layer并完成测试后,赫然看到别人用torch几行就写出来了,顿时目瞪口呆:&br&&br&function gram(input)&br&
local k = input:size(2)&br&
local flat = input:view(k, -1)&br&
local gram = torch.mm(flat, flat:t())&br&
return gram&br&end&br&&br&它简洁而优雅,简洁到根本不需要测试就知道它是对的,优雅得像“神说要有光,于是便有了光”。&br&&br&而这是我的代码:&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/happynear/caffe-windows/blob/master/src/caffe/layers/gram_layer.cpp& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&caffe-windows/gram_layer.cpp at master · happynear/caffe-windows · GitHub&/a&&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/happynear/caffe-windows/blob/master/src/caffe/layers/gram_layer.cu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&caffe-windows/gram_layer.cu at master · happynear/caffe-windows · GitHub&/a&&br&两个文件,一个cpu版一个gpu版。理所当然的,我的代码除了我自己根本没人使用。&br&&br&如果不保持学习,就算你在从事尖端的人工智能研究,一样说淘汰就淘汰。不对,其实比传统行业淘汰得更快,传统行业还要看看引入成本,而从一份代码转移到另一份代码最多也就几天时间而已。
我大概13年的时候听说有深度学习这回事,然后跟着UFLDL学习了如何推导矩阵导数,练习了一些常见层的推导和代码编写。 后来出了caffe,因为当时在外地出差,搬砖之余就看了不少caffe的代码,慢慢地就开始在caffe上写layer,前向cpu、后向cpu、前向gpu、后向g…
&b&这是个很长的故事,讲述的是一名电竞玩家转行文字编辑后的程序历程与开发感悟。&/b&&br&&br&&b&&b&-----------------&/b&&/b&&br&&b&目录&/b&&br&&b&-----------------&br&&/b&&ul&&li&&b&序&/b&&/li&&li&&b&引言(一)&/b&&/li&&li&&b&引言(二)&/b&&/li&&li&&b&一,奇葩的转行&/b&&/li&&li&&b&二,第1个电商项目&/b&&/li&&li&&b&三,一个阶段小结&/b&&/li&&li&&b&四,第2个电商项目。&/b&&/li&&li&&b&五,第3个电商项目(上)&/b&&/li&&li&&b&六,第3个电商项目(下)&/b&&/li&&li&&b&七,第4个电商项目&/b&&/li&&li&&b&八,前端开发者快速升级通关的一些个人经验总结&/b&&/li&&li&&b&九,谈谈互联网项目环境对于前端开发者向高阶晋级的影响&/b&&/li&&li&&b&十,个人职业发展的超级野路子——准职业选手转编辑再转php开发再转前端开发&/b&&/li&&li&&b&十一,个人素养与coding(一)——我是如何反复“打怪”强化“代码素养”的&/b&&/li&&li&&b&十二,个人素养与coding(二)——电竞/编辑经历对开发基本功素养的影响&/b&&/li&&li&&b&十三,个人素养与coding(三)——开发者的战术素养和程序的正与邪,开发者的道不同不相为谋&/b&&/li&&li&&b&十四,个人素养与coding(四)——开发者的战略素养对职场嗅觉的影响&/b&&/li&&li&&b&&b&后记:第4个电商项目——分裂,生存,可能还有崛起。&/b&&br&&/b&&/li&&/ul&&br&&b&&b&======================&/b&&br&这里是序。&br&&/b&&b&&b&======================&/b&&/b&&br&&br&&b&这是一篇长文。&/b&&br&&b&&br&任何一篇长文或专题,都是应该有一个序。&/b&&b&这是做为一个合格的媒体编辑/记者非常重要的技能点,要反反复复地训练。我曾经训练过很多次,但时间已然有些久远,已经好久没有动笔写这样的序,借这个机会,&/b&&b&让我再次尝试做好一名编辑该做的事情。&/b&&br&&br&这篇文章主要是对我个人这两三年从事前端开发以来的“升级打怪”经历的回顾和总结,进而来回复题主对于“&b&前端开发工程师&/b&”这一职业存在怎样的发展空间,而它进入高阶之后需要具备怎样的能力以及这些技能或知识可以从哪些地方、项目或企业中获取得到的,等前端coder职业发展上存在疑惑的问题,来发表一些我的个人见解。&br&&br&然而,我是没权力也没有义务告诉任何一个人Ta未来的路该怎么走,但却可以告诉你我是如何走的,而且我的路子是很野的,真的很野,对于很多大咖来说,绝对不能说是成功的,但对于没有机会进入一流互联网项目历练的大多数程序开发从业者而言,或许我的经历会有那么一点点借鉴的意义。&br&&br&其实我曾想过,是不是要把自己这个跳跃性如此之大的从业经历写下来,是持有怀疑态度的。曾经某猎头在把我推荐给BAT某家时,建议我不要把媒体编辑的经历做太详细的描述或直接去掉,而我确实也用一些编辑手段弱化了那段经历,还是将它放在简历里面。我觉得,这不是什么问题,写文字一直是我的兴趣,并且曾经是我的谋生手段,而且还做得不算太差,只是和程序开发的关联性少了一些。&br&&br&当然了,是获得了电话面试的机会,但第一轮就被KO了,那只是1年多以前事情,但3个月等于1年的电商开发节奏,现在我已经忘记了当时的情形,只记得那个电话来到的时候我刚刚通宵完成一个项目的公关,那会儿脑子是一塌糊涂的。&br&&br&当然,那时我的能力应该达不到人家的要求,但如果现在还有从来一次的机会,我觉得自己应该有能力拿下这样的offer,但暂时没有这个必要。&br&&br&请别误会,并不是说BAT级别的offer对我没有吸引力,而是对于现阶段的我而言,暂时不能为了这样的机会离开现有的项目和团队,而且现在的项目可以让我做擅长的和感兴趣的事情,并基本都能够按照自己的意志去落实下去,而大公司一般只能是做螺丝钉,不能有太多个人意志的,而且好的机会已然被老人们占据了,只是为了去镀金而去当别人的打手或救火队员,这显然是不理性的。&br&&br&另一方面,我其实发现了程序开发者要想快速成长,不一定非要进入BAT或一线的互联网企业中进行历练,创业项目一样可以快速成长,只要你把握好机遇和机会。请相信我,这是绝对是可行的,这就是我想把自己的经历写下来的原因。&br&&br&ok,在开始之前,我觉得预先告诉各位看客,作为一个由平面媒体编辑/记者转行做互联网开发的Coder,本人的码字功底还是不错的,因此篇幅会很长,很长,很长。&br&&br&如果你确实不感兴趣,建议不用浪费时间,聊技术或开发理念终归是有些枯燥的,也可能存在我写得不够清楚而让你看不明白的地方。不过,如果你真的对一名先是由编辑大跨行转php开发,再由php转前端切图,然后是如何用2年时间从月薪8K涨到月薪35K的职业经历感兴趣的话,那就一直往下看。&br&&br&此外,如果这篇文章有幸被某个单位相中,想转载的话,那么该给这篇文章起一个怎样的标题,我就不再代劳了,标题党的功力已经退化得差不多了。还有,我是知道有不少错别字的,但已经逃离媒体行业很久,好不容易不再为错别字太多而担心稿费被扣,那么我真的不想再为这个问题而烦恼&b&。&/b&这不再是我的职责,而是你的。不砸别人的饭碗,这是做人的本分,不是吗?&br&&br&当然,我的版权意识是比较浓的,毕竟咱也做了好多年的写手、编辑、记者。我的意思——转载可以,但记得署名,只要署名(知乎的名字就可以了),永久免费。但对于不署名的,我保留追究的权利,并至少按1000字/千元(RMB)的稿费标准收取稿费。不要觉得贵,这是我当年做写手的后期可以拿到的最高稿费标准,也就是我认为我的文字值这个价,请按此执行,不谢。&br&&br&&b&再劝一次,篇幅真的很长。&/b&&br&&br&&br&=======&b&引言1&/b&=======&br&&br&一夜之间来了这么多赞,倍感欣慰。&br&&br&正好今天我们部门要搬家,正好没有发版需求和特紧急的开发任务。我打算偷懒让人帮我打理桌面,哈哈,我好抽时间,继续补充一些关于前端开发或程序开发方面的想法,希望把这个话题扩大,让更多人来关注和讨论,期待真正的前端大牛来分享职业发展的经历,会有人需要的。&br&&br&顺便说一声,我还是想求赞的。这不违法吧?&br&&br&嗯,先让我回想一下,为啥这个题目会让我愿意投入这么多精力来码字,愿意出来现身说法?&br&&br&我觉得,这肯定是一个好问题。题主想要在职业选择迷茫期获得前辈提供的经验,而决定是否要继续走前端开发这条路线。事实上,这个问题具有普遍性意义。不管是在校学生,还是工作了,但依然对前端这个工种到底有啥可玩的,它能发展到哪个位置,前端能出技术总监或CTO吗?&br&&br&男怕入错行,女怕嫁错郎。因此,任何的回复都会对题主或关注这个话题的人的职业决策带来影响。因此,我才会对意识流的高票答案用了一些刻薄的语言来回复,并不想卖弄文字技巧,先说声抱歉,但我是故意。&br&&br&职业路径选择,是一个严肃的话题。&br&&br&补充在最后,是关于个人对程序修养的看法或理解。为啥说这个?这和前端开发或各种程序员的职业发展有啥niao关系吗?我认为是有关系的,而且很大,约往高处,关系越明显。可以这么说,个人的修养好坏在很大程度上会决定一个人的职业发展高度,写代码也是一样的。这似乎很哲理化,但我的观念就是这样的。&br&&br&当然,也是个人的观点,你可以不用同意,甚至觉得我在扮高调,放屁。但我希望你回得有理有据,咱们用文字约战。&br&&br&==========引言2===========&br&&br&暂时没有看到让人满意的回复,忍不住回复。&br&&br&先对题主说:这个问题其实有很多类似的提问了,这里有一个集合前端开发知识的整理文章,&a href=&http://www.zhihu.com/question/& class=&internal&&知乎上,前端开发领域有哪些值得推荐的问答? - JavaScript&/a&,在里面可以找到很多你赶兴趣的问题与答案。&br&&br&开始之前,我要对于目前的高票答案进行吐槽。&br&&br&高票答案说的确实是有点点道理的,但对于从事前端并陷入迷茫的提问人来说,绝对是然并mei啥卵yong的。不知为何大家给高票,如果只是因为答主用了一个新鲜的说辞,而大家觉得有点意思就顺手点了个赞,那么,我认为这对于知乎的严肃性是一种伤害,当然对于知乎的娱乐化则是一种推动。也可能,大家更喜欢意识流的答案,抑或是,我太严肃了。&br&&br&好吧。我尝试用严肃又有点轻松文字表达方式来回答题主的疑惑。到底前端的路可以怎么走?&br&&br&&b&纯属个人路线,仅供参考。如有雷同,请勿代入。&/b&&br&&br&&b&==========================&/b&&br&&b&一,奇葩的转行。&/b&&br&&b&==========================&/b&&br&先var身份。&br&&br&首先,前端一枚。30++++了,算是老猿吧,年纪不小了。至今没啥拿的出手成绩,就喜欢coding,不谈天荒地老,只希望能写到写不动。&br&&br&其实,我也不知道自己的水平在什么段位,年初拿到了两个一线互联网的offer,被定位在相当于阿里P6/P7样子,也不知道怎么评的,自己觉得最多P5的水准,自感能力有限和性格不适合大公司,主要是被现在领导忽悠说那些大公司政治斗争非常厉害的,我又特担心自己EQ值太低,经不起考验被扫地出门而颜面无存也就放弃了,所以还是一起做电商创业项目比较实在,薪水别太离谱,有感兴趣的活干,说话分量也有那么一点,关键是上班能自由一点点,其实也挺好的。&br&&br&当然,不是本人逼格有多高,有些大企业还是比较向往,比如企鹅厂比如狼厂,但是人家看到我这种奇葩的半路出家的野路子和尚,就连HR初期的筛选都过不了,更别说去面谈做题什么的了。哎,说起来全是泪,伤心得一塌糊涂。不说这个,还是说开发经历吧。&br&&br&在开发人员里面,我的经历应该算是比较奇葩的。怎么个奇葩法呢?&br&&br&首先,做过几年的媒体编辑,对的,是平煤(对文字要求严格,错别字个数有严格限制的),客串过记者(采访过不少上市公司的总裁,如果说互联网的话,最牛逼的是现在京东的4个总裁之一,辛弃疾的后裔,如果他还记得我的话...),曾经写过不少IT媒体的专栏,比如电脑报、电脑商情报、电脑爱好者之类的媒体,后来看到IT媒体日薄西山,就半路出家。当然,不是去少林寺做和尚,只是转行做了另一种和尚——程序猿。&br&&br&嗯,跳跃似乎有点大,好多以前的同事不忍直视,其实自我感觉还好,因为业余就爱好博客,经常玩弄各种php开源博客系统,纯属自娱自乐,虽然没有参加过任何技术培训班(其实是因为写稿的真没几个钱可以用来交学费,都挺贵的),不过不管怎样,经过一通自我学习和努力,总算混进程序开发这一行当。&br&&br&现在每天就是T恤+牛仔+拖鞋+电脑背包,非常标准的coder。所以说,曾经是个文艺青年的我,在coder这个队伍里面,自我感觉文字控制能力还算是不错的,也不知道算不算个开发技能点?&br&&br&&b&==========================&/b&&br&&b&二,第1个电商项目。&/b&&br&&b&==========================&/b&&br&当然,奇葩的转型,那么开发的经历也就比较崎岖了。&br&&br&先干了一段时间的php+前端混合开发的外包,就是那种用开源项目套页面做简单功能的二次开发类型项目,触摸最多的如wordpress、phpcms、discuz!,drupal之类的,框架也玩弄了thinkphp、CI,不过做外包的开发累死累活也没几个钱,技术也不会有太明显提高。&br&&br&后来机缘巧合吧,前前前东家要做个电商交易平台,一时半会找到合适的负责人,感觉我还看得过去就被赶鸭子上轿转做了项目主管,负责整个项目基础设施建设,其实就是招人和分配任务等,不过干得最出色就是切图和切图,虽然当时开发方式还属于未开化的刀耕火种,于是乎将自己定位成前端是比较靠谱,而php的活就兼顾一点是一点。&br&&br&还好,虽然技术比较烂,但是那个项目发展得比较顺利,拿到了A轮(号称3000W美金,水分可能比较大,不过那也是两三年前的事情了,按互联网的3个月=1年的节奏,感觉真的好遥远),有钱之后引入了一批更牛逼的开发人员(主要是前端和php),虽然是我的手下,但那波人能力在当时来看绝对是很强,我也从来没敢把人当手下,甚至很多问题都得向人家请教,技术不行就要虚心请教,这没什么好害羞的。&br&&br&人家确实也比较牛逼,带来一些先进的前端开发理念,比如前端构建,前端MVVM,纯静态html+restful api构建web网站的开发方式。这些前端开发理念在2012年-13年那会儿绝对算是非常先进的玩意,那时nodejs还未成熟,而grunt也才出来不久,fis可能还在萌芽阶段,而各大互联网公司对于nodejs也只是内部尝试探索。&br&&br&后来,随着项目发展,前端的需求越来越复杂,需要尝试MVVM、SPA的前端开发技术了,而我作为当时项目的前端负责人,也需要对前端代码做了重构才能适应项目的发展要求,就是做类似这样的事情—— &br&&br&&a href=&http://www.zhihu.com/question/& class=&internal&&如何将一个已经上线的项目前端部分平滑过渡至组件化和工程化? - 前端开发&/a&&br&&br&这是我做的第一个的大规模的前端项目重构,当时的技术总监评估给到我的时间是10天,但我拖到了20天才基本完成,基本天天9-10的节奏。从现在的角度看,绝对是一次失败的重构经历。但是,个人从其中获得了很多有价值的经验,让我有机会尝试了许多新的前端技术,包括:&br&&br&1,构建工具使用gulp,那时才刚出来不久,之所以选择它也就是图}

我要回帖

更多关于 我想买个手机黑卡 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信