Tuesday, 17. November 2009, 02:12:34
extjs, JavaScript
通常的写法
tbar: [{
... ...
}, {
... ...
}]
这样实现的工具条只有一行。
有时候工具条按钮比较多,一行放不下,需要加行。
简单的做法是:
tbar: new Ext.Panel({
border: false,
items:[{
xtype: 'toolbar',
items: [
... ...
]
}, {
xtype: 'toolbar',
items: [
... ...
]
}, {
xtype: 'toolbar',
items: [
... ...
]
}]
})
Tuesday, 10. November 2009, 10:15:07
Zend Framework, MySQL, PHP
修改 Zend/Db/Select.php, 增加以下代码
const FOUND_ROWS = 'foundrows';
const SQL_FOUND_ROWS = 'SQL_CALC_FOUND_ROWS';
protected static $_partsInit = array(
self::FOUND_ROWS => false,
... ...
);
/**
* Makes the query SELECT SQL_CALC_FOUND_ROWS.
*
* @param bool $flag Whether or not add SQL_CALC_FOUND_ROWS to SELECT.
* @return Zend_Db_Select This Zend_Db_Select object.
*/
public function foundRows($flag = true)
{
$this->_parts[self::FOUND_ROWS] = (bool) $flag;
return $this;
}
/**
* Render FOUND_ROWS clause
*
* @param string $sql SQL query
* @return string
*/
protected function _renderFoundRows($sql)
{
if ($this->_parts[self::FOUND_ROWS]) {
$sql .= ' ' . self::SQL_FOUND_ROWS;
}
return $sql;
}
以上代码的具体位置不再详述。
调用方法如下:
$select = $db->select()->foundRows()->from(
... ...
)->where(
... ...
);
$data = $db->fetchAll($select);
$stmt = $db->query("SELECT FOUND_ROWS() as cnt");
list($rec) = $stmt->fetchAll();
$count = $rec['cnt'];
Friday, 6. November 2009, 01:26:43
TOOL, JavaScript
收集了三个针对 JavaScript 的工具:
1.
JavaScript Lint用于 js 查错。
2.
YUI Compressor用于压缩 js 文件。
3.
Closure Compiler用于压缩和优化 js 文件。
我把以上三个工具都放在 C:\jsl 下面,并把该目录加入系统变量 PATH。
随后在 C:\jsl 下新作三个 bat 文件,分别如下:
jsl.bat@echo off
c:\jsl\jsl.exe -conf c:\jsl\jsl.default.conf -process "%1"
yuic.bat@echo off
java -jar C:\jsl\yuicompressor-2.4.2.jar -v --charset utf-8 -o "%2" "%1"
jsc.bat@echo off
java -jar c:\jsl\compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js "%1" > "%2"
使用例:
> jsl test.js
> yuic test.js test.min.js
> jsc test.js test.compiled.js
Monday, 2. November 2009, 01:09:27
google gae
GAE开发离不开两个很简单的命令,我是想起来才用一下,每次都上搜索引擎查询用法,费时费力,因此这儿做个笔记。
命令一dev_appserver.py appname命令二appcfg.py update appname详细用法请参考 Google 的文档:
dev_appserver.pyappcfg.py
Thursday, 15. October 2009, 04:37:57
Zend Framework
Magento开网店用,已经很有名气了,代码大而全,授权方式采用OSL 3.0。
Digitalus CMS内容管理系统,后台管理做得还不错,其代码可用于学习ZF。
Dodo用于搭建任务管理网站。 ZF的版本较新(目前是1.9.1),非常适合于学习ZF。
Wednesday, 30. September 2009, 09:20:51
PHP, WINDOWS
1. 下载 WampServer
网址:
http://www.wampserver.com/en/download.php2. 安装 WampServer
Windows 的标准安装步骤,连续点“下一步”即可。
3. 下载 Xdebug
网址:
http://xdebug.org/download.php页面上有好几个版本,刚开始一定会被迷惑,不知道该用哪个版本。
经过试验,我的环境(Windows XP)最终能用的是 5.3 VC6 (32 bit)。
(Apache 以外的服务器需用 nts 版本)
下载之后把文件移动(或复制)到 WampServer 的 php 的 ext 目录。
4. 编辑 php.ini
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
追加以下内容:
extension=php_xdebug-2.0.5-5.3-vc6.dll
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
追加以下内容:
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
5. 重新启动 WampServer 的 apache。
Tuesday, 29. September 2009, 01:33:50
Debug, Smarty, PHP
很简单的一句话,却常常忘记,因此记录一下:
{$var|@debug_print_var}
稍微复杂一点的用法:
{$var|@debug_print_var:2:100}
意思是缩进长度为2个空格,每行最多字数为100。
其他调试方法可以参考
这个(日文)
Tuesday, 15. September 2009, 05:23:54
Linux, Hosting, PHP
便宜的虚拟主机不提供 Shell,因此需要用命令实现的功能不大容易实现。
做网站经常要用 ln 命令创建链接,而要在一般的虚拟主机上就不得不想其他办法了。
不用命令的情况下,用程序倒也能解决一些问题,比如这个建立链接的目标,可用以下 PHP 程序实现:
<?php
$appLib = realpath(dirname(__FILE__) . '/../library');
$zfLib = realpath(dirname(__FILE__) . '/../../ZF');
symlink("$appLib/Zend", "$zfLib/Zend");
经测试,链接正常建立,然而不能正常工作,只能说虚拟主机的自我保护功能做得还不错。
Monday, 14. September 2009, 01:09:56
Zend Framework
用 Zend_Http_Client 可实现简单的 Proxy 功能,代码如下:
public function proxyAction()
{
$params = $this->_getAllParams();
if(!isset($params['url'])) {
echo 'URL未指定。';
} else {
$http = new Zend_Http_Client($params['url']);
$response = $http->request();
if ($response->getStatus() == 200) {
header('Content-Type: text/html; charset=utf-8');
echo mb_convert_encoding($response->getBody(), "utf-8", "auto");
} else {
echo 'HTTP通信错误发生。<br />' . $response->getStatus() . ": " . $response->getMessage();
}
}
}
用法:
http://domainname/proxy?url=http://....
Thursday, 10. September 2009, 02:05:20
function, PHP
新作了两个函数,结果没用上,放在在这儿以备用。
/**
* 按词分割字符串
* @param $str 元字符串
* @param $maxLength 单词最大长度
* @return array
*/
function splitInWords($str, $maxLength = 16) {
if(empty($str)) return array();
if($maxLength <= 0) $maxLength = 1;
$rawWords = explode(' ', $str);
$words = array();
foreach($rawWords as $word) {
$len = mb_strlen($word);
if($len > $maxLength) {
$pos = 0;
while($len > $maxLength) {
$words[] = mb_substr($word, $pos, $maxLength);
$pos += $maxLength;
$len -= $maxLength;
}
$words[] = mb_substr($word, $pos, $maxLength);
} else {
$words[] = $word;
}
}
return $words;
}
/**
* 按行(指定长度)分割字符串
* @param $str 元字符串
* @param $length 每行最大字符数
* @return array
*/
function splitInLines($str, $length = 80) {
$lines = array();
foreach(split("\n", $str) as $s) {
preg_match_all("/./u", $s, $matches);
$arr = $matches[0];
for($i = 0; $i < ceil(count($arr)/$length); $i++) {
$lines[] = join("", array_slice($arr, $i*$length, $length));
}
}
return $lines;
}
Showing posts 1 -
10 of 418.