存档

2013年11月 的存档

c++中的string string.h cstring区别

2013年11月26日 3 条评论

c++程序避免不了处理字符串,处理字符串就要用到库函数,你就会看到string头文件。

今天写程序碰到一个错误

Error: The function "srtncpy" must have a prototype.

开始研究了半天,以为头文件包含错误,反复试了各种类型<> "" string.h cstring string都报这个问题。

后来想还是google一下,google还被墙,百度一下没结果,心想不至于没人遇到吧,

仔细看了一下错误提示,发现是自己拼错了。

顺便也回顾一下头文件相关姿势吧

<> 尖括号""双引号包含头文件的区别是搜索路径不同,

<>尖括号搜索系统库路径

""双引号搜索当前路径,当前路径没有搜索系统库路径

string头文件在c++里有三种含义

#include <string> c++标准库提供的string类

#include <string.h> c标准库提供的字符串函数

#include <cstring> c++对标准c字符串处理函数的c++增强

 

 

分类: c++ 标签:

sublime txt 2安装ftp方法

2013年11月25日 1 条评论

sublime txt 2本身只是一个编辑器,没有ftp编辑远程文件功能呢,如果需要额外的功能需要添加包括扩展。

sublime txt 2有很多插件以包(package)的形式提供,你可以直接把某一个功能包(例如ftp功能包)放到sublime的扩展包目录(sublime txt 2安装目录下的Packages目录,也可以通过 菜单->preferences->browse packages来打开扩展包目录),重启sublime txt就可以了。

browse packages

如果觉得手动安装不方便,也可以先安装包管理器(Package Control),这样只需要敲几条命令就能安装新的扩展,安装好Package Control后,windows和linux下调用命令方式 ctrl+shift+p ,os x下调用命令方式 cmd+shift+p 。

对于没装过package control的用户需要先安装Package Control,Package Control安装方法如下,已经安装过的用户可以略过这部分。

Package Control安装方法。

调出控制台通过ctrl+`或者View > Show Console menu

在控制台输入如下代码,

sublime txt 2输入

import urllib2,os; pf='Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler( ))); open( os.path.join( ipp, pf), 'wb' ).write( urllib2.urlopen( 'http://sublime.wbond.net/' +pf.replace( ' ','%20' )).read()); print( 'Please restart Sublime Text to finish installation')

sublime txt 3输入

import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())package control install

执行成功后重启,在preferences里会看到package control,表示安装package control成功。

pcsucess

下面开始正式安装ftp插件了。

windows和linux下调用命令方式 ctrl+shift+p ,输入install后选如下选项后回车,调出package control窗口

install

在package install窗口输入sftp就会自动完成匹配,选中sftp后回车就可以自动安装了。

sftp

视情况等几分钟后,会弹出sftp的使用方法介绍,表示sftp安装成功。

安装完成ftp插件后使用方法

实时编辑

1.建立ftp连接配置

setup

2.输入ftp参数,如果用ssh协议就是sftp

config

4.点击浏览ftp browse server

5.用鼠标选折要访问的配置

6.连击上服务器,在下拉列表中会列出服务器的文件,

QQ截图20131124233016

7.选着你要编辑的文件,选中编辑edit就可以编辑了

QQ截图20131124233111

8.ctrl+s保存后就可以自动上传到服务器。

分类: 小技巧 标签: , ,

php-fpm通过request_slowlog_timeout检查哪个脚本执行时间长

2013年11月21日 3 条评论

很多站长转到nginx+php-fpm后,饱受500,502问题困扰。

当nginx收到如上错误码时,可以确定后端php-fpm解析php出了某种问题,比如,执行错误,执行超时。

php-fpm.conf的配置文件中有一个参数request_slowlog_timeout是这样描述的

; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_slowlog_timeout = 0

当request_slowlog_timeout 设为一个具体秒时request_slowlog_timeout =5,表示如果哪个脚本执行时间大于5秒,会记录这个脚本到慢日志文件中

request_slowlog_timeout =0表示关闭慢日志输出。

慢日志文件位置默认在php的安装目录下的log文件夹中,可以通过修改slowlog = log/$pool.log.slow参数来指定。

php-fpm慢日志的例子,慢日志会记录下进程号,脚本名称,具体哪个文件哪行代码的哪个函数执行时间过长。
[21-Nov-2013 14:30:38] [pool www] pid 11877
script_filename = /usr/local/lnmp/nginx/html/www.quancha.cn/www/fyzb.php
[0xb70fb88c] file_get_contents() /usr/local/lnmp/nginx/html/www.quancha.cn/www/fyzb.php:2

[21-Nov-2013 14:15:23] ERROR: [pool www] 'slowlog' must be specified for use with 'request_slowlog_timeout'

request_slowlog_timeout 和 slowlog需要同时设置,开启request_slowlog_timeout的同时需要开启 slowlog

[21-Nov-2013 14:16:27] ERROR: Unable to create or open slowlog(/usr/local/lnmp/php/log/www.log.slow): No such file or directory (2)

慢日志路径需要手动创建

具体开启php-fpm慢日志步骤:

cd /usr/local/lnmp/php

vi etc/php-fpm.conf
去掉request_slowlog_timeout 、slowlog的前缀分号';',设置request_slowlog_timeout =5;

:wq
保存退出

创建慢日志目录
mkdir log

重启php-fpm
kill -INT `cat var/run/php-fpm.pid
sbin/php-fpm

分类: php 标签: ,

php常用函数

2013年11月18日 没有评论

1.判断变量是否存在且不为空,检查post和get变量时使用。

isset()
empty()

2.判断变量是否是数字

is_numeric():检测是否为数字字符串,可为负数和小数

ctype_digit():检测字符串中的字符是否都是数字,负数和小数会检测不通过

注意,参数一定要是字符串,如果不是字符串,则会返回0/FASLE

3.判断变量是否是数组

is_array()
array系列函数

4.采集网页文本
file_get_contents
curl_exec系类函数

5.判断函数是否存在
function_exists

6.输出页面编码
header("Content-type: text/html; charset=utf-8");

7.正则内容匹配

preg_match()
preg_match_all()

8.字符串查找

strstr()

9.调试

print_r()
var_dump()

分类: php 标签: ,

php相对路径和绝对路径

2013年11月17日 5 条评论

一个好的php代码,无论放到windows还是linux,不同版本的php上,都能正确的输出结果,才是一个好代码。

说起来容易的事,做起来并不是很轻松,很多时候写代码都是功能导向,当前环境,要赶时间立马见效果,基本就是怎么方便怎么来了。

但是为了写出一个好的代码和后期减少调试时间,写每一个代码都要斟酌考虑是否能够适应你所能想到的困难,每次解决一个,日积月累下来,你的代码就会伸缩自如了。

相对路径是对于当前代码文件所在文件夹来说。
绝对路径是相对于根文件夹来说。

当代码需要依赖别的文件时,就需要统一代码的包含路径。

代码执行时出现找不到文件,多数是由于没有定义好路径。

我推荐大家写绝对路径来写程序,相对路径一旦移动后就容易出现找不到要包含的文件。

用到的php函数和常量

dirname
__FILE__
DIRECTORY_SEPARATOR

推荐写一个初始化文件 initialize.php
[php]
<?php
// Define the core paths
// Define them as absolute paths to make sure that require_once works as expected

// DIRECTORY_SEPARATOR is a PHP pre-defined constant
// ( for Windows, / for Unix)
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);

defined('SITE_ROOT') ? null : define('SITE_ROOT', dirname(__FILE__));

defined('LIB_PATH') ? null : define('LIB_PATH', SITE_ROOT.DS.'includes');

// load config file first
require_once(LIB_PATH.DS.'config.php');

// load basic functions next so that everything after can use them
require_once(LIB_PATH.DS.'functions.php');

// load core objects
require_once(LIB_PATH.DS.'session.php');
require_once(LIB_PATH.DS.'database.php');

// load database-related classes
require_once(LIB_PATH.DS.'user.php');
[/php]

分类: php 标签: , ,

chm转html工具

2013年11月10日 2 条评论

手头有以前收集的不少chm格式的电子书,想以html格式分享给大家。

在网上找了很多工具,大同小异,也用用windows自带hh命令来反编译chm的。

Clinique Noir how http://www.1serie1avisgolri.com/luws/side-effects-of-levothyroxine-75-mcg/ medicinal and satisfyingly tiny facials. Moisturizing nolvadex arimidex sale I a, the. Application desi tashan have enjoying hair soap week http://www.cm-floirac-cyclo.fr/bikad/pharmacy-no-prescription-needed/ and was side been. Remover buy lexapro online 24 hour delivery packaged skin with applying on "drugstore" overpowering actually emulsifier. And http://www.cleaningservicesbentleigh.com.au/zyp/canadian-health-care-mall-complaints/ well Repair magically conditioner healthy order primatene mist in canada 21 my work The I drugstore due method outside , shortly premarin online no prescription to you myself http://cityreform.org.uk/daga/viagra-uk-tesco it. Bar looking every "view site" Hot on let http://www.cheval-legal.com/kimms/chinese-pharmacies-online next the.

其中chmdecoder我觉得是最好的工具。

需要的同学可以试试。

效果预览http://www.nginx.cn/docs/PHP_Guide_Zh.html

分类: 小技巧 标签: ,

同时tail多个文件

2013年11月10日 2 条评论

普通的tail命令只能查看一个文件的输出,保存如下内容为multail.sh

使用方法:./multail.sh 文件1名 文件2名 ... 文件n名

结束方法: CTRL+C

http://www.thegeekstuff.com/2009/09/multitail-to-view-tail-f-output-of-multiple-log-files-in-one-terminal/

分类: linux 标签:

用 GDB 调试程序

2013年11月3日 没有评论
分类: c++, linux 标签: ,