Task Resource#
The Task resource provides a set of REST endpoints that give Presto servers the ability to communicate about tasks and task output. This isn’t a service that will be used by end users, but it supports the execution of queries on a Presto installation.
- GET /v1/task
Returns information about all tasks known to a Presto server.
Note that the output of a call to
/v1/task
can be quite large. If you execute this against a busy Presto server the response received will include a listing of every task known to that server along with detailed statistics about operators and drivers.The following example response shows a trivial task response that has been truncated to fit this manual. A real response from a busy Presto server would generate pages and pages of output. Here there is a
taskId
for a task which is in theCANCELED
state.Example response:
[ { "taskId" : "20131222_183944_00011_dk5x2.1.0", "version" :<PHONE_NUMBER>854775807, "state" : "CANCELED", "self" : "unknown", "lastHeartbeat" : "2013-12-22T13:54:46.566-05:00", "outputBuffers" : { "state" : "FINISHED", "masterSequenceId" : 0, "pagesAdded" : 0, "buffers" : [ ] }, "noMoreSplits" : [ ], "stats" : { "createTime" : "2013-12-22T13:54:46.566-05:00", "elapsedTime" : "0.00ns", "queuedTime" : "92.00us", "totalDrivers" : 0, "queuedDrivers" : 0, "runningDrivers" : 0, "completedDrivers" : 0, "memoryReservation" : "0B", "totalScheduledTime" : "0.00ns", "totalCpuTime" : "0.00ns", "totalBlockedTime" : "0.00ns", "rawInputDataSize" : "0B", "rawInputPositions" : 0, "processedInputDataSize" : "0B", "processedInputPositions" : 0, "outputDataSize" : "0B", "outputPositions" : 0, "pipelines" : [ ] }, "failures" : [ ], "outputs" : { } }]
- POST /v1/task/{taskId}
- DELETE /v1/task/{taskId}
Deletes a given task from a Presto server.
- GET /v1/task/{taskId}
Retrieves information about a specific task by
taskId
.The following example lists the output of a task. It contains the following high-level sections:
outputBuffers
noMoreSplits
stats
failures
outputs
This is the same output that is also present in the response from the Query resource which lists all of the stages and tasks involved in a particular query. This is call is used by Presto to coordinate a queries.

- DELETE /v1/task/{taskId}/results/{outputId}
This service is used by Presto to delete task output.


BitShares XT Wallet
Username:
unknown
Balance:
unknown
Transfer
Transaction History
Block Explorer
Address Book
Transfer
Pay to:
Amount:
Memo:
Transaction History
Date
Type
Address
Amount


first solvethe problem
then write the code.
About
Mission-driven developer with a passion for thoughtful UI/UX design, and robotics technology.
I’ve always sought out opportunities and challenges that are meaningful to me. Although my professional path has taken many twists and turns — from call operator, to robotics developer, to web developer, to game designer — I've never stopped engaging my passion to help others and solve problems.
As a game designer, I enjoy using my obsessive attention to detail, my unequivocal love for making things, and my mission-driven work ethic to literally change the world. That's why I’m excited to make a big impact with small act.
I want to make things that make a difference.
Experience
Android Application and Game Development
Developed Game
- Escape Jump
- Dandibiyo
- Nepal Builder
Stack: BuildBox / Unity3d / Phaser / Cocos2D JS
Community based engineering college undertaken by Bhaktapur Municipality
Internship for Data Management
- Data Entry
- Database Maintainance
Projects
Skills
Front End
Back End
Javascript
Other
Awards
Bode Higher Secondary School | May 2011
- Awarded by Maya Devi Smriti Puraskar 2067.
Education
Bode-1, BKT | 2004 - 2011
- School Leaving Certificate Government of Nepal


|
My Project
|
#include <aws.h>
Public Attributes | |
| struct nn_fsm | fsm |
| int | state |
| struct nn_epbase * | epbase |
| struct nn_usock | usock |
| struct nn_usock * | listener |
| struct nn_fsm_owner | listener_owner |
| struct nn_sws | sws |
| struct nn_fsm_event | accepted |
| struct nn_fsm_event | done |
| struct nn_list_item | item |
| struct nn_fsm_event nn_aws::accepted |
| struct nn_fsm_event nn_aws::done |
| struct nn_epbase* nn_aws::epbase |
| struct nn_fsm nn_aws::fsm |
| struct nn_list_item nn_aws::item |
| struct nn_usock* nn_aws::listener |
| struct nn_fsm_owner nn_aws::listener_owner |
| int nn_aws::state |
| struct nn_sws nn_aws::sws |
| struct nn_usock nn_aws::usock |


I am a Responsive Designer & Developer
who's passionate about creating meaningful visuals with the best user
experience. When I'm not working, pursuing side projects
or learning new skills, I can be found knitting,
tending my garden and exploring on foot.
I was born & raised in Florida and have traveled around the United States as well as in China.
Exploring how other people live their daily lives is fascinating to me. I like to travel but really
I love to stay awhile in new places and experience all they have to offer.
My Passion: Crafting! Making things with my hands has always been my favorite way to unwind. It's like moving meditation.
Anything from painting to knitting and from to baking to pottery. I've made pretty much every gift for my family since I can remember!
Fun Fact: I can wiggle my ears - and not just when I smile! I can even move them one at a time. When I was a kid I thought everyone could
and it wasn't until highschool did I learn that I have freakish ear muscle control. I can also 'pop' them whenever I need to.


| HYTOOL Function Reference |
Computes steady discharge to a tunnel below a constant head boundary
q = lei_std( l, T, r0 ) T = Transmissivity l = Distance to the constant head boundary r0 = radius of the tunnel (or well)
Computes the head field and discharge around a large diameter tunnel located close to a constant head boundary with the solution of Lei (1999). As compared with the more standard Dupuit's equation for a source line, it is more accurate because it imposes the constant head precisely on the face of the tunnel. The usual solution induce a slight shift that is negligible if the well is sufficiently far away from the boundary or if has a sufficiently small diameter. The function plots the hydraulic head map. Reference: Lei S. (1999) An analytical solution for steady flow into a tunnel. Groundwater: Vol 37, No. 1, pp. 23-25
lei_std(100,1e-2,10)
thc_std Published output in the Help browser showdemo lei_std
| Hytool |
© 1998-2017 Philppe Renard and Co. Terms of Use Acknowledgments


Worked on rebranding the Texas Prison Museum. Redeveloped a logo identity and visual language of the museum. After developing its logo and visual language I applied it into different visual systems. The Texas Prison Museum features numerous exhibits about the history of the Texas Prison Museum.
I Redesigned the Texas Prison logo to have a prison-like feel. The Previous logo features a blue chain and ball chained on bold type. I wanted to implement jail bars into the logo and represent the jail bars into a 'T' symbol. The 'T' symbol also represents the first letter of the Texas Prison Museum. I reversed the 'T' and combined the two together in order to create a cage effect.


| vec_cast {vctrs} | R Documentation |
vec_cast()
provides directional conversions from one type of
vector to another. Along with vec_ptype2()
, this generic forms
the foundation of type coercions in vctrs.
vec_cast(x, to, ..., x_arg = "", to_arg = "") vec_cast_common(..., .to = NULL) ## S3 method for class 'logical' vec_cast(x, to, ...) ## S3 method for class 'integer' vec_cast(x, to, ...) ## S3 method for class 'double' vec_cast(x, to, ...) ## S3 method for class 'complex' vec_cast(x, to, ...) ## S3 method for class 'raw' vec_cast(x, to, ...) ## S3 method for class 'character' vec_cast(x, to, ...) ## S3 method for class 'list' vec_cast(x, to, ...)
x |
Vectors to cast. |
to, .to |
Type to cast to. If |
... |
For |
x_arg, to_arg |
Argument names for |
A vector the same length as x
with the same type as to
,
or an error if the cast is not possible. An error is generated if
information is lost when casting between compatible types (i.e. when
there is no 1-to-1 mapping for a specific value).
For an overview of how these generics work and their roles in vctrs,
see ?theory-faq-coercion
.
For an example of implementing coercion methods for simple vectors,
see ?howto-faq-coercion
.
For an example of implementing coercion methods for data frame
subclasses, see
?howto-faq-coercion-data-frame
.
For a tutorial about implementing vctrs classes from scratch, see
vignette("s3-vector")
.
vec_cast_common()
Some functions enable a base-class fallback for
vec_cast_common()
. In that case the inputs are deemed compatible
when they have the same base type and inherit from
the same base class.
Call stop_incompatible_cast()
when you determine from the
attributes that an input can't be cast to the target type.
# x is a double, but no information is lost vec_cast(1, integer()) # When information is lost the cast fails try(vec_cast(c(1, 1.5), integer())) try(vec_cast(c(1, 2), logical())) # You can suppress this error and get the partial results allow_lossy_cast(vec_cast(c(1, 1.5), integer())) allow_lossy_cast(vec_cast(c(1, 2), logical())) # By default this suppress all lossy cast errors without # distinction, but you can be specific about what cast is allowed # by supplying prototypes allow_lossy_cast(vec_cast(c(1, 1.5), integer()), to_ptype = integer()) try(allow_lossy_cast(vec_cast(c(1, 2), logical()), to_ptype = integer())) # No sensible coercion is possible so an error is generated try(vec_cast(1.5, factor("a"))) # Cast to common type vec_cast_common(factor("a"), factor(c("a", "b")))


ras protein activity is essential for T-cell antigen receptor signal transduction.
Abstract
In a Jurkat cell model of T-cell activation an interleukin-2 promoter/reporter gene construct was activated by antigen receptor agonism in combination with the lymphokine interleukin-1. Antigen receptor signals could be mimicked by suboptimal activation of protein kinase C (PKC) with phorbol esters in combination with calcium mobilization by an ionophore. In cotransfection experiments, oncogenic rats obviated the need for PKC stimulation but did not replace either the calcium signal or interleukin-1. Activated ras expression also replaced the requirement for PKC stimulation in activation of the T-cell transcription factor NF-AT. A dominant inhibitory ras mutant specifically blocked antigen receptor agonism, indicating that ras activity is required for antigen receptor signaling. In addition, an inhibitor of PKC blocked both activated ras and phorbol ester stimulation, suggesting a role for ras upstream of PKC.


|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Uses of LogMessageCategory in net.floodlightcontroller.core |
|---|
| Classes in net.floodlightcontroller.core with annotations of type LogMessageCategory | |
|---|---|
class |
OFMessageFilterManager
|
| Uses of LogMessageCategory in net.floodlightcontroller.forwarding |
|---|
| Classes in net.floodlightcontroller.forwarding with annotations of type LogMessageCategory | |
|---|---|
class |
Forwarding
|
| Uses of LogMessageCategory in net.floodlightcontroller.linkdiscovery.internal |
|---|
| Classes in net.floodlightcontroller.linkdiscovery.internal with annotations of type LogMessageCategory | |
|---|---|
class |
LinkDiscoveryManager
This class sends out LLDP messages containing the sending switch's datapath id as well as the outgoing port number. |
| Uses of LogMessageCategory in net.floodlightcontroller.packetstreamer |
|---|
| Classes in net.floodlightcontroller.packetstreamer with annotations of type LogMessageCategory | |
|---|---|
class |
PacketStreamerHandler
The PacketStreamer handler class that implements the service APIs. |
class |
PacketStreamerServer
The PacketStreamer Server that brokers the packet streaming service. |
| Uses of LogMessageCategory in net.floodlightcontroller.perfmon |
|---|
| Classes in net.floodlightcontroller.perfmon with annotations of type LogMessageCategory | |
|---|---|
class |
PktInProcessingTime
This class contains a set of buckets (called time buckets as the primarily contain 'times' that are used in a circular way to store information on packet in processing time. |
| Uses of LogMessageCategory in net.floodlightcontroller.routing |
|---|
| Classes in net.floodlightcontroller.routing with annotations of type LogMessageCategory | |
|---|---|
class |
ForwardingBase
Abstract base class for implementing a forwarding module. |
| Uses of LogMessageCategory in net.floodlightcontroller.staticflowentry |
|---|
| Classes in net.floodlightcontroller.staticflowentry with annotations of type LogMessageCategory | |
|---|---|
class |
StaticFlowEntries
Represents static flow entries to be maintained by the controller on the switches. |
class |
StaticFlowEntryPusher
|
| Uses of LogMessageCategory in net.floodlightcontroller.staticflowentry.web |
|---|
| Classes in net.floodlightcontroller.staticflowentry.web with annotations of type LogMessageCategory | |
|---|---|
class |
StaticFlowEntryPusherResource
Pushes a static flow entry to the storage source |
| Uses of LogMessageCategory in net.floodlightcontroller.storage |
|---|
| Classes in net.floodlightcontroller.storage with annotations of type LogMessageCategory | |
|---|---|
class |
AbstractStorageSource
|
| Uses of LogMessageCategory in net.floodlightcontroller.topology |
|---|
| Classes in net.floodlightcontroller.topology with annotations of type LogMessageCategory | |
|---|---|
class |
TopologyInstance
A representation of a network topology. |
class |
TopologyManager
Topology manager is responsible for maintaining the controller's notion of the network graph, as well as implementing tools for finding routes through the topology. |
| Uses of LogMessageCategory in net.floodlightcontroller.topology.original |
|---|
| Classes in net.floodlightcontroller.topology.original with annotations of type LogMessageCategory | |
|---|---|
class |
TopologyManager
Topology manager is responsible for maintaining the controller's notion of the network graph, as well as implementing tools for finding routes through the topology. |
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


Rich's Coffee
Coffee
Equipment
About
All Products
All Products
Coffee
Equipment
Today's Deals
Espresso
Blends
Decaffeinated
Iced Coffee
Brew Supplies
Coffee Makers
Grinders
Mugs
Energy Espresso
12oz ($14.50)
36oz ($28.00)
Add To Cart
Breakfast Espresso
12oz ($12.75)
36oz ($25.00)
Add To Cart
Guatamala Blend
12oz ($13.50)
36oz ($27.00)
Add To Cart
Vanilla Blend
12oz ($12.50)
36oz ($25.00)
Add To Cart
Decaf Cuban Roast
12oz ($14.25)
36oz ($28.50)
Add To Cart
Decaf Hazelnut Roast
12oz ($12.00)
36oz ($24.00)
Add To Cart
Iced Vanilla
12oz ($12.50)
36oz ($25.00)
Add To Cart
Espresso Cold Brew
12oz ($13.00)
36oz ($26.00)
Add To Cart
Classic Scale
$30.00
Add To Cart
Copper Kettle
$50.00
Add To Cart
Barista Grinder
$250.00
Add To Cart
Barista Super Grinder
$450.00
Add To Cart
Coffee Maker
$75.00
Add To Cart
Grande Coffee Maker
$90.00
Add To Cart
Small Mug
$12.00
Add To Cart
Large Mug
$15.00
Add To Cart
Coffee Sampler Set
$12.00
Add To Cart
Colombian Blend
12oz ($9.00)
36oz ($18.00)
Add To Cart
Capuccino Mix
$12.00
Add To Cart


Login
Loading...
RUN
Run in 17ms (OK)
WRAP OUTPUT
Please enable JavaScript for using this console
3. Strings
Back
3/14
Next
Hey,
Hey,
This game is not supported on this browser


Provides a default value to a specified attribute that determines the symbology for a given layer. If you have symbology set based on a specific field in your target feature layers, this will provide it with a value so that newly added features using this tool appear correctly on the map. Note: if the attribute/value does not exist, the tool will default to using the first option for each coded value field on the feature layer.


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import config.ConfigDecorator @import tags._ @this() @(taxSummariesUrl: String)(implicit messages: play.api.i18n.Messages) @card( id = Some("ats-card"), url = Some(taxSummariesUrl), gaAction = Some("Tax Summaries"), gaLabel = Some("Annual Tax Summary"), heading = messages("card.ats.heading"), headingTag = "h3", bodyContent = Some(Html("
" + messages("card.ats.text") + "
")) ) { }


--- layout: blog i18n-link: index lang: en locale: en pagination: enabled: true locale: en h1: "Some SEO theory and DIY tricks" ---
The idea of the blog is to talk about running a website yourself and optimizing it for search engines. I hope to make things clear but refrain from unnecessary simplifications so that the information doesn’t lose its practical sense. It’s not about promoting your website on social networks but about mutual understanding with search bots and ranking algorithms. Dedicated to all who:


Rishabh Kumar
UI Design. UX Design. Video Production.
A design evangelist. Interested in human-computer interaction, tangible interfaces, and excited to work in gamification.
A design evangelist. Interested in human-computer interaction, tangible interfaces, and excited to work in gamification.


Pay It Forward
No requests found…
No forwards found…
No leaderboard yet…
This app demoes the use of the Kinvey JavaScript Library. This app was used as official app for the #RubyRiot event.


Something went wrong
We’re sorry! Our server is acting up right now. Please try again soon.
Internal Server Error (500)


--- --- {% include fragment-pagebegin.html %}
Publish Box goes here
{% include fragment-quest-navtabs.html type='{{[type]}}' id='{{[id]}}' active='form' %}This is a simplified preview of the Questionnaire resource.
For a fully functional rendering, please consult the list of SDC Implementations, namely those implementing the Form Designer or Form Filler actor.


|
Properties
|
| block |
boolean | string |
oneTime |
false |
Expands the button to fill a whole block. You can use it both as a simple attribute (
block ) or binding aurelia way (
block="true" or block.bind="some_boolean_value" ).
|
| bs-type |
string |
oneTime |
primary |
The type bootstrap type of button, contextual values of bootstrap,
primary ,
secondary ,
info ,
success ,
warning ,
danger ,
light , and
dark
PS: Only in the button element we had to name this property
bs-type owing to the existence of
type attribute for button element in html.
|
| class |
string |
oneWay |
|
Applies the your custom css class on alert |
| disabled |
boolean | string |
oneWay |
false |
Setting this to true will disable the button. You can use it both as a simple attribute (
disabled ) or binding aurelia way (
disabled="true" or disabled.bind="some_boolean_value" ).
|
| id |
string |
oneTime |
|
Since the
abt-button is a
containerless component, we assign the
id to the actual
button underneath.
|
| outline |
boolean | string |
oneTime |
false |
Renders the button as outlined. You can use it both as a simple attribute (
outline ) or binding aurelia way (
outline="true" or outline.bind="some_boolean_value" ).
|
| size |
string |
oneTime |
md |
Indicates the size for abt-button, values can be 'sm', 'md', and 'lg' |
| style |
string |
oneWay |
|
Css style attributes that you want to apply on the component. |
| type |
string |
oneTime |
button |
The traditional
type attribute of html
button element,
button ,
submit , and
reset , are the acceptable values.
|
|
Events
|
| click |
Promise |
call (event, target) |
|
This event fires immediately when you click the
abt-button .
-
PS:
The
abt-button has an extra
slot named
loading
, if your
click event returns a promise, the
loading slot you've provided will be rendered until the promise resolves.
-
PS: The
abt-button will remain disabled also, until the promise resolves.
|
|
Extra Slots
|
|
loading
|
You can use this extra slot to show some loading indicator to visualize that some background work is in progress.
|


#include <system.h>
Public Attributes | |
| uchar | charCode |
| uchar | scanCode |
Definition at line 193 of file system.h.
|
|
This is the character code. Its value is non-zero if the key has a standard code, like ASCII characters. The value is zero if the key falls in the special key class, like arrows, page up, etc. |
|
|
This is the scan code. Its value is non-zero if the key falls in the special key class. The value is zero if the key is an ASCII character. |


my simple no nonsense header1
Help Library Manager supports downloading updated content from the MSDN Online library and installing it locally for viewing when you are offline. Using HLM you can check to see if any of your local content has updates available. You can also download the updated content for offline viewing. Note: This version does not support getting updated content from sources that do not have content available on MSDN Online.
Because content can be shared across products, you cannot get updates for a subset of the Microsoft documentation you have installed locally. All available updates to your local content will be downloaded and installed. For additional information, see the Overview of Help Library Manager.
Using this feature requires an Internet connection.
Use the following instructions to find and install updates for your offline help content.
Launch Help Library Manager from the "Help" menu in your software application. Click "Help" > "Manage Help settings".
Click "Check for updates". The next screen shows content you have installed locally.
HLM will check for updates and display the update status for your local help content. This might take a few moments.
The status area at the bottom of the screen shows the total size of the updates. Click the "Update" button at the bottom of the screen to download and install the updates.
HLM will install the content and periodically report on its progress.
my simple no nonsense header2
Help Library Manager supports downloading updated content from the MSDN Online library and installing it locally for viewing when you are offline. Using HLM you can check to see if any of your local content has updates available. You can also download the updated content for offline viewing. Note: This version does not support getting updated content from sources that do not have content available on MSDN Online.
Because content can be shared across products, you cannot get updates for a subset of the Microsoft documentation you have installed locally. All available updates to your local content will be downloaded and installed. For additional information, see the Overview of Help Library Manager.
Using this feature requires an Internet connection.
Use the following instructions to find and install updates for your offline help content.
Launch Help Library Manager from the "Help" menu in your software application. Click "Help" > "Manage Help settings".
Click "Check for updates". The next screen shows content you have installed locally.
HLM will check for updates and display the update status for your local help content. This might take a few moments.
The status area at the bottom of the screen shows the total size of the updates. Click the "Update" button at the bottom of the screen to download and install the updates.
HLM will install the content and periodically report on its progress.


Mix v1.3.4 Mix.Shell.Process
Mix shell that uses the current process mailbox for communication.
This module provides a Mix shell implementation that uses the current process mailbox for communication instead of IO.
As an example, when Mix.shell.info("hello")
is called,
the following message will be sent to the calling process:
{:mix_shell, :info, ["hello"]}
This is mainly useful in tests, allowing us to assert
if given messages were received or not instead of performing
checks on some captured IO. Since we need to guarantee a clean
slate between tests, there is also a flush/1
function
responsible for flushing all :mix_shell
related messages
from the process inbox.
Examples
Mix.shell.info "hello"
receive do {:mix_shell, :info, [msg]} -> msg end
#=> "hello"
send self(), {:mix_shell_input, :prompt, "Pretty cool"}
Mix.shell.prompt?("How cool was that?!")
#=> "Pretty cool"
Summary
Functions
Executes the given command and forwards its messages to the current process
Forwards the message to the current process
Flushes all :mix_shell
and :mix_shell_input
messages from the current process
Forwards the message to the current process
Prints the currently running application if it was not printed yet
Forwards the message to the current process
Forwards the message to the current process
Functions
Executes the given command and forwards its messages to the current process.
Flushes all :mix_shell
and :mix_shell_input
messages from the current process.
If a callback is given, it is invoked for each received message.
Examples
flush &IO.inspect(&1)
Forwards the message to the current process.
It also checks the inbox for an input message matching:
{:mix_shell_input, :prompt, value}
If one does not exist, it will abort since there was no shell
process inputs given. value
must be a string.
Examples
The following will answer with "Meg"
to the prompt
"What's your name?"
:
# The response is sent before calling prompt/1 so that prompt/1 can read it
send self(), {:mix_shell_input, :prompt, "Meg"}
Mix.shell.prompt("What's your name?")
Forwards the message to the current process.
It also checks the inbox for an input message matching:
{:mix_shell_input, :yes?, value}
If one does not exist, it will abort since there was no shell
process inputs given. value
must be true
or false
.
Example
# Send the response to self() first so that yes?/1 will be able to read it
send self(), {:mix_shell_input, :yes?, true}
Mix.shell.yes?("Are you sure you want to continue?")


Giadi1833.github.io
Cembre B131-Uc Bedienungsanleitung. Cembre B135-UC Operation And Maintenance Manual. View and Download Cembre B135-UC operation and maintenance manual online. B135-UC Power Tool pdf manual download. Also for: B135-uca. View and Download Cembre HT81-U operation and maintenance manual online. HYDRAULIC CRIMPING TOOL. HT81-U Power Tool pdf manual download.
Cembre HT81-U Operation And Maintenance Manual.


DELI: A DElivery context LIbrary for CC/PP and UAProf
Mark H. Butler<EMAIL_ADDRESS>First published as HP Labs Technical Report HPL-2001-260 REVISED VERSION 16th April 2008
Different web-enabled devices have different input, output, hardware, software, network and browser capabilities. In order for a web server or web-based application to provide optimized content to different clients it requires a description of the capabilities of the client known as the delivery context. Two compatible standards have been created for describing delivery context: Composite Capabilities / Preferences Profile (CC/PP) created by the W3C and User Agent Profile (UAProf) created by the Open Mobile Alliance, formerly known as the WAP Forum. DELI is an open-source library developed at HP Labs that allows Java servlets to resolve HTTP requests containing delivery context information from CC/PP or UAProf capable devices and query the resolved profile. It provides support for legacy devices so that the proprietary delivery context descriptions currently used by applications can be replaced by standardised CC/PP descriptions. DELI also includes a validator to check UAProf profiles, and tools to locate newly published profiles using Google, validate those profiles, and do large scale analysis on them.
The DELI work at HP Labs finished in 2002.
Device Independence, Composite Capabilities / Preferences Profile (CC/PP), Resource Description Framework (RDF), Wireless Access Protocol (WAP), User Agent Profile (UAProf)
Different web-enabled devices have different input, output, hardware, software, network and browser capabilities. In order for a web server or web-based application to provide optimized content to different clients it requires a description of the client capabilities. Recently compatible standards have been created for describing delivery context based on the Resource Description Framework (RDF) [1]: Composite Capabilities / Preferences Profile (CC/PP) [2] created by the W3C and User Agent Profile (UAProf) created by the Open Mobile Alliance, formerly known as the WAP Forum [3]. At the time of writing, CC/PP has not been used particularly widely, but there are approximately 1200 published UAProf profiles.
One of the design aims of these standards was the efficient delivery of delivery context to the server even via low bandwidth wireless networks. This is achieved by the use of profile references and profile differences that work as follows: instead of sending an entire profile with every request a client only sends a reference to a profile, stored on a third device known as a profile repository, along with a list of overrides specific to this particular client. The process of interpreting the profile references and differences is known as profile resolution.
DELI is an open-source library developed at HP Labs that allows Java servlets to resolve HTTP requests containing CC/PP or UAProf information and query the resolved profile. Development on DELI officially finished in 2002, but there has been some further unofficial development since then. This report describes how programmers can create delivery context-aware servlets using DELI. It also details some observations made during implemention and discusses their implications for CC/PP. The DELI library and accompanying test-harnesses discussed here are available open-source. To obtain a copy of the DELI source code, please refer to the DELI web-site [4].
The Resource Description Framework (RDF) is the W3C foundation for processing metadata i.e. information about information. It aims to provide interoperability between applications that exchange machine-understandable information on the Web. RDF is currently described in two documents: the RDF Model and Syntax Specification [5] and RDF Schema Specification 1.0 [6].
Essentially RDF models consist of a collection of statements about resources. A resource is anything named by a URI plus an optional anchor ID e.g. in
http://www.wapforum.org/profiles/UAPROF/ccppschema-20010430#HardwarePlatform
the URI is everying before the hash and the anchor ID is everying after the hash. An RDF statement comprises of a specific resource together with a named property plus the value of that property for that resource. These three individual parts of a statement are called, respectively, the subject, the predicate, and the object. The object of a statement can be another resource or it can be a literal i.e. a simple string or other primitive datatype defined by XML. An RDF statement is shown in Figure 1.
RDF can be serialized using XML and CC/PP and UAProf profiles are normally written in this form. However viewing profiles in serialized form is deceptive as the underlying RDF model has a graph structure. In order to better understand this, it is suggested that the reader investigates the W3C RDF Validation Service [7].
It is important to note there are many possible serialisations of a single RDF model. This means that parsing RDF models written in the XML serialisation requires additional processing beyond that provided by an XML parser. Fortunately there are a number of RDF frameworks now available that automatically take XML serialisations of RDF and construct an RDF model. DELI currently uses Jena [8], an RDF Framework developed at HP Labs. For more details of using Jena to process RDF see Brian McBride’s paper on Jena [9] and the HP Labs Semantic Web activity homepage [10].
A CC/PP profile is a description of device capabilities and user preferences that can be used to guide the adaptation of content presented to that device. CC/PP is described in three documents: CC/PP Structure and Vocabularies [11], CC/PP Requirements and Architecture [12] and CC/PP Terminology and Abbreviations [13]. A proposed (and largely deprecated) protocol for CC/PP is described in two documents: CC/PP exchange protocol using HTTP extension framework [14] and Content Negotiation Header in HTTP Scenarios [15]. The protocol work has been deprecated because the CC/PP Working Group was not chartered by the W3C to do protocol work. However these documents formed the basis for the UAProf protocol work to be discussed in the next section.
A CC/PP profile is broadly constructed as a two level hierarchy: a profile has a number of components and each component has a number of attributes. The attributes of a component may be included directly in a profile document, or may be specified by reference to a default profile that may be stored separately and accessed via a URL. CC/PP distinguishes between default and non-default values attributes such that non-default values always takes precedence.
Although a CC/PP profile is a two level hierarchy, it is commonly represented using an XML serialisation of an RDF model. Crucially the underlying RDF model describing a profile is more complicated than a two level hierarchy. This can be demonstrated by processing a profile using the W3C RDF validation service referenced in the previous section. Some examples of these complexities are as follows: First, simply giving a component a standard name (e.g. HardwarePlatform) is not sufficient to distinguish it as a particular component. In addition it must have an rdf:type property that indicates it is an instance of a particular component type in a particular namespace as shown in Figure 2.
Second, default values are represented by a component containing a second component referenced via a ccpp:Defaults property as shown in Figure 3. Note this Figure shows a profile with multiple values for the same attribute. Using the resolution rules, SoundOutputCapable will be resolved to No.
Third, complex (multiple-value) attributes are represented by an RDF construct known as an anonymous node. The anonymous node has an associated rdf:type property that indicates whether it is an unordered (Bag) list or an ordered (Seq) list. It also possesses several numbered properties that point to the multiple attribute values as shown in Figure 4.
As an approved protocol does not yet exist for CC/PP, it has not been possible to implement a CC/PP protocol in DELI. However the DELI architecture has been designed so that it will be easy to add such a protocol in the future. In addition DELI was designed specifically so it can process many different CC/PP vocabularies. This is essential as CC/PP does not propose any vocabularies for describing device capabilities instead only providing an underlying structure for such vocabularies.
The UAProf specification[16] is based on the CC/PP specification. Like CC/PP, a UAProf profile is a two level hierarchy composed of components and attributes. Unlike CC/PP, the UAProf specification also proposes a vocabulary – a specific set of components and attributes – to describe the next generation of WAP phones.
The specification also describes two protocols for transmitting the profile from the client to the server. Currently DELI only supports one of the UAProf protocols. This is because the other UAProf protocol, based on HTTPex and WSP, is intended to be used for client to gateway communication rather than client to server communication. DELI attempts to provide server rather than gateway support so this protocol is beyond the scope of the current implementation. In addition UAProf can also be used when documents are “pushed” from the server to the client without the client issuing a request. DELI does not support the push environment at present. Finally the UAProf specification describes a binary encoding of UAProf profiles. Binary encoding and decoding of profiles is typically performed by the gateway so this is also beyond the scope of DELI.
Currently profiles using the UAProf vocabulary consist of six components: HardwarePlatform, SoftwarePlatform, NetworkCharacteristics, BrowserUA, WapCharacteristics and PushCharacteristics. These components contain attributes. In DELI each attribute has a distinct name and has an associated collection type, attribute type and resolution rule. In UAProf there are three collection types:
Simple contains a single value e.g. ColorCapable in HardwarePlatform. Note the UAProf specification does not give a name to single value attributes so the term Simple has been adopted from the CC/PP specification.
Bag contains multiple unordered values e.g. BluetoothProfile in the HardwarePlatform component.
Seq contains multiple ordered values e.g. Ccpp-AcceptLanguage in the SoftwarePlatform component.
In addition attributes can have one of four attribute types:
String e.g. BrowserName in BrowserUA.
Boolean e.g. ColorCapable in HardwarePlatform.
Number is a positive integer e.g. BitsPerPixel in HardwarePlatform.
Dimension is a pair of positive integers e.g. ScreenSize in HardwarePlatform.
Finally attributes are associated with a resolution rule:
Locked indicates the final value of an attribute is the first occurrence of the attribute outside the default description block.
Override indicates the final value of an attribute is the last occurrence of the attribute outside the default description block.
Append indicates the final value of the attribute is the list of all occurrences of the attribute outside the default description block.
DELI can read UAProf schema files such as ccppschema-20010330.rdfs. found in the config/vocab directory. Note these files are derived from schemas obtained from the OMA website but have been corrected for a number of RDF errors [17].
As mentioned previously DELI only implements one of the UAProf protocols: transport via W-HTTP (Wireless profiled HTTP). An example W-HTTP request using this protocol is shown below:
GET /ccpp/html/ HTTP/1.1
Host: localhost
x-wap-profile:"http://localhost:8080/ccpp/profiles/test09defaults.rdf",
"1-Rb0sq/nuUFQU75vAjKyiHw=="
x-wap-profile-diff:1;<?xml version="1.0"?>
<rdf:RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:prf="http://www.wapforum.org/profiles/UAPROF/ccppschema-20010430#">
<rdf:Description rdf:ID="MyDeviceProfile">
<prf:component>
<rdf:Description rdf:ID="HardwarePlatform">
<rdf:type
rdf:resource="http://www.wapforum.org/profiles/UAPROF/ccppschema-
20010426#HardwarePlatform"/>
<prf:BitsPerPixel>16</prf:BitsPerPixel>
</rdf:Description>
</prf:component>
</rdf:Description>
</rdf:RDF>
The first two lines of this request are standard HTTP and describe the resource that is being requested by the client, http://localhost/ccpp/html, and the method being used to make the request, GET, and the protocol being used HTTP/1.1. The remaining lines of the request describe the device delivery context. This is specified using a profile reference and a profile-diff. The profile is referenced via the x-wap-profile line and has the URI
http://localhost:8080/ccpp/profiles/test09defaults.rdf.
After the profile reference, there is a value 1-Rb0sq/nuUFQU75vAjKyiHw== known as a profile-diff digest. The first part of the profile-diff-digest, 1-, is the profile-diff sequence number. This is used to indicate the order of the profile-diffs and to indicate which profile-diff the profile-diff digest refers to. The remainder of the profile-diff digest is generated by applying the MD5 message digest algorithm[18] and Base64 algorithm[19] to the corresponding profile-diff. The MD5 algorithm takes as input a message of arbitary length and produces as output a 128-bit “fingerprint” or “message-digest” of the input. The Base64 algorithm takes as input arbitary binary data and produces as output printable encoding data.
After the profile-diff digest, the next line contains the x-wap-profile-diff. This request header field also has a profile-diff sequence number which indicates the processing order and that this profile-diff corresponds to the previous profile-diff-digest. The profile-diff itself consists of the XML fragment which spans the remainder of the request. Multi-line request header fields are permitted by the HTTP/1.1 specification[20] as long as each subsequent line starts with either a tab character or a whitespace. Note not all servlet engines, for example early versions of Tomcat, fully support the HTTP/1.1 specification so may not allow multi-line request header fields.
In addition to x-wap-profile and x-wap-profile-diff W-HTTP protocol adds a third extension header primarily used in responses. This header, x-wap-profile-warning indicates whether the server has used the UAProf information when generating the response. This can take five possible values: not applied, content selection applied, content generation applied, transformation applied and not supported.
When the server receives a HTTP request with UAProf request headers, it has to perform profile resolution i.e. retrieve the referenced profile(s) and any further profiles referenced via default blocks. It then has to merge these profiles and the profile-diffs while applying the UAProf resolution rules.
DELI performs profile resolution by processing all profiles and profile-diffs in the following order: firstly it processes all referenced profiles in the order they are present in the x-wap-profile request header. If a referenced profile references an external default profile then that is included where it is referenced. It then processes all the profile-diffs. This profile processing operation involves building an RDF model for each profile or profile-diff and then extracting a list of attributes from the model. Each attribute is associated with an attribute name, an attribute type, a collection type, a resolution rule and either one or more default values or one or more non-default values. These attributes are then appended together in the order indicated.
After DELI has produced the vector of profile attributes, profile merging is performed which involves taking each attribute in order from the list and placing it at a specific position in an array determined by the attribute name. If a collision occurs i.e. an attribute is already present in the array then the two attribute values are merged using the following rules:
If the colliding attribute contains one or more default values it is ignored, as non-defaults always override defaults and a default takes the value of the first default value (or set of default values) encountered.
If the colliding attribute contains one or more non-default values and the original attribute only contains one or more default values, then the colliding attribute overrides the original attribute.
If the colliding attribute and the original attribute both contain non-default values, then the resolution rules are used. If the attribute resolution rule is Locked then non-default values cannot be subsequently overridden. If the attribute resolution rule is Override then non-default values can be subsequently overridden. If the attribute resolution rule is Append then all the non-default values are appended together.
Note that this algorithm does not perform merging in the RDF domain, rather it performs merging after the attributes have been retrieved from the RDF domain.
Neither the UAProf nor the CC/PP specifications consider how the profile should select, generate or transform content based on the resolved profile. An extensive discussion of this topic is beyond the scope of this report so the reader is instead referred to previous technical reports by the author discussing content transformation by XML / XSLT publishing frameworks [21], content generation using constraint optimisation and content negotiation [22].
DELI also currently provides no support for content selection, generation or transformation. Instead it is proposed that DELI should be integrated with existing applications that transform content for clients based on the user agent string. From version 2.0.2, Apache Cocoon [23] provides support for CC/PP using DELI. With DELI support enabled it is currently possible for XSLT stylesheets to query profile attributes. For more information on this, download the latest version of Cocoon from the Cocoon CVS and look at the static samples to see the DELI documentation. Future work will investigate other ways of using CC/PP information in Cocoon. Other frameworks such as Apache Jetspeed [24] or Apache Struts [25] could be adapted in a similar way.
In order to install DELI and run the test servlets, you will need a Java installation along with a Java Servlet engine that can accept WAR files such as Apache Tomcat 4 [26] or Mortbay Jetty [27]. In addition if you wish to do any development or customising of DELI you will need Apache Ant [28]. By default DELI supports Microsoft Internet Explorer as legacy devices.
Installation of the DELI test servlet is easy. Once you have confirmed your Java Servlet engine is working correctly, unzip the DELI distribution file to the directory DELI_ROOT. Copy the file DELI_ROOT\warfiles\ccpp.war into the webapps directory of the Servlet engine. For example if you installed Tomcat in c:\apps32\tomcat then you need to copy ccpp.war to c:\apps32\tomcat\webapps\ccpp.war. Start the servlet engine and use Internet Explorer to check the DELI installation is working. If you type the following address into MSIE
http://localhost:8080/ccpp/html/
then the browser should display the contents of the profile profiles\msie.rdf in the DELI distribution. In addition by default DELI will output debugging information to the Servlet engine console.
Alternatively you can try sending some real UAProf requests to the server. To do this, you need to add various files to your classpath. Open a Dos/Unix shell and cd to DELI_ROOT. Then set the environment variables DELI_HOME and CATALINA_HOME to point to the DELI root directory and tomcat root directory respectively. For example, in Windows you would execute ‘set DELI_HOME=c:\deli’ and ‘set CATALINA_HOME=c:\jakarta-tomcat-4.0.4‘. Then run winsetpath.bat at the command line (note winsetpath.bat is Microsoft specific – for UNIX machines you will have to adapt this file). Then type
java com.hp.hpl.deliTest.TestCCPPClient normal http://localhost:8080/ccpp/profiles/testprofiles/test09defaults.rdf profiles\testprofiles\test09.rdf output.html
which sends a HTTP request to the server with a profile reference http://localhost:8080/ccpp/profiles/testprofiles/test09defaults.rdf and uses the file profiles\testprofiles\test09.rdf as a profile-diff. When it receives a response from the server it stores it in output.html. To view the server response open output.html in a web browser. For more details of running and testing DELI, see the Section 9.
It is easy to configure DELI to recognise legacy devices via user-agent strings. User-agent strings are used by web clients to identify themselves when they send requests to web servers. This is done primarily for statistical purposes and the tracing of protocol violations but does support the automated recognition of user agents. For example early Netscape products generate user-agent strings that look like this:
User-agent: Mozilla/4.04 (X11; I; SunOS 5.4 sun4m)
Where the user agent string has the following syntax:
Browser / version( platform ; security-level; OS-or-CPU description)
The legacy device configuration file maps user-agent strings on to profile references on a profile repository. In the test applications this is done by the DELI_ROOT\config\legacyDevice.xml file, although it is possible to select a different file via the DELI configuration. The legacy device configuration file has the following format:
@prefix : <file:///home/butlerma/workspace/deli2/#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix deli: <http://delicon.sourceforge.net/schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<http://purl.oclc.org/NET/butlermh/deli/devices#DELI-MSIE->
a deli:Profile ;
deli:deviceName "Internet Explorer" , "MSIE" ;
deli:file "msie.rdf" ;
deli:manufacturedBy <http://purl.oclc.org/NET/butlermh/deli/manufacturers#DELI> ;
deli:profileSuppliedByVendor "false" ;
deli:useragent "Mozilla" .
Where useragent is a device unique string found in the user-agent string of the device and file is a local file URL for the appropriate profile Note typically part of the user-agent string is used rather than the entire string. This is done to avoid problems due to cloaking and browser customisation.
Cloaking is when a device or browser (e.g. Microsoft Internet Explorer) claims to be another browser (e.g. Mozilla) in order to ensure web servers will send it the correct content. Browser customisation is when the device manufacturer or the owner can change the user-agent string to add the company name. This means identical browsers may not have the same user agent string. In order to avoid confusion caused by cloaking and customisation it is necessary to think carefully about how much of the user-agent string to use and the order of legacy devices in the legacy device file. For example when creating a legacy device file it is a good idea to have an Internet Explorer legacy device before a Netscape legacy device as they both contain the user agent string Mozilla, but Internet Explorer will also contain the user agent string MSIE so it is possible to identify IE first.
If you change any of the files e.g. configuration files or need to alter any of the source files it is necessary to rebuild the DELI web archive (WAR) file. In order to do this, just change to the DELI_ROOT directory and type ant at the command line. This takes the file build.xml which builds the WAR file. Then to redeploy DELI you need to stop your Servlet engine, delete the ccpp directory in the webapps directory then copy the new ccpp.war file to the webapps directory. Now restart the Servlet engine.
DELI uses the concept of a workspace configured to interpret profiles that use certain vocabularies, a set of certain resolution rules and requests that use a certain variant of HTTP. In addition the workspace contains a cache of referenced profiles, information about the vocabularies in use and the legacy device database. A workspace is configured using a configuration file such as DELI_ROOT\config\deliConfig.n3. The file is written in N3:
@prefix deli: <http://delicon.sourceforge.net/schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
_:config
deli:localProfilesFile "config/profiles.n3" ;
deli:localProfilesPath "profiles" ;
deli:debug "true" ;
deli:printDefaults "true" ;
deli:printProfileBeforeMerge "false" ;
deli:processUndefinedAttributes "true" ;
deli:namespaceConfigFile "config/namespaceConfig.n3" .
This file can contain caching, debugging, legacy device, protocol and vocabulary configuration directives as detailed in the subsequent sections.
The caching options control the way the workspace caches referenced profiles. DELI caches referenced profiles but not profile-diffs. This is because referenced profiles are associated with a unique identifier (the referenced profile URL) but profile-diffs are not. DELI can either cache profiles indefinitely or update stale profiles after a set interval. It is also possible to configure the maximum size of the profile cache.
|
Element Name |
Default Value |
Description |
|
maxCachedProfileLifetime |
24 hours |
The maximum lifetime of a cached profile in hours. |
|
maxCacheSize |
100 |
The maximum number of profiles in the profile cache. |
|
refreshStaleProfiles |
false |
Do we refresh cached profiles after the maximum lifetime has expired? |
The debugging options are used to control the information that DELI prints to the Servlet engine console.
|
Element Name |
Default Value |
Description |
|
debug |
true |
Is the automatic debug log information turned on? |
|
printDefaults |
true |
Print both default and override values of attributes for debugging purposes? |
|
printProfileBeforeMerge |
false |
Print the profile before merging for debugging purposes? |
As already mentioned DELI can support legacy devices by recognising the user-agent string supplied by a client and mapping it on to a profile. In order to use this facility it is necessary to supply an XML file that contains information about legacy device user-agent strings and the corresponding profile URLs.
|
Element Name |
Default Value |
Description |
|
supportLegacyDevices |
true |
Is the legacy device database turned on? |
DELI has a number of protocol options. First, it is possible to switch on whitespace normalisation in profile-diffs prior to calculating the profile-diff-digest in order to accommodate a modification to the UAProf protocol that has been proposed by IBM. When a server receives the request, it recalculates the profile-diff-digest. If additional whitespaces have been added to the request header by a proxy then there is a danger the two profile-diff digests will differ so the profile-diff will be rejected. Therefore IBM have proposed the following normalisation procedure prior to profile-diff digest calculation: all leading and trailing white spaces are eliminated (white space as defined in RFC 2616 section 2.2). Then all non-trailing or non-leading linear white space contained in the profile description, including line folding of multiple HTTP header lines, is replaced with one single space (SP) character. This implies that property values, represented as XML attributes or XML element character data, MUST be adhering to white space compression as mandated in RFC 2616 section 2.2.
|
Element Name |
Default Value |
Description |
|
normaliseWhitespaceInProfileDiff |
true |
Is whitespace normalisation of the profile-diff prior to calculating the profile-diff-digest turned on? |
DELI has a number of vocabulary options. First, it is possible to configure the vocabularies using an N3 file (by default namespaceConfig.n3). This file contains information about specific CC/PP vocabulary configuration i.e. references to vocabulary namespace URIs and their associated XML or RDF schema file containing the attribute names, the components they belong to, the collection type, the attribute type and the resolution rule used by a specific vocabulary.
Second, it is possible to specify the URI to be used for the RDF namespace and the CC/PP or UAProf namespace. This is important because as the specifications are revised they adopt new namespaces. Thirdly it is possible to set the string used to represent components in the vocabulary.
|
Element Name |
Default Value |
Description |
|
namespaceConfigFile |
config/namespaceConfig.n3 |
The file containing the mapping of vocabulary namespace URIs to RDF/XML schema vocabulary specifications. |
The namespaceConfigFile referenced by deliConfig.n3 above takes the following format:
@prefix deli: <http://delicon.sourceforge.net/schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema> .
_:n1
rdf:type deli:NamespaceDefinition ;
deli:uri <http://www.wapforum.org/profiles/UAPROF/ccppschema-20010430#> ;
deli:aliasUri <http://www.wapforum.org/profiles/UAPROF/ccppschema-20010430#> ;
deli:schemaVocabularyFile "config/vocab/ccppschema-20010430.rdfs" .
_:n2
rdf:type deli:NamespaceDefinition ;
deli:uri <http://www.openmobilealliance.org/tech/profiles/MMS/ccppschema-20050301-MMS1.2#> ;
deli:schemaVocabularyFile "config/vocab/ccppschema-20050301-MMS1.2.rdfs" .
Each namespace defines a specific vocabulary definition and associates it with a URI specified by uri. Due to the misuse of namespaces, a regular problem is the use of multiple namespace URIs to refer to the same vocabulary. To overcome this an aliasUri property has been introduced for specifying alternative URIs that should also map to this vocabulary definition. A schemaVocabularyFile, the file containing the vocabulary specification as an UAProf RDF Schema, must also be specified.
In order to understand how to construct servlets with DELI, the reader is encouraged to examine the example servlet in the DELI distribution:
DELI_ROOT\src\com\hp\hpl\deliTest\TestCCPPServlet.java
In order to create a Java servlet that uses the DELI library it is necessary to include the DELI package, e.g.
import com.hp.hpl.deli.*;
and to include a servletContext as a class data member e.g.
ServletContext servletContext;
Then when the servlet is initialized query the servletContext to determine the path to the servlet and use this information to create the workspace e.g.
public void init(ServletConfig config) throws ServletException
{
super.init(config);
try
{
servletContext = config.getServletContext();
Workspace.getInstance().configure(servletContext,"config/deliConfig.xml");
} catch (Exception e) {
try
{
Workspace.getInstance().configure((ServletContext) null, "config/deliConfig.xml");
} catch (Exception f) {
System.out.println(f.toString());
}
}
}
Once the workspace is initialised (note that the Workspace class is a Singleton, and should not be directly instantiated, but rather accessed by use of the static method getInstance()), profile resolution is achieved by creating a new profile using a HttpServletRequest e.g.
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
Profile myProfile = new Profile(req);
Then the addWarningHeader() can be used to add an x-wap-profile-warning to the response header e.g.
res = UAProfCreateHttpResponse.addWarningHeader(res, UAProfCreateHttpResponse.CONTENT_GENERATION_APPLIED);
}
The profile can be manipulated by using the standard Vector methods which will retrieve profile attributes e.g.
for (int i = 0; i < myProfile.size(); i++)
{
ProfileAttribute p = (ProfileAttribute)myProfile.get(i);
out.println("<TD>"+p.get()+"</TD>");
}
Or by directly retrieving a profile attribute e.g.
System.out.println(myProfile.getAttribute("BrowserName").toString());
In addition it is possible to query profile attributes using the get(), getAttribute(), getCollectionType(), getComponent(), getDefaultValue(), getResolution(), getType() and getValue() methods. Full details of the DELI API are contained in the Javadoc in the DELI_ROOT\javadoc\user directory which describes the classes and methods exported by the DELI package.
So in conclusion this report has described DELI, an open-source server implementation of profile resolution for CC/PP. DELI is currently alpha grade software provided to demonstrate how CC/PP may be implemented. It is designed to be easily extensible and configurable so it may be used as a test-bed for prototyping future developments with these specifications. DELI will be further developed to ensure compatibility with these standards.
[1] Resource Description Framework, http://www.w3.org/RDF/
[2] Composite Capabilities / Preferences Profile, http://www.w3.org/Mobile/CCPP/
[3] Open Mobile Alliance, http://www.openmobilealliance.org/
[4] DELI web-site, http://delicon.sourceforge.net/
[5] RDF Model and Syntax Specification, http://www.w3.org/TR/REC-rdf-syntax/
[6] RDF Schema Specification 1.0, http://www.w3.org/TR/rdf-schema/
[7] W3C RDF Validation service, http://www.w3.org/RDF/Validator/
[8] Jena RDF Framework, http://www.hpl.hp.com/semweb/jena-top.html
[9] Jena: Implementing the RDF Model and syntax specification, http://www-uk.hpl.hp.com/people/bwm/papers/20001221-paper/
[10] HP Labs Semantic Web Activity, http://www.hpl.hp.com/semweb/
[11] CC/PP: Structure and Vocabularies, http://www.w3.org/TR/CCPP-struct-vocab/
[12] CC/PP: Requirements and Architecture, http://www.w3.org/TR/CCPP-ra/
[13] CC/PP: Terminology and Abbreviations, http://www.w3.org/TR/CCPP-ta/
[14] CC/PP exchange protocol using HTTP Extension Framework, http://www.w3.org/TR/NOTE-CCPPexchange
[15] Content Negotiation Header in HTTP Scenarios, http://search.ietf.org/internet-drafts/drafts-hjelm-http-cnhttp-scenarios-00.txt
[16] WAG UAProf proposed version 30 May 2001, WAP-248-UAPROF-20010530-p, http://www1.wapforum.org/tech/terms.asp?doc=WAP-248-UAProf-20010530-p.pdf
[17] UAProf Schema, http://www.wapforum.org/profiles/UAPROF/ccppschema-20010330
[18] RFC1321: The MD5 Message-Digest Algorithm, http://www.faqs.org/rfcs/rfc1321.html
[19] Section 13.6 and section 14.4 in RFC2045: Multipurpose Internet Mail Extensions, http://www.faqs.org/rfcs/rfc2045.html
[20] RFC 2616: Hypertext Transfer Protocol 1.1 http://www.w3.org/Protocols/rfc2616/rfc2616.html
[21] HPL-2001-83: Current Techniques for Device Independence, http://www.hpl.hp.com/techreports/2001/HPL-2001-83.html
[22] HPL-2001-190: Implementing Content Negotiation with CC/PP and UAProf,
[23] Apache Cocoon, http://xml.apache.org/cocoon
[24] Apache Jetspeed, http://jakarta.apache.org/jetspeed/site/index.html
[25] Apache Struts, http://jakarta.apache.org/struts/index.html
[26] Apache Tomcat, http://jakarta.apache.org/tomcat/index.html
[27] Mortbay Jetty, http://jetty.mortbay.com
[28] Apache ANT, http://jakarta.apache.org/ant/index.html


BATTLEFIELD EARTH (Warner Bros.) Starring: John Travolta, Barry Pepper, Forest Whitaker, Kim Coates, Richard Tyson. Screenplay: Corey Mandell, based on the novel by L. Ron Hubbard. Producers: Elie Samaha, Jonathan D. Krane and John Travolta. Director: Roger Christian. MPAA Rating: PG-13 (violence, profanity, adult themes) Running Time: 117 minutes. Reviewed by Scott Renshaw.

Lousy summer action films are nothing new. It is still a bit shocking, however, when you have the misfortune to stumble upon one so fundamentally inept even as grandiose adventure.  Based on the novel by L. Ron Hubbard, it tells of an earth 1,000 years after a conquering alien invasion by the profit-hungry Psychlo race. Bands of humans live primitive hunter-gatherer lives on the outskirts of the Psychlo mining colony in Denver, while most humans work as slave labor. Leading the Psychlo security force is the arrogant Terl (John Travolta), embittered by his posting on earth and prepared to con his superiors out of a recently-discovered gold deposit. But he's about to meet his match in Jonnie (Barry Pepper), a feisty human keen on leading a rebellion against the Psychlos.
I've never read the L. Ron Hubbard novel on which BATTLEFIELD EARTH is based, so I don't know how much of the film's narrative idiocy is his responsibility. I do know that the film could set you to scratching your head so furiously you could draw blood. How is it that in 1,000 years of occupation strictly for the purpose of acquiring precious metals, none of the Psychlos bothered to investigate Fort Knox, or noticed the big glowing vein of gold in the rocks a few miles from their headquarters? What miraculous change in the planet's weather patterns allowed books in the Denver Library to survive 1,000 years' exposure to Rocky Mountain winters? And would it have been so hard to explain why the Psychlos' domed habitat is so strategically important when both humans and Psychlos must wear breathing devices (strangely like high-tech Breathe Right strips) in order to survive inside it?
Even with so much slipshod storytelling involved, I might have settled for an action-adventure that seemed concerned about making its action somewhat ... adventurous. Instead, Roger Christian turns every confrontation, every chase and every battle into parade of slow-motion explosions. The device has certainly become popular thanks to Hong Kong directors like John Woo, but in such cases the film-maker is usually giving viewers the opportunity to appreciate a particularly cool stunt, or Chow Yun-Fat flying through the air with a pair of guns blazing. Christian, on the other hand, uses slow-motion to turn the film into an agonizing crawl towards its conclusion. It's clear he wants BATTLEFIELD EARTH to be something epic and mythological; the frequent George Lucas collaborator even uses the familiar wipe-dissolves from the STAR WARS films. In Christian's hands, unfortunately, the wipes are yet another way he takes us far too slowly from one place to another. You know a film is failing on its most fundamental level when an entire sell-out preview audience responds to the climactic explosion with stony silence.
BATTLEFIELD EARTH does offer the chance to watch Travolta -- who has shown no reluctance to ham up his villainous characters in films like BROKEN ARROW and FACE/OFF -- whooping it up as the gleefully duplicitous Terl, which occasionally makes the film watchable. Sadly, his gusto only makes it evident that someone involved in the film was actually trying to make it watchable. It certainly wasn't the casting director, who chose as a protagonist the capable but uncharismatic Pepper (who may just be the separated-at-birth triplet sibling of Skeet Ulrich and Johnny Depp). It wasn't screenwriter Corey Mandell, whose gifts for absurd plotting are rivaled only by his deft way with mangling dialogue and character development. And it wasn't Roger Christian, who appears to have learned absolutely nothing about pacing from his work as second unit director with Lucas.
On the Renshaw scale of 0 to 10 alien somnabulations: 2.
Visit Scott Renshaw's Screening Room http://www.inconnect.com/~renshaw/ *** Subscribe to receive new reviews directly by email! See the Screening Room for details, or reply to this message with subject "Subscribe".
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


jQuery UI Rotatable Examples
Rotate me! (I have callbacks logging to the console)
Drag me, resize me and rotate me!
I start rotated.
I've got a custom handle.
My handle has been offset
I snap every 22.5°.
I don't rotate on wheel.
I only rotate between 0 and 180 degrees.
I have a scaleY(2) transform applied to me
My rotation center has been offset to on my far right!


wb_sunny
Weather dashboard
{{weather.temperature}} °C
Temperature
{{weather.humidity}} %
Humidity
{{weather.pressure}} hPa
Pressure


---
layout: post
title: Mass Undelete from the Recycle Bin
date: 2015-02-20 11:03:47.000000000 -05:00
categories: blog
---
This is more "e-discovery" than forensics but I recently had a case where I needed to 1,300 files that were in a user's Recycle Bin.
It was not overly important to the user's management when they were originally created or when it was deleted. They just wanted to review the documents. So I took an hour and hammered out this beast.
{%highlight python%}
#Purpose: Copy all of the contents of the Recycle Bin to a destination folder
# perserving the dir structure and filename.
# Not meant as a forensically sound aquistion tool. Just a means to an end.
#This hack job of a python script does:
#1. Looks for $I files
#2. Checks to see if the corresponding $R file exists
#3. Parses $I files to get the original filename and path
#4. Copies the $R file to the output folder recreating the original dir structure
# Example:
# c:\test\subdir\uselessfile.txt gets deleted.
# This script will copy the file out of the Recycle Bin to c:\Temp\Root\Test\subdir\uselessfile.txt.
# If one already exists there, it will keep trying make a unique name ex: uselessfile12345.txt
import os
import random
from os.path import exists
RecBin = 'C:\\$Recycle.Bin'
DestFolder = 'c:\\Temp\\test'
def look4ifiles(ext, dirname, names):
for name in names:
if name.lower().startswith('$i'):
check4rfile(dirname, name)
def check4rfile(ifiledirname, ifilename):
rfilename = ifilename.lower().replace('$i','$r')
if exists(os.path.join(ifiledirname, rfilename)):
parseifile(ifiledirname, ifilename, rfilename)
else:
print("Can not find " + rfilename + " for " + os.path.join(ifiledirname, rfilename))
def parseifile(ifiledirname, ifilename,rfilename):
dest_path = ""
ifile = os.path.join(ifiledirname, ifilename)
with open(ifile,"rb") as f:
f.seek(28)
file_path = f.read(1)
while file_path != "":
if int(file_path.encode("hex"),16) != 0:
dest_path += file_path
file_path = f.read(1)
extractfromrecbin(ifiledirname, rfilename, dest_path)
def finduseabledestinationfilepath(final_dest_path):
if exists(final_dest_path):
fileName, fileExtension = os.path.splitext(final_dest_path)
trythisone = str(fileName + str(random.randint(0,1000000)) + fileExtension)
print trythisone
return finduseabledestinationfilepath(trythisone)
else:
return final_dest_path
def extractfromrecbin(ifiledirname, rfilename, dest_path):
rfile = ifiledirname + '\\' + rfilename
outputlocation = finduseabledestinationfilepath(DestFolder + dest_path)
os.system('echo f |xcopy /Y \"' + rfile + '\" \"' + str(outputlocation) + '\"')
#os.path.walk(RecBin, look4ifiles, exten)
for root, dirs, files in os.walk("c:\\$recycle.bin", topdown=False):
for name in files:
if name.lower().startswith('$i'):
check4rfile(root, name)
{%endhighlight%}


--- layout: default ---
As a grad student at the University of Oregon, I taught classes in Folklore, Composition, Film Studies, Women’s Studies, and Comparative Literature. These days, I mostly talk and teach about literacy, agency, and privacy in a technocratic world.
My CV has the complete list of all the courses I’ve taught. Below are links to the materials from a select few:
2017
2016
2015
2012
Publishing Outside the Academy
2005
2003
updated June 2019


Connect Four is a two-player connection game in which the players first choose a color and then take turns dropping colored discs from the top into a seven-column, six-row vertically suspended grid. The objective of the game is to connect four of one's own discs of the same color next to each other vertically, horizontally, or diagonally before your opponent.
Web browser
HTML5, CSS3, Bootstrap, Javascript, jQuery
Firebase.js
We built a fully functional, JavaScript-heavy web application from scratch using agile development techniques:
Players can see a styled board.
Players can place a piece into a column.
Players are notified when they win the game
Players can play against each other in the same browser.
And, players can play against another user on a different computer, powered by Firebase.js


A BUG'S LIFE (1998)
Rating: 3 stars (out of 4.0) ******************************** Key to rating system: 2.0 stars - Debatable 2.5 stars - Some people may like it 3.0 stars - I liked it 3.5 stars - I am biased in favor of the movie 4.0 stars - I felt the movie's impact personally or it stood out ********************************* A Movie Review by David Sunga
Written and Directed by: John Lasseter and Andrew Stanton
Starring: Voices of Dave Foley, Kevin Spacey, Hayden Panettiere, Julia Louis-Dreyfus, Phyllis Diller, David Hyde Pierce, Roddy McDowall, Jonathan Harris, Richard Kind
Ingredients: Ants and grasshoppers in human situations.
Synopsis: A gang of big mean grasshoppers is extorting protection money from a cowering colony of little ants. One day an innovative ant named Flik (Dave Foley) goes on a quest to find bugs who might be willing to save the colony from the bad guys. Coming upon recently fired flea circus performers, Flik mistakenly believes they are altruistic commandos.
Opinion: A BUG'S LIFE is sure to please both parents and children. First, take your basic western (terrorized town, mysterious strangers ride in) and then replace all violence with cartoon humor. Then change all the townspeople to cute, kid-friendly Disney-style CGI insects. Add an underdog hero, a hint of romance and a supporting character who's an impetuous child (or in this case an impetuous young bug), and you have yourself a hit movie.
It's amazing how computer generated imagery keeps evolving and getting better. At the rate things are going, soon virtual characters will be used just as often as real life actors and actresses, and the whole film industry will go digital. Imagine, if technology keeps increasing, then in the next evolution, all we'll need to do is use sensor clay to model a performer's unique face and expressions, and all the action and effects can be done by computer generation (intelligent software) instead of live acting and stunts. If and when advanced computers become commonplace it would reduce the cost of film-making by millions, since only scripts, modeling, and intelligent software would be needed.
Getting back to A BUG's LIFE, it's always fun to see if you can recognize the voices in animated features. In A BUG'S LIFE you'll hear echoes of LOST IN SPACE, PLANET OF THE APES, FRAZIER, SPIN CITY, SEINFELD, and LA CONFIDENTIAL as well as the voice of the grand dame of comedy, Phyllis Diller. Bring the family; you'll love it.
Reviewed by David Sunga November 25, 1998
Copyright © 1998 by David Sunga This review and others like it can be found at THE CRITIC ZOO: http://www.criticzoo.com email<EMAIL_ADDRESS>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


I have been a fan of the lakers since 1996.
It was Kobe Bryant's rookie year drafted from high school.
The Lakers had also traded for Orlando Magic's star Shaquille O'neal.
The Lakers are one of the most successful and popular professional franchises in all American sports.
The franchise has won a combined 17 Basketball Association of America (BAA) and National Basketball Association (NBA) titles,
tied in league history with their rival the Boston Celtics.
My Favorite NBA Players
MJ and Kobe
Micheal Jordan is one of the best basketball players ever.
MJ led the Chicago Bulls to six NBA Championships and earned the
NBA's MVP Award five times and six Finals MVP awards.
Kobe Bryant is also known as one of the best basketball players ever.
He led the Los Angeles Lakers to five NBA Championships.
He earned one NBA's MVP Award and two Finals MVP awards.
Shaq
Shaquille O'Neal is one of the most dominant players in NBA history.
He helped lead the Los Angeles Lakers to three NBA Championships.
He also helped lead the Miami Heat to a NBA Championship.
He was a double-double machine. He was practically unstoppable as he scored
at will on his opponents.
My Favorite NFL Players
Peyton Manning
Peyton Manning is one of the most prolific passers in NFL history.
He won an NFL-record five MVP awards, as well as two Super Bowl championships.
He won a championship with the Indianapolis Colts and the Denver Broncos.
Terrell Owens
Terrell Owens played in the NFL for 16 seasons.
He is a six-time Pro Bowl selection and five-time first-team All-Pro.
He ranks third in career receiving yards at 15,934 and third in receiving touchdowns at 153.
My Favorite College Team
Arkansas Razorbacks
The Arkansas Razorbacks are in one of the toughest conferences known as
South Eastern conference. They aren't as prominent as some of the big name
schools but they have been able to compete with the best. The Razorbacks have been ranked as
high as #2 in the nation under the leadership of then head coach Bobby Petrino.


crio API
Instantiation
- crio
{any}
, returns CrioArray|CrioObject- Standard method, will
crio
the object passed if an array or object, else it will return the object itself
- Standard method, will
- crio.array
{Array<any>}
, returns CrioArray- Shortcut method for
crio
ing array-specific values
- Shortcut method for
- crio.object
{Object}
, returns CrioObject- Shortcut method for
crio
ing object-specific values
- Shortcut method for
- crio.isCrio
{any}
, returns boolean- Determine if the object passed is a
Crio
- Determine if the object passed is a
- crio.isArray
{any}
, returns boolean- Determine if the object passed is a
CrioArray
- Determine if the object passed is a
- crio.isObject
{any}
, returns boolean- Determine if the object passed is a
CrioObject
- Determine if the object passed is a
Methods with the same name as the native method will be a link to MDN, as they are meant to be as similar to the native method as possible. Where any specific differences from the default behavior exist, they will be called out, however one broad difference is that all methods that are not getters which return primitive values are chainable.
Shared Methods
The following methods are specific to Crio
types, and are available on either CrioArray
or CrioObject
- clear, returns
{CrioArray|CrioObject}
- returns an empty
Crio
- returns an empty
- compact, returns
{CrioArray|CrioObject}
- returns a new
Crio
with all falsy values filtered out
- returns a new
- delete
{number}
key, returns{CrioArray|CrioObject}
- Deletes the key provided from the crio object
- deleteIn
{Array<number|string>}
keys, returns{CrioArray|CrioObject}
- Deletes the final key based on the array of keys nested inside of the crio object
- equals
{CrioArray|CrioObject}
crioArrayToCompare, returns{boolean}
- Determines whether array is deeply equal in value to another by comparing hashCodes
- get
{number}
key, returns{any}
- Retrieve value at key
- getIn
{Array<number|string>}
keys, returns{any}
- Retrieve value in deeply nested object based on array of keys
- has
{string}
key, returns{boolean}
- Alias for
hasOwnProperty
- Alias for
- hasIn
{Array<number|string>}
keys, returns{boolean}
- Does the
Crio
have the combination of keys assigned deeply
- Does the
- merge
{Object[, Object2, ..., ObjectN]}
objects, returns{CrioArray|CrioObject}
- Shallow merge any number of items into existing crio
- mergeIn
{Array<number|string>}
keys,{Object[, Object2, ..., ObjectN]}
objects, returns{CrioArray|CrioObject}
- Shallow merge any number of items into value existing in deeply nested object based on array of keys
- mutate
{function(mutableCrio, originalCrio): any}
callback, returns{CrioArray|CrioObject}
- Whatever you return in the callback is what is returned, or if you return nothing it returns the original
Crio
- Whatever you return in the callback is what is returned, or if you return nothing it returns the original
- pluck
{number|string}
key, returns{CrioArray|CrioObject}
- Iterates over
Crio
and returns an array of values where the key exists as a property on the collection item
- Iterates over
- pluckIn
{Array<number|string}
keys, returns{CrioArray|CrioObject}
- Iterates over
Crio
and returns an array of values where the keys map to a deeply-nested property on the collection item
- Iterates over
- set
{number}
key, returns{CrioArray|CrioObject}
- Sets value at key
- setIn
{Array<number|string>}
keys, returns{CrioArray|CrioObject}
- Sets value in deeply nested object based on array of keys
- toArray, returns
{CrioArray}
- Converts
CrioObject
to aCrioArray
of the object's values
- Converts
- toObject, returns
{CrioObject}
- Converts
CrioArray
into aCrioObject
of index: value pairs
- Converts
- thaw, returns
{Array<any>}
- Recursively thaws array deeply and returns standard object version of itself
Arrays
Default Methods
- concat
- copyWithin
- entries
- every
- fill
- Returns new crio with items from start to end filled with value
- filter
- find
- findIndex
- forEach
- includes
- Does a deep value equality comparison (rather than strict equality), so you can do things like
crioArray.includes({foo: 'bar'})
- Does a deep value equality comparison (rather than strict equality), so you can do things like
- indexOf
- join
- keys
- lastIndexOf
- map
- pop
- Returns new crio with first item removed
- push
- Returns new crio with new item added
- reduce
- reduceRight
- reverse
- shift
- Returns new crio with last item removed
- slice
- some
- sort
- Returns new crio sorted by either callback or default
- splice
- Returns new crio with items added/removed based on splicing parameters
- toLocaleString
- toString
- unshift
- Returns new crio with new items added to beginning
- values
Added crio Methods
- difference
{Array<*>}
array[, array2, ..., arrayN], returns{CrioArray}
- Returns a new array of the values that only exist in either the
CrioArray
or in one of the arrays passed
- Returns a new array of the values that only exist in either the
- findLastIndex
{function}
fn, returns{number}
- Same as
findIndex
but starting from end and working to start
- Same as
- first
{number}
num, returns{CrioArray}
- Returns a new array of the first num number of items in the array
- intersection
{Array<*>}
array[, array2, ..., arrayN], returns{CrioArray}
- Returns a new array of the values that exist in all of the arrays passed
- last
{number}
num, returns{CrioArray}
- Returns a new array of the last num number of items in the array
- unique, returns
{CrioArray}
- Returns a new
CrioArray
of values filtered down to only existing in the array once
- Returns a new
- xor
{Array<*>}
array[, array2, ..., arrayN], returns{CrioArray}
- Returns a new array of the values that are the symmetric difference of the
CrioArray
and the arrays passed
- Returns a new array of the values that are the symmetric difference of the
Objects
Default Methods
Added crio Methods
- entries, returns
{Array<[string, any]>}
- Gets an array of the
[key, value]
pairs in theCrioObject
- Gets an array of the
- every
{function(value, key, CrioObject): any}
fn,{any}
thisArg, returns{any}
- Performs same function as
every
in theArray
prototype, but on theCrioObject
- Performs same function as
- forEach
{function}
fn,{any}
thisArg, returns{CrioObject}
- Iterates over object executing fn
- Iteration order is not guaranteed
- filter
{function}
fn,{any}
thisArg, returns{CrioObject}
- Iterates over object and filters out any returned values that are falsy
- Iteration order is not guaranteed
- findKey
{function}
fn, returns{number}
- Same as
findIndex
forCrioArray
but finding the key instead of the index
- Same as
- findLastKey
{function}
fn, returns{number}
- Same as
findKey
but starting from end and working to start
- Same as
- includes
{any}
value, returns{boolean}
- Determine if the
CrioObject
has a value that deeply matchesvalue
in equality
- Determine if the
- keys, returns
{Array<string>}
- Returns an array of the keys in the
CrioObject
- Returns an array of the keys in the
- map
{function}
fn,{any}
thisArg, returns{CrioObject}
- Iterates over object and maps returned value to the respective key
- Iteration order is not guaranteed
- reduce
{function(accumulatedObject, value, key): any}
fn,{any}
thisArg, returns{any}
- Performs same function as
reduce
in theArray
prototype, but on theCrioObject
- Performs same function as
- reduceRight
{function(accumulatedObject, value, key): any}
fn,{any}
thisArg, returns{any}
- Performs same function as
reduceRight
in theArray
prototype, but on theCrioObject
- Performs same function as
- some
{function(value, key, CrioObject): any}
fn,{any}
thisArg, returns{any}
- Performs same function as
some
in theArray
prototype, but on theCrioObject
- Performs same function as
- values, returns
{Array<any>}
- Returns an array of the values in the
CrioObject
- Returns an array of the values in the


CPU Traffic 90%
Likes 41,410
Sales 760
New Members 2,000
Note: Please Insert Personal Information First
| Sr. No. | Application No | Application Type | From Date | To Date | Total Fees | Status | Status Date |
|---|---|---|---|---|---|---|---|
| 1 | 2019I23614579 | New Application | 20 Jan 2020 | 24 Jan 2020 | 3,000 | Done | 20 Jan 2020 |
| 2 | 2019I23614579 | New Application | 20 Jan 2020 | 24 Jan 2020 | 3,000 | Done | 20 Jan 2020 |
| 3 | 2019I23614579 | New Application | 20 Jan 2020 | 24 Jan 2020 | 3,000 | Done | 20 Jan 2020 |
| 4 | 2019I23614579 | New Application | 20 Jan 2020 | 24 Jan 2020 | 3,000 | Done | 20 Jan 2020 |
| 5 | 2019I23614579 | New Application | 20 Jan 2020 | 24 Jan 2020 | 3,000 | Done | 20 Jan 2020 |
| 6 | 2019I23614579 | New Application | 20 Jan 2020 | 24 Jan 2020 | 3,000 | Done | 20 Jan 2020 |
| 7 | 2019I23614579 | New Application | 20 Jan 2020 | 24 Jan 2020 | 3,000 | Done | 20 Jan 2020 |
| 8 | 2019I23614579 | New Application | 20 Jan 2020 | 24 Jan 2020 | 3,000 | Done | 20 Jan 2020 |
| 9 | 2019I23614579 | New Application | 20 Jan 2020 | 24 Jan 2020 | 3,000 | Done | 20 Jan 2020 |
| 10 | 2019I23614579 | New Application | 20 Jan 2020 | 24 Jan 2020 | 3,000 | Done | 20 Jan 2020 |


{% extends "notifications/email/base_notification.html" %} {% block "body" %}
Hello {{ n.target.first_name }}!
We're writing to let you know that {{ n.actor.first_name }} {{ n.actor.last_name }} tagged you as "{{ n.obj }}" in the staff directory.
You can view and manage your staff directory tags on your profile page.
Thanks.
{% endblock %}


Currency Exchange
USD Amount:
Choose a currency:
AUD
EUR
AED
CAD
HKD
JPY
New Amount is:
Exchange Currency


Highly motivated and result oriented rehabilitation technician that’s seeking a new career change into IT that involves cloud- based technologies and data migration. Proven track record of generating and building positive relationships, collaborating with a diverse team as both a team member and leader, and effectively making critical decisions during challenges. Looking to develop opportunities that further establish organizational goals while broadening my own unique skill set in an evolutionary industry.
- Education
-
Western Governors University
Major: B.S. Cloud Computing - In Progress
Hudson County Community College
Major: Biology (Science & Mathematics) A.S.
- Skills
-
Software / Applications
AWS - (EC2, S3, RDS, VPC, Route 53, DynamoDB, CloudFront, CloudWatch, CloudTrail, IAM, SNS, SQS, ECS), Microsoft Office, Google Suite, Medical EMR systems
Certifications
AWS Solutions Architect Associate, AWS Certified Cloud Practitioner
- Experience
-
Lead Rehabilitation Technician March 2015 - Present
- Collaborate with the physical therapist and team members in providing various functional physical activities and treatment procedures while assessing the needs for all patients
- Educate patients by demonstrating proper use of equipment and exercise routines
- Responsible for managing team members while assisting multiple patients at once
- Develop strong and trusting relationships by exhibiting courtesy, compassion, and respect towards patients
- Lead ongoing training seminars for new hires, covering the company’s best practices
- Maintain a safe working environment by inspecting and sanitizing all equipment and exercise stations
- Document patient reports in regard to treatment, response, and goal progression after each session
- Perform administrative functions including answering phone calls, scheduling patients, and collecting payments
- Assist in marketing through referrals and outreach
Independent CaregiverMarch 2017 - August 2019
- Followed individual care plan as directed by supervising nurse to accommodate client's medical needs
- Assisted the client with activities of daily living including bathing and grooming, transporting, and exercising
- Assessed the client and reported any unusual incidents to immediate point of contact; Acted quickly and responsibly in
instances of an emergency
- Responded appropriately to the physical, emotional and developmental needs of the client
- Participated in discussions with the patient's health care team to determine the best care for the client
- Established and maintained a healthy and positive working relationship with the client, family members and health care
team


---
layout: post
title: ToxoDB 9.0 Released
category: [ToxoDB]
---
We are pleased to announce the release of ToxoDB 9.0
New data in this release:
- The following unannotated genomes of were integrated into the
database. Additional information about all genomes may be viewed in the
Dataset
section of ToxoDB. Note that many of these
genomes have been graciously provided prepublication to the scientific
community - please consult with the Principal Investigator before
undertaking large scale analyses of the annotation or underlying
sequence:
- Hammondia hammondi H.H.34 (GenBank version 4-5-2012)
- Toxoplasma gondii ARI (GenBank version 3-1-2012)
- Toxoplasma gondii CAST (GenBank version 3-27-2012)
- Toxoplasma gondii COUG (GenBank version 2-7-2013)
- Toxoplasma gondii CtCo5 (GenBank version 7-17-2012)
- Toxoplasma gondii GAB2-2007-GAL-DOM2 (GenBank version
8-8-2012)
- Toxoplasma gondii TgCATBr5 (GenBank version 8-26-2011)
- Toxoplasma gondii TgCATPRC2 (GenBank version 3-27-2012)
- Sarcocystis neurona SN3 (Kissinger Lab 7-2-2013)
- RNA sequencing of Eimeria tenella Houghton life cycle stages
(unsporulated oocyst, sporulated oocyst, sporozoite and 2nd generation
merozoite stages) graciously provided prepublication (Reid et al.).
- Go to the ToxoDB
RNA Seq Evidence search page to search for genes that
are differentially expressed between the life cycle stages. View
sequencing read coverage using the GBrowse track - E.t. mRNAseq
Transcriptome of Life Cycle Stages Coverage (Reid).
- This example search strategy consists of 4 steps: In the first
step Eimeria genes upregulated in merozoites compared to
the other stages were identified. In the second step a
percentile search identifies genes unlikely to be expressed in
unsporulated oocyst, sporulated oocyst and sporozoite stages. In the
third step a percentile search identifies genes likely to be highly
expressed in merozoites. The fourth step identifies the ortholog of
these genes in Toxoplasma.
- Graphical representation of this data is available in the expression
section of gene
pages.
- Data from this experiment is available as coverage plots in the
genome browser and evidence of intron spanning reads is indicated in
the "Splice Site Junctions" track. In this
example a genome browser region shows two genes one
that is differentially expressed in merozoites and the other with
evidence of alternative gene models that differs from the official
annotation.
- RNA sequencing of Toxoplasma gondii ME49 during acute or
chronic infection in mouse brain. This data was graciously
provided prepublication (Pittman, Aliota and Knoll).
- Search this data using the ToxoDB
RNA Seq Evidence search page to compare the gene
expression for parasites in 10 and 28 day old infections in
mice. This example search strategy identifies genes that are
upregulated by at least 30-fold in chronically infected mice:
- View the data from this experiment represented graphically in the
expression section of individual genes on gene pages.
- RNA sequencing of 25 Toxoplasma gondii strains during mouse
macrophage infection (Minot
et al.).
- View sequencing read coverage in the genome browser by turning on
the track called "T.g. mRNAseq Transcriptomes of 25 strains during
murine macrophage infection Coverage".
- View percentile and expression data graphically in the expression
section on individual gene pages.
- Toxoplasma gondii quantitative proteomics data from Type II
M4 oocyst and from VEG parasites during an infection of human
macrophages – This data was graciously provided prepublication by
Jonathan Wastling.
- Expression levels are also represented graphically in the protein
section of gene pages (Example: GRA7).
New features:
GBrowse tracks remain open between sessions:
- EuPathDB now stores GBrowse track configurations between sessions for
registered users who log into any EuPathDB site. The EuPathDB login is
now integrated with the GBrowse login so that your previous session’s
GBrowse tracks are displayed each time you return to a EuPathDB site.
New streamlined look for choosing expression data
sets (microarray, RNA-Seq):
- A new interactive table for choosing expression data sets lists
datasets, searches for each dataset and the organism that the data is
aligned to. Use the table’s filter function to limit the data set list
based on author name, parasite life stages, etc. Click on an icon under
"Choose a search" to collapse the table and display the data set’s
search page with its parameter list below the collapsed table.
On-page help for expression search pages:
- Search parameters appear on the left and are arranged in a sentence
that helps you choose parameter values.
- A help graphic and text appear on the right. To help you interpret
your parameters choices, the graphic changes to reflect your parameter
settings.
Improved Strategy Panel for viewing and editing
steps:
- The graphic interface of the strategy panel has been updated.
View the results of a strategy step by clicking anywhere inside
the box representing that step. To edit the parameter values for that
step, click on the EDIT icon that appears in the corner of each strategy
step box when hovering over the strategy panel.
Note:
Our bimonthly database releases incorporate new data and correct old
data when necessary. Changes in annotation and new experimental
data may slightly alter your search results by increasing or decreasing
the number of hits. When search parameters change with a new release, we
invalidate (Ø) the search and ask you
to rerun it. When IDs are updated or removed, we map the old IDs to the
new ones, remove the old IDs from your Basket, and leave your Favorites
page alone.
EuPathDB
is now on FaceBook,
Twitter, and YouTube


| faq-pipe-gender {magrittr} | R Documentation |
In Magritte's original quote "Ceci n'est pas une pipe," the word "pipe" is feminine. However the magrittr package quotes it as "Ceci n'est pas un pipe," with a masculine "pipe." This lighthearted misappropriation is intentional. Whereas the object represented in Magritte's painting (a pipe that you can smoke) is feminine in the French language, a computer pipe (which is an Anglicism in French) is masculine.