背景:因smarty原自带函数截取时会出现中文乱码(我的是GBK的编码),出现怪异符号。
目的:修改Smarty的变量调节器truncate无乱码截取中文。

正题:
      网站的页面在展现时,为了美观,经常需要对一些标题的长度进行控制。在整个程序中,到处都是那忙碌的字符串截取函数,而且还可能出现中文乱码。用mb_substr()可以比较好的截取中文,但是它把中文和英文都按一个字符处理,截取的效果感觉不是太好。

如果你是用Smarty做表现层的话,可以用smarty的变量调节器truncate方法来控制字符串的长度,当然利用Smarty自己的truncate截取中文时,会出现乱码。我们可以改写它的truncate调节器,让它来帮我们截取字符串,达到一劳永逸的效果。

找到你的Smarty安装目录,打开plugins/modifier.truncate.php文件。你可以用下面的函数替换掉smarty自己的函数。




参数$length:为截取字符串的最大长度,默认为80字符,一个中文按2个字符计算;$etc:截取字符串时,自动附加在后面的符号。默认为 (...);$break_words 本指为是否可以打断一个单词,在中文环境下,作用不大,在改写的方法中,后面两个参数不起什么作用。

最后说下使用,{$title|truncate:30:"..."} ,很简单不是?当然这30个字符的长度还包括(...),如果你不喜欢,可以自己修改上面代码中的一行。
echo -n `date +%Y%m%d%H%M%S`| pbcopy
20220805095854

shell如下:
cat /data/www/up.jackxiang.com/bak.sh

为何要这么干的需求来源@[实践OK]CentOS下sendfile直接下载文件结合PHP的配置,curl -T 上传后下载高效实现方法。
https://jackxiang.com/post/10785/


1206分论坛三预排座次表?打印80份?.pdf




在文件后缀前加上一个日期:




1)shell 去掉文件名后缀的简单方法:

2)shell调试的常用参数:



提取文件名:
${var##*/}


echo $rpm
/root/rpmbuild/RPMS/x86_64/xlswriter-php73-1.3.6-200925115211.el7.centos.x86_64.rpm
echo ${rpm##*/}
xlswriter-php73-1.3.6-200925115211.el7.centos.x86_64.rpm

提取文件后缀:
echo ${rpm##*.}
rpm

提取文件的多个后缀:
echo ${rpm#*.}
3.6-200925115211.el7.centos.x86_64.rpm

提取文件所在目录:
echo ${rpm%/*}
/root/rpmbuild/RPMS/x86_64

右边算起的最后一个'.'字符及其右边的内容
echo ${rpm%%.*}
/root/rpmbuild/RPMS/x86_64/xlswriter-php73-1



${}总结

其实${}并不是专门为提取文件名或目录名的,它的使用是变量的提取和替换等等操作,它可以提取非常多的内容,并不一定是上面五个例子中的'/'或'.'。也就是说,上面的使用方法只是它使用的一个特例。

看到上面的这些命令,可能会让人感到非常难以理解和记忆,其实不然,它们都是有规律的。

#:表示从左边算起第一个

%:表示从右边算起第一个

##:表示从左边算起最后一个

%%:表示从右边算起最后一个

换句话来说,#总是表示左边算起,%总是表示右边算起。

*:表示要删除的内容,对于#和##的情况,它位于指定的字符(例子中的'/'和'.')的左边,表于删除指定字符及其左边的内容;对于%和%%的情况,它位于指定的字符(例子中的'/'和'.')的右边,表示删除指定字符及其右边的内容。这里的'*'的位置不能互换,即不能把*号放在#或##的右边,反之亦然。

例如:${var%%x*}表示找出从右边算起最后一个字符x,并删除字符x及其右边的字符。

看到这里,就可以知道,其实该命令的用途非常广泛,上面只是指针文件名和目录名的命名特性来进行提取的一些特例而已。



更多摘录:
阅读全文
#因gunzip -f *.tar.gz =>*.tar 会删除*.tar.gz所以不能重新再去gunzip的标志位。
gunzip -f
gunzip -f -c
-c --stdout      write on standard output, keep original files unchanged
-f --force       force overwrite of output file and compress links
原来的文件则没有了:
# gunzip test.txt.gz
它会将文件解压缩为文件 test.txt,原来的文件则没有了,为了保留原有的文件,我们可以加上 -c 选项并利用 linux 的重定向
阅读全文
个人的闲暇笔记,有误还请指正,主要是谈网络的基础以及网络组成及网络的划分组网等碎片化的东东:
1.网络的组成:
1)工作站
2)服务器
3)外围设备
4)网络协议
上面的有些东东一直没有变,有些东东变得快,如:服务器变化快,网络协议一直是Tcp/Ip,从IpV4,到IpV6,中间有一个Ipv5,是Ipv4的增强版,现在国家在推Ip6,在现目前的Ip4里跑得最多的是视频这类东东基本上满了,在IpV6里跑的还是这一类东东,教育网什么的,还是以视频为主,但要想大家都用Ipv6还得增强应用的接入才行。
对等网:角色一样,如:大学宿舍(你的硬盘大片多,共享),是一个对等关系。
服务器/工作站:(打印服务器)
局域网/城域网/广域网

根据全国区域,规范各大城市的:

DC:深圳DC/西安DC/天津DC/上海DC
DC主要用来放重要数据

这些AC直接和周边的DC关联起来:
AC:沈阳AC/北京AC/济南AC/南京AC/杭州AC/汕头AC/东莞AC/成都AC/武汉AC
AC主要用来做游戏程序代码的部署

外围:CDN
用来做传文件加速之用

网络传输是看小b:
文件是大B:

如一个1G的文件在一个1G/s带宽里传,则需要8秒,因为:1B=8b,是一个8倍的关系,
如你家宽带是1M,往往下载只有128kb/s,这个1M是指网络上的1M,是小b,而大B要除以8。

对于公司网络的布局:
运营商 公网 管理网(排查服务器故障) 公网<-内网->其他IDC。
最复杂莫过于内网,及其复杂,也不安全,在办工网里和运营的网这一条路是最危险的,险象环生,因为有hack啊,心怀不诡的各种目的的人出现在这条道上,木马什么的,为此,需要一个隔离区来保证安全,而光密码验证也无法满足安全,得有专业的ToKen,说白了就是按什么AES加密后生成一个6位的码,自己有一个前缀在配置后和这6位一块用,这样再牛B的黑客也没有用,3分钟变一次密码快吧?当然也不能说是最安全,最不安全的是人啊,能搞定人,再安全也不安全,什么社会工程学呀,什么的,但不管怎么说这个Token卡是一个较大互联网公司的基石,没有它,还真是得找一个其他类似的办法替代才行。
对于OSI参考模型的探讨,它是一个标准,分层后让各自干各自的事情,如网线生产商,如交换机生产商,你生产的网线在任何交换机上都能用。
网关:类似于QQ发出来的信息,通过应用让MSN发出去一样。

对于电源:
有1+1的电源,1个电源是好的就成。
2+1的电源:有两个电源是好的就成。
1+1+1电源:只要有一个是好的就可以让服务器工作。

现在技术的发展,尤其是视频业的需求,万兆光模块都不是难事。
对于无线的事情:
普通的54M,现在新的802.11n。300M也有了。

对于光纤:
有单模光纤:就是走一种波长的激光,这样传输距离远,失误低,能传几十公里。
多模光纤:就是发出白光,也就是有多个波长的光在里面走,因这个光的方向性(光是有位象的)不一致,不像激光,传输距离近,容易误码。300M左右。

对于路由器:

NVRAM  NVRAM  ROM Flash  CPU 没有用机械硬盘,所以,能长时间开机运行。




这里讲到了为何要划分成子网,子网和路由的关系,子网的算法,我在此找了一个子网的软件供计算,在百度百科里找了一篇文章:
这儿写下看书听讲的心得:
点击在新窗口中浏览此图片
斜杠的含义,如:
如138.96.0.0/16表示B类网络138.96.0.0的子网掩码为255.255.0.0。表示两个8位,也就是255.255,一共16位的子网含义。
阅读全文
http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html

1)shell 分割字符串存至数组



上述代码会输出
one
two
three
four

arr=($a)用于将字符串$a分割到数组$arr ${arr[0]} ${arr[1]} ... 分别存储分割后的数组第1 2 ... 项 ,${arr[@]}存储整个数组。变量$IFS存储着分隔符,这里我们将其设为分号 "," OLD_IFS用于备份默认的分隔符,使用完后将之恢复默认。

2)shell查找某个字符串是否存在的方法:


存在ok值为1,不存在则为0.



${desturlLoopPath}


Shell获取字符串的MD5:
echo -n 'hello'|md5sum|cut -d ' ' -f1
命令解释:
md5sum: 显示或检查 MD5(128-bit) 校验和,若没有文件选项,或者文件处为"-",则从标准输入读取。
echo -n : 不打印换行符。
cut:  cut用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件。
        -d 指定与空格和tab键不同的域分隔符。-f1 表示第一个域。参考这里。
这是unix的shell编程语句,意思是如果上一条命令执行后的结束代码不是0则执行下面的命令,知道fi行之前,例子:

(一)

需要修改的属性:
multiple="multiple"  height:auto;
修改后如下:
<select style="height:auto;width:260px;" id="sel-install-path"  multiple="multiple" >


一:
<select name="select" size="1" multiple="multiple" id="select">
我想给一个常规的select加上: multiple="multiple" Jquery怎么加?
二:
那个height呢?
<select style="height:auto;width:260px;" id="sel-install-path"  multiple="multiple" >
开始是一个固定高度,我想修改为auto,怎么弄?
"height:auto;
<select style="height:auto;width:260px;" id="sel-install-path"  multiple="multiple" >

方法:


如果想删除这个多选的属性:


如何获取这个多选是不是真的多选?

判断时的Js:
multiple换成disabled:

对这个多选的Js的Jquery的操作示例:

返回:
[ "/tmp/projectOne", "/tmp/projectTwo"]

(二)jquery 如何修改<a>标签的内容
<a href="javascript:void(0);" onClick="mutiPathBuShuChoose();" id="mutiPathBuShuChooseHref">多目标</a>
$("a#mutiPathBuShuChooseHref").html("单目标");


整体示例:
https://github.com/man-pages-zh/manpages-zh:
yum install man-pages-zh-CN


首先要:yum install man  ,因为用的是centos6.3的最小安装,没有,否则后面配置都无效果。
http://code.google.com/p/manpages-zh/downloads/list
man 1是shell命令,man 2是系统调用,man 3是库函数
GNU GCC 提供了一份关于 MAN 格式的 C++ 标准库的文档,可以在其镜像点
ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/
ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/libstdc++-man.4.4.0.tar.bz2

找一个最新日期的下载。展开包之后将 man/man3 中的所有文件拷贝到系统上已经存在的一个 man/man3( cp man3/* /usr/share/man/man3/.)(cp -Rf man3/* /usr/local/zhman/share/man/zh_CN/man3/) 目录中即可使用。
在/usr/share/man/manX/
其中‘X’代表的是数字,也就是MAN的类别。


1)对于找不到的命令,man会报错:
[jing@CentOS locale]$ man abc
Cannot open the message catalog "man" for locale "zh_CN.UTF-8"
(NLSPATH="/usr/share/locale/%l/LC_MESSAGES/%N")
实践Ok:http://www.jackxiang.com/post/5711/
解决URL:http://www.2cto.com/os/201111/111711.html
[实践OK]将en下的man复制过来,先凑合用用:
cp /usr/share/locale/en/LC_MESSAGES/man /usr/share/locale/zh/LC_MESSAGES/
http://www.jackxiang.com/post/5711/



GNU GCC 提供了一份关于 MAN 格式的 C++ 标准库的文档,可以在其镜像点(http://gcc.gnu.org/mirrors.html)中下载。具体的路径是:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/libstdc++-man.4.4.0.tar.bz2,可找一个最新日期的下载。展开包之后将 man/man3 中的所有文件拷贝到系统上已经存在的一个 man/man3 (/usr/share/man/man3/.)目录中即可使用,我的位置是:/man/libstdc++-man-4.4.0/man3# cp * /usr/share/man/man3/.。

可首先 man C++Intro 阅读 Introduction to the GNU libstdc++-v3 man pages。

对于 cout,你需要知道它是 std::ostream 类的一个对象,所以应该 man std::ostream。

摘自
http://bbs.chinaunix.net/thread-869423-1-1.html

阅读全文
今天在FreeBSD上调试代码时,突然我的jar出现了这个错误!上网找了好多资料没有找到解决的办法,后来问同事才解决 了这个问题!(*^__^*) 嘻嘻……
问题:E513: write error, conversion failed (make 'fenc' empty to override)"
原因:新建的文件编码有问题。
解决办法:
先查看一下当前的编码:
:set fenc?
如果不是utf-8的编码格式,用下面的命令改成utf-8的格式
:set fileencoding=utf-8
就可以解决了!我的问题是这样解决的!仅供参考!

阅读全文
Html:

editor是全局:



获取富文本编辑器获取内容:
1)防止对.svn目录下的PHP的访问:

2)整个站点的配置如下:
root@192.168.1.105:/usr/local/webserver/nginx/sbin# ./nginx -V
nginx version: nginx/1.2.2
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/software/nginx_http_push_module-0.692 --add-module=/root/software/ngx_cache_purge-1.3

出现:
root@192.168.1.105:~/software/nginx-1.2.2# sh /root/runnginx.sh
nginx: [warn] the "log_format" directive may be used only on "http" level in /usr/local/webserver/nginx/conf/nginx.conf:157
nginx: [warn] the "log_format" directive may be used only on "http" level in /usr/local/webserver/nginx/conf/nginx.conf:181
nginx: [warn] the "log_format" directive may be used only on "http" level in /usr/local/webserver/nginx/conf/nginx.conf:200
nginx: [warn] the "log_format" directive may be used only on "http" level in /usr/local/webserver/nginx/conf/nginx.conf:230
nginx: [warn] the "log_format" directive may be used only on "http" level in /usr/local/webserver/nginx/conf/nginx.conf:274
nginx: [warn] the "log_format" directive may be used only on "http" level in /usr/local/webserver/nginx/conf/nginx.conf:304
像这样的,不要放在server里,将/usr/local/nginx/conf/nginx.conf 里server段里的下面的日志代码移出放到该server段的后面即可。:
    log_format  welog  '$remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for"';
     access_log  /var/log/nginx/access.log  weblog;
              }

注意,下面的日志是放在server之外的,即出现警告是放的位置不对    
    log_format  welog  '$remote_addr - $remote_user [$time_local] "$request" '  
                       '$status $body_bytes_sent "$http_referer" '  
                       '"$http_user_agent" "$http_x_forwarded_for"';  
     access_log  /var/log/nginx/access.log  weblog;  
默认并没有开启gzip功能。需要修改apache的配置文件进行开启。

什么是gzip,开启gzip的好处。
开启方法如下:
1. httpd.conf中打开deflate_Module和headers_Module模块 VickieXu
2. httpd.conf中添加: Vickie博客



首先查看apache是否加载了mod_deflate.so模块,如果没有需要安装加载。找到并下载和当前apache版本相同的源码文件,解压缩到/home目录下,在apache安装目录下执行:
/usr/local/apache2/bin/apxs -i -c /home/httpd-2.0.63/modules/filters/mod_deflate.
会自动在 httpd.conf添加
LoadModule deflate_module modules/mod_deflate.so

/usr/local/httpd-2.2.10/bin/apachectl restart
httpd: Syntax error on line 254 of /usr/local/httpd-2.2.10/conf/httpd.conf: module deflate_module is built-in and can't be loaded
解决方案:出现这个情况,表明deflate_module模块是内建的,不用再调入,所以只需要把LoadModule *** 注释就可以了

Egg:
/usr/local/httpd-2.2.10/bin/apxs -i -c /tmp/httpd-rebuild/httpd-2.2.10/modules/filters/mod_deflate.c
chmod 755 /usr/local/httpd-2.2.10/modules/mod_deflate.so

怎么知道开启了Gzip呢?用Httpwatcher或者FireBug抓包如下:
Content-Encoding  gzip  这个即是。

响应头信息原始头信息
Accept-Ranges  bytes
Connection  close
Content-Encoding  gzip
Content-Length  892
Content-Type  text/html; charset=GB2312
Date  Fri, 13 Jul 2012 12:02:08 GMT
Server  Apache
Vary  Accept-Encoding
CentOS 6.3 发布 附ISO下载地址:
http://cnbeta.com/articles/196464.htm
7月全球Web服务器市场:Apache份额下滑 Nginx上涨:
http://cnbeta.com/articles/196487.htm
防护软件QQ电脑管家提示系统关键项目启动慢,于是找了一下网上的,如下优化:
内容太多了,建议下个优化大师优化一下,默认优化下,这种情况主要是系统的一些外部的设备,如Usb,硬盘等的驱动等待时间,导致系统慢,如果要想快,建议加上固态硬盘,关闭Usb等一系列的外部设备,重新安装全新的Xp系统,这样会有明显的改善,而如果是长时间运行了很久的系统,按下面的方法,未必有效果,但还是贴出来供大家参考一下,如下:阅读全文
on this host the function 'date("g")' don't work properly. Now, the function should return 13, but return 7. It has a delay of 6 hours.

Someone can help me?


It probably gets the server timezone, GMT -8
Would setting time zone work in one of your global configuration files?
For example setting time zone to Brisbane, Australia
PHP Code:
http://www.cnblogs.com/in-loading/archive/2012/04/11/2442697.html

http://code.google.com/p/phpquery
发现已经有人做的相当完备了
http://stackoverflow.com/questions/260605/php-css-selector-library
----------------------------------------------------------------------------------------------
JQuery是一个非常著名的JS框架,提供了对DOM文档的完整操作。这个文档处理利器现在终于有了PHP版,也就是说可以使用php操作 HTML或者XML文档,遍历文档的节点,很轻松的取出,填充节点内容。或者简单来说,除了js的事件响应部分,其余的几乎都可以用php来实现。php 对数据处理的能力显然要比JS强大很多,对不熟悉JS的同学来说,phpQuery是个非常强大的帮手。如果了解了phpQuery,那么就很容易理解其 实phpQuery也可以取代一部分Smarty的功能。

我刚刚开始学习使用phpQuery,这应该算一篇学习笔记,我会努力将其向手册风格靠拢,不过不会做成中文手册,仍然会加入我在使用过程中遇到的问题以及解决方案。

开始phpQuery
参考资料:phpQuery JQuery

phpQuery从编程思想到语言风格都是参照JQuery来做的,所以熟悉JQuery的人可以随时对照参考JQuery手册,方便理解。

phpQuery应用举例:

require(’phpQuery/phpQuery.php’);
$file = file_get_contents(”test_phpQuery.html”);
$dom = phpQuery::newDocument($file);  //初始化对象

echo pq(”head > title”)->text(); //输出文档title

pq这个全局函数类似于JQuery中的$()符号,用于执行请求,或者遍历DOM节点。
例子中的”head > title”就是一个选择请求,选择head标签下的title子标签。

pq(”li”); //选择所有文档中的li标签
foreach(pq(”li”) as $item)
=======================================================================
这篇文章主要介绍了phpQuery让php处理html代码像jQuery一样方便,需要的朋友可以参考下

简介
如何在php中方便地解析html代码,估计是每个phper都会遇到的问题。用phpQuery就可以让php处理html代码像jQuery一样方便。
项目地址:https://code.google.com/p/phpquery/
github地址:https://github.com/TobiaszCudnik/phpquery
DEMO
下载库文件:https://code.google.com/p/phpquery/downloads/list
我下的是onefile版:phpQuery-0.9.5.386-onefile.zip
官方demo:https://code.google.com/p/phpquery/source/browse/branches/dev/demo.php
然后在项目中引用。
html文件test.html:


上面的代码中包含了取属性和innerText内容(通过nodeValue取)。
输出:

复制代码代码如下:

array (size=3)
  'name' =>
    array (size=2)
      0 => string 'Spiderman City Drive' (length=20)
      1 => string 'Spiderman - City Raid' (length=21)
  'href' =>
    array (size=2)
      0 => string 'http://www.gahe.com/Spiderman-City-Drive' (length=40)
      1 => string 'http://www.gahe.com/Spiderman-City-Raid' (length=39)
  'img' =>
    array (size=2)
      0 => string 'http://www.gahe.com/thumb/12/Spiderman-City-Drive.jpg' (length=53)
      1 => string 'http://www.gahe.com/thumb/12/Spiderman-City-Raid.jpg' (length=52)

强大的是pq选择器,语法类似jQuery,很方便。
来自:http://www.aspku.com/kaifa/php/46348.html

更多参考:
http://www.cnblogs.com/rmbteam/archive/2011/11/05/2236986.html
实践示例:http://querylist.cc/article/9



分页: 101/271 第一页 上页 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 下页 最后页 [ 显示模式: 摘要 | 列表 ]