AD104 - LotusScript Tips and Tricks. Wai-ki Yip, Development Manager/Senior Developer Raphael Savir, Senior IT Specialist

Size: px
Start display at page:

Download "AD104 - LotusScript Tips and Tricks. Wai-ki Yip, Development Manager/Senior Developer Raphael Savir, Senior IT Specialist"

Transcription

1 AD104 - LotusScript Tips and Tricks Wai-ki Yip, Development Manager/Senior Developer Raphael Savir, Senior IT Specialist

2

3 Agenda for the Session Purpose - Focus on Performance Tips Architectural Overview of LotusScript Tips/Techniques Control the life time of Notes objects Others Say a few words on the usage of profile documents Conclusion

4 Focus on Performance In the past, we have focused this session mostly on new/cool features Would like to focus this particular session on developing high performance LotusScript Raphael is a Senior IT specialist has been called to many customer sites to diagnose problems found many cases of poorly performing code

5 Purpose of this session To help developers to Diagnose problems Pinpoint some of the potential problem areas Share some experience in the proper usage of LotusScript

6 Real Life Samples We have been looking at many LotusScript samples they work, in general but they take a long time to run take a lot of system resources the worst code have taken down the entire system Point out the issues for LotusScript developers to look out for

7 An Example - Deleting all docs in a view Do While Not(doc is Nothing) count = count+1 set doc = vw.getnextdocument(doc) Redim Preserve arr(ubound(arr)+1 Set arr(ubound(arr)) = doc if count = then goto StopScript Loop 'then loop again to remove all docs in the array

8 Example Expand array one element at a time Not scalable - have problems when you have a large number of documents Create server problem - use up all server resources A better way to accomplish this is by doing NotesViewEntryCollection vec = vw.allentries vec.removeall TRUE Take almost no time to execute

9 Approach Provide an overview of the LotusScript architecture Explain how it functions in Notes Point out a few important areas Binding and reference to Notes objects Interface to the data in Notes objects

10 LotusScript Architecture Overview LotusScript is BASIC (very close to VB/VBA) an embedded full function scripting language full function programming language embedded in a host environment scripting

11 LotusScript as a full function programming language BASIC (VB/VBA compatible) Provides language syntax for data types and its manipulation data manipulation (addition, subtraction,...) string manipulation (concat, left, right, mid,...) control flow (for, if then ) functional abstraction (sub, function) data abstractions (type, classes)

12 LotusScript as a full function programming language It is rich enough to Allow you to freely express the logic of your application But it also gives you all the ropes to hang yourself

13 Simple LotusScript program Dim session as New NotesSession Dim db as NotesDatabase Dim doccollection as NotesDocumentCollection Set db = session.currentdatabase Set collection = db.unprocesseddocuments Forall doc in doccollection 'process the notes document 'your application logic... End Forall

14 LotusScript as a scripting language Efficient mechanism to "glue" data and functionalities from many different places together Access external objects Product objects (e.g., front end/backend classes) Access other external objects COM, Java Access external functions Win32 API Extension mechanism

15 LotusScript as Glue Notes/Domino Database LootusScript as Glue MS Office Internet

16 LotusScript as an embedding component Designed to run within some other applications Memory usage model need to fit in Efficient interface to host Execution within the Notes run time environment Front end (a.k.a., client application) Server (a.k.a., server application)

17 Embedding LotusScript in Notes Notes Environment Session Object LotusScript Virtual Machine stack frame Document Collection database object Document Object Document Object Document Object symbol table Heap

18 How does it work? Session and Current Database objects are created when the agent starts Others are created as needed by the application new forall refvar The product objects are usually large and take time to create LotusScript holds only reference to object As long as a reference is held, it will stay in memory

19 What it boils down to: The application developer needs to understand how to use the language constructs to control the objects how to use the appropriate objects for the appropriate operations Otherwise, your application may tie up a lot of resources unnecessarily take a long time to run cause your application, and other applications on same server to slow down to an unacceptable level (classic situation when you need Raphael on site)

20 LifeTime of the Notes Object General Rules Notes objects are quite large create only when you need them delete if you don't need them anymore save if you think you are going to reuse them Only exception is the NotesSession Object Current Database Object Current Object in the argument of the event raised these are all created when the agent starts to run

21 Object creation Creation - LotusScript new dim session as new NotesSession assign an object set doc = anotherdoc forall reference forall doc in doccollection LotusScript instructs Notes to create the object holds a reference to it, set reference count appropriately

22 Object Deletion Deletion - LotusScript delete delete doc assign something into it set doc = someotherdoc next iteration in forall forall doc in doccollection reference variable is out of scope Rule - if the reference count is 0, it instructs Notes to delete the object

23 Tip#1: Don't create object unless you need it dim count as integer count = 0 dim x(10000) as NotesDocument forall doc in doccollection set x(count) = doc count = count + 1 end forall Depends on the number of documents in the collection

24 Tip #1 This piece of script is not scalable and could bring the system to its knees Since the object reference is stored in the array x, all NotesDocument objects are created and remained in memory Ask yourself - how many objects are there at any time? If you have more than 100, you need to examine your application's logic

25 Tip# 2: Use forall to enumerate collection forall doc in doccollection 'process your document end forall Keep one document object active at one time The previous object is deleted as soon as it executes the forall statement at the top

26 Releasing objects Notes object has a reference count When the reference count goes to 0, the object will be deleted. The resources are free. LotusScript does not do garbage collection like Java. There is no delay. We have experimented with delayed notification Every 10 statements At the end of each SUB Does not work out

27 Tip #3: Pass the object reference in If you will call subs/functions frequently that need to lookup similar information, pass in the object reference this example has many subs (one shown) which all get a handle to a Keywords view this is inefficient Sub Sub1 ( ts as String ) Dim dbpath as String Dim s as New NotesSession Set db = s.currentdatabase Set view = db.getview ( "(Keywords)" ) Set doc = view.getdocumentbykey ( ts ) dbpath = doc.dbpath ( 0 ) ' do some work End Sub

28 Tip #3: Pass the object reference in (cont.) Instead, pass the view reference to each sub Sub Initialize Dim s as New NotesSession Set db = s.currentdatabase Set view = db.getview ( "(Keywords)" ) Call Sub1 ( view ) Call Sub2 ( view ) etc.

29 Tip #3: Pass the object reference in (cont.) Other variation Save an object reference in the GLOBAL section Accessible by all SUBs Advantage Don't delete and recreate the same object again and again

30 Tip #4: Use objects that are readily available to you Because it is expensive to create objects, some of commonly used objects are readily available to you NotesViewEntryCollection vec = vw.allentries NotesDocumentCollection ndc = db.alldocuments NotesDocumentCollection ndc = db.unprocesseddocuments NotesViewColumnArray nvw = vw.columns Also remember that there is a CurrentObject passing to you as part of an event

31 Tip #4: Use objects that are readily available to you (cont'd) Operations are designed to efficiently operate on all documents in the collection For example, NotesViewEntryCollection vec = vw.allentries vec.removeall TRUE No document object needs to be created

32 Tip #5: How to retrieve document data without opening the document Expensive to have a document object. Summary data Buffer holding just the minimum document data to show in a view Loaded when a view is opened When you create the view object, Column values are loaded already Use NotesViewEntry.ColumnValues To get the values directly

33 Tip #6: Temp variables In LotusScript, it is highly preferable to use temporary variables that are held in memory to hold values, instead of directly referencing databases or documents See code on the left (better) and right (worse) below for examples VarViews = db.views Forall v in VarViews print v.name End Forall Dim i as integer Do While i <= ubound ( db.views ) Print db.views(i).name i = i + 1 Loop

34 Tip #6 LotusScript needs to resolve the field name of the object. The process involves string comparison and is relatively slow. If it is saved the data in a variable, it is far more efficient

35 Tip #7: Multi-value fields vs. Single value fields It is inefficient to have many hidden programmatic fields stored on a document for example, if you need to store 100 bits of information, 1's and 0's, do not make 100 fields each containing a single 1 or 1 instead, make a single multi-value field that contains 100 numbers, 1's and 0's you can read this single field into memory and then read/write the various values you need the document will not need to retain the excess 99 fields

36 Tip #7 Each field access takes time 100 different fields will take 100 times longer to access the value. Even if the fields are not used, it will take longer for the document to load

37 Tip #8: How to efficient retrieve data in a view Always best to access data that is already displayed in a view ; columnnumber) doc.columnvalues ( ColumnNumber ) As long as the view is reasonably well constructed, indexing times will be on the order of 100ms every 15 minutes, much less concern than extra LS execution time, especially if your code is in form events

38 Lookups (cont.) If you have a lot of data to lookup (e.g., 10 fields of information), you can optimize your view and lookups View has two columns Column 1 is the sort key, as small as possible Column 2: Field1 + "~" + Field2 + "~" + Field3... "^") if multi-value fields Optionally, Column 2 could reference a field which has already performed this calculation Code lookups then perform only one lookup x = doc.columnvalues ( 1 ) - subscript starts at zero Then use x ( i ) to get the various field values

39 Lookups (cont.) Regardless of how you lookup your data, try to do it only one time If multiple keyword fields, for example, then have them reference a field on the form that performs the lookup just once Or use a profile document to perform the calculation and then read from that into your keyword fields to minimize the frequency or LS equivalent code

40 Tip #9: Comparing ways to get a document collection Full Text Search View - GetAlldocumentByKey View - GetdocumentByKey Database Search

41 db.ftsearch db.ftsearch requires that a full text index be present, and up to date syntax can be a bit trickier to use limit of 5000 results in ND6, ND6.5

42 view.getalldocumentsbykey view.getalldocumentsbykey and db.ftsearch are consistently the fastest methods for acquiring a small collection of documents view.getalldocumentsbykey requires a view views generally index very quickly make the view hidden and streamlined consider a sorted one-column view that has "1" as the formula in that column dc = view.getalldocumentsbykey ( "1" ) will then return the view if you only need to update a simple value, or remove all, then you can use nvc = view.allentries

43 view.getdocumentbykey view.getdocumentbykey is fast use view.autoupdate = False makes method faster allows set doc = view.getnextdocument ( doc ) even if you have just removed the previous doc from the view

44 db.search db.search is not a fast way to get a small collection generally, the larger the database, in terms of documents and size, the longer it takes db.search to return even one document db.search becomes competitive as the collection size increases previous tests indicate approximately 5-10% of the documents in a database but... you don't need a full text index, and you don't need a view in order to use this method, so very handy especially with ad hoc queries and queries against other database over which you have little control

45 Tip # 10 - Error Processing On Error GoTo ErrHandler... average = total / count ErrHandler 'The intention is to write the error handler later Resume when count is 0, it is an infinite loop

46 Tip #11 - Unrestricted Goto Basic was designed in the 60s before the concept of structured programming Goto statement is included for compatibility reason Avoid using it if possible You may get into problems even in seemingly benign situations

47 Tip #11 On Error GoTo ErrHandler... an error occurs Handled: Errhandler... Goto Handled Errhandler is actually a block with a new stack frame You get stack overflow after encountering a number of errors

48 Tip #12: Avoid Conversion Data Type conversions are expensive Avoid using variants and declare all your variables explicitly For I = 1 to Next I I is a variant unless you dim it takes longer to execute - about 10x

49 Tip #12 explicit typing will help dim I as integer For I = 1 to Next I

50 Tip #13 - String handling differences between LotusScript and Notes LotusScript internally represents all strings as UNICODE (UTF16) Notes/Domino represents all string as LMBCS So, whenever there is a data string going through the interface, we have to call a translation routine to convert between LMBCS and UNICODE It is quite expensive

51 Tip #13 - String Processing You want to pull the string out into LotusScript and complete processing before you put it back into Notes Don't do x.result = x.result + "my new text" x.result = mid$(x.result, 2, 4) Instead dim result as string result = x.result do all your string manipulation in LotusScript x.result = result

52 Tip #14 - Remote Debugger Setting A Domino 6 feature Allow you to remotely debug your LotusScript agent on the server Turn it off on the server if you don't need it It has a time out setting waiting for the client debugger to attach e.g., 20 seconds agents running on the server will be stopped at the beginning for 20 seconds every STOP statement will wait for 20 seconds

53 Tip #15: A few words on Profile Documents set by one author... settings...

54 Tip #15 Intention for profile doc Set by one Use by many Performance comes from Per thread cache Multiple updates Efficient but it will take time to propage the change from one cache to the other cache

55 Help is on the way Problem detection Time out for particular agent Memory errors in the agent log Crash your system Domino 7 - agent health monitor Track runaway/expensive agents Track down which calls are expensive

56 Other LotusSphere Sessions AD105 - Who is Misbehaving? Monitoring Lotus Domino Server Agents Julie Kadashevich, J. Cooper Mon 1:30 Swan 1/4 AD106 - Lotus Domino Objects: Overview and Update J. Cooper Tues 10:30 Swan 5/6 BOF - LotusScript Y & B Hampton Wed 7 am

LotusScript Optimization:

LotusScript Optimization: LotusScript Optimization: Improving Application Reliability, Speed and the End User Experience By Teamstudio, Inc. Teamstudio, Inc. 900 Cummings Center Suite 326T Beverly MA, 01915 Phone: 800.632.9787

More information

Improving Notes/Domino Database performance. November 12, 2014 Paul Albright

Improving Notes/Domino Database performance. November 12, 2014 Paul Albright Improving Notes/Domino Database performance November 12, 2014 Paul Albright Paul_albright@us.ibm.com Agenda Views Forms Agents or Code Form properties XPages Resource Links Q & A 2 Views Some things that

More information

Domino Performance Tuning. Stephan H. Wissel Lotus Technology & Productivity Advisor

Domino Performance Tuning. Stephan H. Wissel Lotus Technology & Productivity Advisor Domino Performance Tuning Stephan H. Wissel Lotus Technology & Productivity Advisor notessensei@sg.ibm.com http://www.wissel.net/ Technote #2346 Just add this to the notes.ini: RunFaster = 1 The parameter

More information

This chapter will focus on Reference Library applications. These applications are used to

This chapter will focus on Reference Library applications. These applications are used to Elliott_10.qxd 9/14/06 2:32 PM Page 273 Chapter 10 Reference Library Applications Chapter Overview This chapter will focus on Reference Library applications. These applications are used to store information

More information

Lotus Exam Using LotusScript in IBM Lotus Domino 7 Applications Version: 5.0 [ Total Questions: 90 ]

Lotus Exam Using LotusScript in IBM Lotus Domino 7 Applications Version: 5.0 [ Total Questions: 90 ] s@lm@n Lotus Exam 190-737 Using LotusScript in IBM Lotus Domino 7 Applications Version: 5.0 [ Total Questions: 90 ] Topic 0, A A Question No : 1 - (Topic 0) Which of the following is a characteristic of

More information

DATABASE AUTOMATION USING VBA (ADVANCED MICROSOFT ACCESS, X405.6)

DATABASE AUTOMATION USING VBA (ADVANCED MICROSOFT ACCESS, X405.6) Technology & Information Management Instructor: Michael Kremer, Ph.D. Database Program: Microsoft Access Series DATABASE AUTOMATION USING VBA (ADVANCED MICROSOFT ACCESS, X405.6) AGENDA 3. Executing VBA

More information

Lotus Notes Application design & programming. By Ajith Thulaseedharan Lotus Notes developer

Lotus Notes Application design & programming. By Ajith Thulaseedharan Lotus Notes developer Lotus Notes Application design & programming By Ajith Thulaseedharan Lotus Notes developer A Notes application Is a.nsf(notes Storage Facility) database Is a structured flat file Contains notes data &

More information

d2vbaref.doc Page 1 of 22 05/11/02 14:21

d2vbaref.doc Page 1 of 22 05/11/02 14:21 Database Design 2 1. VBA or Macros?... 2 1.1 Advantages of VBA:... 2 1.2 When to use macros... 3 1.3 From here...... 3 2. A simple event procedure... 4 2.1 The code explained... 4 2.2 How does the error

More information

Tutorial. Building Composite Applications for IBM Lotus Notes 8. For use with the IBM Lotus Notes 8 Beta 2 client

Tutorial. Building Composite Applications for IBM Lotus Notes 8. For use with the IBM Lotus Notes 8 Beta 2 client Tutorial Building Composite Applications for IBM Lotus Notes 8 For use with the IBM Lotus Notes 8 Beta 2 client Building composite applications is a process that involves multiple procedures. This tutorial

More information

Hands-On Lotus Domain Monitoring. AdminCamp June 2012, in Gelsenkirchen Daniel Nashed, Nash!Com

Hands-On Lotus Domain Monitoring. AdminCamp June 2012, in Gelsenkirchen Daniel Nashed, Nash!Com Hands-On Lotus Domain Monitoring AdminCamp June 2012, in Gelsenkirchen Daniel Nashed, Nash!Com About the presenter Daniel Nashed Nash!Com - IBM/Lotus Advanced Business Partner/ISV Member of The Penumbra

More information

Programming in Visual Basic with Microsoft Visual Studio 2010

Programming in Visual Basic with Microsoft Visual Studio 2010 Programming in Visual Basic with Microsoft Visual Studio 2010 Course 10550; 5 Days, Instructor-led Course Description This course teaches you Visual Basic language syntax, program structure, and implementation

More information

PROGRAMMING IN VISUAL BASIC WITH MICROSOFT VISUAL STUDIO Course: 10550A; Duration: 5 Days; Instructor-led

PROGRAMMING IN VISUAL BASIC WITH MICROSOFT VISUAL STUDIO Course: 10550A; Duration: 5 Days; Instructor-led CENTER OF KNOWLEDGE, PATH TO SUCCESS Website: PROGRAMMING IN VISUAL BASIC WITH MICROSOFT VISUAL STUDIO 2010 Course: 10550A; Duration: 5 Days; Instructor-led WHAT YOU WILL LEARN This course teaches you

More information

Programming Languages

Programming Languages Programming Languages Tevfik Koşar Lecture - VIII February 9 th, 2006 1 Roadmap Allocation techniques Static Allocation Stack-based Allocation Heap-based Allocation Scope Rules Static Scopes Dynamic Scopes

More information

Heap Management. Heap Allocation

Heap Management. Heap Allocation Heap Management Heap Allocation A very flexible storage allocation mechanism is heap allocation. Any number of data objects can be allocated and freed in a memory pool, called a heap. Heap allocation is

More information

SmartMail for Lotus Notes Lotus Notes Server Setup User Guide

SmartMail for Lotus Notes Lotus Notes Server Setup User Guide SmartMail for Lotus Notes Lotus Notes Server Setup User Guide Copyright 2006, E-Z Data, Inc., All Rights Reserved No part of this documentation may be copied, reproduced, or translated in any form without

More information

Index. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309

Index. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309 A Arithmetic operation floating-point arithmetic, 11 12 integer numbers, 9 11 Arrays, 97 copying, 59 60 creation, 48 elements, 48 empty arrays and vectors, 57 58 executable program, 49 expressions, 48

More information

Using Code Templates in DDE by Julian Robichaux, panagenda originally published on socialbizug.org, July 2013

Using Code Templates in DDE by Julian Robichaux, panagenda originally published on socialbizug.org, July 2013 Using Code Templates in DDE by Julian Robichaux, panagenda originally published on socialbizug.org, July 2013 One of the freebies that came with integrating Domino Designer with the Eclipse platform (DDE)

More information

Deallocation Mechanisms. User-controlled Deallocation. Automatic Garbage Collection

Deallocation Mechanisms. User-controlled Deallocation. Automatic Garbage Collection Deallocation Mechanisms User-controlled Deallocation Allocating heap space is fairly easy. But how do we deallocate heap memory no longer in use? Sometimes we may never need to deallocate! If heaps objects

More information

Advanced Programming With Notes/Domino COM Classes

Advanced Programming With Notes/Domino COM Classes Advanced Programming With Notes/Domino COM Classes Bob Balaban Looseleaf Software LLC bbalaban@gmail.com November 9, 2009 2009 by the individual speaker Agenda Speaker intro COM and OLE Notes front-end

More information

Advanced Programming & C++ Language

Advanced Programming & C++ Language Advanced Programming & C++ Language ~6~ Introduction to Memory Management Ariel University 2018 Dr. Miri (Kopel) Ben-Nissan Stack & Heap 2 The memory a program uses is typically divided into four different

More information

Programming Languages Third Edition. Chapter 10 Control II Procedures and Environments

Programming Languages Third Edition. Chapter 10 Control II Procedures and Environments Programming Languages Third Edition Chapter 10 Control II Procedures and Environments Objectives Understand the nature of procedure definition and activation Understand procedure semantics Learn parameter-passing

More information

Control Abstraction. Hwansoo Han

Control Abstraction. Hwansoo Han Control Abstraction Hwansoo Han Review of Static Allocation Static allocation strategies Code Global variables Own variables (live within an encapsulation - static in C) Explicit constants (including strings,

More information

Microsoft Visual C# Step by Step. John Sharp

Microsoft Visual C# Step by Step. John Sharp Microsoft Visual C# 2013 Step by Step John Sharp Introduction xix PART I INTRODUCING MICROSOFT VISUAL C# AND MICROSOFT VISUAL STUDIO 2013 Chapter 1 Welcome to C# 3 Beginning programming with the Visual

More information

CS 360 Programming Languages Interpreters

CS 360 Programming Languages Interpreters CS 360 Programming Languages Interpreters Implementing PLs Most of the course is learning fundamental concepts for using and understanding PLs. Syntax vs. semantics vs. idioms. Powerful constructs like

More information

CS 3 Introduction to Software Engineering. 3: Exceptions

CS 3 Introduction to Software Engineering. 3: Exceptions CS 3 Introduction to Software Engineering 3: Exceptions Questions? 2 Objectives Last Time: Procedural Abstraction This Time: Procedural Abstraction II Focus on Exceptions. Starting Next Time: Data Abstraction

More information

Lotus Exam LotusScript in Notes for Advanced Developers Version: 5.0 [ Total Questions: 84 ]

Lotus Exam LotusScript in Notes for Advanced Developers Version: 5.0 [ Total Questions: 84 ] s@lm@n Lotus Exam 190-273 LotusScript in Notes for Advanced Developers Version: 5.0 [ Total Questions: 84 ] Topic 0, A A Question No : 1 - (Topic 0) Marilyn is writing code which prompts users to specify

More information

Acknowledgments Introduction. Part I: Programming Access Applications 1. Chapter 1: Overview of Programming for Access 3

Acknowledgments Introduction. Part I: Programming Access Applications 1. Chapter 1: Overview of Programming for Access 3 74029ftoc.qxd:WroxPro 9/27/07 1:40 PM Page xiii Acknowledgments Introduction x xxv Part I: Programming Access Applications 1 Chapter 1: Overview of Programming for Access 3 Writing Code for Access 3 The

More information

XFL Extended Formula Language

XFL Extended Formula Language XFL Extended Formula Language 2005-2009 Written by Bert Haessler www.nappz.de/xfl mailto:xfl@nappz.de Documentation XFL Version 2.85 15 th of February 2009 1 Preliminary remark The formula language of

More information

Ext3/4 file systems. Don Porter CSE 506

Ext3/4 file systems. Don Porter CSE 506 Ext3/4 file systems Don Porter CSE 506 Logical Diagram Binary Formats Memory Allocators System Calls Threads User Today s Lecture Kernel RCU File System Networking Sync Memory Management Device Drivers

More information

Iteration. # a and b are now equal # a and b are no longer equal Multiple assignment

Iteration. # a and b are now equal # a and b are no longer equal Multiple assignment Iteration 6.1. Multiple assignment As you may have discovered, it is legal to make more than one assignment to the same variable. A new assignment makes an existing variable refer to a new value (and stop

More information

Binding and Storage. COMP 524: Programming Language Concepts Björn B. Brandenburg. The University of North Carolina at Chapel Hill

Binding and Storage. COMP 524: Programming Language Concepts Björn B. Brandenburg. The University of North Carolina at Chapel Hill Binding and Storage Björn B. Brandenburg The University of North Carolina at Chapel Hill Based in part on slides and notes by S. Olivier, A. Block, N. Fisher, F. Hernandez-Campos, and D. Stotts. What s

More information

Object-Oriented Programming in LotusScript Bill Buchan HADSL

Object-Oriented Programming in LotusScript Bill Buchan HADSL Object-Oriented Programming in LotusScript Bill Buchan HADSL 2006 Wellesley Information Services. All rights reserved. What We'll Cover Introduction Why use Object-Oriented (OO) methodologies? OO Basics

More information

Package redux. May 31, 2018

Package redux. May 31, 2018 Title R Bindings to 'hiredis' Version 1.1.0 Package redux May 31, 2018 A 'hiredis' wrapper that includes support for transactions, pipelining, blocking subscription, serialisation of all keys and values,

More information

Overview of the Ruby Language. By Ron Haley

Overview of the Ruby Language. By Ron Haley Overview of the Ruby Language By Ron Haley Outline Ruby About Ruby Installation Basics Ruby Conventions Arrays and Hashes Symbols Control Structures Regular Expressions Class vs. Module Blocks, Procs,

More information

Java Overview An introduction to the Java Programming Language

Java Overview An introduction to the Java Programming Language Java Overview An introduction to the Java Programming Language Produced by: Eamonn de Leastar (edeleastar@wit.ie) Dr. Siobhan Drohan (sdrohan@wit.ie) Department of Computing and Mathematics http://www.wit.ie/

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

Libgdb. Version 0.3 Oct Thomas Lord

Libgdb. Version 0.3 Oct Thomas Lord Libgdb Version 0.3 Oct 1993 Thomas Lord Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

More information

ò Very reliable, best-of-breed traditional file system design ò Much like the JOS file system you are building now

ò Very reliable, best-of-breed traditional file system design ò Much like the JOS file system you are building now Ext2 review Very reliable, best-of-breed traditional file system design Ext3/4 file systems Don Porter CSE 506 Much like the JOS file system you are building now Fixed location super blocks A few direct

More information

Enterprise Management of Windows NT Services

Enterprise Management of Windows NT Services Enterprise Management of Windows NT Services J. Nick Otto notto@parikh.net Parikh Advanced Systems Abstract A problem faced by NT administrators is the management of NT based services in the enterprise.

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

Fundamentals of Programming Session 13

Fundamentals of Programming Session 13 Fundamentals of Programming Session 13 Instructor: Reza Entezari-Maleki Email: entezari@ce.sharif.edu 1 Fall 2014 These slides have been created using Deitel s slides Sharif University of Technology Outlines

More information

Lotus IBM Lotus Notes Domino 8 Application Development Update. Download Full Version :

Lotus IBM Lotus Notes Domino 8 Application Development Update. Download Full Version : Lotus 190-801 IBM Lotus Notes Domino 8 Application Development Update Download Full Version : http://killexams.com/pass4sure/exam-detail/190-801 QUESTION: 101 A richtext field on the main form of Paki's

More information

Control Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003

Control Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003 Control Flow COMS W1007 Introduction to Computer Science Christopher Conway 3 June 2003 Overflow from Last Time: Why Types? Assembly code is typeless. You can take any 32 bits in memory, say this is an

More information

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful? Chapter 1 :: Introduction Introduction Programming Language Pragmatics Michael L. Scott Why are there so many programming languages? evolution -- we've learned better ways of doing things over time socio-economic

More information

Software Code Performance Review Saple

Software Code Performance Review Saple Software Code Performance Review Saple Table of Contents Executive Summary 2 Scope of Review 2 Recommendations for Short Term Fixes 2 Page/Scripting Issues 2 Missing Response Buffering 2 Not Using Option

More information

Separate compilation. Topic 6: Runtime Environments p.1/21. CS 526 Topic 6: Runtime Environments The linkage convention

Separate compilation. Topic 6: Runtime Environments p.1/21. CS 526 Topic 6: Runtime Environments The linkage convention Runtime Environment The Procedure Abstraction and Separate Compilation Topics we will cover The procedure abstraction and linkage conventions Runtime storage convention Non-local data access (brief) These

More information

Python Implementation Strategies. Jeremy Hylton Python / Google

Python Implementation Strategies. Jeremy Hylton Python / Google Python Implementation Strategies Jeremy Hylton Python / Google Python language basics High-level language Untyped but safe First-class functions, classes, objects, &c. Garbage collected Simple module system

More information

ADVANTAGES. Via PL/SQL, all sorts of calculations can be done quickly and efficiently without use of Oracle engine.

ADVANTAGES. Via PL/SQL, all sorts of calculations can be done quickly and efficiently without use of Oracle engine. 1 PL/SQL INTRODUCTION SQL does not have procedural capabilities. SQL does not provide the programming techniques of condition checking, looping and branching that is required for data before permanent

More information

CSE 374 Programming Concepts & Tools. Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins)

CSE 374 Programming Concepts & Tools. Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins) CSE 374 Programming Concepts & Tools Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins) Hacker tool of the week (tags) Problem: I want to find the definition of a function or

More information

5th State of the Onion. Larry Wall

5th State of the Onion. Larry Wall 5th State of the Onion Larry Wall Talk 1 An Overview of Perl Perl 5 Perl 6 Talk 2 Bits and Pieces 33 lightning talks in half an hour See Apocalypse 2 Expected apocalyptic error rate: 5% Talk 3 Unary and

More information

PL/SQL Block structure

PL/SQL Block structure PL/SQL Introduction Disadvantage of SQL: 1. SQL does t have any procedural capabilities. SQL does t provide the programming technique of conditional checking, looping and branching that is vital for data

More information

Semantic actions for declarations and expressions

Semantic actions for declarations and expressions Semantic actions for declarations and expressions Semantic actions Semantic actions are routines called as productions (or parts of productions) are recognized Actions work together to build up intermediate

More information

Chapter 3:: Names, Scopes, and Bindings (cont.)

Chapter 3:: Names, Scopes, and Bindings (cont.) Chapter 3:: Names, Scopes, and Bindings (cont.) Programming Language Pragmatics Michael L. Scott Review What is a regular expression? What is a context-free grammar? What is BNF? What is a derivation?

More information

JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1)

JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1) Technology & Information Management Instructor: Michael Kremer, Ph.D. Class 1 Professional Program: Data Administration and Management JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1) WHO

More information

Consolidation and Review

Consolidation and Review Consolidation and Review Professor Hugh C. Lauer CS-1004 Introduction to Programming for Non-Majors (Slides include materials from Python Programming: An Introduction to Computer Science, 2 nd edition,

More information

Chapter 3:: Names, Scopes, and Bindings (cont.)

Chapter 3:: Names, Scopes, and Bindings (cont.) Chapter 3:: Names, Scopes, and Bindings (cont.) Programming Language Pragmatics Michael L. Scott Review What is a regular expression? What is a context-free grammar? What is BNF? What is a derivation?

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 2 Thomas Wies New York University Review Last week Programming Languages Overview Syntax and Semantics Grammars and Regular Expressions High-level

More information

Software troubleshooting

Software troubleshooting N E W S L E T T E R IT Computer Technical Support Newsletter Software troubleshooting November 9, 2015 Vol.2, No.4 TABLE OF CONTENTS Software troubleshooting...1 Unexplained software crashes and error

More information

The name of this type library is LabelManager2 with the TK Labeling Interface reference.

The name of this type library is LabelManager2 with the TK Labeling Interface reference. Page 1 of 10 What is an ActiveX object? ActiveX objects support the COM (Component Object Model) - Microsoft technology. An ActiveX component is an application or library that is able to create one or

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

Performance Best Practices Paper for IBM Tivoli Directory Integrator v6.1 and v6.1.1

Performance Best Practices Paper for IBM Tivoli Directory Integrator v6.1 and v6.1.1 Performance Best Practices Paper for IBM Tivoli Directory Integrator v6.1 and v6.1.1 version 1.0 July, 2007 Table of Contents 1. Introduction...3 2. Best practices...3 2.1 Preparing the solution environment...3

More information

Microsoft. Microsoft Visual C# Step by Step. John Sharp

Microsoft. Microsoft Visual C# Step by Step. John Sharp Microsoft Microsoft Visual C#- 2010 Step by Step John Sharp Table of Contents Acknowledgments Introduction xvii xix Part I Introducing Microsoft Visual C# and Microsoft Visual Studio 2010 1 Welcome to

More information

Object Oriented Programming

Object Oriented Programming Object Oriented Programming Java lecture (10.1) Exception Handling 1 Outline Exception Handling Mechanisms Exception handling fundamentals Exception Types Uncaught exceptions Try and catch Multiple catch

More information

CSC 533: Organization of Programming Languages. Spring 2005

CSC 533: Organization of Programming Languages. Spring 2005 CSC 533: Organization of Programming Languages Spring 2005 Language features and issues variables & bindings data types primitive complex/structured expressions & assignments control structures subprograms

More information

Chapter 3:: Names, Scopes, and Bindings

Chapter 3:: Names, Scopes, and Bindings Chapter 3:: Names, Scopes, and Bindings Programming Language Pragmatics Michael L. Scott Some more things about NFAs/DFAs We said that a regular expression can be: A character (base case) A concatenation

More information

Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types. Record Types. Pointer and Reference Types

Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types. Record Types. Pointer and Reference Types Chapter 6 Topics WEEK E FOUR Data Types Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer and Reference

More information

6.170 Laboratory in Software Engineering Java Style Guide. Overview. Descriptive names. Consistent indentation and spacing. Page 1 of 5.

6.170 Laboratory in Software Engineering Java Style Guide. Overview. Descriptive names. Consistent indentation and spacing. Page 1 of 5. Page 1 of 5 6.170 Laboratory in Software Engineering Java Style Guide Contents: Overview Descriptive names Consistent indentation and spacing Informative comments Commenting code TODO comments 6.170 Javadocs

More information

Symbol Tables Symbol Table: In computer science, a symbol table is a data structure used by a language translator such as a compiler or interpreter, where each identifier in a program's source code is

More information

Variable A variable is a value that can change during the execution of a program.

Variable A variable is a value that can change during the execution of a program. Declare and use variables and constants Variable A variable is a value that can change during the execution of a program. Constant A constant is a value that is set when the program initializes and does

More information

Remote Procedure Call (RPC) and Transparency

Remote Procedure Call (RPC) and Transparency Remote Procedure Call (RPC) and Transparency Brad Karp UCL Computer Science CS GZ03 / M030 10 th October 2014 Transparency in Distributed Systems Programmers accustomed to writing code for a single box

More information

Memory Allocation. Static Allocation. Dynamic Allocation. Dynamic Storage Allocation. CS 414: Operating Systems Spring 2008

Memory Allocation. Static Allocation. Dynamic Allocation. Dynamic Storage Allocation. CS 414: Operating Systems Spring 2008 Dynamic Storage Allocation CS 44: Operating Systems Spring 2 Memory Allocation Static Allocation (fixed in size) Sometimes we create data structures that are fixed and don t need to grow or shrink. Dynamic

More information

Operating Systems CMPSCI 377 Spring Mark Corner University of Massachusetts Amherst

Operating Systems CMPSCI 377 Spring Mark Corner University of Massachusetts Amherst Operating Systems CMPSCI 377 Spring 2017 Mark Corner University of Massachusetts Amherst Last Class: Intro to OS An operating system is the interface between the user and the architecture. User-level Applications

More information

(Refer Slide Time: 4:00)

(Refer Slide Time: 4:00) Principles of Programming Languages Dr. S. Arun Kumar Department of Computer Science & Engineering Indian Institute of Technology, Delhi Lecture - 38 Meanings Let us look at abstracts namely functional

More information

Certified LabVIEW Associate Developer Exam. Test Booklet

Certified LabVIEW Associate Developer Exam. Test Booklet Certified LabVIEW Associate Developer Exam Test Booklet Note: The use of the computer or any reference materials is NOT allowed during the exam. Instructions: If you did not receive this exam in a sealed

More information

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this

More information

Functions. CS10001: Programming & Data Structures. Sudeshna Sarkar Professor, Dept. of Computer Sc. & Engg., Indian Institute of Technology Kharagpur

Functions. CS10001: Programming & Data Structures. Sudeshna Sarkar Professor, Dept. of Computer Sc. & Engg., Indian Institute of Technology Kharagpur Functions CS10001: Programming & Data Structures Sudeshna Sarkar Professor, Dept. of Computer Sc. & Engg., Indian Institute of Technology Kharagpur 1 Recursion A process by which a function calls itself

More information

Correlating efficiently

Correlating efficiently Correlating efficiently Rob Block Lead Engineer, ArcSight Correlation Agenda Introduction Filters Real time correlation Reporting Trends to rescue Q & A 2 Introduction Correlating efficiently: Goals Understand

More information

Intermediate Representations & Symbol Tables

Intermediate Representations & Symbol Tables Intermediate Representations & Symbol Tables Copyright 2014, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University of Southern California have explicit permission

More information

Chapter 9 :: Subroutines and Control Abstraction

Chapter 9 :: Subroutines and Control Abstraction Chapter 9 :: Subroutines and Control Abstraction Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier 1 Chapter09_Subroutines_and_Control_Abstraction_4e - Tue November

More information

6.001 Notes: Section 15.1

6.001 Notes: Section 15.1 6.001 Notes: Section 15.1 Slide 15.1.1 Our goal over the next few lectures is to build an interpreter, which in a very basic sense is the ultimate in programming, since doing so will allow us to define

More information

Rich Text Tips, Tricks & Techniques. Ben Langhinrichs President, Genii Software Ltd.

Rich Text Tips, Tricks & Techniques. Ben Langhinrichs President, Genii Software Ltd. Rich Text Tips, Tricks & Techniques Ben Langhinrichs President, Genii Software Ltd. Introduction: Ben Langhinrichs President - Genii Software Ltd. Founded in 1992 (OS/2 utilities) First Notes product in

More information

Elasticsearch Scalability and Performance

Elasticsearch Scalability and Performance The Do's and Don ts of Elasticsearch Scalability and Performance Patrick Peschlow Think hard about your mapping Think hard about your mapping Which fields to analyze? How to analyze them? Need term frequencies,

More information

Overview. CMSC 330: Organization of Programming Languages. Concurrency. Multiprocessors. Processes vs. Threads. Computation Abstractions

Overview. CMSC 330: Organization of Programming Languages. Concurrency. Multiprocessors. Processes vs. Threads. Computation Abstractions CMSC 330: Organization of Programming Languages Multithreaded Programming Patterns in Java CMSC 330 2 Multiprocessors Description Multiple processing units (multiprocessor) From single microprocessor to

More information

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 08 09/17/2015

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 08 09/17/2015 Introduction to Concurrent Software Systems CSCI 5828: Foundations of Software Engineering Lecture 08 09/17/2015 1 Goals Present an overview of concurrency in software systems Review the benefits and challenges

More information

Hierarchical inheritance: Contains one base class and multiple derived classes of the same base class.

Hierarchical inheritance: Contains one base class and multiple derived classes of the same base class. 1. What is C#? C# (pronounced "C sharp") is a simple, modern, object oriented, and type safe programming language. It will immediately be familiar to C and C++ programmers. C# combines the high productivity

More information

Objects and Classes. Amirishetty Anjan Kumar. November 27, Computer Science and Engineering Indian Institue of Technology Bombay

Objects and Classes. Amirishetty Anjan Kumar. November 27, Computer Science and Engineering Indian Institue of Technology Bombay Computer Science and Engineering Indian Institue of Technology Bombay November 27, 2004 What is Object Oriented Programming? Identifying objects and assigning responsibilities to these objects. Objects

More information

Chapter 9: Dealing with Errors

Chapter 9: Dealing with Errors Chapter 9: Dealing with Errors What we will learn: How to identify errors Categorising different types of error How to fix different errors Example of errors What you need to know before: Writing simple

More information

Exception Handling Introduction. Error-Prevention Tip 13.1 OBJECTIVES

Exception Handling Introduction. Error-Prevention Tip 13.1 OBJECTIVES 1 2 13 Exception Handling It is common sense to take a method and try it. If it fails, admit it frankly and try another. But above all, try something. Franklin Delano Roosevelt O throw away the worser

More information

Very simple programming, limited exposure to assignment and variables minutes, or a full lesson with extension exercises

Very simple programming, limited exposure to assignment and variables minutes, or a full lesson with extension exercises Box Variables Age group: Abilities assumed: Time: Size of group: Focus Variables Assignment Sequencing Programming 10 adult Very simple programming, limited exposure to assignment and variables 15-20 minutes,

More information

Chapter 8 :: Subroutines and Control Abstraction. Final Test. Final Test Review Tomorrow

Chapter 8 :: Subroutines and Control Abstraction. Final Test. Final Test Review Tomorrow Chapter 8 :: Subroutines and Control Abstraction Programming Language Pragmatics Michael L. Scott Administrative Notes Final Test Thursday, August 3 2006 at 11:30am No lecture before or after the mid-term

More information

The Processor Memory Hierarchy

The Processor Memory Hierarchy Corrected COMP 506 Rice University Spring 2018 The Processor Memory Hierarchy source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved.

More information

Copyright (c) by Matthew S. Harris

Copyright (c) by Matthew S. Harris Documentation & How-To Didjiman's Forms Instance Manager Class For MS Access 2007 and Higher Version v2017-03-28 Copyright (c) 2014-2017 by Matthew S. Harris Permission is granted to copy, distribute and/or

More information

John Wawrzynek & Nick Weaver

John Wawrzynek & Nick Weaver CS 61C: Great Ideas in Computer Architecture Lecture 23: Virtual Memory John Wawrzynek & Nick Weaver http://inst.eecs.berkeley.edu/~cs61c From Previous Lecture: Operating Systems Input / output (I/O) Memory

More information

Building your own BMC Remedy AR System v7 Applications. Maruthi Dogiparthi

Building your own BMC Remedy AR System v7 Applications. Maruthi Dogiparthi Building your own BMC Remedy AR System v7 Applications Maruthi Dogiparthi Agenda Introduction New Goodies Navigation, tree widgets Data Visualization Plug-in framework Development Guidelines Tools BMC

More information

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 12 09/29/2016

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 12 09/29/2016 Introduction to Concurrent Software Systems CSCI 5828: Foundations of Software Engineering Lecture 12 09/29/2016 1 Goals Present an overview of concurrency in software systems Review the benefits and challenges

More information

Microsoft Visual Basic 2015: Reloaded

Microsoft Visual Basic 2015: Reloaded Microsoft Visual Basic 2015: Reloaded Sixth Edition Chapter Three Memory Locations and Calculations Objectives After studying this chapter, you should be able to: Declare variables and named constants

More information

Introducing C++ to Java Programmers

Introducing C++ to Java Programmers Introducing C++ to Java Programmers by Kip Irvine updated 2/27/2003 1 Philosophy of C++ Bjarne Stroustrup invented C++ in the early 1980's at Bell Laboratories First called "C with classes" Design Goals:

More information

Programming Languages Third Edition. Chapter 7 Basic Semantics

Programming Languages Third Edition. Chapter 7 Basic Semantics Programming Languages Third Edition Chapter 7 Basic Semantics Objectives Understand attributes, binding, and semantic functions Understand declarations, blocks, and scope Learn how to construct a symbol

More information

Advanced Database Systems

Advanced Database Systems Lecture IV Query Processing Kyumars Sheykh Esmaili Basic Steps in Query Processing 2 Query Optimization Many equivalent execution plans Choosing the best one Based on Heuristics, Cost Will be discussed

More information

JScript Reference. Contents

JScript Reference. Contents JScript Reference Contents Exploring the JScript Language JScript Example Altium Designer and Borland Delphi Run Time Libraries Server Processes JScript Source Files PRJSCR, JS and DFM files About JScript

More information