Obesity is a complex disease involving an excessive amount of body fat. Obesity isn't just a cosmetic concern.
It's a medical problem that increases the risk of other diseases and health problems, such as heart disease,
diabetes, high blood pressure and certain cancers.
There are many reasons why some people have difficulty losing weight. Usually, obesity results from inherited,
physiological and environmental factors, combined with diet, physical activity and exercise choices.
The good news is that even modest weight loss can improve or prevent the health problems associated with obesity.
A healthier diet, increased physical activity and behavior changes can help you lose weight. Prescription
medications and weight-loss procedures are additional options for treating obesity.
Symptoms
Body mass index (BMI) is often used to diagnose obesity. To calculate BMI, multiply weight in pounds by 703,
divide by height in inches and then divide again by height in inches. Or divide weight in kilograms by height in
meters squared.
BMI
Weight status
Below 18.5
Underweight
18.5-24.9
Normal
25.0-29.9
Overweight
30.0 and higher
Obesity
Asians with BMI of 23 or higher may have an increased risk of health problems.
For most people, BMI provides a reasonable estimate of body fat. However, BMI doesn't directly measure body fat,
so some people, such as muscular athletes, may have a BMI in the obesity category even though they don't have
excess body fat.
Many doctors also measure a person's waist circumference to help guide treatment decisions. Weight-related health
problems are more common in men with a waist circumference over 40 inches (102 centimeters) and in women with a
waist measurement over 35 inches (89 centimeters).
When to see a doctor
If you're concerned about your weight or weight-related health problems, ask your doctor about obesity
management. You and your doctor can evaluate your health risks and discuss your weight-loss options.
Causes
Although there are genetic, behavioral, metabolic and hormonal influences on body weight, obesity occurs when you
take in more calories than you burn through normal daily activities and exercise. Your body stores these excess
calories as fat.
In the United States, most people's diets are too high in calories — often from fast food and high-calorie
beverages. People with obesity might eat more calories before feeling full, feel hungry sooner, or eat more due
to stress or anxiety.
Many people who live in Western countries now have jobs that are much less physically demanding, so they don't
tend to burn as many calories at work. Even daily activities use fewer calories, courtesy of conveniences such
as remote controls, escalators, online shopping and drive-through banks.
Risk factors
Obesity usually results from a combination of causes and contributing factors:
Family inheritance and influences
The genes you inherit from your parents may affect the amount of body fat you store, and where that fat is
distributed. Genetics may also play a role in how efficiently your body converts food into energy, how your body
regulates your appetite and how your body burns calories during exercise.
Obesity tends to run in families. That's not just because of the genes they share. Family members also tend to
share similar eating and activity habits.
Lifestyle choices
Unhealthy diet. A diet that's high in calories, lacking in fruits and vegetables, full of fast food, and
laden with high-calorie beverages and oversized portions contributes to weight gain.
Liquid calories. People can drink many calories without feeling full, especially calories from alcohol.
Other high-calorie beverages, such as sugared soft drinks, can contribute to significant weight gain.
Inactivity. If you have a sedentary lifestyle, you can easily take in more calories every day than you burn
through exercise and routine daily activities. Looking at computer, tablet and phone screens is a sedentary
activity. The number of hours spent in front of a screen is highly associated with weight gain.
Certain diseases and medications
In some people, obesity can be traced to a medical cause, such as Prader-Willi syndrome, Cushing syndrome and
other conditions. Medical problems, such as arthritis, also can lead to decreased activity, which may result in
weight gain.
Some medications can lead to weight gain if you don't compensate through diet or activity. These medications
include some antidepressants, anti-seizure medications, diabetes medications, antipsychotic medications,
steroids and beta blockers.
Social and economic issues
Social and economic factors are linked to obesity. Avoiding obesity is difficult if you don't have safe areas to
walk or exercise. Similarly, you may not have been taught healthy ways of cooking, or you may not have access to
healthier foods. In addition, the people you spend time with may influence your weight — you're more likely to
develop obesity if you have friends or relatives with obesity.
Age
Obesity can occur at any age, even in young children. But as you age, hormonal changes and a less active
lifestyle increase your risk of obesity. In addition, the amount of muscle in your body tends to decrease with
age. Generally, lower muscle mass leads to a decrease in metabolism. These changes also reduce calorie needs and
can make it harder to keep off excess weight. If you don't consciously control what you eat and become more
physically active as you age, you'll likely gain weight.
Other factors
Pregnancy. Weight gain is common during pregnancy. Some women find this weight difficult to lose after the
baby is born. This weight gain may contribute to the development of obesity in women.
Quitting smoking. Quitting smoking is often associated with weight gain. And for some, it can lead to enough
weight gain to qualify as obesity. Often, this happens as people use food to cope with smoking withdrawal.
In the long run, however, quitting smoking is still a greater benefit to your health than is continuing to
smoke. Your doctor can help you prevent weight gain after quitting smoking.
Lack of sleep. Not getting enough sleep or getting too much sleep can cause changes in hormones that
increase appetite. You may also crave foods high in calories and carbohydrates, which can contribute to
weight gain.
Stress. Many external factors that affect mood and well-being may contribute to obesity. People often seek
more high-calorie food when experiencing stressful situations.
Microbiome. Your gut bacteria are affected by what you eat and may contribute to weight gain or difficulty
losing weight.
Even if you have one or more of these risk factors, it doesn't mean that you're destined to develop obesity. You
can counteract most risk factors through diet, physical activity and exercise, and behavior changes.
YOGA ASANAS FOR PREVENTING OBESITY
Vajrasana
Vajrasana pose is a simple sitting yoga pose. Its name comes from the Sanskrit word vajra, which
means thunderbolt or diamond.
 Breathing
and meditative exercises are often done in this position, which is said to help your body become as
strong as a diamond.
Keep reading to learn how to do Vajrasana pose and the many positive benefits it provides.
How to do the Vajrasana pose
You can get into the Vajrasana pose in six simple steps:
Start by kneeling on the floor. Consider using a yoga mat for comfort.
Pull your knees and ankles together and point your feet in line with your legs. The bottoms of your feet
should face upward with your big toes touching.

Straighten your head to gaze forward with your chin parallel to the floor. Position your hands palms
down on your thighs with your arms relaxed.
Benefits of Vajrasana
aiding in digestion
relieving or preventing constipation
strengthening pelvic muscles
helping keep the mind calm and stable
curing digestive acidity and gas formation
helping to relieve knee pain
strengthening thigh muscles
helping to relieve back pain
helping in treatment of urinary problems
increasing blood circulation to the lower abdominal region
helping to reduce obesity
Precautions
Before starting a yoga program, consult with a doctor. They can offer advice on how yoga will impact your
current health and suggest ways to avoid potential problems.
Yoga practitioners suggest avoiding Vajrasana if you have:
a knee problem or have recently undergone knee surgery
a spinal cord condition, especially with the lower vertebrae
intestinal ulcers, a hernia, or any other intestinal problems such as an ulcer or hernia
If you’re pregnant, ask your doctor about Vajrasana. Some feel it should be avoided. Others feel it’s OK if
you keep your knees apart to avoid stressing your abdomen. Your doctor is familiar with your situation and
can give you a personalized recommendation.
Urdhva Hastasana
Urdhva Hastasana is a standing pose that refreshes the entire body by boosting energy levels.
Every time you get up from long seated hours or wake up extending the arms overhead and stretching
the entire body from toes to fingertips. This subconscious move re-energizes the body and forms
Urdhva Hastasana.
Getting into the meaning, urdhva hastasana refers to “Raised Hands Pose”. This gentle stretch
regenerates energetic spark and provides various therapeutic perks.
Stretch your arms up overhead. Have your hands shoulder-distance apart, and palms
facing each other. Look straight ahead.
Stretch your arms straight, and straight up, from your shoulders.
Tone your belly by moving the space around your navel back towards your spine (Uddiyana
Bandha).
Watch that your lower front ribs do not poke forward. Draw the ribs in and slightly
down toward your belly.

You can practice the pose with your fingers spread or fingers together. I generally
leave this up to the student to do what feels best in their body.
This is Urdhva Hastasana.
To come out, lower your arms to your sides and return to Tadasana.
Benefits of Urdhva Hastasana
The main physical benefits of Urdhva Hastasana include:
Strengthen the legs.
Strengthen the triceps.
Both poses stretch the shoulders.
Tone the abdomen and hips.
Strengthen the posterior chain (back muscles, butt, hamstrings).
Help improve balance.
Help correct posture.

Help to stretch the spine which can help improve posture.
They provide a full body stretch.
Help to prepare the spine for deeper stretches, back bends, and twists.
Precautions & Contraindications
Remember that while yoga is for everyone, not all poses are for all people!
If your body requires some extra support in this pose, see the Modifications section below for ideas on how
to do these poses safely.
If you become dizzy or light headed, lower your arms.
Avoid these poses if you have a shoulder injury. Take the time needed to heal fully.
If you have a headache or migraine, these poses might make it worse. Practice with
caution.
If you have high blood pressure, keep your arms by your side.
These poses can be challenging if you have vertigo. Practice with your feet as wide as
you need to find balance.

If you are pregnant, you may want to keep your feet hip-distance apart, or wider.
Ardha Matsyendrasana (Half Spinal Twist)
Ardha Matsyendrasana also known as Vakrasana is seated spinal twist and falls into the category of
intermediate yoga poses yet its simpler variation can be practiced by beginners as well. Half Spinal
Twist also acknowledged as Half Lord of the Fishes Pose is one of those yoga poses that have quite
complex steps. Its new practitioners often end up getting confused while following the steps. Before
you practice, ensure you are aware of the steps very well. It has several variations out of which we
have selected two to be mentioned in this article today. So let’s get to know them after splitting
the Sanskrit name Ardha Matsyendrasana and revealing the meaning of each word.
How to do Ardha Matsyendrasana (Half Spinal Twist)
Starting Position: Sit straight, keeping the legs outstretched in front of the body.
Bend the right leg over the left leg, placing the right foot on the outside of the left knee, keep the
toes of right foot face forward.
Bend the left leg, bringing the left foot near the right buttock. keep left foot’s outside edge in
contact with the floor.
Position the legs first:
There is a space between your chest and right knee. Pass the left arm through that space bringing the
left hand close to the right foot.
Grab a firm hold of the right foot with the left hand bringing the right knee closer to left armpit. Try
to keep the spine erect.
Make the twist
Slowly twist the trunk to the right along with moving the neck.
Wrap the right arm around the waist placing the fingers on the left inner thigh.
Use the left arm pressing it against the right leg to move the trunk as far as you can comfortably.
Gaze straight over the right shoulder at a fixed point. Relax the body taking deep and slow breaths.
To return, reverse the movements one by one. Repeat on the opposite side.
Practice once on both the sides by interchanging the position of arms and legs.
Benefits of Ardha Matsyendrasana (Half Spinal Twist)
Tones the spinal nerves, stretches back muscles and contracts the abdomen at the same time.
Gives relief in lumbago and reduces muscle spasms and cramps.
Beneficial for people suffering from asthma or other respiratory diseases.
Massages and improves the functioning of abdominal organs, especially toning the liver, pancreas
and the kidneys.
Alleviates digestive and gastric problems. Stimulates appetite.
Regulates adrenaline in the body by balancing the secretions of the adrenal
Useful in getting rid of obesity as the regular practice of this asana removes excess body fat.
Precautions & Contraindications
Perform the Half Spinal Twist after practicing forward and backward bending yoga pose.
Neither twist the torso all of a sudden nor overstretch it as that way you may strain the muscles.
Practice Half Spinal Twist in the presence of a competent yoga trainer if you suffer from a hernia,
heart disease, ulcer or
Avoid practicing Ardha Matsyendrasana in case of sciatica or slipped disc.
This pose is not recommended to be practiced by pregnant women.
Trikonasana (Triangle Pose)
The Sanskrit name Trikonasana is derived from two words, Trikona meaning Triangle and Asana meaning
Posture. It’s quite logical to start wondering the shape of a triangle on hearing the name Triangle
Pose. Body’s posture seems similar to the shape of a triangle in the final position of this pose.
Trikonasana is extremely beneficial for strengthening the joints and stretching the muscles of the
body. Apart from this, Trikonasana has a lot of other benefits which one can experience on
practicing it regularly. But first, let’s begin by knowing the steps to practice Trikonasana.
How to do Trikonasana (Triangle Pose)
Starting Position: Stand upright keeping the spine erect, head straight, feet together with big toes and
heels slightly touching each other. Hands to the side of the body. The weight of the body should neither be
on the heels nor on the toes but distributed evenly on both of them. Relax and take deep breaths.
Move the legs 3-4 feet distance apart. Raise both the arms straight out to the sides, in line with
the shoulders and parallel to the floor with the palms facing downwards.
Move the right foot to the outside direction. Turn the left foot slightly to the inward direction.
The knees must remain straight throughout the practice.
Slowly begin to bend the trunk towards the right side. Make sure the body doesn’t go in the
forward direction.
Once the trunk is completely bent the hand must be close to the right ankle with the fingers
slightly touching the floor.
Ideally the right palm rest on the floor. Avoid forcing this position as with regular practice it
comes easily on the floor.
Stretch the left arm vertically. Move the head in the upward direction and look straight.
Hold the position for a minute or half or even lesser in the beginning. Gradually increasing the
time as you begin to feel more comfortable.
To return, lift the arms first and then slowly move the trunk back in the upright position. Relax
the body.
Benefits of Urdhva Hastasana
Gives strength to the ankles and knees.
Tones and massages the pelvic area and the reproductive organs.
Alleviates muscle cramps and helps in reducing the back and neck pain.
Stretches the back, neck, thighs, legs, arms and shoulders. Helps in reducing
waistline fat.
Highly beneficial in getting rid of indigestion, constipation, acidity and gastric
troubles.
Gives an intense stretch to the spine and enhances its Strengthens the spinal
nerves.
Removes the stiffness of the neck and shoulders. Beneficial in correcting the misalignment
of the shoulders.
Helpful in getting rid of anxiety and depression as it stimulates the whole functioning of
the nervous system.
Precautions & Contraindications
Don’t overstretch the body while practicing this asana as it may cause unnecessary pain or
injury.
If the neck begins to hurt in the upward direction, slightly lower it.
Avoid practicing this asana in case of severe pain in the neck, back or shoulders.
People suffering from any of these conditions should avoid practicing this asana: any kind of
injury in the knee, arthritis, vertigo, spinal disorders, high blood pressure, breathing trouble,
migraine, heart problem or cervical spondylitis.


Français
Español
русский
Home
Products
Solution
Marketing
Events
Company
Contact
Support
Toggle navigation
Home
(current)
Products
Solution
Marketing
Events
Company
Contact
Support
Previous
Next
more>>
11
2018-12
registered company that highly specializes
OPVISIION is USA regustered cimoany that highly soecializes in developing,manufac-turing and ugutakuzed v transmission eqyuOPV...
11
2018-12
Registered company that highly specializes4
Registered company that highly specializes4Registered company that highly specializes4Registered company that highly specializes4
11
2018-12
Registered company that highly specializes3
Registered company that highly specializes3Registered company that highly specializes3Registered company that highly specializes3Registe...
11
2018-12
Registered company that highly specializes
Registered company that highly specializesRegistered company that highly specializesRegistered company that highly specializes
more>>
Products
Fiber Optic Transmission System
LCD Monitors for Broadcast
IPTV
Frame Mount
Live Broadcast
Support
Online Training
FAQ
Technical Support
Dealer
Regional Dealer
How to be a dealer?
Policy
Room 202, Power Creative E, No.1 Shangdi East Road,Haidian District, Beijing, 100085, China
support@opvisioncom.comhttp://www.opvisioncom.com
Opvision Technology Co.,Ltd 16192 Coastal Hwy Lewes,DE 19958, USA
Website:www.opvisioncom.com
русский
Español
Français
中文


λ shellcaster
shellcaster
Archive for Feb 16 2013
Getting Started With Middleman Blog
Feb 16
shellcaster


schedule
Glowing Spoon
assignment_turned_in
{{> loginButtons align="right"}}
person_outline
Today's tasks
Manage Tasks
Manage Capacity
{{#if currentUser}} {{> display}} {{else}}
Please log in to edit your tasks!
{{/if}}


VisDA Challenge
Aeroplane
Bicycle
Bus
Car
Horse
Knife
Motorcycle
Person
Plant
Skateboard
Train
Truck


TOY STORY A film review by Mark R. Leeper Copyright 1995 Mark R. Leeper
Capsule: TOY STORY is the epitome of Pixar's computer graphics work to this point: a feature- length film in which toys come to life and have adventures. And the humor is genuinely funny, making this really a family film. And the computer graphics are superb. Pixar makes inanimate objects come to life well, but they ought to find other ideas for their stories. Rating: high +1 (-4 to +4)
For years one of the more interesting aspects of the annual tournees of animation was to see the developments in computer animation. An early example--early meaning 1986--from Pixar was "Luxo, Jr." in which metal lamps behaved in human ways. Pixar started life in 1979 as a division of Lucasfilm but became an independent company in 1986. The Luxo lamps were ideal for early attempts at computer animation since they were articulated collections of rigid pieces. Certainly in computer animation rigid body movement is easier to describe to a program than is the movement of something soft and pliable. In fact, Pixar has done a lot of showing toys and other inanimate objects coming to life since if they come off too rigid it can look like part of the characterization. With that in mind it is not difficult to understand why their first feature film is a story in which toys are the main characters and humans play a relatively small role and are not the center of attention. Different animation techniques have different advantages, but TOY STORY is certainly a milestone in computer animation. Pixar still has to prove that their animation techniques are more versatile than Will Vinton's clay animation or the Puppetoons of the 1940s and 1950s. In fact, their style is very like the results of Puppetoon animation. There is nothing wrong with what they do here, but they need to be thinking about how to get more variety in their themes, particularly if they want to be more than hi-tech Puppetoons.
That said, the film is certainly as watchable for the adults in the audience as for the children. We are not talking Merchant-Ivory level here but the adults should appreciate most of what is aimed at the kids and there is some intelligence in the humor (including a very nice bit about the origin of religions--hot stuff for a Disney family film). The story deals with a collection of toys owned by young Andy. What Andy does not know is that when he is not watching, the toys come to life and live lives of their own (a very familiar fantasy theme). Andy's current favorite is Sheriff Woody (voiced by Tom Hanks), but he has just gotten a new toy, Buzz Lightyear, Space Hero (Tim Allen). Woody is not happy about being displaced as Andy's favorite for reasons never made clear-perhaps it's job security. And it does not help that Buzz is not quite bright enough to realize that he is not the real thing. The rivalry is watched by the community of toys including tyrannosaurus Rex (ironically voiced by Wallace Shawn), Mr. Potato Head (Don Rickles), Slinky Dog (Jim Varney), and Bo Peep (Annie Potts). Just how Bo Peep got into this collection of Andy's toys is anybody's guess, but she adds a love interest for Woody. Eventually the rivalry will get out of hand and will have the two racing to return home first from the outside world and then from the house of the neighbor boy Sid, a budding sociopath with an impressive imagination when it comes to mutilating toys. One rather nice touch here is that Disney animations nearly always equate beauty with goodness and ugliness with evil, but it is not necessarily true here.
The animation technique used here is extremely good. The attention to details like reflective surfaces and the play of light and shadow get better and better with succeeding Pixar productions. Surface texture still seems to be a problem. Pixar does a sort of semi-gloss surface very nicely, which may be one reason they do so much with plastic toys. But the detail and texture they would need to do realistically a man's arm with hair, for example, is not really there any place.
Pixar has made a charming movie carrying their current plot concepts and animation techniques to what appears to be about the limit. TOY STORY is a lot of fun. Now the important question for Pixar is what do they do next. This one gets a high +1 on the -4 to +4 scale. (And special kudos to the Supervising Layout Artist.)
Mark R. Leeper<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Extra Class
Professional extra classes in Durbanville or Brackenfell
About Us
We love teaching and helping children reach their full potential. At Extra Class we focus on getting students to master their work by explaining content accurately in an easy to understand manner. We provide classes for grade R to 3 learners in the Durbanville and Brackenfell areas.
Classes In
Mathematics
Perceptual Skills
English & Afrikaans
How much?
R 150 per hourOur Educators
Sonja Engelke
Bachelor of Education
(Early Childhood Development: Foundation Phase)
Ilke Eybers
Bachelor of Education
(Early Childhood Development: Foundation Phase)
How We Differ
We pride ourselves on our educators. Being able to educate in our organization requires high standards & a love for children. We believe feedback is important and we actively request it from our students to ensure that classes are of the highest quality and yield optimal results.


Use the checkboxes below to record which Monster expansions are in your personal KD collection!
You can then use your Collection to add Fighting Arts, Disorders and Settlement Events from your expansions to your campaigns without adding monsters, gear, locations, etc.


1 Anthylla is a town of some reputation, and is especially assigned to the consort of the reigning king of Egypt, to provide her shoes. This has been done since Egypt has been under Persian dominion.
2 The other town, I think, is named after Arkhandrus son of Phthius the Achaean, and son-in-law of Danaus; for it is called Arkhandrus' town. It may be that there was another Arkhandrus; but the name is not Egyptian.


Library
your library...
Add a new book!
Add new Book
Book Title:
Author:
Number of pages:
Status:
Allready readed
Not readed
Add book
Reset
My books


See also:
List of
Completed Projects
Listed below are some major research projects.
| Faculty |
: |
G. Bharali |
| Project Title |
: |
Polynomial convexity in higher dimensions and applications to complex approximation problems |
| Funding Agency |
: |
DST (Fast-track Scheme) |
| Duration |
: |
2008 - 2011 |
| |
| Faculty |
: |
T. Bhattacharyya |
| Project Title |
: |
Ramanna Fellowship |
| Funding Agency |
: |
DST |
| Duration |
: |
2006 - 2009 |
| |
| Faculty |
: |
B. Datta |
| Project Title | : |
Study of degree-regular triangulations of surfaces and polyhedral structures of spheres |
| Funding Agency | : |
DST |
| Duration | : |
2006 - 2009 |
| |
| Faculty |
: |
M. K. Ghosh |
| Project Title |
: |
Controlled Semi-Markov Processes and
Applications to Finance |
| Funding Agency |
|
DST |
| Duration |
: |
2007-10 |
| |
| Faculty | : | P. Prasad |
| Project Title | : |
Hyperbolic Problems: Theory, Numerics and Applications |
| Funding Agency | : | CSIR |
| Duration | : | 2006 - 2009 |
| |
| Faculty |
: |
G. Rangarajan |
| Project Title |
: |
Autonomous navigation using brain-machine interface |
| Funding Agency |
: |
DRDO |
| Duration |
: |
2006 - 2009 |
| |
| Faculty |
: |
G. Rangarajan |
| Project Title |
: |
Indo-French cyber university project at IISc |
| Funding Agency |
: |
MHRD |
| Duration |
: |
2003 - |
| |
| Faculty |
: |
G. Rangarajan |
| Project Title |
: |
Block coherence and non-parametric Granger
causality |
| Funding Agency |
: |
DRDO |
| Duration |
|
2006-2009 |
| |
| Faculty |
: |
G. Rangarajan |
| Project Title |
: |
Indian Institute of Science Mathematics
Initiative |
| Funding Agency |
: |
DST |
| Duration |
|
2007-2012 |
| |
| Faculty |
: |
G. Rangarajan |
| Project Title |
: |
Mathematics Initiative at the Indian Institute
of Science |
| Funding Agency |
: |
DRDO |
| Duration |
|
2007-2010 |
| |
| Faculty |
: |
G. Rangarajan |
| Project Title |
: |
DST Centre for Mathematical Biology |
| Funding Agency |
: |
DST |
| Duration |
|
2007-2012 |
| |
|


Continuous Same Game (1)
问题描述 :
Continuous Same Game is a simple game played on a grid of colored blocks. Groups of two or more connected (orthogonally, not diagonally) blocks that are the same color may be removed from the board. When a group of blocks is removed, the blocks above those removed ones fall down into the empty space. When an entire column of blocks is removed, all the columns to the right of that column shift to the left to fill the empty columns. Points are scored whenever a group of blocks is removed. The number of points per block increases as the group becomes bigger. When N blocks are removed, N*(N-1) points are scored.
LL was interested in this game at one time, but he found it is so difficult to find the optimal scheme. So he always play the game with a greedy strategy: choose the largest group to remove and if there are more than one largest group with equal number of blocks, choose the one which contains the most preceding block ( (x1,y1) is in front of (x2,y2) if and only if (x1<x2 || x1==x2 && y1<y2) ). Now, he want to know how many points he will get. Can you help him?
输入:
Each test case begins with two integers n,m ( 5<=n,m<=20 ), which is the size of the board. Then n lines follow, each contains m characters, indicating the color of the block. There are 5 colors, and each with equal probability.
输出:
Each test case begins with two integers n,m ( 5<=n,m<=20 ), which is the size of the board. Then n lines follow, each contains m characters, indicating the color of the block. There are 5 colors, and each with equal probability.

辛苦了，顶
很好。代码比书上的简练！
有一点问题。。后面动态规划的程序中
int dp[n+1][W+1];
会报错 提示表达式必须含有常量值。该怎么修改呢。。
思路二可以用一个长度为k的队列来实现，入队后判断下队尾元素的next指针是否为空，若为空，则出队指针即为所求。
博主的C++功底真是好
程序员会算法，等于一个古惑仔带了zhi抢啊
这个也是算法导论的习题
已修改。一些字符在编辑的时候转义了
根本过不了。。。。
问题3是不是应该为1/4 .因为截取的三段，无论是否能组成三角形， x， y-x ，1-y,都应大于0，所以 x<y,基础应该是一个大三角形。小三角是大三角的 1/4.
顶一个 赞一个


Feni1576.github.io
Alto-shaam 100-HWLF/D6 Pdf User Manuals. View online or download Alto-shaam 100-HWLF/D6 Installation Operation Maintenance. Alto Shaam 100-HWLF/D6 Parts Manuals Parts. Alto-Shaam 200-HWLF/D6 2 Pan Drop-In W4 Wter Street o 40 enoonee Flls Wisonsin 0-040 S one 00 0044 ˜.˚.˛./˝˛˙˛ˆ˛ F 0 0044 onl lto-so Printed in the U.S.A. Due to ongoing product improvement, specifications are subject to change without notice. Heritage Parts is a proud distributor of replacement parts for Alto_shaam , 100-HWLF/D6. With same day shipping, real time inventory, and always 100% Genuine OEM parts, Heritage is your one stop destination for commercial kitchen replacement parts. Right Part, Right Time, Every. The 100-HWLF is a heated hot food well with an exterior constructed of 18 gauge stainless steel. The hot well is The hot well is controlled by one (1) adjustable thermostat with a range of 1 through 10 and an indicator light.
Shop Alto-Shaam 200-HWLF/D6 2 Pan Drop-In Hot Food Well with Large Flange - 6 inch Deep Pans, 120V. Unbeatable prices and exceptional customer service from WebstaurantStore.
Item no. 400-HW Series - Alto-Shaam.
ITEM 100-HWLF series - Alto-Shaam. A Alto-Shaam Inc. 100-HWLF/D6 is the perfect addition to your restaurant. JES has most Alto-Shaam Inc. items ready to ship quickly. Alto-shaam 100-HWLF/D6 Handbücher. Alto-Shaam 100-HWLF/D6 - Hot Food Well Unit w/Large Flange. About Us. As a leader in Restaurant Equipment and Restaurant Supplies for over 30 years we at kitchenrestock.com believe customer service still comes first. Find genuine OEM Alto Shaam 100-HWLF/D6 replacement parts at Parts Town with the largest in-stock inventory and same day shipping until Alto-Shaam 100-HWLF/D6 Parts Heritage Parts. Alto-Shaam 100-HWLF/D6 Halo Heat® Alto-Shaam 100-HWLF/D6 Manuals. Alto Shaam 200-HWLF-D6 Model Parts. Fit on model: 1000-sk-i, 1000-sk-ii, 1000-th-i, 1000-th-ii, 100-hw-d4, 100-hw-d443, 100-hw-d6, 100-hw-d643, 100-hwlf-d4, 100-hwlf-d6, 1100-rw, 1767-sk, 200-hw-d4


Comparator.compare
or Comparable.compareTo
is compared with
a specific non-zero constant.
By contract, these methods can return any positive number (not just 1) or any negative number (not just -1),
so comparing against particular numbers is bad practice. Some widely used comparison methods (e.g. String.compareTo
)
actually return values outside of the [-1..1] range, so such a comparison may cause incorrect program behavior.
Example:
void validate(String s1, String s2) {
// Comparing to 1 is incorrect
if (s1.compareTo(s2) == 1) {
throw new IllegalArgumentException("Incorrect order");
}
}
After the quick-fix is applied:
void validate(String s1, String s2) {
if (s1.compareTo(s2) > 0) {
throw new IllegalArgumentException("Incorrect order");
}
}
New in 2017.2


| WebKitGTK+ Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | Object Hierarchy | Properties |
WebKitWebWindowFeaturesWebKitWebWindowFeatures — Window properties of a WebKitWebView |
WebKitWebWindowFeatures; gboolean webkit_web_window_features_equal (WebKitWebWindowFeatures *features1
,WebKitWebWindowFeatures *features2
); WebKitWebWindowFeatures * webkit_web_window_features_new (void
);
"fullscreen" gboolean : Read / Write / Construct "height" gint : Read / Write / Construct "locationbar-visible" gboolean : Read / Write / Construct "menubar-visible" gboolean : Read / Write / Construct "scrollbar-visible" gboolean : Read / Write / Construct "statusbar-visible" gboolean : Read / Write / Construct "toolbar-visible" gboolean : Read / Write / Construct "width" gint : Read / Write / Construct "x" gint : Read / Write / Construct "y" gint : Read / Write / Construct
The content of a WebKitWebView can request to change certain properties of a WebKitWebView. This can include the x, y position of the window, the width and height but also if a toolbar, scrollbar, statusbar, locationbar should be visible to the user, the request to show the WebKitWebView fullscreen.
In the normal case one will use webkit_web_view_get_window_features to get the WebKitWebWindowFeatures and then monitor the property changes. Be aware that the WebKitWebWindowFeatures might change before "web-view-ready" signal is emitted. To be safe listen to the notify::window-features signal of the WebKitWebView and reconnect the signals whenever the WebKitWebWindowFeatures of a WebKitWebView changes.
1 2 3 4 5 6 |
/* Get the current WebKitWebWindowFeatures */ WebKitWebWindowFeatures *features = webkit_web_view_get_window_features (my_webview); /* Connect to the property changes */ g_signal_connect (G_OBJECT(features), "notify::menubar-visible", G_CALLBACK(make_menu_bar_visible), NULL); g_signal_connect (G_OBJECT(features), "notify::statusbar-visible", G_CALLBACK(make_status_bar_visible), NULL); |
gboolean webkit_web_window_features_equal (WebKitWebWindowFeatures *features1
,WebKitWebWindowFeatures *features2
);
Decides if a WebKitWebWindowFeatures instance equals another, as in has the same values.
|
a WebKitWebWindowFeatures instance |
|
another WebKitWebWindowFeatures instance |
Returns : |
TRUE if the instances have the same values, FALSE
otherwise |
Since 1.0.3
WebKitWebWindowFeatures * webkit_web_window_features_new
(void
);
Creates a new WebKitWebWindowFeatures instance with default values. It must be manually attached to a WebView.
Returns : |
a new WebKitWebWindowFeatures instance |
Since 1.0.3
"fullscreen"
property"fullscreen" gboolean : Read / Write / Construct
Controls whether window will be displayed fullscreen.
Default value: FALSE
Since 1.0.3
"height"
property"height" gint : Read / Write / Construct
The height of the window on the screen.
Allowed values: >= G_MAXULONG
Default value: -1
Since 1.0.3
"locationbar-visible"
property"locationbar-visible" gboolean : Read / Write / Construct
Controls whether the locationbar should be visible for the window.
Default value: TRUE
Since 1.0.3
"menubar-visible"
property"menubar-visible" gboolean : Read / Write / Construct
Controls whether the menubar should be visible for the window.
Default value: TRUE
Since 1.0.3
"scrollbar-visible"
property"scrollbar-visible" gboolean : Read / Write / Construct
Controls whether the scrollbars should be visible for the window.
Default value: TRUE
Since 1.0.3
"statusbar-visible"
property"statusbar-visible" gboolean : Read / Write / Construct
Controls whether the statusbar should be visible for the window.
Default value: TRUE
Since 1.0.3
"toolbar-visible"
property"toolbar-visible" gboolean : Read / Write / Construct
Controls whether the toolbar should be visible for the window.
Default value: TRUE
Since 1.0.3
"width"
property"width" gint : Read / Write / Construct
The width of the window on the screen.
Allowed values: >= G_MAXULONG
Default value: -1
Since 1.0.3
"x"
property"x" gint : Read / Write / Construct
The starting x position of the window on the screen.
Allowed values: >= G_MAXULONG
Default value: -1
Since 1.0.3
"y"
property"y" gint : Read / Write / Construct
The starting y position of the window on the screen.
Allowed values: >= G_MAXULONG
Default value: -1
Since 1.0.3


Dealing with Conflict
November 27, 2014
A couple of weeks ago I was about to leave on a long trip and my mother suggested that I go visit my grandmother in Michigan before leaving the country. I said that I would do that and began making arrangements. When I told my mom that I would fly back on Sunday before leaving again on Tuesday, she got mad because she said she had been hoping to spend the weekend with me. I felt a bit angry because I felt like I was being treated like a commodity instead of a person. I handled the conflict by telling my mom this and she apologized for getting mad and explained that she was just anxious because she was going to miss me while I was on my trip out of the country. I said I understood this and that I would look into changing the flight so that I got back on Saturday so I could spend a bit more time with her and my dad before leaving.
I think talking about how we both felt helped immensely in this case as it helped us both see where the other person was coming from and also encouraged us both to act more rationally and civilly with one another. If I could go back I think I would try to empathize with my mother and anticipate that she might want to spend time with me before I left on my trip and take that into account when I was making my plans.
Get in touch below


| Wei Fu |
2017 |
FSE'17 |
Easy over Hard: A Case Study on Deep Learning
|
| Wei Fu |
2017 |
FSE'17 |
Revisiting Unsupervised Learning for Defect Prediction
|
| Wei Fu |
2016 |
Written Prelim |
Tuning for Software Analytics: is it Really Necessary?
|
| Wei Fu |
2017 |
Oral Prelim |
Faster Methods for Software Analytids!
|
| Wei Fu |
2018 |
Defense |
Simpler Software Analytics: When? When Not?
|
| Zhe Yu |
2017 |
Written Prelim |
How to Read Less:
On the Benefit of Human-in-the-loop Incremental Learning for Systematic Literature Reviews
|
| Jianfeng Chen |
2017 |
Written Prelim |
SWAY: A Baseline Method for Search-Based Software Engineering
|
| Jianfeng Chen |
2018 |
Oral Prelim |
On the value of Sampling and Pruning for Search-Based Software Engineering
|
| Vivek Nair |
2016 |
Written Prelim |
Frugal: Cheaper Methods for SBSE |
| Vivek Nair |
2017 |
Oral Prelim |
Frugal ways to find good configurations (for configurable systems)
|
| Vivek Nair |
2017 |
SWAN'17 |
Plant a (decision) TREE and save the world*! |
| Vivek Nair |
2017 |
FSE'17 |
Using Bad Learners to find Good Configurations |
| Amritanshu Agrawal |
2017 |
Written Prelim |
What is Wrong With Topic Modeling?
|
| Amritanshu Agrawal |
2018 |
ICSE |
Is "Better Data" Better Than "Better Data Miners"? (On the Benefits of Tuning SMOTE for Defect Prediction)
|
| Amritanshu Agrawal |
2018 |
ICSE-SEIP |
We Don't Need Another Hero? (The Impact of "Heroes" on Software Development)
|
| George Mathew |
2017 |
Written Prelim |
"SHORT"er Reasoning About Larger Requirement Models
|
| George Mathew |
2017 |
RE'17 |
"SHORT"er Reasoning About Larger Requirement Models
|
| Tim Menzies |
2017 |
Invited Talk, Monash Univeristy, 2017 |
More less: seeking simpler software analytics (why?, how?) |
| Tim Menzies |
2017 |
Keynote: data-drive search-based SE |
when data mienrs meet optimizers |
| Tim Menzies |
2016 |
SSBSE'17 |
An (Accidental) Exploration of Alternatives to Evolutionary Algorithms |
| Tim Menzies |
2018 |
Keynote RAISE18
Inivted talk, Naval Research Labs
Invited talk SE ML summer school |
Software assurance and AI: how to achieve SA assurance for systems that
use machine learning or other AI methods
|
| Tim Menzies |
2017 |
Invited talk
CREST52, UCL |
Analytics without SBSE Considered Harmful |
| Tim Menzues |
2016 |
Invited talk, workshop on search-based SE |
Data Science2 =
( Test * DataScience ) |
| Tim Menzies |
2017 |
Invited talk, IBM developers conference |
Empriical SE research @data.IBM.honeypot |
| Tim Menzies |
2018 |
MSR'18 |
Data-Driven Search-based SE |
| Tim Menzies |
2015 |
FSE'15 |
GALE: geometric active learning for search-based SE |
| Tim Menzies |
2018 |
FSE'17 |
Are delayed issues Harder to Resolve? |
| Rahul Krishna |
2016 |
ASE 2016 |
Too Much Automation? |
| Rahul Krishna |
2017 |
Written Exam |
Don’t Tell Me What Is; Tell Me What Ought To Be! Planning in Software Engineering |
| Rahul Krishna |
2017 |
ASE 17 Doctoral Symposium |
Learning Effective Changes in Software Engineering
|


Without a group
selectable
pre-selected
not selectable
not unselectable
without left margin
unlabeled = {{custom}}
selectable = {{unselected}}
pre-selected = {{preselected}}
impossible = {{impossible}}
always = {{always}}
Group without preselection
with custom style: no ripple on click, vertical list via `display: flex`
{{option.label}}
selected: {{ex1SelectedValue}}
Group with preselection
using ng-model at group level
{{option.label}}
selected: {{ex2SelectedValue}}
Radio button positioning
This is a radio button
that is positioned at the top
relative to the content.
Empty lines...
This is a radio button
that is positioned at the middle
relative to the content.
Empty lines...
This is a radio button
that is positioned at the bottom
relative to the content.
Empty lines...
[DEFAULT] This is a radio button
that is positioned at the baseline.
The radio aligns with the first line of text despite the large grey box.
Empty lines...
Removes left margin
using CSS class
option A
option B
selected: {{ex2SelectedValue}}


|
Making
Out
(No Doubt) |
|
I'm
on the second floor
With a lock on my door I'm looking at a picture of your face The last time I looked You were looking really good But somehow pictures fade We're on the phone We're all alone And that just ain't good enough I go around the world To see your face 'Cause this just ain't good enough So I'm just kicking it I'm counting the days I hardly can wait for us to hang out I'm really missing it in so many ways I anticipate us making out Here comes another one Sip my morning tea But you're not next to me Here goes another day And driving in my car I wonder how you are While our favorite music plays The flowers arrive to my surprise But that just ain't good enough And I got the note, it gave me hope But that just ain't good enough So I'm just kicking it I'm counting the days I hardly can wait for us to hang out I'm really missing it in so many ways I anticipate us making out So I'm just kicking it I'm counting the days I hardly can wait for us to hang out I'm really missing it in so many ways I anticipate us making out Soon you'll be here with me (making out) Soon you'll be right here with me (making out) I'm with my friends till the night ends But that just ain't good enough And honestly you can trust me But that just ain't good enough So I'm just kicking it I'm counting the days I hardly can wait for us to hang out I'm really missing it in so many ways I anticipate us making out So I'm just kicking it I'm counting the days I hardly can wait for us to hang out I'm really missing it in so many ways I anticipate us making out So I'm just kicking it I'm counting the days I hardly can wait for us to hang out I'm really missing it in so many ways I anticipate us making out |


Before Change
tiled_a = a
tiled_a = tf.reshape(tiled_a, [int(tiled_a.get_shape()[0]), 1, int(tiled_a.get_shape()[1])])
tiled_a = tf.tile(tiled_a, [1, int(tiled_a.get_shape()[0]), 1])
tiled_b = b
tiled_b = tf.reshape(tiled_b, [1, int(tiled_b.get_shape()[0]), int(tiled_b.get_shape()[1])])
After Change
tiled_b = b.view(1, shape[0], shape[1]).repeat(shape[0], 1, 1)
difference = torch.abs(tiled_a-tiled_b)
difference = torch.min(difference, dim=1)[0]
difference = torch.sum(difference, dim=1)
return torch.sum(difference, dim=0)


Visualize 120 Years of Summer Olympics
This data visualization project was completed by Zihui (Chris) Fang and Hongtao Hao, with Equal Contribution, as the term paper for Professor Yong-Yeol Ahn's Data Visualization course in 2019 Fall.
This study analyzed the historical data which contains information on athletes in all the past modern Olympic Games. We tried to answer four questions:
- How did female participation change over the years and how did these changes differ between continents?
- Is there a home-field advantage at the Olympics?
- How “efficient” is each participating country or region to get medals? and
- Which sports had the highest number of participants?
Results showed that both total number of athletes and the rate of female participation have been increasing in the past 120 years. Also, there seems to exist a home-field advantage. Third, medal efficiency is highly correlated with participating country or region’s economic development. Finally, athletics, gymnastics, and swimming have the highest number of athletes.
You can also download the PDF version of our paper, whose LaTex source code can be found here.


One Family ~ One Estate ~ One Passion.
Our Family of wines
About The Vineyard
| Vineyard: | Lake Roosevelt Shores Vineyard |
| Vineyard Location: | 60 miles west of Spokane 16 miles north of Highway 2 29 miles behind Grand Coulee Dam |
| Appellation: | Columbia Valley |
| Established: | 1992 |
| Acres in Production: | 5 acres Merlot 5 acres Cabernet Sauvignon 6 acres Cabernet Franc |
| Geography: | South Slope |
| Elevation: | 1600’ |
| Rainfall: | 12-13” annual |
| Temperature: | Warm Summer Days Cool Summer Nights Temperate Autumn |
| Soil: | Sandy Loam |
| Growing Season: | March to November |
| Capacity: | 2,400 cases |
| Barrels | 288 |


In global regions, the system locks entries and the region during updates. You can also explicitly lock the region and its entries as needed by your application. Locking includes system settings that help you optimize performance and locking behavior between your members.
In regions with global scope, locking helps ensure cache consistency.
Locking of regions and entries is done in two ways:
- Implicit. Geode automatically locks global regions and their data entries during most operations. Region invalidation and destruction do not acquire locks.
Explicit. You can use the API to explicitly lock the region and its entries. Do this to guarantee atomicity in tasks with multi-step distributed operations. The
Region
methodsorg.apache.geode.cache.Region.getDistributedLock
andorg.apache.geode.cache.Region.getRegionDistributedLock
return instances ofjava.util.concurrent.locks.Lock
for a region and a specified key.Note: You must use the
Region
API to lock regions and region entries. Do not use theDistributedLockService
in theorg.apache.geode.distributed
package. That service is available only for locking in arbitrary distributed applications. It is not compatible with theRegion
locking methods.
Lock Timeouts
Getting a lock on a region or entry is a two-step process of getting a lock instance for the entity and then using the instance to set the lock. Once you have the lock, you hold it for your operations, then release it for someone else to use. You can set limits on the time spent waiting to get a lock and the time spent holding it. Both implicit and explicit locking operations are affected by the timeouts:
The lock timeout limits the wait to get a lock. The cache attribute
lock-timeout
governs implicit lock requests. For explicit locking, specify the wait time through your calls to the instance ofjava.util.concurrent.locks.Lock
returned from theRegion
API. You can wait a specific amount of time, return immediately either with or without the lock, or wait indefinitely.<cache lock-timeout="60"> </cache>
gfsh:
gfsh>alter runtime --lock-timeout=60
The lock lease limits how long a lock can be held before it is automatically released. A timed lock allows the application to recover when a member fails to release an obtained lock within the lease time. For all locking, this timeout is set with the cache attribute
lock-lease
.<cache lock-lease="120"> </cache>
gfsh:
gfsh>alter runtime --lock-lease=120
Optimize Locking Performance
For each global region, one of the members with the region defined will be assigned the job of lock grantor. The lock grantor runs the lock service that receives lock requests from system members, queues them as needed, and grants them in the order received.
The lock grantor is at a slight advantage over other members as it is the only one that does not have to send a message to request a lock. The grantor’s requests cost the least for the same reason. Thus, you can optimize locking in a region by assigning lock grantor status to the member that acquires the most locks. This may be the member that performs the most puts and thus requires the most implicit locks or this may be the member that performs many explicit locks.
The lock grantor is assigned as follows:
- Any member with the region defined that requests lock grantor status is assigned it. Thus at any time, the most recent member to make the request is the lock grantor.
- If no member requests lock grantor status for a region, or if the current lock grantor goes away, the system assigns a lock grantor from the members that have the region defined in their caches.
You can request lock grantor status:
At region creation through the
is-lock-grantor
attribute. You can retrieve this attribute through the region method,getAttributes
, to see whether you requested to be lock grantor for the region. Note: Theis-lock-grantor
attribute does not change after region creation.After region creation through the region
becomeLockGrantor
method. Changing lock grantors should be done with care, however, as doing so takes cycles from other operations. In particular, be careful to avoid creating a situation where you have members vying for lock grantor status.
Examples
These two examples show entry locking and unlocking. Note how the entry’s Lock
object is obtained and then its lock method invoked to actually set the lock. The example program stores the entry lock information in a hash table for future reference.
/* Lock a data entry */
HashMap lockedItemsMap = new HashMap();
...
String entryKey = ...
if (!lockedItemsMap.containsKey(entryKey))
{
Lock lock = this.currRegion.getDistributedLock(entryKey);
lock.lock();
lockedItemsMap.put(name, lock);
}
...
/* Unlock a data entry */
String entryKey = ...
if (lockedItemsMap.containsKey(entryKey))
{
Lock lock = (Lock) lockedItemsMap.remove(name);
lock.unlock();
}


Projects
possibly-ongoing, large chunks of webcode
LewisStructure -- 3Dish (and very poor but who's counting) simulation of molecules. Runs on the outdated processingjs library; needs to be changed to p5js or twojs.
AudioViz -- Vis(z?)ualizes audio. Also plays audio (at different speeds if you really want to).
BRSerker -- In-browser tool for the video games Brickadia and Blockland; imports/exports and procedurally generates save files.
Widgets
one-offs and tests
j
Perlin Noise Explorer -- a test of basic terrain generation.
GW2 Shatterer Scriptgen -- Smash the Dragon!
Other Things I Do
the Internet is a big place
My YouTube channel -- music with a slight chance of gaming.
Source code of this website -- on GitHub, of course.


子貢問為仁。子曰：「工欲善其事，必先利其器。居是邦也，事其大夫之賢者，友其士之仁者。」
Zi Gong asked about the practice of virtue. The Master said, "The mechanic, who wishes to do his work well, must first sharpen his tools. When you are living in any state, take service with the most worthy among its great officers, and make friends of the most virtuous among its scholars."


| Height | Block hash | Checkpoint Quorum |
| {{checkpoint_height}} | {{checkpoint_block_hash}} | {{checkpoint_height}}; {{checkpoint_signatures_size}}/20 signatures: {{#checkpoint_signed_by}} {{#voter_signed}}✓{{/voter_signed}} {{^voter_signed}}✕{{/voter_signed}} {{/checkpoint_signed_by}} |


--- title: Shipping / Delivery hero: Delivery Details ---
Please review the below information to find answers to any of your questions regarding our policies.
Shipping within the United Kingdom is fixed at £5 and international shipping is at a cost of £15
All shipping is conducted through the Royal Mail and their international partners


"...If you don't know what your map is supposed to be telling us, neither do we.." - Stephanie May
Overly Descriptive Titles That Require Time To Understand Because They Have So Many Words In Them And Have Even Longer Sub-Titles That Further Confuse The Reader
A.N.K. Acronyms Nobody Knows
unusable scale bars
or attend a #geodev meetup


UTC +4
Voltage: 240 V*
Frequency: 50 Hz
*Voltage variations common
Omani rial of 1000 biaza.
International Dialing Code for Oman is +968.
The country has GSM 900 mobile phone networks in operation.
Internet cafes are to be found in Muscat and Nizwa and email is available in most city hotels.
Emergency services (police, firemen, ambulance) - Dial 999.
IMRAY AND ADLARD COLES PILOT BOOKS are available at a discounted price for Noonsite.com users via World Cruising Club
Indian Ocean Cruising Guide
By Rod Heikell
Publisher: Imray, 2nd Edition (2007)
ISBN<PHONE_NUMBER>725
Subtitled ‘A yachtsman’s handbook for the Red Sea, Indian Ocean and South East Asia’, also covering tropical cruising, provisioning, local politics, weather etc as well as harbours and anchorages. Indispensable for both planning and passagemaking.
Noonsite welcomes information and updates especially regarding clearance, customs and immigration procedures from cruisers visiting this country.
Please E-mail noonsite with any new information, updates or corrections. Even just a short email confirming that the current data is accurate would be most helpful.


| From | |
| To | 0xedf195e667b32d036f2a73aa37153068fd090012 |
| Bet Amount | 0 |
| Account Nonce | |
| Payout | seele |
| GasPrice | fan |
| GasLimit | |
| Roll Under |
What you are betting on is the result of a 100-faced dice. The result of the dice is limited to 1-100. The result of the dice needs to be lower than the number you choose. If the result of the dice is lower than your number, you win! Example: The number that you choose is 61. When the result of the dice is less than 61 (1-60), you win. If the result is greater than or equal to 61 (61-100), you lose
1. Prepare your Seele account. Please follow tutorial to create an account if you don't have
2. Press the login button to login with public and private key
3. Select your bet amount, this is the amount of Seele you want to bet
4. Slide the slider to change your chance of winning by guessing the upper limit of the dice number
5. Click "Roll" to bet. Click “Accept” to confirm, and the bet is successful
6. If the dice number rolled is lower than dice number you guess, you win and gets the payout
7. If you receive a notification that the transaction has failed, please check if you have enough Seele to make the bet
You can check your Seele balance next to the Roll button. The table below the slider bar shows the recent game status and your bet details for all players worldwide.
** As the game is run on the Seele Smart Contract, it is proved to be fair and cannot be cheated. By our unique Encryption technology, the result of rolling will not be changed by any means.


Abyssal Celebrant Cecktinon:
If you keep interrupting me, it will interfere with my ritual. Go to the
swamp
and bring me the
head of a zombie
. I need an intact head that is not decayed or mangled.


{% extends "base.html" %} {% block title %}Locations{% endblock title %} {% block content %}
City: {{ shop.city }} Street: {{ shop.street }}


-*- html -*-
jwalk
@author Jim Rosenblum
@copyright 2015-2020 Jim Rosenblum
@version 1.2
@title Helper module for working with common Erlang representations of JSON: EEP 18, map,
Mochijson-style, and Proplists.
@doc
This work is inspired by [ej](https://github.com/seth/ej), but handles all common JSON
representations: eep-18, map, mochijson-style and proplists, the types returned by
[jsone](https://github.com/sile/jsone), [jiffy](https://github.com/davisp/jiffy) and
[mochijson](https://github.com/mochi/mochiweb), for example.
Anything good about this is probably due to the contributors and maintainers of ej, anything bad or
awkward is completely my fault.
==Dependencies==
The source code is a single file, and there are no dependencies other than:
- Erlang 19.0 +
- Rebar3, for building
Hex package manager is used for package management.
===QuickStart===
====clone====
$ git clone git://github.com/jr0senblum/jwalk.git
$ cd jwalk
====compile====
$ make compile
====run tests====
$ make eunit
==== dialyze====
$ make dialyze
==== Erlang shell====
$ make start
```
1> jwalk:get({"one"},#{<<"one">> => 1}).
1
2> jwalk:get({"one"},[{<<"one">>, 1}]).
1
3> jwalk:get({"one"},{[{<<"one">>, 1}]}).
1
4> jwalk:get({"one"},{struct, [{<<"one">>, 1}]}).
1
'''
==Functions==
Jwalk functions always take at least two parameters: a first parameter which is a
tuple of elements representing a Path into a JSON Object, and a second
parameter which is expected to be a valid JSON representation (map, proplist, etc.).
- jwalk:delete(Path, Object) -> Result
Removes the value at the location specified by Path from Object and returns a new structure
- jwalk:get(Path, Object) -> Result | undefined,
jwalk:get(Path, Object, Default) -> Result | Default
Returns the Value at the specificed Path from Object, or undefined or Default if not found
- jwalk:set(Path, Object, Value) -> Result
Sets a Value in Object at the specified Path and returns the new structure
- jwalk:set_p(Path, Object, Value) -> Result
Sets a Value in an Object at the specified Path creating intermediate nodes as necessary and
returns the new structure
===Paths===
Paths into JSON Objects are expressed using a tuple of Path elements, a
representation of a javascript-like path: i.e.,
Obj.weapons.edged.distance becomes {"weapons","edged","distance"}.
Path elements representing JSON Member Names can be strings or binary, they
will be internally converted to binary regardless.
In addition to the string/binary representations of Member Names, a Path element can
be
- An integer index, or the atoms _first_ and _last_, which will select
an element out of a JSON Array.
- {select, {"name","value"|value}} which will select a subset of JSON objects
from an Array that have a Member {"Name": "Value"|Value}
- The atom _new_, used in conjunction with the functions set/2 and set_p/2, as
the final element of a Path will add the supplied value to the stucture as the first
element of an Array, the Array is created if necessary
Path, string elements can be binary or not, they will be converetd to binary regardless.
Examples follow.
===Usage Examples===
```
Weapons = [{<<"edged">>, [[{<<"type">>, <<"swords">>}, {<<"distance">>, <<"medium">>}],
[{<<"type">>, <<"bayonets">>}, {<<"distance">>, <<"medium">>}],
[{<<"type">>, <<"daggers">>}, {<<"distance">>, <<"close">>}]
]
}].
then
1> jwalk:get({"edged", {select, {"distance","medium"}}},Weapons).
[[{<<"type">>,<<"swords">>},{<<"distance">>,<<"medium">>}],
[{<<"type">>,<<"bayonets">>},{<<"distance">>,<<"medium">>}]]
2> jwalk:get({"edged",{select,{"distance","medium"}},1},Weapons).
[{<<"type">>,<<"swords">>},{<<"distance">>,<<"medium">>}]
3> jwalk:get({"edged",{select,{"distance","medium"}},1,"type"},Weapons).
<<"swords">>
% setting an element ...
4> W2 = jwalk:set({"edged",3, "distance"}, Weapons, <<"very close">>).
[{<<"edged">>,
[[{<<"type">>,<<"swords">>},{<<"distance">>,<<"medium">>}],
[{<<"type">>,<<"bayonets">>},{<<"distance">>,<<"medium">>}],
[{<<"type">>,<<"daggers">>},{<<"distance">>,<<"very close">>}]]}]
5> jwalk:get({"edged","distance"},W2).
[<<"medium">>,<<"medium">>,<<"very close">>]
Given a map:
Obj = #{<<"widget">> =>
#{<<"debug">> => <<"on">>,
<<"image">> =>
#{<<"alignment">> => <<"center">>,
<<"hOffset">> => 250,
<<"name">> => <<"sun1">>,
<<"src">> => <<"Images/Sun.png">>,
<<"vOffset">> => 250},
<<"keys">> => [],
<<"text">> =>
#{<<"alignment">> => <<"center">>,
<<"data">> => <<"Click Here">>,
<<"hOffset">> => 250,
<<"name">> => <<"text1">>,
<<"onMouseUp">> => <<"sun1.opacity = (sun1.opacity / 100) * 90;">>,
<<"size">> => 36,
<<"style">> => <<"bold">>,
<<"vOffset">> => 100},
<<"values">> => [1,2,3,4,5],
<<"version">> => <<"1">>,
<<"window">> =>
#{<<"height">> => 500,
<<"name">> => <<"main_window">>,
<<"title">> => <<"Sample Konfabulator Widget">>,
<<"width">> => 500}}}.
then
1> jwalk:get({"widget","debug"},Obj).
<<"on">>
2> jwalk:get({"widget","text"},Obj).
#{<<"alignment">> => <<"center">>,
<<"data">> => <<"Click Here">>,
<<"hOffset">> => 250,
<<"name">> => <<"text1">>,
<<"onMouseUp">> => <<"sun1.opacity = (sun1.opacity / 100) * 90;">>,
<<"size">> => 36,
<<"style">> => <<"bold">>,
<<"vOffset">> => 100}
set_p creates intermediary nodes:
1> jwalk:set_p({"users", {select, {"name", "sebastian"}}, "location"}, #{}, <<"Germany">>).
#{<<"users">> => [#{<<"location">> => <<"Germany">>,<<"name">> => <<"sebastian">>}]}
2> jwalk:set_p({"users", {select, {"name", "sebastian"}}, "location"}, [{}], <<"Germany">>).
[{<<"users">>,
[[{<<"name">>,<<"sebastian">>},
{<<"location">>,<<"Germany">>}]]}]
3> jwalk:set_p({"users", {select, {"name", "sebastian"}}, "location"}, {[]}, <<"Germany">>).
{[{<<"users">>,
[{[{<<"name">>,<<"sebastian">>},r
{<<"location">>,<<"Germany">>}]}]}]}
4> jwalk:set_p({"users", {select, {"name", "sebastian"}}, "location"}, {struct,[]}, <<"Germany">>).
{struct,[{<<"users">>,
[{struct,[{<<"name">>,<<"sebastian">>},
{<<"location">>,<<"Germany">>}]}]}]}
'''


Created by Michal Szczepaniak / twitter
9:15 - 11:00 Part One
11:00 - 11:15 Break
11:15 - 12:45 Part Two
can slightly change depending on the time left and questions
Simple incremental changes
Next lesson will build on top of the previous one
Github Repository: https://github.com/mszczepaniak/westie-mates
If Stuck -> check out the next commit
ng new westie-mates
SPA advantages over MPA:
SPA disadvantages to MPA:
But then you will also find detractors of many of these bullets:
You will also see that every answer to “when to use a SPA vs MPA / MVC / WhateverIAmDoingNow” is “it depends”, but no one will tell you a real recipe.
cd westie-mates
ng serve --open
The ng serve command launches the server, watches your files, and rebuilds the app as you make changes to those files
Javascript that scales.
Typed superset of JavaScript that transpiles to plain JavaScript
“We love TypeScript for many things… With TypeScript, several of our team members have said things like ‘I now actually understand most of our own code!’ because they can easily traverse it and understand relationships much better. And we’ve found several bugs via TypeScript’s checks.”
— Brad Green, Engineering Director — Angular
The Angular CLI is a command line interface tool that can create a project, add files, and perform a variety of ongoing development tasks such as testing, bundling, and deployment.
Webpack is a popular module bundler, a tool for bundling application source code in convenient chunks and for loading that code from a server into a browser.
| Component | ng g component my-new-component |
|---|---|
| Directive | ng g directive my-new-directive |
| Pipe | ng g pipe my-new-pipe |
| Pipe | ng g pipe my-new-pipe |
| Service | ng g service my-new-service |
| Interface | ng g interface my-new-interface |
| Module | ng g module my-module |
| Pipe | ng g pipe my-new-pipe |
bootstrapped the app
set up testing, local server, root module and first component
set up typescript
set up dependencies
A function that adds metadata to a class, its members (properties, methods) and function arguments.
Decorators are a JavaScript language feature, implemented in TypeScript and proposed for ES2016 (also known as ES7).
@Component() @NgModule() @Injectable()
@Input() @Output()
@Directive() @Pipe()
@Component({
selector: 'westie-mate',
templateUrl: './mate.component.html',
styleUrls: ['./mate.component.css']
})
export class MateComponent{
constructor() { }
}
@Component({
selector: 'westie-mate',
templateUrl: './mate.component.html',
styleUrls: ['./mate.component.css']
})
export class MateComponent implements OnInit {
@Input() mate: any;
@Input() mateNo: number;
@Output() mateSelected = new EventEmitter();
constructor() { }
ngOnInit() { }
select(mateName, mateId) {
this.mateSelected.emit({name: mateName, id: mateId});
}
}

Mate Number {{mateNo}}:

{{mate.name}}

<button
type="button"
class="btn btn-danger"
(click)="select(mate.name, mate.id)"
>

Click me
</button>

{{ mate.name }}
{{ 2+2 }}
{{ getBeer() }}
You use interpolation to weave calculated strings into the text between HTML element tags and within attribute assignments
An Angular module class describes how the application parts fit together. Every application has at least one Angular module, the root module that you bootstrap to launch the application. You can call it anything you want. The conventional name is AppModule.
imports, exports, declarations, bootstrap
the view classes that belong to this module. Angular has three kinds of view classes: components, directives, and pipes
the subset of declarations that should be visible and usable in the component templates of other modules
other modules whose exported classes are needed by component templates declared in this module
the main application view, called the root component, that hosts all other app views. Only the root module should set this bootstrap property
@NgModule({
declarations: [
AppComponent,
NotFoundComponent,
LoginComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
MateModule,
RouterModule.forRoot(appRoutes)
],
providers: [
],
bootstrap: [AppComponent]
})
export class AppModule {
@NgModule({
declarations: [
MateComponent,
MateListComponent,
MateDetailsComponent
],
imports: [CommonModule],
exports: [MateListComponent],
providers: [
MateService,
ToasterService
]
})
export class MateModule {}
@Injectable()
export class MateService {
getUsers() {
return [];
}
}
declare const toastr: any;
@Injectable()
export class ToasterService {
success(message: string, title?: string) {
toastr.success(message, title);
}
}
export class LoginComponent implements OnInit {
constructor(private router: Router) { }
}
Angular creates, updates, and destroys components as the user moves through the application. Your app can take action at each moment in this lifecycle through optional lifecycle hooks, like ngOnInit().
getHeroes (): Promise {
return this.http.get(this.heroesUrl)
.toPromise()
.then(this.extractData)
.catch(this.handleError);
}
addHero (name: string): Promise {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.heroesUrl, { name }, options)
.toPromise()
.then(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body.data || { };
}
private handleError (error: Response | any) {
// In a real world app, we might use a remote logging infrastructure
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
return Promise.reject(errMsg);
}
| Type | Structural | Attribute |
|---|---|---|
| Description | alter layout by adding, removing, and replacing elements in DOM | alter the appearance or behavior of an existing element. |
| Example | ngFor | ngModel |

[(ngModel)]=username
export const appRoutes: Routes = [
{path: 'login', component: LoginComponent},
{path: 'mates', component: MateListComponent},
{path: '', redirectTo: '/login', pathMatch: 'full'},
];
{path: '**', component: NotFoundComponent}
<router-outlet></<router-outlet>

Take Me Home

<base href="/">
{path: 'mates/:username', component: MateListComponent},
{path: 'mates/details/:id', component: MateDetailsComponent},
this.router.navigateByUrl(`/mates/details/${mate.id}`);

Login

<form
#loginForm="ngForm"
autocomplete="off"
(ngSubmit)="login(loginForm.value)"
>

User Name:

Required

<input
id="username"
required
[(ngModel)]=username
name="username"
type="text"
class="form-control"
placeholder="User Name..."
/>

Password:

Required

<input
name="password"
required
[(ngModel)]=password
id="password"
type="password"
class="form-control"
placeholder="Password..."
/>

<button
type="submit"
[disabled]="loginForm.invalid"
class="btn btn-primary"
>
Login
</button>
<button
type="button"
class="btn btn-default"
>
Cancel
</button>
</form>

<form
#loginForm="ngForm"
(ngSubmit)="login(loginForm.value)"
>

Required

| State | Class if true | Class if false |
|---|---|---|
| The control has been visited. | ng-touched | ng-untouched |
| The control's value has changed. | ng-dirty | ng-pristine |
| The control's value is valid. | ng-valid | ng-invalid |
Todd Motto
Victor Savkin
John Papa
Thoughtram
RxJS
Redux and ngrx
Pipes
Testing
Advanced routing with guards
Reactive forms
Angular comes with a stock of pipes such as DatePipe, UpperCasePipe, LowerCasePipe, CurrencyPipe, and PercentPipe. They are all available for use in any template.
@Component({
selector: 'hero-birthday',
template: `The hero's birthday is {{ birthday | date }}
`
})
export class HeroBirthdayComponent {
birthday = new Date(1988, 3, 15); // April 15, 1988
}
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({name: 'michal'})
export class NamePipe implements PipeTransform {
transform(value: any): any {
if (value === 'westernacher') {
return 'michal';
}
return value;
}
}
{{ mates | michal}}


E.E.G. Data Set
Welcome!
Site Map
Home
Patients
Tests
Patient Test
Lates Test
List of the lates patient tests.
×
Patient Registration
Name
Last Name
Occupation
Email
Age
Birthdate
Gender
Female
Male


{% load staticfiles %}
Select a name to this hatching period.
Select the number of eggs that will be hatched.


Welcome to the InfoBot page! This is where you can get infobot for free! All you have to do is click this button :) -->


layout
Check the console. And set debugger to setInterval functions in strictScript.js
The interval function is being executed every second, for each object: person, person2 and person3
Notice that w/o using arrow function (person3), or casting this to self (person2) in strict mode this is created for
each function call, that's why there is no access to age property in person class.


Control Panel
Analysis
Exploration
Overview
Preset
File Directory
Class Inheritance
Function Dependency
Import Dependency
Broad Definitions
Granular Definitions
All
Custom
Layout
Force Directed
Tree
File
Folder
Class
Function
Variable
Lambda
If
For
While
Try
Directory
Import
Function Call
Inheritance
Defintion
Variable
Control Flow
Show 0 degree nodes
...
...


Is your IT infrastructure too complex? Too costly to operate? Too slow in responding to the needs of your business? If so, you're not alone. And you've come to the right place for help.
Infrastructure convergence helps you increaseIT speed and agilityby making the data center simpler, more flexible, more efficient and less expensive to operate. It achieves this by breaking down rigid, complex IT silos around your network, data center and storage infrastructures and transforming them into adaptive pools of resources that can be shared by many applications and managed as a service. It also includes embedded security at both the perimeter and core of your network, as well as power and cooling management capabilities so systems and facilities work together. Taken together, converged infrastructure accelerates the provisioning of IT services and applications to deliver value to the business in a systematic, repeatable, and secure environment.
A recentIDC studyproved the practical benefits of infrastructure convergence. Businesses that have implemented HP Converged Infrastructure have been able to cut application provisioning time by 75% and reduce downtime by 97%. Moreover, these companies have been able to shift more than 50% of their IT resources from resources to innovation.
"We went from approximately 600 physical servers down to 150," says Steven Ross, VP of Technology at clothing retailerChico's. "We also increased our processing capabilities…across more than 1,000 stores and our e-commerce Website by 50% in less than eight weeks."
Infrastructure convergence has made the emergence of cloud computing and the promise of services anywhere, anytime a reality. But cloud is not one-size-fits-all. Organizations considering cloud adoption must consider the right mix of on- and off-premises services that leverage the best of traditional IT with private, managed and public cloud. Read on to learn more about how converged infrastructure provides the ideal foundation forconverged cloud.
CIOs spend up to 70% of their budgets on operations. Download this solution brief to learn how to shift your investment focus to innovation.View now
Download this book to get the inside track on infrastructure convergence: the trends, methodologies and value it can deliver to you.View now
As your datacenter evolves, it's important to accurately evaluate your next purchases in order to accelerate your business value. This Forrester Research resource provides more information.
Stay ahead of the game by addressing complex data center and IT operations without significantly impacting your IT budget. This paper shows you how.
Mid-size companies are reducing their IT infrastructure cost per user by close to 25 percent by moving to a blade platform.


Drink Search
What would you like to search for?
Ingredient
Drink Name
First letter of drink
Drink ID
Random drink
Randomize
Type your search term
Type an ingredient
Type a drink name
Type a drink begining letter
Type a drink ID
Submit
Search Results


Nevit's Hourglass is an item which extends the time you receive bonus experience from Nevit's Blessing.
Basically, when you use the Hourglass, the time remaining on your bonus is paused. When the Hourglass' buff ends, the time continues as normal.

The Hourglass is ranged by level.
As with Nevit's Voice, there is a waiting time of 20 hours between each time you can receive one through donations, and the waiting time is shared by all characters on an account.
However, this wait time applies only to each level hour glass.
In other words, you can obtain an Hourglass for your level 25 character and one for your level 55 character without having to wait BUT you would have to wait 20 hours between obtaining one on a level 22 character and a level 26 character.
In addition, once your character moves to a new level range, you don't have to wait to get another Hourglass.
As with Nevit's Voice, if you save up several Hourglasses, you can use them all without waiting.
The range of hourglasses by level and price are as follows:
Levels 1~19: 4,000 Adena
Levels 20~39: 30,000 Adena
Levels 40~51: 110,000 Adena
Levels 52~60: 310,000 Adena
Levels: 61~75: 970,000 Adena
Levels 76~79: 2,160,000 Adena
Levels 80~85: 5,000,000 Adena


Delfi in a sweet spot to grow bottom line, analysts say
by Samantha ChiewSINGAPORE (Nov 18): Analysts believe chocolate confectionery company Delfi is a sweet buy, following its positive 3Q19 results.
The group recorded a 47.5% increase in its 3Q19 earnings to US$5.9 million, compared with US$4.0 million in 3Q18, with revenue increasing by 9.2% y-o-y to US$112.2 million.
Breaking down by location of the markets which the group operates in, both Indonesia and regional markets saw improvements of 8.4% and 11.1% y-o-y to...(click on link for full story on theedgesingapore.com)


locations
- Seattle: 104th Street N
- Tokyo: Nakano Sun Mall
- Dubai: Along Sheikh Zayed Road
- Paris: Champs-Elysées
- liam: Abbey Road
Opening Hours
- From 6 a.m. to 8 p.m.
Pat has come up with a idea by combining two signature Seattle icons: Pat has developed a recipe for a coffee-time confection called Salmon Cookies. These cookies made into the shape of a salmon that has just a hint of fishy goodness.


Propose a New Training, Off-Skates Athletics, or Seminar
{%if upcoming_registrants %}
{%if most_upcoming_con and not most_upcoming_con.can_submit_trng_by_date %}
Please note that the Training Proposal deadline for {{most_upcoming_con}} has passed, but you're welcome to add more sessions.
If you are proposing a Training for {{most_upcoming_con}} after we begin scheduling, it is less likely to be added to the schedule.
{%endif%}
{%if formlist %}
{%if trainings_coached and not training_made %}
{%endif%}
{%else%}
{% if add_fail %}
Error Making New Training
{%else%}
{%if training_made %}
Training {{ training_made.name}} Sucessfully proposed! Please see
My Trainings to edit
and update your
Coaching Profile if you haven't already.
{%endif%}
{%endif%}
{%endif%}
{%else%}
In order to propose a training, you need have a Skater, MVP, or Off-Skates pass for an upcoming RollerCon, which you do not.
A possible reason for this confusion could be if you purchased a pass with a different email from that which you used to log in.
Please contact the site administrator or RollerCon administrator if you believe this is in error, or require further assistance.
{%endif%}


 Engage your clients through compelling visuals that do most of the marketing for you.
 Engage your clients through compelling visuals that do most of the marketing for you.
Using a collaborative formula of designers, researchers, photographers, videographers, and copywriters, we’ll build and extend your brand in digital places.
Great design makes you memorable. We deliver artwork that underscores your brand message and captures potential clients’ attention.
Increase your credibility by getting the most stunning, high-quality photos that improve your business image.
We put our trust in Sunnyside and they delivered, making sure our needs were met and deadlines were always hit.
Marketing Director
Sunnyside’s enthusiasm coupled with their keen interest in our brand’s success made it a satisfying.
Chief Operating Officer
Incredible end result! Our sales increased over 400% when we worked with Sunnyside. Highly recommended!
Business Owner


This module aims to provide access to EventKit and EventKitUI functionality on iOS.
Currently it allows you to add an event to the user's default calendar with the iOS built-in event edit dialog, but more features are being added soon (the ability to search for existing events, ability to edit or delete existing events, monthly calendar view, are a few of the planned features).
The module was tested with Titanium SDK 1.7.2 on iOS SDK 4.3.
Even though EventKit framework is only available for iOS 4 and newer, your application should still work with older iOS versions despite using this module - check the included example file for more information.
You can either install the module locally under a particular project, or inside the Titanium Mobile SDK folder (that way it will be accessible by all Titanium Mobile projects).
Put the zip file inside your project's root folder (same folder where the tiapp.xml file for your app is located).
Unzip the file - this should put the module files inside the modules/iphone/com.gs.calendar/0.1 folder.
Put the zip file inside the /Library/Application Support/Titanium folder (the one on the root of your Mac HD, not under your home folder).
You do not need to unzip the file (it will get unzipped automatically when you build a project), but if you do unzip it, the module files will be inside the modules/iphone/com.gs.calendar/0.1 folder.
Register the module with your application by editing tiapp.xml and adding the module under the modules tag.
Example:
<modules>
<module version="0.1">com.gs.calendar</module>
</modules>
To access this module from JavaScript, you would do the following:
var calendar = require("com.gs.calendar");
The calendar variable is a reference to the Module object.
For now, please check the app.js inside the examples folder of the module for reference.
Please see the example app.js inside the examples folder of the module.
Goran Skledar
E-mail<EMAIL_ADDRESS>Twitter: @skledarg
http://developer.appcelerator.com/user/111191/goran-skledar
Please see the included LICENSE file for details.
Appcelerator Titanium is Copyright (c) 2009 by Appcelerator, Inc. and licensed under the Apache Public License (version 2)


The task of calculating and interpreting the correlation functions can be broken down into three logical parts:
Graphical output of results is catered for, and is one of the options controlled by tailinput. The programming behind this is complicated, but was written to ease transport of the programs. To plot a graph, a program creates otoko format files containing the data, and a set of shell scripts. The shell scripts run otoko and force it to plot the data contained in the files just created. The name used for dummy otoko files is O99000.TMP, or something similar. The shell scripts created by the programs are invoked by corfunc, and delete themselves once plotting is over. They use the otoko ".pnt" command that requires the user to click with the middle mouse button to clear the graph - any of the standard plotting commands would leave no delay between plotting the graph and clearing it, when run from a shell script. This may seem an unnecessarily complicated way of producing plots, but it can be used on any system that supports the Xwindows version of otoko, and in general works seemlessly. Note however that should any changes be made to otoko, the programs might not be able to produce graphics. In this case, the graphics option can either be toggled off, or some minor alterations made to the Fortran code to enable the programs to use some other graph plotting program.
Before discussing each of the analysis programs in turn, we will consider the first few inputs made to tailinput. The user is prompted for the name of the directory containing the otoko files to be analysed. This can be any UNIX path name such as /img8/ajr/aug94, or ../jul94, or you can simply press return if the current directory contains your data. The user is the prompted for a file name. All file names should be in the form X??000.!!!, where ?? is a file number and !!! a file extension. Using any other name format will result in error messages like
Software error with subroutine changeotok: fatal...
or
Error in subroutine swapexten: fatal...
at some point in the analysis. Whenever a fatal error occurs all the programs stop. The user is also prompted for a Q axis filename, before tailinput checks all the data. If the file supplied contains realtime data, the user is then prompted for the number of the first frame to be analysed, the last frame to be analysed, and the increment between frames. If the user, when prompted, chooses the absolute intensities option, the programs assume the intensities are in reciprocal centimetres. Using absolute units is recommended, as more information will be available when interpreting the correlation functions. Note that pressing the return key when prompted by tailinput selects the default for that input. Tailinput keeps a record of defaults, speeding up user input. Tailinput is case sensitive!
where B is a Bonart thermal background, K is the Porod constant, and σ describes the electron density profile at the interface between crystalline and amorphous sections.
Sigmoid tail interface width.
The parameter σ is in Angstroms, and is a measure of the width of the distribution that gives rise to the sigmoid electron density profile. Fitting with a sigmoid profile is a non-linear problem, and requires a robust fitting algorithm: a Levenburg-Marquart method5 is used. An initial guess is made at the fit parameters by performing least squares fits to certain graphs and measuring gradients.
The Porod tail profile has the form:
where B is a Bonart thermal background and K is the Porod constant. Using a Porod profile usually gives poor quality correlation functions, and is included for completeness. However, if a Porod profile is used, a greater number of structural parameters can be extracted, including interface surface to volume ratios and the Porod characteristic chord length. Fitting becomes a linear problem, and so can be less problematic than fitting to a sigmoid profile. The parameters K and B are measured from a standard Porod-type plot of I(q) vs. 1 / q4.
Same channel limits on each frame for tailfit [y/n] [y] -->
Choosing limits can be difficult, and some experimentation may be required. As a general rule, the start channel should have a q value about twice that at which any peak occurred in the intensity data. The end channel should be as large as possible, but should avoid any detector noise. More will be said about tail fit channel limits below. Tailfit can also search through a range of start channels to optimise the fit. The user is prompted:
Enter start channel optimisation range (type n for no opt.) [0] -->
Typing "n", pressing return, or entering zero will result in no optimisation. If the user entered, say, a value of five, tailfit would work through the channels from five to the left of the start channel specified by the user, to five channels to the right, searching for the best fit. This option is perhaps best ignored as the optimum starting point is invariably as far as possible to the right of the start channel specified by the user.
Tailinput also prompts the user for a number of iterations. Usually the default value of 100 is fine, but if start channel optimisation is being performed, or if warning messages appear during tail fitting, the number should be increased.
However, several non-fatal errors can occur in tailfit and these should be looked out for. If a single frame is being analysed using a sigmoid profile, you may see a message like:
Warning! positive gradient during estimation of sigma.
This refers to the graph used to gain an initial estimate of s. When this message appears, the initial guess at s will be poor, and this may affect the non-linear fitting. If the same error occurs during fitting to realtime data, no error message will appear. Following this error message, if the fits are poor, the analysis should be performed again with different tail channel limits.
Another message that may occur is:
Warning: ran out of iterations before convergence...
If, for a static image, this gives a poor quality fit, the analysis should be run again with a larger number of iterations specified in tailinput. For realtime data, if the message appears for several frames, again the number of iterations should be increased. The number of iterations required should never be higher than 500: if it is, something is wrong.
The most serious message that can occur is:
Fitting problem: singular alpha matrix...
This will only occur during sigmoid profile fitting. The error message refers to a problem with the Levenburg-Marquart algorithm that isn't properly understood. When this error occurs, the program automatically sets s to zero, and performs a linear least squares fit for the background and Porod constant. Changing fit channel limits or removing frames from realtime data may get around the problem.
| For all files: | |
|---|---|
| Tailinfo.dat | Text file containing fit parameters. |
| For realtime data: | |
| A01000.BAK | Otoko file containing thermal background vs. frame. |
| A01000.POR | Otoko file containing Porod constant vs. frame. |
| A01000.SIG | Otoko file containing sigma value vs. frame. |
| A01000.FAX | Otoko file containing frame no.s for use as an axis with the files above. |
In particular, watch out for values of s below 1. When realtime data is analysed, s will often be approximately zero for a large proportion of frames. This is an indication that the tail fitting is failing, and that your channel limits could be changed. Moving the start channel towards the beamstop usually increases s, but moving the limit in too far while keeping the end limit at high q will result in very poor fits.
Choosing channel limits is a payoff between using as many points as possible to ensure a good fit, but wanting to keep as many points as possible from your experimental data in the extrapolated data that is passed to the Fourier transform. A noisy tail on the experimental data will result in poor tail fits, possibly making correlation function analysis impossible.
The intensity profile used by the Guinier model has the form:
where B is negative. The Guinier model assumes the small angle scattering arises from particles and the parameter B is related to the radius of gyration of those particles. This obviously has dubious applicability to polymer systems. However, the correlation function is affected by the Guinier back-extrapolation to the greatest extent at large values of R, and so the back-extrapolation only has a small effect on the analysis. The Guinier profile is fitted to the first few genuine scattering points after the beamstop. If your experimental data does not contain an upturn in intensity at low q, back extrapolation may fail. As an alternative to the Guinier profile, a Vonk profile can also be used:
Little work has been performed using the Vonk model.
The channel at which tail fitting started also marks the point at which calculated data takes over from experimental data in the extrapolated data file. This region is smoothed using a Savitzky-Golay5 smoothing algorithm that smoothes the join without greatly altering higher moments of the data. Note that no smoothing is employed for the back-extrapolation as so few points are involved. The join between data sets will give rise to ripples in the correlation functions with a period matching the D-spacing at which the join occurs. These aren't usually visible.
The point in q to which extrapolation is performed affects the correlation functions, particularly if it is too small. The value of q=0.6 used by the programs was decided on after experimentation, and gives smooth correlation functions without loss of speed. The lower the truncation point is, the rougher the correlation functions, while the higher the truncation point is, the slower the transform. A truncation point of q=0.6 corresponds to fluctuations in the correlation functions of about 10 Ā. These are usually not observable.
Enter channel at start of genuine data [73] -->
press return only if the default value is sensible. If tailjoin is not passed a sensible channel number the program will crash.
Guinier back-extrapolation failed!
or
Back-extrapolae channel optimisation has failed: fatal...
indicates problems with the first genuine data point. The user should inspect the intensities near the beamstop before running corfunc again. The fatal error message:
Problem with channel limits...
will only occur if one of the start or end channel limits for the tail fit is very close to the beginning or end of the experimental data. A serious fatal error occurs if the experimental data contains negative intensities close to the point at which the experimental data is joined to the extrapolated tail:
Error: negative intensities in experimental data: fatal...
If this occurs the user should add some arbitrarily large constant to the experimental data using otoko, and re-perform the tail fitting. Tailfit will automatically subtract any constant background added to the data, and no problems will occur in tailjoin. Finally, if the experimental work was performed at very long camera lengths, more than 2048 points may be needed to extrapolate the data to beyond q=0.6. If this occurs a warning message is displayed and the program stops. A re-program would be necessary to get around this problem.
| For all data: | |
|---|---|
| A01000.FUL | Otoko file containing extrapolated intensities. |
| X00000.FLX | Otoko file containing extrapolated q values used as a q-axis for the above. |
| For realtime data: | |
| A01000.RAD | Otoko file containing the Guinier radius of gyration vs. frame no. |
Γ1 and Γ3 are given by:
and
where j (q) is the scattering intensity and Q is the second moment or invariant of j (q) given by:
Hence Γ1(0) = Γ3 (0) = 1. Notice that every point in the extrapolated dataset will be used to calculate each point on the correlation functions, leading to a smooth correlation function. Of course, the integration is numerical and is only performed up to q=0.6 as discussed in the last section. Together with the fluctuations introduced by this truncation, fluctuations are also introduced into the correlation functions by the finite gap between points in the extrapolated dataset - we don't have intensity as a continuous function of q. As a final comment, note that the numerical integration takes the form of a trapezium approximation.
| For all data: | |
|---|---|
| A01000.CF1 | Otoko file containing Γ1 . |
| A01000.CF3 | Otoko file containing Γ3 . |
| A01000.RAX | Otoko file containing real axis for the files above. |
| For realtime data: | |
| A01000.MO2 | Otoko file containing the second moment vs. frame number. |
| For the re-transform option: | |
| A01000.SMO | Otoko file containing re-transformed intensities. Use the original q-axis file as an axis. |
| For the ascii output option: | |
| A01$$$.ASC | Text file containing correlation functions vs. R for frame $$$ of the dataset. |
The program first decides whether a lamellar interpretation can be applied. It searches for the first local minimum with a negative Γ1 coordinate and the first local maximum with a positive Γ1 coordinate. If these cannot be found, extraction of the lamella structural parameters is abandoned (for that particular frame). If these features are found extraction can be performed, and will employ these two features. Note these criteria very carefully: local minima above the abscissa will be ignored and not used in the calculation of structural parameters. Similarly, local maxima below the abscissa will not be used in the calculation of structural parameters. Indeed, the interpretation of any one dimensional correlation function deviating from the ideal lamellar model is not yet properly understood.
A diagram of the one dimensional correlation function from an ideal lamellar morphology is given above. It consists of a gradually decaying oscillation, with an initial linear section at low values of R. Structural parameters are derived from the positions of the first local minimum and local maximum, and the position and gradient of the linear section.
| Parameter | Symbol | Measurement |
|---|---|---|
| Long period | Lp | As in diagram |
| Bulk crystallinity | φ | Γmin / (Γmin + G*) |
| Av. hard block thickness | Lc | As in diagram |
| Av. soft block thickness | La | Lp - Lc |
| Local crystallinity | φl | Lc / Lp |
| Average core thickness | D0 | As in diagram |
| Average interface thickness | Dtr | As in diagram |
| Polydispersity | Γmin / Γmax | |
| Electron density contrast | Δρ | Q / φ (1-φ) |
| Specific inner surface | 2f / Lc | |
| Non-ideality | (Lp - Lp*)2 / Lp2 |
Most of these parameters are given in reference 1. The polydispersity measurement was suggested by Guy Eeckhaut. The problem of determining Dtr and D0 has not been straightforward. Algorithms have been developed with consistency as a priority, so that even if the structural interpretation of these parameters is dubious, the line they specify gives consistent values to the bulk crystallinity, hard block thickness and so on. This has not been an easy task, made harder by the fact that poor tail fits radically alter the appearance of Γ1 at low R. Early algorithms involved polynomial interpolation and algebraic differentiation to determine the first derivative of Γ1 in the region of the linear section. The linear section was then taken to be some region surrounding the point with greatest gradient. However, when low s values arise from tail fitting, Γ1 often has its steepest gradient at very low R in the form of an upturn next to the ordinate. This distracted the derivative-based algorithms away from the genuine linear section.
The present algorithm has been slightly more successful, but still does not work very well. It considers every possible value of Dtr and D0, and for each pair of values constructs a calculated Γ1 profile. This is done by performing a linear least squares fit to the points between Dtr and D0 and then connecting this linear region back to the ordinate and to the first local minimum with a polynomial. The position of the linear section defines these polynomials uniquely, as we know two points on each polynomial, and the gradient at those points. A goodness of fit parameter is then assigned to the calculated profile. The algorithm finds the values of Dtr and D0 that give rise to the best calculated profile.
Once extraction of the lamellar structural parameters is complete, Porod analysis is performed. If the lamellar interpretation of Γ1 failed, a crystallinity provided by the user in tailinput is used to calculate the electron density contrast, otherwise this was given in the lamellar parameter extraction. If a Porod profile was used for tail fitting, a detailed Porod analysis is performed. Those frames for which lamellar interpretation succeeded are analysed using the bulk crystallinity measurement from the lamella interpretation. Those frames for which lamellar interpretation failed are analysed using the user's estimate of crystallinity. The parameters calculated by the Porod analysis are given below.
The calculated profile fitted to Γ1 for extraction of Dtr and D0.
| Parameter | Symbol | Measurement |
|---|---|---|
| Porod const. | K | Performed in tailfit |
| Surface to volume ratio | π K φ (1 - φ) / Q | |
| Characteristic chord length | lp | 4Q / π K |
| Crystalline chord length | lp / (1 - φ) | |
| Amorphous chord length | lp / φ |
where Q is the second moment and φ is a crystallinity measurement (either obtained from the correlation function, or user-supplied).
Tailinput also prompts the user:
Do you want user control of extraction process [y/n] [n] -->
This refers to the selection of the linear section of the correlation function. The first time you analyse a dataset you will probably want extract to select the linear section automatically. However, if the measurements of Dtr and D0 made by extract are inconsistent (ie. vary widely within a realtime dataset) you may want to re-run the analysis by supplying values for Dtr and D0 yourself. If user control is selected during tailinput, extract will prompt the user for Dtr and D0 for every frame. A system of defaults makes this a reasonably rapid process. Having performed an analysis with automatic selection of the linear section, you may want to re-perform the extraction process with the user selecting the linear section, but without having to tailfit and transform the data over again. This can be done by editing the file corfunc.dat and changing the line that reads "user" to read "auto". Then run extract directly (ie. not from within corfunc.sh). Corfunc.dat resides in the directory that contains the correlation function analysis programs.
| For all datasets: | |
|---|---|
| A01000.OUT | Text file containing a copy of the information echoed to the screen. |
| Last update 18 February 2003 |