• 欢迎加“百元导航”为主页,windows8风格,0.3s极速加载
  • 王柏元的博客专用搜索引擎:极客人,就用“极客搜”!
  • 置顶推荐

    歪脖子树与花痴

    歪脖子树与花痴

    我们家的“歪脖子” 小时候,我家门前有一棵歪脖子大梧桐。梧桐很大,打我出生时就在那,打小就是歪脖子。那时我小,我问爸爸:“这个好丑啊,种在家门口一点都不好看,砍掉吧。”,爸爸笑着说:“傻孩子,这棵树用处可大着咧!这棵树有感情,须得一颗真心待她。”我不懂,人怎么和树有感情。 后来在夏夜里,妈妈给我讲起歪脖子大梧桐的”光荣事迹“: 我们家建在临近水库的陡坡上。与水库的相接的坡十分陡峭,近乎垂直,坡离我家房屋不远。 歪脖子大梧桐本来不歪脖子的,身体匀称,枝繁叶茂。后来一年夏天,黄梅县起了一场大风,并伴随大雨。大风吹倒了公路旁的108颗行道树,连根拔起,七倒八歪地横在路旁。许多人家的房屋都被掀起砸中路上的车和人,还有人家主屋外面的厨房被倒下的大树砸中,生生被敲掉了一个边角。妈妈说,那是她出生以来见过的最大的一场大风雨了。 ”那咱家呢?咱家怎么样了?“ ”咱家的房瓦也掀起了不少,这还不是主要的。因为我们家靠近陡坡,那天雨很大,大雨冲刷着陡坡。雨水裹挟着上面不经风雨的小花小草,冲垮了一层又一层黄沙。眼看就要垮到了我们家房子……“ ”啊...“我听着妈妈的话简直吓呆了,眼里几乎泛起泪来。 ”后来,陡坡知道跨到了那颗梧桐树下。梧桐大半的根系尽漏,清清楚楚地可以看见它们在地底下的纵深绵延,粗壮的根系在冲刷下露出了一道道沟壑……”,妈妈的记忆仿佛又回到那场大风雨中,“最后,另一侧的根仍旧死死抓住土地,而在梧桐的后面,再也没有沙石被冲垮掉;可是大梧桐在那场风暴中被吹歪向水库那侧,半边的大树干被吹断”。 “所以,梧桐被吹断了一半,就变成歪脖子了?”,我的心里对大歪脖子梧桐油然而生一种敬意。从此,小学的作文里,《我们家的‘歪脖子’》被我炒了一次又一次剩饭。 自从听完妈妈的故事,我再也不说砍掉歪脖子大梧桐的话了。而且我还会偷偷拿些家里装修完剩下的石灰,涂在歪脖子被吹掉半边树干留下的“伤口”上,防止虫儿咬,鸟儿做窝。我明白爸爸所说的一颗”真心“待树的奥义了。 歪脖子树,陪我度过温馨的童年,曾记得无数个夏夜,我偎依在妈妈怀里,妈妈坐在小木凳子上,听爸爸给我讲故事背唐诗,我们仨就在枝繁叶茂的大梧桐下乘凉,看黑幕下星星眨眼,看月过梧桐的如同冰霜,看萤火虫漫天飞舞的微微荧光。我就这样沉睡入温柔的梦乡中,梦里,我们仨,还有一棵”歪脖子“。 “花痴” 爸爸喜欢捣弄些果树种在家后面,比如无花果,石榴、李子树啊,偶尔会间杂一些花草。布局匀整,花木多二不杂;后来只要有人到我家,都会看看我家的”后花果园“,多是称赞溢美之词。也有人会说:”老王啊,种些花多好看,家旁边种果树多俗,你家又不靠卖果子挣钱;还是多种花好看“。 种花是情趣,种果是实用。养花是修身养性的很好的方式,处一方繁华簇锦之所,赏花色、闻花香,享受在心里——一个理想主义的好去处;而在无趣之人的眼里,自然是果树实在,摸在手里,吃在肚里,真真切切。 无一例外的是,凡是参观我家”后花果园的“人都会注意到”鹤“立在花团中的歪脖子树:“老王啊,你们养的花也好,种的果也好,就是这颗大树不好。歪向一边,还掉叶子,不好看,也麻烦,砍掉算了,可以腾出一大块地方养花”。 爸爸总是笑笑说:“这棵树,防风固沙,对我家房子有救命之恩,丑点有什么关系,关键有感情”。我知道,爸爸是以待人之真心待树。 不然人家怎么说,爸爸还是没有砍树,这一直到高中。只是,果树都被砍掉,换成了花草,最后我们家的邻里也都种起了花草。几家之间”争芳斗艳“,乐此不疲。 生活总需要点点花草装束,热爱生活,就应该懂得生活的情趣。 后来我上了初中,读了高中,再也没有在作文里无休止地炒”我家的‘歪脖子树’“的剩饭,歪脖子看惯了,也就觉得没什么大不了的。 直到高二的一次周五回家,刚进家,就闻见一股油锯汽油味,然后是一阵轰鸣声。我跑到后院,爸爸正在拿着油锯锯我们家的”歪脖子“,在油锯的震动下,梧桐叶哗哗划下,落了后院满地;旁边是两位叔伯,拿着绳索困住”歪脖子“的枝干,在下面用力地拉住绳索把大梧桐往水库那边拽,防止魁梧的大梧桐倒下的时候砸向房子。我有点发愣,很惋惜,很不解,但是在几位叔伯面前。我不能暴露作为高中生却像孩子一样的稚气。 油锯声轰鸣了半小时便停止了,梧桐的主干几欲伐断。爸爸和叔伯几个一起拉住绳子,叫我来帮忙,他们几个吆喝着,使劲力气将梧桐最后的交连的主干拉扯断。伴随着”吱吱“的撕裂声,歪脖子倒下了,枝叶打在水面上,如同呜咽,水库上残页铺面,还有滚下的鸟窝。 大歪脖子的生命就这样走向终结。 后面的事你肯定能想到,大歪脖子被大卸八块,被斧子劈开。主干卖给了木料厂,枝干成了灶里的可燃物。 我不解,我问爸爸,为什么要砍歪脖子,不是说了不砍它吗。 ”树大了,占地方,放在院子里也不好看“。 ”不好看有什么关系呢?不是防风固沙么“ ”现在不需要了“,原来由于我家房子临近水库,政府加固道路在坡上砌成一堵水泥和大理石浇筑而成的石墙。 我还想接着问:”不是有感情吗,不是房子的救命恩人么“,出于不让别人看出我”稚气“的心理,我不再追问。不过作为接受了科学教育的我,明明就知道,梧桐护房,只是它根系粗壮而已,也可以认为是生命的本能。 万物本无情,本自人多情。当初留你是真心,现在放弃你也是真心。当初为你辩护留你是真心话,现在下决心放弃你的诸多理由也是真心话,不是虚伪。 人和树,怎么可能有感情?傻瓜! 爸爸在除掉梧桐空留的地方又种上了花,花的品种也换了一批又一批。他常常向别人打听什么季节应该种什么花,我们家种什么花最好看,许多他从来没见过的但自己觉得喜欢的花都给种上,可最后这些花还是被换掉。 最后,我不知道他养花是不是真的爱花,还是真的是”花痴“。 我想,养花无可厚非,砍掉大脖子树也无必伤心。只是花木而已,没必要上纲上线到”喜新厌旧“的层面上来。 直到多年以后,我发现自己也变成了那颗大歪脖子树。是啊,不论弃与留,都是真心。   缺月挂疏桐,漏断人初静。拣尽寒枝不肯栖,寂寞沙洲冷。 2016年6月24日上午 情节完全虚构,如有雷同,纯属你抄我

    1年前 (2016-06-24) 浏览: 390 评论: 0
    梦“杭”行-参访阿里巴巴

    梦“杭”行-参访阿里巴巴

    一些废话作为先导 当今中国的互联网格局,已成“BAT”三足鼎立之势。BAT,百度、阿里巴巴、腾讯。三者各有千秋,百度的搜索,阿里巴巴的电商服务,腾讯的社交,都在各自领域代表着中国的最高水准。作为与IT相关的人,对这几家公司都会有一定的向往之情。 百度总部在北京,腾讯的总部在深圳,而阿里巴巴的总部及其部分园区则恰位于我们这次社会实践活动进行的杭州市。马云,阿里巴巴教父级总裁,出生于浙江杭州,毕业于杭州师范学院,把总部和几个园区设立在杭州自然不足为奇。以前我对一个地方出的人物对这个地方能有多大的影响并不感冒,但是这次却亲身感受到。人杰然后凸显地灵。支付宝风靡全国,在杭州影响尤甚。当你走过杭州大大小小的餐饮店,你会发现柜台前“支付宝扫一扫付款”是多么的醒目,这恐怕是其它任何一个城市无法企及的。说到这,发现这几个大boss设立总部的城市还是蛮有意思的,李彦宏在北大,现在百度总部在北京;马化腾深圳大学毕业,现在腾讯总部在深圳! 16楼参观,马总你真有情怀 在社会实践活动出发前,我们约好了在阿里巴巴工作的师兄师姐。上午我们访问了蚂蚁金服,中午逛了一下西溪公园,下午访问西溪园区。在蚂蚁金服,接待我们的一个学姐,在西溪园区接待我们的是一个学姐和两位学长。 来到阿里巴巴大楼,我们根据阿里事前给我们发送的邀请短信在类似银行柜员机的机器前输入访问ID,然后机器里就吐出了几张票作为访问通行证。 参观的目的是在参观办公陈设、人员面貌的同时窥探一个企业的企业文化。 在这次参访中,我们的活动范围只有“支付宝”大厦16楼,根据阿里巴巴的公司制度,每年只有一天职工可以带着自己的亲友参观他们的办公环境(无法让我们看到传说中程序猿的办公环境是我们本次参观的一个遗憾),这一天是5月20日—阿里日又称“亲友日”,2005年阿里巴巴公司为了纪念2003年5月的“非典”时期阿里人的激情和信念。学姐告诉我们,2003年的非典,在杭州的阿里员工及其家人朋友近千人从5月7日起开始了为期一个星期的隔离生活,阿里人可以在家里完成自己的工作。到隔离结束,没有人察觉到阿里巴巴的任何变化,相反,阿里的业绩却未因为非典受挫,并突破当月历史新高。同时,每年的这一天,阿里巴巴公司都会有庆祝活动,举行集体婚礼。 支付宝大厦16楼基本是一个展示厅,在一面墙上是显示蚂蚁金服业务在全国的实时监控的巨幕显示屏(来自百度百科:蚂蚁金服旗下的业务包括支付宝、支付宝钱包、余额宝、招财宝、蚂蚁小贷和网商银行(筹)等),这个场景十分炫酷、科幻感超强(因为禁止拍照,所以没图)。在这块荧幕中标注了蚂蚁金服业务在全国实时进行的热度图,已经此时全国用户的转账等记录,极客人想验证一下就掏出手机拿出支付宝转了一笔账,不过并没有发现自己的账户在列。 阿里巴巴是个集团,旗下业务很多,不过跟我们生活息息相关的几个业务好像都在蚂蚁金服,除此以外可能最为大众熟知的就是淘宝、天猫,还有被IT人士、站长了解的阿里云了。尽管阿里的规模很大,但依旧在扩大业务面,几个园区和分布在各地的分公司也各司其职。 在了解这些的期间,学姐也给我爆料一个我似乎在百度找不到的段子。由于业务的需要,本来阿里的一些业务需要搬迁到一座新楼,这座新楼已经完工,但是马总叫人看了一下风水,由于风水不好,搬迁的工作暂告搁浅;现在正在重建一座新楼,而已经建好的大楼如今一直是座空楼。唉,杭州城,寸土寸金,建好的大楼不用就是浪费。我只能说:“马总,你真有“‘情怀’"。 在展厅一侧的圆柱勾起的兴趣,柱子外有玻璃围绕,这根柱子名叫“手印墙”。“手印墙”周身书写了几句诗句,大意是阿里拼搏进取之志;上嵌颜色各异的手掌大小盾牌,盾牌里则填满了手掌印。阿里员工会在“手印墙”上留下自己的手印,大致意思是按手印立信,而“信”,是支付宝等公司的立身之本。 总的来说,阿里巴巴蚂蚁金服里面的环境大气又不失优雅。玻璃幕墙,街景一览无余,室内有盆景藤蔓,淡雅整洁。不过16楼应该只是单纯的展示厅,再好也只是参观,工作人员真正的办公环境我们不得而知。在此如果我说的再多,就可能沦为为阿里写软文了。 工作还是读研 在阿里巴巴接待我们的师兄师姐是清一色的研究生毕业,入职都不久。根据他们的表述,研究生被招进阿里的几率更大,不过他们都基本认为在本科时期就能进入阿里是最好的,因为在企业中我们接触的往往是与实际生活相关的东西,在学校里读研固然能学到更多的理论,但是其实进入企业、企业还是要花相当长的时间来培训你。也有学长提到:研究生的潜力比较大,但刚入职的时候会有落差感。 就目前在阿里巴巴等等公司的招聘公告和我对互联网公司的了解,它们并没有多少公司对应聘者的学历院校甚至专业有门槛。和阿里的招聘的公告一样,学姐也谈到进阿里专业不是问题,只要你对互联网计算机有一颗热爱的心。其实这个也并不奇怪,因为互联网专业相对航天航空这些专业需要强大的硬件设施来支撑,没有公司给你试验器材你根本玩不转,而IT业则不同,只要给你网,给你电脑,你就可以自学很多东西、实现很多东西,这些你可以通过许多网络黑客仅仅是初中毕业这些事实得到佐证。 没有外物给你的高门槛,羁绊与成就你的,就恰恰是你自己的实力,同时也决定这个行业竞争相当残酷。 阿里等级制度带来的启示 阿里的技术岗等级代号为“P”,管理岗为“M”。本科生进入阿里巴巴的初始等级为P4,研究生为P5,这些等级大致决定了你的薪酬和阿里对你的能力认定。每年阿里会有一个答辩会让员工展示自己的绩效然后评分决定你是否可以升级。 根据学姐学长的表述,我从互联网上找到下面的阿里巴巴的等级表与技术-管理映射关系: 了解一个你还没进入的互联网公司的管理制度,我想似乎和我们并没有半毛钱关系。然而在与师兄师姐们的交流中,我们学习到的是重新审视了自己的求职观: ①找一个你有实力胜任、很愉快地去奉献拼搏、薪酬丰厚但重要程度其次的工作 在学校,我们大部分对未来理想工作的理解似乎很简单,工资高就好。IT是普遍认为比较辛苦、压力很大的一个行业,社会上对程序员的调侃有的的确过分了一点,但是某种程度也反映了现实。 我们问了在阿里工作的师兄师姐,他们的工作时间没有很苛刻的限制,必须几点上班,必须几点下班。加班往往也不是老板逼你,而是你心甘情愿或是受压力所迫。可能你在原则上规定的上班时间迟到或者早退,并没有人来管你或者罚你工资,但是,一个前提是:你必须完成团队分配给你的任务。团队对迟到早退的人“惩罚”也是象征性的,每次开会的时候出钱请大家吃水果。 一位师姐告诉我们,虽然公司给的下班时间是晚9点,但是她回到自己的住所后为了完成给的任务,常常也要到11点后才睡觉。 一位师兄说,在完成常规工作任务时,阿里并不赞同加班,他们甚至认为经常加班的原因是你能力不够。当然如果有临时特别重要的项目任务要加班加点来完成除外。 阿里每年有个绩效展示的答辩会,会根据你的评定得分决定你是否晋升。你连续几年的评分再差可能阿里巴巴都不会解雇你,因为公司主动辞你还要支付给员工一定的赔偿,但是这样的人往往会自己主动辞职,因为这样的工作可能是他无法胜任的,留在公司只会徒增痛苦,迫于压力和自信心的打击他必须寻找新的公司去找一个有实力胜任、很愉快地去奉献拼搏、薪酬丰厚但重要程度其次的工作。 ②你的第一个工作很重要 同行的姚老师告诉我们,第一个工作你能否胜任,你能否愉快地去奉献,决定你以后工作生涯的心态,第一个工作如果让你充满信心,你以后的工作一路坦途,相反可能就会“破罐子破摔”。 ③程序猿技术能转管理很重要 程序猿不可能干一辈子技术,如果要想在IT一直干下去,转型管理是关键。阿里技术的P6、P7分别对应管理的M1、M2,两者等价转换,当你的技术达到P6以上时,你可以自由选择是否转型做管理。 把研究生要做的事安排到大三大四来完成 有学姐说的一段话令我印象深刻:在大学我们经常纠结去做许多事情,很多事与其纠结选择哪个,不如直接利用纠结的时间把两个都做了,只有在做的过程中才能更好的理解每个的本质。还有,很多人觉得自己在本科时期和别人差距有点大,想通过上研究生来弥补差距,但其实,完全可以在大三大四别人准备考研时你自己努力提高能力追赶别人,要知道两年时间可以做很多事的。如果对毕业后直接就业或者考研没有很清楚的倾向,学长们的建议是选择就业,一是在公司里的学习速度远比在学校里快,更容易接触到实际生活的问题,也更容易提高自己的能力。 其它 ①大三那个暑假实习很重要。阿里的暑假实习(实习工资5000左右)其实就是在做一个阿里员工新进阿里的培训适应工作。进阿里的前三个月,公司会对你进行一些授课形式的培训。如果你能在暑假实习就完成这些培训,无疑掌握了一些先机。这肯定不仅仅适用于阿里巴巴。 ②师兄师姐在阿里(当然不仅仅局限于阿里)帮我们算是积攒了一些资源,内推不仅仅为我们提供便利,也是在为他们积攒人气,好好把握这些资源。 参考文章:http://qiezhijia.wang/shu_qi_shi_jian_zhi_a_li_zhi_xing/

    2年前 (2015-07-25) 浏览: 810 评论: 9

    最新文章

    Women in IT

    Women in IT

    极客视点 2个月前 (08-27) 浏览: 69 评论: 0

    In ThoughtWorks, there are three pillars: continuous business(P1), software excellence(P2), social and economic justice(P3). Taking P3  as a mission of company makes ThoughtWorks unique in all companies.In This week, The founder of ThoughtWorks ,Roy ,has sold ThoughtWorks to APAX, a private equity investment group in Europe, After that the topic about whether P3 will be reserved in the missions of ThoughtWorks is actively discussed among ThoughtWorkers. Social and economic justice is a serious topic in ThoughtWorks. In TWU, this topic will be talked about almost every week.   The social respect for information technology affects women's information technology, and the work of IT is considered to be very hard and programers work overtime. In China , girls are expected to find a job with little strength. We have done some research to know about the general situation about women in IT.The first problem is gender imbalance.we have found the proportion of women at entry levels in IT are very low, and it tends to worsen as women become more senior. A study shows that In USA, IT jobs held by women is only 25%. The second situation we have found there is common pay gap between men and women.In 2015,women working full time in the united

    我们走过的人生境界

    我们走过的人生境界

    岁月 5个月前 (05-11) 浏览: 171 评论: 3

    小时候,我们觉得这个世界天真烂漫,一切都是那么美好,世界就像花园一样,蜂飞蝶舞,阳光明媚; 长大一点,我们读了一些书,见过更多的人,看到更多人生百态,慢慢发现这世界有许多的阴暗面,人怎么能那么坏,那么龌龊,这个国家太黑暗了,社会太无可救药了,我们简直生活在层层阴霾下惶惶终日,随着时间的推移,这阴霾感觉越来越重。 后来,我走过许多路,见过更多的事,经历过人生的许许多多的炎凉,感悟过许多先贤的箴言,理解了许多当初自认为恶人的心境,发现生活一点一滴的感动与温暖,我慢慢发现世界不是我想象的那么黑暗的,芸芸众生里掺杂着多少无奈,有许多人有着不为浅薄的我所不理解的睿智。我当初是片面了吗,不,我相信认识是需要一个过程的。 破茧成蝶,返璞归真,江山如此多娇啊!世界是那么真实,那么辽阔,我解开种种疑惑,冲破心里的种种阴霾,见到久违的阳光,世界越来越光明;人生突然豁然开朗,世界不是蓝天白云,而是如同晚霞下的那种壮美啊! 有一天,你独上高楼望尽天涯路的时候,有人对你说,你还在第一境界啊,幼稚!我希望,你能自信这是别人的浅薄,并用仁慈的胸怀容纳别人的虚妄。

    软件不仅是开发那么简单

    软件不仅是开发那么简单

    极客视点 软件开发 8个月前 (03-09) 浏览: 415 评论: 6

    许多“有抱负”或者热爱编程的程序员,对全栈工程师可能都是孜孜以求。全栈是一种极客精神,对软件的每一种编程语言、每一个开发平台都有着浓厚的兴趣,并愿意为之付出努力,全栈工程师应该对软件各个方面都有广泛的接触面,对软件有深刻的洞察力,这种广而深的见识将让我们开发出更加高效率地开发应用。 我们周遭的人对全栈的描述往往是“我熟悉C/C++,java;swift,Ruby都会一点,还能开发IOS、Android、Windows应用,Web前端后端都做过。用过这些框架:……” 全栈元素周期表,来自xebialabs 是的,在没有接触ThoughtWorks之前,我对全栈的定义就是这样的,什么语言都“会”,至少写过,各个平台上的开发都有经验。在这种定义下,我会略自负地讲自己算是一个全栈工程师吧。甚至,哈哈,除了上面讲的这些,我还开发过硬件平台上的软件(Arduino),自己用PS为自己的Android客户端设计过界面、图标,鼓捣过图标字体。是呀,想想这就骄傲,突然发现自己会那么东西。(当然了,理性地讲,其实自己心知肚明也就是“会一点”。) 窃认为我本人是一个对生活比较有想法的人,当我发现生活中有一些可以用软件来解决问题的时候,我喜欢自己开发出软件来解决:比如 我曾因为看到大学请假不方便,然后开发出给学生、辅导员、任课老师使用的请假APP,这个最后作为我Android开发实践课的大作业作品,老师打了100分;由于学校会经常让学生签到,我和几个同学利用微信公众号首先让学生在微信上签到并且获取他们的地理位置;由于在火车上无聊,我和几个同学做出一个在火车上搭建局域网然后借助我们的系统让乘客在火车上点餐、看电影、看火车沿途风景直播、到站提醒的应用……。在这个过程中,我得到很大的满足感和成就感,也学会了更多的软件技术,似乎离“全栈”更近了一步。 产品不仅是有想法就去干,而是持之以恒的打磨,它许多软件开发的多个角色地合力完成 暑假在腾讯实习的两个月,学习到的技术实际上是其次的;甚至因为实习颠覆了之前对BAT神一样存在的看法。他们的代码质量的确很高,但是并不是不食人间烟火,他们也会写Hard code,也会满百度、谷歌地贴代码。实习中让我看到的更多的是,一个好的互联网企业善于让多个角色之间进行良好的互动,它有一个成熟地为开发代码而做的系统;与我们在学校里不同的是,一个来自与产品和测试的需求、Bug工单流传到开发有一个完善严格的流程。 我做过的许多东西,实际很多都没有投入使用,仅仅是自己的自娱自乐,一个软件产品真正投入大规模使用,需要大量人力去做产品、运营。然后,我热爱开发,但是觉得产品、运营是个麻烦事。 入坑越久,你以为越渊博,实际上不自知视野变小了 校招,加入了我一个很喜欢的公司:ThoughtWorks(TW),TW是一个崇尚分享的公司,她期望我们把我们自己的想法用文章的形式表达出来。在周末时间,公司安排了职前培训,其中有一项任务是让我们在简书上写我们的学习过程、分享心得感受。同时公司的培训团队(“思沃大讲堂”)还会定期统计我们的文章,统计方式是做了一个爬虫抓取简书上的文章信息然后汇总输出报告。 当时,我正在学习Ruby网络请求的知识,看见每周一次发来的文章统计报告,我就萌生了做一个Ruby爬虫的想法。做出来以后我输出了一篇文章到简书,负责TW培训的李鹏大哥(下称“总理”)看到以后,便决定让我的代码来做帮助同学们统计文章的工作,之后让我专门成立了一个小团队:思沃大讲堂爬虫项目组 我最初想成立这个项目组的目的,帮我们统计文章只是其一,更重要的是我想通过这个项目带动自己的Ruby学习进程。而总理的目的则是,希望学习项目开发的过程,让更多的人参与、合作。 到今天,几个月过去了,虽然爬虫组虽然基本能定期给参加思沃大讲堂的同学们发送一份统计报告,但是远远没有达到初衷。个人的出发点,本来想把报告做的更漂亮一点,页面中加入一些图片、报表等直观的视觉效果,加入文章排行提高同学们的活跃度,通过简单的算法实现好文章、优秀作者的推荐,找出最贴心的小buddy等等。从这些我想达到的初衷讲,这个项目显然失败了,而失败的原因,也正是总理 想要我们通过这一项目培养的项目开发、交流合作等方面的能力不足。 这个项目中,作为项目发起人,我最早为项目勾画了一个蓝图,搭建起项目的框架。一个在自己看起来很简单的一个需求点,对于自己看来实现起来也十分简单,但是传达给项目成员并实施却十分困难;首先,对于项目发起人,可能会根据自己的一些经验提出一些需求点,虽然这些需求在提出时就经过自己的大脑过滤是可实现的,但是对于没有相关经验的其它团队成员来说,他们认为的可不一定有那么简单。作为作为软件工程科班出身的学生,在我们“稚嫩”的认识中,软件的世界里似乎只有程序员这一个角色,当然“只有”这个词说的太偏执,诚然我还知道产品、测试、运营、运维等角色,但是长期囿于学校里小型项目的学生,往往长期忽略了产品甚至测试的重要性,产品,提需求的是我们;测试,我们写代码的自己测,不重要的地方就省掉吧;运维,随便搭个服务器呗。我们把软件开发的绝大部分重心放在开发上面,做软件就是开发,这一意识的植入,将会导致深重的开发本位思想,或者做事情的都站在开发的角度。比如作为一个项目发起人,我负责这个项目要实现什么样的功能,带着开发思维,是这样提“工单”的: 实现数据库中插入和更新文章信息(封装成一个方法),用于以后在爬虫抓取文章信息后直接调用 甚至我还会写明大家使用Sqlite3数据库。这样的工单开发思维就比较重了,作为项目发起人、作为产品、作为BA(业务分析),这样的单子就严重越权了,我们的职责应该是作为一个角色,要达到什么效果,这样做有什么价值(As a role,I want to …, so that …),具体怎么做应该交给开发,而不是用什么技术都要规划好。当总理指出我的错误,我却依旧带着“开发”的思维来规划项目时,我想我“入坑”依旧了。 或许,对于一个个人项目,我们可能有非常清晰的意图知道自己接下来做什么,然而,做一个较大的项目始终依托团队来完成,作为“世界上最复杂的逻辑实体”,软件是越来越难被一个人完成的。 我所看到“市面”上的“软件工程师”,坦诚地讲,往往等同于“码农”,或者通俗地讲就是“写代码的”。写代码,码农,从“软件工程”的学科定义来讲,并不能算的上是软件工程师的,更谈不上全栈软件工程师。作为一名“科班出身”的“软件工程”专业的学生,教科书上的定义翻译成通俗点的话是这样的:用工程化的方法来开发软件。 而我想,作为工程,应该是怎样规划“施工”,怎样管理团队,怎样让工程更加高效、有序地进行,而这正是软件工程师与“写代码的”之区别本质所在。而全栈,也不仅仅是局限于开发技术上的全栈,而是包括业务分析、项目管理等等软件工程应用上的全栈。   版权印为您的作品印上版权22104666

    React Native中添加Base64支持

    React Native中添加Base64支持

    算法语言 8个月前 (03-08) 浏览: 496 评论: 0

    最近极客人在使用React Native制作的自己的博客客户端,客户端在调用Wordpress Rest API时有些操作需要使用HTTP认证,而HTTP认证中主要就是在HTTP请求中的头部加入 "Authorization"字段,Authorization字段的内容时 用户名:密码 的base64编码 环境依赖 Base64编解码算法在Nodejs的buffer组件中有支持,首先我们需要在React Native项目根目录下运行命令行安装buffer依赖: 安装完毕后,React Native根目录的app.json中的dependencies便会自动加入下面一条: React Native中添加Base64支持 使用方式 引入 编码 解码   Buffer项目主页: 更多buffer的使用方法参考Buffer主页:https://github.com/feross/buffer

    Ubuntu下利用Java CV获取双目摄像头图像

    Ubuntu下利用Java CV获取双目摄像头图像

    算法语言 8个月前 (03-06) 浏览: 237 评论: 0

    毕业设计的项目是做一个通过双目摄像头测出物体的距离,然后控制模型车避开较近的障碍物,所以需要将安装在模型车上双目摄像头的图像传输,发送到电脑端进行双目测距算法的计算,然后电脑将计算的结果发送到小车,小车控制行驶方向从而避开障碍物。小车上使用Pcduino开发板,安装Ubuntu系统,外插Arduino扩展板,连接小车的硬件部分。 从淘宝上买回的双目摄像头后,使用java cv获取到双目摄像头图像的方式与单目摄像头的方式是类似的。不同的地方是要想分离双目摄像头的画面需要设置代码中的分辨率参数。 如果不对分辨率进行任何的设置,得到的效果是这样的: 双目摄像头画面 是不是似曾相识,我们在电影院看3D电影不戴眼镜看到的就是这样的。对于开发者来说两路图片混合在一起显然不是好事,需要在代码里做如下设置。 因为笔者手中的摄像头每一只分辨率为640480,所以将分辨率改成1280480,可以成功的将图片分离。 图片分离以后的效果是这样的: 双目摄像头图像分离 代码使用了java cv的库,如果是maven项目,需要这样配置依赖: 在pom.xml中project节点下添加: 更多的环境配置可以访问 java cv的官方Github主页。

    怎样释放Android手机存储空间

    怎样释放Android手机存储空间

    算法语言 8个月前 (02-23) 浏览: 183 评论: 0

    Android应用在运行之中会产生一些数据,比如图片的缓存,数据库文件,配置文件等等。我们开发时可能会有这样的一个需求清除应用内缓存的数据,可以让用户选择删除应用内产生的数据,这也是比较人性化的设计点。过多的缓存会占用手机的存储空间,据说也会降低手机的IO性能。 下面这是简书Android APP中提供了清除缓存的设计: 那么Android应用在运行中会产生哪些数据呢?它们都被存放在哪里?然后我们根据产生数据的位置实现清除功能 首先简单讲讲Android的四种数据存储方式 1、SharePreferenc 一种轻型的数据存储方式,实际上是基于XML文件存储的“key-value”键值对数据;通常用来存储程序的一些配置信息。 SharePreference的存储目录: 其存储在“data/data/程序包名/shared_prefs目录下。 SharePreference修改和存储数据 根据Context的getSharedPrerences(key, [模式])方法获取SharedPreference对象; 利用SharedPreference的editor()方法获取Editor对象; 通过Editor的putXXX()方法,将键值对存储数据; 通过Editor的commit()方法将数据提交到SharedPreference内 2、SQLite SQLite是一个轻量级关系型数据库,既然是关系型数据库,那操作起来其实跟mysql、sql server差不多的。 Android提供了强大数据库管理库,同时也支持运行哦原生命令,实现数据库的增删改查 3、 File Android中可以在设备本身的存储设备或外接的存储设备中创建用于保存数据的文件。在默认状态下,文件是不能在不同程序间共享的。 File可以通过FileInputStream和FileOutputStream对文件进行操作。 4、ContentProvider ContentProvider相对于其它的方式比较复杂,当然其功能相对于其它的方式也是革命性的改变。它能够实现跨应用之间的数据操作。利用ContentResolver对象的delete、update、insert、query等方法去操ContentProvider的对象,让ContentProvider对象的方法去对数据操作。 实现方式为: 在A程序中定义一个ContentProvider,重载其增删查改等方法; 在A程序中的AndroidManifest.xml中注册ContentProvider; 在B程序中通过ContentResolver和Uri来获取ContentProvider的数据,同样利用Resolver的增删查改方法来获得和处理数据 Android应用的数据存储路径 应用内数据的所有路径和对应的数据清除代码: /data/data/com.xxx.xxx/cache - 应用内缓存(注:对应方法getCacheDir() )   /data/data/com.xxx.xxx/databases - 应用内数据库   /data/data/com.xxx.xxx/shared_prefs - 应用内配置文件   /data/data/com.xxx.xxx/files - 应用内文件(注:对应方法getFilesDir())   由于Android应用数据存储的权限比较宽泛,一个Android应用几乎可以在SD卡任意位置创建一个目录和文件,所以上面的几个存储路径只是Android应用最基本的存储路径。更多的清除代码实现在下面的清除工具类中将于更详细的讲解 清除工具类的代码实现 为了方便使用,下面时我封装好的数据清除工具类:   系统设置应用管理的”清除数据“的实现方法 在Android系统设置的应用管理中,提供了”清除数据“的功能,这一功能对应用数据的清除更加彻底,我们可以在代码中实现类似的需求,不过下面代码的执行将使应用退出:  

    【图片去霾算法实践】NDK下二维数组的传递

    【图片去霾算法实践】NDK下二维数组的传递

    算法语言 9个月前 (01-16) 浏览: 249 评论: 1

    最近看到了一篇关于图片“去霾算法”的文章,一下子就有了兴趣,所以想着能不能实现。由于数学能力捉急,无法理解文章的思想和相关论文。于是在Github上找到了相关的Java代码,算法的效果十分明显: 去霾前的图片 去霾算法处理后的图片 不知道是不是算法太复杂,还是Java效率相对较低的缘故,一个3M的JPG图片处理下来需要近20秒的时间。 效果明显的算法让我萌生了开发一款去霾相机的想法,为了获得更快的处理速度,在研究Java去霾算法代码后,我决定将其写成C++代码,然后通过NDK(Android原生开发)移植到Android平台。 项目的基本思想是在Android/Java下获得图片的Bitmap将其像素点转成二维的int二维数组,然后将int二维数组传入JNI层,交给NDK层C++代码处理,NDK层处理完毕后返回去霾后的int二维数组,由Java层转成Bitmap重新显示或保存。 经过一天的奋斗,我终于实现了用C++代码实现“去霾”算法并顺利移植到Android原生开发中。效果已实现,目前还有很多BUG,图片大小稍大时算法耗费的时间和内存过大. Android 图片去霾 本文预计会写一个系列,后续根据情况可能会开源。如果你对去霾算法实践感兴趣,可以关注我的简书和博客:http://wangbaiyuan.cn ,后续将持续更新 本篇文章介绍NDK和Java层怎样互传二维数组 NDK->C++ ndkArray[mHeight][mWidth]->cppArray[mHeight][mWidth]   C++->NDK cppArray[mHeight][mWidth]->ndkArray[mHeight][mWidth]  

    微信小程序背后的思考

    微信小程序背后的思考

    极客视点 9个月前 (01-11) 浏览: 218 评论: 1

    1月9日,万众期待的微信小程序正式发布;朋友圈早早地被微信小程序的相关信息所刷屏,极客人也耐不住心里的好奇心,也关注了几个微信小程序尝了尝鲜儿。从技术的角度上,微信小程序个人认为谈不上有什么可圈点的创新;但是在软件应用的生态上,可能会产生巨大的影响。 微信公众号 大一统 早在一年多前,那时候还没有人任何微信小程序的风声,极客人在和同学的交流过程中,就曾“预言”了“小程序”的出现。那时候微信公众号只有 订阅号和服务号,我说,微信公众号应该可以加一个“应用号”,一年多以后,微信小程序横空出世,微信公众号也真的多了一个类型 “应用号”,名字和我当初起的都一模一样。当然,我在这里并不是想炫耀自己前瞻眼光,而是想表明,微信小程序的出现是软件开发中一个很正常的产物。 在软件开发繁荣的今天,编程语言越来越多,软件开发的平台不尽相同,软件开发商为了迎合不同使用平台的用户,不得不开发各个平台上的应用,IOS、Android作为移动操作系统的两大巨头,每个都有巨大的用户群,这意味着软件厂商要做一个同样的软件,都要编写两套代码:Android上的JAVA,IOS上的Object C/Swift,这无疑提高了成本。从近几年的软件开发的趋势来看,虽然大家都以标榜自己“全栈开发工程师”为荣,但是我却认为这也只是无奈之举,如果有一套代码在所有平台都能跑的话而且都拥有绝佳的性能的话,没人吃饱着撑着,造出各种开发语言。 软件开发百花齐放的今天,无论是程序员,还是软件厂商,都希望能够有一个“大一统”来结束这个既繁荣又混乱的局面。前几年,HTML5开发移动APP企图基于各平台的浏览器实现跨平台;Web中的前端开发中的“响应式布局”实现一套代码在 PC、平板、手机上智能化显示最适合的界面;QT开发工具希望用一套C++代码开发出在Windows、Linux、Android、IOS的原生APP;最近,React 正在用JS统治Web、IOS、Android的路上越走越远…… 微信小程序要做的,就是开发一套代码,在IOS、Android拥有相同的用户体验,而它基于的是HTML。HTML无疑在各个平台拥有最好的兼容性,哪里有浏览器,哪里就可以解析HTML。 虚拟化 如果让我用一些关键词来概括软件开发的特点的话,在我的答案中一定有一个词就是“虚拟化”。操作系统完成了底层硬件的虚拟化,让上层应用不需要关心底层硬件的操作细节和差异。虽然运行着windows操作系统的计算机数以亿计,它们的CPU、网卡、磁盘等都各不相同,通过Windows系统的Win32 API,程序员和上层应用不必理会底层环境的差异性,程序员运用相同的代码就可以对不同型号的硬件进行操作。同理的还有Java虚拟机。 可以这么说,微信的小程序,就是以微信为平台,通过相同的代码,可以在IOS和Android上拥有相同的操作,比如布局、支付、定位等等,微信虚拟化了布局、支付、定位这一层在Android和IOS上的细节 。在这个意义上,可以说微信是个“操作系统”。当然这样就把操作系统说的太简单,更准确的是微信应该是一个虚拟机。 插件化带来的思考 能预言到“微信小程序”的出现,是不足为奇的,现在许多软件在完成各自职能的同时,往往自身也作为平台出现。 平台是什么?牛顿说,“如果说我看得比别人更远些,那是因为我站在巨人的肩膀上。”。那么这个巨人就是牛顿的平台了。虚拟化带来的结果,就是为上层应用带来更坚实的平台。在平台之上,我们可以忽略平台下面的实现细节。 作为平台出现的软件,可以实现诸多的扩展。极客人的博客是使用wordpress CMS平台搭建的,在wordpress上面,我们可以利用安装插件的方式实现防垃圾评论等等功能;在Chrome浏览器上,我们通过安装插件实现了广告屏蔽;而QQ内置查看word文档的功能,也是通过插件实现的(极客人实习的时候看过QQ的源代码)。 插件是平台之外的扩展,基于平台的插件,忽略了底层细节,同时让平台的功能更加丰富,走得更远。同时,开放的平台,也让平台更加活跃,为自己的生存灌输了青春。 微信小程序在某种意义上也是微信的插件,在极客人尝试了用wordpress、Chrome装插件后,我想,预知“应用号”的出现不会是什么难事。 用完就想卸载 曾经看过一篇文章,每个软件厂商都希望让自己开发的软件在用户的PC、手机上不被卸载,而其中的关键就是占领用户的桌面和状态栏。然而现在的应用市场上的APP千千万,由于过多的APP会导致手机的速度变慢、可用ROM变小,许多用户都是装完一个APP就马上卸载。 由于微信小程序的即用即删性,符合了用户的“洁癖”心理,在一些不常用的应用上,微信小程序必定大受欢迎。 姗姗来迟的谷歌Instant App 在微信小程序发布之前,谷歌在2016年谷歌大会上,曾计划推出一种类似的"小程序"—Android Instant APP;通过谷歌Deep link,用户点击一下链接即可以运行应用,目前仅支持比较简单而基础的应用,可以说它介于纯粹的Web应用和应用程序之间,“Instant Apps”将应用下载大小限制为最高4MB,并向下兼容到安卓4.1操作系统。 我们如今手机安装的应用,占用内存动辄百兆起步,许多应用添加了我们根本不需要的功能,应用间的相互串联也是让我们苦不堪言。如今Instant Apps为我们开启了一扇新的大门,我们手机目前也有点击网页跳转应用的功能,与此不同的是,Instant Apps的跳转直接并非转往完整的应用,而是根据用户的需要,跳转至拥有某个特定功能的APP,比如说我们在网页观看视频,需要转往应用观看,然而该视频应用十分卡顿,经常推送一些无用信息,若该视频应用开发了Instant Apps,那么我们会跳转到该视频的Instant Apps界面,该界面仅包含视频播放的相关功能,十分简洁流畅。 这么一来,若许多购物应用和社交应用都开发了Instant Apps,那么我们的用户体验将会有很大提升,手机的负担也不会那么沉重。从开发者的角度讲,这类应用的推广难度降低,甚至不需提交至应用商店,仅需分享应用的相关连接即可,十分省心。用户点击即用,倒也快捷 基本应用场景和微信小程序类似,个人认为的最大优点可能是原生开发性能会优于微信。但是由于微信小程序拥有微信这个大流量的入口,而且已经先发制人地发布了,我想,Instant APP至少在中国地区胎死腹中。 目测腾讯广告收入不久会出现一个高潮 目前微信小程序里里面还没有广告,但是不久的将来,目测微信很快就会提供财付通的广告SDK方便开发者接入,这么应用转向微信小程序,腾讯的广告收入必定迎来一波大幅度增长。

    Ruby图片处理基本算法(二)二值、灰度、浮雕…

    Ruby图片处理基本算法(二)二值、灰度、浮雕…

    算法语言 10个月前 (12-30) 浏览: 226 评论: 0

    一、灰度算法 彩色照片每一个像素的颜色值由红、绿、蓝三种值混合而成,红绿蓝的取值分别由很多种,于是像素的颜色值也可以有很多种颜色值,这就是彩色图片的原理,而灰度照片则只有256种颜色,一般的处理方法是将图片颜色值的RGB三个通道值设为一样,这样图片的显示效果就会是灰色。 灰度处理一般有三种算法: 1 最大值法:即新的颜色值R=G=B=Max(R,G,B),这种方法处理后的图片看起来亮度值偏高。 2 平均值法:即新的颜色值R=G=B=(R+G+B)/3,这样处理的图片十分柔和 3 加权平均值法:即新的颜色值R=G=B=(R * Wr+G*Wg+B*Wb),一般由于人眼对不同颜色的敏感度不一样,所以三种颜色值的权重不一样,一般来说绿色最高,红色其次,蓝色最低,最合理的取值分别为Wr = 30%,Wg = 59%,Wb = 11% 下面是加权平均值法的Ruby实现:   灰度效果: out_grey.jpg 二、二值化 图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。所有灰度大于或等于阈值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。 图像二值化常常用于破解验证码等图片识别应用上     二值化效果 out_binary.jpg 三、底片 底片效果的实现很简单,就是将RGB的每一个通道值取反,就是用255去减   底片效果 out_contrary.jpg 四、浮雕效果 浮雕的算法相对复杂一些,用当前点的RGB值减去相邻点的RGB值并加上128作为新的RGB值。由于图片中相邻点的颜色值是比较接近的,因此这样的算法处理之后,只有颜色的边沿区域,也就是相邻颜色差异较大的部分的结果才会比较明显,而其他平滑区域则值都接近128左右,也就是灰色,这样 就具有了浮雕效果。 在实际的效果中,这样处理后,有些区域可能还是会有”彩色”的一些点或者条状痕迹,所以最好再对新的RGB值做一个灰度处理。   浮雕效果 out_emboss.jpg 项目主页 geekeren/RubyImageProcess

    Ruby解析bmp文件及图片处理算法(一)

    Ruby解析bmp文件及图片处理算法(一)

    算法语言 10个月前 (12-30) 浏览: 138 评论: 0

    一、BMP文件格式详解(BMP file format) BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式 下面以Notepad++为分析工具,结合Windows的位图数据结构对BMP文件格式进行一个深度的剖析。 BMP文件的数据按照从文件头开始的先后顺序分为四个部分: bmp文件头(bmp file header):提供文件的格式、大小等信息 位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息 调色板(color palette): 可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表 Ø 位图数据(bitmap data):就是图像数据啦^_^ 下面结合Windows结构体的定义,通过一个表来分析这四个部分。 BMP文件数据结构 我们一般见到的图像以24位图像为主,即R、G、B三种颜色各用8个bit来表示,这样的图像我们称为真彩色,这种情况下是不需要调色板的,也就是所位图信息头后面紧跟的就是位图数据了。因此,我们常常见到有这样一种说法:位图文件从文件头开始偏移54个字节就是位图数据了,这其实说的是24或32位图的情况。这也就解释了我们按照这种程序写出来的程序为什么对某些位图文件没用了。 BMP文件头数据结构 Paste_Image.png 位图信息头数据结构 位图信息头数据结构 位图数据 每个像素占一个字节,取得这个字节后,以该字节为索引查询相应的颜色,并显示到相应的显示设备上就可以了。 注意:由于位图信息头中的图像高度是正数,所以位图数据在文件中的排列顺序是从左下角到右上角,以行为主序排列的。 也即我们见到的第一个像素60是图像最左下角的数据,第二个人像素60为图像最后一行第二列的数据,…一直到最后一行的最后一列数据,后面紧接的是倒数第二行的第一列的数据,依此类推。 如果图像是24位或是32位数据的位图的话,位图数据区就不是索引而是实际的像素值了。下面说明一下,此时位图数据区的每个像素的RGB颜色阵列排布: 24位RGB按照BGR的顺序来存储每个像素的各颜色通道的值,一个像素的所有颜色分量值都存完后才存下一个下一个像素,不进行交织存储。 32位数据按照BGRA的顺序存储,其余与24位位图的方式一样。 像素的排布规则与前述一致。 对齐规则 讲完了像素的排列规则以及各像素的颜色分量的排列规则,最后我们谈谈数据的对齐规则。我们知道Windows默认的扫描的最小单位是4字节,如果数据对齐满足这个值的话对于数据的获取速度等都是有很大的增益的。因此,BMP图像顺应了这个要求,要求每行的数据的长度必须是4的倍数,如果不够需要进行比特填充(以0填充),这样可以达到按行的快速存取。这时,位图数据区的大小就未必是 图片宽×每像素字节数×图片高 能表示的了,因为每行可能还需要进行比特填充。 填充后的每行的字节数为: ,其中BPP(Bits Per Pixel)为每像素的比特数。 在程序中,我们可以表示为: int iLineByteCnt = (((m_iImageWidth * m_iBitsPerPixel) + 31) >> 5) << 2; 这样,位图数据区的大小为: m_iImageDataSize = iLineByteCnt * m_iImageHeight; 我们在扫描完一行数据后,也可能接下来的数据并不是下一行的数据,可能需要跳过一段填充数据: skip = 4 - ((m_iImageWidth * m_iBitsPerPixel)>>3) & 3; 二、Ruby实现BMP图片的解析 根据上面的BMP图片格式的介绍,我可以写出以下Ruby代码。   file对象中的read(length)是从文件指针开始读出length个字节的数据,数据类型是字符串,通过unpack函数,我们可以通过传入unpack参数解析出bmp图片的数据结构。 以为例,根据上面的BMP文件数据结构的分析,read(14)是读出bmp文件的前14个字节的文件头,参数'a2LS2L'可以将14个字节的数据解析为 两个字符(1*2字节)、一个Long型(1*8字节)、两个Short型(2*2字节),分别取出bmp图片的文件类型(“BM”)、文件大小、两个保留字段、 图像数据偏移量(@imageDataSize) 。 Paste_Image.png 再从文件中读入@imageDataSize个字节的数据,解析为字符数组,里面除了一些因对齐规则以外的数据都是图片的数据;   如果是24位BMP图片,那么每个像素占据三个字节,分别为RGB中的B、G、R值。 以一个height=2,width=2的图片为例,其图片数据部分转成单字节数组如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 124 254 258 123 212 21 221 56 107 204 251 100 52 100 111 59 其中每一行的无效数据:skipByteALine = 4 - ((2 * 24)>>3) & 3=2 为了更形象地表示图片像素与RGB数据的对应关系,在此我以二维矩阵的方式展示上面的一维数组: Paste_Image.png 由于对齐原则,第一行的7 、8,第二行的15、16元素将被丢弃。 基于以上考虑,可以通过以下Ruby代码获取指定像素位置的RGB值   通过以下Ruby代码设置指定像素位置的RGB值   三、Ruby处理图片 通过上面介绍的setRGB和getRGB方法来修改bmp的图片数据字节数组,我们就可以对bmp的指定像素进行操作了,下面介绍将图片灰度化:   上面的代码我取得所有像素的RGB,然后求出R、G、B值的平均值,RGB值三值相同时像素呈现为灰色 上面的操作只会修改图像数据字节数组,修改完毕需要保存到磁盘,保存方法如下:   原图: raw.jpg 处理效果: out_grey.jpg 下篇文章我将介绍二值化、浮雕滤镜、底片滤镜等图像处理算法 预览: Paste_Image.png 项目主页 geekeren/RubyImageProcess   参考文章 http://blog.csdn.net/hzqnju/article/details/5927825 http://www.jianshu.com/p/30fbaab6d0a6 http://blog.csdn.net/hxker/article/details/50013303 http://blog.csdn.net/o_sun_o/article/details/8351037

    登录

    忘记密码 ?

    您也可以使用第三方帐号快捷登录

    切换登录

    注册