为什么最高剑网3输出最高的职业我的绯红才21780(没

全英文包装,侧边写的专供出口_百度知道
全英文包装,侧边写的专供出口
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
我有更好的答案
包装指外箱吧正面叫主麦, 侧边的叫侧麦side markC/No: 1-G.W.N.W.CUFT
为您推荐:
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。壮哉我大鬼泣 幻影39秒60再战机械王座 _ 地下城与勇士 _ 多玩DNF专区
壮哉我大鬼泣 幻影39秒60再战机械王座
11:43:32 条 来源:多玩饭盒视频机器人 作者:隔壁家老王 ]
BGM:鬼泣4插曲。预判的两次及格。感觉这预判实际输出已经快到极限了【作者:幻影】
DNF美图人品
DNF职业资讯
DNF职业资讯
DNF职业资讯
DNF职业资讯变频器为什么能节能?_百度知道
变频器为什么能节能?
我有更好的答案
节能最明显的是风机水泵,因风机水泵的消耗功率与转速的立方成正比,当外界用风/水量不高时,使用变频会自动将转速降低,则节能效果明显。其他行业的节能原理均是通过在不需要全速运行时调低电机转速来实现节能。
来自:百度知道
电脑装机/选购
变频不是到处可以省电,有不少场合用变频并不一定能省电。 作为电子电路,变频器本身也要耗电(约额定功率的3-5%)。一台1.5匹的空调自身耗电算下来也有20-30W,相当于一盏长明灯. 变频器在工频下运行,具有节电功能,是事实。但是他的前提条件是:第一,大功率并且为风机/泵类负载;第二,装置本身具有节电功能(软件支持);第三,长期连续运行。这是体现节电效果的三个条件。除此之外,无所谓节不节电,没有什么意义。如果不加前提条件的说变频器工频运行节能,就是夸大或是商业炒作。知道了原委,你会巧妙的利用他为你服务。一定要注意使用场合和使用条件才好正确应用,否则就是盲从、轻信而“受骗上当”。
本回答被提问者采纳
变频器可以省电这是不可磨灭的事实,在某些情况下可以节电40%以上,但是某些情况还会比不接变频器浪费! 变频器是通过轻负载降压实现节能的,拖动转距负载由于转速没有多大变化,即便是降低电压,也不会很多,所以节能很微弱,但是用在风机环境就不同了,当需要较小的风量时刻,电机会降低速度,我们知道风机的耗能跟转速的1.7次方成正比,所以电机的转距会急剧下降,节能效果明显。如果我们用在油井上,就会因为在返程使用制动电阻白白浪费很多电能反而更废电。 当然,如果环境要求必须调速,变频器节能效果还是比较明显的。不调速的场合变频器不会省电,只能改善功率因数。 1、如果两个一模一样的电机都工作在50HZ的工频状态下,一个使用变频器,一个没有,同时转速和扭矩都在电机的额定状态下,那么变频器还能省电吗?能省多少呢? 答:对于这种情况,变频器只能改善功率因数,并不能节省电力。 2、如果这两个电机的扭矩没有达到电机的额定扭矩状态下工作(频率,转速还是一样50HZ),有变频器的那个能省多少电? 答:如果使用了自动节能运行,这个时刻变频器能降压运行,可以节省部分电能,但是节电不明显。 3、同样的条件,空载状态下能省多少,这三种状态下哪个省的更多? 答:拖动型负载空载状态也节省不了多大的电能。
我曾经做过一个实验,用功率变送器测量电动机的输入功率,负载为推进器。在相同情况下,当给电动机直接供电时,即输入频率为50hz,功率变送器输出3.0v;而使用变频器mm440将电机输入频率调整到50hz,功率变送器输出2.5v。可以看出,变频器有时候是节能的。
其他2条回答
为您推荐:
其他类似问题
您可能关注的内容
变频器的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&figure&&img src=&https://pic2.zhimg.com/v2-1a1fbdde35cf5adc3419abc27df715bf_b.jpg& data-rawwidth=&910& data-rawheight=&504& class=&origin_image zh-lightbox-thumb& width=&910& data-original=&https://pic2.zhimg.com/v2-1a1fbdde35cf5adc3419abc27df715bf_r.jpg&&&/figure&&p&还记得上次收到过一条可爱的读者留言:“每次在朋友圈发照片都想让人夸我漂亮,可为什么大家都只说我可爱??哭唧唧...”&/p&&p&&br&&/p&&p&这样一说还真是,有很多女生就会让我觉得很可爱,而“不够漂亮”。&/p&&p&其实也因为&b&我们对一个人或一件事情的首选形容词,往往是给你最大印象的那一种。&/b&所以当可爱值大于漂亮值的时候,第一反应就会是可爱,而不是漂亮。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-8d047e72f90c9c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&281& data-thumbnail=&https://pic4.zhimg.com/v2-8d047e72f90c9c_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic4.zhimg.com/v2-8d047e72f90c9c_r.jpg&&&/figure&&p&但“可爱的女生想让别人夸漂亮”这个事情,其实并不会像素人改造一样简单,因为素人改造的主要目的是——&b&由丑变美。&/b&美丑的对比太明显,而可爱转型漂亮更像是&b&一种美到另一种美的转变&/b&。&/p&&p&&br&&/p&&p&从可爱转型到到漂亮,其间的微妙之处,&b&就在于既不破坏原本可爱的美感,又能通过一些小改变提升美貌度。&/b&&/p&&p&&br&&/p&&p&(原文发于公众号:一只马丁靴)&/p&&p&▼&/p&&p&&br&&/p&&p&&b&可爱和漂亮之间隔了什么?&/b&&/p&&p&&br&&/p&&p&风格的变化其实也要结合自己的硬件基础来,本身一张赵丽颖式的可爱脸的基础,再怎么转型,也不可能成为范冰冰风格的漂亮脸。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-d59d28517edb88ab8f2add1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&499& data-rawheight=&368& class=&origin_image zh-lightbox-thumb& width=&499& data-original=&https://pic3.zhimg.com/v2-d59d28517edb88ab8f2add1_r.jpg&&&/figure&&p&&br&&/p&&p&&b&更聪明的转型过程,&/b&不是抹去自己的可爱值,而是在可爱的基础上,增加自己的漂亮值。让漂亮值去和可爱值平分秋色,&b&模糊自己身上好看和漂亮的界限&/b&。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-dc58e33fe7a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&650& data-rawheight=&488& class=&origin_image zh-lightbox-thumb& width=&650& data-original=&https://pic3.zhimg.com/v2-dc58e33fe7a_r.jpg&&&/figure&&p&&br&&/p&&p&&b&▎圆线条与骨骼感&/b&&/p&&p&&br&&/p&&p&从外观上来说,让人觉得可爱的,往往是毛茸茸、圆乎乎的外表,特别有亲和力,没有攻击性。▼&/p&&figure&&img src=&https://pic4.zhimg.com/v2-091d0fce64_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&498& data-rawheight=&258& data-thumbnail=&https://pic4.zhimg.com/v2-091d0fce64_b.jpg& class=&origin_image zh-lightbox-thumb& width=&498& data-original=&https://pic4.zhimg.com/v2-091d0fce64_r.jpg&&&/figure&&p&放在脸蛋上来说,圆线条也会给人亲和感,尤其是圆眼睛、圆脸蛋。▼&/p&&figure&&img src=&https://pic4.zhimg.com/v2-6cde227c41a348c1c3602efb08bd80f8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&315& data-rawheight=&417& data-thumbnail=&https://pic4.zhimg.com/v2-6cde227c41a348c1c3602efb08bd80f8_b.jpg& class=&content_image& width=&315&&&/figure&&p&尖线条和直线条比较多的脸型,就会显得有距离感。&/p&&p&&br&&/p&&p&有的人精致,有的人显凶,很关键的两点就是脸蛋的骨骼感和中庭的长度,如果骨骼感强中庭偏长,又是一脸的尖线条,那显凶的概率会更大。▼&/p&&figure&&img src=&https://pic3.zhimg.com/v2-69cb6e3c531b8e481f518cce3fd8c3fb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&452& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/v2-69cb6e3c531b8e481f518cce3fd8c3fb_r.jpg&&&/figure&&p&&br&&/p&&p&&b&▎小巧与大气&/b&&/p&&p&&br&&/p&&p&五官上的组合,有的人更小巧,有的人更舒展。眉眼、比例和脸型的影响因素特别大。▼&/p&&figure&&img src=&https://pic1.zhimg.com/v2-de02348bb82ddd9bb0ea2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&673& data-rawheight=&446& class=&origin_image zh-lightbox-thumb& width=&673& data-original=&https://pic1.zhimg.com/v2-de02348bb82ddd9bb0ea2_r.jpg&&&/figure&&p&如果五官中有一项,或是脸型量感比较大,就更容易有成熟和知性的感觉。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-d90b140fe8e4d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&895& data-rawheight=&587& class=&origin_image zh-lightbox-thumb& width=&895& data-original=&https://pic2.zhimg.com/v2-d90b140fe8e4d_r.jpg&&&/figure&&p&&br&&/p&&p&&b&▎神态与气质&/b&&/p&&p&&br&&/p&&p&从气质这个角度来说,上次刚写过动态美和静态美,可爱和漂亮,也类似两种不同的气场。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-317dbd586ca5fdbca66c7b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1200& data-rawheight=&739& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&https://pic2.zhimg.com/v2-317dbd586ca5fdbca66c7b_r.jpg&&&/figure&&p&如果总是有人夸你可爱,而不是漂亮,可能因为你给人的整体感觉是偏灵动的。在现实中,我们对一个人的评价一定是gif,而不是jpg,平时里的个性和言行都是非常重要的形象因素。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-47fb9bfcea3db21780c4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&480& data-rawheight=&270& data-thumbnail=&https://pic1.zhimg.com/v2-47fb9bfcea3db21780c4_b.jpg& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&https://pic1.zhimg.com/v2-47fb9bfcea3db21780c4_r.jpg&&&/figure&&p&如果不想被人夸可爱,可以适当收敛一下自己狂放的笑容,举手投足幅度更小,目光神色更淡然笃定。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-3e9e0f17b4c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&245& data-rawheight=&235& data-thumbnail=&https://pic3.zhimg.com/v2-3e9e0f17b4c_b.jpg& class=&content_image& width=&245&&&/figure&&p&(这张龙妈超美有没有!&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&从可爱到漂亮,她们都用了这几招&/b&&/p&&p&&br&&/p&&p&说起从可爱到漂亮,很多女星都慢慢地实现了这样的改变,增加了自己的漂亮值,变得更精致,更有女人味。▼&/p&&figure&&img src=&https://pic4.zhimg.com/v2-5f077f926ca87466faa5b93c30e8b795_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1127& data-rawheight=&387& class=&origin_image zh-lightbox-thumb& width=&1127& data-original=&https://pic4.zhimg.com/v2-5f077f926ca87466faa5b93c30e8b795_r.jpg&&&/figure&&p&当漂亮和可爱平分秋色,甚至超过可爱值的时候,可爱反而成了她们在漂亮中的一个独特优势。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-8a0db4b08aed_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1699& data-rawheight=&579& class=&origin_image zh-lightbox-thumb& width=&1699& data-original=&https://pic3.zhimg.com/v2-8a0db4b08aed_r.jpg&&&/figure&&p&那我们普通姑娘可以从她们身上学到哪些「从可爱转型漂亮」的小技巧呢?&/p&&p&&br&&/p&&p&&b&▎发型与发色&/b&&/p&&p&&br&&/p&&p&发型这个小改变可能是门槛最低的一个,可爱在一定程度上意味着少女感,&b&而漂亮在一定程度上意味着女性感。&/b&&/p&&p&&br&&/p&&p&想要增加女性感的时候可以试试微卷发。黑长直的发型显得不加修饰,增加头发的蓬松感,首先就摆明了这是一个愿意为漂亮花时间的行为。▼&/p&&figure&&img src=&https://pic4.zhimg.com/v2-736c19e2dc4cc11b997c2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&960& data-rawheight=&840& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&https://pic4.zhimg.com/v2-736c19e2dc4cc11b997c2_r.jpg&&&/figure&&p&石原里美的额头偏窄,头顶略尖,保持头顶两侧的蓬松,不仅能修饰头型,还可以显得整个人更精致洋气,一看就是为自己的形象认真打理过的样子。▼&/p&&figure&&img src=&https://pic1.zhimg.com/v2-f625bf60f2db5e2af16777_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&861& data-rawheight=&558& class=&origin_image zh-lightbox-thumb& width=&861& data-original=&https://pic1.zhimg.com/v2-f625bf60f2db5e2af16777_r.jpg&&&/figure&&p&不过如果只想要带一点微卷的效果,那还是不太建议烫发,理发店流水线出来的卷发很容易显老,可以试试之前写过的不烫发也不用卷发棒的&u&&b&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzAxMDc0MDQ0Ng%3D%3D%26mid%3D%26idx%3D1%26sn%3Dbc8a3b610%26chksm%3D836ae292b41d6bf492eecea7fe66ab3abffscene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&蓬松大法&/a&&/b&&/u&,我自己的每个发型都是这样做出来的。&/p&&p&&br&&/p&&p&同时也可以试试染一个&b&栗棕色&/b&,这个发色颜色很深,但又不会像黑发那样沉闷,在阳光下也不会太黄太夸张。▼&/p&&figure&&img src=&https://pic2.zhimg.com/v2-fc9cd4c7f0ea_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&802& data-rawheight=&549& class=&origin_image zh-lightbox-thumb& width=&802& data-original=&https://pic2.zhimg.com/v2-fc9cd4c7f0ea_r.jpg&&&/figure&&p&不过染发也是有利弊的,需要护理和搭配妆容,如果自己并没有下定决心要变漂亮,三天打鱼两天晒网,那还可以再考虑一下。&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&▎圆脸其实不需要婴儿肥&/b&&/p&&p&&br&&/p&&p&很多可爱型的女生可能会有脸很圆很肉的特征。想要走漂亮路线的话,只要脸圆就够了,再有婴儿肥反而会显得脸大脸宽,甚至有点梨形脸既视感。▼&/p&&figure&&img src=&https://pic4.zhimg.com/v2-7982bfe2baaf9c8d33d4a4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&653& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&653& data-original=&https://pic4.zhimg.com/v2-7982bfe2baaf9c8d33d4a4_r.jpg&&&/figure&&p&&b&消去婴儿肥,这样脸上的线条才会恰到好处。&/b&就算在有笑容的时候,也不会显得肉感太多余。&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&▎拉长眉眼&/b&&/p&&p&&br&&/p&&p&&b&眉眼妆容是增加漂亮值和精致度的关键所在。&/b&在妆容上,可爱型女生可以首先从眉形入手,让眉眼更舒展,可以减少一点稚嫩感。▼&/p&&figure&&img src=&https://pic3.zhimg.com/v2-1e24b723051fce7dbbdbb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&730& data-rawheight=&463& class=&origin_image zh-lightbox-thumb& width=&730& data-original=&https://pic3.zhimg.com/v2-1e24b723051fce7dbbdbb_r.jpg&&&/figure&&p&眉形上告别粗平眉,&b&选择直眉腰,&/b&带一点眉峰,增加精致度。▼&/p&&figure&&img src=&https://pic1.zhimg.com/v2-0f16c86e8219673fcca19c046f8840f4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1280& data-rawheight=&905& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic1.zhimg.com/v2-0f16c86e8219673fcca19c046f8840f4_r.jpg&&&/figure&&p&眼妆的部分也是同样的道理。利用眼线、眼影、睫毛拉长眼睛的长度,改变五官的紧凑度后,&b&脸也会看起来更小。▼&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-1b8f89bec0_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1196& data-rawheight=&689& class=&origin_image zh-lightbox-thumb& width=&1196& data-original=&https://pic1.zhimg.com/v2-1b8f89bec0_r.jpg&&&/figure&&p&可爱型的女生在上妆时,依然建议保持清淡:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-0aac6c1aceb681d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1073& data-rawheight=&219& class=&origin_image zh-lightbox-thumb& width=&1073& data-original=&https://pic2.zhimg.com/v2-0aac6c1aceb681d_r.jpg&&&/figure&&p&&br&&/p&&p&&b&▎还有这个细节也很重要&/b&&/p&&p&&br&&/p&&p&虽说发型和妆容是最主要的大方向,但配饰也是一个非常重要的因素。&/p&&p&&br&&/p&&p&我们对待配饰的正确心态应该是这样:它不能让我们从不修边幅变得很精致,但却能让我们&b&从好看变得更好看,精致变得更精致。&/b&&/p&&p&&br&&/p&&p&只要搭配妆容、选对款式,就很容易&b&成为点睛之笔。&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-7a67c5de7d2dd42476d8b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&356& data-rawheight=&200& data-thumbnail=&https://pic3.zhimg.com/v2-7a67c5de7d2dd42476d8b_b.jpg& class=&content_image& width=&356&&&/figure&&p&&br&&/p&&p&之前写过,&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&丁丁:怎样根据脸型特征选耳坠?这一定是你见过的最全攻略&/a&,不论什么脸型的女生,都可以选到合适的款式,还可以戳进去复习一下~&/p&&p&想要修饰大脸圆脸的时候,可以选择视觉存在感更强的耳饰,更显脸小。▼&/p&&figure&&img src=&https://pic3.zhimg.com/v2-ec539c695_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&834& data-rawheight=&572& class=&origin_image zh-lightbox-thumb& width=&834& data-original=&https://pic3.zhimg.com/v2-ec539c695_r.jpg&&&/figure&&p&&br&&/p&&p&在线条上可以和脸型的形状互补:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-50fff042eb05d59e23a09e940c3fc9dd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1280& data-rawheight=&926& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic2.zhimg.com/v2-50fff042eb05d59e23a09e940c3fc9dd_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-9df653fe84512d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&850& data-rawheight=&634& class=&origin_image zh-lightbox-thumb& width=&850& data-original=&https://pic3.zhimg.com/v2-9df653fe84512d_r.jpg&&&/figure&&p&&br&&/p&&p&&b&▎衣着上,平衡感最重要&/b&&/p&&p&&br&&/p&&p&可爱的姑娘除了脸蛋和举止,服饰搭配上的很多关键点也容易增加别人对你可爱的印象。比如服装的元素、款式、色彩等。&/p&&p&&br&&/p&&p&&b&在装饰上,&/b&波点、蕾丝边、荷叶边、蝴蝶结等这一类的元素都有很强的可爱感。▼&/p&&figure&&img src=&https://pic3.zhimg.com/v2-db90a0ee92aaf178fe43e4d0_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&858& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&858& data-original=&https://pic3.zhimg.com/v2-db90a0ee92aaf178fe43e4d0_r.jpg&&&/figure&&p&&b&在款式上,&/b&A字的大下摆、波浪起伏的线条设计,都自带可爱属性。你看,就算是在二次元世界的动漫里,我们单看裙子就能知道哪个是可爱路线,哪个是美人路线。▼&/p&&figure&&img src=&https://pic1.zhimg.com/v2-dd94bfdc817d1b4c97e1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1019& data-rawheight=&776& class=&origin_image zh-lightbox-thumb& width=&1019& data-original=&https://pic1.zhimg.com/v2-dd94bfdc817d1b4c97e1_r.jpg&&&/figure&&p&&b&在色彩上,&/b&除了可爱感很强的粉红色系,明度高、彩度高的颜色都会感觉很活泼跳脱,更有一种动态感,也会让人联想到可爱。▼&/p&&figure&&img src=&https://pic3.zhimg.com/v2-c5c3d3a9907afc2bf337f26_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic3.zhimg.com/v2-c5c3d3a9907afc2bf337f26_r.jpg&&&/figure&&p&如果可爱系的女生想要增加自己的漂亮值,&b&就需要在着装方面更注意平衡感。&/b&&/p&&p&&br&&/p&&p&&b&比如说款式上的平衡,&/b&相比俏皮活泼的短款A字伞裙,更建议选择直线型的小A裙,或者长款的A字裙,都能增加干练和优雅。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-b27c1d0f648a8db527cc12_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&988& data-rawheight=&474& class=&origin_image zh-lightbox-thumb& width=&988& data-original=&https://pic1.zhimg.com/v2-b27c1d0f648a8db527cc12_r.jpg&&&/figure&&p&再比如,选择了女性化的花纹,就不要再选择女性化的款式,让线条看起来更利落。▼&/p&&figure&&img src=&https://pic1.zhimg.com/v2-8bafe8b34abaf4a1d7ae59e7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&658& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic1.zhimg.com/v2-8bafe8b34abaf4a1d7ae59e7_r.jpg&&&/figure&&p&在色彩上,避免鲜明的高饱和度撞色,加入一点灰调或白调,善于运用过渡色。&/p&&p&&br&&/p&&p&同样是黄蓝配色,颜色变得更浅之后,少了几分活力,也多了一份淡雅。▼&/p&&figure&&img src=&https://pic3.zhimg.com/v2-2bdd6c585a484c5f2c11_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1272& data-rawheight=&960& class=&origin_image zh-lightbox-thumb& width=&1272& data-original=&https://pic3.zhimg.com/v2-2bdd6c585a484c5f2c11_r.jpg&&&/figure&&p&更具体的还可以看之前写过的&u&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzAxMDc0MDQ0Ng%3D%3D%26mid%3D%26idx%3D1%26sn%3D1a7d8ba283cae93e512b0%26chksm%3D836aebadb41d62bb61ca0d22d99dafd3c6f61acbf427efc3455bfd%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&相见恨晚的色彩搭配指南,5 招练就配色达人!&/a&&/u&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-9caf923a58a83e09fbfd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&937& data-rawheight=&59& class=&origin_image zh-lightbox-thumb& width=&937& data-original=&https://pic1.zhimg.com/v2-9caf923a58a83e09fbfd_r.jpg&&&/figure&&p&老读者一定还记得,在风格的把握上,我们的五官和身形决定了80%的冷暖,另外的20%会受到性格和表情的影响。&/p&&p&&br&&/p&&p&不过可爱是一种风格,漂亮也是一种风格。&/p&&p&如果目前的你很可爱,也不一定非要转型,可以等步入职场之后,再用这几招用来增强气场,现在也可以趁着年轻多可爱几年!&/p&&figure&&img src=&https://pic3.zhimg.com/v2-be4ce8b0a031a89d40f6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&238& data-thumbnail=&https://pic3.zhimg.com/v2-be4ce8b0a031a89d40f6_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic3.zhimg.com/v2-be4ce8b0a031a89d40f6_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-85afe3c9be_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&941& data-rawheight=&58& class=&origin_image zh-lightbox-thumb& width=&941& data-original=&https://pic3.zhimg.com/v2-85afe3c9be_r.jpg&&&/figure&&p&也许你还爱看这些:&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&丁丁:懒人系列 | 方脸形象手册 All in one&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&丁丁:眉形综合篇!这是一份超全面超详细的眉形攻略&/a&&/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&丁丁:脸大的女生怎么让自己看起来显脸小?&/a&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-8aa9f798c3d6a835b1b35efce6b28d57_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&850& data-rawheight=&667& class=&origin_image zh-lightbox-thumb& width=&850& data-original=&https://pic2.zhimg.com/v2-8aa9f798c3d6a835b1b35efce6b28d57_r.jpg&&&/figure&&p&&/p&
还记得上次收到过一条可爱的读者留言:“每次在朋友圈发照片都想让人夸我漂亮,可为什么大家都只说我可爱??哭唧唧...” 这样一说还真是,有很多女生就会让我觉得很可爱,而“不够漂亮”。其实也因为我们对一个人或一件事情的首选形容词,往往是给你最大印…
&p&1月下旬,&a href=&https://www.zhihu.com/org/a-li-yun-yun-qi-she-qu-48/activities& class=&internal&&阿里云云栖社区&/a& 联合 图灵教育 为大家带来十本技术书籍(人工智能、C++、Python数据科学等)。以下为书籍详情,文末还有福利哦!&/p&&h2&&b&书籍名称:《C++性能优化指南》&/b&&/h2&&figure&&img src=&https://pic4.zhimg.com/v2-afe2af5b9dee77_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic4.zhimg.com/v2-afe2af5b9dee77_r.jpg&&&/figure&&p&&b&内容简介&/b&&/p&&p&本书是一本C++代码优化指南。作者精选了他在近30年编程生涯中zui频繁使用的技术和能够带来zuida性能提升效果的技术,旨在让读者在提升C++程序的同时,思考软件优化之美。书中主要内容有:代码优化的意义和总原则,与优化有关的计算机硬件背景知识,能行分析方法及工具,优化字符串的使用,算法、查找和排序等等。&/p&&h2&&b&书籍名称:《HTTP 2基础教程》&/b&&/h2&&figure&&img src=&https://pic3.zhimg.com/v2-ba253eba15ae42_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic3.zhimg.com/v2-ba253eba15ae42_r.jpg&&&/figure&&p&&b&内容简介&/b&&/p&&p&如今互联网发展日新月异,HTTP/1.1协议已经难以承载日益复杂的网页内容,因此HTTP/2值得尝试。本书介绍了HTTP/2的设计初衷和新特性,对比了在不同网络环境下以及不同浏览器上HTTP/1.1与HTTP/2的性能表现差异,指出了网站迁移到HTTP/2需要注意的问题,并在附录中给出了书中用到的所有资源的列表,方便读者快速上手实践。&/p&&p&本书适合网站开发及运维人员,以及正考虑要实现HTTP/2或者希望了解HTTP/2如何工作的读者。&/p&&h2&&b&书籍名称:《Kafka权威指南》&/b&&/h2&&figure&&img src=&https://pic3.zhimg.com/v2-ea61b5b6fd0fa_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic3.zhimg.com/v2-ea61b5b6fd0fa_r.jpg&&&/figure&&p&&b&内容简介&/b&&/p&&p&本书是关于Kafka的全面教程,主要内容包括:Kafka相对于其他消息队列系统的优点,主要是它如何完美匹配大数据平台开发;详解Kafka内部设计;用Kafka构建应用的zuijia实践;理解在生产中部署Kafka的zuijia方式;如何确保Kafka集群的安全。&/p&&h2&&b&书籍名称:《Python数据科学入门》&/b&&/h2&&figure&&img src=&https://pic1.zhimg.com/v2-0a7e2be9d8a3b00ebca979a4e59cac00_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic1.zhimg.com/v2-0a7e2be9d8a3b00ebca979a4e59cac00_r.jpg&&&/figure&&p&&b&内容简介&/b&&/p&&p&《Python数据科学入门》以Python 语言讲解数据科学基础知识,涵盖了数据采集、清洗、存储、检索、转换、可视化、高级数据分析(网络分析)、统计和机器学习等内容。具体内容包括:数据科学的Python 核心特性,文本数据、数据库、表格形式的数值数据、series 和frame、网络数据的使用,数据的绘制,概率与统计,机器学习。 &/p&&p&《Python数据科学入门》面向研究生和本科生、数据科学教员、刚入门的数据科学专业人员,以及那些想拥有一本参考手册来帮助记住所有Python 函数及参数的开发人员。&/p&&h2&&b&书籍名称:《SQL进阶教程》&/b&&/h2&&figure&&img src=&https://pic1.zhimg.com/v2-dbffe1f09b0a4ba8ccb083c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic1.zhimg.com/v2-dbffe1f09b0a4ba8ccb083c_r.jpg&&&/figure&&p&&b&内容简介&/b&&/p&&p&本书是《SQL基础教程》作者MICK为志在向中级进阶的数据库工程师编写的一本SQL技能提升指南。全书可分为两部分,第一部分介绍了SQL语言不同寻常的使用技巧,带领读者从SQL常见技术,比如CASE表达式、自连接、HAVING子句、外连接、关联子查询、EXISTS……去探索新发现。这部分不仅穿插讲解了这些技巧背后的逻辑和相关知识,而且辅以丰富的示例程序,旨在帮助读者提升编程水平;第二部分着重介绍关系数据库的发展史,把实践与理论结合起来,旨在帮助读者加深对关系数据库和SQL语言的理解。此外,每节末尾均设置有练习题,并在书末提供了解答,方便读者检验自己对书中知识点的掌握程度。&/p&&p&本书适合具有半年以上SQL使用经验、已掌握SQL基础知识和技能、希望提升自己编程水平的读者阅读。&/p&&h2&&b&书籍名称:《精通Git》&/b&&/h2&&figure&&img src=&https://pic3.zhimg.com/v2-cccf6f958f336f341432_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic3.zhimg.com/v2-cccf6f958f336f341432_r.jpg&&&/figure&&p&&b&内容简介&/b&&/p&&p&Git仅用了几年时间就一跃成为了几乎一统商业及开源领域的版本控制系统。本书全面介绍Git进行版本管理的基础和进阶知识。全书共10章,内容由浅入深,展现了普通程序员和项目经理如何有效利用Git提高工作效率,掌握分支概念,灵活地将Git用于服务器和分布式工作流,如何将开发项目迁移到Git,以及如何高效利用GitHub。&/p&&h2&&b&书籍名称:《利用Python开源工具分析恶意代码》&/b&&/h2&&figure&&img src=&https://pic3.zhimg.com/v2-e0d611f56_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic3.zhimg.com/v2-e0d611f56_r.jpg&&&/figure&&p&&b&内容简介&/b&&/p&&p&恶意代码分析过程中,重要的是掌握恶意代码的特征,此时需要灵活运用线上服务的快速分析数据和主要恶意代码的数据库。《利用Python开源工具分析恶意代码》从应对入侵事故一线业务人员角度出发,介绍了分析恶意代码时的Python 等众多开源工具的使用方法,也给出了可以迅速应用于实际业务的解决方案。&/p&&h2&&b&书籍名称:《你不知道的JavaScript(下卷)》&/b&&/h2&&figure&&img src=&https://pic2.zhimg.com/v2-fbfc382af66aa329b7e5fd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic2.zhimg.com/v2-fbfc382af66aa329b7e5fd_r.jpg&&&/figure&&p&&b&内容简介&/b&&/p&&p&JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解。本套书直面当前JavaScript开发人员不求甚解的大趋势,深入理解语言内部的机制,全面介绍了JavaScript中常被人误解和忽视的重要知识点。本书是其下卷,主要介绍了JavaScript入门知识和对ES6及未来发展趋势的展望。&/p&&p&本书既适合JavaScript语言初学者了解其精髓,又适合经验丰富的JavaScript开发人员深入学习。&/p&&h2&书籍名称:《人工智能简史》&/h2&&figure&&img src=&https://pic3.zhimg.com/v2-d306c31e2eaeda53c21da_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic3.zhimg.com/v2-d306c31e2eaeda53c21da_r.jpg&&&/figure&&p&&b&内容简介&/b&&/p&&p&本书全面讲述人工智能的发展史,几乎覆盖人工智能学科的所有领域,包括人工智能的起源、自动定理证明、专家系统、神经网络、自然语言处理、遗传算法、深度学习、强化学习、超级智能、哲学问题和未来趋势等,以宏阔的视野和生动的语言,对人工智能进行了全面回顾和深度点评。 &/p&&p&本书作者和书中诸多人物或为师友或相熟相知,除了详实的考证还有有趣的轶事。本书既适合专业人士了解人工智能鲜为人知的历史,也适合对人工智能感兴趣的大众读者作为入门的向导。 &/p&&h2&&b&书籍名称:《修改软件的艺术》&/b&&/h2&&figure&&img src=&https://pic3.zhimg.com/v2-7aafe833ebc0e5e34830a2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic3.zhimg.com/v2-7aafe833ebc0e5e34830a2_r.jpg&&&/figure&&p&&b&内容简介&/b&&/p&&p&《修改软件的艺术 构建易维护代码的9条*佳实践》会帮你降低构建与维护软件的成本。如果你是软件开发者,将学到一套实践方法以构建易修改的代码,因为在应用当中代码经常需要修改。对于和软件开发者合作的管理者来说,本书会向你展示为何引入这9个基本的实践方法,会使你的团队更加有效地交付软件而不至于让软件演变成遗留代码。&/p&&p&&br&&/p&&p&&b&这里是彩蛋:&/b&&/p&&p&10本书作为福利赠送给一直支持云栖君的小伙伴们!&/p&&p&拿书规则:在本文评论中回复以上10本中你最想看的一本书籍名称。&/p&&p&2月5日,我们将从评论中留言以上书籍中最想看的书籍名称的用户, 抽取10名幸运小伙伴免费赠送以上正版书籍一本哦。&/p&&p&&b&更多技术干货敬请关注云栖社区知乎机构号:&a href=&https://www.zhihu.com/org/a-li-yun-yun-qi-she-qu-48& class=&internal&&阿里云云栖社区 - 知乎&/a&&/b&&/p&
1月下旬, 联合 图灵教育 为大家带来十本技术书籍(人工智能、C++、Python数据科学等)。以下为书籍详情,文末还有福利哦!书籍名称:《C++性能优化指南》内容简介本书是一本C++代码优化指南。作者精选了他在近30年编程生涯中zui频繁使用的技…
&figure&&img src=&https://pic3.zhimg.com/v2-dc4d095fd966c0e3566c_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic3.zhimg.com/v2-dc4d095fd966c0e3566c_r.jpg&&&/figure&&p&关于比特币套利交易的文章,坊间一搜一大堆,尤以
为甚。那时交易所间价差相当可观,套利的机会很多,躺着赚钱并非难事。如今,套利区间收窄,留在沙场上的估计只剩下大玩家,想要不费力气躺赢机会渺茫。最近帮朋友牵线寻找币圈量化交易的机会,本欲做个打酱油的中间人,事了拂衣去,安安静静做个三河市微胖界扛把子,谁料还是一时技痒,不小心昨夜搭进去六七个小时。&/p&&p&关于如何做套利交易,我就不赘述,大家可以看这篇文章,有内容有故事:&a href=&https://daily.zhihu.com/story/4831821& class=&internal&&&span class=&invisible&&https://&/span&&span class=&visible&&daily.zhihu.com/story/4&/span&&span class=&invisible&&831821&/span&&span class=&ellipsis&&&/span&&/a&。&/p&&p&本文没有故事,只有技术和产品上的分析。&/p&&p&既然要做可行性分析,那么第一步就是观察交易数据。国内的交易市场虽然在政策要求下清场出局,国外的交易市场还算红火。从 bitfinex,kraken 一路到 bithumb,korbit 等,都提供 rest API,少量提供 websocket 接口。虽然文档欠缺,但这些接口都很简单,上手并不困难。&/p&&p&用 nodejs 小试牛刀后,我决定全面使用 elixir 重写。&/p&&p&这么做有几个原因:&/p&&ol&&li&单就数据抓取来说,需要一些内部的 micro service。比如 bithumb / korbit 的报价是韩元,而其他都是美元。如果用美元统一,那势必要有一个稳定的内部 service 提供这种转换。erlang / OTP 的结构,天然呆萌,阿不,天然松散,各个 GenServer 自成一体,很适合这样的需求。&/li&&li&数据的抓取和数据的处理我想分开来做。在定期从各个交易市场拿到数据后,我们可以使用 pubsub 结构把数据 publish 出去,然后让各个子系统去 subscribe —— 找交易机会的去算交易机会,做持久化的去写数据库,以后想到什么新的消费数据的姿势,随时可加入新的 subscriber。如果用别的语言,少不了再引入 ZeroMQ 这样的依赖(引入复杂性和其他问题)。erlang / OTP 有 process group,适合 pubsub,而 phoenix_pubsub 对此已精巧封装,开箱即用。&/li&&li&erlang / OTP 的容错和并发/并行能力能让效率大大提高。&/li&&li&because I can - Insider Man (2006)。&/li&&/ol&&p&数据抓取出来后,可算出一些随着时间变化的,理论上的套利空间(真正做是另一回事),但数据本身太抽象,不足以打动自己,打动别人。比如说,过去 1 小时有 10 个大于 0.5% 的套利机会(扣除双边的手续费也就剩不到 0.1%),这样的机会究竟可行性如何,长得什么样,无从得知。&/p&&p&广东十大杰出青年方世玉他妈苗翠花说:&b&行走江湖,最重要的就是一个「颜」字&/b&。干瘪的数字,枯燥的理论如同一具具骷髅,即便切中要害,也很难在产品汪和商务喵身上找到共鸣。所谓 &b&无图不丈夫&/b&,不搞点 UI,整些可视化,金矿也会被掩埋在黄土之下。《奋斗》里陆涛他爹怕他对三十万元这样一个数字没有概念,叫人取出现银,装一大纸袋里给他,这就是可视化。&/p&&p&但构建一套扩展性好的可视化 UI 岂非一日之功?你好不容易整个 chart 支持 line / bar / area 和 multiple series,做着做着可能又要在两个 series 之间做四则运算,之后可能需要更加复杂的操作。本来涂脂抹粉装个大家闺秀就是个权宜之计,结果一入前端深似海,从此变更永缠身。所以,不到万不得已,别自己做可视化。我试过几个比特币套利交易的开源代码,UI 相当一般,扩展性很差,吃力不讨好。&/p&&p&不自己做,那谁来做?&/p&&p&平日里我工作,接触多的是 datadog。datadog 是做性能监控的,我们只管打点,存储和可视化交给 datadog。虽然它和量化交易八竿子打不着,但如果我们却可以把这颜值担当交给 datadog 来试试看。&/p&&p&打点很简单,写个 subscriber,监听爬下来的数据,然后这么写入 datadog:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&abt.xchg.btc.bid:4182|h|#bitfinex
abt.xchg.dsh.bid:344.38|h|#bitfinex
abt.xchg.eth.bid:301.93|h|#bitfinex
abt.xchg.xmr.bid:97.762|h|#bitfinex
abt.xchg.xrp.bid:0.2023|h|#bitfinex
abt.xchg.zec.bid:299.22|h|#bitfinex
abt.xchg.btc.bid:80739|h|#bithumb
abt.xchg.dsh.bid:330.56|h|#bithumb
abt.xchg.eth.bid:288.8|h|#bithumb
abt.xchg.xmr.bid:93.63|h|#bithumb
abt.xchg.xrp.bid:0.4822|h|#bithumb
&/code&&/pre&&/div&&p&我们为每个币种提供一个 metrics,以交易所的名字做 tag,一个 batch 把同一时间获取的数据 push 到 datadog。这样,我们就可以可视化出这样的结果:&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-cdc1eb9099_b.jpg& data-caption=&& data-rawwidth=&1928& data-rawheight=&680& class=&origin_image zh-lightbox-thumb& width=&1928& data-original=&https://pic2.zhimg.com/v2-cdc1eb9099_r.jpg&&&/figure&&p&&br&&/p&&p&很明显,就比特币来说,bitfinex 和 bithumb 间有足够的套利机会:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-6db760fcdbe750_b.jpg& data-caption=&& data-rawwidth=&1924& data-rawheight=&680& class=&origin_image zh-lightbox-thumb& width=&1924& data-original=&https://pic1.zhimg.com/v2-6db760fcdbe750_r.jpg&&&/figure&&p&&br&&/p&&p&这个图是将两个 series 相减,其差异换算成百分比得到的,所以纵轴是百分之几。datadog 深耕于 APM 市场多年,对此在 UI 上已有支持,我们直接可以编辑操作,暖不暖心?&/p&&figure&&img src=&https://pic2.zhimg.com/v2-49b776cdbfe584d1311cb05_b.jpg& data-caption=&& data-rawwidth=&1954& data-rawheight=&1594& class=&origin_image zh-lightbox-thumb& width=&1954& data-original=&https://pic2.zhimg.com/v2-49b776cdbfe584d1311cb05_r.jpg&&&/figure&&p&&br&&/p&&p&《让子弹飞》里张麻子问:什么 TMD 是以图服人?方世玉他妈的亲家公答:我这就是以图服人。现在套利的区间一路了然。我们看所有币种的机会:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-d52e1cc7d5fbe_b.jpg& data-caption=&& data-rawwidth=&3728& data-rawheight=&1972& class=&origin_image zh-lightbox-thumb& width=&3728& data-original=&https://pic2.zhimg.com/v2-d52e1cc7d5fbe_r.jpg&&&/figure&&p&&br&&/p&&p&机会有,但有没有可能兑现,是另一回事,不在本文讨论之列。而且目前只有少量的数据,还不充分。&/p&&p&看到这里我们再梳理一下这个系统的不完整架构:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-09f7b5ea95d60dd81e1f3b1b93c2274e_b.jpg& data-caption=&& data-rawwidth=&2138& data-rawheight=&1212& class=&origin_image zh-lightbox-thumb& width=&2138& data-original=&https://pic3.zhimg.com/v2-09f7b5ea95d60dd81e1f3b1b93c2274e_r.jpg&&&/figure&&p&&br&&/p&&ul&&li&系统有四个 Application,Exchanges 负责抓取数据并 publish,Catcher 负责持久化数据(写入 datadog 或 influxdb),Simulator 负责模拟交易(目前仅考虑实时数据的模拟交易,以后应该考虑对历史数据模拟交易),Trader 则真正把一个个合适的机会转化为交易&/li&&li&Exchanges 和 Catcher 已经基本实现,Simulator 考虑实现,Trader 再说&/li&&li&Simulator 可以根据一些配置的条件动态生成交易员(有点像游戏中的 NPC),接受实时数据并寻找各自的交易机会(使用真实的交易手续费,以及模拟各种延迟),每当产生交易,交易的数据和交易后的总市值会 push 到 datadog,最后可以在 datadog 里生成一个实时群芳谱,看看 Ada,Bella,Clare,Daisy 一干人等究竟谁牛&/li&&li&系统的容错性不错,理论上任何部分 crash 都会自我修复,不会有致命影响(比如 publisher 挂掉,当前时刻没法出去的数据会丢,可能丢失一些交易机会)&/li&&/ul&&p&下图是 exchanges_app 的 skeleton:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-62d992a3c74a0abc183c61b3357fb7fc_b.jpg& data-caption=&& data-rawwidth=&2348& data-rawheight=&1566& class=&origin_image zh-lightbox-thumb& width=&2348& data-original=&https://pic1.zhimg.com/v2-62d992a3c74a0abc183c61b3357fb7fc_r.jpg&&&/figure&&p&&br&&/p&&p&在 Catcher 里,我们除了把数据写入 datadog,还打算写入 influxdb,这是为何?我虽然很喜欢 datadog,但它的专长是 APM,数据的发送有很长的延时(默认 20s),也就是说你一个 batch 写进去的数据,先本地 UDP 给到了 datadog agent,agent 悠哉悠哉晾你一下,觉着差不多了,再发送给 datadoghq。这个延时对事后分析来说无伤大雅,但如果盯盘,就不那么舒服了。而 influxdb 完全由我们自己控制,不存在这个问题。这是其一。&/p&&p&我上次使用 influxdb / grafana 已是一年前,最近听人说起 grafana 也引入 alarm 的功能,正好这个项目可以把它们拾起来好好研究。influxdb / grafana 实时性比较好,可以让一些操作直接在 grafana 里完成,比如用查询语句寻找交易机会,然后 trigger 一个 alarm,alarm 的 endpoint 是一个 webhook,在 webhook 里进行交易。这样的话,发现交易机会的公式只要可以用 query 写出来,就不必写代码,大大增强系统的灵活性和可扩展性。这是其二。&/p&&p&目前总共撰写近 700 行代码,大约花费五六个小时。一些感悟:&/p&&ul&&li&&b&善用工具&/b&。有些工具,就像本文中的 datadog,从另一个角度去使用它,会有意想不到的收获。&/li&&li&&b&我们的时间真的弹性很大,与其说「没有时间」,不如说「我没兴趣」,或者说「它不重要」&/b&。昨晚从 7:30 算起,到凌晨1点多我睡,中间我有半个小时 1:1,以及一个多小时的 new hire training。平日里我如果花上两个小时和同事开会或者探讨问题,那么那晚我就会累得什么都不想做,早早上床休息。然而昨夜我硬是挤出时间精神高度集中地写代码。&/li&&li&&b&合适的挑战可以勾起一个人的兴趣,然后一切就可以自然流动&/b&。#产品经理必读&/li&&/ul&&p&&br&&/p&&p&谢谢欣赏。&/p&&p&&br&&/p&&p&(对于无用的「了」,本文已特意处理,望你喜欢)&/p&
关于比特币套利交易的文章,坊间一搜一大堆,尤以
为甚。那时交易所间价差相当可观,套利的机会很多,躺着赚钱并非难事。如今,套利区间收窄,留在沙场上的估计只剩下大玩家,想要不费力气躺赢机会渺茫。最近帮朋友牵线寻找币圈量化交易的机会,…
&p&1.超大回车键,简单却不失细节,一键多用,爱不释手&/p&&figure&&img src=&https://pic2.zhimg.com/v2-f6ffd2dbb99_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1079& data-rawheight=&1089& class=&origin_image zh-lightbox-thumb& width=&1079& data-original=&https://pic2.zhimg.com/v2-f6ffd2dbb99_r.jpg&&&/figure&&p&2.Linux命令参考男女生程序员男朋友生日礼物礼品杯创意神器水杯子&/p&&figure&&img src=&https://pic4.zhimg.com/v2-a53ae686f7f392b85c03_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&798& data-rawheight=&802& class=&origin_image zh-lightbox-thumb& width=&798& data-original=&https://pic4.zhimg.com/v2-a53ae686f7f392b85c03_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-04bcf75ac1a4b7bc09d9_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&427& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-04bcf75ac1a4b7bc09d9_r.jpg&&&/figure&&p&3.Excel快捷键参考鼠标垫&/p&&figure&&img src=&https://pic4.zhimg.com/v2-c5af86b8e128d633d782e9b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&603& data-rawheight=&603& class=&origin_image zh-lightbox-thumb& width=&603& data-original=&https://pic4.zhimg.com/v2-c5af86b8e128d633d782e9b_r.jpg&&&/figure&&p&4.涂鸦本成人装b神器 程序员设计师的自我修养 笔记本文具本子空白&/p&&figure&&img src=&https://pic1.zhimg.com/v2-e2fe2ef3b1ddd30fb231fbfd1aeaba08_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&750& data-rawheight=&750& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&https://pic1.zhimg.com/v2-e2fe2ef3b1ddd30fb231fbfd1aeaba08_r.jpg&&&/figure&&p&5.HHKB键盘&/p&&figure&&img src=&https://pic4.zhimg.com/v2-25a6fa75eea6ef4b8e903_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&427& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/v2-25a6fa75eea6ef4b8e903_r.jpg&&&/figure&&p&6.化妆镜
程序员 照片随身便携用镜 &/p&&figure&&img src=&https://pic2.zhimg.com/v2-be80bb1ed9889_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic2.zhimg.com/v2-be80bb1ed9889_r.jpg&&&/figure&&p&7.Linux男女生程序员专用靠枕抱枕&/p&&figure&&img src=&https://pic1.zhimg.com/v2-f5317e3dbcf84cc9eeeec28d6dd129a0_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&800& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/v2-f5317e3dbcf84cc9eeeec28d6dd129a0_r.jpg&&&/figure&&p&8.程序员积木&/p&&figure&&img src=&https://pic1.zhimg.com/v2-a3dab95ab3bf0bca14e4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&800& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/v2-a3dab95ab3bf0bca14e4_r.jpg&&&/figure&&p&&br&&/p&&p&以上为很有创意的物品,那么说一说每个程序员热爱着的物件吧,其实每个程序员对于电子产品有着不一样的感情。&/p&&p&Beats 耳机,大红色的够sao气
&/p&&figure&&img src=&https://pic4.zhimg.com/v2-38cc7a256caf347c6cab_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&301& data-rawheight=&377& class=&content_image& width=&301&&&/figure&&p&&br&&/p&&p&最后,程序员的标配(顶配),无论是坐在星巴克,还是放在办公桌,都能显示出高逼格&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-14acece22d346860eddfc030b6d614a7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&368& data-rawheight=&241& class=&content_image& width=&368&&&/figure&&p&&br&&/p&&p&继续补充&/p&&p&偶然间发现了这本书,除了程序员还有谁能看懂?&/p&&figure&&img src=&https://pic3.zhimg.com/v2-ae85e271fc374a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&806& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-ae85e271fc374a_r.jpg&&&/figure&&p&走过路过的你,不点个赞嘛&/p&&p&更多关于计算机回答请看:&a href=&https://www.zhihu.com/people/wang-ting-83-68-20/activities& class=&internal&&祈澈姑娘&/a&&/p&
1.超大回车键,简单却不失细节,一键多用,爱不释手2.Linux命令参考男女生程序员男朋友生日礼物礼品杯创意神器水杯子3.Excel快捷键参考鼠标垫4.涂鸦本成人装b神器 程序员设计师的自我修养 笔记本文具本子空白5.HHKB键盘6.化妆镜 程序员 照片随身便携用镜 7.…
&figure&&img src=&https://pic4.zhimg.com/v2-913bea2b1e6e726fa73a9fc_b.jpg& data-rawwidth=&1024& data-rawheight=&474& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic4.zhimg.com/v2-913bea2b1e6e726fa73a9fc_r.jpg&&&/figure&&blockquote&简评:在这个列表中,你将只找到使用最新版本的 Phoenix 构建的应用程序,而且所有的应用程序都可以下载并马上开始运行。&/blockquote&&h2&&b&&a href=&http://link.zhihu.com/?target=https%3A//changelog.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Changelog&/a&&/b&&/h2&&p&这是 &a href=&http://link.zhihu.com/?target=https%3A//changelog.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&changelog.com&/a& 使用的 CMS,是一个基于 Phoenix 框架、PostgreSQL
和许多其他伟大的开源技术的 Elixir 应用程序。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-63a2ae5c031c091db89fdb5a49a21d79_b.jpg& data-rawwidth=&800& data-rawheight=&367& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic2.zhimg.com/v2-63a2ae5c031c091db89fdb5a49a21d79_r.jpg&&&/figure&&p&&br&&/p&&h2&&b&&a href=&http://link.zhihu.com/?target=https%3A//github.com/bigardone/phoenix-trello& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pheonix Trello&/a&&/b&&/h2&&p&使用Elixir、Phoenix 框架、React and Redux 实现的 Trello。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-c5a1e9d7f0cd_b.jpg& data-rawwidth=&800& data-rawheight=&415& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic2.zhimg.com/v2-c5a1e9d7f0cd_r.jpg&&&/figure&&p&&br&&/p&&h2&&b&&a href=&http://link.zhihu.com/?target=https%3A//github.com/dailydrip/firestorm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Firestorm&/a&&/b&&/h2&&p&一个 Elixir + Phoenix 后端和 Elm 前端实现的开源论坛引擎。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-48be330e3df855d04aaa6_b.jpg& data-rawwidth=&800& data-rawheight=&415& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic3.zhimg.com/v2-48be330e3df855d04aaa6_r.jpg&&&/figure&&p&&br&&/p&&h2&&b&&a href=&http://link.zhihu.com/?target=https%3A//github.com/cerclecrm/cercle& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Cercle&/a&&/b&&/h2&&p&为智能手机制作的 CRM —— Phoenix 框架和 Vuejs&/p&&figure&&img src=&https://pic2.zhimg.com/v2-4d4f321f73b10c92b92f72f205cc1c05_b.jpg& data-rawwidth=&800& data-rawheight=&408& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic2.zhimg.com/v2-4d4f321f73b10c92b92f72f205cc1c05_r.jpg&&&/figure&&p&&br&&/p&&h2&&b&&a href=&http://link.zhihu.com/?target=https%3A//github.com/rizafahmi/elixirjobs& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Elixir Jobs&/a&&/b&&/h2&&p&Elixir Job 是专门为 Elixir 编程语言查找、列出工作职位和开发人员社区的最佳地点。寻找 Elixir 开发者?只需 POST A JOB。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-707a86cd20cc2df9cdda123fd0ec46cc_b.jpg& data-rawwidth=&800& data-rawheight=&463& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/v2-707a86cd20cc2df9cdda123fd0ec46cc_r.jpg&&&/figure&&p&&br&&/p&&h2&&b&&a href=&http://link.zhihu.com/?target=http%3A//constable%2520is%phoenix%2520app%2520for%2520posting%2520announcements%2520and%2520having%2520discussions.%2520to%2520learn%2520more%2520about%2520phoenix%252C%2520check%2520out%2520programming%2520phoenix/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Constable&/a&&/b&&/h2&&p&这是一个用于发布公告并进行讨论的 Phoenix 应用。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-7cee644eb3b20a9d7e204_b.jpg& data-rawwidth=&800& data-rawheight=&416& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/v2-7cee644eb3b20a9d7e204_r.jpg&&&/figure&&p&&br&&/p&&h2&&b&&a href=&http://link.zhihu.com/?target=https%3A//github.com/rrrene/elixirstatus-web& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Elixir Status&/a&&/b&&/h2&&p&上传 Elixir 项目、博客文章、版本更新的社区网站。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-0a48dfd5cd4c6351253f_b.jpg& data-rawwidth=&800& data-rawheight=&433& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic4.zhimg.com/v2-0a48dfd5cd4c6351253f_r.jpg&&&/figure&&p&&br&&/p&&h2&&b&&a href=&http://link.zhihu.com/?target=https%3A//github.com/hexpm/hexpm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hexpm&/a&&/b&&/h2&&p&Erlang 生态系统的经包管理。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d09e6ef2b6cec385dcbb8b_b.jpg& data-rawwidth=&800& data-rawheight=&463& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic4.zhimg.com/v2-d09e6ef2b6cec385dcbb8b_r.jpg&&&/figure&&p&&br&&/p&&h2&&b&&a href=&http://link.zhihu.com/?target=https%3A//github.com/evercam/evercam-server& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&EverCam&/a&&/b&&/h2&&p&Evercam Server 是负责与相机通信的组件。可以将其视为所有命令的「代理」。 这里的进程请求快照或流,然后将其发送到存储设备或任何客户端(例如 Evercam-Dashboard,Evercam-Android,Evercam-iOS)。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-76c02c83c2d3b4ed76e8116491baa871_b.jpg& data-rawwidth=&800& data-rawheight=&491& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic2.zhimg.com/v2-76c02c83c2d3b4ed76e8116491baa871_r.jpg&&&/figure&&p&&br&&/p&&blockquote&原文:&a href=&http://link.zhihu.com/?target=https%3A//medium.com/aviabird/10-amazing-open-source-elixir-phoenix-apps-e2c52ee25053& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&10 Amazing open source Elixir/Phoenix Apps&/a&&/blockquote&&p&扩展阅读:&/p&&ul&&li&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&2017 年你应该学习一下下函数式编程&/a&&/li&&li&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Python 家族有多庞大&/a&&/li&&/ul&&p&&b&&u&欢迎关注&/u&&/b&:&/p&&ul&&li&知乎专栏「&a href=&https://zhuanlan.zhihu.com/jiguang-daily& class=&internal&&极光日报&/a&」,每天为 Makers 导读三篇优质英文文章。&/li&&li&网易云电台「&a href=&http://link.zhihu.com/?target=http%3A//music.163.com/%23/djradio%3Fid%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&极光日报&/a&」,上下班路上为你读报。&/li&&li&微信公众号「极光开发者」,每周两篇技术类干货。&/li&&/ul&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&
简评:在这个列表中,你将只找到使用最新版本的 Phoenix 构建的应用程序,而且所有的应用程序都可以下载并马上开始运行。这是
使用的 CMS,是一个基于 Phoenix 框架、PostgreSQL 和许多其他伟大的开源技术的 Elixir 应用程序。
&figure&&img src=&https://pic4.zhimg.com/v2-23dddefafbf42_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic4.zhimg.com/v2-23dddefafbf42_r.jpg&&&/figure&&p&距离 1.2 发布已经有一年多,而 exlirconf 2016 McCord 宣布 1.3 的特性也已过去半年,phoenix 1.3 依旧犹抱琵琶半遮面,迟迟不肯现身。几天前,1.3 RC.0 悄然发布,我们终于可以一睹她的芳容。&/p&&p&引子&/p&&p&因为程序人生的读者大多不是 elixir / phoenix 的用户,所以在这里小小普及一下。elixir 是在 erlang VM 上发布的一门语法类似 ruby,能力完全继承 erlang,并支持 metaprogramming 的函数式编程语言。erlang VM 下以 actor model(请自行 wiki 之)为基础的 concurrency model,加之 pattern matching 的强大能力,辅以 metaprogramming 的上帝视角,让 elixir 充满独特的魅力。而 phoenix,是 elixir 语言下的一个脱胎于 rails 的框架,可以帮助我们快速打造 webapp。&/p&&p&phoenix 相对于 rails,根本性的颠覆有二:&/p&&p&1) 基于 erlang VM 的 concurrency 能力。你看不见的很多地方,都使用大量的 process,或者 process pool 来提升并发能力。很多时候,phoenix 的 performance 是 rails 的 5-10 倍。phoenix 的作者 McCord 做了一个实验,在单机上成功实现了 2M websocket connection。&/p&&p&2) realtime web。phoenix 大大简化了开发高性能 realtime app 的难度,通过抽象出 channel,让 join / leave / broadcast / presence 这些事情处理起来非常简单 —— 这让一个普通的工程师也可能写出非常 scalable 的 realtime app,比如一个支撑百万级用户的聊天软件。&/p&&p&以下是一篇文章 (&a href=&http://link.zhihu.com/?target=https%3A//hashrocket.com/blog/posts/websocket-shootout& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&hashrocket.com/blog/pos&/span&&span class=&invisible&&ts/websocket-shootout&/span&&span class=&ellipsis&&&/span&&/a&) 做的评测,测试方法是每个 websocket 收到 message 后 broadcast 给所有其他 websocket,完成后发送状态给 sender。在 95th percentile response time & 500ms 的情况下,看能支持多少 websocket:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-99c1be0aabe984d652c36_b.jpg& data-rawwidth=&1196& data-rawheight=&596& class=&origin_image zh-lightbox-thumb& width=&1196& data-original=&https://pic3.zhimg.com/v2-99c1be0aabe984d652c36_r.jpg&&&/figure&&p&我们可以看到,phoenix 的能力(大概 24,000 active websockets),落后于 C++ / clojure,和 go 并驾齐驱。&/p&&p&不过这个评测是非常不公平的 —— 在这里,phoenix 和 rails 都是 full-fledged framework,而其他都是直接使用语言的 websocket 库。这种对比就好像做网络性能测试,拿 UDP 和 TCP 对比,然后得出 UDP performance 要远好于 TCP 一样滑稽。考虑到 phoenix 在 websocket 基础上抽象出了 channel,每个 websocket connection,都是一对 process(一个处理网络层,一个处理 channel 层),并且从 connection 到 dispatch,都完整的走了 framework 的整个流程,达到这样一个效率还是相当惊人的。&/p&&p&目录结构的变迁&/p&&p&回到正题。phoenix 既然脱胎于 rails,一颦一笑都在模仿先祖。model,controller,view,template 一个都不少,scaffolding 出来的目录结构都异曲同工。这带来很多问题。其中最重要的,也是最根本的问题是:我们究竟在做一个包含了 web interface 的系统,还是在做一个以 web 为中心的 app?&/p&&p&这是每个 web app 在成长过程中不得不面临的问题。我在 &a href=&http://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3NDM0ODQwMw%3D%3D%26mid%3D%26idx%3D1%26sn%3D6d309bb5501a3fafae2eac%26chksm%3D8704aaa5bfbb1488cbfc50a008b250a27bcscene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&rails, django, phoenix,你们错了&/a& 一文中提到:&/p&&blockquote&&p&说句不太好听的话,rails 等 framework 很容易引导人们走向一个 web 前端为中心的歧路。这里所说的「前端」,是指后端的前端。我们应该根据需求,先把业务模型构建出来,各个服务构建妥当后,再使用 rails 等打造前端。我们可能需要一个面向用户的前端,可能还要面向管理员的前端,每个独立的服务可能也需要它们各自的管理前端,我们还要有统计分析的前端,用户行为分析的前端等等。这些所有的前端基本都没有所谓的 model,因为数据的存储在各个服务中解决了。&/p&&/blockquote&&p&我们看 phoenix 1.2 的目录结构:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-dc3aa43af319c65f31285_b.jpg& data-rawwidth=&2584& data-rawheight=&1898& class=&origin_image zh-lightbox-thumb& width=&2584& data-original=&https://pic2.zhimg.com/v2-dc3aa43af319c65f31285_r.jpg&&&/figure&&p&这是典型的以 web 为中心的处理方法。你的数据模型,你的各种业务逻辑,似乎就是奔着一个 web interface 去的,虽然能很快搭建出一个 app,但从长远发展来看,有诸多问题。当然我们随着系统的发展,把业务逻辑和数据模型抽取出来,放在 lib 下,甚至,用 elixir / erlang 惯有的方式,将它们包装成一个个独立的 app,然而,scaffolding 出来的目录结构还是会深深地影响和制约着你的代码结构。起初,你会往 web/models 里塞 data model,往 web/controllers 里塞各种逻辑,慢慢地,你的代码就会变成这样的状态:处理业务的逻辑和处理 web 的逻辑揉在了一起,不同 model 间的逻辑揉在了一起,由此 controller 要了解很多 model 的细节,才能处理得当:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-60cbbcb80c3_b.jpg& data-rawwidth=&2520& data-rawheight=&1944& class=&origin_image zh-lightbox-thumb& width=&2520& data-original=&https://pic4.zhimg.com/v2-60cbbcb80c3_r.jpg&&&/figure&&p&在这样的代码里,&b&我们看不清系统各部分的边界在哪里&/b&。新的代码的插入是那样的顺理成章,以至于一切良好的设计都随着边界的模糊而变得混乱不堪。理想的状态是这样:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d23ffe288d2ea2c8190d1f_b.jpg& data-rawwidth=&2558& data-rawheight=&900& class=&origin_image zh-lightbox-thumb& width=&2558& data-original=&https://pic4.zhimg.com/v2-d23ffe288d2ea2c8190d1f_r.jpg&&&/figure&&p&业务和 web 分开,Blog 看上去更像是一个 service,一个 web controller 并不需要关心细节(只要知道接口)的 service。&/p&&p&从上面的目录结构中演化出这样的代码并非易事 —— 新的代码放哪,目录如何设置,怎么命名,都是学问。Conway's laow告诉我们:&/p&&blockquote&&p&organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations&/p&&/blockquote&&p&换句话说,一个公司的技术架构和设计受到该公司的组织架构的影响。同样的,Tyr's law 告诉我们:&/p&&blockquote&&p&&b&一个系统的软件架构和设计和这个系统的目录结构非常相关&/b&。&/p&&/blockquote&&p&在 phoenix 1.3 中,最大的变化就是目录结构的变化。我们欣喜地看到,models 不再隶属于 web,甚至,models 都不单独存在了,而 web,只是作为 app 的一个附庸而存在。由此,web 层被狠狠地削薄了,我们做一个系统不再是从 model 出发,在 controller 里构建逻辑,然后在 view 中呈现;相反,我们开始考虑如何打造 service,如何提供 internal 的 API,然后在这些 API 的基础上,提供 web interface。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-e197edba6b6ba791_b.jpg& data-rawwidth=&2584& data-rawheight=&1936& class=&origin_image zh-lightbox-thumb& width=&2584& data-original=&https://pic2.zhimg.com/v2-e197edba6b6ba791_r.jpg&&&/figure&&p&由此,我们可以打造逻辑更为清晰的系统:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-e4ede621eb438c0ea62d_b.jpg& data-rawwidth=&2396& data-rawheight=&1892& class=&origin_image zh-lightbox-thumb& width=&2396& data-original=&https://pic2.zhimg.com/v2-e4ede621eb438c0ea62d_r.jpg&&&/figure&&p&这样的目录结构,一眼望去,我们就大概知道系统提供什么样的服务,各个服务的边界在哪里:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-5c3db6b99893cfc603d285f_b.jpg& data-rawwidth=&2490& data-rawheight=&1540& class=&origin_image zh-lightbox-thumb& width=&2490& data-original=&https://pic1.zhimg.com/v2-5c3db6b99893cfc603d285f_r.jpg&&&/figure&&p&对 unbrella project 的支持&/p&&p&在 elixir 中,umbrella project 是我的最爱。我不但喜欢把服务通过目录来划分势力范围,更钟情将它们构造成不同的 app 来进一步在运行时界定它们的边界。application 是 erlang VM 里一个非常重要的概念,这在其他 VM,其他语言中都不曾出现。一个 erlang VM,你可以将其看做是一个操作系统,这个操作系统里运行着很多各司其职的 application,每个 application 管理着它们各自的 process。在 rails 里,logger 是一个模块,db connector 是一个模块,它们运行在当前代码所在的上下文中。而 elixir / erlang 中,logger 是一个 app,db connector 是一个 app,当你要记录日志时,实际上是发一个 message 给 logger app,请它来处理 log,log 的最终写入是一个完全不同的上下文。这种在运行时把系统划分成不同 app 来管理的方式,我非常非常喜欢。它让系统的管理变得简单,边界清晰,解耦变得容易,系统的脉络一路了然。&/p&&p&在 phoenix 1.2 之前的版本,我使用 phoenix 的一个方式是先创建一个 umbrella project,然后在里面再创建只有 controller 和 view 的 phoenix app,这有些别扭;phoenix 1.3 中,我们终于可以直接使用 phoenix 来创建 umbrella project 了:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-c844e5c7a0dc4374accfea_b.jpg& data-rawwidth=&2282& data-rawheight=&1924& class=&origin_image zh-lightbox-thumb& width=&2282& data-original=&https://pic3.zhimg.com/v2-c844e5c7a0dc4374accfea_r.jpg&&&/figure&&p&这让我在 &a href=&http://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3NDM0ODQwMw%3D%3D%26mid%3D%26idx%3D1%26sn%3D6d309bb5501a3fafae2eac%26chksm%3D8704aaa5bfbb1488cbfc50a008b250a27bcscene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&rails, django, phoenix,你们错了&/a& 一文中提到的例子,从结构上打造起来方便很多:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-2e7c4c0c016_b.jpg& data-rawwidth=&960& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&https://pic3.zhimg.com/v2-2e7c4c0c016_r.jpg&&&/figure&&p&以上种种,解耦经验丰富的工程师也许不屑一顾;但它的确为经验不那么丰富的工程师,从结构上指出了一条明路,尤其是很多直接从 rails 转 phoenix,对 elixir / erlang VM 还 一知半解的工程师。而 &b&从结构上给出正确的方向,往往是 framework 的最大贡献&/b&。很欣喜,phoenix 1.3 终于迈出了这一步。&/p&&p&当然,这样的步子迈起来很痛,容易扯着蛋。基于 phoenix 的很多优秀的第三方库,一下子变得都不好用起来。写起代码,很难直接使用已有的架构在 phoenix 1.2 之上的 lib,于是掣肘丛生,只能踯躅前行 —— 而且,在可预见的几个月内,这状况不太会有太多的改变。然而这种痛,是一个架构逐渐成熟 —— 走出全盘借鉴别人的路子,结合语言的特性,形成自己独特思路的必经之路。&/p&&p&有意思的是,我第一个大规模使用的框架,django,也是在 1.2 到 1.3 的升级中,完成了 function based view 到 class based view 的蜕变。莫非,这就是天道轮回?&/p&&br&&p&(本文的代码和大部分截图出自:&a href=&http://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3DtMO28ar0lW8& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&youtube.com/watch?&/span&&span class=&invisible&&v=tMO28ar0lW8&/span&&span class=&ellipsis&&&/span&&/a&。McCord 大神亲自揭秘 phoenix 1.3 的更新。这个视频非常值得观看)&/p&
距离 1.2 发布已经有一年多,而 exlirconf 2016 McCord 宣布 1.3 的特性也已过去半年,phoenix 1.3 依旧犹抱琵琶半遮面,迟迟不肯现身。几天前,1.3 RC.0 悄然发布,我们终于可以一睹她的芳容。引子因为程序人生的读者大多不是 elixir / phoenix 的用户,所…
&p&我的第一个Python项目就是做的微信公众号机器人,按照当时我的思路来讲讲如何学习使用Python来开发微信公众号:&b&大家伙收藏顺手点个赞呗。&/b&&/p&&p&微信公众号功能开发分为两大块:需要调用微信内部功能、不需要调用微信内部功能,重点在调用微信内部功能组建。&/p&&p&1、需要调用微信内部功能&/p&&p&需要调用微信内部功能组件的比如:公众号收发消息|图片、页面分享至朋友圈、用户授权提取用户基本信息、微信小店、微信公众号菜单等内部功能组件,这些功能组件在微信公众号开发者文档里面找到:&a href=&//link.zhihu.com/?target=http%3A//mp.weixin.qq.com/wiki/home/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信公众平台开发者文档&/a&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-e58a8cb330eee_b.png& data-caption=&& data-rawwidth=&1054& data-rawheight=&922& class=&origin_image zh-lightbox-thumb& width=&1054& data-original=&https://pic1.zhimg.com/v2-e58a8cb330eee_r.png&&&/figure&&p&对于这些功能组件,开发者文档都提供了详细的接口文档,告诉你如何调用,而你只需要用Python调用这些接口即可。比如一个很简单的消息发送的方法如下:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-16cf9b8b982fcadf567a1_b.png& data-caption=&& data-rawwidth=&1008& data-rawheight=&907& class=&origin_image zh-lightbox-thumb& width=&1008& data-original=&https://pic2.zhimg.com/v2-16cf9b8b982fcadf567a1_r.png&&&/figure&&p&当然在这所有的调用之前,需要进行一些授权验证,同样开发者文档有一套完整的接入指南:&a href=&//link.zhihu.com/?target=http%3A//mp.weixin.qq.com/wiki/8/f9a0bd87b3bcc1ce6fbc104.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&接入指南 - 微信公众平台开发者文档&/a&&/p&&p&很遗憾很多初学者在一开始看这份文档的时候并不能看懂,所以这里也推荐一些我以前学习摸索的过程中使用到的一些简单易学的教程。&/p&&p&你可以先做一个简单的微信机器人练练手(零基础十分容易上手):&/p&&ul&&li&&a href=&//link.zhihu.com/?target=https%3A//my.oschina.net/yangyanxing/blog/159215& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&使用python一步一步搭建微信公众平台(一)&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//my.oschina.net/yangyanxing/blog/194136& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&使用python一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//my.oschina.net/yangyanxing/blog/196956& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&使用python一步一步搭建微信公众平台(三)----添加用户关注后的欢迎信息与听音乐功能 &/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//my.oschina.net/yangyanxing/blog/197998& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&使用python一步一步搭建微信公众平台(四)----将小黄鸡引入微信自动回复&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//my.oschina.net/yangyanxing/blog/199724& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&使用python一步一步搭建微信公众平台(五)----使用mysql服务来记录用户的反馈&/a&&/li&&/ul&&p&如果你已经能按照以上的教程搭建一个完整的微信机器人了,基本上对于微信收发消息等等简单功能已经没有什么障碍了。下面再继续学习如下教程,开始学习如何调用其他一些相对来说比较复杂的接口。&/p&&ul&&li&&a href=&//link.zhihu.com/?target=http%3A//t.cn/zHkN9XA& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信公众平台开发入门教程&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//t.cn/8Fu19Oi& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信公众平台开发—天气预报&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//t.cn/zYcOinU& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信公众平台开发—小黄鸡&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//t.cn/zY5AQJi& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信公众平台开发—人脸识别&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//t.cn/zRSXFzk& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信公众平台开发—百度地图&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//t.cn/8F2G4VS& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信公众平台开发—笑话&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//t.cn/zYWICo1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信公众平台开发—在线点歌&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//t.cn/RvHCHza& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信公众平台开发—附近查询&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//t.cn/zYgNaQg& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信公众平台开发—快递物流&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//t.cn/zQwNT0c& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信公众平台开发—一键关注&/a& &/li&&/ul&&p&当你实验了如上的教程之后,相信官方文档的所有接口调用对你来说已经小菜一碟了。&/p&&p&2、不需要调用微信内部功能&/p&&p&不需要调用微信内部功能组件的,就如同正常的web页面一样,比如填写表单进行进行注册、点击按钮进行跳转等等,这些都是正常的web请求,按照正常的web开发方法走即可。&/p&&p&&br&&/p&&p&&b&很多人问我如何学习Python爬虫,为此我整理编写了一本Python爬虫相关的电子书,主要包括Python入门、Python爬虫入门到进阶、Python爬虫面试总结等等。可以在微信公众号【一个程序员的日常】后台回复关键词【1】获取这本电子书。&/b&&/p&
我的第一个Python项目就是做的微信公众号机器人,按照当时我的思路来讲讲如何学习使用Python来开发微信公众号:大家伙收藏顺手点个赞呗。微信公众号功能开发分为两大块:需要调用微信内部功能、不需要调用微信内部功能,重点在调用微信内部功能组建。1、需…
&figure&&img src=&https://pic4.zhimg.com/v2-d206acbe604d5_b.jpg& data-rawwidth=&1000& data-rawheight=&664& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic4.zhimg.com/v2-d206acbe604d5_r.jpg&&&/figure&&blockquote&简评:人工智能是 21 世纪最重要的技能。在人人都很忙碌的今天,如何把人工智能这个技能点加上?作者用自己的亲身经历告诉大家。&/blockquote&&p&当我关闭我的创业公司 Zeading 时,我被粗鲁地唤醒了。感觉就像失去了一些非常特别的东西。&/p&&p&&b&全栈工程师在面临剧变的时代是不够的。在接下来的两年中,没有人工智能技术的全栈将不再是全栈。&/b&&/p&&p&是时候采取行动了。我做出了我认为现在唯一能做的行动方式 —— &b&像开发者那样更新我的技能,像产品一样的心态以及像企业家一样的哲学观来面向数据。&/b&&/p&&p&正如著名的风险投资家,人工智能和金融科技的思想领袖 &a href=&http://link.zhihu.com/?target=https%3A//twitter.com/SpirosMargaris& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Spiros Margaris&/a& 雄心勃勃地对我说:&/p&&blockquote&如果创业公司和企业只依赖于最前沿的 AI 和机器学习算法作为竞争 —— 这是不够的。AI 将不是竞争优势,而是基

我要回帖

更多关于 怪物猎人世界输出最高 的文章

 

随机推荐