2011年11月

补码

补码 complement-number

最近搞webqq的研究,因为前台密码md5加密有太多了位运算(bit-wise operation),在将js代码转为c代码的过程中发现了一些问题。

c语言里面的位运算有与(&)或(|)非(~)异或(^)左移(<<)右移(>>)。

在32位windows xp,vc2005环境下,int和long都是4位(sizeof(int)==4)。所以我初步判断这样的环境下int和long没有区别。

int分为有符号(signed)和无符号(unsigned)。

当int为有符号时(默认)表示的范围是0x00000000(0)到0x7FFFFFFFF(2147483647)到0x800000000(-2147483648)到0xFFFFFFFF(-1)

当int为无符号时(默认)表示的范围是0x00000000(0)到0x7FFFFFFFF(2147483647)到0x800000000(2147483648)到0xFFFFFFFF(4294967295)

同理2个Bytes的short型数据类型是这样的:

signed short:0x0000(0)到0x7FFF(32767)到0x8000(-32768)到0xFFFF(-1)

unsigned short:0x0000(0)到0x7FFF(32767)到0x8000(32768)到0xFFFF(65535)

一个关于2进制在计算机中运算的形象例子:

11111 111   (进位)
  0000 1111  (15)
+ 1111 1011  (-5)
==================
  0000 1010  (10)

计算机系统中为啥非要使用补码呢?这个问题哥在上大学上汇编课的时候老师没有讲过,只是给你将转码的公式,你记住就有分了。其实大家都忘了补码存在的意义:二补数系统的最大优点是可以在加法或减法处理中,不需因为数字的正负而使用不同的计算方式。只要一种加法电路就可以处理各种有号数加法,而且减法可以用一个数加上另一个数的二补数来表示,因此只要有加法电路及二补数电路即可完成各种有号数加法及减法,在电路设计上相当方便。

总之优点降低电路设计的复杂度。

more info : http://zh.wikipedia.org/wiki/二補數

libcurl 无法解析的外部符号

仔细检查以下几点,防止“无法解析的外部符号”链接问题的出现。

  • 确保curllib项目的运行时库和引用curllib.lib程序的运行时库(c/c++ ->code generation)保持一致(比如都是/MDd)。

  • 确保curllib项目和引用curllib.lib项目的程序的字符集保持一致(比如都是:使用多字节字符集)。

  • 确保curllib项目在没有LDAP支持的情况下在preprocessor definition中加入:CURL_DISABLE_LDAP(/D)。

  • 编译curllib静态库时,请在preprocessor definition中加入:CURL_STATICLIB

预览视频explorer.exe崩溃

XP有 一个 影音文件 预览功能,该功能有 时候 能 导致大型AVI文件在预览时explorer.exe崩溃,还能导致影音文件无法删除,在 命令行中输入

REGSVR32 /U SHMEDIA.DLL

就可解决这两个问题

如果要恢复视频预览功能时只要输入

REGSVR32 SHMEDIA.DLL

我的php.ini模版

[PHP]
;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;
engine = On
zend.ze1_compatibility_mode = Off
short_open_tag = Off
asp_tags = Off
precision    =  14
y2k_compliance = On
output_buffering = On
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func=
serialize_precision = 100
allow_call_time_pass_reference = Off
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
;open_basedir =
disable_functions =
disable_classes =
; ignore_user_abort = On
; realpath_cache_size=16k
; realpath_cache_ttl=120
expose_php = On
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 30
max_input_time = 60
;max_input_nesting_level = 64
memory_limit = 1280M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
error_reporting  =  E_ALL
display_errors = On
display_startup_errors = On ; default Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On ;only effect in a debug compile
;report_zend_debug = 0
track_errors = Off ; Store the last error/warning message in $php_errormsg (boolean).
;xmlrpc_errors = 0
;xmlrpc_error_number = 0
;html_errors = Off
docref_root = "/phpmanual/"
docref_ext = .html
;error_prepend_string = "<div style='color=#ff0000;border:1px solid #00ffee'>"
;error_append_string = "</div>"
error_log = d:/wamp/logs/php_error.log
;error_log = syslog ; only for WinNT or higher
;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
;arg_separator.output = "&"
;arg_separator.input = ";&"
variables_order = "GPCS"
register_globals = Off
register_long_arrays = Off
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 8M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
;default_charset = "iso-8859-1"
;always_populate_raw_post_data = On
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
;include_path = ".:/php/includes"
;include_path = ".;c:\php\includes"
doc_root =
user_dir =
extension_dir = "d:/wamp/bin/php/php5.2.11/ext/"
enable_dl = On
; cgi.force_redirect = 1
; cgi.nph = 1
; cgi.redirect_status_env =
; cgi.fix_pathinfo=1
; fastcgi.impersonate = 1 ; IIS:1,Default:0
; fastcgi.logging = 0
;cgi.rfc2616_headers = 0
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
file_uploads = On
upload_tmp_dir = "d:/wamp/tmp"
upload_max_filesize = 20M
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
allow_url_fopen = On
allow_url_include = Off
;from="john@doe.com"
; user_agent="PHP"
default_socket_timeout = 60
; auto_detect_line_endings = Off
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
;extension=php_bz2.dll
extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_exif.dll
;extension=php_fdf.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_msql.dll
;extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
[Date]
;date.timezone =
;date.default_latitude = 31.7667
;date.default_longitude = 35.2333
;date.sunrise_zenith = 90.583333
;date.sunset_zenith = 90.583333
[filter]
;filter.default = unsafe_raw
;filter.default_flags =
[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1
[sqlite]
;sqlite.assoc_case = 0
[Pcre]
;pcre.backtrack_limit=100000
;pcre.recursion_limit=100000
[Syslog]
define_syslog_variables  = Off
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
sendmail_from = you@yourdomain
; For Unix only.
;sendmail_path =
;mail.force_extra_parameters =
[SQL]
sql.safe_mode = Off
[MySQL]
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_links = -1
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[bcmath]
bcmath.scale = 0
[browscap]
;browscap = extra/browscap.ini
[Session]
session.save_handler = files
session.save_path = "d:/wamp/tmp"
session.use_cookies = 1
;session.cookie_secure =
; session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly = 
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor     = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
;session.entropy_length = 16
;session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180 ;minutes
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[Assertion]
;assert.active = On
;assert.warning = On
;assert.bail = Off
;assert.callback = 0
;assert.quiet_eval = 0
[COM]
;com.typelib_file =
;com.allow_dcom = true
;com.autoregister_typelib = true
;com.autoregister_casesensitive = false
;com.autoregister_verbose = true
[mbstring]
;mbstring.language = Japanese
;mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
;mbstring.http_output = SJIS
;mbstring.encoding_translation = Off
;mbstring.detect_order = auto
;mbstring.substitute_character = none;
;mbstring.func_overload = 0
;mbstring.strict_encoding = Off
[gd]
;gd.jpeg_ignore_warning = 0
[exif]
;exif.encode_unicode = ISO-8859-15
;exif.decode_unicode_motorola = UCS-2BE
;exif.decode_unicode_intel    = UCS-2LE
;exif.encode_jis =
;exif.decode_jis_motorola = JIS
;exif.decode_jis_intel    = JIS
[Tidy]
;tidy.default_config = /usr/local/lib/php/default.tcfg
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
                

php报错链接到php manual

php报错链接到php manual

在写php程序的时候,有时候函数有误,php报错的函数紧跟着这个函数的链接,一般情况下我们打开都是不存在的页面。那是因为没有设置。

设置方法:

  1. http://php.net/docs.php下载php manual,格式选择many HTML file解压到本地 F:ookphpphp-chunked-xhtml 目录。
  2. php.ini加入以下设置:
docref_root = "/phpmanual/"
docref_ext = .html
  1. apache加入以下Alias设置:
#phpmanual
Alias /phpmanual "F:/book/php/php-chunked-xhtml/" 
<Directory "F:/book/php/php-chunked-xhtml/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order Deny,Allow
    Allow from all
</Directory>
  1. 重启apache服务器。点击[function.mysql_connect.html]自动跳转到对应函数的文档。