༒࿈背༙྇景༙྇:࿈༒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命令来操作。
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地址:
控制面板\所有控制面板项\网络和共享中心
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)

这次先到这里吧,下次碰到再补充吧。
情况一:在GET请求后面多加了一个空格,导致在在GET后面是两个空格。http协议真是太严格了,一点点差别都无法通过,返回505状态码:
http://blog.csdn.net/sing_sing/article/details/5972438
情况二:nginx模块配置导致:
nginx.conf


justwinit.conf


============================================
来自:https://segmentfault.com/a/1190000000420242
[调侃苹果]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/
背景:现在流行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
第一种方法:Command+M只能最小化一个窗口。
Macr如何快捷切换桌面 Mac切换桌面快捷键操作教程
第二种方法:把程序快速隐藏,切换到桌面,按F11,如下图:
Macr如何快捷切换桌面 Mac切换桌面快捷键操作教程
第三种方法:换桌面1 桌面2 可以用 command +1 或者 2来切换,实现窗口的切换。
Macr如何快捷切换桌面 Mac切换桌面快捷键操作教程
第四种方法:Fn+f11;苹果键+f3;触控板五个手指扩张,实现所有窗口最小化。

来自:http://www.pc841.com/article/20150311-43140.html

苹果扩展显示器:
https://www.macx.cn/thread-2048166-1-1.html
背景:生成一个唯一性的uuid有一个好处,那就是可以用它标识一个唯一的事物,或一次接口请求只能一次,统一了格式。
用redis队列吧
每次要唯一值都从redis里面拿
uniqid() 性能狠low
你这么做可以满足自己的需求
当前 机器IP+ pid+microtime+rand
pid是当前进程号





*************************************************************************************

也可以直接用sql语句生成如:
直接在insert语句中插入UUID作主键的用法(简便):
insert into Price( Name, UUID, Price, BID) values('FEIFEI_TEST', uuid(), 32, 3);

************************************************************************************

php生成uuid 来表示唯一码
uuid是什么?guid是什么?php如何生成uuid?(google 搜索相关内容时使用uuid + mysql得到的结果较uuid+php要多些)

这里有一篇关于UUID的说明 蛮详细

http://mlxia.javaeye.com/blog/279059

以下部分内容为转载:

我唯一还算熟悉的数据库就 算是MySQL了,大概使用MySQL的人,百分之九九以上的人会使用Autoincrement ID做主键,这是可以理解的,因为MySQL的自增ID效率很高,使用也很方便。那么剩下的百分之一的人使用什么做主键呢?可能是自己做的 KeyGenerator,也可能是我们下面要说的UUID。

据说在Oracle的圈子里,如果谁用自增ID做主键是要被鄙视的,主键最自然的选择就是UUID。我不了解Oracle,这些道听途说的结论是否正确不做承诺。

那么我们先看看什么是UUID?简单的说,UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。在UUID的算法中,可能会用到诸如网卡MAC地址,IP,主机名,进程ID等信息以保证其独立性。

如果你的MySQL版本不太老的话,键入 SELECT UUID(); 输出的就是UUID,如下:

mysql> select uuid();
+--------------------------------------+
| uuid()                               |
+--------------------------------------+
| 54b4c01f-dce0-102a-a4e0-462c07a00c5e |
+--------------------------------------+


现在大家应该对UUID有一个比较直观的认识了,我们来看看UUID的优缺点分别是什么。

优点:

能够保证独立性,程序可以在不同的数据库间迁移,效果不受影响。
保证生成的ID不仅是表独立的,而且是库独立的,这点在你想切分数据库的时候尤为重要。

缺点:

比较占地方,和INT类型相比,存储一个UUID要花费更多的空间。
使用UUID后,URL显得冗长,不够友好。

下面针对上述UUID的缺点说说我的看法,比较占地方这个缺点我不是很在乎,现在最不值钱的就是硬盘了,略过此条缺点无妨。至于说使用UUID后,URL 显得不友好,我觉得这多少是你的INT情结造成的惯性思维,其实,和INT类型相比,UUID才是最自然的主键选择,注意,我这里用的是自然这个形容词, 仔细体会一下你能理解我的意思。另外,很多时候,URL本身就不需要友好,比如,一个电子商务网站,按照INT友好的URL说法,她的订单URL大概是下 面这个形式的:/order.php/id/123,我要说明的是,这样是很友好,但是有些太友好了,友好的甚至不安全,比如说,我早晨下一个订单,发现 URL是/order.php/id/1000,晚上再下一个订单发现URL是/order.php/id/2000,那么我就可以估计出此网站一天的订 单数大致是1000左右,甚至能大体估计出它的销售额,而这些数据往往都是重要的商业秘密。使用UUID就没有这个顾虑。

效率?

如果上面说的UUID的所谓缺点都不成立的话,那么是否使用UUID做主键,唯一的问题就是效率了。据说在PostgreSQL等数据库里,都有专门的 UUID类型,在这样的数据库里,使用UUID做主键,效率没有任何问题,可惜在MySQL里没有这样的字段,如果想在MySQL里保存UUID做主键, 一般是使用CHAR(36)来模拟,因为不是一个原生的UUID类型,所以主键的效率到底如何有待测试,另外,UUID做主键的效率和UUID本身的算法 实现也有很大关系。

我本来想在我自己的电脑上插入1000000条数据测试一下看看来着,可惜一测试,硬盘灯就一直亮,让我很担心它会挂,虽然硬盘不值钱,但是我重要的数据都在上面,一旦坏了,损失就大了,所以,测试只好作罢。

至于在MySQL上使用UUID(用char(36)存储)做主键,效率到底如何,我也不知道,抱歉 -_-!!!

如何生成UUID?下面这种方法生成的貌似不是UUID,因为MD5实际上是可能存在重复值的(参考http://www.phpx.com/happy/archiver/tid-56636.html),况且使用随机更不能避免存在重复.所以应直接使用mysql中的uuid函数生成

de> function uuid($prefix = '')

     {

     $chars = md5(uniqid(mt_rand(), true));

     $uuid     = substr($chars,0,8) . '-';

     $uuid .= substr($chars,8,4) . '-';

     $uuid .= substr($chars,12,4) . '-';

     $uuid .= substr($chars,16,4) . '-';

     $uuid .= substr($chars,20,12);

     return $prefix . $uuid;

     } de>

在mysql中插入uuid使用mysql的uuid()函数

INSERT INTO Table(id,..) VALUES( UUID(), ...)

当然也可以用 SELECT UUID() 先得到一个uuid值再插入进去

题外:

可能相比较使用整型做主键,效率稍差,
另外一个问题是可能导致URL太长,比如显示某个id下的分类时
通常这样category.php?cid=2 但是现在可能是category.php?uuid=a93f16c5-9634-102c-824f-3ea0651c5b77
是否能更改为整型做主键

摘自 :http://blog.csdn.net/china_skag/article/details/7297957
1.DRY原则:不要重复(Don’t repeat yourself)--程序设计中一个最根本的原则就是要避免重复。许多编程结构(比如循环、函数、类等)的存在就是为了避免重复。

2.抽象原则:“每个在程序中有意义的功能片段应该只在源代码的一处地方实现”。

3.KISS(Keep it simple, stupid!)原则:简单性(避免复杂性)应该永远当作是一个重要的目标。写简单的代码,不但花费的时间少,错误少,而且修改起来也容易。

4.避免创建YAGNI(You aren’t going to need it)原则:只有当你需要的时候才去添加额外的功能,不需要就不要画蛇添足。

5.方法要最简单,效果要一样好:在编程时,我们需要问问自己“有没有最简单的完成任务的途径”,这有助于我们保持一直行走在简约设计的道路上。

6.不要让我思考:这实际上是由Steve Krug写的一本书的书名。关键要点是,代码应该尽可能地易于阅读和理解。如果阅读人需要大量的思考才能理解代码,那么或许这代码还需要被简化。

7.开/闭原则:软件实体(类,模块,函数等)在扩展时应该开放,在修改时应该关闭。换句话说,你写的类大家可以扩展,但不能修改。

8.为维护者写代码:值得写的代码要保证将来一定值得维护。未来的你由于经历的代码太多,也许再回过头来看这些代码的时候,也和其他人一样,已经成为了一个完全的陌生人。请记住,“写代码的时候,就假设将来要维护的人是个知道你住在哪里的暴力型精神病患者吧”!

9.最小惊讶原则:最小惊讶原则通常引用于用户界面方面,但这一原则也适用于编写代码。代码应该尽可能地不要让阅读者惊讶。遵守标准约定,注释说什么代码就做什么,命名是什么意思代码就是什么意思,尽可能地避免惊讶导致的潜在的负面影响。

10.单一职责原则:代码(如类或函数)的组成部分执行的应该是一个单一的明确的任务。

11.最小化耦合原则:代码的任何部分(代码块,函数,类等)都应该尽量减少对其他代码的依赖。这可以通过尽量不要使用共享变量来实现。“低耦合常常是计算机系统构造良好和设计良好的标志,并且当和高内聚力相结合的话,还可以大大支持可读性和可维护性的整体目标。”

12.最大化内聚原则:具有相似功能的代码应该放在同一个组件内。

13.隐藏实现细节原则:隐藏实现细节,允许在改变代码组件的实现的同时,最低限度地减少对使用该组件的其他模块的影响。

14.得墨忒耳定律:代码组件应该只和它们的直接关系(如继承的类,包含的对象,通过参数传递的对象等)沟通。

15.避免过早优化原则:除非代码开始工作,否则甚至就不要有优化的念头。只有当你必须要优化的时候,才能借助实战数据的帮助。“我们一定要有大局观,过早的优化是万恶之源”--Donald Knuth。

16.重用代码才是好代码:这和任何其他法则一样精辟。重用代码可以提高代码的可靠性,并减少开发时间。

17.关注点分离原则:不同的功能区域应该由明显的重叠最小的代码模块进行管理。

18.拥抱变化原则:这是Kent Beck写的一本书的副标题,也被认为是极端编程和通用敏捷方法的原则。许多其他原则都基于这个理念:你应该期待和欢迎变化。事实上,很多古老的软件工程法则,例如最小化耦合原则,就是和让代码变得更容易改变是直接相关的。无论你是不是一个极端编程的实践者,这种写代码的方法真的很有意义。
分页: 40/272 第一页 上页 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 下页 最后页 [ 显示模式: 摘要 | 列表 ]