CouchCocoa 0.961beta6 Reference
CouchCocoa: An Objective-C API To TouchDB and Apache CouchDB™
CouchCocoa is a medium-level Objective-C API for working with TouchDB and CouchDB on iOS and Mac OS. By “medium-level” we mean:
- It doesn’t require knowledge of the HTTP API, only of CouchDB’s architecture. You won’t have to remember special paths or URL query parameters.
- But it doesn’t completely abstract away the fact that you’re working with a database, the way CoreData does. You still work with CouchDB-style documents and queries, although there is a CouchModel class that does some of the dirty work of mapping between documents and native objects.
This API is not the only way to access CouchDB or TouchDB — if you prefer, you can go down to the metal and talk to the HTTP API yourself using NSURLConnection.
Kick The Tires!
Join Us
- You can discuss this API or ask questions at the Couchbase Mobile Google Group.
- You might also want to look at the issue tracker to see known problems and feature requests.
Build Instructions
Prerequisite
Xcode 4.3 or later, with the SDK for iOS 4.3 or later.
One-Time Repository Setup
If you cloned the CouchCocoa Git repository, aso opposed to downloading a precompiled framework, then you’ll next need to initialize Git “submodules”. This will clone the dependency JSONKit into the “vendor” subfolder:
cd CouchCocoa
git submodule init
git submodule update
Running The iOS Demo App
Our iOS demo, “Grocery Sync”, has its own GitHub repository. Check it out and look at its README for instructions.
Running The Mac OS Demo Apps
There are two simple Mac demo apps included in the Demo/ subfolder. One lets you edit a simple list of names and email addresses, the other is a shopping list. (They actually share most of the same source code; all the differences are in their model classes and .xib files, thanks to the magic of Cocoa bindings.) To run them:
- Start a CouchDB server on localhost. (You can use a package manager like HomeBrew to install CouchDB.)
- Open CouchCocoa.xcodeproj (in Xcode 4.2 or later)
- Select “Demo-Addresses” or “Demo-Shopping” from the scheme pop-up in the toolbar
- Press the Run button
Building The Framework
(You only need to do this if you checked out the CouchCocoa source code and want to build it yourself. If you downloaded a precompiled framework, just go onto the next section.)
- Open CouchCocoa.xcodeproj
- Select “Mac Framework” or “iOS Framework” from the scheme pop-up in the toolbar
- Product > Build
If you want to run the unit tests, first make sure a CouchDB server is running on localhost, then choose Product > Test.
The framework will be located at:
- Mac: build/CouchCocoa/Build/Products/Debug/CouchCocoa.framework
- iOS: build/CouchCocoa/Build/Products/Debug-universal/CouchCocoa.framework
(The exact location of build
itself will depend on your Xcode preferences. It may be a subdirectory of the project folder, or it may be located down in an Xcode “DerivedData” folder. One way to find the framework is to open up the Products
group in the project navigator, right-click on the appropriate CouchCocoa.framework
, and choose “Show In Finder”.)
Using The Framework In Your Apps
Mac OS:
- Build the Mac framework (see above).
- Copy CouchCocoa.framework somewhere, either into your project’s folder or into a location shared between all your projects.
- Open your Xcode project.
- Drag the copied framework into the project window’s file list.
- Add the framework to your target (if you weren’t already prompted to in the previous step.)
- Edit your target and add a new Copy Files build phase.
- Set the build phase’s destination to Frameworks, and drag CouchCocoa.framework into its list from the main project file list.
iOS:
- Build the iOS framework (see above).
- Copy CouchCocoa.framework somewhere, either into your project’s folder or into a location shared between all your projects.
- Open your Xcode project.
- Drag the copied framework into the project window’s file list.
- Add the framework to your target (if you weren’t already prompted to in the previous step.)
You’ll probably want to run a local database server on your iOS device, since it’ll allow your app to work offline (and improves performance.) CouchCocoa.framework doesn’t contain CouchDB itself, so you should also add the Couchbase Mobile framework to your app. Using the two together is very simple: when the CouchbaseMobile object calls your delegate method to tell you the server’s up and running, just use the URL it gives you to instantiate a CouchServer object.
License
Released under the Apache license, version 2.0.
Author: Jens Alfke
With contributions from: J Chris Anderson, David Venable, Alex McArthur, Jonathon Mah, Pierre Metrailler, Sven A. Schmidt, Katrin Apel.
Copyright 2012, Couchbase, Inc.
Class References
- CouchAttachment
- CouchChangeTracker
- CouchConnectionChangeTracker
- CouchDatabase
- CouchDesignDocument
- CouchDocument
- CouchDynamicObject
- CouchEmbeddedServer
- CouchFunctionQuery
- CouchLiveQuery
- CouchModel
- CouchModelFactory
- CouchPersistentReplication
- CouchQuery
- CouchQueryEnumerator
- CouchQueryRow
- CouchReplication
- CouchResource
- CouchRevision
- CouchServer
- CouchSocketChangeTracker
- CouchTouchDBDatabase
- CouchTouchDBServer
- CouchUITableSource
- CouchbaseCallbacks
- CouchbaseMobile
- RESTBase64
- RESTBody
- RESTCache
- RESTMutableBody
- RESTOperation
- RESTResource
Protocol References
- CouchChangeTrackerClient
- CouchDocumentModel
- CouchUITableDelegate
- CouchbaseDelegate
- CouchbaseValidationContext
- RESTResourceDelegate


STNodeEditor is a lightweight and powerful node editor, very simple to use. Provides a wealth of properties and events, which can easily complete the data interaction and notification between nodes. A large number of vitual functions are available for developers to use. It is very free.
In this case, only a node editor control is provided, and the TreeView,PropertyGrid is not included. If I have time later, I will make a complete framework.
The above is what the author of the first version mentioned in the document. NOW it's COME TRUE
STNodeEditorSTNodeTreeViewSTNodePropertyGridSTNodeEditorPannel
STNodeEditorhas a very powerful function. It supports the movement and zooming of the canvas and can lock the position of the node and the connection. When connecting, it will automatically check whether the data type is compatible, and whether the connection is repeated or whether it is a loop path, etc.
Note: The operation editor performed in the node client area will not respond, because the operations in the node client area will be converted into node events.
Because the author regards a node as a Form and the editor container is Desktop, the developer can develop a node like a WinForm program.
STNodeHubis a built-in node that can disperse one output to multiple inputs or concentrate multiple outputs on one input point to prevent repeated connections. It can also be used for layout when the node connection is complicated
The input and output of HUB are of object type by default. When a connection is connected, the data type will be automatically changed and a new row will be added.
Note: Only STNodeHub can modify the data type of the connection point. Because the field is marked internal, the data type of the added connection point cannot be modified in the extended STNode.
STNodeTreeView is easy to use, and there is no need to create a tree directory by yourself like System.Windows.Forms.TreeView.
Mark the STNode subclass by STNodeAttribute to set the path you want to display in STNodeTreeView and the information you want to display in STNodePropertyGrid.
Note: If you want nodes to be displayed in STNodeTreeView, you must use STNodeAttribute to mark the STNode subclass.
If the property in STNode is marked by STNodePropertyAttribute, it will be displayed in STNodePropertyGrid. By default, int, float, double, bool, string, enum and Array of the above data types are supported. If the property data type you want to display is not supported, you can extended STNodePropertyDesciptor, please refer to DEMO for details.
You can see that some information about the node can be displayed in the STNodePropertyGrid panel. The author believes that this is a framework, and everyone can build another framework based on this framework. And the Coder that writes the node for the framework can add personal information for this node.
STNodeEditorPannel is a combination control of STNodeEditor STNodeTreeView STNodePropertyGrid.
You can control the layout by dragging the handle
SO what CAN it DO
What's this???flow chart??? SOAR?????
This animation is the best explanation the author can think of
When there are many applications (modules), they need to call each other to transfer data to complete a set of processes.
It is easy to develop a single-function application (module), but it is tedious to develop a whole set of applications that call each other with many functions.
Developers using this framework only need to define the data type, and then develop a single function node, as for the execution process, hand it over to the framework and the user connection.
The process is the program The program is the process, and the function is visualized.
From the picture, you can see that the node UI definition is very free.
STNodeControl provides the same common functions and properties as System.Windows.Forms.Control, so developers only need to develop STNode controls like WinForm controls.
The AttrTestNode node in the picture does not have special UI definition requirements. You only need to provide STNode with the input and output data types and display text. STNode.AutoSize will automatically calculate the size and layout. STNode.AutoSize is true by default.
For more details, please refer to DEMO
Maybe you have never used node editing, but node editing is more and more, especially in the design software Blender, C4D, Houdini, Davinci, etc.
The biggest advantage of node editing is the visual operation. A single function is completed in the node and the user can combine the required logic through the node connection to make the process visible, instead of fixing the execution process of the function in the program. Of course, the data type of the node needs to be defined before this. Incompatible data types are not allowed to connect. Normally, the connection points of the same color have the same data type.
Let developers only need to focus on the development of a single function, so that the coupling between functions and functions is reduced. The developer completes the required function in the node without knowing how to call the next program. You only need to pack the result data into the output option, no matter how complicated the node connection is, the node editor will automatically complete the data transfer.
| .Net: | .Net Framework 3.5 | |
| VS: | Visual Studio 2010 | 2021-04-27 |


Reject only hyphenator-promise if it's pattern can't be loaded.
hy|phen|ation al|go|rithm
Sil|ben|tren|nungs|al|go|rith|mus


Event Location:
Cerner Corporation's Riverport Campus
6711 NE Birmingham Rd
Kansas City, Missouri
Abstract:
SQL Server allows you to construct an analytic organization by creating a bona fide Business Intelligence foundation, giving you more insight into the status of the business, powerful ad-hoc reporting capabilities, dynamic analytical capabilities, and forecasts that make your psychic jealous. It's an understatement to say this requires really good data and terrific data structures. In this session, Carlos Bossy will discuss how to use SSIS to implement integration, metadata and transformations, SSAS for ad-hoc and predictive analytics, and SSRS to provide users the ability to develop their own reports. You will leave this session with a firm grasp to building a robust data architecture that achieves successful Business Intelligence.
Speaker(s): Carlos Bossy,
Abstract:
Join me for a discussion of security risks in SQL Server and the tools and processes we have to mitigate those risks. The relationship of security to authentication, encryption, SQL Injection, SQL Browser, backups, auditing, compliance, data access layers, and more will be covered in brief. Attendees will leave this session knowing the pros and cons of different logon methods, and hopefully new techniques to reduce the attack surface of the SQL Servers they manage.
Speaker(s): Rob Kraft,
Abstract:
This session will demonstrate a basic framework using SQL Server, SSIS and AMO to help manage your Analysis Services partitions. During this session we will show you how to automate the creation, processing and even deleting of your partitions all based on a simple metadata table stored in SQL Server.
Speaker(s): Frank Kearney,
Abstract:
Reporting against non-traditional data: CPU usage, IIS, web site activity, Active Directory, file stores, data warehouses, machine specification and others if there is time.
Speaker(s): Dennis Graham,
Abstract:
Spatial data is being pushed more and more into the forefront of our application universe. With the advent of MapPoint and Google Maps companies are consistently pushing the boundaries of what traditional databases can do. Now with SQL Server 2008 we have built in spatial data types that will make your life a little easier in the days to come. This session will focus on utilizing these native types to store, analyze, and retrieve spatial data as well as tools such as SSRS's integrating geospatial mapping to make you the company geospatial hero. Geospatial awesomeness fro everyone!
Speaker(s): Arie Jones,
Abstract:
We will cover an overview of the functionality of SQL PDW
Speaker(s): Brian Mitchell,
Abstract:
Data is becoming more and more critical with the needs of business every day. Technology has enabled businesses to have a global reach much easier than ever before. With the growing needs to increase revenue every avenue will be explored. The outcome of this growth is the need for your database to be online with no downtime if any at all. This session is designed to visit the issues of managing a database that is online around the clock and maintenance time is scarce. We will talk about the challenges you could face each and every day, the maintenance issues such as when, where and how to trim it.
 Do you want better performance out of your ETL processes? If you answered yes to either of those questions, this is your session. We'll be discussing some of the evils and gotchas of the "trunc and load" ETL process, why incremental ETL processes are better overall, and we'll take a look at several different implementations of incremental ETL processes using SSIS both from a data quality and a performance perspective.
Speaker(s): Brett Flippin,
Abstract:
Lets dig into both the fundamentals as well as some details of how SANs work and how we can best utilize them to improve SQL Server's IO performance and reliability.
Speaker(s): Kevin Boles,
Abstract:
It’s a simple question, right? But how often do you have the answer, especially for your SQL statements? Thomas LaRock from Confio Software will teach you how proper response time analysis plays a key part in the overall performance tuning process. You will learn how to define, measure, and analyze performance issues as well as implementing changes and how to make sure those changes continue to have the desired effects.
Speaker(s): Thomas LaRock,
Abstract:
This session discusses in depth the concurrency model in SQL Server and how concurrency issues can cause performance related problems. I will discuss and demo the concurrency models in SQL Server, the concurrency challenges and Lock Escalation issues and how to diagnose, troubleshoot and remedy those, leading to much better scalability and performance.
Speaker(s): Sudhir Gajre,
Abstract:
This session discusses the challenges and opportunities for DBAs supporting SQL in the IT Healthcare environment
Speaker(s): Scott Shaw,
Abstract:
MDX is difficult to learn for many reasons. One reasons is that most training starts with SELECT queries without adequately developing a fundamental understanding of the coordinate system being used. Learners are left to fill in the blank in a way that is not comprehensive, consistant or comfortable. This presentation will give beginners (and those beyond) a more comfortable grasp of how to write queries.
Speaker(s): Joe Ferry,
Abstract:
When running a stored procedure it is difficult to record what is happening. In this session we will develop logger code in T-SQL to add to your stored procedures. We will use the xml datatype to record parameter values, variable values and debug statements. We will look at the "For xml" statement as well as the xml datatype methods. Finally we will look at how to read the logs when finished.
Speaker(s): Russel Loski,
Abstract:
A large majority of a modern DBA's workload consists of managing the resources on their systems in order to ensure that they are being followed and resources are accessible when needed. SQL Server 2008 provides Resource Governor, which allows the DBA to discretely manage system resources in a very structured or not so structured way(Its your choice!). In this session, we will show you how to configure, monitor, and administer these features to help lower your anxiety levels while increasing your system’s availability.
Speaker(s): Arie Jones,
Abstract:
The range of real-world queries that can be performed using set-based TSQL solutions is astounding, but many of these are not well known and if you haven't been shown the light you might never realize what is possible. Come and join me as we delve into the inner recesses and corners of the TSQL envelope using a wide variety of expressions, clauses and techniques.
Speaker(s): Kevin Boles,
Abstract:
The new release of SharePoint 2010 is a giant leap forward and has addressed several scalabilty issues in earlier versions of the product. Come and learn how SharePoint leverages SQL Server and enhancements made to SQL Server which made SharePoint a tremendous value proposition. Topics discussed will include High level overview of SharePoint capabilities, role of SQL Server, database overview, differences between SharePoint list and SQL Server tables and much much more... Don't miss it!!!
Speaker(s): Sandeep Khandelwal,
Abstract:
This session will provide an overview of the five SQL CLR objects available for SQL Server 2005-2008 and demonstrate how to create, deploy and use these objects for fun and profit.
Speaker(s): Bill Fellows,
Abstract:
By now you have probably already heard about Analysis Services. Maybe you've even said to yourself that you were going to learn more about it but just haven't found the time. The biggest barrier to learning something new is figuring out the first few steps. But where do you begin? Come learn those first few steps by attending this presentation. We will discuss what Analysis Services is, where it shines and more importantly, how to get started.
Speaker(s): Marc Beacom,
Abstract:
Replication simplified! Learn the basic parts that make up replication, what tools are included to help you along plus a look into monitoring. We will cover the players in the game: Pubishers, Subscribers and Distributors, then delve into the data delivery process with Publications, Subscriptions and Articles, finishing up with the Log Reader and how to make sure everything is working and running smoothly.
Speaker(s): Wendy Pastrick,
Abstract:
Brain full? Take this time to meet with fellow professionals, swap war stories, praise or slam features and trade tips. Come and go as you please
Speaker(s): Bill Fellows,
Abstract:
Ok so you have created a Portal. Now you are ready to get your LOB data into the portal. Not sure how???? This session explains how you can integrate your external SQL data into your SharePoint portal
Speaker(s): Ameet Phadnis,
Abstract:
This talk will focus on the benefits, features, and ease of use of SQL Azure. Learn how your projects can benefit from a hosted data storage and query processing service. See by example how to design your program to use SQL Azure. Real world topics and use cases will be covered including data sync and staying vendor independent while hosting your data in the cloud.
Speaker(s): Aaron King,
Abstract:
Non technical data consumers usually require and request results of ad hoc queries against enterprise databases. Let’s look at how report model can be a solution to providing ad hoc reporting while giving the non technical user the ability to use this model and create their ad hoc reports.
Speaker(s): Kushal Lal,
Abstract:
This session walks through a SQL Server installation, the post setup configuration, a basic security review, configuring a maintenance plan and basic performance monitoring. All with no PowerPoint slides. Instead we'll walk through our SQL Server setup and configuration checklist and demonstrate everything we talk about. This session is great for new database administrators or part-time DBAs or anyone looking for a refresher. Experienced DBA's will learn something too! You'll get a copy of the checklist during the session and you'll get a link to download a copy for later.
Speaker(s): Bill Graziano,
Abstract:
Brain full? Take this time to meet with fellow professionals, swap war stories, praise or slam features and trade tips. Come and go as you please
Speaker(s): Bill Fellows,
Abstract:
PowerShell is becoming the breath taking tool that helps unlock different Microsoft environments. Most people’s question is where do I start? In this session we will look into what PowerShell is, why it’s becoming a must have tool, what language it uses and how to do the real world stuff with it in your SQL environment.
Speaker(s): Leonard Mwangi,
Abstract:
Interest in technology is decreasing among young people, yet technology is becoming ever more important in our world. How can we inspire the next generation to embrace science, engineering, and technology? Join SQL Server professionals Wendy Pastrick, Kim Tesereau, and Michelle Ufford as they discuss ways that we can encourage our kids to consider technology careers.
Speaker(s): Kathi Kellenberger,
Abstract:
Modern day computing power and SQL Server makes it possible to add sophisticated data mining models to our applications that forecast and predict, perform anomaly detection, and classify data. This presentation will demonstrate how to use Analysis Services to incorporate these complex algorithms seamlessly into your databases. Attendees will be shown how to create a data mining model using SSAS, how to use SSIS to query and load mining forecasts, and a sample web application that seamlessly uses a mining model. Take a step forward towards making BI pervasive in your organization by integrating data mining into your company’s applications...and learn how to win your fantasy football league and beat the stock market too!
Speaker(s): Carlos Bossy,
Abstract:
Advanced topics in SSRS: Manage reporting, delivery options, control report execution, security, and deployment, email, and data driven headers, reporting from data warehouses, and overcoming Excels 65K wall.
Speaker(s): Dennis Graham,
Abstract:
Getting a bit weary of developers or DBA's that cannot seem to follow well documented policies for naming conventions or server settings? Would you like to define these policies in a manner that allows SQL Server to ENFORCE them for you or, at the very least, monitor them? Policy-based management provides the ability to define policies that apply to servers, databases and other objects in your data environment. Well-defined policies can help you to control and manage change proactively.
Speaker(s): Peter Trast,
Abstract:
A highly interactive and popular session where attendees evaluate the options and best practices of common and advanced design issues, such as: * Implementing Party/party role * Natural vs. Surrogate keys * Today's vs. Tomorrow's Requirements * SOAs, Ontologies, ESBs, New TLAs and Shoe Strings * What is Logical? What is Physical? Why Do We Care? * Who Calls the Shots and Who Does What? ...and others. Bring your votes, your debates, and your opinions.
Speaker(s): Karen Lopez,
Abstract:
We are going to examine a variety of oopsies MANY developers fall prey to - some obvious, some fairly subtle and some down right sneaky! Lots of code examples with the bad AND good code presented.
Speaker(s): Kevin Boles,
Abstract:
Steve Jones, founder of SQL Server Central talks about how to update your resume to fit into today's modern world, and take advantage of the tools offered by blogging, social networking, and more.
Speaker(s): Steve Jones,
Abstract:
Brain full? Take this time to meet with fellow professionals, swap war stories, praise or slam features and trade tips. Come and go as you please
Speaker(s): Bill Fellows,
Abstract:
Do you need a database available all the time? Then you need database mirroring. You can failover to the destination and back to the source at any time. If the source server crashed you can run a quick command on the destination server and you are back in business. You will become an expert in no time.
Speaker(s): Jeff Hattendorf,
Abstract:
Reporting Services has undergone many changes with the 2008 and 2008 R2 releases. Learn how to take advantage of these new features: a much better Report Builder, enhanced performance, cool new visual components, reusable report parts and more!
Speaker(s): Kathi Kellenberger,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
LinkedIn: http://www.linkedin.com/in/way0utwest
Contact: http://www.voiceofthedba.com/
Steve Jones is a Microsoft SQL Server MVP and has been working with SQL Server since version 4.2 on OS/2. After working as a DBA and developer for a variety of companies, Steve co-founded the community website SQLServerCentral.com in 2001. Since 2004, Steve has been the full-time editor of the site, ensuring it continues to be a great resource for SQL Server professionals. Over the last decade, Steve has written hundreds of articles about SQL Server for SQLServerCentral.com, SQL Server Standard magazine, SQL Server Magazine, and Database Journal.
Jeff has been an Enterprise Network/Systems Architect and Engineer for over 12 year. He has worked on some of the biggest networks in Kansas and currently Manages and supports a Mission Critical 24x7x365 railroad transportation company across multiple data centers.
Dennis Graham has been working with SQL server since 1992 and working in SSRS since 2002. As an Oakwood consultant, he has built applications for investment firms, medical groups, insurance entities, and manufacturing, he is now in the Managed Services Group using SCOM to monitor SQL Server. He also has 16 years as a trainer.
LinkedIn: http://www.linkedin.com/in/russloski
Contact: http://www.sqlmovers.com
Russ Loski is a SQL Server BI Developer based in Dallas-Fort Worth. He current works as a Data Analytics Engineer for Navisite, a remote managed IT services company. Twenty years ago, he began working with SQL Server 6.5. He has since continued to develop applications connected to all of the versions of SQL Server. He has worked with clients in industries from insurance to healthcare, from movie theaters to American football. Russ is a regular speaker at SQLSaturday events, as well as the SQL Server Users Groups in the North Texas region. Russ likes working with data in various shapes.
Contact: http://aaphadnis.spaces.live.com
Ameet Phadnis has over 14 years of IT industry experience in Microsoft technologies. Ameet is the president of e Tek Global a Microsoft Gold Partner. He concentrates mainly in Data Mangement Solutions and SharePoint Solutions. Ameet has worked with SQL for over 10 years and with SharePoint for over 5 years starting with SharePoint 2003. He has presented at SharePoint Connections and SharePoint Users Group in Kansas City. Ameet has written articles for SQL Server Central and ASPAlliance.
Contact: http://lmundia.com
Leonard Mwangi is a principal consultant with Armely concentrating mostly on Information Worker Solutions and applications Integration. Leonard has over 13 years of experience in IT Industry and has been working with SQL Server since SQL 7.0 and SharePoint since SPS days with end-to-end client solutions. Leonard is also a regular contributor for MS forums and a presenter at different Special Interest Groups regarding SQL Server and SharePoint
Contact: http://fkearney.spaces.live.com/default.aspx
Frank Kearney has been working in the IT world for the past 13 years and has experience across many verticals including HealthCare, Telecommunications and Wholesale Distributors. He is currently a Senior Business Intelligence developer for Aspect UC responsible for designing and delivering BI solutions using the Microsoft BI Stack.
LinkedIn: http://www.linkedin.com/in/thesqlguru
Kevin Boles is a SQL Server expert, working exclusively with the product since v6.5. With over 25 years of database experience and over 45,000 man hours of SQL Server engine experience, he holds many related certifications, is an MCT and was a SQL Server MVP from 2007 to 2012. Kevin has been a very successful independent consultant for over 20 years. His passion is the relational engine, especially designing, building, analyzing and tuning high-performance database applications.
LinkedIn: http://www.linkedin.com/in/billinkc
Contact: http://blog.billfellows.net
Bill Fellows is a SQL Server MVP and has been a database developer for most of his career, with the past 15 years focused on ETL. He is the organizer of Kansas City's eight SQLSaturdays and a speaker at many other SQLSaturdays, User Groups and the PASS Summit. Bill is the owner of Sterling Data Consulting where he gets to solve interesting data problems.
LinkedIn: http://www.linkedin.com/in/thesqlguru
Kevin Boles is a SQL Server expert, working exclusively with the product since v6.5. With over 25 years of database experience and over 45,000 man hours of SQL Server engine experience, he holds many related certifications, is an MCT and was a SQL Server MVP from 2007 to 2012. Kevin has been a very successful independent consultant for over 20 years. His passion is the relational engine, especially designing, building, analyzing and tuning high-performance database applications.
LinkedIn: http://www.linkedin.com/in/karenlopez
Contact: http://datamodel.com
Karen Lopez is a Sr. Project Manager and Architect for InfoAdvisors. A frequent speaker at conferences and local user groups, she has 20+ years of experience in project and data management on large, multi-project programs. Karen is a chronic volunteer, a Data Platform MVP, and an active advocate for science, technology, engineering, and mathematics (STEM) education and data quality. Karen’s presentations are known for their lively and interactive approach to learning. Her motto: “Love Your Data!”
LinkedIn: http://www.linkedin.com/in/billinkc
Contact: http://blog.billfellows.net
Bill Fellows is a SQL Server MVP and has been a database developer for most of his career, with the past 15 years focused on ETL. He is the organizer of Kansas City's eight SQLSaturdays and a speaker at many other SQLSaturdays, User Groups and the PASS Summit. Bill is the owner of Sterling Data Consulting where he gets to solve interesting data problems.
LinkedIn: http://www.linkedin.com/profile/view?id=33808310
Contact: http://brianwmitchell.com
Brian Mitchell, an MCM - SQL 2008 with a MBA from the University of Florida, is a Senior Consultant in the Microsoft Big Data Center of Expertise, where he focuses on SQL Server Parallel Data Warehouse, HDInsight, and Microsoft Business Intelligence. Brian has spent countless hours onsite at customer sites delivering Microsoft database and BI solutions. He has extensive experience creating and delivering advanced training for the full range of the Microsoft BI stack, with a particular passion for Analysis Services and Reporting Services. Brian has presented at TechEd, PASS Summit, SQLRally, and several SQLSaturdays and SQL Server user groups. You can read more about his deep involvement in Microsoft data technologies at http://brianwmitchell.com.
LinkedIn: http://www.linkedin.com/in/billinkc
Contact: http://blog.billfellows.net
Bill Fellows is a SQL Server MVP and has been a database developer for most of his career, with the past 15 years focused on ETL. He is the organizer of Kansas City's eight SQLSaturdays and a speaker at many other SQLSaturdays, User Groups and the PASS Summit. Bill is the owner of Sterling Data Consulting where he gets to solve interesting data problems.
LinkedIn: http://www.linkedin/in/carlosbossy
Contact: http://www.carlosbossy.com
Carlos Bossy (MCTS, MCP BI, CBIP) is a data and cloud analytics architect with 25 years of experience in software and database development. As a principal of Datalere, Carlos focuses on developing BI, Data Science, and Advanced Analytics solutions, including modeling data warehouses and delivering predictive models, integration, and visualization. He has developed warehouses and BI solutions for a variety of industries and state agencies, including health insurance, solar energy, foster care, telecom, and manufacturing.
LinkedIn: http://www.linkedin.com/in/christophershaw/
Contact: http://chrisshaw.wordpress.com/
Chris Shaw started his database career in 1993. Following the Marines, Chris continued working with databases for companies such as Wells Fargo, Pulte Mortgage, and Yellow Pages Inc. Chris has been writing and speaking about SQL Server for over 15 years at events such as SQL Connections, PASS Summit, and SSWUG Ultimate conferences. Chris received his 5th Microsoft MVP award.
Contact: http://www.blogofshaw.blogspot.com
Scott Shaw has been an IT professional since the late 90’s. He is currently employed by Mercy Technology Services in Saint Louis, MO as the Lead SQL Server DBA. Scott has presented at SQLSaturday as well as the first SQLRally in Orlando, FL. He currently is working with Kathi Kellenberger (@auntkathi) to revise the book Beginning T-SQL 2008 from Apress Publishing for SQL 2012.
LinkedIn: http://www.linkedin.com/in/marcbeacom
Contact: http://www.DawaBI.com/blog.aspx
Marc Beacom is Principal Architect of DawaBI, a Data Warehouse and Business Intelligence Consultancy firm focusing on Making Data-Driven Decisions Possible. He has been working with SQL Server for over a decade delivering scalable solutions for organizations of all sizes. . Marc is an active member of the community and has served 5 years on the board of two Colorado SQL Server UGs, 1 year as a Regional Mentor for PASS. Currently he is on the boards of CO GiveCamp and Camp To Belong CO.
Contact: http://www.sqlservercentral.com/blogs/kathi_kellenberger/default.aspx
Kathi Kellenberger is a Data Technology Specialist with Microsoft in St. Louis, MO. Before joining Microsoft in 2010, she was a DBA and a SQL Server MVP. Kathi is author of "Beginning T-SQL 2008" and co-author of "Professional SQL Server 2005 Integration Services" and "SQL Server MVP Deep Dives." In her spare time, Kathi enjoys singing (she is the original #sqlkaroke), cycling, playing with her 5 year old grandson, and climbing the stairs in very tall buildings.
Peter has been an IT professional for 15 years. He worked his way from desktop and server support up to systems administration and engineering for the Navy-Marine Corps Intranet Project and for private clients, then delivered Windows services and SQL Server classes for Centriq Training in Leawood, Kansas, and is now a Microsoft Design Architect specializing in SQL Server design with Alexander Open Systems in Overland Park, Kansas. He likes all music styles, heavy doses of science fiction and building expensive treehouses for his 9 children in Kansas City, Missouri, and does NOT, in fact, look like Mr. Clean.
LinkedIn: https://www.linkedin.com/in/robkraft?
Contact: http://csharpdeveloper.wordpress.com
Rob Kraft is an independent software architect, project manager, and developer from Lee#39;s Summit, MO. He was a certified trainer on SQL Server and co-authored a few books about SQL Server and network security. He has been a full or part-time SQL Server DBA since version 4.2. He runs www.KansasCityUserGroups.com and he blogs occasionally at http://csharpdeveloper.wordpress.com/.
Contact: http://www.sqlservercentral.com/blogs/kathi_kellenberger/default.aspx
Kathi Kellenberger is a Data Technology Specialist with Microsoft in St. Louis, MO. Before joining Microsoft in 2010, she was a DBA and a SQL Server MVP. Kathi is author of "Beginning T-SQL 2008" and co-author of "Professional SQL Server 2005 Integration Services" and "SQL Server MVP Deep Dives." In her spare time, Kathi enjoys singing (she is the original #sqlkaroke), cycling, playing with her 5 year old grandson, and climbing the stairs in very tall buildings.
Contact: http://scalsql.com/
Bill Graziano is a SQL Server consultant specializing in high-throughput transaction environments using SQL Server. He spends his days counting the milliseconds behind credit card swipes. Bill is the former President of PASS and runs a web site for SQL Server developers and administrators at SQLTeam.com.
LinkedIn: http://www.linkedin/in/carlosbossy
Contact: http://www.carlosbossy.com
Carlos Bossy (MCTS, MCP BI, CBIP) is a data and cloud analytics architect with 25 years of experience in software and database development. As a principal of Datalere, Carlos focuses on developing BI, Data Science, and Advanced Analytics solutions, including modeling data warehouses and delivering predictive models, integration, and visualization. He has developed warehouses and BI solutions for a variety of industries and state agencies, including health insurance, solar energy, foster care, telecom, and manufacturing.
Contact: http://www.IntegrationNow.com
Sandeep has been working with SharePoint since early days of STS. He specializes in implementing medium to large scale SharePoint farm, creating custom solutions using InfoPath form Workflow, building BI dashboards using PerformancePoint Excel Services, integrating LOB applications with SharePoint and migrating Lotus Notes databases to SharePoint. Also, whenever time permits, Sandeep presents at SharePoint conferences and local SharePoint users group.
Dennis Graham has been working with SQL server since 1992 and working in SSRS since 2002. As an Oakwood consultant, he has built applications for investment firms, medical groups, insurance entities, and manufacturing, he is now in the Managed Services Group using SCOM to monitor SQL Server. He also has 16 years as a trainer.
LinkedIn: https://www.linkedin.com/in/trendoid
Contact: http://www.aaronstanleyking.com
Aaron King is a application architect specializing in enterprise web applications and very large databases.
Contact: http://www.programmersedge.com
Arie Jones 'AJ' is the Principal Technology Manager for Perpetual Technologies, Inc. in Indianapolis, IN. Arie leads PTI’s team of expert consultants in planning, design, development, deployment, and management of database environments and applications to achieve the best combination of tools and services for each client. Additionally, AJ is a community speaker, has written several books such as “Learn SQL in 24 Hours”, and blogs extensively at http://www.programmersedge.com
LinkedIn: http://www.linkedin.com/in/thesqlguru
Kevin Boles is a SQL Server expert, working exclusively with the product since v6.5. With over 25 years of database experience and over 45,000 man hours of SQL Server engine experience, he holds many related certifications, is an MCT and was a SQL Server MVP from 2007 to 2012. Kevin has been a very successful independent consultant for over 20 years. His passion is the relational engine, especially designing, building, analyzing and tuning high-performance database applications.
Contact: http://www.hconn.com
Kushal is a MCTS in SQL Server 2008 BI and Dev. He is currently working for HCONN a Microsoft Gold Certified Partner as their designated BI Specialist and SharePoint Consultant. His roles include designing and implementing BI Solution either as a standalone solution or over the SharePoint Platform. He has extensive hands on experience working with Microsoft BI technologies over the past five years and has moderated on behalf of Microsoft at the Microsoft’s Kansas City BI Round Table event.
LinkedIn: http://www.linkedin.com/in/billinkc
Contact: http://blog.billfellows.net
Bill Fellows is a SQL Server MVP and has been a database developer for most of his career, with the past 15 years focused on ETL. He is the organizer of Kansas City's eight SQLSaturdays and a speaker at many other SQLSaturdays, User Groups and the PASS Summit. Bill is the owner of Sterling Data Consulting where he gets to solve interesting data problems.
LinkedIn: http://www.linkedin.com/in/sqlrockstar/
Contact: http://thomaslarock.com
Thomas LaRock is a Head Geek at SolarWinds and a Microsoft Certified Master, Data Platform MVP, VMware vExpert, and a Microsoft Certified Trainer. He has over 15 years’ experience in the IT industry in roles including programmer, developer, analyst, and database administrator.
LinkedIn: http://www.linkedin.com/pub/sudhir-gajre/30/732/5b5/
Contact: http://www.dbbest.com/blog/author/sudhir/
Sudhir has over 20 years of experience in the Data Management and the Analytics field. He spent the last 14 years at Microsoft where he was a Data Architect and later a Principal Technologist. He has authored SQL Server performance tuning whitepapers, designed VLDB and Highly Scalable SQL Server Architectures, and led technical teams. He is a frequent speaker at conferences and SQLSaturdays and is a recognized expert in the Data Management field. He is a Director with DB Best Technologies.
Contact: http://wendyverse.blogspot.com
Wendy Pastrick is from Chicago, IL, and for the past 15 years has served as a Database Administrator supporting both development and production environments. Her many years of involvement with PASS include WIT Virtual Chapter and the Chicago Suburban User Group, serving as Regional Mentor, and as a PASS Board member since 2013. Wendy has organized several highly successful SQLSaturday events in Chicago.
Contact: http://brettflippin.com
Brett has worked in many facets of IT and finally settled into database work specializing in delivering business intelligence and ETL processes. His experience ranges from system administration to DBA and BI work with SQL Server 2000 to SQL Server 2008. He's currently the Data Warehouse and Business Intelligence developer at Children International.
Contact: http://www.programmersedge.com
Arie Jones 'AJ' is the Principal Technology Manager for Perpetual Technologies, Inc. in Indianapolis, IN. Arie leads PTI’s team of expert consultants in planning, design, development, deployment, and management of database environments and applications to achieve the best combination of tools and services for each client. Additionally, AJ is a community speaker, has written several books such as “Learn SQL in 24 Hours”, and blogs extensively at http://www.programmersedge.com
I have been a Microsoft Premier Field Engineer for four years, assisting customers with SQL Server Analysis Services, SQL Server Integration Services and the SQL Server Relational Engine. I don’t have to find myself to be the smartest guy in the room to be helpful because I have seen more environments and issues than most dbas and can share my experiences that help others to focus in on what is important rather than what is more likely to be of academic interest.
The following is a list of sponsors that helped fund the event.


assert
statement conditions which are constants. assert
statements with constant conditions will either always fail or always succeed.
Such statements can easily be left over after refactoring and are probably a bug.
Example:
void foo() { assert true; }


To Do List
View
Complete
Incomplete
All
Priority
High
Normal
Low
All
Sort Order
Chronological
Priority
Alphabetical
Add Task
×
Please add a description.
High
Normal
Low
Please choose a priority level.


TriBITS Overview
The Tribal Build, Integrate, and Test System (TriBITS) is a framework designed to handle large software development projects involving multiple independent development teams and multiple source repositories which is built on top of the open-source CMake set of tools. TriBITS also defines a complete software development, testing, and deployment system supporting processes consistent with modern agile software development best practices.
The primary development site for TriBITS is the TriBITS Github Site. The TriBITS Github site manages the git repository, includes issue tracking (bugs and new features), and manages pull requests which allows TriBITS developers and users to submit changes and additions to TriBITS. See details on contributing to TriBITS.


LETTER: Water Authority pork and the Raiders
by Jerry Fink Las VegasThe Review-Journal reported Wednesday that the board of the Southern Nevada Water Authority postponed a decision as whether or not to enter a 10-year marketing and advertising partnership with the soon-to-be Las Vegas Raiders. This has caused to me to wonder why a monopoly — in particular, a government monopoly — needs to advertise at all? What will potential customers do: dig wells, catch rainfall or sign up with a nonexistent competitor?
This is pork, pure and simple.


Legato is an open source embedded platform built on Linux designed to simplify embedded IoT development.
This is how the docs are organized:
| Section | Description |
|---|---|
| Learn | essentials to get developing |
| API Guides | pre-built services and C language library |
| Tools | target, host and build tools |
The Legato online docs are also available in a PDF doc.
Copyright (C) Sierra Wireless Inc. Use of this work is subject to license.


See: Description
| Interface | Description |
|---|---|
| LaunchableService |
An interface which services can implement to have their
execution managed by the ServiceLauncher.
|
| LauncherExitCodes |
Common Exit codes.
|
| Class | Description |
|---|---|
| AbstractLaunchableService |
Subclass of
AbstractService that provides basic implementations
of the LaunchableService methods. |
| HadoopUncaughtExceptionHandler |
This class is intended to be installed by calling
Thread.setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler)
in the main entry point. |
| Exception | Description |
|---|---|
| ServiceLaunchException |
A service launch exception that includes an exit code.
|
General purpose YARN service launcher:
The ServiceLauncher
class parses
a command line, then instantiates and launches the specified YARN service. It
then waits for the service to finish, converting any exceptions raised or
exit codes returned into an exit code for the (then exited) process.
This class is designed be invokable from the static
ServiceLauncher.main(String[])
method, or from main(String[])
methods implemented by
other classes which provide their own entry points.
Extended YARN Service Interface:
The LaunchableService
interface
extends Service
with methods to pass
down the CLI arguments and to execute an operation without having to
spawn a thread in the Service.start()
phase.
Standard Exit codes:
LauncherExitCodes
defines a set of exit codes that can be used by services to standardize
exit causes.
Escalated shutdown:
The ServiceShutdownHook
shuts down any service via the hadoop shutdown mechanism.
The InterruptEscalator
can be
registered to catch interrupts, triggering the shutdown -and forcing a JVM
exit if it times out or a second interrupt is received.
Tests:
test cases include interrupt handling and lifecycle failures.
String
parameter,
passing the service name as the parameter value.
The launcher will initialize the service via
Service.init(Configuration)
,
then start it via its Service.start()
method.
It then waits indefinitely for the service to stop.
After the service has stopped, a non-null value of
Service.getFailureCause()
is interpreted
as a failure, and, if it didn't happen during the stop phase (i.e. when
Service.getFailureState()
is not
STATE.STOPPED
, escalated into a non-zero return code).
To view the workflow in sequence, it is:
Service.init(Configuration)
Service.start()
Service.waitForServiceToStop(long)
Service.getFailureCause()
while the service was running: propagate it.Service.start()
methodService.stop()
in one of these asynchronous methods.kill
and control-C signals —calling stop()
on the service when
signaled.
This means that a daemon service may get a warning and time to shut
down.
To summarize: provided a service launches its long-lived threads in its Service
start()
method, the service launcher can create it, configure it
and start it, triggering shutdown when signaled.
What these services can not do is get at the command line parameters or easily
propagate exit codes (there is a way covered later). These features require
some extensions to the base Service
interface: the Launchable
Service.
LaunchableService
.
It adds two methods to the service interface —and hence two new features:
int execute()
method which can return the exit
code for the application.YarnClient
client-side code.
It can just as easily be used for implementing long-lived services that
parse the command line -it just becomes the responsibility of the
service to decide when to return from the execute()
method.
It doesn't even need to stop()
itself; the launcher will handle
that if necessary.
The LaunchableService
interface
extends Service
with two new methods.
LaunchableService.bindArgs(Configuration, List)
provides the main(String args[])
arguments as a list, after any
processing by the Service Launcher to extract configuration file references.
This method is called before
Service.init(Configuration)
.
This is by design: it allows the arguments to be parsed before the service is
initialized, thus allowing services to tune their configuration data before
passing it to any superclass in that init()
method.
To make this operation even simpler, the
Configuration
that is to be passed in
is provided as an argument.
This reference passed in is the initial configuration for this service;
the one that will be passed to the init operation.
In
LaunchableService.bindArgs(Configuration, List)
,
a Launchable Service may manipulate this configuration by setting or removing
properties. It may also create a new Configuration
instance
which may be needed to trigger the injection of HDFS or YARN resources
into the default resources of all Configurations.
If the return value of the method call is a configuration
reference (as opposed to a null value), the returned value becomes that
passed in to the init()
method.
After the bindArgs()
processing, the service's init()
and start()
methods are called, as usual.
At this point, rather than block waiting for the service to terminate (as
is done for a basic service), the method
LaunchableService.execute()
is called.
This is a method expected to block until completed, returning the intended
application exit code of the process when it does so.
After this execute()
operation completes, the
service is stopped and exit codes generated. Any exception raised
during the execute()
method takes priority over any exit codes
returned by the method. This allows services to signal failures simply
by raising exceptions with exit codes.
To view the workflow in sequence, it is:
LaunchableService.bindArgs(Configuration, List)
Service.init(Configuration)
with the existing config,
or any new one returned by
LaunchableService.bindArgs(Configuration, List)
Service.start()
LaunchableService.execute()
Service.stop()
LaunchableService.execute()
becomes the exit code of the process, unless overridden by an exception.Service.getFailureCause()
while the service was running: propagate it.For a basic service, the return code is 0 unless an exception was raised.
For a LaunchableService
, the return
code is the number returned from the
LaunchableService.execute()
operation, again, unless overridden an exception was raised.
Exceptions are converted into exit codes -but rather than simply have a "something went wrong" exit code, exceptions may provide exit codes which will be extracted and used as the return code. This enables Launchable Services to use exceptions as a way of returning error codes to signal failures and for normal Services to return any error code at all.
Any exception which implements the
ExitCodeProvider
interface is considered be a provider of the exit code: the method
ExitCodeProvider.getExitCode()
will be called on the caught exception to generate the return code.
This return code and the message in the exception will be used to
generate an instance of
ExitUtil.ExitException
which can be passed down to
ExitUtil.terminate(ExitUtil.ExitException)
to trigger a JVM exit. The initial exception will be used as the cause
of the ExitUtil.ExitException
.
If the exception is already an instance or subclass of
ExitUtil.ExitException
, it is passed
directly to
ExitUtil.terminate(ExitUtil.ExitException)
without any conversion.
One such subclass,
ServiceLaunchException
may be useful: it includes formatted exception message generation.
It also declares that it extends the
LauncherExitCodes
interface listing common exception codes. These are exception codes
that can be raised by the ServiceLauncher
itself to indicate problems during parsing the command line, creating
the service instance and the like. There are also some common exit codes
for Hadoop/YARN service failures, such as
LauncherExitCodes.EXIT_UNAUTHORIZED
.
Note that ExitUtil.ExitException
itself
implements ExitCodeProvider.getExitCode()
If an exception does not implement
ExitCodeProvider.getExitCode()
,
it will be wrapped in an ExitUtil.ExitException
with the exit code
LauncherExitCodes.EXIT_EXCEPTION_THROWN
.
To view the exit code extraction in sequence, it is:
ServiceLaunchException
with an
exit code of 0 is created.execute()
Again, a ServiceLaunchException
with a return code of 0 is created.
ExitException
,
it is returned as the service terminating exception.ExitCodeProvider
,
its exit code and getMessage()
value become the exit exception.ServiceLaunchException
with the exit code
LauncherExitCodes.EXIT_EXCEPTION_THROWN
to indicate that an exception was thrown.ExitUtil.terminate(ExitUtil.ExitException)
,
by way of
ServiceLauncher.exit(ExitUtil.ExitException)
;
a method designed to allow subclasses to override for testing.ExitUtil
class then terminates the JVM
with the specified exit code, printing the toString()
value
of the exception if the return code is non-zero.InterruptEscalator
to handle the standard SIGKILL signal and control-C signals.
This class registers for signal callbacks from these signals, and,
when received, attempts to stop the service in a limited period of time.
It then triggers a JVM shutdown by way of
ExitUtil.terminate(int, String)
If a second signal is received, the
InterruptEscalator
reacts by triggering an immediate JVM halt, invoking
ExitUtil.halt(int, String)
.
This escalation process is designed to address the situation in which
a shutdown-hook can block, yet the caller (such as an init.d daemon)
wishes to kill the process.
The shutdown script should repeat the kill signal after a chosen time period,
to trigger the more aggressive process halt. The exit code will always be
LauncherExitCodes.EXIT_INTERRUPTED
.
The ServiceLauncher
also registers
a ServiceShutdownHook
with the
Hadoop shutdown hook manager, unregistering it afterwards. This hook will
stop the service if a shutdown request is received, so ensuring that
if the JVM is exited by any thread, an attempt to shut down the service
will be made.
Configuration
instance. As the launcher is
the entry point for an application, this implies that the HDFS, YARN or other
default configurations will not have been forced in through the constructors
of HdfsConfiguration
or YarnConfiguration
.
What the launcher does do is use reflection to try and create instances of these classes simply to force in the common resources. If the classes are not on the classpath this fact will be logged.
Applications may consider it essential to either force load in the relevant configuration, or pass it down to the service being created. In which case further measures may be needed.
1: Creation in an extended ServiceLauncher
Subclass the Service launcher and override its
ServiceLauncher.createConfiguration()
method with one that creates the right configuration.
This is good if a single
launcher can be created for all services launched by a module, such as
HDFS or YARN. It does imply a dedicated script to invoke the custom
main()
method.
2: Creation in bindArgs()
In
LaunchableService.bindArgs(Configuration, List)
,
a new configuration is created:
public Configuration bindArgs(Configuration config, ListThis guarantees a configuration of the right type is generated for all instances created via the service launcher. It does imply that this is expected to be only way that services will be launched.args) throws Exception { Configuration newConf = new YarnConfiguration(config); return newConf; }
3: Creation in serviceInit()
protected void serviceInit(Configuration conf) throws Exception { super.serviceInit(new YarnConfiguration(conf)); }
This is a strategy used by many existing YARN services, and is ideal for
services which do not implement the LaunchableService interface. Its one
weakness is that the configuration is now private to that instance. Some
YARN services use a single shared configuration instance as a way of
propagating information between peer services in a
CompositeService
.
While a dangerous practice, it does happen.
Summary: the ServiceLauncher makes a best-effort attempt to load the
standard Configuration subclasses, but does not fail if they are not present.
Services which require a specific subclasses should follow one of the
strategies listed;
creation in serviceInit()
is the recommended policy.
LauncherArguments.ARG_CONF
argument pair: --conf <file>
. This must refer to a file
in the local filesystem which exists.
It will be loaded into the Hadoop configuration
class (the one created by the
ServiceLauncher.createConfiguration()
method.
If this argument is repeated multiple times, all configuration
files are merged with the latest file on the command line being the
last one to be applied.
All the --conf <file>
argument pairs are stripped off
the argument list provided to the instantiated service; they get the
merged configuration, but not the commands used to create it.
IrqHandler
: registers interrupt
handlers using sun.misc
APIs.
ServiceLaunchException
: a
subclass of ExitUtil.ExitException
which
takes a String-formatted format string and a list of arguments to create
the exception text.
Copyright © 2020 Apache Software Foundation. All rights reserved.


cooking a bird for a feast. No problem. Deep fried us a goose. A happy thanksgiving indeed. Ah yes, Merry Thanksgiving!!Quote: Posted 11/27/08 23:00 (GMT) -- Deltutammatre
thanks for all the deviants on this board thinking up new and exploitative ways to push...


Leverage inclusive insurance to attract and retain new customers or a quality workforce of independent contractors.
Contact us: maximilian.weiner@resilientl.com


Configure downloading congregation data from one directory
If you make a mistake, just reload this page and start over.


public abstract class JobService
extends Service
Users will need to override onStartJob(JobParameters)
, which is where any
asynchronous execution should start. This method, like most lifecycle methods, runs on the main
thread; you must offload execution to another thread (or android.os.AsyncTask
, or
android.os.Handler
, or your favorite flavor of concurrency).
Once any asynchronous work is complete jobFinished(JobParameters, boolean)
should be
called to inform the backing driver of the result.
Implementations should also override onStopJob(JobParameters)
, which will be called
if the scheduling engine wishes to interrupt your work (most likely because the runtime
constraints that are associated with the job in question are no longer met).
| Modifier and Type | Class and Description |
|---|---|
static interface |
JobService.JobResult
The result returned from a job execution.
|
| Modifier and Type | Field and Description |
|---|---|
static int |
RESULT_FAIL_NORETRY
Returned to indicate the job encountered an error during execution but should not be retried.
|
static int |
RESULT_FAIL_RETRY
Returned to indicate the job encountered an error during execution and should be retried after
a backoff period.
|
static int |
RESULT_SUCCESS
Returned to indicate the job was executed successfully.
|
| Constructor and Description |
|---|
JobService() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
dump(java.io.FileDescriptor fd,
java.io.PrintWriter writer,
java.lang.String[] args) |
void |
jobFinished(JobParameters job,
boolean needsReschedule)
Callback to inform the scheduling driver that you've finished executing.
|
IBinder |
onBind(Intent intent) |
void |
onConfigurationChanged(Configuration newConfig) |
void |
onRebind(Intent intent) |
void |
onStart(Intent intent,
int startId) |
int |
onStartCommand(Intent intent,
int flags,
int startId) |
abstract boolean |
onStartJob(JobParameters job)
The entry point to your Job.
|
abstract boolean |
onStopJob(JobParameters job)
Called when the scheduling engine has decided to interrupt the execution of a running job, most
likely because the runtime constraints associated with the job are no longer satisfied.
|
void |
onTaskRemoved(Intent rootIntent) |
boolean |
onUnbind(Intent intent) |
public static final int RESULT_SUCCESS
public static final int RESULT_FAIL_RETRY
public static final int RESULT_FAIL_NORETRY
public abstract boolean onStartJob(JobParameters job)
jobFinished(JobParameters, boolean)
to notify the scheduling service that the work
is completed.
If a job with the same service and tag was rescheduled during execution onStopJob(JobParameters)
will be called and the wakelock will be released. Please
make sure that all reschedule requests happen at the end of the job.
true
if there is more work remaining in the worker thread, false
if the
job was completed.public abstract boolean onStopJob(JobParameters job)
JobInvocation.Builder.setRetryStrategy(RetryStrategy)
,
RetryStrategy
public final void jobFinished(JobParameters job, boolean needsReschedule)
job
- needsReschedule
- whether the job should be rescheduledJobInvocation.Builder.setRetryStrategy(RetryStrategy)
public final int onStartCommand(Intent intent, int flags, int startId)
public final IBinder onBind(Intent intent)
public final boolean onUnbind(Intent intent)
public final void onRebind(Intent intent)
public final void onStart(Intent intent, int startId)
protected final void dump(java.io.FileDescriptor fd, java.io.PrintWriter writer, java.lang.String[] args)
public final void onConfigurationChanged(Configuration newConfig)
public final void onTaskRemoved(Intent rootIntent)


{% extends "_base.html" %} {% block title %}Authentication successful{% endblock %} {% block header %} {% endblock %} {% block body %} Thank you Now we know it’s you, you can close this window and return to the application. {% include "sso_footer.html" without context %} {% endblock %}
Now we know it’s you, you can close this window and return to the application.


×
Staff Department Management
Change Primary Department
Select department to change to
{{dept.Name}}
Set As Primary Department
Manage Secondary Departments
Grant access to a new department
{{dept.Name}}
Grant Access
S/N
Department ID
Department
Revoke Access
{{$index + 1}}
{{department.DepartmentID}}
{{department.Name}}
No secondary department has been associated with this profile


Student
Number of times called
Number of correct answers
Chances to be called
Roger Waters Student
This student is so bibo, like so angas in his answers pero walang point? get my point?
+1<PHONE_NUMBER>
<EMAIL_ADDRESS>18th June 1990


If your getting started with the gym, or simply wanna read up on another persons opinion, welcome to my gym blog!
Its important that if you want too work on physique that you eat right to get the most out of your hard work.
There's plenty of different work outs you could do at the gym, each with their own bennefits.
The most important part of having fitness uin your life is doing it for the right reasons and with the right indsetso that you stick to it, bennefit from it, and dont over exert yourself or hurt yourself.
Psum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.


Brandi Duarte
Web Developer
-<EMAIL_ADDRESS>- Phone
-<PHONE_NUMBER>
- Address
- 62 Favre St
- Postal Code
- 02126
- City
- Boston
- State
- Ma
Upcoming graduate at Resilient Coders offering a strong foundation in software engineering and programming principles across multiple platforms. Experienced in object-oriented programming; developing, testing and debugging code and designing interfaces. Hardworking, dedicated individual who is committed to improving myself daily with a desire to be in a organization where my hard work and dedication can be fully utilized to assist with moving the business forward.
2018-01-09 - Present
Utilize best practices to create modern responsive web applications & collaborate with team members using iterative design methods to create full stack web applications.
Freelance client based website for a beauty brand using HTML, CSS, and JavaScript for a modern looking website.
2010
Fisher College
Psychology
2018
Ai game of Rock, paper, scissors, lizard, & spock, game of tic-tac-toe, to-do list, attendance list, calculator, a slot machine, slideshow, and an Api that tells users the weather all done in Html, Css, and Java Script.
-
Web
Node.js
Angular.js
-
Language
JavaScript
React
-
Markup Language
HTML
-
Stylesheet
CSS


The instructions are in the js/main.js file. To confirm you've written the code properly, you'll need to inspect the webpage and view it in the console.
js/main.js


Thanks to users feedback the form is improving bit by bit. Please comment for missing information that you would consider relevant to highlight your contribution.
If you want to report any problem please open an issue into the catalog-github: report an issue


|
Ogre_glTF
glTF import library for Ogre
|
Class that is responsible for initializing the library with the loader, and giving out. More...
#include <Ogre_glTF.hpp>
Classes | |
| struct | glTFLoaderImpl |
| Implementation of the glTF loader. Exist as a pImpl inside the glTFLoader class. More... | |
Public Member Functions | |
| glTFLoader () | |
| Initialize the library by creating this object. | |
| glTFLoader (glTFLoader &&other) noexcept | |
| glTFLoader & | operator= (glTFLoader &&other) noexcept |
| ~glTFLoader () | |
| Deinitialize the library at this object destruction. | |
| loaderAdapter | loadFromFileSystem (const std::string &path) const |
| loaderAdapter | loadGlbResource (const std::string &name) const |
| Ogre::Item * | getItemFromResource (const std::string &name, Ogre::SceneManager *smgr) override |
| Get you an item from a GLB file loaded inside an Ogre resource group. | |
| Ogre::Item * | getItemFromFileSystem (const std::string &fileName, Ogre::SceneManager *smgr) override |
| Get you an item from a GLB or a GLTF file from the filesystem. | |
| glTFLoader (const glTFLoader &)=delete | |
| Deleted copy contructor. | |
| glTFLoader & | operator= (const glTFLoader &)=delete |
| Deleted asignment operator. | |
| Public Member Functions inherited from Ogre_glTF::glTFLoaderInterface | |
| virtual | ~glTFLoaderInterface ()=default |
| Polymorphic dtor. | |
Class that is responsible for initializing the library with the loader, and giving out.
Definition at line 69 of file Ogre_glTF.hpp.
|
noexcept |
| loaderAdapter glTFLoader::loadFromFileSystem | ( | const std::string & | path | ) | const |
Load a glTF text or binary file. Give you an adapter to use this file with Ogre
| path | String containing the path to a file to load (either .glTF or .glc) |
Definition at line 165 of file Ogre_glTF.cpp.
Referenced by getItemFromFileSystem().


For this project 2 semester I have been assigned the task of maintaining a couple websites that have been in development from last semester.The Websites are for the St Barnabas Trust, a website for a St Clair rest home displaying information about, services and contact information for the home.The other site is for Theta New Zealand which is a Health program for NZ youth and educators , the site needs its content updated as well as the Cloudcannon instructions for the site owner to make his own updates when the website has been handed over.
Like in Project 1 i decided it would be a good idea to outline my project in the Github Repository making use of the project boards to actively track my current tasks, plan future tasks and features and have a general measure of my progress. With Agile being the industry standard for developing sofware I tried to model my development habits to accomodate these techniques i had previously learned in the Sofware Engineering Paper. Below is a example of the storyboard being used whilst developing the website.
Adon decided that the domain name for the website https://chasmccammon.github.io/Project2/ based of the github pages from my repository, was not very official sounding and that I should create new Github account and repository for a domain name that better represents St Barnabas Trust I decided it would be necessary to have some version control for the website so having 2 accounts with the same content I decided I would use my private Github account for version control while using the new official account to make new changes on, which gave me a constant backup that I could roll back to in case I overwrite the new version with an error and cannot recover the working code.
Initially the web page for The St Barnabas Trust needed some minor punctuation and formatting changes to its body text and a promotional Youtube video embedded in the About page. After a meeting with the client a few more changes were outlined, these included a change of logo on all pages from the current logo, change the colour scheme of the entire site using the hex codes taken from the new logo, to update the current food pictures in the Meals on Wheels page and reformat some images on the image slider on the about page that were cropped incorrectly. The Change of logo and corresponding theme took an eye for design to make work with the current site and with some input from Adon we produced the site pictured Below.
After a meeting with Lynette from St Barnabas Trust , there were concerns that some of the images were not focused right.To fit on the site and the current sliders the images had been given a specified size but had been stretched or squash to fit. The amount of images and sizes were an issue also as the odd number of images made some of them slapped into place and some text seem out of place. So With Adon's suggestion I took some slider images and some unused images of the grounds to create a 3 image banner on the index page. This seemed to give the best result as it seperated the images from the text and made a clear separation , instead of having images and text side by side.I achieved this effect on the images by setting overflow to be hidden on the container of the images defining the size of the images that works with the current resolution and centering the image by setting magin to be auto on the image itself.
Below are examples of re-cropping and centering + layout of images


Rishi Kapoor Shares A Heartfelt Note As He Remembers Dara Singh On His Birth Anniversary
Earlier this year, his son Vindu Dara Singh launched a comic book based on the life of his father.
by IANSRishi Kapoor has paid his respect to the late Dara Singh on his birth anniversary and described him as the “most humblest, kind and affectionate man on planet Earth”.
On Tuesday morning, Rishi Kapoor tweeted; “Happy Birthday Dara ji Singh saheb. Had the pleasure of seeing him wrestle “Sky Hi Lee “live in Mumbai and work in couple of films. The most humblest, kind and affectionate man on planet Earth. A phrase was coined- “Apne aap ko Dara Singh samajhta hai?” What a tribute to the legend!”
Commenting on the tweet, a fan of Rishi Kapoor recalled a few movies where Dara Singh has worked and wrote: “Mera Naam Joker, Ajooba and Gharana… I can remember Sir”.
Rishi Kapoor replied to the comment adding a few more names and wrote, “Zahreela Insaan, Jhoota Kahin Ka, Aan aur Shaan, Anmol and worked in our production Mera Naam Joker, Dharam Karam as far as I can remember”.
Dara Singh was born Deedar Singh Randhawa on November 19, 1928, in Punjab’s Amritsar district. A professional wrestler, Dara Singh also gained immense popularity as an actor. He also forayed into politics later in his career. He worked actively in films till he breathed his last in July 2012.
Earlier this year, his son Vindu Dara Singh launched a comic book based on the life of his father. The book is titled, “The Epic Journey Of The Great Dara Singh”.


--- layout: default title: Keeping Up in the Wild Web permalink: /events/2016/keeping-up-wild-web/ --- {% assign currentEvent = page.title %}


| Haven | Action -- Duration | $2 | +1 Card +1 Action Set aside a card from your hand face down (under this). At the start of your next turn, put it into your hand. |
| Lighthouse | Action -- Duration | $2 | +1 Action Now and at the start of your next turn: +$1. ---------- While this is in play, when another player plays an Attack card, it doesn't affect you. |
| Native Village | Action | $2 | +2 Actions Choose one: Put the top card of your deck face down on your Native Village mat (you may look at those cards at any time); or put all the cards from your mat into your hand. |
| Fishing Village | Action -- Duration | $3 | +2 Actions +$1 At the start of your next turn: +1 Action and +$1. |
| Lookout | Action | $3 | +1 Action Look at the top 3 cards of your deck. Trash one of them. Discard one of them. Put the other one back on to your deck. |
| Smugglers | Action | $3 | Gain a copy of a card costing up to $6 that the player to your right gained on their last turn. |
| Warehouse | Action | $3 | +3 Cards +1 Action Discard 3 cards. |
| Caravan | Action -- Duration | $4 | +1 Card +1 Action At the start of your next turn, +1 Card. |
| Cutpurse | Action -- Attack | $4 | +$2 Each other player discards a Copper (or reveals a hand with no Copper). |
| Island | Action -- Victory | $4 | Put this and a card from your hand onto your Island mat. ---------- 2VP |
| Salvager | Action | $4 | +1 Buy Trash a card from your hand. +$1 per $1 it costs. |
| Treasure Map | Action | $4 | Trash this and a Treasure Map from your hand. If you trashed two Treasure Maps, gain 4 Golds onto your deck. |
| Bazaar | Action | $5 | +1 Card +2 Actions +$1 |
| Merchant Ship | Action -- Duration | $5 | Now and at the start of your next turn: +$2. |
| Outpost | Action -- Duration | $5 | If this is the first time you played an Outpost this turn, and the previous turn wasn't yours, then take an extra turn after this one, and you only draw 3 cards for your next hand. |
| Tactician | Action -- Duration | $5 | If you have at least one card in hand, discard your hand, and at the start of your next turn, +5 Cards, +1 Action, and +1 Buy. |
| Treasury | Action | $5 | +1 Card +1 Action +$1 When you discard this from play, if you didn't buy a Victory card this turn, you may put this onto your deck. |
| Wharf | Action -- Duration | $5 | Now and at the start of your next turn: +2 Cards and +1 Buy. |
| Embargo | Action | $2 | +$2 Trash this. Add an Embargo token to a Supply pile. (For the rest of the game, when a player buys a card from that pile, they gain a Curse.) |
| Pearl Diver | Action | $2 | +1 Card +1 Action Look at the bottom card of your deck. You may put it on top. |
| Ambassador | Action -- Attack | $3 | Reveal a card from your hand. Return up to 2 copies of it from your hand to the Supply. Then each other player gains a copy of it. |
| Navigator | Action | $4 | +$2 Look at the top 5 cards of your deck. Either discard them all, or put them back in any order. |
| Pirate Ship | Action -- Attack | $4 | Choose one: +$1 per Coin token on your Pirate Ship mat; or each other player reveals the top 2 cards of their deck, trashes one of those Treasures that you choose, and discards the rest, and then if anyone trashed a Treasure you add a Coin token to your Pirate Ship mat. |
| Sea Hag | Action -- Attack | $4 | Each other player discards the top card of their deck, then gains a Curse onto their deck. |
| Explorer | Action | $5 | You may reveal a Province from your hand. If you do, gain a Gold to your hand. If you don't, gain a Silver to your hand. |
| Ghost Ship | Action -- Attack | $5 | +2 Cards Each other player with 4 or more cards in hand puts cards from their hand onto their deck until they have 3 cards in hand. |
| Astrolabe | Treasure -- Duration | $3 | Now and at the start of your next turn: Worth $1 +1 Buy |
| Monkey | Action -- Duration | $3 | Until your next turn, when the player to your right gains a card, +1 Card. At the start of your next turn, +1 Card. |
| Sea Chart | Action | $3 | +1 Card +1 Action Reveal the top card of your deck. If you have a copy of it in play, put it into your hand. |
| Blockade | Action -- Duration -- Attack | $4 | Gain a card costing up to $4, setting it aside. At the start of your next turn, put it into your hand. While it's set aside, when another player gains a copy of it on their turn, they gain a Curse. |
| Sailor | Action -- Duration | $4 | +1 Action Once this turn, when you gain a Duration card, you may play it. At the start of your next turn, +$2 and you may trash a card from your hand. |
| Tide Pools | Action -- Duration | $4 | +3 Cards +1 Action At the start of your next turn, discard 2 cards. |
| Corsair | Action -- Duration -- Attack | $5 | +$2 At the start of your next turn, +1 Card. Until then, each other player trashes the first Silver or Gold they play each turn. |
| Pirate | Action -- Duration -- Reaction | $5 | At the start of your next turn, gain a Treasure costing up to $6 to your hand. ---------- When any player gains a Treasure, you may play this from your hand. |
| Sea Witch | Action -- Duration -- Attack | $5 | +2 Cards Each other player gains a Curse. At the start of your next turn, +2 Cards, then discard 2 cards. |


| Class Summary |
|
MultiViewsTool
|
Allows for transparent content negotiation in a manner mimicking
Apache httpd's MultiViews.Reads the default language out of the ViewContext as
org.apache.velocity.tools.view.i18n.defaultLanguage.
See {@link #findLocalizedResource(String, String)} and {@link
#findLocalizedResource(String, Locale)} for usage. |
|
ServletToolboxManager
|
|
|
ServletToolInfo
|
ToolInfo implementation that holds scope information for tools
used in a servlet environment.
|
|
ViewToolInfo
|
ToolInfo implementation for view tools. New instances
are returned for every call to getInstance(obj), and tools
that implement (@link ViewTool} are initialized with the
given object before being returned.
|
|
XMLToolboxManager
|
A ToolboxManager for loading a toolbox from xml.
A toolbox manager is responsible for automatically filling the Velocity
context with a set of view tools. This class provides the following
features:configurable through an XML-based configuration fileassembles a set of view tools (the toolbox) on requestsupports any class with a public constructor without parameters
to be used as a view toolsupports adding primitive data values to the context(String,Number,Boolean)ConfigurationThe toolbox manager is configured through an XML-based configuration
file. The configuration file is passed to the {@link #load(java.io.InputStream input)}
method. The required format is shown in the following example:
<?xml version="1.0"?>
<toolbox>
<tool>
<key>toolLoader</key>
<class>org.apache.velocity.tools.tools.ToolLoader</class>
</tool>
<tool>
<key>math</key>
<class>org.apache.velocity.tools.tools.MathTool</class>
</tool>
<data type="Number">
<key>luckynumber</key>
<value>1.37</class>
</data>
<data type="String">
<key>greeting</key>
<value>Hello World!</class>
</data>
</toolbox>
|


{% load static %}
NotePy
NOTEPY
Add A Note
Change Note Color
Search Notes
{{ user.email }}
Log Out
Active Note Color:
Search
End Search
Log Out
Are you sure you want to log out?
Yes
No


|
My Project
|
#include "common.h"
Go to the source code of this file.
Functions | |
| void | drawtext4 (const char *text, int length, int x, int y) |
| void | draw2 () |
| void | display2 () |
| void | specialKeys2 (int key, int x, int y) |
| void | edge_transformations () |
| void | get_coordinates () |
| void | call_2D_view (int argc, char **argv) |
Variables | |
| int | windowPosX2 =640 |
| Opening window Xposition. More... | |
| int | windowPosY2 =480 |
| Opening window Yposition. More... | |
| int | windowWidth2 = 50 |
| Opening window Width. More... | |
| int | windowHeight2 =50 |
| Opening WIndow Height. More... | |
| int | SIZE = 100 |
| Maximum number of vertices in the 2D drwaing. More... | |
| int | refreshMillis = 30 |
| Refresh period in milliseconds. More... | |
| int | number_of_points |
| Total number of points in 3D model. More... | |
| int | Edges |
| Number of edges in the view. More... | |
| float | vertex_matrix [100][3] |
| Vertex Matrix of form(index,x,y) More... | |
| int | edges [4950][2] |
| Edges between which two points is present in the model (Edge Matrix) More... | |
| float | edges_bin [100][100] |
| Binary matrix 1 if there is an edge between those two points. More... | |
| float | final_vertices [100][2] |
| 2D coordinates for that drawing More... | |
| int | final_edges [100][100] |
| Final edges between the points (index wise) More... | |
| float | rotX2 =0 |
| Float to define the rotation about perpendicular axis. More... | |
| void call_2D_view | ( | int | argc, |
| char ** | argv | ||
| ) |
Main function: GLUT runs as a console application starting at main()
Self Made Functions
Glut Functions
Definition at line 174 of file 2D_view.cpp.
| void display2 | ( | ) |
Callback handler for window re-paint event
Clear color and depth buffers
To operate on model-view matrix
Reset the model-view matrix
Rotate about perpendicular axis
Calling drawing function
Swap front and back buffers (of double buffered mode)
Definition at line 82 of file 2D_view.cpp.
| void draw2 | ( | ) |
Drawing Function for 2D figures
Definition at line 59 of file 2D_view.cpp.
| void drawtext4 | ( | const char * | text, |
| int | length, | ||
| int | x, | ||
| int | y | ||
| ) |
Function to include text in GL Window
Definition at line 37 of file 2D_view.cpp.
| void edge_transformations | ( | ) |
Conversion of edge Matrix to Binary edge matrix
Definition at line 145 of file 2D_view.cpp.
| void get_coordinates | ( | ) |
Getting 2D vertices from vertex Matrix in order
Definition at line 161 of file 2D_view.cpp.
| void specialKeys2 | ( | int | key, |
| int | x, | ||
| int | y | ||
| ) |
For changing rotation with up/down and right/left keys.
Definition at line 102 of file 2D_view.cpp.
| int Edges |
Number of edges in the view.
Definition at line 23 of file 2D_view.cpp.
| int edges[4950][2] |
Edges between which two points is present in the model (Edge Matrix)
Definition at line 27 of file 2D_view.cpp.
| float edges_bin[100][100] |
Binary matrix 1 if there is an edge between those two points.
Definition at line 29 of file 2D_view.cpp.
| int final_edges[100][100] |
Final edges between the points (index wise)
Definition at line 33 of file 2D_view.cpp.
| float final_vertices[100][2] |
2D coordinates for that drawing
Definition at line 31 of file 2D_view.cpp.
| int number_of_points |
Total number of points in 3D model.
Definition at line 21 of file 2D_view.cpp.
| int refreshMillis = 30 |
Refresh period in milliseconds.
Definition at line 19 of file 2D_view.cpp.
| float rotX2 =0 |
Float to define the rotation about perpendicular axis.
Definition at line 35 of file 2D_view.cpp.
| int SIZE = 100 |
Maximum number of vertices in the 2D drwaing.
Definition at line 17 of file 2D_view.cpp.
| float vertex_matrix[100][3] |
Vertex Matrix of form(index,x,y)
Definition at line 25 of file 2D_view.cpp.
| int windowHeight2 =50 |
Opening WIndow Height.
Definition at line 14 of file 2D_view.cpp.
| int windowPosX2 =640 |
Opening window Xposition.
Definition at line 8 of file 2D_view.cpp.
| int windowPosY2 =480 |
Opening window Yposition.
Definition at line 10 of file 2D_view.cpp.
| int windowWidth2 = 50 |
Opening window Width.
Definition at line 12 of file 2D_view.cpp.


Innovation Cloud
"Connect your ideas globally"
Learn More
The Innovation Cloud Conference
Some text...
Some text...
Some text...


Here we go with another post on ZeroVM. This time to help get you up to speed on how ZeroVM provides isolation. For a reminder of what ZeroVM is, how it is different than containers and other virtualization technologies, see my prior post here, or the ZeroVM docs here.
The ZeroVM site itself doesn't say much on the isolation provided by ZeroVM. This is largely because it derives it's isolation through the use of the Google NaCL project. The tl;dr for NaCL, is that it requires applications be ported over to it's sandboxing environment, in which a subset of processor instructions are made available.
The sandbox environment provided by NaCL is a limited subset of processor instructions that prevent various syscalls that could be destructive. Further, ZeroVM takes the 50 syscalls available in NaCL and reduces that to six. Meaning, if your code contains a syscall other than one of the six currently allowed, your code will fail when ZeroVM attempts to execute the specific syscall. The six syscalls allowed are currently:
We can test this by trying an invalid write instead of pwrite with the following C++
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
int main()
{
char data[128];
if(read(0, data, 128) < 0)
write(2, "An error occurred in the read.\n", 31);
}
This is what it looks like when it implodes: ``` $ zvsh syscalls ----------/tmp/tmpl7Mi1v---------- Node = 1 Version = 20130611 Timeout = 50 Memory =<PHONE_NUMBER>, 0 Program = /home/vagrant/syscalls/syscalls Channel = /dev/stdin,/dev/stdin,0,0,4294967296,4294967296,0,0 Channel = /tmp/tmpOfgnG6/stdout,/dev/stdout,0,0,0,0,4294967296,4294967296 Channel = /tmp/tmpOfgnG6/stderr,/dev/stderr,0,0,0,0,4294967296,4294967296
----------/tmp/tmpeNIzx4---------- [args] args = syscalls [mapping] channel=/dev/stdin,mode=char channel=/dev/stdout,mode=char channel=/dev/stderr,mode=char
2 0 0 disable 0.00 0.00 0 0 0 0 0 0 0 0 src/loader/elf_util.c 178: Segment 0 is of unexpected type 0x6, flag 0x5
ERROR: ZeroVM return code is 8 ```
What is important here, at least in terms of telling why it failed is: ERROR: ZeroVM return code is 8
. Error codes 1 - 17 indicate an issue in untrusted code. In our example, it was specifically the read / write bits that caused the issue.
Time to jump down the rabbit hole. Into what actually just happened. First some diagrams:
In this first diagram, you are looking at the internal structure of the ZeroVM process.
Working from the outside in, the grey area represents everything that is ZeroVM, all of it's runtime data, IO Channels, virtual file systems, and most importantly, the user code to be executed.
Next, in the pink area is where end-user code gets loaded up, from there a call will progress down the stack.
One last thing to note is the two sys-calls for zvmpread and zvmpwrite, their traps, handlers, and this thing called a trampoline. The trampolines are a mechanisim that facilitates the switch from untrusted to trusted execution. A syscall will start in the 'untrusted' context, if it is an allowed call, the ZRT or ZeroVM Run Time via it's hooks into the ZVM Syscall API and passes the call to a "trampoline" to perform the context switch needed to allow the syscall to execute in trusted space.
This next diagram offers a different view on the above ZeroVM guest. In the below diagram, you will see how the NaCL & ZeroVM trampolines are implemented in memory, how that in turn gets passed down to the corresponding syscall, the trusted ELF binary, and where the rest of ZeroVM is contained.
In this post, we took a deeper look into how isolation is handled within ZeorVM. We started with a high level discussion of NaCL and ZeroVM's implementation of limited syscalls. We then attempted to execute an invalid syscall. Finally we got into the nitty gritty of how that syscall is trapped via the ZeroVM runtime and where in it's memory stack context switches from trusted to untrusted code happen.


A simple JSP Tag Library to display the code, reason and/or cause for HTTP status codes in JSP error pages.
For example:
<%@ page isErrorPage="true" %>
<%@ taglib prefix="hs" uri="http://erik.thauvin.net/taglibs/httpstatus" %>

<title><hs:code/> <hs:reason default="Server Error"/></title>

<hs:reason default="Server Error"/>

Cause:
<hs:cause default="Unable to complete your request."/>

...
or
<%@ page isErrorPage="true" import="net.thauvin.erik.httpstatus.Reasons" %>
<%= Reasons.getReasonPhrase(pageContext.getErrorData().getStatusCode()) %>
would display on a 501 status code:
Not Implemented
The <hs:cause/>
tag displays the cause of current HTTP status code, if any. A shorthand for:
Optional attributes are:
| Attribute | Description |
|---|---|
default |
The fallback value to output, if no cause is available. |
escapeXml |
Converts <, >, &, ', " to their corresponding entity codes. Value is true by default. |
The <hs:code/>
tag displays the current HTTP status code, if any. A shorthand for:
The <hs:reason/>
tag displays the reason for a HTTP status code, if any. Optional attributes are:
| Attribute | Description |
|---|---|
code |
The HTTP status error code. If not specified the current status code is used. |
default |
The fallback value to output, if no reason is available. |
escapeXml |
Converts <, >, &, ', " to their corresponding entity codes. Value is true by default. |
The reasons are defined in a ResourceBundle properties as follows:
| Status Code | Reason |
|---|---|
100 |
Continue |
101 |
Switching Protocols |
102 |
Processing |
103 |
Early Hints |
200 |
OK |
201 |
Created |
202 |
Accepted |
203 |
Non-Authoritative Information |
204 |
No Content |
205 |
Reset Content |
206 |
Partial Content |
207 |
Multi-Status |
208 |
Already Reported |
226 |
IM Used |
300 |
Multiple Choices |
301 |
Moved Permanently |
302 |
Found/Moved Temporarily |
303 |
See Other |
304 |
Not Modified |
305 |
Use Proxy |
306 |
Switch Proxy |
307 |
Temporary Redirect |
308 |
Permanent Redirect |
400 |
Bad Request |
401 |
Unauthorized |
402 |
Payment Required |
403 |
Forbidden |
404 |
Not Found |
405 |
Method Not Allowed |
406 |
Not Acceptable |
407 |
Proxy Authentication Required |
408 |
Request Timeout |
409 |
Conflict |
410 |
Gone |
411 |
Length Required |
412 |
Precondition Failed |
413 |
Request Entity/Payload Too Large |
414 |
Request-URI Too Long |
415 |
Unsupported Media Type |
416 |
Requested Range Not Satisfiable |
417 |
Expectation Failed |
418 |
I'm A Teapot |
419 |
Insufficient Space on Resource |
420 |
Method Failure |
421 |
Misdirected Request |
422 |
Unprocessable Entity |
423 |
Locked |
424 |
Failed Dependency |
426 |
Upgrade Required |
428 |
Precondition Required |
429 |
Too Many Requests |
431 |
Request Header Fields Too Large |
440 |
Login Timeout |
444 |
No Response |
449 |
Retry With |
450 |
Blocked by Windows Parental Controls |
451 |
Unavailable For Legal Reasons |
494 |
Request Header Too Large |
495 |
Cert Error |
496 |
No Cert |
497 |
HTTP to HTTPS |
498 |
Token Expired/Invalid |
499 |
Client Closed Request |
500 |
Internal Server Error |
501 |
Not Implemented |
502 |
Bad Gateway |
503 |
Service Unavailable |
504 |
Gateway Timeout |
505 |
HTTP Version Not Supported |
506 |
Variant Also Negotiates |
507 |
Insufficient Storage |
508 |
Loop Detected |
509 |
Bandwidth Limit Exceeded |
510 |
Not Extended |
511 |
Network Authentication Required |
520 |
Unknown Error |
522 |
Origin Connection Time-out |
598 |
Network Read Timeout Error |
599 |
Network Connect Timeout Error |
Include the following in your build.gradle
file:
dependencies {
compile 'net.thauvin.erik.httpstatus:httpstatus:1.0.4'
}
or as a Maven artifact:
<dependency>
<groupId>net.thauvin.erik.httpstatus</groupId>
<artifactId>httpstatus</artifactId>
<version>1.0.4</version>
</dependency>
You can query the reason phrase for status codes as follows:
If no status code is specified, all will be printed:


Adapt your Housewares system so that it services requests from just one IP address.
Now do the same for all sites in your network. (If your IP address is www.xxx.yyy.zzz, all
sites in your network share www but may differ elsewhere.)
Create a ruleserver. Add data for a single
user with a password of your choosing. Add information allowing access from just one
IP address. (alteernatively, do the same for all sites in your domain. (If your IP
address is www.xxx.yyy.zzz, all sites in your network share www but may differ elsewhere.)
Add this ruleserver as infobase for the standard interface to your Housewares system. Now
try to use the system. Confirm that you can use it, after typing in the user name and
password you specified in the ruleserver. Now, try from a different browser with a
different user name and/or password.
Set up a security interface and ruleserver. It should include at
least one class, called user, with slots handle and pwd at the very
least. Arrange so that anyone can add a new user but no one can see the list
of users or anything about them. Use the interface to create a new user with
a new password.
Specify a viewrelation and an updaterelation for some attribute in your Housewares
system. Define these relations so that only you can see this information. Now ask some
questions (as yourself) and notice that you get to see the information. Quit your
browser and restart. This time, when challenged, offer the name and pasword for another
user. Notice that the attribute is no longer visible to you.
Exercises
Start a new Infomaster and load a fresh copy of the Housewares system.
Examine the unspsc.521518.type relation in the database named Repository.
Use Ask to create a virtual table with just one column listing all products of type
skillet. Create a virtual table with 2 columns, the first listing a product and the
second listing country of the manufacturer of the product.
Examine the unspsc.521518.material relation. Change the material of
6019919-1qt-Sauce-Pan to iron. (It is the next to last product listed in the relation.)
Delete the material of 6019920-1.5qt-Sauce-Pan. (it is the last product listed in the
relation.) Add a row specifying a material for 6019920-1.5qt-Sauce-Pan, e.g. aluminum.
Use the Transform operation to change the material of every iron product
to Aluminum.


That is one thing gods and mortals share. When we are young, we think ourselves the first to have each feeling in the world.


{% if home_page_detail.main_image %}
{% else %}
{% endif %}
{% trans "Our pizzeria" %}
{{ home_page_detail.description_text }}
{% else %}{% trans "Pizza is an Italian food that is now spread throughout the world. It is based on a thin slice of Celtic pasta covered with tomato or sour cream based sauce, topped with various toppings (the most common are vegetables, mushrooms and cold cuts), and the dough is finally sprinkled with grated cheese and baked. Typical spices include oregano and pepperoni. The original Italian pizza is served with mozzarella, basil and olive oil, which may come with additional ingredients." %}
{% endif %}{% trans "Map" %}
{% if home_page_detail.main_image %}
{% else %}
{% endif %}
embedgooglemap.net
{% trans "On sale" %}
{% if home_page_detail.main_image %}
{% else %}
{% endif %}
{% trans "On sale" %}
{% if home_page_detail.main_image %}
{% else %}
{% endif %}
{% trans "Recommended" %}
{% if home_page_detail.main_image %}
{% else %}
{% endif %}
{% trans "Recommended" %}
{% if home_page_detail.main_image %}
{% else %}
{% endif %}


TCS Analytical Ability Test {{vm.id}} Result
Leaderboard
loading leaderboard...
Showing top {{vm.leaderboard.length}} results!
No record to show!
{{ user.name.split('@')[0] }}
{{ user.score }}
Your score is {{vm.score}}
Change Graph:
Bar
Column
Line
Spline
Change Theme:
Default
Dark
Sand
Light
Loading...
Change Graph:
Bar
Column
Line
Spline
Change Theme:
Default
Dark
Sand
Light
Loading...
Change Graph:
Bar
Column
Line
Spline
Change Theme:
Default
Dark
Sand
Light
Question wise Report
Your Answer
Correct Answer
Question {{$index+1}}.
You answered correctly!
You didn't attempt this question!
Your answer is incorrect!
Statistics
Attempted
{{question.stats.count}} user
Solved Correctly
{{question.stats.correct}} user
Solved Incorrectly
{{question.stats.count - question.stats.correct}} user
Success Rate
{{(question.stats.correct*100/(question.stats.count?question.stats.count:1)).toFixed(2)}}%
Last Attempted On
{{question.stats.lastAttempted.attempted_on | date:'medium'}}
Last Attempted By
{{question.stats.lastAttempted.name.split('@')[0] | date:'medium'}}
Last Solved On
{{question.stats.lastSolved.attempted_on | date:'medium'}}
Last Solved By
{{question.stats.lastSolved.name.split('@')[0] | date:'medium'}}


Label Component Examples
This example shows label component with different configurations
1. Basic label
2. Label with bigger font size
3. Label with 'new-cls' css class name and a 'gl-second' target (please inspect)