php7连接mysql的函数mysql_connect已经被弃用了!
php7连接mysql的函数mysql_connect已经被弃用了!
大多数的php教程中还是用的mysql_connect,你会发现在php7中会报这个函数不存在。请用mysqli_connect替代。
php7连接mysql的函数mysql_connect已经被弃用了!
大多数的php教程中还是用的mysql_connect,你会发现在php7中会报这个函数不存在。请用mysqli_connect替代。
php -a
1. 安装
我是懒人,不习惯make/make install, 直接用aptitude安装了
$ sudo aptitude install nginx
$ sudo aptitude install php
$ sudo aptitude install php-fpm
目前是直接安装了最新版的php7、php-fpm7
2. 配置
php-fpm默认不需要配置,并且安装好后自动就启动了,可以使用
ps -aux | grep fpm
查看有没有启动。
安装的位置是:
/usr/sbin/php-fpm7.0
不过和旧版本的使用 fastcgi://127.0.0.1:9000的网络接口相比,新版本使用了Unix域套接字(Unix domain socket),是在文件系统里的文件,php-fpm的unix域套接字是:
unix:/run/php/php7.0-fpm.sock因此配置nginx.conf的时候,要使用这个。
Unix域套接字同样可以用netstat -apn | grep fpm查看。
重要的是配置nginx.conf
我的位置是在 /etc/nginx/nginx.conf
deepin安装的nginx.conf中,包含了配置/etc/nginx/sites-enabled/default,默认的配置文件其实在这,可以配置这个default文件。
sudo vim /etc/nginx/sites-enabled/default
在default中,默认包含了nginx的配置,所做的是取消井号#,修改一下就好了。
默认default中去掉无关说明,剩下的所有配置如下,需要修改的以粗体表示:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server
# listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#include snippets/fastcgi-php.conf;
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
#fastcgi_pass unix:/var/run/php5-fpm.sock;
#}
}
修改为:
server {
listen 80 default_server;
listen [::]:80 default_server;
# 这儿是你自定义的www根目录
root /home/deepin/docs/wwwdir;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php; #增加index.php
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#去掉下面两行井号
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# 去掉下面这行井号,并修改为正确的unix套接字,可在shell中用sudo netstat -apn|grep php查看
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
#}
}
3. 启动
/etc/init.d/php7.0-fpm restart
/etc/init.d/nginx restart
4. 测试
在配置的root目录下建一个index.php
内容是:
<?php phpinfo(); ?>
| linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 $# 添加到Shell的参数个数 $0 Shell本身的文件名 $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 |
示例:
1 #!/bin/bash 2 # 3 printf "The complete list is %s\n" "$$" 4 printf "The complete list is %s\n" "$!" 5 printf "The complete list is %s\n" "$?" 6 printf "The complete list is %s\n" "$*" 7 printf "The complete list is %s\n" "$@" 8 printf "The complete list is %s\n" "$#" 9 printf "The complete list is %s\n" "$0"10 printf "The complete list is %s\n" "$1"11 printf "The complete list is %s\n" "$2 |
结果:
[Aric@localhost ~]$ bash params.sh 123456 QQThe complete list is 24249The complete list isThe complete list is 0The complete list is 123456 QQThe complete list is 123456The complete list is QQThe complete list is 2The complete list is params.shThe complete list is 123456The complete list is QQ |
很多时间管理致力于提高工作效率,减少打扰,番茄工作法是其中及其简便的一种。
一个番茄时段25分钟,计时开始后,排除一切干扰开始专一的一项工作。这项工作应该是简单的可以在25分钟内完成的。然后休息5分钟,继续下一个番茄时段。
这种方式蛮有效率,我想了一下可能的原因:
* 工作时段容易计算,工作+休息是半个小时,看着一个时钟就很清楚过去了多久还有多久,不需要特意的工具。
* 排除干扰,集中一项事务。人能高度集中注意力的时间不长。学校里面上课40分钟是有道理的。
* 一件简单能完成的工作。这督促人们去分解庞大的工作,不积跬步无以至千里。一步步都能完成一些工作,避免了一个庞大工作总是无法完成的挫败感。这与项目管理的WBS(Work breakdown structure)任务拆分、敏捷开发的sprint->user story->task的拆分思想都是一样的。
* 要集中注意力,就要休息好。中间一小段时间的休息更有利于集中注意力工作。
1. 找出占用的端口,如8080:
netstat -apn | grep 8080
如果还找不出来,上面的命令可能需要sudo一下。
输出列表形式是:
协议、原地址:端口、目的地地址:端口、状态、PID/程序名称
PID是其标识,可以用来杀掉它。后面的程序名称有时候比较短,可以用ps再确认一下。
2. 用进程管理再确认一下
ps -aux | grep python
输出是:
用户、PID、CPU、内存、VSZ、RSS、TTY、状态、开始时间、运行时间、命令路径名称
这里面命令路径名称要详细一些,可以用来加以确认;
3. 杀了
温柔的送个终止信号,请其自杀:
Kill -3 PID
不管了,强制杀掉:
kill -9 PID
想快速共享当前目录?忽然发现SMB失效怎么都用不起来,FTP我麻烦对方也麻烦,还是HTTP好啊。进入你要共享的目录,下面一句话搞定:
python -m SimpleHTTPServer &
当然前提是你装了Python。。。
debian系linux使用的包管理工具是apt-get或升级版的aptitude。node.js相关的有2个包:nodejs和nodejs-legacy。为什么会有两个?
首先,nodejs安装完成后,大部分系统的默认的运行名称为“node”,于是很多nodejs的脚本文件都会以“node”作为运行名,如果没有找到,就无法执行。而debian上有个老软件包叫“node”,这与nodejs的默认运行名称“node”重名了,所以在debian系linux上,安装nodejs包后的默认运行名是“nodejs”,这会导致很多npm包里的软件找不到“node”。
解决方法1,就是安装nodejs-legacy,不过要把以前的nodejs和其他相关删除掉。
sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs-legacy
# 确认能用
node --version # v0.10.13
ls -la `which node` # ... /usr/bin/node -> /etc/alternatives/node解决方法2,仍然使用nodejs包,但是建立一个硬链接,目前测试暂未发现问题。
cd /usr/bin sudo ln nodejs node
2b(to business)产品有其2b之处。
1. 用户选择和实施产品的成本非常高。企业产品对企业来说,很可能涉及全公司员工的使用。企业在选择时,就特别谨慎,表现在选择对比的周期长,审批环节多,要求产品提供方长期维护能力强,反应速度快。企业选择产品少则数天,多则数月。此时往往需要专人跟踪。
2. 用户、客户、决策者角色分离,也就是使用的、给钱的、做决定的都不是一个人。这是常见的情况,无须赘述。作为产品来说,就算只卖一个产品,你需要搞定的都不是一个人。
3. 使用者(用户)对业务不一定熟悉,有的用户甚至提不出问题,更遑论给出要求。这有多种原因,首先,熟悉业务的更多是安排事情的领导,而使用者多数可能是普通员工,也就是“做事的”,开始时并不熟悉业务;其次,普通员工公司内、公司间的流动性比上层员工大,可能是新员工刚来,也可能是老员工要走,我在半年时间内,已经见到好几个公司的前台用户换岗离职,频率不可谓不高;再次,公司业务发展快、调整快、文件多,一种制度不适用了、或没有制定好会很快换另一种,负责的员工熟悉上手都需要时间;最后,很多客户只是觉得这个产品概念不错,或者很流行,或者看到别的公司有使用,但这个产品对他们究竟有哪些用处,还需要很多学习了解。
4. 不同公司的习惯和要求千奇百怪千差万别,有些习惯和要求可以改变但要花费精力解释引导灌输,有的习惯和要求就很难统一改变。如果产品要都适应,就要做出多种多样的设置选项。而设置多了以后,如何让用户找到哪个设置适用于自己,又是一个新的问题。这也是以前企业产品多定制的原因。
5. 企业产品要求连通性。这一点要求其实也挺强,但是一直都没有很好解决,因为毕竟没有一家企业产品的开发公司能做好方方面面的,另外在企业的连通性方面又缺乏协议和标准。连通性最起码的是账号鉴权、组织架构,其次是业务流程、审批流程。华为以前用IBM lotus Notes做基本的工具,又有很多专门的IT开发人员基于notes做二次开发,甚至ERP等方方面面都是用IBM产品,以求联通。但绝大多数公司也没有华为的财力人力,也就习惯了吃百家饭,然后自己人工消化。所以目前企业产品即使不连通,很多用户也愿意自己人工化解。
6. 企业产品的安全性、可用性要求也高于个人产品。个人泄露了点信息可能是多接几个骚扰电话,应用一两个小时不可用也就等一等或用别的;企业的信息泄露可能事关存亡,应用用不了也没有替换方案,相关人等的相关工作都要停滞。
综上所述,一个企业产品如果不解决上面几点问题,就很难有爆发力,不免陷入泥潭。
对于创业公司只有少数几个人的团队来说,要做也只能做小而美的产品,我试着给出几个产品定义的方式,解决上面的问题:
1. 设计针对某一岗位的某一类员工个人使用的通用、共性需求的产品,对员工个人有价值,从个人方面赚取费用。这个能规避企业产品选择成本高、角色分离、要求多样化的问题。他自己觉得合适,就能选择来用,不合适就不用。如墨刀modao.io是针对产品经理制作APP原型的工具,产品经理觉得好用就马上可以用,用段时间对有些付费新功能有需要就会付费。
2.做工具类产品而不是社交类、连通性产品。同上。对于社交,很多小创业公司还是用的QQ,很多大公司还是用的Email,要做OA审批的话,就要有一堆的连通性问题,需求就会层出不穷,很难好好满足。
3.如果是确实要针对全公司大范围使用的产品,产品应针对小微企业,而不是大企业。因为小微企业决策快且激进,大企业慢且保守。最近和一个一千多员工的公司HR聊,他们会更倾向于使用传统保守的软件,而不是新兴软件,即使新软件的体验更好。我说的是金蝶云之家和阿里钉钉。其实阿里人更多实力更强,但它之前并没有做过企业类产品,传统的大企业还是会更相信金蝶。
4.要做足文档和培训,做好售后支持和及时响应。企业中每天遇到的问题都可能是新的,更别提你解决新问题的产品。从各家SaaS产品来看,工具类产品小到墨刀leangoo,社交综合类产品大到钉钉云之家,文档帮助总是时时处处,甚至400热线也毫不吝惜的处处出现,培训消息通知也时不时能看到。
其他方面:
1.设计好盈利模式。你看去年快的被收购了,今年优步中国被收购了,赔本赚吆喝的生意总是不能一直做下去的,况且咱创业又没那么多钱用来烧。这里面还有一点,如果没人愿意付费,千万别死脑筋觉得产品做得不够好,赶快看看是不是产品方向就有问题。大多数创业者愿意说产品不够好,因为产品不够好可以改;但大多数人不愿说方向有问题,因为方向有问题,前面就白做了。不过,白做三个月总好过白做一年。
2.做好营销。如今说“酒香不怕巷子深”,完全是在放屁。如今还说放到网上,有人说好就有口碑就有粉丝,更是痴人说梦。网上的流量都是被各路巨头把控,要流量就要付费。既要流量,又不想给钱或者少给钱的方法是越来越少,也越来越奇葩。连优衣库也要运作个不雅视频门,洗个车还要弄比基尼女郎,你就看着办吧。
除了关注很久的leancloud,闹着风风雨雨的APICloud,最近又有一个野狗,做实时BaaS;通过它又知道谷歌在两年前收购了一家做BaaS的Firebase....APP和各种应用开发似乎要越来越容易了。
物联网方面,Wifi和Zigbee曾经是最火的两个协议。去年深圳的物联网实现的一些智能家居产品都是用这两个协议做的。去年典型的是Zigbee的芯片贵,据说是实现起来比较复杂。现在又有了两个新底层协议,一个是z-wave,另一个是thread,还有上层协议COAP。后两者是google的NEST背景,希望这些会为物联网注入活力。
说多一些物联网。智能家居闹了这么久,似乎也只是些噱头。除了用户体验方面,让大家一直怀疑有必要让个温度计湿度计智能起来吗?另一方面,室外定位从卫星到技术大发展,美国GPS、俄国Glonass、中国北斗纷纷上线,而室内定位似乎还没有一个好的技术标准。