背景:在网上找一个开要自启动的shell代码放上去后,直接添加服务提示service redis does not support chkconfig,后加上下面两行O了。
加上两行就好了,如下:
[root@localhost SOURCES]# /sbin/chkconfig --add redis
[root@localhost SOURCES]# chkconfig --list|grep redis
redis 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost SOURCES]# /sbin/chkconfig redis on
[root@localhost SOURCES]# chkconfig --list|grep redis
redis 0:off 1:off 2:on 3:on 4:on 5:on 6:off
阅读全文
加上两行就好了,如下:
[root@localhost SOURCES]# /sbin/chkconfig --add redis
[root@localhost SOURCES]# chkconfig --list|grep redis
redis 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost SOURCES]# /sbin/chkconfig redis on
[root@localhost SOURCES]# chkconfig --list|grep redis
redis 0:off 1:off 2:on 3:on 4:on 5:on 6:off
阅读全文
[实践Ok]SecureCRT 控制列宽显示,secureCRT 改变显示宽度。
Unix/LinuxC技术 jackxiang 2016-4-12 17:35
因为老是出现好像刚连接时出现行数没有对齐,得ctrl+l一下才能修改到正确的地方,估计是和字体有关系,此次再次实践注意一下:
1)全局设置:Options - Global Options - Terminal - Appearance - Maximumcolumns - 256,并勾选上show horizontal scroll bar。
2)session设置:Options - Session Options - Terminal -Emulation - Logical Columns设置成255,勾选上Retain size and font,Logicalrows设置成42(刚好满屏)、Scrollbackbuffer设置成5000(这样纵向滚动屏就可以缓存更多内容,但占内存),另外Terminal - Appearance - Window -选上Show horizontal scroll bar,然后重新连接。
=============================================================================================
经常会碰到这种问题,在LINUX上使用isql命令加-w 500参数连到SYBASE数据库中做select查询的结果老是显示混乱.很是郁闷,由于我是在SecureCRT连入到LINUX的,在网上也没有找到合适的答案,PUTTY倒是看到有解决的方法.可惜SecureCRT没找到.
今天无意中发现SecureCRT也有设置的地方,可惜不好传图片,就文字说明一下吧
设置方法
当你用SecureCRT建好一个连接后,在这个连接上点右键,再点 Properties (或直接按快捷键 ALT+ENTER) ,这时再点 Emulation 在右边的 Size 下的 Logical 栏中输入列宽的大小,像我的Windows屏幕是 1024*768的, 在这里我输入了500,然后再选中 右边单选项Onresize 中的 Retain size and font ,选好后再点OK,连接到 Linux ,这时屏幕下方会有一个滚动条,呵呵.再用
isql -w 5000 -Usa -P -SSERVER 连到sybase 查询一条命令试试
1> sp_helpdb
2> go
呵呵.是不是很漂亮了,再也不会混乱了..
来自:http://blog.chinaunix.net/uid-310409-id-2439822.html
阅读全文
1)全局设置:Options - Global Options - Terminal - Appearance - Maximumcolumns - 256,并勾选上show horizontal scroll bar。
2)session设置:Options - Session Options - Terminal -Emulation - Logical Columns设置成255,勾选上Retain size and font,Logicalrows设置成42(刚好满屏)、Scrollbackbuffer设置成5000(这样纵向滚动屏就可以缓存更多内容,但占内存),另外Terminal - Appearance - Window -选上Show horizontal scroll bar,然后重新连接。
=============================================================================================
经常会碰到这种问题,在LINUX上使用isql命令加-w 500参数连到SYBASE数据库中做select查询的结果老是显示混乱.很是郁闷,由于我是在SecureCRT连入到LINUX的,在网上也没有找到合适的答案,PUTTY倒是看到有解决的方法.可惜SecureCRT没找到.
今天无意中发现SecureCRT也有设置的地方,可惜不好传图片,就文字说明一下吧
设置方法
当你用SecureCRT建好一个连接后,在这个连接上点右键,再点 Properties (或直接按快捷键 ALT+ENTER) ,这时再点 Emulation 在右边的 Size 下的 Logical 栏中输入列宽的大小,像我的Windows屏幕是 1024*768的, 在这里我输入了500,然后再选中 右边单选项Onresize 中的 Retain size and font ,选好后再点OK,连接到 Linux ,这时屏幕下方会有一个滚动条,呵呵.再用
isql -w 5000 -Usa -P -SSERVER 连到sybase 查询一条命令试试
1> sp_helpdb
2> go
呵呵.是不是很漂亮了,再也不会混乱了..
来自:http://blog.chinaunix.net/uid-310409-id-2439822.html
阅读全文
今天svn提交发现错误
#cd /home/svn/app/
# svn up
Summary of conflicts:
Skipped paths: 1
Skipped 'http://justwinit.com/application/controllers/admin/main.phpl'
At revision 5073.
Summary of conflicts:
Skipped paths: 1
Skipped 'http://justwinit/index.html'
U /xxxxxx/index.html
处理方式:
#cd /home/svn/app/
#mkdir /root/bak
#mv /home/svn/app/* /root/bak/
#svn revert .
#svn up
如果还是不可以,出绝招:
svn remove --force filename
svn resolve --accept=working filename
svn up
我的解决办法是直接把那些有问题的删除掉:
cd domain目录根下直接删除:
rm -Rf application/controllers/admin/main.php
再次svn up一下即可。
From:http://www.fulingjiang.cn/linux/78.html
解决办法:
svn resolve --accept working 文件名
注:用svn resolve --accept theirs-full 文件名
提示:svn: warning: Tree conflicts can only be resolved to 'working' state; 文件名 not resolved
#cd /home/svn/app/
# svn up
Summary of conflicts:
Skipped paths: 1
Skipped 'http://justwinit.com/application/controllers/admin/main.phpl'
At revision 5073.
Summary of conflicts:
Skipped paths: 1
Skipped 'http://justwinit/index.html'
U /xxxxxx/index.html
处理方式:
#cd /home/svn/app/
#mkdir /root/bak
#mv /home/svn/app/* /root/bak/
#svn revert .
#svn up
如果还是不可以,出绝招:
svn remove --force filename
svn resolve --accept=working filename
svn up
我的解决办法是直接把那些有问题的删除掉:
cd domain目录根下直接删除:
rm -Rf application/controllers/admin/main.php
再次svn up一下即可。
From:http://www.fulingjiang.cn/linux/78.html
解决办法:
svn resolve --accept working 文件名
注:用svn resolve --accept theirs-full 文件名
提示:svn: warning: Tree conflicts can only be resolved to 'working' state; 文件名 not resolved
༒࿈背༙྇景༙྇:࿈༒STR_TO_DATE(str,format) 这是DATE_FORMAT()函数的反函数。它需要一个字符串str和一个格式字符串格式。STR_TO_DATE()返回一个DATETIME值。
开发要求,获取当月佣金,主要卡在了sql对datetime 类型的判断
先后用过4种方法如下
1.select sum('price') from rrr_order_level where active_time < "2015-09-30 00:00:00";
2.select sum('price') from rrr_order_level where timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00') > 0
3.select sum('price') from rrr_order_level where active_time < '$EndDate' and active_time > '$BeginDate'"
4.select sum('price') from rrr_order_level where active_time between '2015-09-01 00:00:00' and '2015-09-30 00:00:00';
数据库如上
分析错误,mysql不知道对应的年月日,无法比较,采用
select sum(price) from rrr_order_level where active_time >= STR_TO_DATE('2015-09-01 00:00:00','%Y-%m-%d %H:%i:%s') and active_time <= STR_TO_DATE('2015-09-30 00:00:00','%Y-%m-%d %H:%i:%s');
完美解决问题!
开发要求,获取当月佣金,主要卡在了sql对datetime 类型的判断
先后用过4种方法如下
1.select sum('price') from rrr_order_level where active_time < "2015-09-30 00:00:00";
2.select sum('price') from rrr_order_level where timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00') > 0
3.select sum('price') from rrr_order_level where active_time < '$EndDate' and active_time > '$BeginDate'"
4.select sum('price') from rrr_order_level where active_time between '2015-09-01 00:00:00' and '2015-09-30 00:00:00';
数据库如上
分析错误,mysql不知道对应的年月日,无法比较,采用
select sum(price) from rrr_order_level where active_time >= STR_TO_DATE('2015-09-01 00:00:00','%Y-%m-%d %H:%i:%s') and active_time <= STR_TO_DATE('2015-09-30 00:00:00','%Y-%m-%d %H:%i:%s');
完美解决问题!
如何搭建一个git服务器?
Unix/LinuxC技术 jackxiang 2016-4-11 23:14
༒࿈背༙྇景༙྇:༒࿈这༙྇个༙྇༒࿈还༙྇是༙྇༒࿈0༙྇༒࿈9༙྇༒࿈年༙྇༒࿈开༙྇始༙྇༒࿈兴༙྇起༙྇,༒࿈现༙྇在༙྇༒࿈火༙྇起༙྇来༙྇༒࿈了༙྇。࿈༒࿈༒࿈༒࿈༒࿈༒࿈༒࿈༒࿈༒࿈༒࿈༒࿈༒
GitHub是一个免费托管开源代码的Git服务器,如果我们不想公开项目的源代码,又不想付费使用,那么我们可以自己搭建一台Git服务器。首先你需要一台client和一台server。client可以是windows系统,利用git bash或者cywin类似的软件来执行指令,也可以是ubuntu等linux系统,server可以是本地搭建的服务器,也可以是云服务器。例如:阿里云服务器,对大学生有很大的优惠,非常划算!(没有任何的利益关系)
1.在本机上安装openssh
在linux client上安装ssh服务,如果是windows的安装git for windows
sudo apt-get install openssh-server
可以查看ssh服务是否开启
ps -e | grep ssh
2.在server上创建一个git用户
sudo adduser git
3.在server上安装git
sudo apt-get install git-core
4.在server上初始化仓库
cd /home/git/
git init --bare myRep.git
5.通过git clone命令进行克隆远程仓库
git clone git@{your server ip}:/home/git/myRep.git
这里都必须知道server上git用户的登入密码。
GitHub是一个免费托管开源代码的Git服务器,如果我们不想公开项目的源代码,又不想付费使用,那么我们可以自己搭建一台Git服务器。首先你需要一台client和一台server。client可以是windows系统,利用git bash或者cywin类似的软件来执行指令,也可以是ubuntu等linux系统,server可以是本地搭建的服务器,也可以是云服务器。例如:阿里云服务器,对大学生有很大的优惠,非常划算!(没有任何的利益关系)
1.在本机上安装openssh
在linux client上安装ssh服务,如果是windows的安装git for windows
sudo apt-get install openssh-server
可以查看ssh服务是否开启
ps -e | grep ssh
2.在server上创建一个git用户
sudo adduser git
3.在server上安装git
sudo apt-get install git-core
4.在server上初始化仓库
cd /home/git/
git init --bare myRep.git
5.通过git clone命令进行克隆远程仓库
git clone git@{your server ip}:/home/git/myRep.git
这里都必须知道server上git用户的登入密码。
shell脚本执行返回的状态码,shell返回值环境变量之shell将其返回值赋值给$?环境变量,以及在Mysql备份导出mysqldump中的使用示例。
Php/Js/Shell/Go jackxiang 2016-4-11 16:25
背景:shell在执行一些程序时,其返回值影响后面用&&或||来进行判断,特别是以rpmbuild来举例说明,其在post和postun用到一些删除某些服务啥的,出现返回值不是1,导致rpm -e xxx,出现错误,卸载报错 /var/tmp/rpm-tmp.ELL6uY: line 3: /sbin/chkconfig: No such file or directory,这些都是和这个shell返回值有很大关系的。
返回值,失败示例,返回1值:
shell执行成功示例,返回0值:
二、在Mysql备份导出mysqldump中的使用示例:
=========================================================
每个命令都有一个返回值(返回状态或者退出状态)。命令执行成功的返回值总是0(零值),执行失败的命令,返回一个非0值(错误码)。错误码必须是一个1到255之间的整数。
在编写脚本时,另一个很有用的命令是exit。这个命令被用来终止当前的执行,并把返回值交给shell。当exit不带任何参数时,它会终止当前脚本的执行并返回在它之前最后一个执行的命令的返回值。
一个程序运行结束后,shell将其返回值赋值给$?环境变量。因此$?变量通常被用来检测一个脚本执行成功与否。
与使用exit来结束一个脚本的执行类似,我们可以使用return命令来结束一个函数的执行并将返回值返回给调用者。当然,也可以在函数内部用exit,这 不但 会中止函数的继续执行,而且 会终止整个程序的执行。
摘自:https://github.com/liushuaikobe/bash-handbook-zh-CN#%E4%BA%A4%E4%BA%92%E6%A8%A1%E5%BC%8F
Linux下一条命令或一个进程执行完成会返回一个一个状态码。
0 === 成功执行
非0 === 执行过程中出现异常或非正常退出
在Shell脚本中 最后执行的一条命令将决定整个shell脚本的状态. 此外 shell的内部命令exit也可以随时终止shell脚本的执行,返回Shell脚本的状态码
当shell脚本执行结束前 的最后一个命令是不带参数的exit ,那么 shell脚本的最终返回值 就是 exit 语句前一条语句的返回值,根据这个值可以判断脚本成功执行与否。
$? 可以查看 最后一条命令的返回值 该变量可以在shell 脚本中的任何地方使用.
来自:http://www.cnblogs.com/MyEyes/archive/2012/01/12/2320529.html
返回值,失败示例,返回1值:
shell执行成功示例,返回0值:
二、在Mysql备份导出mysqldump中的使用示例:
=========================================================
每个命令都有一个返回值(返回状态或者退出状态)。命令执行成功的返回值总是0(零值),执行失败的命令,返回一个非0值(错误码)。错误码必须是一个1到255之间的整数。
在编写脚本时,另一个很有用的命令是exit。这个命令被用来终止当前的执行,并把返回值交给shell。当exit不带任何参数时,它会终止当前脚本的执行并返回在它之前最后一个执行的命令的返回值。
一个程序运行结束后,shell将其返回值赋值给$?环境变量。因此$?变量通常被用来检测一个脚本执行成功与否。
与使用exit来结束一个脚本的执行类似,我们可以使用return命令来结束一个函数的执行并将返回值返回给调用者。当然,也可以在函数内部用exit,这 不但 会中止函数的继续执行,而且 会终止整个程序的执行。
摘自:https://github.com/liushuaikobe/bash-handbook-zh-CN#%E4%BA%A4%E4%BA%92%E6%A8%A1%E5%BC%8F
Linux下一条命令或一个进程执行完成会返回一个一个状态码。
0 === 成功执行
非0 === 执行过程中出现异常或非正常退出
在Shell脚本中 最后执行的一条命令将决定整个shell脚本的状态. 此外 shell的内部命令exit也可以随时终止shell脚本的执行,返回Shell脚本的状态码
当shell脚本执行结束前 的最后一个命令是不带参数的exit ,那么 shell脚本的最终返回值 就是 exit 语句前一条语句的返回值,根据这个值可以判断脚本成功执行与否。
$? 可以查看 最后一条命令的返回值 该变量可以在shell 脚本中的任何地方使用.
来自:http://www.cnblogs.com/MyEyes/archive/2012/01/12/2320529.html
win10怎么切换输入法?这和WIN8差不多的。跟WIN7\XP完成不一样的哦!我使有的方法有三种有需要的朋友可以往下看,希望可以帮到有需要的朋友。
方法/步骤
比较常用的使用[WIN+空格键]
Win10怎么输入法切换
出现选择输入法的界面,再按一次就是切换另一个输入法。
Win10怎么输入法切换
中英文快速 切换法。按[Shift+Alt],如果需要快速的切换可以使用这种方法。不过国内的输入法都有自带快速切换的按键[Shift]
Win10怎么输入法切换
4
还有就是在桌面上的任务栏处的语言处点击一下,然后再选择你想要的输入法。
来自:http://jingyan.baidu.com/article/b7001fe16bc0820e7382dd69.html
windows10输入法如何去掉inputmode:
http://jingyan.baidu.com/article/17bd8e522cac8285ab2bb8a9.html
方法/步骤
比较常用的使用[WIN+空格键]
Win10怎么输入法切换
出现选择输入法的界面,再按一次就是切换另一个输入法。
Win10怎么输入法切换
中英文快速 切换法。按[Shift+Alt],如果需要快速的切换可以使用这种方法。不过国内的输入法都有自带快速切换的按键[Shift]
Win10怎么输入法切换
4
还有就是在桌面上的任务栏处的语言处点击一下,然后再选择你想要的输入法。
来自:http://jingyan.baidu.com/article/b7001fe16bc0820e7382dd69.html
windows10输入法如何去掉inputmode:
http://jingyan.baidu.com/article/17bd8e522cac8285ab2bb8a9.html
在linux下如何将文件夹压缩成.tgz文件的?
Unix/LinuxC技术 jackxiang 2016-4-8 17:52
背景:经常看到PHP的一些扩展均是以tgz后续提供的,那这个包是怎么打出来的呢?
linux中.tgz是.tar.gz的缩写,我们在解压.tgz文件时可直接使用tar命令来操作。
tar xzf xlswriter-1.3.6.tgz ??old five
————————————————————————————————————————
.tgz
解压:tar zxvf FileName.tgz
压缩:未知
.tar.tgz
解压:tar zxvf FileName.tar.tgz
压缩:tar zcvf 搜索FileName.tar.tgz FileName
php-5.5.34/ext
cp zip-1.13.2forphp-5.5.34.spec zlib-5.5.34forphp-5.5.34.spec
cp zip-1.13.2forphp-5.5.34.spec openssl-5.5.34forphp-5.5.34.spec
cp zip-1.13.2forphp-5.5.34.spec opcache-5.5.34forphp-5.5.34.spec
挪动一下spec命令更规范:
RPM包重新命名:
spec文件里的Name: php-5.5.34-extension-apc 替换成:apc-php55-
cat f.txt |awk '{print "sed -i \"s/"$2"/"$3 "/g\" " $1}' 生成如下:
这一行因前面的文件多了一个-出现替换上的问题了:
sed -i "s/php-5.6.20-extension-redis/redis-/g" redis-php56-2.2.4.spec
一个是反查,另一个是在作相关操作时务必备份整个目录,达可以恢复。
http://zhidao.baidu.com/link?url=COVXMPfYvaAj9z3fGsl6rhyYrus4fBGrHUaB4v_xNn34s29kpqtSAyxH2enPxdPhBxzQPkb-82yHXFvwAoDWka
linux中.tgz是.tar.gz的缩写,我们在解压.tgz文件时可直接使用tar命令来操作。
tar xzf xlswriter-1.3.6.tgz ??old five
————————————————————————————————————————
.tgz
解压:tar zxvf FileName.tgz
压缩:未知
.tar.tgz
解压:tar zxvf FileName.tar.tgz
压缩:tar zcvf 搜索FileName.tar.tgz FileName
php-5.5.34/ext
cp zip-1.13.2forphp-5.5.34.spec zlib-5.5.34forphp-5.5.34.spec
cp zip-1.13.2forphp-5.5.34.spec openssl-5.5.34forphp-5.5.34.spec
cp zip-1.13.2forphp-5.5.34.spec opcache-5.5.34forphp-5.5.34.spec
挪动一下spec命令更规范:
RPM包重新命名:
spec文件里的Name: php-5.5.34-extension-apc 替换成:apc-php55-
cat f.txt |awk '{print "sed -i \"s/"$2"/"$3 "/g\" " $1}' 生成如下:
这一行因前面的文件多了一个-出现替换上的问题了:
sed -i "s/php-5.6.20-extension-redis/redis-/g" redis-php56-2.2.4.spec
一个是反查,另一个是在作相关操作时务必备份整个目录,达可以恢复。
http://zhidao.baidu.com/link?url=COVXMPfYvaAj9z3fGsl6rhyYrus4fBGrHUaB4v_xNn34s29kpqtSAyxH2enPxdPhBxzQPkb-82yHXFvwAoDWka
http://jingyan.baidu.com/article/f71d60379afd061ab641d1c4.html
Window10修改IP地址:
控制面板\所有控制面板项\网络和共享中心
Window10修改IP地址:
控制面板\所有控制面板项\网络和共享中心
rc?.d中的?代表不同的运行级别,例如进入图形模式的运行级别是5,就是说在rc5.d中的S开头进程都会运行,网络多用户文本模式的运行级别是3,就是运行所有rc3.d中S开头的进程。
单用户模式就是rc1.d,如果是rc0.d就是关机,其中没有S开头的,都是K开头的进程名字,代表杀掉进程。
更多参考:http://blog.itpub.net/12798004/viewspace-1143979/
单用户模式就是rc1.d,如果是rc0.d就是关机,其中没有S开头的,都是K开头的进程名字,代表杀掉进程。
更多参考:http://blog.itpub.net/12798004/viewspace-1143979/
背景:最近安装chrome升级到最新版本需要卸载掉旧的再重新安装新的版本,于是出现一些错误,结合一些unlock发现这个chrome里被update程序运行导致其删除不掉引起升级失败。
最近,有win7系统电脑用户重装chrome谷歌浏览器的时候会出现提示“糟糕!安装失败。错误代码0a0430721。”,这是怎么回事呢?本文将提供win7系统重装chrome谷歌浏览器失败提示错误代码0a0430721的原因及解决方法供大家了解,希望可以帮助到大家
chrome错误代码0a0430721原因:
因为删除chrome浏览器时候没有删除干净,然后又重装了谷歌浏览器,所以就出现这个问题了,如下图所示:
win7系统重装chrome谷歌浏览器失败提示错误代码0a0430721原因及解决办法
错误代码0a0430721解决方法:
1、打开谷歌浏览器残余文件所在的位置文件夹,一般都在C盘的Program Files文件夹(64位系统的在Program FilesX86文件夹里);
win7系统重装chrome谷歌浏览器失败提示错误代码0a0430721原因及解决办法
2、将其删除,即可。
以上就是对win7系统重装chrome谷歌浏览器失败提示错误代码0a0430721的原因及解决方法的介绍,方法很简单,有同样问题的朋友可以动手尝试解决。
摘自:http://www.yzmg.com/xitong/105044.html
http://blog.csdn.net/libaineu2004/article/details/45533299
最近,有win7系统电脑用户重装chrome谷歌浏览器的时候会出现提示“糟糕!安装失败。错误代码0a0430721。”,这是怎么回事呢?本文将提供win7系统重装chrome谷歌浏览器失败提示错误代码0a0430721的原因及解决方法供大家了解,希望可以帮助到大家
chrome错误代码0a0430721原因:
因为删除chrome浏览器时候没有删除干净,然后又重装了谷歌浏览器,所以就出现这个问题了,如下图所示:
win7系统重装chrome谷歌浏览器失败提示错误代码0a0430721原因及解决办法
错误代码0a0430721解决方法:
1、打开谷歌浏览器残余文件所在的位置文件夹,一般都在C盘的Program Files文件夹(64位系统的在Program FilesX86文件夹里);
win7系统重装chrome谷歌浏览器失败提示错误代码0a0430721原因及解决办法
2、将其删除,即可。
以上就是对win7系统重装chrome谷歌浏览器失败提示错误代码0a0430721的原因及解决方法的介绍,方法很简单,有同样问题的朋友可以动手尝试解决。
摘自:http://www.yzmg.com/xitong/105044.html
http://blog.csdn.net/libaineu2004/article/details/45533299
背景:发现并没有压缩,查来查去是这个配置有问题写成1000k了,也就是下面这些列表都不符合条件,不给gzip压缩,gzip_min_length 1k; 不压缩临界值,大于1K的才压缩,一般不用改,被修改成1000k了,于是没有压缩,查了老半天content-type,都写了,呵呵。
修改后,在这儿测试了一下,果然压缩了:
http://pagespeed.webkaka.com/youhua/gzip/
网址 http://www.jackxiang.com/template/trielegant/styles.css 的检测结果:
是否压缩 是
压缩类型 gzip
原文件大小 8704 字节
压缩后文件大小 4275 字节
压缩率 50.88%
图片是否需要启用GZip压缩?
无意间看到有网友提及,图片不用GZip压缩的。图片尽量不要使用gzip,因为gif,png等图片本身就是被压缩过的,
开启和关闭图片GZip压缩后,网页的总体积是不同的,令人惊讶的是开启图片GZip压缩后,网页总体积竟然变大了。而耗时也相应的增多了。
===========================================
1、Vim打开Nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
2、找到如下一段,进行修改
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";
3、解释一下
第1行:开启Gzip
第2行:不压缩临界值,大于1K的才压缩,一般不用改
第3行:buffer,就是,嗯,算了不解释了,不用改
第4行:用了反向代理的话,末端通信是HTTP/1.0,有需求的应该也不用看我这科普文了;有这句的话注释了就行了,默认是HTTP/1.1
第5行:压缩级别,1-10,数字越大压缩的越好,时间也越长,看心情随便改吧
第6行:进行压缩的文件类型,缺啥补啥就行了,JavaScript有两种写法,最好都写上吧,总有人抱怨js文件没有压缩,其实多写一种格式就行了
第7行:跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding",我不需要这玩意,自己对照情况看着办吧
第8行:IE6对Gzip不怎么友好,不给它Gzip了
上面摘自:http://www.veryhuo.com/a/view/51706.html
http://www.webkaka.com/blog/archives/how-to-set-gzip-for-js-in-Nginx.html
https://segmentfault.com/q/1010000000585128
查询是否被zip压缩:
http://pagespeed.webkaka.com/youhua/gzip/
输入:
http://www.jackxiang.com/images/js/common.js?jsver=2.1.1.3626.3
=======================================
启用Gzip 可减少 54.2 KB 启用服务器Gzip,可以减少传输字节数。更多 -3分
未启用Gzip的资源有:
http://www.jackxiang.com/template/trielegant/styles.css (大小: 8.5 KB 预计可减少 5.9 KB )
http://www.jackxiang.com/images/js/common.js?jsver=2.1.1.3626.3 (大小: 20.3 KB 预计可减少 14.8 KB )
http://www.jackxiang.com/lang/zh-cn/jslang.js?jsver=2.1.1.3626.3 (大小: 3.7 KB 预计可减少 2.1 KB )
http://www.jackxiang.com/images/js/ajax.js?jsver=2.1.1.3626.3 (大小: 7.4 KB 预计可减少 6.0 KB )
http://www.jackxiang.com/images/js/swfobject.js?jsver=2.1.1.3626.3 (大小: 6.4 KB 预计可减少 4.2 KB )
http://www.jackxiang.com/images/css/SyntaxHighlighter.css (大小: 3.6 KB 预计可减少 2.5 KB )
http://jackxiang.com/favicon.jpg (大小: 1.9 KB 预计可减少 793 B )
http://js.users.51.la/4950674.js (大小: 1.9 KB 预计可减少 1.1 KB )
http://www.jackxiang.com/images/hl/shCore.js (大小: 9.5 KB 预计可减少 5.7 KB )
http://www.jackxiang.com/images/hl/shBrushPhp.js (大小: 3.7 KB 预计可减少 2.1 KB )
http://www.jackxiang.com/images/hl/shBrushJScript.js (大小: 937 B 预计可减少 437 B )
http://www.jackxiang.com/images/hl/shBrushJava.js (大小: 1.0 KB 预计可减少 494 B )
http://www.jackxiang.com/images/hl/shBrushSql.js (大小: 1.9 KB 预计可减少 964 B )
http://www.jackxiang.com/images/hl/shBrushCss.js (大小: 4.0 KB 预计可减少 2.2 KB )
http://www.jackxiang.com/images/hl/shBrushCpp.js (大小: 2.7 KB 预计可减少 1.4 KB )
http://www.jackxiang.com/images/hl/shBrushPython.js (大小: 4.7 KB 预计可减少 2.5 KB )
http://www.jackxiang.com/template/trielegant/images/logo_header.png (大小: 5.6 KB 预计可减少 237 B )
http://www.jackxiang.com/template/trielegant/images/long.gif (大小: 924 B 预计可减少 358 B )
http://jackxiang.com/template/trielegant/images/bridge-banner-eleven.jpg (大小: 18.9 KB 预计可减少 354 B )
http://icon.51.la/icon_0.gif (大小: 846 B 预计可减少 101 B )
http://eiv.baidu.com/hmt/icon/21.gif (大小: 1.1 KB 预计可减少 69 B )
修改后,在这儿测试了一下,果然压缩了:
http://pagespeed.webkaka.com/youhua/gzip/
网址 http://www.jackxiang.com/template/trielegant/styles.css 的检测结果:
是否压缩 是
压缩类型 gzip
原文件大小 8704 字节
压缩后文件大小 4275 字节
压缩率 50.88%
图片是否需要启用GZip压缩?
无意间看到有网友提及,图片不用GZip压缩的。图片尽量不要使用gzip,因为gif,png等图片本身就是被压缩过的,
开启和关闭图片GZip压缩后,网页的总体积是不同的,令人惊讶的是开启图片GZip压缩后,网页总体积竟然变大了。而耗时也相应的增多了。
===========================================
1、Vim打开Nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
2、找到如下一段,进行修改
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";
3、解释一下
第1行:开启Gzip
第2行:不压缩临界值,大于1K的才压缩,一般不用改
第3行:buffer,就是,嗯,算了不解释了,不用改
第4行:用了反向代理的话,末端通信是HTTP/1.0,有需求的应该也不用看我这科普文了;有这句的话注释了就行了,默认是HTTP/1.1
第5行:压缩级别,1-10,数字越大压缩的越好,时间也越长,看心情随便改吧
第6行:进行压缩的文件类型,缺啥补啥就行了,JavaScript有两种写法,最好都写上吧,总有人抱怨js文件没有压缩,其实多写一种格式就行了
第7行:跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding",我不需要这玩意,自己对照情况看着办吧
第8行:IE6对Gzip不怎么友好,不给它Gzip了
上面摘自:http://www.veryhuo.com/a/view/51706.html
http://www.webkaka.com/blog/archives/how-to-set-gzip-for-js-in-Nginx.html
https://segmentfault.com/q/1010000000585128
查询是否被zip压缩:
http://pagespeed.webkaka.com/youhua/gzip/
输入:
http://www.jackxiang.com/images/js/common.js?jsver=2.1.1.3626.3
=======================================
启用Gzip 可减少 54.2 KB 启用服务器Gzip,可以减少传输字节数。更多 -3分
未启用Gzip的资源有:
http://www.jackxiang.com/template/trielegant/styles.css (大小: 8.5 KB 预计可减少 5.9 KB )
http://www.jackxiang.com/images/js/common.js?jsver=2.1.1.3626.3 (大小: 20.3 KB 预计可减少 14.8 KB )
http://www.jackxiang.com/lang/zh-cn/jslang.js?jsver=2.1.1.3626.3 (大小: 3.7 KB 预计可减少 2.1 KB )
http://www.jackxiang.com/images/js/ajax.js?jsver=2.1.1.3626.3 (大小: 7.4 KB 预计可减少 6.0 KB )
http://www.jackxiang.com/images/js/swfobject.js?jsver=2.1.1.3626.3 (大小: 6.4 KB 预计可减少 4.2 KB )
http://www.jackxiang.com/images/css/SyntaxHighlighter.css (大小: 3.6 KB 预计可减少 2.5 KB )
http://jackxiang.com/favicon.jpg (大小: 1.9 KB 预计可减少 793 B )
http://js.users.51.la/4950674.js (大小: 1.9 KB 预计可减少 1.1 KB )
http://www.jackxiang.com/images/hl/shCore.js (大小: 9.5 KB 预计可减少 5.7 KB )
http://www.jackxiang.com/images/hl/shBrushPhp.js (大小: 3.7 KB 预计可减少 2.1 KB )
http://www.jackxiang.com/images/hl/shBrushJScript.js (大小: 937 B 预计可减少 437 B )
http://www.jackxiang.com/images/hl/shBrushJava.js (大小: 1.0 KB 预计可减少 494 B )
http://www.jackxiang.com/images/hl/shBrushSql.js (大小: 1.9 KB 预计可减少 964 B )
http://www.jackxiang.com/images/hl/shBrushCss.js (大小: 4.0 KB 预计可减少 2.2 KB )
http://www.jackxiang.com/images/hl/shBrushCpp.js (大小: 2.7 KB 预计可减少 1.4 KB )
http://www.jackxiang.com/images/hl/shBrushPython.js (大小: 4.7 KB 预计可减少 2.5 KB )
http://www.jackxiang.com/template/trielegant/images/logo_header.png (大小: 5.6 KB 预计可减少 237 B )
http://www.jackxiang.com/template/trielegant/images/long.gif (大小: 924 B 预计可减少 358 B )
http://jackxiang.com/template/trielegant/images/bridge-banner-eleven.jpg (大小: 18.9 KB 预计可减少 354 B )
http://icon.51.la/icon_0.gif (大小: 846 B 预计可减少 101 B )
http://eiv.baidu.com/hmt/icon/21.gif (大小: 1.1 KB 预计可减少 69 B )
一个高级PHP工程师所应该具备的
Php/Js/Shell/Go jackxiang 2016-4-2 18:26
初次接触PHP,就为他的美所折服,于是一发不可收拾。
很多面试,很多人员能力要求都有“PHP高级工程师的字眼”,如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望给初级或已经达到中级的PHP工程师一些帮助。
一、平静的心态
和所有程序员一样,要写一手好的程序,没有好的心态是不行的。
遇事不可急躁,不可轻言放弃。
在程序开发过程中,尤其是初中级程序员,写出的程序或架构会遇到很多问题,其中一些问题比较弱智,而有些问题根本没有碰到过,于是不可太过急躁,应该逐个排查问题的最初源泉,将其干掉。急躁的心态去开发系统是对项目的一种不负责。急躁会让人学会将就,让人学会逃避。而我个人北京两年的简单生活,给我其中一个最大的历练也就是:我的心态更加平静了。
相信,这样的心态也会有助于你其他方面的处事能力。
为什么将心态列入其中,我是想说明:他不同于销售的职能,需要很大激情澎湃,而是需要静静的思考。
二、一套烂熟于心的问题解决思路
曾经有位程序开发的同事在QQ签名中写到:每解决一个bug,就给自己一个提升。的确,没有真正解决过无数的bug或问题的程序员,谈不上专家,谈不上高级程序员。而一个高级程序员正是从这种解决问题的过程中不断的历练自己,形成一套烂熟于心的问题解决思路,要自己强大的。
我也简单说说PHP程序员成长过程中经常遇到的一些问题,如果你一个也没遇到或很少遇到,那么您就是两个极端的人:要么初级入门,要么高级了,哈哈。
1,编码问题
2,PHP和SQL数据库执行效率问题
3,Session和Cookie域和加密解析问题
4,程序的执行顺序问题
5,程序编写的多环境适用问题
6,分类的构建和结构设计问题
7,字符串处理问题:正则表达式处理或简单PHP字符串处理函数来处理
8,各种模板引擎的编写局限性问题
9,PHP和web端数据交互问题(如ajax,接口调用等)
三、过硬的PHP基础知识
没有过硬的PHP基础知识,哪怕心态再好,问题解决的能力再强,也只能纸上谈兵。
过硬的基础知识会让你在项目开发过程中游刃有余。
我也简单说说哪些属于PHP工程师所应具备的基础知识(其实这些在招聘需求中很常见):
1,语法规则,这个不说了,这个不会,就没入门,赶紧买本书或找个网站补补
2,MYSQL各种sql语句的写法,增删改查基本的不说了,in,union,left,left join,as,replace,alter table,where的字段排序,各种索引建立的方法要特别熟悉
3,会自己搭建LAMP环境和WAMP环境,用集成软件一键式安装的不算。开发程序,对于自己开发的环境构建结构都不清楚,怎么排查问题?所以至少要会用对立的msi文件来安装自己需要的开发环境。安装3-5遍成功,这个算还行,还得会安装各种扩展,配置apache服务,知道各种参数设置的地方以及知道怎么设置各种参数;会linux操作系统的基本命令。
4,熟悉web方面的其他程序,因为PHP不是一个完全独立的东西,他是一个和其他语言和要素配合来完成一个项目的,如果对其他语言和要素不太熟悉,在团队协作过程中会非常吃力。这些其他要素包括:html,javascript,jquery,xml,http协议,正则表达式等
四、综合的互联网应用及项目管理知识和素养
1,见识广博,擅于学习
只顾自己专研,不看看、学学人家的做法,会像井底之蛙,难以看到广阔的天空的;所以,不要只顾着天天编程,学会抽点时间去看看一些大型开源系统的架构思路,以及大型商务网站的构建方式。向他们学习,补充自己的不足。
比如至少该晓得不同类型的开源系统有哪些吧,比如Uchome,dede,phpcms,wordpress,discuz,帝国等等
看多了,你也会总结发现一些常规性的思路,比如缓存的机制,比如模板机制,比如静态页面生成等等。
2,项目解决方案选型
不同需求,用不同的机构和选型。也就是常说的“水来土掩,兵来将挡”,有些架构固然强大,但是用于小型项目也会很吃力,就是杀机不用牛刀。根据需求来选型很重要。
选型不是随口就能定的,需要一个PHP程序员用于良好的储备,个人觉得至少需要以下储备,才具备选型能力:
熟练应用至少一个PHP框架,两-三个PHP开源系统;拥有自己的一套应用系统。
3,良好的项目管理素养
项目不是一直开发过程中,项目也会进入运营期,维护期,这样,具备良好的项目管理素养会使项目更加稳定,可控。
良好的项目管理素养包括:
良好的项目开发及维护习惯,记住:千万别为了一时的省力,造成后面多次的重复劳动。时时提醒自己将工作流程化,流程规划化,规范简单化。
良好的多人合作管理意识:项目不是一个人的,是多人协作的产物,也是服务于大众的,因而,要提升协作意识,让相关人员一同来完善项目。
4,丰富的项目开发应用经验
学理论,去考试或考核是学校里面的事儿,没有项目经验,就像满肚子经文,吐也难吐出。
这就需要实际的项目将自己的知识去学会转化为需求实现。
5,良好的开发规范
代码可读性强:对象,方法,函数的注释;一套成熟的命名规范;
代码冗余度底:程序和文件的重用性大,高内聚,低耦合
执行效率高:用最简单的程序流程实现应用需求,勿扰大弯子
代码安全性好:做一名警惕的程序员,任何有用户输入和上传文件的地方都得额外谨慎,也许一个程序员一时的疏忽就会导致一个系统顷刻间崩溃。
另外,多废话几句,PHP高级工程师,其实对于一个稍微能坚持,并喜欢PHP的来说不太难;难的是学会用工具来实现想法,不管是自己的想法还是他人的需求,学会转化。
这样,不防多了解些互联网发展的趋势,项目开发管理流程等等
很多面试,很多人员能力要求都有“PHP高级工程师的字眼”,如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望给初级或已经达到中级的PHP工程师一些帮助。
一、平静的心态
和所有程序员一样,要写一手好的程序,没有好的心态是不行的。
遇事不可急躁,不可轻言放弃。
在程序开发过程中,尤其是初中级程序员,写出的程序或架构会遇到很多问题,其中一些问题比较弱智,而有些问题根本没有碰到过,于是不可太过急躁,应该逐个排查问题的最初源泉,将其干掉。急躁的心态去开发系统是对项目的一种不负责。急躁会让人学会将就,让人学会逃避。而我个人北京两年的简单生活,给我其中一个最大的历练也就是:我的心态更加平静了。
相信,这样的心态也会有助于你其他方面的处事能力。
为什么将心态列入其中,我是想说明:他不同于销售的职能,需要很大激情澎湃,而是需要静静的思考。
二、一套烂熟于心的问题解决思路
曾经有位程序开发的同事在QQ签名中写到:每解决一个bug,就给自己一个提升。的确,没有真正解决过无数的bug或问题的程序员,谈不上专家,谈不上高级程序员。而一个高级程序员正是从这种解决问题的过程中不断的历练自己,形成一套烂熟于心的问题解决思路,要自己强大的。
我也简单说说PHP程序员成长过程中经常遇到的一些问题,如果你一个也没遇到或很少遇到,那么您就是两个极端的人:要么初级入门,要么高级了,哈哈。
1,编码问题
2,PHP和SQL数据库执行效率问题
3,Session和Cookie域和加密解析问题
4,程序的执行顺序问题
5,程序编写的多环境适用问题
6,分类的构建和结构设计问题
7,字符串处理问题:正则表达式处理或简单PHP字符串处理函数来处理
8,各种模板引擎的编写局限性问题
9,PHP和web端数据交互问题(如ajax,接口调用等)
三、过硬的PHP基础知识
没有过硬的PHP基础知识,哪怕心态再好,问题解决的能力再强,也只能纸上谈兵。
过硬的基础知识会让你在项目开发过程中游刃有余。
我也简单说说哪些属于PHP工程师所应具备的基础知识(其实这些在招聘需求中很常见):
1,语法规则,这个不说了,这个不会,就没入门,赶紧买本书或找个网站补补
2,MYSQL各种sql语句的写法,增删改查基本的不说了,in,union,left,left join,as,replace,alter table,where的字段排序,各种索引建立的方法要特别熟悉
3,会自己搭建LAMP环境和WAMP环境,用集成软件一键式安装的不算。开发程序,对于自己开发的环境构建结构都不清楚,怎么排查问题?所以至少要会用对立的msi文件来安装自己需要的开发环境。安装3-5遍成功,这个算还行,还得会安装各种扩展,配置apache服务,知道各种参数设置的地方以及知道怎么设置各种参数;会linux操作系统的基本命令。
4,熟悉web方面的其他程序,因为PHP不是一个完全独立的东西,他是一个和其他语言和要素配合来完成一个项目的,如果对其他语言和要素不太熟悉,在团队协作过程中会非常吃力。这些其他要素包括:html,javascript,jquery,xml,http协议,正则表达式等
四、综合的互联网应用及项目管理知识和素养
1,见识广博,擅于学习
只顾自己专研,不看看、学学人家的做法,会像井底之蛙,难以看到广阔的天空的;所以,不要只顾着天天编程,学会抽点时间去看看一些大型开源系统的架构思路,以及大型商务网站的构建方式。向他们学习,补充自己的不足。
比如至少该晓得不同类型的开源系统有哪些吧,比如Uchome,dede,phpcms,wordpress,discuz,帝国等等
看多了,你也会总结发现一些常规性的思路,比如缓存的机制,比如模板机制,比如静态页面生成等等。
2,项目解决方案选型
不同需求,用不同的机构和选型。也就是常说的“水来土掩,兵来将挡”,有些架构固然强大,但是用于小型项目也会很吃力,就是杀机不用牛刀。根据需求来选型很重要。
选型不是随口就能定的,需要一个PHP程序员用于良好的储备,个人觉得至少需要以下储备,才具备选型能力:
熟练应用至少一个PHP框架,两-三个PHP开源系统;拥有自己的一套应用系统。
3,良好的项目管理素养
项目不是一直开发过程中,项目也会进入运营期,维护期,这样,具备良好的项目管理素养会使项目更加稳定,可控。
良好的项目管理素养包括:
良好的项目开发及维护习惯,记住:千万别为了一时的省力,造成后面多次的重复劳动。时时提醒自己将工作流程化,流程规划化,规范简单化。
良好的多人合作管理意识:项目不是一个人的,是多人协作的产物,也是服务于大众的,因而,要提升协作意识,让相关人员一同来完善项目。
4,丰富的项目开发应用经验
学理论,去考试或考核是学校里面的事儿,没有项目经验,就像满肚子经文,吐也难吐出。
这就需要实际的项目将自己的知识去学会转化为需求实现。
5,良好的开发规范
代码可读性强:对象,方法,函数的注释;一套成熟的命名规范;
代码冗余度底:程序和文件的重用性大,高内聚,低耦合
执行效率高:用最简单的程序流程实现应用需求,勿扰大弯子
代码安全性好:做一名警惕的程序员,任何有用户输入和上传文件的地方都得额外谨慎,也许一个程序员一时的疏忽就会导致一个系统顷刻间崩溃。
另外,多废话几句,PHP高级工程师,其实对于一个稍微能坚持,并喜欢PHP的来说不太难;难的是学会用工具来实现想法,不管是自己的想法还是他人的需求,学会转化。
这样,不防多了解些互联网发展的趋势,项目开发管理流程等等
最近做的一个h5活动因为嵌入视频而发现了好多以前从未发现的问题,在测试的时候不同系统不同版本不同环境等多多少少都出现了些问题,搞得我也是焦头烂额的,不过好在最终问题都解决了,自己也学到了好多东西,为了方便以后用到参考,所以就记下来咯。现在有一个感悟就是当问题来临的时候不要觉得沮丧不要抱怨而要积极面对,有问题就说明自己做的不够好,而问题解决之后自己又能积累一些,又能学到一些新东西,这样不是挺好的吗。哈哈,下面我就简单记下这次h5项目中的问题。
1,webkit-playsinline playsinline 可用于防止ios用户视频播放自动全屏(safari是顽疾暂时没办法搞定),android是不自动全屏的。
2,$('.video').on('ended',function{}) 用于检测在视频播放完(不管是快进还是自动播完)之后执行某些操作。
$('.video').trigger('play')和document.getElementById('video').play 用于触发播放视频,由于autoplay在手机端为保护用户流量而被禁用的。
document.getElementById('video').pause 暂停
document.getElementById('demo').volume+=0.1 控制音量
3,audio不支持autoplay:iphone6下safari,三星(微信 第三方浏览器(chrome))
audio支持autoplay:iphone6下微信,三星自带浏览器
video不支持autoplay:iphone6下safari,三星(微信 浏览器 第三方浏览器(chrome))
video支持autoplay:iphone6下微信
以下方案可解决部分手机自动播放问题(当然还有好多不同手机包括不同系统版本还没测,以后会继续更新的)
1 function autoPlay(id){
2 var a = document.getElementById(id),
3 play = function{
4 a.play;
5 document.removeEventListener("touchstart",play, false);
6 };
7 a.play;
8 document.addEventListener("WeixinJSBridgeReady", function {//微信
9 play;
10 }, false);
11 document.addEventListener("touchstart",play, false); //触摸
12 }
13 autoPlay('audio');
5,然后就是这次遇到一个大bug,视频开始是隐藏的,但当我点击让它显示出来然后播放时,页面是显示出来了,但是有部分手机是只有声音而没有图像,这说明video没有显示出来就已经播放了,后来解决方案是再show一遍,而且而且不能给播放视频事件加延迟,否 则在有些手机也会遇到问题,可是到现在我差不多只能猜测这样的结果,因为实在是出现的没有规律,以后只能继续积累了。
6,还有以前很少用到unbind方法,但是这次发现你点击一个页面如果过快的话可能会二次触发的,所以如果只是想触发一次那就在触发结束后用unbind解绑事件。
上面基本上就是这次项目中遇到的问题,下面再继续延伸一些相关知识以便下次用到:
7,停止下载视频(由于当你暂停视频后有的浏览器可能还会继续下载视频):
var a = document.getElementById("");
a.pause;
a.src=''; 或 a.removeAttribute("src");
8,设定播放的时间点定位:
var a = document.getElementById('');
a.seekable.start(0); // 返回开始时间 (秒)
a.seekable.end(0); // 返回结束时间 (秒)
a.currentTime = 100; // 定位到第 100 秒播放
a.played.end(0); // 返回已经播放的时间长度(秒)
9,设定播放范围:
当在网页里嵌入视频/音频文件时, <audio>或<video>元素允许我们提供一些额外的信息来指定播放哪一时间段。实现的方法是在媒体文件后面跟随(“#”)格式的信息。如:
src="video.mp4#t=10,20" (从10s播放到20s)
src="video.mp4#t=10" (从10s播放到完)
src="video.mp4#t=,10" (从开头播放到10s)
这次先到这里吧,下次碰到再补充吧。
1,webkit-playsinline playsinline 可用于防止ios用户视频播放自动全屏(safari是顽疾暂时没办法搞定),android是不自动全屏的。
2,$('.video').on('ended',function{}) 用于检测在视频播放完(不管是快进还是自动播完)之后执行某些操作。
$('.video').trigger('play')和document.getElementById('video').play 用于触发播放视频,由于autoplay在手机端为保护用户流量而被禁用的。
document.getElementById('video').pause 暂停
document.getElementById('demo').volume+=0.1 控制音量
3,audio不支持autoplay:iphone6下safari,三星(微信 第三方浏览器(chrome))
audio支持autoplay:iphone6下微信,三星自带浏览器
video不支持autoplay:iphone6下safari,三星(微信 浏览器 第三方浏览器(chrome))
video支持autoplay:iphone6下微信
以下方案可解决部分手机自动播放问题(当然还有好多不同手机包括不同系统版本还没测,以后会继续更新的)
1 function autoPlay(id){
2 var a = document.getElementById(id),
3 play = function{
4 a.play;
5 document.removeEventListener("touchstart",play, false);
6 };
7 a.play;
8 document.addEventListener("WeixinJSBridgeReady", function {//微信
9 play;
10 }, false);
11 document.addEventListener("touchstart",play, false); //触摸
12 }
13 autoPlay('audio');
5,然后就是这次遇到一个大bug,视频开始是隐藏的,但当我点击让它显示出来然后播放时,页面是显示出来了,但是有部分手机是只有声音而没有图像,这说明video没有显示出来就已经播放了,后来解决方案是再show一遍,而且而且不能给播放视频事件加延迟,否 则在有些手机也会遇到问题,可是到现在我差不多只能猜测这样的结果,因为实在是出现的没有规律,以后只能继续积累了。
6,还有以前很少用到unbind方法,但是这次发现你点击一个页面如果过快的话可能会二次触发的,所以如果只是想触发一次那就在触发结束后用unbind解绑事件。
上面基本上就是这次项目中遇到的问题,下面再继续延伸一些相关知识以便下次用到:
7,停止下载视频(由于当你暂停视频后有的浏览器可能还会继续下载视频):
var a = document.getElementById("");
a.pause;
a.src=''; 或 a.removeAttribute("src");
8,设定播放的时间点定位:
var a = document.getElementById('');
a.seekable.start(0); // 返回开始时间 (秒)
a.seekable.end(0); // 返回结束时间 (秒)
a.currentTime = 100; // 定位到第 100 秒播放
a.played.end(0); // 返回已经播放的时间长度(秒)
9,设定播放范围:
当在网页里嵌入视频/音频文件时, <audio>或<video>元素允许我们提供一些额外的信息来指定播放哪一时间段。实现的方法是在媒体文件后面跟随(“#”)格式的信息。如:
src="video.mp4#t=10,20" (从10s播放到20s)
src="video.mp4#t=10" (从10s播放到完)
src="video.mp4#t=,10" (从开头播放到10s)
这次先到这里吧,下次碰到再补充吧。
情况一:在GET请求后面多加了一个空格,导致在在GET后面是两个空格。http协议真是太严格了,一点点差别都无法通过,返回505状态码:
http://blog.csdn.net/sing_sing/article/details/5972438
情况二:nginx模块配置导致:
nginx.conf
justwinit.conf
============================================
来自:https://segmentfault.com/a/1190000000420242
http://blog.csdn.net/sing_sing/article/details/5972438
情况二:nginx模块配置导致:
nginx.conf
justwinit.conf
============================================
来自:https://segmentfault.com/a/1190000000420242
Swift语言是一门仅仅次于PHP这门最好语言,没有这一的老二语言,弥补PHP的不足。
Unix/LinuxC技术 jackxiang 2016-4-1 10:23
[调侃苹果]Swift语言是一门仅仅次于PHP这门最好语言,没有这一的老二语言,弥补PHP的不足。当然Swift也确实可以去做Ios开发。。
背景:Swift是静态语言?听说这门子语言linux也默认安装支持啦啊,开源中国要用Swift重写整个网站了。Swift静态语言 + PHP动态语言,绝妙的组合。当然了。Swift性能很强的。
定位:Swift是静态语言,和Rust定位差不多的。系统级语言?胡说,无稽之谈,操作系统层面完全可以替换C,Swift可以直接导入C库,它还很胶水,能打能退,边打边跑,性格倔强。
概论:可以取代C来写一些底层软件,c写程序效率有点慢,不管怎么说,swift只是一门语言,作者的另外一个作品是LLVM,Swift的性能差不多是 C的50%左右,内存模型和C几乎一致。有人问swift 能搞底层吗?!完全可以。
比肩语言:GO语言个人觉得意义不大,标榜自己是系统级语言,实际上是个应用层语言,和PHP来抢市场。之前说 GO是替代C语言的 现在 swift又是替代GO的,swift 跟Go都是偏应用层,swift的作者年轻而go的作者有点老。
极客语言:Golang的语法也确实不是特别友好,比较Geek,Go语言的作者是以前Plan9那帮人搞的,go作者是超级大师级,大师毕竟是少数,人人不可能成大湿。
回归本质:c 是内功, 其他都是招式。C语言最朴实。随便拿个C的开源项目过来,只要你有C的功底都能改改。继续做二次开发。其他的语言,像PHP,Java,Go,C++ 你不花点时间研究下这个项目,完全上不了手。
结论,学不过来了 还是好好 学 PHP把 PHP才是世界最好的语言, PHP就你们这群老家伙在玩 新人也不少,不玩PHP玩什么,能赚钱就行 管他什么语言.
学习PHP之余,学下这门swift吧:
http://letsswift.com/2014/06/basic-operators/
http://letsswift.com/category/swiftguide/language-guide/page/3/
背景:Swift是静态语言?听说这门子语言linux也默认安装支持啦啊,开源中国要用Swift重写整个网站了。Swift静态语言 + PHP动态语言,绝妙的组合。当然了。Swift性能很强的。
定位:Swift是静态语言,和Rust定位差不多的。系统级语言?胡说,无稽之谈,操作系统层面完全可以替换C,Swift可以直接导入C库,它还很胶水,能打能退,边打边跑,性格倔强。
概论:可以取代C来写一些底层软件,c写程序效率有点慢,不管怎么说,swift只是一门语言,作者的另外一个作品是LLVM,Swift的性能差不多是 C的50%左右,内存模型和C几乎一致。有人问swift 能搞底层吗?!完全可以。
比肩语言:GO语言个人觉得意义不大,标榜自己是系统级语言,实际上是个应用层语言,和PHP来抢市场。之前说 GO是替代C语言的 现在 swift又是替代GO的,swift 跟Go都是偏应用层,swift的作者年轻而go的作者有点老。
极客语言:Golang的语法也确实不是特别友好,比较Geek,Go语言的作者是以前Plan9那帮人搞的,go作者是超级大师级,大师毕竟是少数,人人不可能成大湿。
回归本质:c 是内功, 其他都是招式。C语言最朴实。随便拿个C的开源项目过来,只要你有C的功底都能改改。继续做二次开发。其他的语言,像PHP,Java,Go,C++ 你不花点时间研究下这个项目,完全上不了手。
结论,学不过来了 还是好好 学 PHP把 PHP才是世界最好的语言, PHP就你们这群老家伙在玩 新人也不少,不玩PHP玩什么,能赚钱就行 管他什么语言.
学习PHP之余,学下这门swift吧:
http://letsswift.com/2014/06/basic-operators/
http://letsswift.com/category/swiftguide/language-guide/page/3/
Linux中Nginx的实时监控
Unix/LinuxC技术 jackxiang 2016-3-31 11:53
背景:现在流行nginx,于是安装一个监控可能没有必要,但是机器多可能还是有必要装一个agent之类的,这种小工具一般有个三五台服务器可以用用,大型的还得自己搞一套体系才行。
场景
想查看Nginx的实时状态信息,如哪些请求最频繁、哪些IP访问次数多 ……
例如服务器出现带宽持续很高,就需要看下现在哪些请求的流量大
ngxtop
ngxtop就是用来满足这些实时监控需求的,是个非常小巧实用的工具
ngxtop通过分析nginx的访问日志,使用类似top命令的界面实时展示出来
需要注意的是,ngxtop是查看实时状态信息,就是在执行ngxtop命令之后的统计信息,和top一样,不要理解为是对所有日志内容的统计
基本用法
$ ngxtop
结果形式如下
显示大图
实用案例
查看404状态的请求
$ ngxtop top request_path --filter 'status == 404'
查看响应流量最高的请求
$ ngxtop --order-by 'avg(bytes_sent) * count'
查看访问量最大的IP
$ ngxtop --group-by remote_addr
查看状态为4xx或者5xx的请求,同时显示status和http_referer信息
$ ngxtop -i 'status >= 400' print request status http_referer
查看以某字符串开头的请求
ngxtop --filter 'request_path.startswith("/wp")'
参数说明
-l: 指定日志文件的完整路径,默认情况下会读取nginx.conf里指定的访问日志路径
-f: 日志格式
-t : 更新频率,默认2秒
-g: 根据变量 group by,默认变量是 request_path
-o: 根据变量 order by,默认变量是 count
-h: help,详细的命令参数说明和使用方法,可以用这个参数查看帮助
内置变量
可以对以下内置变量进行操作,例如上面案例中的'status >= 400'
bodybytessend
http_referer
httpuseragent
remote_addr
remote_user
request
status
time_local
安装
ngxtop的安装需要依赖库 pip
然后使用pip安装 ngxtop
$ sudo pip install ngxtop
场景
想查看Nginx的实时状态信息,如哪些请求最频繁、哪些IP访问次数多 ……
例如服务器出现带宽持续很高,就需要看下现在哪些请求的流量大
ngxtop
ngxtop就是用来满足这些实时监控需求的,是个非常小巧实用的工具
ngxtop通过分析nginx的访问日志,使用类似top命令的界面实时展示出来
需要注意的是,ngxtop是查看实时状态信息,就是在执行ngxtop命令之后的统计信息,和top一样,不要理解为是对所有日志内容的统计
基本用法
$ ngxtop
结果形式如下
显示大图
实用案例
查看404状态的请求
$ ngxtop top request_path --filter 'status == 404'
查看响应流量最高的请求
$ ngxtop --order-by 'avg(bytes_sent) * count'
查看访问量最大的IP
$ ngxtop --group-by remote_addr
查看状态为4xx或者5xx的请求,同时显示status和http_referer信息
$ ngxtop -i 'status >= 400' print request status http_referer
查看以某字符串开头的请求
ngxtop --filter 'request_path.startswith("/wp")'
参数说明
-l: 指定日志文件的完整路径,默认情况下会读取nginx.conf里指定的访问日志路径
-f: 日志格式
-t : 更新频率,默认2秒
-g: 根据变量 group by,默认变量是 request_path
-o: 根据变量 order by,默认变量是 count
-h: help,详细的命令参数说明和使用方法,可以用这个参数查看帮助
内置变量
可以对以下内置变量进行操作,例如上面案例中的'status >= 400'
bodybytessend
http_referer
httpuseragent
remote_addr
remote_user
request
status
time_local
安装
ngxtop的安装需要依赖库 pip
然后使用pip安装 ngxtop
$ sudo pip install ngxtop