• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            socketref,再見!高德

            https://github.com/adoggie

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(54)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            #

                 摘要: 之前開發酒店廣告投放系統編寫的Http代理服務程序,功能實現廣告插播進Html DOM結構內。一般都是DIV被插入,當然包括script都是可以從數據庫中動態獲得。簡單修改之后當做Http代理服務器程序,在瀏覽器中設置Http轉發程序的Ip即可,只要代理程序的機器能上網,客戶機便能上網(其中涉及Page gzip的工作有點麻煩) Code highlighting produced by Act...  閱讀全文
            posted @ 2010-09-30 00:16 放屁阿狗 閱讀(7692) | 評論 (2)編輯 收藏

            IMC-SDK

            Instant Message Communication 開發工具包

             

            作為即時通信軟件的底層通信功能被獨立分隔出來,同樣也可以以用于其他的通信需求.

            IMCACEICE吸收優秀的概念和技術,通信處理不免都是C/S的模式,一頭請求,另外一頭接收處理并返回處理結果. Ice一樣,所有操作都 被視為遠程調用RPC。

            不同的應用需求,在設計開發時,我們將定義無數的數據類型影射到應用模型對象,并被序列化傳輸到遠端,這些編碼工作無疑是容易出錯的,并且是令人沮喪的。既然是RPC的一種實現,IDL是好的中間語言,所有的應用模型都可以定義在IDL,通過slice工具將其翻譯到不同的實現語言,slice將處理好數據對象的Marshalling&UnMarshalling等工作。

            IMCICE的相同:

            采用一致的數據類型(int,byte,short,long,float,double,string)

            一致的通信協議定義,參考ice1.3文檔

            支持同步和異步調用;支持oneway調用

            支持參數的out

             

            IMCICE不同之處:

            IMC 不支持class;接口不能被當作參數傳遞;

             

             

            支持TcpUDT通信方式,tcpudt的連接(connection)上進行雙向的Rpc調用(Ice一般在一個連接上是單向的)。

             

            調用的返回:

            1.      同步調用: 

            1.1. 接收到返回結果

            1.2. 超時(timeout調用時)

            1.3. 連接(connection)斷開

            1.4. 系統結束處于終止清理階段(將刪除所有的connection)

            2.      異步調用:

            即可返回

             

            函數序列化(operator):

                     參數支持IN,OUT類型,但不支持 INOUT類型,且OUT類型必須在IN之后被定義(ice)。每個函數(operator)都將有一個僅對于interface內的索引編號(integer),參數將被置于參數棧(ParameterStack).

                     字節流到函數參數時,先從包內找出此次調用接口的類型,根據函數編號找到解析此參數棧的函數,并將剩余的字節流傳遞到以上函數去解析

             

            Struct OperatorMap{

                     Int  index;

                     String name;

                     Void decode(ByteArray& bytes);

            };

            Class Security{

            Virtual string close(int reason);

            Friend __security_decode_close;

            }

            Static __security_decode_close(ByteArray& bytes, void* obj);

            OperatorMap __omap_security={0,”close”,__security_decode_close};

             

            //解碼字節到函數參數,并最終調用Rpc函數

            //以下代碼自動生成

            ParameterStack __security_decode_close(ByteArray& bytes, void* obj){

                     Security * sec = (Security*)obj;

                     Parameter p;

                     ParameterStack pstack;

            P = unMarshallingParameter(bytes,”int”);

            Int reason = p;

                     P = Sec->close(reason);

                     Pstack.push(p);

                     Return pstack;

            }

             

             

            posted @ 2010-09-24 02:13 放屁阿狗 閱讀(289) | 評論 (0)編輯 收藏

            一個朋友經常碰到要將大批量的照片輸出到寫真機,就不停的將圖片加載進photoshop,然后排版,效率夠慢的,便寫個腳本把這些工作簡化了
            config.txt配置信息
            1 item_hspace=0.5
            2 item_vspace=0.5
            3 item_width = 20 #15cm
            4 item_height = 15
            5 DPI=96
            6 canvas_heigth=88 #200cm
            7 canvas_rotation=90 
            8 source = D:\共享\2010.9.20\小天鵝幼兒園小4班照片
            9 outfile=final2.tiff

            main.py處理代碼
              1 #-*- coding:utf-8 -*-
              2 #
              3 #name: config.py
              4 #brief:
              5 #    系統配置文件
              6 #author: scott
              7 #
              8 
              9 
             10 import os,sys,time,os.path,traceback
             11 import zlib,binascii
             12 import PIL,Image
             13 import config
             14 
             15 DPI=96.0
             16 
             17 POINTS_PER_METER = DPI/2.54 * 100 #每米多少個像素
             18 POINT_PER_CMETER = DPI/2.54
             19 
             20 ITEM_HSPACE=0
             21 ITEM_VSPACE=1
             22 ITEM_WIDTH =#照片的寬度
             23 ITEM_HEIGTH = 0 #照片寬度決定了高度
             24 CANVAS_HEIGHT= 0 #畫板高度,長度是無限制的
             25 CANVAS_ROTATION = -90 #最終輸出照片進行旋轉輸出
             26 
             27 conf = config.SimpleConfig()
             28 conf.open('config.txt')
             29 DPI = conf.getPropertyValueAsFloat('DPI',96.0)
             30 ITEM_HSPACE = conf.getPropertyValueAsFloat('item_hspace',0.5* POINT_PER_CMETER
             31 ITEM_VSPACE = conf.getPropertyValueAsFloat('item_vspace',0.5* POINT_PER_CMETER
             32 ITEM_WIDTH = conf.getPropertyValueAsFloat('item_width',15* POINT_PER_CMETER
             33 ITEM_HEIGHT = conf.getPropertyValueAsFloat('item_height',10* POINT_PER_CMETER
             34 
             35 CANVAS_HEIGHT = conf.getPropertyValueAsFloat('canvas_heigth',200* POINT_PER_CMETER
             36 CANVAS_ROTATION = conf.getPropertyValueAsFloat('canvas_rotation',-90
             37 
             38 ITEM_HSPACE = int(ITEM_HSPACE)
             39 ITEM_VSPACE = int(ITEM_VSPACE)
             40 ITEM_WIDTH = int(ITEM_WIDTH)
             41 ITEM_HEIGHT = int(ITEM_HEIGHT)
             42 CANVAS_HEIGHT = int( CANVAS_HEIGHT)
             43 
             44 print conf.getPropertyValueAsFloat('canvas_rotation',-90)
             45 
             46 rows = CANVAS_HEIGHT / (ITEM_HEIGHT+ITEM_VSPACE)
             47 
             48 source = conf.getPropertyValue('source')
             49 final = conf.getPropertyValue('outfile')
             50 
             51 files = []
             52 
             53 imgsize=[0,0]
             54 
             55 for f in os.listdir(source):
             56     if os.path.isdir( "%s/%s"%(source,f)):
             57         continue
             58     try:
             59         imgfile = Image.open("%s/%s"%(source,f))
             60         size = imgfile.size
             61         if size[0]<size[1]:
             62             imgfile = imgfile.rotate(90)
             63             imgfile.save("%s/%s"%(source,f))
             64     except:
             65         continue
             66     files.append(    "%s/%s"%(source,f))
             67 #計算輸出文件的大小
             68 cols = len(files)/(rows)
             69 cols = int(cols)
             70 if  len(files)%(rows) != 0:
             71     cols +=1
             72     
             73 CANVAS_WIDTH = cols * (ITEM_VSPACE+ITEM_WIDTH)
             74 imgsize = (CANVAS_WIDTH,CANVAS_HEIGHT)
             75 imgcanvas = Image.new('RGB',imgsize,0xffffff)
             76 
             77 print CANVAS_WIDTH,CANVAS_HEIGHT
             78 print cols,rows
             79 
             80 for c in range(cols):
             81     x = c * (ITEM_WIDTH+ITEM_HSPACE)
             82     for r in range( int(rows)):
             83         y = r * (ITEM_HEIGHT+ITEM_VSPACE)
             84         if len(files):
             85             file = files[0]
             86             files.remove(file)
             87             try:
             88                 print 'open file:',file
             89                 imgfile = Image.open(file)
             90                 print (x,y,x+ITEM_WIDTH,y+ITEM_HEIGHT)
             91                 imgfile = imgfile.resize((ITEM_WIDTH,ITEM_HEIGHT))
             92                 imgcanvas.paste(imgfile,(x,y,x+ITEM_WIDTH,y+ITEM_HEIGHT))
             93                 
             94                 #imgcanvas.paste(imgfile,(x,y))
             95             except:
             96                 print traceback.print_exc()
             97                 #sys.exit()
             98 if CANVAS_ROTATION:
             99     print CANVAS_ROTATION
            100     imgcanvas = imgcanvas.rotate(CANVAS_ROTATION)
            101     pass
            102     
            103 imgcanvas.save(final)
            104 
            105 



            posted @ 2010-09-22 19:50 放屁阿狗 閱讀(1675) | 評論 (0)編輯 收藏


            /etc/resolv.conf
            whois

            /etc/exports
                /home/nfs 192.168.14.22(ro)

            mount 192.168.14.2:/home/nfs /mnt/a




            ls -F -S
            wall
            write
            hostname,who ,id,
            touch -c
            rm -fr
            df -h
            du -hs
            quota

            cpio
            制造文件或是目錄的拷貝檔案。

            例1:find . | cpio-ocv > /dev/rmt/0m創建一個當前目錄下的所有文件的存檔文件。

            例2:cpio –icdmv < /dev/rmt/0m從一個檔案文件中恢復所有的文件

            -o  制造一個備份。讀取標準輸入并且拷貝每一個文件到標準輸出

            -i  恢復一個備份。讀取備份文件并且在磁盤上重新創建文件?!            ?br>
            -c  寫文件頭為ASCII碼格式(如果同-o一起使用,在-i同樣要使用這個選項)

            -d  在需要時,重新建立目錄結構

            -m  保留當前修改的數據。(在版本控制時,十分有用)

            -t  顯示備份檔案的內容列表

            -u  無條件恢復(如果文件已經存在,這個選項會覆蓋這個文件

            -v  顯示被拷貝的文件的一個列表

            -x  處理特殊的設備文件
            posted @ 2010-08-24 13:07 放屁阿狗 閱讀(204) | 評論 (0)編輯 收藏

            ice的slice由 scanner.l,grammar.y構成語法,并映射到不同的程序語言
            posted @ 2010-07-16 12:47 放屁阿狗 閱讀(475) | 評論 (0)編輯 收藏


            我來這里加入5173的一個游戲研發部門,開發一項隱秘項目的開發。
            項目又急工作量也大,難度也是不小,又是隱秘。
            5173是做網絡游戲虛擬貨物交易,網游這么熱,用戶群體非常龐大,從而產生的交易行為具5173的統計能做到日2000w的單次,從中5173收取交易的傭金。很簡單,5173就是一個中介,一個信用的中介,從02年起家,05年風頭接入,現在號稱做到全國最大的交易平臺,據說現在在評測一款網游,準備也開始做游戲運營。
            5173號稱3000人的規模,交易員約2500人之眾,要求每個員工上班都著西裝,所以休息時間能看到比較壯觀的現象,就是有密集的20歲上下的統一著裝的小孩簇擁著一起過馬路去食堂吃飯。 在金華的5173生活號稱是生活消費為0,就是吃住公司全包。
            扯遠些了,繼續談5173的工作內容。由于交易量在增加,所以管理和支撐這么員工的開銷必然很大,所以必須有一種解決方案來解決這個問題,那就是游戲自動交易機器人系統,也就是原本人工接入的交易買賣行為交由計算自動來解決。
            順便說一下,人工交易,就是買賣雙方將自己的游戲賬戶、密碼、金錢交與5173的交易員,由5173交易員來人工打開游戲,登錄不同用戶的賬戶來完成虛擬物品的交換或者買賣。對于交易員的職業道德素質也有一定的要求,這就不用過多解釋了。。。
            那機器人交易如何工作呢 ? 運行時,講有幾百臺的游戲主機上線,安裝好機器人和游戲之后由控制服務器自動下發從5173業務服務器發過來的訂單到每臺主機的游戲機器人,由機器人啟動游戲進行交易。
            機器人的實現有3種,一種叫外掛,可以通過模擬鍵盤鼠標來模擬游戲行為;第二種叫內掛,也是比較高深的技術,通過游戲進程注入二進制代碼來結合系統鉤子或者驅動來截獲游戲運行的入口,加上分析游戲通信協議進行修改、分析、模擬游戲的行為;第三種叫做脫機,就是不用運行游戲客戶端,直接破解了游戲的通信協議之后,采用socket開發模擬游戲的通信客戶端來操作游戲行為。這三種技術在這里都有實現,4,5款游戲有10人負責開發,這個工作叫做逆向。
            游戲的現在放外掛、盜號應經做得很完善了,而且通過頻繁的更新游戲版本來防止外掛,所以做逆向的人非常的忙。這些人很專,工作也很專注,有幾個專用匯編來做開發的,跟我聊天說道只會匯編,所以找不到工作,只好做這個,聽了我笑了出來。
            我的工作就是做游戲機器人的系統框架,將逆向的工作成果整合成一個系統,完成交易行為,也就是說他們做發動機,而我是做汽車的組裝。
            換成是n年前,我定是非常高興的來到這里,因為能學點東,學點逆向的東西,可現在沒有這種想法了,也不想去深入,畢竟這個東西非常耗精力,自己已經耽誤不起。
            為何說隱秘工作,道理在于并不想被游戲運營產商知道這里的存在,畢竟修改游戲是件不齒的事情,且如果游戲廠商來分析逆向的代碼的話,這里的工作成果馬上被游戲檢測出來而使機器人 無效。
            這個項目做了3個月了,這些人以前也是同一個團隊,都是比較團結,來5173完成這個項目或者說系統,現在也是跟5173一體了。

            01.07 三戰金華
            想來也有1個月時間在5173混了
            兩個抽煙倒霉鬼據說是被抓了正式開除了
            剛吃完晚飯,再為這公司奉獻的心血和視力、腦力、體力和鍵盤的磨損力
            這里也是的冷,故說暫時取消了正式著裝的制度,隨便都可以了除了光小屁股


            01.22 金華第二日
            5點到了金華,這里的天氣還是挺冷的
            開了間108塊的小旅店客房便去了公司
            寒暄一番,里面挺熱
            晚上開了小時的會議,深刻感到要做游戲自動交易的難度和工作量
            5173存在到現在且能做到游戲交易老大位置而不動搖就是用錢堆集出來的
            5173這么容易的賺錢模式自己非常的眼紅,可是無法效仿,沒有大量錢投入簡直無法做任何事情。
            大的交易單量和人力成本的支出非常的矛盾
            客服、運維、單包、郵寄這些交易的基本流程一個都不能少,開會又讓我對5173業務上有新的認識,
            異地單子的投訴單單電話費將是非常的大
            晚上到了1,2點才搞到了數據的交易信息表,非常的累,同事都不知道那臺1.137的主機在哪里,跑上去迅速備份了交易表,同時將監控器的日志也備份下來等待之后的分析
            發現數據庫被昨日清空了,說是為了備份,奶奶的,只得到了一點點數據。

            繼續想。。。




            金華12.15
            天繼續陰沉,心情又是頗差
            這么一堆的人,顯得自己略老了些,做這一行確實有點絕望的感覺。還要自己努力表現跟這些小孩子去爭什么呢
            來這里 本事很輕松的心態,就是走走,看看,聽聽,想想,可是到現在為何這么的難受,仔細想想,大概是自己已經脫離坐班制度已經很久了,一直以來是輕輕松松的度過 每一天,一切都是自由自在;其次,自己不由自主的又陷入到努力工作去解決問題的惡性循環里去了,似乎不管是誰活,自己都是會忘我的投入進去,看到自己是這 個樣子,其實很想將自己把出來,似乎像是毒品一樣上癮;再次就是這個垃圾公司,已經第三次跟門衛吵架了,要求穿西裝,沒有辦法,晚上去超市買了條深色褲子 來應付。
            有點想家的感覺了,想念那個氛圍。仔細想來,原本自己不是這樣的人,要么是人老了,心態老了,之前呆過幾家公司對于封閉開發,出差我都是非常積極的,可現在卻是十分的反感,沒有感覺到有一種歸屬感,氛圍的歸屬,也找不到了那種同事和朋友的那種感覺,只是在這里打工。
            這些天很少想到自己的事情,該好好抽空想想來這里的目的了
            感冒好了些,但鼻涕還有許多

            金華 12.14
            14一個要死的日志
            這里的天氣陰沉,有密語;感冒在持續,講話都是嗡嗡的聲音
            這里的開發還是如火如荼的進行中,雖然有點亂頭無序,但我還是比較投入的參與進去
            前兩天完成了第一個任務:解決100臺游戲主機自動更新和啟停游戲的功能,今天繼續完善修正部分bug,搞了半天發現了python創建目錄函數mkpath()的問題,此函數無法連續使用,最后沒法采用os.mkdir()循環創建了多層目錄
            雖然嗓子還是有點不舒服,大概是出于刻意的放松的目的,去陽臺抽了幾口煙,呼吸了一下空氣。
            左右踱擺,到底是何種心態來這個公司,參與這個項目,現在自己也有點搞不明白了,本著想切入一下游戲交易行業,了解一下行業的業務內容,現在也是了解大半了;

            金華.12.12
            來金華已經第5日,基本生活在這個地方可以實現生活0成本,吃住都可以由公司解決
            10點上班一般都是晚上12點才回去,許多人更晚。在這里的幾天胃口變大了,9點的賓館自助早餐,中飯、晚飯還有夜宵飯,這些都一頓沒少且不要錢
            心態還是要放好一點,多思考一下自己接下來的目標和內容

            5173.10日
            7日下午到達5173總部,這里好稱有2.5k人,剛來到公司大樓門口便見一群西裝革履的年輕人從左至右魚貫而來,原來到了吃飯時間
            人的確很多,還是指紋打卡,這里都是3班倒的坐班制度,這些nk的人都是游戲交易員,也就是本地的廉價勞動力。
            我們辦公地點是在5樓,人也有20來個,很多都是做逆向的,所謂逆向就是分析游戲的處理邏輯,然后就是模擬這些人與游戲交互的行為,也成為cracker。
            在這里沒吃過早飯,晚飯5點半就吃了,晚上10點半也有夜宵,吃得人也要排隊,不過都不要錢
            這些人都是睡覺的人,10上班到晚上11點都還不愿意走,這也是要不得的

            到2010年6月,我考慮離職了,公司的環境非常的不舒服,當初人事介紹的諸多公司福利等現在全然無存,有點上當的感覺
            工資12k扣完拿9.5k,沒有多考慮就提交了erp的離職申請,正好回家看世界杯,部門頭也同意了
            本想混完6月再跑路的,據說有季度獎,我換算了一下有2k,不過由于不爽就不想壓抑自己了,不要了
            5173是沒有年終獎的,但全年發13個月工資,多出來的一個作為季度獎金來發放,2-2-2-4,最后一個季度發放40%


            posted @ 2010-06-19 16:27 放屁阿狗 閱讀(569) | 評論 (1)編輯 收藏

                 摘要: 5173.com提出抓取同行交易系統的業務信息來做數據分析而提出這么個需求給我,花了1天用python完成 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1 # -*- coding:utf-8...  閱讀全文
            posted @ 2010-06-10 23:23 放屁阿狗 閱讀(6286) | 評論 (1)編輯 收藏

            http://118.126.7.153/maps/test_map.html
            12級別采用tilecache產生圖塊到postgres存儲,繪制過程花費了12天,真希望有海量空間和更多的機器供我使用阿


            posted @ 2010-05-16 17:08 放屁阿狗 閱讀(437) | 評論 (0)編輯 收藏

            Boost
            Qt
            wxWidgets
            Ace
            Ice

            posted @ 2010-05-13 03:12 放屁阿狗 閱讀(225) | 評論 (2)編輯 收藏

            Ice的設計思想非常好,通過slice定義之后產生一堆的通信框架代碼來自動化完成對象數據的序列化
            由于ice是基于Rpc的,底層通信細節被屏蔽掉了,甚至是連接的自動重復建立,可喜又可悲,有些應用必須要關心這些底部的通信細節,
            如果直接用socket又嫌太麻煩了,不同的應用都是在重復的進行開發通信協議,解包和打包花銷很很多的精力,這些工作都是重復的,沒有技術含量而且容易出錯.
            之前開發過mtslib通信庫來解決socket通信問題,使兩端都是以消息包的形式進行通信,解決了socket兩段buffer的管理
            也看過ice的代碼實現,slice2cpp用yacc&lex進行詞法語法的處理
            對象的自動序列化這是我所感興趣的,同ice一樣提供一個通信環境,然后用戶可以自定義自己的通信數據,通過idl的形式自動產生序列化代碼并編譯進用戶工程.
            這種方式與ice又不同在于沒有那么傻瓜化,但簡化了用戶處理消息報的過程.
            這樣要完成一個類似ice的rpc調用也是沒有那么簡單
            yacc/lex,lemon,

            posted @ 2010-05-10 15:27 放屁阿狗 閱讀(518) | 評論 (1)編輯 收藏

            僅列出標題
            共25頁: First 8 9 10 11 12 13 14 15 16 Last 
            亚洲国产一成久久精品国产成人综合| 伊人久久大香线蕉综合热线| 无码乱码观看精品久久| 久久久久se色偷偷亚洲精品av| 亚洲精品乱码久久久久66| 久久精品国产欧美日韩| 久久精品久久久久观看99水蜜桃| 久久中文字幕一区二区| 女同久久| 大蕉久久伊人中文字幕| 久久综合亚洲色一区二区三区| 97久久精品无码一区二区| 国产午夜精品理论片久久| 伊人久久大香线蕉综合热线| 久久精品无码专区免费东京热| 久久国产精品一区二区| 天堂无码久久综合东京热| 狠狠色丁香久久综合五月| 亚洲综合熟女久久久30p| 99久久无色码中文字幕人妻| 无码人妻少妇久久中文字幕 | 精品国产乱码久久久久软件| 青青青国产精品国产精品久久久久| 大美女久久久久久j久久| 国产日产久久高清欧美一区| 久久久噜噜噜www成人网| 777午夜精品久久av蜜臀| 久久激情亚洲精品无码?V| 色综合久久中文字幕综合网| 麻豆国内精品久久久久久| 午夜福利91久久福利| 久久精品无码免费不卡| 欧美激情精品久久久久| 亚洲精品乱码久久久久久久久久久久| 久久婷婷五月综合色99啪ak| 久久夜色精品国产www| 人妻丰满AV无码久久不卡| 99久久成人18免费网站| 国内精品久久久久影院薰衣草| 亚洲日本久久久午夜精品| 五月丁香综合激情六月久久|