Quantcast
Channel: 看得透又看得远者prevail.ppt.cc/flUmLx ppt.cc/fqtgqx ppt.cc/fZsXUx ppt.cc/fhWnZx ppt.cc/fnrkVx ppt.cc/f2CBVx
Viewing all 20489 articles
Browse latest View live

美国议员:香港是新的柏林

$
0
0
VOA 莫雨、开硕 华盛顿 — 在柏林墙倒塌30周年之际,美国国会一位议员说,香港是新的柏林。
伊利诺伊州民主党联邦众议员丹尼尔·李宾斯基(Daniel Lipinski)在共产主义受难者纪念基金会星期五(11月8日)举办的纪念柏林墙倒塌30周年的活动上发来的视频讲话中说:“我们知道,共产主义的恐怖还没有结束。中国政府的行动尤其令人警觉。他们在全球增加影响力,在国内继续打压穆斯林维吾尔人、基督徒和其他人。今天,香港是新的柏林。”
他表示,如果人们如冷战时一样立场坚定,“自由就会像30年前一样取得胜利。”
1989年11月9日,东德人冲破并推倒共产党政府为阻挡东德人涌入西德而建的柏林墙。柏林墙的倒塌是东欧共产主义政权终结和冷战结束的重要标志。
共产主义受难者纪念基金会主席李‧爱德华兹(Lee Edwards)说,在柏林墙倒塌之前,共产党国家的领导人宣称这堵墙能够矗立百年,但是柏林墙的倒塌不仅证明他们是错的,而且也证明了,即便是生活在共产党政权下的民众,也有能力推翻限制自由的高墙。
他对美国之音说:“可能性总是有的。如果你站出来讲述真相,向当权者说出真相,专制暴政就会垮台,那堵墙会就倒塌。”
他认为,如同柏林墙是冷战的转折点,而目前也处在冷战状态,香港则是转折点。他说,美国等西方国家需要支持香港的年轻人,让他们知道他们并非孤立无助。
上个月,美国国会众议院无异议通过《香港人权与民主法案》,以示对港人民主抗争的支持,但这项得到两党议员支持的议案在参议院外交委员会通过之后在参议院并没有新的立法进展。
该法案参议院版本的提出者鲁比奥(Marco Rubio)参议员星期四在推特上说,不管以哪种方式,法案“很快会在参议院全院审议”。他说,虽然参议员们目前有很多事要处理,但是对于香港法案不会永远等下去。


特朗普总统在香港问题上的立场前后有反复。他曾经敦促中国“人道”处理香港问题,尊重香港的生活方式,但在与中国基本达成阶段性贸易协议后表示说,香港的情况已有所好转。彭斯副总统10月发表对华政策演讲时表示美国与和平示威的香港民众站在一起,他敦促中国政府继续保持克制,并呼吁港人坚持非暴力路线。但他没有提到《香港人权与民主法案》。
1989年,欧洲民众的抗争,终结了共产党的一党统治,推倒了柏林墙,但是中国的学生民主运动以血腥镇压告终。中国民主运动海外联席会议主席魏京生认为,失败的原因之一是美国等西方民主国家没有给予坚定的支持。他希望,在香港民众冒着生命危险也要争取民主自由的时候,美国等民主国家不要再犯同样的错误。
他对美国之音说:“香港人民的反抗不会改变,大家会坚持;中国政府顽固的态度,也不会改变,因为那是他的利益,他害怕香港的事情扩散到整个中国的民主化。当这两个不变的量斗得你死我活的时候,国际社会是一个变数,……这个因素不大,但是关键因素,所谓四两拨千斤。”
他认为,如果在香港的这堵“柏林墙”不去推倒它,西方国家会犯下历史性的错误,“就是说,你放过了共产党,最后共产党可能会把你打败。”
参加共产主义受难者纪念基金会活动的还有德国前总统高克(Joachim Gauck)。高克曾是东德的一位基督教路德派牧师和公民社会活动家,以批判共产主义和推崇人权的立场著称。
该基金会把今年的杜鲁门-里根自由勋章颁发给高克。
高克在活动上分享了他在东德和柏林墙倒塌后的一些经历。他说:“在这许多年的压抑之后,你终于能够和公民同伴走上街头抗议示威,这是很棒的感觉。对我来说,更为奇妙的是,我还当选总统,搬进了柏林的总统府。”

57爆新聞 中美貿戰16個月暫休兵?

悲壮!法国84岁老人袭击清真寺,称“为圣母院火灾报仇”!

$
0
0

​​      中国西北之外的人,可能很难想象自己的家乡伊斯兰化后,会是一个什么样的可怕情形。
  但没关系,这种活生生的现实例子,我们熟悉的英国、法国就有。
  在这个移动互联网时代,有些新闻既便主流媒体不愿意报道,但仍然会传到中国。
  比如下面这个老人的悲壮故事……
  据欧洲时报报道,10月28日下午,法国西南部海滨城市巴约纳(Bayonne)发生了一起清真寺纵火及枪击事件。
  一名持右翼爱国倾向的84岁老者,先是在清真寺门前纵火,后来又向前来阻止的两个穆斯林开枪致其重伤。
  巴约纳市政府称,这个法国老者向清真寺侧门投掷燃烧装置。
  当时,清真寺里有两个穆斯林正准备下午礼拜,听到异响后便出门阻止。
  结果,一人被子弹击中颈部,一人被击中胸部和臂部,目前已经被紧急送院治疗。
  比利牛斯-大西洋省警察局发表公告称,28日当天下午15点20分,发起攻击的法国老者试图点燃巴约纳清真寺的侧门,并且向予以阻止的另外两人开枪。
  另外,离开现场前,他还点燃了一辆汽车。
  据法国当地检察机关称,发起攻击的老者当时还携带了一个汽油桶。
  
  据检察官29日公布消息,发起攻击的老者称,“自己这么做,是要为巴黎圣母院火灾报仇。
  他一直坚信,巴黎圣母院的毁坏,是由法国穆斯林一手造成的。
  不过,法国的白左主流媒体,当时却全部采用了巴黎警方的通稿“没有责任人、意外起火”。
  不过,一些“政治不正确”的法国自媒体作者却采访到了当地的目击者:
  某些身穿伊斯兰罩袍的人,点燃了放在圣母院旁的油罐……
  很悲催的是,法国百姓虽然知道这是一人为的纵火,甚至也知道是哪类人,却不得不与马克龙一起玩“皇帝的新衣”。
  伊斯兰恐怖组织不知趣地冒了出来,在网上发布声明对巴黎圣母院的纵火案负责
  事实上,后来搜集到的、铁证如山般的证据也证明,巴黎圣母院火灾——就是一起由伊斯兰恐怖分子发动的纵火案
  其实基督和天主教堂被毁这类事,在法国,早已不是个例。
  只不过法国政府和主流白左媒体一直在捂盖子,没有公开报道而已。
  据俄通社报道称,仅仅在今年2月,法国就有47处教堂遭到不同程度的破坏,袭击教堂的案件超过去年同期25%。
  和巴黎圣母院纵火案的原因,人为破坏是这些教堂被损毁的主要原因。
  不过,施暴者并不是什么教堂和寺庵都去破坏,比如清真寺就平安无事。
  法国本土文明的天主教堂基督教堂才是纵火者的主要目标!
  3月17日,圣叙尔比斯教堂发生火灾,该教堂是巴黎六区历史地标建筑,著名电影《达芬奇的密码》的拍摄地。消防队员将失火原因归咎于纵火。
  同样在今年3月,位于巴黎中南部的圣丹尼教堂被人为破坏,该教堂是法国历史文化遗产,是中世纪法国的主要修道院。
  2月19日,在法国中北部的圣尼古拉天主教堂,圣母玛利亚的雕像被人砸烂,祭坛交叉被扔到地上。
  最过分的是,在法国南部城市尼姆,破坏者不但洗劫了一座圣母院,还破坏了祭坛、把粪便涂抹在十字架上。
  法国最近几个月来损毁教堂的例子实在太多,以至于我都懒得再列举。
  我作为一个文明的中国人,看到这种疯狂破坏人类伟大建筑的邪恶行为都气愤不已。
  那些有血性的法兰西人呢?说到底,巴黎圣母院还是法国的瑰宝。
  
  或许,这个84岁的老人,才是真正的法兰西人。
  据知情人士透露,攻击清真寺的老人是现年84岁的辛克(Claude Sinké),此前是爱国右翼政党“国民阵线”成员。
  2015年时,曾代表该党参加朗德省的议会选举。
  但国民联盟该省的负责人却对法新社称,在2015年选举之后,辛克已经被开除出党。
  事发之后,辛克逃回距离巴约纳十余公里外的Saint-Martin-de-Seignanx镇上住所,并在那里被捕。
 警方已经派人封锁并搜查辛克的住所,目前发现他持有三支枪,不过已登记备案。
  该镇副镇长对法新社表示,“他是个真诚热情的人,他不喜欢左派和中间派,右派的人他也很少喜欢。
  据《西南法国报》报道,辛克上周曾经给巴约纳律师公会会长和达克斯市(Dax)检察官寄去一封“措辞狂怒”的信,要求投诉总统马克龙。
  该报获得了这封信的副本,但却决定不予刊登。
  无助的老人最后选择了自己行动。
  当然,法国政府也不是完全就没有针对伊斯兰扩张的行动。
  就在清真寺枪击案发生的当天上午,法国总统马克龙还表示,将会出台相关“禁令”,取缔非法的伊斯兰社团。
  并且,还将禁止“那些已在社会上形成气候的、但有违共和国法律的伊斯兰习俗”。
  29日,法国参议院通过了由右派共和党议员(LR)提出的有关禁止课外教学活动戴头巾的法律提案。
  法国人是真的神经过敏了吗?不是。
  法国近期的一项民调显示,近八成法国人认为,法国的政教分离原则,正受到外来穆斯林的威胁。
  据法媒10月28日报道,前几日的巴黎Le Grand Rex影院放映电影《小丑》期间,一名男子突然高呼“真主万岁”,引发观影者恐慌逃窜。
  目前,在巴黎、马赛等穆斯林聚集的大城市,这种伊斯兰极端分子的挑衅和闹事层出不穷。
  据悉,攻击清真寺的84岁法国老人辛克,目前已被送往精神病院,要进行精神鉴定。
  勇敢的老人有没有精神病,我们不得而知。但我知道,法国这个国家是真的病了!
  法国人疯狂引进黑人和中东伊斯兰难民移民,给它们丰厚的福利待遇,纵容它们强奸抢劫甚至大规模纵火。
  法国政府和民众既认识不到人种替代的危机,也看不到伊斯兰的步步紧逼,依然在“多元化、宗教自由”这条自取灭亡的末路上狂奔。
  法国大规模的社会动荡和种族屠杀正日趋临近,而麻木的法国人既然浑然不知。
  那些睿智的清醒者,该会何其悲愤?
  这位以84岁高龄,去攻击清真寺的法国老人辛克,在我看来,多么像塞万提斯笔下的堂吉诃德骑士。
  堂吉诃德最后可以在自己家乡安然离世,而法国老人辛克呢?
  他将死不瞑目:六千多万法兰西人,竟无一人是男儿!
  朋友们,趁我们还年轻,努力唤醒更多的人吧.

利用forwarded_port-by-hubsgz解决dns污染问题

$
0
0
在本地机器mac上。
git clone https://github.com/hubsgz/forwarded_port forwarded_port-by-hubsgz
cd forwarded_port-by-hubsgz
nano portmap.py
(修改 portmap.py文件的倒数第三行的192.168.0.206为8.8.8.8)
sudo python  portmap.py

实际使用例子:
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1

sudo wg-quick up wg0

sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1


cd ~/forwarded_port-by-hubsgz && sudo python portmap.py
不要关闭此terminal.
然后用wireguard vpn即可顺利翻墙。

项目地址:https://github.com/hubsgz/forwarded_port 

一个基于php+mysql的博客程序:simple_blog

$
0
0
https://github.com/hubsgz/simple_blog

中美脱钩难,和平共存亦不易

$
0
0

在贸易战久拖未决,中国(中共)无论如何不肯按照美国愿望签署协议的情况下,中美脱钩论一度成为一些人的猜测。这种猜测几乎无视中美经济目前这种“你中有我、我中有你”、双方互为第一、二大贸易伙伴,两国都在对方有巨额投资等错综复杂的利益关系。美国需要中国的大量购买与市场,中国更不可能离开美国资源与市场存活,习近平当然也不能像毛泽东那样写一篇《别了,司徒雷登》,就此对西方闭关锁国。因此,两国探讨如何调整角色共处才是正道。
这方面,中共并不需要调整,因为中共在意识形态上从来就视美国为敌,经济上则无孔不入地利用美国的资源。据说习近平任中共总书记后不久就在一次内部讲话中说,中国(中共)必须“认真做好两种社会制度长期合作和斗争的各方面准备”。(共匪从来就不安好心
与中国(中共)相比,美国的觉醒晚了不止20年。这是美国民主政治体制决定的,一是两党对华政策不一样,换个白宫主人就换一套章程;二是美国讲究学术自由、言论自由,拥抱熊猫派在美国得势30余年,主导了美国政府对华政策,影响了美国人对华态度。这个类似的派别在中国几乎不可能生存。

立冬

$
0
0


唐代李白
冻笔新诗懒写,寒炉美酒时温。
醉看墨花月白,恍疑雪满前村。

僵尸进程和孤儿进程

$
0
0
基本概念
  我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。
  孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
  僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。

问题及危害
  unix提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息, 就可以得到。这种机制就是: 在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。 但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termination status of the process,运行时间the amount of CPU time taken by the process等)。直到父进程通过wait / waitpid来取时才释放。 但这样就导致了问题,如果进程不调用wait / waitpid的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。
  孤儿进程是没有父进程的进程,孤儿进程这个重任就落到了init进程身上,init进程就好像是一个民政局,专门负责处理孤儿进程的善后工作。每当出现一个孤儿进程的时候,内核就把孤 儿进程的父进程设置为init,而init进程会循环地wait()它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init进程就会代表党和政府出面处理它的一切善后工作。因此孤儿进程并不会有什么危害。
  任何一个子进程(init除外)在exit()之后,并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构,等待父进程处理。这是每个 子进程在结束时都要经过的阶段。如果子进程在exit()之后,父进程没有来得及处理,这时用ps命令就能看到子进程的状态是“Z”。如果父进程能及时 处理,可能用ps命令就来不及看到子进程的僵尸状态,但这并不等于子进程不经过僵尸状态。 如果父进程在子进程结束之前退出,则子进程将由init接管。init将会以父进程的身份对僵尸状态的子进程进行处理。

be-a-professional-programmer

$
0
0
成为专业程序员路上用到的各种优秀资料、神器及框架.

前言

成为一名专业程序员的道路上,需要坚持练习、学习与积累,技术方面既要有一定的广度,更要有自己的深度。
笔者作为一位tool mad,将工作以来用到的各种优秀资料、神器及框架整理在此,毕竟好记性不如烂键盘,此项目可以作为自己的不时之需。
本人喜欢折腾,记录的东西也比较杂,各方面都会有一些,内容按重要等级排序,大家各取所需。
这里的东西会持续积累下去,欢迎Star,也欢迎发PR给我。
Thonatos.Yang整理的GitBook版本,阅读体验更佳:https://thonatos.gitbooks.io/be-a-professional-programmer/

目录

资料篇

技术站点

必看书籍

  • SICP(Structure and Interpretation of Computer Programs)
  • 深入理解计算机系统
  • 代码大全2
  • 人件
  • 人月神话
  • 软件随想录
  • 算法导论(麻省理工学院出版社)
  • 编程之美
  • 算法之美,作者:[美]布莱恩·克里斯汀,汤姆·格里菲思
  • 离散数学及其应用
  • 设计模式
  • 黑客与画家
  • 编程珠玑
  • The Little Schemer
  • Simply Scheme_Introducing_Computer_Science
  • C++ Primer
  • Effective C++
  • TCP/IP详解
  • Unix 编程艺术
  • 技术的本质
  • 软件随想录
  • 计算机程序设计艺术
  • 程序员的自我修养:链接、装载与库
  • 程序员修炼之道
  • 高效能程序员的修炼
  • 《精神分析引论》弗洛伊德
  • 《失控》《科技想要什么》《技术元素》凯文凯利
  • 程序开发心理学
  • 天地一沙鸥
  • 搞定:无压力工作的艺术

大牛博客

GitHub篇

** Awesome **
** 书籍资料 **
** 优秀项目 **
** 前端 & Node.js **
** 工作,工具 **

工具篇

平台工具&框架

  • 云:Rancher > Kubernetes(k8s) > Docker(镜像库:registry,Harbor,JFrog Artifactory)
  • Jupyter: IPython Notebook, 有个子项目sparkmagic,可以和Spark集合在一起,类似spark-notebook项目
  • Swagger: RESTful API设计工具,前后端分离项目必备,顺便推荐下Easy Mock
  • Flutter: Google出品,高性能跨平台移动应用开发框架
  • OpenZipkin: 分布式Trace系统,可用于分析服务调用链间的消耗
  • Phabricator: 软件开发平台,Facebook出品,现已开源,CodeReview神器(从这个往下一直到GitLab之间的工具统统可以忽略了)
  • Redmine/Trac:项目管理平台
  • Jenkins/Jira(非开源):持续集成系统(Apache Continuum,这个是Apache下的CI系统,还没来得及研究)
  • git,svn:源代码版本控制系统
  • GitLab/Gitorious:构建自己的GitHub服务器
  • AppVeyor - 云端持续集成工具,可以与GitHub搭配使用
  • Postman:RESTful,api测试工具,HTTP接口开发必备神器;可替代工具:Insomnia
  • Lottie: AE动画变原生代码,设计师必备
  • Sonar:代码质量管理平台
  • Nessus: 系统漏洞扫描器
  • gitbook:https://www.gitbook.io/写书的好东西,当然用来写文档也很不错的(发现不少产品的文档就是用的它)
  • Travis-ci:开源项目持续集成必备,和GitHub相结合,https://travis-ci.org/
  • Trello:简单高效的项目管理平台,注重看板管理
  • 日志聚合:graylog、ELK(推荐新一代的graylog,基本上算作是开源的Splunk了)
  • 开源测试工具、社区(Selenium、OpenQA.org)
  • Puppet:一个自动管理引擎,可以适用于Linux、Unix以及Windows平台。所谓配置管理系统,就是管理机器里面诸如文件、用户、进程、软件包这些资源。无论是管理1台,还是上万台机器Puppet都能轻松搞定。其他类似工具:CFEngine、SaltStack、Ansible
  • jumpserver: 开源堡垒机
  • Prometheus监控系统+时序数据库,一般搭配Grafana使用。类似的系统还有Nagios,Zabbix,Ganglia
  • fleet:分布式init系统
  • Ansible:能够大大简化Unix管理员的自动化配置管理与流程控制方式。
  • GeoLite免费数据库
  • jsHint:js代码验证工具
  • haproxy: 高可用负载均衡(此外类似的系统还有nginx,lvs)
  • linux OS性能分析工具:dstat,iostat,iotop,nmon
  • kimono:将网页信息转换为api接口的工具
  • 集群管理工具:pdsh,ClusterSSH,mussh(可以用它快速管理Hadoop集群)ipa-server做统一的认证管理
  • influxdb: 分布式时序数据库,结合Grafana可以进行实时数据分析
  • dot: 程序员绘图利器(是种语言,也是个工具)
  • Graph::Easy: (Ascii Art工具)字符流程图绘制,实乃程序员装逼神器。其他类似的工具Asciiflow, vi插件:drawit!
  • spf13-vim: 让你的vim飞起来!
  • Kubernetes: 容器集群管理系统
  • Gatling: 服务器性能压力测试工具,类似的还有wrk
  • systemtap: Linux内核探测工具、内核调试神器
  • Cygwin:Windows下的类UNIX模拟环境
  • MinGW:Windows下的GNU工具集

常用工具

  • EditorConfig: 让我们在各种不同IDE或编辑器下写代码保持风格一致
  • Mac下的神兵利器
  • asciinema: 终端录屏神器
  • Fiddler:非常好用的Web前端调试工具,当然是针对底层http协议的,一般情况使用Chrome等自带的调试工具也足够了,特殊情况还得用它去处理
  • Charles: Mac上的Web代理调试工具,类似Fiddler
  • fir.im免费的移动App内测托管平台
  • wireshark:知名的网络数据包分析工具
  • PowerCmd:替代Windows Cmd的利器,类似的还有cmder
  • MobaXterm: Windows下的全能终端神器
  • Xming: Windows下的X Window Server,结合putty可以实现linux的图形化软件直接跑在Windows上
  • RegexBuddy:强大的正则表达式测试工具
  • Source Insight:源代码阅读神器
  • SublimeText:程序员最爱的编辑器
  • Database.NET:一个通用的关系型数据库客户端,基于.NET 4.0开发的,做简单的处理还是蛮方便的
  • Navicat Premium:支持MySql、PostgreSQL、Oracle、Sqlite和SQL Server的客户端,通用性上不如Database.NET,但性能方面比Database.NET好很多,自带备份功能也用于数据库定时备份。
  • Synergy : 局域网内一套键盘鼠标控制多台电脑
  • DameWare:远程协助工具集(我在公司主要控制大屏幕用)
  • Radmin: 远程控制工具,用了一段时间的DameWare,还要破解,对Win7支持的不好,还是发现这个好用
  • Listary:能极大幅度提高你 Windows 文件浏览与搜索速度效率的「超级神器」
  • Clover:给资源管理器加上多标签,我平时工作的时候就用它,像Chrome一样使用资源管理器,甚是方便啊(这是Windows平台的)
  • WinLaunch:模拟Mac OS的Launch工具
  • OllyDbg: OD大名鼎鼎的反汇编工具,Win平台
  • Fritzing:绘制电路图
  • LICEcap:gif教程制作
  • Enigma Virtual Box(将exe,dll等封装成一个可执行程序)
  • Open DBDiff(针对SqlServer)数据库同步
  • SymmetricDS:数据库同步
  • BIEE,Infomatica,SPSS,weka,R语言:数据分析
  • CodeSmith,LightSwitch:代码生成
  • Pandoc:Markdown转换工具,出书用的。以前玩过docbook,不过现在还是Markdown盛行啊。
  • Window Magnet[Mac]:增强Mac窗口管理功能,想Win7一样具有窗口拖放到屏幕边缘自动调整的功能
  • log explorer:查看SqlServer日志
  • dependency walker:查询Windows应用程序dll依赖项
  • Shairport4w:将iPhone,iPad,iPod上的音频通过AirPlay协议传输到PC上
  • ngrok:内网穿透工具
  • Axure:快速原型制作工具,还有个在线作图的工具国内的一个创业团队做的,用着很不错http://www.processon.com/
  • Origami: 次世代交互设计神器
  • 百度脑图:http://naotu.baidu.com/
  • tinyproxy:(Linux)小型的代理服务器支持http和https协议
  • EaseUS Partition Master:超级简单的分区调整工具,速度还是蛮快的,C盘不够用了就用它从D盘划点空间吧,不用重装系统这么折腾哦。
  • CheatEngine:玩游戏修改内存值必备神器(记得我在玩轩辕剑6的时候就用的它,超级方便呢)
  • ApkIDE: Android反编译神器(类似的还有apktool)
  • HandShaker: 锤子的良心之作:为解决安卓手机与Mac当中文件传输问题,专门开发的SmartFinder文件管理器改进版
  • 翻、墙工具(自|由|门、天行浏览器,免费的VPN:http://www.mangovpn.com/),发现最方便还属Lantern,免费用起来超级方便(更新于2015-08-22)
  • 设计工具:Sketch、OmniGraffle
  • MindManger:思维导图
  • MagicDraw: Uml图工具
  • innotop:MySql状态监测工具
  • 墨刀:比Axure更为简单的原型工具,可以快速制作原型
  • Karabiner: Mac专用,修改键盘键位的神器,机械键盘必备
  • Timing:Mac专用,统计你的时间都花在哪了
  • LaTeX: 基于ΤΕΧ的排版系统, 让写论文更方便
  • Antlr:开源的语法分析器,可以让你毫无压力的写个小parser

第三方服务

  • Let's Encrypt: 免费、自动化、开放的证书签发服务
  • DnsPod:一个不错的智能DNS服务解析提供商
  • DigitalOcean:海外的云主机提供商,价格便宜,磁盘是SSD的,用过一段时间整体上还可以,不过毕竟是海外的,网速比较慢。国内的就是阿里云了。还有个比较知名的是:Linode,据说速度上比DigitalOcean好很多
  • 移动端推送服务:个推、JPush、云巴
  • LeanCloud:移动应用开发服务,包括:数据存储、用户管理、消息推送、应用统计、社交分享、实时聊天等服务
  • Color Hunt: 漂亮炫酷的配色网站,程序员的福音
  • Heroku: PaaS平台

爬虫相关(好玩的工具)

  • Phantomjs(Web自动化测试,服务端渲染等)
  • berserkJS(基于Phantomjs的改进版本)
  • SlimerJS
  • CasperJS
  • selenium
  • HtmlUnit(开源的java 页面分析工具,也是个Headless的浏览器)

安全相关

  • sql注入检测:sqlmap、haviji
  • 端口扫描:nmap,
  • masscan:据说可以6分钟中扫遍整个互联网的端口扫描器
  • 渗透测试:BurpLoader
  • sqltools: sql漏洞利用工具
  • snort: 入侵检测

Web服务器性能/压力测试工具/负载均衡器

  • ab: ab是apache自带的一款功能强大的测试工具
  • curl-loader: 真实模拟、测试Web负载
  • http_load: 程序非常小,解压后也不到100K
  • webbench: 是Linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力。
  • Siege: 一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
  • squid(前端缓存),nginx(负载),nodejs(没错它也可以,自己写点代码就能实现高性能的负载均衡器):常用的负载均衡器
  • Piwik:开源网站访问量统计系统
  • ClickHeat:开源的网站点击情况热力图
  • HAProxy:高性能TCP /HTTP负载均衡器
  • ElasticSearch:搜索引擎基于Lucene
  • Page Speed SDK和YSLOW
  • HAR Viewer: HAR分析工具
  • protractor:E2E(end to end)自动化测试工具

大数据处理/数据分析/分布式工具

  • Hadoop:分布式的文件系统,结合其MapReduce编程模型可以用来做海量数据的批处理(Hive,Pig,HBase啥的就不说了),值得介绍的是Cloudera的Hadoop分支CDH5,基于YARN MRv2集成了Spark可直接用于生产环境的Hadoop,对于企业快速构建数据仓库非常有用。
  • Spark:大规模数据处理框架(可以应付企业中常见的三种数据处理场景:复杂的批量数据处理(batch data processing);基于历史数据的交互式查询(interactive query);基于实时数据流的数据处理(streaming data processing))
  • 除了Spark,其他几个不错的计算框架还有:Kylin,Flink,Drill
  • Ignite: In-Memory Data Fabric
  • CarbonData: 华为的孵化项目,支持索引的列式存储
  • Ceph:Linux分布式文件系统(特点:无中心)
  • Storm:实时流数据处理,可以看下IBM的一篇介绍 (还有个Yahoo的S4,也是做流数据处理的)
  • Druid: 实时数据分析存储系统
  • Ambari: 大数据平台搭建、监控利器;类似的还有CDH
  • Tachyon:分布式内存文件系统
  • Greenplum: 基于PostgreSQL的分布式MPP数据库
  • Mesos:计算框架一个集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享
  • Impala:新一代开源大数据分析引擎,提供Sql语义,比Hive强在速度上
  • presto: facebook的开源工具,大数据分布式sql查询引擎
  • SNAPPY:快速的数据压缩系统,适用于Hadoop生态系统中
  • Kafka:高吞吐量的分布式消息队列系统
  • ActiveMQ:是Apache出品,最流行的,能力强劲的开源消息总线
  • MQTT:Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分
  • RabbitMQ:记得OpenStack就是用的这个东西吧
  • ZeroMQ:宣称是将分布式计算变得更简单,是个分布式消息队列,可以看下云风的一篇文章的介绍
  • 开源的日志收集系统:scribe、chukwa、kafka、flume。这有一篇对比文章
  • Zookeeper:可靠的分布式协调的开源项目
  • Databus:LinkedIn 实时低延迟数据抓取系统
  • 数据源获取:Flume、Google Refine、Needlebase、ScraperWiki、BloomReach
  • 序列化技术:JSON、BSON、Thrift、Avro、Google Protocol Buffers
  • NoSql:ScyllaDB(宣称是世界上最快的NoSql)、Apache Casandra、MongoDB、Apache CouchDB、Redis、BigTable、HBase、Hypertable、Voldemort、Neo4j
  • MapReduce相关:Hive、Pig、Cascading、Cascalog、mrjob、Caffeine、S4、MapR、Acunu、Flume、Kafka、Azkaban、Oozie、Greenplum
  • 数据处理:R、Yahoo! Pipes、Mechanical Turk、Solr/ Lucene、ElasticSearch、Datameer、Bigsheets、Tinkerpop
  • NLP自然语言处理:Natural Language Toolkit、Apache OpenNLP、Boilerpipe、OpenCalais
  • 机器学习:TensorFlow(Google出品),WEKA、Mahout、scikits.learn、SkyTree
  • 可视化技术:GraphViz、Processing、Protovis、Google Fusion Tables、Tableau、Highcharts、EChats(百度的还不错)、Raphaël.js
  • Kettle:开源的ETL工具
  • Pentaho:以工作流为核心的开源BI系统
  • Mondrian:开源的Rolap服务器
  • Oozie:开源hadoop的工作流调度引擎,类似的还有:Azkaban
  • 开源的数据分析可视化工具:Weka、Orange、KNIME
  • Cobar:阿里巴巴的MySql分布式中间件
  • 数据清洗:data wrangler, Google Refine

Web前端

  • Material Design: 谷歌出品,必属精品
  • Vue.js: 借鉴了Angular及React的JS框架,设计理念较为先进
  • Sciter: GUI框架,采用自己的HTML/CSS解析器,具有出色的扩展特性和性能,dll压缩后在1~2M
  • jsplumb: 流程图可视化库
  • cytoscape.js: 关系图谱可视化库
  • d3: 非常知名的数据可视化库(类似的还有NVD3,P5.js,Highcharts,Echart,Flot等)
  • Vega: 基于D3的可视化语法
  • Raw:非常不错的一款高级数据可视化工具
  • Rickshaw: 时序图表库,可用于构建实时图表
  • JavaScript InfoVis Toolkit:另一款Web数据可视化插件
  • Pdf.js,在html中展现pdf
  • ACE,CodeMirror:Html代码编辑器(ACE甚好啊)
  • NProcess:绚丽的加载进度条
  • impress.js:让你制作出令人眩目的内容展示效果(类似的还有reveal)
  • Threejs:3DWeb库
  • Hightopo:基于Html5的2D、3D可视化UI库
  • jQuery.dataTables.js:高度灵活的表格插件
  • Raphaël:js,canvas绘图库,后来发现百度指数的图形就是用它绘出来的
  • director.js:js路由模块,前端路由,Nodejs后端路由等,适合构造单页应用
  • pace.js:页面加载进度条
  • bower:Web包管理器
  • jsnice:有趣的js反编译工具,猜压缩后的变量名,http://www.jsnice.org/
  • Zepto.js:移动端替代jQuery的东东,当然也可以使用jquery-mobile.
  • UI框架:Foundation,Boostrap,Pure,EasyUI,Polymer
  • 前段UI设计师必去的几个网站:Dribbble,awwwards,unmatchedstyle,UIMaker
  • Mozilla 开发者中心:https://developer.mozilla.org/en-US/
  • 图标资源:IcoMoon(我的最爱),Font Awesome, Themify Icons,FreePik,Glyphicons
  • artDialog:非常漂亮的对话框
  • AdminLTE:github上的一个开源项目,基于Boostrap3的后台管理页面框架
  • Respond.js:让不懂爱的IE6-8支持响应式设计
  • require.js: js模块加载库
  • select2:比chosen具有更多特性的选择框替代库
  • AngularUI:集成angular.js的UI库
  • normalize.css: 采用了现代化标准让各浏览器渲染出的html保持一致的库
  • CreateJS:Html5游戏引擎
  • Less,Compass:简化CSS开发
  • emojify.js:用于自动识别网页上的Emoji文字并将其显示为图像
  • simditor:一个不错的开源的html编辑器,简洁高效
  • Sencha: 基于html5的移动端开发框架
  • SuperScrollorama+TweenMax+skrollr:打造超酷的视差滚动效果网页动画
  • jquery-smooth-scroll:同上,平滑滚动插件
  • Animate.css:实现了各种动画效果的css库
  • Emmet:前端工程师必备,前身为 Zen Coding
  • React: facebook出品的js UI库
  • highlight.js:专门用来做语法高亮的库
  • GoJS: Html5交互式图表库,看demo更适合层次结构的图表。
  • 10 Pure CSS (Mostly) Flat Mobile Devices: http://marvelapp.github.io/devices.css/
  • CodePen: http://codepen.io/
  • jsfiddle: http://jsfiddle.net/前端js,html,css测试利器

语言篇

折腾中:Scala、Python、Lua、JavaScript、Go
待折腾:

Scala

Java

  • 常用的IDE:IntelliJ IDEA(强烈推荐),Eclipse,Netbeans
  • fastutil: 性能更好的Java集合框架
  • Guava: 谷歌的Java工具包,应用广泛
  • JMH: Java Benchmark性能测试框架
  • Vert.x: 性能彪悍的异步非阻塞编程框架
  • Lagom: 微服务框架,提供了Java、Scala API
  • jOOQ:java Orm框架
  • Janino: 超级小又快的Java编译器,Spark的Tungsten引起用的它
  • Curator:Netflix公司开源的一个Zookeeper client library,用于简化Zookeeper客户端编程,现在已经是apache下的一个独立项目了。Spark的HA也用的这货。
  • Rx(Reactive Extensions)框架:RxJava(Android中用的比较多), Quasar
  • FindBugs: 代码静态分析工具,找出代码缺陷
  • Java反编译工具:Luyten,JD-Gui,Procyon-Decompiler
  • Drools: 规则引擎
  • Jersey: Java RESTful 框架
  • canal: 阿里巴巴出品,binlog增量订阅&消费组件
  • Web开发相关:Tomcat、Resin、Jetty、WebLogic等,常用的组件Struts,Spring,Hibernate
  • Netty: 异步事件驱动网络应用编程框架,用于高并发网络编程比较好(NIO框架,spark 1.2.0就用netty替代了nio)
  • MINA:简单地开发高性能和高可靠性的网络应用程序(也是个NIO框架),不少手游服务端是用它开发的
  • Activiti:工作流引擎,类似的还有jBPM、Snaker
  • Perfuse:是一个用户界面包用来把有结构与无结构数据以具有交互性的可视化图形展示出来.
  • Gephi:复杂网络分析软件, 其主要用于各种网络和复杂系统,动态和分层图的交互可视化与探测开源工具
  • Nutch:知名的爬虫项目,hadoop就是从这个项目中发展出来的
  • web-harvest:Web数据提取工具
  • POM工具:Maven+Artifactory
  • Akka:一款基于actor模型实现的 并发处理框架
  • EclEmma:覆盖测试工具
  • Shiro:安全框架
  • joda-time:简化时间处理
  • parboiled:表达式解析
  • dozer: 深拷贝神器
  • dubbo: 阿里巴巴出品的分布式服务框架
  • jackson databind: json序列化工具(fastjson,simplejson)
  • Atomikos: 分布式事务管理
  • BoneCP:性能很赞的数据库连接池组件,据说比c3p0快好多
  • ProGuard: obconfuscation tool, 强大的混淆工具
  • S-99:Scala相关的99个问题

Python

  • PyCharm:最佳Python IDE
  • Eric,Eclipse+pydev,比较不错的Python IDE
  • PyWin:Win32 api编程包
  • numpy:科学计算包,主要用来处理大型矩阵计算等,此外还有SciPy,Matplotlib
  • GUI相关:PyQt,PyQwt
  • supervisor:进程监控工具
  • PyGame: 基于Python的多媒体开发和游戏软件开发模块
  • Web框架: Django 开源web开发框架,它鼓励快速开发,并遵循MVC设计

Swift

客户端
Framework
小工具
游戏

.NET

  • Xilium.CefGlue:基于CEF框架的.NET封装,基于.NET开发Chrome内核浏览器
  • CefSharp:同上,有一款WebKit的封装,C#和Js交互会更简单
  • netz:免费的 .NET 可执行文件压缩工具
  • SmartAssembly:变态的.net代码优化混淆工具
  • NETDeob0:.net反混淆工具,真是魔高一尺道高一丈啊(还有个de4dot,在GitHub上,都是开源的)
  • ILMerge:将所有引用的DLL和exe文件打成一个exe文件
  • ILSpy:开源.net程序反编译工具
  • Javascript.NET:很不错的js执行引擎,对v8做了封装
  • NPOI: Excel操作
  • DotRAS:远程访问服务的模块
  • WinHtmlEditor: Winform下的html编辑器
  • SmartThreadPool:使用C#实现的,带高级特性的线程池
  • Snoop: WPF Spy Utility
  • Autofac: 轻量级IoC框架
  • HtmlAgilityPack:Html解析利器
  • Quartz.NET:Job调度
  • HttpLib:@CodePlex,简化http请求
  • SuperSocket:简化Socket操作,基于他的还有个SuperWebSocket,可以开发独立的WebSocket服务器了
  • DocX:未安装Office的情况下操作Word文件
  • Dapper:轻量级的ORM类,性能不错
  • HubbleDotNet:支持接入数据库的全文搜索系统
  • fastJSON:@CodeProject,高性能的json序列化类
  • ZXing.NET:@CodePlex,QR,条形码相关
  • Nancy:轻量级Http服务器,做个小型的Web应用可以摆脱IIS喽(Nancy.Viewengines.Razor,可以加入Razor引擎)
  • AntiXSS:微软的XSS防御库Microsoft Web Protection Library
  • Jint:JavaScript解释器
  • CS-Script:将C#代码文件作为脚本执行
  • Jexus:Linux下 高性能、易用、免费的ASP.NET服务器
  • Clay:将dynamic发挥的更加灵活,像写js一样写C#
  • DynamicJSON:不必定义数据模型获取json数据
  • SharpPcap:C#版的WinPcap调用端,牛逼的网络包分析库(自带PacketNotNet用于包协议分析)
  • Roslyn:C#,VB编译器
  • ImageResizer: 服务端自由控制图片大小,真乃神器也,对手机端传小图,PC端传大图,CMS用它很方便
  • UI相关:DevExpress, Fluent(Office 07风格), mui(Modern UI for WPF)
  • NetSparkle:应用自动更新组件
  • ConfuserEx: 开源.net混淆工具
  • ServiceStack: 开源高性能Web服务框架,可用于构建高性能的REST服务
  • Expression Evaluator:Eval for C#,处理字符串表达式
  • http://nugetmusthaves.com/
  • Reactive Extensions (Rx):异步,事件驱动编程包, Rx = Observables + LINQ + Schedulers

C & C++

  • Thrift:用来进行可扩展且跨语言的服务的开发(类似的还有个Avro,Google protobuf)。
  • libevent:是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。(对了还有个libev呢)
  • Boost:不多说了,准C++标准库
  • Valgrind\Ptmalloc\Purify: 调试工具
  • NetworkServer架构:acceptor->dispatcher->worker(这个不算工具哦)
  • POCO - 开源的C++类库及应用程序框架的集合,它主要提供简单的、快速的网络和可移植应用程序
  • breakpad:崩溃转储和分析模块,很多crashreport会用到
  • UI界面相关:MFC、BCG和QT这类的就不说了,高端一点的还有Html和DirectUI技术:libcef(基于chrome内核的,想想使用html5开发页面,还真有点小激动呢)、HtmlLayout、Duilib、Bolt,非C++的,还有node-webkit也不错,集成了node和webkit内核。

其他

游戏开发相关

  • MINA:使用Java开发手游和页游服务器(对了还有Netty,也很猛的,都是基于NIO的)
  • HP-Socket:见有有些页游服务器使用这个构建的
  • Unreal: 虚幻引擎,C++,基于这个引擎的游戏很多
  • OGRE:大名鼎鼎的3D图形渲染引擎,天龙八部OL、火炬之光等不少游戏都用了这个引擎
  • OpenVDB:梦工厂C++的特效库,开源的
  • cocos2d:跨平台2D游戏引擎
  • unity3d:跨平台3D游戏引擎,很火的哦
  • Nodejs:也有不少使用它来开发手游和页游服务器(网易的Pomelo)

日志聚合,分布式日志收集

  • Scribe:Facebook的(nodejs + scribe + inotify 同步日志)
  • logstash:强大的日志收集系统,可以基于logstash+kibana+elasticsearch+redis开发强大的日志分析平台
  • log.io: nodejs开发的实时日志收集系统
  • Graylog: 易用、功能丰富的日志管理系统, 部署、维护、搜索比ELK简单

RTP,实时传输协议与音视频

  • RTP,RTCP,RTSP-> librtp,JRTPLIB(遵循了RFC1889标准)
  • 环形缓冲区,实时数据传输用
  • SDL,ffmpeg,live555,Speex
  • Red5:用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。
from https://github.com/stanzhai/be-a-professional-programmer

最小化构建Docker镜像

$
0
0

alpine

基于alpine基础镜像构建,alpine只有5M左右,相比centos之类的小太了,而且软件包管理也方便。
构建过程中,还有个技巧,如下示例:
apk add --no-cache --virtual .build-deps \
git \
binutils-gold \
g++ \
gcc \
gnupg \
libgcc \
linux-headers \
make \
python \
&& echo "do something build..." \
&& apk del .build-deps
通过apk安装软件包时,我们指定了虚拟包.build-deps,这样git之类的工具归属到虚拟包下,由于仅是构建阶段用到的命令,如执行npm installpip install,当把项目构建完以后,通过apk del .build-deps清理掉所有临时命令即可。
这样就可以保证构建出的镜像最小了。

Multi-stage Build

Docker 提供了 Multi-stage Build(多阶段构建),可以实现镜像瘦身。
我们将镜像构建分成两个阶段:
在 ”build“ 阶段依然采用 JDK 作为基础镜像,并利用 Maven 进行应用构建; 在最终发布的镜像中,我们会采用 JRE 版本作为基础镜像,并从”build“ 镜像中直接拷贝出生成的 jar 文件。这意味着在最终发布的镜像中,只包含运行时所需必要内容,不包含任何编译时依赖,大大减少了镜像体积。
FROM adoptopenjdk/openjdk8 AS build
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/' /etc/apt/sources.list
RUN apt-get update
RUN apt-getinstall -y \
git \
maven
WORKDIR /tmp
RUN git clone https://github.com/spring-projects/spring-petclinic.git
WORKDIR /tmp/spring-petclinic
RUN mvn install

FROM adoptopenjdk/openjdk8:jre8u222-b10-alpine-jre
COPY --from=build /tmp/spring-petclinic/target/spring-petclinic-2.1.0.BUILD-SNAPSHOT.jar spring-petclinic-2.1.0.BUILD-SNAPSHOT.jar
CMD ["java","-jar","spring-petclinic-2.1.0.BUILD-SNAPSHOT.jar"]

第三方工具

docker-slim

免费食物不是好事

$
0
0


很多大互联网公司(Google,Facebook 之类的)都提供免费的三餐,饮料和零食。到后来很多创业公司也开始效仿,以至于“免费午餐”成了一种风气,到现在已经不是什么新鲜事了。“传统”一点的 IT 公司(微软,Intel 等)的某些员工也对此表示羡慕,希望自己的公司也有免费的三餐,饮料和零食。他们没有看明白,完全免费的食物可能并不是什么好事。这个看似简单的问题,我经历了很多年才看明白其中的奥妙。
首先在心理上,免费食物容易造成一种“我欠公司人情”的感觉。不知不觉的,很多年轻人就被洗脑了,觉得自己白吃了公司那么多东西,就该为公司多做“贡献”,从而付出比本来多的劳动,或者为公司高唱赞歌,显示出一副跪舔的姿态。有些人为了免费的晚餐会待到比较晚的时候,也没其他事干,就不知不觉多做工作,公司就因此赚了一把。
因为闲得无聊多做点工作对于年轻员工也许不是坏事,但免费食物对于人的心理有很奇怪的作用。当年 Google 的免费三餐仍然是新鲜事的时候,很多 Google 员工打心眼里觉得外面的人都想去 Google 吃“free lunch”,显示出一种莫名的自豪感。外面的人总是听说 Google 有免费三餐,还请了大厨,也被洗脑了。总是有人两眼放光地说:“我也好想去 Google 吃免费大餐啊!” 让人很无语。
所以大互联网公司提供免费三餐是有目的的,而且产生了一些意想不到的心理效果。反之如果食物不免费,员工就可以在心理上不欠公司什么:“这是我出钱买了的。” 这样他们就不会出现过度付出,或者对公司跪舔,过度自豪的现象。
自从 Google 提出 free food 这个概念,导致了社会文化的低俗化,甚至传染到大学里去了。我在 Cornell 的时候,学校里的各种活动似乎也受了 Google 理念的影响,很多讲座一类的活动都提供免费食物。当然,学校里的免费食物就是 pizza 一类的而已,可是仍然引得很多人过度兴奋:“Go! Free food!” 甚至有学生做了一个“free food 搜索引擎”,列出学校里每天所有免费食物的时间和地点……
我开头还没发现这有什么问题,直到有天一个巴西来的同学对我说:“我不明白这些人为什么对 free food 如此兴奋,跟傻子似的!谁稀罕他们的 pizza 啊?” 我才开始意识到,免费食物带来的是低级的文化。
我不得不说,微软,Intel 一类的老牌公司的跪舔现象确实少很多。员工都更加成熟和独立,工作就是工作,很少有过度兴奋和“我属于这个公司”的集体自豪感。我觉得这与他们不提供免费食物有一定的关系。
集体自豪感和集体主义并不是什么好东西,我们应该避免这种心理。每个人都应该保持自己心理的独立。传统公司的食物虽然收费,价格却比外面便宜很多,基本只是收回成本。餐费几乎可以忽略不计,可是带来的心理效果却是与完全免费很不一样的。没人会谈论公司的食物这个事,没人为此引以为豪,只是不好吃的时候会骂两句而已。很奇怪,这似乎帮助了员工保持心理上的独立。
完全免费的食物容易被低素质人群占便宜,导致其它人没得吃。你可能以为 Google,Facebook 员工素质那么高,不可能过度利用公司的免费食物。可惜林子大了什么鸟都有。我听说 Google 总部曾经持续出现这样的情况,每当快到周末的时候,架子上的零食会被某些人拿背包全部收走带回家,囤起来给自己家里人用。甚至有 Facebook 员工收费带外面不认识的人去公司食堂吃饭,以此来赚外快,结果被发现开除,成为一时的新闻。另外 Google 还提供免费自助洗衣服务,导致很多人为了省水电费把家里衣服打包带到公司去洗…… 你说猥不猥琐?
经济是小事,但这种现象降低了整个公司的文化品位。在免费食物的诱惑之下,爱占小便宜的人在各种地方显示他们的存在,就让公司显得很低级,怎么感觉身边都是难民似的,没见过吃的东西吗?要是食物不免费,而是收取基本的费用,就可以自然而然通过经济学原理防止占便宜。同时公司文化也能保持尊严,更加文明和互相尊重。
为了避免有人占小便宜,Google 员工要带别人去公司吃饭,都是有配额有记录的。我当年在 Google 时的规矩是一个月只能带四人次去公司吃饭。这会出现什么问题呢?有一天我带了 5 个微软研究院的朋友去参观 Google,到了午饭时间门卫硬是不让我带他们进餐厅吃饭,说一个月只能带 4 个人吃饭,搞得很尴尬。看到问题了吗?如果食物不是免费的,我就可以随便带几个人吃饭,而不会出现这种尴尬的局面。我出了钱买的饭菜,不用别人来管 :)
完全免费的食物还有营养方面的问题。一方面,员工可能吃太多零食和饮料而变胖,导致各种健康问题。另外,它限制了你吃到更好品质的食物。Google 的午餐也许够好了,可是有些人就是想要更好更健康的。然而因为是免费的,公司肯定会控制食物的成本,所以本来你花点钱就可以买到很好的东西,可是因为公司要控制成本,就没法给你更好的。免费的好东西(寿司一类的)总是很多人想要,所以食堂里最好的食物总是很快就没了,你晚一点去就吃不到。因为公司提供三餐,所以外面街上的餐厅都倒闭或者搬走了,你走出去也没什么好吃的。结果免费的公司午餐,导致了你要吃顿更好的饭菜需要跑很远。
如果食物不免费,公司就可以用实惠的价格出售很好的东西给你,而且好东西稍微贵一些,就不会那么快被人拿完。某些公司甚至会在食堂里设置一个柜台,让外面的饭店也可以在里面以平价卖他们的食物。每天换一家饭店在那个窗口,所以你就有更多的选择。这会给很多人带来方便,多样和健康的生活。
另外,公司收费的午餐平衡了公司餐厅与外面餐厅的利益关系。吃饭都要花钱的,所以员工有时候也会去外面吃饭。这就让外面的餐厅不至于因为这公司的存在而倒闭。社区和街道也因为公司员工出去吃饭而更加繁荣有趣,不会变的死气沉沉。
所以呢,公司提供完全免费的食物并不是什么好事,它导致了各种不好的心理状态和不好解决的问题。提供平价而不是完全免费的食物,自动避免了这些问题,其实是更好的做法。
------------

一堂不错的经济学原理课

北京可以撒娇,深圳不可任性

$
0
0
深圳激流,顿失滔滔。
近期,中国三季度数据出笼,各有阴晴。其中,深圳的经济数据,引起了极大关注。深圳前三季度增速为6.6%,略高于全国水平,但是低于众多珠三角城市。同时,其第三季度的增速,测算更是在粤港澳大陆九城市中靠后。
虽然中美贸易战影响出口,但是,深圳的远忧,更在别处。
去年,华为进行了大规模的搬迁,一次性2700名员工从深圳搬到东莞松山湖。虽然华为宣称总部永远留在深圳,数千人一次性搬离深圳的举动,还是引起巨大震撼,也为深圳的未来,提供了预警。
房价上天,实业落地。
房地产对于实体经济的挤出效应,近年来越来越明显,华为从深圳搬迁至东莞,也正好暗合这一逻辑。
四大城市中,以前一直是京沪领先。2015年一年,深圳房价涨幅,竟然超过50%以上,位居国内第一,而经过此轮狂涨,深圳的房价,已经从北上广深中的小弟,跃升为大哥。深圳一个小区的市场价,已经可以抵上排名全国第五的深圳机场。
南有深圳,北有北京,房价双雄兀立。
在北方,北京则成为房价上涨的永恒之城,近十年来,房价近似神话。
中国是一个半吊子市场经济国家,市场在资源配置中,起到了重大作用,但是,权力的巨手,却比市场更为强势。
深圳的起家,得益于市场经济。在中国大陆,深圳一度是市场力量释放最为强劲的地方,亦是市场之花盛开最鲜艳的宝安之地。
在市场体系中,深圳冠绝全国,在权力体系中,深圳却泯然众人。而房市,恰恰是受到权力干预很大的一个领域。
过高的房价,对于深圳未来,是一种戕害。
(1)北京为何可以撒娇?
中央集权,千年传统。在中国,权力对于资源的强大控制力,惯性巨大。
自古以来,中国的财富与资源,就集中于都城。自秦始皇迁天下富商集中于咸阳为始,中国的都城,不仅是权力的中枢,也是财富的中枢。
时至今日,这个格局还没彻底改变。在中国建设银行联合波士顿咨询公司推出的中国富人地图中,中国顶级富人最多的地方是北京、而不是经济总量最大的广东或者江苏。而是权力最集中的地方。
可以设想,美国的富翁可能都产生于华盛顿吗?北京不仅是中国的权力中心,也是中国的财富产生中心,同时,北京还是中国的资源中心。
在经济资源、教育资源、医疗资源等几个核心指标领域,北京独步全国。北京是中国重点大学最多的城市。最著名的两所中国大学清华和北大,均坐镇北京。在经济领域,100多家央企中有超过一半以上的总部驻跸北京,超过其它所有城市总和。北京还是拥有三甲医院最多的城市,中国最好的医院,都集中在北京。而北京作为一个北方城市本来是一个缺水的城市,但是可以利用政治地位的优势,先是用河北的水,再通过南水北调,征用南方的水。
在权力体系中的绝对优势,使北京集中了中国最多的公共资源。纵使限车限房,人们还是对其趋之若鹜。
四大一线城市,北京和上海是直辖市,广深是副省级城市,它们不仅在市场竞争中处于优势,在权力体系中也处于优势。
挟两大优势,所以,人口源源不断流向这些城市。从2005年至2015年的十年中,北京常住人口增长45%,上海增长37%,广州增长38%,深圳增长30%。
北京在全国的地位,犹如省会在各个省的地位。其机制类似。
房价上涨的城市中,几乎所有的省会都位列其中。省会城市对于全省资源的吸附能力,正如北京相对于全国。纵使是中国经济落后地方的省会,其房价也可以坚挺,无它,本省内最好的公共资源,都在它的手里,而这种资源的拥有,并非由市场竞争得来,而是一种基于权力等级安排。省会城市在省内的权力体系中处于顶端,是全省人无法绕过去的坎。连河北这种北京灯下黑的地方,省会石家庄仍然可以凭借强大的资源,吸附人口。
所以,中国大部分的省会,不仅是政治上最强势的城市,亦是经济上强势的城市。
只有极少数城市,能够抗衡省会。如辽宁的大连与沈阳,山东的青岛与济南,江苏的苏州与南京,浙江的宁波与杭州,福建的厦门与福州。而考究这些能够与省会分庭抗礼的的城市,我们可以发现,他们的底气不仅在于经济实力,也在于政治实力。大连、青岛、厦门、宁波等城市均为计划单列市,其人权和事权多由中央直管,而苏州市委书记,则多由省委常委兼任,比肩省会南京的市委书记。深圳在经济上与广州分庭抗礼,很大一个原因,也是因为深圳是计划单列市,其人权和事权可以相对超脱。
中国城市的公共资源安排,是按照政治地位排队。在这种体系中,直辖市处于第一个梯队、省会处于第二个梯队,计划单列市处于第三梯队,其它常委兼任书记的地级市属于第四梯队,一般城市处于第五梯队。
北京之强势,源自两大体系均占优。在市场体系中,北京相对尚可,在权力体系中,北京独步天下,在公共资源方面有绝对优势。所以,北京的房价一直涨,均价突破十万指日可待。
只要中央政府一直为北京背书,只要按照权力等级分配公共资源的模式不改变,只要最强势的央企、最好的学校和医院都集中在北京,北京的房价就不会跌。
虽然雄安新区将分流部分北京的公共资源,但是,北京仍将是中国公共资源最充裕的城市。
北京房价上涨,本质是权力的撒娇。
(2)深圳为什么没有资格任性?
深圳的房价飙升,不像北京,隐约令人感觉到某种忧虑。
今日,这种忧虑已经明朗。
北京可以撒娇,深圳却不可任性,因为在权力体系中,深圳没有任性的资格。
深圳虽是特区,但也不过是数十个副省级城市其中的一个。在公共资源拥有上,根本无法与几个直辖市比较。四大直辖市中,纵使除去北京,其它三个直辖市,也有数十家央企投资,其获得的中央政策性资源倾斜的优势,非深圳可比。在权力体系中,还有数十个省会城市,以及其它计划单列市与深圳并驾齐驱。深圳在中国四大一线城市中,政治地位排名末尾。
纵使在广东省内,深圳所拥有的公共资源,也比不过省会广州。
广东最好的大学,如中山大学,华南理工大学,暨南大学等,都在广州。深圳本土最好的大学,也就深圳大学勉强拿得出手。而且在广东并不强势。而在全国三甲医院系统,三甲医院几乎被直辖市和省会城市瓜分,深圳根本排不上号。在交通领域,广州拥有更强势的地位,航空方面,广州机场排名全国第三,深圳只排名第五,在火车交通领域,广州更是华南的枢纽,而且高铁直通东南亚。
尤其在高等教育领域,深圳短板明显。在罗天昊国与城研发的《中国最缺大学的十大城市》排名中,深圳是中国经济大市中,大学生密度最低的城市。大学生密度,仅为全国平均水平的三分之一左右。超过千万的特大城市,仅有十几万在校大学生,用人基本靠抢。而与深圳人口略多的广州,大学生在校生人数超过110万,几乎是深圳的十倍。其它国内大城市,如武汉、北京也都在100万左右。
在公共资源方面,深圳相对省会广州处于劣势,而北京和上海,在其所在区域,处于王者地位,没有竞争对手,更无可替代。
而在市场体系中,深圳虽然有一定优势,但是并非不可替代。深圳的平均月薪比广州高10%左右,但是房价却远远高出广州深圳纵有腾讯、华为等本土巨头,但是高房价的压力,已使其产生迁徙之意。在服务业、文化产业领域,广州亦领先深圳。广州的潜力巨大,对于深圳未来造成了强大的压力,深圳并非不可替代。不仅是广州,深圳的一些产业,在高成本压力下,也已经转移到了东莞。
在权力体系,深圳泯然众人,在市场体系,深圳并非无可替代。
     若放纵房价飙升,作为移民大城的深圳,很可能逼走部分人口,他们本人就无户口的羁绊,逐水草而居,既然深圳的水草已经不再丰美,也就无可留恋,而且这些人口的主体是青年人,国家最宝贵的财富。连上海都出现了人口回流,深圳必须警惕。
若继续任性,深圳的青年之城,活力之城的灵魂,将彻底丢失。
    (3)超高房价耗尽经济发展潜力
高房价对于城市的戕害,连直辖市都已不安。上海市委书记忧心忡忡,认为高房价会削弱上海竞争力,重庆决策层亦认为,一根筋价高,长远就使得工商业成本过高,造成经济萧条。最后大家都不务正业,毁坏了整个城市发展方向。
前几年深圳房价飙升,固然有购房条件宽松的因素,但是,这有一个重要的原因,来自权力体系,关于深圳直辖的传言,一直不绝于耳。某种意义上说,不仅是对于市场的期待,更是对于权力的期待,才是深圳房价2015年不正常飙升的心理预期。
现在,深圳也开始逐步遭遇挑战。
在消费端,深圳形势非常严峻,抬高的物价,对于市民消费能力的挤压,恶果已现。至2018年,深圳的消费进一步被挤压。在罗天昊国与城研发的《中国十大城市消费能力排名》中,深圳居末位。2018年,深圳的社会消费品零售总额为6168.87亿,与GDP的比值仅为0.283,而武汉、成都、杭州、广州、重庆等城市的比值均超过深圳的两倍。
在生产端,深圳一度出现了大面积的实业震荡。
深圳市内的工业大区南山区,正是深圳高新产业所在之地。华为、中兴、腾讯等巨头均崛起于此。据相关统计,2015年,南山区很多企业出现了盈利能力下滑的现象,
深圳虽然已经废关,但是作为传统"关外重镇"的龙岗,曾是深圳市区工业转移之后的新工业基地。2015年前三季度,剔除华为之后,龙岗规模以上工业总产值出现负增长。
经过两三年的调整,虽然深圳实业有所回升,但仍需警惕。
华为掌门人任正非已多次批评深圳的高房价。告诫当地,高房价将摧毁实体经济的的竞争力,2017财年,华为总收入高达6036亿,但是,利润却只有475亿,利润率仅7.87%,超高的成本,吞噬了其赢利能力。华为从南山搬迁到龙岗,从龙岗搬迁到东莞,一步一步远离高房价策源地,也是逼不得已。
高房价的压迫下,高昂的商业成本,恶化的创业环境,成为横亘的高山,实体产业萎缩的迹象已经日益明显。华为搬迁东莞,只是开始。
(4)深圳是中国最鲜艳的市场之花,开放包容是深圳的"元根"
深圳是中国改革开放四十年的一面大旗,亦是中国市场经济盛开的最鲜艳的花朵。
开放包容的社会氛围,领先全国的管理体系,便利的商业环境,使深圳成为市场的热土,崛起了华为、腾讯等一大批本土企业。同时,也吸引了众多的投资,深圳是除北京、上海之外,全球知名企业入驻最多的城市。
最近几年,深圳也是中国城市产业转型比较成功的典型。在创新领域,表现突出,深圳的高新技术企业占广东半壁江山,国际专利申请量占全国近一半,中国专利金奖获奖数占全国五分之一,有效发明专利约占全国十分之一。成为中国的创新之城。同时,2008年,深圳即成为中国设计之都,领先于上海和北京。
一直以来,深圳以活力之都闻名,其开放性独步全国。在罗天昊国与城研发的《中国城市包容能力排名》中,深圳的净流入人口占总人口的比重,最近几年一直在70%左右。年轻的人口,使深圳充满了活力,而移民之城利益固化程度相对比较低,对于推动改革,亦非常有利。
改革,锐气,活力,是深圳的生命所在。袁庚去世,举国哀悼。世人哀叹"深圳已无元根",某种程度上乃是对于深圳改革的忧虑。
特区不特,是人们对深圳最大的担心。近年来深圳社会活力有所丧失,值得警惕。
1995年前,深圳平均年龄为25岁,至2018年,深圳常住人口的平均年龄,已经超过了32岁。反映了深圳对青年人口吸附能力逐步下降。形成了比较固定的利益格局。对于新兴力量和新兴阶层形成了排挤效应。开拓进取精神萎缩,改革锐气渐失。
无论是房价狂飙,还是深圳逐步实施的限制外地车牌,都体现了深圳包容性和活力的下降。深圳绝不可蜕变为傲慢的权力之城。市场之城,青年之城,活力之城,包容之城,开放之城,才是深圳永恒魅力所在,是深圳的"元根"。
深圳曾有一个名叫"原上草"的民间乐队,一时风靡南国,深受市民欢迎,这个名字实是深圳的写照。在改革荒原时代,原上草,肆意生长,最终成燎原之势,而无数曾生存和奋斗在深圳的人们,谁又不是坚毅狂野又富有活力的原上草?如今,原上草乐队业已解散,令人扼腕。
原上之草,何时再生?
遥望南天,不禁神驰。
南国多包容,江海可纵横。

用golang实现的blockchain的源代码

$
0
0
最近区块链又火了,这对于我们做技术的是好事情,我看拉勾上区块链的工程师开到了40K+。
区块链的概念来自于比特币bitcoin,但是比特币不是区块链,比特币是区块链技术的一个产物。相对来说,比特币的区块链技术属于区块链1.0时代,也是比较简单的,如果我们学习研究,那么区块链1.0(比特币)也更容易理解。
区块链本质上是存储+网络,存储就是基于块的链表存储,也是后向性链表,网络就是P2P网络,分布式,没有中心服务器,这些个特性就意味着区块链很难被篡改。
对于存储+网络,golang具备天然的优势,而且区块链2.0的以太坊,区块链3.0的超级账本都是使用go语言实现的,所以圈里golang的朋友,可以高兴一下了。不过是学习区块链,还是从事这门行业,会golang的都具备天然的优势。
为了便于学习Golang区块链,从零入门,我分享几个Go语言实现的区块链项目,可以参考学习,理解区块、区块链、POW、钱包、交易、记账等这些术语。

naivechain:

https://github.com/kofj/naivechain
比较简单的,建议先看这个,提供了区块、区块链,P2P节点链接,模拟挖矿等能力,300行代码,很容易看。

gochain:

https://github.com/crisadamo/gochain
稍微复杂一些的,基本的概念实现都有,多了POW(工作量证明),交易添加等。

blockchain:

https://github.com/izqui/blockchain
防的比较全的,连编码都是base58的,还实现了hash tree,也就是 MerkelRoot 。

blockchain_go:

https://github.com/Jeiwan/blockchain_go
研究性质的简单实现,主要基于作者的几篇研究文章:
  1. Basic Prototype
  2. Proof-of-Work
  3. Persistence and CLI
  4. Transactions 1
  5. Addresses
  6. Transactions 2
  7. Network
以上都是英文的,不过有人翻译,可以参考这个链接查看,这是一步步很不错的入门学习项目了。
  1. https://ethfans.org/posts/building-blockchain-in-go-part-1
  2. https://ethfans.org/posts/building-blockchain-in-go-part-2
  3. https://ethfans.org/posts/building-blockchain-in-go-part-3
  4. https://ethfans.org/ajian1984/articles/building-blockchain-in-go-part-4
  5. https://ethfans.org/ajian1984/articles/building-blockchain-in-go-part-5
  6. https://ethfans.org/ajian1984/articles/building-blockchain-in-go-part-6
  7. https://ethfans.org/ajian1984/articles/building-blockchain-in-go-part-7

gocoin:

https://github.com/piotrnar/gocoin
看这个项目的介绍:
Full bitcoin solution written in Go (golang)
比特币的都有了,钱包,交易,客户端,可以部署运行。
区块链技术肯定是个好技术,而且我们又具备Golang的优势,所以可以好好的看下,了解下。

一个简单的用Golang实现的HTTP Proxy

$
0
0
首先在linux vps上,安装go环境。
把以下蓝色的代码保存为http-proxy-by-flysnow.go,保存在linux vps上。


package main

import(
"bytes"
"fmt"
"io"
"log"
"net"
"net/url"
"strings"
)

funcmain(){
log.SetFlags(log.LstdFlags|log.Lshortfile)
l, err := net.Listen("tcp",":5082")
if err !=nil{
log.Panic(err)
}

for{
client, err := l.Accept()
if err !=nil{
log.Panic(err)
}

gohandleClientRequest(client)
}
}

funchandleClientRequest(client net.Conn){
if client ==nil{
return
}
defer client.Close()

var b [1024]byte
n, err := client.Read(b[:])
if err !=nil{
log.Println(err)
return
}
var method, host, address string
fmt.Sscanf(string(b[:bytes.IndexByte(b[:],'\n')]),"%s%s",&method,&host)
hostPortURL, err := url.Parse(host)
if err !=nil{
log.Println(err)
return
}

if hostPortURL.Opaque =="443"{//https访问
address = hostPortURL.Scheme +":443"
}else{//http访问
if strings.Index(hostPortURL.Host,":")==-1{//host不带端口, 默认80
address = hostPortURL.Host +":80"
}else{
address = hostPortURL.Host
}
}

//获得了请求的host和port,就开始拨号吧
server, err := net.Dial("tcp", address)
if err !=nil{
log.Println(err)
return
}
if method =="CONNECT"{
fmt.Fprint(client,"HTTP/1.1 200 Connection established\r\n\r\n")
}else{
server.Write(b[:n])
}
//进行转发
go io.Copy(server, client)
io.Copy(client, server)
}
 
然后,运行go build http-proxy-by-flysnow.go
在当前目录下,就会生成可执行文件http-proxy-by-flysnow。
 
root@host ~]# ./http-proxy-by-flysnow & 
[1] 30974
[root@host ~]#
[root@host ~]# lsof -i:5082
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
http-prox 30974 root 3u IPv6 1803120 0t0 TCP *:qcp (LISTEN)
[root@host ~]#

这个http-proxy-by-flysnow可以用作各种tunnel程序的后端程序。

一个简单的用Golang实现的socks5 Proxy

$
0
0
这次使用Golang实现一个Socket5的简单代理。Socket5和HTTP并没有太大的不同,他们都可以完全给予TCP协议,只是请求的信息结构不同,所以这次我们不能像上次HTTP Proxy一样,解析请求和应答,要按照Socket的协议方式解析。

Socket协议版本

Socket协议分为Socket4和Socket5两个版本,他们最明显的区别是Socket5同时支持TCP和UDP两个协议,而SOcket4只支持TCP。目前大部分使用的是Socket5,我们这里只简单的介绍Socket5协议。

Socket5协议之授权认证

要想实现Socket5之间的连接会话,必须要懂SOcket5协议的实现细节和规范。这就好比我们都用普通话对话一样,彼此说的都明白,也可以给对方听得懂的回应。Socket5的客户端和服务端交流也一样,他们的语言就是Socket5协议。因为Socket5支持TCP和UDP两种,这里只介绍TCP这一种,UDP大同小异。
首先客户端会给服务端发送验证信息,这个是建立连接的前提。比如客户端:hi,哥们,借个火。服务端要认识它就说:好,给;如果不认识就说:你哪根葱啊!!











我们这里以最简单的不需要验证的方式为例进行介绍,这种方式进行了上面的一问一答后就可以开始建立连接了。对于其他验证方式,还需要再进行一次一问一答,主要是客户端提供验证信息,服务端回应验证是否正确,这些细节可以参考http://www.ietf.org/rfc/rfc1928.txt以及http://www.ietf.org/rfc/rfc1929.txt的Socket5协议定义。

Socket5协议之建立连接。

Socket5的客户端和服务端进行双方授权验证通过之后,就开始建立连接了。连接由客户端发起,告诉Sokcet服务端客户端需要访问哪个远程服务器,其中包含,远程服务器的地址和端口,地址可以是IP4,IP6,也可以是域名。
























详细描述参考http://www.ietf.org/rfc/rfc1928.txt

数据转发

建立好连接之后,就是数据传递转发,TCP协议可以直接转发。UDP的话需要特殊处理,具体参考协议定义,其实就是一个特殊格式的回应,和上面的一问一答差不多,更多协议细节 http://www.ietf.org/rfc/rfc1928.txt


完整代码

以下是完成的代码。
package main

import(
"io"
"log"
"net"
"strconv"
)

funcmain(){
log.SetFlags(log.LstdFlags | log.Lshortfile)
l, err := net.Listen("tcp",":5083")
if err !=nil{
log.Panic(err)
}

for{
client, err := l.Accept()
if err !=nil{
log.Panic(err)
}

gohandleClientRequest(client)
}
}

funchandleClientRequest(client net.Conn){
if client ==nil{
return
}
defer client.Close()

var b [1024]byte
n, err := client.Read(b[:])
if err !=nil{
log.Println(err)
return
}

if b[0]==0x05{//只处理Socket5协议
//客户端回应:Socket服务端不需要验证方式
client.Write([]byte{0x05,0x00})
n, err = client.Read(b[:])
var host, port string
switch b[3]{
case0x01://IP V4
host = net.IPv4(b[4], b[5], b[6], b[7]).String()
case0x03://域名
host =string(b[5: n-2])//b[4]表示域名的长度
case0x04://IP V6
host = net.IP{b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12], b[13], b[14], b[15], b[16], b[17], b[18], b[19]}.String()
}
port = strconv.Itoa(int(b[n-2])<<8|int(b[n-1]))

server, err := net.Dial("tcp", net.JoinHostPort(host, port))
if err !=nil{
log.Println(err)
return
}
defer server.Close()
client.Write([]byte{0x05,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00})//响应客户端连接成功
//进行转发
go io.Copy(server, client)
io.Copy(client, server)
}

}


这目前是一个简易版本的Socket5 代理,还有很多没有实现,要实现完成的Socket5,可以自己根据他定义的协议试试.

在linux vps上,安装go环境。
把以上的蓝色的代码保存为socks-proxy-by-flysnow.go,保存在linux vps上。

然后,运行go build socks-proxy-by-flysnow.go
在当前目录下,就会生成可执行文件socks-proxy-by-flysnow。


[root@host ~]# ./socks-proxy-by-flysnow &


[1] 31318


[root@host ~]# lsof -i:5083


COMMAND     PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME


socks-pro 31318 root    3u  IPv6 1804076      0t0  TCP *:qfp (LISTEN)


[root@host ~]# 


这个socks-proxy-by-flysnow可以用作各种tunnel程序的后端程序。

grafana 一款开源监控度量的看板系统

etcd

$
0
0


一款分布式的,可靠的Key value数据库,使用简单,速度快,又安全。
Distributed reliable key-value store for the most critical data of a distributed system

etcd

Go Report CardCoverageBuild Status TravisBuild Status SemaphoreDocsGodocReleasesLICENSE
Note: The master branch may be in an unstable or even broken state during development. Please use releases instead of the master branch in order to get stable binaries.
etcd Logo
etcd is a distributed reliable key-value store for the most critical data of a distributed system, with a focus on being:
  • Simple: well-defined, user-facing API (gRPC)
  • Secure: automatic TLS with optional client cert authentication
  • Fast: benchmarked 10,000 writes/sec
  • Reliable: properly distributed using Raft
etcd is written in Go and uses the Raft consensus algorithm to manage a highly-available replicated log.
etcd is used in production by many companies, and the development team stands behind it in critical deployment scenarios, where etcd is frequently teamed with applications such as Kubernetes, locksmith, vulcand, Doorman, and many others. Reliability is further ensured by rigorous testing.
See etcdctl for a simple command line client.

Community meetings

etcd contributors and maintainers have monthly (every four weeks) meetings at 11:00 AM (USA Pacific) on Thursday.
An initial agenda will be posted to the shared Google docs a day before each meeting, and everyone is welcome to suggest additional topics or other agendas.
Time:
Join Hangouts Meet: meet.google.com/umg-nrxn-qvs
Join by phone: +1 405-792-0633‬ PIN: ‪299 906‬#

Getting started

Getting etcd

The easiest way to get etcd is to use one of the pre-built release binaries which are available for OSX, Linux, Windows, and Docker on the release page.
For more installation guides, please check out play.etcd.io and operating etcd.
For those wanting to try the very latest version, build the latest version of etcd from the master branch. This first needs Go installed (version 1.13+ is required). All development occurs on master, including new features and bug fixes. Bug fixes are first targeted at master and subsequently ported to release branches, as described in the branch management guide.

Running etcd

First start a single-member cluster of etcd.
If etcd is installed using the pre-built release binaries, run it from the installation location as below:
/tmp/etcd-download-test/etcd
The etcd command can be simply run as such if it is moved to the system path as below:
mv /tmp/etcd-download-test/etcd /usr/local/bin/
etcd
If etcd is built from the master branch, run it as below:
./bin/etcd
This will bring up etcd listening on port 2379 for client communication and on port 2380 for server-to-server communication.
Next, let's set a single key, and then retrieve it:
etcdctl put mykey "this is awesome"
etcdctl get mykey
etcd is now running and serving client requests. For more, please check out:

etcd TCP ports

The official etcd ports are 2379 for client requests, and 2380 for peer communication.

Running a local etcd cluster

First install goreman, which manages Procfile-based applications.
Our Procfile script will set up a local example cluster. Start it with:
goreman start
This will bring up 3 etcd members infra1, infra2 and infra3 and etcd grpc-proxy, which runs locally and composes a cluster.
Every cluster member and proxy accepts key value reads and key value writes.
Follow the steps in Procfile.learner to add a learner node to the cluster. Start the learner node with:
goreman -f ./Procfile.learner start

Next steps

Now it's time to dig into the full etcd API and other guides.
from https://github.com/etcd-io/etcd

hub

$
0
0


一款更便捷使用github的工具,包装并且扩展了git,提供了很多特性和功能,使用和git差不多。

A command-line tool that makes git easier to use with GitHub.
hub is a command line tool that wraps git in order to extend it with extra features and commands that make working with GitHub easier.
This repository and its issue tracker is not for reporting problems with GitHub.com web interface. If you have a problem with GitHub itself, please contact Support.

Usage

$ hub clone rtomayko/tilt

# expands to:
#=> git clone git://github.com/rtomayko/tilt.git
hub can be safely aliased as git so you can type $ git in the shell and get all the usual hub features.
See Usage documentation for the list of all commands and their arguments.
hub can also be used to make shell scripts that manually interface with the GitHub API.

Installation

The hub executable has no dependencies, but since it was designed to wrap git, it's recommended to have at least git 1.7.3 or newer.
platformmanagercommand to run
macOS, LinuxHomebrewbrew install hub
WindowsScoopscoop install hub
WindowsChocolateychoco install hub
Fedora LinuxDNFsudo dnf install hub
Arch Linuxpacmansudo pacman -S hub
FreeBSDpkg(8)pkg install hub
Debianapt(8)sudo apt install hub
UbuntuSnapsnap install hub --classic

Standalone

hub can be easily installed as an executable. Download the latest compiled binaries and put it anywhere in your executable path.

Source

Prerequisites for building from source are:
Clone this repository and run make install:
git clone \
--config transfer.fsckobjects=false \
--config receive.fsckobjects=false \
--config fetch.fsckobjects=false \
https://github.com/github/hub.git

cd hub
make install prefix=/usr/local
This assumes support for Go 1.11+ modules. If you are building on an older version of Go, you will need to clone the repository into $GOPATH/src/github.com/github/hub.

Aliasing

Some hub features feel best when it's aliased as git. This is not dangerous; your normal git commands will all work. hub merely adds some sugar.
hub alias displays instructions for the current shell. With the -s flag, it outputs a script suitable for eval.
You should place this command in your .bash_profile or other startup script:
eval"$(hub alias -s)"

PowerShell

If you're using PowerShell, you can set an alias for hub by placing the following in your PowerShell profile (usually ~/Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1):
Set-Alias git hub
A simple way to do this is to run the following from the PowerShell prompt:
Add-Content $PROFILE"`nSet-Alias git hub"
Note: You'll need to restart your PowerShell console in order for the changes to be picked up.
If your PowerShell profile doesn't exist, you can create it by running the following:
New-Item -Type file -Force $PROFILE

Shell tab-completion

hub repository contains tab-completion scripts for bash, zsh and fish. These scripts complement existing completion scripts that ship with git.
Installation instructions

Meta

from https://github.com/github/hub

martini 也是一款不错的Web框架。

$
0
0
web framework for Go

Martini wercker statusGoDoc

NOTE: The martini framework is no longer maintained.

Martini is a powerful package for quickly writing modular web applications/services in Golang.
Language Translations:

Getting Started

After installing Go and setting up your GOPATH, create your first .go file. We'll call it server.go

package main

import"github.com/go-martini/martini"

funcmain() {
m:= martini.Classic()
m.Get("/", func() string {
return"Hello world!"
})
m.Run()
}


Then install the Martini package (go 1.1 or greater is required):
go get github.com/go-martini/martini

Then run your server:
go run server.go
You will now have a Martini webserver running on localhost:3000.

Getting Help

Join the Mailing list
Watch the Demo Video
Ask questions on Stackoverflow using the martini tag
GoDoc documentation

Features

  • Extremely simple to use.
  • Non-intrusive design.
  • Plays nice with other Golang packages.
  • Awesome path matching and routing.
  • Modular design - Easy to add functionality, easy to rip stuff out.
  • Lots of good handlers/middlewares to use.
  • Great 'out of the box' feature set.
  • Fully compatible with the http.HandlerFunc interface.
  • Default document serving (e.g., for serving AngularJS apps in HTML5 mode).

More Middleware

For more middleware and functionality, check out the repositories in the martini-contrib organization.

Table of Contents

from https://github.com/go-martini/martini

相关帖子:https://briteming.blogspot.com/2017/10/goweb-beego.html

Gradle入门

$
0
0

前言

关于Android Gradle更多详细内容已经出书《Android Gradle权威指南》,大家可以购买,看更多没有介绍的知识点和内容,购买链接如下

Gradle简介

Gradle是一个基于Ant和Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,这比我们的ANT使用XML构建配置要灵活的多。在编写配置时,你可以像编程一样灵活,Gradle是基于Groovy的DSL语言,完全兼容JAVA.

projects 和 tasks是Gradle中最重要的两个概念,任何一个Gradle构建都是由一个或者多个project组成,每个project可以是一个jar包,一个web应用,或者一个android app等,每个project又由多个task构成,一个task其实就是构建过程中一个原子性的操作,比如编译、拷贝等。
一个build.gradle文件是一个构建脚本,当运行gradle命令的时候会从当前目录查找build.gradle文件来执行构建。下面我们来看下gradle的Hello World。在build.gradle构建文件中输入以下构建脚本:
task hello {
doLast {
println 'Hello world!'
}
}
task定义了一个任务,这个任务名字是hello。doLast是Task的方法,意思是在该hello任务执行之后作的事情,可以用一个闭包配置它,这里是输出Hello world!字符串。我们在终端里执行如下命令运行查看结果:
$gradle hello -q
Hello world!
其他关于Gradle的更多介绍请参考Gradle使用指南
Viewing all 20489 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>