找回firefox的标签点击关闭功能

作者 : admin 于 2009年08月09日, 15:16:32
2009
08-9

最近安装了最新版firefox,发现一个很重要的功能没了,双击标签关闭的功能没了,寻找相关的配置也没有。

后发现有些机器的版本可以,有些不可以,详细比较后,发现原来是中国版的才有这个功能。

后安装中国版后此功能再现。

我一直认为这个功能很不错,遨游这类浏览器基本也是标配功能,而国际版的为什么就没有?

HTML1.5来了

作者 : admin 于 2009年07月01日, 04:06:26
2009
07-1

今天下载了firefox3.5,其中惊现HTML1.5标签。

看来真正的富媒体时代到来,html有赶超flex的势头?

  1. <video id="video" src="http://www.dailymotion.com/cdn/OGG-320x240/video/x9euyb?key=a99e7056808342ad0868b4decfe811c814044ec"></video>

针对尚趣网(vsuch.com)的简单优化

作者 : admin 于 2009年06月12日, 15:42:59
2009
06-12

最近,一友找我去优化apache,了解后,是vsuch.com网站的问题。

vsuch网站使用lamp+windows混合平台(汗),追究历史,原来网站用.net编写,后用php重构了整个网站。

整改前 Mysql运行在linux机器上,php运行在windows平台上,中间局域网方式连接。

网站日访问量不小,alexa排名6800,windows平台明显抗不住,经常莫名其妙的问题。(题外话:我最早维护的服务器也是windows,apache在上边很不稳定)

了解后,我感觉一台服务器就足矣,放弃了apache的方案,安装了nginx+php,数据库依然沿用原来的。

整改后,linux负载稍稍升高,mysql负载不变,http的负载在nginx下并没有表现出多高。顺利完成了迁移。

后公司又开通了cdn服务(有钱),速度有了很明显的提升。

-----------------------------------------

根据其公司目前的技术结构,我提出了很多优化和整改的想法,希望每个创业网站都能走好。

-----------------------------------------

singlekui@gmail.com: 孙. 谢谢你帮忙了. 我拿100元给买包烟抽抽. :)
我: ……
singlekui@gmail.com: 可以吗.也别介意呀.
我: 算了
就当玩了
singlekui@gmail.com: 啊..
说了给你点报酬的呢.
9:55 我: 就当玩了

做技术的,很多时候要学会一笑了之。

《web信息架构:设计大型网站》

作者 : admin 于 2008年10月14日, 20:33:08
2008
10-14

最近读书读疯了,疯狂得喜欢上了O,reilly的web2.0系列丛书。周末去书店,顺手买了这本《web信息架构:设计大型网站》。架构,本身就是个很宽泛的概念,信息架构,是干啥的,等我看完了再给大家解释。

我找到了一本好书:《Getting_Real》

作者 : admin 于 2008年09月05日, 17:37:40
2008
09-5

OpenOA-概况

作者 : admin 于 2008年09月02日, 08:58:53
2008
09-2

OpenOA旨在打造一种开放式的办公平台,松散的架构适合灵活增删模块,便于二次开发。
一期工程主要规划:
账户管理
人员信息管理
科室管理
这三个是OA的基础部分。
另外一个附加的功能是CRM模块,此模块计划仿照一个开源CRM进行编写。

PHP调用COM获得服务器硬件信息

作者 : admin 于 2008年08月24日, 10:23:19
2008
08-24
  1. function sys_windows() {
  2. $objLocator = new COM("WbemScripting.SWbemLocator");
  3. $wmi = $objLocator->ConnectServer();
  4. $prop = $wmi->get("Win32_PnPEntity");
  5. //CPU
  6. $cpuinfo = GetWMI($wmi,"Win32_Processor", array("Name","L2CacheSize","NumberOfCores"));
  7. $res['CPU个数'] = $cpuinfo[0]['NumberOfCores'];
  8. if (null == $res['CPU个数']) {
  9. $res['CPU个数'] = 1;
  10. }
  11. for ($i=0;$i<$res['cpu']['num'];$i++){
  12. $res['CPU型号'] .= $cpuinfo[0]['Name']."<br>";
  13. $res['二级缓存'] .= $cpuinfo[0]['L2CacheSize']."<br>";
  14. }
  15. // SYSINFO
  16. $sysinfo = GetWMI($wmi,"Win32_OperatingSystem", array('LastBootUpTime','TotalVisibleMemorySize','FreePhysicalMemory','Caption','CSDVersion','SerialNumber','InstallDate'));
  17. $res['操作系统版本'] = $sysinfo[0]['Caption']." ".$sysinfo[0]['CSDVersion'];
  18. $res['操作系统序列号'] = "{$sysinfo[0]['SerialNumber']} 于".date('Y年m月d日H:i:s',strtotime(substr($sysinfo[0]['InstallDate'],0,14)))."安装";
  19. //UPTIME
  20. $res['最后重启时间'] = $sysinfo[0]['LastBootUpTime'];
  21.  
  22.  
  23. $sys_ticks = 3600*8 + time() - strtotime(substr($res['最后重启时间'],0,14));
  24. $min = $sys_ticks / 60;
  25. $hours = $min / 60;
  26. $days = floor($hours / 24);
  27. $hours = floor($hours - ($days * 24));
  28. $min = floor($min - ($days * 60 * 24) - ($hours * 60));
  29. if ($days !== 0) $ress['day'] = $days."天";
  30. if ($hours !== 0) $ress['hours'] .= $hours."小时";
  31. $res['最后重启时间'] = $ress['day'].$ress['hours'].$min."分钟";
  32.  
  33. //MEMORY
  34. $res['物理内存'] = $sysinfo[0]['TotalVisibleMemorySize'];
  35. $res['剩余内存'] = $sysinfo[0]['FreePhysicalMemory'];
  36. $res['已使用内存'] = $res['物理内存'] - $res['剩余内存'];
  37. $res['使用率'] = round($res['已使用内存'] / $res['物理内存']*100,2);
  38.  
  39. $swapinfo = GetWMI($wmi,"Win32_PageFileUsage", array('AllocatedBaseSize','CurrentUsage'));
  40.  
  41. // TODO swp区获取
  42. $res['交换分区'] = $swapinfo[0][AllocatedBaseSize];
  43. $res['已经使用'] = $swapinfo[0][CurrentUsage];
  44. $res['剩余内存'] = $res['swapTotal'] - $res['swapUsed'];
  45. $res['使用率'] = (floatval($res['swapTotal'])!=0)?round($res['swapUsed']/$res['swapTotal']*100,2):0;
  46.  
  47. // LoadPercentage
  48. $loadinfo = GetWMI($wmi,"Win32_Processor", array("LoadPercentage"));
  49. $res['系统平均负载'] = $loadinfo[0]['LoadPercentage'];
  50.  
  51. return $res;
  52. }
  53.  
  54. function GetWMI($wmi,$strClass, $strValue = array()) {
  55. $arrData = array();
  56.  
  57. $objWEBM = $wmi->Get($strClass);
  58. $arrProp = $objWEBM->Properties_;
  59. $arrWEBMCol = $objWEBM->Instances_();
  60. foreach($arrWEBMCol as $objItem) {
  61. @reset($arrProp);
  62. $arrInstance = array();
  63. foreach($arrProp as $propItem) {
  64. eval("\$value = \$objItem->" . $propItem->Name . ";");
  65. if (empty($strValue)) {
  66. $arrInstance[$propItem->Name] = trim($value);
  67. } else {
  68. if (in_array($propItem->Name, $strValue)) {
  69. $arrInstance[$propItem->Name] = trim($value);
  70. }
  71. }
  72. }
  73. $arrData[] = $arrInstance;
  74. }
  75. return $arrData;
  76. }

wordpress奥运风格版正式上线!

作者 : admin 于 2008年08月16日, 15:21:57
2008
08-16

经过一中午将近两个小时的努力,奥运风格终于上线!

40 Tips for optimizing your php code

作者 : admin 于 2008年08月05日, 10:22:25
2008
08-5
  1. If a method can be static, declare it static. Speed improvement is by a factor of 4.
  2. echo is faster than print.
  3. Use echo’s multiple parameters instead of string concatenation.
  4. Set the maxvalue for your for-loops before and not in the loop.
  5. Unset your variables to free memory, especially large arrays.
  6. Avoid magic like __get, __set, __autoload
  7. require_once() is expensive
  8. Use full paths in includes and requires, less time spent on resolving the OS paths.
  9. If you need to find out the time when the script started executing, $_SERVER[’REQUEST_TIME’] is preferred to time()
  10. See if you can use strncasecmp, strpbrk and stripos instead of regex
  11. str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4
  12. If the function, such as string replacement function, accepts both arrays and single characters as arguments, and if your argument list is not too long, consider writing a few redundant replacement statements, passing one character at a time, instead of one line of code that accepts arrays as search and replace arguments.
  13. It’s better to use switch statements than multi if, else if, statements.
  14. Error suppression with @ is very slow.
  15. Turn on apache’s mod_deflate
  16. Close your database connections when you’re done with them
  17. $row[’id’] is 7 times faster than $row[id]
  18. Error messages are expensive
  19. Do not use functions inside of for loop, such as for ($x=0; $x < count($array); $x) The count() function gets called each time.
  20. Incrementing a local variable in a method is the fastest. Nearly the same as calling a local variable in a function.
  21. Incrementing a global variable is 2 times slow than a local var.
  22. Incrementing an object property (eg. $this->prop++) is 3 times slower than a local variable.
  23. Incrementing an undefined local variable is 9-10 times slower than a pre-initialized one.
  24. Just declaring a global variable without using it in a function also slows things down (by about the same amount as incrementing a local var). PHP probably does a check to see if the global exists.
  25. Method invocation appears to be independent of the number of methods defined in the class because I added 10 more methods to the test class (before and after the test method) with no change in performance.
  26. Methods in derived classes run faster than ones defined in the base class.
  27. A function call with one parameter and an empty function body takes about the same time as doing 7-8 $localvar++ operations. A similar method call is of course about 15 $localvar++ operations.
  28. Surrounding your string by ‘ instead of ” will make things interpret a little faster since php looks for variables inside “…” but not inside ‘…’. Of course you can only do this when you don’t need to have variables in the string.
  29. When echoing strings it’s faster to separate them by comma instead of dot. Note: This only works with echo, which is a function that can take several strings as arguments.
  30. A PHP script will be served at least 2-10 times slower than a static HTML page by Apache. Try to use more static HTML pages and fewer scripts.
  31. Your PHP scripts are recompiled every time unless the scripts are cached. Install a PHP caching product to typically increase performance by 25-100% by removing compile times.
  32. Cache as much as possible. Use memcached – memcached is a high-performance memory object caching system intended to speed up dynamic web applications by alleviating database load. OP code caches are useful so that your script does not have to be compiled on every request
  33. When working with strings and you need to check that the string is either of a certain length you’d understandably would want to use the strlen() function. This function is pretty quick since it’s operation does not perform any calculation but merely return the already known length of a string available in the zval structure (internal C struct used to store variables in PHP). However because strlen() is a function it is still somewhat slow because the function call requires several operations such as lowercase & hashtable lookup followed by the execution of said function. In some instance you can improve the speed of your code by using an isset() trick.Ex.if (strlen($foo) < 5) { echo “Foo is too short”; }

    vs.

    if (!isset($foo{5})) { echo “Foo is too short”; }

    Calling isset() happens to be faster then strlen() because unlike strlen(), isset() is a language construct and not a function meaning that it’s execution does not require function lookups and lowercase. This means you have virtually no overhead on top of the actual code that determines the string’s length.

  34. When incrementing or decrementing the value of the variable $i++ happens to be a tad slower then ++$i. This is something PHP specific and does not apply to other languages, so don’t go modifying your C or Java code thinking it’ll suddenly become faster, it won’t. ++$i happens to be faster in PHP because instead of 4 opcodes used for $i++ you only need 3. Post incrementation actually causes in the creation of a temporary var that is then incremented. While pre-incrementation increases the original value directly. This is one of the optimization that opcode optimized like Zend’s PHP optimizer. It is a still a good idea to keep in mind since not all opcode optimizers perform this optimization and there are plenty of ISPs and servers running without an opcode optimizer.
  35. Not everything has to be OOP, often it is too much overhead, each method and object call consumes a lot of memory.
  36. Do not implement every data structure as a class, arrays are useful, too
  37. Don’t split methods too much, think, which code you will really re-use
  38. You can always split the code of a method later, when needed
  39. Make use of the countless predefined functions
  40. If you have very time consuming functions in your code, consider writing them as C extensions
  41. Profile your code. A profiler shows you, which parts of your code consumes how many time. The Xdebug debugger already contains a profiler. Profiling shows you the bottlenecks in overview
  42. mod_gzip which is available as an Apache module compresses your data on the fly and can reduce the data to transfer up to 80%
  43. Excellent Article about optimizing php by John Lim

山外有山,传说中的大网站

作者 : admin 于 2008年07月30日, 08:57:14
2008
07-30

网站技术总是无止境的,不同的网站有不同的技术架构。昨天接触了某门户技术总监,简单聊了些网站技术,才知道自己原来还在山脚。好多技术不是免费开源能换得来的,在实现一些事情的时候,商用软件能更快解决一些问题,节约的时间就是我们的利润。

但一般的中小网站依然提倡免费开源的解决方案,造成我思想上一些束缚, 没有去发散性的组织一些解决方案。这块原来是我发展的失误。曾经一个些java的大哥提醒我,不要过分迷信开源。事实的确是这样。以后逐渐接触好的商用软件,望有条件的朋友给予支持。

 Page 1 of 3  1  2  3 »