当前位置: 首页 > news >正文

环保网站 中企动力建设北京免费建站网络营销

环保网站 中企动力建设,北京免费建站网络营销,广州商砼建站规范,深圳网站建设推广方案本文写于圣诞节北京下午慵懒的午后。本文偏技术向#xff0c;不过应该大部分人能看懂。 五年之痒 2016年#xff0c;能记入个人年终总结的事情没几件#xff0c;其中一个便是开源了Hawk。我花不少时间优化和推广它#xff0c;得到的评价还算比较正面#xff0c;因为负面评… 本文写于圣诞节北京下午慵懒的午后。本文偏技术向不过应该大部分人能看懂。 五年之痒 2016年能记入个人年终总结的事情没几件其中一个便是开源了Hawk。我花不少时间优化和推广它得到的评价还算比较正面因为负面评价也没什么渠道进我耳朵。 不过你知道我写这个东西花了多久吗 掐头去尾这是第五个年头了。 读研究生伊始实验室开始做数据挖掘但我发现大家做研究都是一段段的代码遇到新问题就不得不再拷贝一份修改很少想过复用。于是我便花了一年的时间开发了一款现在看起来配色丧心病狂的“数据挖掘软件” 它居然能在上面刷微博能把任何一个学姐学妹在微博的蛛丝马迹全扒出来渲染出配色更丧病的绚丽图表这里有更详细的细节。实验室老师最喜欢拿这套软件给参观的领导演示了。 我多少有点偏执想用纯图形化的方式构建数据挖掘的全部流程从获取清洗数据建模训练到最后可视化。但以我当时的算法和软件水平这样的东西根本就不可能做完善我还意淫着能把它商业化。最终结果是它跟着我一起毕业除了我和几个学弟之外没人用过。 工作后靠业余时间维护它有很大的困难。数不清的bug和时间花销让它成了拖后腿的包袱。一些考虑不周的接口设计于几年之前后来想修改却花费巨大。更重要的是它的未来在哪里 时值2015年桌面软件已死web都已过时移动端才是兵家必争之地。这种大杂烩和复杂度普通人不可能会用程序员没有文档不爱用大神不屑于用。 我也不想让它扔在历史的故纸堆里无人问津索性就开源吧! 在开源之前我做了一件事将它改名为Hawk寓意为驰骋天空的鹰把我自己用的次数少于10次的组件全部删掉连3D可视化统计和预测模块也不幸免只保留爬虫和数据清洗因为分析和挖掘已经有其他工具做得更好了比如Python那无比强大的工具链。我认识到只做一件事并将其做好是多么重要。 老司机送它上路了那一天它正式出现在GitHub上此处应当有掌声^_^ 我对Hawk的评价 我就是用程序员的思路去设计Hawk的好玩有趣是最重要的。 先说优点起码它能用几乎没接触过编程的人也能在看过教程后做出他自己的设计熟练后效率会很高。 我最喜欢的是手气不错升级Hawk2.0之后绝大多数网页都可以通过一键提取数据。其实原理很简单就是树结构的模板匹配。 其次便是那个所见即所得的数据清洗在调试模式下快速设计任务在执行模式下并行执行。恕我孤陋寡闻这种基于流式管线思路在其他软件上用的并不多。 最后便是子任务再复杂的需求都可以通过子任务分而治之比如多次定向跳转。这东西让八爪鱼和火车头去试试看 Hawk最大的价值是将复杂的逻辑链条化和可视化了你可以将代码变得不那么耦合像搭积木一样方便地组合。当然这些都拜于函数式编程的思想所赐。 再说缺点Hawk有很多的bug没单元测试功能不完善。但这都不是最根本的缺点最根本是难于实现条件判断和循环你很难写出if,switch和while。 这也是函数式语言的共同问题你不得不逼迫自己用另外的思路去解决。虽然通过引入子任务能“不够优雅”地解决它但依旧要花费不少脑筋。 有的人觉得Hawk不够强这是因为它是图形化软件。为什么具备UI的软件很难和命令行相比因为设计UI的新功能时不仅需要考虑它的算法更要考虑它如何在UI上呈现。有些功能非常有用比如爬虫常见的BFS和DFS(深度和广度优先遍历)但在UI上配置会异常繁琐我不得不将它们抛弃掉只保留最常用的功能。 为什么呢轻松写BFS的人会想用Hawk吗应该不会他们也许会直接敲代码。 Python版本的Hawk: etlpy 因为图形界面和C#本身的诸多不足我开始发展了Python的Hawk称为etlpy (Extract-Transform-Load in Python) 最初的想法是将Hawk生成的配置文件(xml)交给etlpy去执行初看很酷但这种思路被证明不靠谱两种语言使用不同类库对同一个任务流就因为在底层的细微偏差会导致结果的完全不同。我花了大量的时间在解决兼容性问题上发现难度不小两者互相制约牵绊。 最终我放弃了所谓的兼容性之后etlpy功能日新月异甩了Hawk有10条街不止。Hawk的5分钟拖拽在etlpy上只要一句话: urlwww.cnblogs.com/p{0} ttask().let(p).range(1:20).format(url).detect()\.let(dignum).split(_)[0].num().write(cnblogs.json) 介绍etlpy的语法超过了本文的范畴但它拥有Hawk的一切优点同时能够分布式并行抓取任务队列超级代理定时更新与任意函数库集成。执行引擎(etlpy)的全部源代码也就1000行出头。 也许你都没有听过Lisp这门语言不过没有关系Hawk是用C#写的手敲的代码大概有1万行用Python大概是1000行左右用Lisp只要300行就能实现它的全部功能当然没有图形界面。由此可见编程语言在表现力上的巨大差别。Hawk本质上是个可视化的Lisp设计器。 我喜欢语言的纯粹和精妙用简洁的语法就能代表复杂的逻辑。Hawk其实定义了一种爬虫语言对诸多常用操作进行了模块抽象在拖拖拽拽中你构建了一张图(Graph)数据在图上流动被生成清洗和消费。最近大热的Tensorflow不也是一样的思路吗 这张图既是数据也是代码。 当然不论是Hawk和etlpy你都不能把它们当成厨子给它指令就能做出一道菜来。而应当成一套顺手的厨具而真正做菜的那个人还是你。自动化只是解决了部分问题而巧妙设计的源泉还是来自于操作者本人。最强大的工具是自己。 我们用语言表达概念模式和流程在此之上构建抽象。我假定每个用Hawk的人都能触类旁通因此通过一些通用的介绍他应该就能理解绝大多数的功能。那如果还是不懂呢那不好意思请用八爪鱼否则Hawk的很多设计对他来说就变得没有意义。我自己从来不愿意把Hawk和etlpy定义为爬虫它们提供的是一组环境语言和工具爬虫只是它的一个不错的应用场景而已。 为什么要开源 有人肯定会问为什么不把Hawk商业化去赚一笔钱呢 理想状态下成立公司去完善推广和销售软件那么应该行得通否则单枪匹马是不可能的。那我是不是值得为这套软件成立公司呢应该不会因为它只是个工具还不值得我去开一家公司去完善它。 我相信这也是很多程序员面临的类似困境想靠卖软件盈利就像路上的煎饼摊一样简单朴素问题是放在10年前还有可能记不记得30元一套的金山词霸而服务化盛行的今天可能很低。到处推广最终只可能沦为某天我在咖啡厅里的几句谈资不可能有什么大气候。 有朋友说为什么你要开源对自己来说是不是有点像代码外泄谷歌的TensorFlow都开源了。前面的路还有很远大家都要忙着赶路呢。保护代码最好的方式就是开源没开源时有人还想着破解研究开源了大家fork一下然后就没有然后了“得不到的才是最好的”。 不得不说开源才是最贵的。大家看到开源欢欣雀跃以为在路上捡到了钱其实不是的如果你真想用起来一定会花更多的时间来学习它因为开源者没有义务像商业软件那样提供完整的支持。时间和钱总是矛盾的既想省钱还想省时间天下没有这样的好事。 我以前天真地以为开源的全部就是把源代码公开在网上。之后难道不是理所应当的声望一帮牛人帮你优化功能修复bug吗 哈哈开源怎么可能那么简单。 如果软件写得不错但没有宣传那挂在网上完全无人问津没人知道那是什么鬼写得足够好宣传也到位那也很难有人帮忙贡献开发 往上看大神们都忙着造轮子往下看一大帮实用主义者抄起轮子就上路谁顾得上看轮子是不是圆的呢 开源不意味着坐视不管依旧需要大量的精力去培养完善它和它的社区环境通过邮件和论坛方式提供一定的服务。这件事情如果不用心则一事无成。 如果pandas和ipython不开源我现在也可能无法进入数据分析的殿堂没有Linux和众多开源工具世界也不会发展成这个样子。我明白了为什么开源是一种哲学它是一种“共赢”。对程序员来说名誉和成长比卖软件带来的价值更大那是认可感和成就感。对其他人来说开源带来了时间的节省和实际的财富。这样做必然是有价值的。 请理性使用爬虫 开发完Hawk的那段时间我也和很多人一样看到一个网站就想去试试。以我的熟练程度20分钟数据就都被下载下来了。然而数据保存在硬盘上几乎不产生价值。 Google的工程师可以下载它的全部源代码。可是为什么没有另外一家Google甚至另外一家百度(又黑了百度)出现呢 因为更重要的是人才资源和商业模式代码在这件事情中最不重要了。拿到源代码都没用更遑论挂在网上供大众阅读的数据呢 爬虫是灰色区域所以大公司从来不公布任何爬虫框架但内部用的比谁都多。两年以来网络发生了巨大的变化ajax化SEO变成了关键词广告位大量的网站开始强硬地反爬虫之前能随便抓取的网站现在都变得很困难。我相信这里有相当一部分是Hawk的功劳。让人郁闷的是不少人抓数据仅仅用来玩。 可以想象一小部分标榜大数据和AI的公司把Hawk的代码弄下来改改添一点数据报表功能就可以盗走别人网站数据自立门户去到处忽悠。虽然Hawk开源协议是GPL(使用开源代码的必须开源)但这完全限制不了毕竟是中国嘛。可能他们不知道数据工具和算法根本不值钱理解洞见和执行才是最重要的可是这部分却需要真刀真枪的本事。 你肯定会问那为什么etlpy后来不更新了 第一它不稳定现在释放出来可能砸招牌。其次如果释放出etlpy能量和Hawk完全不是一个数量级用它五分钟写出来三行代码就能迅速地部署在我司全国各地的千兆公网节点上万QPS的压力瞬间就能压挂一个中小型网站。它的出现可能会让网站变本加厉地防爬虫。 总之稍微理性一些适可而止吧。 为什么不继续优化? 很简单因为没有时间。爬虫本身没太多技术含量再深入就进入了异构Web数据集成的领域大部分人根本用不到。这是个拥有数不清trick和dirty技巧的领域是与网站设计者的攻防战争玩到最后你的能力曲线就像log函数一样被压制在一个确定的上界。 现在是人工智能和深度学习的天下以我所在的团队为例身边的大神们都在努力地优化Tensorflow改造算法的底层来提升效率在有趣的数据集上做大规模并行训练。 几年之前如果我没有去做爬虫和Hawk没有去设计正则解析器tnpy而是紧跟潮流去做大规模机器学习的话眼界和身价可能就完全不一样了呢 当然我不后悔去做Hawk它是实实在在的能让大众用起来东西。或许在万里之外有个一样戴着眼镜充满激情的和我一样的nerd看到我的代码开心地拍了桌子大喊“f**king nice work!”到那个时候其他事情还重要么 如果说我后悔没做什么是我没有把软件做成英文曾经有一段时间我个人非常崇尚中文编程从而酿成了现在软件国际化异常困难的后果再者没有直接开发Python或者js这种能跨平台语言的版本Hawk只能局限于Windows桌面应用而不同的社群就风气又不一样了。 它的设计有不少问题不过更多来自于多种因素的妥协。它注定是不完美的。因为职业生涯的关系我无法像前几年那样花大把的时间去优化它。既然开源了我希望有人能把它做得更好。 其实还是个程序员 我之前从来没想过自己会成为一名程序员。 高中时候理科不错语文巨差。高考完老妈扯着嗓子问我报哪所学校什么专业吧  正在打游戏的我根本无暇顾及不耐烦地说随便你们吧 糊里糊涂地进了通信工程几年后通信稍显疲软就自学计算机然后一点都不偶然地成了一名程序员。 网上黑程序员的段子太多了。我都一笑而过。但最近几年我坚决不买任何尺寸和颜色的格子衫。如果看到我穿好吧那一定是我本科时候买的。 你知道那帮每天不苟言笑整天盯着显示屏的怪人每天在想什么吗 敲完这些文字的时候2017年的九点半我还在杭州的酒店里睡眼惺忪谁让昨天夜里11点才回来的呢让我开心的是Hawk的star接近800有点担忧的是公司的新产品马上要上线会不会出什么状况呢 总之欢迎使用Hawk欢迎和我交流有关它的各种问题和建议。 沙漠之鹰个人公众号所有文章全部原创。任何形式的转载演绎必须经过公众号联系原作者获得授权保留一切权利。 内容转载自公众号 沙漠之鹰 了解更多
http://www.zqtcl.cn/news/614671/

相关文章:

  • 手机网站自动适应沈阳网站建设公司电话
  • 备案号网站下边苏州广告公司招聘
  • 企业网站设计模板js做网站
  • 福州最好的网站建设公司网络策划
  • 威宁做网站西部数码网站管理助手 没有d盘
  • 网站设计基础知识重庆seo博客推广
  • 中小企业商务网站建设wordpress dmeng
  • 关于网站建设总结公司网站购买主机
  • 定制网站与模板网站网页美工设计师工资
  • 丹棱县 网站建设wordpress公司主题破解版
  • 贾汪微网站开发百度推广登录账号首页
  • 网站开发和网站运营的区别嘉兴市秀洲区住房和建设局网站
  • 西安网站开发公司哪家强如何做付费阅读网站
  • ios认证 东莞网站建设天津企业网站建设方案
  • 高网站排名吗wordpress 拼音别名
  • 网站出现的问题杭州旅游网站建设
  • 陕西城乡建设部网站怎么用自己注册的域名做网站
  • 企业邮箱注册价格汕头做网站优化的公司
  • 高校工会网站建设网站静态页面生成
  • 辽宁省营商环境建设局 网站做网站前端后端ui什么意思
  • 合作社网站模板贵州安顺建设主管部门网站
  • 网站不备案能访问吗哪家做企业网站
  • 做网站写的代号好跟不好的区别企信网企业信用信息系统
  • 网站需要服务器吗手机网站解决方案
  • 网站子网页怎么做国外网站 模板
  • 手机评测网站标志设计分析
  • 网页游戏网站建设成都公司网站
  • 网站流量统计分析的误区wordpress二级目录安装
  • 深互动平台网站wordpress后台无法访问
  • 建立网站需要服务器吗网站建设辶首先金手指十四