PHP: The Right Way

说说golang的使用体验

2019年6月28日 没有评论

说说golang的原罪。

在说golang的原罪之前说说golang的设计优点,自包含之类的工程优点就不说了,新语言总归要去掉一些老语言的错误的。

golang的最大特点是引入了channel和goroutine。goroutine不是fiber/coroutine/lightweight thread,它概念上是和scheme/js一样把function scope当作struct/object/context处理,也就是拆掉了传统意义上的栈计算,因为context switch其实就是在切换stack。这对它的高并发设计目标是很重要的。当然拆栈不是没代价,拆栈的结果是副栈也没了,所以try catch也报废了。

channel是golang的标志特性,大家都说在golang里channel是一等公民。我先不反对这句话。

在CSP里,channel本质上是把共享内存变成通讯,或者说私有内存模型,这牺牲效率但是比锁更容易使用,因为锁是分布在代码里的,不容易维护,也难以调试隐蔽错误。虽然两者逻辑上是可以等价的。

但golang不是严格的CSP,它不仅仍然支持锁和共享内存,同时channel可以通过channel传递,这在CSP里是没有的,在ccs里也没有,只有到了π里才有了这个东西,当然这个做法是好的,这是非常重要的特性。

—-

那么说到原罪,不熟悉π的人可能难以理解。channel是什么?你可能说是通讯啊。但是channel不只是通讯。

我们常常这样比较imperative语言和functional语言:imperative语言里,例如c,分号是一个组合过程的符号,即前面一个命令结束,后面一个命令开始。它显式定义了执行序。但是在纯函数式语言里,情况不是这样的,执行序不体现在代码书写顺序上,而是体现在估值依赖性上,即大家常说的lazy。

理解了这一点你就可以明白channel在π里的意义,即使你一点也没有学过π;channel是π里「唯一」表述过程执行顺序的东西,即消息的到来触发执行。

实际上有了do的haskell,已经有了π的影子,虽然没有显式定义channel;而golang的问题就是,它给了你两种方式定义执行序,一种是响应消息,另一种是传统的命令式,这是混乱的原因,程序员们甚至没意识到这是个问题。

它为什么是问题呢?

因为就像图灵机和lambda是等价的一样,π是并发的完备模型,如果你有其它模型,它一定也是和π等价的;而并发系统就是反应式系统,这两者也是等价的,换言之,当你说并发系统时,这个系统的设计和实现就是反应式的,而唯一触发反应的方式,是消息的到来,无论是外部消息还是内部消息。从这个意义上说,golang完全是个半成品设计。channel在被用作一个辅助性的工具特性,而不是主导整个程序的反应式的过程依赖性框架。

golang是不是一个高并发语言呢?答案是:它对“高”的解决办法(拆栈)很可能是不错的,但是它对“并发”的设计,一泡污,连js都不如,js起码在代码层面,这种反应式的过程依赖性是一目了然的。

—-

最后补充一下什么是反应式的try catch。

反应式的try catch和反应式系统里调用function是一样的。message系统本来都是单向工作的,如果要模拟一个类似function的round trip,或者说request/response,在π里的表述是,在单向message里包含了一个channel,这样不管这个message怎样逐层传递,最终总有人要在channel里返回结果,如果玩儿崩了,也要有人负责用这个channel返回错误。

典型的例子就是HTTP协议的设计:如果服务器内有代码玩儿完了,而服务没死,你还可以拿到一个500错误,如果服务器也跑路了,客户端的HTTP协议栈或者TCP协议栈还可以返回一个connection或socket错误。这就是并发系统里的try catch。因为π建模的系统不限于一个程序或者一个物理机实例,对分布式系统同样适用。所以golang里屎一样的错误处理机制没什么好为之辩护的,有种你干脆扔掉HTTP甚至TCP,全用UDP干了,你才有资格说golang的错误处理设计是对的。

 

 

本文来自微信群讨论

分类: golang 标签:

奇怪而疯狂的规则

2019年5月17日 没有评论

在开发人员中有这样一个流行的想法,当你遇到代码问题时,你应该找到一个橡皮鸭并向鸭子解释你的代码应该如何工作,一行一行,你期望看到什么,你是什么相反,等等。尝试此报告的开发人员向无生命对象详细解释问题的行为通常有助于他们找到解决方案。

Stack Overflow April Fools笑话2018年这是解决编程问题的众多技巧之一。另一个技巧是  分而治之调试。你不能研究一千行代码来找到一个bug。但是你可以将它们分成两半并快速找出问题是在上半部分还是后半部分发生的。继续这样做五到六次,你将找出问题的单行代码。

考虑到这一点,推荐阅读Jon Skeet 撰写完美问题  清单。Jon问的一个问题是“你是否仔细阅读了整个问题,以确保它有意义并且包含足够的信息给没有你已经知道的任何背景的人来到这里?”这基本上就是橡皮鸭测试。另一个问题是“如果你的问题包含代码,你是否把它写成一个简短但完整的程序?”强调   – 这本质上是对你是否尝试分裂和征服的考验。

在最好的世界中,Jon的核对清单可以帮助人们在寻求帮助之前尝试经验丰富的程序员可能已经尝试过的东西。

可悲的是,并非所有人都能找到他的清单。也许他们找到了,他们也不在乎。他们的代码存在紧急问题; 他们听说Stack Overflow可以帮助他们; 他们没有时间阅读一些书呆子的复杂协议来请求帮助。

关于Stack Overflow的一个常见争论是网站是否需要接受编程新手的问题。

当Jeff和我谈论Stack Overflow的初始设计时,我告诉他20世纪80年代用于C编程语言的这个流行的Usenet小组。它被称为  comp.lang.c.

C是一种简单且有限的编程语言。你可以得到一个适合100K的C编译器。 所以,当你组建一个关于C的讨论小组时,你很快就会谈论不了解的事情。

也。在20世纪90年代,C是学习编程的本科生的共同语言。事实上,说本科生在C语言中会有非常基本的问题。他们可能会出现在comp.lang.c上询问他们的问题。

comp.lang.c上的老人很无聊。 无聊了。每年九月出现的本科生都很无聊,想知道为什么他们不能从一个函数等等返回一个本地字符数组。每个该死的九月。

旧计时器发明了常见问题解答的概念。他们用它们来说“请不要问以前曾经在Usenet历史上曾经问过的事情”,这实际上意味着他们真正想要看到的唯一问题是如此离奇和如此深奥以至于他们真的非常无聊99%的C级程序员。这个新闻组感到沮丧,因为它只迎合那些已经存在了十年的少数人。

杰夫和我谈到了这一点。我们怎么看待新手问题?

我们决定欢迎新手。没有什么是“初学者”在Stack Overflow上成为一个合理的问题……只要你在提问之前做了一些功课。

我们知道这可能意味着一些更高级的人可能会对重复的简单问题感到厌倦,并继续前进。我们认为这很好:Stack Overflow不一定是终身承诺。如果你认为新手们一直在问为什么他们不能返回本地的char数组(“但它对我有用!”),你会感到无聊并继续前进,你宁愿把剩余的短暂岁月投入到更高效的东西,比如整理你的唱片专辑。

您是新手的事实并不意味着您的问题不属于Stack Overflow。为了证明这一点,我问“ 你如何在Logo中移动乌龟 ”,希望留下证据证明网站设计师想要允许绝对的初学者。

由于意外后果的法律,这引起了很多骚动,但不是因为这个问题太容易了。真正的问题是,我是在恶意地提出这个问题。杰夫阿特伍德解释说:“简单就好了。没有努力和研究不是。“(也是这个。)

对于初学者来说,与在Stack Overflow上提出第一个问题相关的漫长的官僚主义困境可能完全没有必要,或者只是很奇怪。这就像燃烧的人。你只想在沙漠中参加一个不错的闪光舞会,但是燃烧的人们正在喋喋不休地谈论他们该死的10条原则,以及“激进的自我表达”等等,因此洗完你的菜后,你必须小心地把脏的洗净水当作珍贵的遗物,然后将它从Playa中取出,把它带回家,必要时放入托运行李。每个社区都有很多规则,当你加入社区时,他们要么看起来很奇怪,要么令人愉快,或者,如果你只是拼命地试图让一些代码工作,那么它们就会变得奇怪和令人发狂。

许多使燃烧人成功的重要规则似乎是武断的,但它们仍然是必要的。为燃烧人提供沙漠的美国土地管理局要求没有污染的水倒在地上,因为粘土污垢并没有真正吸收它,它可以引入各种疾病等等,但是谁因为如果参与者不打包用过的水,就不会允许燃烧的人继续关注。

类似于Stack Overflow。例如,我们不允许过于宽泛的问题(“我如何制作节目?”)。我们的一般规则是,如果答案的正确长度是整本书,那么你的要求太高了。这些问题感觉就像出现在一个医疗网站上,并说出“我认为我的肾脏受伤了”。我怎么能把它删除呢?“这很疯狂 – 顺便说一下,侮辱那些花了十年时间训练学习外科医生的人。

有一点我非常关注,因为我们试图教育下一代开发人员,并且重要的是,在新一代中获得更多的多样性和包容性,这是我们在尝试学习编程时为人们设置的障碍。在许多方面,Stack Overflow针对允许内容和不允许内容的具体规则是障碍,但更大的问题是新手经常看到的粗鲁,嘲笑或屈尊俯就。

我非常关心这一点。作为开发人员,您可以为将来编写脚本提供无与伦比的机会。面对试图成为开发人员的新手,Stack Overflow所引发的所有抨击都会对人们,社会以及Stack Overflow本身产生积极的伤害,驱逐潜在的未来贡献者。编程很难; 我们应该看到我们的使命更容易。

我们计划明年在这个领域做很多工作。我们不能改变每个人,也不能强迫人们变得善良。但我认为我们可以改进Stack Overflow用户界面的某些方面以鼓励更好的行为,例如,我们可以改进我们在“Ask Question”页面上提供的提示,并且我们可以提供更多工具用于社区审核评论,其中snark目前运行不受限制。

我们还在开发新功能,让您将问题转发给您自己团队中的一小部分私人小组,这可能会给Stack Overflow这个大城市带来一些友好的社区感受。

即使我们试图使Stack Overflow更加友好,我们在Stack Overflow的主要考虑是为软件开发人员构建世界上最大的资源。世界上的普通程序员已经被Stack Overflow帮助了340次。那是真正的终结游戏。还有其他资源可供学习编程和获得帮助,但世界上只有一个开发人员信任这一点的网站,这值得保留 – 相当于美国国会图书馆的编程。

 

原文来自 JOEL ON SOFTWARE 编写的 Strange and maddening rules

分类: 外文翻译 标签:

[转载]Linux 大规模请求服务器连接数相关设置

2017年11月17日 没有评论
一般一个大规模Linux服务器请求数可能是几十万上百万的情况,需要足够的连接数来使用,所以务必进行相应的设置。
默认的Linux服务器文件描述符等打开最大是1024,用ulimit -a 查看:
[viewuser@~]$ ulimit -a
core file size          (blocks, -c) 0   #coredump 文件大小
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 255622
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024   #打开文件数量,root账户无限制
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096   #root用户本项是无限
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
如果超过了连接数量,可以在 /var/log/message 里面看到类似:
May 14 16:13:52 hostname kernel: nf_conntrack: table full, dropping packet
的信息,基本可以判定是fd不够用引起的。(服务器受到攻击也会有这个信息)
设置要求:假设我们要设置为100W最大打开文件描述符
1. 修改 nr_open 限制 (用途:能够配置nofile最大数)
cat /proc/sys/fs/nr_open
Linux 内核 2.6.25 以前,在内核里面宏定义是1024*1024,最大只能是100w(1048576),所以不要设置更大的值,如果Linux内核大于 2.6.25 则可以设置更大值。
设置方法:
sudo bash -c 'echo 1000000 > /proc/sys/fs/nr_open'

注意:只有修改了 nr_open 限制,才能修改下面的限制。(如果 nr_open 的默认现有值如果高于我们的100w,那么可以不用修改)

2. 打开文件描述符限制:修改 limits.conf 的nofile软硬打开文件限制(用途:tcp连接数)
(1) 临时生效
如果想针对当前登陆session临时生效文件描述符修改,可以直接使用 ulimit 命令:
ulimit -SHn 1000000
再执行相应的程序就能够正常使用不会超过限制,但是重启服务器会失效。
如果想一直生效,可以把这个内容保存到启动里面,同步到 : /etc/rc.local 文件
sudo echo “ulimit -SHn 1000000” >> /etc/rc.local
注意:如果需要让 /etc/rc.local 下次启动生效,务必记得有该文件必须有执行权限:sudo chmod +x /etc/rc.local
下次启动会自动执行这句,也是可以正常使用的。
(2) 永久生效
文件位置:/etc/security/limits.conf
查找 nofile ,如果没有,则在自己最后加上:
2.6.25 及以前内核设置为100W:
*        soft     nofile  1000000
*        hard    nofile  1000000
2.6.25 以后版本内核可以设置为200W:
*        soft     nofile  2000000
*        hard    nofile  2000000
设置后保存本文件。(本操作必须重启才生效,如果无法重启,会无法生效,不确定是否使用 /sbin/sysctl -p 是否可以直接生效)
说明:如果需要 limits.conf生效,有部分需要加载/lib/security/pam_limits.so才能生效(默认情况一般不关心),如果需要关注,则需要在 /etc/pam.d/login 在末尾追加 session required /lib/security/pam_limits.so ,但是目前新版内核应该都没问题问题,可以忽略。
3. 打开进程限制:修改 limits.conf 中的nproc限制 (用途:进程数)
说明:如果你对进程总数量没有特殊要求,可以不修改本选项,如果你是一个高性能多进程的server,需要很多进程来处理,那么可以修改本选项。
ulimit -a 里可以看到 max user processes 如果值是比较大的,可以不用设置 nproc 项。
配置文件:/etc/security/limits.d/20-nproc.conf  (RHEL 7/CentOS 7,如果是 RHEL6.x/CentOS6.x 文件在 /etc/security/limits.d/90-nproc.conf)
*          soft    nproc  4096
root     soft    nproc  unlimited
就是root无限(实际root用户限制是:255622),其他非root用户是4096个进程。
说明:
硬限制表明soft限制中所能设定的最大值。 soft限制指的是当前系统生效的设置值。 hard限制值可以被普通用户降低。但是不能增加。 soft限制不能设置的比hard限制更高。 只有root用户才能够增加hard限制值。当增加文件限制描述,可以简单的把当前值双倍。 例子如下, 如果你要提高默认值1024, 最好提高到2048, 如果还要继续增加, 就需要设置成4096。
4. 修改 file-max 选项 (用途:可分配文件句柄数目)
file-max 价值:指定了可以分配的文件句柄的最大数目(可以使用 /proc/sys/fs/file-nr 文件查看到当前已经使用的文件句柄和总句柄数。)
(1) 临时生效:
文件路径:/proc/sys/fs/file-max
cat /proc/sys/fs/file-max
3252210
如果要修改,直接覆盖文件:(比如改成200w)
sudo echo 1000000 > /proc/sys/fs/file-max
注意:如果你想每次启动都自动执行上面的命令,可以在系统启动配置文件/etc/rc.local里面添加一句命令:(跟永久生效差不多)
echo 1000000 > /proc/sys/fs/file-max
或者直接Shell全搞定:
echo "echo 1000000 > /proc/sys/fs/file-max" >> /etc/rc.local
注意:如果需要让 /etc/rc.local 下次启动生效,务必记得有该文件必须有执行权限:sudo chmod +x /etc/rc.local
(2) 永久生效:
修改配置文件,文件位置:/etc/sysctl.conf
打开配置文件到最末尾,如果配置文件里没有则可以直接添加:
sudo echo "fs.file-max = 1000000" >>/etc/sysctl.conf

配置文件生效:sudo /sbin/sysctl -p

5. 修改TCP等相关选项
配置文件:/etc/sysctl.conf
修改选项:
net.core.somaxconn = 2048
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 20000
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 131072
fs.file-max = 2000000
fs.inotify.max_user_watches = 16384
net.netfilter.nf_conntrack_max = 6553500   #本选项在一些版本下无效,可以删除
net.netfilter.nf_conntrack_tcp_timeout_established = 1200     #本选项在一些版本下无效,可以删除
  配置文件生效:sudo /sbin/sysctl -p
以上选项也可以直接给 /proc/sys/net/ 目录下面按照各个选项可以直接使用类似于 echo VALUE > /proc/sys/net/core/wmem_max 来直接修改内存临时值生效。
主要看这几项:
  •  net.ipv4.tcp_rmem 用来配置读缓冲的大小,三个值,第一个是这个读缓冲的最小值,第三个是最大值,中间的是默认值。我们可以在程序中修改读缓冲的大小,但是不能超过最小与最大。为了使每个socket所使用的内存数最小,我这里设置默认值为4096。
  • net.ipv4.tcp_wmem 用来配置写缓冲的大小。读缓冲与写缓冲在大小,直接影响到socket在内核中内存的占用。
  • net.ipv4.tcp_mem 则是配置tcp的内存大小,其单位是页,而不是字节。当超过第二个值时,TCP进入 pressure模式,此时TCP尝试稳定其内存的使用,当小于第一个值时,就退出pressure模式。当内存占用超过第三个值时,TCP就拒绝分配 socket了,查看dmesg,会打出很多的日志“TCP: too many of orphaned sockets”。
  • net.ipv4.tcp_max_orphans 这个值也要设置一下,这个值表示系统所能处理不属于任何进程的 socket数量,当我们需要快速建立大量连接时,就需要关注下这个值了。当不属于任何进程的socket的数量大于这个值时,dmesg就会看 到”too many of orphaned sockets”。
  • net.ipv4.tcp_syncookies = 1表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
  • net.ipv4.tcp_tw_reuse = 1表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
  • net.ipv4.tcp_tw_recycle = 1表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
  • net.ipv4.tcp_fin_timeout修改系統默认的TIMEOUT时间
  • net.ipv4.tcp_max_syn_backlog 进入SYN包的最大请求队列.默认1024.对重负载服务器,增加该值显然有好处.可调整到16384.
  • net.ipv4.tcp_keepalive_time = 300 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为300秒。
  • net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。
  • fs.file-max = 2000000 是指能够打开的文件描述符的最大数量,如果系统报错:too many file opened,就需要修改本值(本值必须跟 /etc/security/limits.conf 一块修改才生效)
  • fs.inotify.max_user_watches = 16384 设置文件系统变化监听上线。如果在没满各种正常的情况下,还出现tail -f这种watch事件报错No space left on device就是这个值不够了
注意:如果是客户端程序,为了更好的访问server程序不是卡在端口分配上,建议把客户端的端口(port_range)范围开大一些:
修改文件:/etc/sysctl.conf
net.ipv4.ip_local_port_range = 1024 65535
配置生效:sudo /sbin/sysctl -p
如果是客户端,其他文件打开限制等可以参考上面的来设置。
6. 调整单个进程可以用的VMA(虚拟内存区域)的数量
默认值:cat /proc/sys/vm/max_map_count
一般默认是 65530
(1) 临时生效:
方法1:sudo sysctl -w vm.max_map_count=655360 && sysctl -p
方法2:sudo echo “655360” > /proc/sys/vm/max_map_count
(2) 永久生效
sudo echo “vm.max_map_count=655360” >> /etc/sysctl.conf
sudo sysctl -p
7. 其他一些配置

(1) 打开core文件

如果为了观察程序是否正常,出现问题后生成相应映像文件,可以开启coredump相关的操作,可以打开:(非必须,如果线上环境,担心影响稳定性,可以考虑不开启)

配置文件:/etc/security/limits.conf
修改配置文件:
增加:
*        soft     core   102400
*        hard    core   2048003
建议设置为无限大小:
*        soft     core   unlimited
*        hard    core   unlimited
然后重启机器生效(不确定是否可以使用 /sbin/sysctl -p 生效),使用: ulimit -a 或 ulimit -c 查看结果,后续如果程序出现栈溢出等都会生成coredump文件,方便用gdb等追查问题原因。
(2) 修改其他 limits.conf 配置
如果想临时当前会话里让 /etc/security/limits.conf 生效,可以直接使用 ulimit 命令进行修改,在当前session就直接生效(退出登陆或者重启失效,为了永久生效,必须直接修改 /etc/security/limits.conf 文件)
ulimit -SHc unlimited   #修改coredump文件大小,修改完当前session就生效了,启动的程序都会直接可用这个新配置值
ulimit -SHn 10000000  #修改打开文件数量限制为100W,修改完当前session就生效
ulimit -SHu 4096  #修改当前用户打开进程数量限制为4096个,修改完后当前session直接生效
#修改完成后使用 ulimit -a 可以查看修改的效果,需要用就生效修改 /etc/security/limits.conf 文件,然后重启服务器生效 #
参考URL:
http://blog.csdn.net/arkblue/article/details/45796107
分类: linux 标签:

视频转换之ffmpeg小记

2017年7月31日 没有评论

在安装ffmpeg之前先安装lib64编码器,然后在安装ffmpeg,因为大部分手机视频支持mp4格式的文件。
然后安装 php相关扩展,ffmpeg-php,此扩展截至发稿前最新版本是0.6版本,下载地址
http://ncu.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2
在安装扩展之前先安装re2c类库。
http://nchc.dl.sourceforge.net/project/re2c/re2c/0.14.3/re2c-0.14.3.tar.gz
解压 tar -zxvf re2c-0.14.3.tar.gz
切换到解压的目录中,依次进行 ./configure make  make install

分类: 个人日志 标签:

ucloud之centos6.5的php和tengine环境配置方法简述

2016年3月21日 1 条评论

本篇文章以ucloud的centos6.5 64云服务器为例介绍php环境配置。

首先更新依赖环境 yum update -y

安装mysql数据库

例如mysql,这里采用的是mysql的分支版本 percona,yum源如下所示:

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

设置好后紧接着运行 yum update

然后就是暗转mysql了,这里安装的mysql5.7最新的版本,命令如下:

yum install Percona-Server-server-57 Percona-Server-client-57 Percona-Server-devel-57 Percona-Server-shared-57

首先启动mysql  /etc/init.d/mysql start

初始密码查看命令 grep ‘temporary password’ /var/log/mysqld.log

根据初始密码登陆到mysql里面,然后进行设置密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!'  (ps:如果密码设置的过于简单,系统不会让通过的,建议大小写数字加特殊字符组合超过13位

设置php的yum 源

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

然后进行 yum update -y 操作更新依赖环境

接下来就是安装php 环境了

yum install php70w php70w-mbstring php70w-intl php70w-pdo  php70w-mcrypt php70w-gd php70w-devel php70w-mysqlnd php70w-xml php70w-pecl-imagick-devel php70w-pecl-imagick php70w-opcache

如上安装的东西已经可以满足日常的扩展了,在这里系统会安装apache,如果不想使用apache的话,可以把php70w 替换成 php70w-common,php70w-cli,php70w-fpm 这样就可以使用nginx了

 

安装php7的redis 扩展

首先需要更新re2c库

wget https://github.com/skvadrik/re2c/archive/master.zip

wget https://github.com/phpredis/phpredis/archive/php7.zip

分类: linux 标签:

centos 安装php5.5 扩展之imagick

2014年4月14日 没有评论

近日在公司内部安装php5.5.11的测试环境,前面的安装都很顺利,当要
安装php扩展imagick时
[source lang=’powershell’]
pecl install imagick
[/source]
遇到了如下错误
[source lang=’powershell’]
checking ImageMagick MagickWand API configuration program… configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.
ERROR: `/var/tmp/imagick/configure –with-imagick’ failed
[/source]
通过排查发现是由于ImageMagick-devel库没有安装,随后运行如下命令
[source lang=’powershell’]
yum install ImageMagick
yum install ImageMagick-devel
[/source]
最后再次运行
[source lang=’powershell’]
pecl install imagick
[/source]
编译安装成功,成功后要编辑php.ini文件,确保扩展载入成功

分类: PHP技术 标签:

找个IT男做老公吧

2013年10月17日 没有评论

汉口的余女士却记录下生活点滴,发帖赞扬自己的IT界老公,短短数日吸引近三万网友围观,不少单身女网友更高呼“求介绍”。

以下是原文

女人这一辈子,要说出生是一次投胎,那么找男人绝对是第二次投胎,甚至比第一次投胎更重要。第一次,你没有选择,出生在什么家庭就是什么家庭,但你最多也只用渡过二十几年,第二次投胎,你可以选择,是好男人还是坏男人,他将陪你渡过后面几十年。

说这么多,我就是觉得女人要找对人。

个人觉得,IT界的好男人就蛮多,我之前发的个贴子,说自己老公不爱打扮不讲究穿,后来蛮多人说,这样的男人是好男人,总比一天到晚把自己搞的油头粉面地出克哄姑娘伢好些吧。我一想也是,我老公不吃烟不喝酒,能赚钱,而且钱都交给我,虽然平时买个什么东西要跟他汇报汇报,但对于我身上花的大钱从来没有吝啬过。

回想一哈老公周围的大学同学,同事,那些搞技术的男人,真的都蛮好。结了婚的同事,都蛮顾家,很少听说哪个总是到外面玩到深更半夜。

IT男人的爱好简单,喜欢电子产品、喜欢旅游、永远只会觉得自己的老婆是最漂亮的!哈哈!

关于旅游,相信很多妹子都喜欢跟自己喜欢的男淫出克游山玩水,在这我要好好说说哈,以前LZ我冒结婚的时候出克旅游,什么攻略我一律不搞觉得麻烦,我是路盲,玩到哪是那!现在出克,LG早把攻略写好,出行的日期定好,我是什么都不操心,只用跟到他屁股后面跑就行了,他们这类人做事非常有条理性、计划性。另外,他们工资都上缴给老婆保管,自己都很节省,我LG就是个例子。我想这可能也跟他们的工作性质有关,坐在办公室里大部分的都是男人,女的就那么几个,不是结了婚的,就是谈了朋友的,要是又没结婚又没朋友的,一般来说都长相平平。包括IT的女孩子,也都蛮不错!他们读书读的时间长,自然社会习气很少,蛮单纯的,他们就是靠技术吃饭,不需要拍哪个的屁(不包括国企人员),搞什么应酬。你跟他搞个什么风花雪月,他还不见得领情。感情嘛,自然很专一!平时楼主哪里磕碰,LG心痛的不得了!好肉麻啊!嘎嘎!!

这个夏天,特别的热,他就靠两件短袖衬衣和两件背心硬撑过来了。我介绍一下他的两件衬衣,一件是他还在读研时他老娘跟他在摊子上买的,大概30几块钱(到目前为止穿了四年是有的)。还有一件就是我跟他谈朋友的时候,因为当时他的穿着实在是看不下去了,拉着他到海澜之家搞了一件200多块买的。

这两件衣服领口都是白色,就凭这几年穿下了,领口已经泛黄再加上他平时蛮喜欢流汗,一天穿下来就觉得非常恶心。也许是我蛮懒吧,他的衣服我基本都是用洗衣机洗,所以即使是洗了也看着不舒服。不过现在,我开始每天跟他拿蓝月亮泡!

我从6月初就让他为自己买几件衣服,他就是敷衍我。我拉着他到商场去买,他又不习惯,还冒逛一哈就是:”走吧,走吧,我到淘宝上面去买。”完全不配合。

鞋子,我更不想说,一双人字拖(穿了四年),他除了上班不穿外,其余的时间就是:背心+加短裤+一双人字拖。

今年5月份,我说我给你买双凉鞋,他不要,他说穿到蛮丑。在逛汉正街时,看到一双80块钱的镂空休闲皮鞋,我直接给人买了,他一看说不好看,我晕,我平时让他买他不买,我给他买了他说丑。不过后来一穿,那就是天天顶到一双穿,不兴换的,再说他也冒得什么夏天的鞋子可以给他换,除了穿了四年的人字拖。因为他在一个外企上班,公司不允许穿短裤,所以他上班都 是长裤,然后他把我给他买的休闲鞋当拖鞋穿,就是不穿进去,把鞋后跟给踩平。这样凉快。

我不知道我这样描述大家看不看的懂。

天热+汗脚+踩平后跟,鞋垫烂了。他不穿了,又到淘宝买了一双30多块钱的又像拖鞋又像休闲鞋的那种,我还叫不上名。

这就是他整个白天的打扮,除了上班穿个所谓的休闲鞋,其余时间一律人字拖出行各个场所。

也许大家会觉得为什么他的衣服都那便宜,又不舍得买,是不是我们经济实力不行,其实经济条件真的还不错,他在外企从事IT技术,做项目。买个衣服的钱还是有的,就是他不愿意。你说他都不买好衣服穿,搞到我也不好意思买贵的穿,我现在夏天衣服最贵也就是个300多的ONLY还是打折时买的。

有次,我跟我朋友吃饭,我朋友大说特说自己老公爱花钱,爱买衣服。每个月都 要买,穿着蛮讲究,一件衣服最便宜也得400多块吧,那1000的就不说了。我一听他老公那舍得买,就觉得他老公肯定赚蛮多钱,后来才晓得是5000多。哎,别个每月赚5000的都舍得为自己这样花钱 ,我老公比他多的多,为什么只穿几十的。感觉极屌丝范。

为这我总是跟他吵,但他总一句回我:“我是靠实力吃饭的,不需要那些东西包装。”

说实话,男的希望自己旁边的女人光鲜亮丽,反过来女人还不是希望自己旁边的男人干净利落。

不了解他的人初次见他都觉得还蛮不错,五官端正,看到彬彬有礼,不会觉得哪里不讲究!

那是冒跟他生活!

我每次跟我屋里老娘或亲戚说我老公不讲究,他们总是说是我的问题,说“男人的衣,女人的脸,男的干不干净就要看女人会不会做家。”我真的蛮无语,他不爱打扮自己,我能怎么办?

今年过年三十在他屋里过的,初一要给我亲戚他们拜年。初一早上,我老公的袜子洗了冒得换的,问他妈要,她妈也找不到干净的袜子给他,她老娘直接把自己穿的大红色的袜子找给他穿,当然是新的哦。我当时吓了一跳,他老娘让他穿他还真的穿,他43码的脚,他老娘35码的。哎,在去我亲戚屋里,都被当成笑柄了。个大男将,穿女士红袜子,还那小,动哈子就缩到脚掌了。亲戚都看到了,不当他面笑,都来问我,还说他这样穿是我的问题。

我只能说,他妈不注意这些细节,给他穿,又不是我让他穿的。在这我也不好说我婆婆什么,意粉们自己去想。所以这不是我可以改的哦。

在这里,我并不是说我老公脏,只是太不注重自己外表的打扮。扣除这些,他还是蛮好的,每月钱都交给我,也蛮关心我。只是想到他不那么讲究,我的心就像猫抓,管他他又不改让他买衣服不晓得几难,不过前天在我的强压下,他在淘宝上买了一件,今天穿了,一大早上美得不得了地屁颠屁颠地克上班了。

我要是不管他吧,别个都说是我这个女的不持家,凭什么啊!

这里还要说一下工科男,人简单但脑袋不简单,也挺有趣的。这些都是我个人看法,也许有些表扬LG的成份吧,我承认,但我说的也是真的,不喜勿喷!!所以女孩子们,要是你们周围有IT男,好好观察吧,真的蛮不错!

一些妹子觉得IT男木讷,不好沟通。在这里我讲一个我和我老公第一次见面的小笑话。 那天我们玩了一天,晚上我说到徐东那边的绿茵阁吃西餐,那时还冒改名。我们在上面找了一圈冒找到,后来又到销品茂楼底下从下往上看,希望看到广告牌。后来他指着一块广告牌说:“要不我们在那里吃?绿首阔?”。我一听,么斯啊,还有绿首阔这个餐厅???我顺势瞄上去,当场石化

那不就是绿茵阁的潦草写法吗?不过对于一个冒去过的人,当然认不出。我当时心想 :好蠢啊!

不过再后来接触,结婚,他都蛮好了啊。走的地方多了,现在比我还会玩,还晓得向同事打听哪里有好玩的好吃的。旅游,也总是想在我前面,到哪去,怎么搭交通工具,哪个月份去最好。现在他已经把我们9月份要走的路线搞好了,到时我只用屁颠屁颠跟到他混就OK了!!

关键是接触,关键是接触,不要有老思想,觉得IT男人木讷、没情趣、冒得话!!其实他们很可爱!!!

分类: 个人日志 标签:

CentOS安装php5.5环境

2013年8月8日 没有评论

截至发文目前php最新版本是php5.5.1,此版本中个人最喜欢的莫过于hash的更新,面向对象更强烈。

首先要更新源:

  1. sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
  2. sudo rpm -Uvh http://mirrors.neusoft.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm
  3. sudo rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
  4. sudo rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/epel-release-6-5.noarch.rpm
  5. sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

然后运行下 sudo yum update

接下来就可以sudo yum –enablerepo=remi-test,remi info php 就可以看到如下信息

CentOS安装php5.5

CentOS安装php5.5

 

分类: linux 标签:

程序员追求啥之我的追求

2013年4月1日 没有评论

我是一个程序员,我的追求其实很简单。下面的追求是一些共性。

  上周我收到三位Halmstad大学学生的电子邮件,他们正在做一个为期三月的项目,内容是关于程序员在工作中追求的是什么,以及企业如何吸引有才华的程序员。下面是我对他们问题的答案,按重要程度排序。显然人们会有不同的偏好,所以我很有兴趣听到你们赞同哪些,反对哪些,重要性的评判,以及你们认为遗漏了的要点。

1. 做软件产品。 我希望我参与编写的程序成为公司的主要业务。这就排除了IT维护工作,因为这种工作只是间接地支持了真正的业务(不管它是什么)。我也希望参与系统核心部分的工作,越重要的越好。如果我做的东西出错了,它应该马上成为一个紧急问题。最后,我不愿意参与仅仅是配置、应用或整合其他公司的软件 — 我希望自己来实现关键性的功能。

2. 优秀的同事。 和对软件开发充满激情的聪明程序员一起工作是催人奋进的。我一次又一次地看到和同事一起谈论一些问题或设计是如何产生比我们任何一个人自己闷头想出来更好的思路的。这种合作方式不光是产生更好的代码,过程本身就是非常令人享受的。

你怎么知道某人是不是一个优秀程序员呢?一个特别好的特征就是看他们是否持续学习和提高他们的技能,例如通过读书、看博客、参加培训课程、以及参加技术大会。这倒也不是一个必要条件,我就曾经和很多不干这些事的很棒的开发者共事。最后,优秀的开发者会吸引其他的优秀开发者,因为以上原因。如果一个企业有很多优秀的开发者,它就更容易招到更多的优秀开发者。

3. 挑战难题。 程序员通过代码解决问题。开发的产品起码在某些角度需要聪明的思路,比如低延迟、大量并发请求、或有限的硬件资源。不过,很多软件产品都是由常规代码组成,没有什么难做的部分。所以你也不能只是盼着做“困难问题”而避开其他的所有需求。而且,组织好那些看起来很无聊的代码,让它们容易理解和维护,这本身也是一个巨大的挑战。

4. 很酷的技术。 这主要是关于使用有趣的编程语言(例如Clojure、 Erlang 或者 Go),但也包括框架和应用(例如Hadoop 或 Cassandra)。这可能是某些公司有问题的地方。如果它们的应用是用某个语言(比如C++)写的,它就不会改了。所以如果你想改用一些新的语言,你可能需要换个工作。例如,如果你在斯德哥尔摩想用Erlang,你可以给Klarna 或 Campanja公司投个简历试试。

5. 用户。 编码的乐趣之一是做出一些对别人有用的东西。做了东西却没人用就无聊了。要让用户(越多越好)关注你开发的努力并且给予有价值的反馈。唯一例外的可能是创业的时候,但是之后就要把吸引尽可能多的用户作为最优先的事情。

6. 不错的薪水。 拥有大量优秀开发者的公司懂得优秀人才的价值。因为优秀和一般程序员之间的差别是巨大的,所以报酬向优秀开发者倾斜在经济上是有道理的 — 其实在生产效率上的差别远大于薪酬上的差别。反过来说,那些不舍得给程序员较好薪水的公司往往把程序员看作是可以随意更换的“资源”。那么这些公司在其他方面的表现恐怕也是你看不上的,不仅仅是低薪水。

7. 很好的工具。 这个因素的重要性几乎是不言自明的。一台快速的计算机和几个显示器可以加快开发过程 — 谁会反对这一点呢?(好吧,那些光看成本不看效率的秃头老板可能会反对)

8. 一周工作40小时。 如果你总是要加班完成任务,肯定是你工作的单位有一些问题。而且,长时间工作也不等于有效率。

9. 最少的官僚主义。 对于开发过程来说,或多或少会有敏捷开发方法的影子,看起来大家都采用了这种思路。根据我的体会,在大公司里日常管理的那些琐事基本上都是躲不开的问题。

10. 在家工作。 有时候能在家工作是有效的,不过我不常这么做。我喜欢在办公室里,和同事交流。我曾经通过视频会议、聊天工具和电子邮件在一个远程办公室工作,但这样的工作效率还是不如现场合作的高。

11. 离家近。 显然这不容易强求,但是能不用每天花几个小时在路上多好啊。

评论

如果你是咨询顾问(而不是程序员),这个列表上某些项可能会不一样。我总是愿意在产品公司工作,主要因为我喜欢深入了解系统,看着它随时间如何演变。所以我没有作为咨询顾问的第一手工作经验,不过我觉得是这样的:作为一个咨询顾问,你更容易接触到很酷的新技术,因为你有机会和很多不同的客户一起工作。但是,即使你有很棒的同事,你可能也不会每天和他们在一起工作,因为你们会被派到不同的客户那里去。

这就是我在单位里最看重的几个因素,按重要程度排序。在现实生活中总会打一些折扣,但越是列在前面的因素,我就越不愿意给它们打折扣。你看重的因素有哪些呢?

英文原文:Henrik Warne,编译:伯乐在线 – @老码农的自留地

译文链接:http://blog.jobbole.com/37078/

分类: 碎碎念, 网摘 标签:

做产品的需要知道的一些效应

2013年3月22日 没有评论

偶然看到介绍这些效应、定律、法则的文章,发现虽然不知道名字和出处,但实际上对此并不陌生,且应用也可以很广泛,扩展开来联想到工作当中,发现也能很好的指导产品经理的日常工作,结合自己的一些看法,摘录部分如下。

蝴蝶效应

上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统理论时说,亚马逊雨林一只蝴蝶翅膀偶尔震动,也许两周后就会引起美国德克萨斯州的一场龙卷风。其原因就是蝴蝶扇动翅膀的运动,导致其身边的空气系统发生变化,并产生微弱的气流,而微弱的气流的产生又会引起四周空气或其他系统产生相应的变化,由此引起一个连锁反应,最终导致其他系统的极大变化。

启示:初始条件十分微小的变化经过不断放大,对其未来状态会造成极其巨大的差别。有些小事可以糊涂,有些小事如经过系统放大,则对一个组织、一个国家来说是很重要的,就不能糊涂。

应用:细心细致是产品经理的必备素质之一,在工作过程当中,产品经理往往拥有较大的决定权,如果不够细致的话,对产品后期的影响是很大的。举个例子来说,如果产品的地基没有搭好,后续产品要满足运营的需求,满足功能扩展的需要时,就会非常吃力。况且一些细小的用户体验细节不够注意的话,往往会被用户所诟病,用户对产品的喜好可能就决定在这些小细节上。

青蛙现象

把一只青蛙直接放进热水锅里,由于它对不良环境的反应十分敏感,就会迅速跳出锅外。如果把一只青蛙放进冷水锅里,慢慢的加温,青蛙并不会立即跳水锅外,水温逐渐提高的最终结局是青蛙被煮死了,因为等水温高到青蛙无法忍受时,它已经来不及,或者说是没有能力跳出锅外了。

启示:一些突发事件,往往容易引起人们的警觉,而易致人于死地的却是在自我感觉良好的情况下,对实际情况的逐渐恶化,没有清醒的察觉。

应用:产品经理切忌固步自封和盲目自大,山外青山楼外楼,不能只满足于在自己的一亩三分地里面当井底之蛙,要多接受一些新事物,多看看别人的产品,保持与时俱进。舒适的环境会使人倒退的,如果发现自己的工作环境已经缺乏竞争和动力了,需要适时的反省是否需要做出改变,要时刻保持进取的心态,允许不同意见的存在。

鳄鱼法则

其原意是假定一只鳄鱼咬住你的脚,如果你用手去试图挣脱你的脚,鳄鱼便会同时咬住你的脚与手。你愈挣扎,就被咬住的越多。所以,万一鳄鱼咬住你的脚,你唯一的办法就是牺牲一只脚,来保全你自己。

启示:当你知道自己犯错时,立即了结出场。不可再找借口、期待、祷告或采取其他任何动作,赶紧离场,不可试图调整头寸、避险或其他无谓的措施,赶紧认赔出场。如果在股市中,当你发现自己的交易背离了市场的方向,必须立即止损,不得有任何延误,不得存有任何侥幸。

应用:知错能改善莫大焉,切忌死要面子,否则对自己和团队都于事无补。是人都会犯错,关键要勇于承认错误,避免错误被扩大化。

鲶鱼效应

以前,沙丁鱼在运输过程中成活率很低。后来有人发现,若在沙丁鱼中放一条鲶鱼,情况却有所改观,成活率会大大提高。这是何故呢?原来鲶鱼在到了一个陌生的环境后,就会四处乱游,这对于大量好静的沙丁鱼来说,无疑起到了搅拌的作用,而沙丁鱼发现多了这样一个异己分子,自然也很紧张,加速游动。这样沙丁鱼缺氧的问题就迎刃而解了,沙丁鱼也就不会死了。

启示:是企业领导层激发员工活力的有效措施之一。企业要不断补充新鲜血液,把那些富有朝气、思维敏捷的鲶鱼型人才引入职工队伍中甚至管理层,给那些固步自封、因循守旧的懒惰员工带来竞争压力,才能唤起沙丁鱼们的生存意识和竞争求胜之心。

应用:在团队内部切忌搞一言堂,要允许不同意见的声音存在,讨论问题时尽量民主,带动大家的积极性,可以树立几个鲶鱼型的团队成员作为标杆,保持团队的活跃性。

羊群效应

头羊往哪里走,后面的羊就跟着往哪里走。羊群效应是指人们经常受到多数人影响,而跟从大众的思想或行为,也被称为从众效应。

启示:对于个人来说,跟在别人屁股后面亦步亦趋难免被吃掉或被淘汰。最重要的就是要有自己的创意,不走寻常路才是你脱颖而出的捷径。不管是加入一个组织或者是自主创业,保持创新意识和独立思考的能力,都是至关重要的。

应用:独立思考能力也是产品经理的必备素质之一,没什么好多说的。这波互联网创业潮,致使很多产品经理都萌生了创业的想法。不过切忌盲从,要认真评估自己的方方面面是否适合去创业了。

刺猬法则

两只困倦的刺猬,由于寒冷而拥在一起。可因为各自身上都长着刺,于是它们离开了一段距离,但又冷得受不了,于是又凑到一起。几经折腾,两只刺猬终于找到一个合适的距离:既能互相获得对方的温暖而又不至于被扎。刺猬法则主要是指人际交往中的心理距离效应。

启示:运用到管理实践中,就是领导者如要搞好工作,应该与下属保持亲密关系,但这是亲密有间的关系,是一种不远不近的恰当合作关系,疏者密之,密者疏之,这才是成功之道。

应用:人际关系处理是个永恒的话题,产品经理日常要与各种各样的人打交道,如何寻求平衡是至关重要的,能够左右逢源但不是靠阿谀奉承的产品经理,肯定是受大家欢迎的,做事也会顺畅很多。

手表定律

只有一块手表,可以知道时间;拥有两块或者两块以上的手表,并不能告诉一个人更准确的时间,反而会制造混乱,会让看表的人失去对准确时间的信心。

启示:对同一个人或同一个组织不能同时采用两种不同的方法,不能同时设置两个不同的目标,甚至每一个人不能由两个人来同时指挥,否则将使这个企业或者个人无所适从。

应用:在做某一个产品之前,对于产品的愿景或者目标一定要先达成一致,没有清晰的目标会产生很多的无用功。另外就是切忌多头领导,产品经理和项目经理之间的工作职责要明确划分。

破窗理论

一个房子如果窗户破了,没有人去修补,时隔不久,其他的窗户也会莫名其妙的被人打破;一面墙,如果出现一些涂鸦没有被清洗掉,很快墙上就布满了乱七八糟的内容;一个很干净的地方,人们不好意思丢垃圾,但是一旦地上有垃圾出现之后,人就会毫不犹疑的继续丢,丝毫不觉得羞愧。

启示:我们不仅不能做第N次打破窗户的人,我们还要努力做修复第一扇窗户的人。即使是当我们无法选择环境,甚至无力去改变环境时,我们还可以努力,那就是使自己不要成为一扇破窗。

应用:优先级最高的永远是修复线上BUG,要营造出紧迫的氛围,杜绝线上BUG,不能让出BUG变成破窗,有一个修一个,这样也符合用户的预期。

二八定律

也叫巴莱多定律,19世纪末20世纪初意大利的经济学家巴莱多认为,在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%尽管是多数,却是次要的。社会约80%的财富集中在20%的人手里,而80%的人只拥有20%的社会财富。这种统计的不平衡性在社会、经济及生活中无处不在,这就是二八法则。

启示:避免将时间和经理花费在琐事上,要学会抓住主要矛盾。一个人的时间和精力都是非常有限的,要想真正做好每一件事情几乎是不可能的,要学会合理分配我们的时间和精力。要想面面俱到还不如重点突破,把80%的资源花在能出关键效益的20%的方面,这20%的方面又能带动其余80%的发展。

应用:这个定律提到的很多,很多事情都能用它来总结,产品经理们只要考虑清楚如何把80%的精力投入到20%的有价值的工作当中去,就已经非常不容易了。日常那么多的会议、讨论、工作协调等事宜,如何排除干扰,是很重要的。

木桶理论

组成木桶的木板如果长短不齐,那么木桶的盛水量不是取决于最长的那一块木板,而是取决于最短的那一块木板。

启示:任何一个组织或许都有一个共同的特点,即构成组织的各个部分往往是优劣不齐的,但劣势部分却往往决定着整个组织的水平。劣势决定优势,劣势决定生死,这是市场竞争的残酷法则。它告诉领导者:在管理过程中,要下工夫狠抓单位的薄弱环节。

应用:一是产品与竞品相比的弱势点一定要安排一个较高的优先级去弥补,二是团队内部人员水平的参差不齐也需要找到一个较为合适的解决办法,如开发人员的一带一编程就是一种很好的方式,当我们无法获取到更多的资源时,只能通过自己的努力去改善薄弱环节。

马太效应

指强者愈强,弱者愈弱的现象。《圣经—马太福音》中有一句名言:凡有的,还要加给他,让他有余;没有的,连他所有的,也要夺过来。社会学家从中引申出马太效应这一概念,用以描述社会生活领域中普遍存在的两极分化现象。

启示:想在某一个领域保持优势,就必须在此领域迅速做大。再者,当目标领域有强大对手的情况下,就要另辟蹊径,找准对手的弱项和自己的优势。

应用:在创业潮当中,马太效应放大了成功者的光环,掩盖了炮灰们的悲情故事,最终大部分创业者都是赌局上的输家。互联网大佬们的竞争是避不开的,要么勇敢面对,找到对策;要么找到它的弱势项目,奋发图强。

来源:人人都是产品经理

分类: 网摘 标签: ,
互联网安全