在Ubuntu16.04LTS上安装php5.6

1. Add PHP 5.6 package sources to your system: sudo add-apt-repository ppa:ondrej/php5-5.6 2. Update sudo apt-get update 3. Install PHP sudo apt-get install php5.6 4.Integrated with Apache2 libapache2-mod-php5.6 5. Enable php5.6 a2dismod php7.0 a2enmod php5.6 service apache2 restart

Nginx virtual host & php-fpm settings

共享我的当前VPS中关于nginx的一些设置,防止自己忘记了。 针对Nginx global的设置(没有写的,说明使用了默认的设置了): #Nginx进程的用户名和用户组设置,最小权限原则 user www-data www-data; #Nginx初始化工作进程数 worker_processes 4; #启用Nginx的核心安全策略,比如SQL注入,跨站之类 include /etc/nginx/naxsi_core.rules; #启用gzip压缩输出,对IE6禁用gzip gzip on; gzip_disable “msie6”; 针对Virtaul Host的设置: 首先看Reserve Proxy, server { ### server port and name ### listen 443; ssl on; server_name ******.zhuoyue.me ### SSL log files ### access_log /var/log/nginx/ssl-access.log; error_log /var/log/nginx/ssl-error.log; ### SSL cert files ### ssl_certificate /home/niyouzhu/nginxssl/server.crt; ssl_certificate_key /home/niyouzhu/nginxssl/server.key; ###… Continue reading Nginx virtual host & php-fpm settings

Ubuntu+LAMP+Nginx

好久没有玩linux了, 下午的时候有点时间, 搭了一套环境. 使用的VMware workstation安装的Ubuntu 12 Server, 网络连接使用的NAT, Remove掉了Floppy. Host是Intel Core i5-4570 3.2GHz的64Bit CPU, Memory 是4G. 配置还可以, 故给VMware配置了1G的Memory, 20G的Disk. Ubuntu的安装过程现在是越来越简单了, 过程也记不清了, 这里就不说了.  总之顺利安装成功. Host 的IP是 192.168.82.81, Client的IP是192.168.206.129. 因为Company里有Security Audit, 所以需要通过Proxy才能上外网, 故第一步给Ubuntu设置代理服务器. editor /etc/profile 添加: http_proxy=http://192.168.88.80:3128 https_proxy=http://192.168.88.80:3128 ftp_proxy=http://192.168.88.80:3128 export http_proxy https_proxy ftp_proxy 然后Reboot. OK, 可以上外网了. 现在开始更新apt源, 由于默认安装后的源是Ubuntu在国外的服务器, 非常慢, 所以先更改源地址: editor /etc/apt/sources.list 然后在所有的archive.ubuntu.com前加上cn., 即: http://cn.archive.ubuntu.com/ubuntu/ , cn.archive.ubuntu.com… Continue reading Ubuntu+LAMP+Nginx

几个还算有用的Apache htaccess配置

开启Apache的.htaccess文件可以让站点进行1些个性化的应用配置。这里提供了几个不错的.htaccess片段,希望能够根据你的实际情况优化你的网站,包括重定向、性能、可用性等! 强制后缀反斜杠(在URL的尾部加上反斜杠似乎对SEO有利) <IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] </IfModule> 防盗链 RewriteEngine On #Replace ?mysite\.com/ with your url RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC] RewriteCond %{HTTP_REFERER} !^$ #Replace /images/nohotlink.jpg with your “don’t hotlink” image url RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L] 重定向移动设备(如果你的网站支持移动设备访问的话,最好还是重定向移动设备的访问到专门定制的页面) RewriteEngine On RewriteCond %{REQUEST_URI} !^/m/.*$ RewriteCond %{HTTP_ACCEPT} “text/vnd.wap.wml|application/vnd.wap.xhtml+xml” [NC,OR] RewriteCond %{HTTP_USER_AGENT} “acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-” [NC,OR] RewriteCond %{HTTP_USER_AGENT}… Continue reading 几个还算有用的Apache htaccess配置

简要的Web缓存技术

最近在做1个项目,名叫《智慧街区》。简单进行1下项目介绍:与政府有关部门进行合作,将自助终端(其实就是1台PC机,只不过长的好看点)竖立在大街小巷,为市民提供各色服务,比如:公交、天气、商家、优惠、政策、新闻等等1些便民功能。 这样1个项目,按道理来说,是应该做成CS结构的,这样便于对终端设备上有关硬软件的控制,但无耐的是项目时间较短、用户体验要好,我们只能选择偷梁换柱,使用BS方式(C端编写1全屏置顶的小程序,嵌套web网站)来解决。 调研阶段,我们了解到该项目功能并不复杂,手上也有比较好的原型和模块代码,我们所需要解决的问题主要有2个:1是客户端缓存,因为终端是使用3G无线传输,速度和流量得不到保障,速度<200KB,按流量收费,我们只能在服务端有更新内容的时候,客户端才能更新有关数据,最大限度的节约带宽;2是控制客户端打印,因为使用JS控制打印机会弹出打印对话框的,而终端设备上我们是不允许用户进行这种操作的。 今天先说第1个问题,客户端缓存的问题,这方面我特别g了1下,也算了解到1些比较简洁比较有效的技术,当然以前也都或多或少的接触过。下面这篇文章不错,遂载,明天还有1篇文章会描述《Web缓存技术概述》。 这是一篇知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中。为了简要起见,某些实现方面的细节被简化或省略了。如果你更关心细节实现则完全不必耐心看完本文,后面参考文档和更多深入阅读部分可能是你更需要的内容。 目录: 什么是Web缓存,为什么要使用它? 缓存的类型: 浏览器缓存; 代理服务器缓存; Web缓存无害吗?为什么要鼓励缓存? Web缓存如何工作: 如何控制(控制不)缓存: HTML Meta标签 vs. HTTP头信息; Pragma HTTP头信息(为什么不起作用); 使用Expires(过期时间)HTTP头信息控制保鲜期; Cache-Control(缓存控制) HTTP头信息; 校验参数和校验; 创建利于缓存网站的窍门; 编写利于缓存的脚本; 常见问题解答; 缓存机制的实现:Web服务器端配置; 缓存机制的实现:服务器端脚本; 1.什么是Web缓存,为什么要使用它? Web缓存位于Web服务器之间(1个或多个,内容源服务器)和客户端之间(1个或多个):缓存会根据进来的请求保存输出内容的副本,例如html 页面, 图片,文件(统称为副本),然后,当下一个请求来到的时候:如果是相同的URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发送请求。 使用缓存主要有2大理由: 减少相应延迟:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让web服务器看上去相应更快; 减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。 2.缓存的类型 浏览器缓存 对于新一代的Web浏览器来说(例如:IE,Firefox):一般都能在设置对话框中发现关于缓存的设置,通过在你的电脑上僻处一块硬盘空间用于存储你已经看过的网站的副本。浏览器缓存根据非常简单的规则进行工作:在同一个会话过程中(在当前浏览器没有被关闭之前)会检查一次并确定缓存的副本足够新。这个 缓存对于用户点击“后退”或者点击刚访问过的链接特别有用,如果你浏览过程中访问到同一个图片,这些图片可以从浏览器缓存中调出而即时显现。 代理服务器缓存 Web代理服务器使用同样的缓存原理,只是规模更大。代理服务器群为成百上千用户服务使用同样的机制;大公司和ISP经常在他们的防火墙上架设代理缓存或者单独的缓存设备; 由 于带路服务器缓存并非客户端或者源服务器的一部分,而是位于原网络之外,请求必须路由到他们才能起作用。一个方法是手工设置你的浏览器:告诉浏览器使用 那个代理,另外一个是通过中间服务器:这个中间服务器处理所有的web请求,并将请求转发到后台网络,而用户不必配置代理,甚至不必知道代理的存在; 代理服务器缓存:是一个共享缓存,不只为一个用户服务,经常为大量用户使用,因此在减少相应时间和带宽使用方面很有效:因为同一个副本会被重用多次。 网关缓存 也被称为反向代理缓存或间接代理缓存,网关缓存也是一个中间服务器,和内网管理员部署缓存用于节省带宽不同:网关缓存一般是网站管理员自己部署:让他们的网站更容易扩展并获得更好的性能; 请求有几种方法被路由到网关缓存服务器上:其中典型的是让用一台或多台负载均衡服务器从客户端看上去是源服务器; 网络内容发布商  (Content delivery networks CDNs)分布网关缓存到整个(或部分)互联网上,并出售缓存服务给需要的网站,Speedera和Akamai就是典型的网络内容发布商(下文简称CDN)。 本问主要关注于浏览器和代理缓存,当然,有些信息对于网关缓存也同样有效; 3.Web缓存无害吗?为什么要鼓励缓存?… Continue reading 简要的Web缓存技术

使用Data URI scheme来编码你的小图片

今天很有意思,在对组员编写的导入excel功能进行产品功能测试的时候,由于偷懒直接将不太满意的地方使用QQ截图存储到剪辑板中,然后又到项目的web管理平台当中录入Bug,并且继续发扬偷懒精神,直接使用ctrl+v粘贴截图到Bug描述(使用KindEditor超文本编辑器)当中,居然发现1个奇怪的现象:那张Bug截图居然正常的显示在编辑器当中,它可是网页上的编辑器啊,不是Windows应用软件啊,我印象中这种事以前只发生在客户端的1些软件之间的啊。 是的,根据以往的经验,我不太相信这件事,认为它可能是使用的本地系统的绝对文件路径,形如:file://c:/windows/temp/…,但是抱着死猪不怕开水烫的态度,我还是使用html源码进行了查看,这不看不要紧,1看吓1跳,发现下面代码: <img src=”data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABFUAAADHCAIAAABX4PvHAAAXa0lEQVR4nO3d728c9Z3A8fwLmza0SHdBSnqgpqWEg4CgXEtpIGnUawnF4jh0pRIPqGh1Uq1UeUDVCqnSPamV1BUhIlUhUakhP4hrDMUEE4ekwZcfJiYYEhKIZEMSR20oiUN7yo+9B2vvzs7Ozs6uvd6N5/XSW5W93p3dsRd3Pv7ObmZlAQAA0mFWox8AAADANDH/AAAAaWH+AQAA0sL8AwAApIX5BwAASAvzDwAAkBbmHwAAIC3MPwAAQFpUmH+Ojh16ZbTrmeF1Tx5bJUmSJEnN0zPD614Z7Xr3zMEpmH/+7+I/tp3q3vTRhj1jOwfP7xnKDkiSJElS8zR4fs+esZ3PH3/m5dHOcxfGJjX/bDvV/epfuocuNX6vJEmSJKlslwZ2fNzzp5Nba59/jo4d2vjR+kOXBhu/M5IkSZIU26HsYOeJjnfODNY4/7wy2rV3bFfDd0OSJEmSkrT/3Bsvj3bWOP88M7xu6PybDd8HSZIkSUrSuxcObBheW+P88+SxVQ3fAUmSJElK3pPHVpl/JEmSJF32/fRXP/npr35S7tNc5h9JkiRJM6HcwJObeYIfBzP/SJIkSZoh5ceeyOFnyPwjSZIkaSYVM/wMmX8kSZIkzZis/0iSJElKRU30+p/tn2579Mgvlr1x7/W9t1/fe/uyN+599Mgvtn+6reHfI0mSJEkzo2Z5/7fHP1xz646ltw8sv+f9hx4Y+fF/jvz4nvcf+vr+7966Y+njH66Zhm/EfU/Pyv9vxatFXl6uyGvWdS+mZ2vBr9b8fZMkSZKarbrPP4+PrFn02h3fO/LQPe899J13Hsx3z3sP3X34Bzf2fuPxkSpGoOSjSOhWoQ/ir1any0vqXNuZe/B3b06273X6tlT8UuQ1m2QslCRJkpJX3/ln+7lXbu1dcvehB5ceuP+ugfuCZbPZJW/+x7KD99/y6l3bz70yyd0oPV6veHReeuHk13/KPZ7INm+fdd/29uAHFXcwycQVv3STZF/y95Xkakn23fwjSZKkJqm+88+jQz//2u5//+bee//tz98JNvDJwdxGvvG/99y8fcmjQz+f5G7Er1ckGVRqONBP/niiav/l0wvW/nVgKDsw9NfW/45dAqr4YKqaf2q7i8ibWP+RJEnS5VV9559lvd+7c3/LTa8tyXV9zx3/svWmZ/Zv/OCDD4aHh//rxR9e8dQ1X3zhlmW930v4cBOuOdQw/yT8OMnjiV+rGa9o5gnMQuXvIuYsvqpGkYr3kmQmTP6zGDL/SJIkqWmq7/xz/fO3Ld7bcsO2xdls9p83fWX2hvmLO5fnhp9fvP4/mfXzMuvn/dPGa69//raEDzf5/BN5Ylv8PBAz81R1CtxUzT8xy1DxX4r5dln/kSRJUpqr8/yz6au39y9fc/R3b7311tDQ0OKXlr//wfvDw8NPD/zhM89+IbNxXmbjvM8//8XrN3014cNNeMwdGngmP/9U1dSu/yR5SFXNPxW/gVO+/iNJkiQ1SXU+/617+fXbb5/9/PyhoaH33nsvt/LTe6gv8/y8TPd4n++6Zln38oQPN/nSRPCDmIGk5vlnsgspUz3/TNX5b1V9k5OviUmSJEnNUJ3f/2D/z67546I5fVdntszLDT/Hjx/PvDAv81qhqzZ/6dH9P0v4cGubfyI/yH9acQUpvphHGPtoq3j/g4pbm/z5bwn3vbafi6FIkiRJTVKd3//6zCs3d3x97utfnt0/P9M17/jx45mueZn+Qle89oWb/vC17WeSvv91VTNA/rA7chWo3ElfST4t90iqmjeqev/ravc94V7Eby3J96TihFn6rZYkSZIaVf3//dNDv7n2qRs+v/vq2YPzMy/NywwWuuLP87/81L8+fug3yR/uJGeAcgfiSeaW2iai2Mfc/svxdZUp+PdPK34cv4XIqyV5/U+SCyVJkqQmqe7zz1B24PG9v75pzS1zO66Zs3v+7KF5s4fmzdk9f27HNTetueXxvb+u9hFXPBWt2hPAIs+IS/IA4jeb/KvJdzz55aUPMvljSLL+UzpVBu/R/CNJkqTmrL7zz1vn975+ctsf39702x1PPLL+h3etvnPhYwsXPrbwrtV3PrL+h7/d8cTWtzbuOLHtrfN7G/6NkCRJkjTjq+/8c/Divr1nd+0cfXX7Rz2RvX5y296zuw5e3Nfwb4QkSZKkGd90nP8mSZIkSc2Q+UeSJElSWjL/SJIkSUpL5h9JkiRJacn8I0mSJCktmX8kSZIkpSXzjyRJkqS0ZP6RJEmSlJZqn3+eGV538Hzjd0CSJEmSkvTuhQMbhtfWOP+8Mtq1Z2xnw/dBkiRJkpK079zuP53cWuP88+6Zg5uP//7dSwcavhuSJEmSFN+72QPdo5sOfjJQ4/yTzWZfHu3c8XFPw/dEkiRJkuLb9bferhPPXbx0sfb559yFsRdPbOk88ey+c7sPXtjX8F2SJEmSpGAHL+zbd273i6Obu048d+7CWMXhJ27+yXn7kwMvj3ZuGF775LFVkiRJktQ8bRhe+6eTWw9+MpBk5SfR/AMAADBjmH8AAIC0MP8AAABpYf4BAADSwvwDAACkhfkHAABIC/MPAACQFuYfAAAgLcw/AABAWph/AACAtDD/AAAAaWH+AQAA0sL8AwAApIX5BwAASAvzDwAAkBYV5p+xQ4dGu7qG1607tmqVJEmSJDVPw+vWjXZ1nTl4cArmn4v/+Mep7u6PNmwY27nz/J492YEBSZIkSWqezu/ZM7Zz5/Fnnhnt7LwwNjap+edUd/dfursvNXqXJEmSJCmmSwMDH/f0nNy6tfb5Z+zQoY/Wr780ONjwnZEkSZKkCg0OnujoODM4WOP8M9rVNbZrV+N3Q5IkSZISdO6NN0Y7O2ucf4bXrTv/5psN3wdJkiRJStKFAweG166tcf45tmpVw3dAkiRJkpJ3bNUq848kSZKkVGT+kSRJkpSWzD+SJEmS0pL5R5IkSVJaMv9IkiRJSkvmH0mSJElpaZrmn097eo6sXPnGkiW9Cxf2Llz4xpIlR1au/LSnp+H7L0mSJCk9Tcf88+Hq1a/feuvQkiWnfvCDsz/60dlHHhl98MG3lyx5/dZbP1y9err3edasel15klsLfrXi/SbfVPDTcncxa1ZR0/wTkSRJkqarus8/I6tX991448nvf//Egw+OPPBAvhMPPvjhAw9sv/HGkeQjUOgwvbRyVwttJPdBZ2vhCu3l77GGBxO/Cwm/FHnNhHeaZP4pd3nM/dbtWShJkiRNT/Wdf8719PTecsvI/fcfXr48m82++93v5stms4eXL3//3nt7b7nlXA0nwlW7QhI+1m8vjD3td2dnLch2ltlCuTuKWUspvWbFoSV/X0mulmRn8zdMMp6ZfyRJkpSO6jv/DK1cue+b3xz81rfyt9pzxx177rgj/+mbS5bsuu22oZUrq37ok5x/2u/OLmid+GpndkHJElCSkSDhlaudoOJ3qoYZqdz6T7nNlrtCtT8jSZIkqcmq7/zTu3Tp29/+9vabb940f342m/373/9+8uTJDz744MiRI0ePHl2XyTx9xRUvXntt79KlVT/0+MWZgYHwAX3cDBBYCwpdJ+ZWyc9/qzj/BG9V1YltkZfHL/5E3mmS77b5R5IkSZd/9Z1/nl+4cHDZsm033PDyV77y1Gc+MzAwMDg4+M477xw9evR3mcz6TGZ9JrN57tznFy6s+qHHr2lEnlpW7vqtCwprQTFrKfFfivw45hFWvFW5myQZupJvrdw2I++3pmeYJEmS1DzVd/7ZtHDh/jvvfPHqqzd/9rMbM5n88DM8PLwxk8m19corN01m/hkoOdyPHHjKzT+tC7Kz7k50LwkfQG0rRVO4/lP6eCreacWdlSRJkmZE9Z1/upcuff3GG7tnz+4uHn6OHz9+6tSp7kymO5PpuvLK7prPfyv3afDCmPmndUH0Ox/Ebzb/pak6/y3+jqq909CFVY1GMXshSZIkXf7Vd/7Zv3LlCwsW7LjiivzwsyWT2ZLJnDp16vTp06dPn34tk9l81VX7J//+BxVnjNIP4ld+4jc7UH56ST7/lHucCeeQ5I9t8us/JiJJkiTNiOo7/5zp6em46aadV131wuzZR48e7cpk+jOZ/kymK5M5ffp0Vybz2pw5f1i06Ew93v+63HVyF3a2Vlj5qXgvCeef5As7SW5ebi0r5moV138it1z68Mw/kiRJuvyr+79/emj16qe+9KXdn/vcS7NnD2Yy+V7KZP48Z85TCxYcSv7vnwareDgevyJ0d8mqSOQ/gdqQ+Sdm/SdmpIkZbCqu/9RwJp4kSZJ0GVb3+Sc7MLB39eo1ixZ1zJ27e86codmzh2bP3j1nTsfcuWsWLdpb2/AzUOkwvdzKT7XrGEleuhOz/eT3lWT9J+astvhrxj/yyEtMQZIkSZqJ1Xf+Ob9378lt297etGnHE0+sf/jh1YsXP3bddY9dd93qxYvXP/zwjieeeGvjxhPbtp3fu7fh3whJkiRJM776zj8X9+07u2vX6KuvftTTE9nJbdvO7tp1cd++hn8jJEmSJM34puP8N0mSJElqhsw/kiRJktKS+UeSJElSWjL/SJIkSUpL5h9JkiRJacn8I0mSJCktmX8kSZIkpaXa55/hdevON/rRS5IkSVLCLhw4MLx2bY3zz2hX19jOnQ3fB0mSJElK0rndu09u3Vrj/HPm4MHjv//9pQMHGr4bkiRJklShAwdGN236ZGCgxvknm82OdnZ+3NPT+D2RJEmSpNj+1tt74rnnLl28WPv8c2Fs7MSWLSeeffbc7t0X9u1r+C5JkiRJUrAL+/ad2717dPPmE889d2FsrOLwEzf/5Hxy4MBoZ+fw2rXHVq2SJEmSpOZpeO3ak1u3fjIwkGTlJ9H8AwAAMGOYfwAAgLQw/wAAAGlh/gEAANLC/AMAAKSF+QcAAEgL8w8AAJAW5h8AACAtzD8AAEBamH8AAIC0MP8AAABpYf4BAADSwvwDAACkhfkHAABIC/MPAACQFtHzz1kAAIDLjfkHAABIC/MPAACQFuYfAAAgLcw/AABAWph/AACAtDD/AAAAaWH+AQAA0sL8AwAApIX5BwAASAvzDwAAkBbmHwAAIC3qOP+0tLTEfFrDFgAAqIfSg65yh2HByyNvlZNkU/Ffgjqp7/wT/G+gpVjRVQ93tLa09ZXcvHQ7/iMhTuiJdLijdfxZ09pxuIEPi2nV11b0GyP8myWhqF9KADPYFM4/wf8tVXr9JFeDKVSv+Sc4vZR+Wix3uFJ0qOF5Tw362oJPpL62iU8Od7TWfBjMdKht2Ci9VW7iDV6Wu6SG+df8A6RGuQkkchSJPMALXi104He2msUfh39Mjzqu/yQxfnDS1hY81IgdlqCMvraW1tbCE6no+LWvzRJQM5ua+aevLXrSOdzRWv2P3/wDpEzC9Z/SOSfyL93By+MXf0qvY/2Heqvj/JPkDwmH+/oOn407/y3m5g5pCTjc0drWV/RECnziudLU8ies5X9I+UsCvxYKp7Xlrha+VeHnnT/vsa1v/Cc/sRZYWBM8W3yT4DlzhY209U1cXrhR5EmVFc+0LFwhflOHO1pb2joKjz+4L5P8LgPEiz9gC14ndP38p5HXOVv+79r5a0ZuZEp3DopM0/pPS/wyaMn8U+6/umrvl5Q43NHa2nG45Ik0cfBo+GlyZQbXwMJNYITNfxh9q9B5j/kLWzsOV75JYQ0peCpd4euha8ZcGBS4tHjkKrnV4Y7WlsAutwT21JMYqK+Kx13BWSV+dImcc0KXl24tfvSCKdTg9Z9xxYetof+izhZfDiX62iIOiAtnQ3n9T7ML/uCiT1yMGiyiblVmkoqamaLPcAtOShMjR/6akY+t4pmWkcuP0bcq941wNh5QdwmHkIprO6GRJvI6oa1Z/2Ga1Xf+ifw4Quz7vyXdCGnV1xZ1ROv1P5eR8A8uqPSkuKgf9/h8VPyrpGisCJ8mN75mGHGnJVNNcKGo+DbjJ9WVXhjaudJnX/StzD9AwyQ87oqcf4LDUujys8WTVeTWEo5eMFUas/4Tflqbf6hd6O2OJ46PzT+XkaoO9fNLQRG3il7+KZmKctcMLu8Ep6zy84/1H2Amij9gCx19Rc45pVco/d+YK8dsDeqhjvNPTuQT2vxDXZQc/Tr/7fJQNIFEnaIWvELR/BOeYYpflZO/qGj+6GtraesIrP6EXokTM/9Mzet/Ss7oK379j/kHaGblhpng5ZFTTcz6T+QGoX7qO/9U/I9kXE3zjz/pE+bfP71cjf+ogmezhX9w4fd/C90qP1gU3rKt9M3bgpsq80Tpi3ghUfTpeRXe/63kBLeW8KMp9/5v5h+gERL+3TnJ/BO/hZhbGYGYHvWaf0JTfuRfBSpuIbQ1/1UAZZX7538mvlY8eJgmAArKHWJVXLEJCl0huOxTerXQdUq3OdldgvLqu/4DMG1Cq0jjwqs9xh8ASDXzDzCThN8/rmhNKHpCAgBSxPwDAACkhfkHAABIC/MPAACQFuYfAAAgLcw/AABAWph/AACAtDD/AAAAaWH+AQAA0sL8AwAApIX5BwAASAvzDwAAkBY1zj8AAAAzj/kHAABIC/MPAACQFuYfAAAgLcw/AABAWph/AACAtDD/AAAAaWH+AQAA0sL8AwAApIX5BwAASAvzDwAAkBbmHwAAIC1qn39aWlpiPq1hCwAAAHU1qfknL/RpYbAZ2bJi4pL2/vDNS7djIiLOyJYV4edRyYWFp9yKLSPT+/CYBpHPgWy2v73o10jENablYQAAza/G+Sc4vZR+OqG/PX8g0t8ePB4151C93CFu+KCzvz14YeEpN7JlxTQcBpNIbdNCxK2ingO5iTd4We6Sus6/5h8AuGzV8/U//e2BQ5DC8UKZYQnKGj+gbW8PH3T2t7esWFG4sOiotOj5RyNNxfxT5jlQ/JeV4hvX8cdv/gGAy9bUnP+W4By2wFrQxM3LbSR/A0ev5Iz0949kSw86R7asaO8vujDwiSdQs8ifm5b/eeQvCfw0C2ew5a4WvlXkc6DwWf68x/b+8Z988FdO4atbCrePPFUy/sL8zcOTduxpd5GnAUfc0ciWFbl7mLhqYKdq+9YDAKWmZv0nOPNEzj+hP8ZGjkmWg6ig5Nh3xZaRqKEofPhKg5WZUQO/FgLTav7Dyi/3yn8SOu8xf2FhlIr6avDs3NyHFS4s3Lx4J0p2JyiwzcJ1I+9oZMuKlsA3pCXwffBsBoApMx3rP6FXYrQUv2QoW3w5lBX6o3vEUXLhbCiv/2kiwZ9R9DmK4fXhkmvGbarMeDWx8aKVwIk7inwYkRfG37ziKZeR65DRtyr3bXKyHQBMpal5/+uY0SX4J81yN6+4Echmw2e3lfxN3et/mlX4ZxRUelJc1E82clPjw0jx9YqmiYkFwtIXIka+OjHqwuibF80/kbsTuEHp0zD6tZHmHwCYDnVZ/8lPMjF/gzf/ULXi04dCyv5Rn4ar6mA+vxSUdP0nevmndB2oaOt1Wf8pszvWfwCgmUz29T+RJ7ONfxp72rr5h6ole0GI89+aTtGvgsAPrGiKCLz+p/TCok0F54LidzrIv2qm6G3hpun1P2XmlNDrf0rO9yvevPkHAOptUvNPS5l3ss59Wvon+tL3f4vcWo6/3hNWef4p8/5dNNj4TyV44lr4ZxR+/7fSW+UvKx13J27c3l/4KOL+W1ra2wu/V2p5/7f2MitF4ZuUnOBW8juw3Pu/mX+AqRb8jVTuY0iV2v/905ao1/+ELo/fQmhr1n+A6pT7538mvlYyNkzy/+4dLQDAZa+e//4pQJ1FLRKNL8mUnHVWZiaqfAeTuDkA0GTMP8DlLvwubKFFmsCXa1m9meTNAYCmYv4BAADSwvwDAACkhfkHAABIC/MPAACQFuYfAAAgLcw/AABAWph/AACAtDD/AAAAaWH+AQAA0sL8AwAApIX5BwAASIvo+ed9AACAy02N80/OfU9HfPW+p2flSjhgAQAANIkKY0xuzsnPPPETUWR1edQAAADV+3/XtEOmM7ezPQAAAABJRU5ErkJggg==” alt=”” />

共青团苏州市沧浪区委“会员制”志愿者管理服务系统

这段时间1直在负责公司的1个项目,这也是为什么今天周六大家都没有休息的原因,按照计划25日就要项目结束的了,还有13天。我来简单谈谈这个项目吧,上周这个项目也获得了苏州市经信委市级加快信息化建设专项资金扶持。 项目的主办方是共青团苏州沧浪区委,他们1直在计划这样1个平台:大家可以看到现在每天早晚会有很多挽着“志愿者”标志的广大社会人士在苏州市交通要道指挥交通,这些人叫做志愿者,他们1直有志于回报社会,当然这是非常值得提倡和学习的,目前社会志愿者也日益成为我国现代社会管理的重要力量,团区委希望搭建这样1个平台,在这个平台上广大普通社会人士可以申请注册成为1名志愿者,当他的信息通过审核后,团区委会给他发送1张能够唯一标识他身份的会员卡片,并且他能够登陆这个平台,在平台上获取感兴趣的志愿活动信息,然后申请报名相应志愿活动,1旦活动报名通过,他就能够去现场参加这些志愿活动,比如:去照顾老人、带小孩、指挥交通等等,同时团区委为了发扬和扩大志愿者精神和队伍,也会对志愿者们进行小小的奖励,就是在他每参加完1次志愿活动后,会在平台系统里给他记录1定数量的积分,当志愿者的积分达到1定量的时候,可以去团区委的指定机构兑换1些纪念礼品。 本身这个项目是比较简单的,相对比较复杂的就是:由于志愿者在参加完活动后需要记录积分,那么就需要有联网的设备对会员卡片进行刷卡操作,以将会员卡号、活动编号发送到平台;由于志愿者在积分达到1定程度的时候,可以去指定机构兑换礼品,那么同样需要有联网的设备对会员卡片进行刷卡操作,以将会员卡号、礼品编号发送到平台。 这也是我们目前尚未解决的问题,我们将这个需求扩展以后,形成了以下这样2条需求:“某志愿者通过某终端刷卡机参加了某活动,获得了多少积分;某志愿者通过某终端刷卡机兑换了某礼品,消费了多少积分”。为了实现这2条需求,团委领导、公司老板及我先后接触了多家公司,第1家是建行苏州分行,我们计划使用建行的信用卡或者借记卡来实行会员卡的功能,刷卡终端采用银联POS机或建行其它设备来实现,但后来由于建行信用卡发卡需要较多的用户信息,并且信用卡需要年费,未成立人需要监护人签字等条件,建行借记卡不能零消费,还有小额管理费等条件,我们和建行的洽谈就结束了;第2家我们找的是中国移动苏州分公司,刚开始他们给我们介绍了1款叫做CUPMobile智能SD卡的产品,这款产品是第3方供应商提供的,叫做海瑞斯信息科技,这款产品大小和1般mini sdcard相仿,可以作为普通的sdcard插入手机sdcard插槽中,不同的是该sd卡是智能sd卡,带有可以和终端设备进行交互的芯片,能够进行编程罢了,该方案后来由于必须走银联通道而告终,因为走银联通道意味着每次刷卡银联就要收取手续费,并且银联也不允许零消费操作;第3家还是中移苏分,不过这次他们推荐的是他们自己的产品,1张带有天线的芯片卡,可以放进普通的手机里,如果放不进去的,也可以做成1张普通IC卡片,无奈该方案也不完美,就是该方案终端设备上相配套的终端软件需要独立开发,这是我们目前的方案1。 当前该项目即将要结束,却陷入僵局,没有较完美的终端刷卡方案。期间我也计划了另外1套方案,使用二维码技术,每次志愿者上网报名活动和兑换礼品,我们生成1个唯一的2维码图片给志愿者,他可以选择打印或者保存,我们也可以通过彩信通道将2维码图片发送至他的手机上,志愿者只要活动结束或者礼品兑换现场将2维码图片出示并在电脑或手机前1扫,我们就可以获得该二维码图片所代表的网址信息,我们将网址打开就实现了刷卡,这是我们目前的方案2。 这个项目采用的是PHP,使用的Zend Framework MVC方式,目前90%功能部分和页面已经完成,但是时间相当紧迫,辛苦了这帮弟兄们了。

如果你的空间提供商不支持中文url路径

首先需要交待的是我使用的空间服务商是ipage,为什么使用国外的服务商呢,因为我讨厌国内复杂的icp备案和薄弱的空间功能。其实我也可以使用公司的服务器,无耐也需要去电信备案的,还是自己花100$买个吧。 早晨在ipage的live chat和服务员聊了聊,他说他们的空间是不支持中文字符路径的,所以只要是路径中包含中文字符(哪怕是转码后的)都会有问题的。 之前的文章说了如何解决word press 3.21中关于中文tag和目录的问题,我现在发现那并不是好的方法,因为在点击链接的时候,居然将所有关于中文的字符给省略了,造成信息获得的不正确。 其实我们还有1个方法的,就是给目录和标签起个别名,这是1个通用的好方法,虽然麻烦了1点,每次写好文章以后,还需要打开文章标签去给标签起个英文字符的名字,但这是1个安全的方法。 那就这样。不知道我说的是否给你带来了帮助?

WordPress 3.21中文Tag及目录的1种解决方法

我想大家都知道,在WordPress 3.21之前的解决方法,互联网上1搜1大片,由于本人并没有从事过PHP编程,不是很了解,本虚拟空间提供商是美国的Ipage,Debian系统,Apache2.2,其中对于UrlPath中包含中文字符处理可能有问题,所以需要调整1下,我的方法是对于Tag和Category中包含中文字符的话,全部不进行UrlRewrite,依旧作为普通的Querystring传递,方法如下: 修改wp-includes/rewrite.php第1012行 function get_extra_permastruct($name) { if ( empty($this->permalink_structure) ) return false; if ( isset($this->extra_permastructs[$name]) ) return $this->extra_permastructs[$name][0]; return false; } 注意将 if ( empty($this->permalink_structure) ) 修改为 if ( empty($this->permalink_structure) )