“一把梭:REST API 全用 POST”
写这篇文章的原因主要还是因为V2EX上的这个贴子,这个贴子中说——
“对接同事的接口,他定义的所有接口都是 post 请求,理由是 https 用 post 更安全,之前习惯使用 restful api ,如果说 https 只有 post 请求是安全的话?那为啥还需要 get 、put 、delete ?我该如何反驳他。”
然后该贴中大量的回复大概有这么几种论调,1)POST挺好的,就应该这么干,沟通少,2)一把梭,早点干完早点回家,3)吵赢了又怎么样?工作而已,优雅不能当饭吃。虽然评论没有一边倒,但是也有大量的人支持。然后,我在Twitter上嘲讽了一下,用POST干一切就像看到了来你家装修工人说,“老子干活就是用钉子钉一切,什么螺丝、螺栓、卡扣、插销……通通不用,钉枪一把梭,方便,快捷,安全,干完早回家……不过,还是有一些网友觉得用POST挺好的,而且可以节约时间。所以,正好,我在《我做系统架构的原则》中的“原则五”中反对API返回码无论对错全是200的返回那,我专门写下这一篇文章,以正视听。
这篇文章主要分成下面这几个部分:
为什么要用不同的HTTP动词?
Re ...
谈谈公司对员工的监控
今天看到微博上有一个热点事件, 是一个关于某公司做的一个监控员工离职倾向的软件,从截图中可以看到员工访问招聘网站的次数,还有投递的简历以及搜索的关建词等等信息,通过这些信息分析员工的离职倾向。然后我发一个微博,说了一下,我以前工作过的公司无论外国公司还是中国公司都有这样的情况,收到一些人来问我相关的情况,所以,我想还是写篇文章详细地说一下,我对这种事情的看法。
本文分成下面个部分:
公司监控员工的技术手段有哪些?
为什么要监控员工?
外企和国企有什么不一样?
我对此事的看法
目录
技术手段
公司监控的目的
外企与国企不同之处
我对此事的看法
技术手段
下面是我经历过的几个手段:
1)通过网络嗅探的方式。也就是说,你只要上了公司的网络,你个人设备上的通讯信息就可以被人以网络抓包+分析的方式进行分析。当然,这样的手段已经不怎么好用了,因为现在的网络基本上都是HTTPS加密的,网络嗅探的方式只能知道你访问了什么IP,对于其中的数据是没有办法知道的。
2)通过使用公司提供的软硬件工具。你使用公司的电子邮箱,浏览器(或 ...
从Gitlab误删除数据库想到的
昨天,Gitlab.com发生了一个大事,某同学误删了数据库,这个事看似是个低级错误,不过,因为Gitlab把整个过程的细节都全部暴露出来了,所以,可以看到很多东西,而对于类似这样的事情,我自己以前也干过,而在最近的两公司中我也见过(Amazon中见过一次,阿里中见过至少四次),正好通过这个事来说说一下自己的一些感想和观点吧。我先放个观点:你觉得有备份系统就不会丢数据了吗?
目录
事件回顾
相关的思考
技术方面
关于备份
非技术方面
事件回顾
整个事件的回顾Gitlab.com在第一时间就放到了Google Doc上,事后,又发了一篇Blog来说明这个事,在这里,我简单的回顾一下这个事件的过程。
首先,一个叫YP的同学在给gitlab的线上数据库做一些负载均衡的工作,在做这个工作时的时候突发了一个情况,Gitlab被DDoS攻击,数据库的使用飙高,在block完攻击者的IP后,发现有个staging的数据库(db2.staging)已经落后生产库4GB的数据,于是YP同学 ...
从 MongoDB “赎金事件” 看安全问题
今天上午(2017年1月7日),我的微信群中同时出现了两个MongoDB被黑掉要赎金的情况,于是在调查过程中,发现了这个事件。这个事件应该是2017年开年的第一次比较大的安全事件吧,发现国内居然没有什么报道,国内安全圈也没有什么动静(当然,他们也许知道,只是不想说吧),Anyway,让我这个非安全领域的人来帮补补位。
事件回顾
这个事情应该是从2017年1月3日进入公众视野的,是由安全圈的大拿 Victor Gevers (网名:0xDUDE,GDI.foundation 的Chairman),其实,他早在2016年12月27日就发现了一些在互联网上用户的MongoDB没有任何的保护措施,被攻击者把数据库删除了,并留下了一个叫 WARNING 的数据库,这张表的内容如下:
{
"_id" : ObjectId("5859a0370b8e49f123fcc7da"),
"mail" : "[email protected]",
"note" : "SEND 0.2 BTC TO THIS ADDRESS 13za ...
Bret Victor – Inventing on Principle
Bret Victor(简历) – 苹果公司的UI交互设计师(大神级的人),在 CUSEC(Canadian University Software Engineering Conference) 上做了一个题为 “Inventing on Principle” 的演讲(vimeo视频链接),这个演讲中展示了五个示例:
用程序画树。如何把程序绘图变成实时的,如何把程序和图映射起来。
游戏调试。在实时编程的基础上,可以更容易的让你看到程序参数对游戏的调整,甚至对游戏过程的可视化调试。
算法调试。在写二分查找算法时可以实时看到程序的执行过程。边写边看到。
电路图。可以实时地看到电路图中各个部件的对1/0信号的处理。
动画。一种比flash制作动画更NB 的方法。
下面是优酷上的视频——你一定会被示例中的那些编程工具所震撼!
不过,Bret并不是在说什么编程,也不是在说什么技术,他是在说 How to live your life。
他认为,在我们的生活当中,我们听到太多的诸如:“跟随你的喜好”、“跟随你的兴趣”,“跟随你的热情”之类的东西,但他更认为,更应该是 ...
Quora使用到的技术
以前向大家介绍过Stack Exchange的系统架构和Facebook的系统架构,今天和大家说说Quora的。本文主要参考了Phil Whelan的这篇文章《Quora’s Technology Examined》。关于Quora是个什么网站我就不多说了,国内对他的C2C网站叫“知乎”。呵呵。我们还是来看看Quora的技术吧。
目录
Search-Box
实时查询
Webnode2 和 LiveNode
Amazon Web Service
HAProxy Load-Balancing
Python
Thrift
Tornado
Long Polling (Comet)
MySQL
Memcached
Git
JavaScript Placement
Charlie Cheever 遵从 “14 Rules for Faster-Loading Web Sites”
Search-Box
Quora只能搜索问题,主题标签,用户名,和主题标题。没有全文搜索,所以,你 ...
Facebook 的系统架构
来源:http://www.quora.com/What-is-Facebooks-architecture (由Micha?l Figuière回答)
根据我现有的阅读和谈话,我所理解的今天Facebook的架构如下:
Web 前端是由 PHP 写的。Facebook 的 HipHop [1] 会把PHP转成 C++ 并用 g++编译,这样就可以为模板和Web逻贺业务层提供高的性能。
业务逻辑以Service的形式存在,其使用Thrift [2]。这些Service根据需求的不同由PHP,C++或Java实现(也可以用到了其它的一些语言……)
用Java写的Services没有用到任何一个企业级的应用服务器,但用到了Facebook自己的定制的应用服务器。看上去好像是重新发明轮子,但是这些Services只被暴露给Thrift使用(绝大所数是这样),Tomcat太重量级了,即使是Jetty也可能太过了点,其附加值对Facebook所需要的没有意义。
持久化由MySQL, Memcached [3], Facebook 的 Cassandra [4], ...
中国仍是IE6的重灾区
“IE6于10年前诞生,现在应该是我们同IE6告别的时候了。”微软公司日前推出IE6倒计时网站(the Internet Explorer 6 Countdown,网址为www.ie6countdown.com),旨在尽早淘汰IE6,让用户升级到新版IE浏览器。
值得注意一点的是,在这张百分比图上所显示的目前仍在使用IE6浏览器上网的百分比第一的是中国——34.5%,这个符合我国国情——什么都要争第一。我国人口世界第一占全世界1/4,网民也是世界第一,还在使用IE6的网民占全世界的1/3,可以我国网民的严重落后。根据CNNIC今年的报告,我国现有4.5亿网民,34%也就是1.5亿用户,也就是说你身边每三个人中就有一个在用IE6。而中国的IE6网民占全世界使用IE6网民的一半。
另外,我发现亚洲是重灾区啊,包括中日韩台印都很猛啊,看来微软在亚洲的营销的确不错。
我查看了一下Coolshell.cn的2011年到今天为止访问统计,排名第一是的Chrome(41.5%),第二位的是Firefox(23.22%),第三位的是IE8(10.7%),第四位的是IE6(4.8%)。IE6的IP数 ...
微软用新浪来当反面教材
微软的IE的Blog发布了这样一篇文章,以此来展示IE9是如何过滤广告和ActiveX控件的功能。其使用了“新浪”来做为反面案例,新浪并不是第一次成为反面案例了,之前就有人用新浪等网站来表明中国的网站的设计是怎么个烂法。呵呵。伟大的新浪。
下面是新浪的在IE9下没有开启过滤的样子,我们要吧看到满天飞的flash,广告,还有视频……
新浪网站没有使用IE9的过滤功能
下面是开启了过滤功能后的新浪网页(个人感觉还是那么乱,没办法底子太差了)
IE9开启了ActiveX过滤功能后的新浪网页
Stack Exchange 的架构
近日,Stack Exchange系统管理员blog上发布了一篇关于Stack Exchange的架构一瞥,其包括了Stack Overflow, Server Fault 和 Super User的 Stack Exchange 网络。注意最后一个关于人员的配置。希望能给大家一些相关的参考。
目录
网络流量
数据中心
生产服务器
使用了的相关的软件和技术
程序员和系统管理员
网络流量
每月9千5百万个PV
每秒800 HTTP 请求
每秒180 DNS 请求
每秒55Mb 的带宽
数据中心
1 机柜 位于俄勒冈的 Peak Internet (用于chat 和Data Explorer)
2 机框 位于 纽约的 Peer 1 ( 用于其它的 Stack Exchange Network)
生产服务器
12 Web Servers (Windows Server 2008 R2)
2 Database Servers (Windows Server 2008 R2 and ...
如何“加密”你的email地址
现在在网上要小心,无论是保护好你的用户名和帐号,还是我们的电子邮件地址。在网上有很多爬虫程序专爬我们的电子邮件地址,一量被爬中了,那么你的邮箱里就是一堆又一堆的垃圾邮件,就好像我的haoel(at)hotmail.com一样,在7、8年前,每天几千封的垃圾邮件。现在hotmail的垃圾邮件过滤得好一些了,不过也有每天40封左右的垃圾邮件。但是我们在自己的网页上又需要发布自己的email地址。所以我们需要搞乱我们的邮件地址,就像那种非常规的搞乱代码一样。不过,我们还需要能认人读的出来。
一般来说,在网上现在很普遍的做法是——
1)用图片,可以用PHP动态生成那个验证码式的。
2)把@变成at,把点变成dot,如 haoel(at)hotmail(dot)com之类的。
3)把a变成@,写成haoel@[email protected]
不过这些还是能被爬到,用图片的方法不利于用户拷贝粘贴。下面介绍几种方法:
第一种:使用CSS样式
反转字序
span.codedirection { unicode-bidi:bidi-override; direction: rt ...
AES加密算法动画演示
波士顿大学的Howard Straubing做了这么一个动画来展示AES加密算法的演示,挺不错的。
点击这里看全屏
苹果开发工具Xcode 4 第二预览版
今天,苹果公司向开发者发布Xcode 4 Preview 2,这是一个IDE用来开发在Mac,iPhone,iPad上应用程序的工具。在这个第二预览版中,主要有以下新的功能:
这个版本不像以往的版本有太多的窗口,其把以前那些窗口督统一起来,只有一个窗口。
集成了Interface Builder(以前这个东东和Xcode是两个东西)
Xcode Assistant 可以让你的设计和代码同时呈现。
LLVM Compiler 2.0。LLVM是下一代的编译器,其完全支持C,C++和Objective C,而且编译的速度和编译成的执行速度都快于GCC。同时也引入了LLDB做为新的调试器。
多版本编译。这个功能可以让你在IDE中编译两个版本的代码,而且可以和Subversion或Git集成。
你可以访问 What’s New 来看看具体的细节。
苹果开发工具Xcode 4 Preview 2
Kent Beck 谈单元测试和持续部署
文章来源
2010年7月2日,Roy Osherove 和 Kent Beck 在 blog.typemock.com 进行了一次对话,话题涉及单元测试(Unit Testing),JUnit Max(Kent 开发的一个单元测试的 Eclipse Plugin,不免费),和面向初创企业的精益方法(Lean Startups)。
单元测试和 JUnit Max
作为软件开发方法学的大师、极限编程XP的创始人、敏捷宣言的创始人之一,Kent Beck 一直在努力最大化地利用单元测试的价值,他说一些程序员仍然认为单元测试并不是他们的工作,但是单元测试确实能够提高软件的质量。目前他正在开发 JUnit Max,这是一个 Eclipse plugin,每当程序员保存一个 Java 源文件的时候,JUnit Max 就会运行测试并报告反馈信息。测试中的错误将会如同编译错误一样被报告给程序员。JUnit Max 的核心思想是测试错误应该和编译错误一样被 IDE 报告给程序员,程序员不需要额外的菜单选项或者运行其他的工具来运行测试。特别是那些经常失败的测试,对于程序员来说是非常有价值的反馈信息 ...
Eclipse 3.6 (Helios)新特性
2010年6月23日 Eclipse 3.6 Helios 正式发布,对 Java 程序员来说有哪些新特性值得关注?
1、检查并报告是否有缺失的 @Override 注解,此功能仅对 Java 1.6 版本适用。在以前版本中,当我们为一个方法加上 @Override 注解,但是这个方法实际上并没有过载(override)任何父类的方法时,将会得到警告信息。在新版本中,如果我们忘记为一个过载方法加上 @Override 注解,同样也会得到警告信息。
2、变量视图中新增了一个列用于显示当前变量类型的实例数(Layout -> Select Column)。
3、Java 视图中的包名称可以用自定义的规则来显示(Window –> Preferences –> Java –> Appearance)。
4、用户可以选择在关闭 Eclipse 时不清除本地更改历史(local history),这样可以加快关闭的速度,但同时本地更改历史记录将会无限制地增大。
5、查看实现代码(Open Implementation)。此功能在 Navigate 菜单 ...
Martin Fowler 在 ThoughtWorks 内部关于版本控制工具的调查
文章来源 martinfowler.com
从2010年2月23日至3月3日,Martin Fowler 在 ThoughtWorks 内部通过开发人员邮件列表进行了一个关于版本控制工具的小调查,共收到99个回复。下面是调查选项定义和调查结果:
非常好 (如果不是最好也非常接近了)
还行 (不是最好,但是我还是愿意使用)
问题多多 (我可能会因此强烈建议我的团队使用其他同类工具)
危险 (非常糟糕的工具,我认为 ThoughtWorks 不应该使用它)
不知道 (我还没有使用过此工具)
回复数 (对此工具的回复总数,包括“不知道”选项)
好评率 ((“非常好”+“还行”)/回复数)
名称
非常好
还行
问题多多
危险
不知道
回复数
好评率
Subversion
20
72
6
1
0
99
93%
git
65
19
1
0
14
85
99%
Mercurial
...
分享:我的Reader订阅
应网友workout和其他热心读者的要求,我罗列一些自己觉得值得推荐的feed。用纯文字罗列如下,想找到以下的话可以通过Google。希望大家在此互相分享。
适合读者:广谱技术爱好者,国外互联网信息爱好者,用户行为和设计爱好者, 语言爱好者,阅读狂。
技术类
Coding horror
Joel on software
unified Python planet
业界信息
谷歌黑板报
Search Blog: Bing
Search
百度爱好者
silicon valley watcher
Google Blogscoped
Google Code Blog
月光博客
apple4us
古奥
望月的博客
Google Operating System
杰出个人博客
Paul Graham Essays
Pure Pleasure – lixiaolai.com
The noisy channel
李开复新浪博客
韩寒博客
the trump blog
Matt Cutts
Linus blog
Paul Buchheit (G ...
PI小数点位数的新纪录
PI小数点后的位数据个数据的纪录被刷新了,被一台PC机刷新的。新的纪录把PI的小点数后面的位数整到了近2.7万亿位,太BT了。下面的链接是本次经录的通告:
http://bellard.org/pi/pi2700e9/announce.html
这个通告宣称:
PI后的小数点位数被计算到了2,699,999,990,000位。
为了保存计算结果,一共花了,1137GB的硬盘空间。
本次计算使用了价值2000欧元左右的PC机,CPU是Core i7 CPU at 2.93 GHz ,内存6GB,5个1.5TB的希捷硬盘。
操作系统使用的是Linux 64 bit Red Hat Fedora 10 distribution,7.5TB的硬盘被做成了RAID-0阵列,使用了ext4文件系统。
整个计算时间花了131天(4个半月),其中,103天用于计算PI的二进制结果,13天用于验证二进制结果,花了12天把二进制转成十进制,最后花了3天再验证了转换。
...
IE6/IE7 0day 漏洞
昨天(2009年11月21日),Symantec发布了IE的一个0day安全漏洞的消息。关于这个消息,截止本文发布时,在中文社区里还没有报导。这是一个关于IE6/IE7处理CSS时的一个漏洞(关于IE和CSS的BUG)。如果你目前还在使用IE6/IE7,那你现在可能是你升级的时候了,当然,有很多人说IE8是没有问题的,但我个人还是建议在补丁出来之前先使用Firefox或Chrome。
根据Symantec的的报告,他们在第一时间内测试了那个“Exploit Code”(攻击代码),根据测试结果表时,那个JavaScript的攻击代码并不是100%的可靠,而且很不可靠,但安全专家相信,100%完全可靠的“攻击代码”将会马上出现。这意味着,这段攻击代码会马上如潮水一样地放在各个有恶意的网站上,然后,所有的IE6/IE7的,打开JavaScript的用户都会被危及。
目前,这段攻击代码,虽然很不可靠,但已经被证明在IE6/IE7的 Windows XP SP3上是可靠的,目前还没有相关报告说明有多少台电脑中招了,但我相信,在过去的这个周末,一定有一些人在拼命地在改善这段攻击代码, ...
GDB 7.0 发布
2009年10月06日,GDB7.0正式发布,新的版本你可以在这里下载。本次版本,不但有大家所关注的《GDB回溯调试技术》,同样还有其它大量的新特性,和对新平台的支持。
新版的GDB7.0支持如下新的平台或配置:
x86/x86_64 Darwin
x86_64 MinGW
Lattice Mico32
x86/x86_64 DICOS
S+core 3
The remote stub now supports x86 Windows CE
其主要的新加入的功能有:(看上去相当地高科技啊,很多术语都不知道怎么翻译,请注意后面的相关解释)
Python 脚本调试
回溯调试,调式过程记录并重演。
不间隔调试。 Non-stop debugging
并行调试。 Multi-architecture debugging
多进程调试。Multi-inferior, multi-process debugging
注释:
Non-stop 的意思是,当我们在调试一个进程中的某一个或某一些线程时,可以让没有被调试的线程继续运行不停止。
Multi-a ...