背景:我想从一台远程机器上的一个用户上的文件拷贝到我的机器上来,可我不想用root拷贝,想新增加一个用户来拷贝,如何实现无 Permission denied,拷贝过来呢?
现象:权限不够,(如下:test这个目录是我加的一个test用户生成的)
/home/test/rpmbuild/RPMS/x86_64 这个我想scp下面的rpm包,我不是root,怎么样能实现拷贝?
[root@localhost x86_64]# scp rpm@192.168.101.***:/home/test/rpmbuild/RPMS/x86_64/mysql-5.7.12-160420134244.el6.x86_64.rpm /data/www/yum/centos/6/x86_64
rpm@192.168.101.227's password:    Permission denied
问题:test是我建立的一个test用户。假如test用户的密码我忘记了(我用root修改了下test的密码,再用test用户拷贝没有问题,正常),但我有root。
试图:我还是想用rpm这个专有用户来拷贝。
权限:
[root@localhost ~]# ls -l /home/ |grep test
drwx------. 3 test          test          4096 Mar 18 19:18 test
rpm用户进不了这个目录
办法: rpm的用户组改成 test
id test
uid=539(test) gid=539(test) groups=539(test)
xiangjiwu - IEG(33757)  17:11:42
usermod -G test,rpm rpm

rpm的用户组改成 test,实践如下:
[root@localhost x86_64]# id test
uid=539(test) gid=539(test) groups=539(test)
[root@localhost x86_64]# usermod -G test,rpm rpm
[root@localhost x86_64]# id rpm
uid=540(rpm) gid=540(rpm) groups=540(rpm),539(test)
不做下面的权限,也是一样会报权限错误的: Permission denied
chown -R test:rpm /home/test  //给test目录递归上rpm组,下面这一步也不可缺少。
chmod -R 750 /home/test   //用户7,属组5(4+1),读取+执行。
修改后权限如下:
[root@localhost x86_64]# ls -l /home/ |grep test
drwxr-x---. 3 test          rpm           4096 Mar 18 19:18 test

再拷贝,也就成功了:


总结:三个步骤实现,一个不能少,一个是入组,一个是给目录加上组的可读权限:


最后,感谢PHPers@南极里的xiangjiwu - IEG兄弟,Thanks~

斧正:
xiangjiwu - IEG(337**)  17:41:32
rpm用户加到test组了, 那 /home/test就不用改组,直接chmod -R 750 /home/test 就行了。
背景:写PHP扩展很麻烦,有用c写也有用c++写都麻烦,且难调错,有没有没一个框架实现,从框架看也就是输入和输出,以字符串char*传入,json输出,就很简单了,这儿介绍一个:Zephir提供了一种类似php的高级语言语法的方式,来自动生成扩展的c语言代码,使编写php扩展变得非常的简单。
阅读全文
背景:像unix或linux下的mysql和php-fpm都有一个xxx.sock文件,它是干嘛的呢?可以研究一下它。
  管道由于只能实现具有亲缘进程的进程间通信,使用受到了很大的限制,命名管道解决了这一问题。但是,无论是管道还是命名管道,都只能实现单向通信(在只创建一个管道的情况下)。
使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。这里所指的使用套接字实现进程间通信,是由将通信域指定为PF_UNIX来实现的。该函数的形式如下:
int socket(int domain, int type, int protocol);
socket函数中的domain参数用于指定通信域,domain参数取PF_UNIX时,表示创建UNIX域的套接字。使用PF_UNIX域的套接字可以实现同一机器上的不同进程间的通信。
调用bind函数实现了套接字与地址(这里是文件名)的绑定。bind函数的具体信息如下:
int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);
其参数my_addr为指向结构体sockaddr_un的指针,该结构体的定义如下:
    #define UNIX_PATH_MAX 108
    struct sockaddr_un {
    sa_family_t     sun_family;     /*PF_UNIX或AF_UNIX */
    char    sun_path[UNIX_PATH_MAX];        /* 路径名 */
    };
在该结构体中,sun_family为AF_UNIX。sun_path是套接字在文件系统中的路径名。
Unix域套接字是通过套接字API实现的简单的协议族。实际上它并不代表一个网络协议;它只能连接到同一台机器上的套接字。它提供了灵活的IPC机制。它的地址是它所在的文件系统的路径名,创建之后套接字就和路径名绑定在一起。用来表示Unix域地址的套接字文件能够使用stat()但是不能通过open()打开,而且应该使用套接字API对它进行操作。
Unix域套接字是面向连接的,每个套接字的连接都建立了一个新的通讯信道。服务器可能同时处理许多连接,但对于每个连接都有不同的文件描述符。这个属性使Unix域套接字能够比命名管道更好的适应IPC任务。

server.c


send.c


gcc server.c -o server
gcc send.c -o send

[root@iZ25dcp92ckZ sock]# ./server
Bind is ok
有client启动后server响应如下:
Recv: Counter is 1
Recv: Counter is 2
Recv: Counter is 3
Recv: Counter is 4

[root@iZ25dcp92ckZ sock]# ./send
Send: Counter is 1
Send: Counter is 2
Send: Counter is 3
Send: Counter is 4

最后,还发现那个设备文件server.sock 不能直接cat去读取,只能stat:
[root@iZ25dcp92ckZ sock]# cat server.sock
cat: server.sock: 没有那个设备或地址
[root@iZ25dcp92ckZ sock]# stat server.sock    
  文件:"server.sock"
  大小:0               块:0          IO 块:4096   套接字
设备:ca01h/51713d      Inode:16282       硬链接:1
权限:(0755/srwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2016-04-18 14:11:20.878641353 +0800
最近更改:2016-04-18 14:11:20.878641353 +0800
最近改动:2016-04-18 14:11:20.878641353 +0800
创建时间:-
实践摘录自:http://www.cnblogs.com/hnrainll/archive/2011/12/03/2274973.html
他说:“人之为学,心中思想,口内谈论,尽有百千义理,不如身上行一理之为实也”,“读书无他道,只须在‘行’字著力”(《颜习斋先生言行录》卷上)
在参加腾讯实习生2016面试时,有两道问题自己没有想清楚也思考的不是很明白,面试结束时后悔没有问正解是什么,回来后在搜索引擎上也没有搜到相关的问题。

第一道:"在多线程环境下,有大量并发, 有一个百万次出现一次bug, 如何调试这个bug。"

第二道是面试官给我的试卷上面的。"有一个类指针,指向类实例化的对象,在程序的运行过程中,这个类指针指向的对象崩溃了,这个类指针的虚函数表被破坏了,如何定位这个问题?"

所以,我想问下这两道题目该怎么回答, 谢谢谢谢!!!


知乎网友洋耗子答曰:

因为这些都是假设性问题,所以一般都只能说排查问题的思路:

问题一:

1:其实100万分之一的几率并不算很低。一个繁忙一点的服务,每秒一万个请求是很正常的(如果业务简单,还能更高)。所以百万分之一的复现概率,相当于在压力测试下几分钟就能出一次了。所以在道理上,如果有服务以这个几率出现bug,让它上线本身就是测试部门的失职。

2:反过来说,既然几分钟就能复现,那就在测试环境里压就好了,想怎么改就怎么改,想怎么打log就怎么打log。

3:假定测试环境的压测真的没出来,真的线上出现这样的问题(例如说压测的用例没有覆盖到)。首先考虑的是回滚服务到旧版,以确保正常业务不出问题。然后在线上环境提取某台机,用类似tcpcopy这样的软件导一份数据到测试环境中,来测试这个有问题的版本。这时候,既然是测试环境,你想怎么办都行(不影响线上服务)。

4:到了真正去分析bug了,那首先确定bug的类型。例如说如果能core dump的话相对好办一些,因为可以从core dump大概能看出或者猜出一些东西来。而如果并不core dump,而只是导致数据错乱的话,那就要做数据出入口的校验等。

5:在各顶级模块的入口出口打log,定位发生bug时所在的模块,然后逐步收敛。

6:确定这些模块以及关联影响的模块,单独提取这些模块出来,进行测试或者code review,最终确定问题。

问题二:

1:这类bug,一般都涉及越界操作。

2:一般这类bug,大多数都是可以通过静态code review解决的。既然知道是那个类,盯着用到这些类的实例的地方就行(包括这些类实例的前后几个对象,因为有可能是它们越界)。

3:一些工具,例如valgrind、purify之类的,也有可能有帮助(不一定肯定有用,但一般还是挺有用的)。

朋友!你也别纠结了,因为这两题答不出,拿不到实习不是你的错。
背景:T60P装了一个win10后安装一个secureCRT后,用tab时出现win10的默认系统声音,如何关掉?
把鼠标放电脑桌面空白处右键,然后点击弹窗下方的“个性化”进入个性化设置。
在个性化设置窗口点击“主题”选项进入主题设置。
在主题设置界面点击主题相关的设置下的“高级声音设置”进入声音设置界面。
在声音设置页面,点开声音方案下小长框右侧的展开符号“∨”,进入声音方案选项。
在展开的声音方案中点选“无声”,然后进行下一步确认操作。

选好声音方案后,先点击右下角的“应用”,再“确定”。此刻Win10系统提示音就关闭了。


图文:http://jingyan.baidu.com/article/d71306352f095b13fdf47591.html
先进入设置,再进入到系统 – 通知和操作 – 选择在任务栏上显示哪些图标.如何进入到设置有两种方法:
方法一:
(1)打开Win10开始菜单,即可在左下角看到“Settings(设置)”,点击即可打开“设置”应用。

方法二:
点击屏幕右下角任务栏托盘区中的“通知中心”图标打开“通知和操作中心”,在其中即可看到类似于Windows Phone“通知 + 操作中心”里的“All Settings(所有设置)”按钮。
点击即可打开“设置”应用。


进入设置后,再依次进入“系统 – 通知和操作”,点击“选择在任务栏上显示哪些图标”,把“通知区域始终显示所有图标”设置为“开”,这时你会发现下面的具体每个应用图标的设置状态都变成灰色不可设置,同时屏幕右下角的通知区域(系统托盘)中会显示所有的应用图标,向上箭头状的“隐藏”按钮也不见了,原来隐藏的图标都显示出来了。
如果你觉得所有的图标显示出来没有必要,那么也可以不把“通知区域始终显示所有图标”设置为“开”,只需把下面想要显示图标的应用(例如QQ)设置为“开”即可。这样设置为“开”图标就会显示在通知区域,而其它没必要显示的图标还是被隐藏起来。


在使用Windows10系统的过程中,突然发现屏幕右下角的任务栏通知区域的声音、网络、输入法、时钟、电源、操作中心等系统图标中的一个或几个不见了。

Win10任务栏通知区域的音量、网络、输入法图标不见了怎么办?参看:http://www.windows10.pro/win10-volume-network-input-method-icon-disappeared/
背景:在打php7.0.2下的apcu扩展包时,出现 Installed (but unpackaged) file(s) found,这块是因为它不光生成了.so外,还有一些涉及到.h的头文件在里面,可用于c开发,而我们只运行PHP不做开发,也就没有必要打进去,如果有必要则把它的文件及目录全路径写进%files里去,这儿我们就直接在install里删除掉这个目录下的所有文件及可,两种方法任取一个吧,都有实践且成功生成rpm无错误提示,如下。

方法一,来个保留文件且不报but unpackaged的PHP的igbinary扩展情况(视具体情况是删除还是添加选一个即可):
现象:RPM build errors:
    Installed (but unpackaged) file(s) found:
   /usr/local/php/include/php/ext/igbinary/igbinary.h
添加成功解决办法如下:
%files
%defattr(-,root,root,-)
%{php_extdir}/igbinary.so
# 防止出现:error: Installed (but unpackaged) file(s) found错误。                                                                                            
/usr/local/php/include/php/ext/igbinary/igbinary.h

生成的rpm包里有前面在%files里添加的这个文件,如下:
rpm -qpl /home/test/rpmbuild/RPMS/x86_64/igbinary-php55-1.2.1-160418145033.el6.x86_64.rpm
/usr/local/php/ext/igbinary.so
/usr/local/php/include/php/ext/igbinary/igbinary.h

假如想删除上面rpm包里的igbinary.so的igbinary.h文件,也就在install里把这个文件删除即可:


再次编译生成的rpm包里也就没有了那个.h文件如下:
[root@localhost SPECS]# rpm -qpl /home/test/rpmbuild/RPMS/x86_64/igbinary-php55-1.2.1-160418145849.el6.x86_64.rpm
/usr/local/php/ext/igbinary.so


方法二,下面是直接删除的解决办法,实践OK(视具体情况是删除还是添加选一个即可):




也就不报错了,也就解决了这个包不放到里面去且不用修改rpmbuild的配置,也不报错了,如下:
Wrote: /home/test/rpmbuild/RPMS/x86_64/apcu-php70-5.1.3-160418143835.el6.x86_64.rpm
rpm -qpl /home/test/rpmbuild/RPMS/x86_64/apcu-php70-5.1.3-160418143835.el6.x86_64.rpm      
/usr/local/php/ext/apcu.so

======================================================================================
编译打包apcu:
rpmbuild -ba php-7.0.5-extension-apcu-5.1.3.spec
出现如下报错提示,扩展代码编译打包出现如下提示:


阅读全文
背景:在网上找一个开要自启动的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


阅读全文
因为老是出现好像刚连接时出现行数没有对齐,得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
阅读全文
今天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
༒࿈背༙྇景༙྇:࿈༒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');

完美解决问题!
༒࿈背༙྇景༙྇:༒࿈这༙྇个༙྇༒࿈还༙྇是༙྇༒࿈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用户的登入密码。
背景: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
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
背景:经常看到PHP的一些扩展均是以tgz后续提供的,那这个包是怎么打出来的呢?
         linux中.tgz是.tar.gz的缩写,我们在解压.tgz文件时可直接使用tar命令来操作。
————————————————————————————————————————
.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
rc?.d中的?代表不同的运行级别,例如进入图形模式的运行级别是5,就是说在rc5.d中的S开头进程都会运行,网络多用户文本模式的运行级别是3,就是运行所有rc3.d中S开头的进程。
单用户模式就是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
背景:发现并没有压缩,查来查去是这个配置有问题写成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 )
初次接触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)

这次先到这里吧,下次碰到再补充吧。
分页: 16/248 第一页 上页 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 下页 最后页 [ 显示模式: 摘要 | 列表 ]