背景:
一)近来Firefox升级后,其原来Fiddle2的插件没有了,不知是没安上还是版本问题,反正是没有了,尽管Fiddler2原理就是代理可以用AutoProxy插件代替,但是没有那个Firefox下的FiddlerHook插件还真是感觉麻烦,于是想到了这个导入导出插件的办法,将原来的插件导出后在新的Firefox里安装上的一个想法,没有对FiddlerHook作实际导入,只是作了下导出,先作下记录如下:
二)选择Built for .NET 4的fiddler4,也就会安装firefox下的插件,也就是FiddlerHook会在安装fiddler4后,在启动firefox时会提示有插件要安装,位置在D:\Program Files\Fiddler2\FiddlerHook,而fiddler2好像没有firefox插件,同时在firefox的附加组件里也找不到,但是可以找其它firefox的插件替代它,但是没有原装的fiddler4的FiddlerHook插件好用。

一、如何导出?
可用FEBE加CLEO,CLEO不用其实也没什么,只是不太方便。

FEBE下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/febe/
DownLoad ur: https://addons.mozilla.org/firefox/downloads/file/260320/febe-8.0.4-fx.xpi?src=search

CLEO下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/cleo/
DownLoad ur: https://addons.mozilla.org/firefox/downloads/latest/2942/addon-2942-latest.xpi?src=search

你在FEBE选项里-选项-目录,设好目标地址就可以备份了。
在:工具-》FEBE-》执行备份。
      工具-》FEBE-》FEBE选项。
                
经实践:
选快速备份,先选择目录后,可以导出为一个xpi文件。
经实践,发现Firefox直接访问上面的链接地址无法访问,提示https安全问题,后来:
用chrome下载后,再直接拖动到Firefox的扩展里即可安装成功。

Fiddler的FiddlerHook相关信息:
https://jackxiang.com/post/7400/


在默认情况下,Fiddler不能监听Java HttpURLConnection请求。究其原因,Java的网络通信协议栈可能浏览器的通信协议栈略有区别,Fiddler监听Http请求的原理是在应用程序和操作系统网络通信层之间搭建了一个代理服务器,而Java的HttpURLConnection应该是绕过了这个代理服务器,因此Fiddler无法监听到Java HttpURLConnection请求。

解决Fiddler不能监听Java HttpURLConnection请求的基本思路就是设置代理服务器。

Fiddler官网给出的解决办法(见http://www.fiddler2.com/fiddler/help/hookup.asp#Q-JavaTraffic)是设置jvm参数,如

jre -DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888 MyApp
stackoverflow上的牛人们也给出了在Java代码中设置代理服务器的方法(见http://stackoverflow.com/questions/8549749/how-to-capture-https-with-fiddler-in-java),如

System.setProperty("http.proxyHost", "localhost");
System.setProperty("http.proxyPort", "8888");
System.setProperty("https.proxyHost", "localhost");
System.setProperty("https.proxyPort", "8888");
当然最好还是希望Fiddler自身能过增加监听Java HttpURLConnection请求的能力。

来自:http://www.2cto.com/kf/201308/234835.html
给我加上吧,分别对应下,一技术一讲解一文一武:
一)
JACK船长的航海日志——杰克·向: http://jackxiang.com
二)
向东(jack)的博客:  http://jackxiang.com
wp-video Wordpress视频插件
wp-video插件根据shortcode短代码功能制作的视频插件。
介绍
目前支持7大主流视频网站:优酷,土豆,56,搜狐,爱奇艺,腾迅,新浪,PPTV。 对PC和iOS平台均支持。在PC端,播放flash,iOS平台(包括mac电脑)以Html5播放。
对部分网站(优酷,爱奇艺,土豆)支持无广告。这里感谢YoukuAntiADs的修改播放器。

用法
注意:空间必须要支持cUrl
[video width="600" height="500"]http://v.youku.com/v_show/id_XMjU1MDc3Njg0.html[/video]

效果
可以到我的站点查看,作者网站:http://www.idayer.com/my-first-plugin-wp-video.html

历史
v1.0 支持优酷,土豆,56,搜狐,爱奇异,腾迅,新浪。
v1.01  应答大师厨房的要求增加对PPTV视频的支持
v1.1 更新播放器数据,添加插入按钮及插件说明。添加部分网站(优酷,爱奇艺,土豆)支持无广告。

来自:https://github.com/ineo6/wp_video
yum install traceroute -y
阅读全文
背景:我不是双系统,但是启动时有一个选项是ghost如果它是系统,就是双系统,家里电脑没有问题,单位电脑有经常一上班开机后就是黑屏的问题,重新启动多次,或在上电过bios后按esc才能进入,否则就黑屏,在网上查了下有专门软件,先试试。
阅读全文
在进行自动部署的时候,经常需要用脚本获取程序的最新版本号,下面是我的两个解决方案。

for SVN
# 获取XML版本的svn信息,这样可以避免不同语言的问题 __xml=`svn info --xml --incremental` # 我们可以获取到2个版本号,一个是最新版本库版本号,一个是自己的提交版本号。删除自己提交的版本号。 __revision=`echo "$__xml"|sed '/revision/!d'|sed '$d'` # 提取出版本号的数字部分 echo $__revision|sed 's/revision="\([0-9]\+\)">\?/\1/'
# 获取XML版本的svn信息,这样可以避免不同语言的问题
__xml=`svn info --xml --incremental`
# 我们可以获取到2个版本号,一个是最新版本库版本号,一个是自己的提交版本号。删除自己提交的版本号。
__revision=`echo "$__xml"|sed '/revision/!d'|sed '$d'`
# 提取出版本号的数字部分
echo $__revision|sed 's/revision="\([0-9]\+\)">\?/\1/'

for Git
Git采用的是SHA散列码作为版本号,因此它没有顺序的版本号。但我们可以通过统计Git版本库的提交次数来获得一个顺序版本号。

# 基准版本号默认是1,可以通过传递一个参数修改 get_version() { local __base=${1:-1} echo $((`git rev-list --all|wc -l` + $__base)) } get_version 7000
# 基准版本号默认是1,可以通过传递一个参数修改
get_version()
{
    local __base=${1:-1}
    echo $((`git rev-list --all|wc -l` + $__base))
}
get_version 7000

这个版本对网上搜到的那个被普遍转载的版本做了简化和调整。网上那个版本写得比较复杂,例如awk的使用没有必要,而且要统计所有提交,应该用 git rev-list --all 参数,而不是用 git rev-list HEAD。

本文链接:http://zengrong.net/post/1798.htm


Windows 下 Git 客户端的选择,TortoiseGit(乌龟git)保存用户名密码的方法:
windows下比较比较好用的git客户端有2种:

1. msysgit + TortoiseGit(乌龟git)

2. GitHub for Windows

github的windows版也用过一段时间,但还是不太习惯。所以目前仍然青睐与msysgit+乌龟git的组合。TortoiseGit在提交时总数会提示你输入用户名密码,非常麻烦。解决方案如下:

方法一:

设置 -> git 编辑本地 .git/config 增加
[credential]  
    helper = store

保存,输入一次密码后第二次就会记住密码了

方法二:

1. Windows中添加一个HOME环境变量,值为%USERPROFILE%

2. 在“开始>运行”中打开%Home%,新建一个名为“_netrc”的文件

3. 用记事本打开_netrc文件,输入Git服务器名、用户名、密码,并保存:

machine github.com       #git服务器名称
login user          #git帐号
password pwd   #git密码

在windows上建_netrc
copy con _netrc  #创建_netrc文件
#依次输入以下3行:
machine github.com    #git服务器名称
login username        #git帐号
password password     #git密码

在最后一行后输入ctrl+z,文件会自动保存并退出

再次在git上提交时就不用重复输入用户名密码了

来自:http://www.etosun.com/post/130
背景:svn pc客户端项目下的版本号发现其svn log号低于svn update的版本号的情况原因及分析,以及用哪个版本号作为项目发布版本号的最终版本。
经过排查,其原因有二:
1、自己所处项目是处在一个项目集中的一个,根下其它项目(于我同级)地方更新后,我权限不够不知道,用客户端工具也好,终端工具也好都无法看到update的最高版本号(整个根下的最高基线)。
2、update的版本号是全局版本号,而自己项目的svn log则是自己项目的版本号,以它为准才相对靠谱些。
阅读全文
FreeSbSD安装Nextcloud:
http://rasyid.net/2015/12/12/how-to-install-php-7-from-source-tar-gz-with-apache-on-freebsd-10-2/
https://project.altservice.com/issues/847

FreeBSD下用Port安装NextCloud:
https://www.freshports.org/www/nextcloud

========================================================================================
tail -f /data/htdocs/xdxp.cn/data/owncloud.log
Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set ‘always_populate_raw_post_data’ to ‘-1’ in php.ini and use the php://input stream instead. in Unknown on line 0

vi php.ini
将下面注释去掉,重启fpm

;always_populate_raw_post_data = -1

service php-fpm restart


=========================================================================================
文件目录 (/data/www/xdxp.cn/data) 可以被其他用户读取
请更改权限为 0770 以避免其他用户查看目录。
chmod -R 0770 /data/www/xdxp.cn/data


update-notification.js 里面是更新的JS文件,提示更新用的。

=========================================

最后从:8.2.11--V:wncloud-9.0.10,只留下config和data文件夹后,

安全及设置警告
#sudo -u www /usr/local/php/bin/php ./occ upgrade

升级出现:
由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。
Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)
The "Strict-Transport-Security" HTTP header is not configured to at least "15768000" seconds. For enhanced security we recommend enabling HSTS as described in our security tips.

回退:8.2.11!!!

============================================================================================

Q:PHP 似乎没有设置好查询的系统环境变量。 用 getenv(\"PATH\") 测试只返回一个空值。
请检查PHP配置说明和服务器的 PHP 配置的 安装文档 ↗,使用 PHP-FPM 时尤其如此。
PHP模块'文件信息'丢失. 我们强烈建议启用此模块以便mime类型检测取得最佳结果.
[这个老外真是,搞不明白:]Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)
A:etenv问题:在php-fpm.conf 中加上 env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin重启一下php-fpm就可以了
From:https://bbs.vpser.net/thread-13442-1-1.html

PHP模块'文件信息'丢失:自己参考:https://www.vpser.net/manage/lnmp-php-install-ext.html 安装上phpinfo模块
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP模块'文件信息'丢失. 我们强烈建议启用此模块以便mime类型检测取得最佳结果."

Some files have not passed the integrity check. :估计可能是与禁用函数有关,按置顶帖去掉scandir函数试试

#grep -r "由于 WebDAV 接口似乎被破坏" ./
./core/l10n/zh_CN.json:    "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。",
./core/l10n/zh_CN.js:    "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。",

Your Web server is not yet set up properly to allow file synchronization
“Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken.”
有关这个问题,在ownCloud官方论坛有详细说明:How to fix CalDAV|CardDAV|WebDAV problems
From:https://www.orgleaf.com/2158.html


为进行避免较大的安装时超时,你可以在你的安装目录下运行下面的命令:
./occ upgrade#sudo -u www /usr/local/php/bin/php ./occ upgrade
SQLSTATE[08S01]: Communication link failure: 1153 Got a packet bigger than 'max_allowed_packet' bytes
Update failed
Maintenance mode is kept active
Reset log level
max_allowed_packet = 256K  ==》max_allowed_packet = 8M
Resolve: http://blog.csdn.net/petter7226/article/details/51239901

步骤一,手动升级ownCloud到8.2.11:

rsync -a /data/htdocs/xdxp.cn/ /data/htdocs/xdxp.cn_bak`date +"%Y%m%d"`/  
wget  -P /data/htdocs "https://download.owncloud.org/community/owncloud-8.2.11.tar.bz2"  
mkdir -p /data/htdocs/owncloud_latest  
rm -rf /data/htdocs/owncloud_latest/*  
tar -C /data/htdocs/owncloud_latest -xjf /data/htdocs/owncloud-8.2.11.tar.bz2  
rsync --inplace -rtv /data/htdocs/owncloud_latest/owncloud/. /data/htdocs/xdxp.cn/.  
chown -R www:www /data/htdocs/xdxp.cn
chmod -R 755 /data/htdocs/xdxp.cn
rm -rf /data/htdocs/owncloud-8.2.11.tar.bz2  
rm -rf /data/htdocs/owncloud_latest/owncloud



步骤二,再再升最新版本是9.0.9,精简成脚本和浏览器访问,脚本收集如下:

rsync -a /data/htdocs/xdxp.cn/ /data/htdocs/xdxp.cn_bak`date +"%Y%m%d"`/  
wget  -P /data/htdocs "https://download.owncloud.org/community/owncloud-9.0.9.tar.bz2"  
mkdir -p /data/htdocs/owncloud_latest  
rm -rf /data/htdocs/owncloud_latest/*  
tar -C /data/htdocs/owncloud_latest -xjf /data/htdocs/owncloud-9.0.9.tar.bz2  
rsync --inplace -rtv /data/htdocs/owncloud_latest/owncloud/. /data/htdocs/xdxp.cn/.  
chown -R www:www /data/htdocs/xdxp.cn
chmod -R 755 /data/htdocs/xdxp.cn
rm -rf /data/htdocs/owncloud-9.0.9.tar.bz2  
rm -rf /data/htdocs/owncloud_latest/owncloud



=============================================

不用删除啥文件,一步一步按下面操作就是了:
第一大步:
rsync -a xdxp.cn/ xdxp.cn_bak`date +"%Y%m%d"`/
wget https://download.owncloud.org/community/owncloud-8.2.5.tar.bz2
mkdir owncloud_latest
文件夹存在后,则:
rm -Rf owncloud_latest/*
tar -C owncloud_latest -xjf owncloud-8.2.5.tar.bz2

[root@jackxiang htdocs]# rsync --inplace -rtv owncloud_latest/owncloud/. xdxp.cn/.
sent 99396465 bytes  received 203530 bytes  4632557.91 bytes/sec
total size is 98794138  speedup is 0.99

chown -R www:www xdxp.cn

第二大步:
访问xdxp.cn 后会提示wait 一会儿,作下升级,后重新刷新即可。

刷新时会提示:
ownCloud 将会更新到版本 8.0.2。
在继续之前,请确认数据库、配置文件夹和数据文件夹已经备份。
为避免更大的安装演示,你能在你的安装目录下面运行这些命令:
./occ upgrade
———————————————————————————————
root@119.10.6.**:/data/htdocs/xdxp.cn# ./occ upgrade
PHP is configured to populate raw post data. Since PHP 5.6 this will lead to PHP throwing notices for perfectly valid code.
To fix this issue set <code>always_populate_raw_post_data</code> to <code>-1</code> in your php.ini

vi /usr/local/php/etc/php.ini
; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is
; to disable this feature. If post reading is disabled through
; enable_post_data_reading, $HTTP_RAW_POST_DATA is *NOT* populated.
; http://php.net/always-populate-raw-post-data
;always_populate_raw_post_data = On    //打开这个
==========================================================================
打这个有啥用呢,查了一这个always_populate_raw_post_data和这个WebDAV有关:
允许在 PHP 脚本中处理 WebDAV 的 HTTP 请求(例如 PROPFIND,PROPPATCH,MOVE,COPY 等)。此选项在 PHP 4.3.2 以后便不存在了。如果要取得这些请求的 POST 数据,也要设定 always_populate_raw_post_data。
WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。


附录,升级后代码有兼容性的问题:
==> php-error.log <==
[10-Apr-2015 02:42:49 UTC] PHP Fatal error:  Class OCA\Contacts\Share\Addressbook contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (OCP\Share_Backend::isShareTypeAllowed) in /data/htdocs/xdxp.cn/apps/contacts/lib/share/addressbook.php on line 1

成功解决办法来源链接:
https://datenfahrt.org/wiki/blog/2015/03/owncloud-update-notizen-7.0.4-to-8.0.2
操作步骤如下:
实践如下后,显示正常,升级成功(这一块owncloud感觉好像在兼容性上不是太好):
mysql> desc oc_appconfig;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| appid       | varchar(32) | NO   | PRI |         |       |
| configkey   | varchar(64) | NO   | PRI |         |       |
| configvalue | longtext    | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+


$ mysql owncloud-db-name -u username -p
mysql> update oc_appconfig set configvalue="no" WHERE appid="contacts" AND configkey="enabled";
mysql> update oc_appconfig set configvalue="no" WHERE appid="calendar" AND configkey="enabled";
mysql> update oc_appconfig set configvalue="no" WHERE appid="contacts" AND configkey="enabled";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update oc_appconfig set configvalue="no" WHERE appid="calendar" AND configkey="enabled";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0



ownCloud是一款保持更新的开源私有云系统,基于PHP5开发的。支持SQLite、MySQL、Oracle以及PostgreSQL等数据库。本文介绍的是如何手动升级的步骤。
请务必遵循以下原则升级:
1、备份原文件夹;
2、停用所有第三方apps;
3、解压最新版的安装包,覆盖到原文件夹中;
4、确认所有的文件和文件夹权限是正确的;
5、打开ownCloud首页,升级自动进行。
假设将ownCloud安装在web根目录下的./ownCloud/文件夹中,SSH登录,进入web根目录后按照如下步骤进行升级:
1、使用rsync命令的存档模式备份./ownCloud/文件夹(该模式可以保留文件权限、拥有者、时间戳等信息),执行命令如下:
rsync -a owncloud/ owncloud_bkp`date +"%Y%m%d"`/
2、官网下载最新版ownCloud,执行命令如下:
wget http://download.owncloud.org/community/owncloud-latest.tar.bz2
3、将最新版的压缩包解压到./owncloud_latest/文件夹,执行命令如下:
mkdir owncloud_latest
tar -C owncloud_latest -xjf owncloud-latest.tar.bz2
4、使用rsync命令覆盖./ownCloud/文件夹,执行命令如下:
rsync --inplace -rtv owncloud_latest/owncloud/ owncloud/
5、删除安装包(安全起见),执行命令如下:
rm -rf owncloud-latest.tar.bz2 owncloud_latest/
注意事项:
1、如果你已经上传了大量的数据,请在升级时确认硬盘空间是否足够;
2、在后台点击升级,只会下载最新版安装包到backup文件夹,并不会自动安装,同时会将config.php中的maintenance mode修改为true。
这就会导致一个错误提示“OwnCloud is in maintenance mode”,因此在手动升级后,需要将./owncloud/config/config.php中的maintenance mode从true改为false,再打开首页才能顺利升级;
3、升级到最新版的ownCloud后,经过我的测试(测试环境:CentOS6.4_x86, LAMP一键安装包),是可以很好的支持中文的(目录名和文件名皆可)。
参考原文:http://doc.owncloud.org/server/5.0/admin_manual/maintenance/update.html
我归纳其文提出了以下三个主要观点: 
     (一)很多人喜欢把自己的命运寄托在一个组织或者别人身上,殊不知,在移动互联网高速发展的这个时代,任何中心和机构、组织、权威都有被解构和颠覆的风险,一个组织和他人的防御能力都有限时,这种寄托根本没有任何抗风险能力。
          脆弱的对立面不是坚强,而是反脆弱,杀不死我的,使我更强大。既然黑天鹅事件无法避免,那就想办法从中获取最大利益,每一件事情都会从波动得到利益或承受损失。脆弱是指因为波动和不确定而承受损失。反脆弱则是让自己避免这些损失,甚至因此获利。
    
    (二)这两天,在微博上讨论激烈的一则消息是:被微软收购的诺基亚大幅裁员,仅北京有2400余名人员裁撤,相关合作单位也有数千人遭受波及。很多员工纷纷组织抗议,看着那些年龄颇长、挂着工牌、拿着印着抗议口号A4纸、手拿iPhone的诺基亚员工,让人有种深深的悲凉感。

    (三)为什么当危机发生时貌似很稳定的高级白领,会变得一下子束手无策?根本原因就在于高级白领意识里平时会刻意规避不确定性,极度厌恶风险。在数十年日复一日的工作中,他的工作技能和成长在某个时间其实已经停止增长了,抗风险能力大大下降,而且他只是一个环节的很小的切片,对组织形成了高度的依赖性。一旦他的工作有波动,他用来应付风险的能力是很有限的。看起来很稳定的工作其实很脆弱,因为他不仅没有反脆弱能力,甚至丧失了基本的应付能力。
阅读全文
孝心无价
毕淑敏
    我不喜欢一个苦孩求学的故事。家庭十分困难,父亲逝去,弟妹嗷嗷待哺,可他大学毕业后,还要坚持读研究生,母亲只有去卖血……我以为那是一个自私的学子。求学的路很漫长,一生一世的事业,何必太在意几年蹉跎?况且这时间的分分秒秒都苦涩无比,需用母亲的鲜血灌溉!一个连母亲都无法挚爱的人,还能指望他会爱谁?把自己的利益放在至高无上位置的人,怎能成为为人类献身的大师?
   我也不喜欢父母重病在床,断然离去的游子,无论你有多少理由。地球离了谁都照样转动,不必将个人的力量夸大到不可思议的程度。在一位老人行将就木的时候,将他对人世间最后的期冀斩断,以绝望之心在寂寞中远行,那是对生命的大不敬。
   我相信每一个赤诚忠厚的孩子,都曾在心底向父母许下“孝”的宏愿,相信来日方长,相信水到渠成,相信自己必有功成名就衣锦还乡的那一天,可以从容尽孝。
   可惜人们忘了,忘了时间的残酷,忘了人生的短暂,忘了世上有永远无法报答的恩情,忘了生命本身有不堪一击的脆弱。
   父母走了,带着对我们深深的挂念。父母走了,遗留给我们永无偿还的心情。你就永远无以言孝。
   有一些事情,当我们年轻的时候,无法懂得。当我们懂得的时候,已不再年轻。世上有些东西可以弥补,有些东西永无弥补。
   “孝”是稍纵即逝的眷恋,“孝”是无法重现的幸福。“孝”是一失足成千古恨的往事,“孝”是生命与生命交接处的链条,一旦断裂,永无连接。
   赶快为你的父母尽一份孝心。也许是一处豪宅,也许是一片砖瓦。也许是大洋彼岸的一只鸿雁,也许是近在咫尺的一个口信。也许是一顶纯黑的博士帽,也许是作业簿上的一个红五分。也许是一桌山珍海味,也许是一只野果一朵小花。也许是花团锦簇的盛世华衣,也许是一双洁净的旧鞋。也许是数以万计的金钱,也许只是含着体温的一枚硬币……
   但“孝”的天平上,它们等值。
   只是,天下的儿女们,一定要抓紧啊!趁你父母健在的光阴。
解析UC/OS-II时钟中断技术阅读全文
  最近一直在看《Linux程序设计(第3版)》,照着书上的代码原封不动地敲上去,编译后就出现了à警告:隐式声明与内建函数’exit’不兼容。
警告:隐式声明与内建函数‘exit’不兼容



       原因其实很简单了,没有把stdlib.h包含进来,加上就没问题了。后来google搜索的时候发现网上很多人有这个问题,今天来记下这个问题的解决方案。

以此类推,编译后出现警告:隐式声明与内建函数’XXX’不兼容的问题所在都是因为没有包含相应的头文件,加上就OK!

来自:http://blog.csdn.net/monkey_d_meng/article/details/5565667
背景:时下都流行enum类型的使用tinyint,那enum就真没有用的价值了么?
PHP低级编程的兄弟是这样来看这个问题的,我作下笔录如下,期望能客观的理解这个enum字段的优点及缺点:
膘哥观点:
    enum有优点。但个人觉得。。。缺点更多,客观的讲:优点主要是在建数据 库的时候就可以把一些值给规范好。缺点是。。enum不适合PHP。主要是PHP是弱类型,如:你insert into ..... set a= 1,你没法知道你是想 a= '1' 还是 a= 1(a='1'是插入值1,a=1是插入enum的第一个值,尤其php弱类型的,如果int的,很少有人在sql里加双引号。),这是PHP和mysql 在使用enum 最大的问题。所以。。安心点啦。干脆点直接tinyint。

单曲观点:
    我觉得没什么优点,对数字型的enum,简直就是梦魇,boolean  tinyint(1) 0,1 status  tinyint(1)  1,2,3,4,5,6..tinyint欢淫你~~。如:audit_result enum(1,2,3),set audit_result = 1;...容易出现膘哥所说的混淆。

简单观点:
   少用,一般都是用tinyint替代。

天枫观点:
   我觉得除了状态直观  没什么优点,我一般直接int,tinyint([1or2or3]) 到底有啥区别?(后面会简单探讨下,这里面的1or2or3区别。)

中庸观点:
   a=1是插入enum的第一个值,尤其php弱类型的,如果int的,很少有人在sql里加双引号,基本上是不加引号的。

竖琴螺观点:
   六种情况就:tinyint(1)  -1,-2,1,2,3,4

上面各种观点重点集中在PHP这种弱类型语言对引号不重视,
程序员不写容易引起插入的语句不是自己想要的结果的问题,
容易出现int时没有用引号导致插入了新值而不是定的那个值:


结论:要插入enum的值,字段必须加引号,不加引号当然是数字,数字就是key,不是value。
规劝:
1)enum是整型这样的错误很容易发生,尤其是php弱类型的,一般新来一个人,没注意enum类型,就会犯错。
2)数据库说明清楚的话,或者可选择的全是字符串的话,还没什么,但是里面有数字,难免有新手犯错,养成加引号的习惯很重要。
最终结论:
历史原因,要把enum改成tinyint程序改动太大了,用了的没必要改·~,以后新建的时候,尽量使用tinyint就好。
这种字段的重复内容过多的,索引建不建,关系不大,这种在mysql叫索引的势太低,其查询效果不太好:(英文是这么翻译的:https://jackxiang.com/post/1405/)。
————————————————————————————————————————————————————————————————————
tinyint(1)和tinyint(4)一样的,都是-127到128或者0到256。unsigned属性全是正,和c语言unsigned int有点类似:
tinyint(1)   -128 ~ 127
tinyint(1) unsigned  0 ~ 255

为何表示的最大正数比最小负数的绝对值少1呢?
第一位是符号位,1表示负数
所以负数可以到128,正数只能到127
-128正127
如:0111 1111  正数  ,负数 1111 1111
提问:
Mysql里int(1)和int(11)差别很大的,mysql的int,有个属性 ,UNSIGNED ZEROFILL  后面的ZEROFILL,就是有定义的位数不够则用零补齐对齐一下(这儿可能涉及到索引的性能罢):int,  长度(M)=5, 属性=UNSIGNED ZEROFILL(无符号,用0来填充位数),00001,00002。
但这个tinyint呢,tinyint(1)和tinyint(4)一样的?
看这文章后:http://blog.csdn.net/lysygyy/article/details/5983433
我估计:mysql这块对一个字节不像int这种四个字节要进行对其前部分进行部分字节索引,如果说tinyint(1)和tinyint(4)是一样的表示范围情况下,但mysql对tinyint数字长度位数作了可设置的限定,从理论上说其存在硬盘里的字节是不一样才是合乎逻辑的,这块估计还是为了对字节进行对齐方便索引等,以提升效率为主罢,l如:ike keyword%    索引有效,如果统一对齐,索引效果会不会更好呢?我也只是猜测。
————————————————————————————————————————————————————————————————————
在网上找了下这个enum的mysql的大体实现如下:
一)enum的存储原理我仔细查看了下手册。是这样的:
在建立这个字段时,我们会给他规定一个范围比如enum('a','b','c'),这时mysql内部会建立一张hash结构的map表,类似:0000 -> a,0001 -> b,0002 -> c。
当我插入一条数据,此字段的值位a或b或c时,他存储在里面的不是这个字符,而是对应他的索引,也就是那个0000或0001或0002。
同样,enum在mysql手册上的说明:
ENUM('value1','value2',...)
1或2个字节,取决于枚举值的个数(最多65,535个值)
除非enum的个数超过了一定数量,否则他所占的存储空间也总是1字节。


二)tinyint:
类型  字节  最小值  最大值
      (带符号的/无符号的)  (带符号的/无符号的)
TINYINT  1  -128  127
他的最小存储所占空间也是1字节。


最后,Enum,既然要用它,就不必要使用什么0,1,2来代替实际的字符串了。甚至中文字符串。他并不会对数据库性能进行多余开销。因为对于它来说,你使用'0','1','2'和'张三','李四','王五'数据表所占的存储空间一样。但是考虑到我们实际应用时数据需要从db服务器回传到web app,所以在网络传输时,当然还是尽可能的传输小数据比较好。所以如果很在意这些,还是不用它好了。


mysql中关于bit,enum,tinyint三种数据类型的差别 :
http://blog.csdn.net/shadowsniper/article/details/7071004

慎用mysql的enum字段:
http://www.neatstudio.com/show-1498-1.shtml
http://www.doc88.com/p-118691153106.html
分页: 70/339 第一页 上页 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 下页 最后页 [ 显示模式: 摘要 | 列表 ]