<s id="qx03x"></s>
  • <tt id="qx03x"><noscript id="qx03x"></noscript></tt><rt id="qx03x"><nav id="qx03x"></nav></rt>

    <strong id="qx03x"><li id="qx03x"></li></strong>
    <tt id="qx03x"></tt>

        1. 分頁: 3/31 第一頁 上頁 1 2 3 4 5 6 7 8 9 10 下頁 最后頁 [ 顯示模式: 摘要 | 列表 ]
            2011年7月8日早上7:00,作為領隊,帶領金山游戲運營技術中心部分同事、家屬組成的45人旅行團,乘大巴車從北京金山軟件大廈出發,開始承德木蘭圍場、內蒙古烏蘭布統大草原三日游。

            沒有去過的朋友,可以將本文當成一篇攻略;無論是否去過的朋友,都可以將本文當成一篇美景欣賞相冊。木蘭圍場、烏蘭布統大草原,真是太漂亮了。

            【第一天:2011年7月8日】

            “北京→木蘭圍場”行車路線:
            


            【萬頃林?!?/strong>

            經過3個小時的京承高速、3個小時的國道,到達“塞罕壩國家森林公園”山門。

            車過山門,還需1小時的山路,觀千里松林、萬頃林海。53座的大巴車,挑戰360度的下坡大轉彎,還是有些難度的。

            點擊在新窗口中瀏覽此圖片
            [文章作者:張宴 本文版本:v1.0 最后修改:2011.06.28 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/windows_mstsc/]

            個人不喜歡服務端程序,以 Windows 操作系統作為運行平臺,但是,很多時候,迫于環境現狀,需要讓自己的程序實現跨平臺。

            在開發全新的金山游戲運營平臺時,發現:雖然大部分游戲,服務端程序運行在 Linux 服務器,但是,仍有例外。幾款最近代理的游戲,服務端運行在 Windows 服務器上。西山居開發的游戲,服務端集群架構,既有 Windows 服務器,又有 Linux 服務器。

            點擊在新窗口中瀏覽此圖片


            游戲運行系統的 Knose 程序,我最初是在 Linux 下開發的,后來才實現了兼容 Windows 的跨平臺版本。

            點擊在新窗口中瀏覽此圖片


            在 Linux 下,Knose 為“父子進程+指令處理線程池+獨立功能多線程”結構;在 Windows 上,將 Knose 父子進程結構,拆分成了 knose_daemon.exe(Service 服務程序)和 knose.exe(主程序),由 knose_daemon.exe 啟動 knose.exe。

            點擊在新窗口中瀏覽此圖片


            遇到了問題:按照運營維護需求,knose.exe 以及通過它啟動的游戲服務端進程,需要有“窗口界面”,顯示在桌面中。而 knose_daemon.exe 是以服務方式運行的,無窗口界面,knose_daemon.exe 啟動的 knose.exe,窗口界面沒有彈出來。

            為了解決這個問題,我在 install.bat 中,用了 Windows 的 sc 命令,將 knose_daemon.exe 啟動為系統服務,“type= interact type= own”設置了“允許桌面與服務交互”。在本機(Windows XP SP3)測試,knose.exe 的窗口界面以及通過它啟動的游戲進程窗口界面,都彈出來了。

          @echo off
          sc create "KingeyesKnose" binPath= "%CD%\knose_daemon.exe" DisplayName= "Kingeyes Knose Daemon" start= auto type= interact type= own
          sc description KingeyesKnose "金山游戲運營系統 KingEyes Knose 守護進程。"
          sc start KingeyesKnose


            點擊在新窗口中瀏覽此圖片


            于是將程序發布到 Windows Server 2003 服務器上,遠程桌面連接上去,發現 knose.exe 的窗口界面始終彈不出來。

            后來,同事發現,原來是“遠程桌面”惹的禍:

            遠程桌面客戶端 mstsc 有一個 /console 參數,模式等同于本地終端顯示器登錄,/console 不會去占用非 /console 遠程桌面,遠程桌面允許兩個正常連接和一個控制臺/console方式連接,并且正常連接和 /console 連接的桌面操作不能相互看見,只有通過 /console 參數遠程桌面連接到 Windows 2003 服務器,才能夠看到彈出的 knose.exe 窗口界面。

            在 Windows XP SP3 以上版本,/console 參數改名為 /admin,需要用 mstsc /admin 啟動遠程桌面:

            點擊在新窗口中瀏覽此圖片

            連上后,終于能夠看到由 knose_daemon.exe 啟動的 knose.exe 程序窗口,以及由 knose.exe 啟動的游戲服務端進程窗口了。
            5月7日,我在北京長城飯店“2011中國PHP技術高峰論壇”上的演講PPT:

            下載地址1(國外服務器):http://blog.www.lukangtou.cn/attachment/201105/2011phptc_zy.zip

            下載地址2(國內服務器):http://ishare.iask.sina.com.cn/f/15231659.html



            點擊在新窗口中瀏覽此圖片

            以下是我在會議主辦方對演講文字速錄的基礎上,修正錯漏內容,整理之后,對應到每頁PPT的文字內容:

            [PPT No.1]
            大家下午好,現在我來跟大家分享的是PHP在金山游戲運營中的應用,包括團隊協助開發實現方式、網站Web架構設計、游戲運營平臺設計這些信息。

            [PPT No.2]
            我議題主要有兩個,一個是金山游戲官方網站的一些應用,另一個是金山游戲運營系統Keyes中的架構設計。

            [PPT No.3]
            金山游戲官方網站包括用戶中心、客服系統、論壇、視頻、各游戲官網,以及其他跟游戲相關的一些產品,主要采用64位CentOS Linux系統、Nginx、PHP 5.2版本、MySQL 5.5。

            [PPT No.4]
            首先來看團隊協作開發。我們肯定遇到過這樣一種情況,在很多項目中,都是多個人同時開發,涉及到開發環境和測試環境不一樣。我們很多PHP工程師,都是在Windows上開發代碼,雖然Windows上也可以配置Nginx+PHP+MySQL環境,但是,由于測試環境、生產環境都是Linux系統,而且一些功能只能在Linux下運行,還有一些PHP擴展(例如:分布式圖片處理、金山通行證加密擴展),也只能運行在Linux環境中。當我們在Windows上修改完幾行PHP代碼,想馬上看一下執行結果,如果利用FTP之類的工具傳到Linux測試服務器上再測試,就太慢了。如果同一臺Linux測試服務器上,有多少人同時開發,你上傳上去PHP文件,可能會覆蓋別人上傳的同名文件,就沒有辦法做到版本控制。

            [PPT No.5]
            我們從圖中可以看到,假如是程序員A和B都在Windows上開發代碼,由于Nginx與PHP之間采用的是TCP FastCGI協議通訊,因此,兩者可以分離到不同的服務器上。我們可以把Nginx安裝在程序員各自的Windows PC機上,用本機的Nginx處理HTTP請求,用Linux測試服務器上的php-cgi程序,處理PHP請求。程序員在Windows上開發程序,保存之后,不用做任何上傳操作,即可用Linux上的php-cgi調試程序。從圖中這個流程可以看到,首先,兩個程序員分別從SVN版本庫,獲取到一個項目的最新版本,各自進行一些修改。兩人修改程序時,采用的是同一臺Linux測試服務器的php-cgi,對各自PC機上的PHP程序進行調試。在PC機上本地測試沒有問題,可以提交到SVN版本庫。我們做了一個自動同步程序,利用SVN鉤子,在每次發生svn commit提交時,在對應的測試服務器的對應項目路徑內,執行svn update,將最新修改到文件同步到測試服務器。后來發現有一些問題,如果我們一個項目的目錄、程序文件特別多的話,svn update需要遍歷掃描目錄列表,非常慢。因為我們的SVN是和Apache結合起來使用的,Apache可以記錄日志,于是,我們進行了改進,將SVN提交日志記錄到Linux下的命名管道內,再用一個程序從命名管道內讀取日志,只svn update每次修改的幾個文件,這樣,速度就非??炝?。設置hosts為Linux測試服務器的IP,就可以測試多位程序員代碼合并后的效果了。
          Tags:
            [文章作者:張宴 本文版本:v1.0 最后修改:2011.04.21 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/httpsqs_1_6/]

            HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 協議的輕量級開源簡單消息隊列服務,使用 Tokyo Cabinet 的 B+Tree Key/Value 數據庫來做數據的持久化存儲。

            項目網址http://code.google.com/p/httpsqs/
            使用文檔http://blog.www.lukangtou.cn/httpsqs/
            使用環境:Linux(同時支持32位、64位操作系統,推薦使用64位操作系統)
            軟件作者:張宴

            隊列(Queue)又稱先進先出表(First In First Out),即先進入隊列的元素,先從隊列中取出。加入元素的一頭叫“隊頭”,取出元素的一頭叫“隊尾”。利用消息隊列可以很好地異步處理數據傳送和存儲,當你頻繁地向數據庫中插入數據、頻繁地向搜索引擎提交數據,就可采取消息隊列來異步插入。另外,還可以將較慢的處理邏輯、有并發數量限制的處理邏輯,通過消息隊列放在后臺處理,例如FLV視頻轉換、發送手機短信、發送電子郵件等。

            HTTPSQS 具有以下特征:

            ● 非常簡單,基于 HTTP GET/POST 協議。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP協議的編程語言均可調用。
            ● 非??焖?,入隊列、出隊列速度超過10000次/秒。
            ● 高并發,支持上萬的并發連接,C10K不成問題。
            ● 支持多隊列。
            ● 單個隊列支持的最大隊列數量高達10億條。
            ● 低內存消耗,海量數據存儲,存儲幾十GB的數據只需不到100MB的物理內存緩沖區。
            ● 可以在不停止服務的情況下便捷地修改單個隊列的最大隊列數量。
            ● 可以實時查看隊列狀態(入隊列位置、出隊列位置、未讀隊列數量、最大隊列數量)。
            ● 可以查看指定隊列ID(隊列點)的內容,包括未出、已出的隊列內容。
            ● 查看隊列內容時,支持多字符集編碼。
            ● 源代碼不超過800行,適合二次開發。



            HTTPSQS 1.6 版本更新內容:

            一、服務器端:

            1、修正了定時將內存緩沖區內容同步到磁盤,有時候出現段錯誤,導致進程崩潰的BUG。感謝以下網友的反饋:

            點擊在新窗口中瀏覽此圖片

            點擊在新窗口中瀏覽此圖片

            點擊在新窗口中瀏覽此圖片



            2、修正了判斷隊列已滿,遺漏的一種情況。感謝以下網友的反饋:

            點擊在新窗口中瀏覽此圖片

            點擊在新窗口中瀏覽此圖片



            3、改為父子進程模式,生產環境穩定性更高。

            4、改進了 ps 命令查看 httpsqs 的用戶體驗:

            點擊在新窗口中瀏覽此圖片



            5、增加了密碼校驗功能(通過以下啟動參數設置密碼,通過URL參數“/?auth=密碼”訪問):

            點擊在新窗口中瀏覽此圖片



            6、改為靜態編譯,編譯完成后的 HTTPSQS 二進制文件,運行不再依賴 Libevent、Tokyocabinet 動態鏈接庫。



            7、HTTPSQS 舊版本如何升級到 HTTPSQS 1.6 版本:

            HTTPSQS 1.6 版本完全兼容以前版本:編譯安裝 HTTPSQS 1.6,替換舊的 HTTPSQS,然后“kill httpsqs的進程ID”,按原來的啟動參數啟動 HTTPSQS 即可,數據完全兼容。



            二、客戶端:

            1、客戶端代碼不再集成在 HTTPSQS 源碼包中,可通過鏈接自行查看。



            HTTPSQS 1.6 版本的詳細使用說明,請訪問: http://blog.www.lukangtou.cn/httpsqs/

            [文章作者:張宴 本文版本:v1.0 最后修改:2011.04.08 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/samba_linux_windows/]

            一、局域網內的 Linux 服務器上操作步驟:

            1、安裝samba(CentOS Linux):
          yum install samba system-config-samba samba-client samba-common


            2、創建www賬號
          /usr/sbin/groupadd www
          /usr/sbin/useradd -g www www

          mkdir -p /data0/knose/
          chmod 777 /data0/knose/

          mkdir -p /data0/htdocs/
          chown -R www:www /data0/htdocs/
          chmod 777 /data0/htdocs/

          cat /etc/passwd | mksmbpasswd.sh> /etc/samba/smbpasswd


            3、創建samba配置文件
          mv -f /etc/samba/smb.conf /etc/samba/smb.conf.bak
          vi /etc/samba/smb.conf

            輸入以下內容:
          引用
          [global]
          server string = Samba Server
          security = user
          encrypt passwords = yes
          smb passwd file = /etc/samba/smbpasswd

          [knose]
          workgroup = root
          netbios name = root
          path = /data0/knose
          browseable = yes
          writeable = yes

          [web]
          workgroup = www
          netbios name = www
          path = /data0/htdocs
          browseable = yes
          writeable = yes


            4、為samba用戶www、root設立一個密碼:
          smbpasswd -a www
          smbpasswd -a root


            5、啟動samba:
          /sbin/service smb start




            二、局域網內的 Windows 服務器上操作步驟:
          Tags: , ,
            [文章作者:張宴 本文版本:v1.0 最后修改:2011.03.30 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/libevent_windows/]

            本文介紹了如何在 Windows 操作系統中,利用微軟 Visual Studio 2005 編譯生成 Libevent 2.0.10 靜態鏈接庫,并利用 Libevent 靜態鏈接庫,實現一個簡單的 HTTP Web服務器程序:httpd.exe。

            假設 Visual Studio 2005 的安裝路徑為“D:\Program Files\Microsoft Visual Studio 8\”,Libevent 2.0.10 解壓后的路徑為“D:\libevent-2.0.10-stable”。



            一、編譯生成 Libevent 2.0.10 靜態鏈接庫。
            
            1、修改“D:\libevent-2.0.10-stable\event_iocp.c”、“D:\libevent-2.0.10-stable\evthread_win32.c”、“D:\libevent-2.0.10-stable\listener.c”三個文件,在文件開頭分別加上一行:
          #define _WIN32_WINNT 0x0500


            2、鼠標點擊Windows左下角的【開始】-【所有程序】,找到【Microsoft Visual Studio 2005】,執行下圖中的腳本:

            點擊在新窗口中瀏覽此圖片


            3、按照下圖中的方法編譯Libevent 2.0.10:

            點擊在新窗口中瀏覽此圖片


            4、生成的“libevent.lib”、“libevent_core.lib”、“libevent_extras.lib”三個文件就是我們需要的 Libevent 靜態鏈接庫。

            點擊在新窗口中瀏覽此圖片



            二、利用 Libevent 靜態鏈接庫,實現一個簡單的 HTTP Web服務器程序

            1、打開 Visual Studio 2005,新建一個項目

            點擊在新窗口中瀏覽此圖片
            在 Windows、Linux 操作系統,分別利用BAT批處理文件和Shell腳本,生成類似“20110228_082905.txt”以“年月日_時分秒”命名的文件。

            Windows BAT批處理文件:
          @echo off
          set time_hh=%time:~0,2%
          if /i %time_hh% LSS 10 (set time_hh=0%time:~1,1%)
          set filename=%date:~,4%%date:~5,2%%date:~8,2%_%time_hh%%time:~3,2%%time:~6,2%
          echo test >> %filename%.txt


            Linux Shell 腳本:
          #!/bin/sh
          echo test >> $(date -d "today" +"%Y%m%d_%H%M%S").txt

          回家

          [不指定 2011-1-30 18:29 | by 張宴 ]
            下班了,從此刻開始,公司統一放13天的春節假期,2月13日(正月十一)上班。

            明天下午,離開北京。結婚之后,每逢春節,只能在 My Home Town 和 My Wife's Home Town 之間輪詢了,今年帶著老婆回我家。闊別了兩年的美麗故鄉,終于可以回到你的懷抱了。

            1500公里的航程

            點擊在新窗口中瀏覽此圖片

            還需100公里的車程

            點擊在新窗口中瀏覽此圖片

            故鄉的小城,不是浮云

            點擊在新窗口中瀏覽此圖片
            [文章作者:張宴 本文版本:v1.0 最后修改:2010.01.29 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/truecrypt]

            QQ、MSN、RTX的聊天歷史記錄,有時候在處理問題時,想查看一下,但換臺電腦,就查看不到了,怎么辦?Foxmail在公司收取的郵件,在家就看不到了,怎么解決?SecureCRT存放大量服務器SSH密碼信息,換臺電腦,如何不在新電腦上保存信息,同時又使用起來又方便、安全?存放在U盤上的機密文件,如何避免U盤丟失、被盜后,文件泄漏?

            市面上有很多加密軟件,但由于未開源,可能存在后門,或者漏洞,導致加密的文件可破解。因此,對于加密軟件來說,還是開源的比較靠譜。源碼都公開,留有后門的可能性不存在了。在源碼都可以查看的情況下,如果能夠破解,早就可以破解了。

            TrueCrypt(http://www.truecrypt.org/)是一款開源的綠色加密軟件。它可以在硬盤或閃存上創建一個或多個虛擬磁盤,所有虛擬磁盤上的文件都被自動加密,加密后需要通過密碼來進行訪問,由于加入了AES-256加密算法,使得加密數據幾乎不可能被,對于沒有商務安全功能的普通電腦,或者不舍得購買加密閃存的商務用戶,TrueCrypt可以讓他們的數據存儲安全可靠。

            前幾天公司發了兩個2GB的金山毒霸版U盤,我將我的QQ、MSN、公司內部通訊工具RTX、SSH客戶端SecureCRT、OpenSSL VPN、Foxmail、一些文檔都裝在了其中一個U盤上。

            點擊在新窗口中瀏覽此圖片

            關于TrueCrypt的安全性,有一則外電新聞:http://www.security.nl/artikel/33724
            
            FBI在經過一年的嘗試后,還是未能破譯被巴西執法機構指控金融犯罪的巴西銀行家的加密文件。巴西一家葡萄牙語報紙報道(葡萄牙語),巴西聯邦警察在2008年7月展開的Satyagraha行動中,在銀行家Daniel Dantas位于里約熱內盧的公寓內收繳了5個硬盤。文章提到硬盤使用了兩種加密程序,一種是TrueCrypt,另一種是不知名的256位AES加密軟件。在專家未能破解密碼后,巴西政府在2009年初請求美國提供幫助,然而美國聯邦警察在一年不成功的嘗試后,退還了硬盤。巴西現有的法律中不存在強制要求Dantas交出密碼的規定。



            使用步驟:將TrueCrypt拷貝到U盤上,然后運行TrueCrypt.exe。

            1、創建文件加密卷
          Tags: , , ,
            [文章作者:張宴 本文版本:v1.0 最后修改:2010.01.20 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/android_apk_zip]

            前天,金山網絡的一位同事向我咨詢了一個問題:很多用戶反映,網站上提供的Android手機應用程序文件“xxx.apk”,用IE瀏覽器下載,擴展名就被自動被重命名成了“xxx.zip”,拷貝到手機上無法安裝。我發現,由于APK文件本身就是壓縮包,如果用戶的電腦上裝了WinRAR(85%的裝機量),用IE下載APK文件,擴展名就會被自動改為“.zip”。

            如果你的下載服務器為Nginx服務器,那么,在Nginx安裝目錄下的conf/mime.types文件的對應位置,加上以下一行語句,指定APK文件的MIME類型為 application/vnd.android.package-archive 即可:

          application/vnd.android.package-archive     apk;


            截至本文發布時,存在“xxx.apk”下載時被自動重命名為“xxx.zip”問題的網站很多,其中不乏一些提供 Android 程序下載的知名網站,例如:新浪微博、街旁網。

            新浪微博官方 Android 手機客戶端下載頁:http://t.sina.com.cn/mobile/android.php

            點擊在新窗口中瀏覽此圖片

            點擊在新窗口中瀏覽此圖片

            街旁 Android 版客戶端下載頁:http://we.jiepang.com/client-android/
          Tags: , , , ,
           ?。ū疚膩碜浴冻绦騿T》雜志2011年01期,《程序員》官網地址:http://www.programmer.com.cn/4544/

            主持人:馮大輝,現任丁香園 (http://www.dxy.cn)網站CTO。曾歷任支付寶架構師、數據庫團隊負責人等職。

          點擊在新窗口中瀏覽此圖片  許式偉:作為系統架構師,您一般會從哪些方面來保證網站的高可用性(降低故障時間)?

            張宴:很多因素都會導致網站發生故障,從而影響網站的高可用性,比如服務器硬件故障、軟件系統故障、IDC機房故障、程序上線前測試未發現的Bug、遭受分布式攻擊、突發訪問人數劇增等。

            一套良好的網站系統架構,應該盡可能地避免只有一臺服務器、一個數據庫、一套軟件節點等單點故障的存在。單點故障一旦發生,將直接導致網站服務不可用,恢復正常服務所需的時間也比較長,甚至還可能無法恢復。負載均衡集群、雙節點熱備、分布式處理等都可以用來解決單點故障,比如提供相同業務的Web服務器、MySQL數據庫從庫,都可以構建負載均衡集群。一旦集群中的一臺服務器、一個服務出現故障,自動實時摘除,對用戶來說是不可感知的,不會影響到整個網站的訪問,可以為運維工程師留下足夠的時間去排查和解決故障。

            對于重要的MySQL數據庫主庫,我們習慣于從硬件層和軟件層來實現熱備,避免單點。越是復雜的設備,發生故障的概率越大。在磁盤沒有損壞的情況下,應用程序導致服務器宕機的概率,遠高于簡單的磁盤陣列宕機的概率。所以,從硬件層解決的話,可以在兩臺服務器上安裝相同的數據庫版本、進行相同的配置,用SAS或SCSI線連接一臺磁盤陣列,將數據庫數據文件存放到盤陣上。正常情況下用服務器A掛載盤陣分區,啟動MySQL,綁定虛擬IP;如果服務器A宕機,則用服務器B掛載盤陣分區,啟動MySQL,接管虛擬IP。從軟件層解決的話,則可以借助DRBD等軟件做鏡像。

            IDC機房發生故障的概率較小,但如果發生的話,影響面也是最大的。如果所有服務器都托管在一個IDC機房,一旦該機房遭遇長時間流量攻擊、斷電、斷網、地方政策性封網等,通常只能聯系IDC去處理,除此之外束手無策,解決時間也比較長。如果成本允許,將網站服務器分布在兩個以上的IDC機房,當某個IDC發生故障時,可以臨時切換DNS域名解析來優先恢復服務。

            雖然程序代碼上線前,經過了測試人員的嚴格測試,但測試環境和生產環境畢竟有差異,所以一些會急劇影響性能、正常服務的Bug往往在程序上線之后,才會被發現,這就要求我們在發現Bug后,能夠迅速回滾到上一正常版本。我們在SVN的基礎上,開發了Web代碼發布系統,會將每個發布版本之間的文件變更記錄下來,一鍵實現程序代碼在多臺Web服務器上的發布和回滾。

            遭遇DDOS分布式拒絕服務攻擊,使用防火墻來對付半連接、假IP,還算比較容易。而那種專挑復雜動態應用程序URL進行的分布式CC攻擊,來源為真實IP、真實HTTP請求,具有模擬正規瀏覽器User-Agent、單個IP的每秒請求數不高、有成千上萬個攻擊源等特征,很難與正常訪問區分開,比較難對付。但是,正常通過瀏覽器訪問一個URL,會加載該URL中引入的JavaScript腳本、CSS樣式、圖片等文件。遇到CC攻擊,需要及時分析日志,找出訪問量異常上漲的URL,然后用事先寫好的shell腳本找出哪些IP的請求只訪問了該URL,而不加載該URL引入的文件,對這些IP進行自動封鎖。

            系統架構設計時,需要事先考慮到高于目前訪問量多少倍的突發訪問。對于網游站點來說,訪問量受廣告集中時間段投放、線上活動的影響較大,帶寬峰值時間不固定,對于靜態內容,可以使用商業CDN,按實際使用量計費。對于動態內容,如果遇到突發訪問人數劇增,超過現有服務器處理能力,最簡單的臨時處理辦法就是增加服務器。上架新服務器需要時間,但是,同一個IDC機房內,可以借助其他業務的服務器,在不同端口開啟一組新進程,加入到原有負載均衡池中。另外,可以臨時關閉一些Web中的次要功能,來減少服務器消耗。



            許式偉:您在任務切分上,有什么經驗分享?您通過哪些手段保證任務的獨立性?

            張宴:相信很多人都遇到過這種情況:在一個老項目上修改、增加一些新功能所花費的時間,不比重新來做一個包含所有功能的新項目時間用得少。一個需要長期維護的項目,不可避免地會面臨老員工的離職、新員工的接手,很多時候,項目代碼的可維護性將決定一個項目的生存周期。讓一個新員工在規定開發時間的壓力下,去面對一個文檔不夠詳細、陌生的、功能復雜的龐大項目,短時間弄明白所有功能邏輯不是一件容易的事。所以,任務需要切分,將一個大的任務切分成一個個小模塊之后,各模塊之間可以做到代碼獨立,互不影響,可維護性也大大增強。

            關于任務切分,我以本人今年負責的兩個重要項目架構設計為例來介紹一下。在第一個項目:金山游戲官網的《用戶行為分析系統》中,由于數據挖掘計算需要消耗較高的內存、CPU資源,一臺服務器的處理能力不夠,而商業的分布式數據倉庫價格又太貴,所以,只有從程序應用中下手,進行任務切分。我們先按需要挖掘的數據指標,將整個數據挖掘任務切分成多個數據挖掘插件,每個插件可以在不同的服務器上運行,多個插件可以同時在多臺服務器上。多個數據挖掘插件之間,如果用到相同的某項數據,那么,就將該項數據以冗余方式,復制幾份提供給需要的插件,從而實現插件之間無交互、無關聯,保證了超大數據量下插件的運算速度。

            在第二個項目:金山游戲新版運營管理系統中,則將整個任務切分成了PHP Web管理界面、PHP Web API功能接口、C/C++中間件引擎三部分。這是一種分層結構切分,最上層的“PHP Web管理界面”調用“PHP Web API功能接口”,“PHP Web API功能接口”調用運行在游戲服務器端的“C/C++中間件引擎”,“C/C++中間件引擎”與“游戲服務器端進程”通過TCP、UDP二進制協議、信號、命令行等多種方式通信。四者之間相對獨立,代碼無關聯,通過一層層API接口實現交互?!癙HP Web管理界面”負責通用界面實現?!癙HP Web API功能接口”內部,又按接入的游戲模塊、子功能模塊進行了更細的切分,各功能模塊之間通過內部API交互?!癈/C++中間件引擎”大而全,不處理具體指令,但兼容TCP、UDP、HTTP、HTTPS/SSL、信號、命令行等大多數通信方式,負責和各種類型的游戲服務端交互。這是一套完全由API接口驅動的系統架構,一款新游戲接入運營管理系統時,只需在“PHP Web API功能接口”中增加一個模塊;一個游戲新管理功能的增加,只需要在“PHP Web API功能接口”中增加一個子模塊。通過任務切分,將復雜功能簡單化,也將原來接入一款新游戲所需要的幾個月時間,縮短為1~2周。



            許式偉:您通過哪些手段,來保障產品的質量?您傾向于多久更新一次您的網站?
            當您看到這篇博客的時候,我們剛剛作出了一個非常艱難的決定。在“房價不降反增,左一個國十條,右一個國五條壓不下房價”之前,在“CPI持續增加、通貨膨脹、物價飛漲、現金貶值”無法緩解之前,在“貸過兩次款,即使賣掉也算第三套房,銀行不予放貸的認房又認貸政策”結束之前,我和老婆經過商量,決定拿出手中擁有的全部現金,賣掉在香港股市的全部股票,變現在宇通客車公司的全部債券投資,刷光信用卡的4萬元限額,再通過多方籌借現金40萬元,以打完97折后的總價145萬元,全款買下位于昌平區的“龍山華府”4號樓的一套3室2廳1衛,101.89平米,南、北、西三面通透,2011年底交房。

            今年年底,地鐵昌平線開通,可乘地鐵昌平線到達西二旗站,與13號線換乘。如果入住后買輛車,可以直接走八達嶺高速到金山軟件大廈。

            今天,交了10萬元訂金,和開發商簽訂了《北京市商品房認購書》。下周交付剩余的135萬元。此役之后,手無分文,所有投資只保留美股市場的部分資金和青島的一處房產,打算借此在兩年內歸還40多萬元借款。

            也許,只有那么一天,當通貨膨脹、貨幣貶值的速度超過了房價的漲速,房價才會相對地降下來。有史可鑒,人民日報1989年2月20日第2版:“北京最近提供2萬多平方米住房,每平方米1600元至1900元。若買兩居室,少說也要6萬多元。一名大學生從參加工作起就日日節衣縮食,每月存儲50元,已是極限,100年才能買上兩居室?!比缃?,20年過去了,按照當時那樣的攢錢法到現在,6萬元能買個幾平米?

            小區效果圖:
            點擊在新窗口中瀏覽此圖片

            戶型圖(點擊圖片看大圖):
            

            5月開始炒美股,投入資金不多,2500美元(按當時匯率為17000元人民幣)。幾個月來,一直在摸索,其間有賺有賠,到9月下旬,只實現盈虧平衡。但也就是在9月下旬,我摸索出了一條“超短線美股投資”道路。

            于是,在10月一個月,實現了凈利潤1708美元(11366元人民幣)。11月,繼續保持這種勢頭,11月1日至4日的短短四天,凈利潤466.57美元(3105元人民幣)。相對于2500美元的成本,現在的投資回報率已經達到87%,相信在下周末之前即可超過100%。

            一、關于美股

            很多網站介紹美股時,都不詳細,很多細節沒有介紹到,我這里就做一個詳細的介紹吧:

            1、開戶
           ?、?、開戶年齡需滿20歲;
           ?、?、開戶免費,沒有最低開戶金額限制(但一些美國證券公司要求至少500美元);
           ?、?、非美國人(國際賬戶)買賣股票不征稅;
           ?、?、只需要證券賬戶即可,不需要額外開立美國銀行賬戶;
           ?、?、開通一個證券賬戶,可以交易美國紐約交易所、納斯達克、美國證券交易所的股票;
           ?、?、開戶需填寫《開戶申請表》、《W-8BEN 表格》:W-8BEN 表格是用作向美國國稅局 Internal Revenue Service) 申報非美國人士身份的文件。此表格是需要每 3 年更新一次。否則,于 W-8BEN 表格過期后后所進行之美股交易將不會再按非美國人士之標準征稅。
           ?、?、記得填寫融資賬戶申請單,開通融資賬戶。默認的現金賬戶只能做T+3交易。
           ?、?、更多關于開戶的信息可以參考:http://www.firstrade.com/content/zh-cn/international

            2、賬戶類型
            ⑴、現金賬戶:
           ?、?、只能做T+3交易,也就是當天買的股票只能第3天才能賣掉,否者,你的賬戶將被限制90天內禁止買賣股票。
           ?、?、現金賬戶只能做“買進、賣出”交易,不能做“賣空、賣空補回”交易。
           ?、?、現金賬戶沒有融資購買力,現金是多少,就只能買多少錢的股票。

            ⑵、融資賬戶:
           ?、?、最低開戶金額為2000美元(匯款時會扣幾美元的國際銀行中轉費,所有盡量比2000美元多一點),可以做T+0當日沖銷。當日沖銷,也就是說可以當天“買進、賣出”同一支股票。
           ?、?、對于非美國公民,融資賬戶具有2倍的融資購買力(美國公民為4倍),也就是說,假如你投入2500美元,就可以買價值5000美元的股票。假設你賣出股票后賺了1000美元,現在賬戶總值為3500美元,就可以買價值7000美元的股票。融資買進股票每股必須高于4美元,有些股票無法融資交易系統將自動駁回訂單??窗迨袌龌虻觐^小型股不可用融資買賣。
           ?、?、融資賬戶可以做“賣空、賣空補回”交易?!百u空”就相當于買跌,對應“賣空補回”是一對交易。假設現在新浪的股價為59.14美元,你覺得新浪股價會下跌,而此時你手中又沒有新浪股票,你就可以“賣空”,從證券公司借來新浪的股票賣掉,在新浪股價下跌后,再“賣空補回”,買進新浪股票還給證券公司,賺錢差價。賣空的股價必須高過4美元,同時您帳戶資產總值必須到達賣空總價值的50%[納斯達克為100%]。
           ?、?、融資的那部分錢,是需要付利息的。只有動用融資賬戶的錢買了股票,才計算利息,買了股票第二天賣掉,就按買股票時的價值,計算一天的利息。如果做當日沖銷,當天買、當天賣,就不扣利息。其實,融資的利息沒多少,這是我9月、10月的融資利息,10月當日沖銷比較多,利息不到4美元。

            點擊在新窗口中瀏覽此圖片


            3、美股交易
           ?、?、美股的最小交易單位為1股。
           ?、?、美股為單一手續費,無論你買賣多少股,買進一次傭金為6.95美元,賣出一次傭金也為6.95美元(以Firstrade.com證券公司的傭金為例),無其他費用?!百u空、賣空補回”的傭金也是一樣。
           ?、?、美國股市的交易時間是在中國北京時間的夜里(非工作時間),換算成北京時間,美股夏令是晚上9:30開盤,清晨4:00收市;冬令則晚上10:30開盤,清晨5:00結束。美國股市的一天交易時間是不間斷的,也就是說“中午不休息”。
           ?、?、盤前盤后交易就是在非正常開盤時段(開盤前1個半小時及收盤后1個半小時)也可以進行交易。盤前和盤后交易的交易量不高,流動性不強,買賣價差(Bid Ask Spread)也較高。如果遇到發布財報等重要經濟交易事件,則可以在盤前或盤后預先交易。
            很多網站都通過User-Agent來判斷瀏覽器類型,如果是3G手機,顯示手機頁面內容,如果是普通瀏覽器,顯示普通網頁內容。

            谷歌Chrome瀏覽器,可以很方便地用來當3G手機模擬器。在Windows的【開始】-->【運行】中輸入以下命令,啟動谷歌瀏覽器,即可模擬相應手機的瀏覽器去訪問3G手機網頁:

            谷歌Android:
          chrome.exe --user-agent="Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"


            蘋果iPhone 4:
          chrome.exe --user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405"


            蘋果iPad 2:
          chrome.exe --user-agent="Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405"


            諾基亞N97:
          chrome.exe --user-agent="Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124"


            試一試,分別用Android、iPhone、諾基亞訪問http://www.163.com/、http://blog.www.lukangtou.cn/、http://www.google.com.hk/、http://3g.qq.com、http://t.sina.cn這些3G手機網頁,看看有什么不同。

            更多款手機的User-Agent:http://www.zytrax.com/tech/web/mobile_ids.html

            10月11日備注:如果想切換回普通瀏覽器模式,關掉所有Chrome瀏覽器,重開即可。如果不想關閉瀏覽器,切回普通瀏覽器模式,則訪問:
          chrome.exe --user-agent="Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7"
          Tags: , ,
            [文章作者:張宴 本文版本:v1.0 最后修改:2010.09.08 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/mysql-udf-http/]

            Mysql-udf-http 是一款簡單的MySQL用戶自定義函數(UDF, User-Defined Functions),具有http_get()、http_post()、http_put()、http_delete()四個函數,可以在MySQL數據庫中利用HTTP協議進行REST相關操作。

            項目網址http://code.google.com/p/mysql-udf-http/
            中文說明http://blog.www.lukangtou.cn/mysql-udf-http/
            使用環境:Linux操作系統,支持的MySQL版本:5.1.x 和 5.5.x。5.0.x未經測試。
            軟件作者:張宴



            一、REST架構風格:

            REST(Representational State Transfer)是一種輕量級的Web Service架構風格,其實現和操作明顯比SOAP和XML-RPC更為簡潔,可以完全通過HTTP協議實現,還可以利用緩存Cache來提高響應速度,性能、效率和易用性上都優于SOAP協議。REST最早是由 Roy Thomas Fielding 博士2000年在論文《Architectural Styles and the Design of Network-based Software Architectures》中提出的,中文譯文全文PDF點此下載。另外,有篇譯文對REST做了一個簡化說明。

            目前,REST架構風格的常見實現是基于HTTP協議及其四種基本方法(如POST、GET、PUT和DELETE)的。有人將HTTP協議的四種方法與CRUD原則相對應,CRUD原則對于資源只需要四種行為:Create(創建)、Read(讀?。?、Update(更新)和Delete(刪除)就可以完成對其操作和處理。

            點擊在新窗口中瀏覽此圖片

            點擊在新窗口中瀏覽此圖片

            在Mysql-udf-http中,四個函數http_post()、http_get()、http_put()、http_delete()分別對應HTTP協議的POST、GET、PUT、DELETE四種方法。

            REST是一種架構風格,而不是協議或標準。HTTP協議“POST、GET、PUT、DELET”四種方法與CRUD原則“Create、Read、Update、Delete”四種行為的一一對應關系只是一種架構設計習慣,而不是規范。因此,POST方法也可以用來更新資源,PUT方法也可以用來創建資源,這就要看具體應用程序作者的定義了。例如Tokyo Tyrant除了支持Memcached協議外,還支持REST方式存取,PUT代表創建和更新,GET代表讀取,DELETE代表刪除(關于Tokyo Tyrant的安裝使用請點擊這兒)。

            目前國內外流行的Web 2.0應用API接口中,很多都支持REST架構風格。例如:新浪微博開放平臺、人人網API、Google OpenID、Flickr、Twitter、eBay、Facebook、Last.fm、del.icio.us、Yahoo Search、Amazon S3、Amazon EC2、Digg、Microsoft Bing、FriendFeed、PayPal、Foursquare,更多...

            當記錄數成百上千萬條時,通常采用 MySQL 分表減低數據庫壓力。但是,全部數據按點擊數、精華、積分排序顯示等功能,在MySQL 分表中則無法實現。編寫 Mysql-udf-http 的最初目的,是為了在項目開發中,將 MySQL 各分表的數據自動同步到我們的 TCSQL 高速列表數據庫,用來做列表查詢、顯示,內容頁則根據ID直接查詢各 MySQL 分表的內容。由于HTTP協議的通用性,通過 Mysql-udf-http 可以做更多的事情。

            通過Mysql-udf-http,你可以在MySQL中利用觸發器,將MySQL的數據同步到支持REST的應用上。例如你有一個獨立博客,你可以在文章表創建MySQL觸發器,這樣,在發表文章時,就可以將文章標題、URL自動同步到新浪微博、Twitter。你想用 Tokyo Tyrant 做緩存,也可以利用MySQL觸發器在發生增、刪、改時,將數據自動同步到 Tokyo Tyrant。詳細配置方法本文第4節中會有介紹。



            二、Mysql-udf-http的安裝與使用:

            1. 在Linux系統上安裝Mysql-udf-http

            注意:“/usr/local/webserver/mysql/”是你的MySQL安裝路徑,如果你的MySQL安裝路徑不同,請自行修改。
          分頁: 3/31 第一頁 上頁 1 2 3 4 5 6 7 8 9 10 下頁 最后頁 [ 顯示模式: 摘要 | 列表 ]
          在线精品国产在线视频