Implementing XPath for Wireless Devices, Part II
Grok Headline matches for Implementing XPath for Wireless Devices, Part II
Implementing XPath for wireless devices,
part II (XML.com)
Implementing XPath for wireless devices,
part II (XML.com)
07/18/2002 07:34 PMImplementing XPath for wireless devices
(XML.org)
Implementing XPath for wireless devices
(XML.org)
06/07/2002 08:34 AMImplementing XPath for Wireless Devices
Implementing XPath for Wireless Devices
06/06/2002 05:37 PMIn the first of a two-part series, we explore the implementation of
XPath on wireless devices using the WAP family of standards.
Implementing CSS (Part 1)
Implementing CSS (Part 1)
06/05/2005 11:17 PMOne of the most interesting problems (to me at least) in browser
layout engines is how to implement a style system that can determine
the style information for elements on a page efficiently. I worked on
this extensively in the Gecko layout engine during my time at AOL and
I've also done a lot of work on it for WebCore at Apple. My ideal
implementation would actually be a hybrid of the two systems, since
some of the optimizations I've done exist only in one engine or the
other.
When dealing with style information like font size or text color,
you have both the concept of back end information, what was specified
in the style rule, and the concept of front end information, the
computed result that you'll actually use when rendering. The
interesting problem is how to compute this front end information for a
given element efficiently.
Back end information can be specified in two different ways. It
can either be specified using CSS syntax, whether in a stylesheet or
in an inline style attribute on the element itself, or it is
implicitly present because another attribute on the element specified
presentational information. An example of such an attribute would be
the color attribute on the font tag. Both WebCore and
Gecko use the term mapped attribute to describe an attribute
whose value (or even mere presence) maps to some implicit style
declaration.
A rule in CSS consists of two pieces. There is the
selector, that bit of information that says under what
conditions the rule should match a given element, and there is the
declaration, a list of property/value pairs that should be
applied to the element should the selector be matched.
All back end information can ultimately be thought of as supplying
a declaration. A normal rule in a stylesheet that is matched has the
declaration specified as part of the rule. An inline style attribute
on an element has no selector and is simply a declaration that always
applies to that element. Similarly each individual mapped attribute
(like the color and face attributes on the font
tag) can be thought of as supplying a declaration as well.
Therefore the process of computing the style information for an
element can be broken down into two phases. The first phase is to
determine what set of declarations apply to an element. Once that
back end information has been determined, the second phase is to take
that back end information and quickly determine the information that
should be used when rendering.
WebCore (in upcoming Safari releases) has a really cool
optimization that I came up with to avoid even having to compute the
set of declarations that apply to an element. This optimization in
practice results in not even having to match style for about 60% of
the elements on your page.
The idea behind the optimization is to recognize when two elements
in a page are going to have the same style through DOM (and other
state) inspection and to simply share the front end style information
between those two elements whenever possible.
There are a number of conditions that must be met in order for this
sharing to be possible:
(1) The elements must be in the same mouse state (e.g., one can't be
in :hover while the other isn't)
(2) Neither element should have an id
(3) The tag names should match
(4) The class attributes should match
(5) The set of mapped attributes must be identical
(6) The link states must match
(7) The focus states must match
(8) Neither element should be affected by attribute selectors, where
affected is defined as having any selector match that uses an
attribute selector in any position within the selector at all
(9) There must be no inline style attribute on the elements
(10) There must be no sibling selectors in use at all. WebCore simply
throws a global switch when any sibling selector is encountered and
disables style sharing for the entire document when they are present.
This includes the + selector and selectors like :first-child and
:last-child.
The algorithm to locate a shared style then goes something like
this. You walk through your previous siblings and for each one see if
the above 10 conditions are met. If you find a match, then simply
share your style information with the other element. Such a system
obviously assumes a reference counting model for your front end style
information.
Where this optimization kicks into high gear, however, is that it
doesn't have to give up if no siblings can be located. Because the
detection of identical style contexts is essentially O(1), nothing
more than a straight pointer comparison, you can easily look for
cousins of your element and still share style with those
elements.
The way this works is that if you can't locate a sibling, you can
go up to a parent element and attempt to find a sibling or cousin of
the parent element that has the same style pointer. If you find such
an element, you can then drill back down into its children and attempt
to find a match.
This means that for HTML like the following:
<table>
<tr class='row'>
<td class='cell' width=300 nowrap>Cell One</td>
</tr>
<tr class='row'>
<td class='cell' width=300 nowrap>Cell Two</td>
</tr>
In the above example, not only do the two rows share the same style
information, but the two cells do as well. This optimization works
extremely well for both old-school HTML (in which many deprecated
presentational tags are used) and newer HTML (in which class
attributes might figure more prominently).
Once the engine determines that a style can't be shared, i.e., that
no pre-existing front end style pointer is available, then it's time
to figure out the set of declarations that match a given element. It
is obvious that for inline style attributes and mapped attributes that
you can find the corresponding declaration quickly. The inline style
declaration can be owned by the element, and the mapped attributes can
be kept in a document-level hash. WebCore has a bit of an edge over
Gecko here in that it treats each individual mapped attribute on an
element as a separate declaration, whereas Gecko hashes all of the
mapped attributes on an element as a single "rule." This means that
Gecko will not be able to share the mapped attribute declaration for
the following two elements:
<img width=300 border=0>
<img width=500 border=0>
WebCore creates three unique declarations and hashes them, one for
a width of 300, one for a width of 500, and one for a border of 0.
Gecko creates two different "rules," one for (width=300,border=0) and
another for (width=500,border=0). As you can see in such a system,
you will frequently not be able to treat the identical border
attributes as the same.
Aside from this difference in mapped attribute handling, the two
engines employ a similar optimization for quickly determining matching
stylesheet rules called rule filtering. All rules that are
potentially matchable by any element (i.e., that have the correct
media type) are hashed based on the contents of the rightmost simple
selector in the rule.
A selector in CSS can be either simple (meaning that all of the
contents of that selector apply only to a single element) or compound
(meaning that you may examine multiple elements like parents or
siblings of that element). A compound selector is essentially a chain
of simple selectors, so the following rule:
tr > td { color: blue }
has two simple selectors, tr and td. The
rightmost simple selector in the rule is the one that we will use for
the rule filtering optimization.
The rightmost simple selector falls into four categories.
(1) The selector uses an ID. (Example: #foo)
(2) The selector doesn't have an ID but uses a class. (Example:
.foo)
(3) The selector has no class or ID but specifies a tag name.
(Example: div)
(4) The selector specifies none of these things. (Example:
*[disabled])
The rule is placed into one of four hashtables depending on which
category it falls into. The idea behind these categorizations is to
always filter out more specific information first. For example, if an
element has a specific ID, then obviously any rules whose rightmost
selector uses a different ID cannot match. Technically the last
category can just be a list and not a hashtable, since those rules
must always be examined by all elements.
Each hashtable, therefore, consists of a mapping from a given
atomic string to a set of rules that match. The class attribute is
exceptional in that you must put the rule into the hashtable multiple
times if multiple class attributes are used.
When determining the set of rules that match a given element, you
only examine rules that correspond to the correct hash entry based off
your ID, classes and tag name. This optimization basically eliminates
95+% of the rules up front so that they need not even be considered
during the matching process.
Each rule is then examined in detail, with all selectors being
checked, to determine if it is a match, and the set of matches is
collected. The set of matches can then be sorted by priority and
specificity such that all the declarations are in the proper
application order.
This brings us to the final phase of the style computation, which
is taking the set of matches and quickly computing the appropriate
front end style information. It is here that Gecko really shines.
What I implemented in Gecko was a data structure called the rule
tree for efficient storing of cached style information that can be
shared *even when* two elements are not necessarily the same.
The idea behind the rule tree is as follows. You can think of the
universe of possible rules in your document as an alphabet and the set
of rules that are matched by an element as a given input word. For
example, imagine that you had 26 rules in a stylesheet and you labeled
them A-Z. One element might match three rules in the sheet, thus
forming the input word "C-A-T" or another might form the input word
"D-O-G."
There are several important observations one can make once you
formulate the problem this way. The first is that words that are
prefixes of a larger word will end up applying the same set of rules.
All additional letters in the word do is result in the application of
more declarations. Thus the rule tree is effectively a lexicographic
tree of nodes, with each node in a tree being created lazily as you
walk the tree spelling out a given word.
This system allows you to cache style information at each node in
the tree. This means that once you've looked up the word
"C-A-T-E-R-W-A-U-L", and cached information at all of the nodes, then
looking up the word "C-A-T" becomes more efficient.
In order to make the caching efficient, properties can be grouped
into categories, with the primary criterion for categorization being
whether the property inherits by default. It's also important to
group properties together that would logically be specified together,
so that when a fault occurs and you have to make a copy of a given
struct, you do so knowing that the other values in the struct were
probably going to be different anyway.
Once you have the properties grouped into categories like the
border struct or the background struct, then you can either store
these structs in the rule tree or as part of a style tree that more or
less matches the structure of the document. Inheritance has to apply
down the style tree and tends to force a fault, whereas non-inherited
properties can usually be cached in the rule tree for easy access.
WebCore doesn't contain a rule tree, but it is smart enough to
refcount the structs and share them as long as no properties have been
set in the struct. In practice this works pretty well but is not as
ideal as the rule tree solution.
Enterprise Java Beans - Part 2,
Implementing Your First EJBs
Enterprise Java Beans - Part 2,
Implementing Your First EJBs
11/14/2003 03:33 AMWebmasterBase Nov 14 2003 2:36AM ET
Where Do You Use Wireless Devices?
Where Do You Use Wireless Devices?
09/10/2004 10:43 AMIf you ever needed more proof that people use wireless devices to help
them fill in the "empty" time when it used to be difficult to work or
communicate, Harris Interactive has the study for you. They've found
that a fair number of people use wireless devices
in places that previously were pretty much
off-limits towards anything productive: waiting in the
drive-through at the fast-food place (22%), while driving (20%) and in
the bathroom (15%). This isn't just talking about mobile data, but
mobile phone conversations, which would make you think that the
numbers should be higher. Of course, they are higher for the younger
generation, with 30% of college students admitting they used wireless
devices in the bathroom. Of course, whether or not this is a
good thing probably depends on whether or not you're one of the
people using wireless devices in these places.
Spy on CMU's wireless devices
Spy on CMU's wireless devices
11/13/2003 03:59 PM
Here's a real-time map of all the wireless devices using CMU's
campus-wide network.
Link
(
Thanks, Ophir!)
First 3G Wireless Devices for Canadians
First 3G Wireless Devices for Canadians
07/21/2004 09:36 AM3G Jul 21 2004 1:52PM GMT
Wireless devices a DNC hazard
Wireless devices a DNC hazard
07/27/2004 12:56 AMDirect and Related Links for 'Wireless
devices a DNC hazard'
“There’s a gaping hole in the much-hyped security
measures taken for this week’s Democratic National Convention:
Thousands of wireless devices around the FleetCenter could be used as
pawns in a cyberattack. Wireless security provider Newbury Networks
Inc. of Boston issued that warning after detecting the heavy
concentration of devices during a three-hour ‘war driving’
exercise through the city. Many of the unsecured wireless networks and
802.11 client cards were in a one-block radius of the…
Targus rolls out new wireless devices
Targus rolls out new wireless devices
07/26/2004 12:35 PMTargus has introduced a new Wireless Multimedia Presenter and Wireless
Calculator Keypad for notebook computers...
FCC Blocks Spam on Wireless Devices
FCC Blocks Spam on Wireless Devices
08/05/2004 02:31 PMThe FCC wants to stop spam from reaching your PDA and/or cell
phone. It's a step in the right direction and much appreciated, but
may not protect cell phones and PDAs from forwarded spam
emails.
The Federal Communications Commission yesterday moved to prevent cell
phones and personal digital assistants (PDAs) from becoming the next
major frontier for e-mail spam.
The agency issued rules requiring marketers to have explicit
permission from wireless-device users before they can be sent any
commercial e-mail. And it urged the industry to develop technologies
to prevent spam from overwhelming wireless devices the way it has
swamped computer messaging.
"By prohibiting all commercial messages to wireless phones and
PDAs absent affirmative consent from the consumer, Americans can now
use their wireless devices freely, without being bothered by unwanted
and annoying messages," FCC Chairman Michael K. Powell said in a
prepared statement.
The rule covers a rapidly expanding array of Web-based e-mail services
offered by wireless providers that enable customers to send and read
messages via their phones or PDAs.

View:
Complete Article

News source:
The Washington
PostRead full story...Cisco unveils wireless devices
Cisco unveils wireless devices
11/14/2003 09:08 AMComputer Weekly Nov 14 2003 8:10AM ET
Wireless FireWire devices coming
Wireless FireWire devices coming
05/12/2004 09:55 AMThe 1394 Trade Association this week approved a new specification that
enables companies to develop wireless FireWire products...
Wireless Devices Help Police Fight Crime
Wireless Devices Help Police Fight Crime
06/24/2004 09:25 PMAP via Daily Press Jun 25 2004 1:12AM GMT
FCC Blocks Spam on Wireless Devices
(washingtonpost.com)
FCC Blocks Spam on Wireless Devices
(washingtonpost.com)
08/05/2004 07:04 AMwashingtonpost.com - The Federal Communications Commission yesterday
moved to prevent cell phones and personal digital assistants (PDAs)
from becoming the next major frontier for e-mail spam.
Ambient Devices Launches Wireless
DataCasting Kit
Ambient Devices Launches Wireless
DataCasting Kit
03/24/2005 04:27 AMAmbient and Microsoft lead the trend to display glanceable
information. [PRWEB Mar 24, 2005]
Re[2]: Denial of Service Vulnerability
in IEEE 802.11 Wireless Devices
Re[2]: Denial of Service Vulnerability
in IEEE 802.11 Wireless Devices
05/17/2004 01:39 PMJason Ostrom (May 15 2004)
Testing of Location-Capable 3G UMTS
Wireless Devices
Testing of Location-Capable 3G UMTS
Wireless Devices
12/02/2003 04:16 AM3G Dec 2 2003 3:34AM ET
ParkerVision Intros D2D Wireless Chips
for Mobile Devices
ParkerVision Intros D2D Wireless Chips
for Mobile Devices
02/05/2005 09:51 PMPower Pulse.Net Feb 4 2005 11:36PM GMT
Re: Denial of Service Vulnerability in
IEEE 802.11 Wireless Devices
Re: Denial of Service Vulnerability in
IEEE 802.11 Wireless Devices
05/15/2004 03:52 PMCasper Dik (May 15 2004)
Denial of Service Vulnerability in IEEE
802.11 Wireless Devices
Denial of Service Vulnerability in IEEE
802.11 Wireless Devices
05/15/2004 02:44 PMalbatross_at_tim.it (May 15 2004)
New Wireless Chips Reduce Power
Consumption in Mobile Devices
New Wireless Chips Reduce Power
Consumption in Mobile Devices
02/01/2005 09:37 PMLockergnome Feb 1 2005 10:30AM GMT
IntelliTrack Adds Support for Wireless
Devices from American Microsystems Ltd.
IntelliTrack Adds Support for Wireless
Devices from American Microsystems Ltd.
02/01/2005 09:17 PMIntelliTrack Inc., the leading manufacturer of affordable bar code
tracking software, announced today that its entire product line now
supports the American Microsystems Ltd. (AML) Wireless (RF) Terminal,
model M7100. [PRWEB Jan 28, 2005]
Microsoft, Fiat Form Partnership on
Putting Wireless Devices in Vehicles
Microsoft, Fiat Form Partnership on
Putting Wireless Devices in Vehicles
07/15/2004 05:06 PMTechnology Review Jul 15 2004 9:42PM GMT
Telecom Italia CEO sees innovation in
design and features of wireless devices
Telecom Italia CEO sees innovation in
design and features of wireless devices
09/22/2004 02:49 PMVENICE - One of Europe's biggest fixed-network operators is following
the lead of its wireless counterparts in demanding a greater say in
the design and service features of cordless phones and other wireless
devices used in the home.
Ethernet to Serial- MOXA Wireless Device
Server Network RS-232, RS-422, RS-485
Devices
Ethernet to Serial- MOXA Wireless Device
Server Network RS-232, RS-422, RS-485
Devices
02/05/2005 09:05 PMMOXA offers single and multi-port wireless device server for
Serial-to-Wireless LAN applications [PRWEB Feb 4, 2005]
Siemens ICM WM Chooses Analog Devices
and TTPCom Wireless Technologies for
Next-Generation EDGE Modules
Siemens ICM WM Chooses Analog Devices
and TTPCom Wireless Technologies for
Next-Generation EDGE Modules
06/19/2004 02:50 AMLeading manufacturer of wireless modules will use ADI’s Blackfin
SoftFone for EDGE and TTPCom’s protocol software in new modules [PRWEB
Jun 19, 2004]
Adesso Cuts the Cord with New Elegant,
Wireless Keyboards with Integrated
Cursor Control Devices
Adesso Cuts the Cord with New Elegant,
Wireless Keyboards with Integrated
Cursor Control Devices
02/01/2005 09:13 PMNew 2.4 GHz and Infrared wireless keyboard series feature integrated
touchpad, trackball, or cursor pad [PRWEB Jan 31, 2005]
SplashData Launches SplashMoney 4.0 for
Palm OS Devices, Introducing Wireless
Online Banking for PDAs and Smartphones
SplashData Launches SplashMoney 4.0 for
Palm OS Devices, Introducing Wireless
Online Banking for PDAs and Smartphones
03/14/2005 05:26 PMFinancial management software also provides two-way synchronization
with desktop PCs. [PRWEB Mar 1, 2005]
RegiSoft and SiSTeR cooperate to enable
the simple creation, formatting, and
delivery of Multi Media Messages for
wireless devices.
RegiSoft and SiSTeR cooperate to enable
the simple creation, formatting, and
delivery of Multi Media Messages for
wireless devices.
06/17/2004 03:25 AMRegiSoft, creators of the World Trade Server™ middleware platform, and
applications for m-commerce, and Silver Screen Tele-Reality (SiSTeR),
creators of M-Plat, an online video editing and embedded voice-over
platform, has signed an agreement to integrate and co-market their
products to create an enhanced offering using their innovative
technologies. [PRWEB Jun 17, 2004]
Q&A: Wireless LANs, part 2
Q&A: Wireless LANs, part 2
04/14/2004 06:31 AMvnunet.com Apr 14 2004 11:09AM GMT
Wireless Attacks and Penetration Testing
(part 1 of 3)
Wireless Attacks and Penetration Testing
(part 1 of 3)
06/04/2004 05:57 AMWireless Attacks and Penetration Testing
(part 2 of 3)
Wireless Attacks and Penetration Testing
(part 2 of 3)
06/15/2004 09:51 AMWireless Attacks and Penetration Testing
(part 3 of 3)
Wireless Attacks and Penetration Testing
(part 3 of 3)
07/27/2004 09:29 AMDevice Server - Wireless Serial to
Ethernet Converter for RS232/422/485
Serial Devices
Device Server - Wireless Serial to
Ethernet Converter for RS232/422/485
Serial Devices
12/29/2004 05:50 AMHelloDevice SS110 is a Wireless-enabled serial to ethernet converter
for RS232/422/485 based serial devices. [PRWEB Dec 29, 2004]
Ori Amiga - Tour of mobile devices with
Visual Studio for Devices team
Ori Amiga - Tour of mobile devices with
Visual Studio for Devices team
09/25/2004 09:16 AMOri Amiga shows off all the devices that he has hanging out in his
office (someone has to test Visual Studio and make sure it works great
with all the devices).
AT&T Wireless slashing 1,900 jobs as
part of cost-cutting
AT&T Wireless slashing 1,900 jobs as
part of cost-cutting
11/14/2003 08:37 PMSiliconValley.com Nov 14 2003 7:45PM ET
Barefoot Software Launch Australian
Swimsuit Edition-Free, a Free Mobile
Phone and Wireless Device Service for
Cardmate on Symbian Devices
Barefoot Software Launch Australian
Swimsuit Edition-Free, a Free Mobile
Phone and Wireless Device Service for
Cardmate on Symbian Devices
06/12/2004 02:48 AMBarefoot Software Asia Limited (BSAL) is pleased to announce the
launch Australian Swimsuit Edition-Free (ASE), via the Barefoot
Software website (http://www.barefootsoft.com) for immediate download.
ASE is a Cardmate application for mobile phones which is being
launched for Free as a promotional application to end users who have a
Symbian based mobile phone. ASE, the first Australian swimsuit model
application for Smartphone devices in the World can initially be
downloaded by users who have a Nokia (6600/3650/7650), Sony Ericsson
P800/P900 and other compatible phones from the barefoot Web site.
[PRWEB Jun 12, 2004]
Bitboys Introduces New Graphics
Processorsfor Wireless Devices - Small,
Smart and Efficient Processor Cores
Bring Advanced Graphics Capabilities to
Handheld Products
Bitboys Introduces New Graphics
Processorsfor Wireless Devices - Small,
Smart and Efficient Processor Cores
Bring Advanced Graphics Capabilities to
Handheld Products
08/10/2004 03:08 AM(Los Angeles, California and Espoo, Finland – August 10th, 2004) --
Bitboys, a provider of graphics hardware solutions, today announced
and demonstrated the company’s new graphics processor product line for
wireless and embedded devices at SIGGRAPH 2004 in Los Angeles. [PRWEB
Aug 10, 2004]
Grok Description matches for Implementing XPath for Wireless Devices, Part II
GrokA matches for Implementing XPath for Wireless Devices, Part II
Implementing XPath for Wireless Devices, Part II