text:
Easy Tips for Greening Your House
Sometimes it seems like greening your home requires a master's degree, a lot of money, and endless amounts of time. Fortunately, there are actually some very easy ways to green your home to make it easier on the environment, and on your pocketbook. You can save money on utilities, cut down on waste, and maybe even get a little decluttering in while you're at it.
Inside the house, there are a lot of ways to cut down on utility use. Water consumption can be a big problem, especially in a larger household. Take small steps like installing a toggle switch in the shower so you can set the temperature and then turn the water off while you soap up, shave, and perform other tasks instead of just letting it run. Remember not to leave the water running while brushing your teeth, and do the same for dishes; only have the water on if you actually need it to rinse dishes, and consider upgrading to a high efficiency dishwasher in the long term.
Laundry can be a huge energy suck, and there are a variety of ways to cut down on waste. Some low-cost options include using cold or lukewarm water so you don't spend energy heating the water, and using appropriate load settings. If you only have a small load, try to hold off, or think of something else to add to fill it out. Households with more money to spend might want to consider upgrading to green-certified appliances; sometimes you can get special discounts, rebates from utilities, and other incentives to make the up-front costs lower.
Your water heater can also chew through an energy bill extremely quickly. One of the easiest ways to save money on water heating is to dress your heater up! Instead of leaving it bare, add a layer of insulation so it won't have to work as hard. You might also consider turning the heat down if you never run water at the hottest setting, and you can also install a timing device that only heats water during specific hours to cut costs even further. When your water heater gives out, you might want to consider upgrading to a tankless heater, which heats water as-needed rather than keeping it hot at all times. If you are considering the tankless water heater, read this Atlanta contractor's advice on tankless water heaters first.
Managing heating and cooling can be a substantial issue in regions with more extreme climates. Dropping the thermostat by even a few degrees can make a big difference—it will still be in the comfort zone, but it won't use quite as much energy. Consider adding insulation to windows to help maintain the temperature. As windows require upgrading or replacement, double-panes are a good choice for adding further insulation. People with more money might also want to consider replacing insulation in their walls and ceilings to further assist with temperature control.
Another way to green your home is to look for ways to cut down on electrical power use. While many people are careful about only having lights on when they need them, the real culprit behind high electricity use is appliances and devices. Smart power strips can allow you to totally power down such devices when not in use, rather than leaving them in standby mode, which consumes power. Consider purchasing lower-energy appliances when you do need to upgrade, and use your devices wisely. If no one's watching the television, for example, it probably doesn't need to be left on, or even plugged in.
Some energy companies and electricians have detailed audits that allow you to break down your own energy use by time of day, so you can see when you use the most energy and how you might work on addressing it. If you notice use spikes when your kids come home from school, for example, you might want to log what people are doing in the house around that time to identify the reason why so much electricity is used.
You may be able to further save money by applying for a time of use plan, which can also help you green your home by creating an incentive to cut down on energy use during peak periods. Under such plans, you're charged more for using energy at specific times, in exchange for a steep discount at others. This helps your pocketbook and your home, along with the power grid.
Think carefully about the things you bring into your home, as well. Try to stick with minimal packaging, recycled components, and products you can easily breakdown to reuse or recycle. For example, many grocery stores have bulk sections, and you can use and reuse bags for buying bulk products, limiting the packaging you take home with you. Glass jars can be reused for a variety of things, including storage of bulk ingredients, and recycled when they are no longer needed. If a product is heavily packaged, ask yourself whether you really need it or if there's an alternative available.
As big ticket purchases like new flooring, kitchen remodels, and so forth come up, think about how you can make them green. Buying resources are readily available to help people make informed decisions about the best options for their needs and budget, and individual contractors and consultants can provide additional information. Taking steps like using recycled or reclaimed building materials along with renewable ones can cut down on the environmental impact of building projects. You might also want to consider steps like using environmentally friendly paints, glues, stains, and other products to protect your house, the environment, and yourself—for example, flooring that won't make you sick with offgassing.
By reducing the amount of things you buy and being conscious about their components, you can save money and green your house at the same time. You can also work on decluttering your house to remove things you don't use and get a clearer picture of what you actually own; think about getting rid of all those old electronics at an electronics recycling facility, for example, or donate books you aren't reading to the library or a community organization.
Looking for a Pro? Call us(866) 441-6648


text:
Advent Health Celebration
Registered Nurse Neuro PCU FT Days
– US-FL-CelebrationJob DescriptionDescription Registered Nurse – Medical Neurological Progressive Care Unit $15k Sign-On Bonus (see elegibility below) $3k Relocation Bonus (see elegibility below) AdventHealth Celebration Location Address: 400 Celebration Pl, Celebration, FL 34747 Top Reasons to work at AdventHealth Celebration Established in 1997 and now a 203-bed hospital, AdventHealth Celebration Health was designed as a Mediterranean resort-style facility to serve as a cornerstone of health in Disney's planned community of Celebration, Florida.
The hospital consistently delivers a state-of-the-art healing environment to residents of Osceola, Orange, Polk and Lake Counties, as well as to visitors from across the United States and the world.
All within a "living laboratory" of groundbreaking, research-driven clinical solutions that integrate mind, body and spirit in the defeat of illness and disease.
Unit Highlights The Progressive Care Unit (PCU) consists of 40 beds: all private rooms.
PCU is based on a true interdisciplinary patient care model, with a holistic healing environment approach.
The department is notable for their team-oriented culture and commitment to patient safety.
Nurses on this unit are empowered to make patient care decisions, engage in the Nurse Practice Council and self-schedule for optimal coverage.
The nurse to patient ratio is 4:1.
The nurse job satisfaction is above the national average.
Work Hours/Shift: Full Time/Days – 7a-7p, Weekend Rotation Required $15,000 Sign-on Eligibility: Applicable experience required.
Full Time employment contract required.
Rehires within 12 months are not eligible.
Internal Candidates are not eligible.
$3,000 Relocation Eligibility: Applicable experience required.
Full Time employment contract required.
Rehires within 12 months are not eligible.
Must live 50 miles outside of campus address.
You Will Be Responsible For: NURSING PROCESS: Completes timely assessments per Practice Guidelines including physiological, psychological, developmental, sociocultural, spiritual, and life-style factors, including signs of abuse or neglect.
Makes appropriate decisions and interventions and nursing diagnosis according to patients actual or potential health conditions or needs.
(American Nurses Association [ANA], 2012) NURSING PROCESS: Based on the assessment and diagnosis, sets measurable and achievable short and long-range goals for the patient (ANA, 2012), assisting in the development and implementation of an individualized plan of care.
Prioritizes and completes follow up assessments, evaluates and modifies plan of care as needed.
Nursing practice reflects mutual goal setting and whole person care including meeting the needs of the mind, body and spirit.
(King, 1995) NURSING KNOWLEDGE: Demonstrates the ability to assess and interpret diagnostic data relative to patient age and condition, including, but not limited to lab results, non-invasive monitoring data and interdisciplinary team notes.
Nursing practice reflects the application of knowledge and skills pertaining to all diagnoses, procedures, medications, complications, and equipment associated with unit patient population.
PATIENT SAFETY: Nursing practice reflects the application of knowledge, skill and adherence to all pertinent regulatory standards.
Follows strict infection prevention precautions.
Adheres to policy and procedure regarding all aspects of medication safety.
Practice reflects importance of patient teaching and takes advantage of opportunities, both planned and unplanned, to carry it out in accordance with plan of care.
COMMUNICATION: Promotes an exceptional patient experience by abiding to compassion and image standards and fostering excellent nurse-patient relationships through effective/therapeutic communication with the patient, family, and visitors, including but not limited to and as applicable, hourly rounding.
Exhibits ability to utilize appropriate techniques, verbiage, and resources in all interactions with the patient to their level of understanding.
Communicates effectively with interdisciplinary team by completing thorough hand off communication in all situations.
Follows chain of command when appropriate.
QualificationsWhat Will You Need: EDUCATION AND EXPERIENCE REQUIRED: Graduate of a school of nursing Education and Experience Preferred: Bachelor's degree in Nursing LICENSURE, CERTIFICATION, OR REGISTRATION REQUIRED: Current valid State of Florida or multi state license as a Registered Nurse Basic Life Support (BLS) certification Advanced life support certification (ACLS) Licensure, Certification, or Registration Preferred: Professional certification ACLS, PALS, NRP (based on patient population; See document EKG and Advanced Life Support Requirements) Job Summary: The Registered Professional Nurse (RN) is responsible for providing and supervising direct and indirect total nursing care responsibilities to identified age specific groups.
Utilizes the nursing process (assessing, planning, implementing and evaluating) in achieving the goals of the nursing department.
Adheres to the AdventHealth Corporate Compliance Plan and to all rules and regulations of all applicable local, state and federal agencies and accrediting bodies.
Actively participates in outstanding customer service and accepts responsibility in maintaining relationships that are equally respectful to all.
This facility is an equal opportunity employer and complies with federal, state and local anti-discrimination laws, regulations and ordinances.

subset: commoncrawl


text:
Sell Bitcoin with Kukuruza quickly and safely
Choose a suitable offer and open a secure trade
Confirmed trades: 22800+
🎄Любой объем 🍋Лучший курс 💔Если вы не со мной, то это ошибка 💔
Confirmed trades: 1300+
Confirmed trades: 850+
Перевожу моментально, порядочность гарантирую!
Selling Bitcoin on Bitpapa is simple and secure
On completing registration a free multicurrency cryptowallet becomes available to you. If you already have an account, just sign in
Bitpapa's mission is to offer users a simple and friendly environment where they can trade cryptocurrencies
Our platform implements a P2P marketplace where all trades are conducted directly between users. You can buy or sell bitcoin, ethereum, stable coins, and other cryptocurrencies with no third party involved
You don't need special skills to trade cryptocurrencies. On Bitpapa you can make cryptocurrency trades using hundreds of popular payment methods. If you don't find your favorite payment method or have other questions, shoot us a message. Our support is available 24/7 and ready to help you!


text:
Quick tech specs
- Extended service agreement
- 3 years
- 9x5
- replacement
- shipment
- response time: NBD
Know your gear
HP Foundation Care is composed of comprehensive hardware and software services aimed to help increase the availability of your IT infrastructure. HP technical resources work with your IT team to help you resolve hardware and software problems with HP and selected products. For hardware products covered by HP Foundation Care, the service includes remote diagnosis and support, as well as onsite hardware repair if it is required to resolve an issue.
Enhance your purchase


text:
Log In
Payday Loans
Title Loans
Rates and Terms
How it Works
Need Cash Today?
Find A Store
Available Loans
Contact Us
Email Us
Fraud & Security
Available Services
Enter your ZIP code or click the HUNT icon to see what Loans are available in your state.
Please enter your Zipcode
Visit the Rates by State page to select from the full list of states.
About Us
Email Assistant
Send us a note. We'll get back to you as soon as we can.
We have received your message! One of our Customer Care Agents will respond as soon as they can via email, typically within 24 hours.


text:
Get the gelatinophobia mug.
The fear of Jell-O brand gelatin or any type of gelatin, jelly included. Characterised by the avoidance of such materials and the refusal to consume said materials. People with gelatinophobia often find the wiggling of gelatin based food gross.
Nathan: I won't be eating jelly for a very long time.
Mike: I guess you caught Kel's gelatinophobia.
Mike: I guess you caught Kel's gelatinophobia.
by miketaba November 30, 2005


text:
The "Shimano Problem" and its recent resolution make this an opportune time to briefly explore the subject of Buddhism's integration into the West. Eido Shimano Roshi had been the abbot of the New York Zen Studies Society, one of the oldest Buddhist institutions in the West, and its 1,400-acre Dai Bosatsu retreat in the Catkills until he resigned from both earlier this week. Even though he's headed the former since 1965 and is 77 years old, he isn't retiring. This comment below, posted at the Tricycle Buddhist magazine blog in reaction to the apology that accompanied his announcement, gives you an idea of what transpired.
Take it from someone who has known Eido Shimano for over thirty years, this is anything but a sincere apology. It is the same tired routine he has repeated each time he has been "caught with his robe open" for three decades.
Yes, the Achilles heel of gurus, abbots, and pastors everywhere — sleeping with their students and/or worshippers. Before we explore its prevalence in Buddhist America, let's take a moment to celebrate "how the swans came to the lake," to borrow the title of a history of the Zen Buddhism diaspora, if you will, to the United States by Rick Fields (Shambhala, 1992).
Since Buddhism originated in India and moved east to China and then Japan, Korea, and Southeast Asia, it was probably as inevitable a migration across the Pacific as Homo erectus following the game out of Africa and populating Asia and Europe. Also since Eastern teachers were often stuck with students sent to them by their families, they were happy to find students in the West who, stoked in part by American traditions such as Ralph Waldo Emerson's Transcendentalism, sought out the teachers on their own and were eager to initiate practice.
Of course, the extent to which Buddhism needed to be Westernized became a central issue. American Buddhist centers may appear to have integrated East and West seamlessly, but many obstacles were surmounted during their formative years. Looking back, rituals, practice, and teachings may have been the least of it. Instead, due to mixed signals between the two cultures and, however much a cliché, culture shock on the part of the Easterners, many American students wound up emotionally and spiritually wounded by Buddhist teachers — Eastern and American. Besides, of course, the good names of the most highly regarded forms of Buddhism in America, Tibetan and Zen, were sullied.
Perhaps the most notorious perpetrator of spiritual abuses was Trungpa Rinpoche, who, while still a teenager, headed several large Tibetan monasteries until, like the Dalai Lama, he was forced out by the 1959 Chinese invasion. Once in the West, his gift for teaching facilitated the founding of what has become known as the Vajradhatu (his U.S. meditation centers), Shambhala Meditation Centers around the world, and the Naropa Institute (now University). But his hedonistic lifestyle and provocative "crazy wisdom" both mystified and alienated.
Trungpa died a grisly alcoholic's death, but his successor was arguably even more dissolute. The claim to fame of Osel Tendzin, an American from New Jersey, was not only seducing students, but becoming infected with HIV and failing to tell those with whom he engaged in sexual behavior. This scenario was paralleled by two American Zen teachers: the womanizing Richard Butler, the abbott of the San Francisco Zen Center, and his successor, Reb Anderson, who gained fame by appropriating the gun from a suicide victim and later wielding it in public.
As for Shimano, his serial philandering was a source of concern for decades to long-time colleague Roshi Robert Aitken, who recently died. At the Zen Site, Vladimir K. and Stuart Lachs illuminated a series of letters from Aitken to Shimano and to others in the Zen community, including two of Japan's most venerated roshis who had been his teachers. Only much later was one of them inclined to condemn Shimano. Watch how the culture clash played out in this instance. (Emphasis added.)
Aitken excuses this lack of interest by the two Japanese Zen masters to cultural differences between America and Japan, writing "it is important to understand that mental illness and character pathology are viewed tolerantly in Japan." Aitken infers that he believes that Shimano may be suffering some form of mental illness or pathology, calling him "someone in a different dimension altogether." Nevertheless, Shimano's Japanese teachers "felt responsible for him, and were not prepared to disgrace him by recalling him to Japan."
In a 1990 piece titled Encountering the Shadow in Buddhist America that's as nuanced as you'll find on the subject, the culture clash was elucidated by Katy Butler. (If you haven't yet, read her recent powerful New York Times magazine piece that begins with her mother speaking with her about her father: "Please help me get Jeff's pacemaker turned off.") Upon arriving in the United States, Eastern teachers found a nation already predisposed to hero worship and religious hucksterism. Here Ms. Butler writes about what keeps Eastern teachers in line back home until they arrive on these shores and act like a kid in a candy store.
"Pressure from the community is very important in controlling behavior in Tibetan communities," said Dr. Barbara Aziz, an internationally known social . . . who has spent 20 years doing fieldwork among Tibetans. . . . "In Tibetan society, they expect more of the guy they put on the pedestal . . . if such a scandal [as Osel Tendzin's] had happened in Tibet [he] might have been driven from the valley."
Furthermore, Aziz pointed out, Tibetans may "demonstrate all kinds of reverence to a [teacher], but they won't necessarily do what he says. I see far more discernment among my Tibetan and Nepali friends," she concluded, "than among Westerners." [Emphasis added.]
Alan Roland, a psychoanalyst and author of In Search of Self in India and Japan . . . . believes that Asian students approach the teacher-student relationships more subtly than Americans-who often commit rapidly and completely, or not at all. Asian students may display deference, but withhold veneration, until they have studied with a teacher for years. They seem to have a "private self" unknown to many Americans, which is capable of reserving judgement even while scrupulously following the forms. When a teacher fails, Asians may continue to defer to his superior rank but silently withdraw affection and respect.
In America, it's often the reverse. Some Vajradhatu students could forgive Osel Tendzin as a human being, but could not treat him as a leader. . . . few Americans can show deference to someone they don't venerate without feeling hypocritical. Faced with this cognitive dissonance, they either abandon deference and leave, or they deny inner feelings.
Ms. Butler then quotes the current Dalai Lama.
"I recommend never adopting the attitude toward one's Spiritual teacher of seeing his or her every action as divine or noble. . . . if one has a teacher who is not qualified, who is engaging in unsuitable or wrong behavior, then it is appropriate for the student to criticize that behavior."
Finally, a couple random observations about the issues teachers in Eastern traditions sometimes have with power and sex:
- The sheer immaturity they're manifesting is breathtaking. Either they're resisting the transformation that long hours of meditation should be impressing on them or, in the belief that they're fully realized, or enlightened, they think that they're beyond the effects of bad karma on their future as souls.
- It goes without saying that these problems are all but nonexistent in woman-led sanghas and zendos.


text:
|Alternate Art Promos
Auction Policies & FAQ
You may now bid on high end items, lots, singles, sealed products and more here on our website. In order to bid on our items, you must follow these rules:
1. All bids are binding and if you are the highest bidder, you will receive an e-mail with checkout instructions for your auction. (You can also checkout from your account page).
2. Failure to pay for an auction that you have won may result in account termination.
3. Buyer is responsible for shipping charges at checkout (if applicable).
4. Shill bidding (fake bids) will result in immediate account termination.
5. Buyers who win an auction have 24 hours to complete checkout. If checkout has not been completed within this time, the buyer's account may be subject to being disabled temporarily or termination.
- How will I know if I've won an auction?
You will receive an e-mail noting that you have won an auction and instructions on how to checkout. You may also check your account under "Auction History" for a checkout option for your auction.
- How long do I have to pay for the auction that I won?
Buyers have 24 hours to pay for their auction. After this time has passed, the next highest bidder will be chosen and your account may be subject to being disabled temporarily or termination.
- Can I purchase an item without bidding?
Some items may have a "Buy it Now" option, or an option to add the item to cart for it's full listed price.
- Can I combine my auction with other products I would like to purchase?
You may request to add your auction to another order to combine shipping costs. To do so, please e-mail firstname.lastname@example.com to request a custom invoice.
Pre-Order Policy
All Pre-Order products will be shipped on or before the release date unless otherwise noted.
If your order consists of in stock items or other Pre-Order items that release on a different day, the order will NOT be shipped until ALL items are in stock.
Pre-Ordered products are available to cancel (10% fee may apply, please see "Cancellation Policy") from the time the order is placed, until the order with our distributors are due. Please contact email@example.com for any cancellation requests.
Allocations of products are not known until after distributor orders are due. We will always do our best to not oversell products to avoid cancellations. While unlikely, distributors do short their buyers on products in some instances. The most commonly shorted products are specialty items outside of regular sets or products. (EX. Hidden Fates, Champion's Path, Special Collection Sets, etc.)
We reserve the right to cancel any order at any time and provide a full refund to the purchaser before fulfillment of the order. This will always be our worst case scenario if all other options are unsuccessful with providing the product.
If your order shows up as a Fraud Risk (EX. Mismatched billing/shipping address, lack of CVV code, mismatched IP address, etc.) we will most likely cancel your order. You may contact us if you believe the Fraud Risk is false to attempt another purchase.
If you place multiple orders for items that have a "Per Customer Limit", the orders over the limit will be cancelled unless otherwise arranged. Purchasers who abuse this rule by creating multiple names, addresses, etc. will have all orders cancelled and will not be allowed to purchase those products.
At this time, all Pre-Order products must be paid in full at the time of purchase to ensure your reservation.


text:
The Perfect Honey Challah - A Guest Post at Indonesia Eats
32 comments:
- AnonymousMay 9, 2011 at 9:29 AM
Beautiful challah, Shulie :)ReplyDelete
Oh wow, that's gorgeous. Hoping over to Pepy's now to get the recipe.ReplyDelete
OMG yum! I must try this!ReplyDelete
Since you bug me with a chocolate word on Twitter, now I'm tempting to make one. Call me a chocoholic :) Thanks for sharing this with us, Shulie!ReplyDelete
Beautiful! I loved learning more about the history of challah.ReplyDelete
A wonderful guest post! I miss my mother's homemade challah. It was always fun watching her make it it. This one looks fantastic!ReplyDelete
Your challah is beautiful, Shulie. I like the addition of honey--it makes sense that you would serve it alongside a savory dish. Hopping over to Pepy's site now. :-)ReplyDelete
Challah looks absolutely delicious. Two challahs will barely last in my house :).ReplyDelete
- AnonymousMay 9, 2011 at 1:21 PM
Your Challah looks delicious Shulie! Going to check out the recipe on Indonesia Eats.ReplyDelete
- @yumivoreMay 9, 2011 at 1:48 PM
Absolutely BEAUTIFUL Challah! I can't wait to try this for Shabbat. And it would be perfect with Harayme!ReplyDelete
Thank you all for your kind comments. This challah is easy to make. Very forgiving dough. You can reduce sugar in the raw to 1/4 cup if you wish, also the oil. Making my third batch within a week or so tomorrow. Maybe, just maybe will make one out of two with chocolate.ReplyDelete
Hmmm, that looks so delicious...and adding honey to this beautiful challah bread is somehow quite beautiful...ReplyDelete
OMG - could face-plant myself right in the middle of that bread!!! mouth is watering as i leave this comment - and some raw honey??? temptress!!ReplyDelete
Oh Gosh, what a most gorgeous challah!! Looove it!ReplyDelete
I've been waiting for this honey challah! Unbelieveable...and raw honey? Just gorgeous, Shulie. Send me some!!!:)ReplyDelete
What a beautiful bread Shulie! Challah is one of my hubby's favorites, so I will remember this recipe next time I make some.ReplyDelete
Beautiful bread!ReplyDelete
love challah bread. i want to try making this bread one day!!!ReplyDelete
That is some beautiful looking bread!ReplyDelete
what a beautiful looking bread. I have always wanted to bake a challah, you know since when:) I need to do a pretty one like this.ReplyDelete
It's so beautiful! I'm going over at Pepy's, too!ReplyDelete
One of these days, I'll learn to bake =).
Thank you guys!! Your notes mean a lot to me!! Yes, raw honey:). My favorite pic is the third shot as you see the texture and consistency reached in the challah, with ingredients, braiding and rising, it's really authentic.ReplyDelete
Gorgeous loaf! I love the raw honey picture :)ReplyDelete
This challah looks both rustic & decadent with that pretty baked crust.I m still not friends with yeast, when I will, I would bake this! Thanks for the raw honey picture, never saw it!ReplyDelete
WOAH!! That's gorgeous Shulie! I love it. I'm surely going to give this a try. :)ReplyDelete
Happy Birthday Pepy.
This is beautiful Shulie! Very similar to the recipe I make and similar to my grandmother's -though I think she only used sugar, no honey. I am growing very fond of using honey as a sweetener in many things and will give this a try. I am not a confident baker, but have succeeded more than once with challah. And I love them round. Beautiful, beautiful job Shulie!ReplyDelete
The challah looks gorgeous!ReplyDelete
looks wonderfully deliciousReplyDelete
What a beautiful loaf of challah. Just made it myself for the first time and fell in love :).ReplyDelete
- AnonymousJune 27, 2011 at 9:54 PM
Hi there -- how do you braid a round challah like this? I've mastered a few standard variations, but the round ones stump me!ReplyDelete
Thank you Nellie and Tanvi, yep raw honey is appearing on regular supermarkets nowadays which makes me happy!! :) Tanvi yeast dough, especially challah is super easy. TY An, this one is a must!! Aww Orly you grandmother's recipe?! How special!!Share it if you can sometime:).TY Angie, Torviewtoronto & Xiaolu yay your first loaf?! Be warned it's addictive!! :) @KosherCamambert nice to meet you!! I get stumped by 5 or 6 braid challah still practicing, Round challahs are super easy. Braid a three braid challah then roll as a snail and tuck edges gently underneath loaf. Easy peasyReplyDelete
I seriously drool whenever I see a loaf of bread, I just LOVE bread! Your Challah looks so gorgeous, and I love love the sesame seeds on top! Hugs, TerraReplyDelete


text:
Item #: AC0831
All Products
(43 Total)
View by Size:
Getting , please wait.
|Lugosi, in his most famous role, plays a vampire who terrorizes the countryside in his search for human blood. From Bram Stoker's novel. Although short of a masterpiece due to slow second half, deservedly rated a film classic. What would Halloween be like without this movie? Sequelled by "Dracula's Daughter." The 1999 re-release was re-scored by Philip Glass and performed by the Kronos Quartet.
|Directed by:
|Tod Browning
|Mark Huffam.
|Bela Lugosi, David Manners, Dwight Frye, Helen Chandler, Edward Van Sloan, Frances Dade, Herbert Bunston


text: Meet big booty Pondicherry singles on the web's largest specialty dating site, Big Booty Dating. Big Booty Dating is a free dating website that features women with big booties, all listings are anonymous and registration only takes a few seconds. Click a city within Pondicherry from the list below or scroll to the left to view listings of big booty women directly.


text:
Gentoo Installation Guide
Orginally found on the Gentoo Wiki, the GNU Free Documentation license allows me to copy/paste it here.
This guide should help you install and configure the proprietary graphics drivers from ATI. This guide applies for ALL versions of fglrx - it was made before the (rather dramatic) 8.8.25 January 05 release, but it is maintained such that all versions should work.
- Note: If you are using an ATI 7500 Mobility (or such card that isn't supported by the ati-drivers) this HOWTO will not help. Instead use the ATI kernel drivers. See also: http://forums.gentoo.org/viewtopic-p-2137276.html#2137276
Kernel Configuration
Get into menuconfig (cd /usr/src/your-kernel && make menuconfig) and check the following:
|Code: menuconfig
Loadable Module Support ---> [*] Enable loadable module support [*] Module unloading Processor type and features ---> [*] Enable VM86 support [*] MTRR (Memory Type Range Register) support Bus options (PCI etc.) ---> [*] Message Signaled Interrupts (MSI and MSI-X) Device Drivers ---> Graphics Support ---> <M> /dev/agpgart (AGP Support) <M> Your_AGP_Chipset_Here [ ] Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) Graphics support ---> [ ] Support for framebuffer devices Kernel Hacking ---> [ ] Kernel debugging
Sync your kernel menuconfig with the selected portions posted here. (note: you can compile /dev/agpgart & your agp chipset [most likely ati-agp] into the kernel if you want.)
Please be aware that -mm and -rc(1,2,3,4,...) kernels often break fglrx due to unexpected changes in syntax, etc. If you want to use ati-drivers, use the stock gentoo-sources or at the very least, a STABLE 2.4 or 2.6 kernel!
Don't forget to compile, install, and reboot into the kernel. Directions for this are beyond the scope of this file; if you need help recompiling the kernel, click here.
Grabbing a Driver Set
Note: All next commands at a shell must execute as root!
For installation it will be easier to drop out of X to a command prompt. Do this using whatever command your Window Manager uses. I use fluxbox so it's just rightclick -> fluxbox menu -> exit. For KDE or GNOME it's probably just a matter of logging out. When all else fails, hit CTL+ALT+BACKSPACE to kill the X server ungracefully.
If the X server only reboots or for some reason you've disabled this hotkey bring the system run level down with:
init 3
There is also the possibility to stop the xdm service:
/etc/init.d/xdm stop
To prevent start at next reboot prevent the run script from execution with:
rc-update del xdm
If you have not already done it recently, start by synchronizing your portage tree:
emerge --sync
Now let's install the drivers. Note: ati-drivers-extra is not available anymore.
emerge -av ati-drivers
The next step is switch to the ATi OpenGL subsytem:
eselect opengl set ati
Configuration of X
First, move your old configuration file (or delete it).
cd /etc/X11 mv xorg.conf xorg.conf.old
This point was not necessary at my last tests, but do this if something failed. Make a standard config file:
cd /etc/X11 Xorg -configure cp xorg.conf.new xorg.conf
Now lets make aticonfig the rest of configuration.
For a single screen:
aticonfig --initial --input=/etc/X11/xorg.conf
For a dual head, second screen is {left|right|above|below}
aticonfig --initial=dual-head --input=/etc/X11/xorg.conf --screen-layout={left|right|above|below}
Adapt input with your path to xorg's conf file
If for some reason this command doesn't work, then try manually executing from its default location:
/opt/ati/bin/aticonfig [...]
Test your graphics card
Now, let's get back into X.
Or start with init script and login:
/etc/init.d/xdm start
Open up a command prompt and run:
If the OpenGL vendor string says "ATI Technologies," then congrats! You've got the drivers working and hardware acceleration going great. If not...read on...
Test latest drivers
Getting the latest drivers will probably mean unmasking them before emerging.
echo "x-drivers/ati-drivers ~a >> /etc/portage/package.keywords
Replace <~arch> with your system architecture; it's going to be either ~6 or ~a4, the only two CPU architectures supported by the ATI driver.
Wrong resolution
Often the EDID information can't read correctly from monitor. Therefore first remove all kvm switches, hdmi switches or hdmi matrices between your monitor and output of your graphics card. At the moment (ati-drivers-10.12) the options "NoDDC", "UseEdidFreqs" "0", "IgnoreEDID" "on" seems to be not working. Also Option "CustomEDID" do not work with fglrx driver.
Config Files
By default, the driver uses the Internal AGPGART. Sometimes the internal one doesn't work, and you will have to use the one provided with the kernel. Search your xorg.conf for the line that has the option "UseInternalAGPGART." Simply change the "yes" to "no."
|File: xorg.conf
Option "UseInternalAGPGART" "no"
Now simply add the modules to /etc/modules.autoload.d/kernel-2.x where x is your kernel version.
Add the following (ORDER IS VERY IMPORTANT);
|File: /etc/modules.autoload.d/kernel-2.x
agpgart intel-agp # change intel-agp to your chipset. eg: via-agp, nvidia-agp sis-agp. fglrx
Finally, run
Then you can reboot and everything should work. If you have are having problems, check dmesg and /var/log/Xorg.0.log for more info.
Blank screen or monitor turning off after startx
Versions of ati-drivers >= 8.16.20 (and probably <= 8.20.8) have an issue with this that's easily corrected by inserting:
|File: xorg.conf
Option "ForceMonitors" "notv"
in the device section of xorg.conf (discussed here: http://bugs.gentoo.org/show_bug.cgi?id=103028)
Check if you have a non-DDC monitor connected via VGA/HD15 connector. If so change your xorg.conf:
|File: xorg.conf
# Option "DesktopSetup" "0x00000000" Option "MonitorLayout" "NONE, CRT" Option "IgnoreEDID" "off" Option "HSync2" "30-85" Option "VRefresh2" "50-160" # Option "ScreenOverlap" "0"
where HSync2 and VRefresh2 are your monitor parameters.
Also, try changing the MonitorLayout option. The default is "AUTO, AUTO", which is to say X will attempt to autodetect what kind of monitor you've got on the first and second display heads. This can theoretically fail (though I have never observed it). Try changing it around a bit. For example, if you have an LCD and no secondary monitor, change the line to read:
|File: xorg.conf
Option "MonitorLayout" "TMDS, NONE"
if you have a CRT, simply replace "TMDS" with "CRT".
Crashes on startup
If you are unable to use any 3d applications and get this error instead:
FGLTexMgr: open of shared memory object failed (Function not implemented) __FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!! fglX11AllocateManagedSurface: __FGLTexMgrCreateObject failed!! FGLTexMgr: open of shared memory object failed (Function not implemented) __FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!! fglX11AllocateManagedSurface: __FGLTexMgrCreateObject failed!! FGLTexMgr: open of shared memory object failed (Function not implemented) __FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!!
Then you do not have tmpfs mounted on /dev/shm, which the driver requires. Make yourself sure you have tmpfs support compiled into kernel. It's under
File systems --> Pseudo filesystems --> [*] Virtual memory file system support (former shm fs)
To mount this, add to following line to /etc/fstab (if it isn't there already):
|File: /etc/fstab
tmpfs /dev/shm tmpfs defaults 0 0
Then just do a:
mount /dev/shm
If the drivers still crap out on you, or for example you get a black screen on X init, try going into your system BIOS and change graphics-related stuff around. Believe it or not, for me my 9800 gives a black screen on X init if I have the AGP Aperture set at anything other than 128MB. I don't know what causes this, and I don't care; I'm just relating to you how I overcame my problem ;)
Also, whenever you update your compiler, you must recompile your kernel otherwise you won't be able to insert the fglrx module. Note that recompiling your kernel means you must also unmerge/emerge ati-drivers!
Duplicate symbol errors in X log
If you are unable to start X or X fails to load the fglrx driver and you have multiple symbol errors in your Xorg log, chances are that you have compiled X with the dlloader flag. This flag can not be used with the fglrx driver. To fix this problem, remove the dlloader flag by editing your /etc/portage/package.use file as follows:
|File: /etc/portage/package.use
x11-base/xorg-x11 -dlloader
Now re-emerge the xorg-x11 package and reinstall the fglrx driver.
Crashes on the exit of X.org / X won't shutdown
Perform the following if you can get the fglrx drivers working with hardware acceleration, but are suffering from a complete system crash when trying to quit X. You should boot into your system, login, then start on this. You don't need to boot into X, and shouldn't need to edit your xorg.conf file (as fglrx is already setup as the driver and working)
You've emerged the "stable" version of the ati-drivers, these are out of date -- remove them (emerge --unmerge ati-drivers), to add the most recent you should either add them to the keywords file (/etc/portage/package.keywords) or emerge your local ebuild (emerge /usr/portage/x11-drivers/ati-drivers/ati-drivers-8.22.5.ebuild) if you're told it requires a dependency, emerge the local e-build for that, then try again. (usually eselect-opengl is required.) Once you have the most recent ati-drivers emerged, run (eselect opengl set ati). Now you can (startx) and hopefully quit without any problems.
glxinfo says "error: failed to open DRM: Operation not permitted"
If a check with the glxinfo fails for ordinary users though works fine for root it might be related to filepermissions of the device-file. Here is how to solve it:
Make sure that the filepermissions on the card-device allows the video-group to read and write. The common group in gentoo with X is "video". All normal users should be part of this group. Also, the device must have permissions for this group to read and write the card-device.
Check the permissions on the card-device:
root:/#ls -lcF /dev/dri/card0 crw-rw---- 1 root root 226, 0 Oct 5 16:19 /dev/dri/card0
It can be changed with:
root:/dev/dri#chgrp video card0
Check if user is part of video:
paddlaren:~>id paddlaren uid=1000(paddlaren) gid=1000(paddlaren) groups=1000(paddlaren),10(wheel),11(floppy),18(audio),19(cdrom),80(cdrw),85(usb),100(users),35(games)
To add a user to the video-group:
root:~#gpasswd -a my_user video paddlaren:~>id paddlaren uid=1000(paddlaren) gid=1000(paddlaren) groups=1000(paddlaren),10(wheel),11(floppy),18(audio),19(cdrom),27(video),80(cdrw),85(usb),100(users),35(games)
Logoff and on to ensure that the membership of the group is known to the system.
Some differences to open source driver "radeon"
This information's was extracted from the file /var/log/Xorg.0.log.
Detected outputs
The naming looks better at radeon. See example for HD5770 (1xHDMI, 2xDVI, 1x DisplayPort):
fglrx: DFP1 (physical HDMI-0 on radeon?), DFP2 (physical DVI-0 on radeon?), DFP3 (physical DVI-1 on radeon!), DFP4 (physical DisplayPort-0 on radeon?), CRT1, CRT2
radeon: HDMI-0, DVI-0, DVI-1, DisplayPort-0
See Also
- ATi Unofficial Bugzilla (occasionally monitored by ATi personnel)
- Check out user Wedge_'s excellent ATI Radeon FAQ here


text:
TDEParts are elaborate widgets with a user-interface defined in terms of actions (menu items, toolbar icons). The tdeparts library also provides a common framework for TDE applications which want to use parts.
This tutorial explains how to create simple TDEParts and integrate them into applications.
The main idea behind components is reusability. Often, an application wants to use a functionality that another application provides. Of course, the way to do that is simply to create a shared library that both applications use. But without a standard framework for this, it means both applications are very much coupled to the library's API and will need to be changed if the applications decide to use another library instead. Furthermore, integrating the shared functionality has to be done manually by every application.
A framework for components enables an application to use a component it never heard of - and wasn't specifically adapted for - because both the application and the component comply to the framework and know what to expect from each other. An existing component can be replaced with a new implementation of the same functionality, without changing a single line of code in the application, because the interface remains the same.
The framework presented here concerns elaborate graphical components, such as an image viewer, a text editor, a mail composer, and so on. Simpler graphical components are usually widgets; I refine this distinction in the next section. Non-graphical components, such as a parser or a string manipulation class, are usually libraries with a specific Application Programming Interface (API).
Similar frameworks for graphical components exist for a different environment, such as IBM and Apple's OpenDoc, Microsoft's OLE, Gnome's Bonobo, and KDE's previous OpenParts.
The Difference Between Components and Widgets
A TDE component is called a part, and it encapsulates three things: a widget, the functionality that comes with it, and the user interface for this functionality.
The usual example is a text editor component. Its widget is a multi-line text widget; its functionality might include Search And Replace, Copy, Cut, Paste, Undo, Redo, Spell Checking. To make it possible for the user to access this functionality, the component also provides the user interface for it: menu items and toolbar buttons.
An application using this component will get the widget embedded into a parent widget it provides, as well as the component's user interface merged into its own menubar and toolbars. This is like embedding a MS Excel document into MS Word, an example everybody knows, or when embedding a KSpread document into KWord, an example that will hopefully become very well known as well.
Another example of very useful component is an image viewer. When using Trinity's file manager (Konqueror), clicking an image file opens the image viewer component from KDE's image viewer (KView) and shows it inside Konqueror's window. The part provides actions for zoom in, zoom out, rotate, reset to original size, and orientation.
So, when do you use a part and when do you use a widget?
Use a widget when all the functionality is in the widget itself and doesn't need additional user interface (menu items or toolbar buttons). A button is a widget, a multi-line edit is a widget, but a text editor with all the functionality previously mentioned is a part. As you can see there is no problem choosing which one to use.
The Trinity Component Framework
KParts is the framework for TDE parts, based on standard TDE/TQt objects, such as TQWidget and KTMainWindow. It defines a very simple set of classes: part, plugin, main window and part manager.
- A part, as previously described, is the name for a TDE component. To define a new part, you need to provide the widget, of course, but also the actions that give access to the part's functionality and an XML file that describes the layout of those actions in the user interface.
- A plugin is a small piece of functionality that is not implemented by an embedded widget, but that defines some actions to be merged in the application's user interface, such as the calculator plugin for KSpread. It can be graphical, however, like a dialog box or a separate window popping up, or it can be an application-specific plugin and act on the application itself - a spell checker for a word processor, for example.
- A KParts mainwindow is a special KTMainWindow whose user interface is described in XML and with actions so that it is able to embed parts. The reason it has to use XML is because merging user interfaces is implemented by merging XML documents.
- A part manager is a more abstract object whose task is to handle the activation and the deactivation of the parts. Of course, this is useful only for mainwindows that embed more than one part, such as KOffice documents (where the main document is also a part), or Konqueror (where each view is a part). KWrite, which embeds only its own part, doesn't need a part manager.
In the following sections, you create a part for a simple text editor, a main window able to embed an existing PostScript-viewer part, a part manager to embed more than one part, and even a plug-in; thus, you will know everything about KParts.
Describing User Interface in XML
The XML file used by a part or a main window provides only the layout of the actions in the user interface. The actions themselves are still implemented in the code, with slots, as usual.
More precisely, the XML file describes the layout of the menus and submenus in the menubar (only one menubar is always present) and the menu items within those menus, as well as the toolbars and the toolbar buttons. The menubar, menus, and toolbars are containers; menu items and toolbar buttons are the actions.
A sample XML file for a main window looks like this:
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
<kpartgui name="Konqueror" version="1">
<Menu name="file"><Text>&File</Text>
<Action name="find"/>
<Action name="print"/>
<Action name="close"/>
<Menu name="edit"><Text>&Edit</Text>
<Action name="cut"/>
<Action name="copy"/>
<Action name="paste"/>
<Action name="trash"/>
<Action name="del"/>
<ToolBar fullWidth="true" name="mainToolBar"><Text>Main</Text>
<Action name="cut"/>
<Action name="copy"/>
<Action name="paste"/>
<Action name="print"/>
<Action name="animated_logo"/>
<ToolBar name="locationToolBar"><Text>Location</Text>
<Action name="toolbar_url_combo"/>
The DOCTYPE tag contains the name of the main element, which should be set to kpartgui. The top-level elements are
MenuBar and
ToolBar, as expected. In the
MenuBar, the menus are described. Note that they have a name, used for merging later on, and a text, which is displayed in the user interface, possibly translated. Because this is XML, & has to be encoded as &. Inside a
Menu tag, the actions, some separators, and possibly submenus are laid out. The action names are very important because they are used to match the actions created in the code.
The toolbars are then described. Note that the main toolbar has to be called mainToolBar because its settings can be different. TDEToolBar takes care of adding text under icons for this particular toolbar, if the user wants them. Actions are laid out in the toolbars the usual way. The text for a toolbar is used where the name of the toolbar is to be displayed to the user, possibly translated, such as the toolbar editor.
Another important tag is the
Merge tag. This tag tells the framework where the actions of the active part - and the plug-ins - should be merged in a given container. As you can see, this XML file inserts the part's actions before a separator in the Edit menu, whereas it doesn't specify a position for items in the File menu. This means that if the part defines actions for the File menu, they will be appended to the File menu of the main window.
The merging happens when a part simply uses the same menu name or toolbar name as the main window.
If a
Merge tag is specified as a child of the
MenuBar tag, the merging happens at that position; otherwise, it takes place on the right of the existing menus. The toolbar allows merging of the part's actions as well, based on the same principle.
Merge tag can also appear in a part's XML. It will be used for merging plug-ins or for more advanced uses; the merging engine can merge any number of "inputs" and it is possible to define specific inputs, such as the one Konqueror defines for its View menu.
Another advanced use of the
Merge tag is to set a name attribute for it. For instance, if another XML file wants to embed a part and any other parts or plug-ins at different positions in a given menu, it can use two merge tags:
<Merge name="MyPart"/>
<Merge />
Using the name attribute for the
Merge tag allows you to control at which position each XML fragment is merged, but it is usually unnecessary.
Read-Only and Read/Write Parts
The framework defines three kind of parts. The generic class is Part and is the one that provides the basic functionality for a part: widget, XML, and actions.
Read-Only Parts
The class ReadOnlyPart provides a common framework for all parts that implement any kind of viewer. A text viewer, an image viewer, a PostScript viewer, and a Web browser are all viewers. What they have in common is that they all act on a URL, and in a read-only way. It has always been a design decision in TDE to provide network transparency wherever possible, which is why most TDE applications use URLs, not only filenames. The framework defines methods for opening a URL, closing a URL, and above all provides network transparency - by downloading the file, if remote, and emitting signals (started, progression, completed). The part itself has to provide only
openFile(), which opens a local file.
This common framework for read-only parts enables applications to embed all viewers the same way and to better control those parts. For instance, when Konqueror uses a read-only part to display a file, it can make it open the file using
openURL() and get all the progress information from the part. All this is not available in the generic Part class.
Read-Write Parts
The third kind of part is the ReadWritePart, which is an extension of the read-only one, to which it obviously adds the possibility to modify and save the document. This is the one used by a text editor part such as KWrite's, as well as all KOffice parts.
For read/write parts, the framework provides the other half of the network transparency - re-uploading the document when saving, for remote files. A read/write part must also know how to act read-only, in case it is used as a read-only part. This is what happens when embedding KWrite or KOffice into Konqueror to view a text file, without being allowed to edit the file. More generally, any editor can be and must know how to be a viewer, as well.
Creating a Part
In this section, you create a very simple part for a text editor. If you have closely followed the previous section, you know that the part should inherit KParts::ReadWritePart.
At this point, it is a very good idea to read kparts/part.h and the official tdeparts classes documentation. This tells you that a read/write part implementation has to provide the methods
openFile() and
The task of
openFile() is obviously to open a local file, which the framework has previously downloaded for us in case the URL that the user wants to open is a remote one. In this case, the file you open is a temporary local file.
saveFile(), the part saves to the local file, and in case it's a temporary file, the framework takes care of uploading the new file.
You can now sketch the header file for your part, which is called NotepadPart (see Listing 13.2).
notepad_part.h: Header of the NotepadPart Class
1#ifndef __notepad_h__
2#define __notepad_h__
4#include <tdeparts/part.h>
6class TQTextEdit;
8class NotepadPart : public KParts::ReadWritePart
12 NotepadPart( TQWidget * parent, const char * name = 0L );
13 virtual ~NotepadPart() {}
15 virtual void setReadWrite( bool rw );
18 virtual bool openFile();
19 virtual bool saveFile();
21protected slots:
22 void slotSelectAll();
25 TQTextEdit * m_edit;
26 TDEInstance *m_instance;
The parent passed to the constructor is both the parent of the widget and the parent of the part itself, so that both get destroyed if the parent is destroyed. Note that having the same parent is not mandatory. If they have different parents, the framework deletes the widget if the part is destroyed and deletes the part if the widget is destroyed.
The class members are a TQTextEdit (the multi-line widget from TQt), and a TDEInstance. An instance enables access to global TDE objects, which can be different from the ones of the application. The application's configuration file and the one of any other instance is different, as well as the search paths for
locate(), and so on. In TDEParts, this is used to locate the XML file describing the part, which is usually installed into share/apps/instancename/.
In addition, you define a slot,
slotSelectAll(), to be connected to the action your part provides.
The corresponding XML file for the part NotepadPart is listed in Listing 13.3 and defines its GUI by an action named
selectall, to be inserted into the menu Edit in the menubar. Note that the text for the Edit menu is specified, which is mandatory even if main windows usually specify it, because it has to work even if a main window doesn't have an Edit menu on its own. So the rule is simple: always provide a text for all menus.
notepadpart.rc: XML Description of the Notepad Part's User Interface
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
<kpartgui name="NotepadPart" version="1">
<Menu name="Edit"><Text>&Edit</Text>
<Action name="selectall"/>
<StatusBar/>, because Konqueror already provides a status bar. If you are writing a part for integration in both Konqueror and your own application/shell, opt to provide a status bar in your application instead.
An important task in the definition of a part is its constructor. It must at least define the instance, the widget, the actions, and the XML File. The constructor for this example could be as shown below:
notepad_part.cpp: Constructor
1NotepadPart::NotepadPart( TQWidget * parent, const char * name )
2 : KParts::ReadWritePart( parent, name )
4 TDEInstance * instance = new TDEInstance( "notepadpart" );
5 setInstance( instance );
7 m_edit = new TQTextEdit( parent, "textedit" );
8 m_edit->setFocus();
9 setWidget( m_edit );
11 (void)new TDEAction( i18n( "Select All" ), 0, this,
12 SLOT( slotSelectAll() ), actionCollection(), "selectall" );
13 setXMLFile( "notepadpart.rc" );
15 setReadWrite( true );
After calling the parent constructor with parent and name, you create an instance, named notepadpart, and declare it to the framework using
setInstance(). This is a temporary solution; you'll see later how to use a library-factory's instance. Then you create the multi-line edit widget, give it the focus, and declare it as well, using
The next step is to create the actions that your part provides. The
selectall action is given a translated label, is connected to
slotSelectAll(), and is created as a child of the action collection that the framework provides. This is important, because it's the only way to make it find the action later on, when parsing the XML file. This is why you don't even need to store the action in a variable, unless you want to be able to enable or disable it later.
You also need to give the framework the name of the XML file describing the part's GUI. As mentioned previously, it is usually installed into share/apps/instancename/, and in this case, you simply pass the filename with no path. It is also possible, but not recommended, to install the XML file anywhere else and provide a full path in
Finally, the part is set to read/write mode. Read/write parts feature the setReadWrite() call, which enables you to set the read/write mode on or off. Most parts should reimplement this method to enable or disable anything that modifies the part, TDEActions as well as any direct modification provided by the widget itself. The reimplementation of
setReadWrite() for the NotepadPart is shown below:
notepad_part.cpp: Implementation of setReadWrite
void NotepadPart::setReadWrite( bool rw )
m_edit->setReadOnly( !rw );
if (rw)
connect( m_edit, SIGNAL( textChanged() ), this, SLOT( setModified() ) );
disconnect( m_edit, SIGNAL( textChanged() ), this, SLOT( setModified() ) );
ReadWritePart::setReadWrite( rw ); // always call the parent implementation
In the example, there are no actions to disable, but the multiline widget has to be set to its read-only mode.
The connection to
setModified(), done in read/write mode only, enables the framework to keep track of the state of the document. When closing a document that has been modified, the framework automatically asks whether it should save it and allow you to cancel the close. Note that to make all this work, you just needed to connect a signal when the part is in read/write mode and disconnect it when it's in read-only mode. This avoids warnings when a loading a file, which changes the text.
It might seem a bit painful to have to handle both read/write and read-only mode, but doing this gives for free the possibility to embed the part as a viewer, in Konqueror, for instance, so it's usually worth doing.
Your part is created; you need to make it useful. The method that all read-only parts - and by inheritance, all read/write parts as well - must reimplement is the
openFile() method. This is where a part opens and displays the local file, whose full path is provided in the member variable m_file, and which the framework downloaded from a remote location first, if necessary. Because your part is a text viewer, all it has to do is read the file into a TQString and set the multi-line widget's text from it:
notepad_part.cpp: Implementation of
1bool NotepadPart::openFile()
3 TQFile f(m_file);
4 TQString s;
5 if ( f.open(IO_ReadOnly) )
6 {
7 TQTextStream t( &f );
8 while ( !t.eof() ) {
9 s += t.readLine() + "\n";
10 }
11 f.close();
12 }
13 m_edit->setText(s);
15 return true;
The last thing you need to do is, of course, to provide saving; otherwise, the user will not like it! All read/write parts have to reimplement
saveFile() to save the document to m_file, as shown below. Note that the framework takes care of Save As (changing the URL to Save To), as well as uploading the saved file, if necessary.
notepad_part.cpp: Implementation of
1bool NotepadPart::saveFile()
3 if ( !isReadWrite() )
4 return false;
5 TQFile f(m_file);
6 TQString s;
7 if ( f.open(IO_WriteOnly) ) {
8 TQTextStream t( &f );
9 t << m_edit->text();
10 f.close();
11 return true ;
12 } else
13 return false;
You know how to create a part now. But currently, it can be used only by linking directly to its code. Although this is enough in some cases, such as KWrite's part embedded by KWrite itself, it is much more flexible to provide dynamic linking to the library containing the part. This is not directly related to KParts, but it is necessary to make it possible for any application to use the part.
The first step is to compile the part in a shared library, which is really simple using automake. The relevant portion of Makefile.am is shown below:
Extract from Makefile.am
This warning was placed on 2023/10/5 . (Reason: Automake rules)
lib_LTLIBRARIES = libnotepad.la libnotepad_la_SOURCES = notepad_part.cpp notepad_factory.cpp libnotepad_la_LIBADD = $(LIB_KFILE) $(LIB_KPARTS) libnotepad_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN)
Your part is now available in a shared library, but this is not enough. You must provide a way for anybody opening that library dynamically to create a part. This is done using a factory, derived from KLibFactory, which you'll do in the class NotepadFactory. An application willing to open a shared library dynamically uses the class KLibLoader, which takes care of locating the library, opening it, and calling an initialization function - here
init_libnotepad(). This function creates a NotepadFactory and returns it to KLibLoader, which can then call the create method on the factory. This means that all you need to do in the library itself is define
init_libnotepad() and the NotepadFactory.
The header for the factory is the one shown below:
notepad_factory.h: Header File for NotepadFactory
1#include <klibloader.h>
2class TDEInstance;
3class TDEAboutData;
4class NotepadFactory: public KLibFactory
8 NotepadFactory( TQObject * parent = 0, const char * name = 0 );
9 ~NotepadFactory();
11 // reimplemented from KLibFactory
12 virtual TQObject * create( TQObject * parent = 0, const char * name = 0,
13 const char * classname = "TQObject",
14 const TQStringList &args = TQStringList());
16 static TDEInstance * instance();
19 static TDEInstance * s_instance;
20 static TDEAboutData * s_about;
As required by KLibFactory, your factory implements the create method, which creates a Notepad part and sets it to read/write mode or read-only mode, depending on whether the classname is KParts::ReadWritePart or KParts::ReadOnlyPart.
It also features a static instance, which is used in the part, instead of creating your own instance for each part. It is static because usually there is only one instance per library.
This means the code of notepad_part.cpp should be modified to call
setInstance( NotepadFactory::instance() ); instead of creating its own instance.
The implementation for the NotepadFactory is shown below:
notepad_factory.cpp: NotepadFactory Implementation.
1#include "notepad_factory.h"
3#include <tdelocale.h>
4#include <tdeinstance.h>
5#include <tdeaboutdata.h>
6#include <kstandarddirs.h>
8#include "notepad_part.h"
10extern "C"
12 void* init_libnotepad()
13 {
14 return new NotepadFactory;
15 }
18TDEInstance* NotepadFactory::s_instance = 0L;
19TDEAboutData* NotepadFactory::s_about = 0L;
21NotepadFactory::NotepadFactory( TQObject* parent, const char* name )
22 : KLibFactory( parent, name )
28 delete s_instance;
29 s_instance = 0L;
30 delete s_about;
33TQObject* NotepadFactory::create( TQObject* parent, const char* name,
34 const char* classname, const TQStringList & )
36 if ( parent && !parent->inherits("TQWidget") )
37 {
38 kdError() << "NotepadFactory: parent does not inherit TQWidget" << endl;
39 return 0L;
40 }
42 NotepadPart* part = new NotepadPart( (TQWidget*) parent, name );
43 // readonly ?
44 if (TQCString(classname) == "KParts::ReadOnlyPart")
45 part->setReadWrite(false);
47 // otherwise, it has to be readwrite
48 else if (TQCString(classname) != "KParts::ReadWritePart")
49 {
50 kdError() << "classname isn't ReadOnlyPart nor ReadWritePart !" << endl;
51 return 0L;
52 }
54 emit objectCreated( part );
55 return part;
58TDEInstance* NotepadFactory::instance()
60 if( !s_instance )
61 {
62 s_about = new TDEAboutData( "notepadpart",
63 I18N_NOOP( "Notepad" ), "2.0pre" );
64 s_instance = new TDEInstance( s_about );
65 }
66 return s_instance;
69#include "notepad_factory.moc"
The implementation is a bit long but contains nothing complex. Basically, you define the function that is the entry point of the library,
init_libnotepad(). It needs to be linked as a C function to avoid C++ name mangling. C linkage means that the symbol in the library will match the function name.
Then you define the NotepadFactory. The create method checks that the parent is a widget because this is needed for your part (remember, you create your widget with the parent widget given as an argument to the constructor). After creating the part, it has to emit objectCreated so that the library loader can do a proper reference counting; it automatically unloads the library after all objects created from it have been destroyed.
instance() method returns the static instance, creating it first, if necessary. To create an instance, I recommend that you give it a KAboutData pointer. This gives some information about the instance representing the library (here an instance name, a translatable description of it, and a version number). You can add a lot more information in the TDEAboutData object, such as authors, home page, and bug-report address. See the documentation for details.
The standard Trinity dialogs such as the Bug Report Dialog and the About Dialog use the data stored in TDEAboutData to show information about the current program, but in the future they will probably be improved to show information about the active part as well, which can have completely different About data from the application.
Creating a TDEParts Application
If an application wants to use parts and the GUI merging feature, its own GUI needs to be defined in XML. The top level windows of the application will then use the class KParts::MainWindow.
Note that it's also possible to use a part in a standard application, using KTMainWindow, but then no GUI merging happens. In this case, only the functionality provided by the widget and by the part API are available, so the application has to create the GUI for part's functionality itself, or the part has to provide it through context menus. In any case, it is much less flexible.
As an example of a window based on KParts::MainWindow, you are going to create a PostScript viewer very easily, by embedding the part provided by KDE's PostScript viewer, KGhostView.
The first thing to look at is the main window's GUI; an example is given below:
ghostviewtest_shell.rc: The main window's GUI
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
<kpartgui name="KGVShell" version="1">
<Menu name="file"><text>&File</text>
<Action name="file_open"/>
<Action name="file_quit"/>
<ToolBar name="KGV-ToolBar"><text>KGhostView</text>
<Action name="file_open"/>
<Action name="file_quit"/>
By analogy with a command line's shell, a main window is often called a shell. In its GUI you define the actions that will always be shown, whichever part is active. The listing for a simple TDEParts main window is shown below.
ghostviewtest.h: Header for a simple TDEParts main window
1#include <tdeparts/mainwindow.h>
3class Shell : public KParts::MainWindow
7 Shell();
8 virtual ~Shell();
10 void openURL( const KURL & url );
12protected slots:
13 void slotFileOpen();
16 KParts::ReadOnlyPart *m_gvpart;
The mainwindow inherits KParts::MainWindow instead of KTMainWindow. Nothing else is required; the
openURL() here is just so that
main() can call
openURL() on the window. The URL could be passed to the constructor instead.
The code for the mainwindow embedding the KGhostView part is part of the TDEParts examples, which can be found under tdelibs/tdeparts/tests/ghostview*, so the listing below only shows the relevant lines of ghostview.cpp.
Excerpt of ghostviewtest.cpp: Implementation of the simple TDEParts main window
3 setXMLFile( "ghostviewtest_shell.rc" );
5 TDEAction * paOpen = new TDEAction( i18n( "&Open file" ), "fileopen", 0,
6 this, SLOT( slotFileOpen() ), actionCollection(), "file_open" );
8 TDEAction * paQuit = new TDEAction( i18n( "&Quit" ), "exit", 0,
9 this, SLOT( close() ), actionCollection(), "file_quit" );
11 // Try to find libkghostview
12 KLibFactory *factory = KLibLoader::self()->factory( "libkghostview" );
13 if (factory)
14 {
15 // Create the part
16 m_gvpart = (KParts::ReadOnlyPart *)factory->create( this, "kgvpart",
17 "KParts::ReadOnlyPart" );
18 // Set the main widget
19 setView( m_gvpart->widget() );
20 // Integrate its GUI
21 createGUI( m_gvpart );
22 }
23 else
24 kdFatal() << "No libkghostview found !" << endl;
29 delete m_gvpart;
32void Shell::openURL( const KURL & url )
34 m_gvpart->openURL( url );
A mainwindow is created much like a part, with an XML file and actions. To find a part, it uses KLibLoader to get the KLibFactory for the library. A flexible application would use .desktop files for this and TDEIO's trader for selecting the user's preferred component, but for the sake of simplicity, open the library by its name here. After the factory has been created, the mainwindow makes it create a ReadOnlyPart, and because here you have only one part in the window, the part's widget is set as the main widget of the window with setView. Then a mainwindow needs to call
createGUI() to make the framework create the GUI, merging the actions of the mainwindow with those of the active part. A mainwindow with no part will simply call
Using this mainwindow, for instance from
main(), is as simple as
Shell *shell = new Shell;
shell->openURL( url );
Compile tdelibs/tdeparts/tests/ghostviewtest to test this simple example of how to embed a part.
Embedding More Than One Part in the Same Window
The previous example showed how to embed a part as the single widget of a window. TDEParts also makes it possible to embed more than one part in the same window, and it handles the activation of a part when the user clicks it (or uses Tab to give it the focus). This is the task of the PartManager.
To display more than one part in a window, the solution is usually to use a splitter, or even nested splitters, such as in Konqueror. KOffice has another way of embedding several parts - by using frames for the child parts - but it still uses PartManager.
Now modify the example to make it display, in addition to the PostScript document, the PostScript code for it. To display the text, the application uses the Notepad part in read-only mode. The two widgets will be hosted by a splitter.
Displaying raw PostScript is not very useful, but this example could, for instance, be turned into an application showing the LaTeX source and the PostScript result side by side.
ghostviewtest.h needs to be modified slightly to add the following private members:
KParts::ReadOnlyPart *m_notepadpart;
KParts::PartManager *m_manager;
TQSplitter *m_splitter;
ghostviewtest.cpp needs to be more modified. To include the PartManager definition, use the following:
#include <tdeparts/partmanager.h>
In the constructor, create the part manager and connect its main signal,
activePartChanged, to your
createGUI slot. This means you don't need to call
createGUI directly; it is called every time the active part changes.
m_manager = new KParts::PartManager( this );
// When the manager says the active part changes,
// the builder updates (recreates) the GUI
connect( m_manager, SIGNAL( activePartChanged( KParts::Part * ) ),
this, SLOT( createGUI( KParts::Part * ) ) );
Then create the splitter and transform the setView statement into the following:
m_splitter = new TQSplitter( this );
setView( m_splitter );
so that the main widget is now the splitter. Both parts need to be created with the splitter as a parent (instead of the window):
KLibFactory *factory = KLibLoader::self()->factory( "libkghostview" );
if (factory)
m_gvpart = (KParts::ReadOnlyPart *)factory->create( m_splitter,
"kgvpart", "KParts::ReadOnlyPart" );
kdFatal() << "No libkghostview found !" << endl;
factory = KLibLoader::self()->factory( "libnotepad" );
if (factory)
m_notepadpart = (KParts::ReadOnlyPart *)factory->create( m_splitter,
"knotepadpart", "KParts::ReadOnlyPart" );
kdFatal() << "No libnotepad found !" << endl;
After the parts are created, they should be added to the part manager. At the same time, you can specify which one should initially be active:
m_manager->addPart( m_gvpart, true ); // sets as the active part
m_manager->addPart( m_notepadpart, false );
Then the splitter can be set to a minimum size, as shown:
m_splitter->setMinimumSize( 400, 300 );
Finally, add the following line to
openURL() to open the same URL in both parts:
m_notepadpart->openURL( url );
As you can see, the main idea is that the mainwindow creates a main widget (here, the splitter), creates all parts inside it, and registers the part to a part manager. Try clicking one part and then the other; each time the active part changes, the GUI is updated (both menus and toolbars) to show the GUI of the active part.
Note also the change in the window caption. This is handled by the Part class, which receives the GUIActivateEvent from the mainwindow when the part is activated or deactivated. To set a different caption for a part, you need to emit setWindowCaption both in
openFile() and in
Creating a TDEParts Plug-in
A plug-in is the way to implement some functionality out of a part but still in a shared library, with actions defined by the plug-in to access this functionality. Those actions, whose layout is described in XML as usual, can be merged in a part's user interface or in a mainwindow's, depending on whether it applies to a part or to an application.
Several reasons exist for using plug-ins. One is saving memory, because the plug-in is not loaded until one of its actions is called, but the main reason is reusability - the same plug-in can apply to several parts or applications. For instance, a spell-checker plug-in can apply to all kinds of text editors, mail composers, word processors, and even presenters.
A plug-in can have a user interface, such as the dialog box for the spell checker, but not necessarily. Plug-ins can also act directly on the part or the application or anything else.
The XML for a spell-checker plug-in is shown below:
<!DOCTYPE kpartgui>
<kpartgui library="libspellcheck">
<Menu name="edit"><Text>&Edit</Text>
<Action name="spellcheck"/>
Note the additional attribute in the main tag: library defines the name of the library to open to find the plug-in. This is because no .desktop file exists for plug-ins. Installing the preceding XML file in partplugins/, under share/apps/notepadpart, automatically inserts the plug-in's action in the NotepadPart user interface.
You know how the plug-in's library will be opened; now you need only to create a factory in the library, as usual, and let it create an instance of the plug-in. Writing the factory, which doesn't even need an instance in the simple case, and the
init_libspellcheck() function will be left as an exercise to the reader.
To define a plug-in, simply inherit KParts::Plugin and add slots for its actions:
#include <tdeparts/plugin.h>
class PluginSpellCheck : public KParts::Plugin
PluginSpellCheck( TQObject* parent = 0, const char* name = 0 );
virtual ~PluginSpellCheck() {}
public slots:
void slotSpellCheck();
In the implementation, you have to create the plug-in actions; no
setXMLFile is here because it has been found by the part already.
Because in this example you are not going to create a real spell checker - a libkspell exists for that - call the action "select current line" and implement that in the slot.
#include "plugin_spellcheck.h"
#include "notepad.h" // this plugin applies to a notepad part
#include <tqtextedit.h>
#include <tdeaction.h>
PluginSpellCheck::PluginSpellCheck( QObject* parent, const char* name )
: Plugin( parent, name )
(void) new TDEAction( i18n( "&Select current line (plug-in)" ), 0, this,
SLOT(slotSpellCheck()), actionCollection(), "spellcheck" );
void PluginSpellCheck::slotSpellCheck()
// Check that the parent is a NotepadPart
if ( !parent()->inherits("NotepadPart") )
kdFatal() << "Spell-check plug-in for wrong part (not NotepadPart)" << endl;
NotepadPart * part = (NotepadPart *) parent();
TQTextEdit * widget = (TQTextEdit *) part->widget();
widget->selectAll(); //selects current line !
Note that to access the part's widget, the plug-in has to assume - and check - that it has been installed for a NotepadPart. This means that you should not install it under another part's directory. But selecting the current line in an image viewer wouldn't mean much anyway.
A more flexible plug-in would instead check and cast the parent to ReadWritePart and then check the type of its widget to be TQTextEdit.
After the presentation of component technology and how to lay out actions using XML, you have seen most of what TDEParts can do: three types of parts, part mainwindows, part manager, plug-ins, as well as how dynamic loading works - library factories and library loader.
You can do other interesting things with parts. Having a part embed itself in Konqueror is very simple; it's just a matter of providing a .desktop file for it, stating that it is a service that implements some servicetypes, which are the mimetypes that the part allows to view, plus the servicetype KParts::ReadOnlyPart. That's it. Konqueror will use the part to view the files of those mimetypes if no other service is set as more preferred in Configure File Types.
To provide better integration with Konqueror, you can also provide a KParts::BrowserExtension for the part, as defined in tdeparts/browserextension.h. This is what makes it possible to save and restore a view in Konqueror's history and for the part to use Konqueror's "standard actions." Examples of parts using the browser extension can be found in KView, KDVI, KGhostView, KWrite and all built-in Konqueror views.
See also
- XParts, a technology which extends TDEParts to write TDE components with almost any toolkit or language or turn existing applications into TDE components quite easily.


text:
From Openmoko
WiFi on the freerunner has some problems, see WiFi Managers.
So I decided to start a project to concentrate all the ideas about an ideal (but simple) GUI applet to manage WiFi connection.
The project is actually only a prealpha prototype to discover issues and implementation solutions. When ideas and needs will be clear it may be reimplemented in a more elegant way and with your preferred toolkit, now I'm using what I know better, C++ and QT with fast and dirty coding style!
It actually manages wpa_supplicant trough dbus and spawns udhcpc directly, replicating some Network Manager features. When a solid rock network manager will be available for the freerunner, and will handle the specific device capabilities/issues, NWA may be migrated to use it's api.
Please partecipate with contributions, ideas, hints as this may become your preferred WiFi manager for a while!!! feel free to edit this or the discussion page, and to contact me by email at nicola.mfb at gmail.com
A supplicant
The main target is to use wpa_supplicant in a decent way, e.g. as a supplicant! You'll add your preferred wifi networks at home, at work, at your friend house and so on, and it will scan silently for them, connect when they are available and show a notification window/sound to alert you.
User has to be able to:
- enable/disable configured networks (for example any open network sometime is not desiderable)
- change the networks priority (for example use any open network only if other are not available)
- add new network manually or from scanning the area
- configure advanced network properties, WPA enteprise, EAP, LEAP, TTLS etc.
Static IP vs DHCP
The user should be able to use dhcp or static ip addresses.
DNS handling
It has to be able to restore some default DNS when exiting dhcp (eg. opendns, last used dns ...), suggestions on possible solutions are appreciated.
System tray applet
A sys tray icon should be showed changing it's aspect to reflect connection status. It should indicate:
- inactive state (wifi disabled)
- scanning
- associated
- complete (associated + authenticated)
- key renewal
- complete + ip address received from dhcp or set manually
- signal strenght when associated
- historical signal strenght (like a graph scrolling every x seconds)
- foreign networks presence
Some special handling is required for Window Managers that does not support sys tray specification (like E17).
Popup messages
Popup transient messages should be showed when:
- connection fully complete, showing the received ip address
- disconnection
- wifi card enabled/disabled
- network found (if not connected)
The last has to be defined better, should you signal a new network only one? only one per session? etc.
Popup has to be associated with sounds to warn the user not looking at the device.
please suggest some free sounds in every format supported by FSO/gstreamer
As alternative some software synthetizer may be used.
The configuration file should be in xml format, a default one will be provided that scan and connect to any open network, so the user may use NWA out of the box. When the user changes settings, the default file is copied in $HOME/.nwa.conf, that one will override the default.
The GUI must be complete but simple and should not allow the user to break the configuration with random clicks, all advanced tasks may be achieved editing the configuration file manually:
- dhcp client to use
- custom scripts to launch at iface up/down, ip received
- ...
Device Integration
NWA prefers FSO frameworkd based distro but should be capable to run on everywhere, actually it works fine on my laptop too.
2.6.29 kernel workaround
On OM 2.6.29 kernels wifi is broken, software putting down the interface (e.g. wpa supplicant in some cases) will break ar6000 module. A workaround has to be implemented and activable in the configuration file.
Power Managment
With some AP the atheros power managment creates problems, NWA should support disabling it.
It has to restore automagically the connection on suspend/resume cycles (the prototype does that without any special code as the nature of how it works).
Development status/issues
Wpa_supplicant dbus interface is not complete, if you quit the program in some hard way (signaling, closing X, etc) network definitions will not be deleted and at the next run NWA will be crazy, some workarounds:
kill wpa_supplicant at startup, it' not nice
implementimplemented a remove/readadd interface to wpa when NWA is starting (it should delete all network definition, to be tested)
bore wpa_supplicant authors to implement the full dbus interfacea new version of dbus interface is on the road
- implements signal handling hooks (howewer a kill -9 will bypass it)
Another problem is that wpa_supplicant when connects to a networks signal only the state change and not the network id or network dbus path. This is a big problem as I would have the dhcp/static ip configuration associated to that and not to the essid as it may be the same between different networks.
Using the bssid to disambiguate the network may not be always possible for example when connecting to two big WDS networks with the same essid and thousand of AP.
Please comment the above problem and suggest alternatives. I'll add dhcp/static ip support when things will be clear
as wpa_supplicant does not signal the connected network we have to retrieve the essid with standard AF_INET ioctl, so qnetutils.cpp has to be improvedqnetutils.cpp now read the essid of the associated network.
The qt stylesheet has to be improved.
A 2.6.29 rude workaround was implemented, when you quit the NWA it does not kill udhcpc and deconfigure eth0 from wpa_supplicant (always remove networks) but simply release the FSO WiFi resources, removing the interface without deconfiguring. It works only sometimes. We may think to rmmod/insmod ar6000 but it's a very crude hack and sometimes kernel opses.
A startup script, launched when supplicant association is complete, is already implemented, it's a crude way to disable power management if needed.
The second problem for static ip support is that I have to study a bit more rtnetlink to implement static ip without calling exeternals command :) in the mean time I'm planning to support
per-network per-essid command file execution and dhcp disabling, so you may use some script to configure the interface with a static address. It should be sufficient for a prototype.
Actually destroying a running thread when application quits leads an "application crashed" on E, I'm not caring of it now a better clean and quit handler has to be implemented.
To play sounds notification spawning a shell sound player may be weight and slow, so I think it's better to use FSO, while to have speech synthesis the script approach may be acceptable,
parameter passing has to be implemented in the configuration file (network name, ip address and so on) just use $IFACE$ and $IP$ when you want it be automagically replaced with their respective values.
It seems as udhcpc when got an ip address set/unset/set_again the ipaddress, this is strange. The problem is not present with dhcpcd. Updates: this happens with udhcpc on a Cisco MDS wifi network and not with common AP.
FSO returns random errors when PlaySound is used while a sound is already played on debian sid there is no default dmix alsa configuration, this has to be declared in NWA prerequisites
Some small coding fixes need to be done, and some stupid comments removed :)
The first prealpha prototype is quite ready, it was developed on debian with Matchbox and matchbox-panel as sys trayer, under E qt balloon sys tray messages are showed in a random position on the screen,
so some special work around is needed a primitive and animated "tooltip" was implemented. Multiple not overlapping message showing are not supported a queue handler has to be implemented.
I preferred to avoid qt sys tray baloon message on not-E wm too, as if the tray icon is in a middle/left position (becouse other tray icon are present), in some cases they are not readable.
Some guys asked for a preview, if you feel adventurous and want to join and test the prototype do the following:
echo "src/gz noko-testing-armv4t http://noko.sourceforge.net/testing/om2009/armv4t" >/etc/opkg/noko-feed.conf opkg install nwa
This was tested only on OM2009 testing 5 + opkg update/upgrade
Please note the not versioning is used so if you want to upgrade you have to:
opkg remove nwa opkg update opkg install nwa
Source is cooming soon.
Using it
NWA should work out of the box at first startup on the freerunner as it has some hardcoded settings in the xml parser and in the default configuration file targeted for the freerunner, it should connect to any open network as one becomes available without further user intervention.
This is only for demonstration pourpose or when you are traveling :), in normal cases you have to add/remove/edit/enable/disable networks.
Adding a network
Go on the "scan page" and click on "scan", after a bit available networks should appear, click on one of them and a wizard dialog will help you to configure the network with every kind of parameter wpa supplicant supports. I was able to add my home wpa/psk network and my campus EAP/TTLS/PAP radius enterprise network without problems.
You may click on "manual add" too without scanning, this is the beginning support for some kind of hidden networks (to be done) asap I have a configurable AP in my hands :)
The network is added and enabled, wpa_supplicant will decide how and when connect to it based on it's status priority etc.
Enabling/Disabling/Editing/Removing networks
Go on the "network page", you'll have two box, the upper contains the enabled network, the bottom the available (disabled) network. Clicking on a network shows a menu that permits you to do the needed operation.
So if you want to ignore open networks simply disable the "Any open" profile, and reenable it when walking around in the world.
Enable/Disable/Autoenable WiFi
This is the FSO ousaged control, so be warned if you enable wifi from external application you'll see NWA working even if the wifi status is "disabled".
The autoenable button let you choose if autoenable the wifi resource at startup.
Tray Icon
On WM with a standard trayer, NWA will show an icon with current wpa_supplicant status and historical signal strenght indication. Clicking on the icon will show the main window, to hide the main window use your window manager capability.
NWA read $HOME/.nwa.conf configuration file, if it does not exists it read /usr/share/nwa/defaultconfiguration.xml. When you change some configuration with the GUI the default file is copied in $HOME/.nwa.conf.
All common configuration is done in the GUI, for advanced usage you may edit your $HOME/.nwa.conf file (copy it if it does not exists yet)
Example configuration file
<xml version="1.0"> <!-- This is the default configuration file for nwa, and contains a basic configuration for the openmoko freerunner. The user configuration file is $HOME/.nwa.conf and overrides this --> <!-- in the following section we define all possible dhcp clients --> <dhcpclients> <dhcpclient name="udhcpc -f -i $IFACE$" default="yes"/> <dhcpclient name="none" /> </dhcpclients> <!-- autoenable wlan interface activation at startup --> <autoenable value="yes" /> <!-- interface card, usually eth0, on some distro is eth1 (hackable1) --> <iface name="eth0" maxquality="255"/> <!-- here are stored the network definitions, the default allows to connect to every open ap --> <networks> <network name="Any Open" key_mgmt="NONE" enabled="yes"/> </networks> <!-- scripts that are runned when wpa_supplicant complete authentication and when it disconnects if you run nwa as non privileged user you may define a sudo call to launch/kill the dhcpcd c lient (disabiling the main dhcp section setting it to none --> <ifupscript path="logger NWA iface $IFACE$ up"/> <ifdownscript path="logger NWA iface $IFACE$ down"/> <!-- scripts that are runned when the iface get/lose an ip address --> <ipupscript path="logger NWA iface $IFACE$ got ip $IP$"/> <ipdownscript path="logger NWA iface $IFACE$ losed ip $IP$"/> <brokenkernelhack value="no"/> <apscan mode="1"/> <!-- disable/enable fso use to: * enable/disable wifi * use idlenotifyer to bring up display on popup message and at startup * play notification sound with gstreamer --> <usefso value="true"/> <upsound path="/usr/share/nwa/sounds/bonus.ogg"/> <downsound path="/usr/share/nwa/sounds/gameover.ogg"/> <!-- alwaysshowwindow if yes it show the window at startup (normally if systray is available it's hided until you click on it) --> <alwaysshowwindow value="no" /> </xml>


text:
Get help and discuss anything related to tweaking your internet connection, as well as the different tools and registry patches on the site. TCP Optimizer settings and Analyzer results should be posted here.
Use this control to limit the display of threads to those newer than the specified time frame.
Allows you to choose the data by which the thread list will be sorted.
Order threads in...
Note: when sorting by date, 'descending order' will show the newest results first.
Forum Rules


text:
ISS027-E-036700 (23 May 2011) — This image of the International Space Station and the docked space shuttle Endeavour, flying at an altitude of approximately 220 miles, was taken by Expedition 27 crew member Paolo Nespoli from the Soyuz TMA-20 following its undocking on May 23, 2011 (USA time). The pictures are the first taken of a shuttle docked to the International Space Station from the perspective of a Russian Soyuz spacecraft. Onboard the Soyuz were Russian cosmonaut and Expedition 27 commander Dmitry Kondratyev; Nespoli, a European Space Agency astronaut; and NASA astronaut Cady Coleman. Coleman and Nespoli were both flight engineers. The three landed in Kazakhstan later that day, completing 159 days in space.
Image Credit: NASA/ESA


text:
The Consultation fee for Family Medicine Clinics in Qatar varies from QRS 100 to QRS 500 depending upon the clinic.
Frequently Asked Questions
COVID-19 live updates: Total number of cases passes 930,000
|by: Tabeebak
A team of scientists from King's College London, in the United Kingdom, have developed an app ...
Air pollution may be a leading global cause of death
|by: Tabeebak
New research has found that air pollution is one of the leading causes of death worldwide, far ...
Climate change and health: Impacts and risks
|by: Tabeebak
Climate change affects human health in a variety of ways. Extreme changes in the weather and ...
Sustainable diet: Everything you need to know
|by: Tabeebak
A sustainable diet is one that is generally healthful and has a low impact on the environment and ...
Also available on iPhone
- 1 Search By Specialty, Area,Insurance & Fees
- 2 Compare & Choose By Other Patients Ratings
- 3 Book Your Appointment


text:
开始时间: 04/22/2022 持续时间: Unknown
所在平台: CourseraArchive
课程类别: 计算机科学
大学或机构: CourseraNew
课程主页: https://www.coursera.org/archive/linear-algebra-machine-learning
In this course on Linear Algebra we look at what linear algebra is and how it relates to vectors and matrices. Then we look through what vectors and matrices are and how to work with them, including the knotty problem of eigenvalues and eigenvectors, and how to use these to solve problems. Finally we look at how to use these to do fun things with datasets - like how to rotate images of faces and how to extract eigenvectors to look at how the Pagerank algorithm works. Since we're aiming at data-driven applications, we'll be implementing some of these ideas in code, not just on pencil and paper. Towards the end of the course, you'll write code blocks and encounter Jupyter notebooks in Python, but don't worry, these will be quite short, focussed on the concepts, and will guide you through if you've not coded before. At the end of this course you will have an intuitive understanding of vectors and matrices that will help you bridge the gap into linear algebra problems, and how to apply these concepts to machine learning.


text: Two Beekeepers Fall Harvest Post navigationPrevious post: Two Beekeepers Fall Harvest Leave a Reply Cancel replyYour email address will not be published. Required fields are marked *Comment * Name * Email * Website Notify me of new posts by email. Human Verification: In order to verify that you are a human and not a spam bot, please enter the answer into the following box below based on the instructions contained in the graphic. Δ


text:
Funny Decals Trucks
Funny decals for trucks are a great affordable way to make your vehicle stand out from the rest and receive a lot of compliments.
Windshield Banners are the most popular decal for any car, truck or SUV. Browse our large selection of popular and unique windshield banners. All of our windshield banners will fit any vehicle. Simply choose the size and color that best suits your needs and enjoy.


text:
|Chiropractic Care and Cardiovascular Exercise
|Regular chiropractic care supports all your exercise activities. The converse is true as well, Regular exercise helps support chiropractic care.
In order to get the most out of the valuable time we spend exercising, we want to ensure that our musculoskeletal system is working effectively and efficiently. Bones, joints, and muscles need to be able to go through a full range of motion in order to exercise properly. Any limitation of mobility might cause an injury, which would not only be painful but would set back our normal exercise schedule.
By helping make sure that your muscles, bones, and joints are working at their best, regular chiropractic care helps you enjoy a full exercise program and reap all the benefits that exercise brings.
Interval training is an important part of aerobic exercise. If you're a walker or a runner, run intervals once a week. Walking and running build endurance by strengthening your cardiovascular system. Doing interval training once a week enhances your endurance by dramatically increasing the amount of blood your hear pumps every time it beats.1 (This is known as your cardiac stroke volume.) Interval training also increases the amount of oxygen you can take in on each breath.2 (This is known as your respiratory vital capacity.) The result is that you have noticeably increased speed and increased reserves when you need a prolonged burst of energy.
The same principles apply for any type of aerobic activity. . The interval system is easy to apply. For example, if you're a swimmer, you can do interval training with laps. If you ride a bike, you can do intervals with timed sprints.
There many books and magazine articles available to help you add interval training to your aerobics program. If you're doing aerobics exercise three times per week, you could use one of those sessions for interval training. Interval training is very powerful and the most important thing is to build up gradually.
To begin, you need to have a good base, meaning you do aerobic activity for at least 30 minutes. Using running as an example, you might be running 10-minute miles in at a fast "race pace". Ten minutes per mile is 2.5 minutes per quarter-mile. On your interval day, warm up by lightly jogging 1 mile. Then run four quarter-miles at a pace a bit faster than your race pace. In this example, you could run four quarter-miles at 2:25 or 2:20 per quarter. Then finish by lightly jogging for another mile.
Over time, your interval pace gets faster. You could do intervals with half-miles, three-quarters of a mile, or even a mile, if your weekly mileage supports such an interval distance. Most of us will see remarkable benefits by doing quarter-mile or occasional half-mile intervals.
One obvious result is that your resting pulse drops like a stone, because your heart is being trained to pump more blood each time it contracts. In this way, you save wear and tear on your heart. Owing to your heart's stroke volume, your heart beats less during the course of the day to provide the amount of blood you need flowing to your tissues.3 The takeaway is that your heart will last longer because you're doing intense vigorous exercise. That's a pretty remarkable result.
The bottom line is that interval training makes you stronger and faster. Your heart and lungs get a terrific workout with each interval training session. There's a big payoff for this once-a-week activity.