text:
I recently became a vegetarian. I read somewhere that vegetarians need to combine certain foods during their meals to make sure they get "complete proteins." What should I do to get the right kind of protein?
– Casey*
There are two kinds of proteins: complete proteins and incomplete proteins.
Nutrition experts used to think vegetarians had to eat special combinations of foods in the same meal in order to get the right amount of amino acids and protein. We now know that's not needed. As long as you eat from a variety of food groups during the day, your body will get all the essential amino acids and nutrition it needs.
Food groups include grains (like brown rice or whole-grain bread), protein (like nuts or beans), fruits and vegetables (like blueberries or broccoli), and — if you're not vegan — dairy (like milk or cheese).
*Names have been changed to protect user privacy.
Reviewed by: Mary L. Gavin, MD
Date Reviewed: 14-10-2013


text:
Samsung has got on the Windows 8 boat earlier than many, releasing one of the first tablets to sport the new Windows RT operating system. Aside from being one of the first out the gate, the Samsung Ativ Tab looks to be a strong contender in its own right, with a slim build and solid specs.
Shorn of the keyboard of its Samsung Ativ Smart PC brethren, the Samsung Ativ Tab hasn't been released in a vacuum - the Microsoft Surface RT is already out in the wild. Microsoft's flagship iPad 4 rival is also cheaper than the stomach-turningly expensive Samsung Ativ Tab, which starts at £549.99/US$649.99 (around AU$836).
For that kind of money you'd expect a whole lot of tablet, and with a premium build quality, a thickness of just 8.9mm (0.35 inches) and coming in at a surprisingly light 570g (20.1oz) - compared to the 680.4g (24oz) Microsoft Surface - the Samsung Ativ Tab certainly makes a promising first impression.
The specs are fairly impressive too. Under that slender shell there's a 1.5GHz dual-core processor, 2GB of RAM and either 32GB or 64GB of internal storage, with room for expansion via a microSD card.
The Samsung Ativ Tab's 10.1-inch 1366 x 768 display may only have a 155ppi, but in use it's not too bad - jaggies are noticeable but not distracting. It also pips the Microsoft Surface, which has the same resolution but a slightly bigger 10.6-inch screen, leading to a 148ppi.
Rounding out the package there's a 5 megapixel main camera capable of shooting 720p video, along with a 1.9 megapixel front-facing one.
It's a decent list of specs, but it's still hard to get past that price tag, particularly for a tablet running a new and largely untested operating system.
Samsung has set its sights squarely on the top end of the market, but with competition from other Windows 8 tablets, the iPad 4, Google Nexus 10 and other Android tablets, it's going to take a lot to convince us that it's worth taking the plunge on a Samsung Ativ Tab.
On paper the Samsung Ativ Tab sounds pretty decent, but certainly not like the god among tablets that the price tag might lead you to expect. Its dual-core processor is clocked at a respectable 1.5 GHz, but with many tablets - including close rivals such as the Microsoft Surface - now rocking quad-core processors, it doesn't seem that impressive.
On the flip side, each core in the Microsoft Surface is clocked at a slightly lower 1.3GHz, while on the Android front the Google Nexus 10 also only has a dual-core processor (albeit clocked at 1.7GHz). But both of these tablets cost less than the Samsung Ativ Tab.
The Samsung Ativ Tab has 2GB of RAM to call upon, which is exactly what we'd expect from a top-end tablet right now, since it's become pretty standard. The 10.1-inch PLS TFT capacitive touchscreen has a Microsoft Surface-matching resolution of 1366 x 768, which for the size isn't terribly impressive, giving it just 155 pixels per inch.
In layman's terms this means it's not all that sharp. Pixels are often visible, giving things a slightly ugly jagged edge. It could be a whole lot worse, and you quickly get used to it, but we'd expect better from a premium tablet.
Viewing angles are reasonable, unsurprisingly the screen is at its best when viewed square on, but viewing it from a distance or other angles is still perfectly possible - the image is just slightly darker.
There's a generous 32GB or 64GB of built-in storage, and in both cases that can be supplemented by microSD cards of up to 64GB, so storage is one thing that shouldn't be a problem here at all.
The Samsung Ativ Tab is Wi-Fi only, so it's not as useful as some tablets when out and about. But free Wi-Fi is available all over the place these days, so unless you're out in the sticks it's not such an issue.
Finally there's a 5 megapixel camera on the back capable of shooting 720p video at 30fps and a 1.9 megapixel snapper on the front. Neither is particularly impressive, but they should be more than adequate for a tablet, because, after all, who even uses a tablet to take photos?
The main camera is also substantially better than the 1.2 megapixel offering on the Microsoft Surface.
All of that is kept going by an 8200 mAh battery, which on paper at any rate is a pretty decent size, though it's dwarfed by the iPad 4's 11,560 mAh battery.
Looks-wise it's not too shabby either, it's a tiny 8.9mm (0.35 inches) thick, and though the shell is plastic through and through, the rear is painted to look like brushed aluminium. It pulls it off, looking metallic and expensive. Unfortunately the illusion is shattered as soon as you touch the Samsung Ativ Tab, since it feels unmistakably like plastic in the hand. Still, it does at least feel like sturdy, expensive plastic.
Beyond the faux-metallic finish the back of the tablet is pretty plain. Samsung's logo is written in fairly small lettering across the middle, while at the top you'll find the main 5 megapixel camera and flash. The back is ever so slightly curved too, which makes it comfortable to hold.
The front is plainer still, with the 10.1-inch screen taking up most of the space, while around that there's a black border.
At the top you'll find the 1.9 megapixel front-facing camera, along with an indicator light, which turns on when the tablet is charging, and a light sensor to automatically dim the screen.
Just below that there's another Samsung logo, while at the bottom there's a start button, which will turn the screen on or return you to the start menu if you're on any other screen.
To the left and right of the screen there is a pair of narrow speakers, running down the top half of the tablet.
The edges of the tablet share the brushed aluminium sheen of the back. On the top edge of the tablet you'll find a 3.5mm headphone port at the far left, a power button just to the right and a volume rocker to the right of that.
It strikes us as a slightly unusual position for a volume rocker - we'd be more comfortable with it being on the left or right edge, but perhaps that's just from the familiarity of having it there on many other devices.
Near the centre of the top edge there's a pin prick-sized microphone, while to the right of that there's an HDMI port, a full-sized USB port (which supports USB 2.0) and a microSD card slot, all of which are hidden behind little fold-away covers when not in use, keeping the edge uncluttered and elegant.
On the bottom edge there's a keyboard dock port and a pair of keyboard dock pin connectors, the keyboard itself being an optional extra. You'll also find the DC jack down here.
The left and right edges of the tablet are free of any buttons or ports, which make them comfortable to hold, though you need to make sure not to grip too high on the tablet or you'll obstruct the speakers.
Its light weight means the Samsung Ativ Tab is very comfortable to hold for long periods, without feeling off-puttingly light. The curved edges also aid in the comfort stakes, and there's enough grip to it that there's no fear of it slipping out of your hands.
Thanks to Expansys for sending us a Samsung Ativ Tab to review.

subset: commoncrawl


text:
Given Toronto winters, I've learned to appreciate a good patio. When it's nice out, you just want to be outdoors. Here are some looks I quite like for the back deck.
Below: Deck by Atelier A+D
Below: Designs by Architect Cary Bernstein
Below: Rooftop deck by Pultab Design
Below: Design by Magdalena Keck
Tags: Deck, Exterior, Landscaping, Patio


text:
We ate lunch at McAllister's before taking on Samford. We brought everything we had that game and won 10-0 in 6 innings. After that we went to dinner and got some really good pasta. At dinner Mollie (Mitchell), Mackie (Mackenzie Tucker), and I discussed how much Coach (Heather) Collins doesn't like pranks but yet I'm pretty sure she declared a prank war on Mollie and me. Hmm, it's going to be a long season for her then. None of us were too concerned about getting to sleep early because we had a later game and got to sleep in Saturday.
Saturday we rolled out of bed and went to breakfast at 9 then Ali (Watson) and I went back and slept for a couple more hours, you know to get our minds in the zone not because we're lazy or anything like that. Then for lunch we went to Panera, also one of my favorite places to eat. Our first game of the day we played Radford at Samford's field. That was a tight win but thanks to Haybale's (Haley Elliott) two-run shot and then executing and scoring another run it was good for a win.
Right after the game we ate dinner at Jason's Deli. The ice cream wasn't as good as it usually is so we decided it was not a real Jason's Deli. After dinner we headed to UAB's field to take on Indiana State. Let's just say we got cocky. We thought we had that game in the bag, but a lesson was learned. We have to show up and play every team like they are the No. 3 team in the country. A win is NEVER automatic.
Sunday we played St. Louis and unfortunately we had to walk away with another loss. At this point I know our whole team is sick of losing. Before we thought it's because we didn't have energy. This weekend showed us otherwise because we did have energy.
Right now we are trying to find the missing piece to what our team needs to be great because we definitely aren't lacking in talent. These past couple of weekends we've been plugging in pieces to see what it is that's missing. We are looking for that missing piece and we are going to keep plugging away until we find it. Losing is definitely a feeling we don't want to be feeling anymore. We just have to keep at it.
Vanessa Medina is a redshirt sophomore who is writing a weekly blog on the Lady Bisons' softball team.


text:
Robotics not only promotes job growth through sustaining industry; it creates jobs for disadvantaged populations. The Lighthouse for the Blind, an AS9100- and ISO 2001:9000-certified manufacturer, provides jobs for over 200 visually impaired workers, in every part of the company, from the shop floor to management.
Automation Empowers Disabled Workforce
By Wayne Riley, Assembly Magazine
A nonprofit organization, the Lighthouse has been providing machine shop services for more than 60 years. It employs more than 230 blind or deaf-blind workers—80 percent of its workforce—including 70 machinists who are blind or deaf-blind. Each month, these employees create more than 5,500 unique parts at a total volume of 50,000 pieces for Boeing and other aerospace companies with an acceptance rate of more than 99.96 percent.
The workforce at Lighthouse turns out a wide variety of parts and equipment, including aerospace components, specialty tools, office products, hydration packs, bulletin boards, mops and canteens.
Workers do their jobs with help of sophisticated assistive technologies, including large-print keyboards, computer screen-reading software known as JAWS (Job Access With Speech), and digital calipers paired with a voice output device that speaks the measurement on the readout.
With these aids, blind and deaf-blind personnel can operate the most up-to-date equipment for producing aircraft parts and other products with the same skill as sighted individuals.
We're proud that several RIA members are partners with Lighthouse, including robot supplier FANUC Robotics America Corp., integrator PRE-TEC, and Boeing. What other ways do you see robotics making the workplace more accessible?


text:
Birth name: Kim Tae-yeon (Hangul: 김태연 | Hanja: 金泰妍)
DOB: March 9, 1989
Birthplace: Jeonju, North Jeolla, South Korea
Height: 160cm | Blood type: O
Group leader.
DJ on Good Friend Radio (Chinhan Chingoo) from 2008 to April 2010.
Solo in If – drama OST for Hong Gil Dong (2008).
Solo in Can you hear me – drama OST for Beethoven Virus (2008).
Starred in variety show We Got Married (2009) with comedian Jeong Hyeong-don.
Duet with Sunny in It's Love – drama OST for Heading To The Ground (2009).
Starred in stage musical Midnight Sun (2010).
Voiced for animated film Despicable Me (2010).
Duet with The One in Like A Star (2010).
Co-host of variety talk show Win-Win (2010).
Solo in I Love You – drama OST for Athena: Goddess of War (2010).
Duet with Kim Bum-soo in Different (2011).
Korean name: Jung Su-yeon (Hangul: 정수연 | Hanja: 鄭秀妍)
DOB: April 18, 1989
Birthplace: San Francisco, California, USA
Height: 163cm | Blood type: B
Elder sister of Krystal, member of girl group f(x).
Released two singles, Oppa Nappa and Mabinogi, with Tiffany and SeoHyun.
Duet with SHINee's Onew in One Year Later (2008).
Duet with Park Myeong-su in NaengMyun (2009).
Starred in Korean production of Legally Blonde – The Musical (2009-2010).
Solo in Sweet Delight – commercial song for SPC Group (2010).
Birth name: Lee Sun-kyu (Hangul: 이순규 | Hanja: 李順圭)
DOB: May 15, 1989
Height: 158cm | Blood type: B
Co-DJ of Chun Ji Radio (2007-2008).
Solo in Finally Now – movie OST for Story of Wine (2008).
Co-host of The M (2009-2010) with SS501′s Hyungjoon and then 2AM's Seulong.
Duet with Taeyeon in It's Love – drama OST for Heading To The Ground (2009).
Starred in reality-variety show Invincible Youth (2009-2010).
Solo in Your Doll – drama OST for Oh My Lady (2010).
Birth name: Stephanie Hwang
Korean name: Hwang Mi-young (Hangul: 황미영 | Hanja: 黄美英)
DOB: August 1, 1989
Birthplace: Los Angeles, California, USA (but raised in Diamond Bar)
Height: 162cm | Blood type: O
Released two singles, Oppa Nappa and Mabinogi, with Seohyun and Jessica.
Co-host of Sonyeo Sonyeon Gayo Baekso with Kim Hye-sung (2007-2008).
Solo in By Myself – drama OST for Ja Myung Go (2009).
Duet with K.Will in A Girl Meets Love (2009).
Co-host with Yuri for MBC's Music Core (2009 – July 2010).
Solo in Banji – drama OST for Haru (2010).
Birth name: Kim Hyo-yeon (Hangul: 김효연 | Hanja: 金孝淵)
DOB: September 22, 1989
Birthplace: Incheon, South Korea
Height: 160cm | Blood type: AB
Formed a dance group Little Winners Crew with miss A's Min (2004) before debut.
Birth name: Kwon Yuri (Hangul: 권유리 | Hanja: 權侑利)
DOB: December 5, 1989
Height: 167cm | Blood type: AB
Played a part in sitcom Unstoppable Marriage (2007) alongside Sooyoung.
Duet with Sooyoung in Must – drama OST for Working Mom (2008).
Co-host with Tiffany for MBC's Music Core (2009 – July 2010).
Starred in reality-variety show Invincible Youth (2009-2010).
Birth name: Choi Soo-young (Hangul: 최수영 | Hanja: 崔秀英)
DOB: February 10, 1990
Birthplace: Seoul, South Korea
Height: 170cm | Blood type: O
Made a brief debut (2002) in Japan as pop duo Route φ with Marina Takahashi.
Played a part in the sitcom Unstoppable Marriage alongside Yuri (2007).
Duet with Yuri in Must – drama OST for Working Mom (2008).
Played a part in movie Hello Schoolgirl (2008).
Birth name: Im Yoona (Hangul: 임윤아 | Hanja: 林允兒)
DOB: May 30, 1990
Birthplace: Seoul, South Korea
Height: 166cm | Blood type: B
Played a part in drama 9 Ends 2 Out (2007).
Played a part in drama Woman of Matchless Beauty (2008).
Starred in drama You Are My Destiny (2008-2009).
Starred in drama Cinderella Man (2009).
Starred in variety show Family Outing 2 (2010).
Solo in Innisfree Day – commercial song for Innisfree (2010).
Birth name: Seo Joo-hyun (Hangul: 서주현 | Hanja: 徐珠賢)
DOB: June 28, 1991
Birthplace: Seoul, South Korea
Height: 168cm | Blood type: A
Group maknae.
Released two singles, Oppa Nappa and Mabinogi, with Jessica and Tiffany.
Duet with trot singer Ju hyun-mi in JjaRaJaJja (2009).
Starred on variety show We Got Married with C.N.Blue's Jung Yong-hwa (2010).
Solo in It's Ok Even If It Hurts – drama OST for Kim Soo Roo (2010).
Voiced for animated film Despicable Me (2010).
Featured in Let's Go – G20 Seoul Summit OST (2010).
Solo in Journey – drama OST for Paradise Ranch (2011).


text:
111 Gold SE
Any person with knowledge or interest in 111 Gold SE, Albuquerque, New Mexico is encouraged to leave information in the comments section regarding prior owners or tenants of the structure. We are particularly interested in obtaining photographs of this historic property and the people who have called it home over the years.
Please keep in mind that we are interested in sharing the history of this property, as it is listed as a contributing property within the Huning Highland Historic District in Albuquerque, New Mexico. We will not be publishing any information that might compromise the security of the current owners or residents. Thank you for your understanding and cooperation.


text:
Aubrey (From Danity Kane) Interview On The Wendy Williams Show!
Aubrey O'Day ( Danity Kane ) on The Wendy Williams Show August 12, 2008
Please click the "Report" button below if the video on this page is not working properly.
Comments will only be displayed by verified emails. No Spamming or Racism.


text:
3410MST-RSSSize Guide
$ 193.00
When your mind and body are both relaxed, you reach the ultimate state of contentedness. These gorgeous druzies add a bit of sparkle to any chill sesh!
Please note, Nina Nguyen Designs only stocks bracelets in size 7- any other size will require extra time to produce. Due to the natural state of stones used by Nina Nguyen Designs, each piece will vary. Naturally occurring variations such as shape, color, shading, color concentration, thickness, texture, etc, are to be expected, are not flaws, and are not considered a manufacturer defect.
$ 160.00
These single gemstone jackets echo the power and beauty of a drop of water, an essential element for life. Choose your stone, and then select... View full product details
$ 215.00
The Adorn Necklace, in its simplicity, perfectly accents any ensemble. The single gemstone echoes the power and beauty of a drop of water, an essential... View full product details
$ 215.00
These delicate, stackable, sterling silver rings showcase a single, tear-shaped gemstone. Wear alone or stack together for a more dramatic look. Metal: Silver Size: 5-9... View full product details
$ 160.00
These single gemstone studs echo the power and beauty of a drop of water, an essential element for life. Pair them with a statement necklace,... View full product details
Nina Nguyen Designs' rings are a size 7 unless otherwise noted.
Our rings are specially designed with an easy-to-size band. We suggest going to a trusted local jeweler who can then size your ring to your personal needs.
We currently carry four sizes of bangles.
Size 5: Very Small Wrist
Size 6: Petite Wrist
Size 7: Average Wrist
Size 8: Wide Wrist
At Nina Nguyen Designs, we produce a variety of necklace lengths. The image below is an example of what various necklace lengths look like when worn.
The image provided is for example use only and does not show exact length and appearance of Nina Nguyen Designs jewelry.


text:
Get the Flash Playerto see this player.
|Bare Back 101
Short review: Bareback 101 is off to a great start with it's exclusive bareback scenes that feature some very sexy, smooth twink boys. The action is hot with couples and group scenes and there are screenshot galleries to accompany the videos. On top of this you also get to access other sites from the same team which have more twinks, more hot sex, more videos and even more being added on a very regular basis.
Content Amount: The site has started with 5, full length and exclusive videos that run for up to 60 minutes in total. You have 2 ways to view these and each movie is in clips and a full length version. Each has a gallery of 100 screen caps and there are 10 bonus sites.


text:
Virgin Media
My Virgin Media
My Virgin Media
Mobile Your Account
- Find a Store
- My Basket
My Virgin Media
My Virgin Media
Your Mobile Account
- Main Menu
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
Showing results for
Networking and WiFi
WiFi Wins
Five quick tips for faster home WiFi.
WiFi Win #1
Find your Hub's happy place.
Where you keep your Hub makes a difference to the strength of your WiFi signal.
Helping kids stay safe online
Related Content


text:
The appliance world has been rocked by gray this year, especially in the laundry room.
But it's never "gray."
These washers and dryers — whether front-load or top-load — are called pretty much every other name but looking just as sweet and trendy.
Here are the 12 iterations I could find.


text:
Feel free to leave a reply using the form below!
You must be logged in to post a comment.
Caroline Woods
Skywoods Decorative Painting Faux Finishes ,Murals
Phoenix / Scottsdale Arizona
Carolines artistic background goes back into childhood. Parents, seeing artistic talent, encouraged artistic, creative talent. Artwork focused portraits people, pets. Caroline began murals paintings career 2000, church murals projects, painted walls faux friends, family. Receiving complements faux murals , Faux Finishes , Caroline started Faux Finishing , Venetian Plaster , Murals business. Caroline makes sure you know murals , faux finishing cost before faux finishing , murals . When Caroline paints your wall murals , her heart, soul go into artwork. Creativity, talent, dedication produces most incredible murals , faux finishes . Painting paintings fulfilled Carolines personal goals. Carolines murals transformed Arizona homes. Caroline designs, executes any style images, subjects, painted on walls, ceiling , columns , niche paintings .
About Me
As professional artist,creating innovative, engaging portfolio artwork. Sofisticated mural s , Murals Childrens Theme Rooms , Murals Movie Theme Rooms , Murals Fairytale Theme Rooms , Murals Baby Rooms , faux finishes , see infinite possibilities create big impact. Vaulted ceilings , small intimate alcove, view artists canvas space. Eye faux color, texture, movement, transforming dull, plain walls professionally painted wall murals . Murals add space illusion. Faux Marble Columns , Tuscan village view, faux home walls. Unique Murals specially created. Blue Sky ceilings , Faux marble columns , Faux Finishes , Venetian Plaster , Scroll Designs , Ceiling Art/Sky Ceilings , Switchplates/Outlets , popular requests. Your imagination my creation. Design faux you?
Skywoods Decorative Painting , Faux Finishes , Venetian Plasters , Murals
Skywoods Decorative Painting , Faux Finshes , Murals , TRANSFORMATIONS accomplished; murals , faux finishes , venetian plaster, marble Columns . Variety techniques create hand-painted wall murals , artwork. Skillful art faux finishing , Venetian Plaster , wall murals , decorative wall textures, sophisticated metallic faux finishes , transformations ultimate goal.
Handpainted murals , decorative finishes created using carefully executed techniques. Please enjoy our decorative finishes , murals , faux finishes , painting techniques, check back often, we add portfolio photos, painted finishes , murals , decorative finishes complete. Skywoods,decorative painting company specializing Faux Finishes , Venetian Plaster, Murals , Trompe l'Oeil, Marble Columns , working one-on-one faux customers creating beautiful faux effects, mural homes.
Skywoods Decorative Painting , Faux Finishes , Murals provide wide range services including basic, highly advanced murals , simple, intricately detailed faux finishes ; diverse surface selection including walls, mantles, columns , objects, furniture. Mural specialties include: Murals Fairytale Theme Rooms , Murals Movie Theme Rooms , Murals Childrens Theme Rooms , Murals Baby Rooms .
Call today faux appointment faux free consultation
Skywoods Decorative Painting , Murals , Faux Finishes 602 486-3211 Contact Caroline


text:
Security Info
Hello NCKCN internet members
Security Info - FTC's Top Consumer Complaints for 2006
The Federal Trade Commission recently issued its annual report, "Consumer Fraud and Identity Theft Complaint Data," on fraud complaints filed by consumers in 2006. For the seventh year in a row, identity theft tops the list, accounting for 36 percent of the 674,354 complaints received between January 1 and December 31, 2006. Credit card fraud (25 percent) was the most common form of reported identity theft, followed by phone or utilities fraud (16 percent), bank fraud (16 percent), and employment fraud (14 percent). Other common fraud complaints included shop-at-home/catalog sales; prizes, sweepstakes and lotteries; Internet services and computer complaints; and Internet auction fraud. Consumers reported fraud losses totaling more than $1.1 billion and the median monetary loss was $500.
The FTC provides data on consumer fraud complaints to the Consumer Sentinel, a secure online database available to more than 1,600 civil and criminal law enforcement agencies in the U.S. and abroad. For the first time, this complaint data has been broken out for more than 350 metropolitan statistical areas with populations greater than 100,000. You can find detailed information, including state-by-state statistics, at http://www.consumer.gov/sentinel.
The Internet was the top method chosen by fraudulent companies to contact consumers, used 60% of the time (e-mail was used in 45% of the cases and websites in 15%). The remaining methods were mail (16%), phone (13%), and others (10%). What can you do to avoid becoming the victim of online consumer fraud? Take these precautions:
Back to Top
Ask The Help Desk - How Do I Add A Status Bar To My Web Browser?
Question: I used to have a bar at the bottom of my Web browser that showed the progress of searches when trying to find a website. It would tell me if I was connected to the site I was searching for and it even had a little bar that showed whether the requested page was making progress in completely opening. I don't see this information at the bottom of my browser window anymore. Is there a way to get it back?
Answer: Yes. You are referring to a "status bar" and it is a handy tool that tells you whether or not you're connecting to a site. To add the status bar back onto your browser when using Internet Explorer 6.0 and 7.0, simply click your cursor arrow on the Internet Explorer "View" menu and drop down to "Status Bar" on the resulting drop-down menu. If your menu bar in I.E. 7.0 isn't visible, click on the "Tools" icon to the right of your address bar, drop down to "Toolbars," and select "Status Bar" from the resulting submenu. The status bar will appear at the bottom of your browser. If you are using Firefox 2.0, click your cursor arrow on the "View" menu and drop down to "Status Bar." The status bar will appear at the bottom of your browser. When using Safari 2.0, click your cursor arrow on the "View" menu and drop down to "Show Status Bar." The "Status Bar" will appear at the bottom of your browser.
Back to Top
Great Sites To Check Out
This Month
Get Growing
http://landscape-america.com/index.html - April is Lawn and Garden Month so it's time to get growing. To plant the seeds of inspiration, you may want to visit this comprehensive landscaping site. It's an excellent resource for planning your next yard project, and includes information on all aspects of landscaping from selecting the right plants for your climate to adding beautiful and practical pathways. And because things aren't always rosy, this site also offers advice on controlling weeds, insects, and disease.
Top Picks in NASA Pics
http://apod.nasa.gov/apod/archivepix.html - It's the next best thing to being there. Each day NASA posts the Astronomy Picture of the Day on this site, along with a brief explanation written by a professional astronomer. You can see our fascinating universe in all its glory, and get a close-up feel for the stars and planets so far away. In addition to the Astronomy Picture of the Day, check out selected photos dating back to 1995.
Reel Reviews
http://reel.com/reel.asp?node=intheaters - If you don't get your fill of stars on the NASA site, come here for detailed reviews of new movies in theaters and those coming soon. These reviews include handy links to the stars in the cast that show their other movie credits, as well as lists of similar films under Close Movie Matches. Still deciding what to see this weekend? Be sure to view the new trailers included on the site and take a look at the current top ten at the box office.
Wonders of the World
http://new7wonders.com - The Ancient 7 Wonders of the World (including the Pyramids at Giza and the State of Zeus at Olympia) will soon have company. This site is gathering a global vote for the New 7 Wonders of the World and millions of people have already voted for their favorite "wonder." Will the new list include the Statue of Liberty? Eiffel Tower? The Kremlin? We'll find out, appropriately enough, when the seven winners are announced on 07.07.07. There's still time for you to cast your ballot, but as with any sort of online voting site, it's best to use a "throw away" e-mail address (like Hotmail) rather than your main e-mail account.
Draft Tracker
http://nfl.com/draft - Keep up with the action of the 2007 NFL draft (April 28-29) with the help of the official NFL site. All the stats you could possibly want are here including prospect profiles listed by position or school, and a team-by-team history of first round picks from 1982 to 2006. NFL.com draft guru Gil Brandt weighs in with results from this year's Pro Days, plus you'll find draft analysis and columns, player diaries, and links to team draft sites.
Back to Top
Short Tutorial - Customizing Your Browser's Toolbar
The default settings of the newer versions of the Internet Explorer Web browser include buttons for common functions such as "back," forward," "stop," "refresh," home," "autofill," "print," and "mail." Additional buttons for other functions can easily be added to your toolbar or default buttons can be removed. Here's how:
To Make Adjustments To The Browser Toolbar When Using Internet Explorer 6.0 For Windows XP Home Edition:
Back to Top
hope you found this newsletter to be informative. It's our way of
keeping you posted on the happenings here. If, however,
you'd prefer not to receive these bulletins on a monthly basis,
click HERE.
Thanks for your business!
Thank You,
The Staff at NCKCN
NCKCN - North Central Kansas Community Network
109 North Mill
Beloit, KS 67420
©2007 Cornerstone Publishing Group Inc.
Trademarks: All brand names and product names used in this eNewsletter are trade names, service marks, trademarks or registered trademarks of their respective owners.


text:
City of Lincoln
Mayor's Office
Mayor's Office
The public is invited to celebrate Hispanic Heritage Month at Lincoln City Libraries with a Read-In at 6:30 p.m. Tuesday, October 9 at Walt Branch Library, 6701 S. 14th Street. Lincoln residents from a variety of Hispanic backgrounds are volunteering to share part of their culture by reading stories and poems.
The observance of Hispanic Heritage Week started in 1968 under President Lyndon Johnson and was expanded by President Ronald Reagan in 1988 to cover the period from September 15 through October 15. The observance celebrates the histories, cultures and contributions of Americans whose ancestors came from Spain, Mexico, the Caribbean and Central and South America.
More information is available at lincolnlibraries.org.


text:
The Cinderella story of Notre Dame's college football season ended in defeat in the BCS national championship game. The story that fueled Manti Te'o's emotional play, the loss of his girlfriend Lennay Kekua, however, ends in a lie, according to a report by Deadspin.com.It's not clear when Te'o became aware of the hoax, or if he was involved in its perpetuation, but according to Notre Dame spokesman and assistant vice president Dennis Brown, the team's coaches were informed of the hoax before the team took the field for the BCS title game against Alabama.
"On Dec. 26, Notre Dame coaches were informed by Manti Te'o and his parents that Manti had been the victim of what appears to be a hoax in which someone using the fictitious name Lennay Kekua apparently ingratiated herself with Manti and then conspired with others to lead him to believe she had tragically died of leukemia," Brown said in a statement on Facebook. "The University immediately initiated an investigation to assist Manti and his family in discovering the motive for and nature of this hoax. While the proper authorities will continue to investigate this troubling matter, this appears to be, at a minimum, a sad and very cruel deception to entertain its perpetrators."


text:
The ad, created in-house at Abercrombie & Fitch, features a troop of its male models lip-syncing to Carlie Ray-Jepsen's 'Call Me Maybe' on a tour of the world, and has racked up almost seven million views and more than 10,000 comments.
Meanwhile, the ad for Google's tablet, the Nexus 7, announced last week, was shared 5,497 times and made it to ninth position in the chart.
Microsoft's Surface ad, this week in last place, remains the most successful of this summer's tech launches, having peaked in second place with more than 216,000 shares, ahead of both the Nexus and Apple's ad for its latest Macbook Pro.
PBS Studio's 'Mr Rogers remixed' spends its last week in the chart in fifth place, having secured the top spot on its debut three weeks ago.
Elsewhere, two Nike ads have entered the chart, receiving combined shares of more than 24,500 this week.
'Game on, world' and 'jus' fly dunk', both created by Wieden & Kennedy, have been viewed 3.2 million times between them.
The chart, produced in conjunction with Unruly, ranks ads according to the number of times they have been shared on Facebook, Twitter and the blogosphere.
Ads launched more than 30 days ago are not included.
Due to technical issues with Twitter's API, shares from the social network were not included in the count.
1. Abercrombie & Fitch 'call me maybe' created in-house
147,959 shares this week
All time: 1,446,304 shares
2. BMW 'bullet' by Cundari, Toronto
28,352 shares this week
All time: 204,371 shares
3. Coca Cola 'security cameras' by Landia
18,064 shares this week
All time: 467,509 shares
4. Nike 'jus' fly dunk' by Wieden & Kennedy
17,155 shares this week
All time: 66,270 shares
5. PBS 'Mr Rogers remixed' created in-house
16,936 shares this week
All time: 889,412 shares
6. Nokia 'Dark Knight Rises' by Warner Bros.
13,726 shares this week
All time: 354,320 shares
7. Nike 'game on, world' by Wieden & Kennedy
7,361 shares this week
All time: 11,086 shares
8. Google 'project glass: sky-diving demo' created in-house
6,183 shares this week
All time: 15,078 shares
9. Google 'introducing Nexus 7' created in-house
5,497 shares this week
All time: 14,051 shares
10. Microsoft 'surface' created in-house
5,066 shares this week
All time: 263,831 shares


text:
Microsoft Dances Closer to the Set-Top With Xbox Music
Oct 16, 2012 5:00 AM PT
Microsoft is taking another stab at the digital music industry with the Tuesday launch of Xbox Music, a streaming music service that will be an update to the Xbox. It will also be released as a built-in feature on Windows 8 PCs and tablets later this month.
Users will be able to stream the service's 30 million tracks for free in an ad-supported version or purchase it at the now ubiquitous price point of 99 US cents per song.
There's also an option to pay $9.99 per month for unlimited cloud-based streaming of music purchases and playlists to any device.
A Microsoft spokesperson was not immediately available to provide further details.
The Post-Zune Era
This, of course, is not Microsoft's first stab at entering the digital music market. There was the Zune brand, now retired after failing to gain much traction.
There are some similarities between Xbox Music and Zune -- both are multichannel services that incorporate the use of other Microsoft products.
Zune included a line of portable media players, digital media player software for Windows, a music subscription service, music and video streaming services for the Xbox 360 game console and the media software for Windows Phone, among other features. It was all discontinued a year ago.
Xbox as Set-Top Box
Xbox Music is clearly different from Zune in some important respects -- and it can be expected to change the Xbox dynamic, Rob Enderle of the Enderle Group told TechNewsWorld.
The Xbox is being positioned as more of a set-top box going forward, he said. Microsoft carved out its identity at first with games and then movies -- and now it is incorporating music into the mix.
In fact, cable providers should be just as worried as other online music providers about Xbox Music. Like Apple TV, it is trying to replace traditional cable boxes with alternatives tied to a parent technology.
"Music has proven relatively easy, and Microsoft leads with games; it is video that remains the bridge too far and both firms are struggling here," said Enderle.
Digital Music Nation
Microsoft has another factor in its favor now with Xbox Music. Digital music has become mainstream, and consumers expect easy access and a smooth experience, said Patrick Reynolds, EVP of marketing for Triton Digital.
"There has never been more interest in or listening to online music," he told TechNewsWorld. The market has become a very big pool, and "there's room for more than one player."
The growing reliance on smartphones for everything is also changing how music is consumed, Enderle noted. "We may find that media services and access will define battles ranging from set-top boxes to smartphones over the next decade."
Table Stakes
In fact, a good music service has become table stakes for both Apple and Microsoft, Enderle said. It will be a critical issue for Google as well, if it is not already.
Google still relies mostly on third parties, he noted. However, "their music service, while not as well known, is actually rather good, being a bit more consumer-focused and a bit less record-label friendly."
In this rapidly shifting environment, can Microsoft make a dent? How the user experience syncs up with the broader environment could be crucial.
"It depends on how baked-in it is to the other aspects of the Xbox environment," said Reynolds. "If the experience is great and seamless and additive to the overall consumer experience, it will work."


text:
Reward, Recognize, and Motivate with Cross
Cross is recognized and trusted worldwide for its distinctive style and superior quality product. Cross luxury writing instruments and personal accessories have long been symbols of success and achievement. They are the perfect way to exhibit appreciation and esteem for valued clients and colleagues.
Cross's fine craftsmanship, product guarantees, and reliable service ensure that respect and recognition will continue to be conveyed long after the gift is given. Jewelry-quality emblematic decoration, personalization, and handsome gift packaging enhance the presentation and appeal of these most prestigious of acknowledgments.
From weeks in advance to very last minute, from your smallest local vendor to your largest global account, from 5 pens to 5000 – we offer a selection of our finest pens & accessories with inventory and deliverability as reliable as the products themselves. Give recognition, give luxury, give Cross.


text:
joewein.de LLC
fighting spam and scams on the Internet
Victims never receive this non-existent fortune but are tricked into sending their money to the criminals, who remain anonymous. They hide their real identity and location by using fake names and fake postal addresses as well as communicating via anonymous free email accounts and mobile phones.
Read more about such scams here or in our 419 FAQ. Use the Scam-O-Matic to verify suspect emails.
Click here to report a problem with this page.
Fraud email example:
From: "LAPRIMITIVA INTERNATIONAL LOTTERY" <email@example.com>
Date: Tue, 27 Sep 2005 09:47:01 +0000
Subject: YOUR E-MAIL ADDRESS WON THE LOTTERY.
Euromillion Loteria Español
Paseo De La Castellana
15-89, 28008 Madrid.
Spain Branch.
Ref. Nº: ES/007/05/12/MAD.
Batch. Nº: GHT/2907/333/05.
We wish to congratulate you over your email success in our computer
sweepstake held on 20th September, 2005. This is a millennium scientific
computer game in which email addresses were used. It is a promotional
aimed at encouraging internet users; therefore you do not need to buy ticket
to enter for it.
Your email address attached to ticket star number (4-5) drew the EUROMILLION
lucky numbers 3-19-26-49-50 which consequently won the draw in the Second
category. You have been approve for the star prize of EUR 667,248.26. (Six
Hundred And Sixty Seven Thousand, Two Hundred And Fourty Eight Euros. Twenty
Six Cents)
You are advised to keep this winning very confidential until you receive
your lump prize in your account or optional cheque issuance to you. This
is a protective measure to avoid double claiming by people you may tell as
we have had cases like this before, please send your Full Name,Home and
Office Tel & Fax Number, Mobile Tel Number and your winning ticket
numbers and amount won information for processing of your winning fund to
our registered claim agent in addrres below.
CamTrust Security Service
Mr.Phillip Weeks
Address: Avenida de America 12
Madrid Spain.
Remember, all winning must be claimed not later than 20th Octorber,
note, in order to avoid unnecessary delays and complications, remember to
quote your reference number and batch number in all correspondence.
Furthermore, should there be any change of address do inform our agent as
soon as possible.
Once again congratulations.
Best regard,
Mrs. Emily Simon,
Lottery coordinator.
The information transmitted is intended only for the person or entity to
whom or which it is addressed. Unauthorised use, disclosure or copying
is strictly prohibited. The sender accepts no liability for the improper
transmission of this communication nor for any delay in its receipt
Anti-fraud resources:


text:
At Prism Medical our business is safe patient handling equipment. Anyone working in hospitals, long term care facilities, private homes or in any other medical situation understands the challenges which arise when trying to move or transfer someone who has mobility issues. The majority of caregiver injuries happen when moving or transferring someone. These are preventable injuries.
At Prism Medical we consider it our job to make sure you get the safe patient handling and mobility equipment which works best for you. Our primary concern is the safety and comfort of both caregivers and patients and our job is not finished until you are comfortable with your equipment and are using it properly. That is why whether you work in a hospital, nursing home, medical facility, or are caring for a loved one at home, we will train you on the principles of good body mechanics, evaluate your working environment and then recommend patient handling equipment that will best fit your unique situation. We tailor our advice and the training we offer to fit your specific situation.
You have no items to compare.
Please wait...


text:
Betting on the Greens
- By Jeff Williams
- | From Kevin Costner, Nov/Dec 00
In a town that has its own Pyramid, its own Sphinx, its own Venetian Canal and its own Eiffel Tower, do you think it would be difficult to grow grass? When you can build 5,000-room behemoth hotels and put a roller coaster at the top of a space needle, creating golf courses in the desert is easier than pulling an inside straight.
Las Vegas is the ultimate mirage, a shimmering neon oasis of self indulgence that feeds the souls of adrenaline-starved gamblers who come for the rush as much as the cash. For decades, Las Vegas has drawn millions of patrons by offering the illusion that there were millions of bucks to be made in the most glamorous of circumstances. Throw in chorus girls, Wayne Newton and an oil tanker full of complimentary drinks and you had a perfect gambler's cocoon. No need to leave the casino. No need to leave the hotel. No need to know whether it is day or night.
It's different now.
Las Vegas is going green. Vast carpets of grass are covering the desert landscape. There is something to do outdoors in the blazing sun. Thousands of people are riding around in carts, swinging sticks, hitting something other than blackjack and rolling something other than dice.
Once, Las Vegas had two golf courses of note: the Desert Inn and the Las Vegas Country Club. The PGA Tour visited the Desert Inn frequently, and when the high-profile pros weren't there, a lot of high-profile gamblers were. If the gamblers weren't at the Desert Inn, they were at the Las Vegas Country Club. Matches played for $100,000 weren't unheard of; matches for a million were whispered. Not everybody played for that kind of money, but there always seemed to be something on the line.
There are now more than 50 courses within an hour's drive of the Las Vegas Strip. More grass has been laid down in the desert over the past decade than felt over craps tables. Golf has become hip, cool, the thing to do. And of course, golf and gambling have always gone together. Who hasn't played a match for two bucks or two hundred? Who hasn't pressed a Nassau bet or wagered a five-spot on who makes the next birdie? Who hasn't seen his best friend choke over a dollar sandy? Who hasn't seen Tiger Woods gobble up the golf world and go off at odds of 15/8 in the British Open?
Hoteliers and entrepreneurs are gambling that golf will be another big drawing card in the deck of high-stakes business. In the age of Tiger Woods, that's not such a long shot. Steve Wynn knew this. Wynn also knew that Las Vegas was a grand illusion. So when the grand hotelier set about creating the Mirage Resort, he also set about creating what might be Las Vegas's ultimate mirage, Shadow Creek.
If you know about golf and you know about Las Vegas, then the odds are short that you know about Shadow Creek. You know about it, but the odds are equally short that you haven't played it. Shadow Creek is the Siren on the distant rock, the brass ring out of reach of the masses and held dear by the precious few. Wynn wanted it that way. He wanted a course that was a private sanctuary for his highest of rollers, a retreat for his closest friends, a desire for his most well-heeled customers. He gave architect Tom Fazio a virtually unlimited budget and told him to build a course unlike anything Las Vegas had ever seen--not that most of Las Vegas would ever see it.
What Wynn conceived and Fazio rendered is a remarkable transformation of the desert floor. Whatever you've heard about Shadow Creek is true; whatever you've dreamed about it is real. Shadow Creek is a marvelous (bordering on miraculous) place to play, and now that Wynn has sold his Mirage Resorts holdings to MGM, it has also become more accessible.
Shadow Creek is a sunken paradise in the desert about 20 minutes north of the Strip. Fazio dug down into lifeless earth, bermed up the perimeter, brought in 30,000 trees and created a Pacific Northwest golf course in an arid Southwestern climate. From the confines of the course, all that is visible beyond the tree line are the distant mountains. From the moment you pass through the club's guarded electronic gate, you have left Las Vegas and entered a different dimension. That's what $40 million and a vision can do.
Every hole at Shadow Creek is a work of art, separated from the next by mounds and thick stands of trees. From 7,239 yards from the back tees to 6,701 from the regular tees, Shadow Creek is as good a test of golf as it is a walk (make that a ride) in the park. There is a certain sense of renewal at every tee, a sense of adventure. The question keeps arising: can this really be?
Unlike the hotels of the Strip, the clubhouse at Shadow Creek is less of everything. It is understated, simplistic by comparison and comfortable to the bone. In the open, brightly lit locker room, brass nameplates on the lockers read Michael Jordan, George Bush, Arnold Palmer. If you're fortunate enough to get a locker, chances are the staff will know who you are and treat you with familiarity. You have, in every sense of the word, arrived.
When Shadow Creek first opened, you could only play with Wynn's approval. As a guest of the Mirage, you were allowed to play if you took a $1,200 suite for the night. That worked out to roughly $700 for the room and $500 for a greens fee, the highest in the United States. That greens fee still applies, but the new MGMMirage Resorts has made the course more accessible. You have to stay at one of the MGMMirage resorts: MGM Grand, Mirage, New York-New York, Bellagio, Treasure Island or Golden Nugget, but unlike the Mirage days, any room will do. With that qualification you can call 888-778-3387 and ask for a tee time. Play is limited to as few as 11 foursomes or as many as 30 foursomes, but don't worry, Shadow Creek is still exclusive, still holds its mystique, still is an illusion in the desert.
The Rio All-Suite Casino Resort has tried to cash in on a bit of that mystique by building its own high-end golf course, the Rio Secco Golf Club, and signing up Tiger Woods's swing coach, Butch Harmon, to run a golf academy on the property. The course, designed by Rees Jones, is a 15-minute drive from the hotel to the foothills south of Las Vegas. Six holes play along the desert floor, six through canyons and six along a plateau. The greens fee is in the $200 range at this course, built strictly for the guests of the Rio or Harrah's.
But maybe not. It seems that there hasn't been quite enough revenue generated from the hotel guests, so the Rio just might be willing to accommodate a few outsiders, particularly corporate or club groups. It also might be willing to arrange lessons at the Butch Harmon School of Golf, maybe even with old Butch himself.
More accessible are the courses owned by one of Las Vegas's best-known gamblers, Billy Walters. Walters will tell you that he isn't much of a gambler anymore; instead he's an entrepreneur taking a chance that golf will be a substantial part of Las Vegas's future. Walters runs the 54-hole Stallion Mountain complex, the adjoining Royal Links and the downtown Desert Pines Golf Club. "For years we didn't have enough quality golf available to the public here," says Walters, a pretty fair golfer himself. "If Las Vegas is going to be a complete destination for everybody, then you have to have golf, and good golf with good service. That's what we provide, and it's working."
The Stallion Mountain courses are bland by comparison with many of the dramatic desert courses, but because of that they are much more playable for high handicappers. The Royal Links is a replica course of famous holes from the British Isles, such as the Road Hole at St. Andrews and the Postage Stamp at Royal Troon. You might recognize them if you've played them, though you will also recognize that you are still in Las Vegas. The illusion isn't complete here, and at a $225 greens fee ($275 on weekends), you'll have to decide whether it's a value or not. Desert Pines packs a lot of course in a very small piece of land, about 98 acres, and is the most interesting of all the Walters properties, with the added convenience of being very close to the Strip. But beware of balls from adjoining fairways.
The newest of Walters' developments is a course that sits right off the end of the runways of McCarran International Airport. This is Bali Hi, meant to suggest the South Pacific with plenty of blinding white sand, palm trees, tropical foliage and water. It's scheduled to be open in November, meaning you can get in a round of golf on the way from the baggage claim area to the casino floor.
In the Las Vegas suburbs are courses such as Badlands, a target-golf course designed by Johnny Miller, and the TPC courses at Summerlin and The Canyons. There's the Revere at Anthem, with a waterfall behind the seventh hole green suggestive of the American side of Niagara Falls. There's also the Legacy Golf Club, with its par-3 10th hole that has four tee boxes in the shapes of a heart, a diamond, a club and a spade, the spade being the championship tee. Wretched excess is also the hallmark of the private Southern Highlands Golf Club, designed by Robert Trent Jones Jr. and Robert Trent Jones Sr., that is quite stunning and may be playable by those who make discreet phone calls.
In a world apart from the Strip, the Lake Las Vegas development in Henderson, about 25 minutes east of Las Vegas near Lake Mead, is an oasis of tranquility. The illusion is Las Vegas Lake, not the Jack Nicklaus golf course known as Reflection Bay. The lake is man-made, of course, with expensive housing and a Nicklaus private course on one side, and Reflection Bay and the Hyatt Regency Lake Las Vegas on the other. The Hyatt Regency is for people who don't want in-your-face opulence and over-the-top grandeur. It has a pure resort feeling, done with a Moroccan theme. There is a small European-style casino that you don't even have to walk through to get to the elevator.
Though Nicklaus will tell you that every course he builds is a reflection of the land and the desires of the developer, Reflection Bay is pure Nicklaus. The fairways are wide, the greens large with gentle contours. The lake comes into play on the final two holes of each nine. The water at the shoreline is shallow, and there are likely to be golf balls that are just out of the reach of ball retrievers but within easy grasp of ambitious waders. Nicklaus has combined just enough challenge with just enough forgiveness to make Reflection Bay the consummate resort course.
Las Vegas will always be an illusory world inhabited by dreamers who are driven by the churn of casino cash. Tapped-out days followed by get-well nights, or vice versa. And where there is gaming, there will always be the outdoor game of choice, golf. It's an illusion that is here to stay, an illusion built around the most elusive of all the courses, Shadow Creek.
A frequent contributor to Cigar Aficionado, Jeff Williams writes about golf for Newsday.
PLAYING THE NUMBERS Getting tee times at some of these courses is by no means guaranteed, but here are the contact numbers for some of the Las Vegas area's top courses.


text:
Thank this author by sharing:
By Leon Platt,
2008/01/04 (first published: 2003/09/26)
This article will quickly dive head first right into XML. I will take an
everyday object and attempt to describe it using XML. Then I will load the
XML file into a XML document object model (DOM). Next, I will demonstrate
how to query the XML document using XPath and perform some minor manipulation of the DOM.
All of this functionality will be preformed using a simple Visual basic application and
the Microsoft parser
version 3.0. The final objective of this article will be to produce an
ActiveX control which will query the pubs SQL Server database and return a list
of book titles in XML format.
If any of you have ever picked up a book and tried to learn XML on your own you were probably confronted with the same confusing bombardment of information that I was. DTDs, XML
Schema, name spaces,
XPath, XPointers, XSL , XSLT, DOMs, SAX, SOAP, YIKES I GIVE UP. To make matters worse, most of this material is based on proposed implementations and much of the
sample software is buggy and unpredictable. There must be a million ways to implement and use
XML, this can all be very complicated. But guess what; XML can be simple too. If we ignore
DTDs, XML Schemas, namespaces, etc.
In my quest to get you up and running with XML quickly, I am going to ignore a good portion of the information you will find in many books on the subject. The first
items I will ignore are namespaces and schemas. You may think this is strange
since most books start with these subjects, but think of XML as a tool to get a job done, just like a hammer is a tool. To use a hammer,
do I need to understand how to build a house? What if all I want to do is hang a picture? XML is the same way, it can be
really complex and full of confusing specifications making it
versatile enough to use in hundreds if not thousands of applications, but it can also be very simple
if some things are ignored. In this article, I will concentrate on the
XML necessary to solve a specific problem.
So what exactly is the problem? Well lets suppose I want to describe a simple object such as a cup using
XML. Why would I want to use XML to do this? Well, first of all, that's what XML does. XML describes data. In
my example; the cup is the data. In real life, the data could be a word document, a spreadsheet, an image, a book, a record from a database, or maybe even a
VB or C++ class. Secondly, XML is extensible. XML lets me create as many tags as
I want to describe our data and the tags can be defined however I want, as long as
I follow some simple rules. Lastly, because it is quickly becoming a universal standard. If there is life on mars, you can bet they will understand
my XML file.
The material its made of
If the material is transparent or not
the height in inches
the number of ounces it will hold
its contents
description of any solid objects and the quantity
description of any liquid substance and the volume
description of any other substance and the quantity
whether or not it has a lid
<?xml version="1.0"?>
<MATERIAL transparent="yes">glass</MATERIAL>
<HEIGHT units="inches">6</HEIGHT>
<VOLUME units="ounces">16</VOLUME>
<SOLID qty="2">ice cube</SOLID>
<SOLID qty="1">straw</SOLID>
<LIQUID qty="3" units="ounces">water</LIQUID>
<OTHER qty="0"/>
<?xml version="1.0"?>
<MATERIAL transparent="yes">glass</MATERIAL>
<HEIGHT units="inches">6</HEIGHT>
<VOLUME units="ounces">16</VOLUME>
<SOLID qty="2">ice cube</SOLID>
<SOLID qty="1">straw</SOLID>
<LIQUID qty="3" units="ounces">water</LIQUID>
<OTHER qty="0"/>
XML RULE #1: a valid XML file will conform exactly to its specified schema. However, to make things simple, none of my examples will use schemas. Thus, none of
my XML files will be "valid" as far as a parser is concerned. But, guess what,
I don't care. I'm not building a house, I'm only hanging a picture. I'll explain more about this later when
I get into using the XML DOM.
XML RULE #2: If you are a VB programmer; XML is case sensitive. XML is case sensitive. XML is case sensitive. Write this sentence 1000 times and don't forget it.
XML RULE #3: Tag names are called Elements, and every beginning tag must have an ending tag. This is known as well-formed
XML. This is very important because a XML file will not parse and will not load into the DOM unless it is well-formed. Note: if elements do not contain a value and do not contain other elements then the short hand version of the end tag <Element /> may be used instead of the long version <Element></Element>. This can be seen in my example above for the element <OTHER qty="0"/> in the contents section of the
cup XML file.
XML RULE #4: Elements can contain attributes and the values of the attributes must be contained in quotes (either single or double).
XML RULE #5: It is ok to re-use attribute names, but make sure your element names are unique throughout the entire
file. In the example above, the attribute qty has a different meaning depending on whether it is used in the element <SOLID>,<LIQUID>, or <OTHER>. The meaning of an attribute depends on the context in which it is being
used. Whereas, the meaning of an element always means the same thing no matter where it is found in the
file. In our example above the elements <SOLID> and <HEIGHT> always have the same meaning in our document. <SOLID> is always used to describe a solid that is present as part of the cups contents, and <HEIGHT> always describes the height of
the cup.
XML RULE #6: There are some special characters in xml that can not be used directly
as data because they would interfere with the syntax of tags and attributes. Thus, these characters must be escaped out using the & character and a
special code. (& must be replaced with &) (" must be replaced with ") (< must be replaced with <) (> must be replaced with >) and ( ' must be replaced with ') To get around this a special xml processing instruction <![[CDATA[...]]>
can be used, where the "...." portion can be any character string that does not include the "]]>" string literal. CDATA sections are a method of including
data that contains characters which would otherwise be recognized as markup. CDATA sections may occur anywhere that character data may occur, but they cannot be nested.
Visual Basic 6.0 code:
(need to set a reference to Microsoft XML, v3.0)
Dim xmlDoc as MSXML2.DOMDocument30
Set xmlDoc = New DOMDocument30
xmlDoc.async = False
xmlDoc.validateOnParse = False
xmlDoc.load ("c:\inetpub\wwwroot\xml\cup.xml")
msgBox xmlDoc.xml
ASP Server-Side VB script code:
Dim xmlDoc
Set xmlDoc = Server.CreateObject("Msxml2.DOMDocument.3.0")
xmlDoc.async = False
xmlDoc.validateOnParse = False
xmlDoc.load "/xml/cup.xml"
ASP Server-Side Java Script code:
var xmlDoc = Server.CreateObject("Msxml2.DOMDocument.3.0");
xmlDoc.async = false;
xmlDoc.validateOnParse = false;
xmlDoc.load ("/xml/cup.xml");
Line 1: Dim xmlDoc as MSXML2.DOMDocument30
This first statement requires a reference set to "Microsoft
XML, v3.0". In this line, I am declaring the variable xmlDoc to be a XML
document (DOM). MSXML2 is the library and this is always MSXML2 (you may
see older code that
uses the library msxml) (also do not be tempted to put MSXML3 for
version 3, this has nothing to do with the parser version and it will not
work). DOMDocument30 specifies a XML document object (DOM) conforming
to version 3.0. You may also see code samples where the line may be
dim xmlDoc as MSXML2.DOMDocument. Notice there is no 30 after DOMDocument,
this is the version independent way to set up a XML document. The version
independent method will use the currently registered parser, whatever version it may
be. The problem with the independent method is that the default registered version
of the parser will vary
from machine to machine. If you want to use the independent method, you
better make sure your code is generic enough to work with any version of the parser
or it may break. You can not assume that every user will
have the version parser you are expecting. The advantage to using the
independent method is that when a new version of the parser comes out the
application will support it automatically without recompiling.
Line 2: Set xmlDoc = new DOMDocument30
This line actually initializes the variable xmlDoc to a new XML document
(DOM) version 3.0.
Line 3: xmlDoc.async = False
XML files can be loaded either synchronously or asynchronously. If xmlDoc.async=False then the entire XML file will be loaded before control is
given back to the calling program. If xmlDoc.async=True then the load function
will immediately return control to the calling program even though the XML file
may not be entirely loaded.
Line 4: xmlDoc.validateOnParse = False
When loaded the parser can be instructed to validate the XML file against a
schema (validateOnParse=True) or we can ignore schemas and validation entirely
by setting (validateOnParse = False).
Line 5:
xmlDoc.load ("C:\inetpub\wwwroot\xml\cup.xml")
This line calls the load method of the DOMDocument. There are two
versions of the load method. The one I am calling here loads a file into
the DOM and it must be passed a valid path and filename. The second
version of the load method is used to load a xml string into a DOM and it must
be passed a well-formed xml string. The string version of the load method would
be called using xmlDoc.loadXML("well-formed xml string"). I will
demonstrate this later.
Line 6:
MsgBox xmlDoc.xml
This line will display the xml for the entire document. The results
should be the same as the original xml file.
Create a new standard.exe project in visual basic. Insert the sample
code into the forms load method. Make sure you create a reference to
"Microsoft XML v3.0". To do this click Project-->References,
then scroll through the list until you find it. Note: the version 3 of the
parser must be installed or you will not find the reference in your list.
Set a breakpoint on the last line of the code. The line that reads
msgbox(xmlDoc.xml). Run the application in debug
mode. When the breakpoint is hit and the application stops; bring up the
locals window and examine the DOM. You can learn a lot about the DOM by
walking through it in the locals window. The locals window should look
similar to the figure on the next page. Some interesting properties of the DOM
The XML DOM always contains two top level nodes:
Item1 is the root element of the
document ( ignore this node )
Item2 is actually the first
element of the document (remember this)
nodeName or baseName - this can be used to find the name of an Element or Attribute
nodeType - use this to retrieve the type of the current node.
nodeValue - use this to get the data value of the node
childNodes - is a collection of children nodes that exist in the tree at a
level directly bellow the current node. Child nodes can be element nodes,
text nodes or CDATA nodes. There are also other types of nodes that I will
not discuss, but you can find a good description of them in the XML SDK.
attributes - is a collection of attribute nodes for the current
length - use this to find the number of nodes in the tree at a level directly
bellow the current node.
xml - this property exists on all nodes and can be used to get the xml string
representing the current position in the document. The xml string starts
with the current node and traverses down the rest of the tree. This is a
very useful property. Play around with it and see what you get.
Element nodes can contain other element child nodes, attribute child nodes,
text child nodes, or CDATA child nodes. From the figure bellow the following information
can be obtained about the current node "SOLID" :
nodeType - The current nodes type = NODE_ELEMENT - the current node is
an element.
nodeName or baseName or
tagName - The current nodes (Elements) name is
It's parent element is CONTENTS which has 4 children
You can't see it from the figure bellow but SOLID has one childNode, which is
of type text. (see text nodes on a following page)
text - "ice cube" this is a short cut method of obtaining the
current nodes value without actually navigating to the child text node.
Attribute nodes can contain only text child nodes or CDATA child nodes.
From the figure bellow the following information can be obtained about the
current node "qty" :
nodeType - The current nodes type = NODE_ATTRIBUTE - the current node
is an attribute.
nodeName or baseName - The current nodes (Attributes) name is = qty
You can't see it from the figure bellow, but qty has one childNode, which is
of type text. (see text nodes on a following page)
text or value - "2" this is a short cut method of obtaining
the current nodes value without actually navigating to the child text node.
Text and CDATA nodes do not contain child nodes. Text nodes contain parsed
text data for its parent node. CDATA nodes contain unparsed text data for
its parent node. CDATA nodes are created when the CDATA processing instruction
is wrapped around data in the xml file. This is useful for cases when the
data contains special characters. The CDATA processing tag tells the
parser not to parse the data and to accept all characters within the tag as
data. CDATA sections are especially useful when trying to embed code in an
xml file. From the figure bellow the following information can be obtained
about the current text node.
NodeType - The current nodes type = NODE_TEXT - the current node is an
text data.
nodeName - The current nodes (text) name is = #text - all text nodes
are named #text
data or text or value - "2" - this is the current nodes data
The parseError section of the DOM can be beneficial to tracking down problems
with loading the xml document. If I remove the ending tag from OTHER in
our sample file and run the program again I get the following results. The
first piece of helpful information is that our nextSibling is Nothing.
Also, if you looked at childNodes you would find the length equal to zero.
Both these things indicate that the xml document did not load. To find out
why it did not load I open up the parseError node to retrieve all the specific error
Ok, so I have shown how to get an xml file into the DOM, but what do I do with
it now? Well, one of the most common things you will want to do is query
the xml document. To accomplish this you could traverse the document until
you find what you are looking for, but most likely you will use one of two
methods of the DOMDocument or current node (context node). The two methods used
to query for nodes in our previous example would be xmlDoc.SelectSingleNode(patternString) to return one node and
xmlDoc.SelectNodes(patternString) to return a list of nodes. The
patternString parameter that is passed into these methods consists of a query. This patterString can be formatted in one of two ways. Either
as a XSL query or as a XPath query. The XPath version is the newer and
more preferred method of querying xml documents. The format of the patternString must be set before any queries are run using the
two indicated methods,
otherwise the default XSL format will be used. To set the format of the
patternString you will use the setProperty("SelectionLanguage",
"format"). To change the queries in our example to use a XPath
patternString, I will issue the following command:
setProperty("SelectionLanguage","XPath"). In my
opinion, XPath is probably one of the most important XML technologies to learn. I will introduce
some simple XPath queries, but I highly recommend doing some independent research in this
area. A good starting place would be the Microsoft XML SDK. I have
also come across some pretty good tutorials on various web sites. Another
avenue of exploration would be to write a simple VB application to allow you to
enter XPath queries and have the results displayed. You can probably find a freeware application to do this but
XPath is still fairly new and may not be
entirely supported by every application that you find.
Lets add some additional code to the end of our previous example to return
us just the contents of our cup:
Dim objNode As IXMLDOMNode
Dim objListOfNodes As IXMLDOMNodeList
xmlDoc.setProperty "SelectionLanguage", "XPath"
MsgBox "Your cup contains the following items"
Set objListOfNodes = xmlDoc.selectNodes("//CONTENTS/*")
For Each objNode In objListOfNodes
MsgBox objNode.Text
Run the program and and see what you get. Notice that you should get four
message boxes telling indicating what is in the cup. The last message box should
be blank because the Element "OTHER" does not contain text. Lets
fix the query to return all the contents of the cup where the qty>0.
Change the line of code that does the query to the following:
Set objListOfNodes = xmlDoc.selectNodes("//CONTENTS/*[@qty>0]")
Set objNode = xmlDoc.selectSingleNode("/CUP/LID")
if objNode.text="yes" then
MsgBox "We have a lid"
MsgBox "No lid on this cup"
end if
Line 1: Dim objNode As IXMLDOMNode
This line defines the variable objNode as a variable of type xml document
node. It is important to realize that a XML document node is an
object. It is not a value. It consists of itself as well as all of
its attributes and childNodes. In this manner you can prune a entire branch
off of a tree by selecting the correct node.
Line 2: Dim objListOfNodes As IXMLDOMNodeList
This line defines the variable objListOfNodes as a variable of type xml
document node list (a group of nodes).
Line 3: xmlDoc.setProperty "SelectionLanguage", "XPath"
This line sets our patternString format to XPath.
Line 4: MsgBox "Your cup contains the following items:"
Line 5: Set objListOfNodes = xmlDoc.selectNodes("//CONTENTS/*[@qty>0]")
This line runs a XPath query that will return a group of nodes and store them
in the variable objListOfNodes. The query breaks down like this:
//CONTENTS - get all the CONTENTS elements in the xml
document. This retrieves one element node from our sample XML file
(<CONTENTS>). Note: // is short for in the entire xml
/* - from the list of CONTENTS element nodes, get all ( * - short for
all ) the child elements. This narrows our results down to four element
nodes (<SOLID><SOLID><LIQUID><OTHER>). These four
nodes fall directly under the CONTENTS node.
[@qty>0] - for each child element test its qty attribute (@ - short
for attribute) to see if it is greater than 0. If it is keep the element
node otherwise discard it. Anything inside of [ ] in an XPath query gets
resolved to true or false. If the results are true then the node remains. If the results are false, then
the node is discarded. This
narrows the query results down to three element nodes
Line 6-8: For Each objNode In objListOfNodes / MsgBox objNode.Text / Next
These lines will display the value of each element node that matched the query.
( "ice cube" , "straw" , "water" )
Line 9: Set objNode = xmlDoc.selectSingleNode("/CUP/LID")
This line queries for all the LID elements that exist directly under CUP
elements that exist directly under the ROOT (when a query starts with / it means
start at the root). This works just like a directory path, thus the name
XPath. In the sample XML file the query will return the LID element which
contains a value of "yes". The important thing to note here is that
I am forcing the query to begin at the ROOT of the XML document. Queries will
not always start with the ROOT, normally queries will start at the current node
(context node). In the example this is irrelevant because my context node (xmlDoc) is the
ROOT of the XML document (this is not always the case).
Line 10-15: if objNode.text="yes" then / MsgBox "We have a lid" /
else / MsgBox "No lid on this cup" /end if
This line will display the message "We have a lid" because the text
property of the LID element is "yes".
Now that you understand the basics of XML, lets create an activeX control
that will convert an ADO record set to XML. My goal is to run a query
against the titles table in the pubs database and return the titles in XML
format. I will use the results from the activeX control in my next
article "client-side xml". Simple you say, ADO has a method to save
as XML, right? Well yes, but if I let ADO create the XML I will get a
version of XML that is nasty to work with. ADO will produce a XML file with
namespaces and I am trying to ignore these for now. Secondly, ADO will
produce a XML file that is in attribute form. In other words each record
is an element (z:row) and each field is an attribute:
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly'>
<s:AttributeType name='title_id' rs:number='1' rs:writeunknown='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='6' rs:maybenull='false'/>
<s:AttributeType name='title' rs:number='2' rs:writeunknown='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='80' rs:maybenull='false'/>
<s:AttributeType name='type' rs:number='3' rs:writeunknown='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='12' rs:fixedlength='true' rs:maybenull='false'/>
<s:AttributeType name='price' rs:number='4' rs:nullable='true' rs:writeunknown='true'>
<s:datatype dt:type='number' rs:dbtype='currency' dt:maxLength='8' rs:precision='19' rs:fixedlength='true'/>
<s:AttributeType name='ytd_sales' rs:number='5' rs:nullable='true' rs:writeunknown='true'>
<s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true'/>
<s:AttributeType name='notes' rs:number='6' rs:nullable='true' rs:writeunknown='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='200'/>
<s:AttributeType name='pubdate' rs:number='7' rs:writeunknown='true'>
<s:datatype dt:type='dateTime' rs:dbtype='timestamp' dt:maxLength='16' rs:scale='3' rs:precision='23' rs:fixedlength='true'
<s:extends type='rs:rowbase'/>
<z:row title_id='BU1032' title='The Busy Executive's Database Guide' type='business ' price='19.99'
ytd_sales='4095' notes='An overview of available database systems with emphasis on common business applications. Illustrated.'
<z:row title_id='BU1111' title='Cooking with Computers: Surreptitious Balance Sheets' type='business ' price='11.95'
ytd_sales='3876' notes='Helpful hints on how to use your electronic resources to the best advantage.' pubdate='1991-06-09T00:00:00'/>
I would like to produce a XML file that is in element
form, where each record will be wrapped in a <BOOK> tag and each
field will be an element
under the <BOOK> tag. The syntax of my xml string will be
as follows:
<BOOK>data from table
<FIELD prettyname="Book identification number" tablename="titles" columnname="title_id" datatype="number" filter="">data from table</FIELD>
<FIELD prettyname="Title of the book" tablename="titles" columnname="title" datatype="text" filter="">data from table</FIELD>
<FIELD prettyname="Type of book" tablename="titles" columnname="type" datatype="text" filter="">data from table</FIELD>
<FIELD prettyname="Price of the book" tablename="titles" columnname="price" datatype="number" filter="">data from table</FIELD>
<FIELD prettyname="Year todate sales" tablename="titles" columnname="ytd_sales" datatype= "number" filter= "">datafrom table</FIELD>
<FIELD prettyname="Datepublished" tablename= "titles" columnname="pubdate" datatype="date" filter= "">datafromtable</FIELD>
By the way, what I have just accomplished is to create a
schema for my xml string. Now if I wanted to validate the structure
of XML against the schema, all I would need to do is convert the schema
into a valid format. Either DTD or XDR syntax. Notice that I have
added several attributes to each <FIELD> element. One reason
for this is that this information may be useful on the client. The prettyname can be used as labels
for the data. The datatype attribute could be used for client side data validation. But to be honest, the real reason these attributes exist is
that they have a very special purpose in a XSL
template file that I regularly use for building "SQL where
clauses". Maybe I will publish a short article demonstrating this soon. The template is very usefull
and pretty cool. When the xml structure is applied to the actual data from the
titles table the results will look like the sample
<BOOK>The Busy Executive's Database Guide
<FIELD prettyname="Title Identification Number" tablename="titles" gcolumnname="title_id" datatype="number" gfilter="">BU1032</FIELD>
<FIELD prettyname="Title of the Book" tablename="titles" gcolumnname="title" datatype="text" gfilter="">The Busy Executive's Database Guide</FIELD>
<FIELD prettyname="Type of Book" tablename="titles" gcolumnname="type" datatype="text" gfilter="">business </FIELD>
<FIELD prettyname="Price of the Book" tablename="titles" gcolumnname="price" datatype="number" gfilter="">19.99</FIELD>
<FIELD prettyname="Year to date sales" tablename="titles" gcolumnname="ytd_sales" datatype="number" gfilter="">4095</FIELD>
<FIELD prettyname="Notes about the book" tablename="titles" gcolumnname="notes" datatype="memo" gfilter="">An overview of available database systems with emphasis on common business applications. Illustrated.</FIELD>
<FIELD prettyname="Date Published" tablename="titles" gcolumnname="pubdate" datatype="date" gfilter="">6/12/1991</FIELD>
<BOOK>Cooking with Computers: Surreptitious Balance Sheets
<FIELD prettyname="Title Identification Number" tablename="titles" gcolumnname="title_id" datatype="number" gfilter="">BU1111</FIELD>
<FIELD prettyname="Title of the Book" tablename="titles" gcolumnname="title" datatype="text" gfilter="">Cooking with Computers: Surreptitious Balance Sheets</FIELD>
<FIELD prettyname="Type of Book" tablename="titles" gcolumnname="type" datatype="text" gfilter="">business </FIELD>
<FIELD prettyname="Price of the Book" tablename="titles" gcolumnname="price" datatype="number" gfilter="">11.95</FIELD>
<FIELD prettyname="Year to date sales" tablename="titles" gcolumnname="ytd_sales" datatype="number" gfilter="">3876</FIELD>
<FIELD prettyname="Notes about the book" tablename="titles" gcolumnname="notes" datatype="memo" gfilter="">Helpful hints on how to use your electronic resources to the best advantage.</FIELD>
<FIELD prettyname="Date Published" tablename="titles" gcolumnname="pubdate" datatype="date" gfilter="">6/9/1991</FIELD>
Now I have something that I can work with! The XML
is very basic and straight forward. Please come back for Article 2 in
this series where I will demonstrate how easy it is to use this XML on
the client ...
Dim xmlDoc As MSXML2.DOMDocument30
Set xmlDoc = New DOMDocument30
xmlDoc.async = False
xmlDoc.validateOnParse = False
xmlDoc.Load ("c:\inetpub\wwwroot\xml\cup.xml")
MsgBox xmlDoc.xml
Dim objNode As IXMLDOMNode
Dim objListOfNodes As IXMLDOMNodeList
xmlDoc.setProperty "SelectionLanguage", "XPath"
MsgBox "Your cup contains the following items"
Set objListOfNodes = xmlDoc.selectNodes("//CONTENTS/*[@qty>0]")
For Each objNode In objListOfNodes
MsgBox objNode.Text
Set objNode = xmlDoc.selectSingleNode("/CUP/LID")
If objNode.Text = "yes" Then
MsgBox "We have a lid"
MsgBox "No lid on this cup"
End If
Option Explicit
'Declare Database variables
Private m_dbConnection As New ADODB.Connection
Private m_dbCommand As ADODB.Command
Private m_adoRs As ADODB.Recordset
Private m_adoErrors As ADODB.Errors
Private m_adoErr As Error
Public nCommandTimeOut As Variant
Public nConnectionTimeOut As Variant
Public strConnect As Variant
Public strAppName As String
Public strLogPath As String
Public strDatabase As String
Public strUser As String
Public strPassword As String
Public strServer As String
Public strVersion As String
Public lMSADO As Boolean
'Private Global Variables
Private gnErrNum As Variant
Private gstrErrDesc As Variant
Private gstrErrSrc As Variant
Private gstrDB As String
Private gstrADOError As String
Private Const adLeonNoRecordset As Integer = 129
Private gtableName(6) As String
Private gcolumnName(6) As String
Private gprettyName(6) As String
Private gdatatype(6) As String
Private gfilter(6) As String
Private Function OpenDatabase()
If Len(strConnect) = 0 Then 'set up defaults if they were not passed
If Len(strDatabase) = 0 Then
strDatabase = "pubs"
End If
If nConnectionTimeOut = 0 Then
nConnectionTimeOut = 600
End If
If nCommandTimeOut = 0 Then
nCommandTimeOut = 600
End If
If Len(strAppName) = 0 Then
strAppName = "xmlControl"
End If
If Len(strUser) = 0 Then
strUser = "sa"
End If
If Len(strPassword) = 0 Then
strPassword = ""
End If
strConnect = "Provider=SQLOLEDB.1; " & _
"Application Name=" & strAppName & _
"; Data Source=" & strServer & "; Initial Catalog=" & strDatabase & "; " & _
" User ID=" & strUser & "; Password=" & strPassword & ";"
End If
'connect to SQL Server and open the database
On Error GoTo SQLErr 'turn on error handler
With m_dbConnection
.ConnectionTimeout = nConnectionTimeOut
.CommandTimeout = nCommandTimeOut
.Open strConnect 'open the database using the connection string
End With
On Error GoTo 0 'turn off error handler
OpenDatabase = True 'database opened successfully
Exit Function
Call logerror("OPEN")
OpenDatabase = False
End Function
Private Function BuildSQLwhere(tmpWhere) As String
'This is for the future
End Function
Public Function GetTitlesXML(Optional xmlWhere As Variant) As String
Dim whereClause As String
Dim strSQL As String
Call OpenDatabase 'open the pubs database
If IsMissing(xmlWhere) Then 'a query was not passed in
whereClause = ""
whereClause = BuildSQLwhere(xmlWhere) 'convert the query to valid sql
End If
'initialize the sql statement that will query for the titles
strSQL = "select title_id,title,type,price,ytd_sales,notes,pubdate from titles " & whereClause
Call NewRecordSet 'create a record set
'Set the cursorlocation
m_adoRs.CursorLocation = adUseClient
'open the recordset
m_adoRs.Open strSQL, m_dbConnection, adOpenForwardOnly, adLockReadOnly, adCmdText
'disconnect the recordset
Set m_adoRs.ActiveConnection = Nothing
On Error GoTo 0 'turn off error handler
'Close the database to free the connection
Call CloseDatabase
If m_adoRs.EOF Then
GetTitlesXML = "" 'query did not return any titles
If lMSADO Then
GetTitlesXML = msado(m_adoRs) 'convert the recordset to Microsoftado-->xml
GetTitlesXML = ADOtoXML(m_adoRs, True) 'convert the ado recordset to custom xml
End If
End If
'Close the recordset
Call CloseRecordset
Exit Function
Call logerror(strSQL)
End Function
Private Function ADOtoXML(tmprs As ADODB.Recordset, tmpMP As Boolean) As String
Dim adoFields As ADODB.Fields 'set up a collectio to hold the fields
Dim adoField As ADODB.Field 'used to retrieve each field from the collection
Dim xmlDoc As msxml2.DOMDocument30
Dim tmpLine As String 'holds the xml representation of each book
Dim tmpXML As String 'used to concatenate each line of xml
Dim i As Integer
If tmprs.EOF Then 'no titles returned by query
ADOtoXML = ""
Exit Function
Set adoFields = tmprs.Fields 'create the collection of fields
End If
tmpXML = "<TITLES>" 'all books will be wrapped in a <TITLES> tag
Do Until tmprs.EOF 'loop through each title in the recordset
i = 0 ' i is an index to the ado field its initialized to 0 so that first field will be field(0)
tmpLine = "<BOOK>" & tmprs("title") & vbCrLf
For Each adoField In adoFields 'loop through all the fields
'build the xml <FIELD> tag and its attributes for the current field
tmpLine = tmpLine & "<FIELD "
tmpLine = tmpLine & "prettyname=""" & gprettyName(i) & """ "
tmpLine = tmpLine & "tablename=""" & gtableName(i) & """ gcolumnname=""" & adoField.Name & """ "
tmpLine = tmpLine & "datatype=""" & gdatatype(i) & """ gfilter="""""
tmpLine = tmpLine & ">" & adoField.Value
tmpLine = tmpLine & "</FIELD>" & vbCrLf
i = i + 1 'point index to next field
tmpXML = tmpXML & tmpLine & "</BOOK>" & vbCrLf 'end the book tag after last field
tmprs.MoveNext 'next title
Set adoField = Nothing 'destroy the field object
Set adoFields = Nothing 'destroy the fields collection
tmpXML= tmpXML & "<?xml version="1.0"?></TITLES>" & vbCrLf 'end the string with the ending </TITLES> tag
'at this point I could just return this string back
'load the xml string into a DOM just toshow the loadxml method
'also this will test to make sure the string is well-formed
Set xmlDoc = New msxml2.DOMDocument30 'create a xmlDOM
xmlDoc.async = False 'wait for document to load
xmlDoc.validateOnParse = False 'do not validate against a schema
xmlDoc.loadXML(tmpXML) 'load the string into the DOM
On Error Resume Next 'if the file bellow does not exist I will get an error when I try to kill it
Kill("c:\temp\custom.xml") 'erase the file if it exists
On Error GoTo 0 'seterror handler to abort on error
xmlDoc.save ("c:\temp\custom.xml") 'save the xml to a file
ADOtoXML=xmlDoc.xml 'return the xml string
Set xmlDoc=Nothing 'destroy the xml DOM
End Function
Private Function msado(tmprs As ADODB.Recordset) As String
Dim xmlDoc As msxml2.DOMDocument30
On Error Resume Next 'if the file bellow does not exist I will get an error when I try to kill it
Kill ("c:\temp\msado.xml") 'erase the file if it exists
On Error GoTo 0 'set error handler to abort on error
tmprs.save "c:\temp\msado.xml", adPersistXML 'save the xml to a file
Set xmlDoc = New msxml2.DOMDocument30 'create a xml DOM
xmlDoc.async = False 'wait for document to load
xmlDoc.validateOnParse = False 'do not validate against a schema
xmlDoc.Load ("C:\temp\msado.xml") 'load the file into the DOM
msado = xmlDoc.xml 'return the xml string
Set xmlDoc = Nothing 'destroy the xml DOM
End Function
Private SubCloseRecordset()
'Close recordset objects and dereference them m_adoRs.Close Set
m_adoRs =Nothing
End Sub
Private Sub NewRecordSet()
Set m_adoRs= Nothing 'Close recordset objects and dereference them
Set m_adoRs=New ADODB.Recordset
End Sub
Private Sub CloseDatabase()
'Close database objects and dereference them
Set m_dbConnection =Nothing
End Sub
Private Sub logerror(errSQL As String)
Dim hFile As Integer
Dim expFile As String
On Error GoTo 0
gnErrNum = Err.Number
gstrErrDesc =Err.Description
gstrErrSrc = Err.Source Set
m_adoErrors = m_dbConnection.Errors
For Each m_adoErr In m_adoErrors
gstrADOError = m_adoErr.Description & "," & CStr(m_adoErr.NativeError)
_ & "," & CStr(m_adoErr.Number) & "," &
m_adoErr.Source _ & "," & CStr(m_adoErr.SQLState)
hFile =FreeFile
If Len(strLogPath) = 0 Then
strLogPath = "C:\temp\"
End If
expFile = strLogPath & strAppName & ".err"
Open expFile For Append As #hFile
Print #hFile,"**********************************"
Print #hFile, Now()
Print#hFile, "**********************************"
Print #hFile,"Subroutine: " & tmpPro
Print #hFile, "Error Number:" & gnErrNum
Print#hFile, "Error Description: " & gstrErrDesc
Print #hFile, "Error Source:" & gstrErrSrc
Print #hFile, "Ado error String: " & gstrADOError
Print #hFile, "Bad SQL: " & errSQL
Close #hFile
End Sub
Private Sub Class_Initialize()
strVersion = "xmlControl Version 1.1"
gtableName(0) = "titles"
gcolumnName(0) = "title_id"
gprettyName(0) = "Title Identification Number"
gdatatype(0) = "number"
gfilter(0) = ""
gtableName(1) = "titles"
gcolumnName(1) = "title"
gprettyName(1) = "Title of the Book"
gdatatype(1) = "text"
gfilter(1) = ""
gtableName(2) = "titles"
gcolumnName(2) = "type"
gprettyName(2) = "Type of Book"
gdatatype(2) = "text"
gfilter(2) = ""
gtableName(3) = "titles"
gcolumnName(3) = "price"
gprettyName(3) = "Price of the Book"
gdatatype(3) = "number"
gfilter(3) = ""
gtableName(4) = "titles"
gcolumnName(4) = "ytd_sales"
gprettyName(4) = "Year to date sales"
gdatatype(4) = "number"
gfilter(4) = ""
gtableName(5) = "titles"
gcolumnName(5) = "notes"
gprettyName(5) = "Notes about the book"
gdatatype(5) = "memo"
gfilter(5) = ""
gtableName(6) = "titles"
gcolumnName(6) = "pubdate"
gprettyName(6) = "Date Published"
gdatatype(6) = "date"
gfilter(6) = ""
End Sub
Private Sub Command1_Click()
Dim objWC As xmlControl
Dim xml As String
Set objWC = New xmlControl
objWC.strDatabase = "pubs"
objWC.strServer = "ltweb"
objWC.strUser = "sa"
objWC.strPassword = ""
objWC.lMSADO = Option2.Value
objWC.strAppName = "Article1"
Text1.Text = objWC.getTitlesXML
End Sub
<%@ Language=VBScript %>
'Use the WebClass ActiveX control to return xml to the browser
'before the page will opperate the WebClass.dll must be registered on the web server
'The microsoft xml parser version 3.0 (msxml3.dll) must be registered also
'download msxml3.exe and install
set objWC = Server.CreateObject("WebClass.xmlControl")
objWC.strDatabase = "pubs"
objWC.strServer = "ltweb" 'replace ltweb with your sql server name
objWC.strUser ="sa" 'replace sa with your sql user name
objWC.strPassword="" 'enter your sql password here
objWC.lMSADO=false 'true will return microsoft ado-->xml
'false will return custom xml
Response.ContentType="text/xml" 'tell browser to expect xml
Response.write objWC.getTitlesXML 'get the xml and display it
set objWC=nothing 'destroy the object
Loading Nested Elements via SQLXMLBULKLOAD
This procedure generates a dataset with combinations of elements_to_select taken from number_of_valu...
first element in sublist
With multiple namespaces associated to a single xml typed column - need to query common elements sha...
T-SQL version query Problem


text:
A will will a vital estate planning document, and allows you to distribute your assets and property according to your wishes. At a minimum everyone should have a will, even if you believe you do not have many assets. It is a common misconception that only rich people need estate plans. A will have a number of limitations you may not be aware of. However, there are several items that should NOT be included in a will:
Property held in a living trust or joint tenancy – property deeded to a living trust can not be refused to someone else, and a will can not change the right of survivorship in joint tenancy, which passes to the joint tenant by law. Do not let the legalese scare you. Let an attorney help you ensure that any property you leave is handled in the way you want.
Accounts with designated beneficies – financial accounts and life insurance proceeds go to beneficiaries who are designated by you via a designated beneficiary form, and can not be given to someone else through a will.
Contingency gifts – leaving assets that are contingent on the beneficiary performing a duty or act (like marrying or attending college) is not always legal. Generally speaking, you can not "manage from the grave" by making an inheritance contingent on someone getting married, changing their religion, etc.
Provisions for those with special needs – this should be done via a special needs trust.
Provisions for pets – pets do not have the legal ability to own property, so consider acquiring a pet trust to care for your pet (s). Did you know that you can leave money for the caretaker of your pet and of course choose who or what organization you would like to care for your pet.
Funeral instructions – since a will will not be read until after the funeral, leave instructions for your funeral arrangements in a letter of instruction or discuss your wishes with loved ones. It is also advisable to get funeral insurance. Save your loved ones from the hassle of chasing money immediately in the aftermath of your death.
Many of the items above can be addressed in a trust designed by your attorney. It also shows that "wills in a box" software many times will not ensure your desires are abided by. If you'd like to learn more about establishing your personal estate plan, call an attorney today.
To Your Health, Wealth & Happiness,
Walter H. Bentley III


text:
Welcome to the CRG Discussion Forum!Forum registration problems: Make sure you enter your email correctly and you check your spam box first. *Then* email KurtS2@gmail for help.Classified ads are not allowed on the forum.
I am finishing a Norwood 1968 SS/RS BB convertible now and since the exterior panels like header, valance, etc were hung in the window openings and the body was very open during color application the result was an inside color that appeared red primer vs the black everywhere else.Arno
WilliamYou are correct but the question was the underside of the car. I've seen lots of unrestored Norwood cars and the underbody is 30 degree black applied way upstream, this was similar to the firewall spray but he latter was hand applied and usually was a bit on the grey side of black for some reason. John Z did a great list of the various finishes and the production processes in the plant for how and when paint was applied on TeamCamaro a year or so ago. Worth the serach and read.ArnoPerhaps John would consider placing this "list" on our site as a CRG Report.


text:
I have seen it written that a student should visualize attackers during each technique of a kata. In this way, he practices defending himself.
I must say that I personally do not do this. I prefer to break out the various techniques and practice them with a partner. I like to make drills for the various techniques or combinations in a kata.
When I practice kata, I do not think of anything. It is almost as if my body goes on autopilot and does the kata. My mind is relaxed, but aware. It is not even like my mind watches the kata. It is more that my mind simply goes along for the ride. It is alert and ready to respond, but not fixed on anything.
Practicing kata is one of the few times when I do not actively think. Two others, for me, are during yard work and while fishing.
Of course, when I am leading the class or a group of students, I usually watch them while I perform a kata. I want to make sure that they are doing it correctly, and I will have to make a mental note to correct one student or another after we finish the kata. I might also be keeping an eye on other groups in the dojo, and on the doors in case someone comes it.
But ideally, there are no distractions, and my mind can sit back and let my body do the talking -- through kata.
Charles C. Goodin
Thinking During Kata
I have seen it written that a student should visualize attackers during each technique of a kata. In this way, he practices defending himself.
Posted by Charles C. Goodin on Wednesday, October 10, 2007


text:
Version 2.0.2, Build 2221
Popups, chrome, etc are rendering as artifacts or completely black. See below:
Not sure how to troubleshoot this or what's the probable cause. I think I received an update.
I had the same problem today, on Windows in my case. I guess you use a custom theme for your UI? Because that's what triggered the bug for me.
If our problem is the same, then check your user-specific settings (Preferences -> Settings - User). Weird things have happened to "ignored_packages", every custom package I had installed was listed there all of a sudden. Including the UI themes. That's why all these artifacts suddenly appeared. Deleting these entries solved the problem instantly.
I suspect that the Package Control update is the culprit. ST worked until I'd seen the update message, then crashed. The UI was a mess from there on out.
Cheers, Michael
I was having the exact same problem as leoj3n. I followed _michael's suggestion and it fixed the issue. I'm also thinking that it's the Package Control update. Thanks for your help
Thanks! I'm guessing the package manager pushes everything to be ignored when updating, then pops everything off after the update completes, but in our cases failed to do the latter.
I also encountered this issue. Removing the ignored packages worked.
Removing the ignored packages from my user settings worked for me as well.
just encountered the same issue - does anyone know why this happens?
@_michael: you nailed it! I was freaking out for a moment there. Removing all of the ignored packages between the "" and "]" worked!


text:
thad06 needed a new logo design and created a contest on 99designs.
A winner was selected from 52 designs submitted by 15 freelance designers.
Looking to get photos for our new website.
Homeowners looking for information about landscape design, patios, swimming pools, backyards, plants, firepits, fireplaces, water features, and more.
The website will have everything a homeowner needs to know about landscaping and then they will be able to find a designer/contractor to do their project.
These homeowners will be remodelling or doing their yard from scratch.
We are not a landscape company. We will provide information, videos, design ideas, articles, photos, for homeowners to use.
This will be for mainly residential landscaping.
Will also be targeted to residential landscape designers, landscape architects, and landscaping contractors.
Would like stacked logo options too - "Landscaping" on top of "Network" with these .com somewhere.
Would like a retio of 2.5 inches by 1 inch...can be larger but a similar ratio.
Want options with an icon and without.
Find out how a design contest works or learn more about our logo design services.