The document provides an overview of using the LotusScript eXtension (LSX) toolkit to call the Notes C API from LotusScript. It discusses the target audience, architectures in Notes/Domino, how to create an LSX using the LSX wizard, filling in the LSX source code, compiling the LSX DLL, and using it in LotusScript. While the LSX toolkit allows building cross-platform libraries, it requires recompiling for each platform and lacks recent support. The document demonstrates how to use the LSX toolkit to extend LotusScript functionality.
Here is a simple example of calling the Notes C API from LotusScript:
Declare Function LNPUBLIC NotesInit Lib "nnotes" () As Integer
Sub Initialize
Dim status As Integer
status = NotesInit()
If status <> 0 Then
Print "Notes initialization failed with error: " + CStr(status)
Else
Print "Notes initialized successfully."
End If
End Sub
This declares and calls the simple NotesInit() function to initialize the Notes environment. It checks the return status and prints a message.
Powered by Den nächste Schritt zum Erfolg : Domino&Notes 8Bundled-KnowHow
.NET Core Blimey! (dotnetsheff Jan 2016)citizenmatt
.NET Core is a new open source, cross-platform version of .NET that is optimized for cloud-based development scenarios. It consists of a modular runtime (CoreCLR), class libraries (CoreFX), and tools (CLI). .NET Core is not a new version of the .NET Framework, but rather a fork that is being merged back. It aims to provide a consistent development experience across platforms via NuGet packages and the .NET Standard platform specification.
.NET Core Blimey! (Shropshire Devs Mar 2016)citizenmatt
This document discusses .NET Core, a new open source, cross-platform version of .NET. It is not a new version of the .NET Framework, but rather a fork that is being merged back. .NET Core includes CoreCLR (the runtime), CoreFX (the base class library), and tools like the .NET CLI. It uses NuGet for distribution and targets the new .NET Standard platform for cross-platform compatibility. Key goals are running on Linux and Mac as well as Windows, and being optimized for cloud-based applications.
SSDN Technology is a training institute located in Delhi Gurgaon, NCR & India which offer best DotNet Training by our experienced trainer. We are providing live project training with full lab facility. For more details for a bright future call us at +91-9999-111-686.
http://www.ssdntech.com/dotnet-training.aspx
.NET Core is a new open source, cross-platform version of .NET that is optimized for cloud scenarios. It consists of a modular runtime (CoreCLR) and class libraries (CoreFX) that are distributed as NuGet packages. .NET Core is a subset of the .NET Framework and aims to be compatible, though some APIs may have platform-specific implementations or fallbacks. It uses a new app model and runtime called CoreCLR that allows it to run cross-platform on Linux, MacOS and Windows.
Future of .NET - .NET on Non Windows Platforms. .NET has been so far targeted towards Windows only. Now Microsoft created a subset of .NET called .NET Core that would run on Linux and OS X apart from Windows.
The .NET architecture consists of the Common Language Runtime (CLR) and Framework Class Library (FCL). The CLR defines a common programming model and standard type system for cross-platform, multi-language development. .NET supports multiple languages and compiles applications into assemblies that can run on any supported platform as long as the CLR and FCL are present. Component-based application designs with assemblies packaged into EXEs and DLLs are common.
.NET Core Blimey! Windows Platform User Group, Manchestercitizenmatt
This document discusses .NET Core, a new open source, cross-platform version of .NET. It is not a new version of the .NET Framework, but rather a fork intended to be modular and optimized for cloud deployments. Key aspects include using NuGet for distribution, targeting multiple platforms like Linux and Mac, and using .NET Standard to define a common set of APIs across platforms. It aims to improve on Portable Class Libraries and make .NET more cross-platform.
Here is a simple example of calling the Notes C API from LotusScript:
Declare Function LNPUBLIC NotesInit Lib "nnotes" () As Integer
Sub Initialize
Dim status As Integer
status = NotesInit()
If status <> 0 Then
Print "Notes initialization failed with error: " + CStr(status)
Else
Print "Notes initialized successfully."
End If
End Sub
This declares and calls the simple NotesInit() function to initialize the Notes environment. It checks the return status and prints a message.
Powered by Den nächste Schritt zum Erfolg : Domino&Notes 8Bundled-KnowHow
.NET Core Blimey! (dotnetsheff Jan 2016)citizenmatt
.NET Core is a new open source, cross-platform version of .NET that is optimized for cloud-based development scenarios. It consists of a modular runtime (CoreCLR), class libraries (CoreFX), and tools (CLI). .NET Core is not a new version of the .NET Framework, but rather a fork that is being merged back. It aims to provide a consistent development experience across platforms via NuGet packages and the .NET Standard platform specification.
.NET Core Blimey! (Shropshire Devs Mar 2016)citizenmatt
This document discusses .NET Core, a new open source, cross-platform version of .NET. It is not a new version of the .NET Framework, but rather a fork that is being merged back. .NET Core includes CoreCLR (the runtime), CoreFX (the base class library), and tools like the .NET CLI. It uses NuGet for distribution and targets the new .NET Standard platform for cross-platform compatibility. Key goals are running on Linux and Mac as well as Windows, and being optimized for cloud-based applications.
SSDN Technology is a training institute located in Delhi Gurgaon, NCR & India which offer best DotNet Training by our experienced trainer. We are providing live project training with full lab facility. For more details for a bright future call us at +91-9999-111-686.
http://www.ssdntech.com/dotnet-training.aspx
.NET Core is a new open source, cross-platform version of .NET that is optimized for cloud scenarios. It consists of a modular runtime (CoreCLR) and class libraries (CoreFX) that are distributed as NuGet packages. .NET Core is a subset of the .NET Framework and aims to be compatible, though some APIs may have platform-specific implementations or fallbacks. It uses a new app model and runtime called CoreCLR that allows it to run cross-platform on Linux, MacOS and Windows.
Future of .NET - .NET on Non Windows Platforms. .NET has been so far targeted towards Windows only. Now Microsoft created a subset of .NET called .NET Core that would run on Linux and OS X apart from Windows.
The .NET architecture consists of the Common Language Runtime (CLR) and Framework Class Library (FCL). The CLR defines a common programming model and standard type system for cross-platform, multi-language development. .NET supports multiple languages and compiles applications into assemblies that can run on any supported platform as long as the CLR and FCL are present. Component-based application designs with assemblies packaged into EXEs and DLLs are common.
.NET Core Blimey! Windows Platform User Group, Manchestercitizenmatt
This document discusses .NET Core, a new open source, cross-platform version of .NET. It is not a new version of the .NET Framework, but rather a fork intended to be modular and optimized for cloud deployments. Key aspects include using NuGet for distribution, targeting multiple platforms like Linux and Mac, and using .NET Standard to define a common set of APIs across platforms. It aims to improve on Portable Class Libraries and make .NET more cross-platform.
.NET Core is a new open source, cross-platform version of .NET that is optimized for cloud scenarios. It consists of a new runtime called CoreCLR and a new base class library called CoreFX that are modular and package-based. .NET Core is a subset of the .NET Framework and aims to provide independent release cycles for the runtime, base class libraries, and applications. It uses NuGet packages and reference assemblies to provide compatibility while allowing platform-specific implementations.
The document discusses the LLVM compiler framework and infrastructure. It provides reusable components for building compilers to reduce the time and cost of building new compilers. The LLVM compiler framework uses the LLVM infrastructure to build static compilers, JITs, and trace-based optimizers. It emits C code or native code for x86, Sparc, and PowerPC architectures. The three primary LLVM components are the virtual instruction set (the common language- and target-independent intermediate representation), a collection of well-integrated libraries, and a collection of tools built from the libraries.
LLVM is a compiler and toolkit for building compilers that converts source code into machine-readable code. It started at the University of Illinois in 2000 and provides modular, reusable technologies. LLVM differs from GCC in that it is a framework for generating code from any source, rather than supporting specific languages. It works by using Clang to turn source into an intermediate representation, then optimizes and converts it to machine code. LLVM can optimize code aggressively during compilation and linking but does not handle language parsing or memory management itself.
dotnetconf 2020 è andato e ci ha lasciato .NET 5. Ovvero una delle più importanti release di .NET di sempre. Cosa significa per il nostro lavoro? Scopriamolo assieme
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019corehard_by
C++ is known for things such as performance, expressiveness, the lack of a standard build system and package management, complexity and long compile times. The inability to iterate quickly is one of the biggest killers of productivity. This talk is aimed at anyone interested in improving the last of these points - it will provide insights into why compilation (and linking) take so long for C++ and will then provide an exhaustive list of techniques and tools to mitigate the problem, such as: - tooling and infrastructure - hardware, build systems, caching, distributed builds, diagnostics of bottlenecks, code hygiene - techniques - unity builds, precompiled headers, linking (static vs shared libraries) - source code modification - the PIMPL idiom, better template use, annotations - modules - what they are, when they are coming to C++ and what becomes obsolete because of them
The document discusses Microsoft .NET platform. It states that .NET is a software platform and framework that allows development of applications for web and Windows. The .NET framework provides a common language runtime (CLR) environment that executes all .NET programs. The CLR offers thread and memory management. Languages compile code into Microsoft intermediate language (MSIL) that runs on the CLR. The .NET framework also includes a base class library (BCL) of common functions that can be used by all .NET languages. It ensures different .NET languages can interact through a common type system.
The document provides an overview of the .NET framework, including:
- .NET is a development framework that allows applications to be developed for both web and Windows environments using any compliant programming language.
- The Common Language Runtime (CLR) is the virtual machine at the core of .NET that executes code and enforces type safety. All .NET languages compile to Microsoft Intermediate Language (IL) code that runs on the CLR.
- The .NET framework includes libraries and APIs for tasks like building Windows forms, web applications using ASP.NET, and accessing data with ADO.NET. It also supports development using languages like C#, VB.NET, and C++.
.NET is a software development platform that allows developers to create web and Windows applications using any compliant programming language. The .NET Framework provides a common language runtime (CLR) and class libraries that handle memory management and code execution. Programs are compiled to an intermediate language (IL) that is then just-in-time compiled and executed by the CLR. The .NET Framework supports features like Windows Forms, ASP.NET, ADO.NET, and a variety of programming languages.
Here I am sharing another ppt for .net frame work and i hope this will be helpful for those who wanted to know about .net framework.
For similar kind of c# interview questions in asp.net you can refer this link
http://skillgun.com/csharp/interview-questions-and-answers
Microsoft is working hard to modernize the .NET Platform. There are great new frameworks and tools coming, such as .NET Core and ASP.NET Core. The amount of new things is overwhelming, with multiple .NET Platforms (.NET Framework, Unified Windows Platform, .NET Core), multiple runtimes (CoreCLR, CLR, CoreRT), multiple compilers (Roslyn, RyuJIT, .NET Native and LLILC) and much more. This session will bring you up to speed on all this new Microsoft technology, focusing on .NET Core.
But, we will also take a look at the first framework implementation on top op .NET Core for the Web: ASP.NET Core 1.0. You will learn about ASP.NET Core 1.0 and how it is different from ASP.NET 4.6. This will include Visual Studio 2015 support, cross-platform ASP.NET Core and command-line tooling for working with ASP.NET Core and .NET Core projects.
After this session you know where Microsoft is heading in the near future. Be prepared for a new .NET Platform.
This document provides an overview of .NET (Core), including its components, frameworks, and implementations. It discusses .NET, .NET Standard, .NET Framework, .NET Core, Xamarin/Mono, packages, metapackages, SDK, CLI, target frameworks, and introduces ASP.NET Core. Key points include that .NET Core is a cross-platform implementation of .NET built on NuGet packages, it implements the .NET Standard, and ASP.NET Core is a modern web framework that can be hosted in Kestrel or IIS.
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...GlobalLogic Ukraine
This document provides an overview of contributing to the Linux kernel. It discusses the history and development process of the Linux kernel, how to identify problems, write patches, verify patches, submit patches for review, and have patches accepted or revised based on community feedback. The goal is to guide new contributors through the entire process of contributing code to the Linux kernel in a step-by-step manner.
OTS Solutions is a Software Development Company provides a wide range of software application development services, our teams having highly skilled and well qualified professionals has hands on experience on ASP.Net, C#, VB.Net, ASP.Net, MVC, Sharepoint development, WPF, WCF WCF etc across the globe.
The document provides an introduction to the .NET framework. It describes .NET as a software platform and language-neutral runtime that executes programs written in any compliant language. It discusses the Common Language Runtime (CLR) which works like a virtual machine, and how .NET languages compile to an intermediate language (IL) that is then JIT compiled. It also outlines some of the core components and languages supported by the .NET framework, including Windows Forms, ASP.NET, ADO.NET, and Visual Studio.
Embarcadero® Delphi Prism™ XE provides a cross-platform development solution and robust programming language for rapidly developing .NET, Mono, ASP.NET, and data-driven applications for Windows, Linux, and Mac OS X.
This document discusses the compilation process of a C program from source code to executable. It involves 4 main stages: preprocessing, compilation, assembly, and linking. Preprocessing handles includes and macros. Compilation converts to assembly code. Assembly converts to object code. Linking combines object files and resolves symbols to create the executable. C is an efficient, portable, and flexible language that has been widely used since 1972.
The document discusses the .NET Framework. It is a software platform that is language-neutral and allows programs written in any compliant language to be executed. The framework includes the Common Language Runtime (CLR) which acts like a virtual machine, Windows Forms for building rich clients, ASP.NET for web applications and web services, and Visual Studio.NET as an integrated development environment. All .NET languages compile to intermediate language code that is just-in-time compiled and executed by the CLR.
This document provides tips for developing contacts and stories for enterprise journalism. It recommends reading news with an eye for potential contact leads. Reporters should include blogs, forums, hobbies, clubs and community activities to meet new people and learn about local stories. The document advises finding an important specialty or "beat" and becoming an expert on certain types of stories. Reporters should work to develop mutual trust with contacts and ask what people think is wrong with television news to find potential stories.
The document introduces a new vocabulary learning tool called Weboword that uses visual representations of words rather than conventional techniques. Weboword claims to enhance vocabulary learning and retention through structured exercises and vivid pictures associated with each word. Weboword launched in February 2009 and received attention on Delicious.com, with the document providing statistics on country-wise traffic and discussing future marketing plans to promote Weboword and potential new products.
.NET Core is a new open source, cross-platform version of .NET that is optimized for cloud scenarios. It consists of a new runtime called CoreCLR and a new base class library called CoreFX that are modular and package-based. .NET Core is a subset of the .NET Framework and aims to provide independent release cycles for the runtime, base class libraries, and applications. It uses NuGet packages and reference assemblies to provide compatibility while allowing platform-specific implementations.
The document discusses the LLVM compiler framework and infrastructure. It provides reusable components for building compilers to reduce the time and cost of building new compilers. The LLVM compiler framework uses the LLVM infrastructure to build static compilers, JITs, and trace-based optimizers. It emits C code or native code for x86, Sparc, and PowerPC architectures. The three primary LLVM components are the virtual instruction set (the common language- and target-independent intermediate representation), a collection of well-integrated libraries, and a collection of tools built from the libraries.
LLVM is a compiler and toolkit for building compilers that converts source code into machine-readable code. It started at the University of Illinois in 2000 and provides modular, reusable technologies. LLVM differs from GCC in that it is a framework for generating code from any source, rather than supporting specific languages. It works by using Clang to turn source into an intermediate representation, then optimizes and converts it to machine code. LLVM can optimize code aggressively during compilation and linking but does not handle language parsing or memory management itself.
dotnetconf 2020 è andato e ci ha lasciato .NET 5. Ovvero una delle più importanti release di .NET di sempre. Cosa significa per il nostro lavoro? Scopriamolo assieme
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019corehard_by
C++ is known for things such as performance, expressiveness, the lack of a standard build system and package management, complexity and long compile times. The inability to iterate quickly is one of the biggest killers of productivity. This talk is aimed at anyone interested in improving the last of these points - it will provide insights into why compilation (and linking) take so long for C++ and will then provide an exhaustive list of techniques and tools to mitigate the problem, such as: - tooling and infrastructure - hardware, build systems, caching, distributed builds, diagnostics of bottlenecks, code hygiene - techniques - unity builds, precompiled headers, linking (static vs shared libraries) - source code modification - the PIMPL idiom, better template use, annotations - modules - what they are, when they are coming to C++ and what becomes obsolete because of them
The document discusses Microsoft .NET platform. It states that .NET is a software platform and framework that allows development of applications for web and Windows. The .NET framework provides a common language runtime (CLR) environment that executes all .NET programs. The CLR offers thread and memory management. Languages compile code into Microsoft intermediate language (MSIL) that runs on the CLR. The .NET framework also includes a base class library (BCL) of common functions that can be used by all .NET languages. It ensures different .NET languages can interact through a common type system.
The document provides an overview of the .NET framework, including:
- .NET is a development framework that allows applications to be developed for both web and Windows environments using any compliant programming language.
- The Common Language Runtime (CLR) is the virtual machine at the core of .NET that executes code and enforces type safety. All .NET languages compile to Microsoft Intermediate Language (IL) code that runs on the CLR.
- The .NET framework includes libraries and APIs for tasks like building Windows forms, web applications using ASP.NET, and accessing data with ADO.NET. It also supports development using languages like C#, VB.NET, and C++.
.NET is a software development platform that allows developers to create web and Windows applications using any compliant programming language. The .NET Framework provides a common language runtime (CLR) and class libraries that handle memory management and code execution. Programs are compiled to an intermediate language (IL) that is then just-in-time compiled and executed by the CLR. The .NET Framework supports features like Windows Forms, ASP.NET, ADO.NET, and a variety of programming languages.
Here I am sharing another ppt for .net frame work and i hope this will be helpful for those who wanted to know about .net framework.
For similar kind of c# interview questions in asp.net you can refer this link
http://skillgun.com/csharp/interview-questions-and-answers
Microsoft is working hard to modernize the .NET Platform. There are great new frameworks and tools coming, such as .NET Core and ASP.NET Core. The amount of new things is overwhelming, with multiple .NET Platforms (.NET Framework, Unified Windows Platform, .NET Core), multiple runtimes (CoreCLR, CLR, CoreRT), multiple compilers (Roslyn, RyuJIT, .NET Native and LLILC) and much more. This session will bring you up to speed on all this new Microsoft technology, focusing on .NET Core.
But, we will also take a look at the first framework implementation on top op .NET Core for the Web: ASP.NET Core 1.0. You will learn about ASP.NET Core 1.0 and how it is different from ASP.NET 4.6. This will include Visual Studio 2015 support, cross-platform ASP.NET Core and command-line tooling for working with ASP.NET Core and .NET Core projects.
After this session you know where Microsoft is heading in the near future. Be prepared for a new .NET Platform.
This document provides an overview of .NET (Core), including its components, frameworks, and implementations. It discusses .NET, .NET Standard, .NET Framework, .NET Core, Xamarin/Mono, packages, metapackages, SDK, CLI, target frameworks, and introduces ASP.NET Core. Key points include that .NET Core is a cross-platform implementation of .NET built on NuGet packages, it implements the .NET Standard, and ASP.NET Core is a modern web framework that can be hosted in Kestrel or IIS.
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...GlobalLogic Ukraine
This document provides an overview of contributing to the Linux kernel. It discusses the history and development process of the Linux kernel, how to identify problems, write patches, verify patches, submit patches for review, and have patches accepted or revised based on community feedback. The goal is to guide new contributors through the entire process of contributing code to the Linux kernel in a step-by-step manner.
OTS Solutions is a Software Development Company provides a wide range of software application development services, our teams having highly skilled and well qualified professionals has hands on experience on ASP.Net, C#, VB.Net, ASP.Net, MVC, Sharepoint development, WPF, WCF WCF etc across the globe.
The document provides an introduction to the .NET framework. It describes .NET as a software platform and language-neutral runtime that executes programs written in any compliant language. It discusses the Common Language Runtime (CLR) which works like a virtual machine, and how .NET languages compile to an intermediate language (IL) that is then JIT compiled. It also outlines some of the core components and languages supported by the .NET framework, including Windows Forms, ASP.NET, ADO.NET, and Visual Studio.
Embarcadero® Delphi Prism™ XE provides a cross-platform development solution and robust programming language for rapidly developing .NET, Mono, ASP.NET, and data-driven applications for Windows, Linux, and Mac OS X.
This document discusses the compilation process of a C program from source code to executable. It involves 4 main stages: preprocessing, compilation, assembly, and linking. Preprocessing handles includes and macros. Compilation converts to assembly code. Assembly converts to object code. Linking combines object files and resolves symbols to create the executable. C is an efficient, portable, and flexible language that has been widely used since 1972.
The document discusses the .NET Framework. It is a software platform that is language-neutral and allows programs written in any compliant language to be executed. The framework includes the Common Language Runtime (CLR) which acts like a virtual machine, Windows Forms for building rich clients, ASP.NET for web applications and web services, and Visual Studio.NET as an integrated development environment. All .NET languages compile to intermediate language code that is just-in-time compiled and executed by the CLR.
This document provides tips for developing contacts and stories for enterprise journalism. It recommends reading news with an eye for potential contact leads. Reporters should include blogs, forums, hobbies, clubs and community activities to meet new people and learn about local stories. The document advises finding an important specialty or "beat" and becoming an expert on certain types of stories. Reporters should work to develop mutual trust with contacts and ask what people think is wrong with television news to find potential stories.
The document introduces a new vocabulary learning tool called Weboword that uses visual representations of words rather than conventional techniques. Weboword claims to enhance vocabulary learning and retention through structured exercises and vivid pictures associated with each word. Weboword launched in February 2009 and received attention on Delicious.com, with the document providing statistics on country-wise traffic and discussing future marketing plans to promote Weboword and potential new products.
This document provides an overview and introduction to the Windows Azure platform and cloud computing. It discusses key Azure terminology, services, and components like roles, storage, queues, and blobs. It also outlines the development lifecycle for Azure, including prerequisites, tools, packaging, and publishing. The presentation aims to demystify Microsoft's cloud computing platform.
How to Use Content Marketing to Build Your BusinessBob Kaplitz
Bob Kaplitz discusses developing video marketing strategies using one-to-one engagement. With over 31 years of audience research experience, he helps build brands through engaging stories on social media and emerging technologies. Kaplitz has experience boosting attendance for a TV station using innovative video on social media. He teaches international marketing and digital media. Kaplitz's presentation focuses on creating concise videos for multiple platforms like mobile, email and websites to increase recognition, reputation and revenue through targeted messages.
The document provides information and resources for creating a more sustainable and environmentally friendly home. It discusses using recycled, reclaimed, and eco-friendly materials for construction elements like insulation, flooring, countertops and more. It also recommends implementing renewable energy sources and energy efficient appliances to reduce the home's carbon footprint and lower utility costs. Website links are included for many products and techniques.
The document provides an introduction and overview to leveraging the Notes C API in LotusScript. It covers architectures, platform differences, calling simple Notes C API functions, handling Notes C API handles, using custom classes to hide platform differences, complex Notes C API calls, and pros and cons. The target audience is advanced Lotus Notes developers with some C API experience who want to learn how to interface LotusScript with the Notes C API to access additional functionality.
This document discusses calling the Notes C API from LotusScript. It describes the LotusScript eXtension (LSX) toolkit, which allows extending LotusScript with custom C code by building platform-specific libraries. It also covers differences between platforms when calling the Notes C API directly from LotusScript, such as data types and library file names. As an example, it demonstrates calling the simple NSFGetServerLatency() API function from LotusScript to get network latency between servers.
This document provides a summary of leveraging the Notes C API in LotusScript. It discusses calling both simple and complex Notes C API functions from LotusScript code. Platform differences are highlighted when calling the C API directly. Custom classes are demonstrated as a way to hide platform differences and properly manage Notes C API handles. Examples are provided of calling simple API functions as well as handling complex sequences involving database handles.
AWS Summit Auckland - Moving MS .NET Applications One Container at a TimeAmazon Web Services
Moving Microsoft .NET Applications One Container at a Time
The document discusses moving Microsoft .NET applications to containers using Docker. It provides a brief history of .NET and how open source efforts have made it cross-platform. It then covers .NET Core, ASP.NET Core, and how the developer experience is now cross-platform. Hands-on demos show developing an ASP.NET Core app on Windows and running it in a Linux container on AWS. Finally, it discusses how AWS supports .NET and Docker through options like rolling your own, using Elastic Beanstalk, or Amazon ECS.
Moving microsoft .net applications one container at a time Amazon Web Services
This document discusses moving Microsoft .NET applications to containers using Docker. It provides a brief history of .NET and open source efforts. It explores the developer experience of .NET outside of Windows and demystifies .NET in Docker and containers. The document outlines several hands-on demos of developing a .NET app on Windows and running it in a Linux container on AWS. It also discusses how AWS supports .NET and Docker through options like rolling your own on EC2, using Elastic Beanstalk, or Amazon ECS. The document encourages attendees to discuss their training plans and opportunities to get AWS certified.
This document provides a summary of a presentation on Lotus software, including Domino and Sametime, running on Linux. The presenter, Bill Malchisky Jr., discusses IBM's long commitment to Linux over the past 20 years, including major investments and contributions to open source projects. He outlines the server-side benefits of running Domino and Sametime on Linux. The document also addresses partitioning, disk and Domino, virtualization support, Linux distributions supported, and tuning tips for optimizing Domino performance on Linux.
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...Amazon Web Services Korea
This document discusses moving Microsoft .NET applications to containers. It provides a brief history of .NET and its evolution to support cross-platform development. It explores using .NET and Docker to develop applications on Windows and deploy them in Linux containers on AWS. It demonstrates developing an ASP.NET application on Windows and running it in a Linux container on AWS EC2. It summarizes that Microsoft has made cross-platform development easier with .NET Core, existing applications can run in Docker containers under Mono or .NET Core, and AWS supports .NET and Docker applications through services like EC2 and ECS.
Computer and multimedia Week 1 Windows Architecture.pptxfatahozil
The kernel is the most trusted part of the operating system. Multiple rings of protection were among the most revolutionary concepts introduced by the Multics operating system, most general-purpose systems use only two rings, even if the hardware they run on provides more CPU modes than that. For example, Windows 7 and Windows Server 2008 (and their predecessors) use only two rings, with ring 0 corresponding to kernel mode and ring 3 to user mode, because earlier versions of Windows ran on processors that supported only two protection levels.
Many modern CPU architectures (including the popular Intel x86 architecture) include some form of ring protection, although the Windows NT operating system, like Unix, does not fully utilize this feature. Under DOS, the kernel, drivers and applications typically run on ring 3 (however, this is exclusive to the case where protected-mode drivers and/or DOS extenders are used; as a real-mode OS, the system runs with effectively no protection), whereas 386 memory managers such as EMM386 run at ring 0.
Windows Memory
Each process started on x86 version of Windows uses a flat memory model that ranges from 0x00000000 – 0xFFFFFFFF. The lower half of the memory, 0x00000000 – 0x7FFFFFFF, is reserved for user space code. While the upper half of the memory, 0x80000000 – 0xFFFFFFFF, is reserved for the kernel code. The Windows operating system also doesn’t use the segmentation (well actually it does, because it has to), but the segment table contains segment descriptors that use the entire linear address space. There are four segments, two for user and two for kernel mode, which describe the data and code for each of the modes. But all of the descriptors actually contain the same linear address space. This means they all point to the same segment in memory that is 0xFFFFFFFF bits long, proving that there is no segmentation on Windows systems.
The segmentation is actually not used by the Windows system. Therefore we can use the terms “virtual address space” and “linear address space” interchangeably, because they are the same in this particular case. Because of this, when talking about user space code being loaded in the virtual address space from 0x00000000 to 0x7FFFFFFF, we’re actually talking about linear addresses. Those addresses are then sent into the paging unit to be translated into physical addresses. We’ve just determined that even though each process uses a flat memory model that spans the entire 4GB linear address space, it can only use half of it. This is because the other half is reserved for kernel code: the program can thus use, at most, 2GB of memory.
Every process has its own unique value in the CR3 register that points to the process’ page directory table. Because each process has its own page directory table that is used to translate the linear address to physical address, two processes can use the same linear address, while their physical address is different. Okay, so each program has its own ad
This document provides an overview of the .NET framework and Visual Basic .NET. It discusses how .NET improves on previous platforms by having a common language runtime (CLR) and class library, making development easier and code more portable. It also summarizes VB.NET features like being object-oriented and type-safe while retaining ease of use. Code compilation in VB.NET involves converting to MSIL rather than native machine code for portability.
.NET Core is a cross-platform and open source implementation of .NET. It uses a new cross-platform runtime called CoreCLR and a new compiler platform called Roslyn. .NET Core allows developers to use C# and F# to write web applications like ASP.NET Core, mobile apps, IoT apps and more. It also introduces a new cross-platform command line interface called dotnet and supports running applications in Linux and Windows containers with Docker.
OpenShift with Eclipse Tooling - EclipseCon 2012Steven Pousty
This document provides an overview of the Eclipse tooling for OpenShift. It begins with an agenda and assumptions. It then defines Infrastructure as a Service, Platform as a Service, and Software as a Service. It highlights benefits of using a PaaS like OpenShift. Supported technologies are listed, including Java, JBoss Tools, Maven, and Jenkins. Steps are provided to get started, including signing up, installing plugins, creating a domain and applications. Demo steps are outlined. Command line tools are discussed. Creating an application in Eclipse is demonstrated.
This document introduces .NET Core and its advantages over the .NET Framework. It discusses how .NET Core is cross-platform, uses the .NET Standard library, and can create self-contained applications. It also highlights how .NET Core applications are smaller, faster, and container-friendly. The document demonstrates how to use the dotnet CLI and publish .NET Core applications to reduce their deployment size. Overall, it promotes adopting .NET Core for its performance, portability, and familiar .NET APIs.
.NET Core, ASP.NET Core Course, Session 3aminmesbahi
Session 3,
Introducing to Compiler
What is the LLVM?
LLILC
RyuJIT
AOT Compilation
Preprocessors and Conditional Compilation
An Overview on Dependency Injection
Given at zendcon 2007 unconference. My first "talk" ever given. Had a live demo. Note that although some of the information here is still pertinent, a lot is now outdated and most of the links no longer work. This is here for archival reasons
Join Jim McKeeth as he introduces you to FMXLinux, and shows how you can bring the power of FireMonkey to Linux.
Outline:
Installation via GetIt Package Manager
Linux, PAServer, SDK, & Package Installation
FMXLinux usage and Samples
FireDAC Database Access on Linux
Migrating from Windows VCL to FMXLinux
3rd Party FMXLinux Support
Deploying rich web apps via Broadway
https://embt.co/FMXLinuxIntro
This document provides an overview of the Linux development environment and its components. It discusses how Linux benefits programmers through open source collaboration and access to code. Embedded systems are highlighted as a major application area for Linux due to its customizability and low memory usage. The key components of a Linux development platform are outlined, including editors, compilers, linkers, debuggers, version control systems, and documentation tools.
This document introduces self-service application deployment with Kubernetes and OpenShift. It discusses how containers and container orchestration tools like Kubernetes and OpenShift address issues with traditional application deployment processes by allowing developers to deploy applications without needing access to infrastructure. It provides an overview of Kubernetes and OpenShift concepts and components that enable this self-service deployment model.
Linux Distribution Collaboration …on a Mainframe!All Things Open
Presented at All Things Open 2023
Presented by Elizabeth K. Joseph - IBM
Title: Linux Distribution Collaboration …on a Mainframe!
Abstract: Linux has run on the mainframe architecture (s390x) for over 20 years now, and there’s even Linux-only mainframe hardware! But tight collaboration between the Linux distributions is rather new. Enter the Open Mainframe Project Linux Distributions Working Group, founded in late 2021.
Bringing together various Linux distributions, both corporate-backed and community-driven, representatives from openSUSE, Debian, Fedora, SUSE, and more immediately joined the effort to share bug reports and patches that impact all the distributions. Issues are often shared and discussed on the mailing list, and more complicated topics covered during the monthly meetings. The working group has a number of success stories that will be shared.
Future potential issues are also tackled, and notes shared about upstream changes that may soon impact the package processes. In the latest effort, the team has started thinking about actual upstream projects to invite to our group to be more pro-active about changes that may cause problems on the s390x architecture.
But more importantly, this is a story about community and collaboration. Many people view the various Linux distributions as a competitive space, but like so much of the open source software community, we are all more successful when we share knowledge about our core. The success of this working group, and growing enthusiasm for it from new Linux distributions who are joining, is a great example of this.
Find more info about All Things Open:
On the web: https://www.allthingsopen.org/
Twitter: https://twitter.com/AllThingsOpen
LinkedIn: https://www.linkedin.com/company/all-things-open/
Instagram: https://www.instagram.com/allthingsopen/
Facebook: https://www.facebook.com/AllThingsOpen
Mastodon: https://mastodon.social/@allthingsopen
Threads: https://www.threads.net/@allthingsopen
2023 conference: https://2023.allthingsopen.org/
The View - Leveraging Lotuscript for Database ConnectivityBill Buchan
The document discusses using LotusScript (LS) to connect Lotus Notes databases to external relational databases. It covers LSX, LS:DO, and DCR as methods for database connectivity from LotusScript server-side agents. The presentation provides code examples and discusses object-oriented design patterns for database connectivity classes. It demonstrates connecting to an Access database using ODBC and connecting to an Oracle database from LotusScript. The document emphasizes best practices like error handling, logging, and separating database-specific code.
Similar to Vienna buchan calling the notes c-api from lotus_script (20)
This document provides an overview of wireless internet service providers (WISPs) through a presentation by Bill Buchan, who has 9 years of experience running a WISP. It discusses the technology, networking, and management of WISPs. The presentation walks through solving a rural broadband issue using line-of-sight wireless connections, choosing appropriate antenna types and equipment, and provides an example network design to deliver wireless internet to customers. It also covers potential issues that can arise with WISPs.
This document provides an overview of wireless internet service providers (WISPs) and how they construct their networks. It discusses how WISPs use inexpensive commercial off-the-shelf equipment like Ubiquiti devices along with frequencies like 5.5GHz to connect locations within line of sight and provide internet access to rural areas without wired infrastructure. The document also outlines the typical network architecture involving routers, switches, and wireless backhaul to residential customers.
Bill Buchan presented on worst practices in wireless internet service provision to underline best practices. Some examples included: a wireless site container that tipped over during a storm due to incorrect wind loading calculations; overloading an inverter powering multiple radios and cameras; a cable that was damaged by rust allowing water ingress; an antenna mounted upside down allowing water to fill it; fiber cables being chewed by mice; and safety issues like working at heights without harnesses or falling tools. The presentation emphasized planning, maintenance, equipment siting and securing cables and gear to avoid outages and hazards.
Marykirk raft race presentation night 2014Bill Buchan
This document summarizes the 2014 Marykirk Raft Race event which raises money for charity. Some key details:
- The event involves teams racing homemade rafts down a river while dressed in costumes, followed by further activities in a park. It has been held annually since the mid-1990s.
- In 2014 there were 13 participating raft teams who raced to win trophies for fastest time and best costumes. The top three finishers were announced.
- Over £7,000 was raised and distributed between several local charities, including the Children's Hospice Association Scotland and a local school.
- Volunteers are thanked for their help each year and attendees are encouraged to join the committee
1. Scheduled agents should be monitored to ensure they are running successfully on servers. A central log database can be used to store status documents from agents and alert if reports are overdue.
2. Logging is important for scheduled agents but the NotesLog model can result in large log files. It is better to develop a "ticker-tape" style log facility that stores each log entry in a small document.
3. When designing scheduled agents, consider how to handle processing large amounts of data within the limited runtime. The agent may need to run multiple times and checkpoint processing to avoid timeouts.
LSX allows LotusScript code to connect to and exchange data with external databases. It provides several methods with different performance, platform independence, and whether it requires a native client. The presentation explores using LSX to read and write data between a Notes database and an Access or Oracle database. Code examples demonstrate connecting via ODBC, retrieving records from SQL and writing them to Notes documents, and inserting Notes document fields into SQL tables. Overall LSX provides a way to interface Notes with other databases for bulk data transfer applications.
Dev buchan everything you need to know about agent designBill Buchan
This document provides an overview of using the Lotus Notes C API security interfaces from LotusScript. It discusses two specific C API functions - REGGetIDInfo and SECKFMChangePassword. REGGetIDInfo allows you to examine an existing ID file and retrieve information such as whether it is hierarchical or a certifier. SECKFMChangePassword is used to change a password on an ID file. The document includes LotusScript code examples for calling these functions and retrieving the returned values. It defines several constants needed to specify the type of information to retrieve from the ID file.
This document provides an overview of 30 tips for optimizing LotusScript development. It begins with introductions and outlines, then groups the tips into three sections: Theory, Practice, and Advanced. The Theory section covers 10 fundamental tips regarding best practices like using Option Declare, version control, application lifecycles, code structure, testing, and error handling. The Practice section presents 10 tips that should be implemented regularly, such as defensive coding, extending arrays, logging, and using NotesDateTime. The Advanced section introduces more complex topics like custom classes and binding. The goal is to help LotusScript developers improve code quality, maintainability, and performance.
1. The document describes a workshop on developing BlackBerry applications that access Domino applications via web services.
2. It provides an overview of architectures for connecting BlackBerry and Domino, teaches how to enable a Domino application as a web service, and how to use the BlackBerry MDS Studio to build a basic BlackBerry app to retrieve and display data from the web service.
3. The workshop takes attendees through lessons building their first app and then a more complex one, with the goal of teaching how to enable mobile access to Domino data on BlackBerry devices.
This document provides an agenda and overview for a training session on advanced object-oriented programming techniques for LotusScript. The session will cover why OOP is useful, basic OOP concepts, and then more advanced techniques like inheritance, polymorphism, singleton patterns, and strategies for organizing large codebases. The goal is to help developers improve code quality, reuse, efficiency and robustness by leveraging OOP principles in LotusScript applications.
This document summarizes a presentation on leveraging object-oriented programming techniques in LotusScript. It introduces object-oriented concepts like classes, objects, and encapsulation. It then walks through building an application to monitor news sites for company mentions using a class to represent each site and a nested class to represent individual news items. The presentation demonstrates encapsulating the news item class within the site class and using inheritance by extending all classes from a base class. It shows how to make the application more robust by adding logging through the base class.
This document outlines an agenda for a talk on 30 LotusScript tips. It begins with an introduction that explains the structure of the talk and why it will cover 30 tips. The agenda is then broken into sections on fundamental tips ("Nursery Slopes"), less well known everyday tips, and more advanced tips to provoke thought. Each section provides 10 tips on topics like using Option Declare, templates and versions, error handling, classes, and performance coding. The document aims to share a variety of LotusScript best practices and techniques.
Bill Buchan will present on consuming and providing web services using Domino. The presentation will cover using Domino to provide SOAP-based web services, using Notes to consume web services, using XPages to provide REST-based web services, and consuming web services from C#. The goal is to help Domino developers get started with or enhance the web services capabilities in their environments.
The document provides a 12 step guide to writing effective LotusScript code. The steps include how to code for maintenance, testing code often and completely, spending time planning before coding, using defensive coding practices, leveraging built-in data types like Lists and NotesDateTime, and using logging and error handling techniques. Following the guide is intended to help produce code that is easier to maintain, has fewer bugs, and higher performance.
Everything you ever wanted to know about lotus scriptBill Buchan
Bill Buchan, a CEO and consultant with experience in LotusScript since 1995, gave a presentation on LotusScript. He discussed that LotusScript is an older language that is no longer a priority for development. However, it is still used to maintain many existing Domino applications. The presentation covered LotusScript basics like variables, classes, lists and the NotesSession object. It also discussed advanced topics such as calling C APIs, using the Execute statement, and creating web services with LotusScript.
This document discusses two methods for implementing single sign-on (SSO) between Active Directory and Domino: the Websphere plugin method and the SPNEGO method. The Websphere plugin method uses IIS as a front-end and relies on Kerberos tickets to pass authentication to Domino. The SPNEGO method implemented directly in Domino 8.5.1 and above also relies on Kerberos but does not require IIS. The document provides high-level overviews of how each method works and their relative pros and cons.
The presentation "Development for Administrators" was presented at AdminCamp 2006 in Germany, and a revised version presented at SoftSphere in Frankfurt in October 2007. This presentation intends to show Administrators:
Introduce proper development, UAT and production environments
show some basic @Formula language agents
Show some basic LotusScript functions
The document appears to be a presentation about worst practices in IT systems. It discusses several "case studies" or examples of things going wrong. The first case discusses a large organization where users stopped receiving new email due to a flag being incorrectly set in the mail template. The second case discusses archiving issues at another large organization where the archive server was down for weeks without notice. The third case discusses a router crashing multiple times due to an untested agent created in the mail template.
The document contains the 11 commandments for administrators and developers working with Lotus Notes and Domino. It discusses important principles for each role, such as change control, security practices, writing maintainable code, understanding versions, and monitoring systems. The speakers provide guidance and warnings about common problems that can occur when these best practices are not followed.
2. What We’ll Cover …
• Introduction
• Architectures
• The LotusScript eXtension toolkit
• Platform differences
• Calling simple Notes C API
• Complex Notes C API
• Wrap-up
2
3. Target and Purpose
• Who is the target audience?
Advanced Lotus Notes Developers
Developers who have a little experience in C API
• What is this about?
This talk aims to demonstrate advanced LotusScript, showing:
The Notes C API interface
The LSX interface
Pros and cons of each
3
4. Notes C API
• Why Notes C API?
900+ Supported Methods
Many complex tasks can be called via API
• Who am I?
Bill Buchan
Dual PCLP in v3, v4, v5, v6, v7
Ten+ years senior development consultancy for
Enterprise customers
Learn from my pain!
Five+ years code auditing
CEO of HADSL — developing best-practice tools
4
5. Notes C API Programming Toolkit
• Where can you find information on the C API?
The Lotus Notes C Programming toolkit
• The toolkit contains:
Contains two documentation databases
Each function and structure is documented
A large number of sample C programs are included
Compile time libraries for all platforms
• Generally speaking, backward compatibility is good:
For instance, if you have v6 and v7 servers, creating the
program using v6 of the API toolkit means that it will run
on v6 and v7 servers
Note
5
6. What We’ll Cover …
• Introduction
• Architectures
• The LotusScript eXtension toolkit
• Platform differences
• Calling simple Notes C API
• Complex Notes C API
• Wrap-up
6
7. Notes/Domino Architectures
• Domino is a multi-platform server product
• Notes now supports four clients:
Windows, Mac (Power PC), Mac (Intel), and Linux
• LotusScript supported from v4.x of Notes, on all server
and client platforms
Rich set of APIs for general business logic
Robust, supported environment for general business
applications
Amazing level of multi-platform support
• What if you want to go further?
Exploit a piece of Notes C API interface? Don't
Forget
Call a platform specific DLL?
7
8. But Surely
• Currently, something like:
90% of all Domino servers run on Windows
95% of all Notes clients run on Windows
• Why not write platform code for that and that alone?
A short sighted decision. Your environment may start
supporting more platforms.
Windows 64-bit coming over the horizon
Treat it as a separate platform
As was 16-bit Windows GOTCHA!
• Corporate push to centralize and consolidate
Especially on medium-high level platforms
Linux, Solaris, AIX, HP/UX
8
9. Be Pragmatic — The Skills Triangle
Few Code Examples
Harder
C-API
LotusScript, Java
Easier
Many Code Examples
9
10. Be Pragmatic
• Call the Notes C API from LotusScript if:
You cannot find a supported architectural solution
You have the skills to support LSX and/or Notes C API coding
You might possibly require multi-platform code
You accept that this code will be harder to write, harder to
maintain, and harder to support
10
11. Architectures — Conclusion
• If you have to step outside the comfort zone,
you have two choices:
LotusScript eXtension Toolkit — LSX
This builds a library — on windows, a DLL — which
allows you to extend LotusScript with custom C code
Fairly straightforward
A different version for each platform
LotusScript calling the Notes C API interface directly
Not straightforward
One code base can cover all platforms
11
12. What We’ll Cover …
• Introduction
• Architectures
• The LotusScript eXtension toolkit
• Platform differences
• Calling simple Notes C API
• Complex Notes C API
• Pros and cons
12
13. What Is the LSX Toolkit?
• A C-based API for Lotus Notes
• Interfaces with LotusScript
• Allows you to build platform-specific libraries
• Pros
Straightforward for a competent C Programmer
• Cons
Platform — and sometimes version(!) — specific
You have to produce a version (from the same source code)
for each platform
Lack of support
Last release — March 2001
Note Visual Studio 2005 not supported
13
14. What Can You Use the LSX Toolkit for?
• Used to use it for Notes Database work
We have a Notes Database installer which unpacks,
design refreshes, sets ACLs, etc.
Initially coded that as LSX
Now use LotusScript calls to Notes C API directly
Deployment of LSXs is non-trivial
Especially updating LSXs that are in use!
• Still use it for Active Directory Integration
AD integration possible using LotusScript/COM
interface — but unreliable
Coded Active Directory Services Interface (ADSI) to manage
objects within AD — from within LotusScript!
14
15. How Can You Create an LSX With the Toolkit?
• Design a data structure you wish to expose
in LotusScript
• Use the LSX Wizard to create a relevant LSX project
• Use a supported C-Compiler for your platform(s) to
create code to fill in the blanks
• Run Do_It to compile your library
Windows produces a .DLL file
*nix produces a .so file
• Place that library in the executable code directory
of your server and/or client
• Test, test, test! 16-bit
15
23. LSX Wizard (8)
• Now fill in the code in the LSX source files
//{{LSX_AUTHOR_CODE_Include_1
//}}
#include "DbReplicaFlags.hpp"
// includes for the objects defined in your LSX
//{{LSX_AUTHOR_CODE_Include_2
//}}
23
24. LSX Wizard (9)
• Now fill in the code in the LSX source files
DbReplicaFlags:: DbReplicaFlags(
LSPTR(LSXLsiSession) pContainer, LSXString&
Server, LSXString& Database)
: LSXBase((LSPLTSTR)"DbReplicaFlags",
pContainer->LSXGetInstance(),
CDBREPLICAFLAGS_DBREPLICAFLAGS_ID,
pContainer)
//{{LSX_AUTHOR_CODE_Additional_Base_Class_Init1
//}}
//{{LSX_AUTHOR_CODE_Internal_Member_Init1
//}}
{
//{{LSX_AUTHOR_CODE_Constructor1
//}}
}
24
25. LSX Wizard (10)
• Run a command prompt
Go to the LSX directory
Run LSXSetup W32
Run cd DbReplicaFlags
Run Do_it
This will compile the DLL file
Copy the DLL from lsxbinw32DbReplicaFlags.dll to
your Notes Program Directory
• Note:
The Notes client (or server) usually holds onto the DLL
once loaded, so refreshing the LSX usually requires a
client (or server) restart
25
26. LSX Wizard (11)
• Create a LotusScript Agent
Uselsx “DbReplicaFlags.dll” ' in 'Options'
Sub Initialize
Dim DR As New DbReplicaFlags("", "names.nsf")
Dim value As Integer
If dr.GetDbReplicaFlag(REPLFLG_DISABLE, value) Then
If (value) Then
Print "Replica Disable is set to 'TRUE'"
Else
Print "Replica Disable is set to 'False'"
End If
Else
Print "I failed to get the replica flag "
End If
Call dr.NSFDbClose()
End Sub
26
27. LSX Wizard (12)
• As a side effect of loading the LSX
The LSX signature is now available in the designer
27
29. LSX Summary
• LSX Toolkit is fairly straightforward
• Since the LSX Toolkit supports multiple platforms
and the same source code is used on each:
You do have to recompile the LSX on multiple platforms
You don’t have to take account of many platform differences
• It’s really relevant for extending your Notes/Domino
code to new APIs
e.g., You can call Active Directory API calls in order
to integrate Domino with Active Directory
29
30. What We’ll Cover …
• Introduction
• Architectures
• The LotusScript eXtension toolkit
• Platform differences
• Calling simple Notes C API
• Complex Notes C API
• Wrap-up
30
31. Platform Differences: Definitions
• In normal LotusScript, platform differences
are taken care of
Even in LSX programming most differences are taken care of
Not so in direct LotusScript to C API calls
• Each platform represents data in a subtly
different manner
For instance, the HANDLE datatype has different lengths
on different platforms:
32 bits long in Windows and OS/400
16 bits long on AIX, Macintosh, etc.
Memory alignment widths on iSeries are different
from other platforms
31
32. Platform Specific implementations
• In order to call the Notes library, you will have to link to
different library files on each platform:
Windows/32: nnotes.dll
Solaris, Linux: libnotes.so
AIX: lnotes_r.a
HPUX: libnotes.sl
MacOs, OS/X: NotesLib
OS/400: libnotes.srvpgm
OS/390 libnotes
OS/2: lnotes.dll
Windows Alpha: anotes.dll
32
33. Platform Differences: Endians
• Endians
Some platforms represent multi-byte numbers with the lowest
value bytes in the lower segments of memory — little endians
Macintosh (on PowerPC!) represents the larger value bytes in
the lower segments of memory — big endians
33
34. Coding for Platform Differences
• Our challenge is to construct a code sequence that:
Knows which platform it’s running on
Makes calls to the platform-specific library file
Understands platform differences in terms of alignment
and data item size
And most importantly — fails “safe” when presented with
a new platform that it cannot deal with
• This is not a trivial exercise
My estimate is that this exercise will take at least 5-10 times
more effort — development + testing — than a normal
LotusScript business function
34
35. Decoding Signatures
• A “Signature” is:
The definition of a function calls' parameters and return value
These can be found in the Notes “C API 7.0 Reference for
Domino and Notes”, at www-10.lotus.com/ldd/notesua.nsf/0b
345eb9d127270b8525665d006bc355/6a92a658297e6baf852571
a3007143be?OpenDocument
Example signature:
STATUS LNPUBLIC NSFNoteLSCompile(
DBHANDLE hDb, NOTEHANDLE hNote, DWORD dwFlags);
In Windows:
Declare Function W32_NSFLSCompile Lib LIB_W32
Alias "NSFNoteLSCompile"
ByVal hdb As Long,
ByVal hNote As Long,
ByVal null1 As Long )
As Integer
35
36. Decoding Signatures (cont.)
C-API Win32 Linux AIX Solaris Mac
BYTE BYTE BYTE BYTE BYTE BYTE
BOOL Long Long Long Long Integer
Int Long Long Long Long Long
Long Int Long Long Long Long Long
WORD Integer Integer Integer Integer Integer
SWORD Integer Integer Integer Integer Integer
DWORD Long Long Long Long Long
LONG Int Long Long Long Long Long
HANDLE Long Integer Integer Integer Integer
NOTEHANDLE Long Integer Integer Integer Integer
DBHANDLE Long Integer Integer Integer Integer
MEMHANDLE Long Long Long Long Long
STATUS Integer Integer Integer Integer Integer
Char * String String String String String
36
37. What We’ll Cover …
• Introduction
• Architectures
• The LotusScript eXtension toolkit
• Platform differences
• Calling simple Notes C API
• Complex Notes C API
• Wrap-up
37
38. Calling a Simple C API Function
• Let’s get our feet wet with some simple API
No complex sequence of calls handling a shared
memory resource
A single call with simple datatypes
A call that will not result in client memory corruption
should we get it wrong. Hopefully.
• Let’s call it from Windows and ignore other platforms
A function that tells you the network latency — in milliseconds
— between the current Notes instance and a target server
NSFGetServerLatency
38
39. NSFGetServerLatency() – API Reference
• We shall call:
NSFGetServerLatency()
This returns the network latency time described in
milliseconds for a call to a remote server
Useful to decide which server is closest in terms of
network response
Its signature from the C API reference is:
STATUS LNPUBLIC NSFGetServerLatency(
char far *ServerName,
DWORD Timeout,
DWORD far *retClientToServerMS,
DWORD far *retServerToClientMS,
WORD far *ServerVersion);
39
40. NSFGetServerLatency() – API Reference (cont.)
• From the C API Reference:
Input Parameters
ServerName — Null-terminated string containing the name
of the server to query
Timeout — Number of milliseconds to wait for a reply from the server.
A timeout of 0 indicates that the default timeout value is to be used.
Output Parameters
(routine) — Return status from this call:
NOERROR — Success
retClientToServerMS — Optional — If not NULL, the number of
milliseconds required to send the request to the server is
stored at this address
retServerToClientMS — Optional — If not NULL, the number of
milliseconds required for the reply to return from the server
is stored at this address
ServerVersion — Optional — If not NULL, the server version
(the Domino build number for the server) is stored at this address 40
41. Simple C API Calling
' This is a constant for our windows-based
' Library file:
Const LIB_W32 = "nnotes.dll"
' Declare our function for windows
Declare Function W32_NSFGetServerLatency _
Lib LIB_W32 Alias {NSFGetServerLatency} (_
Byval ServerName As Lmbcs String, _
Byval Timeout As Long, _
retClientToServerMS As Long, _
retServerToClientMS As Long, _
ServerVersion As Integer) As Integer
41
42. Simple C API Calling: Execution
' A function to get network latency time...
Public Function getServerLatency _
(strServer As String) As Long
Dim nnServer As New NotesName(strServer)
Dim ToServer As Long, fromServer As Long
Dim ver As Integer
Dim timeout As Long
timeout = 1000 ' 1000ms == 1 second
Call W32_NSFGetServerLatency(nnServer.Canonical,_
timeout, toServer, fromServer, ver)
' Return both directional latencies added together
getServerLatency = fromServer + ToServer
End Function
42
43. Simple C API Calling: Execution (cont.)
Sub initialise
Print “Calling function”
Print “Latency is: “ + _
cstr(getServerLatency(“domino-
90.hadsl.com/HADSL/US”))
Print “Finished calling”
end sub
43
44. Simple C API Calling: The Results
• Running the agent “Example1” in the database produces
the following runtime output:
• Now — this is not production code! It requires:
Error handling
Multi-platform support
44
45. What Can’t You Call?
• Callback routines
Some Notes C API functions require you to specify mandatory
callback routines — other pieces of C API that will get called
by the target C API routine
Issue
LotusScript does not (and IMHO never will) support this
This rules out Extension Manager Routines, Menu
Addin Routines
In terms of callback routines that allow you to specify optional
callbacks (progress status indicators, etc), you can pass in
NULL (or ZERO), and the callback function will be ignored
45
46. What We’ll Cover …
• Introduction
• Architectures
• The LotusScript eXtension toolkit
• Platform differences
• Calling simple Notes C API
• Complex Notes C API
• Wrap-up
46
47. Defining Complex C API
• Complex C API is where:
More than one function call is required to perform a task
and/or
A HANDLE of some description is needed to
reference a data object
47
48. API Handles
• A handle is a numeric reference to a structure in memory
that the C API interface has created
For example, a handle to a Notes Database
• You do not deal with the memory structure itself —
you deal with the handle to the memory structure
Example: NSFDbOpen()creates a new memory structure
and gives you back the handle to that
You perform some work using NSFDInfoGet()
You close the database using NSFDbClose()
48
49. Some Rules on Handles
• There are different types of handles:
Document handle, database handle, etc.
Do not mix these handles up!
Doing so will crash the session/client/server
• Always properly close your handles
You have to properly trap all code branches
You have to keep track of the handle until you
specifically de-allocate it
Not doing so will crash the session/client/server
It may not crash immediately. It may crash when the
session, client or server closes.
• You cannot change the value of the handle
Doing so will crash the session/client/server 49
50. Coding Around Handles
• A really good way is to use a class
It performs the “open” part of the handle operation on
the class constructor
It performs the “close” part of the handle operation on
the class destructor
This means that no matter what happens, the handle
operation will be properly closed even if this is not
specifically coded in your LotusScript
All the code specific to this handle operation is
embedded in the class
And can include multi-platform code
All you see in your LotusScript is an operation with
this specific class
50
52. Handle Summary
• If you get a handle, you have to de-allocate it
• Only use handle data you know is valid
If a handle == NULLHANDLE (or ZERO), then it’s
not a valid handle
• Bonus:
NotesDocument.handle returns the current handle
You can easily use LotusScript to:
find a document
use direct calls to update information that the object
model does not support (at the moment)
e.g., Writing Notes Replica Items
52
53. Complex C API
• Where more than one function call is required to
perform a function, it is recommended that:
You use defensive coding techniques to understand and
make “safe” every single coding branch possible
Any handle information used during this sequence is kept
safe and its de-allocation specifically catered for
You use classes to ensure proper construction and
destruction of handle information
53
54. What We’ll Cover …
• Introduction
• Architectures
• The LotusScript eXtension toolkit
• Platform differences
• Calling simple Notes C API
• Complex Notes C API
• Wrap-up
54
55. Know Your Battleground
• LotusScript coding is:
Fairly straightforward
Supported
Platform independent
• Stepping outside of this comfort zone is going to be hard
Take far more time in development and testing
Push development resources to the limit
Only do this if you have an absolute business need
55
56. LSX Versus Notes C API
• You need to establish, based on your requirements,
which is the best fit:
LS calling Notes C-
Feature LSX API directory
Requires code No Deployment
Deployment deployment required
Different LSX for each
Multi-platform platform Same code in Library
Very good integration –
C-API integration callbacks, etc Basic integration
Code Difficulty Medium Hard
Stability Extremely Stable Stable
56
57. Resources
• Normunds Kalnberzin, “LotusScript to Lotus C API
Programming Guide,” www.Ls2Capi.com
The ultimate reference
Ebook for €18, Book + shipping for €42
It pays for itself in a single hour
• Notes C API Reference, LSX Toolkit
http://www-
128.ibm.com/developerworks/lotus/downloads/toolkits.html
• Julian Robichaux, “Notes API Tips,”
www.nsftools.com/tips/APITips.htm
Lotus Notes API tips
57
58. 7 Key Points to Take Home
• Calling Notes C API is hard
It has to be tested on all platforms
It can easily take out a client or server process
Only use it if absolutely required
Use defensive coding!
It’s the next stage beyond the well-regulated
LotusScript sandbox
It might be simpler to use LSX than Direct
LotusScript to C API calls
You certainly get more control and debugging
It gives you all possible Notes capability
58
59. Your Turn!
Questions?
How to Contact Me:
Bill Buchan
Bill@hadsl.com
59