Google
 

Tuesday, February 19, 2008

Sharing Session State between ASP and ASP.NET

Sharing Session State between ASP and ASP.NET

by Sidney Forcier

Despite all of Microsoft's best efforts to make ASP and ASP.NET coexist effortlessly, one area remains a stumbling block... session state. Fortunately the advantages of ASP.NET's upgraded session state management far outweigh the inconvenience of not being able to pass "Classic" session information to .NET. Unfortunately there is no simple solution; the most I can offer is an easy to implement workaround.

In trying to find a suitable resolution, I've come across two good options that are worth mentioning. The first involves parsing the session information out to hidden form fields on a "Classic" intermediate page and then submitting the page to a .NET intermediate page that loads the form fields into the session state. This is a good, simple solution, however it doesn't work both ways. In .NET you cannot specify the page that you submit to. Each page has to PostBack to itself.

The second option is probably closer to an actual solution than to a workaround. Billy Yuen at Microsoft has developed an effective solution. The code is elegant, the integration appears to be seamless, but I couldn't get it to work on my system (remember I said that there was no simple solution, not that there was no solution at all). If this solution works for you, great! You won't need my code and you'll be happily passing session information from "Classic" to .NET like it's going out of vogue, thanks for stopping by.

Ok, if you're still reading let me briefly describe the workaround I've created. It requires a database, but it is not important which type of database (though the code is written for SQL Server). When a page (source page) wants to redirect to another page (destination page) that uses a different version of ASP, it calls an intermediate page. The source intermediate page takes each session variable and adds it to the database along with a Globally Unique ID (GUID). Since "Classic" and .NET use different SessionID formats it is not possible to use SessionID, hence the use of a GUID. The source intermediate page then passes the GUID to the destination intermediate page through a Querystring variable. The destination intermediate page retrieves the session information from the database, cleans up after itself, and then redirects to the destination page. It's similar to the first workaround, but supports transferring state in both directions.

Code Usage

Installation

  1. Run the SQL Query in "ASPSessionState.sql" on the database which will hold the temporary Session information.
  2. Copy the .asp and .aspx.* (SessionTransfer.aspx and SessionTransfer.aspx.cs) files to a folder on your website.
  3. Update connection object information in the "SessionTransfer.asp" and "SessionTransfer.aspx.cs" files. It is located in three places in each file (sorry about not consolidating the connection info).
  4. Compile the aspx files.
  5. The .asp and .aspx.* files must all reside in the same folder to work.

Usage

For use in a Hyperlink (Anchor Tag) or a Response.Redirect, set the destination URL to be one of the following:

From a ASP "Classic" page:

 SessionTransfer.asp?dir=2aspx&url=

From an ASP.NET page:

 SessionTransfer.aspx?dir=2asp&url=

The code will transfer the Session information and Redirect the user to the url specified by or .

Download

You can download the code from here: session_transfer.zip (4.6 KB).

Thursday, January 10, 2008

Are Google Results Hazardous To Your Health?

Pharmaceutical types think so

First thing's first: I'm suspicious of the pharmaceutical industry in general. A lot of people are, but as a journalist, suspicion is part of the job. Also, I have the researcher's tendency toward cyberchondriasis, so take my non-medical expertise for what it's worth.

Which isn't much. I put that out there so others won't have to.

I also make that disclaimer in advance of what is a grander, more important topic: To what extent is the so-called "Googlization of reality" affecting our understanding of the world around us? The answer may not be so available and everybody with a stake in it will give you different answers.

If you took the Internet's word for everything, you might believe that Ron Paul is a Republican frontrunner or that the elephant population has tripled in the past six months (see Stephen Colbert's "wikiality" social experiment).

Clearly, information on the Internet (even Google) isn't perfect, and knowing your source is paramount, hence my opening disclaimer.

The Center for Medicine in the Public Interest (CMPI) is a medical industry thinktank, fronted by former Bush Administration FDA officials. CMPI released a study this week outlining the perils of relying on Google for prescription medication information.

“What we found was not only disturbing, but dangerous to public health,” said CMPI vice president Robert Goldberg. “For millions of Americans, Google has replaced the family physician. People trust, and make decisions, based on the information they find online. With few exceptions, the information we found appeared legitimate but had no medical authority whatsoever. In many cases, we found lawyers posing as medical experts.”

For searches on keywords like "Crestor side effects" and "Avandia side effects" CMPI found:

  • 65% of the first three pages of search results came from sites which were biased or contained unverified information.
  • Almost half of the first three pages of search results belonged to lawyers and attorney referral services seeking plaintiffs for class action lawsuits.
  • Zero official regulatory pages or professional medical organizations appeared in the inventory of results.

Crestor is a cholesterol medication made by AstraZeneca and Avandia is a type 2 diabetes drug produced by GlaxoSmithKline.

Many of the results also referred to "unmoderated" patient forums, sites selling or promoting "alternative medicines" or were sites run by, as CMPI describes them, "anti-pharmaceutical activists."

All of these concerns and findings are published in a 33-page paper entitled "Insta-Americans: The Empowered (and Imperiled) Health Care Consumer in the Age of Internet Medicine." Similar concerns were voiced about selective serotonin reuptake inhibitors and their (Internet) relationship to teen suicide rates and links between vaccinations and autism.

"Much like our email boxes are filled by 'spam' urging us to collect millions from Nigeria or confirm our banking information from phony Ebay or Bank of America security sites, a lot of the medical 'information' on the Web is designed to sell, deceive or frighten, rather than inform," said Goldberg.

Citing a Pew report, CMPI 113 million Americans search for health information, but three quarters rarely check the sources of the information.

According to Peter Pitts, CMPI President and former Associate Commissioner for External Affairs for the FDA, "it is important to remember that not everything online is true. The Internet has made it easier than ever before for charlatans and quacks to spread fear and misinformation. Mark Twain wrote: ―'Beware of health books. You might die of a misprint.' The same can now be said of the Web."

And that can really affect pharmaceutical sales. Because doctors were afraid of lawsuits and patients were afraid of, you know, death, Avandia prescriptions had declined by 60 percent as September 2007.

Of course, it could also have something to do with the black box warning the FDA put on Avandia about increased heart problems. If you use a less targeted keyword, like simply "avandia," you'll find that official government warning (and one for Crestor, too), along with official pharmaceutical company pages, scores of lawyer-sponsored AdWords links, pages from WebMD, the Mayo Clinic, the New York Times, USA Today, and a group called Public Citizen which runs a site called WorstPills.org.

Pitts and Goldberg aren't especially fond of that last group, and single out Dr. Sidney Wolfe, who runs the site, as a source of misinformation about Avandia. Wolfe joins several others with lots of letters behind their names on the site's About page. Maybe it's because Wolfe has a close relationship with Ralph Nader, that CMPI labels them an anti-pharmaceutical activist group. Who knows?

But Wolfe's opinion of Avandia match a Cleveland Clinic doctor named Stephen Nissen, whose May 2007 New England Journal of Medicine article about the drug CMPI cites as a "common source of misinformation." Dr. Nissen's viewpoint however is echoed by a Toronto endocrinologist in this more recent (December 2007) USA Today article.

So why fixate on these drugs in particular? You could present a number of theories. CMPI is partially funded by the pharmaceutical industry, the Lilly Endowment (connected to Eli Lilly) being one of the largest contributors. Patients shying away from pharmaceuticals is bad for business.

A clue could be in reporter Evelyn Pringle's article about Avandia, the FDA and CMPI. Pringle labels CMPI as "a home for industry hit men who served in the Bush Administration's FDA." Pringle explains in detail Pitts' and Goldberg's association with Manning, Selvege & Lee, a PR firm representing many pharmaceutical companies, including AstraZeneca, and with FDA spokesman Douglas Arbesfeld, who has a close relationship with GSK.

But I'm sure that has nothing to do with their opinion on what is misinformation and what isn't.

The extra-cynical of us might also notice CMPI's definite stance against regulation of the health care industry and any type of universal health care. Those cynics might get really crazy and suggest that by advocating a greater reliance on your doctor and the drugs he or she prescribes rather than moonbat alternatives cuts down on the perception that there are flaws in the health care industry in its current privatized state. Plus, with obesity rates the way they are, diabetes medicines are big, big money.

But that's just crazy right?

Well, anyway, CMPI says to check your sources, especially those sources found on Google, the nation's most popular search engine, where most online health research begins. Sometimes people manipulate the information to suit them.

But you might also conclude that a variety of sources is a good thing. I could be wrong. After all, I did all my research for this article on Google.

Wednesday, December 26, 2007

8 Tips for Landing a Job in 2008

1. Come prepared for the interview. This sounds like a no-brainer, but hiring managers are increasingly looking for candidates who can do more than a "tech interview."

They may ask you to explain your past experiences or how you would handle certain situations on the job, says Jill Herrin, CEO of JDResources, Inc., a Memphis-based recruiter. These and other inquiries help employers to determine your communications skills as well as your technical knowledge.

2. Talk business. Prospective employers also want to know whether you understand how systems and applications affect various business divisions, Herrin says. "Technical interviews are still an important component to an interview process, but rarely are they the only determining factor anymore," he explains.

"We want somebody with technical acumen but I would like to know that these people know the basis for making money," says Frank Hood, CIO at Quiznos in Denver.

3. Work your relationships. Employers and job candidates alike are jumping on the use of social networks such as LinkedIn and Facebook to connect with college alumni, former business associates and mentors "to get better access to the inside jobs," says Dan Reynolds, CEO of Princeton, N.J.-based staffing firm The Brokers Group LLC.

You should too.

And if you're an entry-level candidate, social networks are a great way for you to get a foot in the door, says Michael Nieset, managing partner for Heidrick & Struggles' technology practice in Cleveland. You can identify and connect with potential employers through entry-level job listings on social networks.

4. Dot your "i"s. Make sure your resume and project accomplishments are clearly documented using proper English and correct spelling.

"You won't even make it past the first gate" if your resume' is sloppy, says Robert Rosen, immediate past president of SHARE and CIO at the National Institute of Arthritis and Musculoskeletal and Skin Diseases in Bethesda, Md.

5. Strut your stuff. Effective resumes are direct and succinct. Hiring managers want to see what you've achieved. "Employers want to see 'I managed this, I coordinated that'," says Reynolds. "They don't want to see 'assisted with this' or 'supported that.'" I

f you weren't the project leader on a particular effort, underscore what you did contribute. If you're a systems administrator, point out the importance of your role in a critical project and whether the effort was delivered under budget or ahead of schedule, says Katherine Spencer Lee, executive director at Robert Half Technology in Menlo Park, Calif.

6. Keep learning. Employers want IT workers who have a demonstrated thirst for knowledge and a willingness to learn new things. Pick up certifications in hot technologies or take an evening course at a local community college to improve your business acumen.

Then flaunt it. "Education is absolutely vital to further your career in IT," says Neill Hopkins, vice president of skills development at the Computing Technology Industry Association Inc. in Oakbrook Terrace, Ill.

7. Do what it takes to appear employable. If you're currently unemployed and seeking a full-time position, find a temporary position or work as a contractor, says Joel Reiter, an application analyst at U.S. Bancorp in St. Paul, Minn. It's "a good way of erasing a period of time where you didn't have a job." he says.

It's also important to demonstrate determination and flexibility, says Joe Trentacosta, CIO at the Southern Maryland Electric Cooperative in Hughesville. "Programmers need to be willing to step out of their comfort zone and learn new technologies, to work nights and weekends if necessary," he says. "It shows that they're willing to be aggressive and to learn new technologies."

8. Get a foot in the door. Don't hesitate to take a temporary position, a contract or a temp-to-hire job. As demand for IT workers has ticked up, rates for contractors are also on the rise, having jumped 3% to 5% over the past five months for IT contractors in general and by 10% to 15% for people with highly sought skills such as J2ee and open source programming abilities, says Reynolds.

"Once you come in as a temp or a contractor, no one is really looking at your resume. They're looking at whether you can or can't do a particular job," says Reiter.

IBM dishes five predictions for the future

IBM's last installment of its annual 'Next Five in Five' list looks forward to intelligent traffic systems and energy grids, more organic food, and better technology for doctors


Drained by your commute? Blood-sucking utility bills got you down? Wondering if that tomato in your dinner salad was really organic?

The cures to those ills and more may arrive within five years, according to IBM.

The company recently released its second annual set of "Next Five in Five" predictions, visions that sketch out a future where driving is a relative pleasure, eco-friendly devices save you money, and super doctors use advanced technology to probe your body's innermost depths in search of disease.

IBM's contention that driving will become safer and less aggravating may be particularly tantalizing for many.

The company said that during the next five years, a "wave of connectivity" between vehicles and roadways will help keep traffic flowing smoothly, drive down pollution, and get you to your destination easier, "without the stress."

This will be accomplished through "intelligent" traffic systems that automatically adjust light patterns and shift traffic to alternative routes, as well as cars that exhibit "reflexes" thanks to communication with other vehicles and roadside sensors, according to IBM.

The company's crystal ball also revealed that the long-simmering trend toward "smart energy" devices will proliferate wildly. "Dishwashers, air conditioners, house lights, and more will be connected directly to a 'smart' electric grid, making it possible to turn them on and off using your cell phone or any Web browser," a company statement asserts.

Even the act of eating will take on new meaning, in IBM's view: "You will know everything from the climate and soil the food was grown in, to the pesticides and pollution it was exposed to, to the energy consumed to create the product, to the temperature and air quality of the shipping containers it traveled through on the way to your dinner table."

The report also suggests that doctors' ability to heal us will become even more astounding. Due to advances in X-ray and audio technologies, doctors will gain "superpowers," according to IBM. Computers will also be able to compare your health data to an ocean's worth of other patient records, helping with diagnosis and treatment, the company said.

In addition, the company said cell phones will continue to grow in power and functionality. For example, phones will enable users to snap a photo of an article of clothing, pull in results from the Web about the brand and where to buy it, and then render the garment on top of a 3-D image of the user, IBM said.

IBM's list received a measured nod from Edward Cornish, editor of The Futurist magazine and past president of the World Future Society, an organization based in Bethesda, Maryland.

"Basically, the five forecasts seem to me to be quite reasonable," Cornish said. "They're based on technologies that have been around for a number of years and are simply extrapolations."

The Futurist has released its own list of predictions for 2008 and beyond.

The organization contends, among other things, that the world will have a billion millionaires by 2025; the earth is on the verge of a "significant extinction event;" and "nonhuman entities," such as robots fueled by artificial intelligence, will make more decisions.



Thursday, December 20, 2007

8 Ways to Boost Your Career in '08

December 21, 2007 (Computerworld) Today's IT professionals are an evolving breed. The job keeps morphing as companies demand not just technical know-how, but more business acumen, analytical skills and industry knowledge as well.

Kudos if you've pulled that all together, but don't rest just yet. The evolution isn't over, as the upcoming year promises more changes. If you want to stay in the driver's seat of your own career, put these items on your to-do list:

1. Incorporate security into your responsibilities. Security and related disciplines, such as business continuity and disaster-recovery planning, are permeating all levels of the organization. That means all IT workers, and not just the security folks, will have to contribute by understanding how business processes, technical requirements and security intersect.

"Everyone has to understand security to a certain degree and apply it to their responsibilities," says Sam Helmich, vice president of technology at ADM Investor Services Inc. in Chicago. The learning requirements vary by IT positions, but Helmich recommends that you seek out security classes and certification. Finding mentors from the security team is another good way to prepare

2. Re-engineer processes. IT has always been responsible for keeping everything running and developing new systems, says Michael Cummins, CIO at the Georgia Institute of Technology's College of Management and a clinical professor of management, but now he sees a new responsibility emerging: re-engineering business processes and workflow.

"We've seen movement to business processes and workflow analysis as you try to show how systems can help re-engineer how you do the work and make it more efficient," Cummins says. "That's where we see all these big productivity gains."

To deliver this, you must understand how your business-side colleagues actually do their jobs, he says. You can start by signing up as a project lead, finding a business-side mentor or working as a systems analyst.

3. Use analytics to guide business decisions. "We're seeing more and more companies that are stellar examples of using data analysis to run their business," Cummins says. Casinos, for example, collect and analyze detailed data on individual players and then tailor their marketing based on those findings. Other industries are following suit, which means you'll have to set up the systems and understand what data to mine and analyze.

To brush up on analytics get onto projects that expose you to the needs and goals driving non-IT departments, study vendor information on how business intelligence applications can provide data to drive decisions, and get training in Six Sigma, a data-driven methodology for eliminating defects.

4. Be more versatile. There will always be a need for deep technical skills , but you'll be obsolete if all you can offer is one particular expertise, says Pamela Taylor, a solutions architect at a subsidiary of a Fortune 50 company and vice president of SHARE, an IBM user group.

"Keep yourself open to new approaches," Taylor says. "While there is some need for specialization and to demonstrate an expertise for the particular role you're in now, you must keep yourself aware of and consistently educated in new things that are emerging."

5. Work on multifunctional programs and multidisciplinary teams. Companies are putting together more teams of workers from diverse departments to deliver technology-related projects, says Diane Morello, an analyst at Gartner Inc. in Stamford, Conn. Getting assigned to those teams is a key to getting broad business knowledge and becoming known outside IT.

"Individuals are going to work much more consistently around multidisciplinary teams, and that means their competencies need to be understood and known by people outside their skill sets," Morello says.

In short, you must be skilled in teamwork, effective communication and change management. Try to work for managers who operate across business units. Or, if you can, get assigned to a boundary-spanning role, and seek some relief from daily operational duties so you can focus on the big picture.

6. Beef up your business skills. The need to do this has been building for a while, but 2008 will put an even greater emphasis on business acumen, says Kate M. Kaiser, an associate professor of IT at Marquette University and coordinator of the Society for Information Management study "The Information Technology Workforce: Trends and Implications 2005-2008."

The need for business knowledge is moving farther down the IT workforce chain, she says. Even newly minted IT workers will have to have business smarts. Moreover, companies are looking for IT workers who have expertise in functional areas, such as marketing or finance, says David Foote, CEO and chief research officer of research firm Foote Partners LLC in New Canaan, Conn.

Getting a degree in business management -- an MBA if you have a tech-related bachelor's degree, or a bachelor's in business if you have an associate's degree in technology -- can help prepare you for this new reality, Kaiser says. But so can on-the-job management experience, such as leading projects.

7. Be more accountable. The folks in finance, marketing, HR and other corporate departments already use data to evaluate performance. IT workers will increasingly have to do the same, Cummins says. Granted, evaluating an IT shop can be hard, because of the lack of productivity measures and because of the difficulty of measuring certain, sometimes intangible, gains. But be prepared to show your value.

Learn Six Sigma-type tools and benchmarking, and learn from business managers who have reputations for running efficient departments.

8. Manage your own career. You can't rely on your manager, company or vendors to determine a path for you, because those predetermined paths might be too narrow or even obsolete, Foote says. You yourself must prepare for tomorrow by evaluating your skills and filling in what's missing through certification, education and on-the job experience.

"This is the year you can no longer sleepwalk through your career," Morello adds. "Each person has to take ownership of his or her career path."

Monday, December 17, 2007

Fiber Distributed- Data Interface (FDDI)

FDDI (Fiber-Distributed Data Interface) is a standard for data transmission on fiber optic lines in that can extend in range up to 200 km (124 miles). The FDDI protocol is based on the token ring protocol. In addition to being large geographically, an FDDI local area network can support thousands of users.
An FDDI network contains two token rings, one for possible backup in case the primary ring fails. The primary ring offers up to 100 Mbps capacity. If the secondary ring is not needed for backup, it can also carry data, extending capacity to 200 Mbps. The single ring can extend the maximum distance; a dual ring can extend 100 km (62 miles).
FDDI is a product of American National Standards Committee X3-T9 and conforms to the open system interconnect (OSI) model of functional layering. It can be used to interconnect LANs using other protocols. FDDI-II is a version of FDDI that adds the capability to add circuit-switched service to the network so that voice signals can also be handled. Work is underway to connect FDDI networks to the developing Synchronous Optical Network.

Function of FDDI

Background
The Fiber Distributed Data Interface (FDDI) specifies a 100-Mbps token-passing, dual-ring LAN using fiber-optic cable. FDDI is frequently used as high-speed backbone technology because of its support for high bandwidth and greater distances than copper. It should be noted that relatively recently, a related copper specification, called Copper Distributed Data Interface (CDDI) has emerged to provide 100-Mbps service over copper. CDDI is the implementation of FDDI protocols over twisted-pair copper wire. This chapter focuses mainly on FDDI specifications and operations, but it also provides a high-level overview of CDDI.
FDDI uses a dual-ring architecture with traffic on each ring flowing in opposite directions (called counter-rotating). The dual-rings consist of a primary and a secondary ring. During normal operation, the primary ring is used for data transmission, and the secondary ring remains idle. The primary purpose of the dual rings, as will be discussed in detail later in this chapter, is to provide superior reliability and robustness. Figure 1 shows the counter-rotating primary and secondary FDDI rings.

Figure 1: FDDI uses counter-rotating primary and secondary rings.

FDDI uses counter-rotating primary and secondary rings
FDDI Specifications
FDDI specifies the physical and media-access portions of the OSI reference model. FDDI is not actually a single specification, but it is a collection of four separate specifications each with a specific function. Combined, these specifications have the capability to provide high-speed connectivity between upper-layer protocols such as TCP/IP and IPX, and media such as fiber-optic cabling.
FDDI's four specifications are the Media Access Control (MAC), Physical Layer Protocol (PHY), Physical-Medium Dependent (PMD), and Station Management (SMT). The MAC specification defines how the medium is accessed, including frame format, token handling, addressing, algorithms for calculating cyclic redundancy check (CRC) value, and error-recovery mechanisms. The PHY specification defines data encoding/decoding procedures, clocking requirements, and framing, among other functions. The PMD specification defines the characteristics of the transmission medium, including fiber-optic links, power levels, bit-error rates, optical components, and connectors. The SMT specification defines FDDI station configuration, ring configuration, and ring control features, including station insertion and removal, initialization, fault isolation and recovery, scheduling, and statistics collection.
FDDI is similar to IEEE 802.3 Ethernet and IEEE 802.5 Token Ring in its relationship with the OSI model. Its primary purpose is to provide connectivity between upper OSI layers of common protocols and the media used to connect network devices. Figure 3 illustrates the four FDDI specifications and their relationship to each other and to the IEEE-defined Logical-Link Control (LLC) sublayer. The LLC sublayer is a component of Layer 2, the MAC layer, of the OSI reference model.

Figure 2: FDDI specifications map to the OSI hierarchical model.

FDDI specifications map to the OSI hierarchical model
FDDI Station-Attachment Types
One of the unique characteristics of FDDI is that multiple ways actually exist by which to connect FDDI devices. FDDI defines three types of devices: single-attachment station (SAS), dual-attachment station (DAS), and a concentrator.
An SAS attaches to only one ring (the primary) through a concentrator. One of the primary advantages of connecting devices with SAS attachments is that the devices will not have any effect on the FDDI ring if they are disconnected or powered off. Concentrators will be discussed in more detail in the following discussion.
Each FDDI DAS has two ports, designated A and B. These ports connect the DAS to the dual FDDI ring. Therefore, each port provides a connection for both the primary and the secondary ring. As you will see in the next section, devices using DAS connections will affect the ring if they are disconnected or powered off. Figure 3 shows FDDI DAS A and B ports with attachments to the primary and secondary rings.

Figure 3: FDDI DAS ports attach to the primary and secondary rings.
FDDI DAS ports
An FDDI concentrator (also called a dual-attachment concentrator [DAC]) is the building block of an FDDI network. It attaches directly to both the primary and secondary rings and ensures that the failure or power-down of any SAS does not bring down the ring. This is particularly useful when PCs, or similar devices that are frequently powered on and off, connect to the ring. Figure 4 shows the ring attachments of an FDDI SAS, DAS, and concentrator.

Figure 4: A concentrator attaches to both the primary and secondary rings.

A concentrator attaches to both the primary and secondary rings
FDDI Fault Tolerance
FDDI provides a number of fault-tolerant features. In particular, FDDI's dual-ring environment, the implementation of the optical bypass switch, and dual-homing support make FDDI a resilient media technology.
Dual Ring
FDDI's primary fault-tolerant feature is the dual ring. If a station on the dual ring fails or is powered down, or if the cable is damaged, the dual ring is automatically wrapped (doubled back onto itself) into a single ring. When the ring is wrapped, the dual-ring topology becomes a single-ring topology. Data continues to be transmitted on the FDDI ring without performance impact during the wrap condition. Figure 5 and Figure 6 illustrate the effect of a ring wrapping in FDDI.
Figure 5: A ring recovers from a station failure by wrapping.

A ring recovers from a station failure by wrapping

Figure 6: A ring also wraps to withstand a cable failure.

A ring also wraps to withstand a cable failure
When a single station fails, as shown in Figure 5, devices on either side of the failed (or powered down) station wrap, forming a single ring. Network operation continues for the remaining stations on the ring. When a cable failure occurs, as shown in Figure 6, devices on either side of the cable fault wrap. Network operation continues for all stations.
It should be noted that FDDI truly provides fault-tolerance against a single failure only. When two or more failures occur, the FDDI ring segments into two or more independent rings that are unable to communicate with each other.

Optical Bypass Switch

An optical bypass switch provides continuous dual-ring operation if a device on the dual ring fails. This is used both to prevent ring segmentation and to eliminate failed stations from the ring. The optical bypass switch performs this function through the use of optical mirrors that pass light from the ring directly to the DAS device during normal operation. In the event of a failure of the DAS device, such as a power-off, the optical bypass switch will pass the light through itself by using internal mirrors and thereby maintain the ring's integrity. The benefit of this capability is that the ring will not enter a wrapped condition in the event of a device failure. Figure 7 shows the functionality of an optical bypass switch in an FDDI network.

Figure 7: The optical bypass switch uses internal mirrors to maintain a network.

The optical bypass switch
Dual Homing
Critical devices, such as routers or mainframe hosts, can use a fault-tolerant technique called dual homing to provide additional redundancy and to help guarantee operation. In dual-homing situations, the critical device is attached to two concentrators. Figure 8 shows a dual-homed configuration for devices such as file servers and routers.

Figure 8: A dual-homed configuration guarantees operation.

dual-homed configuration
One pair of concentrator links is declared the active link; the other pair is declared passive. The passive link stays in back-up mode until the primary link (or the concentrator to which it is attached) is determined to have failed. When this occurs, the passive link automatically activates.
FDDI Frame Format
The FDDI frame format is similar to the format of a Token Ring frame. This is one of the areas where FDDI borrows heavily from earlier LAN technologies, such as Token Ring. FDDI frames can be as large as 4,500 bytes. Figure 9 shows the frame format of an FDDI data frame and token.

Figure 9: The FDDI frame is similar to that of a Token Ring frame.

FDDI frame is similar to that of a Token Ring frame.
FDDI Frame Fields
The following descriptions summarize the FDDI data frame and token fields illustrated in Figure 9.
Preamble---A unique sequence that prepares each station for an upcoming frame.
Start Delimiter--- Indicates the beginning of a frame by employing a signaling pattern that differentiates it from the rest of the frame.
Frame Control---Indicates the size of the address fields and whether the frame contains asynchronous or synchronous data, among other control information.
Destination Address---Contains a unicast (singular), multicast (group), or broadcast (every station) address. As with Ethernet and Token Ring addresses, FDDI destination addresses are 6 bytes long.
Source Address---Identifie s the single station that sent the frame. As with Ethernet and Token Ring addresses, FDDI source addresses are 6 bytes long.
Data---Contains either information destined for an upper-layer protocol or control information.
Frame Check Sequence (FCS)---Filed by the source station with a calculated cyclic redundancy check value dependent on frame contents (as with Token Ring and Ethernet). The destination address recalculates the value to determine whether the frame was damaged in transit. If so, the frame is discarded.
End Delimiter--- Contains unique symbols, which cannot be data symbols, that indicate the end of the frame.
Frame Status---Allows the source station to determine whether an error occurred and whether the frame was recognized and copied by a receiving station.

FDDI Frame Format

FDDI Frame

Frame Control (FC): 8 bits
has bit format CLFFZZZZ
C indicates synchronous or asynchronous frame
L indicates use of 16 or 48 bit addresses
FF indicates whether it is a LLC, MAC control or reserved frame
in a control frame ZZZZ indicates the type of control
Destination Address (DA): 16 or 48 bits
specifies station for which the frame is intended
Source Address (SA): 16 or 48 bits
specifies station that sent the frame
Here is what the FDDI frame format looks like:
FDDI Frame Format
FDDI Frame Format
PA - Preamble 16 symbols
SD - Start Delimiter 2 symbols
FC - Frame Control 2 symbols
DA - Destination Address 4 or 12 symbols
SA - Source Address 4 or 12 symbols
FCS - Frame Check Sequence 8 symbols, covers the FC, DA, SA and Information
ED - End Delimiter 1 or 2 symbols
FS - Frame Status 3 symbols
Token is just the PA, SD, FC and ED
Preamble
The Token owner as a minimum of transmits the preamble 16 symbols of Idle. Physical Layers of the subsequent repeating stations can change the length of the Idle pattern according to the Physical Layer requirements. Therefore, each repeating station may see a variable length preamble from the original preamble. Tokens will be recognized as long as its preamble length is greater than zero. If a valid token is received and cannot be processed (repeated), due to expiration of ring timing or latency constraints the station will issue a new token to be put on the ring. A given MAC implementation is not required to be capable of copying frames received with less than 12 symbols of preamble; Nevertheless, with such frames, it cannot be correctly repeated.
Since the preamble cannot be repeated, the rest of the frame will not be repeated as well.
Starting Delimiter
This field of the frame denodes the start of the frame. It can only have symbols 'J' and 'K'. These symbols will not be used anywhere else but in the starting delimiter of a token or a frame.
Frame Control
Frame Control field descibes what type of data it is carrying in the INFO field. Here are the most common values that are allowed in the FC field:
40: Void Frame.
41,4F: Station Management (SMT) Frame.
C2,C3: MAC Frame.
50,51: LLC Frame.
60: Implementor Frame.
70: Reserved Frame.
Please note that the list here are only the most common values that can be formed by a 48 bit addressedynchronous data frames.
Destination Address
Destination Address field contains 12 symbols that identifies the station that is receiving this particular frame. When FDDI is first setup, each station is given a unique address that identifies themselves from the others. When a frame passed by the station, the station will compare its address against the DA field of the frame. If it is a match, station then copies the frame into its buffer area waiting to be processed. There is not restriction on the number of stations that a frame can reach at a time. If the first bit of the DA field is set to '1', then the address is called a group or global address. If the first bit is '0', then the address is called individual address. As the name suggests, a frame with a global address setting can be sent to multiple stations on the network. If the frame is intended for everyone on the network, the address bits will be set to all 1's. Therefore, a global address contains all 'F' symbols. There are also two different ways of administer these addresses. One's called local and the other's called universal. The second bit of the address field determine whether or not the address is locally or universally administered. If the second bit is '1' then it is locally administered address. If the second bit is a '0', then it is universally administered adress.A locally administer address are addresses that have been assigned by the network administrator and a universally administered addresses are pre-assigned by the manufacturer' s OUI.
Source Address
A Source Address identifies the station that created the frame. This field is used for remove frames from the ring. Each time a frame is sent, it travels around the ring, visiting each station, and eventually (hopefully) comes back to the station that originally sent that frame. If the address of a station matches the SA field in the frame, the station will strip the frame off the ring. Each station is responsible for removing its own frame from the ring.
Information Field
INFO field is the heart and soul of the frame. Every components of the frame is designed around this field; Who to send it to, where's this coming from, how it is received and so on.The type of information in the INFO field can be found by looking in the FC field of the frame. For example: '50'(hex) denodes a LLC frame. So, the INFO field will have a LLC header followed by other upper layer headers. For example SNAP, ARP, IP, TCP, SNMP, etc. '41'(hex or '4F'(hex) denode s SMT (Station Management) frame. Therefore, a SMT header will appear in the INFO field.

Frame Check Sequence

Frame Check Sequence field is used to check or verify the traversing frame for any bit errors. FCS information is generated by the station that sends the frame, using the bits in FC, DA, SA, INFO, and FCS fields. To verify if there are any bit errors in the frame, FDDI uses 8 symbols (32 bits) CRC (Cyclic Redundancy Check) to ensure the transmission of a frame on the ring.
End Delimiter

As the name suggests, the end delimiter denodes the end of the frame. The ending delimiter consist of a 'T' symbol. This 'T' symbols indicates that the frame is complete or ended. Any data sequence that does not end with this 'T' symbol is not considered to be a frame.
Frame Status
Frame Status (FS) contains 3 indicators that dictates the condition of the frame. Each indicator can have two values: Set ('S') or Reset ('R'). The indicators could possibly be corrupted. In this case, the indicators is neither 'S' nor 'R'. All frame are initially set to 'R'. Three types of indicators are as follows: Error (E):This indicator is set if a station determines an error for that frame. Might be a CRC failiure or other causes. If a frame has its E indicator set, then, that frame is discarded by the first station that encounters the frame. Acknowledge( A): Sometime this indicator is called 'address recognized'. This indicator is set whenever a frame in properly received; meaning the frame has reached its destination address. Copy (C): This indicator is set whenever a station is able to copy the received frame into its buffer section. Thus, Copy and Acknowledge indicators are usually set at the same time. But, sometimes when a station is receiving too many frames and cannot copy all the incoming frames. If this happens, it would re-transmit the frame with indicator 'A' set indicator 'C' left on reset.

__._,_.___

Monday, November 12, 2007

MS SQL Server 2005 full-text indexing

Instead of buying Visual Developer Studio 2005 and SQL Server, I made my database-driven website using the free versions: Visual Web Developer Express and SQL Server Express. However, I still wanted to be able to search my database of product reviews using a full-text search, because I was sure that Microsoft had put a lot of work into developing this, and so it must be infinitely better than any crummy search mechanism I could cook up myself. Here's how I did it, and what I found...

Getting started with full-text search
Make sure that you download the version of SQL Server Express with the additional full-text search capabilities. This is the larger one of the two downloads possible.
Read up a bit on Full Text Search concepts.
Making the CatalogNow you need to create a full-text catalog. The catalog seems to be a container to put all your full-text indexes into. So, if you are going to need to search the text of three tables, you make three indexes (one for each table) and put all three indexes in the one catalog.WARNING: Some of the information of the Microsoft website relates to the full version of SQL Server, such as the "Storage folder" that Express doesn't have. Don't panic, you just need to create the catalog by hand, rather than through the Management Interface.For my application, I just made one catalog and put two of my indexes into it. From what I understand, if your indexes are going to be huge, you should make a separate catalog for each index. Here is how to make a catalog:

Start SQL Server Management Studio Express, and connect to your database.
Click on New Query to get a box where you can type raw SQL.
Type:use mydatabasegoEXEC sp_fulltext_database 'enable'goCREATE FULLTEXT CATALOG mycatalog go
Click "Execute" to run the SQL. This will enable fulltext searching on the database, and create the catalog, which is in fact a folder on your computer called "mycatalog" somewhere within the Microsoft SQL Server folder. If your catalog is going to be HUGE, it may be worth researching some extra parameters for this command to tell it where to put the catalog, e.g. on a different disk to the database itself. This would be for performance improvement more than anything else.

Making the Index
Next we are going to create a full-text index. But if you want to create a full-text index on a table, the table must have a "unique, single-column, non-nullable index". In most cases this will be your primary key. What Microsoft is saying here is that you must have a non-null index on the table (all primary keys automatically are this), and that the index must be on just one column. Oh Drat! My table has a primary key that is on two columns, so I have to make an index that is on a single unique column in order to use full-text searching. What to do, what to do? Well, my solution was to add a new column to the table called "text_id". I made this an int column, and also made it an identity column. This way, the text_id field gets automatically filled with a unique integer for each record that is entered, without me needing to change any of my existing aspx pages.Also, if you already have a primary key, but it is on a really long field, I suggest you make an int field and use that instead, because the full-text index that gets created will be huge if the primary key you use is big, such as a GUID.
Ok, here is how to create the full-text index:
If you need to add an identity column, do this first.
Make sure you have an index on the identity column. I called mine "myindex".
Type in and execute this SQL:CREATE FULLTEXT INDEX ON mydatabase.dbo.mytable(column_to_index Language 0X0)KEY INDEX myindex ON mycatalogWITH CHANGE_TRACKING AUTOWhere mytable is the name of the table, column_to_index is the name of the column that is full of text you want to be able to search on, myindex is the name of the index (could be PK_something if you used your primary key), and mycatalog is the name of the catalog you created earlier. The "Language" bit just tells SQL Server to not treat this as being in any specific language. I don't know how to specify another language here, but you can change it later by using the SQL Server Manager interface. I didn't notice any difference between a UK English index and a language-neutral index. I suspect it is only important for languages other than English.
I did discover that sometimes when you try to make the index, it doesn't get fully made until you do a little bit through the user interface. To verify that things have worked, start the SQL Server Manager interface, right-click on the table name and choose "Modify". Right-click on the column and choose "Full text index...". In here you need to check that "Columns" is set to the column name you want to index. Also check whether "Active" is Yes — if not, it means the index isn't built yet.
You may have to wait a while for the index to be created. If you have a large table, the CPU usage on your PC will probably go up to 100% while this happens. If you get problems, see the troubleshooting section below...
Performing a FindThe actual SELECT statement to find records is then very easy. Here is an example:SELECT descriptionFROM mytableWHERE CONTAINS(description, '"shark attack"') (You need to put the search terms in double-quotes, within the single-quotes needed for the SQL)
Eliminating Noise WordsIf your text fields are in HTML, then you should add things lik "BR" and "P" to the list of noise words.
What I discovered
At first, full-text search queries were taking about 30 seconds to return results. This was pretty disappointing, and I started looking for ways to tune the system up. But while I was looking, the whole thing sorted itself out, and suddenly queries became almost instant. It is very impressive, I can search for a phrase like "african drumming" on my 20,000 record database almost instantly. I don't know what caused this delay then speed-up. Presumably the SQL Server was building the indexes, and it took a while. I'm not sure how come I could do queries while the index was being built though. It's a puzzle.
Also, I discovered that searching for "drum* lesson*" returns better results than searching for "drum lesson", because the first one will also find "drumming lessons". So, I made it so that queries that people enter automatically have a * put after each word.
A Bit of Troubleshooting
If it doesn't work, here are some of the problems I encountered, and the ways of debugging and solving the problems:
Application Events
Right Click on My Computer, choose Manage, then Event Viewer, then Application. This shows you the Application Event Log. In here you will see any error messages from the Full Text service. Usually one of these errors will just redirect you to the server logs themselves.
SQL Server Logfile & Fulltext Index Log-file
Have a look in the logs. I found mine in C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG. The fulltext logs are called SQLFTxxxxxx.LOG. They are hard to understand, but they may help.
Try ReBooting
You need to reboot after you install FullText Indexing, and a reboot is always a good place to start when troubleshooting. I had the error message "Error '0x80040e09' occurred during full-text index population" appearing in my logfiles, and no fulltext indexes created at all until I figured out that I needed to reboot.
Commands & Queries that you can type into SQL Server 2005:
How to check the status of the full-text indexes in a catalog:
USE mydatabase;GOEXEC sp_help_fulltext_tables mycatalog;GO
Enable fulltext search on a table:
USE mydatabase;GOALTER FULLTEXT INDEX ON mytable ENABLE;GO
Check if full text indexing is enabled:
USE mydatabase;GOSELECT DATABASEPROPERTY('mydatabase', 'IsFullTextEnabled');GO
Update
I've been looking at this a bit more recently, and worked out a few things:
You can have more than one fulltext indexed column per table. Old SQL Server versions prevented this, but 2005 allows it. So, you can have a table with a title and a summary column, and both can be full-text indexed.
The language setting is important, despite what I wrote above. I now use the code '2057' to set my indexes to be in UK English. This means that searches on "dogs" will also find "dog".
You can find the status of your fulltext indexes like this:exec sp_help_fulltext_columns mytableThis shows you which columns in a table are set up for full-text searching.select * from sys.fulltext_indexesThis shows you the status of the current indexes and when they were last updated. I think the key is to make sure that change_tracking_state_desc is set to "AUTO" and that has_crawl_completed is "1". You can also see the time of the last crawl, i.e. when the index was last updated, which can help you see why things aren't working.
Here is my example .sql statement, that sets up three columns of a table for fulltext indexing, and sorts out the change tracking state, and starts a full crawl:
use contentexec sp_fulltext_database 'enable'goexec sp_fulltext_catalog 'cmscatalog', 'create'goexec sp_fulltext_table 'document', 'create', 'cmscatalog', 'PK_document'goexec sp_fulltext_column 'document', 'title', 'add', '2057'exec sp_fulltext_column 'document', 'keywords', 'add', '2057'exec sp_fulltext_column 'document', 'search_text', 'add', '2057'goexec sp_fulltext_table 'document', 'activate'goEXEC sp_fulltext_table 'document', 'Start_background_updateindex';goexec sp_fulltext_table 'document', 'start_full'go
Conclusion
Full Text Searching is easy to set up and use in SQL Server Express. When it works, it works fast!