spring boot demo

Spring Boot使我们更容易去创建基于Spring的独立和产品级的可以”即时运行“的应用和服务。支持约定大于配置,目的是尽可能快地构建和运行Spring应用。

从spring的官方和百度上所谓的各路例子来说,几乎清一色的指向官方的demo,所以资料很少,自己半瞎半猜的摸索的半天,也算弄了个例子,总之费劲……

先从官方的Demo例子开始,按照指引相当简单了,新建maven功能,然后将pom.xml的依赖copy进去

动手写个两行代码就搞定了:

spring boot

 

然后 run as 就搞定了,所谓demo简单到爆。但是后来自己动手搭建一个demo,发现jar也不是很少的一件事……

spring boot jar

 

所以从所谓的快捷的角度来说只是相比于sping 那一套而言,对于快速开发来说个人觉得还谈不上,大家酌情选用吧。

Linux 文件同步

场景

为了适应更发规模流量的爆发,需要将服务器托管在云台上,也方便日后做物理托管分割,需要将服务器文件做同步

方案

采用Linux下常见的resync做文件同步

实施

演示环境centos 6.3 64bit

源服务器地址:192.168.1.238,目标服务器地址:192.168.1.239

在239上部署resync

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@localhost ~]# rpm -qa | grep rsync
rsync-3.0.6-9.el6.x86_64
已经默认安装了,那么我们来做一下配置
vi /etc/rsyncd.conf
uid=root
gid=root
max connections=36000
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
 
[tongbu]
path=/home/data
comment  = media video files
ignore errors = yes
read only = no
hosts allow =  192.168.1.238
hosts deny = *
 
配置完成,启动 
rsync --daemon
ps -ef | grep rsync
root      1304     1  0 14:36 ?        00:00:00 rsync --daemon
root      1307  1286  0 14:36 pts/0    00:00:00 grep rsync

简要说明 :

path为你要同步的文件目录,host allow为允许连接的IP,host deny 为拒绝的IP

这时候我们开始着手238的配置,选取工具 sersync (自行Google补脑)

文件:sersync2  和  confxml.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
    <host hostip="localhost" port="8008"></host>
    <debug start="true"/>
    <fileSystem xfs="false"/>
    <filter start="false">
	<exclude expression="(.*)\.svn"></exclude>
	<exclude expression="(.*)\.gz"></exclude>
	<exclude expression="^info/*"></exclude>
	<exclude expression="^static/*"></exclude>
    </filter>
    <inotify>
	<delete start="true"/>
	<createFolder start="true"/>
	<createFile start="false"/>
	<closeWrite start="true"/>
	<moveFrom start="true"/>
	<moveTo start="true"/>
	<attrib start="false"/>
	<modify start="false"/>
    </inotify>
 
    <sersync>
	<localpath watch="/home/data">
	    <remote ip="192.168.1.239" name="tongbu"/>
	</localpath>
	<rsync>
	    <commonParams params="-artuz"/>
	    <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
	    <userDefinedPort start="false" port="874"/>
	    <timeout start="false" time="100"/>
	    <ssh start="false"/>
	</rsync>
	<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/>
	<crontab start="false" schedule="600">
	    <crontabfilter start="false">
		<exclude expression="*.php"></exclude>
		<exclude expression="info/*"></exclude>
	    </crontabfilter>
	</crontab>
	<plugin start="false" name=""/>
    </sersync>
</head>
 
./sersync2 -r -d
set the system param
execute:echo 50000000 &gt; /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 &gt; /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -r rsync all the local files to the remote servers before the sersync work
option: -d run as a daemon
daemon thread num: 10
parse xml config file
host ip : localhost host port: 8008
Open debug, you will see debug infomation
daemon start,sersync run behind the console
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12 = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)
Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
------------------------------------------
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /home/data &amp;&amp; rsync -artuz -R --delete ./ 192.168.1.239::tongbu
crontab command:cd /home/data &amp;&amp; rsync -artuz -R --delete ./ 192.168.1.239::tongbu
run the sersync:
watch path is: /home/data
add watch: /home/data return wd is: 1

Jquery中attr和prop属性

今天着手demo的时候发现了一个奇怪的问题,将Jquery的版本更新到最高版本的时候(之前还是1.3)全选框出现了怪异的问题,就是第一次点击全选OK,然后点击取消OK,当我第二次点击全选的时候功能失效了

:(

代码小样:

1
2
3
4
5
$('.check-all').click(
 function(){
  $(this).parent().parent().parent().parent().find("input[type='checkbox']").attr('checked', $(this).is(':checked'));   
  }
);

后来找到Jquery的官方说明,发现在1.6后新增了prop,后来释然了
修改后如下

1
2
3
4
5
$('.check-all').click(
 function(){
  $("#tbody :checkbox").prop('checked', $(this).is(':checked'));   
 }
);

表面上看起来attr和prop没有什么区别,但是细微地方和不同的浏览器还是会有差异的,这里附带官方的建议,方便留意:

attrprop

Jconsole 监控tomcat性能

最近让小朋友做一下性能的测试对比,于是挠头犯难了,所谓万事开头难,想要让自己理解的更深,往往不是你会使用多少框架,和多么熟练,而是能够快速的了解机制,做出相应的学习和上手对策,为以后更深入的打好基础,废话少说。

相信很多在做Java开发的朋友都没有关注过Jdk里面提供的工具包,今天简单说一下Jconsole,位置:Java的JDK包的bin目录下,不知道的同学可以搜搜。

jconsole

 

别说才发现下面有那么多好东西-_-#

双击Jconsole,你会看到这个界面

jconsole2

 

本地进程就是你当前的环境,直接点击就可以看到每个模块占用的资源情况,当然我们目的不是为了监控本地,而是监控服务器,

EG:监控测试环境中的Tomcat的情况

首先为tomcat添加参数,打开catalina.sh,添加

1
2
JAVA_OPTS='-server -Xms256m -Xmx256m'
JAVA_OPTS='-Djava.rmi.server.hostname=192.168.1.239 -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false'

如果性能调优需要自己不断的修改参数调整,是个长久的过程,这里不赘述,本次主要简介Jconsole,所以这就够了
然后在远程进程填写 IP和端口号

 

jconsole1

 

这样就比较直观了,剩下的大家随意吧。

谨以此文,献给创业者!

现在身边不少人,特别一夜之间冒出来的所谓“产品经理”,看了新闻报纸铺天盖地的炒作,大学生三五个人做了个网站,被大公司几个亿收购了;哪家淘宝上开店的都要上市搞IPO了;卖鞋卖袜卖裤衩子的都进电子商务一年盈利几个亿。

再加上微博上人生导师的忽悠,坐不住了,急的抓耳挠腮,在地铁上左手拿着财经杂志,右手拿着灌饼吃得满嘴流油,振臂高呼:“我要创业,我要抢占移动互联网入口,门票。”啪一下子,灌饼甩金链大哥身上了,让人一顿胖揍。

社会上经常能看到这样一种场景,一些混进互联网公司做了没几天的产品经理一没钱二没人脉最坑的是连产品都没有,就找到传统企业的土鳖暴发户土大款,什么做纺织的,卖床单被褥的,倒腾煤矿的老板,搞一沓子计划书,策划案,忽悠骗投资。

来自某互联网公司的产品经理张先生,去给老板点一支红梅,就开始忽悠了:“现在是互联网大潮,淘金的好时候,知道啥最赚钱吗?电子商务,C2C你听说过吗?懂垂直吗?知道啥叫云商吗?传统行业不行了,日薄西山了,抓紧抢占移动互联网门票啊。”

土鳖老板一听犹如打了一针鸡血,兴奋的不得了,赶紧投钱投物,工厂也不管了,煤也没倒腾了,说啥也要做一把互联网时代的弄潮儿。跟着这个瞎B忽悠的产品经理开始策划创业了,最后砸进去一堆钱,鸡毛都没做出来,这产品经理感叹一声:“大趋势不好啊。”拍拍屁股走人了。

这股创业热潮,无论是啥学历,学背景的,昨天放下挖大坑的铁锹,耕田的锄头,今天就能给你来谈创业。哥简单分析了下这帮盲流子为啥要创业?

1、天天上班坐办公室里看别人开跑车,住别墅,泡野模,自己在做ppt,写策划,编代码,领了工资交房租水电,吃两顿KFC,分分钟就月光了,心里这个捉急啊。心一横:操,辞职,创业去吧。于是乎,啥计划目标都没有,就加入了创业大军。

2、还有些人本来生活条件挺优越,算是中产吧,住公寓房,开日本车,没事就在办公室里刷刷微博,被那些人生导师忽悠的热血澎湃。”此时不搏更待何时”、“宁做创业狼,不做打工狗”……

3、看了几篇互联网文章,觉得遍地是黄金,就等着自己去捡呢。以为自己比别人都聪明,有创意。啥玩意都没有,光着膀子就准备下海创业了。

这帮人创业过程大体都是这样的:在大IT公司打两天杂,挂个产品经理的名号,写过几页word,做过几张ppt,吹牛逼不上税的一群人,做个手机贴膜就敢说自己设计过手机;画个搜索框就敢吹自己开发过搜索引擎;弄个流程图,就能说自己搭建过SNS社区能和facebook一争高低。总之就是干啥啥不行,吃啥啥不剩,七个不服,八个不忿,理论一大堆。

杭州郊区菜农李老板和朋友们,在产品经理的建议下要搞电子商务,其实就是从义乌进一堆破烂裤衩子到淘宝开个店,不然就是批发点号称绿色无污染的农产品,你说你TM一个小学六年级文化的半文盲,家里农作物种多了,你就拿农贸市场卖呗。你TM整几个老破土豆子也敢自称电商啦?

上海张江的某公司的中层干部王先生,打算进军移动互联网,不知道从哪偷了个破app,别人愤怒小鸟,他搞个愤怒小鸡,换套皮肤就是产品了。啥可玩性都没有,点没两下子就让你充钱,你当别人都是傻逼吗?谁他妈玩你这老破app?

来自中关村的刘先生准备创业了,产品没有,理念先行,开个发布会,搞个大新闻。吹的玄玄乎乎,然后找几个枪手,个大IT杂志网站写文章,写评测软文。骗风投,骗到点钱也不用在产品开发上。全用在了宣传,营销,写枪文。鸡毛产品没有,就敢开个发布会,弄个倒计时,全球发布。

民宅里租个套间,弄几把老年活动室偷来的破椅子,咔咔开始创业了。天天弄个破鸡巴投影仪,俩胳膊拄台子上,对着下面三四个刚从农村进城的农民工放PPT,洗脑,讲激励。张嘴就是“社交、移动、电商、垂直……”书架里上摆基本《人性的弱点》、《高效能人士的七个习惯》。

狗鸡毛产品都没有,天天忽忽悠悠,上过两天学的就炒概念,没文化的土包子炒技术参数,在各种小报、小网站、微博上找几个互联网小编写软文吹捧,吹热了,找土鳖暴发户投资,实在不行,就拿身边七大姑八大姨,亲戚朋友下手,美其名曰天使投资。

凑个仨瓜俩枣,做个APP就觉得自己创业了,天天各种战略峰会、股权激励、统一思想。办公桌上摆一堆饭盒,每天发励志微博,灌心灵鸡汤,晚上到星巴克喝被咖啡记录创业的疲惫,把自己感动的泪流满面。

工作的时候喜欢画大饼,公司啥都没有,穷的叮当乱响,为了忽悠住员工,天天扯一堆美好的愿景,买车买房分期权,三年融资,五年上市……激励口号一般是:“你想做人上人吗?”、“只有想不到,没有做不到”、“人有多大胆,地有多大产”等等,此类老板一般都是刚从广西北海海龟回来,被骗了个精光净,剩了一身子鸡血。

这帮所谓的“产品经理”,实际上啥产品都没有,就靠着一脑门子热血创业,你说谁会买他们的东西?谁会用他们的app?现在app市场上一天就成千上万的垃圾app,全是这帮子产品经理像灌大粪一样灌进去的,谁他妈玩你那老破坑钱的玩意?

这帮人结局必定是失败。到最后,树倒猢狲散,还欠了一屁股债,搞不好还得砸锅卖铁,妻离子散,自己坐在电脑前面灌酒,哭的屎尿横流,还不忘发条微博激励自己“论成败人生豪迈,大不了从头再来。”

创业是一件好事,年轻人嘛,就应该干点事情。可说一千道一万,还是要落在实际行动上。千万不要脑子一热,跟风辞职去创业,到头来亏得血本无归。工作也没了,创业也没成功,两手空空,啥也不剩。(转自他人,我想说:创业需慎重,既然选择了,就且行且珍惜)

网站性能优化手记——首页加载速度

在开发测试阶段时,平台在数据很小,或者在很随意的测试数据环境下没有什么感觉,但是随着数据量的增加,性能的问题就会出现了,我们在不断忍耐的同时,很容易到达一个临界点——不可忍受。

从原来的秒开,然后现在强制刷新需要5.84s+,

5s

经过浏览器缓存后,效果依旧很恶心:( ,维持在2+~3s之间,这可是首页啊,这样的速度应该被认为是不可忍受的,这样就需要优化了。

要把首页搞定到秒开,需要调试前后的 web server,但是从上午追踪的情况来看对server的优化已经远不能达到预期的效果,只可能从代码端去优化了,

在打开indexAction后,一切明朗了…… 最简单的办法就是分请求,利用多线程去加载,而不是一路向下,不过那么多的数据分层需要一段时间才能搞定,眼下最简单的就是增加首页缓存,然后效果斐然:)

2ms

如此这般,心满意足,达到了秒开的效果 。

然后设定了清理缓存的路径,这时候的问题来了,因为设定的缓存是永久不失效的,同时还要防止被别人嗅探到,不停的秀逗你造成雪崩,还有某些不按套路来的蜘蛛!!那么就只好加上权限了:

环境 CentOS 6.4x64bit,前端Nginx,后端Tomcat。最好的办法在Nginx上做文章,效果好,效率佳。

创建用户数据库 htpasswd -c  user.db   username

输入username的密码。

Nginx 配置路径 (片段)eg:

location ~ /admin{
auth_basic “Restricted”;
auth_basic_user_file user.db;//完整的物理路径
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

然后在你访问domain/admin/* 这个路径的时候便会先到验证页面了。

pass

 

 

 

 

创业团队的招聘与留人

招人

如何破除招人困局

在互联网一片红火的大背景下,BAT公司会经常组织各种“英才计划”来抢夺精英,可见现在想招到合适的人才越来越困难。对创业公司来说,去各大招聘网站花钱发布JD(职位描述),期待“盘亮条顺会来事儿”且要求不高的才子愿意踏进这滩“泥潭”,这事就和矮矬穷逆袭白富美一样不大靠谱。当然不排除富有理想、有抱负、不愿背负“金手铐”、笃定创业路的佳人,但毕竟凤毛麟角、可遇不可求。因此总体而言,现在对创业公司来说也许是最好的圈钱时代,但同时也是最坏的招人时节——通过传统招聘网站社招这条路,不大行得通。

两年前,我们曾经在创新工场的校园招聘中吸引到三四个不错的青年才俊,分别来自中科院、北大、北航等院校,好不容易克服心理障碍给了我自认为对应届生来说已非常不错的薪酬,但转眼他们便被网易、腾讯、微软等公司用重金强势瓜分。背靠创新工场这棵大树,凭借它在学生中的辐射效应,我们尚且如此,那些没有名气和背景、缺乏资金、只有梦想的创业公司更难以获得青睐——走校园招聘这条路,也很难走得通。

因此,创业公司需要探索其他招人路径。

动用团队的人脉来寻找人才。这是平时的慢工细活,无法一蹴而就。公司技术合伙人平日就需注意拓展在技术圈的人脉,居安思危,就像小时候都读过的蚂蚱和蚂蚁的寓言故事,不要等到过冬(需要招人)时才想起储存粮食(拓展人脉)。

当然,拓展技术人脉并不是见面交换名片“打个哈哈”那么简单的事,否则这事交给负责商务拓展的人就足够,不用劳烦本来就不很善于言辞、很难自来熟的技术合伙人。因为工程师都是桀骜的,他们拜服于技术水平、技术视野、项目能力,而非三寸不烂之舌。虚的东西他们也许表面迎合,但内心会有自己冷静的判断,或许很难产生认同感。唯有技术相关的讨论,甚至真枪实弹的代码,才能戳中他们的G点。工程师往往先对人认可,然后才会对项目认可。而这种对人的认可,在一次次交往中,才能逐渐形成。

曲线救国,聘用实习生来达到获取人才的目的。通过在水木社区等学校论坛中发布信息吸引大三下学期或者研二的学生,然后利诱之。一般大公司在实习生层面都有公司制定的统一标准,人家能给120/天,你就给150/天;人家给150/天,你就200/天。一个月算下来并不多太多但能捞得一块璞玉。其实学生找实习和找工作的心态是不同的:去大公司实习意味着一个萝卜一个坑,施展不了才华,学不到太多,但去创业公司,只要技术老板靠谱,就能获得很多成长;学生找工作则求稳、求高薪,成长性方面有人考量不多,毕竟走向社会面临房子、车子等很实际的生活压力。只要肯下功夫,就能找到不错的苗子。

人和人之间就怕没有交集,有交集后一些事会好办很多。实习生一旦开始工作,如果技术合伙人重视并加以培养,通过手把手教带出感情、通过做项目让其认识到公司伟大的愿景,那么实习期结束,一份合理的薪水将其留下的概率要远远大于一份高额薪水拿下一个校招学生的概率。

其他还有一些路子,比如尝试一些新出现的招聘平台,使用LinkedIn和心仪的人“眉来眼去”等。总之,技术合伙人要把自己的技术魅力和人格魅力全方位使用,招人困局才能够逐渐破解。

面试是个技巧活

招人时面试是个技巧活。如何在最短的时间里对面试者有最全面的了解,这非常考验面试官的能力。初期团队规模还小时,技术合伙人当仁不让是面试的把关者。

面试的目的是收获人才,而非展示“我比你强”的优越感。有些面试官以将对方问倒,甚至激怒对方为荣,还美其名曰为“压力测试”。我不喜欢这种做法——我希望面试时尽可能让对方展现其最大的能力。所以一开始我会将氛围轻松化,然后问一些基础性的问题及简历中感兴趣的点,一点点发问、深挖。基础性的问题不大容易靠作假和背题就能涵盖,即使碰巧背到了,再给一些上下文问得细一些,就能露出端倪。比如很多应试者难以讲清楚lock-free、wait-free的概念和应用场景,即使勉强讲出来,再让其描述如何做一个lock-free的queue,他也多半会卡住(甚至不大会反问我使用的场景,在我提示只用实现single producer single consumer lock-free queue后,也无法继续下去)。在我看来,基础扎实大于工作经验。因为工作经验是可以混出来的。

面试时多些开放性的问题,多让面试者进行场景的描述,然后据此提后续补充问题。比如:你解决过的最困难的问题是什么?如果让你来做XXX,会怎么考虑?

面试时还不要忘记给面试者机会展示自己真正的实力——有时面试官的问题对面试者来说可能是偏门。问得差不多,在心里有初步定论后把话语权抛给对方:“刚才问了不少问题,有没有哪些是自己的强项但问题没有涉及的?可否分享下?”

最后别忘了笔试。毕竟招来的人是来做事而不是侃侃而谈的。我一般会给出简单的题目(包括一个项目),让对方回去尽最快速度完成。完成的代码要求健壮、有测试例;项目还需要在Heroku上能部署出一个可运行的版本。什么?没接触过Heroku,那正好是考察学习能力的机会……

我不喜欢在纸上做出的笔试。白板上我也只看伪码和架构图。真正的代码要用计算机写出来,能运行、有输入输出、有测试。拿到交出的代码后,我会先看测试例是否充分,是否考虑到各种边界条件、exception、corner case,然后手动输入几组测试数据,看是否crash,之后才看代码。代码写得逻辑是否正确、是否干净整洁、是否健壮、是否有注释、是否符合PEP8(针对Python)等。

只要面试官有足够的创造力,笔试能够玩出很多“花活儿”。我一般不会让面试者当场做题,而是请他们回去完成。这样做出于三方面考虑:

  1. 现场笔试时间有限;
  2. 选择一些对方可能没用过的library让其在项目中使用,考察学习能力;
  3. 如果对方最终没有提交代码,不是他对公司不感兴趣,就是能力有限。如果对方做得很棒,又能对自己的代码细节解释清楚,会是很好的团队成员。

如果最终只有一个招人名额,但有多个面试者都很不错,举棋不定时选那位思维最清晰缜密的人,怎么判断思维清晰缜密?

  • 表达能力——把一件事情说清楚明白的能力;
  • 写作能力(现在很多人都会写博客,博客里的文章能反映出来写作能力)。

留人
招聘只是获得人才的第一步,接下来就是尽可能长时间地留住人才,为公司所用。能留住人的第一要务当然是公司有足够的吸引力,比如公司业务蒸蒸日上,收入水涨船高;或者不赚钱但处在开疆辟土、攻城略地的阶段;再不济起码要有各种故事、各种预期以及可能的美好未来。如果这些都不具备,所有可能的利好还都出尽,那留得住人只能靠创始人的人品了。

人品

创业团队和一般公司的团队不同,创业公司创始人的人品可以有非常强的感召力。

有个很俗的段子说“男人四大铁”,虽然粗俗,但却在理。2011年我离开Juniper创业时,即使我跟自己的团队振臂一呼谁愿意一起走?绝对没人愿意。因为公司的同事相敬如宾,合作再愉快也总隔着层纱——写个邮件还要琢磨着我用惊叹号是不是过分了,要不要“补个妆”,发个笑脸?所以经理人品再好,感召力也一般。而创业团队则不同,一起编码到半夜、吵需求吵到面红耳赤、打飞盘打到咬牙切齿——这和“男人四大铁”段子里说的一起同过窗、一起扛过枪有几分神似。也许以后男人四大铁还会加一个:一起创过业。

这也是为什么那些人品不错的创业者,即便在山穷水尽时还有人不离不弃。人品代表了很多方面,我前老板Frank曾说NetScreen的成功,“财散人聚”是其中一条重要原因。这里财散人聚就体现出人品的一个方面:不贪。创始人如果戒贪、弃嗔、不痴、摆低姿态、不轻慢别人(不慢)、做事坚决果敢(不疑),那就是人品好,别人也愿意跟随。

提供发挥和成长的空间

在提供合理报酬的前提下,员工为什么会留在某个团队?无非是个人发挥和成长的空间。对社招的工程师来说,发挥的空间很重要;对应届生或实习生来说,重要的则是快速成长的空间。了解这种诉求并正确应对,才能为留住人打下良好基础。

如果在大公司待过,就会发现在大公司有不少有能力但郁郁不得志的青年才俊。只要给个舞台逼出潜能,做事都是顶呱呱。可惜戴着“金手铐”锐气被磨尽,天天在邮件群里、会议堆里穿梭,以至于迷失了自己。这样的人如果不慎被你捡个漏,加盟了你的创业公司,那么让其充分发挥能力,找到适合他的舞台非常重要。很多公司都说要为员工提供“没有天花板的舞台”,但其实真正做到的没几个。

应届生和实习生往往是等待雕琢的璞玉,需要下大力气培养。很多创业团队认为“时不我待”没空培养,其实未必。我的亲身体验是:他们学习的热情是非常高的,为了完成一件事,可以不惜代价。

给应届生或实习生培训时,工作相关的内容不要有所保留。有句话说得好:如果缺乏必要的帮助,员工的失败是老板的失败。我一般会从架构讲起,使用哪些组件,这么选择(或妥协)的原因何在,然后一点点过渡到代码。要强调的是平日里要不厌其烦地回答他们的问题,哪怕问题显得非常“naive”——take it easy,因为“人不naive枉少年”啊。

有人担心实习生若掌握太多公司核心代码,实习完就走人,这是杞人忧天。且不说进公司都要签NDA(Non Disclosure Agreement,保密协议),就算没有NDA,一家创业公司还挣扎在生死线上,“核心”是什么也未必清晰,实在没必要忧虑这些不着调的方面。信任是双向的,人事任用上必须用人不疑,包括对实习生。当然,必要的权限措施是需要的——但那是针对不同的角色,不是针对某个人。

一旦实习生进入状态,提供一份合理的薪酬,他们毕业后留下来的概率会非常大。毕竟,你有好几个月的时间展示个人魅力、公司愿景、所做产品的价值。如果这样都留不下,那就算提高薪酬强留,也没多大意义。

进行情感投入

感情是个微妙的东西,很多时候是能够起决定性的因素。没事找个员工一起喝杯咖啡闲聊,谈谈人生、理想、读书等,就是为感情银行里注入新的投资。作为一个老板,最好能够对团队里每个人(或重要员工)的家庭、情感、生活等有较细致的了解。都说感情一半是处出来的,一半是聊出来的。虽然大家朝夕相处,一起写代码,一起Debug,一起Hackathon,但没有深入聊过的感情总是“欠临门一脚”,无法坐实。

情感投入可以说是细水长流,是基金定投。这份投入必须是发自内心、不计回报的。遇到重大变故也无须打出感情牌——人对了,投入够了,该有的就会有;否则,即使打出感情牌,也无济于事,还可能伤了相互的心。

Nginx允许跨域设置

if ($request_method = 'OPTIONS') { 
        add_header Access-Control-Allow-Origin *; 
        add_header Access-Control-Allow-Credentials true; 
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; 
        add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; 
        return 200; 
    } 
     if ($request_method = 'POST') {
        add_header 'Access-Control-Allow-Origin' *; 
        add_header 'Access-Control-Allow-Credentials' 'true'; 
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 
        add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
     }

     if ($request_method = 'GET') {
        add_header 'Access-Control-Allow-Origin' *; 
        add_header 'Access-Control-Allow-Credentials' 'true'; 
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 
        add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
     }

创业者,如何搞定你那牢骚满腹的女朋友

创业以来,最大的问题不是没有资金,也不是团队找不到兄弟们,而是女朋友和我闹上了

伊在美国上学,就像白天不懂夜的黑,她的白天往往是我累成狗的晚上。

伊一通电话打来,和我探讨着“哪个包包更好看”这样的人类终极命题。以往,以我丰富的对敌斗争经验,一通“嗯” “啊” “对” “哈哈”,保证知无不言言无不尽什么都说了什么都没说地让伊舒舒服服,高高兴兴地挂了电话继续独自纠结买什么包包的问题。我自得清净。

而现在,不行了。伊的电话打来,我满脑子都充满着项目、资金、团队之类的想法,对于伊的“包包悖论”,我只能分出相当小的一部分脑力和注意力来回应,原来丰富的、充满了关怀与关切的、善解人意的语气词也变成了简单的“嗯” “嗯嗯” “嗯嗯嗯”。

于是,伊不乐意了。

数日不联系,甚至没有精力思考和好。我忙的浑浑噩噩,睁眼干活,闭眼打鼾,基本忘记了遥远的美帝自己还有一个双鱼座女朋友。

最不堪的是应很多顾客的要求合了影,这里面就难免有女顾客,有的女顾客就难免把照片发到微博。心思缜密的伊看到了微博,于是发现了种种种种在伊看来毫无组织无纪律无党性可言的照片。

双鱼座的胡思乱想发挥到了极限,一通微信发来,说我变了,肯定天天沉浸在妹子的波澜壮阔中乐不思蜀,被猪油蒙了心。随后一张截图发来,我发现自己的微信名居然被改成了“张世美”。

遗憾地是,正处于天使轮的我,对这样的黄牌警告并没有足够的重视,居然将之按照一般敌情处理,回复了一个挖鼻屎,企图以此蒙混过关。

于是,天塌了。

伊电话打来,以一句“张天一,你胆儿够肥啊”为开始,接之以声泪俱下,梨花带雨,将我控诉成了一个十恶不赦的登徒子、负心汉。我哑巴吃黄连,有苦说不得,只能敌进我退,以时间换生存空间,希冀伊的怒火能够自然熄灭。没想这样的忍辱负重唯唯诺诺在伊看来是负隅顽抗,毫无诚意可言。

我的罪名逐渐被罗织升级,从伊打电话经常不接(有时确实实在忙得顾不上),到伊生病时我的问候只是多喝热水(一般谨慎的我除了问候多喝热水还会说多吃VC),到不和伊Update最新进展(有的时候太累了),到微信的回复没有诚意(有时实在顾不过来就回复伊一些表情)……

最后,一言以蔽之,正在创业的我成为了伊眼中还没有出人头地就已经抛弃糟糠之妻的陈世美。

都说创业苦,创业时怎么搞定女朋友在我看来才是苦得没人可说。

毛主席教导过我们:“鸡蛋因适当的温度而变化为鸡,但温度不能使石头变为鸡。”,痛定思痛的我决定由蛋变成鸡,开开窍,而不当又臭又硬的石头。我开始思考怎么处理创业和女朋友的关系。

一方面的情况,是显而易见的,创业者无生活,我的生活只有工作和睡觉两个部分,甚至连睡觉我的梦都有关于工作。

另外一方面的情况,女朋友还是要哄好,后方搞好生产建设,前线战士们才能安心打仗。然而,搞建设是需要时间和精力的,可创业中的我最缺的就是时间和精力。

所以,基本上创业和哄女朋友是一对不可调和的矛盾。我甚至在朋友身上看到过两者变成二选一的情况。

怎么办?

我苦思冥想。最后想到了对策。作为一个有一个双鱼座女友的创业者。我认为并非伊不支持我创业,也并非伊不深明大义,而是伊更希望在我身上看到一种态度:那就是,她很重要。

就我的女朋友而言,她显然是一个感性动物。有的时候她会怪我不关心过问她的生活情况。可当我真的去问她的生活情况时,伊会说不上三两句话就问回我创业的事情。

比起具体且费时费事的陪伴、关心,伊更需要的是场景和参与感。比如我发现,虽然有时伊会责怪我只关注自己的创业不关注她。可当我带着讨论的态度和伊讨论某一个创业事项的时候,伊会很积极地参与进来。

创业者都好像需要进入另外一个次元空间生活,这样的生活很容易就让伊失去了场景感,比如我的女朋友经常会以一句“你的世界我越来越不懂了“作为口头禅,以表达这位双鱼的惊恐与由此产生的无穷幻想。

我的解决方案也很快顺势提出,那就是给伊提供场景感,增强她的参与感。每一件事情,我和她讨论,而不是简单的update,她则会积极地出谋划策。

比起理性地换位思考,伊更需要的是直观感觉。刚开始创业时,我会经常很郁闷,明明很累了,为什么伊还要扯着我说这说那,这真真是不善解人意啊。有的时候我会告诉伊我很累了,可这个时候伊就会不高兴,认为我不在乎她了。

现在,相比试图让伊理解我的辛苦,我会首先亮明自己的态度。在通电话的时候,我先主动以打鸡血模式和伊沟通,比没有创业地时候还要亢奋地和伊说话。这样伊迅速地感受到了我的诚意:我很累了,但是我还在很夸张地卖力表演成打鸡血状态和她沟通。这时伊就会主动说你很累啦,不要专门逗我开心啦之类的话,然后,我就愉快地得到了解放,伊也愉快地认识到她还是受重视的。

此外,我领悟到更重要的一点,如果时间有限,那么就一定要从伊设定的场景中及时逃脱出来,果断给她拖到自己设置的新场景里来。比如有的时候晚上回来,累得不行不行了,这个时候伊告诉我她的牙齿疼,按照以往的做法我会绞尽脑汁地去琢磨一些有的没得昏招,让她去冰敷啦,吃金银花什么的啦。但是要知道,对于一个每天都筋疲力尽的创业者而言,还要琢磨这些有的没的有多么困难,再配上那疲惫的声音说出这些没有诚意的方案,伊不怒才奇怪。

现在我学聪明了,因为我明白伊也清楚地知道我帮不上什么忙,她需要的只是我的态度。我和伊说,今天的月亮很圆,我很思念伊。然后说今天白天做XX事的时候也同样想到了伊,然后再说到今天做的这件事情是什么事……通过不断地创造新场景,很快地伊就获得了她想要的结果,不再纠缠于牙痛的问题,愉快地离开。

回到女顾客微博合影的问题,我现在果断学会了每天不等伊开口,先主动交代情况,和几个女顾客照了相,都是什么情况,然后告诉伊人在江湖身不由己的哲理。这样在伊开口之前,我已经成功地坦白从了宽,也让伊获得了伊最想得到的东西:参与感和安全感。

经过了这许多的伤痛,我领悟到的是,当筋疲力尽时,搞定女友的方式是果断亮明自己的态度和将她代入你的场景。用各种不同的形式和方式告诉伊:你比创业更重要。

这样的后果就是,伊反而会短时间内通情达理地放我去生活。

一把菜刀闹革命

我觉的小米4 忽然就来了,但是大家都在说米4姗姗来迟。我觉得是这样的,我闲的没事的时候还会去抢一遭米3的时候,米4居然发布会了- -#

早早的在微博上吹风,一块钢板的艺术之旅,艺术之旅?常年1999的价格配上钢板,想想都好激动,因为买不起Iphone的土豪金,又嫌弃三星万年不变的大塑料(三星的塑料也买不起),顿时逼格都上升了好几个档次呢,想想拿着钢板手机让女神看到,女神会不会尊敬我,崇拜我,爱上我,对我欲罢不能呢?

但是发布会出来居然是尼玛的中框,中框啊!

雷布斯在微博上炫耀小米将嫁接“奥氏体304不锈钢钢板”。小米的塑料外壳被诟病许久,这次终于要更换钢铁版,米粉们又该“奔走相告”了吧。

可是这个奥氏体304是什么(单纯从这点来说我还是挺佩服锤子的,是什么就是什么,没有那么多专业的词藻)?

抛开米4 那一堆酷炫的说辞,所谓具有极佳可塑性、极强耐腐蚀的“奥氏体不锈钢”,就是家里的不锈钢锅而已,市场售价是9块钱1斤。而收废铁的价格一般是8块钱1斤。也就是说,小米不锈钢的成本也就比废铁稍高一点。魅族早在2007年的M6就用上了奥氏体304不锈钢,不过魅族很快发现,304不锈钢并不耐磨,表面很容易留下划痕,因此被迫大部分手机都做成磨砂表面。

是不是顿时心里堵得慌了,刚刚就要起来的逼格一下子让不锈钢锅给砸了下去,这事闹得,魅族居然2007年就用上了,这抗战都完了,居然才开始吹嘘这个中框,完了,女神也不理我了。

“米4是全球最快的智能手机”,听着好耳熟,当时锤子一喊最快的手机,立马让方舟子揪着不放,被迫修改了广告语,但是小米怎么就没人来管管了,

高通骁龙801四核,是不是大家又兴奋了一把,但是801又他妈是啥?大家不都说酷睿好吗(SHIT)?

高通801貌似比A7(苹果的CPU)好一些,但是高通801并不支持64位,而A7支持64位,在软件上的优化,苹果IOS是比安卓快很多。另外苹果还为A7处理器增加了协处理器M7,这就比米4高明了很多。不仅如此,小米4的3080毫安电池,相比荣耀手机、一加手机的3100毫安也没有优势。

上面这段IT届的屌丝应该没有理解障碍,但是作为普通用户可能会不解,那么用锤子的大白话说一遍就是当大家都在803圈混的时候801是不是有些low了,我想我们从序号也觉得803可能更牛逼一些,于是直白的说801就是市面上最常见的CPU而已。

让米粉尖叫昏厥的超低价,超高配已经不存在了,说白了相比米前几代产品,已经没有太多的激动人心了,就是同样的配置,大家装上不同的壳子卖不同的价格而已,这样的心态就是我装逼你也装逼,谁也别笑谁,小心都搂不住。

好吧,但是有兴趣的童鞋还是可以去米4,反正你也是万万抢不到,啦啦啦啦啦!

只是可惜了女神,她不理我了啊!

嗯,推荐一个视频大家开心开心吧:)