<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>一个程序猿 &#187; 技术存档</title>
	<atom:link href="http://www.sunboyu.cn/category/tech-doc/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sunboyu.cn</link>
	<description>时光不会倒流,脚步总要前进</description>
	<pubDate>Tue, 31 Jan 2012 10:50:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Android权限列表permission</title>
		<link>http://www.sunboyu.cn/2011/06/22/android%e6%9d%83%e9%99%90%e5%88%97%e8%a1%a8permission.shtml</link>
		<comments>http://www.sunboyu.cn/2011/06/22/android%e6%9d%83%e9%99%90%e5%88%97%e8%a1%a8permission.shtml#comments</comments>
		<pubDate>Wed, 22 Jun 2011 08:43:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1416</guid>
		<description><![CDATA[android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问&#8221;properties&#8221;表在checkin数据库中，改值可以修改上传( Allows read/write access to the &#8220;properties&#8221; table in the checkin database, to change values that get uploaded)
android.permission.ACCESS_COARSE_LOCATION允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location)
android.permission.ACCESS_FINE_LOCATION允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands)
android.permission.ACCESS_MOCK_LOCATION允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing)
android.permission.ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息(Allows applications to [...]]]></description>
			<content:encoded><![CDATA[<p>android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问&#8221;properties&#8221;表在checkin数据库中，改值可以修改上传( Allows read/write access to the &#8220;properties&#8221; table in the checkin database, to change values that get uploaded)</p>
<p>android.permission.ACCESS_COARSE_LOCATION允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location)</p>
<p>android.permission.ACCESS_FINE_LOCATION允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)</p>
<p>android.permission.ACCESS_LOCATION_EXTRA_COMMANDS允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands)</p>
<p>android.permission.ACCESS_MOCK_LOCATION允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing)</p>
<p>android.permission.ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息(Allows applications to access information about networks)</p>
<p>android.permission.ACCESS_SURFACE_FLINGER允许程序使用SurfaceFlinger底层特性(Allows an application to use SurfaceFlinger&#8217;s low level features)</p>
<p>android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks)</p>
<p>android.permission.ADD_SYSTEM_SERVICE允许程序发布系统级服务(Allows an application to publish system-level services).</p>
<p>android.permission.BATTERY_STATS允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics)</p>
<p>android.permission.BLUETOOTH允许程序连接到已配对的蓝牙设备(Allows applications to connect to paired bluetooth devices)</p>
<p>android.permission.BLUETOOTH_ADMIN允许程序发现和配对蓝牙设备(Allows applications to discover and pair bluetooth devices)</p>
<p>android.permission.BRICK请求能够禁用设备(非常危险)(Required to be able to disable the device (very dangerous!).)</p>
<p>android.permission.BROADCAST_PACKAGE_REMOVED允许程序广播一个提示消息在一个应用程序包已经移除后(Allows an application to broadcast a notification that an application package has been removed)</p>
<p>android.permission.BROADCAST_STICKY.允许一个程序广播常用intents(Allows an application to broadcast sticky intents)</p>
<p>android.permission.CALL_PHONE允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认(Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed.)</p>
<p>android.permission.CALL_PRIVILEGED允许一个程序拨打任何号码，包含紧急号码无需通过拨号用户界面需要用户确认(Allows an application to call any phone number, including emergency numbers, without going through the Dialer user interface for the user to confirm the call being placed)</p>
<p>android.permission.CAMERA请求访问使用照相设备(Required to be able to access the camera device. )</p>
<p>android.permission.CHANGE_COMPONENT_ENABLED_STATE允许一个程序是否改变一个组件或其他的启用或禁用(Allows an application to change whether an application component (other than its own) is enabled or not. )</p>
<p>android.permission.CHANGE_CONFIGURATION允许一个程序修改当前设置，如本地化(Allows an application to modify the current configuration, such as locale. )</p>
<p>android.permission.CHANGE_NETWORK_STATE允许程序改变网络连接状态(Allows applications to change network connectivity state)</p>
<p>android.permission.CHANGE_WIFI_STATE允许程序改变Wi-Fi连接状态(Allows applications to change Wi-Fi connectivity state)</p>
<p>android.permission.CLEAR_APP_CACHE允许一个程序清楚缓存从所有安装的程序在设备中(Allows an application to clear the caches of all installed applications on the device. )</p>
<p>android.permission.CLEAR_APP_USER_DATA允许一个程序清除用户设置(Allows an application to clear user data)</p>
<p>android.permission.CONTROL_LOCATION_UPDATES允许启用禁止位置更新提示从无线模块(Allows enabling/disabling location update notifications from the radio. )</p>
<p>android.permission.DELETE_CACHE_FILES允许程序删除缓存文件(Allows an application to delete cache files)</p>
<p>android.permission.DELETE_PACKAGES允许一个程序删除包(Allows an application to delete packages)</p>
<p>android.permission.DEVICE_POWER允许访问底层电源管理(Allows low-level access to power management)</p>
<p>android.permission.DIAGNOSTIC允许程序RW诊断资源(Allows applications to RW to diagnostic resources. )</p>
<p>android.permission.DISABLE_KEYGUARD允许程序禁用键盘锁(Allows applications to disable the keyguard )</p>
<p>android.permission.DUMP允许程序返回状态抓取信息从系统服务(Allows an application to retrieve state dump information from system services.)</p>
<p>android.permission.EXPAND_STATUS_BAR允许一个程序扩展收缩在状态栏,Android开发网提示应该是一个类似Windows Mobile中的托盘程序(Allows an application to expand or collapse the status bar. )</p>
<p>android.permission.FACTORY_TEST作为一个工厂测试程序，运行在root用户(Run as a manufacturer test application, running as the root user. )</p>
<p>android.permission.FLASHLIGHT访问闪光灯,Android开发网提示HTC Dream不包含闪光灯(Allows access to the flashlight )</p>
<p>android.permission.FORCE_BACK允许程序强行一个后退操作是否在顶层activities(Allows an application to force a BACK operation on whatever is the top activity. )</p>
<p>android.permission.FOTA_UPDATE暂时不了解这是做什么使用的，Android开发网分析可能是一个预留权限.</p>
<p>android.permission.GET_ACCOUNTS访问一个帐户列表在Accounts Service中(Allows access to the list of accounts in the Accounts Service)</p>
<p>android.permission.GET_PACKAGE_SIZE允许一个程序获取任何package占用空间容量(Allows an application to find out the space used by any package. )</p>
<p>android.permission.GET_TASKS允许一个程序获取信息有关当前或最近运行的任务，一个缩略的任务状态，是否活动等等(Allows an application to get information about the currently or recently running tasks: a thumbnail representation of the tasks, what activities are running in it, etc.)</p>
<p>android.permission.HARDWARE_TEST允许访问硬件(Allows access to hardware peripherals. )</p>
<p>android.permission.INJECT_EVENTS允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流，Android开发网提醒算是hook技术吧(Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window.)</p>
<p>android.permission.INSTALL_PACKAGES允许一个程序安装packages(Allows an application to install packages. )</p>
<p>android.permission.INTERNAL_SYSTEM_WINDOW允许打开窗口使用系统用户界面(Allows an application to open windows that are for use by parts of the system user interface. )</p>
<p>android.permission.INTERNET允许程序打开网络套接字(Allows applications to open network sockets)</p>
<p>android.permission.MANAGE_APP_TOKENS允许程序管理(创建、催后、 z-order默认向z轴推移)程序引用在窗口管理器中(Allows an application to manage (create, destroy, Z-order) application tokens in the window manager. )</p>
<p>android.permission.MASTER_CLEAR目前还没有明确的解释，Android开发网分析可能是清除一切数据，类似硬格机</p>
<p>android.permission.MODIFY_AUDIO_SETTINGS允许程序修改全局音频设置(Allows an application to modify global audio settings)</p>
<p>android.permission.MODIFY_PHONE_STATE允许修改话机状态，如电源，人机接口等(Allows modification of the telephony state - power on, mmi, etc. )</p>
<p>android.permission.MOUNT_UNMOUNT_FILESYSTEMS允许挂载和反挂载文件系统可移动存储(Allows mounting and unmounting file systems for removable storage. )</p>
<p>android.permission.PERSISTENT_ACTIVITY允许一个程序设置他的activities显示(Allow an application to make its activities persistent. )</p>
<p>android.permission.PROCESS_OUTGOING_CALLS允许程序监视、修改有关播出电话(Allows an application to monitor, modify, or abort outgoing calls)</p>
<p>android.permission.READ_CALENDAR允许程序读取用户日历数据(Allows an application to read the user&#8217;s calendar data.)</p>
<p>android.permission.READ_CONTACTS允许程序读取用户联系人数据(Allows an application to read the user&#8217;s contacts data.)</p>
<p>android.permission.READ_FRAME_BUFFER允许程序屏幕波或和更多常规的访问帧缓冲数据(Allows an application to take screen shots and more generally get access to the frame buffer data)</p>
<p>android.permission.READ_INPUT_STATE允许程序返回当前按键状态(Allows an application to retrieve the current state of keys and switches. )</p>
<p>android.permission.READ_LOGS允许程序读取底层系统日志文件(Allows an application to read the low-level system log files. )</p>
<p>android.permission.READ_OWNER_DATA允许程序读取所有者数据(Allows an application to read the owner&#8217;s data)</p>
<p>android.permission.READ_SMS允许程序读取短信息(Allows an application to read SMS messages.)</p>
<p>android.permission.READ_SYNC_SETTINGS允许程序读取同步设置(Allows applications to read the sync settings)</p>
<p>android.permission.READ_SYNC_STATS允许程序读取同步状态(Allows applications to read the sync stats)</p>
<p>android.permission.REBOOT请求能够重新启动设备(Required to be able to reboot the device. )</p>
<p>android.permission.RECEIVE_BOOT_COMPLETED允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动(Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting. )</p>
<p>android.permission.RECEIVE_MMS允许一个程序监控将收到MMS彩信,记录或处理(Allows an application to monitor incoming MMS messages, to record or perform processing on them. )</p>
<p>android.permission.RECEIVE_SMS允许程序监控一个将收到短信息，记录或处理(Allows an application to monitor incoming SMS messages, to record or perform processing on them.)</p>
<p>android.permission.RECEIVE_WAP_PUSH允许程序监控将收到WAP PUSH信息(Allows an application to monitor incoming WAP push messages. )</p>
<p>android.permission.RECORD_AUDIO允许程序录制音频(Allows an application to record audio)</p>
<p>android.permission.REORDER_TASKS允许程序改变Z轴排列任务(Allows an application to change the Z-order of tasks)</p>
<p>android.permission.RESTART_PACKAGES允许程序重新启动其他程序(Allows an application to restart other applications)</p>
<p>android.permission.SEND_SMS允许程序发送SMS短信(Allows an application to send SMS messages)</p>
<p>android.permission.SET_ACTIVITY_WATCHER允许程序监控或控制activities已经启动全局系统中Allows an application to watch and control how activities are started globally in the system.</p>
<p>android.permission.SET_ALWAYS_FINISH允许程序控制是否活动间接完成在处于后台时Allows an application to control whether activities are immediately finished when put in the background.</p>
<p>android.permission.SET_ANIMATION_SCALE修改全局信息比例(Modify the global animation scaling factor.)</p>
<p>android.permission.SET_DEBUG_APP配置一个程序用于调试(Configure an application for debugging.)</p>
<p>android.permission.SET_ORIENTATION允许底层访问设置屏幕方向和实际旋转(Allows low-level access to setting the orientation (actually rotation) of the screen.)</p>
<p>android.permission.SET_PREFERRED_APPLICATIONS允许一个程序修改列表参数PackageManager.addPackageToPreferred() 和PackageManager.removePackageFromPreferred()方法(Allows an application to modify the list of preferred applications with the PackageManager.addPackageToPreferred() and PackageManager.removePackageFromPreferred() methods.)</p>
<p>android.permission.SET_PROCESS_FOREGROUND允许程序当前运行程序强行到前台(Allows an application to force any currently running process to be in the foreground.)</p>
<p>android.permission.SET_PROCESS_LIMIT允许设置最大的运行进程数量(Allows an application to set the maximum number of (not needed) application processes that can be running. )</p>
<p>android.permission.SET_TIME_ZONE允许程序设置时间区域(Allows applications to set the system time zone)</p>
<p>android.permission.SET_WALLPAPER允许程序设置壁纸(Allows applications to set the wallpaper )</p>
<p>android.permission.SET_WALLPAPER_HINTS允许程序设置壁纸hits(Allows applications to set the wallpaper hints)</p>
<p>android.permission.SIGNAL_PERSISTENT_PROCESSES允许程序请求发送信号到所有显示的进程中(Allow an application to request that a signal be sent to all persistent processes)</p>
<p>android.permission.STATUS_BAR允许程序打开、关闭或禁用状态栏及图标Allows an application to open, close, or disable the status bar and its icons.</p>
<p>android.permission.SUBSCRIBED_FEEDS_READ允许一个程序访问订阅RSS Feed内容提供(Allows an application to allow access the subscribed feeds ContentProvider. )</p>
<p>android.permission.SUBSCRIBED_FEEDS_WRITE系统暂时保留改设置,Android开发网认为未来版本会加入该功能。</p>
<p>android.permission.SYSTEM_ALERT_WINDOW允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT，显示在其他所有程序的顶层(Allows an application to open windows using the type TYPE_SYSTEM_ALERT, shown on top of all other applications. )</p>
<p>android.permission.VIBRATE允许访问振动设备(Allows access to the vibrator)</p>
<p>android.permission.WAKE_LOCK允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失( Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming)</p>
<p>android.permission.WRITE_APN_SETTINGS允许程序写入API设置(Allows applications to write the apn settings)</p>
<p>android.permission.WRITE_CALENDAR允许一个程序写入但不读取用户日历数据(Allows an application to write (but not read) the user&#8217;s calendar data. )</p>
<p>android.permission.WRITE_CONTACTS允许程序写入但不读取用户联系人数据(Allows an application to write (but not read) the user&#8217;s contacts data. )</p>
<p>android.permission.WRITE_GSERVICES允许程序修改Google服务地图(Allows an application to modify the Google service map. )</p>
<p>android.permission.WRITE_OWNER_DATA允许一个程序写入但不读取所有者数据(Allows an application to write (but not read) the owner&#8217;s data.)</p>
<p>android.permission.WRITE_SETTINGS允许程序读取或写入系统设置(Allows an application to read or write the system settings. )</p>
<p>android.permission.WRITE_SMS允许程序写短信(Allows an application to write SMS messages)</p>
<p>android.permission.WRITE_SYNC_SETTINGS允许程序写入同步设置(Allows applications to write the sync settings)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/06/22/android%e6%9d%83%e9%99%90%e5%88%97%e8%a1%a8permission.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>discuz优化心得</title>
		<link>http://www.sunboyu.cn/2010/12/14/discuz%e4%bc%98%e5%8c%96%e5%bf%83%e5%be%97.shtml</link>
		<comments>http://www.sunboyu.cn/2010/12/14/discuz%e4%bc%98%e5%8c%96%e5%bf%83%e5%be%97.shtml#comments</comments>
		<pubDate>Tue, 14 Dec 2010 07:16:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[技术存档]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1330</guid>
		<description><![CDATA[自从09年10月份接到公司论坛改造升级任务到现在，逍遥论坛 http://bbs.xoyo.com 在性能和负载方面相对稳定,修改了原来的结构，单程序可以支持多论坛(模仿5d6d http://www.5dforum.com/ )。有几个参数可以参考：

平时在线人数：5000~10000人     峰值：50000+（超过5w后，统计表性能明显下降，关闭了统计）

之前每逢峰值论坛常挂，改造之后有充足的预案防止出问题，保证论坛用户能及时在论坛传达必要消息。
在论坛改造过程中，我写了很多文章来表述改造中的一些心得，也认识了很多朋友一起讨论dz的优化。其中最宝贵的经验，是一些无能为力的站长把他们的服务器交给我，让我亲手在一个大负载的服务器上去做优化，在这个过程中学到了很多系统优化方面的知识，更宝贵的是获得了大负载下dz的一些瓶颈点的数据。
由于考虑用户群的问题，很多技术没有办法用开源的软件实现，也无法找到替代品，考虑实际，很多dz站长自己并没有实力去涉入维护一个更改很多的论坛，所以我的方案并没有大量去应用。
在帮朋友优化的过程中，提到更多的是技术实力与维护、需求的增删与性能的平衡。
所以，我得出这样的结论供大家参考：
1、每个功能都会吃系统资源，充分考虑每个功能是否必须，不必须的功能一定要砍。
2、找系统压力点：根据我对逍遥论坛用户日志的分析，90%的压力集中在 forumdisplay.php viewthread.php上，而这些脚本的压力主要体现在表联查而造成的锁表上，最主要的表就是sessions表。sessions表集合了很多用户统计相关功能，因为，优化此表，结合上条原则，合理增删功能，达到压力减小。
3、硬件的优化。硬件优化也是我最近考虑的一个方案，想对于开发人员，硬件的开销还是很小的。合理升级硬件也是一个不错的方案。
以上结论是针对中小型网站已经碰到瓶颈的dz程序做出的建议。
而对于一个负载很大，并且有实力的团队，那在discuz上要做的文章就太多了。
1、拆表是必然的，而对于一些数据量不大但经常变动的表，完全可以全cache。
2、根据需求删改功能。discuz很强大， 但不是每个功能都是你必须使用的。
3、开源产品会给你很多灵感。
推荐的一些开源技术方案：
memcached(不用说了) 
Tokyo Cabinet DBM:性能极佳的持久存储的keyvalue数据库 
mysql udf http http://blog.s135.com/mysql-udf-http/  让tt变成从库？
lucene 必须要替换discuz默认的搜索
你还有什么想法？
一时兴起，写此文。欢迎有兴趣的朋友加 discuz性能优化讨论群 qq:41886598
]]></description>
			<content:encoded><![CDATA[<p>自从09年10月份接到公司论坛改造升级任务到现在，<a href="http://bbs.xoyo.com">逍遥论坛 http://bbs.xoyo.com</a> 在性能和负载方面相对稳定,修改了原来的结构，单程序可以支持多论坛(模仿5d6d http://www.5dforum.com/ )。有几个参数可以参考：</p>
<blockquote><p>
平时在线人数：5000~10000人     峰值：50000+（超过5w后，统计表性能明显下降，关闭了统计）
</p></blockquote>
<p>之前每逢峰值论坛常挂，改造之后有充足的预案防止出问题，保证论坛用户能及时在论坛传达必要消息。</p>
<p>在论坛改造过程中，我写了很多文章来表述改造中的一些心得，也认识了很多朋友一起讨论dz的优化。其中最宝贵的经验，是一些无能为力的站长把他们的服务器交给我，让我亲手在一个大负载的服务器上去做优化，在这个过程中学到了很多系统优化方面的知识，更宝贵的是获得了大负载下dz的一些瓶颈点的数据。</p>
<p>由于考虑用户群的问题，很多技术没有办法用开源的软件实现，也无法找到替代品，考虑实际，很多dz站长自己并没有实力去涉入维护一个更改很多的论坛，所以我的方案并没有大量去应用。</p>
<p>在帮朋友优化的过程中，提到更多的是技术实力与维护、需求的增删与性能的平衡。</p>
<p>所以，我得出这样的结论供大家参考：</p>
<p>1、每个功能都会吃系统资源，充分考虑每个功能是否必须，不必须的功能一定要砍。</p>
<p>2、找系统压力点：根据我对逍遥论坛用户日志的分析，90%的压力集中在 forumdisplay.php viewthread.php上，而这些脚本的压力主要体现在表联查而造成的锁表上，最主要的表就是sessions表。sessions表集合了很多用户统计相关功能，因为，优化此表，结合上条原则，合理增删功能，达到压力减小。</p>
<p>3、硬件的优化。硬件优化也是我最近考虑的一个方案，想对于开发人员，硬件的开销还是很小的。合理升级硬件也是一个不错的方案。</p>
<p>以上结论是针对中小型网站已经碰到瓶颈的dz程序做出的建议。</p>
<p>而对于一个负载很大，并且有实力的团队，那在discuz上要做的文章就太多了。</p>
<p>1、拆表是必然的，而对于一些数据量不大但经常变动的表，完全可以全cache。</p>
<p>2、根据需求删改功能。discuz很强大， 但不是每个功能都是你必须使用的。</p>
<p>3、开源产品会给你很多灵感。</p>
<p>推荐的一些开源技术方案：</p>
<p>memcached(不用说了) </p>
<p>Tokyo Cabinet DBM:性能极佳的持久存储的keyvalue数据库 </p>
<p>mysql udf http http://blog.s135.com/mysql-udf-http/  让tt变成从库？</p>
<p>lucene 必须要替换discuz默认的搜索</p>
<p>你还有什么想法？</p>
<p>一时兴起，写此文。欢迎有兴趣的朋友加 discuz性能优化讨论群 qq:41886598</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/12/14/discuz%e4%bc%98%e5%8c%96%e5%bf%83%e5%be%97.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>找回firefox的标签点击关闭功能</title>
		<link>http://www.sunboyu.cn/2009/08/09/%e6%89%be%e5%9b%9efirefox%e7%9a%84%e6%a0%87%e7%ad%be%e7%82%b9%e5%87%bb%e5%85%b3%e9%97%ad%e5%8a%9f%e8%83%bd.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/09/%e6%89%be%e5%9b%9efirefox%e7%9a%84%e6%a0%87%e7%ad%be%e7%82%b9%e5%87%bb%e5%85%b3%e9%97%ad%e5%8a%9f%e8%83%bd.shtml#comments</comments>
		<pubDate>Sun, 09 Aug 2009 07:16:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=943</guid>
		<description><![CDATA[最近安装了最新版firefox，发现一个很重要的功能没了，双击标签关闭的功能没了，寻找相关的配置也没有。
后发现有些机器的版本可以，有些不可以，详细比较后，发现原来是中国版的才有这个功能。
后安装中国版后此功能再现。
我一直认为这个功能很不错，遨游这类浏览器基本也是标配功能，而国际版的为什么就没有？
]]></description>
			<content:encoded><![CDATA[<p>最近安装了最新版firefox，发现一个很重要的功能没了，双击标签关闭的功能没了，寻找相关的配置也没有。</p>
<p>后发现有些机器的版本可以，有些不可以，详细比较后，发现原来是中国版的才有这个功能。</p>
<p>后安装中国版后此功能再现。</p>
<p>我一直认为这个功能很不错，遨游这类浏览器基本也是标配功能，而国际版的为什么就没有？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/09/%e6%89%be%e5%9b%9efirefox%e7%9a%84%e6%a0%87%e7%ad%be%e7%82%b9%e5%87%bb%e5%85%b3%e9%97%ad%e5%8a%9f%e8%83%bd.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>HTML1.5来了</title>
		<link>http://www.sunboyu.cn/2009/07/01/html15%e6%9d%a5%e4%ba%86.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/01/html15%e6%9d%a5%e4%ba%86.shtml#comments</comments>
		<pubDate>Tue, 30 Jun 2009 20:06:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[html1.5]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=832</guid>
		<description><![CDATA[今天下载了firefox3.5，其中惊现HTML1.5标签。
看来真正的富媒体时代到来，html有赶超flex的势头？
&#60;video id=&#34;video&#34; src=&#34;http://www.dailymotion.com/cdn/OGG-320x240/video/x9euyb?key=a99e7056808342ad0868b4decfe811c814044ec&#34;&#62;&#60;/video&#62;
]]></description>
			<content:encoded><![CDATA[<p>今天下载了firefox3.5，其中惊现HTML1.5标签。</p>
<p>看来真正的富媒体时代到来，html有赶超flex的势头？</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;video id=&quot;video&quot; src=&quot;http://www.dailymotion.com/cdn/OGG-320x240/video/x9euyb?key=a99e7056808342ad0868b4decfe811c814044ec&quot;&gt;&lt;/video&gt;</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/01/html15%e6%9d%a5%e4%ba%86.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>针对尚趣网（vsuch.com）的简单优化</title>
		<link>http://www.sunboyu.cn/2009/06/12/%e9%92%88%e5%af%b9%e5%b0%9a%e8%b6%a3%e7%bd%91%ef%bc%88vsuchcom%ef%bc%89%e7%9a%84%e7%ae%80%e5%8d%95%e4%bc%98%e5%8c%96.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/12/%e9%92%88%e5%af%b9%e5%b0%9a%e8%b6%a3%e7%bd%91%ef%bc%88vsuchcom%ef%bc%89%e7%9a%84%e7%ae%80%e5%8d%95%e4%bc%98%e5%8c%96.shtml#comments</comments>
		<pubDate>Fri, 12 Jun 2009 07:42:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[nginx]]></category>

		<category><![CDATA[vsuch]]></category>

		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=782</guid>
		<description><![CDATA[最近，一友找我去优化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服务（有钱），速度有了很明显的提升。
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
根据其公司目前的技术结构，我提出了很多优化和整改的想法，希望每个创业网站都能走好。
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
]]></description>
			<content:encoded><![CDATA[<p>最近，一友找我去优化apache，了解后，是vsuch.com网站的问题。</p>
<p>vsuch网站使用lamp＋windows混合平台（汗），追究历史，原来网站用.net编写，后用php重构了整个网站。</p>
<p>整改前 Mysql运行在linux机器上，php运行在windows平台上，中间局域网方式连接。</p>
<p>网站日访问量不小，alexa排名6800，windows平台明显抗不住，经常莫名其妙的问题。（题外话：我最早维护的服务器也是windows，apache在上边很不稳定）</p>
<p>了解后，我感觉一台服务器就足矣，放弃了apache的方案，安装了nginx＋php，数据库依然沿用原来的。</p>
<p>整改后，linux负载稍稍升高，mysql负载不变，http的负载在nginx下并没有表现出多高。顺利完成了迁移。</p>
<p>后公司又开通了cdn服务（有钱），速度有了很明显的提升。</p>
<p>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－</p>
<p>根据其公司目前的技术结构，我提出了很多优化和整改的想法，希望每个创业网站都能走好。</p>
<p>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/12/%e9%92%88%e5%af%b9%e5%b0%9a%e8%b6%a3%e7%bd%91%ef%bc%88vsuchcom%ef%bc%89%e7%9a%84%e7%ae%80%e5%8d%95%e4%bc%98%e5%8c%96.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>《web信息架构：设计大型网站》</title>
		<link>http://www.sunboyu.cn/2008/10/14/%e3%80%8aweb%e4%bf%a1%e6%81%af%e6%9e%b6%e6%9e%84%ef%bc%9a%e8%ae%be%e8%ae%a1%e5%a4%a7%e5%9e%8b%e7%bd%91%e7%ab%99%e3%80%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/14/%e3%80%8aweb%e4%bf%a1%e6%81%af%e6%9e%b6%e6%9e%84%ef%bc%9a%e8%ae%be%e8%ae%a1%e5%a4%a7%e5%9e%8b%e7%bd%91%e7%ab%99%e3%80%8b.shtml#comments</comments>
		<pubDate>Tue, 14 Oct 2008 12:33:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[O]]></category>

		<category><![CDATA[reilly]]></category>

		<category><![CDATA[书]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=341</guid>
		<description><![CDATA[最近读书读疯了，疯狂得喜欢上了O,reilly的web2.0系列丛书。周末去书店，顺手买了这本《web信息架构：设计大型网站》。架构，本身就是个很宽泛的概念，信息架构，是干啥的，等我看完了再给大家解释。

]]></description>
			<content:encoded><![CDATA[<p>最近读书读疯了，疯狂得喜欢上了O,reilly的web2.0系列丛书。周末去书店，顺手买了这本《web信息架构：设计大型网站》。架构，本身就是个很宽泛的概念，信息架构，是干啥的，等我看完了再给大家解释。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/10/shupi.jpg"><img class="alignleft size-medium wp-image-342" title="shupi" src="http://www.sunboyu.cn/upfiles/2008/10/shupi-229x300.jpg" alt="" width="229" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/14/%e3%80%8aweb%e4%bf%a1%e6%81%af%e6%9e%b6%e6%9e%84%ef%bc%9a%e8%ae%be%e8%ae%a1%e5%a4%a7%e5%9e%8b%e7%bd%91%e7%ab%99%e3%80%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>我找到了一本好书：《Getting_Real》</title>
		<link>http://www.sunboyu.cn/2008/09/05/%e6%88%91%e6%89%be%e5%88%b0%e4%ba%86%e4%b8%80%e6%9c%ac%e5%a5%bd%e4%b9%a6%ef%bc%9a%e3%80%8agetting_real%e3%80%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2008/09/05/%e6%88%91%e6%89%be%e5%88%b0%e4%ba%86%e4%b8%80%e6%9c%ac%e5%a5%bd%e4%b9%a6%ef%bc%9a%e3%80%8agetting_real%e3%80%8b.shtml#comments</comments>
		<pubDate>Fri, 05 Sep 2008 09:37:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[Getting_Real]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=306</guid>
		<description><![CDATA[getting_real
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2008/09/getting_real.zip">getting_real</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/09/05/%e6%88%91%e6%89%be%e5%88%b0%e4%ba%86%e4%b8%80%e6%9c%ac%e5%a5%bd%e4%b9%a6%ef%bc%9a%e3%80%8agetting_real%e3%80%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>OpenOA－概况</title>
		<link>http://www.sunboyu.cn/2008/09/02/openoa%ef%bc%8d%e6%a6%82%e5%86%b5.shtml</link>
		<comments>http://www.sunboyu.cn/2008/09/02/openoa%ef%bc%8d%e6%a6%82%e5%86%b5.shtml#comments</comments>
		<pubDate>Tue, 02 Sep 2008 00:58:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[crm]]></category>

		<category><![CDATA[openoa]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=293</guid>
		<description><![CDATA[OpenOA旨在打造一种开放式的办公平台，松散的架构适合灵活增删模块，便于二次开发。
一期工程主要规划：
账户管理
人员信息管理
科室管理
这三个是OA的基础部分。
另外一个附加的功能是CRM模块，此模块计划仿照一个开源CRM进行编写。
]]></description>
			<content:encoded><![CDATA[<p>OpenOA旨在打造一种开放式的办公平台，松散的架构适合灵活增删模块，便于二次开发。<br />
一期工程主要规划：<br />
账户管理<br />
人员信息管理<br />
科室管理<br />
这三个是OA的基础部分。<br />
另外一个附加的功能是CRM模块，此模块计划仿照一个开源CRM进行编写。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/09/02/openoa%ef%bc%8d%e6%a6%82%e5%86%b5.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP调用COM获得服务器硬件信息</title>
		<link>http://www.sunboyu.cn/2008/08/24/php%e8%b0%83%e7%94%a8com%e8%8e%b7%e5%be%97%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%a1%ac%e4%bb%b6%e4%bf%a1%e6%81%af.shtml</link>
		<comments>http://www.sunboyu.cn/2008/08/24/php%e8%b0%83%e7%94%a8com%e8%8e%b7%e5%be%97%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%a1%ac%e4%bb%b6%e4%bf%a1%e6%81%af.shtml#comments</comments>
		<pubDate>Sun, 24 Aug 2008 02:23:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[com]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=285</guid>
		<description><![CDATA[function sys_windows() {
	$objLocator = new COM(&#34;WbemScripting.SWbemLocator&#34;);
	$wmi = $objLocator-&#62;ConnectServer();
	$prop = $wmi-&#62;get(&#34;Win32_PnPEntity&#34;);
	//CPU
	$cpuinfo = GetWMI($wmi,&#34;Win32_Processor&#34;, array(&#34;Name&#34;,&#34;L2CacheSize&#34;,&#34;NumberOfCores&#34;));
	$res['CPU个数'] = $cpuinfo[0]['NumberOfCores'];
	if (null == $res['CPU个数']) {
		$res['CPU个数'] = 1;
	}
	for ($i=0;$i&#60;$res['cpu']['num'];$i++){
		$res['CPU型号'] .= $cpuinfo[0]['Name'].&#34;&#60;br&#62;&#34;;
		$res['二级缓存'] .= $cpuinfo[0]['L2CacheSize'].&#34;&#60;br&#62;&#34;;
	}
	// SYSINFO
	$sysinfo = GetWMI($wmi,&#34;Win32_OperatingSystem&#34;, array('LastBootUpTime','TotalVisibleMemorySize','FreePhysicalMemory','Caption','CSDVersion','SerialNumber','InstallDate'));
	$res['操作系统版本'] = $sysinfo[0]['Caption'].&#34; &#34;.$sysinfo[0]['CSDVersion'];
	$res['操作系统序列号'] = &#34;{$sysinfo[0]['SerialNumber']} 于&#34;.date('Y年m月d日H:i:s',strtotime(substr($sysinfo[0]['InstallDate'],0,14))).&#34;安装&#34;;
	//UPTIME
	$res['最后重启时间'] = $sysinfo[0]['LastBootUpTime'];
&#160;
&#160;
	$sys_ticks = 3600*8 + time() - strtotime(substr($res['最后重启时间'],0,14));
	$min = $sys_ticks / 60;
	$hours = $min / 60;
	$days = floor($hours / [...]]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">function sys_windows() {</li>
<li>	$objLocator = new COM(&quot;WbemScripting.SWbemLocator&quot;);</li>
<li>	$wmi = $objLocator-&gt;ConnectServer();</li>
<li>	$prop = $wmi-&gt;get(&quot;Win32_PnPEntity&quot;);</li>
<li>	//CPU</li>
<li>	$cpuinfo = GetWMI($wmi,&quot;Win32_Processor&quot;, array(&quot;Name&quot;,&quot;L2CacheSize&quot;,&quot;NumberOfCores&quot;));</li>
<li>	$res['CPU个数'] = $cpuinfo[0]['NumberOfCores'];</li>
<li>	if (null == $res['CPU个数']) {</li>
<li>		$res['CPU个数'] = 1;</li>
<li>	}</li>
<li>	for ($i=0;$i&lt;$res['cpu']['num'];$i++){</li>
<li>		$res['CPU型号'] .= $cpuinfo[0]['Name'].&quot;&lt;br&gt;&quot;;</li>
<li>		$res['二级缓存'] .= $cpuinfo[0]['L2CacheSize'].&quot;&lt;br&gt;&quot;;</li>
<li>	}</li>
<li>	// SYSINFO</li>
<li>	$sysinfo = GetWMI($wmi,&quot;Win32_OperatingSystem&quot;, array('LastBootUpTime','TotalVisibleMemorySize','FreePhysicalMemory','Caption','CSDVersion','SerialNumber','InstallDate'));</li>
<li>	$res['操作系统版本'] = $sysinfo[0]['Caption'].&quot; &quot;.$sysinfo[0]['CSDVersion'];</li>
<li>	$res['操作系统序列号'] = &quot;{$sysinfo[0]['SerialNumber']} 于&quot;.date('Y年m月d日H:i:s',strtotime(substr($sysinfo[0]['InstallDate'],0,14))).&quot;安装&quot;;</li>
<li>	//UPTIME</li>
<li>	$res['最后重启时间'] = $sysinfo[0]['LastBootUpTime'];</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>	$sys_ticks = 3600*8 + time() - strtotime(substr($res['最后重启时间'],0,14));</li>
<li>	$min = $sys_ticks / 60;</li>
<li>	$hours = $min / 60;</li>
<li>	$days = floor($hours / 24);</li>
<li>	$hours = floor($hours - ($days * 24));</li>
<li>	$min = floor($min - ($days * 60 * 24) - ($hours * 60));</li>
<li>	if ($days !== 0) $ress['day'] = $days.&quot;天&quot;;</li>
<li>	if ($hours !== 0) $ress['hours'] .= $hours.&quot;小时&quot;;</li>
<li>	$res['最后重启时间'] = $ress['day'].$ress['hours'].$min.&quot;分钟&quot;;</li>
<li>&nbsp;</li>
<li>	//MEMORY</li>
<li>	$res['物理内存'] = $sysinfo[0]['TotalVisibleMemorySize'];</li>
<li>	$res['剩余内存'] = $sysinfo[0]['FreePhysicalMemory'];</li>
<li>	$res['已使用内存'] = $res['物理内存'] - $res['剩余内存'];</li>
<li>	$res['使用率'] = round($res['已使用内存'] / $res['物理内存']*100,2);</li>
<li>&nbsp;</li>
<li>	$swapinfo = GetWMI($wmi,&quot;Win32_PageFileUsage&quot;, array('AllocatedBaseSize','CurrentUsage'));</li>
<li>&nbsp;</li>
<li>	// TODO swp区获取</li>
<li>	$res['交换分区'] = $swapinfo[0][AllocatedBaseSize];</li>
<li>	$res['已经使用'] = $swapinfo[0][CurrentUsage];</li>
<li>	$res['剩余内存'] = $res['swapTotal'] - $res['swapUsed'];</li>
<li>	$res['使用率'] = (floatval($res['swapTotal'])!=0)?round($res['swapUsed']/$res['swapTotal']*100,2):0;</li>
<li>&nbsp;</li>
<li>	// LoadPercentage</li>
<li>	$loadinfo = GetWMI($wmi,&quot;Win32_Processor&quot;, array(&quot;LoadPercentage&quot;));</li>
<li>	$res['系统平均负载'] = $loadinfo[0]['LoadPercentage'];</li>
<li>&nbsp;</li>
<li>	return $res;</li>
<li>}</li>
<li>&nbsp;</li>
<li>function GetWMI($wmi,$strClass, $strValue = array()) {</li>
<li>	$arrData = array();</li>
<li>&nbsp;</li>
<li>	$objWEBM = $wmi-&gt;Get($strClass);</li>
<li>	$arrProp = $objWEBM-&gt;Properties_;</li>
<li>	$arrWEBMCol = $objWEBM-&gt;Instances_();</li>
<li>	foreach($arrWEBMCol as $objItem) {</li>
<li>		@reset($arrProp);</li>
<li>		$arrInstance = array();</li>
<li>		foreach($arrProp as $propItem) {</li>
<li>			eval(&quot;\$value = \$objItem-&gt;&quot; . $propItem-&gt;Name . &quot;;&quot;);</li>
<li>			if (empty($strValue)) {</li>
<li>				$arrInstance[$propItem-&gt;Name] = trim($value);</li>
<li>			} else {</li>
<li>				if (in_array($propItem-&gt;Name, $strValue)) {</li>
<li>					$arrInstance[$propItem-&gt;Name] = trim($value);</li>
<li>				}</li>
<li>			}</li>
<li>		}</li>
<li>		$arrData[] = $arrInstance;</li>
<li>	}</li>
<li>	return $arrData;</li>
<li>}</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/08/24/php%e8%b0%83%e7%94%a8com%e8%8e%b7%e5%be%97%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%a1%ac%e4%bb%b6%e4%bf%a1%e6%81%af.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>wordpress奥运风格版正式上线！</title>
		<link>http://www.sunboyu.cn/2008/08/16/wordpress%e5%a5%a5%e8%bf%90%e9%a3%8e%e6%a0%bc%e7%89%88%e6%ad%a3%e5%bc%8f%e4%b8%8a%e7%ba%bf%ef%bc%81.shtml</link>
		<comments>http://www.sunboyu.cn/2008/08/16/wordpress%e5%a5%a5%e8%bf%90%e9%a3%8e%e6%a0%bc%e7%89%88%e6%ad%a3%e5%bc%8f%e4%b8%8a%e7%ba%bf%ef%bc%81.shtml#comments</comments>
		<pubDate>Sat, 16 Aug 2008 07:21:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[奥运风格]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=281</guid>
		<description><![CDATA[经过一中午将近两个小时的努力，奥运风格终于上线！
]]></description>
			<content:encoded><![CDATA[<p>经过一中午将近两个小时的努力，奥运风格终于上线！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/08/16/wordpress%e5%a5%a5%e8%bf%90%e9%a3%8e%e6%a0%bc%e7%89%88%e6%ad%a3%e5%bc%8f%e4%b8%8a%e7%ba%bf%ef%bc%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>40 Tips for optimizing your php code</title>
		<link>http://www.sunboyu.cn/2008/08/05/40-tips-for-optimizing-your-php-code.shtml</link>
		<comments>http://www.sunboyu.cn/2008/08/05/40-tips-for-optimizing-your-php-code.shtml#comments</comments>
		<pubDate>Tue, 05 Aug 2008 02:22:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[tips]]></category>

		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=244</guid>
		<description><![CDATA[
If a method can be static, declare it static. Speed improvement is by a factor of 4.
echo is faster than print.
Use echo&#8217;s multiple parameters instead of string concatenation.
Set the maxvalue for your for-loops before and not in the loop.
Unset your variables to free memory, especially large arrays.
Avoid magic like __get, __set, __autoload
require_once() is expensive
Use full [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>If a method can be static, declare it static. Speed improvement is by a factor of 4.</li>
<li><em>echo</em> is faster than <em>print</em>.</li>
<li>Use echo&#8217;s multiple parameters instead of string concatenation.</li>
<li>Set the maxvalue for your for-loops before and not in the loop.</li>
<li>Unset your variables to free memory, especially large arrays.</li>
<li>Avoid magic like __get, __set, __autoload</li>
<li>require_once() is expensive</li>
<li>Use full paths in includes and requires, less time spent on resolving the OS paths.</li>
<li>If you need to find out the time when the script started executing, $_SERVER[’REQUEST_TIME’] is preferred to time()</li>
<li>See if you can use strncasecmp, strpbrk and stripos instead of regex</li>
<li>str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4</li>
<li>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.</li>
<li>It&#8217;s better to use switch statements than multi if, else if, statements.</li>
<li>Error suppression with @ is very slow.</li>
<li>Turn on apache&#8217;s mod_deflate</li>
<li>Close your database connections when you&#8217;re done with them</li>
<li>$row[’id’] is 7 times faster than $row[id]</li>
<li>Error messages are expensive</li>
<li>Do not use functions inside of for loop, such as for ($x=0; $x &lt; count($array); $x) The count() function gets called each time.</li>
<li>Incrementing a local variable in a method is the fastest. Nearly the same as calling a local variable in a function.</li>
<li>Incrementing a global variable is 2 times slow than a local var.</li>
<li>Incrementing an object property (eg. $this-&gt;prop++) is 3 times slower than a local variable.</li>
<li>Incrementing an undefined local variable is 9-10 times slower than a pre-initialized one.</li>
<li>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.</li>
<li>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.</li>
<li>Methods in derived classes run faster than ones defined in the base class.</li>
<li>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.</li>
<li>Surrounding your string by &#8216; instead of &#8221; will make things interpret a little faster since php looks for variables inside &#8220;&#8230;&#8221; but not inside &#8216;&#8230;&#8217;. Of course you can only do this when you don&#8217;t need to have variables in the string.</li>
<li>When echoing strings it&#8217;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.</li>
<li>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.</li>
<li>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.</li>
<li>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</li>
<li>When working with strings and you need to check that the string is either of a certain length you&#8217;d understandably would want to use the strlen() function. This function is pretty quick since it&#8217;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 &amp; 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) &lt; 5) { echo &#8220;Foo is too short&#8221;; }
<p>vs.</p>
<p>if (!isset($foo{5})) { echo &#8220;Foo is too short&#8221;; }</p>
<p>Calling isset() happens to be faster then strlen() because unlike strlen(), isset() is a language construct and not a function meaning that it&#8217;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&#8217;s length.</li>
<li>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&#8217;t go modifying your C or Java code thinking it&#8217;ll suddenly become faster, it won&#8217;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&#8217;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.</li>
<li>Not everything has to be OOP, often it is too much overhead, each method and object call consumes a lot of memory.</li>
<li>Do not implement every data structure as a class, arrays are useful, too</li>
<li>Don&#8217;t split methods too much, think, which code you will really re-use</li>
<li>You can always split the code of a method later, when needed</li>
<li>Make use of the countless predefined functions</li>
<li>If you have very time consuming functions in your code, consider writing them as C extensions</li>
<li>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</li>
<li>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%</li>
<li>Excellent Article about optimizing php by John Lim</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/08/05/40-tips-for-optimizing-your-php-code.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>山外有山，传说中的大网站</title>
		<link>http://www.sunboyu.cn/2008/07/30/%e5%b1%b1%e5%a4%96%e6%9c%89%e5%b1%b1%ef%bc%8c%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e5%a4%a7%e7%bd%91%e7%ab%99.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/30/%e5%b1%b1%e5%a4%96%e6%9c%89%e5%b1%b1%ef%bc%8c%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e5%a4%a7%e7%bd%91%e7%ab%99.shtml#comments</comments>
		<pubDate>Wed, 30 Jul 2008 00:57:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[开源]]></category>

		<category><![CDATA[架构]]></category>

		<category><![CDATA[门户]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=229</guid>
		<description><![CDATA[网站技术总是无止境的，不同的网站有不同的技术架构。昨天接触了某门户技术总监，简单聊了些网站技术，才知道自己原来还在山脚。好多技术不是免费开源能换得来的，在实现一些事情的时候，商用软件能更快解决一些问题，节约的时间就是我们的利润。
但一般的中小网站依然提倡免费开源的解决方案，造成我思想上一些束缚， 没有去发散性的组织一些解决方案。这块原来是我发展的失误。曾经一个些java的大哥提醒我，不要过分迷信开源。事实的确是这样。以后逐渐接触好的商用软件，望有条件的朋友给予支持。
]]></description>
			<content:encoded><![CDATA[<p>网站技术总是无止境的，不同的网站有不同的技术架构。昨天接触了某门户技术总监，简单聊了些网站技术，才知道自己原来还在山脚。好多技术不是免费开源能换得来的，在实现一些事情的时候，商用软件能更快解决一些问题，节约的时间就是我们的利润。</p>
<p>但一般的中小网站依然提倡免费开源的解决方案，造成我思想上一些束缚， 没有去发散性的组织一些解决方案。这块原来是我发展的失误。曾经一个些java的大哥提醒我，不要过分迷信开源。事实的确是这样。以后逐渐接触好的商用软件，望有条件的朋友给予支持。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/30/%e5%b1%b1%e5%a4%96%e6%9c%89%e5%b1%b1%ef%bc%8c%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e5%a4%a7%e7%bd%91%e7%ab%99.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>杀死占用80端口的进程</title>
		<link>http://www.sunboyu.cn/2008/07/27/%e6%9d%80%e6%ad%bb%e5%8d%a0%e7%94%a880%e7%ab%af%e5%8f%a3%e7%9a%84%e8%bf%9b%e7%a8%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/27/%e6%9d%80%e6%ad%bb%e5%8d%a0%e7%94%a880%e7%ab%af%e5%8f%a3%e7%9a%84%e8%bf%9b%e7%a8%8b.shtml#comments</comments>
		<pubDate>Sun, 27 Jul 2008 02:33:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=225</guid>
		<description><![CDATA[just kill off the hanging processes:
# fuser 80/tcp
80/tcp:               3010  3702  4088 16754
# kill -n 9 3010
# kill -n 9 3702
# kill -n 9 4088
# kill -n 9 16754
# apachectl start
]]></description>
			<content:encoded><![CDATA[<p>just kill off the hanging processes:<br />
# fuser 80/tcp<br />
80/tcp:               3010  3702  4088 16754<br />
# kill -n 9 3010<br />
# kill -n 9 3702<br />
# kill -n 9 4088<br />
# kill -n 9 16754<br />
# apachectl start</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/27/%e6%9d%80%e6%ad%bb%e5%8d%a0%e7%94%a880%e7%ab%af%e5%8f%a3%e7%9a%84%e8%bf%9b%e7%a8%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>其实，问题并不是mysql引起的</title>
		<link>http://www.sunboyu.cn/2008/07/21/%e5%85%b6%e5%ae%9e%ef%bc%8c%e9%97%ae%e9%a2%98%e5%b9%b6%e4%b8%8d%e6%98%afmysql%e5%bc%95%e8%b5%b7%e7%9a%84.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/21/%e5%85%b6%e5%ae%9e%ef%bc%8c%e9%97%ae%e9%a2%98%e5%b9%b6%e4%b8%8d%e6%98%afmysql%e5%bc%95%e8%b5%b7%e7%9a%84.shtml#comments</comments>
		<pubDate>Mon, 21 Jul 2008 05:32:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[log]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=205</guid>
		<description><![CDATA[原来，mysql没有任何问题，我少安装了某个依赖的组件，这个，是详细分析了congfig.log后得出的结论，好几天就折腾这个了，我总是提醒别人多看日志，原来，自己也犯这个错误。
顺便提出，config.log 里边的日志，已经详细到c语言级代码的错误。所以，仔细查看日志，可以得出这些错误最终原因。
]]></description>
			<content:encoded><![CDATA[<p>原来，mysql没有任何问题，我少安装了某个依赖的组件，这个，是详细分析了congfig.log后得出的结论，好几天就折腾这个了，我总是提醒别人多看日志，原来，自己也犯这个错误。</p>
<p>顺便提出，config.log 里边的日志，已经详细到c语言级代码的错误。所以，仔细查看日志，可以得出这些错误最终原因。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/21/%e5%85%b6%e5%ae%9e%ef%bc%8c%e9%97%ae%e9%a2%98%e5%b9%b6%e4%b8%8d%e6%98%afmysql%e5%bc%95%e8%b5%b7%e7%9a%84.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>MYSQL无法编译，可能存在的问题</title>
		<link>http://www.sunboyu.cn/2008/07/19/mysql%e6%97%a0%e6%b3%95%e7%bc%96%e8%af%91%ef%bc%8c%e5%8f%af%e8%83%bd%e5%ad%98%e5%9c%a8%e7%9a%84%e9%97%ae%e9%a2%98.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/19/mysql%e6%97%a0%e6%b3%95%e7%bc%96%e8%af%91%ef%bc%8c%e5%8f%af%e8%83%bd%e5%ad%98%e5%9c%a8%e7%9a%84%e9%97%ae%e9%a2%98.shtml#comments</comments>
		<pubDate>Sat, 19 Jul 2008 07:32:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[差错]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=203</guid>
		<description><![CDATA[=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
mysql-devel             i386       5.0.45-7.el5     base              2.4 M
Installing for dependencies:
e2fsprogs-devel         i386       1.39-15.el5      base              568 k
keyutils-libs           i386       1.2-1.el5        base               18 k
keyutils-libs-devel     i386       1.2-1.el5        base               27 k
krb5-devel              i386       1.6.1-25.el5     base              1.9 M
libselinux-devel        i386       1.33.4-5.el5     base              131 k
libsepol-devel          i386       1.15.2-1.el5     base              189 k
mysql                   i386       5.0.45-7.el5     base              4.1 M
openssl-devel           i386       0.9.8b-10.el5    base              1.8 M
perl-DBI                i386       1.52-1.fc6       base              [...]]]></description>
			<content:encoded><![CDATA[<p>=============================================================================<br />
Package                 Arch       Version          Repository        Size<br />
=============================================================================<br />
Installing:<br />
mysql-devel             i386       5.0.45-7.el5     base              2.4 M<br />
Installing for dependencies:<br />
e2fsprogs-devel         i386       1.39-15.el5      base              568 k<br />
keyutils-libs           i386       1.2-1.el5        base               18 k<br />
keyutils-libs-devel     i386       1.2-1.el5        base               27 k<br />
krb5-devel              i386       1.6.1-25.el5     base              1.9 M<br />
libselinux-devel        i386       1.33.4-5.el5     base              131 k<br />
libsepol-devel          i386       1.15.2-1.el5     base              189 k<br />
mysql                   i386       5.0.45-7.el5     base              4.1 M<br />
openssl-devel           i386       0.9.8b-10.el5    base              1.8 M<br />
perl-DBI                i386       1.52-1.fc6       base              605 k<br />
zlib-devel              i386       1.2.3-3          base              101 k<br />
Updating for dependencies:<br />
e2fsprogs               i386       1.39-15.el5      base              964 k<br />
e2fsprogs-libs          i386       1.39-15.el5      base              116 k<br />
krb5-libs               i386       1.6.1-25.el5     base              656 k<br />
krb5-workstation        i386       1.6.1-25.el5     base              872 k<br />
libselinux              i386       1.33.4-5.el5     base               94 k<br />
libselinux-python       i386       1.33.4-5.el5     base               58 k<br />
openssl                 i686       0.9.8b-10.el5    base              1.4 M</p>
<p>Transaction Summary</p>
<p>还有就是mysql,client的问题<br />
checking whether to include mime_magic support&#8230; yes<br />
checking for MING support&#8230; no<br />
checking for mSQL support&#8230; yes<br />
checking mSQL version&#8230; 1.0<br />
checking for MSSQL support via FreeTDS&#8230; no<br />
checking for MySQL support&#8230; yes<br />
checking for specified location of the MySQL UNIX socket&#8230; /tmp/mysql.sock<br />
checking for MySQL UNIX socket location&#8230; /tmp/mysql.sock<br />
checking for mysql_close in -lmysqlclient&#8230; no<br />
checking for mysql_error in -lmysqlclient&#8230; no<br />
configure: error: mysql configure failed. Please check config.log for more information.<br />
make: *** No targets specified and no makefile found.  Stop.</p>
<p>rpm -Uvh glibc-kernheaders-2.4-9.1.98.EL.x86_64.rpm<br />
rpm -Uvh glibc-headers-2.3.4-2.19.x86_64.rpm<br />
rpm -Uvh glibc-devel-2.3.4-2.19.x86_64.rpm<br />
rpm -Uvh cpp-3.4.5-2.x86_64.rpm<br />
rpm -Uvh gcc-3.4.5-2.x86_64.rpm<br />
rpm -Uvh libstdc++-devel-3.4.5-2.x86_64.rpm<br />
rpm -Uvh gcc-c++-3.4.5-2.x86_64.rpm</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/19/mysql%e6%97%a0%e6%b3%95%e7%bc%96%e8%af%91%ef%bc%8c%e5%8f%af%e8%83%bd%e5%ad%98%e5%9c%a8%e7%9a%84%e9%97%ae%e9%a2%98.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Zeus适用体会</title>
		<link>http://www.sunboyu.cn/2008/07/11/zeus%e9%80%82%e7%94%a8%e4%bd%93%e4%bc%9a.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/11/zeus%e9%80%82%e7%94%a8%e4%bd%93%e4%bc%9a.shtml#comments</comments>
		<pubDate>Fri, 11 Jul 2008 14:21:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[Zeus]]></category>

		<category><![CDATA[体验]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=195</guid>
		<description><![CDATA[本来以为linux的软件安装会很麻烦，没想到安装Zeus如此的简单，一路next或者yes/no即可安装。系统有完善的后台管理界面，图形化的日志报表。
相比apache，功能没有显少，但效率和负载却很强。Zeus支持FastCGI的方式来运行PHP，这样LZMP的架构的确也很强。
唯一的缺点，Zeus收费。
]]></description>
			<content:encoded><![CDATA[<p>本来以为linux的软件安装会很麻烦，没想到安装Zeus如此的简单，一路next或者yes/no即可安装。系统有完善的后台管理界面，图形化的日志报表。</p>
<p>相比apache，功能没有显少，但效率和负载却很强。Zeus支持FastCGI的方式来运行PHP，这样LZMP的架构的确也很强。</p>
<p>唯一的缺点，Zeus收费。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/11/zeus%e9%80%82%e7%94%a8%e4%bd%93%e4%bc%9a.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Web Service来做简单认证服务器</title>
		<link>http://www.sunboyu.cn/2008/07/08/web-service%e6%9d%a5%e5%81%9a%e7%ae%80%e5%8d%95%e8%ae%a4%e8%af%81%e6%9c%8d%e5%8a%a1%e5%99%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/08/web-service%e6%9d%a5%e5%81%9a%e7%ae%80%e5%8d%95%e8%ae%a4%e8%af%81%e6%9c%8d%e5%8a%a1%e5%99%a8.shtml#comments</comments>
		<pubDate>Tue, 08 Jul 2008 03:21:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[APACHE]]></category>

		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[Web Service]]></category>

		<category><![CDATA[认证]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=183</guid>
		<description><![CDATA[Web Service简介
Web Service主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。 Web Service所使用的是Internet上统一、开放的标准，如HTTP、XML、SOAP（简单对象访问协议）、WSDL等，所以Web Service可以在任何支持这些标准的环境（Windows,Linux）中使用。注：SOAP协议（Simple Object Access Protocal,简单对象访问协议）,它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下，软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性，这有助于大量异构程序和平台之间的互操作性，从而使存在的应用程序能够被广泛的用户访问。
最近写一个认证服务器，需要进行不同程序，不同数据库之间的数据交换，认证服务器提供认证功能，而客户端可能是多种语言开发的。如果实用传统的方式，比如C，或者java开发一个稳定的服务端，人力精力都是问题，只能寻求一种简单的方式进行过渡。
这里我选择了Web Service这种方式，但这种方式也存在一定问题：速度。网上普遍反映速度是问题，soap的方式本身负载是问题，实用xmlrpc，http方式，瓶颈在于webserver的负载能力。但是项目发展初期，此方式完全能满足一段时间，而这段时间我们也能平滑过渡，留出时间进行更深层次的研究。
]]></description>
			<content:encoded><![CDATA[<p>Web Service简介</p>
<div style="border:dotted 1px;padding:5px">Web Service主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。 Web Service所使用的是Internet上统一、开放的标准，如HTTP、XML、SOAP（简单对象访问协议）、WSDL等，所以Web Service可以在任何支持这些标准的环境（Windows,Linux）中使用。注：SOAP协议（Simple Object Access Protocal,简单对象访问协议）,它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下，软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性，这有助于大量异构程序和平台之间的互操作性，从而使存在的应用程序能够被广泛的用户访问。</div>
<p>最近写一个认证服务器，需要进行不同程序，不同数据库之间的数据交换，认证服务器提供认证功能，而客户端可能是多种语言开发的。如果实用传统的方式，比如C，或者java开发一个稳定的服务端，人力精力都是问题，只能寻求一种简单的方式进行过渡。</p>
<p>这里我选择了Web Service这种方式，但这种方式也存在一定问题：速度。网上普遍反映速度是问题，soap的方式本身负载是问题，实用xmlrpc，http方式，瓶颈在于webserver的负载能力。但是项目发展初期，此方式完全能满足一段时间，而这段时间我们也能平滑过渡，留出时间进行更深层次的研究。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/08/web-service%e6%9d%a5%e5%81%9a%e7%ae%80%e5%8d%95%e8%ae%a4%e8%af%81%e6%9c%8d%e5%8a%a1%e5%99%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>人生就像网站，指不定谁捅你一刀。</title>
		<link>http://www.sunboyu.cn/2008/07/04/%e4%ba%ba%e7%94%9f%e5%b0%b1%e5%83%8f%e7%bd%91%e7%ab%99%ef%bc%8c%e6%8c%87%e4%b8%8d%e5%ae%9a%e8%b0%81%e6%8d%85%e4%bd%a0%e4%b8%80%e5%88%80%e3%80%82.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/04/%e4%ba%ba%e7%94%9f%e5%b0%b1%e5%83%8f%e7%bd%91%e7%ab%99%ef%bc%8c%e6%8c%87%e4%b8%8d%e5%ae%9a%e8%b0%81%e6%8d%85%e4%bd%a0%e4%b8%80%e5%88%80%e3%80%82.shtml#comments</comments>
		<pubDate>Fri, 04 Jul 2008 05:20:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[log]]></category>

		<category><![CDATA[分析]]></category>

		<category><![CDATA[日志]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=178</guid>
		<description><![CDATA[发现个德国鬼子：
85.236.38.117 - - [04/Jul/2008:05:30:48 +0800] &#8220;GET //phpshell.phphttp://sv-hbc.nl/db/cgi/idscan6?? HTTP/1.1&#8243; 404 12684 &#8220;-&#8221; &#8220;libwww-perl/5.805&#8243;
ip138.com IP查询(搜索IP地址的地理位置)
您查询的IP:85.236.38.117
* 本站主数据：德国
* 查询结果2：德国
* 查询结果3：德国
69.36.158.7 - - [25/Jun/2008:16:34:44 +0800] &#8220;GET /?feed=rss2 HTTP/1.0&#8243; 200 31085 &#8220;-&#8221; &#8220;Moreoverbot/5.00 (+http://www.moreover.com)&#8221;
新的搜索引擎？
202.108.7.219 - - [20/Jun/2008:04:12:29 +0800] &#8220;GET /?disType=0&#38;job=category&#38;seekname=2 HTTP/1.1&#8243; 200 32787 &#8220;-&#8221; &#8220;Mozilla/5.0 (compatible; YodaoBot/1.0; http://www.yodao.com/help/webmaster/spider/; )&#8221;
有道，算是熟人
61.135.168.127 - - [20/Jun/2008:05:39:56 +0800] &#8220;GET / HTTP/1.1&#8243; 200 32750 &#8220;-&#8221; &#8220;Baiduspider+(+http://www.baidu.com/search/spider.htm)&#8221;
66.249.67.198 - [...]]]></description>
			<content:encoded><![CDATA[<p>发现个德国鬼子：</p>
<p>85.236.38.117 - - [04/Jul/2008:05:30:48 +0800] &#8220;GET //phpshell.phphttp://sv-hbc.nl/db/cgi/idscan6?? HTTP/1.1&#8243; 404 12684 &#8220;-&#8221; &#8220;libwww-perl/5.805&#8243;</p>
<p>ip138.com IP查询(搜索IP地址的地理位置)<br />
您查询的IP:85.236.38.117</p>
<p>* 本站主数据：德国<br />
* 查询结果2：德国<br />
* 查询结果3：德国</p>
<p>69.36.158.7 - - [25/Jun/2008:16:34:44 +0800] &#8220;GET /?feed=rss2 HTTP/1.0&#8243; 200 31085 &#8220;-&#8221; &#8220;Moreoverbot/5.00 (+http://www.moreover.com)&#8221;<br />
新的搜索引擎？</p>
<p>202.108.7.219 - - [20/Jun/2008:04:12:29 +0800] &#8220;GET /?disType=0&amp;job=category&amp;seekname=2 HTTP/1.1&#8243; 200 32787 &#8220;-&#8221; &#8220;Mozilla/5.0 (compatible; YodaoBot/1.0; http://www.yodao.com/help/webmaster/spider/; )&#8221;<br />
有道，算是熟人</p>
<p>61.135.168.127 - - [20/Jun/2008:05:39:56 +0800] &#8220;GET / HTTP/1.1&#8243; 200 32750 &#8220;-&#8221; &#8220;Baiduspider+(+http://www.baidu.com/search/spider.htm)&#8221;<br />
66.249.67.198 - - [20/Jun/2008:05:25:34 +0800] &#8220;GET /upfiles/2008/06/1-300&#215;225.jpg HTTP/1.1&#8243; 200 15048 &#8220;-&#8221; &#8220;Googlebot-Image/1.0&#8243;<br />
百度google，这哥俩一起来了</p>
<p>65.55.213.107 - - [18/Jun/2008:13:38:12 +0800] &#8220;GET /upfiles/2008/06/img_3822.jpg HTTP/1.0&#8243; 200 105436 &#8220;-&#8221; &#8220;msnbot-media/1.0 (+http://search.msn.com/msnbot.htm)&#8221;<br />
谢谢盖茨捧场</p>
<p>124.207.144.194 - - [18/Jun/2008:13:51:01 +0800] &#8220;GET / HTTP/1.1&#8243; 200 32901 &#8220;http://www.coolcode.cn/?action=tags&amp;item=WordPress&amp;page=2&#8243; &#8220;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)&#8221;<br />
马哥这里来串门的</p>
<p>202.160.180.201 - - [16/Jun/2008:16:28:02 +0800] &#8220;GET /robots.txt HTTP/1.0&#8243; 302 0 &#8220;-&#8221; &#8220;Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)&#8221;<br />
雅虎来的时候会敲门的，很文明</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/04/%e4%ba%ba%e7%94%9f%e5%b0%b1%e5%83%8f%e7%bd%91%e7%ab%99%ef%bc%8c%e6%8c%87%e4%b8%8d%e5%ae%9a%e8%b0%81%e6%8d%85%e4%bd%a0%e4%b8%80%e5%88%80%e3%80%82.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>优秀的系统在于不断锤炼</title>
		<link>http://www.sunboyu.cn/2008/07/03/%e4%bc%98%e7%a7%80%e7%9a%84%e7%b3%bb%e7%bb%9f%e5%9c%a8%e4%ba%8e%e4%b8%8d%e6%96%ad%e9%94%a4%e7%82%bc.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/03/%e4%bc%98%e7%a7%80%e7%9a%84%e7%b3%bb%e7%bb%9f%e5%9c%a8%e4%ba%8e%e4%b8%8d%e6%96%ad%e9%94%a4%e7%82%bc.shtml#comments</comments>
		<pubDate>Thu, 03 Jul 2008 15:18:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[adodb]]></category>

		<category><![CDATA[lite]]></category>

		<category><![CDATA[稳定]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=176</guid>
		<description><![CDATA[最近写代码，为了一个数据库连接的问题，考虑了两个晚上。
一个是adodb的完整版本，一个是adodb lite版本。其实我一直在比较这两个版本的具体区别，和效率问题。另外主要考虑了它的扩展性和兼容性。
经过比较，我选择了lite版本，因为速度，adodb的功能是比lite完善不少，但过于庞大，真正想象，我根本不用那些功能。比如oracle数据库，没人会在oracle上用我这么点个程序。
不过两个类库的方法命令语法基本都一致，我可以轻松切换了。
稳定的系统，就得这样一点点得锤炼才行。
]]></description>
			<content:encoded><![CDATA[<p>最近写代码，为了一个数据库连接的问题，考虑了两个晚上。</p>
<p>一个是adodb的完整版本，一个是adodb lite版本。其实我一直在比较这两个版本的具体区别，和效率问题。另外主要考虑了它的扩展性和兼容性。</p>
<p>经过比较，我选择了lite版本，因为速度，adodb的功能是比lite完善不少，但过于庞大，真正想象，我根本不用那些功能。比如oracle数据库，没人会在oracle上用我这么点个程序。</p>
<p>不过两个类库的方法命令语法基本都一致，我可以轻松切换了。</p>
<p>稳定的系统，就得这样一点点得锤炼才行。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/03/%e4%bc%98%e7%a7%80%e7%9a%84%e7%b3%bb%e7%bb%9f%e5%9c%a8%e4%ba%8e%e4%b8%8d%e6%96%ad%e9%94%a4%e7%82%bc.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>msgclass是个好东西</title>
		<link>http://www.sunboyu.cn/2008/07/02/msgclass%e6%98%af%e4%b8%aa%e5%a5%bd%e4%b8%9c%e8%a5%bf.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/02/msgclass%e6%98%af%e4%b8%aa%e5%a5%bd%e4%b8%9c%e8%a5%bf.shtml#comments</comments>
		<pubDate>Wed, 02 Jul 2008 05:18:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[class]]></category>

		<category><![CDATA[msn]]></category>

		<category><![CDATA[开源]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=169</guid>
		<description><![CDATA[突然发现了这个类。
msn的协议是公开的，但官方网站的资料我一直没有看懂，英文水平和windows下编程都不是很在行。
这个类也是开源的，可以帮助我们理解下msn的协议。
另外，垃圾消息可能就是这样来的……
下载：sendmsg
]]></description>
			<content:encoded><![CDATA[<p>突然发现了这个类。</p>
<p>msn的协议是公开的，但官方网站的资料我一直没有看懂，英文水平和windows下编程都不是很在行。</p>
<p>这个类也是开源的，可以帮助我们理解下msn的协议。</p>
<p>另外，垃圾消息可能就是这样来的……</p>
<p>下载：<a href="http://www.sunboyu.cn/upfiles/2008/07/sendmsg.zip">sendmsg</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/02/msgclass%e6%98%af%e4%b8%aa%e5%a5%bd%e4%b8%9c%e8%a5%bf.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>开始学习C</title>
		<link>http://www.sunboyu.cn/2008/07/02/%e5%bc%80%e5%a7%8b%e5%ad%a6%e4%b9%a0c.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/02/%e5%bc%80%e5%a7%8b%e5%ad%a6%e4%b9%a0c.shtml#comments</comments>
		<pubDate>Wed, 02 Jul 2008 00:52:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[api]]></category>

		<category><![CDATA[c]]></category>

		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=168</guid>
		<description><![CDATA[昨天正式开始复习C语言，在大数据量的分析中，C,JAVA这些语言还是占有很大优势。以后用C的地方可能很多，平时复习一点为好。
http://www.bloodshed.net/     这个开发工具不错，一个轻量级的。
昨天第一课，用C连接mysql，失败了，继续。
]]></description>
			<content:encoded><![CDATA[<p>昨天正式开始复习C语言，在大数据量的分析中，C,JAVA这些语言还是占有很大优势。以后用C的地方可能很多，平时复习一点为好。</p>
<p>http://www.bloodshed.net/     这个开发工具不错，一个轻量级的。</p>
<p>昨天第一课，用C连接mysql，失败了，继续。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/02/%e5%bc%80%e5%a7%8b%e5%ad%a6%e4%b9%a0c.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>mysql连接机制笔记</title>
		<link>http://www.sunboyu.cn/2008/07/01/mysql%e8%bf%9e%e6%8e%a5%e6%9c%ba%e5%88%b6%e7%ac%94%e8%ae%b0.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/01/mysql%e8%bf%9e%e6%8e%a5%e6%9c%ba%e5%88%b6%e7%ac%94%e8%ae%b0.shtml#comments</comments>
		<pubDate>Tue, 01 Jul 2008 02:20:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[socket]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=167</guid>
		<description><![CDATA[php连接mysql是通过socket进行连接。mysql没有连接池，很郁闷的事情。
连接分 pconnect connect，connect是每次查询都新建一个连接。pconnect是在同一页面中，所有查询都使用一个连接。
]]></description>
			<content:encoded><![CDATA[<p>php连接mysql是通过socket进行连接。mysql没有连接池，很郁闷的事情。</p>
<p>连接分 pconnect connect，connect是每次查询都新建一个连接。pconnect是在同一页面中，所有查询都使用一个连接。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/01/mysql%e8%bf%9e%e6%8e%a5%e6%9c%ba%e5%88%b6%e7%ac%94%e8%ae%b0.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>mysqli学习中</title>
		<link>http://www.sunboyu.cn/2008/06/28/mysqli%e5%ad%a6%e4%b9%a0%e4%b8%ad.shtml</link>
		<comments>http://www.sunboyu.cn/2008/06/28/mysqli%e5%ad%a6%e4%b9%a0%e4%b8%ad.shtml#comments</comments>
		<pubDate>Sat, 28 Jun 2008 13:47:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[技术存档]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=164</guid>
		<description><![CDATA[任何系统中，数据库连接都是核心的一个操作。
听说mysqli这个组件不错，学习一下，果然发现不少优秀的地方。
http://www.php.net/manual/zh/ref.mysqli.php
这是官方的手册，做个标记，继续学习。
]]></description>
			<content:encoded><![CDATA[<p>任何系统中，数据库连接都是核心的一个操作。</p>
<p>听说mysqli这个组件不错，学习一下，果然发现不少优秀的地方。</p>
<p>http://www.php.net/manual/zh/ref.mysqli.php</p>
<p>这是官方的手册，做个标记，继续学习。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/06/28/mysqli%e5%ad%a6%e4%b9%a0%e4%b8%ad.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>今天申请了一个google code的帐号</title>
		<link>http://www.sunboyu.cn/2008/06/28/%e4%bb%8a%e5%a4%a9%e7%94%b3%e8%af%b7%e4%ba%86%e4%b8%80%e4%b8%aagoogle-code%e7%9a%84%e5%b8%90%e5%8f%b7.shtml</link>
		<comments>http://www.sunboyu.cn/2008/06/28/%e4%bb%8a%e5%a4%a9%e7%94%b3%e8%af%b7%e4%ba%86%e4%b8%80%e4%b8%aagoogle-code%e7%9a%84%e5%b8%90%e5%8f%b7.shtml#comments</comments>
		<pubDate>Sat, 28 Jun 2008 08:30:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=163</guid>
		<description><![CDATA[http://code.google.com/p/phpdeveloppackage/
免费，挺好用，管理自己的一些代码，挺好的。
以后拼命的结果就都在这里了。
]]></description>
			<content:encoded><![CDATA[<p>http://code.google.com/p/phpdeveloppackage/</p>
<p>免费，挺好用，管理自己的一些代码，挺好的。</p>
<p>以后拼命的结果就都在这里了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/06/28/%e4%bb%8a%e5%a4%a9%e7%94%b3%e8%af%b7%e4%ba%86%e4%b8%80%e4%b8%aagoogle-code%e7%9a%84%e5%b8%90%e5%8f%b7.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>AK47-开放源代码冲锋枪</title>
		<link>http://www.sunboyu.cn/2008/06/28/ak47-%e5%bc%80%e6%94%be%e6%ba%90%e4%bb%a3%e7%a0%81%e5%86%b2%e9%94%8b%e6%9e%aa.shtml</link>
		<comments>http://www.sunboyu.cn/2008/06/28/ak47-%e5%bc%80%e6%94%be%e6%ba%90%e4%bb%a3%e7%a0%81%e5%86%b2%e9%94%8b%e6%9e%aa.shtml#comments</comments>
		<pubDate>Sat, 28 Jun 2008 01:11:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[ak47]]></category>

		<category><![CDATA[开源]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=161</guid>
		<description><![CDATA[“路径依赖”理论启发商人们想出了一个经营策略:虽然软件公司都抱怨盗版，但他们早就意识到让别人违法地仿造其产品并不是坏事。人人都上钩之后，就可以开始卖升级产品，或者提供服务，附加别的花哨的东西。这是开放源代码的好处。照此说来，苏联的AK-47是世界上最流行的开放源代码冲锋枪。
　20世纪40年代中期，人类发明了有史以来最具破坏性的武器。原子弹让人们夜不成眠，但真正造成巨大破坏的却是AK-47。这种有显眼黄色弹匣的冲锋枪造成的死亡和毁灭多过任何其他现代化武器。到今年它已经问世60年了，但还没有一点退休的迹象。
 
它的发明者、俄罗斯的卡拉什尼科夫现在已经近90岁了，住在莫斯科以东1130公里处乌拉尔地区的伊热夫斯克市。他对自己的这项发明内心很矛盾。他仍为向苏联普通士兵提供了这样一种强大的武器而感到自豪，但又因为自己的名字跟死亡和恐怖联系在一起而感到懊悔。“一旦有人发明出一种更好的冲锋枪，我就会跟他握手。但目前这件事情还没有发生。”
 
牛津大学教授菲利普·基利科特（Phillip Killicoat）在提交给世界银行的论文《武器经济学:冲锋枪的全球市场》中分析了AK-47为什么在世界各地有不同的售价。比如AK-47在非洲通常要比在其他地方便宜200多美元。基利科特说:“非洲各国的边境管理比其他地方要宽松很多，冲锋枪在非洲的交易不太受管制，当需要购买这种武器时几乎不存在贸易壁垒。一个时期非洲只有几个国家因为发生冲突而需要武器，宽松的边境管理使得非洲的武器供应可以满足这些国家的需要。”
 
基利科特还解释了为什么世界各地的交战双方都选用这种武器。通常做法是像迈克·霍奇一样，把这归因于AK-47功能上的特点:容易操作，造价低廉，坚实耐用，故障率低。而它不够精准、对使用者来说不够安全、瞄准范围相对较小的缺点都被忽略掉了。这种解释有一个说不通的地方，即其他操作同样简便的冲锋枪就没有像卡拉什尼科夫设计的这种枪这样被广泛采用。
 
　　基利科特提出，AK-47的流行可以用路径依赖理论（path dependence）来解释。1936年，美国发明家德沃夏克（Dvorak）博士历经十余年的研究发明了ASK键盘（American　 Simplified　Keyboard，即美式简化键盘），他声称这种键盘比打字机发明者、美国人肖尔斯1870年设计的、现在通用的QWERTY键盘效率更高。据说当初肖尔斯在研制打字机时，为了解决打字员打字速度过快造成挤塞的问题，故意打乱了字母排列顺序，形成了直到今天通用的QWERTY顺序排列。不过，德沃夏克先进的ASK键盘没能占领市场，反而逐渐地销声匿迹了，QWERTY一直独霸着键盘市场。
 
　　美国斯坦福大学经济学教授保罗·戴维认为，QWERTY键盘之所以能在市场上占统治地位，不是因为它的效率高，而是因为它出现得早，普及之后，对它进行更新换代的成本太高。像这样，一个有缺陷的产品由于它早期一个小的优势而被广泛采用之后就独霸了市场的情形被称作“路径依赖”。具体到AK-47来说，它早期的优点或许是它是苏联人的发明，不受知识产权的限制，可以随意仿造。
 
　　“路径依赖”理论启发商人们想出了一个经营策略:虽然软件公司都抱怨盗版，但他们早就意识到让别人违法地仿造其产品并不是坏事。人人都上钩之后，就可以开始卖升级产品，或者提供服务，附加别的花哨的东西。这是开放源代码的好处。照此说来，苏联的AK-47是世界上最流行的开放源代码冲锋枪。
ak47设计图纸
]]></description>
			<content:encoded><![CDATA[<p>“路径依赖”理论启发商人们想出了一个经营策略:虽然软件公司都抱怨盗版，但他们早就意识到让别人违法地仿造其产品并不是坏事。人人都上钩之后，就可以开始卖升级产品，或者提供服务，附加别的花哨的东西。这是开放源代码的好处。照此说来，苏联的AK-47是世界上最流行的开放源代码冲锋枪。</p>
<p>　20世纪40年代中期，人类发明了有史以来最具破坏性的武器。原子弹让人们夜不成眠，但真正造成巨大破坏的却是AK-47。这种有显眼黄色弹匣的冲锋枪造成的死亡和毁灭多过任何其他现代化武器。到今年它已经问世60年了，但还没有一点退休的迹象。</p>
<p> </p>
<p>它的发明者、俄罗斯的卡拉什尼科夫现在已经近90岁了，住在莫斯科以东1130公里处乌拉尔地区的伊热夫斯克市。他对自己的这项发明内心很矛盾。他仍为向苏联普通士兵提供了这样一种强大的武器而感到自豪，但又因为自己的名字跟死亡和恐怖联系在一起而感到懊悔。“一旦有人发明出一种更好的冲锋枪，我就会跟他握手。但目前这件事情还没有发生。”</p>
<p> </p>
<p>牛津大学教授菲利普·基利科特（Phillip Killicoat）在提交给世界银行的论文《武器经济学:冲锋枪的全球市场》中分析了AK-47为什么在世界各地有不同的售价。比如AK-47在非洲通常要比在其他地方便宜200多美元。基利科特说:“非洲各国的边境管理比其他地方要宽松很多，冲锋枪在非洲的交易不太受管制，当需要购买这种武器时几乎不存在贸易壁垒。一个时期非洲只有几个国家因为发生冲突而需要武器，宽松的边境管理使得非洲的武器供应可以满足这些国家的需要。”</p>
<p> </p>
<p>基利科特还解释了为什么世界各地的交战双方都选用这种武器。通常做法是像迈克·霍奇一样，把这归因于AK-47功能上的特点:容易操作，造价低廉，坚实耐用，故障率低。而它不够精准、对使用者来说不够安全、瞄准范围相对较小的缺点都被忽略掉了。这种解释有一个说不通的地方，即其他操作同样简便的冲锋枪就没有像卡拉什尼科夫设计的这种枪这样被广泛采用。</p>
<p> </p>
<p>　　基利科特提出，AK-47的流行可以用路径依赖理论（path dependence）来解释。1936年，美国发明家德沃夏克（Dvorak）博士历经十余年的研究发明了ASK键盘（American　 Simplified　Keyboard，即美式简化键盘），他声称这种键盘比打字机发明者、美国人肖尔斯1870年设计的、现在通用的QWERTY键盘效率更高。据说当初肖尔斯在研制打字机时，为了解决打字员打字速度过快造成挤塞的问题，故意打乱了字母排列顺序，形成了直到今天通用的QWERTY顺序排列。不过，德沃夏克先进的ASK键盘没能占领市场，反而逐渐地销声匿迹了，QWERTY一直独霸着键盘市场。</p>
<p> </p>
<p>　　美国斯坦福大学经济学教授保罗·戴维认为，QWERTY键盘之所以能在市场上占统治地位，不是因为它的效率高，而是因为它出现得早，普及之后，对它进行更新换代的成本太高。像这样，一个有缺陷的产品由于它早期一个小的优势而被广泛采用之后就独霸了市场的情形被称作“路径依赖”。具体到AK-47来说，它早期的优点或许是它是苏联人的发明，不受知识产权的限制，可以随意仿造。</p>
<p> </p>
<p>　　“路径依赖”理论启发商人们想出了一个经营策略:虽然软件公司都抱怨盗版，但他们早就意识到让别人违法地仿造其产品并不是坏事。人人都上钩之后，就可以开始卖升级产品，或者提供服务，附加别的花哨的东西。这是开放源代码的好处。照此说来，苏联的AK-47是世界上最流行的开放源代码冲锋枪。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/06/ak47.dwg">ak47设计图纸</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/06/28/ak47-%e5%bc%80%e6%94%be%e6%ba%90%e4%bb%a3%e7%a0%81%e5%86%b2%e9%94%8b%e6%9e%aa.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP CLI应用进阶</title>
		<link>http://www.sunboyu.cn/2008/06/13/php-cli%e5%ba%94%e7%94%a8%e8%bf%9b%e9%98%b6.shtml</link>
		<comments>http://www.sunboyu.cn/2008/06/13/php-cli%e5%ba%94%e7%94%a8%e8%bf%9b%e9%98%b6.shtml#comments</comments>
		<pubDate>Fri, 13 Jun 2008 04:51:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=78</guid>
		<description><![CDATA[上篇介绍了命令行参数的传递，参考php官方手册后，发现php的cli也是可以跟用户进行交互的。
http://cn.php.net/manual/en/features.commandline.php
To ease working in the shell environment, the following constants      are defined:

CLI specific Constants
 


Constant
Description




STDIN

An already opened stream to stdin. This saves          opening it with

 &#60;?php
$stdin
= fopen(&#8216;php://stdin&#8217;, &#8216;r&#8217;);
?&#62;  

If you want to read single line from stdin, you can  [...]]]></description>
			<content:encoded><![CDATA[<p>上篇介绍了命令行参数的传递，参考php官方手册后，发现php的cli也是可以跟用户进行交互的。</p>
<p>http://cn.php.net/manual/en/features.commandline.php</p>
<p class="para">To ease working in the shell environment, the following constants      are defined:</p>
<table border="5">
<caption><strong>CLI specific Constants</strong></caption>
<colgroup> </colgroup>
<thead>
<tr valign="middle">
<th>Constant</th>
<th>Description</th>
</tr>
</thead>
<tbody class="tbody">
<tr valign="middle">
<td align="left"><strong><tt>STDIN</tt></strong></td>
<td align="left">
<p class="para">An already opened stream to <em>stdin</em>. This saves          opening it with</p>
<div class="example-contents">
<div class="phpcode"><code><span style="color: #000000;"> <span style="color: #0000bb;">&lt;?php</p>
<p>$stdin</p>
<p></span><span style="color: #007700;">= </span><span style="color: #0000bb;">fopen</span><span style="color: #007700;">(</span><span style="color: #dd0000;">&#8216;php://stdin&#8217;</span><span style="color: #007700;">, </span><span style="color: #dd0000;">&#8216;r&#8217;</span><span style="color: #007700;">);</p>
<p></span><span style="color: #0000bb;">?&gt;</span> </span> </code></div>
</div>
<p>If you want to read single line from <em>stdin</em>, you can          use</p>
<div class="example-contents">
<div class="phpcode"><code><span style="color: #000000;"> <span style="color: #0000bb;">&lt;?php<br />
$line </span><span style="color: #007700;">= </span><span style="color: #0000bb;">trim</span><span style="color: #007700;">(</span><span style="color: #0000bb;">fgets</span><span style="color: #007700;">(</span><span style="color: #0000bb;">STDIN</span><span style="color: #007700;">)); </span><span style="color: #ff8000;">// reads one line from STDIN<br />
</span><span style="color: #0000bb;">fscanf</span><span style="color: #007700;">(</span><span style="color: #0000bb;">STDIN</span><span style="color: #007700;">, </span><span style="color: #dd0000;">&#8220;%d\n&#8221;</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$number</span><span style="color: #007700;">); </span><span style="color: #ff8000;">// reads number from STDIN<br />
</span><span style="color: #0000bb;">?&gt;</span> </span> </code></div>
</div>
</td>
</tr>
<tr valign="middle">
<td align="left"><strong><tt>STDOUT</tt></strong></td>
<td align="left">
<p class="para">An already opened stream to <em>stdout</em>. This saves          opening it with</p>
<div class="example-contents">
<div class="phpcode"><code><span style="color: #000000;"> <span style="color: #0000bb;">&lt;?php</p>
<p>$stdout</p>
<p></span><span style="color: #007700;">= </span><span style="color: #0000bb;">fopen</span><span style="color: #007700;">(</span><span style="color: #dd0000;">&#8216;php://stdout&#8217;</span><span style="color: #007700;">, </span><span style="color: #dd0000;">&#8216;w&#8217;</span><span style="color: #007700;">);</p>
<p></span><span style="color: #0000bb;">?&gt;</span> </span> </code></div>
</div>
</td>
</tr>
<tr valign="middle">
<td align="left"><strong><tt>STDERR</tt></strong></td>
<td align="left">
<p class="para">An already opened stream to <em>stderr</em>.            This saves opening it with</p>
<div class="example-contents">
<div class="phpcode"><code><span style="color: #000000;"> <span style="color: #0000bb;">&lt;?php</p>
<p>$stderr</p>
<p></span><span style="color: #007700;">= </span><span style="color: #0000bb;">fopen</span><span style="color: #007700;">(</span><span style="color: #dd0000;">&#8216;php://stderr&#8217;</span><span style="color: #007700;">, </span><span style="color: #dd0000;">&#8216;w&#8217;</span><span style="color: #007700;">);</p>
<p></span><span style="color: #0000bb;">?&gt;</span> </span> </code></div>
</div>
</td>
</tr>
</tbody>
</table>
<p>我比较倾向这种方式，这样就跟c＋＋类似了</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;?php</li>
<li>$line = trim(fgets(STDIN)); // reads one line from STDIN</li>
<li>fscanf(STDIN, &quot;%d\n&quot;, $number); // reads number from STDIN</li>
<li>?&gt;</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/06/13/php-cli%e5%ba%94%e7%94%a8%e8%bf%9b%e9%98%b6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>wordpress装修进行时</title>
		<link>http://www.sunboyu.cn/2008/06/12/wordpress%e8%a3%85%e4%bf%ae%e8%bf%9b%e8%a1%8c%e6%97%b6.shtml</link>
		<comments>http://www.sunboyu.cn/2008/06/12/wordpress%e8%a3%85%e4%bf%ae%e8%bf%9b%e8%a1%8c%e6%97%b6.shtml#comments</comments>
		<pubDate>Thu, 12 Jun 2008 04:51:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[豆瓣]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=76</guid>
		<description><![CDATA[找了个老外的皮肤，简单汉化，修改结构后，开始我的wordpress装修之旅。
字体，皮肤样式，结构，都已经修改。
增加了好多交互性的功能，只是模板中增加，并没有做成插件。
比如增加了一些联系方式，豆瓣，其他api的东西。
学技术的人就是爱得瑟，继续寻找可装修的东西。
不过看到alex排名涨了，我很欣慰。
]]></description>
			<content:encoded><![CDATA[<p>找了个老外的皮肤，简单汉化，修改结构后，开始我的wordpress装修之旅。</p>
<p>字体，皮肤样式，结构，都已经修改。</p>
<p>增加了好多交互性的功能，只是模板中增加，并没有做成插件。</p>
<p>比如增加了一些联系方式，豆瓣，其他api的东西。</p>
<p>学技术的人就是爱得瑟，继续寻找可装修的东西。</p>
<p>不过看到alex排名涨了，我很欣慰。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/06/12/wordpress%e8%a3%85%e4%bf%ae%e8%bf%9b%e8%a1%8c%e6%97%b6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>UE简介与理解</title>
		<link>http://www.sunboyu.cn/2008/06/06/ue%e7%ae%80%e4%bb%8b%e4%b8%8e%e7%90%86%e8%a7%a3.shtml</link>
		<comments>http://www.sunboyu.cn/2008/06/06/ue%e7%ae%80%e4%bb%8b%e4%b8%8e%e7%90%86%e8%a7%a3.shtml#comments</comments>
		<pubDate>Fri, 06 Jun 2008 04:41:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[UE]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=68</guid>
		<description><![CDATA[UE(User-Experience)用户体验   详解
UE设计旨在提高用户与网站程序的交互方便与易用性。
UE设计一方面要从用户角度考虑，去满足用户的需求并且提供我们的服务，另外考虑程序设计的复杂度，实现难度，可实施性等。
相关资源   http://www.uie.com/
http://www.useit.com/
http://www.upachina.org/
]]></description>
			<content:encoded><![CDATA[<p>UE(User-Experience)用户体验   <a href="http://baike.baidu.com/view/529330.htm">详解</a></p>
<p>UE设计旨在提高用户与网站程序的交互方便与易用性。</p>
<p>UE设计一方面要从用户角度考虑，去满足用户的需求并且提供我们的服务，另外考虑程序设计的复杂度，实现难度，可实施性等。</p>
<p>相关资源   http://www.uie.com/</p>
<p>http://www.useit.com/</p>
<p>http://www.upachina.org/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/06/06/ue%e7%ae%80%e4%bb%8b%e4%b8%8e%e7%90%86%e8%a7%a3.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>FIREFOX 3 试用</title>
		<link>http://www.sunboyu.cn/2008/05/26/firefox-3-%e8%af%95%e7%94%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2008/05/26/firefox-3-%e8%af%95%e7%94%a8.shtml#comments</comments>
		<pubDate>Mon, 26 May 2008 11:45:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=55</guid>
		<description><![CDATA[今天得瑟一下，下了个ff3试试。早听说ff3比ff2有了很大的改进，我也体验一下
我是在没有卸载ff2的情况下直接安装的，中间会提示一些相关信息。
敲网址，这个功能很不错，来个截图

不错。
然后测试了下页面解析速度，新浪首页排版够乱了，打开也是很快。看来以后我用试用一段了。
]]></description>
			<content:encoded><![CDATA[<p>今天得瑟一下，下了个ff3试试。早听说ff3比ff2有了很大的改进，我也体验一下</p>
<p>我是在没有卸载ff2的情况下直接安装的，中间会提示一些相关信息。</p>
<p>敲网址，这个功能很不错，来个截图</p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/05/e69caae591bde5908d-1.jpg"><img class="alignnone size-medium wp-image-56" title="e69caae591bde5908d-1" src="http://www.sunboyu.cn/upfiles/2008/05/e69caae591bde5908d-1-300x100.jpg" alt="" width="300" height="100" /></a></p>
<p>不错。</p>
<p>然后测试了下页面解析速度，新浪首页排版够乱了，打开也是很快。看来以后我用试用一段了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/05/26/firefox-3-%e8%af%95%e7%94%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>JS事件触发函数的一点小问题</title>
		<link>http://www.sunboyu.cn/2008/05/26/js%e4%ba%8b%e4%bb%b6%e8%a7%a6%e5%8f%91%e5%87%bd%e6%95%b0%e7%9a%84%e4%b8%80%e7%82%b9%e5%b0%8f%e9%97%ae%e9%a2%98.shtml</link>
		<comments>http://www.sunboyu.cn/2008/05/26/js%e4%ba%8b%e4%bb%b6%e8%a7%a6%e5%8f%91%e5%87%bd%e6%95%b0%e7%9a%84%e4%b8%80%e7%82%b9%e5%b0%8f%e9%97%ae%e9%a2%98.shtml#comments</comments>
		<pubDate>Mon, 26 May 2008 04:51:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[onclick]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=54</guid>
		<description><![CDATA[写了个js的函数，使表单执行POST的操作
function form_submit()
{
doucment.getElementById(&#8217;xxxx&#8217;).submit();
}
使用这样的代码来调用  &#60;a onclick=&#8221;form_submit()&#8221; href=&#8221;javascript:void(0)&#8221;&#62;启用&#60;/a&#62;
IE6下无论如何都不执行，但在FF下却可以执行
然后修改为  &#60;a href=&#8221;javascript:form_submit()&#8221;&#62;停用&#60;/a&#62;
前段代码，经过测试，在onclick动作的时候，虽然href没有返回值，但onclick的动作成功触发了函数，可以执行操作，但无法执行post的操作，具体什么原因没有查明白，待解。
]]></description>
			<content:encoded><![CDATA[<p>写了个js的函数，使表单执行POST的操作</p>
<p>function form_submit()<br />
{<br />
doucment.getElementById(&#8217;xxxx&#8217;).submit();<br />
}</p>
<p>使用这样的代码来调用  &lt;a onclick=&#8221;form_submit()&#8221; href=&#8221;javascript:void(0)&#8221;&gt;启用&lt;/a&gt;</p>
<p>IE6下无论如何都不执行，但在FF下却可以执行</p>
<p>然后修改为  &lt;a href=&#8221;javascript:form_submit()&#8221;&gt;停用&lt;/a&gt;</p>
<p>前段代码，经过测试，在onclick动作的时候，虽然href没有返回值，但onclick的动作成功触发了函数，可以执行操作，但无法执行post的操作，具体什么原因没有查明白，待解。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/05/26/js%e4%ba%8b%e4%bb%b6%e8%a7%a6%e5%8f%91%e5%87%bd%e6%95%b0%e7%9a%84%e4%b8%80%e7%82%b9%e5%b0%8f%e9%97%ae%e9%a2%98.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>linux下安装eAccelerator加速器</title>
		<link>http://www.sunboyu.cn/2008/05/24/linux%e4%b8%8b%e5%ae%89%e8%a3%85eaccelerator%e5%8a%a0%e9%80%9f%e5%99%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2008/05/24/linux%e4%b8%8b%e5%ae%89%e8%a3%85eaccelerator%e5%8a%a0%e9%80%9f%e5%99%a8.shtml#comments</comments>
		<pubDate>Sat, 24 May 2008 15:16:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[eAccelerator]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[加速]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=51</guid>
		<description><![CDATA[http://eaccelerator.net/   官方
http://eaccelerator.net/wiki/Release-0.9.5.3   下载最新版本即可
安装前需要安装gcc或者phpize
然后安装php-devel    yum install php-devel
./configure &#8211;enable-eaccelerator=shared-memory &#8211;with-php-config=/usr/bin/php-config &#8211;with-eaccelerator-shared-memory &#8211;with-eaccelerator-content-caching
make
注：&#8211;with-php-config 后边跟php-config的路径，根据环境确定
然后在php.ini中追加以下代码
安装为 Zend extension 模式：
zend_extension=&#8221;eaccelerator.so&#8221;   //eaccelerator.so 拷贝到 php ext 目录下
eaccelerator.shm_size=&#8221;16&#8243;
eaccelerator.cache_dir=&#8221;/tmp/eaccelerator&#8221;
eaccelerator.enable=&#8221;1&#8243;
eaccelerator.optimizer=&#8221;1&#8243;
eaccelerator.check_mtime=&#8221;1&#8243;
eaccelerator.debug=&#8221;0&#8243;
eaccelerator.log_file = &#8220;/log/httpd/eaccelerator_log&#8221;
eaccelerator.filter=&#8221;"
eaccelerator.shm_max=&#8221;0&#8243;
eaccelerator.shm_ttl=&#8221;0&#8243;
eaccelerator.shm_prune_period=&#8221;0&#8243;
eaccelerator.shm_only=&#8221;0&#8243;
eaccelerator.compress=&#8221;1&#8243;
eaccelerator.compress_level=&#8221;9&#8243;
如果你使用了thread safe模式安装的PHP，你必须使用 “zend_extension_ts” 替换第一行的 “zend_extension”.
安装为 PHP extension 模式：（这是大部分采用的方式）
extension=&#8221;eaccelerator.so&#8221;
eaccelerator.shm_size=&#8221;16&#8243;
eaccelerator.cache_dir=&#8221;/tmp/eaccelerator&#8221;
eaccelerator.enable=&#8221;1&#8243;
eaccelerator.optimizer=&#8221;1&#8243;
eaccelerator.check_mtime=&#8221;1&#8243;
eaccelerator.debug=&#8221;0&#8243;
eaccelerator.log_file = &#8220;/log/httpd/eaccelerator_log&#8221;
eaccelerator.filter=&#8221;"
eaccelerator.shm_max=&#8221;0&#8243;
eaccelerator.shm_ttl=&#8221;0&#8243;
eaccelerator.shm_prune_period=&#8221;0&#8243;
eaccelerator.shm_only=&#8221;0&#8243;
eaccelerator.compress=&#8221;1&#8243;
eaccelerator.compress_level=&#8221;9&#8243;
php ini 设置的详细文档 http://eaccelerator.net/wiki/Settings
api 文档 http://bart.eaccelerator.net/doc/phpdoc/
]]></description>
			<content:encoded><![CDATA[<p>http://eaccelerator.net/   官方</p>
<p>http://eaccelerator.net/wiki/Release-0.9.5.3   下载最新版本即可</p>
<p>安装前需要安装gcc或者phpize</p>
<p>然后安装php-devel    yum install php-devel</p>
<p>./configure &#8211;enable-eaccelerator=shared-memory &#8211;with-php-config=/usr/bin/php-config &#8211;with-eaccelerator-shared-memory &#8211;with-eaccelerator-content-caching<br />
make</p>
<p>注：&#8211;with-php-config 后边跟php-config的路径，根据环境确定</p>
<p>然后在php.ini中追加以下代码</p>
<p>安装为 Zend extension 模式：</p>
<p>zend_extension=&#8221;eaccelerator.so&#8221;   //eaccelerator.so 拷贝到 php ext 目录下<br />
eaccelerator.shm_size=&#8221;16&#8243;<br />
eaccelerator.cache_dir=&#8221;/tmp/eaccelerator&#8221;<br />
eaccelerator.enable=&#8221;1&#8243;<br />
eaccelerator.optimizer=&#8221;1&#8243;<br />
eaccelerator.check_mtime=&#8221;1&#8243;<br />
eaccelerator.debug=&#8221;0&#8243;<br />
eaccelerator.log_file = &#8220;/log/httpd/eaccelerator_log&#8221;<br />
eaccelerator.filter=&#8221;"<br />
eaccelerator.shm_max=&#8221;0&#8243;<br />
eaccelerator.shm_ttl=&#8221;0&#8243;<br />
eaccelerator.shm_prune_period=&#8221;0&#8243;<br />
eaccelerator.shm_only=&#8221;0&#8243;<br />
eaccelerator.compress=&#8221;1&#8243;<br />
eaccelerator.compress_level=&#8221;9&#8243;</p>
<p>如果你使用了thread safe模式安装的PHP，你必须使用 “zend_extension_ts” 替换第一行的 “zend_extension”.<br />
安装为 PHP extension 模式：（这是大部分采用的方式）</p>
<p>extension=&#8221;eaccelerator.so&#8221;<br />
eaccelerator.shm_size=&#8221;16&#8243;<br />
eaccelerator.cache_dir=&#8221;/tmp/eaccelerator&#8221;<br />
eaccelerator.enable=&#8221;1&#8243;<br />
eaccelerator.optimizer=&#8221;1&#8243;<br />
eaccelerator.check_mtime=&#8221;1&#8243;<br />
eaccelerator.debug=&#8221;0&#8243;<br />
eaccelerator.log_file = &#8220;/log/httpd/eaccelerator_log&#8221;<br />
eaccelerator.filter=&#8221;"<br />
eaccelerator.shm_max=&#8221;0&#8243;<br />
eaccelerator.shm_ttl=&#8221;0&#8243;<br />
eaccelerator.shm_prune_period=&#8221;0&#8243;<br />
eaccelerator.shm_only=&#8221;0&#8243;<br />
eaccelerator.compress=&#8221;1&#8243;<br />
eaccelerator.compress_level=&#8221;9&#8243;</p>
<p>php ini 设置的详细文档 http://eaccelerator.net/wiki/Settings<br />
api 文档 http://bart.eaccelerator.net/doc/phpdoc/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/05/24/linux%e4%b8%8b%e5%ae%89%e8%a3%85eaccelerator%e5%8a%a0%e9%80%9f%e5%99%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>一个不错的JS日期时间控件－My97Datepicker</title>
		<link>http://www.sunboyu.cn/2008/05/22/%e4%b8%80%e4%b8%aa%e4%b8%8d%e9%94%99%e7%9a%84js%e6%97%a5%e6%9c%9f%e6%97%b6%e9%97%b4%e6%8e%a7%e4%bb%b6%ef%bc%8dmy97datepicker.shtml</link>
		<comments>http://www.sunboyu.cn/2008/05/22/%e4%b8%80%e4%b8%aa%e4%b8%8d%e9%94%99%e7%9a%84js%e6%97%a5%e6%9c%9f%e6%97%b6%e9%97%b4%e6%8e%a7%e4%bb%b6%ef%bc%8dmy97datepicker.shtml#comments</comments>
		<pubDate>Thu, 22 May 2008 03:47:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[My97Datepicker]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=37</guid>
		<description><![CDATA[最近在项目中大量表单应用日期时间的录入，原来用jscalendar，后发现此控件的浏览器兼容方面有问题，后修改，未果，寻一很强的插件，My97Datepicker，官方网站是 http://www.my97.net 有相当丰富的接口和调用方式，还有漂亮的模板。
非常建议大家看看。
]]></description>
			<content:encoded><![CDATA[<p>最近在项目中大量表单应用日期时间的录入，原来用jscalendar，后发现此控件的浏览器兼容方面有问题，后修改，未果，寻一很强的插件，My97Datepicker，官方网站是 http://www.my97.net 有相当丰富的接口和调用方式，还有漂亮的模板。</p>
<p>非常建议大家看看。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/05/22/%e4%b8%80%e4%b8%aa%e4%b8%8d%e9%94%99%e7%9a%84js%e6%97%a5%e6%9c%9f%e6%97%b6%e9%97%b4%e6%8e%a7%e4%bb%b6%ef%bc%8dmy97datepicker.shtml/feed</wfw:commentRss>
		</item>
	</channel>
</rss>

