Making faster runtime

hiiiiii all im very new to abap plz suggest me steps so that i can reduce the runtime speed of my program
thanks in advance
hoping 4 quick help
gaurav

hi gaurav,
        plz refer to the following lines.
For all entries
Nested selects
Select using JOINS
Use the selection criteria
Use the aggregated functions
Select with view
Select with index support
Select … Into table
Select with selection list
Key access to multiple lines
Copying internal tables
Modifying a set of lines
Deleting a sequence of lines
Linear search vs. binary
Comparison of internal tables
Modify selected components
Appending two internal tables
Deleting a set of lines
Tools available in SAP to pin-point a performance problem
Optimizing the load of the database
Other General Tips & Tricks for Optimization
For all entries:
      The for all entries creates a where clause, where all the entries in the driver table are combined with OR. If the number of entries in the driver table is larger than rsdb/max_blocking_factor, several similar SQL statements are executed to limit the length of the WHERE clause.
The plus
•     Large amount of data
•     Mixing processing and reading of data
•     Fast internal reprocessing of data
•     Fast
The Minus
•     Difficult to program/understand
•     Memory could be critical (use FREE or PACKAGE size)
Some steps that might make FOR ALL ENTRIES more efficient:
•     Removing duplicates from the the driver table
•     Sorting the driver table
•     If possible, convert the data in the driver table to ranges so a BETWEEN statement is used instead of and OR statement:
•     FOR ALL ENTRIES IN i_tab
•       WHERE mykey >= i_tab-low and
•             mykey <= i_tab-high.
Nested selects:
The plus:
•     Small amount of data
•     Mixing processing and reading of data
•     Easy to code - and understand
The minus:
•     Large amount of data
•     when mixed processing isn’t needed
•     Performance killer no. 1
Select using JOINS:
The plus
•     Very large amount of data
•     Similar to Nested selects - when the accesses are planned by the programmer
•     In some cases the fastest
•     Not so memory critical
The minus
•     Very difficult to program/understand
•     Mixing processing and reading of data not possible
Use the selection criteria
SELECT * FROM SBOOK.                   
  CHECK: SBOOK-CARRID = 'LH' AND       
                  SBOOK-CONNID = '0400'.        
ENDSELECT.                             
SELECT * FROM SBOOK                     
  WHERE CARRID = 'LH' AND               
        CONNID = '0400'.                
ENDSELECT.                              
Use the aggregated functions
C4A = '000'.              
SELECT * FROM T100        
  WHERE SPRSL = 'D' AND   
        ARBGB = '00'.     
  CHECK: T100-MSGNR > C4A.
  C4A = T100-MSGNR.       
ENDSELECT.                
SELECT MAX( MSGNR ) FROM T100 INTO C4A 
WHERE SPRSL = 'D' AND                
       ARBGB = '00'.                  
Select with view
SELECT * FROM DD01L                    
  WHERE DOMNAME LIKE 'CHAR%'           
        AND AS4LOCAL = 'A'.            
  SELECT SINGLE * FROM DD01T           
    WHERE   DOMNAME    = DD01L-DOMNAME 
        AND AS4LOCAL   = 'A'           
        AND AS4VERS    = DD01L-AS4VERS 
        AND DDLANGUAGE = SY-LANGU.     
ENDSELECT.                             
SELECT * FROM DD01V                    
WHERE DOMNAME LIKE 'CHAR%'           
       AND DDLANGUAGE = SY-LANGU.     
ENDSELECT.                             
Select with index support
SELECT * FROM T100            
WHERE     ARBGB = '00'      
       AND MSGNR = '999'.    
ENDSELECT.                    
SELECT * FROM T002.             
  SELECT * FROM T100            
    WHERE     SPRSL = T002-SPRAS
          AND ARBGB = '00'      
          AND MSGNR = '999'.    
  ENDSELECT.                    
ENDSELECT.                      
Select … Into table:
REFRESH X006.                 
SELECT * FROM T006 INTO X006. 
  APPEND X006.                
ENDSELECT
SELECT * FROM T006 INTO TABLE X006.
Select with selection list:
SELECT * FROM DD01L              
  WHERE DOMNAME LIKE 'CHAR%'     
        AND AS4LOCAL = 'A'.      
ENDSELECT
SELECT DOMNAME FROM DD01L    
INTO DD01L-DOMNAME         
WHERE DOMNAME LIKE 'CHAR%' 
       AND AS4LOCAL = 'A'.  
ENDSELECT
Key access to multiple lines:
LOOP AT TAB.          
CHECK TAB-K = KVAL. 
ENDLOOP.              
LOOP AT TAB WHERE K = KVAL.     
ENDLOOP.                        
Copying internal tables:
REFRESH TAB_DEST.              
LOOP AT TAB_SRC INTO TAB_DEST. 
  APPEND TAB_DEST.             
ENDLOOP.                       
TAB_DEST[] = TAB_SRC[].
Modifying a set of lines:
LOOP AT TAB.             
  IF TAB-FLAG IS INITIAL.
    TAB-FLAG = 'X'.      
  ENDIF.                 
  MODIFY TAB.            
ENDLOOP.                 
TAB-FLAG = 'X'.                  
MODIFY TAB TRANSPORTING FLAG     
           WHERE FLAG IS INITIAL.
Deleting a sequence of lines:
DO 101 TIMES.               
  DELETE TAB_DEST INDEX 450.
ENDDO.                      
DELETE TAB_DEST FROM 450 TO 550.
Linear search vs. binary:
READ TABLE TAB WITH KEY K = 'X'.
READ TABLE TAB WITH KEY K = 'X' BINARY SEARCH.
Comparison of internal tables
DESCRIBE TABLE: TAB1 LINES L1,      
                TAB2 LINES L2.      
IF L1 <> L2.                        
  TAB_DIFFERENT = 'X'.              
ELSE.                               
  TAB_DIFFERENT = SPACE.            
  LOOP AT TAB1.                     
    READ TABLE TAB2 INDEX SY-TABIX. 
    IF TAB1 <> TAB2.                
      TAB_DIFFERENT = 'X'. EXIT.    
    ENDIF.                          
  ENDLOOP.                          
ENDIF.                              
IF TAB_DIFFERENT = SPACE.           
ENDIF.                              
IF TAB1[] = TAB2[].  
ENDIF.               
Modify selected components:
LOOP AT TAB.           
TAB-DATE = SY-DATUM. 
MODIFY TAB.          
ENDLOOP.               
WA-DATE = SY-DATUM.                    
LOOP AT TAB.                           
MODIFY TAB FROM WA TRANSPORTING DATE.
ENDLOOP.     
Appending two internal tables:
LOOP AT TAB_SRC.              
  APPEND TAB_SRC TO TAB_DEST. 
ENDLOOP
APPEND LINES OF TAB_SRC TO TAB_DEST.
Deleting a set of lines:
LOOP AT TAB_DEST WHERE K = KVAL. 
  DELETE TAB_DEST.               
ENDLOOP
DELETE TAB_DEST WHERE K = KVAL.
Tools available in SAP to pin-point a performance problem
•     The runtime analysis (SE30)
•     SQL Trace (ST05)
•     Tips and Tricks tool
•     The performance database
Optimizing the load of the database
Using table buffering:
Using buffered tables improves the performance considerably. Note that in some cases a stament can not be used with a buffered table, so when using these staments the buffer will be bypassed. These staments are:
•     Select DISTINCT
•     ORDER BY / GROUP BY / HAVING clause
•     Any WHERE clasuse that contains a subquery or IS NULL expression
•     JOIN s
•     A SELECT... FOR UPDATE
If you wnat to explicitly bypass the bufer, use the BYPASS BUFFER addition to the SELECR clause.
Use the ABAP SORT Clause Instead of ORDER BY:
The ORDER BY clause is executed on the database server while the ABAP SORT statement is executed on the application server. The datbase server will usually be the bottleneck, so sometimes it is better to move thje sort from the datsbase server to the application server.
If you are not sorting by the primary key ( E.g. using the ORDER BY PRIMARY key statement) but are sorting by another key, it could be better to use the ABAP SORT stament to sort the data in an internal table. Note however that for very large result sets it might not be a feasible solution and you would want to let the datbase server sort it.
Avoid ther SELECT DISTINCT Statement:
    As with the ORDER BY clause it could be better to avoid using SELECT DISTINCT, if some of the fields are not part of an index. Instead use ABAP SORT + DELETE ADJACENT DUPLICATES on an internal table, to delete duplciate rows.
TIPS & TRICKS FOR OPTIMIZATION
•     Use the GET RUN TIME command to help evaluate performance. It's hard to know whether that optimization technique REALLY helps unless you test it out. Using this tool can help you know what is effective, under what kinds of conditions. The GET RUN TIME has problems under multiple CPUs, so you should use it to test small pieces of your program, rather than the whole program.
•     Generally, try to reduce I/O first, then memory, then CPU activity. I/O operations that read/write to hard disk are always the most expensive operations. Memory, if not controlled, may have to be written to swap space on the hard disk, which therefore increases your I/O read/writes to disk. CPU activity can be reduced by careful program design, and by using commands such as SUM (SQL) and COLLECT (ABAP/4).
•     Avoid 'SELECT *', especially in tables that have a lot of fields. Use SELECT A B C INTO instead, so that fields are only read if they are used. This can make a very big difference.
•     Field-groups can be useful for multi-level sorting and displaying. However, they write their data to the system's paging space, rather than to memory (internal tables use memory). For this reason, field-groups are only appropriate for processing large lists (e.g. over 50,000 records). If you have large lists, you should work with the systems administrator to decide the maximum amount of RAM your program should use, and from that, calculate how much space your lists will use. Then you can decide whether to write the data to memory or swap space.
•     Use as many table keys as possible in the WHERE part of your select statements.
•     Whenever possible, design the program to access a relatively constant number of records (for instance, if you only access the transactions for one month, then there probably will be a reasonable range, like 1200-1800, for the number of transactions inputted within that month). Then use a SELECT A B C INTO TABLE ITAB statement.
•     Get a good idea of how many records you will be accessing. Log into your productive system, and use SE80 -> Dictionary Objects (press Edit), enter the table name you want to see, and press Display. Go To Utilities -> Table Contents to query the table contents and see the number of records. This is extremely useful in optimizing a program's memory allocation.
•     Try to make the user interface such that the program gradually unfolds more information to the user, rather than giving a huge list of information all at once to the user.
•     Declare your internal tables using OCCURS NUM_RECS, where NUM_RECS is the number of records you expect to be accessing. If the number of records exceeds NUM_RECS, the data will be kept in swap space (not memory).
•     Use SELECT A B C INTO TABLE ITAB whenever possible. This will read all of the records into the itab in one operation, rather than repeated operations that result from a SELECT A B C INTO ITAB... ENDSELECT statement. Make sure that ITAB is declared with OCCURS NUM_RECS, where NUM_RECS is the number of records you expect to access.
•     If the number of records you are reading is constantly growing, you may be able to break it into chunks of relatively constant size. For instance, if you have to read all records from 1991 to present, you can break it into quarters, and read all records one quarter at a time. This will reduce I/O operations. Test extensively with GET RUN TIME when using this method.
•     Know how to use the 'collect' command. It can be very efficient. 
•     Use the SELECT SINGLE command whenever possible.  
•     Many tables contain totals fields (such as monthly expense totals). Use these avoid wasting resources by calculating a total that has already been calculated and stored.
ABAP/4 Development Code Efficiency Guidelines
ABAP/4 (Advanced Business Application Programming 4GL) language is an "event-driven", "top-down", well-structured and powerful programming language.  The ABAP/4 processor controls the execution of an event.  Because the ABAP/4 language incorporates many "event" keywords and these keywords need not be in any specific order in the code, it is wise to implement in-house ABAP/4 coding standards.
SAP-recommended customer-specific ABAP/4 development guidelines can be found in the SAP-documentation.
This page contains some general guidelines for efficient ABAP/4 Program Development that should be considered to improve the systems performance on the following areas:-
Physical I/O - data must be read from and written into I/O devices. This can be a potential bottle neck. A well configured system always runs 'I/O-bound' - the performance of the I/O dictates the overall performance.
Memory consumption of the database resources eg. buffers, etc.
CPU consumption on the database and application servers
Network communication - not critical for little data volumes, becomes a bottle neck when large volumes are transferred.
Policies and procedures can also be put into place so that every SAP-customer development object is thoroughly reviewed (quality – program correctness as well as code-efficiency) prior to promoting the object to the SAP-production system.   Information on the SAP R/3 ABAP/4 Development Workbench programming tools and its features can be found on the SAP Public Web-Server.
CLASSIC GOOD 4GL PROGRAMMING CODE-PRACTICES GUIDELINES
Avoid dead-code :
Remove unnecessary code and redundant processing
Spend time documenting and adopt good change control practices
Spend adequate time anayzing business requirements, process flows, data-structures and data-model
Quality assurance is key: plan and execute a good test plan and testing methodology
Experience counts
SELECT * FROM <TABLE>
CHECK:  <CONDITION>
ENDSELECT
  vs.
SELECT * FROM <TABLE>
WHERE <CONDITION>
ENDSELECT
In order to keep the amount of data which is relevant to the query the hit set small, avoid using SELECT+CHECK statements wherever possible. As a general rule of thumb, always specify all known conditions in the WHERE clause (if possible). If there is no WHERE clause the DBMS has no chance to make optimizations.  Always specify your conditions in the Where-clause instead of checking them yourself with check-statements.  The database system can also potentially make use a database index (if possible) for greater efficiency resulting in less load on the database server and considerably less load on the network traffic as well.
Also, it is important to use EQ (=) in the WHERE clause wherever possible, and analyze the SQL-statement for the optimum path the database optimizer will utilize via SQL-trace when necessary.
Also, ensure careful usage of  "OR", "NOT"  and value range tables (INTTAB) that are used inappropriately in Open SQL statements.
SELECT *
vs.
SELECT SINGLE *
If you are interested in exactly one row of a database table or view, use the SELECT SINGLE statement instead of a SELECT * statement.  SELECT SINGLE requires one communication with the database system whereas SELECT * requires two.
SELECT * FROM <TABLE>  INTO <INT-TAB>
APPEND <INT-TAB>
ENDSELECT
vs.
SELECT * FROM <TABLE> INTO TABLE <INT-TAB>
It is usually faster to use the INTO TABLE version of a SELECT statement than to use APPEND statements
SELECT ... WHERE + CHECK
vs.
SELECT using aggregate function
If you want to find the maximum, minimum, sum and average value or the count of a database column, use a select list with aggregate functions instead of computing the aggregates within the program.   The RDBMS is responsible for aggregated computations instead of transferring large amount of data to the application. Overall Network, Application-server and Database load is also considerably less.
SELECT INTO TABLE <INT-TAB> + LOOP AT T
SELECT * FROM <TABLE> INTO TABLE <INT-TAB>.
LOOP AT <INT-TAB>.
ENDLOOP.
vs.
SELECT * FROM <TABLE>
ENDSELECT
If you process your data only once, use a SELECT-ENDSELECT loop instead of collecting data in an internal table with SELECT ... INTO TABLE.  Internal table handling takes up much more space
Nested SELECT statements:
SELECT * FROM <TABLE-A>
     SELECT * FROM <TABLE-B>
     ENDSELECT.
ENDSELECT
vs.
Select with view
SELECT * FROM <VIEW>
ENDSELECT
To process a join, use a view wherever possible instead of nested SELECT statements.
Using nested selects is a technique with low performance. The inner select statement is executed several times which might be an overhead. In addition, fewer data must be transferred if another technique would be used eg. join implemented as a view in ABAP/4 Repository.
• SELECT ... FORM ALL ENTRIES
• Explicit cursor handling (for more information, goto Transaction SE30 – Tips & Tricks)
Nested select:
SELECT * FROM pers WHERE condition.
         SELECT * FROM persproj WHERE person = pers-persnr.
               ... process ...
         ENDSELECT.
ENDSELECT.
vs.
SELECT persnr FROM pers INTO TABLE ipers WHERE cond.  ……….
SELECT * FROM persproj FOR ALL ENTRIES IN ipers
      WHERE person = ipers-persnr
………... process .……………
ENDSELECT.
In the lower version the new Open SQL statement FOR ALL ENTRIES is used. Prior to the call, all interesting records from 'pers' are read into an internal table. The second SELECT statement results in a call looking like this (ipers containing: P01, P02, P03):
(SELECT * FROM persproj WHERE person = 'P01')
UNION
(SELECT * FROM persproj WHERE person = 'P02')
UNION
(SELECT * FROM persproj WHERE person = 'P03')
In case of large statements, the R/3's database interface divides the statement into several parts and recombines the resulting set to one.  The advantage here is that the number of transfers is minimized and there is minimal restrictions due to the statement size (compare with range tables).
SELECT * FROM <TABLE>
vs.
SELECT <column(s)> FROM <TABLE>
Use a select list or a view instead of SELECT *, if you are only interested in specific columns of the table. If only certain fields are needed then only those fields should be read from the database.  Similarly, the number of columns can also be restricted by using a view defined in ABAP/4 Dictionary. Overall database and network load is considerably less.
SELECT without table buffering support
vs.
SELECT with table buffering support
For all frequently used, read-only(few updates) tables, do attempt to use SAP-buffering for eimproved performance response times. This would reduce the overall Database activity and Network traffic.
Single-line inserts
LOOP AT <INT-TAB>
INSERT INTO <TABLE> VALUES <INT-TAB>
ENDLOOP
vs.
Array inserts
Whenever possible, use array operations instead of single-row operations to modify the database tables.
Frequent communication between the application program and database system produces considerable overhead.
Single-line updates
SELECT * FROM <TABLE>
  <COLUMN-UPDATE STATEMENT>
  UPDATE <TABLE>
ENDSELECT
vs.
Column updates
UPDATE <TABLE> SET <COLUMN-UPDATE STATEMENT>
Wherever possible, use column updates instead of single row updates to update your database tables
DO....ENDDO loop with Field-Symbol
vs.
Using CA operator
Use the special operators CO, CA, CS instead of programming the operations yourself
If ABAP/4 statements are executed per character on long strings, CPU consumprion can rise substantially
Use of a CONCATENATE function module
vs.
Use of a CONCATENATE statement
Some function modules for string manipulation have become obsolete, and should be replaced by ABAP statements or functions
STRING_CONCATENATE...   ---> CONCATENATE
STRING_SPLIT...  ---> SPLIT
STRING_LENGTH...  ---> strlen()
STRING_CENTER...  ---> WRITE..TO. ..CENTERED
STRING_MOVE_RIGHT  ---> WRITE...TO...RIGHT-JUSTIFIED
Moving with offset
vs.
Use of the CONCATENATE statement
Use the CONCATENATE statement instead of programming a string concatenation of your own
Use of SEARCH and MOVE with offset
vs.
Use of SPLIT statement
Use the SPLIT statement instead of programming a string split yourself
Shifting by SY-FDPOS places
vs
Using SHIFT...LEFT DELETING LEADING...
If you want ot delete the leading spaces in a string use the ABAP/4 statements SHIFT...LEFT DELETING LEADING...  Other constructions (with CN and SHIFT... BY SY-FDPOS PLACES, with CONDENSE if possible, with CN and ASSIGN CLA+SY-FDPOS(LEN) ...) are not as fast
Get a check-sum with field length
vs
Get a check-sum with strlen ()
Use the strlen () function to restrict the DO loop to the relevant part of the field, eg. when determinating a check-sum

Similar Messages

  • Making Faster Mountain Lion's Retina DIsplay Performance

    Hello..
    I just hope to discuss Retina Display and rendering it's font, photo and display perfomance.
    My two main issue is Antialiasing and Interpolation.
    1. Antialiasing (AA) :
    Now we can contact really high dpi display pannel. though, not close as print yet, i think it's time to think about antialiasing fonts.should we need AA more? in my guess AA should be have option to on & off now. and this could be increase perfomance and let GPU works less. instead of, font should be twice(at least) big than now in general environment. thanks to retina, we can get enough neat outline with antialiasing off.
    2. Interpolation :
    Interpolation is for graphic image to prevent mosaic problem when reduce or magnify. this should be essential in many case. but in Retina, this could be blur image. because in Retina mode, every image will enlarged with interpolation. so i hope there was option for turn  off this interpolation working in "half sized resolution mode". for example, in retina MBP, 2880 X 1800 is maximum resolution. but when set monitor resolution as half(1440X800), still image looks blur. because this image are interpolated even twice reduced. most images are basically have anti aliasing. so retina should not interporlate image at least they reduced in half.
    i wonder someone can make this utility.
    please let me know your think.
    thanks

    i don't want to see deleting my thread without my permission
    If you look at the Terms of Use here, you will see that Apple owns these forums and has the right to remove posts if they want to do so. They do not require anyone's permission. There is a link to the terms at the bottom of this page.
    Your original post asks for a change in the OS behavior; here is part of the terms:
    Discussions of Apple policies or procedures or speculation on Apple decisions.
    This conversation is not productive; therefore this is my last post here.

  • IPhoto 9 plus all photos in finder are making constant fast beep sounds, flashing & frozen.  What happened

    Few days ago Mac Mail started making fast, loud, continuous beeping sounds while I was writing a long document. The Mail program started flashing, "vibrating," and froze. I had to force quit and lost that email (right - I should have saved it, but didn't).  I tried to re-create the document in Pages and the same thing happened.  Then I tried to recreate it in Word.  Same thing. (may sound nuts to just keep trying new programs, but this was an urgent document.  Figured I could get it done, then focus on fixing the problem)
    When I finally got things working again by re-starting multiple times and using Disk Utility, I evenutally opened iPhoto. After working with that program for several hours, I tried to use "share, "which creates an email with a jpeg. The same beeping and flashing started again. I had to shut down the computer. Next day everything seemed OK.  No problems for 3 days.
    Tonight I was working with several programs, all doing fine.  Then I opened iPhoto and it immediately started the fast beeping and wouldn't let me access any of my MANY photos. Had to force quit. So I tried to access photos I saved in Finder.  Every saved photo (I have hundreds in Finder) would beep and flash continuously when I clicked on it's icon, even without opening it.
    I can't find anything online about this situation. Some articles and forums talk about 3 beeps having a certain meaning. That's not what this is. It's continuous loud rhythmic beeps, flashing and I can barely shut down the program when that's going on. 
    Background: right before this started, my HD was very full and giving me warnings, so I deleted numerous file.  It's possible I could have deleted something that should NOT have been deleted. I also started in PRAM mode.  If I deleted something, I don't know how to tell what's missing. Also, iPhoto is very full and gave me warnings not to add photos. My Mac is 5 years old and running pretty fast. I installed Mountain Lion several months ago.
    Has anyone experienced this? Help!! I don't want to lose my photos!

    Running with a very full HD is very, very bad.
    OS X needs about 10 gigs of hard drive space for normal OS operations - things like virtual memory, temporary files and so on. Without this space your Mac will slow down as the OS hunts for space on the disk, files will be fragmented, also slowing things down, apps will crash and the risk of data corruption - that is damage to your files, photos, music - increases exponentially.
    Then, frankly, telling us you deleted "numerous file" but don't know what you deleted, really means that we can't help.
    It's very likely that your Library is damaged from being run on an overfull disk. But you'll need at least as muh disk space again for repair it.
    So, you need to get an external HD or two, move some data off that machine to make room. You may also need to reinstall your OS as you're not sure what you have deleted. After you've got your Os working you can try fix iPhoto.

  • How to check all rows and colums runtime executing BW query

    Hi Guys,
    I have a BW query with many calculated key figures. while execute this query the performance is really bad/slow. I need to know in which object the query is taking long time, is there any table or anything to get this information. I have looked all the query perfomation stuffs, everything looks good, just want to figure out what is making OLAP runtime longer.
    Thanks,
    Kris

    Hi Krish,
    You can not check the time taken by any particular key figure/ characteristics.
    However, if you really want to reduce the time, you can create aggregates proposed by SAP based on your query.
    First go to RSRT, place your query and click on "Execute + Debug".
    Then select "Display Aggregate Found" under Aggs and "Display Statistics Data" under Others in the "Debug Options".
    Now it will show you how you should create your aggregate based on different objects so that the total query execution time will be less.
    Also after clicking on BACK button you can check the time taken by each event during Query execution.
    Hope it helps.
    Thanks,
    Subrat.

  • Buffered output on screen using runtime.exec()

    Hi i've got the following jsp code which calls a unix shell script.. That shell script basically takes back up of a mysql database.. The problem is i've written quite a number of "echo" statements there. Now i want to print them out in the web page asynchronously i.e one by one.. What actually happens is, after the ENTIRE process has completed, i.e the long backup process, then all the messages appear at once.. I know this has got to do with buffering.. Any way to disable buffering or making the runtime call the thread synchronously? Hope any of you got my point.. help will be appreciated!..
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <%@ page import="java.io.*"%>
            <%@ page import ="java.util.*"%>     
        </head>
        <body>
            <%  int j;
                char c;           
                String databasename = (String)request.getParameter("database"); //Values that i get from the html page
                String path = (String)request.getParameter("path");           
                Runtime r = Runtime.getRuntime();
                Process p = null;
                String cmd = "backscript.sh " + databasename + " " + path;
                try {
                    p = r.exec(cmd);
                    BufferedWriter buffout = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
                    BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));               
                    String line = "", database = null;
                    while ((line=br.readLine())!=null ){
                            out.println(line);                           
                            out.println("<br>");
                    buffout.close();
                    br.close();
                    p.waitFor();
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    int ret = p.exitValue();
                    if (ret == 0) {
                        out.println("<br>");                   
                }%>
        </body>
    </html>

    out.flush() will work most of the time. Setting the buffer size to none in the page directive (first line of JSP) usually works as well:
    <%@ page buffer="none" %>
    When data gets written to the client and is flushed or has no buffer then you can't forward or redirect the page, which can cause problems/weird behavior if you get an error on the page.

  • Import: what's the faster?

    Hi,
    my question is related to the "import" command. I'm quite sure that specifying each class with a single import line (i.e., without using wildcards such as '*') will produce a faster compilation, but someone told me that the use of wildcards will produce faster runtime programs. Is it true?
    I don't think that the import can influence the runtime performances, but only the compiling ones. Nevertheless I'd like to know what do you think about, in order to discard my doubt.
    Thanks.

    >
    I'll go even further:
    If you have so many import statements in your source
    code file that you feel it's necessary to use "import
    package.*;", then that's a red flag that the source
    file is too big. A refactoring may be in order.
    To see if a source file is too big, I look at the "size" of the file. If you don't know how to do this, right click on the file and click properties, or go to the command prompt and type dir nameoffile. If you are using Linux, type ls instead of dir. I don't think the use of the * correlates well with oversized source files.
    Here is the import statements for two classes in the JDK source files, "whose" programmers are most likely "smart people".
    java.awt.Canvas:
    import java.awt.image.BufferStrategy;
    import java.awt.peer.CanvasPeer;
    import javax.accessibility.*;
    javax.swing.ComboBox:
    import java.beans.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.Serializable;
    import java.io.ObjectOutputStream;
    import java.io.ObjectInputStream;
    import java.io.IOException;
    import javax.swing.event.*;
    import javax.swing.plaf.*;
    import javax.swing.border.*;
    import javax.accessibility.*;
    To be fair, I looked at many classes. The most explicit import statements I saw were about 6 (not 10), and 6 is closer to 3, so I win +). Joking. I did notice that files used from packages such as java.util and java.io were more likely to be explicity coded than those from the awt and swing packages.

  • JRE 1.3.1_02 does not work with new Nvidia drivers - HELP!

    I am a user and not a developer but this problem really does bite the big one. I have had installed JRE 1.3.1 and have used it to run LimeWire file sharing program for a long time (LimeWire is a java program from www.limewire.com) and also use it to see java applets on web pages in IE 6.
    I have since upgraded my Nvidia video drivers to version 2.8.3.2 which is the latest official release at this time from Nvidia. Since doing this I have no java at all anymore. Limewire refuses to run at all and there is an error report generated in it's resident directory. If I go to http://java.sun.com, IE hangs and then dissappears, leaving a bug report on my desktop. It seems that JRE does not like the new NT OpenGL dll at all in the new Nvidia drivers and will not run at all. The dll that causes the problem is:
    C:\WINDOWS\System32\nvoglnt.dll
    I upgraded JRE to version 1.3.1_02 because Sun says this is the latest version and runs on XP which is what I have. Still java does not run at all anymore and I get the same bug reports. Has anyone found a workaround for this problem? This really stinks because now I cannot use LimeWire at all and if any web page has java on it, it dissappears right away and there is no more browser on my desktop. The only way I can even visit http://java.sun.com is if I use a Java blocking applet to filter out java applets on web pages.
    Please address this issue in JRE development and release a patch for it or a workaround.
    Thank you for reading this.
    [email protected]
    System Info:
    Microsoft Windows XP Professional
    Sun JRE 1.3.1_02
    GeForce 2 MX AGP video card with 32Mb VRAM
    Intel Pentuim III 800Mhz Coppermine
    1Gb PC 133Mhz SDRAM
    Java generated bug report:
    An unexpected exception has been detected in native code outside the VM.
    Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x69564306
    Function name=(N/A)
    Library=C:\WINDOWS\System32\nvoglnt.dll
    NOTE: We are unable to locate the function name symbol for the error
    just occurred. Please refer to release documentation for possible
    reason and solutions.
    Current Java thread:
         at sun.awt.Win32GraphicsDevice.getDefaultPixID(Native Method)
         at sun.awt.Win32GraphicsDevice.getDefaultConfiguration(Unknown Source)
         at sun.awt.windows.WToolkit.resetGC(Unknown Source)
         at sun.awt.windows.WToolkit.<clinit>(Unknown Source)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Unknown Source)
         at java.awt.Toolkit$2.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.awt.Toolkit.getDefaultToolkit(Unknown Source)
         at sun.awt.GlobalCursorManager$CursorEvent.<init>(Unknown Source)
         at sun.awt.GlobalCursorManager.<clinit>(Unknown Source)
         at java.awt.Cursor.initIDs(Native Method)
         at java.awt.Cursor.<clinit>(Unknown Source)
         at java.awt.Window.<init>(Unknown Source)
         at java.awt.Frame.<init>(Unknown Source)
         at java.awt.Frame.<init>(Unknown Source)
         at javax.swing.JFrame.<init>(Unknown Source)
         at sun.plugin.ConsoleWindow.<init>(Unknown Source)
         at sun.plugin.JavaRunTime.getJavaConsole(Unknown Source)
         at sun.plugin.JavaRunTime.showJavaConsole(Unknown Source)
         at sun.plugin.AppletViewer.initEnvironment(Unknown Source)
    Dynamic libraries:
    0x00400000 - 0x00419000      C:\Program Files\Internet Explorer\iexplore.exe
    0x77F50000 - 0x77FF9000      C:\WINDOWS\System32\ntdll.dll
    0x77E60000 - 0x77F45000      C:\WINDOWS\system32\kernel32.dll
    0x77C10000 - 0x77C63000      C:\WINDOWS\system32\msvcrt.dll
    0x77D40000 - 0x77DCD000      C:\WINDOWS\system32\USER32.dll
    0x77C70000 - 0x77CB0000      C:\WINDOWS\system32\GDI32.dll
    0x77DD0000 - 0x77E5B000      C:\WINDOWS\system32\ADVAPI32.dll
    0x77CC0000 - 0x77D35000      C:\WINDOWS\system32\RPCRT4.dll
    0x772D0000 - 0x77333000      C:\WINDOWS\system32\SHLWAPI.dll
    0x71700000 - 0x71848000      C:\WINDOWS\System32\SHDOCVW.dll
    0x71950000 - 0x71A34000      C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.0.0_x-ww_1382d70a\comctl32.dll
    0x773D0000 - 0x77BC4000      C:\WINDOWS\system32\SHELL32.dll
    0x77340000 - 0x773CB000      C:\WINDOWS\system32\comctl32.dll
    0x771B0000 - 0x772CA000      C:\WINDOWS\system32\ole32.dll
    0x5AD70000 - 0x5ADA4000      C:\WINDOWS\system32\uxtheme.dll
    0x60000000 - 0x6004C000      C:\WINDOWS\System32\MSCTF.dll
    0x75F80000 - 0x7607C000      C:\WINDOWS\System32\BROWSEUI.dll
    0x72430000 - 0x72442000      C:\WINDOWS\System32\browselc.dll
    0x75F40000 - 0x75F5D000      C:\WINDOWS\system32\appHelp.dll
    0x76FD0000 - 0x77048000      C:\WINDOWS\System32\CLBCATQ.DLL
    0x77120000 - 0x771AB000      C:\WINDOWS\system32\OLEAUT32.dll
    0x77050000 - 0x77115000      C:\WINDOWS\System32\COMRes.dll
    0x77C00000 - 0x77C07000      C:\WINDOWS\system32\VERSION.dll
    0x63000000 - 0x63094000      C:\WINDOWS\system32\WININET.dll
    0x762C0000 - 0x7634A000      C:\WINDOWS\system32\CRYPT32.dll
    0x762A0000 - 0x762AF000      C:\WINDOWS\system32\MSASN1.dll
    0x76F90000 - 0x76FA0000      C:\WINDOWS\System32\Secur32.dll
    0x76620000 - 0x7666E000      C:\WINDOWS\System32\cscui.dll
    0x76600000 - 0x7661B000      C:\WINDOWS\System32\CSCDLL.dll
    0x76670000 - 0x76754000      C:\WINDOWS\System32\SETUPAPI.dll
    0x75A70000 - 0x75B13000      C:\WINDOWS\system32\USERENV.dll
    0x10000000 - 0x10008000      C:\Program Files\Adobe\Acrobat 5.0\Reader\ActiveX\AcroIEHelper.ocx
    0x75E90000 - 0x75F31000      C:\WINDOWS\System32\SXS.DLL
    0x1A400000 - 0x1A479000      C:\WINDOWS\system32\urlmon.dll
    0x63580000 - 0x63824000      C:\WINDOWS\System32\mshtml.dll
    0x01500000 - 0x01588000      C:\WINDOWS\System32\shdoclc.dll
    0x74770000 - 0x747FF000      C:\WINDOWS\System32\MLANG.dll
    0x76400000 - 0x765FB000      C:\WINDOWS\System32\msi.dll
    0x746F0000 - 0x74719000      C:\WINDOWS\System32\msimtf.dll
    0x605D0000 - 0x605DF000      C:\WINDOWS\System32\mslbui.dll
    0x5C2C0000 - 0x5C303000      C:\WINDOWS\ime\sptip.dll
    0x018D0000 - 0x0192B000      C:\Program Files\Common Files\Microsoft Shared\Ink\SKCHUI.DLL
    0x746C0000 - 0x746E7000      C:\WINDOWS\System32\MSLS31.DLL
    0x32520000 - 0x32532000      C:\Program Files\Microsoft Office\Office10\msohev.dll
    0x1C000000 - 0x1C009000      C:\Program Files\AIM95\idlemon.dll
    0x71C20000 - 0x71C6F000      C:\WINDOWS\System32\netapi32.dll
    0x71B20000 - 0x71B31000      C:\WINDOWS\system32\MPR.dll
    0x75F60000 - 0x75F66000      C:\WINDOWS\System32\drprov.dll
    0x71C10000 - 0x71C1D000      C:\WINDOWS\System32\ntlanman.dll
    0x71CD0000 - 0x71CE6000      C:\WINDOWS\System32\NETUI0.dll
    0x71C90000 - 0x71CCC000      C:\WINDOWS\System32\NETUI1.dll
    0x71C80000 - 0x71C86000      C:\WINDOWS\System32\NETRAP.dll
    0x71BF0000 - 0x71C01000      C:\WINDOWS\System32\SAMLIB.dll
    0x75F70000 - 0x75F79000      C:\WINDOWS\System32\davclnt.dll
    0x73D70000 - 0x73D82000      C:\WINDOWS\System32\shgina.dll
    0x75970000 - 0x75A61000      C:\WINDOWS\System32\MSGINA.dll
    0x76360000 - 0x7636F000      C:\WINDOWS\System32\WINSTA.dll
    0x1F7B0000 - 0x1F7E1000      C:\WINDOWS\System32\ODBC32.dll
    0x763B0000 - 0x763F5000      C:\WINDOWS\system32\comdlg32.dll
    0x1F850000 - 0x1F866000      C:\WINDOWS\System32\odbcint.dll
    0x5A500000 - 0x5A58D000      C:\WINDOWS\System32\wiashext.dll
    0x70D00000 - 0x70EA0000      C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.0.0_x-ww_8d353f13\gdiplus.dll
    0x73BA0000 - 0x73BB2000      C:\WINDOWS\System32\sti.dll
    0x74AE0000 - 0x74AE7000      C:\WINDOWS\System32\CFGMGR32.dll
    0x71AD0000 - 0x71AD8000      C:\WINDOWS\System32\wsock32.dll
    0x71AB0000 - 0x71AC5000      C:\WINDOWS\System32\WS2_32.dll
    0x71AA0000 - 0x71AA8000      C:\WINDOWS\System32\WS2HELP.dll
    0x71A50000 - 0x71A8B000      C:\WINDOWS\system32\mswsock.dll
    0x71A90000 - 0x71A98000      C:\WINDOWS\System32\wshtcpip.dll
    0x76EE0000 - 0x76F17000      C:\WINDOWS\System32\RASAPI32.DLL
    0x76E90000 - 0x76EA1000      C:\WINDOWS\System32\rasman.dll
    0x76EB0000 - 0x76EDA000      C:\WINDOWS\System32\TAPI32.dll
    0x76E80000 - 0x76E8D000      C:\WINDOWS\System32\rtutils.dll
    0x76B40000 - 0x76B6C000      C:\WINDOWS\System32\WINMM.dll
    0x722B0000 - 0x722B5000      C:\WINDOWS\System32\sensapi.dll
    0x76F20000 - 0x76F45000      C:\WINDOWS\System32\DNSAPI.dll
    0x76FB0000 - 0x76FB7000      C:\WINDOWS\System32\winrnr.dll
    0x76F60000 - 0x76F8C000      C:\WINDOWS\system32\WLDAP32.dll
    0x76FC0000 - 0x76FC5000      C:\WINDOWS\System32\rasadhlp.dll
    0x6D370000 - 0x6D37D000      C:\Program Files\JavaSoft\JRE\1.3.1_02\bin\npjava131_02.dll
    0x6D130000 - 0x6D15A000      C:\Program Files\JavaSoft\JRE\1.3.1_02\bin\beans.ocx
    0x6D300000 - 0x6D316000      C:\Program Files\JavaSoft\JRE\1.3.1_02\bin\jpishare.dll
    0x6D420000 - 0x6D4F0000      C:\PROGRA~1\JavaSoft\JRE\132DB1~1.1_0\bin\hotspot\jvm.dll
    0x6D220000 - 0x6D227000      C:\PROGRA~1\JavaSoft\JRE\132DB1~1.1_0\bin\hpi.dll
    0x6D3B0000 - 0x6D3BD000      C:\PROGRA~1\JavaSoft\JRE\132DB1~1.1_0\bin\verify.dll
    0x6D250000 - 0x6D266000      C:\PROGRA~1\JavaSoft\JRE\132DB1~1.1_0\bin\java.dll
    0x6D3C0000 - 0x6D3CD000      C:\PROGRA~1\JavaSoft\JRE\132DB1~1.1_0\bin\zip.dll
    0x6D020000 - 0x6D129000      C:\Program Files\JavaSoft\JRE\1.3.1_02\bin\awt.dll
    0x73000000 - 0x73023000      C:\WINDOWS\System32\WINSPOOL.DRV
    0x76390000 - 0x763AA000      C:\WINDOWS\System32\IMM32.dll
    0x6D1E0000 - 0x6D21B000      C:\Program Files\JavaSoft\JRE\1.3.1_02\bin\fontmanager.dll
    0x5ED00000 - 0x5EDC6000      C:\WINDOWS\System32\OPENGL32.dll
    0x68B20000 - 0x68B3E000      C:\WINDOWS\System32\GLU32.dll
    0x73760000 - 0x737A5000      C:\WINDOWS\System32\DDRAW.dll
    0x73BC0000 - 0x73BC6000      C:\WINDOWS\System32\DCIMAN32.dll
    0x69500000 - 0x69816000      C:\WINDOWS\System32\nvoglnt.dll
    0x76C90000 - 0x76CB2000      C:\WINDOWS\system32\imagehlp.dll
    0x6D510000 - 0x6D58C000      C:\WINDOWS\system32\DBGHELP.dll
    0x76BF0000 - 0x76BFB000      C:\WINDOWS\System32\PSAPI.DLL
    Local Time = Wed Apr 03 18:51:17 2002
    Elapsed Time = 13
    # The exception above was detected in native code outside the VM
    # Java VM: Java HotSpot(TM) Client VM (1.3.1_02-b02 mixed mode)

    Chuck,
    I stumbled in here looking for help, I am a PC user,
    not a coder or developer (How sad. <g>). I checked for
    updates to the Nvidia driver (none), Windows XP (not
    at this time), and DirectX 8.1 (not at this time,
    these come on the XP updates page so far as I know.)
    Not too suprising...
    I have no idea of how to implement your suggestion on
    how to disable the JMV use of DirectX overal in my XP
    envornment. I guess that using Internet Explorer 6 to
    see web pages with Java on them are pretty much out of
    the question for now but I would be happy as a clam if
    I could get my LimeWire application going again.
    LimeWire is called via a desktop or Start menu
    shortcut in this fashion:
    Target Box: C:\WINDOWS\system32\javaw.exe -cp .
    RunLime
    Start In (directory): "C:\Program Files\LimeWire 1.7"
    So it appears that java is called via the javaw.exe
    file and passes a cp argument (whatever that is), then
    there is a period separator (dunno why) and then the
    "RunLime" statement that calls up the LimeWire
    program.to implement the suggestion, simply add -Dsun.java2d.noddraw=true between "javaw.exe" and "-cp" separating it from them by a space on each side. Your result should look something like this:
    c:\windows\system32\javaw.exe -Dsun.java2d.noddraw=true -cp . RunLime
    >
    I cannot see any need for fancy graphic acceleration
    or DirectX being called to play for this application
    since it is basicly a file manager that shares.
    Nothing fancy about it.It's not the application choosing to do this, but Java itself. Java GUI applications specifically those who use the Swing GUI classes (like LimeWire, if I recall) automatically leverage DirectX. This is really valuable for Swing applications since they emulate Windows (or Mac or Motif) GUI widgets rather than using them, making fast access to display buffers important to ensure best performance.
    >
    Do you have any idea of how to pass your
    "-Dsun.java2d.noddraw=true" statement to disable
    DirectX into the above call to start java and
    LimeWire?See above.
    >
    Hanging by the edge of my seat, waiting for more input
    on this. Thank you for your time and suggestions.
    Paul

  • How can I convert string to the record store with multiple records in it?

    Hi Everyone,
    How can I convert the string to the record store, with multiple records? I mean I have a string like as below:
    "SecA: [Y,Y,Y,N][good,good,bad,bad] SecB: [Y,Y,N][good,good,cant say] SecC: [Y,N][true,false]"
    now I want to create a record store with three records in it for each i.e. SecA, SecB, SecC. So that I can retrieve them easily using enumerateRecord.
    Please guide me and give me some links or suggestions to achieve the above thing.
    Best Regards

    Hi,
    I'd not use multiple records for this case. Managing more records needs more and redundant effort.
    Just use single record. Create ByteArrayOutputStream->DataOutputStream and put multiple strings via writeUTF() (plus any other data like number of records at the beginning...), then save the byte array to the record...
    It's easier, it's faster (runtime), it's better manageable...
    Rada

  • How to make Firefox to never update that slow custom look since FF 29?

    How to make Firefox to never update that slow custom look since FF 29? How to change windows installation and ubuntu installation so they never update after FF 28 witch was last normal speed normal browser?
    Hello. I can easy remove on Windows FF 29 or FF 30 and its slower on fast computer. But its affected by millions of users. With FF 28 it was allways fast.
    Why fast? I dont know but its SLOW Now any version after FF 28.
    Since FF 29 FF loads and hangs very very slow each time loading, starting, or changing tabs. It is making problem for everyone and now everyone calls with help- "why computer is slow.. oh its FF? Chrome? Chrome was slow but now its not the slowest one?"
    Very colorfull Example- one comp is 10" and its very very very very low specs. So it wont run at all.
    Now on small comp we can try linux and FF BUT no matter what OS just couldnt get back with any plugins back normal speed. Since FF 29 its very very very slow and that needs to have a solution. Today came update and still unneded custom menu button and its slowness hasnt been removed (unnoticed) so it needs a fix so it works for people who are not just for browsing internet buying new computer and cant get any faster speed then Chrome since now theres no FF anymore.
    SO- How to do that on Windows and Linux- installing FF 28 and making it never upgrade
    OR even better- Making a package that already has this update disbled setting ON?
    p.s. Should you first ask people how they like slow browsers before making fast one to a slow one?
    p.p.s. i dont get how menu could be added by thouse who need it as an add-on ass allways and not presuring everyone who never touches any button.
    p.p.p.s. your business was beeing neutral ngo making browser for people and not for making cloged systems so new computers could be sold by some company advice or infiltrated mole who will suggest such unneded feature as any other addons, but sticking it in for everyone.

    Hello,
    You can download version 28 from here:
    https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/
    Also, you'll have to disable auto updates to remain with version 28 by following the steps described in this support article:
    https://support.mozilla.org/en-US/kb/advanced-settings-browsing-network-updates-encryption#w_update-tab

  • Best practice for using static methods

    When i want to call a static method, should i call:
    1) classInstance.staticMethod()
    or should i call
    2) ClassName.staticMethod()??
    is the first style bad programming practice?

    dubwai: which compiler?I had assumed that this was what the JLS specifies, but intsead, it goes into length how to make the runtime environment treat calls to static methods on instances as if they were static calls on the variable's type.
    However, I imagine anyone creating a compiler would go ahead and compile calls to static methods on instances to static calls on the variable's type instead of going through the effort of making the runtime environment treat calls to static methods on instances as if they were static calls on the variable's type.
    But of course, it is concievable that somone didn't in their compiler. I doubt it but it is possible. Sun does compile calls to static methods on instances to static calls on the variable's type:
    public class Garbage
        public static void main(String[] args)
            Garbage g = null;
            method();
            g.method();
        public static void method()
            System.out.println("method");
    public class playground.Garbage extends java.lang.Object {
        public playground.Garbage();
        public static void main(java.lang.String[]);
        public static void method();
    Method playground.Garbage()
       0 aload_0
       1 invokespecial #1 <Method java.lang.Object()>
       4 return
    Method void main(java.lang.String[])
       0 aconst_null
       1 astore_1
       2 invokestatic #3 <Method void method()>
       5 invokestatic #3 <Method void method()>
       8 return
    Method void method()
       0 getstatic #4 <Field java.io.PrintStream out>
       3 ldc #5 <String "method">
       5 invokevirtual #6 <Method void println(java.lang.String)>
       8 return

  • Clear Command Line Console from Java

    Is there a way to clear the dos/shell console screen from a java program (the same way as cls would do in dos ir clear would do in unix) without making a Runtime.exec call??
    Thanks for your time
    wwe8

    What console window are you talking about?
    1- You might be starting a java application in a console window.
    2-Or it might be another console window.
    3-You might be starting a console window in java via Runtime.exec().
    For 1 and 2 you would need a JNI, platform specific solution. I believe the java testing tools do this, so if you got one of those it might provide an interface for this.
    If 3, then you would use the input stream to pass the command to the window.

  • RH for Word or for HTML-Which is better choice?

    Hi,
    My company has an HPJ project created using RH for Word X4.
    The hard drive crashed that had X4 on it and Adobe won't
    reserialize our X4, so we're forced into making fast decisions,
    first whether to stay with RH, and second whether we'd be best off
    to import our project into RH for Word vs HTMLHelp. I've done
    enough amateur website development to feel comfortable switching to
    HTMLHelp, but future inheritors of the documentation role may be
    more comfortable with Word as the editing environment. My question
    to you is whether there's strategic advantage to switching to
    HTMLHelp, perhaps due to decreased complexity or to increased
    future HAT tool purchasing options due to greater project
    portability, or ...? I'm starting a trial of RH7 today, so am
    trying to decide now into which authoring environment I should
    import our project.

    Interesting question.
    I am certainly one of those who would go the HTML route as
    the HTML code created there is much cleaner and less prone to
    issues than HTML created by Word. Also you can get at the HTML and
    do things in the help that are not possible when working with Word.
    However, you have hit the nail on the head when you mention future
    authors in your company. Increasingly I believe that being able to
    work with an HTML tool, which is not the same as needing to have a
    good understanding of HTML, will become a basic expectation of
    anyone seeking a technical authoring role, if it is not already.
    But there are many organisations where the job is part time and
    knowledge of Word is all that can be expected. Personally I would
    go the HTML route and force the issue. It should not take too much
    to get someone else to the point where they can follow on.
    When I first created help I used RH HTML I started by using
    Word as the editor. I hit some problems and was persuaded to use
    the HTML editor. I got help along the way and now I would not
    consider anything else. If I can do it, anyone can.
    If you are going to import from a project created using Word,
    do take a look at the topic on my site about importing from Word.

  • ViScanf invalid format string due to #sample size data1, data2,... response

    I'm writing a program which will utilize the internal memeory of the Agilent 34410A DMM for making fast measurements (10K/s).  In order to do this, I need to setup a test, have the data stored to the internal memory, then read and delete it, while other measurements are still happening.  The best command for the read/delete function is the R? command, but it returns the data in a strange format which breaks the ViScanf format string.  
    an example of the R? reading in below:
    R? 2
    #231+2.87536000E-04,+3.18131400E-03
    Is there a way to setup the ViScanf format string to handle this?
    Thanks
    Ryan

    Yes, I am using CVI
    If it was just returning one value I would use a simple viScanf function like this:
    viScanf (vi, "%f", fbuf);
    If you do a READ from in the instrument, it returns an array of floats so you need to adjust you viScan fuction parse the string into an array of floats like this (array of 500 for this example):
    viScanf(vi, "%,500f", fbuf);
    The problem is the data response to the R? command starts with the array size and is then followed by the data (#231+2.87536000E-04,+3.18131400E-03).  In the previous example, I need to delete the #, and parse the 231 into an array size variable and then fill an array (fbuf in this case) with the data.

  • Differences between J2EE 1.3 and J2EE 1.4

    Hello community,
    we want to know the main differences between these j2ee-versions for our project at the university. We should implement new advantages of 1.4 in our old program which was developed for j2ee 1.3.
    Possible topics could be e.g.: improofed security, faster runtime or decreasing complexity / difficulty in coding.
    Maybe you can help us.
    Greetings from Germany.
    PS: The project we started with j2ee 1.3 was a server/client programm
    using a webclient JSP + SessionBean + EntityBean + database

    Please follow this link to find out what is new in J2EE 1.4: http://java.sun.com/developer/technicalArticles/J2EE/new1_4/
    By the way, the next version Java EE 5 is out which adds a number of things to J2EE1.4. The main theme of Java EE 5 has been "ease of development". Please follow the link to find out what is new in Java EE 5.0: http://java.sun.com/javaee/overview/whatsnew.jsp
    Since you are using EJBs, for your convenience I have listed below that new changes to EJB 3.0:
    1. Session beans need not have home and component interfaces
    2. Session beans need not implement the implement the javax.ejb.EnterpriseBean interfaces.
    3. Simplification of APIs for access to a bean's environment: definition of a dependency injection facility and simpler look-up APIs.
    4. Introduction of Java metadata annotations to be used as an alternative to deployment descriptors. This means that there is no need for creating ejb-jar.xml and sun-ejb-jar.xml
    5. Simplification of object persistence by the definition of a light-weight object/relational mapping facility based on the direct use of Java classes rather than persistent components.

  • JATO 1.2.1 source code

    Dears.
    We are evaluating S1AF for production use. It looks good, but i miss some comprehensive documentation! "Release notes", "Overview", "Getting started" nor "Installation guide" is not enough.
    Is a full documentation available for download?
    It has been stated somewhere, that JATO 1.2.1 source code is available for download, but I haven't found it.
    Can someone help?
    Thanks
    Regards
    Jiri Kopsa

    S1AF patient customer,
    Thank you for your persistence. We take your comments seriously. We understand the gaps as you stated them and we are working the issue, especially the source code issue, internally here at Sun.
    We clearly understand the challenges in learning the framework, especially when there is just an API available to program to. In Jato 1.2.x we provided the JatoSample application which demonstrates dozens of presentation layer patterns. We have found this example which correlates the patterns and code to be very helpful for developer. Unfortunately, developers ability to browse the runtime source also aided in understanding the framework; but, as its been stated time already, the source was not offered when S1AF (Jato) 2.0.0 was released Oct 2002. When Jato 1.2.x was removed from the Sun download site so was the source zip. Our team is taking a firm stance on making the runtime source available again in an upcoming release.
    In Oct 2002, to meet the challenges of learning the framework and to vastly improve productivity and exposure of the component solution we release S1AF (Jato) 2.0.0 Module for Studio 4.1. Although our team has faced some challenges (to put it mildly) in releasing a service pack to S1AF 2.0.0 and we were not able to provide a Module update for Studio 5 we are working around the clock on a major update with support for Studio 5. This update will include
    Enhanced Tutorial
    Enhanced JatoSample built with the S1AF module
    Developers Guide
    IDE Guide
    Component Authors Guide
    Rich IDE integration
    ContainerView JSP Fragments (Pagelet support)
    Command component integration
    JSP template support
    Many bug fixes to framework runtime
    New View, Command and many Model Components
    I hope this message encourages you, and we appreciate your patience.

Maybe you are looking for