Thursday, March 31, 2016

开发团队的规范 关于 一些细节的规则问题


   开发过程中这种的问题,我们活着也是为了解决,各种问题,思考最近团队中遇到的问题,我是作为一个开发者的角度写。

1  关于设计文档和产品切图

    a  命名规范
     这个问题,不仅仅是需要程序员需要注意的,作为产品经理,交互设计师和视觉设计师, 不是仅仅的做出来就好了。需要有一点的规范。 保存自己的作品的时候,切忌,不要用中文数字来命名,不仅,让程序员找不好找, 就是自己后期修改的时候,也是不好找呀。 好的命名,比如  功能命名法,建议产品设计文档的话使用 中文,  如果是切图的时候,建议使用英文,因为,很多的编辑器,都是识别英文的效率更好的。 如果,设计用 英文来命名, 这样很节省时间。

例如:
1 产品原型 功能命名法:




看上去很舒服,也好找。

 2我们最不愿意看到的切图:



这个看完之后,我们都会晕菜,这个问题很简单,也很容易避免的!


3  我们公司的切图:



已经有进步了,但是,作为程序员的我还是不满足,这并不是我们想要的,这是一个熵增的过程。图片会越来愈多的。这个问题,就像是滚雪球一样,慢慢的就会越滚越大的,作为开发者,我们最希望要的切图是这样的, 因为 我们都需要 三倍图 和 二倍图,  注意这里的 名字一定要 一样

我们期望的:



这样子会节省开发时间!


4  备份  切图和 psd 文件!  压缩文件上传到svn!
     最重要的,忘了说了!   因为,互联网公司,跳槽很频繁的,这也是我们的共识。 所以,学会备份,是我们每个人 都应该掌握的,现在的公司就遇到的这样的问题,公司的设计在离职的时候,一般都会讲本地的所有file 全部删除。 当我们在开发的时候,需要图的时候,新人没有  psd 文件,这个时候,我们就不得不等 设计去 重新设计图在切图,这样子很浪费时间的!


===========================================

前端说完了,我们来说一下,后端的问题!

我们跟后端交互,就是获取Json数据,似乎很简单的问题,却被很多的人,搞定的很复杂。很庆幸,我们的后端还是比较给力的,我听一哥们说,他们公司里面的傻逼PHP,返回的数据,key 竟然是中文的,这还不算是什么,我曾经见过,返回的key 是阿拉伯数字的,当时我就骂娘了!

1   Json 数据的Key  必须是英文的。 不多说。 后端都懂得。

2   养成写文档的好习惯
     其实文档,不仅仅是给移动端开发看的,也是后期给自己看的。 
    标准的格式:
    2.1   URL    路径  一般是相对的路径
    2.2   Params   就是参数,
           这里的需要添加参数的描述,参数最好是用 google 翻译, 然后,每个参数 代表的含义,这个东西之后,谁写的谁知道,不能让前端开发的去猜测是什么意思吧!添加的简单啊描述!
    2.3  Json 数据
           真正的后端大神,一般 会把返回的数据,直接粘贴到 文档上面。这样子 有利于移动端的开发, 这才是大神的样子!
      注意: 这里粘贴的是Json 文本。

下面是一种很不好的方式:

Json 数据,直接切了一张图上来,





下面这种是非常好的方式,  粘贴Json 文本  
 处理 大神  Tracytheron
     
   移动端的开发,需要的是数据, 很不希望 起一张图, 将数据复制过来,要比截图还快。 如果是一张图的话,我们难道要一个一个的创建字段吗? 现在讲求的是快速的开发,所以,很多 仅仅是注意一下就可以 加快开发效率的规范,我们是需要注意下的!

   2.4 Json 解析的格式
    格式的问题, 这个东西很蛋疼的,这个东西很重要,就是我们变成的规范,每个人都遵循这个规范的话,开发就很有效率,要不然,看别人的代码,就跟吃屎一样。程序员都懂我的意思!

    一般,我们公司的定义的格式
   {
       data:{
           data:{} or []
           // define you need filed

        }
       code:
    }
  
   第一层的data 就是用来解析的,一种固定的是, 第二层的data  才封装数据!

   2.5  测试服务器
   很多创业者公司,都是直接在正式服务器上修改,这样开发,很不好,不多说,出现bug的几率是指数上升的。 嘿嘿,我很幸运,我们有测试服务器!
   我觉的有的时候需要把问题简单化! 就是  单一职责开发,一台测试服务器,只负责一个app. 如果是一对多的关系,虽然, 节省的服务器,但是 累死程序员! 正如, 看山跑死马。






团队协作的工具:

Tower  非常不错的工具

Bug  系统,这个是开发者必有的!

记住:
一个不会产品的设计,不是一个好程序员!




开发的过程中,肯定会遇到各种的问题,所以,我们需要一一的解决,所有的问题。所以,每次我们做完一个项目,我们都需要思考一下,为什么会有这个问题!
















Baidu 地图 精度问题?

百度地图定位SDK的精度如何?
基站精度为平均200米左右,视运营商基站覆盖范围而定。WIFI精度为20米左右。GPS精度最高,为10米左右(取决于芯片)。在户外,先开启GPS再进行定位,结果较准。但GPS比较费电,且在室内不可用。

另外,&addr=detail 想要获取完整地址(详细到门牌号),或者&addr=rough 想要获得到城市一个级别的地址(比如返回中国北京北京);

百度地图定位SDK的定位策略是什么?
默认首先使用GPS定位,然后是WIFI定位,最后基站定位。并且,百度地图定位SDK会根据环境自动调整定位策略。

为何我的程序无法定位成功?
1、您需要确保程序编译通过。如果对自己写的代码有疑问,可以下载官方高级示例,查看标准源代码。

2、请确保网络通畅,无论是连接wifi还是使用2G/3G信号。

3、定位SDK的调用必须在主线程中。

4、必须在定位SDK启动前设定好参数,例如是否使用GPS,扫描时间间隔设置等。我们强烈建议您设置自己的prodName,并保管好,这样方便我们为您提供更好的定位服务。

5、定位SDK start之后立即执行,这种情况下很难定位成功,因为定位SDK刚开始启动还没有获取到定位信息。这时getlocation一般为null。如果是要获取位置成功,可以在listerner中添加一个判断如果strData为空,则再发起一次定位。

6、定位覆盖率大概在98%。就是说有2%可能服务器没有数据,所以定位会失败。只需要走到别的地方,或者多试几次即可成功定位。

7、请使用真机。在虚拟机上无法进行定位测试。

Macx 老是弹出 提示?

很讨厌,我不喜欢这种感觉,搜了一下 没找到!

I can find the resolve method!

So i guess it is safari, So I open the Sarafi

command + ,

open the setting page.

You can see, you want for example:


you just Remove all,

OK  iw works for me!


Wednesday, March 30, 2016

关于Bug 的思考

作为程序员,我们每天的任务就是在跟Bug 作斗争。这也是我们赖以生存的根本。

但是,我们根本没有时间处理完所有的Bug!  假如世界上没有了Bug, 我们也就失业了。

关于Bug,自己是要有优先级别的!

1  崩溃的Bug  的优先级是最高的, 紧急或者是高,  这类问题一般要优先解决!

2  只要不是功能性的问题,一律都叫做优化!

3  界面的问题,比如,文字的字体的颜色, 字体的大小的啥的,都佳作优化, 不能佳作Bug!

4  对于,一些不常重现的Bug,  需要重现率,如果,不经常重现的话,难道我要花上一两个小时 去测这个Bug, 我就不用干别的了!

级路由 如何配置 VPN?

我更偏爱的家庭科学上网方案——路由器设置VPN

字数1154 阅读32877 评论26 
对于家中拥有众多网络设备的场景来说,把每个设备的科学上网折腾好,真心不容易。尽管VPN算是适应性最强的,仍然有一些设备不支持,例如Apple TV,xbox,ps等等。更何况,每次在windows、mac、ios上连接设置vpn,也是个麻烦事。将VPN配置在一个路由器,这些问题将迎刃而解,下面是我的一些心得和设置教程。
本方法适合普通大众,可行性高,设置难度系数低。

准备工作

  • 两个路由器。其中一个家中常用的即可,另外购入一个极路由(淘宝链接,199元)。PS:为什么是极路由,后面会解释。
  • 一个稳定的VPN。可以是自己搭的,也可以买个比较靠谱的VPN,比如GreenVPN(包年158元不限流量,这点很重要)。

教程开始

第一步,家中已有的路由器A已经设置好可以正常上网,新购入的路由器(极路由),通过网线连接路由器A的LAN口和极路由的WAN口。
第二步,将电脑网线连接到极路由的LAN口,电脑系统里的IP地址设为自动获取(默认是自动获取,除非你之前手动设置过固定IP)。打开浏览器,输入http://4006024680.com/ 或者(192.168.199.1),进入路由器管理后台,输入路由器密码(默认为admin),点登录。
第三步,进入路由器管理界面,点击“外网设置”,选择“自动方式(DHCP)”,勾选自定义DNS,地址填8.8.8.8和114.114.114.114,然后点保存。
第四步,此时,如果没有意外,你的电脑已经可以上网了。然后,回到管理页面,点击“高级设置”。
第五步,在高级设置页面左侧,选择L2TP/PPTP标签,类型选择“PPTP”,服务器地址填IP地址或者服务器域名(由VPN商家提供),用户名和密码填vpn账号的用户名和密码(由VPN商家提供),点击“保存”,会提示设置成功。
Tips:
  1. 勾选“开机启动”,下次关闭路由器重新打开后,会自动启动开始连接VPN服务器;
  2. 智能模式,意思是访问国内网站的时候,不加速,只有访问国外网站的时候通过VPN加速。全局模式,意思是访问所有网站的时候,都通过VPN加速。
  3. 推荐选择智能模式,特别是如果你购买的是VPN流量套餐,会为您节省不少流量。
第六步,保存设置后,点“启动”,即开始连接,稍等2分钟后,点“刷新”,显示“已连通”,表示已经连接上vpn服务器了。
第七步,直接打开浏览器,输入facebook/youtube/twitter的网址,顺利打开。
PS:如果仍然打不开国外网站,请修改本地电脑上的DNS。
此时,两个路由器分别提供2个无线信号,当需要科学上网的时候,切换到配置了VPN的极路由的无线信号,当不需要科学上网的时候,切换至原来的路由器信号即可。同时,xbox、ps、Apple TV、小米盒子等各种网络电视设备都可以科学上网了。更高端的,可以通过设置一个美国VPN,观看netflix、hulu上的电视。

一些可能会问到的问题

  • 为什么是极路由?
    1.设置更为简单。对比了ddwrt、Netgear、极路由,毫无疑问极路由的设置更适合普通用户,只需要填服务器地址、用户名和密码,其他路由器有的要填一大堆参数,有的甚至没有这个功能。
    2.断线自动重连。
    3.智能模式支持国内外分流。这个真没有在其他路由器上看到过。
  • 速度太慢怎么办?
    1.首先,既然是在路由器上配置,那么必须要一个稳定的VPN服务器,免费的还是别考虑了,这里可以看看推荐VPN
    2.房间太大了,无线信号会有损失,离电视机近一点。
    3.如果没有特殊的IP要求,看youtube之类的,选择一个亚洲的带宽充足的线路,比如日本、韩国。香港的一般带宽都很小。
    4.家里的宽带也要足够好,至少6M以上,而且要主流运营商,比如电信、联通。一些小众运营商的出国带宽很不稳定。

Saturday, March 26, 2016

Android Studio 开发常用的插件工具

Android 开发中常用的插件,水滴石穿。

1   Butterknife 

First Method:
compile 'com.jakewharton:butterknife:7.0.1'


Two Method:
buildscript {
  dependencies {
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
  }
}

allprojects {
  repositories {
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
  }
}
apply plugin: 'com.neenbedankt.android-apt'

dependencies {
  compile 'com.jakewharton:butterknife:8.0.0-SNAPSHOT'
  apt 'com.jakewharton:butterknife-compiler:8.0.0-SNAPSHOT'
}




2    Logger

Logger 日志是我们常用的工具,通过日志,可以定位错误出现的问题!

repositories {
  maven { url "https://jitpack.io" }
}

dependencies {
  compile 'com.github.orhanobut:logger:1.12'
}

不错的工具:

https://github.com/GeekHades/logger






Mac Charles 3.10. download

     今天,玩了一下 最新的Charles的版本,貌似加了什么缓存机制,但是,个人感觉,真的垃圾. 就一个字 卡, 因为,我是做移动端开发的,不希望自己解析数据的时候这么卡,这样我的体验很差,这不是我喜欢的,所以,我果断的用以前的版本,但是,官网并没有使用以前的版本。


下面是3.10.1 的版本,还不错!

http://download.csdn.net/download/nj_yang/8802905

Thursday, March 24, 2016

如何在Mac 里配置alias 快速的使用 快捷键

1 编辑   .bash_profile 一般这个文件都不存在,需要新建!

2  vim  ~/.bash_profile 添加
  alias go='cd /home/etc'

注意这里等号前后不要出现空格

3  重新加载 .bash_profile
source .bash_profile 

4 you just in the terminal input  go, You will go to you want.

Wednesday, March 23, 2016

在使用Suger 数据库的时候,5.0以上的版本 不能创建表

解决方案:

让我们看看下面两张图 有什么不同,答案你就知道了,下面的图是正确的答案:







产品经理经常使用的工具

1. 笔(铅笔,钢笔)纸(便签纸,A4纸)本(笔记簿)白板
虽然电子设备越来越发达,但是喜欢这些传统的看得见摸得着的东西。通过纸笔记录待办事项,写提纲,画原型草图等,都是十分方便的。我喜欢用便签纸记录一些注意事项,用A4纸画草图或者写提纲随手记录灵感等。笔记簿用于会议记录和思路整理。白板用于团队分享。

2. 思维脑图工具
Mindjet MindManager/ XMind/ FreeMind
产品经理形象思维很重要,随时会开展头脑风暴,需要利用思维脑图工具来快速理清思路。Mindjet MindManager 可以帮助你快速记录并结构化思维灵感,也便于进行发散性思考和头脑风暴。

3. 流程用例工具
Microsoft Office Visio
Visio是比较常用的流程类工具,可以很方便的完成各类的流程图、结构图、网络图等,自带模板也非常丰富。

4. 原型设计工具
Axure PR/ Balsamiq Mockups
最常用的就是Axure PR 了,作为快速原型制作工具,它可以很方便地通过拖拽Widget的方式来完成产品原型、交互演示的设计,并可以标注详细的开发说明,输出HTML原型或者规格Word开发文档。Balsamiq Mockups 的主要特色在于具有手绘风格,但不能做交互设计。

5. 文档数据处理工具
Google Docs/ Microsoft Office(Word、Excel、PowerPoint)/ WPS/ iWork/ Vim, Editplus, Notepad++ 或sublime_text 等
产品经理需要做很多数据处理和文档写作的工作,需要撰写很多的产品文档。同时,还需要用演示类工具对产品设计进行演示宣讲或讲解分享。demo-builder是一款可以快速创建创建演示影片的工具。Vim等编辑工具可以用来编辑前端代码或者简单文本记录。

6. 图像处理类工具
PhotoShop/Illustrator/CorelDRAW
产品经理也要学会进行一些简单的图像设计与处理的工作。

7. 时间管理工具
Doit.im/Omnifocus/Remem the Milk(RTM)/Wunderkit/Toodledo /Any.DO/Google Calendar
这一类的工具非常多,优秀的工具也很多,找到一款适合自己的就可以了。时间管理最重要的是执行和坚持。

8. 交流沟通工具
电话/ Email/ IM(QQ, RTX, GTalk, MSN等)/内部论坛等
产品经理很重要的一部分工作就是沟通协调。综合利用这几种工具,达到良好的沟通效果,可以提高团队的工作效率。(公共邮箱推荐GMail 和QQ邮箱吧)

9. 文件同步工具
Dropbox/ Skydrive/ Google Drive/ Git /SVN
团队之间同步文件共享, 版本控制都工具也是必要的,随时随地的共享文档也有助于提供工作效率。

10. 云笔记类工具
Evernote/ Wiz/ 有道云笔记
云笔记类软件也有很多,推荐以上三款。笔记类软件可以随时随地记录与同步灵感。

11. 阅读类工具
Google Reader /Reeder /Pocket /Instapaper /Readability/ Flipboard/ Zite /Zaker /Kindle
Google Reader 阅读器是输入信息的强大来源,目前没有谁能替代它,如果有一天,遭遇不幸,有道阅读器或者Feedly是它为数不多的替代品。Reeder 是iOS上不可多得的 Google Reader 阅读工具。Pocket /Instapaper /Readability 都是不错的待阅工具。 Flipboard/ Zite /Zaker 是社会化阅读工具。Kindle 看电子书籍非常舒服。

12. 法.克.G.W.F 工具

这些工具或者服务形形色色,非常之多。你可以根据自己的需求自行选择,但一定要注意的是服务的稳定性和数据迁移成本,创业公司的一些产品确实非常酷,但也要考虑他们产品的稳定性。工具的使用,目的就是将更多的精力和时间用于专注地完成工作。不管怎样选择,只要能满足自己的需求,促进自己的工作,提高工作效率就好。没有最好的,只有最合适的。


作者:Feeng
链接:https://www.zhihu.com/question/19991817/answer/17198908
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Tuesday, March 22, 2016

java.lang.UnsatisfiedLinkError: No implementation found for int

Android studio  使用百度地图  5.0 5.1 系统崩溃

java.lang.UnsatisfiedLinkError: No implementation found for int


解决方案:

只保留:

Saturday, March 19, 2016

You can't visit VPS use root, By PermitRootLogin no

How to resolve this question!

I use other user login
For exemple like this:

ssh username@ip

su -
input root password

whoami 

root.


you can cd etc/ssh/

Now you can set ssh_config
PermitRootLogin yes

Just input
/etc/init.d/sshd restart

如何在自己的VPS 搭建 sockts5

https://plus.google.com/103234343779069345365/posts/Xce4EJpLGhX

How to use Linode?

http://www.laozuo.org/4044.html


关于新注册Linode账户Pending Activation及信用卡、身份证激活验证


Friday, March 18, 2016

CentOS 6.0 VPS 安全问题

http://www.osyunwei.com/archives/672.html

实现目的:把ssh默认远程连接端口修改为2222
方法如下:

1、编辑防火墙配置:vi /etc/sysconfig/iptables
防火墙增加新端口2222
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT
======================================================================
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
重启防火墙,使配置生效:
/etc/init.d/iptables restart
 service iptables restart
=======================================================================
2、备份ssh端口配置文件
cp /etc/ssh/ssh_config   /etc/ssh/ssh_configbak
cp /etc/ssh/sshd_config  /etc/ssh/sshd_configbak
修改ssh端口为:2222
vi /etc/ssh/sshd_config
在端口#Port 22下面增加Port 2222
vi /etc/ssh/ssh_config
在端口#Port 22下面增加Port 2222
重启:/etc/init.d/sshd restart
          service sshd restart
用2222端口可以正常连接之后,再返回去重复上面的步骤。把22端口禁用了,以后ssh就只能用2222端口连接了!增强了系统的安全性。系统运维  www.osyunwei.com  温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接
=======================================================================
3、禁止root通过ssh远程登录
vi /etc/ssh/sshd_config
找到PermitRootLogin,将后面的yes改为no,把前面的注释#取消,这样root就不能远程登录了!
可以用普通账号登录进去,要用到root的时候使用命令su root 切换到root账户
=======================================================================
4、限制用户的SSH访问
假设我们只要root,user1和user2用户能通过SSH使用系统,向sshd_config配置文件中添加
vi /etc/ssh/sshd_config
AllowUsers root user1  user2
=======================================================================
5、配置空闲超时退出时间间隔
用户可以通过ssh登录到服务器,你可以设置一个空闲超时时间间隔。
打开sshd_config配置文件,设置为如下。
vi /etc/ssh/sshd_config
ClientAliveInterval 600
ClientAliveCountMax 0
上面的例子设置的空闲超时时间间隔是600秒,即10分钟,
过了这个时间后,空闲用户将被自动踢出出去(可以理解为退出登录/注销)。
系统运维  www.osyunwei.com  温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接
=======================================================================
6、限制只有某一个IP才能远程登录服务器
vi /etc/hosts.deny     #在其中加入sshd:ALL
vi /etc/hosts.allow    #在其中进行如下设置:sshd:192.168.1.1     #(只允许192.168.1.1这个IP远程登录服务器)
最后重启ssh服务:/etc/init.d/sshd restart

在CentOS 6上安装WordPress



在CentOS 6上安装WordPress



https://mos.meituan.com/library/16/how-to-install-wordpress-on-centos6/



配置防火墙

如果您服务器上安装有防火墙应用,例如firewalld,或者在美团云中设置了防火墙规则,需要进行设置防火墙,将TCP 8000端口开放。

http://www.centoscn.com/CentOS/config/2015/0915/6172.html


When I meet this question:

VPS  refused to connect.



VPS 开启nginx的时候报错:

Starting nginx: nginx: [emerg] "location" directive is not allowed here in /etc/nginx/conf.d/caches.conf:2


Thursday, March 17, 2016

小公司开发进度缓慢的思考 一名开发者的感悟

    我是一名做Android 开发的程序员,下面是针对向我们一样的小公司的思考!下面所写的仅仅是站在一个程序员的角度思考问题。
     “老大,想尽快的发布产品,
       产品,想尽量的减少改动,
       设计,最傲娇的人,如果在公司待过,你会懂得,最难的事情就是跟设计打交道,因为,她们是公司的宝贝,因为,大部分的设计都是学习设计的过来的,以女孩子居多,而且长得还不错的女孩子!
       程序员,不会产品的设计,不是一个好的程序员,程序员就是神一般的存在,什么都要懂一点,还他妈的要自己写的东西,自己测!这点,很多人在写完之后根本就不愿意在去看他!因为,心里面很烦,很多程序员看自己做的东西,总感觉很垃圾,很难看,但是有没有什么话语权。”
      测试,貌似很多的小公司根本就没有这个职位。

     为什么,小公司的开的发进度非常缓慢,而且让你感觉,开发就像是在跟各种人 撕逼! 在产品撕逼,跟交互设计撕逼,跟设计撕逼,跟后台撕逼。到最后,不得不再上线之前加班,给我记忆印象最深的一次,是我的一个哥们,加班了一晚上都在极度紧张的节奏中进行的,结果零点的时候,急火攻心流鼻血了,他的身体素质还是非常不错的。结果呢?虽然交付了产品,还是一堆的Bug。那一次是外包,个人对于定制软件是很排斥的。现在,仔细的思考起来,其实是公司制度本身的问题,公司的流程的问题!

   为什么感觉产品开发的进度会这么慢?让人感到难受呢?从我的角度出发的话:
   比如我们这次做的产品:
    一开始,老大要求重做,然我们很开心,终于撇开以前的垃圾的代码。我们几个技术开始讨论,怎么实现代码的重写,很多人都知道,重写比重构简单的多。但是,当我们听到,老大说,两周内完成的时候,而且其他的大佬的催的特别的紧的时候,你特别想抽自己两巴掌,重写?扯淡呢!两周的时间,根本不能完成的。然后,我们只能又在以前的代码之上修改着,哎,我的痛苦,只有程序员会懂得,“Writing the Fucking Code”.
    然后,老大说,给产品经理“两天”的时间把产品原型,做出来,我听到直接震惊了?两天的时间做出产品原型? 就是粘贴复制,两天也够呛呀,产品经理是很费脑子的活计。产品这个东西,似乎不是可以用时间来衡量的,在整个开的过程中,最累的就是产品经理,因为,他就是我们的枢纽,他负责所有的事情,他负责整个产品.  如果,产品失败了,他需要担当所有的责任。产品成功了,当然,他应该获得比我们多,因为,产品尽力付出的 不仅仅是时间,如果,一个只想得过且过的人适当不好产品经理的!
   两天之后,当我看到,画出来的产品原型的图,我们(程序员)都震惊了!这个,产品原型图基本上没有改变,而且产品原型使用的pdf 图片,观赏性很差的。可以肯定的是,两天时间画出的产品图,肯定是有缺陷的。我们开了一次临时的会议 讨论了一下,是的,你没有听错,是我们程序员跟产品经理讨论产品奥,这个没有错,其实是在讨论技术的可行性。讨论完之后,我感觉,如果,产品这么做肯定没问题了,做起来很简单的,于是,我又再次充满了信心。
    第三天,我们又再次拿到产品的最新的产品文档。好了,我们想开发了,但是,移动端有一个很大的问题!正如以前打仗一样的,打仗之前,粮草先行。所以,开发之前,数据先行,我们的后台又开始调数据接口。产品的商讨和设计,花了一周的时间,接下来,我们又要等后台的数据接口,这样我们又过了一周的时间。本来三周的开发时间,我真正开发的时间,仅仅只有一周!

   后台说,接口可以了。我天真的相信的,千万不要相信你的耳朵听到的话。只有真的用的时候,你才会发现各种问题。其实不仅仅是接口的问题,在对着产品原型做的时候,你会发现,很多细节的东西,比如,有些细节的点是没有必要的,这个时候,你需要及时的跟产品进行交互,跟他们讨论,你没有听错,在开发的时候跟产品经理讨论产品,这个时候我们的设计和产品基本无事可做了,产品有的时候会测一下我们的开发的功能。各种蛋疼的东西,随着时间的推移,我一边写自己的代码,一边纠正后台的错误,这个是没有办法避免的,因为,接口写不好,我们开发的新功能,根本没有办法测试,这就我们的瓶颈,其实,前端开发的地位很低的,而且没有话语权。前期很闲,后期忙的要死,明天就要交付了,还有一两个功能没有完成呢?怎么办呢?加班!效率会更低的。匆匆忙忙的加了一个通宵,然后交付一个半成品的产品,交付了! 后期,在不断地维护。这就是我的现状!


这样做法,肯定不行的!个人的一些建议,关于小公司的开发:

1  产品先行
   好的产品经理是可遇不可求的!
    一个产品的好坏,完全取决于好的产品经理。如果,没有一个好的产品经理,全都是扯淡。
    产品经理的必备技能 ----- 撕逼!如果产品经理不会跟Boss 撕逼,苦的使我们底层的开发人员。撕逼是一门学问。
    好的产品原型,我建议使用Axure.
    “产品先行”,产品经理,要未雨绸缪。产品经理,最重要的职责,就是画出产品原型。这个产品原型,并不是当前开发的产品原型。比如,我们在开发1.0 版本的时候,产品经理,应该在构思 1.1 或者是1.2 的版本了。产品经理应该学习这种增量的模式,不要我们在开发的时候,只是在测试,不要等到开发之前,用两天的时间,交给我们一个不完善的产品。个人感觉,产品经理应该领先开发两个版本以上。
   所以产品经理的时间管理,必须要学会,二八法则。
   所有的事情,尽量用简短的话语说完。
   会议不要超过10分钟,除非重大的会议。
   产品经理,产品原型一旦完成,就不要修改了。产品原型切忌修改,修改的代价是很到的,就算是老大,除非必加不可的需求,根本没有商量余地的需求。 一般,都要放到下一个版本进行。
   在定产品原型之前,要跟技术先讨论 技术的可行性。

   如果,你拥有一个好的产品经理,是你的幸运。我认识一个 范冰,个人感觉很牛逼的产品经理!
   
2  设计切图

3  后台接口开发
    后台的开发要领先,前段一个版本。有人开发新的版本,还要有人对接移动开发的出现的问题。 跟人建议,阶梯配置,如果两个人开发,一个人负责一个版本,当我们移动端在开发的时候,有个人跟我们调试接口,另一个哥们开始下一个版本!
    
4  移动端开发 跟后台交互
    后台开发的接口,很多的时候是不能用的,因为PHP 是若类型语言,所以,很多的时候不是缺少字段,就是返回的类型不对,这个时候,你需要耐心的教导他们返回什么样的字段。
   如果,你的后台,没有返回 数字索引,你就感觉万幸吧。昨天,一哥们说他们的后台的返回的数据,key 值是 中文。我当时就骂人了,卧槽,这货傻逼吧。返回的中文?四级没过吧?
这个时候的我,会立马甩屁股走人吗?

5  专门的测试  (或者是懂业务流程的人)
产品经理一个人测试,太累了!这个问题,应该产品经理解决,解决的方案,培养自己的 特约客户,或者找测试,现在的趋势是程序员开发兼职测试。


   人员配置,至少一个位置两个人。因为,一旦,一个哥们离职了,另外一个哥们会立马接手,不会让项目停滞不前!








Tuesday, March 15, 2016

思考自己的人生

是的,很多的时候我们似乎只是在以为的追求自己的想要的,而忘记了自己的初心,自己的意愿被违背了,很多的时候,我们做着做着,突然忘记了自己的初心。这样子做事情就没有自己的重点,只是一味的为了让自己忙起来,至于自己在做什么,似乎自己并不是很在乎,这样就会让自己的节奏很快,但是一点效率没有,很多的时候,我们从来不会去思考,怎么样能够把事情做的更好,更多的时候实在一味的重复自己之前的工作,这样子日复一日,永远也不会知道什么时候是个头头。我觉的那些自杀的人就是因为,想到以后,自己根本一点出路都没有,所以就选择了死亡,其实死亡真的是一了百聊,什么问题也解决不了的,人生在世,就是为了解决生活的中的难题,年少的时候为了金榜题名,金榜题名之后为了创出一番事业,当你功成名就之时,你又会望子成龙。 我们跟放羊的哇 没什么区别的,只是我们的圈子更大了唯一,似乎没有别的了!

我应该,深入的学习现在自己所做的事情,因为,这是我赖以生存的根本,如果我失业了,又会有谁来养我呢?假如,我现在失业了,下个月,我就吃不上饭了,所以,我需要一笔流动的资金,保证自己不会被饿到。我觉的这笔钱就是自己,救济金,当我遇到很困的时候,我可以立马用这笔钱,来解决我所遇到的问题,一般情况下,我是不会去动用这笔钱的。只有在非常困难的时候,才会去东这笔钱。这是自己的计划。

我觉的自己去看别人,看的恨透,但是看自己的时候,总觉的对自己很模糊 的,对自己没有很好的认识,就直觉的自己的能力真的是差很多的!我觉的自己进步空间还是很大的,但是,自己并不是很愿意努力的去做。

现在的我,需要做的事情有很多的,并不是一味的去做一些基础的工作,我需要去估算自己的进度。让自己的忙起来,不要总是满足于现状,这样的现状,只是暂时的,我需要为了以后工作的,但是,老大是不会这么想的,老总一般只是想要立马想要,所需要的东西,就是这个样子,很多公司的老总都有自己的想法,我觉的可能是孙总对我太好了,其实,没有什么老大可以跟孙总一样这么说话的,我要好好的工作。我觉的作为一个Team Leader 需要学习的东西有很多,不要老是觉的别的技术好,其实,Java 本身的技术 ,就有很多需要我进一步的加深的,技术这个东西更新是很快的,如果自己有一天不学习,自己就会拉下的,很多东西需要学习,我们需要自己去选择,当今的社会中  信息量实在是太大了,很多的时候,我们根本就不知道自己想要的是什么,这个时候,我们就需要Google 去寻找自己的答案!工作的时候,我更多的时候只是为了满足当前的需求,很多的时候,我根本就不愿意去深入的研究,这就是为什么自己的技术水平来时提高不了的原因,也是自己的瓶颈!自己的能力,需要自己来磨练!

你若盛开,清风自来。 这就是我的世界,现在的自己还是不够优秀的,很多的时候,我根本就不需要去抱怨,别人张的有多丑的,其实自己呢?自己长的就好了吗? 自己长的丑,还老是嫌弃别人长的丑,这就是我最大的问题,很多的时候,这个问题只要自己知道就好了,根本就没有必要说出来的,很多的时候,我们都有自己的一杆秤的,不需要说的太冥币啊,只要自己知道就好了。其他的事情,自己不关系你,自己也不想知道的,只要自己过的好就可以了!不是吗?这个世界上的事情太多了,我们根本就是管不过来的,我只需要管好自己就好了,让自己变的更好,只有让自己变的足够的优秀的时候,自然喜欢的女孩子自然就回来的,很多的时候,我老师自己长得丑,还老是嫌弃别人张的丑,今天,让老刘说了一顿,刘凤玉我觉的他说的饿很对的! 一语惊醒 梦中人,我为什么要找跟自己差不多的女孩呢?为什么要找比自己打的女孩子呢?她们 在我最好的年华,根本就是看不上我的,我为什么要在我有点资本的时候去取这样的女孩子呢?那个时候的她,不知道已经被草过多少回了?也许奶子已经下垂了,翘臀早已经消逝了!就算还是个处女那又怎么样呢?我现在才觉得小强的说很有哲理,我不会考虑比自己大的女孩子的.所有比自己打的女孩子,我都不会考虑的,就是这样自己的!为什么,我要早我有点资本的的时候,选择一个自己的喜欢的,尽管他跟我在一起并不是出于喜欢我这个人,而是喜欢我的钱!活着别的事情,那些事情,我早已经不在乎了!我在乎的事情,就是自己的媳妇好看,记得奥不是能看奥,是好看,!对于美的追求,我从来都没有放弃过的,人生就像是在坐火车,在你人生的各个阶段,总会有人陪你一起度过的,但是没有人可以陪你一起做到最后的,就算是父母也不行,也许他们会陪你度过年轻的时候,长大了我们就要单飞了,让自己逐渐的成长起来。就是自样子的,喜欢做自己的事情!这种事情,如果你在家里面的话是很难做到的事情,这个时候,我们就需要做自己内心的事情。我们都喜欢美好的事物,爱美之心人皆有之,这很正常,但是,如果老师挂载最边上就没有你想的那么好了,很多的时候,我们更多的是需要做自己喜欢的事情,这也许才是自己只求的自由,有时候问自己,自己为什么要去生孩子,现在的我感觉生孩子,完全就是多余的,自己那么多的美好的时间,为什么要浪费在孩子的事情上面,人生不过几十年的时间,现在的我已经26岁了,我的青春的时光可不多了。我要真心眼前的事情,浪费我的时间就算是在 慢性自杀!时间就像是海绵,挤挤总会有的,现在的样子是我们更多的是在浪费自己的时间,还有很多时候,别人子啊浪费自己的时间,自己竟然欣然接受,这样的时候,我就连我们自己也很察觉的奥!哈哈!



加油  阿猪

以后的路还有一段时间要走的!

做好自己的还是事情,这才是我们需要做的奥!





Monday, March 14, 2016

Error:warning: Ignoring InnerClasses attribute for an anonymous inner class Error:(com.baidu.mapapi.b) that doesn't come with an

今天使用百度地图的时候,

Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
Error:(com.baidu.mapapi.b) that doesn't come with an
Error:associated EnclosingMethod attribute. This class was probably produced by a
Error:compiler that did not target the modern .class file format. The recommended
Error:solution is to recompile the class from source, using an up-to-date compiler
Error:and without specifying any "-target" type options. The consequence of ignoring
Error:this warning is that reflective operations on this class will incorrectly


How to resolve it?

这两天在兼容百度地图的问题!

所以,讲百度地图的jar 包更换了,我只是更换了Jar 包,但是没有做别的处理,然后我查看了百度地图官方的问题link:http://lbsyun.baidu.com/index.php?title=androidsdk/qa


解决方案:

原来是因为,更换了包之后,在 prograd.pro 代码混淆的时候,出现了问题,这样我们需要将自己的导入的jar也要配置一下的:
例如:

# BaiduLBS  you can see http://lbsyun.baidu.com/index.php?title=androidsdk/qa-libraryjars libs/baidumapapi_v3_5_0.jar
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}



You can try this:

集成地图SDK的应用,在打包混淆的时候,需要注意与地图SDK相关的方法不可被混淆。混淆方法如下:
-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}    
-dontwarn com.baidu.**
保证百度类不能被混淆,否则会出现网络不可用等运行时异常


# BaiduLBS  you can see http://lbsyun.baidu.com/index.php?title=androidsdk/qa-libraryjars libs/baidumapapi_v3_5_0.jar
-keep class com.baidu.** { *; }
-keep class vi.com.** {*;}
-dontwarn com.baidu.**


Thursday, March 10, 2016

com.android.ddmlib - Adb rejected connection to client '24074': closed


     我的Android studio  开始 Build 的时候,一直在  gradlew run building, I  wait one day. It is doesn't work for me !

    So I must resolve this question, Because I have no time to wait gradle running build few hours! 

   I resolve it:

   Because My Android Studio config   Socks5 Proxy.
   Like this:



If you config it like this, You should delete the proxy info in the project  grade.properties file about the proxy info! You just delete it!

So Now you just gradle async . 
It works for me!



今天很开心

今天,强哥过来面试了,我们两个人的经历是很相似的,只是,强哥的路走的更加的崎岖一点。

有的时候,选择会比你自己努力更加的重要的。

人生中的朋友,和自己的贵人也很重要的,未来的路就在我们的脚下,很多的时候,我们需要靠自己走完自己的路,是的,正如 刘凤玉 说的,很多的时候我们都需要靠自己的,但是,如果别人肯帮你一把的话,你会发现,自己的路会好走很多的,因为,我们在利用别人的人脉,而这个人脉是别人用很长的时间打造的。

未来的路,在自己的脚下,我选择的这套路,即使跪着我也要走完!

Wednesday, March 9, 2016

2016年 GeekHades Book lists

下面是我2016年的书单
新的一年里,我们都有自己的想法,很多的时候,我们不要迷失了自己的本心,虽然在google 上能够很快的获得你想要的东西,但是我觉,真的应该静下心来,细细的品味几本书,在书中学到的只是,是别人的几年甚至几十年的积累。写一本书,需要几年,甚至十几年的时间,读一本书,只是要几个月甚至几天的时间。

我的书单:

1  《启示录》  Marty Gagan    著  
                          
2    《将自己的生命浪费在美好的事物上》 已读

3    《C++ Prime》

4   《鸟哥的私房菜  基础篇 和服务器架设篇》


How to delete extras/muduleName

how to delete  extras/muduleName  project?


when you delete the reference muduleName, Your project should delete all reference files,
Like
app/app.iml  
.ideal/*.file  

Now you should close the project, And you can reopen the project file!


Tuesday, March 8, 2016

自己选择的路 即使跪着我也要走下去


    似乎自己迷失在自己梦境里面了,自己在不断的追寻着什么,但是,似乎自己也不知道自己想要的是什么,金钱,房子,车子,美女。这些都是我想要的。但是,又太远了,只是自己的内心真的不知道自己现在,最美好的时光,该做些什么,就只是以为的迷失在自己的内心里面吗?

   现在的公司,我想给自己一个机会,让自己更快的成长,其实,没有什么事绝对的,只是自己的利益是否得到了保障。这个世界上,没有永恒的敌人,也没有永恒的朋友,所有的只是永恒的利益,更多的时候,我们需要的是自己的内心的平静,我们生活在这个浮躁的世界里,自己的内心也浮躁了,是的,如果,跳槽自己的生活也许会变的更好,也许会变的更坏,我不知道,很多事情,不在像是以前的样子,不是,自己想想啊的样子,不是你想怎么样,就可以怎么样的,我们都有自己的事情要做的。

  现在的我,似乎要挑起这样的担子,说真的自己的内心还是有小小的压力的,以前的时候有瑞斌,我只是做一些边边角角的事情,自我感觉还是很良好的,但是,现在,让我负责其这样的项目,让我感觉有点不适应的,是的,有压力,是对的,因为,我这个人真的是很懒,就是那种,打着也不愿意动的人,就是很懒,感觉自己对技术的追求不是很高的样子,只是满足于现状,而且很不愿意去改变。很多的时候,自己的日子也是这样子的过着。

  现在,似乎身边的朋友,都在忙着跳槽,或者是被跳槽,很多的时候,都不是我们内心想的样子,具体的问题具体的分析。每个人的问题都是不一样的,所以,我们需要根据自己的内心的,当时的情况来判断,自己的该做什么。不该做什么。如果,你做一个行业的话,如果老是跳槽,你会感觉子学不到什么真正的东西,你的内心只是在走以前的老路而已,就是这个样子的。

  很多的时候,我似乎老师高估了自己了自己能力,很多时候,老是觉得自己    很牛逼的样子,其实自己真的是什么都不是的很多的时候,自己在别人的内心里面,什么都不是的,只是自己不愿意承认,但是,你又算什么呢?你的走与留 跟我有半毛钱的关系吗?是的,每个人都有自己的想法,我们的利益不同!


  我发现,自己真的是有点杞人忧天了,没有那个必要。我不觉的自己就是主程了,因为有啸天在的,哈哈,其实只是一个幌子,但是,个人感觉主城的压力还是有的,技术的可行性分析和技术的实现,主城要有自己的见解,现在的我显然并不具备这方面的能力。我还有很多地方需要提高的,很多地方需要弥补,主要的是一个对 技术追求的心。这才是最重要的,如果,你只是以为的追求内心的,不是追求的技术的提高,那么,你被淘汰也只是时间的问题。很多的时候,虽然我知道,有这么个东西,但是内心并不愿意去做,去写一个Demo. 以至于自己的技术,不如以前。 自己真正需要提高的是自己的内心,一颗永不知足的心。这才是我成功的关键!

  每个行业都不一样,别人在不断的跳,是因为无奈,也是无措,因为,他们没有找到自己内心真正想要的,而我似乎还喜欢现在所有的一切!

  加油吧 阿朱!

  以后日子,长着呢, 没有 什么事情是解决不了了!

Android how to use android flavors



如何让你一个app 应对多个厂家的需求,大致的需求是一定。

要求:
只有图标改变
功能的增删

总体变化 不大!

http://blog.brainattica.com/how-to-work-with-flavours-on-android/


http://developer.android.com/tools/building/configuring-gradle.html


Monday, March 7, 2016

desc": "SQLSTATE[HY000] [1044] Access denied for user 'name'@'%' to database 'name'"


I don't know why?

国内电商

1  WCDMA/GSM 常用于描述终端,支持3G的WCDMA和2G的GSM两种制式。
这类终端在国内,使用联通卡,可以连接联通的WCDMA和联通的GSM网络;

2  如使用移动卡,只能连接移动的GSM网络(移动的3G制式是TDSCDMA)。


Nano SIM 卡 是苹果的sim卡

一般的样式是  
micro  类型

apple 
nano   类型





如何破解SIM卡


大神集锦


Java :

James Gosling




 Father of C++ 

Bjarne Stroustrup




Linux   Git

Linus Torvalds 






Sunday, March 6, 2016

电影集锦

感谢微信没有删除我的朋友。          电影🎬 福利来了(感谢没有屏蔽的你)[爱心]
死侍 http://t.cn/RG6knpe
美人鱼 http://t.cn/RG6DP5k
西游记三打白骨精 http://t.cn/RG6DPtA
澳门风云3 http://t.cn/RG6DP5F
奔爱 http://t.cn/RG6kGBt
火影忍者剧场版 http://t.cn/RGXPlqn
高跟鞋先生 http://t.cn/RG6ktAK
过年好 http://t.cn/RG6DPth
蒸发太平洋 http://t.cn/RG6DPtP
叶问3 http://t.cn/RG6DPtL
恶棍天使 http://t.cn/RG6DP5s
寻龙诀 http://t.cn/RG6DPtv
老炮儿 http://t.cn/RG6DPt7
唐人街探案 http://t.cn/RG6DZVU
鼠来宝4  http://t.cn/RG6DPtw
功夫熊猫3 http://t.cn/RG6DPtZ
熊出没之熊心归来 http://t.cn/RG6DPtU
真相禁区 http://t.cn/RG6DPty
神探夏洛克 http://t.cn/RG6DJTP
极限挑战之皇家宝藏 http://t.cn/RG6DJTZ
小门神 http://t.cn/RG6DJTv
星球大战7 http://t.cn/RG6DJTL
一念天堂 http://t.cn/RG6DJTA
一家老小向前冲 http://t.cn/RG6DJT7
一切都好 http://t.cn/RG6DJTh
消失爱人 http://t.cn/RG6DJTy
火星救援 http://t.cn/RG6DJTt
极速风流 http://t.cn/RG6DJTw
我的少女时代 http://t.cn/RG6DJT2
万万没想到 http://t.cn/RG6DJT5
不可思异 http://t.cn/RG6DJTc
师父 http://t.cn/RG6DTiE
夏洛特烦恼 http://t.cn/RG6DTiS
从天儿降 http://t.cn/RG6DTio
九层妖塔 http://t.cn/RG6DTi9
前任2:备胎反击战 http://t.cn/RG6DTij
解救吾先生 http://t.cn/RG6DTiW
速度与激情7 http://t.cn/RG6DTiK
碟中谍5 http://t.cn/RG6DTiT
港囧 http://t.cn/RG6DTil
怦然星动 http://t.cn/RG6DTiY
雏妓 http://t.cn/RG6DTiR
巴霍巴利王 http://t.cn/RG6DDdy
鸭王 http://t.cn/RG6DDdw
消失的凶手 http://t.cn/RG6DDdL
007幽灵党 http://t.cn/RG6DDdV
精灵旅社2 http://t.cn/RG6DDdA
终结者5 http://t.cn/RG6DDd4
蚁人 http://t.cn/RG6DDdi
疯狂的麦克斯4 http://t.cn/RG6DDdc
我是证人 http://t.cn/RG6DDda
捉妖记 http://t.cn/RG6DDd2
头脑特工队 http://t.cn/RG6DDdU
王牌特工 http://t.cn/RG6DDd6
色戒 http://t.cn/RG6kIKh
一路向西2 http://t.cn/RG6kLMw
空即是色2015 http://t.cn/RG6kLIg
五十度灰 http://t.cn/RG6kLMv
工作女郎 http://t.cn/RG6kLIF
乡村爱情8 http://t.cn/RG6kLMP
请回答1988 http://t.cn/RG6kLIe
行尸走肉第六季 http://t.cn/RG6kLMZ

Friday, March 4, 2016






Thanks To

https://stavrovski.net/blog/install-and-configure-nginx-mysql-php-fpm-in-centos-6

How To Install Wordpress with nginx on CentOS 6

About Wordpress

Wordpress is a free and open source website and blogging tool that uses php and MySQL. It was created in 2003 and has since then expanded to manage 22% of all the new websites created and has over 20,000 plugins to customize its functionality.

Setup

The steps in this tutorial require the user to have root privileges on your virtual private server. You can see how to set that up here in steps 3 and 4.
Before working with wordpress, you need to have LEMP installed on your VPS. If you don't have the Linux, nginx, MySQL, PHP stack on your server, you can find the tutorial for setting it up here.
Once you have the user and required software, you can start installing wordpress!

Step One—Download WordPress

We can download Wordpress straight from their website:
wget http://wordpress.org/latest.tar.gz
This command will download the zipped wordpress package straight to your user's home directory. You can unzip it the the next line:
tar -xzvf latest.tar.gz 

Step Two—Create the WordPress Database and User

After we unzip the wordpress files, they will be in a directory called wordpress in the home directory.
Now we need to switch gears for a moment and create a new MySQL directory for wordpress.
Go ahead and log into the MySQL Shell:
mysql -u root -p
Login using your MySQL root password, and then we need to create a wordpress database, a user in that database, and give that user a new password. Keep in mind that all MySQL commands must end with semi-colon.
First, let's make the database (I'm calling mine wordpress for simplicity's sake; feel free to give it whatever name you choose):
CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)
Then we need to create the new user. You can replace the database, name, and password, with whatever you prefer:
CREATE USER wordpressuser@localhost;
Query OK, 0 rows affected (0.00 sec)
Set the password for your new user:
SET PASSWORD FOR wordpressuser@localhost= PASSWORD("password");
Query OK, 0 rows affected (0.00 sec)
Finish up by granting all privileges to the new user. Without this command, the wordpress installer will not be able to start up:
GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
Then refresh MySQL:
FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
Exit out of the MySQL shell:
exit

Step Three—Setup the WordPress Configuration

The first step to is to copy the sample WordPress configuration file, located in the WordPress directory, into a new file which we will edit, creating a new usable WordPress config:
cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php
Then open the wordpress config:
sudo nano ~/wordpress/wp-config.php
Find the section that contains the field below and substitute in the correct name for your database, username, and password:
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');
Save and Exit.

Step Four—Copy the Files

We are almost done uploading Wordpress to the server. We need to create the directory where we will keep the wordpress files:
sudo mkdir -p /var/www/wordpress
The final move that remains is to transfer the unzipped WordPress files to the website's root directory.
sudo cp -r ~/wordpress/* /var/www/wordpress
We can modify the permissions of /var/www to allow future automatic updating of Wordpress plugins and file editing with SFTP. If these steps aren't taken, you may get a "To perform the requested action, connection information is required" error message when attempting either task.
First, switch in to the web directory:
cd /var/www/
Give ownership of the directory to the nginx user, replacing the "username" with the name of your server user.
sudo chown nginx:nginx * -R
sudo usermod -a -G nginx username

Step Five—Set Up Nginx Server Blocks

Now we need to set up the WordPress virtual host. Although Wordpress has an extra step in its installation, the nginx website gives us an easy configuration file:
Open up the default nginx default hosts file:
sudo vi /etc/nginx/conf.d/default.conf
The configuration should include the changes below (the details of the changes are under the config information):
#
# The default server
#
server {
    listen       80;
    server_name  _;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   /var/www/wordpress;
        index index.php  index.html index.htm;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /usr/share/nginx/html;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /var/www/wordpress;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
  • Here are the details of the changes—you may have some of these in effect already:
  • Add index.php within the index line.
  • Change the root to /var/www/wordpress;
  • Uncomment the section beginning with "location ~ \.php$ {",
  • Change the root to access the actual document root, /var/www/wordpress;
  • Change the fastcgi_param line to help the PHP interpreter find the PHP script that we stored in the document root home.
Save, exit, and restart nginx for the changes to take effect:
sudo service nginx restart

Step Six—RESULTS: Access the WordPress Installation

Once that is all done, the wordpress online installation page is up and waiting for you:
Access the page by visiting your site's domain or your Virtual Private Server's IP address (eg. example.com) and fill out the short online form (it should look like this).

See More

Once Wordpress is installed, you have a strong base for building your site.
If you want to encrypt the information on your site, you can Install an SSL Certificate
准备篇:
1、配置防火墙,开启80端口、3306端口
       vi /etc/sysconfig/iptables
       -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许80端口通过防火墙)
       -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT(允许3306端口通过防火墙)
特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
添加好之后防火墙规则如下所示:
#########################################################
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#########################################################
系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接
/etc/init.d/iptables restart  #最后重启防火墙使配置生效
2、关闭SELINUX
       vi /etc/selinux/config
       #SELINUX=enforcing       #注释掉
       #SELINUXTYPE=targeted    #注释掉
       SELINUX=disabled         #增加
       :wq  保存,关闭
       shutdown -r now   #重启系统
3、配置CentOS 6.2 第三方yum源(CentOS默认的标准源里没有nginx软件包
       yum install wget    #安装下载工具wget
       wget http://www.atomicorp.com/installers/atomic  #下载atomic yum源
       sh ./atomic   #安装
       yum check-update  #更新yum软件包
#############################################################################
安装篇:
一、安装nginx
       yum install nginx      #安装nginx,根据提示,输入Y安装即可成功安装
       service nginx start    #启动
       chkconfig  nginx on    #设为开机启动
       /etc/init.d/nginx  restart  #重启
       rm -rf /usr/share/nginx/html/*  #删除ngin默认测试页
二、安装MySQL
       1、安装mysql
 yum install mysql mysql-server   #询问是否要安装,输入Y即可自动安装,直到安装完成
       /etc/init.d/mysqld start   #启动MySQL
       chkconfig mysqld on   #设为开机启动
       cp /usr/share/mysql/my-medium.cnf   /etc/my.cnf  #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
       shutdown -r now  #重启系统
2、为root账户设置密码
       mysql_secure_installation
       回车,根据提示输入Y
       输入2次密码,回车
       根据提示一路输入Y
       最后出现:Thanks for using MySQL!
系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接
       MySql密码设置完成,重新启动 MySQL:
      /etc/init.d/mysqld stop   #停止
      /etc/init.d/mysqld start  #启动
      service mysqld restart    #重启
三、安装PHP
       1、安装PHP
       yum install php   #根据提示输入Y直到安装完成
       2、安装PHP组件,使PHP支持 MySQL、PHP支持FastCGI模式
      yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt libmcrypt-devel php-fpm           #根据提示输入Y回车
      /etc/init.d/mysqld restart  #重启MySql
      /etc/init.d/nginx  restart  #重启nginx
      /etc/rc.d/init.d/php-fpm  start  #启动php-fpm
      chkconfig php-fpm on  #设置开机启动
#############################################################################
配置篇
一、配置nginx支持php
       cp /etc/nginx/nginx.conf  /etc/nginx/nginx.confbak    #备份原有配置文件
       vi /etc/nginx/nginx.conf  #编辑
       user   nginx  nginx;  #修改nginx运行账号为:nginx组的nginx用户
       :wq!    #保存退出
cp /etc/nginx/conf.d/default.conf  /etc/nginx/conf.d/default.confbak   #备份原有配置文件
vi /etc/nginx/conf.d/default.conf   #编辑
index  index.php index.html index.htm;   #增加index.php
系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接
  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #
  location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    include        fastcgi_params;
  }
     #取消FastCGI server部分location的注释,并要注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径
二、配置php
  vi  /etc/php.ini   #编辑
  date.timezone = PRC     #在946行 把前面的分号去掉,改为date.timezone = PRC
  disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
                          #在386行 列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
  expose_php = Off        #在432行 禁止显示php版本的信息
  magic_quotes_gpc = On   #在745行 打开magic_quotes_gpc来防止SQL注入
  open_basedir = .:/tmp/  #在380行,设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,可以防止php木马跨站,如果改了之后安装程序有问题,可注销此行,或者直接写上程序目录路径/var/www/html/www.osyunwei.com/:/tmp/
      :wq!  #保存退出
三、配置php-fpm
系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接
       cp /etc/php-fpm.d/www.conf   /etc/php-fpm.d/www.confbak   #备份原有配置文件
       vi /etc/php-fpm.d/www.conf   #编辑
       user = nginx   #修改用户为nginx
       group = nginx   #修改组为nginx
 /etc/init.d/mysqld restart  #重启MySql
       /etc/init.d/nginx  restart  #重启nginx
       /etc/rc.d/init.d/php-fpm  restart  #重启php-fpm
#############################################################################
测试篇
      
cd  /usr/share/nginx/html/   #进入nginx默认网站根目录
       vi  index.php   #新建index.php文件
<?php
           phpinfo();
       ?>
       :wq! #保存
chown nginx.nginx /usr/share/nginx/html/ -R  #设置目录所有者
chmod 700  /usr/share/nginx/html/ -R   #设置目录权限
在客户端浏览器输入服务器IP地址,可以看到相关的配置信息!
#############################################################################
备注
nginx默认站点目录是:/usr/share/nginx/html/
权限设置:chown nginx.nginx /usr/share/nginx/html/ -R
MySQL数据库目录是:/var/lib/mysql
权限设置:chown mysql.mysql -R  /var/lib/mysql
此教程目前(2012.2.14)安装Nginx+PHP+MySQL版本如下: