作为一个不是科班出身、没有正规学习过计算机知识的架构师,想在这里把我这几年学习的经历体验和大家分享一下,谈谈自己对架构师成长之路的一些感想。阅读全文
1. 以各种借口拒绝单元测试Unit Test,比较常用的是“你没有足够的时间(进行单元测试)”。

2. 尝试单元测试并且立刻开始在自己的博客商鼓吹单元测试和测试驱动开发Test Driven Development的好处。

3. 单元测试一切。为了能够完成单元测试,而将私有private的方法和属性修改为内部internal;为了达到单元测试覆盖率100%而测试getter() 和 setter() 属性(方法)。

4. 无法忍受脆弱的单元测试,在没有弄明白是什么的时候,就匆忙转向“集成测试" integration test。

5. 发现了一种模拟 mocking 框架,并且乐于使用强制语义(strict semantics)。

6. 模拟mock所有可能模拟mocked的对象。

7. 开始真正有效单元测试。

你也可以参看如下文章:

http://www.xiangdong.org/blog/post/1665/
http://www.xiangdong.org/blog/post/1716/
http://www.xiangdong.org/blog/post/1354/

http://www.xiangdong.org/blog/visit.php?job=viewresult&sid=c642dcc3563a1ce54c5f3885b97b0105
在历史的长河中,人们的生命是短暂的。我们的具体事业也是短暂的。这短暂的生命、短暂的事业也许是过于拥挤!拥挤得透不过气来。积极的人生应走透得气的人生,积极的事业,应走心灵与事业和谐升华的事业。这种和谐必须留有生命、留有事业的空地。有了一块空地,就可以在这空地徘徊。阅读全文
工业生产中经常遇到复杂的数据信息处理问题,需要大运算量的矩阵计算及对分析结果进行实时、直观的图形化显示。Matlab是集数值分析、矩阵运算、信号处理和图形显示于一体的高性能数学软件,将其强大的计算功能与VB在图形用户界面开发方面的优势结合起来,实现应用系统的无缝集成,对于有效缩短开发周期、优化系统性能是十分有意义的。下面将分别讨论Matlab与VB集成的四种方法。 阅读全文
摘要:基于某食品加工严格控制温度的需求,提出温度监测系统的总体设计方案,介绍在Matlab环境下串口中断通信的特点,详细描述基于事件驱动的串口中断通信的方法和步骤,最后给出具体的编程方法,并就如何修改回调函数提出几个需要关注的问题。该方法实用可靠,已成功应用。阅读全文
最近从keso的分享里面找到几个很实用的博客,顺着他们的友情链接,又找到几个比较实用的博客。这些博客的实战性比较强,跟分享下。阅读全文
SORT_REGULAR - compare items normally (don't change types)
SORT_NUMERIC - compare items numerically
SORT_STRING - compare items as strings
SORT_LOCALE_STRING - compare items as strings, based on the current locale. Added in PHP 4.4.0 and 5.0.2. Before PHP 6, it uses the system locale, which can be changed using setlocale(). Since PHP 6, you must use the i18n_loc_set_default() function.

回忆未来(372647693)  10:45:15
如何把print_r打印出来的调试数组迅速放到php代码里面生成新的数组调试?
膘叔(19129540)  10:46:13
var_dump
膘叔(19129540)  10:46:15
。。。。
膘叔(19129540)  10:46:28
var_dump($data , true);
莫莫(3296320)  10:46:36
print_r之前的赋个值就行了
回忆未来(372647693)  10:56:03
喔,谢谢啊。
汗,对数组操作太弱了,资料到处翻,还是只有一维数组的方便排序方法,却找不到二维的.  
  MATLAB用久了才知道PHP对数的操作很弱.-_-!!  
  
  一个二维数组:  
  
  $aclass[0]["acid"]   =   1;  
  $aclass[0]["acorder"]   =   3;  
  $aclass[0]["acname"]   =   "入门指南";  
  $aclass[0]["acinfo"]   =   "PHP基础知识";  
  
  $aclass[1]["acid"]   =   2;  
  $aclass[1]["acorder"]   =   1;  
  $aclass[1]["acname"]   =   "应用技巧";  
  $aclass[1]["acinfo"]   =   "PHP编程技巧总结";  
  
  $aclass[2]["acid"]   =   3;  
  $aclass[2]["acorder"]   =   2;  
  $aclass[2]["acname"]   =   "高级应用";  
  $aclass[2]["acinfo"]   =   "PHP程序的高级应用";  
  
  问题一:   问题很简单,怎么按照acorder升序和降序来排列这几个数组,值不变索引不变.  
  print_r的结果应该是:  
  
  Array  
  (  
  
          [0]   =>   Array  
                  (  
                          [acid]   =>   2  
                          [acorder]   =>   1  
                          [acname]   =>   应用技巧  
                          [acinfo]   =>   PHP编程技巧总结  
                  )  
  
          [1]   =>   Array  
                  (  
                          [acid]   =>   3  
                          [acorder]   =>   2  
                          [acname]   =>   高级应用  
                          [acinfo]   =>   PHP程序的高级应用  
                  )  
  
          [2]   =>   Array  
                  (  
                          [acid]   =>   1  
                          [acorder]   =>   3  
                          [acname]   =>   入门指南  
                          [acinfo]   =>   PHP基础知识  
                  )  
  }  
  有没有其它详细的排序方案?自定义的多维数组排序怎么做?给个资料参考也行,我喜欢自己看书理解.  
  
  问题二:   如何取得[acid]   =>   1的那个数组的全部或部分元素?比如我要取得[acid]   =>   1的那个数组[acname]   索引所指向的值,怎么做简单效率高?  
  
  两个问题100分,晚上回来结帖子,郁闷,今天访问老出错.可用分竟然不增加,昏死.


名次排列  
  
  $grade   =   array("score"   =>   array(70,   95,   70.0,   60,   "70"),  
                                "name"   =>   array("Zhang   San",   "Li   Si",   "Wang   Wu",  
                                                                "Zhao   Liu",   "Liu   Qi"));  
  array_multisort($grade["score"],   SORT_NUMERIC,   SORT_DESC,  
                                  //   将分数作为数值,由高到低排序  
                                  $grade["name"],   SORT_STRING,   SORT_ASC);  
                                  //   将名字作为字符串,由小到大排序  
  var_dump($grade);  
    
  
  上例输出结果如下:   array(2)   {  
      ["score"]=>  
      array(5)   {  
          [0]=>  
          int(95)  
          [1]=>  
          string(2)   "70"  
          [2]=>  
          float(70)  
          [3]=>  
          int(70)  
          [4]=>  
          int(60)  
      }  
      ["name"]=>  
      array(5)   {  
          [0]=>  
          string(5)   "Li   Si"  
          [1]=>  
          string(6)   "Liu   Qi"  
          [2]=>  
          string(7)   "Wang   Wu"  
          [3]=>  
          string(9)   "Zhang   San"  
          [4]=>  
          string(8)   "Zhao   Liu"  
      }  
毕竟是老外总结的,可能是有些文化差异,说到底 还是态度问题 但是具体到显而易见的实例来 让人读了为之思考就明朗多了,转载如下:

读过由Stephen Covey发现的90/10原理,您的一生或许会有所改变,至少,您对待事情的态度会与以前不一样了。
阅读全文
Joomla和Xoops、Plone一样都是很知名的开源(免费)内容管理系统,但是在多次使用之后,不得不放弃它,它有很多免费CMS系统固有的问题。 阅读全文
一、linux svn co到指定目录不带svn链接的Url后缀方法:
下面这样避免把codes也检出到目录中:

而直接这样会有codes目录在本地的:


二、删除所有.svn目录:
当使用了svn版本控制系统后每个目录下都会有一个.svn目录存在,开发完当交付产品或者上传到服务器时一般要把这些目录删除,这里总结了一下在linux和win下的办法。

一、在linux下

删除这些目录是很简单的,命令如下

find . -type d -name ".svn"|xargs rm -rf

或者

find . -type d -iname ".svn" -exec rm -rf {} \;  

全部搞定。(http://tech.techweb.com.cn/redirect.php?fid=26&tid=205673&goto=nextnewset)



二、在windows下用以下法子:
1、在项目平级的目录,执行dos命令:
xcopy project_dir project_dir_1 /s /i


2、或者在项目根目录执行以下dos命令
for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"

其实第二种方法可以用来干很多事的,比如把代码中的.svn替换为任意其他文件名并在硬盘根目录下执行,就可以从硬盘上删除所有的这个文件啦。

3、加注册表

Jon Galloway提供了一段注册表代码,可以将”Delete SVN Folders”命名增加到资源管理器的右键上,这样,鼠标点两下就能把选中目录下的所有.svn目录干掉了。Works just great!

代码为:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]@=”Delete SVN Folders“

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]@=”cmd.exe /c \”TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \”%1\” %%f IN (.svn) DO RD /s /q \”%%f\” \”“

将这段代码保存为一个.reg文件,双击确认导入注册表即可。
secureCRT的登录sudo脚本来源:
http://oracledba.spaces.live.com/blog/cns!57D0C396BA028F14!276.entry
secureCRT的登录sudo脚本
如果你和我一样每天要开很多secureCRT窗口并且需要sudo(或者其他的事情),并且sudo还设置了timeout,那么一定要阅读这篇文章

一开始没每开一个secureCRT窗口总是要重复下面的事情:
sudo su - oracle
Password:
在等待sudo su 的时候经常会timeout,后来到google,baidu上去找自动sudo 的脚本也没有找到,最后还是乖乖的翻secureCRT的help文档解决了这个问题。

在secureCRT安装目录下C:\Program Files\SecureCRT\scripts
打开example1.vbs


#$language = "VBScript"
#$interface = "1.0"

Sub main
  ' turn on synchronous mode so we don't miss any data
  crt.Screen.Synchronous = True

  ' Wait for a string that looks like "login: " or "Login: "
  crt.Screen.WaitForString "ogin: "

  ' Send your username followed by a carriage return
  crt.Screen.Send "username" & VbCr

  ' Wait for a tring that looks like "password: " or "Password: "
  crt.Screen.WaitForString "assword:"

  ' Send your password followed by a carriage return
  crt.Screen.Send "password" & VbCr

  ' turn off synchronous mode to restore normal input processing
  crt.Screen.Synchronous = False
End Sub


修改username 为sudo su - oracle
修改password 为你自己的password
然后在session options里面设置logon script为该文件

最后记得把windows里面的权限设定为尽量小阅读全文
平时多人调试程序的时候,特别是页面级别和接口调用级别的,往往不希望有一些输出,但是这个时候出现一个bug或者要调试一下返回值或者它有可能是一个数组,这个时候下面这个函数就可以派上用场了,呵呵:
<?php
/**
* 把数组和字符串写入文件函数
*
* @param array or int string  $everything
* @param string $path
*/
function array2log($everything,$path = "/tmp/array2log.txt")
{
  if(is_array($everything))
  {
    $everything = var_export ( $everything,True);      
  }
  $return = file_put_contents($path,$everything,FILE_APPEND);  
}
$array = array("dfdfdf","dfdfdfdf","dfdf");
array2log($array);
?>




[root@vm0000055 ~]# tail -f /tmp/array2log.txt
array (
  0 => 'dfdfdf',
  1 => 'dfdfdfdf',
  2 => 'dfdf',
)




array (
  0 => 'dfdfdf',
  1 => 'dfdfdfdf',
  2 => 'dfdf',
)



版权所有,请勿转载,要转载请注明出处,呵呵!
  `source` char(255) NOT NULL,
  `score` int(11) NOT NULL,
        

Mysql设置NOT NULL 在pdo插入该字段source为空时候返回false,初看你就奇怪了,为何设置的时候为not null,但是在插入的时候会为null呢?
     是这样的,当时开发时候的需求不很明显,但是最后在开发收尾的时候发现这个字段可有可无,而且我们提供的是接口调用,人家就会问了,你这个参数填写什么,而很有可能就说那个参数啊,可以为空啊,呵呵,这下好了,那个字段刚好可能会出现NULL,和NOT NULL冲突,于是插入数据库出现返回false,而我们又是接口调用,尽量做到给用户返回成功的代码,于是这个插入数据库错误的问题可能会隐藏,最后解决办法是将数据库source字段改为可以为null!



ALTER TABLE `a` CHANGE `a` `a` INT( 11 ) NOT NULL DEFAULT NULL
ALTER TABLE `a` CHANGE `a` `a` INT( 11 ) NULL DEFAULT NULL
阅读全文
原来以为global和$GLOBALS除了写法不一样以为,其他都一样,可是在实际应用中发现,2者的区别还是很大的!
先看下面的例子:
<?php
// 例子1
function test_global() {
  global $var1, $var2;
  $var2 =& $var1;
}
function test_globals() {
  $GLOBALS['var3'] =& $GLOBALS['var1'];
}
$var1 = 5;
$var2 = $var3 = 0;
test_global();
print $var2 ."\n";
test_globals();
print $var3 ."\n";
?>

执行结果为:


0
5

阅读全文
EditPlus5.0注册码:
Vovan
3AG46-JJ48E-CEACC-8E6EW-ECUAW
亲测5.0 build 651 64bit可用。
亲测5.1 build 1826 64bit可用。


Editplus 选中一行: ctrl+r
Editplus 复制一行: ctrl+r选择行,然后ctrl+c复制。
复制一行到下一行中:Editplus有:Ctrl+j 复制上一行的一个字符到当前行
Editplus 删除一行: Shift+Alt+Delete 直接删除当前行, 或:shift+Delete也成。
移动一行到上一行/下一行: alt+shift+向上键(向下键)
------------------------------------------------------------------------------------------------------------------------
ViewLineBreak       Alt+Shift+L       显示或隐藏换行符 
ViewLineNumber     Ctrl+Shift+L       显示或隐藏当前文档的行号 
SearchFind         Alt+F3           查找指定文本 SearchFindNext     F3             查找下一个匹配文本 
SearchFindNextWord   Ctrl+F3           向下查找当前单词或选定的文本 SearchFindPrevious   Shift+F3         查找上一个匹配的文本 
SearchFindPrevWord   Ctrl+Shift+F3       向上查找当前单词或选定的文本
SearchFind         Alt+F3           查找指定文本 SearchFindNext     F3             查找下一个匹配文本 
SearchFindNextWord   Ctrl+F3           向下查找当前单词或选定的文本 SearchFindPrevious   Shift+F3         查找上一个匹配的文本 
SearchFindPrevWord   Ctrl+Shift+F3       向上查找当前单词或选定的文本
SearchMarkerPrev     Shift+F4         转到上一个标记位置 SearchMatchBrace     Ctrl+]           搜索一对匹配的括号 
SearchSelectBrace   Ctrl+Shift+]       搜索一对匹配的括号并选择该文本 
Editplus 标签切换:不同标签之间的切换可以通过鼠标,也可以用“Ctrl+Tab”键。
------------------------------------------------------------------------------------------------------------------------
如果是选取某一部分 用shift+Pageup shift+Pagedown 选取光标前面所有 和光标后面的所有
如果是逐行+选 shift+ 上下
Editplus 合并行: Ctrl+Shift+J    

删除多或者一行:Alt+Shift+Delete  删除当前行
删除单词:Alt+Delete  删除当前单词
反转大小写:Ctrl+K  反转选定文本的大小写
选择行:Ctrl+R  选择当前行
选择单词:Ctrl+W    选择当前单词(这个两个经常用到)
小写:Ctrl+L  转换选定的文本为小写
大写:Ctrl+U  转换选定的文本为大写
----------------------------------------------------------------------
操作上对单词的操作快捷键:
移动到上一个单词 Ctrl+Left 移动到上一个单词
选区扩展到上一个单词 Ctrl+Shift+Left 将选定区域扩展到上一个单词
移动到下一个单词 Ctrl+Right 移动到下一个单词
选区扩展到下一个单词 Ctrl+Shift+Right 将选定区域扩展到下一个单词


删除到行结束 Ctrl+Shift+Delete 删除到当前行结束位置
删除到单词结束 Ctrl+Delete 删除到当前单词结束位置
删除行 Alt+Shift+Delete 删除当前行
删除单词 Alt+Delete 删除当前单词
创建字符副本 Ctrl+- 复制上一行的一个字符到当前行
创建当前行副本 Ctrl+J 创建当前行的副本
----------------------------------------------------------------------
Editplus/UltraEdit打开的文件标签间切换的键盘快捷键:
写代码时都用键盘,这是切换文件时要去用鼠标点,比较麻烦。
这个键盘快捷键网上介绍的不多哦。
Ctrl+Tab或Ctrl + F6或 Ctrl+Shift+F6

editplus编辑perl/php双击选中变量的解决办法:
http://www.jeftom.com/?p=375

阅读全文
长着金色龙鳞的龙不是会长在水池里的,一旦遇到风雨,就会一飞冲天,藐视昆仑就是形容此人非凡人!应该是“金鳞岂是池中物,一遇风云便化龙”吧!长着金色龙鳞的鱼怎么会一直呆在一个普通水池里呢,一旦有了风云,就会一飞冲天,化身为龙。是说此人非比寻常,虽然现在还和普通人没什么区别,那是因为他还没有遇到机会,一旦机会来临,他就会成为一代霸主,主宰苍生。 长着金色鳞片的水中之物,怎么可能只是一般的鱼虾而已,早迟有天会因为遇到适当的机会成为飞天巨龙。   这个话的意思其实就是:是金子迟早会发光的!金鳞是指有才能之辈,鳞鱼鳞,支水中动物,就是说,金鳞不是泛泛之辈,而第二句话就是表面意思,一遇到风云(指的是机遇)变化成龙,龙时传说中的圣兽,古往今来,都是天之骄子的代称,言下之意就是金子总会发光,怀才总会有遇,就是时机不同罢了

风云里的

第一句是说风云能帮助雄霸

第二句是说风云也能毁掉雄霸

风云 是 聂风和步惊云

金鳞本来就不是生活在水池中的,只要遇到风云就会变成龙,它的成功和失败都取决于风云.这是《风云》里面的一句话。这句话,是说雄霸的!!!

原始出处《说岳全传》,说的是岳飞手下的大将余化龙
分页: 248/339 第一页 上页 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 下页 最后页 [ 显示模式: 摘要 | 列表 ]