Dezeen's Christmas gift guide 2019: gifts for architects and designers
by Eleanor GibsonTo kick off our Christmas gift guide series this year, we've compiled 15 presents ideal for architects and designers. They include sculptural jewellery, Bauhaus Dessau mini models and a pen made from Nespresso pods.
Tangente by Nomos
Nomos Glashütte has updated its Tangente watch, 25 years after it was released. The hand-wound watch has a midnight-blue dial, complemented by velour leather straps and a sapphire-crystal glass case.
The timepiece comes in two sizes that have slightly different accents. Gold type and dials offset the blue hue in the smaller version, which has a 35 millimetre diameter. The other watch face measures 38 millimetres and has silver details.
Men's jewellery by Alex Orso
Choose from 32 designs of cuffs, pendants and rings that London jewellery brand Alex Orso has created for men.
The brand drew on a wide range of influences, including minimal architecture and nature, to design the sculptural creations. They are cast in sterling silver or brass and then plated in 22-karat gold, rhodium or ruthenium. Many designs are available in different colours and finishes, and can also be engraved to add a personal touch.
Shop the Men's Jewellery collection now ›
Coffee Table Book by Bernd Gruber
Interior design firm Bernd Gruber spent a weekend in a hut while compiling this monograph detailing 10 of its residential projects. Set in locations such as Kitzbühel, Munich, Vienna, South Tyrol, Berlin, Grisons and Los Angeles, designs range from cosy cabins to sleek minimal interiors.
Drawing on the studio's aesthetic, the chunky book is covered in natural linen making it a decorative item suitable for any architect or designer's coffee table.
Mouro Lamp by Patricia Perez
Spanish designer Patricia Perez's rotating Mouro Lamp for Case Furniture is a disc-shaped LED light held in a powder-coated steel frame, and is available in either black or white.
The light is suited to a range of spaces, from bed sides and desks, to outdoor areas. It comes with a dimmer that offers three different levels of illumination, depending on the task in hand, and is charged by a USB.
Bauhaus Dessau Mini by Chisel & Mouse
With this year marking the 100th anniversary of the Bauhaus school, it would be apt to gift the mini Bauhaus-building models by Chisel & Mouse.
The miniatures detail different elements of the Bauhaus Dessau building in Germany, which was designed by Walter Gropius and was home to the influential design school from 1925 to 1932. Options include a seven-inch-tall plaster model of the stair block, complete with the raised signage and gridded windows, and the entrance steps, with red doorways and canopy.
Shop Bauhaus Dessau Mini now ›
Moka by David Chipperfield
The Moka is British architect David Chipperfield's contemporary version of the classic Italian coffee maker designed by Alfonso Bialetti in the 1930s.
Created for the Italian design brand Alessi, it still has the die-cast aluminium and faceted body but with a simple profile, a flat lid and a sleek handle.
JDWA Lamp by Menu
A large opal-glass bulb balances atop a stone base in this design, created by Jonas Wagell for Danish brand Menu. The bottom is available in either concrete, marble or travertine, and accented with large bronze switches.
New-life by Môt
These casual shoes by Vietnamese footwear brand Môt, which translates as one, are ideal for moving between meetings, office life and socialising after hours.
The trainers come in two styles; either as the lace-ups called New-life, or slip-ons called Daily-life. Each has a colourful leather or canvas upper featuring decorative stitching.
Wellbeing by Ilse Crawford and Nanimarquina
Available in muted cream and brown tones, the Wellbeing rugs and cushions by Ilse Crawford and Nanimarquina are the ideal accent for the home of the design-savvy.
The textiles are made from materials such as Afghan wool, nettle, jute, linen, Tussar silk, and raw wool and cotton. They were all sourced near to production and are never bleached or dyed.
CK01 and SK01 by Veark
These stainless steel knives produced by Copenhagen brand Veark include the traditional chef's knife, CK01, and a santoku knife SK01, which draws on the Japanese tool of the same name.
The main difference between the two is that the balance point of the santoku is placed behind the centre point, to enable a different type of cutting motion.
Caran d'Ache Nespresso ballpoint pen
Pen brand Caran d'Ache teamed up with Nespresso to turn its recycled espresso-pods into an aluminium ballpoint pen. Available in a limited edition, the green pen takes its hue from Nespresso's Master Origin India capsules.
Shop Caran d'Ache Nespresso ballpoint pen now ›
Minimal Collection by QWSTION
Swiss bag brand QWSTION has made a waterproof and durable bag from banana plant fibres organically cultivated in the highlands of the Philippines. Called Bananatex, it launched at this year's Milan design week with a white, minimal series of bags.
Designs include the small waist or over-the-shoulder Hip Pouch, and the taller Roll Pack and Zip Pacs that have a merino wool felt-lined sleeve for storing laptops. Each is finished with zippers and straps that are recyclable.
Composition Three Six Five by Czar Catstick
London printmaker Czar Catstick has laid colourful shapes over a blocky monochrome backdrop to create the Composition Three Six Five. The design is printed onto canvas, and is available in six different sizes from Saatchi Art in a limited run.
Shop Composition Three Six Five Art now ›
Beoplay H4 by Bang & Olufsen
Bang & Olufsen's Beoplay H4 headphones last for up to 19 hours on a single charge, allowing users to enjoy music on the move for long stints. Complementing this feature, the ears and head strap are covered in leather which will become beautifully patinated with plenty of use.
Bottle Salt and Pepper Grinder by Norm Architects
Danish practice Norm Architects has used carbon and off-white exteriors to differentiate between these bottle-like salt and pepper grinders.
The duo are capped with a beech wood stopper and contain a ceramic grinding mechanism inside, which means they can also be used for spices and grains, nuts, seeds and even dried fruits.
Shop Bottle Salt and Pepper Grinder now ›
Note: entries in Dezeen's 2019 Christmas gift guides have been paid for or include affiliate links.


| File | Statements | Branches | Functions | Lines | |||||
|---|---|---|---|---|---|---|---|---|---|
| ButtonGroupFormField.js | 43.28% | 29/67 | 19.57% | 9/46 | 25% | 3/12 | 41.3% | 19/46 | |
| CascadeSelectFormField.js | 33.03% | 36/109 | 22.39% | 15/67 | 15% | 3/20 | 30.86% | 25/81 | |
| CheckboxGroupFormField.js | 57.41% | 31/54 | 32.35% | 11/34 | 27.27% | 3/11 | 54.05% | 20/37 | |
| EditorFormField.js | 51.52% | 34/66 | 22% | 11/50 | 23.08% | 3/13 | 46.94% | 23/49 | |
| NumberInputFormField.js | 50.85% | 30/59 | 24.44% | 11/45 | 33.33% | 3/9 | 46.34% | 19/41 | |
| RadioGroupFormField.js | 56.36% | 31/55 | 34.38% | 11/32 | 30% | 3/10 | 52.63% | 20/38 | |
| SearchFormField.js | 33.83% | 45/133 | 15.49% | 11/71 | 13.64% | 3/22 | 32.69% | 34/104 |


Arcade Training Checklist
Laser Tag
Watch video, swipe cards, help them put on vests
Reiterate no running, no physical contact
Kick out if necessary
Stay inside the ENTIRE time for insurance reasons and making sure no one gets hurt
Scores are outside on the big TV
Make the vests look nice before the next group because our customers like it when things look nice.
Bumper Cars
Swipe cards and check height minimum
Push go to go once everyone has the strap on correctly
Push stop if you really need to
Otherwise, it will stop automatically
XD Theater
Swipe cards and check height minimum
Ask which movie they want to watch
Give them glasses
After they are all buckled up, start the movie and make sure all their seats move
Clean the dirty glasses while you wait for them to finish
Open the door and turn on the light as they finish.
Redemption
Try not to grab things off of the wall.
Scan everything!!
Count WOZ coins
Keep the glass clean
No drinks on the XD counter
Refilling Tickets
3 different ticket dispenser types
Filling tickets in each type
Lick it and stick it!!!!!!
Fixing jams
Ticket Counter
Watch for the red light on top of the machine
Fixing jams


This Week in Rust
Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safe, concurrent, and fast. This is a weekly summary of its progress and community. Want something mentioned? Send me an email! Want to get involved? We love contributions.

What’s cooking in master?
69 pull requests were merged this week. As of writing, bors has 14 approved pull requests waiting.
Breaking Changes
std::num
’s ongoing overhaul continues. It’s going to be drastically simplified, and not try to be a general-purpose numeric library. num-rs is intended to provide some base algebraic types. #11504 removes gamma/bessel and does some cleanup of cmath. #11548 merges Bitwise and BitCount and removes Bounded and Bitwise from the prelude. #11622 simplifies Primitive.- Destructuring
@
patterns are no longer supported. - The return type of
Chan::try_recv
has been extended to indicate why it did not return a value. That is, whether there was legitimately no value, or if the other end had hung up. - Disk-relative paths on Windows are now properly generated when joining two paths.
- FromBase64 and FromHex now use error enums.
std::io
has been shuffled around a bit.- (Almost?) all iterator types have been renamed.
- unsafe functions can no longer be coerced to closures.
- Unnecessary (useless) visibility modifiers on
use
andextern mod
are now forbidden. - Building on last week’s per-task stdout/stderr, rustc’s error reporting has been cleaned up significantly.
Other Changes
- Externally loadable syntax extensions have landed! We can now write syntax extensions outside of the compiler, and export macros.
- The “rvalue lifetime” issue has seen some significant work put into
it. Notably,
for x in [1, 2, 3, 4].iter() { .. }
should now work, among many other papercut annoyances with rvalues. - Error messages involving inferred integer types are now much more
sane. Rather than
<V0>
or<VI1>
, it now prints<generic integer #0>
etc. - Accidentally including a semicolon on the last line of a function now has a better error message, if the types line up.
- Some bugs with trait object coercion have been fixed.
- The runtime now has its own documentation, viewable here.
- rustdoc’s search is now more forgiving on the input it accepts.
- Inserting into tries has been optimized significantly, with no unsafe code. Its iterator has also been optimized, albeit with unsafe code.
- The reference-counting headers have been removed. The associated “managed-unique” concept has also been removed.
- The recent OS X 10.9 breakage should be
fixed, as we will no longer use
ar s
on that platform.
New Contributors
- Clinton Ryan
- Derek Guenther
- Lucy
- Petter Remen
- Shamir Khodzha
- Yehuda Katz
Weekly Meeting
The weekly meeting discussed associated function resolution, changes to our calling convention (specifically the fate of the ubiquitous environment pointer), how we want to handle feature freeze, static items with destructors, and documentation on primitives.
Quotes of the Week
who says you can’t make money selling a compiler? You can, as long as you
convince people it’s a video game
who needs pure functional when you have pure cool?
This Week in Servo
Servo is a web browser engine written in Rust and is one of the primary test cases for the Rust language.
This week, we landed 22 PRs. There will be a Servo workweek in the Mozilla San Francisco office next week, Tuesday through Friday.
Notable additions
- Jack Moffitt landed the huge Rust upgrade #1473, bringing us very close to the 0.9 release. Hooray!
- Lars Bergstrom got NVidia-on-Linux working in #1487 and fixed the content test reliability in #1500.
- Tetsuharu Ohzeki implemented
removeAttribute
on Element in #1448. - jgraham landed innerHTML support #1450.
- Bruno Abinader implemented several fixes related to DOMImplementation: #1497, #1488.
- Corey Richardson fixed up an error case in startup on Linux in #1502.
- Isabelle Carter landed the initial work for handling
position:fixed
in #1440.
New Contributors
- Corey Richardson
Meetings
In this week’s
meeting, we
discussed the need to clean up our test harnesses, the removal of @
in
support of the next Rust upgrade, and the workweek..
Announcements, etc
- The first pure-Rust AES implementation. According to enix in IRC, this is also the first bit slicing implementation in a high level language (ie, not assembly or a port of assembly).
- rust-re2, re2 bindings
- A 30 Minute Introduction to Rust
- ObjCrust, building an iOS static library with Rust.A
- The Periodic Table of Rust Types
- Sodium Oxide, NaCl bindings, updated to 0.9
- capnproto-rust benchmark update
- rust-phf, compile-time hash maps. It also serves as a demonstration of loadable syntax extensions!
- Rust has do-while loops, a dirty hack no one should use.
- Understanding Pointers, Ownership, and Lifetimes in Rust
- A Just-in-time Compiler (Written) In Rust
- jba, a GameBoy emulator written in Rust.


Home
Our Mantra
Food & Drink
`
THE COFFEE CELLAR
SOULFUL RUSTIC VIBES
DAMN FINE COFFEE
REAL TASTY GRUB
COME AND VISIT
...
THE COFFEE CELLAR


Settings
Previously seen:
EDAM is a simple ontology of well established, familiar concepts that are prevalent within bioinformatics.


{% extends "kbforums/base.html" %}
{% from "layout/errorlist.html" import errorlist %}
{% from "includes/common_macros.html" import content_editor with context %}
{% from "kbforums/includes/macros.html" import kbforums_warning with context %}
{# L10n: {d} is the name of the document. #}
{% set title = _('Create a new thread | {d} | Knowledge Base')|f(d=document.title) %}
{% set crumbs = [(document.get_absolute_url(), document.title),
((url('wiki.discuss.threads', document.slug), 'rel="ugc nofollow"'), _('Discuss')),
(None, _('Create a new thread'))] %}
{% set scripts = ('forums',) %}
{% block content %}
{{ kbforums_warning(document, user) }}
{{ _('Create a new thread') }}
{% if request.limited %}
{{ _('You have exceeded the number of threads and replies that can be posted in a given amount of time. Please try again shortly.') }}


Try the keyboard navigation by clicking arrow left or right!
Wonderful transition effects.
The next and previous buttons help you to navigate through your content.
Try the keyboard navigation by clicking arrow left or right!
Wonderful transition effects.
The next and previous buttons help you to navigate through your content.


Welcome to VOOGASalad
We are Robert Duvall & the Global Variables!
We hope you enjoy VOOGASalad!
By:
Brandon Choi
Jeremy Fox
Cosi Goldstein
Nina Sun
Kei Yoshikoshi
Sierra Smith
Danny Oh
Nathan Prabhu
Eric Saba
Kaighn Kevlin
John Gilhuly
Tom Pugilsi
Instructions on how to use the Graphical Authoring Environment:
- Click Add Level
- Click on the level in the tab
How to create an object:
- To create an object, click on the right box "Generic Object" and double-click on a specific type of object
- Fill out the information - for now we can only put the name, label (which is just Tower or Enemy) and image path (ex. /images/ArcaneTower.png)
- Click add
- If you go to the pane on the very left, you should be able to see your tower with your name on it. Right-click to create a new instance, and place anywhere on the grid
- Press the Escape button to stop creating new instances.
How to make a path:
- Click on the Path TitledPane on the left. Buttons on the right should now be enabled.
- Click on "Make Path" and click once to select the starting point of the Path object and click again to select the ending point. There will now be four circles, the green being the starting point, the red being the ending point, and the other two being control points. You can shift these around to create whatever shape you'd like.
- When you're done adding paths, click "Path Complete". This will add this path to the list on the left, which you can go back to and edit. If you do make an edit, press "Update Path" to make sure the information is updated.
- Click on "New Path" if you want to create a new path.
- Click on "Display Paths" if you are done making the paths and would like to write them to an XML file, which can be used by the Game Player.
How to delete objects:
- For paths, if you hover over a specific segment, it will be highlighted yellow. If you press the delete button, it will delete the object.
- For game objects (such as tower), if you select the desired object on the left pane (the object will glow to show it is selected) and press the delete button, it will delete the object.
How to drag objects:
- For game objects, when the object is selected (glowing object), you can drag it with your mouse to place it anywhere within the bounds of the board.
How to change the background:
- Click on the "Change Background" button on the left. Pretty self-explanatory.


---
layout: post
title: 'Twilio: Web Service API for Making and Receiving Phone Calls, building hosted
IVR and PBX telephone applications'
date: '2009-10-21T14:39:58-07:00'
tags:
tumblr_url: http://alexhwilliams.tumblr.com/post/219377449/twilio-web-service-api-for-making-and-receiving-phone
---
Twilio: Web Service API for Making and Receiving Phone Calls, building hosted IVR and PBX telephone applications


27 Oct 2014
Everything Jenkins does happens in the context of the jenkins user by default. While that sounds obvious, it has some interesting implications if you aren't careful.
The Problem
In my homelab, I've installed 14.04 onto a 16gb usb key. This is a hold over from the days when it was an ESXi lab, but, it works for the most part. However, for things like downloading vagrant boxes and the like, one needs to mount external storage. Enter the problem: Jenkins sets itself up in /var/lib/jenkins by default, which lives on my very limited usb stick.
This in turn means anytime Jenkins tried to 'vagrant up' a thing, it would fill my root partition trying to store all the temporary files vagrant used. Whoops.
Changing the Jenkins Home Directory
There are a number of posts out there on how to do this. None of them, however, addressed the vagrant issue in particular. To do that, one has to hit it with a larger bat.
First Change /etc/defaults
The first thing to do, is change how Jenkins thinks of itself. The most straight forward way I found was to change that in /etc/defaults/jenkins. This will be around line 23 or 25:
# jenkins home location
JENKINS_HOME=/new/location
Then Change /etc/passwd
This is the step that was needed to fix the problem of Jenkins running vagrant and vagrant subsequently filling /:
Change:
jenkins:x:105:114:Jenkins,,,:/var/lib/jenkins:/bin/bash
To this:
jenkins:x:105:114:Jenkins,,,:/new/location:/bin/bash
Finally Restart Jenkins
Now to make sure all the things stick:
sudo /etc/init.d/jenkins restart
Summary
In this post we showed you how to change the Jenkins home directory, and why it's also important to change it in /etc/passwd.
23 Oct 2014
At this point we're pretty far down the ZeroVM rabbit hole. We've covered quite a bit of ground to get to this stage as well. Specific to this post, you will want to know more about ZeroCloud. You can do that here.
Regarding getting up to speed on ZeroVM as I am, you will find the following useful:
Building The ZeroCloud Lab
There are a few ways of going about this, however before we get started, realize that this is still early days and if you find this post a few months or a year or two down the road, it will likely be super out of date.
To get working with ZeroCloud, the most straight forward path is to follow the directions in the ZeroVM Docs here.
Once you've finished, you should have a functional ZeroCloud lab.
Experimenting in the ZeroCloud Lab
Having a lab up in running is one thing, but it's rather boring thing by itself. So, let's do something with it!
ZeroCloud Hello World Example
The first thing we'll try to do, is a generic "Hello World" example, taken from here.
1. Log into the lab:
vagrant ssh
cd devstack/
./rejoin-stack.sh
source /vagrant/adminrc
zpm auth
export OS_AUTH_TOKEN=PKIZ_Zrz_Qa5NJm44FWeF7Wp...
export OS_STORAGE_URL=http://<IP_ADDRESS>:8080/v1/AUTH_7fbcd8784f8843a180cf187bbb12e49c
Note: You will need to change the AUTHTOKEN and STORAGEURL values to match those returned by zpm auth.
2. Create our "Hello World" python file:
cat > example <<EOF
#!file://python2.7:python
import sys
print("Hello from ZeroVM!")
print("sys.platform is '%s'" % sys.platform)
EOF
3. Now we run the example:
curl -i -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" \
-H "X-Zerovm-Execute: 1.0" -H "Content-Type: application/python" \
--data-binary @example $OS_STORAGE_URL
Ok, so what did we do then? In the first step we logged in to our lab, sourced a file that contains credentials for our environment, and then set some additional environment variables to store our auth token and swift url.
Next we created the hello-world example file. In the absence of a text editor we just dumped everything between "<<EOF" and "EOF" into the file 'example'. Note the first line in the file begins with #!file://
. This is important as it lets the parser know what to do with said file, in this case, fire up python.
Finally, we use curl against our Swift install, letting it know to jump out to the ZeroVM middleware and that our application type is python. Additionally we specify our entire program as the payload in --data-binary
Summary
In this post, we showed you how to build a ZeroCloud lab and run an example "Hello World" application within it. If you would like to explore some more complex applications, be sure to explore the various talks and videos here.
22 Oct 2014
If you are getting up to speed on ZeroVM as I am, you will find the following useful:
Additionally, this post does a great job of explaining how ZeroVM fits when you start to approach middling to large (Read: Big Data) problems. Go read it now.
Getting Started with ZeroCloud
Now that you've read the introduction by Lars, and I trust that you have, we can start looking into the 'what' of ZeroCloud. In this post we'll touch on it's architecture and use case or two. In a subsequent post we'll show you how to build your own small-scale lab for such an environment.
Note: Also go here, watch this, around the 16:30 mark, pay attention to the 't = data / Rate' bits.
Note: This is where things in ZeroVM start to get really cool.
ZeroCloud Architecture
The best way to describe the what and how of ZeroCloud is with a few diagrams which we will then dive into. These are borrowed form slides in past presentations.
This first diagram is a hugely simplified view of a swift environment, that is, if you have worked with OpenStack Swift it should look familiar enough. The "Proxy" nodes at the top are Swift Proxies, the Storage Nodes below are well, object storage nodes.
What changes for ZeroCloud is the addition of a few ZVM parts made available via Swift Middleware. In this case ZVM represents job brokers, some messaging, ZeroVM itself, as well as an 'executor' that handles the connecting of channels and the reading / writing of objects in Swift. This next diagram breaks that down further:
In this diagram, which admittedly is an eyechart, each step in the ZeroVM Swift Middleware is shown. Working left to right:
1. The user initiates a job request via the Swift REST API by sending a post request with the code to be executed.
2. This hits the Swift Proxy node and is handed to the ZeroVM middleware, which, via a job scheduler finds where the closest replica of your data is, and sends the request along.
3. The job arrives at the executor who then fires up a net-new ZeroVM session for the job, opens the required IO Channels to your file* and if needed other ZeroVM sessions.
4. The ZeroVM job, finished with it's work, sends the response back up to the Proxy Server who then serves the response back to the user.
Note: re: file in #3, in the default configuration this is a net new copy of the file rather than the actual object itself. This prevents accidental damage to the file.
ZeroCloud Use Cases
So what do you do with a deterministic, computable, distributed data store? Some things that jump to mind are things like "A Giant MapReduce Cluster", similar to the one described here. As Lars describes, ZeroCloud can address one of the biggest MapReduce computational issues, that is data locality.
In addition to MapReduce type workloads, what else can one do? One could couple ElasticSeach and Log Stash, and indeed serve Kibana directly from Zero Cloud. Video trans-coding is another use case that I've seen.
ZeroVM/ZeroCloud then, works well when you have a data heavy workload that would benefit being attacked in a distributed fashion.
Summary
In this post we introduced you to ZeroCloud, the amalgamation of ZeroVM and OpenStack Swift. We dove into the architecture of ZeroCloud and introduced some use cases where having programmable distributed storage system is insanely useful.
21 Oct 2014
If you are just joining these posts, you might want to take a few minutes and review these other posts on ZeroVM:
IO Operations in ZeroVM
IO in ZeroVM is an odd sort of beast. As you are not working in a container or a VM you do not inherit the unlimited read/write to arbirtrary places as you would have otherwise. Instead the abstraction unit for ZeroVM is the channel.
Channels
As the intro said, a channel is the unit of IO abstraction within ZeroVM. That means any network communication, any file write, any input from a pipe, or output to swift, each is an individual channel.
Additionally, channels have to be explicitly defined prior to launching a ZeroVM instance. In some ways, this is like specifying the VMDK for a traditional VM to boot from. The requirement to specify all channels before hand does provide a powerful security mechanism in that all IO is effectively sandboxed. An erroneous process can not cause damage outside of the narrow constraints defined within said channel.
Channels in ZeroVM are unique in other ways. Each channel, regardless of type, is presented to the instance as a file handle.
Channel Quotas
To keep with the security and isolation provided within ZeroVM, along with the explicit channel definition, one must also specify a quota for IO. You specify said quota with four bits of information: (1) Total reads; (2) Total writes; (3) Total Read Size; and (4) Total Write Size.
Quotas are handled on a 'first one hit' basis. So, if you have 10,000 reads to do, but said number of reads exceeds the total read size in bytes at read number 3,500, well, that's it. No more reads for you. The inverse of this is also true, when you run out of the number of allowed reads or writes before you hit the size quota, you will also get a failure returned.
When you do hit this limit, however, ZeroVM tries to fail gracefully, in that you will still have all the data read or written up to that point. Below is an example of what happens when you exceed the number of available reads:
$ dd if=/dev/urandom of=/home/vagrant/file.txt bs=1048576 count=100
$ cat > /home/vagrant/example.py <<EOF
file = open('/dev/3.file.txt', 'r')
print file.read(5)
EOF
$ su - vagrant -c "zvsh --zvm-save-dir ~/ --zvm-image python.tar --zvm-image ~/file.txt python @example.py"
$ sudo sed -i "s|Channel = /home/vagrant/file.txt,/dev/3.file.txt,3,0,4294967296,4294967296,0,0|Channel = /home/vagrant/file.txt,/dev/3.file.txt,3,0,3,3,3,3|g" /home/vagrant/manifest.1
$ sudo sed -i "s|/home/vagrant/stdout.1|/dev/stdout|g" /home/vagrant/manifest.1
$ sudo sed -i "s|/home/vagrant/stderr.1|/dev/stderr|g" /home/vagrant/manifest.1
$ zerovm -t 2 manifest.1
Traceback (most recent call last):
File "/dev/1.example.py", line 2, in <module>
print file.read(5)
IOError: [Errno -122] Unknown error<PHONE_NUMBER>
What is happening in that example is this:
1. Create a 100MB file full of random bits
2. Create 'example.py' to read the first 5 characters in the file
3.
4. Change the quota from 'huge' to 3
5. Adjust the manifest file to allow stderr and stdout to work properly
6. Run ZeroVM with the updated manifest & receive IO error
Specifying Channels in a Manifest File
So that example took me way too long to figure out. Mostly due to a few small things and one big one: Creating the manifest file properly. What follows is a quick way to create a manifest file as well as our example manifest and a breakdown thereof.
Creating a Manifest File
It turns out that the zvsh utility that is bundled with ZeroVM has the ability to save the manifest (and other runtime files) when you launch it. To generate the template manifest that is used and modified in this example, run the following command:
zvsh --zvm-save-dir ~/ --zvm-image python.tar --zvm-image ~/file.txt python @example.py
Breakdown of the Manifest File
The example file that follows was for the specific bits used in our example. It can, however, make for a good starting point for your own manifest files.
Node = 1
Version = 20130611
Timeout = 50
Memory =<PHONE_NUMBER>,0
Program = /home/vagrant/boot.1
Channel = /dev/stdin,/dev/stdin,0,0,4294967296,4294967296,0,0
Channel = /dev/stdout,/dev/stdout,0,0,0,0,4294967296,4294967296
Channel = /dev/stderr,/dev/stderr,0,0,0,0,4294967296,4294967296
Channel = /home/vagrant/example.py,/dev/1.example.py,3,0,4294967296,4294967296,0,0
Channel = /home/vagrant/python.tar,/dev/2.python.tar,3,0,4294967296,4294967296,0,0
Channel = /home/vagrant/file.txt,/dev/3.file.txt,3,0,3,3,3,3
Channel = /home/vagrant/boot.1,/dev/self,3,0,4294967296,4294967296,0,0
Channel = /home/vagrant/nvram.1,/dev/nvram,3,0,4294967296,4294967296,4294967296,4294967296
Taken line by line:
1. Node an optional parameter specifying the node number.
2. Version mandatory. As manifest versions are incompatible. This tells both ZeroVM and you which version of the manifest you are using.
3. Timeout in seconds, is a mandatory parameter. This prevents long running ZeroVM jobs from consuming excess resources.
4. Memory Also mandatory, This is a comma separated value, where the first position is the 32-bit value representing memory. In our case, the max 4GB. The second number can be either 0 or 1 specifying the eTag used to checksum all data passing through ZeroVM
5. Program Specifies the ZeroVM cross compiled binary that we will run
6. Channel The channel definitions, these follow the format:
Channel = <uri>,<alias>,<type>,<etag>,<gets>,<get_size>,<puts>,<put_size>
Summary
In this post we covered how IO is handled in ZeroVM. We first explained the Channel concept, how quotas are handled within channels, and finally, how to add a channel or channels at ZeroVM runtime using a manifest.
20 Oct 2014
Instead of curating my own links this time, my friend and colleague Carina C. Zona, ZeroVM's community manager has gathered these as they relate to ZeroVM:
Posts by Lars
"ZeroVM Architecture and ZVM Runtime (ZRT)"
Ryan McKinney at University of Texas San Antonio Cloud & Big Data Laboratory [2014-08-05]
- slides (work in progress)
"Changing the World with ZeroVM and Swift"
Jakub Krajcovic at PyConAU OpenStack Miniconf [2014-08-01]
- video
- slides
- abstract
"Deep Dive into ZeroVM"
Van Lindberg at OSCON Expo [2014-07-23]
- (materials unavailable)
"What Is ZeroVM?"
Carina C. Zona at OSCON Expo [2014-07-22]
- slides
"ZeroVM: Virtualization for the Cloud"
Lars Butler at EuroPython [2014-07-21]
- video
"Introduction to ZeroVM"
Muharem Jrnjadovic at Open Cloud Day [2014-07]
- video
"NoSQL - Computable Object Store with OpenStack Swift and ZeroVM"
(aka "Programmable Object Store with OpenStack Swift and ZeroVM")
Adrian Otto at BigDataCamp [2014-06-14]
- video
- slides
- abstract
"Using ZeroVM and Swift to Build a Compute Enabled Storage Platform"
Blake Yeager & Camuel Gilydov at OpenStack Summit [2014-05-14]
- video
- slides
"Using ZeroVM and Swift to Build a Compute Enabled Storage Platform"
Blake Yeager at Open BigCloud Symposium [2014-05-08]
- (materials unavailable)
"ZeroVM Background"
Prosunjit Biswas at University of Texas at San Antionio [UTSA] Institute of Cyber Security [2014-04-23]
- slides
"Process Virtualization with ZeroVM"
Jakub Krajcovi at rax.io [2014-02-26]
- slides
"ZeroVM Zwift: OpenStack Platform"
Camuel Gilydov and Constantine Peresypkin at OpenStack Summit [2013-04]
- abstract
"Big Data on OpenStack"
Camuel Gilydov at OpenStack Isreal [2012-06]
- video
"Containers or VMs: Which Virtualization Technology Works for You?"
Panel discussion with ZeroVM, Docker, and VMWare at while42 meetup [2014-03-04]
- video
- info


tulsa - Tcl Unix Local Sockets, Eh?
The Tulsa Tcl extension provides server, client, and pair UNIX socket(2)s. Tulsa sockets are Tcl channels and as such support standard Tcl channel configuration options.
Returns a connected pair of channels as a 2-element list.
Connects to server at path. Returns the client channel.
Opens a server at path and listens for incoming connections. A connection point at path is created on open and removed on close. Exceptional conditions such as abrupt program termination may prevent removing the connection point. Returns the server channel.
Accepts a connection on a server channel. If there are no pending connections, blocking channels will block until a connection arrives. Returns the accepted client channel, or an empty string if the channel is non-blocking and there are no pending connections.
Wraps a system-specific file descriptor in a new Tulsa client channel. Returns the client channel.
Returns a list of readable server options provided by Tulsa.
Returns a list of writable server options provided by Tulsa.
Returns a list of readable client options provided by Tulsa.
Returns a list of writable client options provided by Tulsa.
socket, unix
Networking
Copyright © 2018 Stuart Cassoff <stwo@users.sourceforge.net>


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.hp.hpl.jena.vocabulary.DAML_OIL
public class DAML_OIL
Defines a vocabulary of RDF constants used by the latest release of DAML+oil
for class and property names. The contract maintained by the DAML_OIL class
is that it will be periodically updated to reflect the latest release of DAML+OIL.
Currently this is the March 2001 release. Older versions of the DAML+OIL
vocabulary, for compatability with older ontology documents, are maintained in
classes named DAML_OIL_YYYY_MM
, for example DAML_OIL_2000_12.
Note that rudimentary support for multiple versions of DAML namespaces is
included in this release, by the mechanism of providing methods with the same
names as the static constants in the DAMLVocabulary
interface. This mechanism
is still under design review, and may change in future versions of Jena.
Note also that the capitalisation of the constants herein is designed to follow normal practice in the RDF community, rather than normal practice in the Java community. This is consistent with the capitalisation of constants in Jena.
| Field Summary | |
|---|---|
static Property |
cardinality
RDF Property for the DAML cardinality property on Restrictions |
static Property |
cardinalityQ
RDF Property for the DAML cardinalityQ property on Restrictions |
static Resource |
Class
RDF resource for DAML Class class (a DAML sub-class of rdfs:Class). |
static Resource |
collection
DAML namespace resource for daml:collection. |
static Property |
comment
Alias for rdfs:comment in daml namespace |
static Property |
complementOf
RDF Property for the complementOf property on class expressions |
static Resource |
Datatype
RDF resource for DAML Datatype class (a DAML sub-class of rdfs:Class). |
static Resource |
DatatypeProperty
RDF resource for DAML DatatypeProperty class (a DAML sub-class of rdf:Property). |
static Property |
differentIndividualFrom
RDF Property for the DAML differentIndvidualFrom property on instances |
static Property |
disjointUnionOf
RDF Property for the DAML disjointUnionOf property on Classes |
static Property |
disjointWith
RDF Property for the DAML disjointWith property on Classes |
static Property |
domain
Alias for rdfs:domain in daml namespace |
static Property |
equivalentTo
RDF Property for the equivalentTo property on DAML values |
static Property |
first
RDF Property for the DAML first property on Lists |
static Property |
hasClass
RDF Property for the DAML hasClass property on Restrictions |
static Property |
hasClassQ
RDF Property for the DAML hasClassQ property on Restrictions |
static Property |
hasValue
RDF Property for the DAML hasValue property on Restrictions |
static Property |
imports
RDF Property for the DAML imports property on Ontologies |
static Property |
intersectionOf
RDF Property for the intersectionOf property on class expressions |
static Property |
inverseOf
RDF Property for the DAML inverseOf property on Properties |
static Property |
isDefinedBy
Alias for rdfs:isDefinedBy in daml namespace |
static Property |
item
RDF Property for the DAML item property on Lists |
static Property |
label
Alias for rdfs:label in daml namespace |
static Resource |
List
RDF resource for DAML List class. |
static Resource |
Literal
Alias for rdfs:Literal in the daml namespace. |
static Property |
maxCardinality
RDF Property for the DAML maxCardinality property on Restrictions |
static Property |
maxCardinalityQ
RDF Property for the DAML maxCardinalityQ property on Restrictions |
static Property |
minCardinality
RDF Property for the DAML minCardinality property on Restrictions |
static Property |
minCardinalityQ
RDF Property for the DAML minCardinalityQ property on Restrictions |
static Resource |
NAMESPACE_DAML
DAML namespace resource for the current release |
static Resource |
nil
RDF resource for the nil (empty) list. |
static Resource |
Nothing
RDF resource for the bottom type (i.e. the super-type of no types). |
static Resource |
ObjectProperty
RDF resource for DAML ObjectProperty class (a DAML sub-class of rdf:Property). |
static Property |
oneOf
RDF Property for the oneOf property on DAML class expressions |
static Property |
onProperty
RDF Property for the DAML onProperty property on Restrictions |
static Resource |
Ontology
RDF resource for DAML Ontology class |
static Resource |
Property
Alias for rdfs:Property in the daml namespace. |
static Property |
range
Alias for rdfs:range in daml namespace |
static Property |
rest
RDF Property for the DAML rest property on Lists |
static Resource |
Restriction
RDF resource for DAML Restriction class |
static Property |
sameClassAs
RDF Property for the DAML sameClassAs property on Classes |
static Property |
sameIndividualAs
RDF Property for the DAML sameIndividualAs property on instances |
static Property |
samePropertyAs
RDF Property for the DAML samePropertyAs property on Properties |
static Property |
seeAlso
Alias for rdfs:seeAlso in daml namespace |
static Property |
subClassOf
Alias for rdfs:subClassOf in daml namespace |
static Property |
subPropertyOf
Alias for rdfs:subPropertyOf in daml namespace |
static Resource |
Thing
RDF resource for the top type (i.e. the super-type of all types). |
static Property |
toClass
RDF Property for the DAML toClass property on Restrictions |
static Resource |
TransitiveProperty
RDF resource for DAML TransitiveProperty class |
static Property |
type
Alias for rdf:type in daml namespace |
static Resource |
UnambiguousProperty
RDF resource for DAML UnambiguousProperty class |
static Property |
unionOf
RDF Property for the unionOf property on class expressions |
static Resource |
UniqueProperty
RDF resource for DAML UniqueProperty class |
static Property |
value
Alias for rdf:value in daml namespace |
static Property |
versionInfo
RDF Property for the DAML versionInfo property |
| Fields inherited from interface com.hp.hpl.jena.vocabulary.DAMLVocabulary |
|---|
NAMESPACE_DAML_2000_12_URI, NAMESPACE_DAML_2001_03_URI |
| Method Summary | |
|---|---|
Property |
cardinality()
Answer the RDF Property for the DAML cardinality property on Restrictions |
Property |
cardinalityQ()
Answer the RDF Property for the DAML cardinalityQ property on Restrictions |
Resource |
Class()
Answer the RDF resource for DAML Class class (a DAML sub-class of rdfs:Class). |
Property |
comment()
Answer the alias for rdfs:comment in daml namespace |
Property |
complementOf()
Answer the RDF Property for the complementOf property on class expressions |
Resource |
Datatype()
Answer the RDF resource for DAML Datatype class (a DAML sub-class of rdfs:Class). |
Resource |
DatatypeProperty()
Answer the RDF resource for DAML DatatypeProperty class (a DAML sub-class of rdf:Property). |
Property |
differentIndividualFrom()
Answer the RDF Property for the DAML differentIndvidualFrom property on instances |
Property |
disjointUnionOf()
Answer the RDF Property for the DAML disjointUnionOf property on Classes |
Property |
disjointWith()
Answer the RDF Property for the DAML disjointWith property on Classes |
Property |
domain()
Answer the alias for rdfs:domain in daml namespace |
Property |
equivalentTo()
Answer the RDF Property for the equivalentTo property on DAML values |
Property |
first()
Answer the RDF Property for the DAML first property on Lists |
static DAMLVocabulary |
getInstance()
Answer the singleton instance of this vocabulary |
java.lang.String |
getNamespace()
Answer the namespace URI for a the current vocabulary. |
Property |
hasClass()
Answer the RDF Property for the DAML hasClass property on Restrictions |
Property |
hasClassQ()
Answer the RDF Property for the DAML hasClassQ property on Restrictions |
Property |
hasValue()
Answer the RDF Property for the DAML hasValue property on Restrictions |
Property |
imports()
Answer the RDF Property for the DAML imports property on Ontologies |
Property |
intersectionOf()
Answer the RDF Property for the intersectionOf property on class expressions |
Property |
inverseOf()
Answer the RDF Property for the DAML inverseOf property on Properties |
Property |
isDefinedBy()
Answer the alias for rdfs:isDefinedBy in daml namespace |
Property |
item()
Answer the RDF Property for the DAML item property on Lists |
Property |
label()
Answer the alias for rdfs:label in daml namespace |
Resource |
List()
Answer the RDF resource for DAML List class. |
Resource |
Literal()
Answer the Alias for rdfs:Literal in the daml namespace. |
Property |
maxCardinality()
Answer the RDF Property for the DAML maxCardinality property on Restrictions |
Property |
maxCardinalityQ()
Answer the RDF Property for the DAML maxCardinalityQ property on Restrictions |
Property |
minCardinality()
Answer the RDF Property for the DAML minCardinality property on Restrictions |
Property |
minCardinalityQ()
Answer the RDF Property for the DAML minCardinalityQ property on Restrictions |
Resource |
NAMESPACE_DAML()
Answer the DAML namespace resource for the current release |
Resource |
nil()
Answer the RDF resource for the nil (empty) list. |
Resource |
Nothing()
Answer the RDF resource for the bottom type (i.e. the super-type of no types). |
Resource |
ObjectProperty()
Answer the RDF resource for DAML ObjectProperty class (a DAML sub-class of rdf:Property). |
Property |
oneOf()
Answer the RDF Property for the oneOf property on DAML class expressions |
Property |
onProperty()
Answer the RDF Property for the DAML onProperty property on Restrictions |
Resource |
Ontology()
Answer the RDF resource for DAML Ontology class |
Resource |
Property()
Answer the alias for rdfs:Property in the daml namespace. |
Property |
range()
Answer the alias for rdfs:range in daml namespace |
Property |
rest()
Answer the RDF Property for the DAML rest property on Lists |
Resource |
Restriction()
Answer the RDF resource for DAML Restriction class |
Property |
sameClassAs()
Answer the RDF Property for the DAML sameClassAs property on Classes |
Property |
sameIndividualAs()
Answer the RDF Property for the DAML sameIndividualAs property on instances |
Property |
samePropertyAs()
Answer the RDF Property for the DAML samePropertyAs property on Properties |
Property |
seeAlso()
Answer the alias for rdfs:seeAlso in daml namespace |
Property |
subClassOf()
Answer the alias for rdfs:subClassOf in daml namespace |
Property |
subPropertyOf()
Answer the alias for rdfs:subPropertyOf in daml namespace |
Resource |
Thing()
Answer the RDF resource for the top type (i.e. the super-type of all types). |
Property |
toClass()
Answer the RDF Property for the DAML toClass property on Restrictions |
Resource |
TransitiveProperty()
Answer the RDF resource for DAML TransitiveProperty class |
Property |
type()
Answer the alias for rdf:type in daml namespace |
Resource |
UnambiguousProperty()
Answer the RDF resource for DAML UnambiguousProperty class |
Property |
unionOf()
Answer the RDF Property for the unionOf property on class expressions |
Resource |
UniqueProperty()
Answer the RDF resource for DAML UniqueProperty class |
Property |
value()
Answer the alias for rdf:value in daml namespace |
Property |
versionInfo()
Answer the RDF Property for the DAML versionInfo property |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final Resource NAMESPACE_DAML
public static final Resource collection
public static final Resource List
public static final Resource UniqueProperty
public static final Resource TransitiveProperty
public static final Resource UnambiguousProperty
public static final Resource Restriction
public static final Resource Ontology
public static final Resource nil
public static final Resource Thing
public static final Resource Nothing
public static final Resource Literal
public static final Resource Class
public static final Resource Datatype
public static final Resource DatatypeProperty
public static final Resource ObjectProperty
public static final Resource Property
public static Property versionInfo
public static Property imports
public static Property disjointWith
public static Property disjointUnionOf
public static Property sameClassAs
public static Property samePropertyAs
public static Property oneOf
public static Property intersectionOf
public static Property unionOf
public static Property complementOf
public static Property equivalentTo
public static Property onProperty
public static Property toClass
public static Property hasValue
public static Property hasClass
public static Property hasClassQ
public static Property cardinality
public static Property minCardinality
public static Property maxCardinality
public static Property cardinalityQ
public static Property minCardinalityQ
public static Property maxCardinalityQ
public static Property inverseOf
public static Property first
public static Property rest
public static Property item
public static Property subPropertyOf
public static Property type
public static Property value
public static Property subClassOf
public static Property domain
public static Property range
public static Property label
public static Property comment
public static Property seeAlso
public static Property isDefinedBy
public static Property sameIndividualAs
public static Property differentIndividualFrom
| Method Detail |
|---|
public java.lang.String getNamespace()
public static DAMLVocabulary getInstance()
public Resource NAMESPACE_DAML()
NAMESPACE_DAML
in interface DAMLVocabulary
public Resource List()
List
in interface DAMLVocabulary
public Resource UniqueProperty()
UniqueProperty
in interface DAMLVocabulary
public Resource TransitiveProperty()
TransitiveProperty
in interface DAMLVocabulary
public Resource UnambiguousProperty()
UnambiguousProperty
in interface DAMLVocabulary
public Resource Restriction()
Restriction
in interface DAMLVocabulary
public Resource Ontology()
Ontology
in interface DAMLVocabulary
public Resource nil()
nil
in interface DAMLVocabulary
public Resource Thing()
Thing
in interface DAMLVocabulary
public Resource Nothing()
Nothing
in interface DAMLVocabulary
public Resource Literal()
Literal
in interface DAMLVocabulary
public Resource Class()
Class
in interface DAMLVocabulary
public Resource Datatype()
Datatype
in interface DAMLVocabulary
public Resource DatatypeProperty()
DatatypeProperty
in interface DAMLVocabulary
public Resource ObjectProperty()
ObjectProperty
in interface DAMLVocabulary
public Property versionInfo()
versionInfo
in interface DAMLVocabulary
public Property imports()
imports
in interface DAMLVocabulary
public Property disjointWith()
disjointWith
in interface DAMLVocabulary
public Property disjointUnionOf()
disjointUnionOf
in interface DAMLVocabulary
public Property sameClassAs()
sameClassAs
in interface DAMLVocabulary
public Property samePropertyAs()
samePropertyAs
in interface DAMLVocabulary
public Property oneOf()
oneOf
in interface DAMLVocabulary
public Property intersectionOf()
intersectionOf
in interface DAMLVocabulary
public Property unionOf()
unionOf
in interface DAMLVocabulary
public Property complementOf()
complementOf
in interface DAMLVocabulary
public Property equivalentTo()
equivalentTo
in interface DAMLVocabulary
public Property onProperty()
onProperty
in interface DAMLVocabulary
public Property toClass()
toClass
in interface DAMLVocabulary
public Property hasValue()
hasValue
in interface DAMLVocabulary
public Property hasClass()
hasClass
in interface DAMLVocabulary
public Property hasClassQ()
hasClassQ
in interface DAMLVocabulary
public Property cardinality()
cardinality
in interface DAMLVocabulary
public Property minCardinality()
minCardinality
in interface DAMLVocabulary
public Property maxCardinality()
maxCardinality
in interface DAMLVocabulary
public Property cardinalityQ()
cardinalityQ
in interface DAMLVocabulary
public Property minCardinalityQ()
minCardinalityQ
in interface DAMLVocabulary
public Property maxCardinalityQ()
maxCardinalityQ
in interface DAMLVocabulary
public Property inverseOf()
inverseOf
in interface DAMLVocabulary
public Property first()
first
in interface DAMLVocabulary
public Property rest()
rest
in interface DAMLVocabulary
public Property item()
item
in interface DAMLVocabulary
public Property subPropertyOf()
subPropertyOf
in interface DAMLVocabulary
public Property type()
type
in interface DAMLVocabulary
public Property value()
value
in interface DAMLVocabulary
public Property subClassOf()
subClassOf
in interface DAMLVocabulary
public Property domain()
domain
in interface DAMLVocabulary
public Property range()
range
in interface DAMLVocabulary
public Property label()
label
in interface DAMLVocabulary
public Property comment()
comment
in interface DAMLVocabulary
public Property seeAlso()
seeAlso
in interface DAMLVocabulary
public Property isDefinedBy()
isDefinedBy
in interface DAMLVocabulary
public Property sameIndividualAs()
sameIndividualAs
in interface DAMLVocabulary
public Property differentIndividualFrom()
differentIndividualFrom
in interface DAMLVocabulary
public Resource Property()
Property
in interface DAMLVocabulary
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Never Been Kissed (1999) Drew Barrymore, Molly Shannon, David Arquette, Michael Vartan, John C. Reilly, Garry Marshall, Sean Whalen, Leelee Sobieski, Jeremy Jordan, Jessica Alba, Marley Shelton, Jordan Ladd. Screenplay by Abby Kohn & Marc Silverstein. Directed by Raja Gosnell. 107 minutes. Rated PG-13, 1.5 stars (out of five stars)
Review by Ed Johnson-Ott, NUVO Newsweekly www.nuvo-online.com Archive reviews at http://us.imdb.com/M/reviews_by?Edward+Johnson-ott To receive reviews by e-mail at no charge, send subscription requests to<EMAIL_ADDRESS>There's something about Drew Barrymore that brings out the big brother in me. I'm not sure whether it's her genuinely sweet nature, the way she emerged triumphant from a rocky adolescence, or just some residual "E.T." magic, but the notion of criticizing such a charming young performer makes me uncomfortable. It should be obvious by this point that I'm going to do so anyway, but hopefully the preceding remarks will at least establish that I'm not happy about it.
"Never Been Kissed" is a lousy movie. The premise, while far from original, is serviceable enough. A fledgling reporter masquerades as a high school student to do a story on the youth of today. Several years earlier she suffered great pain as an outcast in school, and the assignment affords her the golden opportunity for a second chance. This time she'll get it right.
She doesn't, of course, and neither does the movie. The filmmakers behind "Never Been Kissed" apparently believe that as long as they provide a fuzzy-wuzzy romantic finale, it makes no difference how they get there. The movie makes virtually every mistake in the book, including flagrantly violating the moral of their own story.
"Find out who you are and try not to be afraid of it," our 25 year old heroine nobly proclaims late in the film. This inspirational statement comes from a person who pretends to be someone she isn't and tries to insinuate herself with the vacuous school elite through patently phony affectations. She fails, only to be rescued when her 23 year old brother joins the charade and also re-enrolls, becoming an instant hit by downing a tub of cole slaw in the cafeteria, then bestowing his sister with popularity by telling the in-crowd how cool she is. Right.
Drew Barrymore was delightful in "The Wedding Singer," "Ever After" and even "Home Fries," but turns in a terribly strained performance here. As anal-retentive copy editor turned hapless reporter Josie Geller, she whines, winces and crinkles her eyes continuously, desperately trying to wring some pathos out of her poorly written character.  Buried under bad make-up, she is quite embarrassing but never convincing.
As a reporter, her character is even worse. We're expected to believe that a professional, whose job is to check facts, would fail to research teen fashion, instead showing up at school dressed like a go-go dancer from the '60s. We're expected to believe that a reporter would sit down with students she has just met and ask "What are you guys' hopes and dreams?" Nothing Josie Geller says or does is even remotely credible, especially her idiotic romantic gesture at the film's climax; an exercise in public humiliation that no human on Earth would subject themselves to in a million years, except in the wonderful world of contrived movies.
The awfulness doesn't stop with Barrymore. John C. Reilly, Mark Wahlberg's pornstar-pal in "Boogie Nights," is flat-out dreadful as Josie's boss, doing a wretched imitation of Lou Grant. Garry Marshall chews scenery as a management tyrant, and young Leelee Sobieski (the talented actor from "Deep Impact" who looks like Helen Hunt Jr.) has far too much innate poise and dignity to pull off her role as a contemporary high school geek.
About 40 minutes into the film, screenwriters Abby Kohn and Marc Silverstein make matters even more annoying by slapping a hidden micro- camera onto Josie, subjecting us to pointless "Truman Show" style reaction shots of Chicago Sun-Times staff members (get this) sitting around the office for hours and hours watching the monitor, enraptured by Josie's pratfalls and her quasi-romantic relationship with a teacher (Michael Vartan, an anemic-looking fellow inexplicably presented as a dreamboat). I can hardly wait to read what Chicago Sun-Times critic Roger Ebert has to say about how the film depicts the inner-workings of his newspaper.
There are a few bright spots in the production. Molly Shannon makes the most of her supporting role, particularly in an amusing scene where she pretends to be a sex-education teacher, and the always goofy David Arquette, despite looking too old to play Barrymore's younger brother, projects an odd giddiness that is fun to watch. In fact, his character, a lost young man who views the high-school re-enrollment facade as a last chance to realize his dream of becoming a ballplayer, is far more interesting and engaging than Josie.
 As for Drew Barrymore, hopefully she'll take a good look at this bad flick and be more selective when accepting future roles. She deserves better than this and so do we.
© 1999 Ed Johnson-Ott
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


The first triplet stores the snapshot of interpreter state in an opaque token returned by Tcl_SaveInterpState. That token value may then be passed back to one of Tcl_RestoreInterpState or Tcl_DiscardInterpState, depending on whether the interp state is to be restored. So long as one of the latter two routines is called, Tcl will take care of memory management.
The second triplet stores the snapshot of only the interpreter result (not its complete state) in memory allocated by the caller. These routines are passed a pointer to a Tcl_SavedResult structure that is used to store enough information to restore the interpreter result. This structure can be allocated on the stack of the calling procedure. These routines do not save the state of any error information in the interpreter (e.g. the -errorcode or -errorinfo return options, when an error is in progress).
Because the routines Tcl_SaveInterpState, Tcl_RestoreInterpState, and Tcl_DiscardInterpState perform a superset of the functions provided by the other routines, any new code should only make use of the more powerful routines. The older, weaker routines Tcl_SaveResult, Tcl_RestoreResult, and Tcl_DiscardResult continue to exist only for the sake of existing programs that may already be using them.
Tcl_SaveInterpState takes a snapshot of those portions of interpreter state that make up the full result of script evaluation. This include the interpreter result, the return code (passed in as the status argument, and any return options, including -errorinfo and -errorcode when an error is in progress. This snapshot is returned as an opaque token of type Tcl_InterpState. The call to Tcl_SaveInterpState does not itself change the state of the interpreter. Unlike Tcl_SaveResult, it does not reset the interpreter.
Tcl_RestoreInterpState accepts a Tcl_InterpState token previously returned by Tcl_SaveInterpState and restores the state of the interp to the state held in that snapshot. The return value of Tcl_RestoreInterpState is the status value originally passed to Tcl_SaveInterpState when the snapshot token was created.
Tcl_DiscardInterpState is called to release a Tcl_InterpState token previously returned by Tcl_SaveInterpState when that snapshot is not to be restored to an interp.
The Tcl_InterpState token returned by Tcl_SaveInterpState must eventually be passed to either Tcl_RestoreInterpState or Tcl_DiscardInterpState to avoid a memory leak. Once the Tcl_InterpState token is passed to one of them, the token is no longer valid and should not be used anymore.
Tcl_SaveResult moves the string and object results of interp into the location specified by statePtr. Tcl_SaveResult clears the result for interp and leaves the result in its normal empty initialized state.
Tcl_RestoreResult moves the string and object results from statePtr back into interp. Any result or error that was already in the interpreter will be cleared. The statePtr is left in an uninitialized state and cannot be used until another call to Tcl_SaveResult.
Tcl_DiscardResult releases the saved interpreter state stored at statePtr. The state structure is left in an uninitialized state and cannot be used until another call to Tcl_SaveResult.
Once Tcl_SaveResult is called to save the interpreter result, either Tcl_RestoreResult or Tcl_DiscardResult must be called to properly clean up the memory associated with the saved state.


books app
View All Books
Add A New Book
my books
ERROR!
add a new book
submit
update: book title
update
log in
please enter your passphrase
submit


Lack of readily available platform to collect local and beer specific feedback
Difficult for his brewery to standout in a saturated market
User Story
“As a brewer I want to update my profile with my latest beers.”
Use Case
Pre-conditions: On homepage (already logged in)
Post-conditions His profile is updated with his latest offerings
Frequency: Once or twice a month
Scenario: It's a thursday night and Bruce just kegged a new batch of strawberry
rhubarb gose and to inform patrons of this new limited offering before the weekend.
U:Bruce navigates to "add beer".
B:Browser displays "add beer" form.
U:Bruce enters date into all fields.
B:Browser enters date into all fields and clicks submit.
U:Bruce clicks confirm.
B:Browser returns dialog choise to either go home or add another beer.
U:Bruce clicks "go home".
B:Browser returns Bruce to his dashboard with update project info.


---
layout: post
author: Gonçalo Silva
authorname: Gonçalo Silva
title: (one of) London's GDCR 2012
preview: cross-posted from here
---
Practising the basic principles of modular and object-oriented design, developers can improve their ability to write code that minimizes the cost of change over time."
How does it actually work?
Developers come together to implement
Conway's Game of Life over 6 sessions of 45 minutes using any programming language they are comfortable with.
Some sessions have challenging constraints, and at the end of each session the group gathers for a small retrospective.
There are rules though:
- TDD or any other form of test first development is used
- Code written must be "simple":
- Passes all the tests.
- Maximises clarity with well expressed intent.
- Minimises duplication
- Has no superﬂuous parts.
- Pair programming (or 3 if there's an odd number) pairing with someone new every session
- At the end of each session code is deleted
Deleting code might seem unnecessary or harsh but its important as the main point of this day is to practice and learn, not to finish. Its not a competition and developers should aim at creating the best code they can within the set constraint, and have fun!
How did it go?
Though we had over 20 people subscribed to attend only 9 showed up, but this actually worked out well as we could focus more on each pair.
We started at 9 am with a quick intro about the LSCC, what a code retreat is all about, format of the day, and an explanation of Conway's Game of Life. We then jumped straight to the first session.
Session 1 - no constraints
The goal of this session was to get familiar with the problem, last tweaks to the development environment and make sure everyone had a chance to "wake up".
|
| Starting the day |
Session 2 - Baby steps
This session forces us to take very small steps when writing code by using source control to commit early and often. It goes like this:
- Set a timer for 2 minutes
- Write exactly one test
- If the timer rings and the test is red then revert and start over.
- If the test is green before timer rings then commit
- Restart timer
- Refactor
- If the timer rings and the refactoring is not complete then revert.
 After a few sessions pairs fell into a rhythm and got used to the 2 minute cycle, committing often and making sure that the next test or any refactoring could be done in the timebox. Every now and then they stopped for a few timeboxes to discuss and then carried on.
This session was a bit of a surprise for a few and they could see its benefit straight away, but there were also concerns that with such small steps the big picture could be lost.
A few readily agreed they would try this at work, but with longer timeboxes.
Session 3 - TDD as if you meant it
This session was created as an "...
exercise that folks could do, in safe controlled conditions, whereby they could experience the odd and surprising (and delightful) things that can happen when you really do TDD, as Beck describes it, with the hope that the experience would carry over to their daily work as programmers."
The main goal is to leave design decisions to be taken as late as possible. The rules are:
- Write exactly one new test. It should be the smallest test which seems to point in the direction of a solution
- Run the test to make sure it fails
- Make the test pass by writing the least amount of implementation code you can IN THE TEST METHOD.
- Refactor to remove duplication or otherwise as required to improve the design. Be strict about the refactorings. Only introduce new abstractions (methods, classes, etc) when they will help to improve the design of the code. Specifically:
- - ONLY Extract a new method if there is sufficient code duplication in the test methods. When extracting a method, initially extract it to the test class (don't create a new class yet).
- - ONLY create a new class when a clear grouping of methods emerges and when the test class starts to feel crowded or too large.
- Go back to step 1
|
| TDDing as if they meant it |
A different approach to a familiar practice, it took a bit of effort to resist the urge of creating classes and extracting code prematurely.
Some felt slowed down and not as productive but could see a different design emerging rather than the classic Cell or World objects created straight from the beginning, but not many were sure they would use this in their jobs.
Lunch
After session 3 we broke for lunch, during which we watched a video from JetBrains since they were this years global sponsor, as well as a pre prepared slide deck with other sponsors and a few videos of Conway's Game of Life evolutions (
this is my favourite).
Session 4 - Mute pairs
The main aim of this session is about communicating intent through your code with no talking done by either developer. Its pretty simple:
- Developer A writes a failing test.
- B makes it pass, refactors if needed, then writes a new failing test.
- A makes it pass, refactors if needed, then starts again.
|
Tom makes sure no one utters a peep
|
Considered by almost everyone to be the hardest, most tiring and frustrating session of the day (its never easy after lunch), it shows that constraints can also be about removing things we take for granted, such as discussions with our pair. I think it drills home how much of a social activity development actually is.
All pairs mentioned picking up a failing test produced by their partner and rewriting it or ignoring it, as it would have been to big of a step or in the wrong direction. Even though everyone felt comfortable with the domain at this point, this session turned out to have the slowest progress with the constant to and fro.
|
| After 45 minutes of silence it felt good to speak again at the retrospective |
Session 5 - Object calisthenics
This one is about drilling in good OO design practices:
- One level of indentation per method.
- Don’t use ELSE keyword.
- Wrap all primitives.
- First class collections.
- One dot per line.
- Don’t abbreviate.
- Keep classes small
- No classes with more than two instance variables
- No getters/setters.
This is always a tough one, specially not using getters and setters ( "How are we going to assert?" ), but overall the pairs performed pretty well, leading to what I think was one of the most productive sessions of the day.
Not using getters doesn't mean you can't have methods return values, just that these shouldn't be class variables - i.e. some behaviour should happen inside that method. Ideally "Tell, don't ask" and a mocking framework should be used.
As
Marco pointed out, "calisthenics" is simply good OO practices and something we should be using on a daily basis - maybe "Don’t use ELSE keyword." and "No classes with more than two instance variables" are debatable.
|
| Ashish and Alejandro pairing using vim |
Session 6 - Choose your own constraint(s)
For the last session of the day we went easy on the group and let each pair decide which constraints to use (if any). Some selected baby steps, others TDD as you meant it, or using a different language.
Closing circle
To finish off the day we gathered round after the last session for the final retrospective and asked everyone to name three things:
- What did they learn
- What surprised them
- What they'll take home
Answers varied from: more confidence in TDD, being more energized / motivated, seeing how many different approaches there are to solve a problem, taking some of these ideas and applying them at work.
What about the other 153 code retreats?
Since this was a global event with lots of code retreats happening simultaneously, Google hangouts were used to connect retreats from different locations and time zones:
|
| Hanging out! |
We "hung out" all throughout the day ( keeping it muted while in a session ) with other retreats in London, South Africa, Germany, Belgium, Romania, Hungary, and possibly a few more than came and went while we weren't looking!
Also, a web app - live.coderetreat.org - was used by facilitators to update their schedule status throughout the day. It was good to see live updates of all other retreats worldwide in real time.
Summing up
This was the first code retreat I facilitated and I had a blast!
It was really fun, energizing and a great learning experience for all who attended, but also for me - being on the "other side" gave me a different perspective and helped to gain new insights and solidify my knowledge.
Looking forward to hosting another one in the future...


It's possible to add color to data cells according to their values. The
data_color()
function colors all rows of any columns
supplied. There are
two ways to define how cells are colored: (1) through the use of a supplied
color palette, and (2) through use of a color mapping function available from
the scales package. The first method colorizes cell data according to
whether values are character or numeric. The second method provides more
control over how cells are colored since we provide an explicit color
function and thus other requirements such as bin counts, cut points, or a
numeric domain. Finally, we can choose whether to apply the cell-specific
colors to either the cell background or the cell text.
data_color( data, columns, colors, alpha = NULL, apply_to = "fill", autocolor_text = TRUE )
| data | A table object that is created using the |
|---|---|
| columns | The columns wherein changes to cell data colors should occur. |
| colors | Either a color mapping function from the scales package or
a vector of colors to use for each distinct value or level in each of the
provided |
| alpha | An optional, fixed alpha transparency value that will be applied
to all of the |
| apply_to | Which style element should the colors be applied to? Options
include the cell background (the default, given as |
| autocolor_text | An option to let gt modify the coloring of text
within cells undergoing background coloring. This will in some cases yield
more optimal text-to-background color contrast. By default, this is set to
|
An object of class gt_tbl
.
The col_*()
color mapping functions from the scales package can be used in
the colors
argument. These functions map data values (numeric
or
factor
/character
) to colors according to the provided palette.
scales::col_numeric()
: provides a simple linear mapping from
continuous numeric data to an interpolated palette.
scales::col_bin()
: provides a mapping of continuous numeric data to
value-based bins. This internally uses the base::cut()
function.
scales::col_quantile()
: provides a mapping of continuous
numeric data to quantiles. This internally uses the
stats::quantile()
function.
scales::col_factor()
: provides a mapping of factors to colors. If the
palette is discrete and has a different number of colors than the number of
factors, interpolation is used.
By default, gt will choose the ideal text color (for maximal contrast)
when colorizing the background of data cells. This option can be disabled by
setting autocolor_text
to FALSE
.
Choosing the right color palette can often be difficult because it's both
hard to discover suitable palettes and then obtain the vector of colors. To
make this process easier we can elect to use the paletteer package,
which makes a wide range of palettes from various R packages readily
available. The info_paletteer()
information table allows us to easily
inspect all of the discrete color palettes available in paletteer. We
only then need to specify the package
and palette
when calling the
paletteer::paletteer_d()
function, and, we get the palette as a vector of
hexadecimal colors.
3-13
Other Format Data:
fmt_currency()
,
fmt_datetime()
,
fmt_date()
,
fmt_markdown()
,
fmt_missing()
,
fmt_number()
,
fmt_passthrough()
,
fmt_percent()
,
fmt_scientific()
,
fmt_time()
,
fmt()
,
text_transform()
# library(paletteer) # Use `countrypops` to create a gt table; # Apply a color scale to the `population` # column with `scales::col_numeric`, # four supplied colors, and a domain tab_1 <- countrypops %>% dplyr::filter(country_name == "Mongolia") %>% dplyr::select(-contains("code")) %>% tail(10) %>% gt() %>% data_color( columns = vars(population), colors = scales::col_numeric( palette = c( "red", "orange", "green", "blue"), domain = c(0.2E7, 0.4E7)) ) # Use `pizzaplace` to create a gt table; # Apply colors from the `red_material` # palette (in the `ggsci` pkg but # more easily gotten from the `paletteer` # package, info at `info_paletteer()`) to # to `sold` and `income` columns; setting # the `domain` of `scales::col_numeric()` # to `NULL` will use the bounds of the # available data as the domain tab_2 <- pizzaplace %>% dplyr::filter( type %in% c("chicken", "supreme")) %>% dplyr::group_by(type, size) %>% dplyr::summarize( sold = dplyr::n(), income = sum(price) ) %>% gt(rowname_col = "size") %>% data_color( columns = vars(sold, income), colors = scales::col_numeric( palette = paletteer::paletteer_d( palette = "ggsci::red_material" ) %>% as.character(), domain = NULL ) )


class
ClassDocumentingItsMembersThis class documents its members directly in its own directive
Properties
- another get
- And the other property, documented inside ClassDocumentingItsMembers!
- property_documented_in_class: float get
- A property
Data
- ANOTHER = 1
- And the other, ANOTHER!
- DATA_DOCUMENTED_IN_CLASS: int = 3
- Documentation for the in-class data


| 036:047 Khan | : |
And when it is said to them: "Spend of that with which Allah has provided you," those who disbelieve say to those who believe: "Shall we feed those whom, if Allah willed, He (Himself) would have fed? You are only in a plain error." |
| 036:047 Maulana | : |
And when it is said to them: Spend out of that which Allah has given you, those who disbelieve say to those who believe: Shall we feed him whom, if Allah please, He could feed?  Ye are in naught else than error manifest. |
| 036:047 Rashad | : |
When they are told, "Give from GOD's provisions to you," those who disbelieve say to those who believe, "Why should we give to those whom GOD could feed, if He so willed? You are really far astray." |
| 036:047 Sarwar | : |
When they are told to spend for the cause of God out of what He has provided for them for their sustenance, the disbelievers say to the believers, "Should we feed those whom God has decided to feed? You are in plain error." |
| 036:047 Shakir | : |
And when it is said to them: Spend out of what Allah has given you, those who disbelieve say to those who believe: Shall we feed him whom, if Allah please, He could feed? You are in naught but clear error. |
| 036:047 Sherali | : |
And when it is said to them, 'Spend out of that which ALLAH has given you,' those who disbelieve say to those who believe, 'Shall we feed him whom ALLAH would have fed, if HE had so willed? You are but in manifest error.' |
| 036:047 Yusufali | : |
And when they are told, "Spend ye of (the bounties) with which Allah has provided you," the Unbelievers say to those who believe: "Shall we then feed those whom, if Allah had so willed, He would have fed, (Himself)?-  |
Concepts/Themes Covered: أركان الإسلام > الزكاة والصدقات Pillars of Islam> Due Alms and Charities تنظيم العلاقات المالية > إنفاقها Organizing Financial Relationships>Its Expenditure تنظيم العلاقات المالية > الزكاة Organizing Financial Relationships>Due Alms
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


|
|
Public Member Functions | |
| SizeProber (const Channel &s, Channel &d) | |
| virtual void | clear () |
| Called before processing each segment. Compare with init(), which is called once for each image. More... | |
| virtual void | visit (int i, int j) |
| Visiting a single pixel when not coming from any direction. More... | |
| virtual bool | isVisited (int i, int j) const |
| Experimental. | |
| virtual void | update (int i, int j) |
| Application dependent operation performed in each segment location (i,j). | |
| virtual bool | isValidSegment (int i, int j) const |
| Application dependent, to be redefined. Assumes checked coordinates. More... | |
| Public Member Functions inherited from SegmentProber< int, int, SegmentProberConf< int, int > > | |
| SegmentProber (const Channel &s) | |
| SegmentProber (const Channel &s, Channel &d) | |
| void | setDst (Channel &d) |
| Set new target channel. Needed in multichannel operations. | |
| void | setParams (const SegmentProberConf< int, int > &conf) |
| virtual void | init () |
| Fills the segment having intensity between min and max. More... | |
| void | scan () |
| A convenience function for traversing a whole image. More... | |
| void | probe (int i, int j) |
| Start probing. | |
| bool | isValidPos (int i, int j) const |
| Returns isValidSegment(i,j) and !isVisited(i,j). | |
Public Attributes | |
| size_t | size |
| Public Attributes inherited from SegmentProber< int, int, SegmentProberConf< int, int > > | |
| conf_t | conf |
| const Channel & | src |
| Channel * | dst |
| CoordinateHandler2D | handler |
Additional Inherited Members | |
| Public Types inherited from SegmentProber< int, int, SegmentProberConf< int, int > > | |
| typedef int | src_t |
| typedef int | dst_t |
| typedef SegmentProberConf< int, int > | conf_t |
| Protected Member Functions inherited from SegmentProber< int, int, SegmentProberConf< int, int > > | |
| virtual bool | isValidMove (int i0, int j0, int i, int j) const |
| Application dependent, to be redefined. Note: assumes checked coordinates. More... | |
| bool | move (int &i, int &j, int di, int dj) |
| Try to move; change coords in success, else keep them intact. | |
| void | probe4 (int i, int j) |
| A semi-recursive approach that turns the 2D recursion to 1D traversal + 1D recursion. More... | |
|
inlinevirtual |
Called before processing each segment. Compare with init(), which is called once for each image.
Application dependent initialisation for statistics updated with update(int i, int j) function.
Reimplemented from SegmentProber< int, int, SegmentProberConf< int, int > >.
|
inlinevirtual |
Application dependent, to be redefined. Assumes checked coordinates.
Determines if the current position is within a segment. The criterion of "segment" depends on the application.
Note: does not check coordinates, assumes them to be checked by the calling scope.
Implements SegmentProber< int, int, SegmentProberConf< int, int > >.
|
inlinevirtual |
Visiting a single pixel when not coming from any direction.
Visiting means
| i0 | - current i coordinate (always valid) |
| j0 | - current j coordinate (always valid) |
Mark visited
Reimplemented from SegmentProber< int, int, SegmentProberConf< int, int > >.


Welcome {{ uName }}!
{{ email }} | {{ flatNumber }} | IP: {{ ip }}
View Apartment Expenses
Year:
20{{ 18+n }}
Month:
{{ n }}
↓Download maintanance receipt
Logout


WAKE UP! I will display after a button is clicked
GO TO BED! I will display after a button is clicked


The "spry:choose" construct provides the functional equivalent to a case statement, or an if/else if/else construct. To create an "spry:choose" structure, add an "spry:choose" attribute to an element. Next, add one or more child elements with "spry:when" attributes on them. The value of an "spry:when" attribute should be a JavaScript expression that returns a zero or non-zero value.. To make a default case, just in case all of the JS expressions for each spry:when attribute returns zero/false, add an element with an "spry:default" attribute. The "spry:default" attribute doesn't require a value, but XHTML states that all attributes must have a value, so we use the convention of setting the value of the attribute equal to its name.
The region processing engine will evaluate the "spry:when" attribute of each node in the order they are listed under their parent element. The "spry:default" element is always evaluated last, and only if no "spry:when" expression returned a non-zero value.
spry:choose constructs must be within a spry:region or spry:detailregion.
spry:choose spry:when="javascript expression" spry:default="sprydefault"

{@path}

Path was not defined.

Unexpected value for path!

spry:Content does a Inner HTML replacement of the existing content with the content specified in the attribute. This attribute is used for javascript degradation reasons. The existing content is displayed in non-scripting environments and the spry:content data is used when javascript is enabled.
spry:content supports a variety of content. The attribute accepts text, Spry data references or functions.

This is static content

This is static content

spry:default="any value "
spry:default is used with spry:choose and spry:when to set up an if/then construct for displaying content. spry:default is used when all spry:when constructs return false.
spry:default will always be processed last. The placement of spry:default within spry:choose doesn't matter.
spry:default doesn't require a value, but XHTML demands that all attributes have values, so value can be used.
spry:default must be within a spry:region or spry:detailregion.
No specific value is required but some value must be used to follow the rules of XHTML.

{@path}

Path was not defined.

Unexpected value for path!

spry:detailregion="data set name"
This function defines an element as a spry detail region. A spry:detailregion works just like a Spry region but is also regenerated automatically when a listed data set is updated. A spry:detailregion sets up a listener to the listed data sets. All data references must be within a spry:detailregion or a spry:region. A spry:detailregion can be defined on any HTML element that allows Inner HTML writing.
Those tags that cannot accept a spry:detailregion are: COL, COLGROUP, FRAMESET, HTML, IFRAME, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR.
Note: IE 7 has a bug that causes <select> tags that contain a spry:detailregion or spry:region to render incorrectly. It is not recommended that <select> tags be used as regions.
Although the elements listed above cannot be a dynamic region container, they can exist inside a dynamic region container.

spry:even="classname"
spry:even is a behavior that sets a CSS class name to the element when Spry is writing data while the value of currentRow is even. This is commonly used to set alternating row colors or tables or other repeating elements.
If multiple data sets are specified in the region, it will use the first listed. If you want to use other datasets, they need to be specified in the value: spry:even="ds2 classname"
spry:even must be within a spry:region or spry:detailregion.
spry:even takes a CSS class name as a value.
Optional: data set name if the region uses multiple data sets.

This will change the background color of the table row when the currentRow number is even while looping over the
.
The "spry:if" attribute is used to display a page element based on the results of a condition. The value of spry:if is a JavaScript expression that returns zero or non-zero values. A non-zero value returned by the JavaScript expression will result in the element being written to the final output. A zero result will cause the element not to be written to the page.
spry:if attributes must be within a spry:region or spry:detailregion.
spry:if="javascript expression "

{@path}

<select spry:repeatchildren="dsGalleries" id="gallerySelect" onchange="dsGalleries.setCurrentRowNumber(this.selectedIndex);">
<option spry:if="{ds_RowNumber} == {ds_CurrentRowNumber}" selected="selected">{sitename}</option>
<option spry:if="{ds_RowNumber} != {ds_CurrentRowNumber}">{sitename}</option>
</select>
spry:hover="classname"
spry:hover is a behavior that sets a CSS class name when the mouse is over the element that contains the attribute. The class is removed when the mouse moves off of the element.
spry:hover must be within a spry:region or spry:detailregion.
spry:hover takes a CSS class name as a value.

This will change the background color of the table row when the mouse moves over it.
spry:odd="classname"
spry:even is a behavior that sets a CSS class name to the element when Spry is writing data while the value of currentRow is odd. This is commonly used to set alternating row colors or tables or other repeating elements.
If multiple data sets are specified in the region, it will use the first listed. If you want to use other datasets, they need to be specified in the value: spry:odd="ds2 classname"
spry:odd must be within a spry:region or spry:detailregion.
spry:odd takes a CSS class name as a value.
Optional: data set name if the region uses multiple data sets.

This will change the background color of the table row when the currentRow number is odd while looping over the
.
spry:region="data set name(s)"
This function defines an element as a spry region. A Spry region contains data references to be processed by the Spry engine (and any other markup). All data references must be within a spry:region or spry:detailregion. A spry region can only be used on any HTML element that allows Inner HTML writing.
Those tags that cannot accept a spry:region are: COL, COLGROUP, FRAMESET, HTML, IFRAME, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR
Note: IE 7 has a bug that causes <select> tags that contain a spry:detailregion or spry:region to render incorrectly. It is not recommended that <select> tags be used as regions.
Although the elements listed above cannot be a dynamic region container, they can exist inside a dynamic region container.

spry:repeat="data set name"
spry:repeat repeats the tag and children that contains the spry:repeat attribute, looping through the data references for each record of the dataset.

This example will repeat the data reference AND the
 over every record in the data set. This will create a normal ordered list of names.

{dataset::names}

spry:repeatchildren="data set name"
spry:repeatchildren repeats the tags within the tag that contains the spry:repeat attribute, updating data references for each record of the dataset, but does not repeat the tag that contains the attribute..

This creates a standard ordered list of 'name's from the dataset. spry:repeatchildren can be used when more a more flexible layout is needed or when the container tag shouldn't be repeated.

{dataset::name}

spry:select="classname"
spry:select is a behavior that sets a CSS class name to the element when the mouse is over the element that contains the attribute. The class persists on the element until the next click on another spry:select element. This is commonly used to highlight repeating elements.
spry:select must be within a spry:region or spry:detailregion.
spry:select takes a CSS class name as a value.

This will change the background color of the table row when the user clicks on the row and will persist until the user clicks on another row. Then that row will have the class applied.
spry:selectgroup="unique id "
spry:selectgroup works in conjunction with spry:select to allow for multiple selects within a group of elements. This is used to ensure that multiple distinct selectable groups do not interfer with each other.
spry:selectgroup must be within a spry:region or spry:detailregion and must be used with a spry:select attribute.
spry:select takes unique value to distinguish it from other groups. A number or string can be used.

{firstname} {lastname}

{firstname} {lastname}

This code ensures that the items in the respective lists can be selected independently.
spry:setrow="number"
spry:setrow is use to update the current row number of the data set. This in turn causes detailregions to update. This attribute can be used in the same way as the setCurrentRow function:
onclick="ds1.setCurrentRow('{ds_RowID}');
It is common to use a data reference to set the currentRow. If only one data set is defined for the region, and a data reference is used for the vaule, Spry will use that data set value. If multiple data sets are defined for the region, Spry will use the first data set listed in the region attribute, unless another data set is specified in the attribute.
spry:setrow defaults to onClick.
spry:setrow must be within a spry:region or spry:detailregion.
spry:setrow takes a number. This can either be hardcoded or populated with a data reference.

{firstname} {lastname}

spry:setrownumber="number"
spry:setrownumber is used to update the current row number of the data set. This attribute can be used in the same way as the setCurrentRowNumber function:
onclick="ds1.setCurrentRowNumber('{ds_RowID}');
RowID is a unique, non-changing number of a specific row in the data set. RowNumber refers to the number of the row being processed. For example, in a looping construct repeating
, the 3rd row written out is RowNumber 2 (zero based counting system), but the RowID of the data in RowNumber 2 may be anything.
It is common to use a data reference to set the currentRowNumber. If only one data set is defined for the region, and a data reference is used for the vaule, Spry will use that data set value. If multiple data sets are defined for the region, Spry will use the first data set listed in the region attribute, unless another data set is specified in the attribute.
spry:setrownumber defaults to onClick.
spry:setrownumber must be within a spry:region or spry:detailregion.
spry:setrownumber takes a number. This can either be hardcoded or populated with a data reference.

{firstname} {lastname}

{firstname} {lastname}

spry:sort="sortcolumn"
The spry:sort attribute is used to sort the specified column. It's equivalent to ds1.sort("column","toggle)
By default, spry:sort will toggle the sort order. Ascending and Descending can be set as options.
Columns can be set for secondary or tertiary sorting.
If multiple data sets are defined for the region that contains the sort, Spry will use the first data set listed, unless the desired data set is specified in the attribute.
spry:sort must be within a spry:region or spry:detailregion.
sortcolumn
Optional
dataset name - the name of the data set if it is not the first listed in the spry:region or detailregion.
sort order - toggle, ascending or descending. Toggle is none is specified.

Lastname
Firstname

{lastname}
{firstname}

Lastname
Firstname

{lastname}
{firstname}

spry:state="statename"
The spry:state attribute is used to control which content displays while Spry is processing the data. Spry can show different content while the data is loading, when it's ready and if there is an error.
While Spry is processing the data, elements with the "loading" state will show.
When Spry is finished processing, the "ready" state elements will show and the "loading" elements will disappear.
If there is some error in processing the data, only the "error" state elements will show.
spry:state must be within a spry:region or spry:detailregion.
There are 3 built in Spry states:

Loading employee data ...

Failed to load employee data!

{firstname} {lastname}

spry:test is used when you want to limit or filter what gets written out in a spry:repeat loop. Adding a spry:test attribute to an element that contains a spry:repeat or spry:repeatchildren will control which records get written out.
spry:test is different than spry:if because spry:test is only used with a spry:repeat(children). spry:if can be used anywhere within a region.

{@path}

This will only output records where the @path column contains the letter 's'.
spry:when="javascript expression "
spry:when is used with spry:choose and spry:default to set up an if/then construct for displaying content. spry:when constructs are evaluated in the order in which they appear in the code.
The javascript expression in the spry:when should return a zero or non-zero (true/false).
spry:when must be within a spry:region or spry:detailregion.
A javascript expression that returns zero or non-zero.

{@path}

Path was not defined.

Unexpected value for path!

Copyright © 2007. Adobe Systems Incorporated.
All rights reserved.


THE AVENGERS Directed by Jeremiah Chechik Starring Raplh Fiennes, Uma Thurman and Sean Connery.
I heard an awful lot about The Avengers before I saw it. I read all of the incredibly unfavourable reviews and the baggings and the outright witchburnings.  I *had* to see it, however. It was The Avengers, based on one of the absolute best TV shows ever. (Alongside Doctor Who, Star Cops and Blake's 7, incidentally. Let's see them adapt those last two in Hollywood...)
I was surprised. I was very surprised, and to a very large degree I was delighted. First up, however: much of The Avengers is not very good. Sean Connery is downright awful, the editing is jumpy and distracting and the direction and timing flat and off-key. On the other hand, it boasts a wonderful script that delightfully echoes the original (particularly in an early scene between Steed and Mrs Peel driving to DeWynter's estate). Ralph Fiennes, while perhaps a little uncomfortable in such a simple role, generally convinces as secret agent John Steed and Uma Thurman is wonderful as the cat-suited Emma Peel. Some brilliantly surreal scenes and ideas go towards presenting a highly enjoyable movie indeed. True, it's buried under a thin layer of crap, but the quality is in there nonetheless.
Mixed, but highly enjoyable. Particularly the teddy bears.
7.5/10
Grant Watson.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


TNCA gets GO
Renews its lease for the M.A. Chidamabaram stadium for 21 years
by S. DinakarR.S. Ramaswamy, the TNCA secretary, walked into his office sporting a broad smile. After all, he had the Government Order (GO) renewing the lease for the M.A. Chidambaram Stadium — for 21 years — in his hands.
“We now have it. It’s because of team-work,” said the erudite and affable Ramaswamy.
Soon former TNCA secretary K.S. Viswanathan walked in to congratulate Ramaswamy. “All credit to Ramaswamy and his team. They worked tirelessly to get this done. It’s a huge relief for all of us.”
Special mention
Ramaswamy thanked his team and made a special mention of sitting MLA from Omalur in Salem district, S. Vetrivel, who has played at the under-17 level for Tamil Nadu and then represented the Madras University. He has also been a State under-19 selector.
“Vetrivel convinced the Tamil Nadu Chief Minister, Eddapadi K. Palaniswami, how important renewing the lease of the M.A. Chidambaram was,” Ramaswamy said.
When Rupa Gurunath took over as the new TNCA president, she said her first priorities were to get the lease for the M.A. Chidambaram Stadium renewed and then have the I, J, and K stands reopened.
Next target
Now the focus shifts to the unlocking of the three stands ahead of the India-West Indies ODI on December 15.
And the Madras Cricket Club (MCC) will have its role to play. The MCC, whose lease has also been renewed, will first have to pay arrears of nearly ₹11 crore to the State Government.
Then, the MCC will need to approach the Corporation for permission for the demolition of its gym to create the needed setback space between the MCC and the ‘K’ stand.
Once that is given, the TNCA will approach the High Court for the reopening of the three stands.
Getting job done
The quietly efficient Ramaswamy said, “Once we get the go ahead from the Court, we can get the job done. We need around four days for demolition and three days for cleaning the stands.”
He added with guarded optimism, “If the demolition is complete by December 10, we can get the three stands ready for the public before December 15.”
A full house at Chepauk will be a wonderful sight.


This is me, Olga, from Moscow!Remembered me? How are you?
Still got no message from you! I miss youactually! When we will go out for a date?
I’ll be waiting for your suggestions and I hope that our meeting will happen assoon as possible!
Please answer me.