• <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>

            輕盈小刀-LUA

            突破C++的局限,讓編程語言大同
            隨筆 - 13, 文章 - 1, 評論 - 13, 引用 - 0
            數據加載中……

            2012年2月3日

            Htmlayout新Demo程序,簡單的多頁面瀏覽器

            將IE控件加入進來,可以在Htmlayout頁面中使用IE控件,為了驗證相關功能,做了這個Demo程序。
            實現以下功能:
            1.加入可拖動按鈕工具欄
            2.帶標簽的瀏覽器
            3.相同url地址只打開一個標簽

            其中頁面分4部分,工具欄,地址框,標簽頁,瀏覽器。這四部分可以非常翻遍的變換顯示位置,只需要修改css中以下相關部分
            body 
              flow:  "toolbar"
                     "addr"
                     "tabs" 
                     "page";
            }
            如果想用標簽頁放在底部,只需要將tabs和page調換位置即可,簡單好用。

            另外帶一個標簽頁控件,在ctrl目錄中,主要是為了驗證面向控件開發,即可以單獨做我們需要的控件,然后在頁面中組合,實現快速開發。
            文件下載

            posted @ 2012-02-03 17:06 絕對在乎你 閱讀(3630) | 評論 (2)編輯 收藏

            2012年1月31日

            htmlayout與lua(二) 設計思路

            設計的思路是開發方便,現在做到的是嵌入的腳本方式和javascript相同,即可以在html頁面中直接嵌入代碼,也能從外部引用,以此來滿足各種需要(或是方便或是為了便于管理)。在程序結構上,用了兩層結構,dll程序中封裝了對htmlayout元素的基本操作以及必要的交互接口,為了是開發更方便,更快捷,增加了lua腳本層,即ui目錄的相關腳本,這一次的目的是為了簡化程序開發時的代碼,提高開發效率。現在看來,效果還可以。

            嵌入腳本方式

            在html頁面文件中增加元素<script type="text/lua">...<script>即可添加頁面腳本,每個頁面的腳本空間是獨立的,即此頁面定義的函數只能是此頁面才能使用,同時腳本的初始化是在頁面加載完成之后在加載的,所以沒有javascript類似的onload消息處理,直接將需要初始化執行的代碼放在外部即可執行。

            元素引用方式

            在腳本中操作元素有以下幾種方式:
            1.最簡單的方式是直接給元素附上id屬性,這樣在腳本中就可以直接使用這個id名稱訪問對應的元素了
            2.通過函數E查找元素,參數為css選擇其,如local d = E('div[type="test"]')

            元素操作

            在獲得元素對象之后,操作的方式涉及到以下幾個部分:
            1.修改style,直接用obj.style['name'] = value; 即修改元素的style中的name,取值直接使用obj.style['name']即可
            2.取元素屬性用obj.attributes['name'] = value,用法和style相同
            3.和html顯示無關的數據,就如同普通的lua table操作即可,如obj.mypro = '1',因為獲得元素對象本身就是一個table,所有lua table的功能都支持

            posted @ 2012-01-31 23:24 絕對在乎你 閱讀(3233) | 評論 (1)編輯 收藏

            2012年1月30日

            htmlayout中嵌入lua腳本

            去年下半年工作調整,終于有時間開始做一些htmlayout封裝的工作,初步將
            lua腳本加上去了,使整個應用程序有了一個統一框架,不論是界面還是業務邏輯
            都通過lua來實現,lua不能做的采用模塊方式添加。

            關于界面封裝部分,參照sciter來做的,畢竟是和htmlayout是一家人,他們配合
            起來肯定是更好的,不過tiscript不會用,也沒人用,只能是自己用熟悉的東西
            來做了,不過總的來說對這次封裝還是感到比較滿意的,前后改了3個版本,現在
            是用比較純粹的lua實現方式來做的,完全是一個lua第三方dll模塊,使用require
            加載即可使用,很方便,沒有什么特殊的地方,對同時使用其他的庫也比較方便。
            同時添加了自己想要的一些東西,如頁面之間的通訊,這樣可以實現像普通mfc
            程序那樣,彈出多個頁面,之間數據可以交互,同時頁面又是獨立開發的,比較
            方面開發,同時控制每個頁面的代碼規模。因為曾經有個兄弟組用ajax做了一個
            管理頁面,整個頁面代碼5w多行,到后來根本沒辦法維護了。

            demo程序下載點擊下載(程序基于vs2008開發的,如沒安裝過vs2008,請先
            安裝vs2008的再發布包  在這里
            demo集成了scintilla 編輯控件,主要是為了驗證做第三放控件的能力,在編輯
            框中使用標準庫函數會自動提示。以后準備以此做一個集成開發環境。

            posted @ 2012-01-30 23:29 絕對在乎你 閱讀(4000) | 評論 (3)編輯 收藏

            2010年6月3日

            sciTE使用收集

            1.配置說明
            2.漢化配置文件
            3.一些擴展示例

            posted @ 2010-06-03 23:04 絕對在乎你 閱讀(711) | 評論 (0)編輯 收藏

            2010年4月5日

            lua 應用服務器

            線程模塊(luathread.dll)

                 新線程池創建,可以指定啟動一個或多個線程

                 thread.new('線程入口腳本文件', 線程數量);
                 會根據線程數量創建多個線程,并且分別初始化每個線程的lua運行環境,并執行指定的線程腳本。

                 tlist = thread.newlist('隊列類型', '隊列名稱');
                 創建一個同步隊列,返回隊列對象,此對象必須可以在多個線程中共享的,而且相同名稱的對象
            只能存在一個。

                tlist:create_new_object();
                創建新的對象,次對象可以加入到請求隊列中

                tlist:push_request(obj);
                將通過create_new_object()創建的對加入到隊列中

                tlist:wait_for_req(timeout);
                等待隊列中有可以處理的請求

               tlist:get_request();
               從請求隊列中取出一個請求來進行數據處理

              tlist:get_wait_object();
              返回可等待對象,以便腳本可以執行多個對象的等待任務

              tlist:get_info();
              獲得隊列的一些相關信息

            線程代碼
            線程1:
               local tlist = thread.newlist('test', 'test0');
               local d = tlist:create_new_object();
               d:setdata('test', 'hello world');
               tlist:push_request(d);

            線程2:
               local  tlist  = thread.newlist('test', 'test0');
               while(tlist:wait_for_request(1000)) do
                         local d = tlist:get_request();
                        handlesomething(d);
               end

            posted @ 2010-04-05 23:20 絕對在乎你 閱讀(967) | 評論 (0)編輯 收藏

            2008年1月17日

            挖蟲日記 01.17

            經過昨天的再次日志的詳細記錄,把線程處理中的請求包記錄下來,發現有比較大的共性,那就是出問題的請求都是用戶登錄的請求,后臺仔細檢查這個請求的處理過程,發現有一個大問題在里面:
               1。應用程序在特定的配置下,會記錄下每個用戶的登錄信息(不只是當前用戶,而是登錄過的所有用戶)
               2.在新用戶登錄的時候,會檢查1中記錄的所有用戶信息的狀態
            這樣就造成一個大問題了,隨著用戶的不斷登錄登出,程序中積累的用戶信息越來越多,而如果這時候同時有大量用戶登錄,每次登陸的時候都去循環檢查所有用戶信息,這樣需要做的工作就巨大無比了。

            現在的改進是:
               1.改每次用戶登錄檢查為每隔30秒循環檢查
               2.清理不需要的用戶信息,避免出現保存的用戶信息量過大。
               3.使用線程安全的map對象做數據保存

            結果:
               今日的用戶數量和前幾天差不多,高峰的時候也是平均并發3000多,一整天沒有出現任何問題。基本確認就是該問題導致的。

            posted @ 2008-01-17 15:24 絕對在乎你 閱讀(386) | 評論 (0)編輯 收藏

            2008年1月15日

            挖蟲日記 11.15

            先描述一下現象:
             環境:
                   一個機房,均衡后帶20臺服務器,并發峰值大概在7萬不到一點,平均下來一臺服務器3000多并發
            現象:
                  20臺服務器會隨機出現應用服務器程序把cpu打滿的情況,而正常情況下,3000并發的時候,應用服務器的cpu不超過10%,在cpu滿的情況下程序基本上停止提供服務器,只有重啟才能解決。
                 開始的時候,20臺服務器的程序一模一樣,會隨機有部分服務器出現情況。
                 現在換了一半的服務器,測試新程序。

            昨天通過系統自帶的性能監視器,將占用cpu的線程找出來了。在這部分線程池的處理過程中,有循環的地方都加了數量判斷,防止出現死循環。

            今天問題仍然出現,新的老的程序上都出現過,出現的情況也不盡相同,有并發在1500左右,有3000左右。
            沒有出問題的并發都在3000上下,所以單純說是并發造成的,可能不準確。最大的可能還是服務器遇到一個特殊的數據導致處理的錯誤,但是還有一點比較奇怪的是,有線程繁忙的時候,很快就會有該線程池中的其他線程也繁忙起來,難道異常數據出現的頻率在這個點上如此之高??
            今天下午的修改是:
               在單獨的一個線程中來監視出現問題的線程池中的線程的狀態,如果發現對單個請求的處理時間過長,那么記錄下當前線程中的狀態,希望能抓到究竟是什么情況下導致的問題?同時出現這種情況的時候,結束當前線程,重啟一個線程放入線程池中,保證以下的工作正常處理。

               結果如何,明日再觀察!

            posted @ 2008-01-15 17:50 絕對在乎你 閱讀(429) | 評論 (0)編輯 收藏

            2008年1月6日

            結合htmlayout 實現新界面框架的目標

            1.可以通過htmlayout能顯示html頁面。
            2.通過lua腳本控制html元素的行為。
            3.增加自定義的控件。

            posted @ 2008-01-06 23:39 絕對在乎你 閱讀(3499) | 評論 (4)編輯 收藏

            2007年12月27日

            給windows程序添加一個標準控制臺

            在程序初始化代碼里添加兩句
            AllocConsole(); //打開控制臺窗口
            freopen("CON", "w", stdout);  //將標準輸出重定向到控制臺窗口上如果要接受用戶輸入的話把標準輸入也重定向一下。

            posted @ 2007-12-27 12:49 絕對在乎你 閱讀(753) | 評論 (0)編輯 收藏

            2007年12月23日

            GDI 中曲線的畫法

             
            在windows的GDI中,如果需要畫非常優美的曲線,那么最適合用PolyBezier函數,通過4個點,
            起點,起點控制點、終點控制點和終點,可以得到一條非常漂亮的曲線,比自己去算弧度
            好多了。

            posted @ 2007-12-23 17:26 絕對在乎你 閱讀(919) | 評論 (0)編輯 收藏

            久久久久99精品成人片直播| 久久久久精品国产亚洲AV无码| 日本强好片久久久久久AAA | 精品国产乱码久久久久久郑州公司| 青青青伊人色综合久久| 久久无码高潮喷水| 久久亚洲2019中文字幕| 777久久精品一区二区三区无码| 日韩AV无码久久一区二区| 久久婷婷久久一区二区三区| 久久午夜综合久久| 91久久精品91久久性色| 无码人妻少妇久久中文字幕蜜桃 | 国产日产久久高清欧美一区| 国产成人精品综合久久久久| 亚洲综合久久久| 天天影视色香欲综合久久| 97精品伊人久久久大香线蕉| 麻豆精品久久久久久久99蜜桃| 久久午夜电影网| 日产精品久久久久久久性色| 久久久久亚洲av毛片大| 色噜噜狠狠先锋影音久久| 亚洲国产精品无码成人片久久| 国产成人精品久久亚洲高清不卡 | 精品久久一区二区三区| 亚洲精品乱码久久久久久| 亚洲人成无码久久电影网站| 777午夜精品久久av蜜臀| 久久久人妻精品无码一区| 国产福利电影一区二区三区久久老子无码午夜伦不 | 青青热久久综合网伊人| 久久Av无码精品人妻系列| 久久婷婷国产剧情内射白浆| 久久久久人妻一区精品| 无码任你躁久久久久久老妇App| 国产免费久久精品99久久| 一本色道久久88加勒比—综合| 久久这里只精品国产99热| 91精品国产高清久久久久久91| 亚洲国产精品久久|