Submitted by gouki on 2011, August 11, 3:15 PM
这两天买了三本书,作为公司的资料。
head first设计模式,这本书相对是从浅入深,还不错
代码大全2精华本,这本就相对较简单了。。
编程珠玑,虽然做WEB开发看这个书好象有点浪费,但其实不然,还是可以看看的。
其他同事买了点算法、数据结构类的书,到时候也可以抢来看看。
我自己是买了head first的另外两本书,一本是项目管理的,一本是ios开发,感觉好象都是浅显易懂。
最近用脑图用多了一点,画画啥的都方便很多了,看来以后出规划可以直接用脑图出了
Tags: 设计模式
Misc | 评论:0
| 阅读:14398
Submitted by gouki on 2011, August 9, 10:32 PM
说实话,这个插件等了很久了。自从NB升级到7.0了,原来的scala插件就再也不能用了,即使用了以前的插件,也无法在新版的NB下运行。
直到前一阵子才发现,原来,终于有人更新了这个插件。。
怕多介绍了之后会影响别人的想法,我也不能过分主观的说太多这个插件的优点,就平常的介绍一下下吧。官网地址是:http://plugins.netbeans.org/plugin/36598/nbscala-2-8-x
官方的介绍就一句话:Scala plugin for NetBeans 7.0, works with Scala 2.8.x
附了一张小图片:
想用的人可以开始用了。
Tags: netbeans
Software | 评论:0
| 阅读:17416
Submitted by gouki on 2011, August 8, 10:33 PM
真TMD纠结,为了这么备案,我现在真是吐血了。
原来的PR5都6、7年了,原来的备案都也6、7年,现在可好,备案突然消失,PR也降了1。
在这个神奇的国度,还有什么不能理解的,想想我也麻木了。
主要还是国外的VPS等不太方便,事实上我的站也几乎都保持着稳定,所以要再等等,如果顺利的话,还是准备迁移了。否则再这么折腾个几次,我是受不了了。
求理解。
Tags: pr
Misc | 评论:1
| 阅读:15100
Submitted by gouki on 2011, August 8, 10:20 PM
在项目中遇到文件上传的问题,这时候需要用到CFileValidator,但是官方的验证中少了一点点的处理,比如,对于图片,我只想上传尺寸正好是300x500的图片。怎么办?
所以我做了一点小小的扩展,于是我在rules里面加了这么两条:
PHP代码
- array('picname', 'application.validators.Myfile', 'on'=>'insert','types'=>'jpg,png','wrongType'=>'只允许上传jpg或者PNG','maxSize' => 1024*300,'tooLarge' => '图片最大只支持300K','imageSize'=>'768x1024','wrongImageSize'=>'对不起,图片尺寸只支持768*1024'),
- array('picname', 'application.validators.Myfile', 'on'=>'update','types'=>'jpg,png','wrongType'=>'只允许上传jpg或者PNG','maxSize' => 1024*300,'tooLarge' => '图片最大只支持300K','imageSize'=>'768x1024','wrongImageSize'=>'对不起,图片尺寸只支持768*1024','allowEmpty'=>true,),
数组的第二个字段就是一个全路径,告诉rules,对于picname用的是application.validators.Myfile类。这个类其实很简单,只是简单的扩展了官方的CFileValidator类,大致如下:
PHP代码
- class Myfile extends CFileValidator{
- public $imageSize;
- public $wrongImageSize;
-
-
-
-
-
-
-
- protected function validateFile($object, $attribute, $file){
- parent::validateFile($object,$attribute,$file);
- if($this->imageSize!=''&&strpos($this->imageSize,"x")!==false){
- list($width,$height) = @getimagesize($file->getTempName());
- $imageSize = sprintf("%sx%s",$width,$height);
- if($imageSize != $this->imageSize){
- $message=$this->wrongImageSize!==null?$this->wrongImageSize : Yii::t('yii','The file "{file}" cannot be uploaded. Only files with these size are allowed: {imagesize}.');
- $this->addError($object,$attribute,$message,array('{file}'=>$file->getName(), '{extensions}'=>$this->imageSize));
- }
- }
- }
- }
我这种只是简单的判断是否与指定尺寸相符,如果需要检测小于指定范围的图片,那就需要多一点的判断了,也不会太难啦。主要是一个思路(感谢烂桔提供思路)
Tags: yii
PHP | 评论:0
| 阅读:16953
Submitted by gouki on 2011, August 7, 10:43 PM
这是一个简单的方法,其实是两种方法的其中一种:xml2array 和 array2xml 中的一种啦。
但因为array2xml的时候,没有办法做到更好的把attributes做到更好,因此,就折腾了一些简单的处理方法:
array2xml是hightman的方法的简版。我自己改了一些:
PHP代码
- function array2xml($var, $type = 'root', $tag = '') {
- $ret = '';
- if (!is_int($type)) {
- if ($tag)
- return array2xml(array($tag => $var), 0, $type); else {
- $tag .= $type;
- $type = 0;
- }
- }
- $level = $type;
- $indent = str_repeat("\t", $level);
- if (!is_array($var)) {
- $ret .= $indent . '<' . $tag;
- $var = strval($var);
- if ($var == '') {
- $ret .= ' />';
- } else if (!preg_match('/[^0-9a-zA-Z@\._:\/-]/', $var)) {
- $ret .= '>' . $var . '</' . $tag . '>';
- } else {
- $ret .= "><![CDATA[{$var}]]></{$tag}>";
- }
-
-
-
- $ret .= "\n";
- } else if (!(is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) && !emptyempty($var)) {
- foreach ($var as $tmp)
- $ret .= array2xml($tmp, $level, $tag);
- } else {
- $ret .= $indent . '<' . $tag;
- if ($level == 0)
- $ret .= '';
- if (isset($var['@attributes'])) {
- foreach ($var['@attributes'] as $k => $v) {
- if (!is_array($v)) {
- $ret .= sprintf(' %s="%s"', $k, $v);
- }
- }
- unset($var['@attributes']);
- }
- $ret .= ">\n";
- foreach ($var as $key => $val) {
- $ret .= array2xml($val, $level + 1, $key);
- }
- $ret .= "{$indent}</{$tag}>\n";
- }
- return $ret;
在其中强加了attributes。比较恶心的方法啦。。
然后xml2array,其实以前写过,但写的不太好,所以我这次抄的是ibm的网站上的xml2json中的代码:
PHP代码
- define ("DEBUG", false);
-
- define ("MAX_RECURSION_DEPTH_ALLOWED", 25);
-
- define ("EMPTY_STR", "");
-
- define ("SIMPLE_XML_ELEMENT_OBJECT_PROPERTY_FOR_ATTRIBUTES", "@attributes");
-
- define ("SIMPLE_XML_ELEMENT_PHP_CLASS", "SimpleXMLElement");
-
-
-
-
-
-
- public static function xml2array($simpleXmlElementObject, $getAttributes = false , &$recursionDepth = 0 ) {
-
- if ($recursionDepth > MAX_RECURSION_DEPTH_ALLOWED) {
-
- return (null);
- }
- if ($recursionDepth == 0) {
- if (get_class($simpleXmlElementObject) != SIMPLE_XML_ELEMENT_PHP_CLASS) {
-
-
- return (null);
- } else {
-
-
- $callerProvidedSimpleXmlElementObject = $simpleXmlElementObject;
- }
- }
- if (get_class($simpleXmlElementObject) == SIMPLE_XML_ELEMENT_PHP_CLASS) {
-
- $copyOfsimpleXmlElementObject = $simpleXmlElementObject;
-
- $simpleXmlElementObject = get_object_vars($simpleXmlElementObject);
- }
-
- if (is_array($simpleXmlElementObject)) {
-
- $resultArray = array();
-
- if (count($simpleXmlElementObject) <= 0) {
-
-
- return (trim(strval($copyOfsimpleXmlElementObject)));
- }
-
- foreach ($simpleXmlElementObject as $key => $value) {
-
-
-
-
-
-
-
-
-
-
-
- $recursionDepth++;
- if($key == '@attributes' && $getAttributes == true){
- foreach(self::xml2array($value,$getAttributes, $recursionDepth) as $k=>$v){
- $resultArray[$k]=$v;
- }
- }else{
- $resultArray[$key] = self::xml2array($value,$getAttributes, $recursionDepth);
- }
-
- $recursionDepth--;
- }
- if ($recursionDepth == 0) {
-
-
-
-
- $tempArray = $resultArray;
- $resultArray = array();
- $resultArray[$callerProvidedSimpleXmlElementObject->getName()] = $tempArray;
- }
- return ($resultArray);
- } else {
-
-
- return (trim(strval($simpleXmlElementObject)));
- }
- }
改过其中的几行代码,否则会报错,改了哪几行我忘了。。官网地址是:http://www.ibm.com/developerworks/xml/library/x-xml2jsonphp/
这里还有一个:http://www.zenme.org/?action=show&id=270,可以参考一下
Tags: xml2array
PHP | 评论:0
| 阅读:17756