This document provides an overview of getting started with Wonder, an open source project for WebObjects. It discusses installing Wonder binaries and source code, the benefits of using Wonder including bug fixes and extended functionality, and how to integrate Wonder into existing WebObjects applications. It also demonstrates configuring common Wonder features like ERXProperties and overriding prototypes.
This document discusses filtering data in Direct to Web (D2W) by limiting the visibility of data based on the current user or company. It presents two solutions:
1. Modifying fetch specifications at the editing context level to add relationship qualifiers restricting results to the current company. This works but is low-level.
2. Using query and relationship components in D2W that call business logic to generate the appropriate qualifiers and restricted data sources. This provides a cleaner, more reusable approach compared to the first solution.
The document also discusses enhancing relationship components to support restricting fetch specifications to simplify generating qualifiers across different entities and relationships. In summary, it focuses on programmatically filtering data in D2
This document outlines an agenda for a WebObjects optimization conference on June 30 - July 2, 2012 in Montreal. The sessions will cover optimizing WebObjects applications from the browser to the database including techniques like caching, batch fetching, SQL monitoring and more. Chuck Hill from Global Village Consulting will discuss strategies for optimizing applications beyond the end-of-model including tools like ERXEnterpriseObjectCache and ERXBatchingDisplayGroup. Time will also be spent on database tuning, avoiding unnecessary relationships in models and leveraging raw rows when appropriate.
Beyond Fluffy Bunny. How I leveraged WebObjects in my lean startup.WO Community
This session will go over why I chose WO and WOnder as my application foundation, and how I applied the best practices from some of the best in our business to build my product. How I setup my applications and frameworks to maximize reuse and flexibility. And I will review other processes that allows me to run my business as a one plus (?) person shop.
The document discusses various developer tools for the WebObjects framework. It provides information on available versions of WOLips, what's new in the latest version, how to link to WebObjects javadoc documentation, how to decompile code on the fly in Eclipse, and two in-browser tools - ERProfiling and SnapshotExplorer. ERProfiling helps profile application performance at the page level, while SnapshotExplorer allows browsing application snapshots to see what the object graph looks like compared to the database.
Presentation given at FITC Amsterdam 2012.
AIR has been the cross device platform to deploy interactive applications. This session shows you how you can extend the default capabilities and add native interaction and performance to your applications.
An annotation framework was developed for the Fedora repository system to allow for the creation, querying, and serialization of annotations on digital objects stored in Fedora. The framework uses the Open Annotation data model and includes a Jython web service that allows users to create and retrieve annotations and their associated metadata and bodies in various formats without any modifications to Fedora. It also listens for annotation updates in Fedora's message queue. The framework was demonstrated in a prototype application that could annotate TEI texts in Fedora.
This document discusses making semantic technologies more accessible to non-experts by combining data semantics, mathematical theories of declarative knowledge, and application semantics expressed in English. It proposes a browser-based system for writing and running applications using business rules in open vocabulary English. Examples demonstrate resolving semantic differences between retailer and manufacturer ontology data and answering questions about oil industry SQL data, both through English explanations. The goal is to bridge the gap between people and machines through natural language.
This document discusses filtering data in Direct to Web (D2W) by limiting the visibility of data based on the current user or company. It presents two solutions:
1. Modifying fetch specifications at the editing context level to add relationship qualifiers restricting results to the current company. This works but is low-level.
2. Using query and relationship components in D2W that call business logic to generate the appropriate qualifiers and restricted data sources. This provides a cleaner, more reusable approach compared to the first solution.
The document also discusses enhancing relationship components to support restricting fetch specifications to simplify generating qualifiers across different entities and relationships. In summary, it focuses on programmatically filtering data in D2
This document outlines an agenda for a WebObjects optimization conference on June 30 - July 2, 2012 in Montreal. The sessions will cover optimizing WebObjects applications from the browser to the database including techniques like caching, batch fetching, SQL monitoring and more. Chuck Hill from Global Village Consulting will discuss strategies for optimizing applications beyond the end-of-model including tools like ERXEnterpriseObjectCache and ERXBatchingDisplayGroup. Time will also be spent on database tuning, avoiding unnecessary relationships in models and leveraging raw rows when appropriate.
Beyond Fluffy Bunny. How I leveraged WebObjects in my lean startup.WO Community
This session will go over why I chose WO and WOnder as my application foundation, and how I applied the best practices from some of the best in our business to build my product. How I setup my applications and frameworks to maximize reuse and flexibility. And I will review other processes that allows me to run my business as a one plus (?) person shop.
The document discusses various developer tools for the WebObjects framework. It provides information on available versions of WOLips, what's new in the latest version, how to link to WebObjects javadoc documentation, how to decompile code on the fly in Eclipse, and two in-browser tools - ERProfiling and SnapshotExplorer. ERProfiling helps profile application performance at the page level, while SnapshotExplorer allows browsing application snapshots to see what the object graph looks like compared to the database.
Presentation given at FITC Amsterdam 2012.
AIR has been the cross device platform to deploy interactive applications. This session shows you how you can extend the default capabilities and add native interaction and performance to your applications.
An annotation framework was developed for the Fedora repository system to allow for the creation, querying, and serialization of annotations on digital objects stored in Fedora. The framework uses the Open Annotation data model and includes a Jython web service that allows users to create and retrieve annotations and their associated metadata and bodies in various formats without any modifications to Fedora. It also listens for annotation updates in Fedora's message queue. The framework was demonstrated in a prototype application that could annotate TEI texts in Fedora.
This document discusses making semantic technologies more accessible to non-experts by combining data semantics, mathematical theories of declarative knowledge, and application semantics expressed in English. It proposes a browser-based system for writing and running applications using business rules in open vocabulary English. Examples demonstrate resolving semantic differences between retailer and manufacturer ontology data and answering questions about oil industry SQL data, both through English explanations. The goal is to bridge the gap between people and machines through natural language.
This document summarizes a lecture on iPhone application development. It discusses Objective-C and the Foundation framework. It also covers announcements about the enrollment process and office hours. Key topics from the lecture include Objective-C classes and instances, inheritance, messaging syntax, and common Foundation classes like NSString and NSObject.
The document discusses the Otago VRE, a virtual research environment built on SharePoint 2010. It allows for integrated data management, authoring, analysis, sharing and visualization. Key capabilities include integrated workflow experiences through Project Trident, article authoring through Word add-ins, data deposit through SWORD clients, data analysis through Excel, data sharing through OData protocols, and data visualization through tools like Pivot.
Xcore meets IncQuery: How the New Generation of DSLs are MadeIstvan Rath
Slides for the presentation at EclipseCon Europe 2013.
For more details, see
http://www.eclipsecon.org/europe2013/xcore-meets-incquery-how-new-generation-dsls-are-made
http://incquery.net/blog/2013/10/xcore-meets-incquery-how-new-generation-dsls-are-made-talk-eclipsecon-europe-2013
Pharo 3 was released in April 2014 with over 2300 issues closed and 850 updates. Pharo 4 is scheduled for release in Spring 2015 and is already very stable with over 175 updates and 480 issues closed. Key ongoing work includes first class variables, advanced reflection, one file Pharo, Epicea to replace the .changes file, and putting sources directly in the image to simplify deployment. Pharo development remains very active with improvements across many areas.
Making Fedora easier to implement with Fezmrangryfish
Kortekaas, Christiaan Gerard (2007). Making Fedora easier to implement with Fez. In: Webster, Keith and Bennett, Andrew Open Repositories 2007, San Antonio, Texas USA, (1-47). 23-26 January, 2007.
The University of Queensland, Australia has developed Fez, a world-leading user-interface and management system for Fedora-based institutional repositories, which bridges the gap between a repository and users. Christiaan Kortekaas, Andrew Bennett and Keith Webster will review this open source software that gives institutions the power to create a comprehensive repository solution without the hassle.
Alternative location: http://espace.library.uq.edu.au/view/UQ:11924
Reactive summit 2020 microsoft orleans the easy wayJohn Azariah
This document discusses Microsoft Orleans and provides an overview of getting started with Orleans, including setting up a development environment and deployment workflows. It introduces Orleans Universal Silo, an open source project that provides templates and targets to simplify Orleans development. Templates are provided to generate a basic web API project along with targets for local development, testing, building Docker images, and deploying to Kubernetes or Azure Kubernetes Service (AKS).
This document discusses Eclipse 4.0 and the e4 project. It provides an overview of why e4 was created, including to innovate Eclipse and prepare it for the web. It describes the key aspects of e4, including the modeled workbench, dependency injection, declarative styling using CSS, and a compatibility layer for Eclipse 3.x plugins. The presentation concludes by discussing where to learn more about e4.
This document discusses using Django for enterprise web applications. It begins with a brief overview of Django's core features like models, views, templates and forms. It then discusses aspects of enterprise applications including multi-tier architectures, web services, transactions, security and asynchronous messaging. The document argues that many enterprise needs can be met with Django and other Python tools while keeping things simple. It addresses potential concerns about scalability, deployments and monitoring Python applications in production.
This document is a student's assignment submission for a semantic web course. It includes the student's name and details, followed by their responses to several questions about widely used ontologies on the Web of Data, formats for embedding structured data into HTML, the implication of using owl:sameAs, approaches for connecting semantic web resources, whether a resource can have multiple representations, and developing an RDFa web page with external ontologies.
Building a Lightweight Discovery Interface for China's Patents@NYC Solr/Lucen...OpenSource Connections
The document discusses building a lightweight discovery interface for Chinese patents using Solr/Lucene. It describes parsing various patent file formats using Tika and building custom parsers. It also emphasizes the importance of making the search solution accessible by allowing users to export data and share results.
This document discusses using Django for enterprise web application development. It begins with a brief overview of Django's features like models, views, templates, forms and administration. It then discusses concepts for enterprise applications, including multi-tier architectures, web services, transactions, and scalability. The document argues that for enterprise needs, Django provides many core capabilities while keeping things simple, and alternatives like Java frameworks promote unnecessary complexity. It raises questions about monitoring and performance management for Python in production.
Architecting Smarter Apps with Entity FrameworkSaltmarch Media
This document discusses how to architect smarter applications using Entity Framework. It recommends using POCOs to separate domain classes from data access for testability and reusability. It also suggests implementing IObjectSet/IDbSet interfaces to build agnostic repositories. This allows preserving testability while still using Entity Framework functionality like change tracking through interfaces. The document concludes that while EF defaults allow quick development, it can also support reusable architectures with testable classes and repositories when using POCOs and interfaces.
Devoxx France 2013 Cloud Best PracticesEric Bottard
- Cloud best practices include automating database migrations, avoiding vendor lock-in, treating all environments identically, and using frequent deployments to upgrade applications with zero downtime.
- Other best practices are to limit HTTP traffic, have no file system, strive for statelessness, automate scaling in a targeted and custom way, and achieve loose coupling between components.
- Blue/green deployments allow rolling out new application versions without downtime by routing traffic between two identical environments running different versions. Automated testing of new versions on a subset of users is also recommended.
The document discusses design patterns and their history. It mentions that design patterns were first documented by Christopher Alexander in the 1970s and later defined by the "Gang of Four" (GoF) in their 1994 book Design Patterns: Elements of Reusable Object-Oriented Software. The document then provides descriptions of what a design pattern is, why they are used, their different purposes (creational, structural, behavioral), and scope (class vs object level). It also includes brief summaries of some specific design patterns like Singleton, Factory Method, Abstract Factory, Builder, Prototype, Facade, Proxy, Adapter, and Bridge.
Stackato presentation done at the Nordic Perl Workshop 2012 in Stockholm, Sweden
More information available at: https://logiclab.jira.com/wiki/display/OPEN/Stackato
JavaScript has a well deserved reputation of be hard to write and debug. Put it on a mobile device and the problems increase exponentially. Mobile browsers lack all of the niceties that developers rely on to do testing and debugging including the most fundamental tool, the debugger. But it is possible to write quality JavaScript on a mobile device without relying on blind luck. In this talk I will show all of the tools and tricks that I learned in my 12 month development of the new KBB.com mobile site.
This document describes KAAccessControl, a framework for managing user access control and permissions. It provides concise summaries in 3 sentences or less that provide the high level and essential information from the document.
The framework allows defining roles, profiles, lists and managing user permissions through annotations and configuration files. It handles authentication but does not provide the authentication mechanism. The framework manages the current user's profile and permissions and allows impersonating other users through its user service class. Components check permissions by annotating allowed roles and querying the framework's access control services.
The document describes an in-memory OLAP engine created by Samuel Pelletier to enable fast querying of multidimensional data with millions of facts. It loads data into memory as plain old Java objects (POJOs) for faster access compared to entity objects or SQL queries. Dimensions are modeled as classes to index the facts and compute summarized results. The engine is multithreaded and designed for simplicity and minimal dependencies.
This document summarizes a lecture on iPhone application development. It discusses Objective-C and the Foundation framework. It also covers announcements about the enrollment process and office hours. Key topics from the lecture include Objective-C classes and instances, inheritance, messaging syntax, and common Foundation classes like NSString and NSObject.
The document discusses the Otago VRE, a virtual research environment built on SharePoint 2010. It allows for integrated data management, authoring, analysis, sharing and visualization. Key capabilities include integrated workflow experiences through Project Trident, article authoring through Word add-ins, data deposit through SWORD clients, data analysis through Excel, data sharing through OData protocols, and data visualization through tools like Pivot.
Xcore meets IncQuery: How the New Generation of DSLs are MadeIstvan Rath
Slides for the presentation at EclipseCon Europe 2013.
For more details, see
http://www.eclipsecon.org/europe2013/xcore-meets-incquery-how-new-generation-dsls-are-made
http://incquery.net/blog/2013/10/xcore-meets-incquery-how-new-generation-dsls-are-made-talk-eclipsecon-europe-2013
Pharo 3 was released in April 2014 with over 2300 issues closed and 850 updates. Pharo 4 is scheduled for release in Spring 2015 and is already very stable with over 175 updates and 480 issues closed. Key ongoing work includes first class variables, advanced reflection, one file Pharo, Epicea to replace the .changes file, and putting sources directly in the image to simplify deployment. Pharo development remains very active with improvements across many areas.
Making Fedora easier to implement with Fezmrangryfish
Kortekaas, Christiaan Gerard (2007). Making Fedora easier to implement with Fez. In: Webster, Keith and Bennett, Andrew Open Repositories 2007, San Antonio, Texas USA, (1-47). 23-26 January, 2007.
The University of Queensland, Australia has developed Fez, a world-leading user-interface and management system for Fedora-based institutional repositories, which bridges the gap between a repository and users. Christiaan Kortekaas, Andrew Bennett and Keith Webster will review this open source software that gives institutions the power to create a comprehensive repository solution without the hassle.
Alternative location: http://espace.library.uq.edu.au/view/UQ:11924
Reactive summit 2020 microsoft orleans the easy wayJohn Azariah
This document discusses Microsoft Orleans and provides an overview of getting started with Orleans, including setting up a development environment and deployment workflows. It introduces Orleans Universal Silo, an open source project that provides templates and targets to simplify Orleans development. Templates are provided to generate a basic web API project along with targets for local development, testing, building Docker images, and deploying to Kubernetes or Azure Kubernetes Service (AKS).
This document discusses Eclipse 4.0 and the e4 project. It provides an overview of why e4 was created, including to innovate Eclipse and prepare it for the web. It describes the key aspects of e4, including the modeled workbench, dependency injection, declarative styling using CSS, and a compatibility layer for Eclipse 3.x plugins. The presentation concludes by discussing where to learn more about e4.
This document discusses using Django for enterprise web applications. It begins with a brief overview of Django's core features like models, views, templates and forms. It then discusses aspects of enterprise applications including multi-tier architectures, web services, transactions, security and asynchronous messaging. The document argues that many enterprise needs can be met with Django and other Python tools while keeping things simple. It addresses potential concerns about scalability, deployments and monitoring Python applications in production.
This document is a student's assignment submission for a semantic web course. It includes the student's name and details, followed by their responses to several questions about widely used ontologies on the Web of Data, formats for embedding structured data into HTML, the implication of using owl:sameAs, approaches for connecting semantic web resources, whether a resource can have multiple representations, and developing an RDFa web page with external ontologies.
Building a Lightweight Discovery Interface for China's Patents@NYC Solr/Lucen...OpenSource Connections
The document discusses building a lightweight discovery interface for Chinese patents using Solr/Lucene. It describes parsing various patent file formats using Tika and building custom parsers. It also emphasizes the importance of making the search solution accessible by allowing users to export data and share results.
This document discusses using Django for enterprise web application development. It begins with a brief overview of Django's features like models, views, templates, forms and administration. It then discusses concepts for enterprise applications, including multi-tier architectures, web services, transactions, and scalability. The document argues that for enterprise needs, Django provides many core capabilities while keeping things simple, and alternatives like Java frameworks promote unnecessary complexity. It raises questions about monitoring and performance management for Python in production.
Architecting Smarter Apps with Entity FrameworkSaltmarch Media
This document discusses how to architect smarter applications using Entity Framework. It recommends using POCOs to separate domain classes from data access for testability and reusability. It also suggests implementing IObjectSet/IDbSet interfaces to build agnostic repositories. This allows preserving testability while still using Entity Framework functionality like change tracking through interfaces. The document concludes that while EF defaults allow quick development, it can also support reusable architectures with testable classes and repositories when using POCOs and interfaces.
Devoxx France 2013 Cloud Best PracticesEric Bottard
- Cloud best practices include automating database migrations, avoiding vendor lock-in, treating all environments identically, and using frequent deployments to upgrade applications with zero downtime.
- Other best practices are to limit HTTP traffic, have no file system, strive for statelessness, automate scaling in a targeted and custom way, and achieve loose coupling between components.
- Blue/green deployments allow rolling out new application versions without downtime by routing traffic between two identical environments running different versions. Automated testing of new versions on a subset of users is also recommended.
The document discusses design patterns and their history. It mentions that design patterns were first documented by Christopher Alexander in the 1970s and later defined by the "Gang of Four" (GoF) in their 1994 book Design Patterns: Elements of Reusable Object-Oriented Software. The document then provides descriptions of what a design pattern is, why they are used, their different purposes (creational, structural, behavioral), and scope (class vs object level). It also includes brief summaries of some specific design patterns like Singleton, Factory Method, Abstract Factory, Builder, Prototype, Facade, Proxy, Adapter, and Bridge.
Stackato presentation done at the Nordic Perl Workshop 2012 in Stockholm, Sweden
More information available at: https://logiclab.jira.com/wiki/display/OPEN/Stackato
JavaScript has a well deserved reputation of be hard to write and debug. Put it on a mobile device and the problems increase exponentially. Mobile browsers lack all of the niceties that developers rely on to do testing and debugging including the most fundamental tool, the debugger. But it is possible to write quality JavaScript on a mobile device without relying on blind luck. In this talk I will show all of the tools and tricks that I learned in my 12 month development of the new KBB.com mobile site.
This document describes KAAccessControl, a framework for managing user access control and permissions. It provides concise summaries in 3 sentences or less that provide the high level and essential information from the document.
The framework allows defining roles, profiles, lists and managing user permissions through annotations and configuration files. It handles authentication but does not provide the authentication mechanism. The framework manages the current user's profile and permissions and allows impersonating other users through its user service class. Components check permissions by annotating allowed roles and querying the framework's access control services.
The document describes an in-memory OLAP engine created by Samuel Pelletier to enable fast querying of multidimensional data with millions of facts. It loads data into memory as plain old Java objects (POJOs) for faster access compared to entity objects or SQL queries. Dimensions are modeled as classes to index the facts and compute summarized results. The engine is multithreaded and designed for simplicity and minimal dependencies.
Using Nagios to monitor your WO systemsWO Community
Nagios is an open source monitoring tool that has been available since 1999. It is commonly used to monitor servers, services, and applications. The document discusses how to install and configure Nagios on various platforms like CentOS, Ubuntu, and Mac OS X. It also provides examples of how to monitor common services like HTTP, MySQL, disk space, and custom applications using Nagios plugins. Graphing and alerting capabilities are discussed as well. The presentation concludes with a demonstration and Q&A section.
This document discusses various tools and techniques for building and deploying software, including Git, Git hooks, Puppet, native packages, and Maven. It provides examples of using post-receive Git hooks to deploy code to servers, configuring Puppet modules to install packages and configure services, creating native packages with tools like fpm and Ant, and bundling deployment scripts within packages.
The document discusses various strategies for achieving high availability of web applications and databases. It covers evaluating business requirements, DNS configuration, using cloud infrastructure or owning hardware, basic setups with application and database servers, database replication and clustering options, load balancing tools for Linux and cloud environments, auto scaling features, and monitoring. The key strategies presented include replicating databases, load balancing web traffic, auto-scaling cloud resources, and configuring failover between redundant application and database servers.
This document discusses enabling SOAP web services using ERJaxWS in WebObjects. It provides examples of how to create a SOAP service from Java classes or a WSDL, call an external SOAP service, handle data mapping and custom types, define web faults, create stateful services, add security, and troubleshoot SOAP services. Resources for further information on JAX-WS, JAXB, and SOAP are also included.
Chaining the Beast - Testing Wonder Applications in the Real WorldWO Community
This document discusses the importance of testing applications in the real world. It covers various types of testing including catching regressions, checking new features, and addressing issues like incorrect data or slow page responses. Specific testing methodologies are mentioned, like verifying models and business logic. The importance of usability testing is also covered, such as checking the appearance and interactivity of applications. Automated testing tools like Selenium are recommended for testing functionality across different browsers. Building invariant test pages can help find faults and browser-specific problems.
The document discusses stateful controllers in Direct To Web (D2W) applications built with WebObjects. It provides background on D2W and how controllers were traditionally implemented using ERDBranchDelegate and NextPageDelegate. Stateful controllers improve upon this by allowing controller classes to be reused across multiple pages while maintaining state between pages. This is done by overriding branchChoicesForContext to programmatically define branch choices and storing necessary objects like the editing context. The document provides examples of how stateful controllers can implement common page flows and interactions through utility methods while keeping code DRY and reusable.
This document discusses deploying WebObjects applications on Windows. It covers setting up the Windows and WebObjects prerequisites, configuring the basic WOStart application launcher and WOSetup, demoing the setup process, and using JavaMonitor and WOTaskD to manage multiple applications across hosts. It also discusses potential issues like debugging WOStart and the WOAdaptor, using IIS or Apache as the web server, and common pitfalls in a Windows deployment. URLs are provided for downloading needed tools and components.
The document discusses WOUnit, a unit testing framework for Wonder. It provides features like mocking the editing context, creating dummy objects to bypass validations, and spying on objects. Sample tests are shown to test validation rules and relationships. WOUnit aims to make testing simple, fast and support Wonder features like editing contexts through assertions and annotations like @Rule, @Dummy and @Spy.
This document discusses alternatives to using WebObjects for developing web applications. It summarizes the key aspects of a stack that could satisfy former WebObjects developers, including:
- Dependency injection frameworks like Spring and Google Guice that allow loose coupling between classes.
- HTML frameworks like Tapestry that are similar to WebObjects in allowing infinitely nestable page components.
- JAX-RS as a REST framework specification implemented by libraries like Jersey that maps HTTP requests to Java methods.
- Migrating from WebObjects by keeping its philosophies but rewriting code from scratch using these new frameworks, with tools to import existing data models and port components like DirectToWeb and DirectToJavaClient.
Apache Cayenne is an open source object-relational mapping framework for Java. It has been an Apache project since 2006 and has over 17 committers and 9 project management committee members. Cayenne provides tools for mapping database schemas to Java objects and vice versa, as well as tools for querying, caching query results, and handling object lifecycles. It aims to simplify working with relational databases for Java developers in a similar way to how Enterprise Objects Framework simplified it for Objective-C developers.
This document provides an overview and demonstrations of advanced Apache Cayenne concepts including:
1. Reusing Cayenne and service code between admin apps and discussing object context management.
2. Lifecycle events can be received via callbacks or listeners, with callbacks used for simple initialization and listeners for more complex workflows.
3. Caching in Cayenne includes object caching of entities by ID and query caching of result lists by generated keys, with local caching at the context level and shared caching at the domain level.
4. Demonstrations of object caching, query caching, and turning off cross-context synchronization, using query caching with expiration policies, and considering optimistic locking for performance.
The document discusses the steps for migrating an existing project to Wonder, including:
1) Moving the codebase to Git version control for branching during the migration process.
2) Preparing the codebase by adding packages, creating custom subclasses for components like the editing context and direct actions, and renaming any enum collisions.
3) Starting the actual wonderization by importing Wonder frameworks and removing duplicate jars.
This document discusses iOS application architecture and REST client implementation. It covers common iOS concepts like MVC, UIKit, table views and their data sources. It also describes a Comet architecture using a REST API and database to retrieve and display product data in a table. The controller implements the table view data source and delegate methods to display the data and handle user interactions like tapping rows.
This document discusses using iOS apps as clients for ERREST servers. It provides an example architecture of an iOS app connecting to an ERREST backend using REST calls. It also includes code snippets showing how to make REST requests using classes like PLRestful and CometAPI that handle the network requests and JSON parsing. The document is intended to explain how to build iOS clients for existing ERREST backends rather than how to code the iOS apps themselves.
This document discusses the "Framework Principal" pattern which allows optimizing resource usage across multiple applications by initializing shared services and configurations in a single starter class. The Framework Principal runs very early and can be used to launch services independently of any application based on configuration properties. It provides examples of how to configure different applications to use the same Framework Principal by specifying different property files and user names for production vs sandbox environments. This allows launching shared services only once across multiple applications rather than separately in each one.
The document discusses the WOver, a small mobile robot built using a Raspberry Pi single board computer connected via serial interface to control an Asuro driving module. It provides instructions to connect to its WiFi network and control interface webpage to drive the robot. Details are given on the hardware components used, including the Raspberry Pi, Asuro driving module, and custom operating system on the module to receive motor control commands from the Raspberry Pi. Potential next steps discussed include adding database, games, sensors, power management, camera, and benchmarks.
Localizing your apps for multibyte languagesWO Community
This document discusses considerations for localizing apps to support multibyte languages. It covers setting the encoding in Eclipse, Ant builds, and database connections to UTF-8. It also discusses features of Japanese like reading direction from right to left, lack of word spacing, and the different character sets of kanji, hiragana, katakana and their encodings. The document recommends converting all characters to single byte widths before storing in databases for ease of use and searching.
WOdka is a WebObjects framework that was originally developed in Japan. It includes several frameworks like AuditTrail, JQueryMobileD2W, and ModernistD2W. WOdka has a unified dashboard for developers and administrators. It provides features like logical delete, roles and permissions, and integration with NotificationCenter. WOdka supports modern techniques like CSS3, multi-language, and REST. It is actively developed and maintained by developers in Japan and internationally.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
Choosing The Best AWS Service For Your Website + API.pptx
Getting Started with Wonder
1. Getting Started with Wonder
Kieran Kelleher WOWODC 2010 Montreal
Green Island Consulting LLC
SmartleadsUSA LLC
SmartMix Technologies LLC
Friday, September 3, 2010
2. Getting Started with Wonder
• Get you started using Wonder
• Wonder installation and upgrade - Binaries and Source
• Create a Wonder Application
• Convert existing non-Wonder to a Wonder Application
• Review a few useful features of Wonder
• ERXProperties, Properties files usage, ERXEC usage
• ERPrototypes and Overriding prototypes
Friday, September 3, 2010
3. What Is It?
• World’s largest Open Source WebObjects project
• Umbrella Project for
• Patches and Bug Fixes to WebObjects
• Very Useful Extensions to Standard WebObjects Functionality
• Reusable WOComponents
• Powerful Reusable Frameworks
• Example Applications
* Some verbiage reproduced from Jonathon “Wolf” Rentzsch’s 2002 CAWUG Presentation
Friday, September 3, 2010
4. Brief History Snippet
• A long long time ago in a galaxy far far away...
• dotcom: “eResource” (“ER*”), then became NetStruxr
• WOnder is acronym for
• WebObjects Nodes for Distributing E-Resources
• NetStruxr closed
• SourceForge project named WONDER was created (~2002)
Friday, September 3, 2010
5. What’s in It
GoogleChart ERChronic ... and much more! (db *)PlugIn ERModernLook
ERTaggable ERCaptcha ERProfiling ERIndexing ERModernDefaultSkin
ERAttachment ExcelGenerator ERPDFGeneration ERRest ERModernD.T.W.
Ajax JavaWOExtensions WOOgnl WOJRebel ERNeutralLook
ERExtensions ERJars ERPrototypes ERJavaMail ERDirectToWeb
Friday, September 3, 2010
6. Why Should You Use It?
• Bug fixes to standard WebObjects frameworks
• Even Apple uses Wonder (Branch 2_0_0?)
• Improved and Replaced Functionality
• Extended and Additional Functionality
• The source code has an educational benefit
• Why reinvent and debug the wheel?
Friday, September 3, 2010
7. How Do You Get It?
“Semi-Pro” Way* “Pro” Way*
Binaries Source
* Terms coined by David Holt on wonder-disc mailing list on May 12, 2010
Friday, September 3, 2010
8. Binary Frameworks Initial Installation
$ mkdir WonderBinaries54
$ cd WonderBinaries54
$ curl -O http://webobjects.mdimension.com/hudson/job/Wonder54/lastSuccessfulBuild/artifact/dist/Wonder-Frameworks.tar.gz
$ tar -xzvf Wonder-Frameworks.tar.gz
$ sudo cp -Rvf *.framework /Library/Frameworks
For WebObjects 5.3, replace “54” above with “53”
Friday, September 3, 2010
9. Binary Frameworks Upgrade Installation
$ cd WonderBinaries54
$ for FRAMEWORK in `echo *.framework`; do sudo rm -r /Library/Frameworks/${FRAMEWORK}; done
$ rm -r *
$ curl -O http://webobjects.mdimension.com/hudson/job/Wonder54/lastSuccessfulBuild/artifact/dist/Wonder-Frameworks.tar.gz
$ tar -xzvf Wonder-Frameworks.tar.gz
$ sudo cp -Rvf *.framework /Library/Frameworks
For WebObjects 5.3, replace “54” above with “53”
Friday, September 3, 2010
10. Source Frameworks Initial Installation
$ svn co http://wonder.svn.sourceforge.net/svnroot/wonder/trunk/Wonder --revision <ARG> WonderSource
$ cd WonderSource
$ ant -Dwonder.patch=54 frameworks; sudo ant -Dwonder.patch=54 frameworks.install [WO 5.4]
OR
$ ant frameworks; sudo ant frameworks.install [WO 5.3]
<ARG> = HEAD to get latest version. Type svn --help checkout for more.
Friday, September 3, 2010
11. Source Frameworks Upgrade Installation
$ cd ~/Roots/
$ for FRAMEWORK in `echo *.framework`; do sudo rm -r /Library/Frameworks/${FRAMEWORK}; done
$ cd /path/to/WonderSource
$ svn update --force --accept theirs-full --revision <ARG>
$ ant -Dwonder.patch=54 clean; ant -Dwonder.patch=54 frameworks; sudo ant -Dwonder.patch=54 frameworks.install [WO 5.4]
OR
$ ant clean; ant frameworks; sudo ant frameworks.install [WO 5.3]
Friday, September 3, 2010
12. Working with Wonder Source
• Some Advantages of working with Source over Binaries:
• Learn much about WebObjects and EOF (and java dev styles?)
• Easily browse and search the source
• Work with a specific svn version (teams, quality control)
• Discover the Hidden Treasures (Don’t miss Chuck Hill later)
• Note ERXExtensions classpath file contents for 5.3 vs 5.4 .....
Friday, September 3, 2010
13. Demo
• Linking Wonder Source projects to your Workspace
• Creating a Wonder app
• What is different between a Wonder app and a Standard app
Friday, September 3, 2010
14. Integrating Wonder into Your
Existing Application
• Add Frameworks
• Adjust Application, Session and DirectAction superclasses
• Use ERXGenericRecord instead of EOGenericRecord
• Configure Wonder-specific Properties
• copy/paste from a new temp Wonder app as a starting point
Friday, September 3, 2010
16. Configuring Wonder’s Features
• Wonder is configured, more or less, using Properties files.
• Check comments and contents of each framework’s
Properties file
• Where to find Documentation
• Java API
• Framework “Documentation” directory
• http://wiki.objectstyle.org/confluence/display/WONDER/Home
• Examine Source code
Friday, September 3, 2010
17. Select Features
• ERXProperties
• EOModel Connection Dictionary using Properties
• ERXEC usage
• ERPrototypes
• Over-riding Prototypes via ERXModel and ERXModelGroup
Friday, September 3, 2010
18. ERXProperties
• A variety of ways to organize Properties
• ERXProperties replaces and extends deprecated NSProperties
• many convenient utility methods including property coercion
• log4j configured via Properties
• Understanding how ERXProperties works can facilitate better
team organization, app administration and general happiness :-)
Friday, September 3, 2010
19. The Standard WebObjects Way
Override
Properties Framework Resources
Properties
Properties
Properties Application Resources
WebObjects.properties [user.home] dir
-DpropertyName=propertyValue Command Line arguments
-DpropertyName=”property Value”
Friday, September 3, 2010
20. Properties: The Wonder Way
Properties
Properties
Properties
Properties.<username>
Framework Resources Override
Properties.<username>
Properties.<username>
Properties Application Resources
WebObjects.properties [user.home] dir
( file1, file2, file3 ) [er.extensions.ERXProperties.OptionalConfigurationFiles]
(absolute filepaths AND/OR application Resource filenames)
Properties OR [er.extensions.ERXProperties.machinePropertiesPath]
/<appName>/Properties (absolute filepath, default “/etc/WebObjects”)
Properties.dev [er.extensions.ERXProperties.devPropertiesName]
(file extension, App Resource, default “dev”)
Properties.<username> Application Resources
-DpropertyName=propertyValue Command Line arguments
-DpropertyName=”property Value”
@see er.extensions.foundation.ERXProperties.pathsForUserAndBundleProperties(boolean)
Note: [propertyname] denotes a system property (so properties are determining the loading of more properties!)
Friday, September 3, 2010
21. Examples of Properties fiddling...
## We always want to use @@ as the delimiter and NOT a single @
er.extensions.ERXSimpleTemplateParser.useOldDelimiter=false
app.directActionPassword=passw0rd
er.extensions.ERXJUnitPassword = @@app.directActionPassword@@
er.extensions.ERXLog4JPassword = @@app.directActionPassword@@
er.extensions.ERXGCPassword = @@app.directActionPassword@@
er.extensions.ERXDirectAction.ChangeSystemPropertyPassword = @@app.directActionPassword@@
app.smtpserver=192.168.3.142
WOSMTPHost=@@app.smtpserver@@
log4j.appender.myMail.SMTPHost=@@app.smtpserver@@
Automatically generated into Resources by build
## Optional properties to load
er.extensions.ERXProperties.OptionalConfigurationFiles=deploy.properties
log4j.appender.A2.file=/var/log/webobjects_apps/@@build.app.bundle.name@@-@@WOPort@@.log
log4j.appender.myMail.Subject=Log4jError (@@build.app.bundle.name@@ @@host@@ @@WOPort@@)
Friday, September 3, 2010
24. EOModel Connection Dictionary
Wonder Way - Properties File:
# For individual eomodels
model.URL = jdbc:mysql://hostname/firstdatabase
model.DBUser = firstuser
model.DBPassword = firstpassword
model.DBDriver =
model.DBPlugin =
# Global, or default where model entry not specified
dbConnectURLGLOBAL = jdbc:mysql://hostname/nextdatabase
dbConnectUserGLOBAL = nextuser
dbConnectPasswordGLOBAL = nextpassword
dbConnectDriverGLOBAL =
dbConnectPluginGLOBAL =
Wonder Way - WOMonitor Launch Arguments:
-Dmodel.URL=”jdbc:mysql://localhost/database?useUnicode=true&characterEncoding=UTF-8”
-Dmodel.DBUser=firstuser
-Dmodel.DBPassword=firstpassword
Friday, September 3, 2010
25. ERXEC
• EOEditingContext subclass
• EOEditingContext ec = ERXEC.newEditingContext();
• supports automatic lock/unlock in R-R cycle
• er.extensions.ERXEC.safeLocking=true
• enabled by default for new Wonder projects
• Calls ERXEnterpriseObject state transition will*/did* methods
• Implemented by ERXGenericRecord
Friday, September 3, 2010
26. ERXEC Auto Lock/Unlock
• Implicitly supported in Request-Response threads
• ERXApplication._endRequest() ... which calls ...
• ERXEC.unlockAllContextsForCurrentThread();
• Background threads are your responsibility!
• Here is how to do it ...
Friday, September 3, 2010
27. Runnable lock handling
public class MyTask implements Runnable {
public void run() {
ERXApplication._startRequest();
try {
performTask();
} finally {
ERXApplication._endRequest();
}
}
private void performTask() {
EOEditingContext ec = ERXEC.newEditingContext();
ec.lock();
try {
// Do some EOF stuff with the ec.
} catch (Exception e) {
// handle exception
} finally {
ec.unlock();
}
}
}
Friday, September 3, 2010
28. Callable lock handling
public class MyTask implements Callable<MyResultClass> {
public MyResultClass call() {
ERXApplication._startRequest();
try {
return performTask();
} finally {
ERXApplication._endRequest();
}
}
private MyResultClass performTask() {
EOEditingContext ec = ERXEC.newEditingContext();
ec.lock();
try {
// Do some EOF stuff with the ec.
} catch (Exception e) {
// handle exception
} finally {
ec.unlock();
}
return myResult;
}
}
Friday, September 3, 2010
29. Passing Objects to a Thread
public WOActionResults shuffleStudioAction() {
Studio studio = selectedStudio();
EOGlobalID studioGid = (EOGlobalID) ERXEOControlUtilities.convertEOtoGID(studio);
ProcessStudioTask task = new ProcessStudioTask(studioGid);
MyExecutorServices.executorService().execute(task);
return null;
}
Friday, September 3, 2010
30. Thread Hydrates EO
public class ProcessStudioTask extends ERXRunnable {
private final EOGlobalID _studioGlobalID;
public ProcessStudioTask(EOGlobalID studioGlobalID) {
_studioGlobalID = studioGlobalID;
}
@Override
public void _run() {
EOEditingContext ec = ERXEC.newEditingContext();
ec.lock();
try {
Studio studio = (Studio) ERXEOControlUtilities.convertGIDtoEO(ec, _studioGlobalID);
} catch (Exception e) {
// Handle error
} finally {
ec.unlock();
}
}
}
Friday, September 3, 2010