Just now I can not visit my gmail

 

error message is :

 

无法显示此网页。

网址为 https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%……的网页可能暂时无法连接,或者它已永久性地移动到了新网址。

以下是一些建议:

有关此错误的详情

以下是原始错误讯息

错误 105 (net::ERR_NAME_NOT_RESOLVED):无法找到此服务器。

 

 

why?

is it blocked by Chinese firewall?

Posted in Uncategorized | Leave a comment

广州至珠海的轻轨线己经正式运营了,今天坐了一段儿了,发现确实快,中国正快速的发展,超英赶美

            

今天感受了下轻轨,是中山古镇至广州的,发现真是快,38分钟完成,再坐地铁到其它想去的地方。

国家发展真是快,先前只听到一些零星的消息,现在真的运行了,发展真是快,国家先前的规划确实是正确的,有长远的眼光。

大家快些投资吧,中国确实是极有潜力的。

看我的轻轨票,上面标的是动车组-和谐号 的:

Posted in life of me | Tagged | Leave a comment

why do we need the ‘java’? is it great ? really?

 

I don’t think so , in fact , microsoft is the greatest.

It is popular, and it follows the world’s step.

I love microsoft very much!

Posted in Uncategorized | Leave a comment

存储过程的优劣 好与坏-

 

        当你在开发一个基于数据库的应用的时候,你可能会想这样一个问题:数据库有关的事务操作部分因该放在那里?是以存储过程(stored procedure)的形式放在数据库端呢,还是将查询以及相应运算嵌在应用程序当中呢?要回答这样一个问题,你首先要了解存储过程以及内嵌SQL这两种 方案各自的优缺点以及他们分别适用的场合。

这也是我最近遇到的问 题,在写一个有大量数据库操作的程序,是在InterBase上开发;工作中又要不断在SQL Server和Oracle两种环境下操作,SQL Query Analyzer中用F5执行查询,PL/SQLDeveloper中用F8执行查询,这两个快捷键已经有些让我不知所措了。加上一大堆含义相同名称迥异 的概念,各自扩展的SQL语句,还有不同时期不同人写就的View,Stored Procedures,真是有些云里雾里的感觉。

我一直坚持只用标准的SQL语句编程,从效率、安全和维护方面出发也考虑利用存储过程来处理大量的数据操作,但可移植性方面的问题又让我望而却步。所以至今还是把大量的SQL语句嵌入到程序中,这其中利与弊又要如何考量呢???

为什么要使用存储过程(Stored Procedures)?

存 储过程是一组T-SQL语句,它们存放在一起形成一段SQL程序。在运行的时候,你可以传入一些参数;你得到的可以是结果集合(result set),也可以是输出参数(outputparameters),甚至是返回值(return value)。存储过程在第一次被执行的时候,数据库系统要首先对它进行分析和编译。编译后得到了一个执行计划(executionplan)。所谓执行 计划就是数据库具体执行这个存储过程的先后步骤的过程纪录。这个编译得到的执行计划被放置到数据库的缓存池中以备以后再次使用。如果这个存储过程今后再次 被调用,那么数据库将从缓存池中取出这个执行计划来运行。这样就避免了重复对该存储过程进行再次分析和编译,从而提高了数据库的性能。(这些缓存池中的执 行计划将一直被保存着,直到数据库重新启动或是系统内存不够用而被清除出缓存池)。

是否使用存储过程,我们可以从以下三个方面来进行分析。

一.性能(Performance)

在 网络传输方面,存储过程比查询仍然占有优势。因为使用存储过程只需要向数据库传递存储过程的名字和必要的参数,而不是像查询那样要传输全部查询语句。如果 查询逻辑复杂的话,那么查询语句的大小也将会比较可观。另外,设计合理的存储过程可以减少客户端和数据库端之间的往返,甚至减少到一次。在决定是否使用存 储过程的时候,你还要判断你的特定操作是不是利用了存储过程的长处。总体来说:

  • 基于集合的运算(Set-Based)是SQL的强项
  • 基于行的运算(Row-Based)以及基于字符串的运算(String manipulation)不是SQL的强项。

二.可维护性和抽象能力(Maintainability and Abstraction)

使 用存储过程另外一个潜在的好处就是可维护性好。对于好多更动,你也许只需要更改存储过程的具体实现就可以完成。所有使用它的客户端程序就不需要重新修改, 调试和编译。这样很多变动对于客户程序来说就是透明的(transparent)。在大多情况下,这种办法往往是最有效和最简单的。

通过抽象具体实现(implementation)和将SQL语句放在存储过程中,可以使任何客户端调用者以一个统一的形式来访问数据。不同的用户也将永远得到同一样的结果。

需要指出的一点是使用存储过程不能防止你修改数据库结构和事务处理规则。如果更动比较大,需要重新设计传入的参数或者返回值,那么你将需要修改客户端调用这些存储过程的程序段。

你 应该考虑到使用存储过程来封装你的事务处理逻辑将影响应用的可移植性。存储过程是和SQL数据库捆绑在一起的,如果你想更换数据库平台,你可能要重写这些 存储过程。如果可移植性对你的应用的是非常关键的,那么将事务处理逻辑放在数据库系统中立(RDBMS-neutral)的中间层(middle -tier)比较好。

三.安全性(Security)

从管理用户访问信息角度来讲,它可以通过让用户访问一定的存储过程来保证用户可以访问特定的数据,这是一种间接的数据访问,而不是直接对用户开放式据库表格。其实我们可以将存储过程假想为数据库系统的View。唯一的区别就是存储过程可以变更参数而使得结果动态变化。

存 储过程还可以让你在程序安全性方面有所改进。它可以防备一种叫做SQL注入式的攻击(SQL injection attacks)- 这种攻击主要是用AND或是OR运算符将命令拼接在有效的输入参数之后。存储过程还可以隐藏事务处理规则于数据库端,而不是放在客户程序端。在有些情况下 (比如涉及到知识产权等等),这种隐藏是非常重要的。

存储过程适用于你吗?

综上所述,使用存储过程有如下几个突出优点:

  • 提高新能,减少了网络流量
  • 在数据库端一点的维护(single point of maintenance )
  • 抽象和概化业务逻辑,增强了一致性和安全性
  • 减少了一些可能的恶意攻击的机会
  • 鼓励执行计划的重用性(Encourage execution plan re-use )

如 果你的应用程序能有效的利用存储过程的上述优点,那么你就应该尽量使用。但是如果你的应用要求有很高的可移植性,或者数据库的结构变动很大,不能相对稳定 下来,那么你可能要试一试其他方法了。比如你现在在SQL数据库上为用户开发一个早期可行性验证程序,今后用户很可能使用MySQL或是Oracle等其 它数据库,那么你就因该避免使用SQL数据库的存储过程,而使用程序内嵌的数据库操作语句。这样当你更换数据库平台的时候,可以极大的保证程序不受影响。

另 外,你还要考虑使用存储过程的技术问题。也许你和你的手下非常不熟悉存储过程编程,并且没有时间去很快掌握它。这些因素你也需要通盘考虑。另外如前所述, 数据库存储过程擅长于基于集合(set-based)的操作,而不擅长基于行(row-based)的操作。如果你对存储过程没有很好的了解,而不正确的 使用了它往往会导致很不好的执行性能。所以如果你决定使用存储过程,那么多花一些时间来学习它是很有必要的。

并 且,编写复杂的存储过程可读性不如高级语言程序,调试环境也远远不如成熟的编程工具强大。由于各个厂商都对标准的SQL语句进行了不同扩展,所以移植存储 过程要负出很大代价。要求编程人员对每种数据库系统都有很深入的理解也是不太现实的。通过开发支持客户端的自动升级是比较简单的,但要升级服务器端的存储 过程,却不见得轻而易举。

由于将业务逻辑都集中到服务器端处理,系统对服务器的要求几近苛刻,而编写和维护高效可读的存储过程,将是一个异常艰难的挑战;而在另一端,高级编程语言不断发展,硬件条件不断提高,网络环境也不再成为主要瓶颈,而这些资源却被无端浪费.

是不是要将所有处理都交给服务器,这实在是个问题?

个人建议:为了更好的移植,最好不要用存储过程、触发器和视图等……

Posted in database | Tagged | Leave a comment

业务的规则对我来讲是最重要的=====行业经验

业务的规则对我来讲是最重要的=====行业经验

 

关于流通、零售行业或制造行业,希望有机会与对面的你好好沟通交流下!

 

交个朋友吧!

 

 

qq:295286073

msn:erp.expert  (at)  hotmail.com

Posted in life of me | Leave a comment

好久不上这里了,以为上不了了,哪里知道今天竟然可以,感谢啊!

 

 

今天终天可以上https://sapimplexpert.wordpress.com 了,真是好啊,好久不见了,老朋友。

 

 

真希望言论能够自由!

自由真好!

 

 

msn:erp.expert   (at)   hotmail.com

Posted in 我的生活 | Tagged | Leave a comment

genero fourjs fjs —about the table ds.tiptop_columns —where is the ‘ds.tiptop_columns table’ data from?(tiptop gp 5.2)

 

 

in the tiptop gp 5.2,

 

about the table ds.tiptop_columns  —where is the ‘ds.tiptop_columns table’ data from?

 

do you know ?

 

 

 

technology exchange : msn: erp.expert@hotmail.com

Posted in fourjs platform, tiptop erp(using fourjs) | Tagged | Leave a comment

genero fourjs fjs.com 4gl- it can not get correct sql condition when use time conditon

I found fourjs fjs language -construct, it can not get correct sql conditon when i need use the ‘time’ condition.

 

look below, this is evidence:

 

g_wc = “rwb06=TO_DATE(‘2010-10-12 00:00:00′,’YYYY-MM-DD HH24:MI:SS’) and rwb07=TO_DATE(‘2010-10-19 00:00:00′,’YYYY-MM-DD HH24:MI:SS’) and rwb08 between ’11’ and ’12:13′ and rwb09 between ’14’ and ’15:16′      ”

g_wc2 = (null)

lc_qbe_sn = 0

Posted in fourjs platform | Tagged | Leave a comment

genero fourjs fjs.com 4gl—tiptop gp 5.2 p_per p_perlang

 

about the p_per p_perlang, in our program , it has two rows for one program.

 

one row for customize program , one for standard program.

 

remember it.

Posted in fourjs platform | Tagged | Leave a comment

genero fourjs fjs.com 4gl—session in tiptop gp 5.2—open source code

 

 

sessionid in genero fourjs fjs tiptop gp 5.2:

 

# Prog. Version..: ‘5.20.01’
#
# Program name…: cl_insert_sid.4gl
# Descriptions…: 將view所需要的資訊新增到sid_file內
# Date & Author..: 2009/07/24 by Hiko
# Usage……….: CALL cl_ins_del_sid(1)
# Modify………: No.FUN-980030 09/08/10 by Hiko:For GP5.2
DATABASE ds
GLOBALS “../../config/top.global”
##################################################
# Descriptions…: 將view所需要的資訊新增到sid_file內
# Date & Author..: 2009/07/24 by Hiko   #FUN-980030
# Input Parameter: p_action 1:新增 2:刪除
#                : p_plant 傳入工廠(跨工廠時,才可抓到正確的資料)
# Return code….: void
##################################################
FUNCTION cl_ins_del_sid(p_action, p_plant)
   DEFINE p_action  SMALLINT,
          p_plant   LIKE azw_file.azw01
   DEFINE l_sid01   LIKE sid_file.sid01
   DEFINE l_pid     LIKE type_file.num10
   DEFINE l_sid_cnt SMALLINT
   DEFINE l_dbs     LIKE azw_file.azw06
   #有調整時, 要記得與cl_user,cl_used同步.
   IF cl_null(p_plant) THEN
      LET p_plant = g_plant
   END IF
   IF p_action=1 THEN
      CASE cl_db_get_database_type()
         WHEN “ORA”
            SELECT USERENV(‘SESSIONID’) INTO l_sid01 FROM DUAL
         WHEN “MSV”
            PREPARE s1 FROM “SELECT @@SPID “
            EXECUTE s1 INTO l_sid01
         WHEN “DB2”
            SELECT application_id INTO l_sid01 FROM sysibm.sysdummy1
         OTHERWISE
            DISPLAY “Error: TIPTOP Still NOT Support “,cl_db_get_database_type(),” Database.”
            EXIT PROGRAM
      END CASE

      SELECT count(*) INTO l_sid_cnt FROM sid_file WHERE sid01=l_sid01
      IF SQLCA.SQLCODE THEN
         CALL cl_err(‘sid_file error:’,SQLCA.SQLCODE,1)
         RETURN
      END IF

      IF l_sid_cnt > 0 THEN
         #刪除原本就存在相同的SESSIONID,這樣可以避免重覆.
         DELETE FROM sid_file WHERE sid01=l_sid01
      END IF
      IF p_plant = g_plant THEN
         LET l_dbs = g_dbs
      ELSE
         SELECT azw06 INTO l_dbs FROM azw_file WHERE azw01=p_plant
      END IF
      LET l_pid = FGL_GETPID()
      LET g_today = TODAY
      LET g_time = TIME
      DISPLAY “”
      DISPLAY “SESSIONID:”,l_sid01,”  PLANT:”,p_plant,”  DBNAME:”,l_dbs
      INSERT INTO sid_file VALUES(l_sid01,p_plant,l_dbs,g_user,l_pid,g_prog,g_time,g_today)
   ELSE
      #DISPLAY “DELETE SESSIONID…”
      CASE cl_db_get_database_type()
         WHEN “ORA”
            SELECT USERENV(‘SESSIONID’) INTO l_sid01 FROM DUAL
         WHEN “MSV”
            PREPARE s2 FROM “SELECT @@SPID “
            EXECUTE s2 INTO l_sid01
         WHEN “DB2”
            SELECT application_id INTO l_sid01 FROM sysibm.sysdummy1
         OTHERWISE
            DISPLAY “Error: TIPTOP Still NOT Support “,cl_db_get_database_type(),” Database.”
            EXIT PROGRAM
      END CASE

      SELECT count(*) INTO l_sid_cnt FROM sid_file WHERE sid01=l_sid01
      IF SQLCA.SQLCODE THEN
         CALL cl_err(‘sid_file error:’,SQLCA.SQLCODE,1)
         RETURN
      END IF
      IF l_sid_cnt > 0 THEN
         #資料存在才刪除.
         DELETE FROM sid_file WHERE sid01=l_sid01
      END IF
   END IF
END FUNCTION

 

 

===================================================================================================

— Create table
create table ds.SID_FILE
(
  sid01   NUMBER(20) not null,
  sid02   VARCHAR2(10),
  sid03   VARCHAR2(20),
  sid04   VARCHAR2(10),
  sid05   NUMBER(10),
  sid06   VARCHAR2(20),
  sid07   VARCHAR2(8),
  siddate DATE
)
tablespace DBS1
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 512K
    minextents 1
    maxextents unlimited
  );
— Create/Recreate indexes
create unique index ds.SID_01 on ds.SID_FILE (SID01)
  tablespace DBS1
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 192K
    minextents 1
    maxextents unlimited
  );
— Grant/Revoke object privileges
grant index on ds.SID_FILE to PUBLIC;
grant select, insert, update, delete on ds.SID_FILE to TIPTOPGP;

============================================================================================

Comments: I think that the ‘sid_file’ and ‘read sessionid’ is the reason about the system is running slowly.

technology exchange:

skype:mrsf_jean.luc

msn:erp.expert@hotmail.com

Posted in fourjs platform | Tagged | Leave a comment