子曰:干掉凤巢,远离虚假广告,他好我也好
在同时安装了AdBlock之类的过滤插件时本插件会无效,下载在下面:
Chrome: jiu_chrome.crx
搜狗3.0: jiu_sogou.sext每个人都是井底之蛙,区别只是井口的直径不同。
在同时安装了AdBlock之类的过滤插件时本插件会无效,下载在下面:
Chrome: jiu_chrome.crx
搜狗3.0: jiu_sogou.sext要想实现异步批量上传,大概有两种方式:隐藏iframe方式和flash控件。
而plupload是一个出色的批量上传插件,几乎不需要任何代码就可以实现一个漂亮的上传组件
它可以使用JqueryQueue、Jquery UI两种方式初始化,后者可以和Jquery UI结合实现风格的切换。
plupload最强大的地方在于你可以为它设置包括Flash、Silverlight、html4、html5、gears、browserplus等各种运行时环境,它会在初始化时逐个尝试,知道找到客户端支持的版本为止。也就是说,如果你按照
runtimes : 'gears,flash,silverlight,browserplus,html5,html4',
这样的方式来初始化的话,用chrome浏览器你会看到一个使用gears的版本,它能支持拖拽;在安装了flash控件的浏览器中是flash版本;在安装了silverlight的浏览器中看到的是silverlight版;如果都不支持的话会显示最基本的html4版,当然html4是不支持批量选择文件的,你只能将文件一个一个地加入到上传队列中。
plupload还能实现客户端文件类型和大小校验,超大文件自动分块(chunk)上传,自动生成唯一文件名(unique names),客户端调整图片大小等强大的功能。
最近一个项目需要批量导入Excel数据,要用到PHP读取Excel中的内容然后导入到数据库。很早之前就知道有一个叫做PHPExcel的类(官方网站)可以用来操作Excel,一直没有机会尝试,今天试用发现无比强大,下载后的源码包里有详细文档,几乎能实现手工操作Excel能实现的一切功能。
一个简单的读取Excel的例子如下:
$inputFileType = 'Excel2007';
$inputFileName = './public/files/import_user_template.xlsx';
$sheetname = 'Sheet1';
//指定Excel类型,创建一个reader
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
//设置只读取数据,不包括公式和格式
$objReader->setReadDataOnly(true);
//只读取指定的sheet
$objReader->setLoadSheetsOnly($sheetname);
$objPHPExcel = $objReader->load($inputFileName);
$curSheet = $objPHPExcel->getSheet(0);
//包含数据的最大列
$allColumn = $curSheet->getHighestColumn();
//包含数据的最大行
$allRow = $curSheet->getHighestRow();
for($currentRow = 1; $currentRow <= $allRow; $currentRow++){
for($currentCol = 'A'; $currentCol <= $allColumn; $currentCol++){
echo $curSheet->getCell($currentCol.$currentRow)->getValue()."\t";
}
echo "\r\n";
}
要在ThinkPHP中使用,把源码包中的Classes目录复制到ThinkPHP的Vendor目录下,改名为PHPExcel,然后调用Vendor方法载入
vendor('PHPExcel.PHPExcel');
可是这样一来发现读取Excel以后再调用M或者D方法实例化模型类时报找不到Model类的错误,经过研究发现是自动装载机制冲突,要解决冲突,需要在M或者D方法调用之前使用spl_autoload_register函数重新注册autoloader类
spl_autoload_register(array('Think','autoload'));
好吧,代码真的是可以写成诗的。忽然发现有一个叫做PerlYuYan的中文编程语言,它写出来的程序大概是这个样子的:
#!/usr/local/bin/perl
use Lingua::Sinica::PerlYuYan;
用警兮用嚴。
印道
1..1
哉兮
印編曰雜申雜申矣
又曰ok矣
又曰1矣
亂曰
國無人莫我知兮 又何懷乎故都
既莫足與為美政兮 吾將從彭咸之所居
这还不够,还可以写成五言诗啊有木有!
# The Sieve of Eratosthenes - 埃拉托斯芬篩法 use Lingua::Sinica::PerlYuYan; 用籌兮用嚴。井涸兮無礙 。印曰最高矣 又道數然哉。 。截起吾純風 賦小入大合。 。習予吾陣地 並二至純風。 。當起段賦取 加陣地合始。 。陣地賦篩始 繫繫此雜段。 。終陣地兮印 正道次標哉。 。輸空接段點 列終註泰來。
不得不佩服台湾的人文教育水平啊,一个程序员都能把代码搞成这样。
php默认会把session保存在 /tmp 下,但是当session文件过多时会对性能造成很大影响,设置分级目录是个好办法。
在 php.ini 中找到 session.save_path 将值设置为 session.save_path = '3;/tmp/session'; 即可开启三级目录保存session。但是php不会自动生成目录结构,这时可以借助源码包 ext/session 目录下的 mod_files.sh 来生成目录
$ bash mod_files.sh /tmp/session 3
生成完成后发现仍然不能生成session,纠结了半天,打开mod_files.bat才发现玄机,原来后面还需要带一个参数,对应于 php.ini 中的 session.hash_bits_per_character ,这个值默认是4,development和production版本的默认配置里是5,于是用下面的命令从新生成目录
$ bash mod_files.sh /tmp/session 3 5
终于可以登录了。