Frank Hawker

          當程序員的大頭鷹

          關于OA產品一些思考

          今天看了一些OA的產品,發現經過這些年的發展,WebOA產品基本上已經趨于同質化。目前市場上這些產品的亮點不多,至少沒有讓人耳目一新的感覺。我想對于目前的OA產品未來的發展,可能還會在以下這幾個方面中得到體現:
          1、在功能方面,WAP的OA正在興起,這得益于手機的功能越來越強大,色彩越來越豐富。如果在這上頭能研發出有一種全新體驗的話,那么在接下來的幾年內,這將會是OA市場一個新的增加點。
          2、OA系統與其它業務系統的集成。對于一個企業的OA,在目前這種狀況下,并不是重點。也就是說,除非是一家非常大的企業,否則,ERP才是目前國內絕大部分企業考慮的重點,這才是這些企業的生命線。而OA只不過是一種錦上添花的東東而已。因此OA只有在能很多地與ERP系統進行集成與整合,并提高整個企業的效率,減少運營成本的前提下,才能為OA帶來更為廣闊的發展空間。
          3、功能強大的搜索引擎是OA的未來一項非常重要的功能,而且也是必不可少的功能。OA產品的使用已經相當長的一段時間了,因此產生了大量的信息。如何根據不同人的不同權限,通過功能強大的搜索引擎,使之能在大量的信息中快速準確地得到想要的信息,將是一項革命性的功能。

          posted @ 2005-07-19 15:50 大頭鷹 閱讀(515) | 評論 (0)編輯 收藏

          中國小吃英文表達

          中式早點
            燒餅     Clay oven rolls
            油條     Fried bread stick
            水餃     Boiled dumplings
            饅頭     Steamed buns
            飯團     Rice and vegetable roll
            皮蛋     100-year egg
            咸鴨蛋    Salted duck egg
            豆漿     Soybean milk
          飯類
            稀飯     Rice porridge
            白飯     Plain white rice
            糯米飯    Glutinous rice
            蛋炒飯    Fried rice with egg
          面類
            刀削面    Sliced noodles
            麻辣面    Spicy hot noodles
            烏龍面    Seafood noodles
            板條     Flat noodles
            榨菜肉絲面  Pork , pickled mustard green noodles
            米粉     Rice noodles
          湯類
            紫菜湯    Seaweed soup
            牡蠣湯    Oyster soup
            蛋花湯    Egg & vegetable soup
            魚丸湯    Fish ball soup
          點心
            臭豆腐    Stinky tofu (Smelly tofu)
            油豆腐    Oily bean curd
            蝦球     Shrimp balls
            春卷     Spring rolls
            蛋卷     Chicken rolls
            肉丸     Rice-meat dumplings
            火鍋     Hot pot

          posted @ 2005-07-13 10:32 大頭鷹 閱讀(445) | 評論 (0)編輯 收藏

          技術社區網站

          http://www.gotdotnet.com是Microsoft .Net Framework社區。
          http://www.cnblogs.com是博客日志。
          http://blog.joycode.com/是博客堂。
          http://www.csdn.net/在中國還有有點名氣,是講一些IT界新信息的站點。
          http://www.ccid.net/是賽迪咨詢站點,主要面向IT信息、服務等方面。
          http://theserverside.com是比較好的Java世界社區。
          http://www.idesign.net是一個比較好的.Net網站,主要面向.Net思想(比如:COM+、Remoting)等的實現演示。
          http://www.project.com/main.htm是比較好的項目網站。
          http://
          www.asq.org/是與軟件項目質量相關的網站。
          http://www.ivv.nasa.gov是軟件度量指導手冊。
           
           
          以下是我常去的網站,
          http://www.pmi.org
          http://www.4pm.com
          http://www.projectmanagement.com
           

          以下是一些比較有名氣的項目管理網站,可以幫助新手或有經驗的項目管理者提高自身的管理素質。
          http://www.ifpug.org包含關于“功能點”的全面信息。
          可以在
          http://ourworld.compuserve.com/homepages/softcomp上找到一個有用的關于功能點(和擴展功能點)的FAQ。
          可以在
          http://www.qualityworld.com找到關于軟件質量及相關主題(包括質量)的優秀信息源。
          可以在
          http://www.sytsma.com/tqmtools/ctlchtprinciples.html上找到《Common Control Chart Cookbook》
          可以在
          http://www.spr.com上找到軟件成本估算工具。
          可以在
          http://www.qsm.com上是關于從軟件方程式演化出來的軟件成本估算工具的信息。
          可以在
          http://www.demon.co.uk/mindtool/destree.html上獲取關于決策樹分析的一個優秀教程。
          可以從
          http://www.spmm.com/rsktrkr.html上找到風險雷達(Risk Radar),它是一個風險管理數據庫,幫助項目管理者識別、排序和交
          流項目風險。
          可以從
          http://catless.ncl.ac.uk/Risks/search.html上找到一個包含來自ACM的公眾風險論壇的所有條目的數據庫。
          可以從
          http://www.acq.osd.mil/pm/上找到大量的關于獲得值分析的信息源。
          可以從
          http://www.qualitytree.com/links/links.html上獲取大量關于軟件質量的信息源。
          可以從
          http://deming.eng.demson.edu上找到大量關于連續過程改善和TQM的信息源。
          可以從
          http://www.management.gov上找到關于質量管理的深度教程和廣泛的信息源。
          http://www.casq.org是中國軟件質量協會給出的最全面的質量站點。
          可以從
          http://rac.iitri.org上找到大量有用的關于可靠性、易維護性、易支持性和質量的信息。
          可以從
          http://www.rstcorp.com/hotlist/topics-safety.html找到軟件安全性的有價值的論文。

          posted @ 2005-06-16 13:23 大頭鷹 閱讀(429) | 評論 (0)編輯 收藏

          IBMDevelopworks中的一篇介紹MDA開發的文章

          http://www-128.ibm.com/developerworks/cn/ondemand/i-modev.html
          這一系列的文章介紹了MDA開發的整個過程,并且結合使用IBM Rational的建模工具(Rational Suite Enterprise v2003)進行實例講解,非常具有啟發性,值得一看。
          筆記:
          在第2 部分( 定義和管理需求)中的這個例子應該清楚的是,是先有需求文檔(根據RUP相關Vision文檔寫成),然后再把這些需求同步到RequisitePro中,然后才對這些需求的可追溯性進行管理。
          RequisitePro是一個需求管理工具,而不是一個文檔管理工具。

          posted @ 2005-06-14 10:11 大頭鷹 閱讀(500) | 評論 (0)編輯 收藏

          VC中多語編程的一些要點

          一個程序或控件,如果想要有更大的市場,國際化是一種必然的趨勢。要使軟件國際化,其編碼必須支持多語,否則有可能在你的程序中,僅在某個版本的操作系統底下好用,而在另外的操作系統中卻是亂碼。VC對多語的支持相對于VB來說還是簡單了很多,其自身提供了支持多語的機制。在實際工作中,在VC中進行多語化編譯,我總結出以下一些要點:
          1、首先應該預編譯指令中定義UNICODE或_UNICODE,使用了這個預編譯指令,在使用WindowsAPI時,系統就會自動使用W版的API函數及結構
          2、聲明字符串必須用TCHAR,而不能用char
          3、對于字符串操作的相關函數處理,如strcpy用wcscpy的代替等等
          4、所有的字符串值,必須加上宏_T()
          5、如果在程序中使用了STL,必須使用必須使用其w版的函數及類型,比如string就得用wstring來代替,在我的程序中,使用了如下預編譯指令:
          #ifdef _UNICODE
          #define tstring  wstring
          #else
          #define tstring  string
          #endif
          這樣在程序中用tstring來聲明字符串。所有與string相關的函數都必須作這這樣的處理。比如stringstream、ostream等等。
          關于編碼的問題請參考下面文章:
          http://dev.csdn.net/develop/article/72/72002.shtm

          posted @ 2005-05-25 09:44 大頭鷹 閱讀(542) | 評論 (0)編輯 收藏

          數據庫優化技巧:not in及in語句的連接替代方案

          在編寫SQL語句時,如果要實現一張表有而另一張表沒有的數據庫時,通常第一直覺的寫法就是:
          select * from table1 where table1.id not in (select id from table2),這種方法雖然很直觀,但是in及not in的寫法經常會影響其執行的效率,對于大數據量時,這個原因經常是性能的瓶頸。在SQL Server中,可以通過左連接的方法來解決,其替代寫法如下:
          select a.* from table1 a left join table2 b on a.id=b.id where b.id is null
          同理,這個方法也適用于in的情況。

          posted @ 2005-05-17 09:04 大頭鷹 閱讀(1185) | 評論 (0)編輯 收藏

          數據庫的分頁存儲過程

          數據庫分頁是一種非常有用,而且非常通用的技術,下面收集整理一些通用的存儲過程:
          1、CSDN社區鄒建寫的一個通用存儲過程
          if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_show]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
          drop procedure [dbo].[p_show]
          GO

          /*--實現分頁的通用存儲過程

           顯示指定表、視圖、查詢結果的第X頁
           對于表中主鍵或標識列的情況,直接從原表取數查詢,其它情況使用臨時表的方法
           如果視圖或查詢結果中有主鍵,不推薦此方法
           如果使用查詢語句,而且查詢語句使用了order by,則查詢語句必須包含top 語句

          --鄒建 2003.09--*/

          /*--調用示例
           exec p_show '地區資料'

           exec p_show 'select top 100 percent * from 地區資料 order by 地區名稱',5,3,'地區編號,地區名稱,助記碼'
          --*/
          CREATE Proc p_show
          @QueryStr nvarchar(4000), --表名、視圖名、查詢語句
          @PageSize int=10,   --每頁的大小(行數)
          @PageCurrent int=1,   --要顯示的頁
          @FdShow nvarchar (4000)='', --要顯示的字段列表,如果查詢結果不需要標識字段,需要指定此值,且不包含標識字段
          @FdOrder nvarchar (1000)='' --排序字段列表
          as
          set nocount on
          declare @FdName nvarchar(250) --表中的主鍵或表、臨時表中的標識列名
           ,@Id1 varchar(20),@Id2 varchar(20) --開始和結束的記錄號
           ,@Obj_ID int    --對象ID
          --表中有復合主鍵的處理
          declare @strfd nvarchar(2000) --復合主鍵列表
           ,@strjoin nvarchar(4000) --連接字段
           ,@strwhere nvarchar(2000) --查詢條件


          select @Obj_ID=object_id(@QueryStr)
           ,@FdShow=case isnull(@FdShow,'') when '' then ' *' else ' '+@FdShow end
           ,@FdOrder=case isnull(@FdOrder,'') when '' then '' else ' order by '+@FdOrder end
           ,@QueryStr=case when @Obj_ID is not null then ' '+@QueryStr else ' ('+@QueryStr+') a' end

          --如果顯示第一頁,可以直接用top來完成
          if @PageCurrent=1 
          begin
           select @Id1=cast(@PageSize as varchar(20))
           exec('select top '+@Id1+@FdShow+' from '+@QueryStr+@FdOrder)
           return
          end

          --如果是表,則檢查表中是否有標識更或主鍵
          if @Obj_ID is not null and objectproperty(@Obj_ID,'IsTable')=1
          begin
           select @Id1=cast(@PageSize as varchar(20))
            ,@Id2=cast((@PageCurrent-1)*@PageSize as varchar(20))

           select @FdName=name from syscolumns where id=@Obj_ID and status=0x80
           if @@rowcount=0   --如果表中無標識列,則檢查表中是否有主鍵
           begin
            if not exists(select 1 from sysobjects where parent_obj=@Obj_ID and xtype='PK')
             goto lbusetemp  --如果表中無主鍵,則用臨時表處理

            select @FdName=name from syscolumns where id=@Obj_ID and colid in(
             select colid from sysindexkeys where @Obj_ID=id and indid in(
              select indid from sysindexes where @Obj_ID=id and name in(
               select name from sysobjects where xtype='PK' and parent_obj=@Obj_ID
             )))
            if @@rowcount>1  --檢查表中的主鍵是否為復合主鍵
            begin
             select @strfd='',@strjoin='',@strwhere=''
             select @strfd=@strfd+',['+name+']'
              ,@strjoin=@strjoin+' and a.['+name+']=b.['+name+']'
              ,@strwhere=@strwhere+' and b.['+name+'] is null'
              from syscolumns where id=@Obj_ID and colid in(
              select colid from sysindexkeys where @Obj_ID=id and indid in(
               select indid from sysindexes where @Obj_ID=id and name in(
                select name from sysobjects where xtype='PK' and parent_obj=@Obj_ID
              )))
             select @strfd=substring(@strfd,2,2000)
              ,@strjoin=substring(@strjoin,5,4000)
              ,@strwhere=substring(@strwhere,5,4000)
             goto lbusepk
            end
           end
          end
          else
           goto lbusetemp

          /*--使用標識列或主鍵為單一字段的處理方法--*/
          lbuseidentity: 
           exec('select top '+@Id1+@FdShow+' from '+@QueryStr
            +' where '+@FdName+' not in(select top '
            +@Id2+' '+@FdName+' from '+@QueryStr+@FdOrder
            +')'+@FdOrder
            )
           return

          /*--表中有復合主鍵的處理方法--*/
          lbusepk:  
           exec('select '+@FdShow+' from(select top '+@Id1+' a.* from
            (select top 100 percent * from '+@QueryStr+@FdOrder+') a
            left join (select top '+@Id2+' '+@strfd+'
            from '+@QueryStr+@FdOrder+') b on '+@strjoin+'
            where '+@strwhere+') a'
            )
           return

          /*--用臨時表處理的方法--*/
          lbusetemp:  
          select @FdName='[ID_'+cast(newid() as varchar(40))+']'
           ,@Id1=cast(@PageSize*(@PageCurrent-1) as varchar(20))
           ,@Id2=cast(@PageSize*@PageCurrent-1 as varchar(20))

          exec('select '+@FdName+'=identity(int,0,1),'+@FdShow+'
            into #tb from'+@QueryStr+@FdOrder+'
           select '+@FdShow+' from #tb where '+@FdName+' between '
           +@Id1+' and '+@Id2
           )

          GO

          2、當有排序ID(唯一)時,可以用如下存儲過程:
          CREATE PROCEDURE SPPagediv
          @tblName   varchar(3000),       -- 表名
          @strGetFields varchar(3000) = '*',  -- 需要返回的列
          @fldName varchar(255)='',      -- 排序的字段名
          @PageSize   int = 10,          -- 頁尺寸
          @PageIndex  int = 1,           -- 頁碼
          @doCount  bit = 0,   -- 返回記錄總數, 非 0 值則返回
          @OrderType bit = 0,  -- 設置排序類型, 非 0 值則降序
          @strWhere  varchar(1500) = ''  -- 查詢條件 (注意: 不要加 where)

          AS

          declare @strSQL   varchar(5000)       -- 主語句

          declare @strTmp   varchar(110)        -- 臨時變量

          declare @strOrder varchar(400)        -- 排序類型


           begin
            replace(@strGetFields,'''','''''')
           end
           

          if @doCount != 0
            begin
              if @strWhere !=''
               set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere
              else
            set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
            end
          --以上代碼的意思是如果@doCount傳遞過來的不是0,就執行總數統計。以下的所有代碼都是@doCount為0的情況

          else

          begin

           

          if @OrderType != 0

          begin

              set @strTmp = '<(select min'

          set @strOrder = ' order by [' + @fldName +'] desc'

          --如果@OrderType不是0,就執行降序,這句很重要!

          end

          else

          begin

              set @strTmp = '>(select max'

              set @strOrder = ' order by [' + @fldName +'] asc'

          end

           

          if @PageIndex = 1

          begin

              if @strWhere != '' 

              set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ '  from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder

               else

               set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ '  from ['+ @tblName + '] '+ @strOrder

          --如果是第一頁就執行以上代碼,這樣會加快執行速度

          end

          else

          begin

          --以下代碼賦予了@strSQL以真正執行的SQL代碼

          set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ '  from '

              + @tblName + ' where [' + @fldName + ']' + @strTmp + '(['+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + '] from ' + @tblName + ' ' + @strOrder + ') as tblTmp)'+ @strOrder

           

          if @strWhere != ''

              set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ '  from '

                  + @tblName + ' where [' + @fldName + ']' + @strTmp + '(['

                  + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['

                  + @fldName + '] from ' + @tblName + ' where ' + @strWhere + ' '

                  + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

          end

          end 

          exec (@strSQL)

          GO

          這個存儲過程如下文章中獲得:
          http://soft.zol.com.cn/2005/0117/144785.shtml

          posted @ 2005-05-10 09:13 大頭鷹 閱讀(678) | 評論 (0)編輯 收藏

          僅列出標題
          共2頁: 上一頁 1 2 

          導航

          統計

          公告

          常用鏈接

          留言簿(3)

          我參與的團隊

          隨筆分類(6)

          隨筆檔案(17)

          文章檔案(1)

          收藏夾(2)

          Friends' Blog

          積分與排名

          最新評論

          主站蜘蛛池模板: 修水县| 清原| 温泉县| 若尔盖县| 信丰县| 兰坪| 武威市| 皮山县| 南开区| 遂昌县| 瑞丽市| 扶绥县| 怀仁县| 交城县| 汉源县| 高州市| 桐庐县| 明水县| 无棣县| 巧家县| 清水河县| 衡阳市| 元氏县| 三明市| 江安县| 陇南市| 冀州市| 平阳县| 江都市| 平阴县| 孟津县| 桃源县| 诸城市| 漳平市| 桐庐县| 杭锦旗| 囊谦县| 连州市| 建瓯市| 达拉特旗| 墨竹工卡县|