Money Play. How should Red play 54?
pips Red=121 White=140
(CorrectAnswer= 0/0, ErrorScore= 0)
This one was a memory test as it appeared on Saturday 21st October in the long weekend article under the title “Before the Halloween Ball”. That article, with its surprising denouement, is reproduced here:
Preparations for the Halloween Ball were well under way at Harbinger Hall. A veritable plethora of pumpkins could be seen wherever one looked. Witches on broomsticks were also in plentiful supply as the great hall was decorated.
The preparations went largely unnoticed in the library where the usual suspects were gathered around the backgammon board as the afternoon chouette continued apace. Quentin Quickcube held the box as White. The team captain was Barry Bigplay.
When this 54 landed on the board BB was quick to speak.
“We are well ahead in the race and this roll puts us 28 pips ahead. 20/11 looks as plain as a pikestaff to me. Anybody else have a different idea?”
“Are you sure about giving up the anchor, BB?”, enquired Cautious Cuthbert. “QQ does have twelve checkers in the attack zone. Isn’t that rather too many? What about playing 11/2? Surely one dead checker cannot hurt us that much?”
“Your natural caution will be the death of us, CC’ said the Dowager Duchess, finally entering the debate. “BB’s play has merit but perhaps we should just release the mid-point with either 13/9, 13/8 or perhaps even 13/4 which I notice rather cleverly duplicates ones? I am sure Paul Magriel would like that play. You have been very quiet, EE. Which of the four plays do you like, and please don’t say CC’s 11/2!”
While the others had been speaking the Enigmatic Englishman had been studying the position intently and only now did he venture to speak.
“As usual you have all suggested moves without explaining how they tie in to any form of strategy. How many times have I explained that any move must play to a plan, whether that plan be straightforward or not.
“Of course, we want to run the back checkers but hours of study have taught me that the majority players relinquish their anchors far too soon. CC is right in one respect and that is to examine the number of QQ’s checkers in the attack zone. Twelve is, as he surmises, too many. What then should our plan? It is two-fold. We want to strengthen our own home board before we start to run and ideally, we would like QQ’s position to advance somewhat to make it easier for us leap with both our rear checkers.”
“And how do you propose we do that?”, asked BB.
“We can dismiss CC’s 11/2 which weakens rather than strengthens our position. We have discounted BB’s 20/11 as too dangerous. Of DD’s two play 13/9, 13/8 is the weaker as it destroys our connectivity and lets QQ hit and run with any six. Any such hit leaves us with few return shots. 13/4 is better as it maintains some connectivity and generates more return shots.”
“So, 13/4 must be the play,” said DD.” I knew I was finally getting the hang of the game, Excellent!”
“So very nearly, my dear DD’, replied EE. “We have yet to discuss the merit of one more play, namely 11/6, 8/4.”
“A double direct shot?
“Far from it, CC. Once you see the play it becomes obvious. Consider: it starts to strengthen our home board; it maintains the mid-point and thus it also maintains our connectivity; it takes tactical advantage of the blot on QQ’s 3-pt because of the duplication of fives and finally, assuming QQ doesn’t hit both blots, we will get a lot of return shots if QQ elects to hit.”
“Good Lord, EE, how do you see so much in a single position”, asked DD.
“Because while you talked, I analysed. Whatever you may think backgammon is a very, very difficult game to play well and sometimes only deep analysis will reveal the correct play. That is the case here.”
“I am convinced, 11/6, 8/4 it is”, said BB.
“Personally, I am exhausted after so much analysis”, Said DD. “Graves, kindly bring me a strong whisky and soda.”
“Certainly, madam”, replied that most eminent of butlers.
Preparations for the Halloween Ball were well under way at Harbinger Hall. A veritable plethora of pumpkins could be seen wherever one looked. Witches on broomsticks were also in plentiful supply as the great hall was decorated.
The preparations went largely unnoticed in the library where the usual suspects were gathered around the backgammon board as the afternoon chouette continued apace. Quentin Quickcube held the box as White. The team captain was Barry Bigplay.
When this 54 landed on the board BB was quick to speak.
“We are well ahead in the race and this roll puts us 28 pips ahead. 20/11 looks as plain as a pikestaff to me. Anybody else have a different idea?”
“Are you sure about giving up the anchor, BB?”, enquired Cautious Cuthbert. “QQ does have twelve checkers in the attack zone. Isn’t that rather too many? What about playing 11/2? Surely one dead checker cannot hurt us that much?”
“Your natural caution will be the death of us, CC’ said the Dowager Duchess, finally entering the debate. “BB’s play has merit but perhaps we should just release the mid-point with either 13/9, 13/8 or perhaps even 13/4 which I notice rather cleverly duplicates ones? I am sure Paul Magriel would like that play. You have been very quiet, EE. Which of the four plays do you like, and please don’t say CC’s 11/2!”
While the others had been speaking the Enigmatic Englishman had been studying the position intently and only now did he venture to speak.
“As usual you have all suggested moves without explaining how they tie in to any form of strategy. How many times have I explained that any move must play to a plan, whether that plan be straightforward or not.
“Of course, we want to run the back checkers but hours of study have taught me that the majority players relinquish their anchors far too soon. CC is right in one respect and that is to examine the number of QQ’s checkers in the attack zone. Twelve is, as he surmises, too many. What then should our plan? It is two-fold. We want to strengthen our own home board before we start to run and ideally, we would like QQ’s position to advance somewhat to make it easier for us leap with both our rear checkers.”
“And how do you propose we do that?”, asked BB.
“We can dismiss CC’s 11/2 which weakens rather than strengthens our position. We have discounted BB’s 20/11 as too dangerous. Of DD’s two play 13/9, 13/8 is the weaker as it destroys our connectivity and lets QQ hit and run with any six. Any such hit leaves us with few return shots. 13/4 is better as it maintains some connectivity and generates more return shots.”
“So, 13/4 must be the play,” said DD.” I knew I was finally getting the hang of the game, Excellent!”
“So very nearly, my dear DD’, replied EE. “We have yet to discuss the merit of one more play, namely 11/6, 8/4.”
“A double direct shot?
“Far from it, CC. Once you see the play it becomes obvious. Consider: it starts to strengthen our home board; it maintains the mid-point and thus it also maintains our connectivity; it takes tactical advantage of the blot on QQ’s 3-pt because of the duplication of fives and finally, assuming QQ doesn’t hit both blots, we will get a lot of return shots if QQ elects to hit.”
“Good Lord, EE, how do you see so much in a single position”, asked DD.
“Because while you talked, I analysed. Whatever you may think backgammon is a very, very difficult game to play well and sometimes only deep analysis will reveal the correct play. That is the case here.”
“I am convinced, 11/6, 8/4 it is”, said BB.
“Personally, I am exhausted after so much analysis”, Said DD. “Graves, kindly bring me a strong whisky and soda.”
“Certainly, madam”, replied that most eminent of butlers.
1. Cubeful 2-ply 13/9 13/8 Eq.: +0.044 0.504 0.127 0.002 - 0.496 0.084 0.003 2. Cubeful 2-ply 13/4 Eq.: +0.038 (-0.006) 0.505 0.127 0.002 - 0.495 0.094 0.004 3. Cubeful 2-ply 11/6 8/4 Eq.: +0.036 (-0.008) 0.504 0.129 0.002 - 0.496 0.092 0.003 4. Cubeful 2-ply 11/2 Eq.: +0.005 (-0.039) 0.499 0.106 0.001 - 0.501 0.093 0.003 5. Cubeful 2-ply 13/9 11/6 Eq.: -0.011 (-0.055) 0.487 0.137 0.002 - 0.513 0.095 0.003


| 008:036 Khan | : |
Verily, those who disbelieve spend their wealth to hinder (men) from the Path of Allah, and so will they continue to spend it; but in the end it will become an anguish for them. Then they will be overcomed. And those who disbelieve will be gathered unto Hell. |
| 008:036 Maulana | : |
Surely those who disbelieve spend their wealth to hinder (people) from the way of Allah. So they will go on spending it, then it will be to them a regret, then they will be overcome. And those who disbelieve will be gathered together to hell, |
| 008:036 Pickthal | : |
Lo! those who disbelieve spend their wealth in order that they may debar (men) from the way of Allah. They will spend it, then it will become an anguish for them, then they will be conquered. And those who disbelieve will be gathered unto hell, |
| 008:036 Rashad | : |
Those who disbelieve spend their money to repel others from the way of GOD. They will spend it, then it will turn into sorrow and remorse for them. Ultimately, they will be defeated, and all disbelievers will be summoned to Hell. |
| 008:036 Sarwar | : |
The disbelievers spend their wealth to turn men away from the way of God. They will continue to spend but it will become a source of regret for them and they will be defeated (because of their evil plans).  They will surely continue to spend it; but then shall it become a source of regret for them, and then shall they be overcome. And the disbelievers shall be gathered unto Hell; |
| 008:036 Yusufali | : |
The Unbelievers spend their wealth to hinder (man) from the path of Allah, and so will they continue to spend; but in the end they will have (only) regrets and sighs; at length they will be overcome: and the Unbelievers will be gathered together to Hell;- |
Concepts/Themes Covered: أركان الإسلام > التوحيد > الكافرون > صفات الكفار Pillars of Islam> Islamic> The Disbelievers> The Characteristics of the Disbelievers أركان الإسلام > التوحيد > الكافرون > عمل الكفار لا ينفعهم يوم القيامة Pillars of Islam> Islamic> The Disbelievers> The Disbelievers' Deeds does not Benefit them on the Day of Judgement الإيمان > الغيب > النار > أصحاب النار Faith> The Unseen World> Hell-Fire>Hell Fellows تنظيم العلاقات المالية > أموال الكفار Organizing Financial Relationships>The Unbeleivers' Property تنظيم العلاقات المالية > إنفاقها Organizing Financial Relationships>Its Expenditure تنظيم العلاقات المالية > الغنى > الأغنياء Organizing Financial Relationships>Richness>The Rich
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


Midgley, Frances Emma
| Birth Name | Midgley, Frances Emma |
| Gender | female |
| Age at Death | 79 years, 8 months, 2 days |
Narrative
SMH - BONGERS - Frances Emma - 25 June, 1992 (suddenly) at her residence, late of Campsie, beloved wife of the late Leslie Bongers, dear sister of Olive, loving mother & mother-in-law of Alan & Gaye, Heather, Bruce & Jennifer & Beryl, fond grandmother of Mark, Peter, Monique, Troy, Adam & Jacob, aged 79years.
FUNERAL - The rels & friends of the late FRANCES EMMA BONGERS of Campsie, are invited to her funeral service in South Chapel at Woronora Crematorium on Tuesday, (30/6/1992) at 10am.
Events
| Event | Date | Place | Description | Sources |
|---|---|---|---|---|
| Birth | 1912-10-23 | Sutherland NSW #49847 | ||
|
|
||||
| Death | 1992-06-25 | Campsie NSW (79yrs). | ||
|
|
||||
| Burial | 1992-06-30 | Woronora Cematorium, Sutherland NSW | ||
|
|
Parents
| Relation to main person | Name | Birth date | Death date | Relation within this family (if not by birth) |
|---|---|---|---|---|
| Father | Midgley, George R.A. | |||
| Mother | Fripp, Jessie E. | |||
| Midgley, Frances Emma | 1912-10-23 | 1992-06-25 |
Families
Family of Bongers, Leslie Raymond and Midgley, Frances Emma |
|||||||||||||||||
| Married | Husband | Bongers, Leslie Raymond ( * 1914-02-02 + 1962-01-13 ) | |||||||||||||||
|
|||||||||||||||||
| Narrative |
Les & Frances were married at Frances's home at Menai, in 1939, but the marriage was registered at Sutherland NSW #22647. |
||||||||||||||||
| Children |
| Name | Birth Date | Death Date |
|---|---|---|
| Bongers, [Living] | ||
| Bongers, [Living] | ||
| Bongers, [Living] | ||
| Bongers, [Living] |
| Type | Value | Notes | Sources |
|---|---|---|---|
| _UID | EFFCFA65E5C4D5119853B7EB0FA9CA6D55B2 |
Attributes
| Type | Value | Notes | Sources |
|---|---|---|---|
| _UID | A7FEFA65E5C4D5119853B7EB0FA9CA6D0F50 |


CN Rail strike prompts frustration from farmers
by The Canadian PressMONTREAL – The strike by more than three-thousand CN Rail workers has stalled commodities and frustrated farmers who rely on propane to dry their grain and heat their barns and greenhouses.
The sense of urgency around the week-long strike’s ripple effects continues to grow.
Today, hundreds of Quebec farmers marched through the streets of Montreal alongside a convoy of tractors to dump heaps of corn at the steps of Prime Minister Justin Trudeau’s riding office.
They’re calling on Ottawa to resolve the labour stoppage that has idled trains across the country.
Pascal Leduc, a corn producer from north of Montreal, says half his crop lies in the fields because a full silo prevents him from harvesting it while winter snows threaten to blanket it and leave the yield unusable.
He says he doesn’t want to lose his crop.
On another front, Canada’s largest potash mine announced today it will temporarily shut down and lay off 550 employees as a result of the strike.
Fertilizer giant Nutrien has notified workers that its mine in southeastern Saskatchewan will halt operations for two weeks starting December 2nd.
The vast majority of the Rocanville mine’s product is shipped by C-N Rail, which is now operating at 10 per cent capacity.
The announcement comes two days after news broke of 70 short-term layoffs at C-N’s auto terminal in the Halifax area due to halted car shipments.


Accommodations
We provide everything you need!
Fresh Sheets
Comfiest Pillows
Best Smelling Toiletries
Even Pajamas!
Free Snacks!!


Currency Converter
Hello [[${user.name}]]
Log Out
Date
Base Currency
Target Currency
Submit
Latest
Base currency disabled as it is not supported in free plans
Exchange rate not found
Most Recent Queries
[[${hist.date} ? ${#dates.format(hist.date, 'dd-MM-yyyy')} : 'Latest']]
[[${hist.source}]]
[[${hist.target}]]
[[${hist.rate}]]


Converts line and polyline cell_sets to tubes.
module tube <build_dir="xp_comm_proj/tubes", src_file="tube.cxx", out_src_file="gen.cxx", out_hdr_file="gen.hxx", libdeps="FLD", cxx_hdr_files="fld/Xfld.h", process="express"> { cxxmethod+req upd( .in+notify+read+req, .axis+notify+read+req, .xform+notify+read+req, .zscale+notify+read+req, .resolution+notify+read+req, .normalise+read+notify+req, .scale+read+notify+req, .node_cell+read+notify+req, .node_data_comp+read+notify+req, .cell_data_comp+read+notify+req, .col_data_comp+notify+read+req, .out+write, .err+write, .err_str+write ); VISmesh+IPort2 &in<export=2>; int+IPort2 axis<export=2>; int+IPort2 xform<export=2>; float+IPort2 zscale<export=2>; int+IPort2 resolution<export=2>; int+IPort2 normalise<export=2>; float+IPort2 scale<export=2>; int+IPort2 node_cell<export=2>; int+IPort2 node_data_comp<export=2>; int+IPort2 cell_data_comp<export=2>; int+IPort2 col_data_comp<export=2>; Field+OPort2 out<export=2>; int+OPort2 err<export=2>; string+OPort2 err_str<export=2>; };
This module takes a field with line or polyline cell_sets, and generates tubes for the lines, which may be coloured using another dataset. Each line cell is turned into a tube. All other cell types are ignored.
The radii are controlled by the data. The radii may be cell- or node-based. Cell-based radii (i.e. from the cell_data[]) ensure each tube has a constant radius. Node-based (i.e. from the node_data[]) allows the radius of the tube to vary across the cell. If there is no data, normalise is set and the scale value used.
Similarly, the colours are based on cell- or node-data. Colour data is optional.
The 2D mode is designed for use with output from modules like isoline. I calculate the tubes on the XY plane (by default) and then use the input field's xform to xform the tubes to the correct orientation in 3D space.
All data must be scalar!
Limitations:
- Does not handle NULL data
- Data must be scalar
- Data is type cast to float
in: Mesh 3D/2D with either line or polyline cell_sets. May have node and/or cell data to define radii and colours.
axis: axis to project 2D data (like the output from isoline) perpendicular to (default is 2 = Z).
xform: toggle whether to copy in xform to out or not. This is useful for 2D datasets like isoline which are calculated on the XY plane and then use the xform to transform them to the correct position in 3D space.
zscale: some 2D modules (like slice_plane) don't scale Z with X and Y. This allows the user to scale Z manually
resolution: number of facets for each tube.
normalise: toggle for normalising: 0 - no normalising - uses data for radii; 1 - all radii set to scale - does not use data. If data is invalid (either not there or vector), this flag is automatically set.
scale: scale factor for radii.
node_cell: toggle for selecting whether to use cell or node data: 0 - use node data defined by node_data_comp; 1 - use cell data defined by cell_data_comp
node_data_comp: the data to use if node_cell == 0
cell_data_comp: the data to use if node_cell == 1
col_data_comp: the node data to use for colouring. If node_cell == 0, we use node data, else we use cell_data.
out: Field 3D Quad cell set
err: error toggle
err_str: error string
Parameter Group: TubesParams
Functional Macro: TubesFunc
UI Macro: TubesUI
User Macro: tubes
TubeEg1 and TubeEg2
xp_comm_proj/tubes/tubes.v, xp_comm_proj/tubes/tubesmods.v, xp_comm_proj/tubes/tubesmacs.v
Revisions:
- added 2D support, 26/08/97, JM
- added multiple cell_set support, 26/08/97, JM
- added xform for 2D, 26/08/97, JM
- fixed up checks for invalid cell and node data, 26/08/97, JM
- fixed up data limits, 26/07/97, JM
- changed from (OMobj_id) to .obj_id(), 19/07/99, AWD
Jeremy Maccelari -<EMAIL_ADDRESS>Andrew Dodd
Robert Frank Manchester Visualization Centre


Gulp is a javascript task runner that lets you automate tasks such as building, minifying, live reload, pre-process files and more...
GulpJS


AKW KMT Calculator
AKW KMT Calculator is a simple calculator that is made by
<EMAIL_ADDRESS>(@akwdhit)
to define how much each card should be topped up to have similar amount afterwards.
Expected Value:
Please specify total cards:
1
Current Balance on Card
Suggested TopUp Amount


'#DontAbuseOurStaff' - Homeowner leaves rude note on parked ambulance during emergency
Life-saving paramedics returned to their vehicle to find the note
by Milo BoydAn ambulance chief has urged the public #DontAbuseOurStaff after a rude note was left on a vehicle that was attending an emergency.
Life-saving paramedics returned to their ambulance to find the insulting note slapped on the windscreen.
The person criticised staff for parking their vehicle over the householder's drive, according to The Mirror .
"Dumbass!" the note, which was covered by plastic to protect it from the elements, exclaimed.
"You are fully blocking my driveway!"
South Central Ambulance Service NHS Foundation Trust said the crew were on a 999 call in Lymington, Hampshire, when the incident happened.
The service posted a photo of the note on its Twitter account above a caption defending its paramedics.
"Sadly, Zoe & Chris came back to this in in Lymington, Hampshire, today," the post explained.
"It's not always possible to park without obstructing traffic flow or driveways as parking further away could add minutes to our arrival time that the patient simply doesn't have.
"#DontAbuseOurStaff."
Mark Davis, South Central Ambulance Service governor, expressed his disappointment at the note.
“Disgusting to see, very sad that some people do not appreciate that amazing work our clinicians do every day of the week," he wrote.
The trust, which serves more than seven million people across an area comprising of Hampshire, Berkshire, Buckinghamshire and Oxfordshire has received 800 supportive comments after posting the note.
Ellen Taylor said: “Unbelievable, just hope that person is never the emergency, they might be more understanding and compassionate.
“You all do a great job for which most of us are incapable of doing. Thank you for all you do.”
Dr Sarah Schofield, chair of the West Hampshire Clinical Commissioning group, said: “Ambulance teams and the wider NHS support patients and save lives across Hampshire.
“No NHS staff should suffer any form of abuse, and it is vital that emergency services can access people’s homes as quickly as possible to treat a medical emergency.
“We would like to thank ambulance teams for their continuous hard work and dedication, especially as we head into the busiest time of year.”


The mid-Pliocene warm period provides a natural laboratory to investigate the long-term response of the Earth’s ice-sheets and sea level in a warmer-than-present-day world. Proxy data suggest that during the warm Pliocene, portions of the Antarctic ice-sheets, including West Antarctica could have been lost. Ice-sheet modelling forced by Pliocene climate model outputs is an essential way to improve our understanding of ice-sheets during the Pliocene. However, uncertainty exists regarding the degree to which results are model-dependent. Using climatological forcing from an international climate modelling intercomparison project, we demonstrate the high dependency of Antarctic ice-sheet volume predictions on the climate model-based forcing used. In addition, the collapse of the vulnerable marine basins of Antarctica is dependent on the ice-sheet model used. These results demonstrate that great caution is required in order to avoid making unsound statements about the nature of the Pliocene Antarctic ice-sheet based on model results that do not account for structural uncertainty in both the climate and ice sheet models.
Ice sheet models forced by climate model output indicate ice-sheet retreat during the Pliocene, yet concerns remain regarding potential model bias. Here, the authors present results from the Pliocene Ice-sheet Modelling Intercomparison Project, and show that results are highly dependent on the model forcing used.


|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--javax.xml.soap.AttachmentPart | +--org.apache.axis.attachments.AttachmentPart
Class AttachmentPart
| Field Summary | |
protected static org.apache.commons.logging.Log |
log
Field log |
| Constructor Summary | |
AttachmentPart()
Constructor AttachmentPart |
|
AttachmentPart(javax.activation.DataHandler dh)
Constructor AttachmentPart |
| Method Summary | |
void |
addMimeHeader(java.lang.String header,
java.lang.String value)
Add the specified MIME header, as per JAXM. |
void |
clearContent()
Clears out the content of this
AttachmentPart object. |
void |
detachAttachmentFile()
detach the attachment file from this class, so it is not cleaned up |
void |
dispose()
when an attachment part is disposed, any associated files are deleted |
protected void |
finalize()
on death, we clean up our file |
javax.activation.DataHandler |
getActivationDataHandler()
Method getActivationDataHandler |
java.util.Iterator |
getAllMimeHeaders()
Retrieves all the headers for this
AttachmentPart object as an iterator over the
MimeHeader objects. |
java.lang.String |
getAttachmentFile()
get the filename of this attachment |
java.lang.Object |
getContent()
Gets the content of this AttachmentPart object
as a Java object. |
java.lang.String |
getContentId()
Content ID. |
java.lang.String |
getContentIdRef()
Content ID. |
java.lang.String |
getContentLocation()
Content location. |
java.lang.String |
getContentType()
getContentType |
javax.activation.DataHandler |
getDataHandler()
Gets the DataHandler object for this
AttachmentPart object. |
java.lang.String |
getFirstMimeHeader(java.lang.String header)
Get the specified MIME header. |
java.util.Iterator |
getMatchingMimeHeaders(java.lang.String[] match)
Get all headers that match |
java.lang.String[] |
getMimeHeader(java.lang.String name)
Gets all the values of the header identified by the given String . |
java.util.Iterator |
getNonMatchingMimeHeaders(java.lang.String[] match)
Get all headers that do not match |
int |
getSize()
Returns the number of bytes in this
AttachmentPart object. |
boolean |
matches(MimeHeaders headers)
check if this Part's mimeheaders matches the one passed in. |
void |
removeAllMimeHeaders()
Removes all the MIME header entries. |
void |
removeMimeHeader(java.lang.String header)
Removes all MIME headers that match the given name. |
protected void |
setAttachmentFile(java.lang.String path)
set the filename of this attachment part |
void |
setContent(java.lang.Object object,
java.lang.String contentType)
Sets the content of this attachment part to that of the given Object and sets the value of the
Content-Type header to the given type. |
void |
setContentId(java.lang.String newCid)
Sets Content-Id of this part. |
void |
setContentLocation(java.lang.String loc)
Set content location. |
void |
setDataHandler(javax.activation.DataHandler datahandler)
Sets the given DataHandler object as the
data handler for this AttachmentPart object. |
void |
setMimeHeader(java.lang.String name,
java.lang.String value)
Changes the first header entry that matches the given name to the given value, adding a new header if no existing header matches. |
| Methods inherited from class javax.xml.soap.AttachmentPart |
setContentType |
| Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
protected static org.apache.commons.logging.Log log
| Constructor Detail |
public AttachmentPart()
public AttachmentPart(javax.activation.DataHandler dh)
dh
- | Method Detail |
protected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable
public javax.activation.DataHandler getActivationDataHandler()
public java.lang.String getContentType()
getContentType
in interface Part
getContentType
in class AttachmentPart
public void addMimeHeader(java.lang.String header, java.lang.String value)
addMimeHeader
in interface Part
addMimeHeader
in class AttachmentPart
header
- value
- public java.lang.String getFirstMimeHeader(java.lang.String header)
header
-
public boolean matches(MimeHeaders headers)
public java.lang.String getContentLocation()
getContentLocation
in interface Part
getContentLocation
in class AttachmentPart
String
giving the value of the
"Content-Location" header or null
if there
is nonepublic void setContentLocation(java.lang.String loc)
setContentLocation
in interface Part
setContentLocation
in class AttachmentPart
loc
- public void setContentId(java.lang.String newCid)
setContentId
in interface Part
setContentId
in class AttachmentPart
newCid
- new Content-Idpublic java.lang.String getContentId()
getContentId
in interface Part
getContentId
in class AttachmentPart
setContentId(java.lang.String)
public java.util.Iterator getMatchingMimeHeaders(java.lang.String[] match)
getMatchingMimeHeaders
in interface Part
getMatchingMimeHeaders
in class AttachmentPart
match
-
public java.util.Iterator getNonMatchingMimeHeaders(java.lang.String[] match)
getNonMatchingMimeHeaders
in interface Part
getNonMatchingMimeHeaders
in class AttachmentPart
match
-
public java.util.Iterator getAllMimeHeaders()
AttachmentPart
object as an iterator over the
MimeHeader
objects.
getAllMimeHeaders
in class AttachmentPart
Iterator
object with all of the Mime
headers for this AttachmentPart
objectpublic void setMimeHeader(java.lang.String name, java.lang.String value)
Note that RFC822 headers can only contain US-ASCII characters.
setMimeHeader
in class AttachmentPart
name
- a String
giving the
name of the header for which to searchvalue
- a String
giving the
value to be set for the header whose name matches the
given name
java.lang.IllegalArgumentException
- if
there was a problem with the specified mime header name
or valuepublic void removeAllMimeHeaders()
removeAllMimeHeaders
in class AttachmentPart
public void removeMimeHeader(java.lang.String header)
removeMimeHeader
in class AttachmentPart
header
- - the string name of the MIME
header/s to be removedpublic javax.activation.DataHandler getDataHandler() throws SOAPException
DataHandler
object for this
AttachmentPart
object.
getDataHandler
in class AttachmentPart
DataHandler
object associated with
this AttachmentPart
object
SOAPException
- if there is
no data in this AttachmentPart
objectpublic void setDataHandler(javax.activation.DataHandler datahandler)
DataHandler
object as the
data handler for this AttachmentPart
object.
Typically, on an incoming message, the data handler is
automatically set. When a message is being created and
populated with content, the setDataHandler
method can be used to get data from various data sources into
the message.
setDataHandler
in class AttachmentPart
datahandler
- DataHandler
object to
be set
java.lang.IllegalArgumentException
- if
there was a problem with the specified
DataHandler
objectpublic java.lang.Object getContent() throws SOAPException
AttachmentPart
object
as a Java object. The type of the returned Java object
depends on (1) the DataContentHandler
object
that is used to interpret the bytes and (2) the
Content-Type
given in the header.
For the MIME content types "text/plain", "text/html" and
"text/xml", the DataContentHandler
object does
the conversions to and from the Java types corresponding to
the MIME types. For other MIME types,the
DataContentHandler
object can return an
InputStream
object that contains the content data as
raw bytes.
A JAXM-compliant implementation must, as a minimum,
return a java.lang.String
object corresponding
to any content stream with a Content-Type
value of text/plain
and a
javax.xml.transform.StreamSource
object
corresponding to a content stream with a
Content-Type
value of text/xml
. For
those content types that an installed
DataContentHandler
object does not understand, the
DataContentHandler
object is required to
return a java.io.InputStream
object with the
raw bytes.
getContent
in class AttachmentPart
AttachmentPart
object
SOAPException
- if there is no content set
into this AttachmentPart
object or if there
was a data transformation errorpublic void setContent(java.lang.Object object, java.lang.String contentType)
Object
and sets the value of the
Content-Type
header to the given type. The type of the
Object
should correspond to the value given for
the Content-Type
. This depends on the particular
set of DataContentHandler
objects in use.
setContent
in class AttachmentPart
object
- the Java object that makes up
the content for this attachment partcontentType
- the MIME string that
specifies the type of the content
java.lang.IllegalArgumentException
- if
the contentType does not match the type of the content
object, or if there was no
DataContentHandler
object for this content
objectgetContent()
public void clearContent()
AttachmentPart
object. The MIME header portion is left
untouched.
clearContent
in class AttachmentPart
public int getSize() throws SOAPException
AttachmentPart
object.
getSize
in class AttachmentPart
AttachmentPart
object
in bytes or -1 if the size cannot be determined
SOAPException
- if the content of this
attachment is corrupted of if there was an exception
while trying to determine the size.public java.lang.String[] getMimeHeader(java.lang.String name)
String
.
getMimeHeader
in interface Part
getMimeHeader
in class AttachmentPart
name
- the name of the header; example:
"Content-Type"
String
array giving the value for the
specified headersetMimeHeader(java.lang.String, java.lang.String)
public java.lang.String getContentIdRef()
getContentIdRef
in interface Part
protected void setAttachmentFile(java.lang.String path)
path
- public void detachAttachmentFile()
public java.lang.String getAttachmentFile()
public void dispose()
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


As the majority of Puppet’s syntax is written left-to-right, right-to-left chaining arrows (<-
and <~
) can be confusing and are not recommended.
service { 'sshd': ensure => running, enable => true, } <~ # Noncompliant file { '/etc/ssh/sshd_config': ensure => file, mode => '0600', source => 'puppet:///modules/sshd/sshd_config', } <- # Noncompliant package { 'openssh-server': ensure => present, }
package { 'openssh-server': ensure => present, } -> file { '/etc/ssh/sshd_config': ensure => file, mode => '0600', source => 'puppet:///modules/sshd/sshd_config', } ~> service { 'sshd': ensure => running, enable => true, }


Photographer & Free Code Camp Student
Blog Pages
Short project description goes here...
Copyright © Luis Alí. All Rights Reserved


{# surveys/consent.html #} {% extends "page_base.html" %} {% load crispy_forms_tags %} {% block title %} {{ survey.name }} {% endblock %} {% block page_title %} {{ survey.name }} {% endblock page_title %} {% block content %}
We are interested in people's experiences of using Facebook and their attitudes and feelings towards it. We have a survey of 20 questions which we would like people to answer as fully as possible. You do not have to answer all questions, but please respond to as many as you feel are relevant.
In order to use information from the public in our research we require your consent. Please read the consent agreement and complete the form below to confirm your participation in the project. After this you will be taken to the survey questions page.
Thank you for your interest and participation in the project.


{% load i18n %} {% if email %}
{% blocktrans %} This is a {{ report_type }} from CommCare HQ for the project '{{ domain }}'. {% endblocktrans %}
{% endif %} {% if notes %}
{% trans "Report Notes" %}
{{ notes }}
{{ report.description }}
{% endif %} {% if report.startdate %}
{% trans "Date range" %}: {{ report.startdate }} - {{ report.enddate }}
{% if not report.is_active %}
{% blocktrans %}
Note: This report will not appear in emails because the start
date for the report is still in the future.
{% endblocktrans %}
{% endif %}
{% blocktrans %} You are receiving this automated email from CommCare HQ because the user {{ owner_name }} added you as a recipient of their report. {% endblocktrans %}
{% endif %}


{% include 'header.html' %}
Upload a new PX4 log
Browse existing logs and analyze them
Do a Sim-to-Real log comparison to assess the fidelity of a simulation


Back of book
Flipbook Library
By: Joe Rezendes
Simply check out
the source code!
Want to set one up
For yourself?
That's because it's
easy to use and customize!
You can even change
It's 3D orientation!
This is a simple
3D Flipbook!
This demo as
bare-bones as possible.


eXistenZ (director: David Cronenberg; cast: Jennifer Jason Leigh (Allegra Geller), Jude Law (Ted Pikul), Ian Holm (Kiri Vinokur), Don McKellar (Yevgeny Nourish), Sarah Polley (Merle),Willem Dafoe (Gas), Callum Keith Rennie (Hugo Carlaw), Kris Lemche (Noel Dichter), 1999)
This escapist movie is sponsored in part by Sega, influenced in part by the death threat on Indian author Salmun Rushdie, and it sure feels like a '60s bad acid trip ala video game that the twelve game players in the film are into. The battle that takes place is between the dreaded realists and the creative ones. The film takes on the theme of fighting censorship and finding out who the real you is.William Burroughs influenced Cronenberg with the idea that what you create as an artist becomes a living thing, it goes out into the world and has a life of its own but is still connected to you.
So far, so good.
Allegra Geller (Jennifer Jason Leigh) is the creator of the newest and most innovative virtual reality game, eXistenZ. It is pronounced with philosophical pretensions as "eggs is tense." As the game starts, she is attacked by a realist with a gristle gun, that is made of mammal flesh and bones, and shoots human teeth instead of bullets. The security guard Ted Pikul (Jude) is really a marketing trainee from the company that sponsors the 38 million dollar game, who comes to her rescue and they flee, prepared to trust no one from now on but only to take pleasure in the game they are in.
A game is only a game. And two heads are better than one. These could be some slogans for a game that has no explanation or purpose for its existence. You get to know about it only when you play it.
To play the game, means you have to penetrate the body by means of bio ports, which are openings in the spine. They must be lubricated before being penetrated with ersatz umbilical cords being connected to "metaflesh game pods." That's a fleshy lump with several nipples, and it's meant to be stroked by game players.
All this game stuff is really not that interesting to see. The two stars are only mildly diverting, arousing no particular warm feelings for their plight. Their aim is to provide suspense and a dark sense of humor, which they do on occasion. But they fail in achieving any depth in their characters; therefore, they are seen only as being the game figures they are portraying.
The main supporting cast includes Willem DaFoe as Gas and Ian Holm as Kiri. Both in minor roles. Gas operates a gas station (natch) where the fleeing couple stop to get Ted a bio port he needs to be in the game; his new pod will also help Allegra repair the pod she had damaged during the attack on her.
Dafoe, who claims to have had his life saved by Allegra's game, must take credit for having the funniest line in the movie. It comes about when Ted asks, "Why do you still run a gas station?"
Kiri is a game character who talks with a thick European accent. As a scientist living in a remote sking village, he will operate on Allegra's diseased pod, which is a result of Gas trying to ruin her pod for a rival game company... For Allegra, her pod is vital, as it holds the only formula to the game in it.
The film sinks downhill from here on. It becomes about squishy "mutated amphibians" and double-crosses by rival game company spies, and realists who feel threatened by the escapists. The characters act out who they are in the game, until they can't tell if they are playing a game or if what is happening to them is real. Most of the action scenes take place in a trout farm and a Chinese restaurant. But much of the story just didn't add up and the virtual reality didn't look so hot, either.
The only thing left to be accomplished was a surprise ending, and that comes as sure as a heart attack. The only thing is, that the surprise ending really came too late too save the film, and if you thought about it, it didn't make sense, unless you believe that the two best game players were ironically the one's who were really anti-gamers; that is, inspite of their negative energy they were still able to excel in the game.
After a belated assassination when the game is supposedly over, the film ends on this conversation between the two game winners, Allegra and Ted: As Ted asks, "Are we still in the game?" He said, "Tell me the truth, are we still in the game?"
Cronenberg needs more than ideas for his next film, he needs a good script and actors who are more suited for their roles.The biggest mistake was in the casting of Jude Law as a romantic hero. He didn't have the charisma to pull off his part...This virtual reality story left me thinking that it could have been done with more fluidity and feeling.
REVIEWED ON 6/14/99 GRADE: C+
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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


When Password Safe exits normally, you are prompted if there are unsaved changes to the database. However, if you log off your Windows session, shutdown or restart your PC, then Password Safe may not have the opportunity to prompt you (the exact behaviour depends on the type of shutdown and the version of Windows).
In this case, Password Safe will attempt to make a "Failsafe Backup" (file extension 'fbak'). This will be created in the same directory as the currently open database. The current database and its "regular" backups will not be touched.
When the original database is opened again, Password Safe will check for the existence of any Failsafe Backup file and, if found, will display a dialog similar to that below.
The first row is the specified database followed by general information about it (the same as shown in the Properties dialog from the File menu). This is followed by the Failsafe Backup file(s). If they can be opened with the same passphrase as the currently open database, then their properties are also displayed. If they have a different passphrase or are not a valid database, then a 'No' is displayed in the Passphrase column and no properties are displayed.
Your choices are as follows:
Clicking on this causes Password Safe to ignore all Failsafe backup files and continue with the currently selected database.
The selected Failsafe Backup file will be opened instead of the currently selected database.
This will delete the selected Failsafe Backup file. If Windows supports a Recycle Bin on this media (usually only local disks), it will be moved there. If not, it will be permanently deleted.
If this is the first database opened on the startup of Password Safe, Password Safe will exit. If not, the new open will be cancelled and the existing opened database, if any, will remain open.
Displays this Help topic.
Suggestions:
Note: There is nothing that ANY application can do to save information if the PC is just switched off, loses power or the processor, the hard disk or any other component fails. As with all data important to you, you should backup your data to another media regularly. This could be to USB pen drives, external hard disks, network drives, CDs or DVDs etc. These backups should be stored somewhere safe.


--- layout: post title: "morning lyrics (unscheduled)" comments: true ---
Who will go down to those shady groves And summon the shadows there And tie a ribbon on those sheltering arms In the springtime of the year
[youtube:PBT7eZSSS4I]


Module platformer.Renderer
An example debug renderer.
Implements a naive camera which simply centres the map on the screen.
Functions
| new (t) | Create a new renderer. |
| draw () | Draw the game. |
Fields
| map | The phyzzle.Map to render. |
Functions
- new (t)
-
Create a new renderer.
Parameters:
- t
Table of initial state, needs a
Phyzzle.Map
assigned to map.
Returns:
-
Renderer instance.
- t
Table of initial state, needs a
- draw ()
-
Draw the game.
Loops over the map zones and draws static entties green and dynamic entties blue.
Also displays stats about the map.
Fields
- map
- The phyzzle.Map to render.


When I am not working on coursework, I enjoy participating in activities sponsored by the school. Currently, I am on the logistics team for managing and organizing WEHack, a hackathon created by UT Dallas students. I am also a member of the UTDallas chapter of the Society of Women Engineers, and I am involved in two student mentorship programs.
Outside of school, I enjoy spending time with family and friends and working on crafts, such as crochet. I also enjoy watching movies and television, and I never turn down the chance to play a board or card game.


@(message: String)(content: Html) @* * This template is called from the `index` template. This template * handles the rendering of the page header and body tags. It takes * two arguments, a `String` for the title of the page and an `Html` * object to insert into the body of the page. *@
@* Here's where we render the page title `String`. *@


{% extends 'core/email/common.html' %} {% block content %}
{{ from_name }} has invited you to join the {{ object_description }}. You can accept or decline this invitation using the following link:
This invitation will expire in {{ valid_until }}.
{% endblock %}


Class: Rails::Application::RoutesReloader
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
|
|
|
Instance Chain:
|
|
| Inherits: | Object |
| Defined in: | railties/lib/rails/application/routes_reloader.rb |
Constant Summary
::ActiveSupport::Callbacks
- Included
::ActiveSupport::Callbacks
- Attributes & Methods
- .__callbacks rw
- #__callbacks readonly
- .__callbacks? ⇒ Boolean rw
- #__callbacks? ⇒ Boolean readonly
Class Method Summary
- .new ⇒ RoutesReloader constructor
::ActiveSupport::DescendantsTracker
- self
| descendants | See additional method definition at line 106. |
| subclasses | See additional method definition at line 102. |
| clear, disable_clear!, reject!, | |
| store_inherited | This is the only method that is not thread safe, but is only ever called during the eager loading phase. |
::ActiveSupport::DescendantsTracker::ReloadedClassesFiltering
- Included
Instance Attribute Summary
- #eager_load rw
- #execute readonly
- #execute_if_updated readonly
- #external_routes readonly
- #paths readonly
- #route_sets readonly
- #run_after_load_paths rw private
- #run_after_load_paths=(value) rw Internal use only
Instance Method Summary
- #reload!
- #updated? ⇒ Boolean
- #clear! private
- #finalize! private
- #load_paths private
- #revert private
- #updater private
::ActiveSupport::Callbacks
- Included
| #run_callbacks | Runs the callbacks for the given event. |
| #halted_callback_hook | A hook invoked every time a before callback is halted. |
Constructor Details
.new ⇒ RoutesReloader
# File 'railties/lib/rails/application/routes_reloader.rb', line 15
def initialize @paths = [] @route_sets = [] @external_routes = [] @eager_load = false end
Class Attribute Details
.__callbacks (rw)
[ GitHub ]# File 'activesupport/lib/active_support/callbacks.rb', line 70
class_attribute :__callbacks, instance_writer: false, default: {}
.__callbacks? ⇒ Boolean
(rw)
[ GitHub ]
# File 'activesupport/lib/active_support/callbacks.rb', line 70
class_attribute :__callbacks, instance_writer: false, default: {}
Instance Attribute Details
#__callbacks (readonly)
[ GitHub ]# File 'activesupport/lib/active_support/callbacks.rb', line 70
class_attribute :__callbacks, instance_writer: false, default: {}
#__callbacks? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'activesupport/lib/active_support/callbacks.rb', line 70
class_attribute :__callbacks, instance_writer: false, default: {}
#eager_load (rw)
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 11
attr_accessor :eager_load
#execute (readonly)
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 13
delegate :execute_if_updated, :execute, :updated?, to: :updater
#execute_if_updated (readonly)
[ GitHub ]#external_routes (readonly)
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 10
attr_reader :route_sets, :paths, :external_routes
#paths (readonly)
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 10
attr_reader :route_sets, :paths, :external_routes
#route_sets (readonly)
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 10
attr_reader :route_sets, :paths, :external_routes
#run_after_load_paths (rw, private)
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 54
def run_after_load_paths @run_after_load_paths ||= -> { } end
#run_after_load_paths=(value) (rw)
This method is for internal use only.
[ GitHub ]
# File 'railties/lib/rails/application/routes_reloader.rb', line 12
attr_writer :run_after_load_paths # :nodoc:
Instance Method Details
#clear! (private)
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 42
def clear! route_sets.each do |routes| routes.disable_clear_and_finalize = true routes.clear! end end
#finalize! (private)
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 58
def finalize! route_sets.each(&:finalize!) end
#load_paths (private)
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 49
def load_paths paths.each { |path| load(path) } run_after_load_paths.call end
#reload!
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 22
def reload! clear! load_paths finalize! route_sets.each(&:eager_load!) if eager_load ensure revert end
#revert (private)
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 62
def revert route_sets.each do |routes| routes.disable_clear_and_finalize = false end end
#updated? ⇒ Boolean
# File 'railties/lib/rails/application/routes_reloader.rb', line 13
delegate :execute_if_updated, :execute, :updated?, to: :updater
#updater (private)
[ GitHub ]# File 'railties/lib/rails/application/routes_reloader.rb', line 32
def updater @updater ||= begin dirs = @external_routes.each_with_object({}) do |dir, hash| hash[dir.to_s] = %w(rb) end ActiveSupport::FileUpdateChecker.new(paths, dirs) { reload! } end end


Example of leaflet map - Cycle routes in Leeds
The map should go under here
This is the end of the page


Help for solving some of the problems you might encounter with Resolutionary.
This problem is most likely caused by the resActorDetector
being the wrong size, that is, not matching the size of the original resolution of the game. For fixing the problem, see Initial configuration - step 5 on the Usage guide page.
This problem has the same cause as the previous one, so see its solution above.
This problem has two possible causes.
The first one is that you may have not modified your game to work right with Resolutionary by converting all Out of Vision events into Collision Finish events from resActorDetector
. There's an explanation on why you need to do that on the Usage guide page under Making your project Resolutionary compatible.
The other possibility is that the resActorDetector
is not correctly set up for your game. In that case, the solution is the same as for the two problems above.
This problem and its solution are explained on the Usage guide page under Making your project Resolutionary compatible.
Resolutionary has two settings for how to draw the actors that appear on screen. These settings are dynamic and static.
Actors that are set to dynamic mode, are redrawn every frame, and actors that are set to static mode, are by default drawn only when they first appear. Static actors can also be redrawn at any time by command.
Now, Resolutionary doesn't know which actors should be dynamic and which should be static, so the default setting for all actors is dynamic, as most actors have to be redrawn every frame because of movement or animation. If your game has a lot of actors on screen at a time, updating them all constantly can be quite heavy and cause preformance slowdown.
If your game has actors that don't need constant updating (static backgrounds, for example), you can set them to be static. This can be done with the function resChangeActorType();
:
resChangeActorType("Event Actor", RES_ACTOR_STATIC); // Set current actor's type to static
For example, in the example game provided with Resolutionary the jewels are made static when they stop moving, and only made dynamic again when they have to move again.
Also, your game may include actors that don't need to be drawn (hitboxes, Filled Region actors, Wire Frame Region actors, ...). But if those actors can have collision events, they get added to the list of actors to draw, and thus make the list longer and more inefficient to process. You can prevent this by setting all these actors' type to not drawable:
resChangeActorType("Event Actor", RES_ACTOR_NOT_DRAWABLE); // Set current actor's type to not drawable
Another possible cause for low performance is if your z layer ordering is inefficient. The actors are added to the lists in order by their z layer, the higher the number, the closer to the end of the list the actor will be placed, so that it will be drawn last. If you, for example, have a lot of clones being created and destroyed all the time and their z layer is high, this means that whenever a new clone spawns, Resolutionary has to travel all the way through the list to find the correct place for the actor. If this is that case, there unfortunately is not much you can do to fix it. There are plans for making Resolutionary more efficient with creating great amounts of clones.
If you can't see your actor drawn on the screen, there's usually two possible reasons why:
If you know for sure that your actor doesn't have a parent, then the issue is that the actor is getting drawn over by another actor. For solving this issue, you have to use the function resChangeActorZLayer();
:
resChangeActorZLayer("Event Actor", 1); // Set current actor's z layer to 1
For example, you can set the z layer in an actor's Create Actor event. The actors are drawn in order by their z layer, from lowest to highest. So, an actor with a z layer 1 will be drawn over an actor with z layer 0. All actors have their z layer set to 0 by default, and you need to adjust the layers so that they get drawn in the correct order.
If you can't see your actor because it is parented, all you have to do is to let Resolutionary know about that. For this, use the function resChangeActorParent();
:
resChangeActorParent("Event Actor", "parentActor"); // Set the actor 'parentActor' as the current actor's parent
If your actor is parented to another actor but Resolutionary doesn't know about that, it will assume the actor's coordinates are absolute coordinates and not relative to the parent actor, and thus draw the actor in a wrong position.
This can be solved by simply letting Resolutionary know about the parenting. For this, use the function resChangeActorParent();
:
resChangeActorParent("Event Actor", "parentActor"); // Set the actor 'parentActor' as the current actor's parent
This site uses Google code-prettify for syntax highlighting. Prettify is distributed under the Apache 2.0 License and is Copyright (C) 2011 Google Inc.


Demo Project
Morning : 10am - 1 pm
Angular is a TypeScript-based open-source web application framework led by the Angular Team at Google and by a community of individuals and corporations. Angular is a complete rewrite from the same team that built AngularJS


New comments have been posted on this topic !
You should refresh the page to see them.
You should refresh the page to see them.
step 1 contribution have ended please review the step
that is open for contributions
Step 1 Co-ideate: Communicate
your needs and discuss possible
solutions with others.
Click to view video.
Click to view video.
No comment the moment !
Use the form below and be the first to comment this topic !
Use the form below and be the first to comment this topic !
Please sign in
or register and you will be able to create and propose topics relevant to you , others will then join you to share their personal experience.


-
White House names Google’s Megan Smith the next Chief Technology Officer ...
www.washingtonpost.com
Former Twitter lawyer Alex Macgillivray will serve as deputy U.S. CTO.
-
EMV Explained in 2 Minutes - The Official Square Blog: Town Square
blog.squareup.com
The Official Square Blog is a place for sellers to find valuable tips and insights for running their business, learn from one another's challenges ...
-
Introducing Tweet-a-Program—Stephen Wolfram Blog
blog.wolfram.com
Compose a tweet-length Wolfram Language program. Tweet it to @WolframTaP. Our Twitter bot will run it in the Wolfram Cloud and tweet back the result.
-
How Google Works: Googlers Fight Back Against the Smiley Rampager
www.youtube.com
In the early days of Google, every new employee got a smiley helium balloon to put in their office. This was fun, and made it easy to spot the ...
-
Apple Watch Update: More Details and Hands-On Impressions
www.yahoo.com
David Pogue gets his hands on an Apple Watch … and answers to some burning questions.
-
Apple Gets Intimate
medium.com
There was plenty to process at Flint Center in Cupertino, California, today. It was Apple’s self-described stab at makin…
-
Underground vaults, offline servers, and armed guards: this is the Fort ...
www.theverge.com
Meet Wences Casares, the entrepreneur trying to bring bitcoin to the masses through extreme security.
 I'm a realist."Truthfully, most of us think we're "realists." We see the ...
-
M6.0 - 6km NW of American Canyon, California (BETA) 2014-08-24 10:20:44 UTC
comcat.cr.usgs.gov
USGS Earthquake Hazards Program, responsible for monitoring, reporting, and researching earthquakes and earthquake hazards
-
Health Insurance Marketplace, Affordable Care Act
www.healthcare.gov
Learn how the health care law affects you at Healthcare.gov. The official site of the Health Insurance Marketplace. See your health insurance choices.
-
Google Impact Challenge | San Francisco Bay Area
impactchallenge.withgoogle.com
10 bright ideas for a better Bay Area. Meet the winners of the #GoogleImpactChallenge http://g.co/bayareachallenge
-
The Woman Who Walked 10,000 Miles (No Exaggeration) in Three Years
www.nytimes.com
For Sarah Marquis, a very long hike – from Siberia through the Gobi Desert, China and eventually Australia – can become a voyage of discovery.
-
Ferguson Police Chief Offers Apology to Michael Brown’s Family
www.nytimes.com
In an online video, Thomas Jackson, the police chief of Ferguson, Mo., said he was sorry for the loss of their son and regretted that it took ...
-
Michelin Guide Announces NYC's Inexplicable 2015 Bib Gourmands - Eater NY
ny.eater.com
The Michelin Guide has just released its "Bib Gourmand" picks for the forthcoming 2015 edition of its New York City dining guide. These are the ...
-
An Insanely Detailed, Hand-Drawn Map of San Francisco
www.citylab.com
It took illustrator Jenni Sparks three months to finish this secret-laden cartography.
-
India Reaches Mars With Low-Cost Mission
newswatch.nationalgeographic.com
India's new entrant into orbit around Mars, the Mars Orbiter Mission (MOM), is a triumph for its space agency and represents the fourth country to ...
-
@Large: Ai Weiwei takes over Alcatraz with Lego carpets and a hippie dragon
www.theguardian.com
The big man of Beijing’s new show fills the former prison with a giant rainbow dragon and Lego models of 175 prisoners of conscience, from Nelson ...
-
Lenovo Yoga 2 Pro Multimode Ultrabook | Multimode Laptops & Ultrabooks
shop.lenovo.com
Learn more about the Lenovo Yoga 2 Pro multimode Ultrabook, a powerful laptop with four different usage modes: Laptop, Tablet, Tent, and Stand.
-
Josh Miller sur Twitter : "@Borthwick a script auto deletes my tweets ...
twitter.com
Mot de passe oublié ? Vous utilisez déjà Twitter via SMS ?
-
What Happens When The World Wakes Up?
medium.com
In the next few years, it will be possible to communicate with nearly every item in your home. More importantly, the val…
-
Make Dinner: A Home Cooking Manifesto - NYTimes.com
www.nytimes.com
Just cook. That is the message of the moment, the act to embrace. Just cook dinner. It is a habit as easy to form as a bad one, and more beneficial ...
-
On a Warmer Planet, Which Cities Will Be Safest?
www.nytimes.com
Scientists trying to predict the consequences of climate change see few havens from future storms, floods and droughts. But some regions will fare ...
-
Chelsea Handler
www.makers.com
Stay up to date with the latest from MAKERS delivered straight to your inbox. Sign up for new stories from trailblazing women, a big dose of ...
-
I Built A Crazy Food Piñata At Taco Bell, Then Sold It To Somebody
www.fastcodesign.com
Taco Bell invited me to make my own menu item. So I did. Oh, did I.
-
Talko | Talko is the best way to use your voice to get things done.
www.talko.com
TALK. SHARE. DO. Amazing things can happen when we talk with each other. Thoughts are shared, ideas formed and problems solved. Talko is the best way ...
-
Now You Can Quickly Share The Best Parts Of Your GoPro Videos With ...
techcrunch.com
A few months ago, we told you about BrightSky Labs, a startup that hoped to unlock videos recorded on GoPro cameras and other wearable devices and ...


Welcome to Introduction to Machine Learning Applications¶
IMPORTANT LINKS
SECTION 1
Prof Kuruzovich WEBEX Meetings Classroom Link https://rensselaer.webex.com/meet/kuruzj
Office Hours Tuesday 2:00 PM – 4:00 PM, or by appointment . Please Message me in the Kuruzovich Office Hours Space on Webex Teams.
TA Shailesh Divey, Office Hours Tuesday 3:00 PM – 5:00 PM, or by appointment, email<EMAIL_ADDRESS>SECTION 2
Prof Morgan WEBEX Meetings Classroom Link https://rensselaer.webex.com/meet/morgat5
Office Hours Monday 10:00 AM - 12:00 PM, or by appointment
TA Liang Zhao, Office Hours Monday 10:00 AM - 12:00 PM, or by appointment, email<EMAIL_ADDRESS>This is the website for the Rensselaer class Introduction to Machine Learning Applications. Both sections 01 and 02.
In order to be able to reach the Box file share, you will need an RPI Box Account. Please sign up for it here.
During these challenging times we are going to do our best to provide an engaging learning experience. We will be useing a combination of tools for the class and I wanted to provide that overview here.
For class this semester, thank you in advance for complying with RPI mask policies. The science is solid and we want to all get through the semester heathy and without incident.
Here is a quick reference for the systems that will be used in the class. Please download the desktop copy of both Webex Meetings and Webex Teams via this link.
Webex Meetings: Hybrid Class Streaming¶
We will be using Webex Meetings to stream all classes. The course recordings be made available through this website. WEBEX Meetings Classroom Link
Webex Teams: Classroom and Asynchronous Discussions and Questions¶
we want to be very responsive to your questions and concerns as we go through the class. Webex Teams (NOT EMAIL) is the best way to reach me. We would suggest downloading the Webex Teams application for your phone and desktop. Because Webex meeting chats do not persist, we are going to use the Webex Teams space for text discussions even when streaming from Webex meetings. WEBEX TEAMS Discussion Space
This semester could be challenging if you don’t know others from the class and are working remotely. Feel free to use this as a drop in space. Create a meeting and collaborate with others.
Course Content¶
This website will be the primary source of content for the class. This includes readings, videos, Excel files, Jupyter notebooks, etc.
Course Schedule This covers when assignments are do.
Sessions Each day will summaries the variety of different activities on the session page.
Assignments. All instructions for assignments will be provided in this website.
Google drive will be used to share files (presentations, spreadsheets, etc.).
LMS: Assignment Submission, Quizzes, and Grading¶
Please be aware of the variety of course assignments listed on the schedule. We might even through a few quizes in there. These will done through the LMS.
In some cases, a starter excel spreadsheet or Jupyter notebook will be provided. Always upload the actual completed .xlsx file or .ipynb file for grading rather than a pdf. RPI LMS
Previous versions of the class can be found at:
Spring 2020 https://rpispring2020.analyticsdojo.com/
Fall 2019 https://rpifall2019.analyticsdojo.com/


RANSOM A film review by Scott Renshaw Copyright 1996 Scott Renshaw
Grade: B+ // Worth a Ticket
(Touchstone)
Director: Ron Howard. Screenplay: Richard Price and Alexander Ignon. Director of Photography: Piotr Sobocinski. Producers: Brian Grazer, Scott Rudin, B. Kipling Hagopian. Starring: Mel Gibson, Rene Russo, Gary Sinise, Delroy Lindo, Lili Taylor, Brawley Nolte, Liev Schreiber.
MPAA Rating: R (profanity, violence, adult themes) Running Time: 121 minutes.
Reviewed by Scott Renshaw.
I should note before anything else that RANSOM is not a spectacular, classic piece of film-making, but simply a very well-crafted action/suspense thriller. It is only because so many of its genre contemporaries have been so lackluster that RANSOM begins to look like a jewel, because RANSOM is a textbook example of the little things which so many bad to mediocre suspense thrillers could do to become better by orders of magnitude. In fact, the conventional wisdom in Hollywood -- borne out by the success of TWISTER, THE ROCK and INDEPENDENCE DAY as recent examples -- is that suspense is actually counter-productive because the establishment of suspense takes time, valuable minutes which will not involve a 10 megaton explosion or a flying computer-generated cow. RANSOM is consistently tense because it is patient, patient enough to set up characters and situations in a way which really pays off.
Mel Gibson stars as Tom Mullen, a multimillionaire airline magnate living a charmed life in a New York penthouse with wife Kate (Rene Russo) and son Sean (Brawley Nolte). That life is shattered one day when Sean disappears, abducted by a group of kidnapers who demand $2 million for his release. Tom tries to play by the kidnapers' rules, but when the FBI team headed by Agent Lonnie Hawkins (Delroy Lindo) makes a botched attempt at a rescue operation, Tom concludes that they have no intention of letting Sean go alive. Desperate to even the odds, Tom takes drastic and risky action to put the kidnapers on the defensive, the result of which can only be either complete victory or the worst kind of defeat.
RANSOM begins with the radical premise that its characters actually matter, and uses that premise to build a story which matters from moment to moment. Mullen is far from a shining knight as our protagonist, but rather a hard-nosed and occasionally unscrupulous businessman whose rebellious stand against the kidnapers is perhaps as much a result of guilt as logic. The kidnapers themselves (Lili Taylor, Liev Schreiber and Donnie Wahlberg among them) have distinct personalities, and the clashes between those personalities show the cracks in their united front early on; Gary Sinise, as Jimmy Shaker, the mastermind of the operation, is so deeply embittered by his impression that the wealthy get away with murder that he probably believes his actions are thoroughly justified. These are not spectacularly complex characters -- Rene Russo's Kate is actually something of a disappointment as the wife who does little but sob -- but they are real people, and they are directed by Ron Howard in scenes which allow you inside their heads at critical, decisive moments.
Howard also has the ability to take moments which in other hands might have been quickly dispatched plot points and make them compelling. The story would have progressed without the lengthy sequence in which Tom and Kate realize that Sean is missing, but the tension and mounting dread in Howard's direction are palpable. Similarly, we could have gotten from point A to point B without showing Jimmy's reaction to Tom's gambit, but the growing realization that his plan is falling apart is spelled out on his face. Even minor details like the first notification from the kidnapers -- a jittery video file sent to the Mullens via email -- is given a spark which elicits a gasp from the audience.
RANSOM does have its obligatory moments of action and violence, but Howard refuses to treat those sequences as the purpose for his movie. There is a driving tension and a natural rhythm to the structure of RANSOM which doesn't make it feel like the director and screenwriters are trying to exhaust you with set pieces. Although there are flashy moments in RANSOM, notably a telephone confrontation between Jimmy and Tom which is edited to whiplash perfection, it is notable in its lack of devotion to flash; it is that rare action thriller where you anticipate the moment the characters _start_ talking instead of the moment they _stop_. Gibson and Sinise are both in fine form, and their battle of wills moves RANSOM like a living motor. RANSOM may cop out on giving us a climax which addresses the more unsavory aspects of Tom's character, but it deserves recognition as an example of professionalism in film-making, of what is possible when someone seems to give a damn. Too many thrillers swing for the fences every time up, and end up striking out most of the time. RANSOM is more like a fundamentally sound contact hitter, banging out single after single along with the occasional well-placed extra-base hit.
On the Renshaw scale of 0 to 10 ransom notes: 8.
Receive Scott Renshaw's reviews directly via email from Marquee! Visit http://www.marquee.com/marquee-mailinglists.html for details. Visit Scott Renshaw's MoviePage http://www-leland.stanford.edu/~srenshaw
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


2 Chronicles 18:10
And Zedekiah the son of Chenaanah had made him horns of iron, and said, Thus saith the LORD, With these thou shalt push Syria until they be consumed.


What is a Smart Client anyway?
And what makes it so smart?
The term Smart Client was coined to highlight the differences between the
typical "Rich Client" applications of yesteryear and the next generation of
client applications. To understand these differences, and to understand how they
are likely to change the face of client-side computing, it is useful to take a
trip down memory lane...
Client Applications: Then and Now
In the dim and distant past (that is, the mid 1990's) there was a dramatic
increase in the number of client applications being developed for the Microsoft®
Windows® platform. This increase occurred in large part due to the availability
of high-quality developer tools and frameworks (such as Microsoft® Visual
Basic®, Microsoft Visual Studio®, MFC, and so on) and because of the
availability of a feature-rich client platform. Ah, developer heaven.
The majority of these applications were standalone and operated on the client
machine with no regard to the environment in which they operated, both with
respect to the other machines and services on the network, and with respect to
the other applications on the user's machine. Very often, integration between
applications was limited to using the cut-copy-paste features provided by
Windows to transfer small amounts of data between applications. On the whole,
though, users were pleased with the increasingly useful functionality that these
applications now provided.
After a while, two-tier applications started to appear; these allowed
multiple users to access common data that resided on the network. Shortly
thereafter, DCOM allowed applications to become more distributed, with logic and
state no longer tied to the client machine. Both of these developments were
important and enabled a whole host of new scenarios and better
functionality.
All of this increased flexibility and functionality, however, came at a
price. Perhaps the biggest problem with rich client applications was that of
deployment. As the complexity of the applications and the client platform had
increased, so had the difficulty associated with deploying the application to
the client machine in a reliable and secure way. One of the biggest problems was
that of "DLL Hell," where one application could break another application by
deploying an incompatible shared component or library.
In addition, the increasingly connected nature of applications brought with
it many other problems. Connected applications were considerably more complex to
develop, despite the availability of developer tools and frameworks. And as the
size and complexity of these distributed applications grew, the tight coupling
between the client application and the services it consumed became increasingly
difficult to maintain, which in turn exacerbated the deployment and maintenance
problems.
So, while rich clients typically provided a great user experience and had
good developer support, they were still just too difficult to deploy and
maintain.
Around this time, the Internet came along.
The Internet had very little effect on rich client applications. Some
applications provided the ability to notify the user of available updates, or
allowed additional content or features to be downloaded and installed, but on
the whole, the Internet had little influence on how client applications were
developed, deployed, and maintained.
The Internet did provide an alternative to the traditional rich client model,
however, one which promised to solve all of the problems associated with
application deployment and maintenance. Thin client browser-based applications
allowed applications to be deployed and updated centrally, thereby reducing the
problems (and therefore the cost) associated with deploying and maintaining an
application. Also, thin client applications allowed companies to expose their
applications to a large and diverse external audience.
Unfortunately, this brave new world was not without disadvantages.
Thin client applications at that time often represented the best way to
expose a company's information and services to an external user base. But in
many cases, internal applications that would have traditionally been implemented
using a rich client application were also moved to the thin client model. While
this movement had advantages in reducing deployment complexity, it did so at the
cost of the user experience.
The usability of the applications was often much reduced and common features
that the user had grown accustomed to, such as drag-and-drop, undo-redo, context
sensitive help, and so on, were no longer available. Furthermore, the
responsiveness of the application was diminished, especially for business
applications, such as those in customer call centers, which demanded heavy data
entry and navigation across multiple screens.
And of course, the browser was entirely dependent on having a network
connection at all times. This meant that mobile workers had no access to the
applications at all, requiring them to re-enter data when they returned to the
office. And even when a connection was available, low bandwidth or high latency
connections caused performance problems and a reduction in user efficiency.
Developers, too, suffered in the early days of thin clients. Tool support was
lacking, and developers had to move from the cozy world of component-based
development, with type safety and object-oriented design principles, to the
harsh and unforgiving world of script and HTML. Only now can Web developers
claim to have anything approaching the same level of support as client
developers enjoyed 4 or 5 years ago. Even now, drag-and-drop, undo-redo, context
sensitive help, and other common client-side features are still extremely
challenging.
Despite these drawbacks, the deployment and management problems associated
with rich clients were so big that the tradeoff seemed worth it. As a result,
the thin client browser-based application model has dominated in recent
years.
Client Applications: The Next Generation
Today we live in an information-based economy. In order to thrive in this
hyper-competitive market, users must access and borrow information from many
sources, including customers, partners, and suppliers. And users are now
demanding more from their applications: they want to be empowered to act, plan,
analyze, visualize, and explore the data, not just to read it.
Such concerns are not limited to a company's internal workforce. Leading
companies are increasingly becoming aware that they have to build a digital
relationship with their customers and partners, allowing them to provide faster
and more accurate responses to customer requests and giving them easy access to
purchasing, inventory, and shipping-status information. These users also need to
be able to work with the data within their own applications.
Without question, the complexity of applications is increasing, and with it
the expectations of the user. The thin client model is no longer able to provide
the required levels of functionality, performance, flexibility, and integration.
Users are now demanding fast and responsive applications to perform their daily
work in a flexible and efficient manner. Add this to the explosion of devices
and the increasing mobility of the workforce and it is clear that a new category
of client application is required.
So, the pendulum has begun to swing back towards the rich client model. But
what about application deployment and update? The TCO of an application is still
as important as it ever was, probably more so. Do you sacrifice manageability
for usability, or vice versa?
Happily, you don't need to sacrifice either. Key capabilities now exist
which mean that we can take full advantage of the rich client model, providing
the user with an excellent user experience, while at the same time reaping the
benefits of centralized deployment and update. In short, this new generation of
client applications, the so-called "smart" clients, provides the best of both
worlds and adds the intelligence to manage data and connectivity to produce an
extremely compelling user experience.
While smart clients provide the benefits of a rich client
model with thin client manageability, they also provide much more flexibility
than the traditional rich client applications. For example, smart clients need
not be designed as monolithic desktop applications. Smart client solutions can
be developed that are composed of functionality from more than one client
application, with each application collaborating with the others to provide just
the right functionality to the user. Such "composite" applications integrate
client-side software resources into a coherent solution, or extend the
functionality of an existing application to provide smart client features.
In addition, the client platform has moved on in the past few years and now
includes many different types of client devices, not just desktop PCs. Such
devices include PDA's, SmartPhones, Tablet PCs, Laptops, set-top boxes,
automotive devices, retail terminals, and so on. Smart client applications can
be built to take maximum advantage of the features provided by the host device
and tuned to provide the best user experience for the typical users of these
devices.
Smart Client Check List
Because of the high degree of flexibility and somewhat ambiguous nature of
smart client applications, it is often useful to talk about the key
characteristics of a smart client. These characteristics serve as a guide to the
features typically provided by smart clients over and above those provided by
traditional rich client applications. If a client application displays these
characteristics, then it can be said to be smart:
- Utilizes Local Resources
A smart client application always has
code artifacts on the client that enable local resources to be utilized. What
do we mean by local resources? We mean everything from hardware to software
resources. A smart client may take advantage of the local CPU or GPU, local
memory or disk, or any local devices connected to the client, such as a
telephone, bar-code/RFID reader, and so on. But it may also take advantage of
local software, such as Microsoft Office applications, or any installed
line-of-business (LOB) applications that interact with it.
- Connected
Smart client applications are never standalone and
always form part of a larger distributed solution. This could mean that the
application interacts with a number of Web services that provide access to
data or an LOB application. Very often, the application has access to specific
services that help maintain the application and provide deployment and update
services.
- Offline Capable
Because they are running on the local machine,
one of the key benefits that smart client applications offer is that they can
be made to work even when the user is not connected. For applications running
in occasional or intermittent connectivity situations, such as those used by
traveling workers or even those running on laptops, tablets, PDA's, and so on,
where connectivity cannot be guaranteed at all times, being able to work while
disconnected is essential. Even when the client is connected, the smart client
application can improve performance and usability by caching data and managing
the connection in an intelligent way.
- Intelligent Install and Update
Smart client applications manage
their deployment and update in a much more intelligent way than
traditional rich client applications. The .NET framework enables application
artifacts to be deployed using a variety of techniques, including simple file
copy or download over HTTP. Applications can be updated while running and can
be deployed on demand by clicking on a URL. The Microsoft® .NET Framework
provides a powerful security mechanism that guarantees the integrity of the
application and its related assemblies. Assemblies can be given limited
permissions in order to restrict their functionality in semi-trusted
scenarios.
- Client Device Flexibility
The .NET Framework together with the
.NET Compact Framework provides a common platform upon which smart client
applications can be built. Often, there will be multiple versions of the smart
client application, each targeting a specific device type and taking advantage
of the devices unique features and providing functionality appropriate to its
usage.
Smart Clients and the .NET Framework
So how does the .NET Framework enable all of these smart client benefits?
The .NET Framework provides a number of fundamental capabilities, which means
that we no longer have to face the difficult usability versus manageability
tradeoff. Let's look at some of the more important features...
The .NET Framework has very effectively solved the problem of version
conflicts between assemblies shared by more than one application. A .NET
application or assembly has a strong coupling to the assemblies and components
they depend on. Assemblies are annotated with meta-data, which specifies both
their exact version and the versions of all dependent assemblies. Multiple
versions of the same assembly can be installed side-by-side so that all
applications can be run with the exact same version of the assembly that they
were built and tested against.
This assembly binding mechanism also provides important security safeguards.
Assemblies can be cryptographically signed to prevent malicious code being run
inadvertently, either through tampering or through luring attacks. In addition,
.NET Code Access Security (CAS) allows assemblies to be granted specific
permissions so that they can be used in semi-trusted scenarios. The .NET runtime
ensures that assemblies can only carry out operations for which they have been
granted permissions. The .NET Framework defines a flexible evidence based
infrastructure for determining which permissions to grant an application or
assembly.
These features effectively address application stability and predictability,
but what about deployment? Assemblies do not need to be registered on the local
machine so they can simply be copied to the machine before they are run. This
greatly simplifies the deployment of the application. Alternatively, assemblies
can be downloaded from a central server, either at install or at run time.
.NET also provides a deployment feature called No-Touch Deployment, which
allows applications to be run on a URL. When the user clicks on the URL, the
runtime automatically downloads the application, and all related assemblies, to
a special download cache. This mechanism also checks for version updates so that
the user never has to worry about whether they are running the latest version of
the application or not.
Applications deployed in this way are only granted a very limited amount of
permissions by default and are unable to access the local hard disk or access
any network services, apart from the service from where they were downloaded.
Additional permissions can be granted at the user, machine, or enterprise level
if required.
Of course, the .NET Framework provides quite a few other features that affect
how smart client applications can be designed and built. Of particular important
are the Microsoft® .NET Windows Forms classes. These classes provide very rich
user interface controls and give developers in all languages a common UI
framework to work against, making development and testing much easier. The .NET
Framework also provides many facilities for connecting to network services, such
as SOAP-based Web services, and provides comprehensive XML support.
Smart Client Architecture
As .NET provides a number of key features that make the development of smart
client applications easier, what are the architectural implications of all of
these new features? It turns out that .NET goes beyond solving the problems that
plagued rich clients and enables a whole host of new possibilities. The client
platform now includes many different types of client device, and .NET supports
them through the full and compact frameworks, but that's just the start.
The flexible binding, deployment, and security models provided by .NET allow
smart client applications to be designed in much more interesting ways than
traditional rich clients. For example, .NET provides a lot of flexibility in how
the application can be "hosted": applications can be run as a traditional
desktop application, or can be hosted within Microsoft® Office or Microsoft®
Internet Explorer. Many combinations are possible. For instance, a Windows Forms
application can host Internet Explorer or Office components and any host can
subsume any other.
Application logic that is volatile, for example business rules governing
volume order discounts, can be factored into assemblies that are downloaded on
demand over HTTP, obviating the need to frequently "update" the client
application in the traditional sense. Additional (or infrequently used)
application features can adopt the same model so that initial application size
is kept to a minimum with additional features installed on an as-needed
basis.
Another popular model is the Composite Application model, where many
applications combine to form a coherent solution. Such solutions can be formed
by coupling together desktop applications, or by providing a generic "shell"
application that houses multiple lightweight applications combining to form the
solution.
The latter model has proven to be extremely useful in situations where the
user has to deal with many applications to do their work. For example, customer
service agents in call centers typically have to deal with many LOB
applications, including desktop, browser-based, and terminal-based applications.
All such LOB applications can be hosted within a generic Windows Forms
application that provides integration between them, greatly simplifying the
user's job and, most importantly, reducing the time spent on a particular
call.
By providing a generic shell to host these LOB applications, common
infrastructure features, such as security, deployment, window management,
application integration, auditing, and so on, can be developed, tested, and
re-used across different solutions, leaving the developers of the LOB
applications to focus on business functionality.
Perhaps the most compelling example of a composite smart client application
is Microsoft Office. Microsoft Office applications can be extended using
SmartTags, SmartDocuments, or with Microsoft® Visual Studio® Tools for Office
enabling powerful smart client solutions to be built.
Office smart client solutions can become an integral part of an
organization's information infrastructure, accessing corporate data and services
and providing a powerful and familiar working environment. Of course, Web
services provide a natural way for companies to expose data and services, and
smart client applications are the ultimate consumers of these Web services. And
since Microsoft Office also provides XML support, data can easily be shared
between both client and server and between the user's desktop applications.
Office smart client applications are capable of integrating data and services
provided by multiple line-of-business (LOB) applications, each accessed through
separate Web services. Such smart client applications can provide valuable
Business Intelligence functionality, providing the user with access to critical
business data in powerful desktop applications, such as Microsoft® Excel, where
they can visualize, pivot, and analyze the data as much as required.
And finally, the advent of service-oriented architectures (SOA) means that
there are huge opportunities for client applications to take advantage of the
many and varied services available to them. All such services are provided in an
industry standard way, which provides huge benefits in terms of
interoperability, developer tool support, and the ease with which new features
can be built into the smart client application.
Next Up: Whidbey and Longhorn
The above discussion focuses on the benefits that .NET currently brings to
the area of smart clients. What about the future? The next release of the
Microsoft .NET Framework, code-named "Whidbey," will bring a whole set of new
features that build on the .NET Framework and make smart clients even more
compelling: richer and more flexible user interface components, easier thread
management, better tools, and a new deployment feature called click-once, which
builds on the no-touch deployment mechanism described above.
Microsoft Windows, code-named "Longhorn," will take smart clients to a whole
new level, with features like the presentation subsystem in Longhorn (code-named
"Avalon") providing next generation meta-data driven user interfaces, and the
storage subsystem in Longhorn (code-named "WinFS") providing huge integration
opportunities between applications. Check out the Longhorn smart client demo for
commercial real estate at http://msdn.microsoft.com/Longhorn/productinfo/default.aspx
for a glimpse of the Longhorn smart client vision.
Many analysts have been predicting for a while now that the pendulum has
swung back towards rich clients and away from browser-based applications. With
.NET, and especially with Whidbey and Longhorn, it looks like the time of the
smart client is well and truly upon us.
Copyright © David Hill,
2004.