LibX 2.0 is an open source community platform for delivering library services. It provides a toolbar and configurable context menus that support functions like OpenURL, linking to library resources both on and off-campus. The LibX Edition Builder allows librarians to easily create and share customized versions of LibX for their institution. Emerging technologies provide opportunities to enhance LibX with features like web services, data mashups and social networking elements. The LibApp model defines a framework for modular components that can interact to enrich web content with library data and services.
- JavaScript has come a long way in its 16 year history, from its origins in 1995 at Netscape to becoming a core technology powering modern web applications.
- It was created in just 10 days by Brendan Eich to add interactivity to web pages and competed with Java for browser dominance, though it faced early criticism over its design choices and lack of features.
- JavaScript now has widespread adoption across browsers and continues evolving through standards like ES.next while also facing ongoing debates around issues like bytecode compilation and multi-virtual machine integration.
The document discusses several popular JavaScript libraries including Dojo, Prototype, jQuery, Mochikit, and Yahoo UI. It compares the libraries based on their focus, DOM support, events/effects handling, documentation, community, file size, and popularity. The libraries provide a variety of features like DOM manipulation, Ajax capabilities, and animations to make JavaScript development easier.
Bot Computing using the Power of Wiki CollaborationTakashi Yamanoue
This document proposes and outlines bot computing, which uses bots controlled by wiki pages to perform massively parallel computing. Bots read from and write to dynamic wiki pages to collaborate on tasks. The author describes how wiki pages function as the architecture for bot computing programs and data. An experimental implementation is shown using PukiWiki and Java bots. As a proof of concept, bots collaborate via wiki pages to solve a parallel dynamic programming problem to find a minimal path. While high availability and security need improvement, bot computing has potential for beneficial large-scale collaborative computing applications.
The document summarizes key aspects of the Sakai 3 release, including improved functionality for users, a new architecture, and more flexible integration capabilities. Some key points:
- Sakai 3 focuses on improved user experience with features like content tagging, academic networking, and support for broader workflows across tools.
- The new architecture separates groups and sites for more flexibility, and allows workflows to be built across services rather than just within individual tools.
- Sakai 3 is designed to integrate more easily into other systems through documented APIs and data feeds, allowing it to appear in contexts like social networks, mobile apps, and other platforms beyond just the traditional LMS.
Brad Anderson presented on NOSQL databases and CouchDB. He discussed how relational databases do not scale well and are rigid. NOSQL databases like CouchDB are a better fit for large, growing datasets. CouchDB is a document oriented database written in Erlang that uses a REST API and supports views and incremental replication. It can be deployed on a cloud platform to improve scalability, redundancy and query distribution.
This document provides a summary of a presentation on web services in Domino. The presentation covers using Domino to provide web services using LotusScript, and using Notes to consume web services. It includes an agenda, introductions, overviews of web services and the Domino web services architecture. Sample applications and code are shown to demonstrate creating a basic web services in Domino and consuming them using Notes. Differences between ND7 and ND8 are also discussed.
The document discusses how to prevent JavaScript injection attacks in ASP.NET MVC applications. It describes a customer feedback website that is vulnerable to JavaScript injection by displaying user-submitted content without encoding. Attackers can inject JavaScript code to steal user data. The document provides two approaches: 1) HTML encode user data when displayed in views to prevent code execution, and 2) HTML encode data before saving to the database in the controller. The first approach is preferred to avoid encoding data stored in the database.
This tutorial describes using recursive XSLT calls and JavaScript to display an expanding and collapsing tree view of an XML purchase order document. Key aspects covered include using recursion in the XSLT stylesheet to process the XML data hierarchically, invoking JavaScript from XSLT to make the display interactive, and generating HTML output with calls to the JavaScript functions. The code sample demonstrates techniques for parsing XML data recursively and creating an interactive user interface using XSLT and JavaScript.
- JavaScript has come a long way in its 16 year history, from its origins in 1995 at Netscape to becoming a core technology powering modern web applications.
- It was created in just 10 days by Brendan Eich to add interactivity to web pages and competed with Java for browser dominance, though it faced early criticism over its design choices and lack of features.
- JavaScript now has widespread adoption across browsers and continues evolving through standards like ES.next while also facing ongoing debates around issues like bytecode compilation and multi-virtual machine integration.
The document discusses several popular JavaScript libraries including Dojo, Prototype, jQuery, Mochikit, and Yahoo UI. It compares the libraries based on their focus, DOM support, events/effects handling, documentation, community, file size, and popularity. The libraries provide a variety of features like DOM manipulation, Ajax capabilities, and animations to make JavaScript development easier.
Bot Computing using the Power of Wiki CollaborationTakashi Yamanoue
This document proposes and outlines bot computing, which uses bots controlled by wiki pages to perform massively parallel computing. Bots read from and write to dynamic wiki pages to collaborate on tasks. The author describes how wiki pages function as the architecture for bot computing programs and data. An experimental implementation is shown using PukiWiki and Java bots. As a proof of concept, bots collaborate via wiki pages to solve a parallel dynamic programming problem to find a minimal path. While high availability and security need improvement, bot computing has potential for beneficial large-scale collaborative computing applications.
The document summarizes key aspects of the Sakai 3 release, including improved functionality for users, a new architecture, and more flexible integration capabilities. Some key points:
- Sakai 3 focuses on improved user experience with features like content tagging, academic networking, and support for broader workflows across tools.
- The new architecture separates groups and sites for more flexibility, and allows workflows to be built across services rather than just within individual tools.
- Sakai 3 is designed to integrate more easily into other systems through documented APIs and data feeds, allowing it to appear in contexts like social networks, mobile apps, and other platforms beyond just the traditional LMS.
Brad Anderson presented on NOSQL databases and CouchDB. He discussed how relational databases do not scale well and are rigid. NOSQL databases like CouchDB are a better fit for large, growing datasets. CouchDB is a document oriented database written in Erlang that uses a REST API and supports views and incremental replication. It can be deployed on a cloud platform to improve scalability, redundancy and query distribution.
This document provides a summary of a presentation on web services in Domino. The presentation covers using Domino to provide web services using LotusScript, and using Notes to consume web services. It includes an agenda, introductions, overviews of web services and the Domino web services architecture. Sample applications and code are shown to demonstrate creating a basic web services in Domino and consuming them using Notes. Differences between ND7 and ND8 are also discussed.
The document discusses how to prevent JavaScript injection attacks in ASP.NET MVC applications. It describes a customer feedback website that is vulnerable to JavaScript injection by displaying user-submitted content without encoding. Attackers can inject JavaScript code to steal user data. The document provides two approaches: 1) HTML encode user data when displayed in views to prevent code execution, and 2) HTML encode data before saving to the database in the controller. The first approach is preferred to avoid encoding data stored in the database.
This tutorial describes using recursive XSLT calls and JavaScript to display an expanding and collapsing tree view of an XML purchase order document. Key aspects covered include using recursion in the XSLT stylesheet to process the XML data hierarchically, invoking JavaScript from XSLT to make the display interactive, and generating HTML output with calls to the JavaScript functions. The code sample demonstrates techniques for parsing XML data recursively and creating an interactive user interface using XSLT and JavaScript.
This document provides instructions for creating collapsible panels in JavaScript without using frameworks. It describes using JavaScript to detect panel elements and add click handlers to toggle their expanded/collapsed state. The state is saved in a cookie so panels retain their state on page reload. Animated transitions are implemented by incrementally changing element heights on timeouts to simulate expansion/contraction over multiple steps.
This document provides a foreign rights guide and catalog for computer, photography, and higher education titles being published in the autumn of 2009 by Pearson Education Germany and Addison-Wesley. It outlines several books on digital photography with Nikon and Sony cameras, photography techniques like landscape and portrait photography, and books on Mac, Windows and digital editing software. It also includes a photographic reportage on daily life in Afghanistan.
This document discusses add-on development for ExpressionEngine. It covers what add-ons are, including extensions, modules, and plugins. It discusses necessary development skills like PHP, SQL, and HTML/CSS. It provides guidance on planning add-on development through researching, mapping features, designing templates and control panels. The document also covers writing code through following best practices, debugging, and improving performance. Developers are encouraged to turn on debugging, review queries, consider caching, remove deprecated code, and ask for help when needed.
The document discusses the Symfony web application framework. It explains that Symfony is a full-stack PHP framework based on best practices like the MVC pattern. It provides tools for configuration, routing, controllers, models, debugging and more. The document also provides instructions for starting a basic "hello world" Symfony project using controllers and views.
The document provides an introduction to JavaScript Part II. It discusses how to send the output from a web form to an email address in a readable format using a CGI script. It also covers using JavaScript to check form contents, perform image swapping, and create objects, properties and methods. Tips are provided on using hidden fields in a form to send data to a CGI script for email output, and examples show how to write JavaScript code to check form values, swap images, and define custom objects.
This document provides an agenda and slides for an advanced PHP tutorial covering topics like PHP-MySQL integration, cookies, dynamic images, sessions, security, and optimization. The slides include code examples for connecting to and querying a MySQL database, setting and reading cookies, generating dynamic images with GD, and other tasks. The slides also discuss best practices for topics like escaping data, database abstraction, and HTTP headers.
Since its inception, the LibX browser plugin has been adopted by over 500 libraries to provide access to their services at the user's point of need. We are now developing LibX 2.0, a community platform that allows anybody to create, share, and deploy library services in a distributed and decentralized fashion. We'll describe the technology used in LibX 2.0, with a particular emphasis on the developer API and the deployment infrastructure facilitating this community engagement. -- Godmar Back, Virginia Tech
This document provides an overview of Docker concepts including containers, images, Dockerfiles, and the Docker architecture. It defines key Docker terms like images, containers, and registries. It explains how Docker utilizes Linux kernel features like namespaces and control groups to isolate containers. It demonstrates how to run a simple Docker container and view logs. It also describes the anatomy of a Dockerfile and common Dockerfile instructions like FROM, RUN, COPY, ENV etc. Finally, it illustrates how Docker works by interacting with the Docker daemon, client and Docker Hub registry to build, run and distribute container images.
Manage your external libraries with CocoaPodsJuan C Catalan
Let's say you need to build an app and you face the following design problem: you need a picture editor, a piece of code that allows the user of your awesome app to select a picture from the photo library, rotate it, re-size it, apply some image filters and crop the result.
You have two options, come up with your own code or use somebody else's code. But how do you find a library that performs what you want? How do you keep this library updated once the developers release a new version? What if that library uses other libraries and you need to install these dependencies too?
Well, CocoaPods let's you do all these tasks and it is very easy to use.
CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 28 thousand libraries and is used in over 1.7 million apps. CocoaPods can help you scale your projects elegantly.
In this practical session I will explain how to use CocoaPods to help you build your apps. We will learn how to manage the external libraries, go over the best practices, dos and don'ts, and explore other alternatives to manage your app external dependencies.
RubyStack: the easiest way to deploy Ruby on Railselliando dias
RubyStack is a tool that makes it easy to deploy Ruby on Rails applications. It provides a self-contained, relocatable environment with all necessary components like Ruby, Rails, MySQL, and Apache bundled together. The RubyStack installer uses BitRock InstallBuilder to create installers with a graphical user interface that work across operating systems. RubyStack provides unattended installation options and tools like Capistrano for automating deployment. Under the hood, RubyStack bundles optimized versions of all required libraries and components to provide a complete development and deployment solution for Ruby on Rails.
LibX is an open source software platform that provides library services to users directly within their web browsers. It was originally created to put the library back into users' research workflows as they browse the web. The LibX Edition Builder allows librarians to easily customize LibX configurations for their institutions. A study found that the Edition Builder is easy to use and its auto-detection features are generally effective. LibX 2.0 aims to expand LibX by allowing libraries to create and share reusable digital services and content for users within their browsers.
Lino Telera gave a presentation on serverless computing. He began with introductions and background. The presentation covered serverless concepts like Function as a Service, demonstrated building a simple microservice using AWS Lambda that interacts with S3, and discussed integrating functions with services like S3 using Boto. It also showed how functions can be called from devices using skills and discussed running serverless on-premise using OpenFaaS or Pivotal Container Service. The presentation concluded with a Q&A and thanks to sponsors.
The code will print false, because paid = true assigns a local variable rather than setting the instance variable @paid. To fix it, use self.paid = true.
Lessons learned from building Eclipse-based add-ons for commercial modeling t...IncQuery Labs
In this presentation, we summarize the lessons we have learned during the MagicDraw adaptation of VIATRA, Eclipse’s open source framework for scalable reactive model transformations. We have built V4MD, an open source extension for MagicDraw that others can freely reuse and build on, and IncQuery for MagicDraw, a commercial add-on that provides powerful yet user-friendly querying and validation capabilities.
JavaScript Library Overview (Ajax Exp West 2007)jeresig
This document summarizes and compares several popular JavaScript libraries: Dojo, Prototype, jQuery, Mootools, and YUI. It outlines the focus, key features, documentation/community support, file size, and popularity for each library. The libraries provide DOM manipulation, event handling, effects/animations, and Ajax capabilities with varying levels of features and complexity. jQuery is highlighted as having a small file size and strong popularity while providing core functionality.
This document provides an overview of developing microservices using the Go programming language. It discusses how Go can help reduce the footprint of microservices compared to JVM-based solutions. It then provides background on the Go language, its design goals and pros and cons for development. The rest of the document discusses using Go for microservices, including integrating with services for configuration, logging, distributed tracing, circuit breaking and other concerns. It also compares developing microservices in Go versus Spring Boot and provides code samples.
Monoliths are so 2001 – What you need is ModularityGraham Charters
Presentation given at IBM InterConnect 2015 conference. Describes:
- the motivation for modularity
- issues with modularity in Java
- introduction to OSGi and WebSphere OSGi Applications
- strategy for adopting OSGi with existing Java EE applications, using a sample (AcmeAir) as a use case
Jetpack SDK: The new possibility of the extensions on browserlittlebtc
The document discusses the new Jetpack SDK which provides a new way to develop extensions for the Mozilla platform like Firefox. It allows writing extensions using HTML5, CSS3 and JavaScript in a modular way. The Jetpack SDK uses Python and provides tools for testing and packaging extensions. It also has APIs for creating widgets, working with tabs, making HTTP requests, storing data and using timers. Examples shown include extensions for sharing pages to Plurk, displaying apologies, and tracking unread messages on Plurk. The future of Jetpack SDK includes more APIs and improvements to the add-on installation and update process.
MacRuby is a Ruby implementation that can be used to write Cocoa applications for Mac OS X. It allows Ruby code to interact with the Cocoa frameworks and Objective-C classes. The presentation introduces MacRuby and demonstrates how to use the MacRuby REPL for learning Core Data, build a MacRuby project, hook up a user interface with Ruby methods, use Ruby gems, and package applications for distribution.
This document discusses the planning and initial development of an interactive wiki application called Criki using PHP and MySQL. It will cover designing the database schema and basic application scaffolding in the first part. Future parts will add functionality like wiki markup, file uploads, user permissions, calendaring/milestones, and an open blog. The goal is to build a fully-featured wiki from scratch to understand the considerations that go into such an application.
This document provides a high-level overview of JavaScript and Node.js. It discusses how JavaScript originated as a browser scripting language but is now widely used for server-side applications through Node.js. Node.js uses Google's V8 JavaScript engine and allows JavaScript code to run outside of browsers. Popular Node.js frameworks like Express.js are introduced. Key features of JavaScript like asynchronous programming and Node.js concepts like modules, middleware, and MongoDB are summarized at a high level.
covo.js : A JavaScript Library to Utilize Subject Headings and Thesauri on th...Shun Nagaya
Covo.js is a JavaScript library that utilizes subject headings and thesauri to organize information on the web. It provides a command line interface to quickly find and select controlled terms from a list to populate input forms. The latest version (0.2) adds features like supporting two vocabularies, customizable vocabularies, and desktop notifications. The library aims to address the technical issues of utilizing controlled terms on the web and extend possibilities for command line interfaces. Future work includes better support for hierarchical term structures.
This document provides instructions for creating collapsible panels in JavaScript without using frameworks. It describes using JavaScript to detect panel elements and add click handlers to toggle their expanded/collapsed state. The state is saved in a cookie so panels retain their state on page reload. Animated transitions are implemented by incrementally changing element heights on timeouts to simulate expansion/contraction over multiple steps.
This document provides a foreign rights guide and catalog for computer, photography, and higher education titles being published in the autumn of 2009 by Pearson Education Germany and Addison-Wesley. It outlines several books on digital photography with Nikon and Sony cameras, photography techniques like landscape and portrait photography, and books on Mac, Windows and digital editing software. It also includes a photographic reportage on daily life in Afghanistan.
This document discusses add-on development for ExpressionEngine. It covers what add-ons are, including extensions, modules, and plugins. It discusses necessary development skills like PHP, SQL, and HTML/CSS. It provides guidance on planning add-on development through researching, mapping features, designing templates and control panels. The document also covers writing code through following best practices, debugging, and improving performance. Developers are encouraged to turn on debugging, review queries, consider caching, remove deprecated code, and ask for help when needed.
The document discusses the Symfony web application framework. It explains that Symfony is a full-stack PHP framework based on best practices like the MVC pattern. It provides tools for configuration, routing, controllers, models, debugging and more. The document also provides instructions for starting a basic "hello world" Symfony project using controllers and views.
The document provides an introduction to JavaScript Part II. It discusses how to send the output from a web form to an email address in a readable format using a CGI script. It also covers using JavaScript to check form contents, perform image swapping, and create objects, properties and methods. Tips are provided on using hidden fields in a form to send data to a CGI script for email output, and examples show how to write JavaScript code to check form values, swap images, and define custom objects.
This document provides an agenda and slides for an advanced PHP tutorial covering topics like PHP-MySQL integration, cookies, dynamic images, sessions, security, and optimization. The slides include code examples for connecting to and querying a MySQL database, setting and reading cookies, generating dynamic images with GD, and other tasks. The slides also discuss best practices for topics like escaping data, database abstraction, and HTTP headers.
Since its inception, the LibX browser plugin has been adopted by over 500 libraries to provide access to their services at the user's point of need. We are now developing LibX 2.0, a community platform that allows anybody to create, share, and deploy library services in a distributed and decentralized fashion. We'll describe the technology used in LibX 2.0, with a particular emphasis on the developer API and the deployment infrastructure facilitating this community engagement. -- Godmar Back, Virginia Tech
This document provides an overview of Docker concepts including containers, images, Dockerfiles, and the Docker architecture. It defines key Docker terms like images, containers, and registries. It explains how Docker utilizes Linux kernel features like namespaces and control groups to isolate containers. It demonstrates how to run a simple Docker container and view logs. It also describes the anatomy of a Dockerfile and common Dockerfile instructions like FROM, RUN, COPY, ENV etc. Finally, it illustrates how Docker works by interacting with the Docker daemon, client and Docker Hub registry to build, run and distribute container images.
Manage your external libraries with CocoaPodsJuan C Catalan
Let's say you need to build an app and you face the following design problem: you need a picture editor, a piece of code that allows the user of your awesome app to select a picture from the photo library, rotate it, re-size it, apply some image filters and crop the result.
You have two options, come up with your own code or use somebody else's code. But how do you find a library that performs what you want? How do you keep this library updated once the developers release a new version? What if that library uses other libraries and you need to install these dependencies too?
Well, CocoaPods let's you do all these tasks and it is very easy to use.
CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 28 thousand libraries and is used in over 1.7 million apps. CocoaPods can help you scale your projects elegantly.
In this practical session I will explain how to use CocoaPods to help you build your apps. We will learn how to manage the external libraries, go over the best practices, dos and don'ts, and explore other alternatives to manage your app external dependencies.
RubyStack: the easiest way to deploy Ruby on Railselliando dias
RubyStack is a tool that makes it easy to deploy Ruby on Rails applications. It provides a self-contained, relocatable environment with all necessary components like Ruby, Rails, MySQL, and Apache bundled together. The RubyStack installer uses BitRock InstallBuilder to create installers with a graphical user interface that work across operating systems. RubyStack provides unattended installation options and tools like Capistrano for automating deployment. Under the hood, RubyStack bundles optimized versions of all required libraries and components to provide a complete development and deployment solution for Ruby on Rails.
LibX is an open source software platform that provides library services to users directly within their web browsers. It was originally created to put the library back into users' research workflows as they browse the web. The LibX Edition Builder allows librarians to easily customize LibX configurations for their institutions. A study found that the Edition Builder is easy to use and its auto-detection features are generally effective. LibX 2.0 aims to expand LibX by allowing libraries to create and share reusable digital services and content for users within their browsers.
Lino Telera gave a presentation on serverless computing. He began with introductions and background. The presentation covered serverless concepts like Function as a Service, demonstrated building a simple microservice using AWS Lambda that interacts with S3, and discussed integrating functions with services like S3 using Boto. It also showed how functions can be called from devices using skills and discussed running serverless on-premise using OpenFaaS or Pivotal Container Service. The presentation concluded with a Q&A and thanks to sponsors.
The code will print false, because paid = true assigns a local variable rather than setting the instance variable @paid. To fix it, use self.paid = true.
Lessons learned from building Eclipse-based add-ons for commercial modeling t...IncQuery Labs
In this presentation, we summarize the lessons we have learned during the MagicDraw adaptation of VIATRA, Eclipse’s open source framework for scalable reactive model transformations. We have built V4MD, an open source extension for MagicDraw that others can freely reuse and build on, and IncQuery for MagicDraw, a commercial add-on that provides powerful yet user-friendly querying and validation capabilities.
JavaScript Library Overview (Ajax Exp West 2007)jeresig
This document summarizes and compares several popular JavaScript libraries: Dojo, Prototype, jQuery, Mootools, and YUI. It outlines the focus, key features, documentation/community support, file size, and popularity for each library. The libraries provide DOM manipulation, event handling, effects/animations, and Ajax capabilities with varying levels of features and complexity. jQuery is highlighted as having a small file size and strong popularity while providing core functionality.
This document provides an overview of developing microservices using the Go programming language. It discusses how Go can help reduce the footprint of microservices compared to JVM-based solutions. It then provides background on the Go language, its design goals and pros and cons for development. The rest of the document discusses using Go for microservices, including integrating with services for configuration, logging, distributed tracing, circuit breaking and other concerns. It also compares developing microservices in Go versus Spring Boot and provides code samples.
Monoliths are so 2001 – What you need is ModularityGraham Charters
Presentation given at IBM InterConnect 2015 conference. Describes:
- the motivation for modularity
- issues with modularity in Java
- introduction to OSGi and WebSphere OSGi Applications
- strategy for adopting OSGi with existing Java EE applications, using a sample (AcmeAir) as a use case
Jetpack SDK: The new possibility of the extensions on browserlittlebtc
The document discusses the new Jetpack SDK which provides a new way to develop extensions for the Mozilla platform like Firefox. It allows writing extensions using HTML5, CSS3 and JavaScript in a modular way. The Jetpack SDK uses Python and provides tools for testing and packaging extensions. It also has APIs for creating widgets, working with tabs, making HTTP requests, storing data and using timers. Examples shown include extensions for sharing pages to Plurk, displaying apologies, and tracking unread messages on Plurk. The future of Jetpack SDK includes more APIs and improvements to the add-on installation and update process.
MacRuby is a Ruby implementation that can be used to write Cocoa applications for Mac OS X. It allows Ruby code to interact with the Cocoa frameworks and Objective-C classes. The presentation introduces MacRuby and demonstrates how to use the MacRuby REPL for learning Core Data, build a MacRuby project, hook up a user interface with Ruby methods, use Ruby gems, and package applications for distribution.
This document discusses the planning and initial development of an interactive wiki application called Criki using PHP and MySQL. It will cover designing the database schema and basic application scaffolding in the first part. Future parts will add functionality like wiki markup, file uploads, user permissions, calendaring/milestones, and an open blog. The goal is to build a fully-featured wiki from scratch to understand the considerations that go into such an application.
This document provides a high-level overview of JavaScript and Node.js. It discusses how JavaScript originated as a browser scripting language but is now widely used for server-side applications through Node.js. Node.js uses Google's V8 JavaScript engine and allows JavaScript code to run outside of browsers. Popular Node.js frameworks like Express.js are introduced. Key features of JavaScript like asynchronous programming and Node.js concepts like modules, middleware, and MongoDB are summarized at a high level.
covo.js : A JavaScript Library to Utilize Subject Headings and Thesauri on th...Shun Nagaya
Covo.js is a JavaScript library that utilizes subject headings and thesauri to organize information on the web. It provides a command line interface to quickly find and select controlled terms from a list to populate input forms. The latest version (0.2) adds features like supporting two vocabularies, customizable vocabularies, and desktop notifications. The library aims to address the technical issues of utilizing controlled terms on the web and extend possibilities for command line interfaces. Future work includes better support for hierarchical term structures.
Building static libraries for iOS with CocoaPodsSigmapoint
If you ever wondered how to easily develop and manage your own libraries for iOS and OS X seek no further! Watch the presentation and read our blog to find a solution. If you have any questions just drop me an email or tweet :)
Publishing API documentation -- WorkshopTom Johnson
These slides are from the REST API documentation workshop that I gave at the STC Summit 2015. For more details, see http://idratherbewriting.com/publishingapidocs.
This document provides an overview of Omeka, an open-source digital collection management system. It discusses what Omeka is, its advantages for cultural heritage institutions, how to set up an Omeka site, important considerations for digital collections like copyright and metadata, and examples of plugins that can extend its functionality. The goal is to help attendees understand how Omeka can be useful for their institution to publish and exhibit digital collections online.
This document discusses publishing Linked Data from relational databases (RDBs). It covers specifying ontologies and URI design, modeling data using vocabularies like FOAF and BIBO, transforming RDB data to RDF using R2O and ODEMapster, linking the generated RDF data to external datasets, and publishing the data in a Virtuoso endpoint to enable discovery through search engines and metadata through VOiD and CKAN.
This document provides a help and tutorial for TopStyle Pro version 3.11. It covers getting started with TopStyle, editing style sheets and HTML/XHTML, working with colors, previews, validation, site management, reports, mappings, customization, and third-party integration. It also includes appendices on CSS basics and tips, TopStyle tips and tricks, style sheet resources, keyboard shortcuts, and regular expressions.
TopStyle Help & <b>Tutorial</b>tutorialsruby
This document provides a table of contents for the TopStyle Pro Help & Tutorial, which teaches how to use the TopStyle software for editing style sheets and HTML/XHTML documents. It lists over 50 sections that provide explanations and instructions for features like creating and opening files, editing styles, working with colors, previews, validation, site management, reports and customizing the software. The document was created by Giampaolo Bellavite from the online help provided with TopStyle version 3.11.
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting <b>...</b>tutorialsruby
This document provides the course outline for IMD 210 Fundamentals of Scripting Languages at The Art Institute of Atlanta during the Spring 2005 quarter. The course focuses on integrating programming concepts with interface design using scripting languages like JavaScript and CSS. It will cover topics like DOM, CSS layout, JavaScript variables, conditionals, and events. Students will complete 4 assignments including redesigning existing websites, and there will be weekly quizzes, a midterm, and final exam. The course is worth 4 credits and meets once a week for class and lab.
This document provides the course outline for IMD 210 Fundamentals of Scripting Languages at The Art Institute of Atlanta during the Spring 2005 quarter. The course focuses on integrating programming concepts with interface design using scripting languages like JavaScript and CSS. It will cover topics like DOM, CSS layout, JavaScript variables, conditionals, and events. Students will complete 4 assignments including redesigning existing websites, and there will be weekly quizzes, a midterm, and final exam. The course is worth 4 credits and meets once a week for class and lab.
The group aims to bridge gaps between peer-to-peer database architectures and scaling multimedia information retrieval. They develop a probabilistic multimedia database system with abstraction layers for applications and researchers. They also research challenges of peer-to-peer networks for distributed data management. Both lines are supported by the MonetDB platform to exploit custom hardware and adaptive query optimization. The goal is a modular solution linking theoretical optimal solutions to application demands under resource limitations.
Standardization and Knowledge Transfer – INS0tutorialsruby
The group aims to bridge gaps between peer-to-peer database architectures and scaling multimedia information retrieval. They develop a probabilistic multimedia database system with abstraction layers and a flexible model. They also research challenges of peer-to-peer networks for distributed data management. Both lines are supported by the MonetDB platform to exploit custom hardware and adaptive query optimization. The goal is a modular solution linking theoretical optimal solutions to application demands under resource limitations.
This document provides an introduction to converting HTML documents to XHTML, including the basic syntax changes needed like making all tags lowercase and closing all tags. It provides examples of correct XHTML markup for different tags. It also explains the new DOCTYPE declaration and shows a sample well-formed XHTML document incorporating all the discussed changes. Resources for learning more about XHTML are listed at the end.
This document provides an introduction to converting HTML documents to XHTML, including the basic syntax changes needed like making all tags lowercase and closing all tags. It provides examples of correct XHTML markup for different tags. It also explains the new DOCTYPE declaration and shows a sample well-formed XHTML document incorporating all the discussed changes. Resources for learning more about XHTML are listed at the end.
XHTML is a markup language that provides structure and semantics to web pages. It is based on XML and is more strict than HTML. XHTML pages must have a document type definition, html and head tags, and a body where the visible content goes. Common XHTML tags include paragraphs, lists, links, images, and divisions to logically separate content. While XHTML provides structure, CSS is used to style pages and control visual presentation by defining rules for tags. CSS rules are defined in external style sheets to keep presentation separate from structure and content.
XHTML is a markup language that provides structure and semantics to web pages. It is based on XML and is more strict than HTML. XHTML pages must have a document type definition, html and head tags, and a body where the visible content goes. Common XHTML tags include paragraphs, lists, links, images, and divisions to logically separate content. While XHTML provides structure, CSS is used to style pages and control visual presentation through rules that target specific XHTML elements.
This document discusses how to create and use external cascading style sheets (CSS) in Dreamweaver. It provides steps to:
1. Open the CSS Styles tab in Dreamweaver and create a new external CSS stylesheet using a sample text style.
2. Save the stylesheet and link it to a new HTML page to style elements like headings, text sizes, and boxes.
3. Edit existing styles by selecting a tag in the CSS Styles panel and modifying properties directly, or by clicking the tag and using the pencil icon to edit in a window. This allows customizing styles globally across all linked pages.
This document provides an overview of how to create and use cascading style sheets (CSS) in Dreamweaver. It describes the different types of style sheets, including external and internal style sheets. It outlines the steps to create an external style sheet in Dreamweaver using the CSS Styles panel and provides instructions for linking the external style sheet to an HTML page. The document demonstrates how to experiment with predefined styles and how to edit, add, and delete styles in the CSS stylesheet.
This document appears to be a weekly update from an intro to computer science course. It includes summaries of classmates' demographics, comfort levels, and prior experience. It also discusses time spent on problem sets and recommends upcoming courses in CS51 and CS61. Finally, it recommends reading on TCP/IP, HTTP, XHTML, CSS, PHP, SQL and using the bulletin board for questions.
This document appears to be a weekly update from an intro to computer science course. It includes summaries of classmates' demographics, comfort levels, and prior experience. It also discusses time spent on problem sets and recommends upcoming courses in CS51 and CS61. Finally, it recommends reading on topics like TCP/IP, HTTP, XHTML, CSS, PHP, SQL and using bulletin boards, and includes images related to these topics.
The document discusses how to use Cascading Style Sheets (CSS) with Corvid Servlet Runtime templates to control formatting and layout. CSS allows separating design from content, making templates simpler and easier to maintain. It also enables adapting appearance for different devices. The document provides examples of using CSS classes to style template elements and explains how to set up a demo system using the included CSS and templates.
The document discusses how to use Cascading Style Sheets (CSS) with Corvid Servlet Runtime templates to control formatting and layout. CSS allows separating design from content, making templates simpler and easier to maintain. It also enables customization of appearance for different devices. The document provides examples of how to apply CSS classes and rules to Corvid template elements to control fonts, colors, positioning and more.
The document provides an introduction to CSS and how it works with HTML to control the presentation and styling of web page content. It explains basic CSS concepts like selectors, properties and values, and how CSS rules are used to target specific HTML elements and style them. Examples are given of common CSS properties and selectors and how they can be used to style elements and format the layout of web pages.
The document introduces CSS and how it works with HTML to separate content from presentation, allowing the styling of web pages through rules that target HTML elements. It explains CSS syntax and various selectors like type, class, ID, and descendant selectors. Examples are provided of how CSS can be used to style properties like color, font, padding, and layout of elements on a page.
Cascading Style Sheets (CSS) allow users to define how HTML elements are presented on a page. CSS enables changing the appearance and layout of an entire website by editing just one CSS file. CSS uses selectors to apply styles to HTML elements via properties and values. Styles can be defined internally in HTML or externally in CSS files. CSS can control text formatting, colors, spacing, positioning and more to achieve visual consistency across web pages.
Cascading Style Sheets (CSS) allow users to define how HTML elements are presented on a page. CSS enables changing the appearance and layout of an entire website by editing just one CSS file. CSS uses selectors to apply styles to HTML elements via properties and values. Styles can be defined internally in HTML or externally in CSS files. CSS can control text formatting, colors, spacing, positioning and more to achieve visual consistency across web pages.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
1. LibX 2 0 an Open Source,
2.0 ‐ O S
Community Platform for Delivering
y f f g
Library Services
Code4Lib 2009
Godmar Back
University Libraries and Dep. Of Computer Science
Virginia Tech
2. LibX 1.0
• Toolbar and right-click context menu
• Adaptive and user-configurable context menus
• OpenURL support
• Magic Button (Google Scholar support)
• Web Localization via Embedded Cues
• Autolinking
• Off-campus access via EZProxy or WAM
• Support for CiteULike
• Support for COinS
• Support for xISBN
• Show/Hide Hotkey
2/26/2009 Code4Lib 2009 2
3. LibX 1.0
• Toolbar and right-click context menu
• Adaptive and user-configurable context menus
• OpenURL support
• Magic Button (Google Scholar support)
• Web Localization via Embedded Cues
• Autolinking
• Off-campus access via EZProxy or WAM
• Support for CiteULike
• Support for COinS
• Support for xISBN
• Show/Hide Hotkey
2/26/2009 Code4Lib 2009 3
4. The LibX Edition Builder
The LibX Edition Builder
• A configuration management tool for creating customized versions of
LibX
– Customized version of LibX = LibX edition
• Edition configuration includes descriptions of community-local
resources:
– OPACs, OpenURL, Proxy, Databases, Links, Branding, …
• Edition Builder is easy to use
– Makes heavy use of OCLC registries
– Uses sophisticated auto-detection techniques
– Usable by librarians, not just programmers
• Anybody can create, share, and manage editions
• Over 550 edition as of now, new ones created at a pace of 20/month
– Huge human investment
– 10’s of thousands of end users
2/26/2009 Code4Lib 2009 4
5. Where to go from here?
Where to go from here?
• A toolbar is great but
great, but…
• Emerging technology trends
– Service oriented architectures web services
Service-oriented architectures,
interfaces – soon even to ILS!
– Data mash-ups; HTML widgets
p; g
• Educational trends: librarians, educators, and
users create
– Online tutorials, subject guides, visualizations
– Social OPACs: tagging, reviews, recommender services
gg g, ,
2/26/2009 Code4Lib 2009 5
6. But who will
World Wide Web
W ld Wid W b create those
modules?
Library
Resources and
Web Services
LibX 2.0 plugin: executes
LibX 2 0
2.0 Libapps, merging lib
Lib i library
information into pages.
Users:
decide to which
library services to
Librarians: create or
subscribe, see
adapt Libapps from
expanded view of the
reusable, shareable
web
modules
2/26/2009 Code4Lib 2009 6
7. The LibApp
The LibApp Model
• How can the interaction of LibX with web content be
modeled?
• Typical tasks involve
– Examination of the page and extraction of information
– Processing of information
– Modification of the page
• A Module is a small piece of JavaScript code along with
a metadata description of its input and/or output
• A Libapp is a group of modules
• A Package is a folder of libapps and packages
2/26/2009 Code4Lib 2009 7
8. Modules
• Modules a e named us g a U a d pub s ed
odu es are a ed using URL and published
via REST/AtomPub
• Modules can reference JavaScript libraries (e.g.,
p g
jQuery) and CSS stylesheets
– Execute in a parallel environment to the client page
• Modules are trusted, with full access to LibX API,
including edition configuration and user
preferences
• Modules communicate with each other via tuple
space
2/26/2009 Code4Lib 2009 8
9. LibX Tuple Spaces
tuple = TAKE(template)
= TAKE(template) WRITE (tuple)
WRITE (tuple)
• If a tuple matching template • Write a tuple into the space
exists in the tuple space, • If a TAKE is pending with a
remove it and return it matching template,
• If no tuple exists, wait until complete the TAKE
a matching tuple is written
written,
remove it and return it
Tuples and Templates are JavaScript objects in JSON notation.
Tuple example: { isbn: “0743226720” }
Template example: { isbn : * } // any tuple with ‘isbn’ field
p p y p
2/26/2009 Code4Lib 2009 9
10. Jangle
ISBN Lookup Display Result
{ display:
“ISBN 223.. is on the shelf”
ISBN Scraper Guarded-By:
} Guarded-By:
{ isbn: 2234532134 }
{ isbn: *} { display: * }
Tuple Space
2/26/2009 Code4Lib 2009 10
11. Rationale for Tuple
Rationale for Tuple Spaces
Software Engineering
Software Engineering Handling Asynchrony
Handling Asynchrony
• Low coupling between • User actions happen
modules asynchronously
• Independent composition • Information arrives
• Simplicity asynchronously from
• Suitable for meta- external sources
programming • Execution order
independence
p
2/26/2009 Code4Lib 2009 11
12. LIBAPP DEMO 1
CREATE A PRESENCE FOR THE LIBRARY
2/26/2009 Code4Lib 2009 12
15. Step 1: Arrangement
Step 1: Arrangement
Description: Display a Help icon on the ACM page that plays a video when clicked.
Include: /portal.acm.org.*/
Require: jquery
// Place the current edition's icon into the ACM portal page, next to the
// current search button.
// current search button
libx.space.write ( {
needsuserbutton: $('input[src="http://portal.acm.org/images/search_small.jpg"]'),
image: libx.edition.options.icon,
text: "Click for a short tutorial",
action: function () {
// When user clicks, offer to show a YouTube clip
libx.space.write ( {
lib it ( { youtube: "ehkfEcQ5YnQ"} )
t b " hkfE Q5Y Q"} );
}
} );
2/26/2009 Code4Lib 2009 15
16. Step 2: Place UI Button
Step 2: Place UI Button
Description: Place a clickable image into a page
Include: /.*/
Guarded‐By: { needsuserbutton: libx.space.WILDCARD, action: libx.space.WILDCARD }
Require: jquery
// Create a link with an embedded image
var a = $("<a href='javascript:void(0);'/>");
a.append('<img border="0" src="' + tuple.image + '"/>');
a.attr( 'title', tuple.text || "");
a attr( 'title' tuple text || "");
// Insert link after element where a 'user button' is wanted
$(tuple.needsuserbutton).after(a);
// Associate onclick handler and animate
$(a).click(tuple.action).fadeOut("slow").fadeIn("slow");
2/26/2009 Code4Lib 2009 16
17. Step 3: Create Youtube
Step 3: Create Youtube Clip
Description: Create a notification to play a YouTube video, based on Video ID
Include: /. /
Include: /.*/
Guarded‐By: { youtube: libx.space.WILDCARD }
// Create HTML based on tuple.youtube
// Create HTML based on tuple.youtube
libx.space.write ( {
notify : '<object width="425" height="344"><param name="movie"
value="http://www.youtube.com/v/'+tuple.youtube+'&hl=en&fs=1"></param><par
p y p y p p
am name="allowFullScreen" value="true"></param><param
name="allowscriptaccess" value="always"></param><embed
src="http://www.youtube.com/v/'+tuple.youtube+'&hl=en&fs=1"
type= application/x‐shockwave‐flash allowscriptaccess="always"
type="application/x shockwave flash" allowscriptaccess= always
allowfullscreen="true" width="425" height="344"></embed></object>',
options: { width: '450px' }
} );
2/26/2009 Code4Lib 2009 17
18. Step 4: Display HTML Notification
Step 4: Display HTML Notification
Description: Display HTML notifications via an embedded panel using jGrowl
Include: /. /
Include: /.*/
Guarded‐By: { notify: libx.space.WILDCARD }
Require: jquery
Require: jgrowl
Require: jgrowl
Require: jgrowl.css
// Set sticky:true unless provided in tuple.options
// Set sticky:true unless provided in tuple.options
var jGrowlOptions = $.extend({}, {sticky:true}, tuple.options);
// Display notification
// Display notification
$.jGrowl( tuple.notify, jGrowlOptions );
2/26/2009 Code4Lib 2009 18
19. LIBAPP DEMO 2
DEMO 2
“GET FULL TEXT LINKS FOR COINS”
2/26/2009 Code4Lib 2009 19
21. COinS, the LibX 2.0 way
COinS, the LibX 2.0 way
<span class="Z3988"
Include: /.*/ title="ctx_ver=Z39.88-
Description: Find COinS
D i i Fi d COi S 2004&rft_val_fmt=info:ofi/fmt:kev:mtx:j
Require: jquery ournal&rft_id=info:pmid/16646082&rft.g
enre article
enre=article">
$(“span.Z3988").each(function () {
libx.space.write({
p ({
coins: this,
contextobj: this.getAttribute('title')
});
});
2/26/2009 Code4Lib 2009 21
22. COinS, the LibX 2.0 way
COinS, the LibX 2.0 way
Include: /.*/
Description: Link COinS
Guarded‐By: { coins: libx.space.WILDCARD }
Require: legacy‐cues
var cue new libx cues StandardCoins(tuple contextobj);
cue = new libx.cues.StandardCoins(tuple.contextobj);
cue.insertBefore(tuple.coins);
2/26/2009 Code4Lib 2009 22
24. Add Link/360 direct link
Add Link/360 direct link
var link360 = libx.services.link360.getLink360(libx.edition);
if (link360)
if (li k360)
link360.getMetadata({
query: tuple.contextobj,
type: 'article',
hasFullText: function (xmlDoc, url, databaseName) {
cue.setAttribute( href , url);
cue.setAttribute('href', url);
cue.setAttribute('title', "Users of " + libx.edition.links.primary.label
+ " click here for full text via " + databaseName);
cue.setImageAttribute('src', 'http://www.lib.vt.edu/images/getvtext.gif');
tI Att ib t (' ' 'htt // lib t d /i / t t t if')
cue.animate();
},
});
2/26/2009 Code4Lib 2009 24
25. Transitioning from LibX 1.0 to 2.0
Transitioning from LibX 1.0 to 2.0
• Complete redesign of LibX client code
p g
• Browser-independent, strictly object-oriented
JavaScript code with proper namespacing and
encapsulation
• Provide full documentation (via jsdoc, accessible
in about:libx)
• Provide built-in interactive reflection of data
structures
• Include unit tests (run via Rhino)
• Hot updatable
2/26/2009 Code4Lib 2009 25
26. LibX 2.0 Roles
LibX 2.0 – Roles
LibX 2.0 Developers – make services
b l k
available and write modules and libapps
LibX 2.0 Adapters – combine
20
modules into libapps, reuse and
adapt libapps, bundles and share
libapps as packages
LibX 2.0 User Community - subscribes
to packages or libapps they like
2/26/2009 Code4Lib 2009 26
27. LibX 2.0 Community Repository
2.0 Community Repository
• Based on tuple space model, create metadata
p p ,
descriptions for modules
• Create a repository of modules, libapps, and
packages
• Editable like a Wiki
• Integrate repository into Edition Builder
– Include consistency checking
• This will be done during the next 2 years (but
libapps can already be created now)
2/26/2009 Code4Lib 2009 27
28. Call for Developers
Call for Developers
• Launched Developer Website
– http://developers.libx.org
• Launched mailing list
– libx-dev@googlegroups.com
• Transition path: update from LibX 1 5
1.5
• Agile roll-out, no “releases”
• We invite you to try and play with it!
2/26/2009 Code4Lib 2009 28
29. LibX Team
LibX Team
• Annette Baileyy
• Godmar Back
• Kyrille Goldbeck
• Mike Doyle
• Arif Khokar
• Travis Webb
• Alumni
– N th Baker
Nathan B k
– Tilottama Gaat
– Tobias Wieschnowsky
y
2/26/2009 Code4Lib 2009 29