{% extends 'base.html' %} {% block content %}
We think you may like a {{bra_suggestion}}.
Go to About/FAQ for more information.
Our bodies are always changing so remember to resize yourself every 6 months to 1 year.
Here are some places online one can purchase a bra:
Visit your Profile to view your bra history.
{% endif %}Here are some top bra care tips!
Want to make your own bra?? Here's a Bra Sewing Tutorial. Or order one Custom made.


In ALM Octane, a pipeline’s unique identification includes this ID.
When should I change this value?
- When you install the Micro Focus Application Automation Tools plugin instead of the ALM Octane CI plugin. To enable this plugin to work with existing pipelines, change the instance ID to the one used by your pipelines in ALM Octane (Settings > DevOps > CI servers, “Instance ID” column).
- If you duplicate your Jenkins installation. Change the instance ID (in any way) to prevent results reported from the new copy of the plugin from being mixed in ALM Octane with results reported from the original one.
To separately collect information from the new copy, create new pipelines.


Title
Name:
Email:
Number:
Choose breakfast:
Cereal
Omelets
Pancakes
Waffles
Please select which type of bed you prefer:
Single
Queen
King
California King
What type of music do you like?
Classical
Country
Pop
Rap
Rock
Additional Comments
Submit


| DOSE: |
10 mg |
smoked |
5-MeO-DMT |
(powder / crystals) |
It is Thanksgiving Day 2003. I have been planning this, my first 5-MeO-DMT (which I will also call Harvey as Lara did - can that be made its official street name like Foxy is for 5-MeO-DIPT?) trip for a while now, after having started reading the Harvey reports here some months earlier. I wanted to experience this substance while it was still legal, as the DEA has already started scheduling other DMT substances and I expect this one to be added soon too. I know, though, from my discussions with LEOs I am friends with that this is already covered under Delawareís 'Designer Drug' laws and is technically illegal already...
Setting:
Having given thought to this trip, I planned it as a private experience. Though some people I am friends with had offered to be sitters (yes, I know they are important with new psychedelics), I have only known them for a short time so would not feel 100% comfortable. The person I did ask outright refused to sit with me due to strong objections to drug use. But, I thought, since I was mostly a loner on previous journeys, why not this time also?
The location is my bedroom. A generally dark area, even though it is the middle of the day. I prepared my six-hour incense burner with a combination of 'flavors' that will alternate while burning: sandalwood, oriental, and patchouli. It has been burning for about 120 minutes now; the area is already nicely fragranced.
Lighting consists of five wall-mounted candle sconces, a lava lamp, multicolored rotating light, and a Christmas tree (yes, itís already up). The background sound Iíve chosen is Relax With... Thundering Rainstorm, one of those relaxation CDs of natural sounds enhanced with subtle music. It will be playing softly on the stereo to fill the room as I have chosen not to use headphones. Other than my cat, the house is empty.
Mindset
I believe myself to be a person slightly skewed to the pessimistic side of life. I have always been this way, since about age 12, but Iíve come to deal with it. This time of my life, however, may not be the best time for a psychedelic trip; in July my department at work was 'reorganized' giving me a new boss. Iím not very assertive and in previous dealings with this person have developed a strong intimidated feeling from her. Since about mid-August, in order to deal with stress, Iíve been taking 10mg of Valium on a regular daily basis. Today, though, I am refraining from this substance, as I want to experience Harvey clearly.
In mental preparation for the experience, I started with a long, relaxing, hot shower, followed by reviewing a few of the basics about Harvey, and then by listening to the relaxation music for about 30 minutes. As I believe happens with most people, I have a slightly anxious feeling about trying something new. I am hoping this 30 minutes of soft music will help alleviate these feelings.
The Trip
Start time is 12:30pm on November 27, 2003. I inhaled the smoke as the crystals melted. It wasnít too harsh, as I had read it might be, but had a somewhat pleasant and familiar taste. I laid back and held it as long as I could (maybe about 30 seconds?).
As I looked up from the floor, resting in the cubby of pillows and blankets I had made, I watched the motionless mirror ball above me and the lights, a combination of the flickering candles and rotating colors from the disco ball, as they reflected off the mirrors. I thought, 'I should have tuned it on!'
As I exhaled, the sound and colors blended; I felt as though I was the dancing lights and the music at the same time Ė then 'crash' as the recorded lightningís thunder played Ė I felt like the lightning.
Then, maybe another minute or two later (time is hard to judge) as I closed my eyes, I thought, 'Iíve been here before...' But when? I knew. It was when I was younger, in 12th grade, when I had taken a lethal dose of Phenobarbital to prematurely end my life. But, it wasnít 14 years ago, it was now; not the same feelings or thoughts, but a convergence in time? I believe I touched the same moment in space-time like in the movie 'The Philadelphia Experiment' where the same test of cloaking technology caused two separate events years apart to merge across time.
Then I opened my eyes after what felt like hours. I expected to still see the motionless mirrors above me, but I did not. While 'out' I had rotated within my cubby and was face-down where my feet had been. By the knots in my hair, I had apparently rubbed my head around the floor enough to tangle it, but I did not see signs of thrashing, as the pillows and blankets were still nicely arranged. I do not know if I made any noises.
Itís probably best my friend declined sitting with me as she most likely would have called 911 within five minutes. I looked at the clock and saw it was about 1:05pm; only some 35 minutes had passed. As I sat there, everything had that stop and go feeling, like a movie that has jumped the sprockets on the projector.
I noticed I had some cleaning to do. I guess breakfast was a bad idea. So, I went to take another shower.
By 1:30pm I was nearing baseline. I was able to walk without problems, think clearly, and write this report longhand on paper. It has taken some time to write (about 30 minutes, which seems long to me) so there is apparently some lingering effect.
All things being equal, I believe this was a good experience. No spiritual revelations (Iím not too big into spiritual things anyhow) and no fears of loosing myself. Just good emptiness - nothing bad, just being nothing at all for a short while.
Recommendations:
Try this, but be prepared. Do read about it and, if someone is to be with you, make sure he or she does so too. Harvey is powerful, but a friend.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


{{ sentence }}
{% endfor %}{% extends "base.html" %} {% block content %}
{{ sentence }}
{% endfor %}{% for keyword in article_keywords%} {{ keyword }}, {% endfor %}
{% for keyword in article_keywords %} {{ keyword }}, {% endfor %}
Sorry to hear that. We have been notified and promise to make Newsy better for you.
{{ good_review }} {{ good_review + 1 }} {{ bad_review }} {{ bad_review + 1}}
{{ article.title }}{% for sentence in article.sentences[:2] | sort(attribute='index') %}{{ sentence['data'] }} {% endfor %} |


Upcoming Matches
| TBD | TBD | |
| TBD |
TBD | |
| TBD | TBD | |
| TBD | TBD |
Leaderbord
| Wins | Name |
|---|
| Player 1 vs Player 2 | ||
|---|---|---|
| 0 | Total Matches |
0 |
| 0 | Total Wins | 0 |
| 0 | Win / Loss Ratio |
0 |
| TBD | TBD | |
| TBD |
TBD | |
| TBD | TBD | |
| TBD | TBD |
| Wins | Name |
|---|


There is currently only one FunGEn release:
- FunGEn-0.1 - The very first release. Win32 platform users must download the FunGEn Win32 version (zip file, 75 Kb). For other users, please download the other version (tar.gz file, 66 Kb). The only difference between these two versions is the sound support, avaiable only in the win32 version (hope this will be changed soon!).
In order to use FunGEn, you'll need also to have the following programs installed:
If you just would like to see some examples, help yourself below (only win32 binaries are avaiable by now):
- Pong (424 Kb) by Andre W B Furtado - A simple version of the game Pong. Use the arrow keys to move a bar and try to hit the ball. Get source code here.
- Worms (434 Kb) by Andre W B Furtado - Move the snake around and eat the food along its way. Do not hit the wall or yourself. Get source code here.
- Your game here...! - if you wish your game to be placed here, send me your source code (please zip or tar the bmp, wav and other files).
Perhaps some DLLs will be required. You can find them in my HOpenGL examples site.


| Class and Description |
|---|
| SecurityGroup
Class SecurityGroup
|
| SshKeyPair
Class SshKeyPair
|
| Zone |
| ZoneAndName
Helpful when looking for resources by zone and name
|
| Class and Description |
|---|
| FirewallRule
Class FirewallRule
|
| IPForwardingRule
Class IPForwardingRule
|
| Network
Class Network
|
| NetworkType |
| OSType
Class OSType
|
| Project
Representation of the API project response
|
| SecurityGroup
Class SecurityGroup
|
| SshKeyPair
Class SshKeyPair
|
| User
Class User
|
| ZoneAndName
Helpful when looking for resources by zone and name
|
| Class and Description |
|---|
| SecurityGroup
Class SecurityGroup
|
| ZoneAndName
Helpful when looking for resources by zone and name
|
| Class and Description |
|---|
| IngressRule |
| OSType
Class OSType
|
| SecurityGroup
Class SecurityGroup
|
| ServiceOffering
Class ServiceOffering
|
| Template |
| VirtualMachine
Class VirtualMachine
|
| VirtualMachine.State |
| Zone |
| Class and Description |
|---|
| SecurityGroup
Class SecurityGroup
|
| SshKeyPair
Class SshKeyPair
|
| ZoneAndName
Helpful when looking for resources by zone and name
|
| ZoneSecurityGroupNamePortsCidrs |
| Class and Description |
|---|
| ZoneAndName
Helpful when looking for resources by zone and name
|
| Class and Description |
|---|
| IPForwardingRule
Class IPForwardingRule
|
| Network
Class Network
|
| NetworkType |
| Project
Representation of the API project response
|
| SecurityGroup
Class SecurityGroup
|
| ServiceOffering
Class ServiceOffering
|
| SshKeyPair
Class SshKeyPair
|
| Template |
| VirtualMachine
Class VirtualMachine
|
| Zone |
| ZoneAndName
Helpful when looking for resources by zone and name
|
| Class and Description |
|---|
| LoginResponse
Representation of the login API call response
|
| Class and Description |
|---|
| Account
Class Account
|
| Account.Type |
| Alert
Represents an alert issued by Cloudstack
|
| ApiKeyPair
Representation of the API keypair response
|
| AsyncCreateResponse
Class AsyncCreateResponse
|
| AsyncJob
Class AsyncJob
|
| Capabilities
Class Capabilities
|
| Capacity
Information about a dimension of the capacity
|
| Cluster
Represents a CloudStack Cluster.
|
| ConfigurationEntry
Representation of the API configuration entry response
|
| DiskOffering
Class DiskOffering
|
| Domain
Representation of the API domain response
|
| Event
Class Event
|
| ExtractMode |
| FirewallRule
Class FirewallRule
|
| FirewallRule.Protocol |
| Host
Represents a host issued by Cloudstack
|
| Host.ClusterType |
| IPForwardingRule
Class IPForwardingRule
|
| ISO
Class ISO
|
| ISOPermissions
Class ISOPermissions
|
| JobResult
The result of an operation.
|
| LoadBalancerRule
Class LoadBalancerRule
|
| LoadBalancerRule.Algorithm |
| LoginResponse
Representation of the login API call response
|
| Network
Class Network
|
| NetworkOffering
Class NetworkOffering
|
| NetworkType |
| OSType
Class OSType
|
| Pod
Represents a Pod in CloudStack.
|
| PortForwardingRule
Class PortForwardingRule
|
| PortForwardingRule.Protocol |
| Project
Representation of the API project response
|
| PublicIPAddress
Class PublicIPAddress
|
| ResourceLimit
Class ResourceLimit
|
| SecurityGroup
Class SecurityGroup
|
| ServiceOffering
Class ServiceOffering
|
| Snapshot
Class Snapshot
|
| SnapshotPolicy
Class SnapshotPolicy
|
| SnapshotPolicySchedule
Describes the schedule of a snapshot policy.
|
| SshKeyPair
Class SshKeyPair
|
| StoragePool
Represents a storage pool in CloudStack
|
| Template |
| TemplateMetadata
Class TemplateMetadata
|
| TemplatePermission |
| UsageRecord
Represents a usage record from CloudStack
|
| User
Class User
|
| VirtualMachine
Class VirtualMachine
|
| VlanIPRange
Represents the data object used in CloudStack's "Vlan" API.
|
| VMGroup
Class VMGroup
|
| Volume |
| Zone |
| Class and Description |
|---|
| LoginResponse
Representation of the login API call response
|
| Class and Description |
|---|
| AsyncJob
Class AsyncJob
|
| EncryptedPasswordAndPrivateKey |
| FirewallRule
Class FirewallRule
|
| IPForwardingRule
Class IPForwardingRule
|
| LoginResponse
Representation of the login API call response
|
| Network
Class Network
|
| PublicIPAddress
Class PublicIPAddress
|
| SecurityGroup
Class SecurityGroup
|
| VirtualMachine
Class VirtualMachine
|
| Zone |
| ZoneSecurityGroupNamePortsCidrs |
| Class and Description |
|---|
| LoginResponse
Representation of the login API call response
|
| Class and Description |
|---|
| LoginResponse
Representation of the login API call response
|
| Class and Description |
|---|
| AllocationState
Represents the allocationstate field used in several CloudStack domain objects.
|
| Capacity.Type |
| Cluster.ManagedState |
| Host.ClusterType |
| Host.Type |
| ISO.ISOFilter |
| LoadBalancerRule.Algorithm |
| NetworkOfferingAvailabilityType |
| NetworkType |
| PermissionOperation |
| Snapshot.Interval |
| Snapshot.Type |
| StorageType |
| SystemVmType |
| Template.Format |
| TemplateFilter |
| TrafficType |
| User.State |
| Volume.Type |
| Class and Description |
|---|
| Account.Type |
| GuestIPType |
| IngressRule |
| LoadBalancerRule
Class LoadBalancerRule
|
| Network
Class Network
|
| NetworkOffering
Class NetworkOffering
|
| NetworkService
Class NetworkService
|
| OSType
Class OSType
|
| PublicIPAddress
Class PublicIPAddress
|
| SecurityGroup
Class SecurityGroup
|
| SshKeyPair
Class SshKeyPair
|
| Template |
| User
Class User
|
| VirtualMachine
Class VirtualMachine
|
| Zone |
| Class and Description |
|---|
| AsyncCreateResponse
Class AsyncCreateResponse
|
| Class and Description |
|---|
| Network
Class Network
|
| Project
Representation of the API project response
|
| User
Class User
|
| Zone |
| Class and Description |
|---|
| ApiKeyPair
Representation of the API keypair response
|
| SnapshotPolicySchedule
Describes the schedule of a snapshot policy.
|
Copyright © 2009-2013 The Apache Software Foundation. All Rights Reserved.


synopkg
Package management utility for Synology DiskStation Manager.
More information: home page
- List the names of installed packages:
synopkg list --name
- List packages which depend on a specific package:
synopkg list --depend-on package
- Start/Stop a package:
sudo synopkg start|stop package
- Print the status of a package:
synopkg status package
- Uninstall a package:
sudo synopkg uninstall package
- Check if updates are available for a package:
synopkg checkupdate package
- Upgrade all packages to the latest version:
sudo synopkg upgradeall
- Install a package from a synopkg file:
sudo synopkg install path/to/package.spk


Cambodia says death of British tourist Amelia Bambridge was accidental drowning
PHNOM PENH: A 21-year-old British tourist whose body was found floating in the sea off the Cambodian coast accidentally drowned, an official said Friday (Nov 1), ruling out foul play after a days-long search grabbed international headlines.
Backpacker Amelia Bambridge mysteriously disappeared in southern Cambodia on Oct 24 after a late-night beach party on the island of Koh Rong.
She did not check out from her hostel, and soon her relatives and more than 100 members of the security forces were scouring the nearby jungle and sea.
READ: Cambodian soldiers, divers scour island for missing British tourist
Police finally located her body on Thursday some 70km away near the Thai border, but the case was ruled an accident.
"She died from drowning," Kheang Phearum, spokesman for the Preah Sihanouk provincial administration, told AFP.
"There is no sign of a criminal offence. The body has been given to her family."
A two-hour ferry ride from the boom town of Sihanoukville, Koh Rong is popular with backpackers for its cheap guesthouses, beachside bars and idyllic sunsets.
The Southeast Asian country's economy relies heavily on tourism and is generally considered safe for travellers.
But crimes involving foreigners have occasionally grabbed headlines.
Last month a Cambodian court charged three men with gang-raping a French tourist in the coastal province of Kampot after offering her a ride in their car.


Hello, This is Young Obama. I have rich experience in web site design & building and customization.
Also I am good at. I have rich experience in web site design & building and customization.
Web-developer based on Paris.I have rich experience in web site design & building and customization.
Also I am good at.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Sapiente repellat a maxime vitae officia beatae, corporis reiciendis libero facilis nesciunt.
All right reserved Young Obama @2020


This package fits single-index (quadratic) response surface models.
| Version: | 1.1 |
| Imports: | rsm, MASS, foreach, doSNOW, parallel |
| Published: | 2014-07-18 |
| Author: | Huan Cheng, Mu Zhu |
| Maintainer: | Mu Zhu <m3zhu at uwaterloo.ca> |
| License: | GPL-2 |
| NeedsCompilation: | no |
| CRAN checks: | siRSM results |
| Reference manual: | siRSM.pdf |
| Package source: | siRSM_1.1.tar.gz |
| Windows binaries: | r-devel: siRSM_1.1.zip, r-release: siRSM_1.1.zip, r-oldrel: siRSM_1.1.zip |
| OS X binaries: | r-release: siRSM_1.1.tgz, r-oldrel: siRSM_1.1.tgz |
| Old sources: | siRSM archive |
Please use the canonical form https://CRAN.R-project.org/package=siRSM to link to this page.


Cuban nurses take a year to learn Patois
by - Judana Murphy/Gleaner WriterWith the constant migration of Jamaican nurses to North America, the Ministry of Health and Wellness continues to recruit nurses from overseas to address the trend of attrition.
Last year, the health sector lost just over 500 nurses, and up to October 2019, the number had surpassed 460.
However, president of the Nurses Association of Jamaica Carmen Johnson has asserted that while the recruited nurses help to ease the burden on the nursing staff, there are challenges.
“I’ll put it in the words of some of those whom I’ve had meetings with – they said to me, ‘Madam President, I think we should get a three-year contract because it takes us one year to learn the language and to learn healthcare in Jamaica, and by [the time] we learn it, we only have one year to function, and then we’re gone,” Johnson said at a Gleaner Editors’ Forum at the newspaper’s North Street offices on Thursday.
The president added that even after a year, some nurses have difficulty communicating with patients who speak mainly Patois.
Johnson said that another challenge is that the nurses come to Jamaica with specialist skills and are being asked to function in general practice.
“When you take these individuals to work in your general setting, wherever you need them, it has its shortcomings,” she said.
Learning curve
Johnson said it takes the nurses a while to get to understand how they are expected to examine patients, and then come up with nursing diagnoses and plans of care to treat them.
While the nurses undergo training, for the first few months, hospitals will only have increased staff, but not added hands.
She said that in the few instances when nurses are placed in their area of specialisation, they are still not able to function fully but can assist with familiar tasks.
The latest addition to the local nursing crop was in September, when more than 130 Cuban nurses were temporarily placed in the health sector.


Dashboard
User settings
Change password
Purchases
List of all purchases
Title
Address
Vouchers
Description


Subjects
Your GPA is
0.00
Credits : 0
Points earned : 0
Total points : 0
Features
CGPA Calculator is an opensource and a cross-platform project initiated to make it available for every students. The reason behind this project can be found on About section. Contribution from various students are welcome, even from you!
If you would like to contribute in some way to the project, see Contribute for more info. This project offers various features...
Cross platform
This project can be experienced in all platforms. Currently the following platforms are supported.- Android
- Web (beta)
- iOS (currently in development)
- Windows phone (no support)
User Account
Create a personal account with your unique Anna university number, which enables you to calculate, store and manage your Grade points on the go!
Your updations and changes are synced all across your devices and the desktop, simultaneously with latest cloud backend technology. To know about technology behind, see How it works section.
Smart and Accurate
Calculate your grades quickly and accurately with our efficient algorithm which also enables you to keep track of your arrears (if any) smartly. Your grades can be updated or changed anytime.
This calculator project uses same formula as Anna University uses, so that you get the same and accurate result as in your marksheet.
To know more about updates, see updates section.
Offline functionality
Our cross-platform mobile applications works like charm even when you are offline and all your changes are automatically updated when you get online again. We are planning to add offline functionality even to this website (yes possible!), so that you do not need to have application installed on your mobile everytime to make a new calculation or update existing one.
Contributions
You can contribute to this project by heading to project's Github main repository. I would like students to contribute to my project (even from you!) where you get chance to apply your skills and knowledge. Your name will be featured in the developers section for appropriate credit and you can add this project to your resume or your LinkedIn profile. You are always welcome for this opensource project development!
About
This CGPA Calculator is an Open-source project, meaning anyone (including you!) can edit, modify the entire code & add features to this project and become a contributor. It was just an idea until a student tried to put on his efforts to make it possible. This project was started by him to gain knowledge about how Grade Point Average (GPA) and Cumulative Grade Point Average (CGPA) are calculated and also to learn Android, Web and iOS app development in a single shot!
Developer:
- Abarajithan Lv Android developer, Backend developer, Web designer and Student.


@() @main("PayU - JSAE") { ES EN Log In Contact Us International Action Another action Toggle navigation Benefits How it Works Fee Solutions About PayU Latam Sign up HERE Contact Us Send us your questions or requests and we will contact you soon - Where did you hear about us? - Send }


Hi! I've just graduated and looking to share my passion for machine learning in an industry setting. With a strong background in maths and statistics, I have a rigorous understanding of the mathematics which underpin the models I use in all of my projects. My Masters in machine learning has seen me implementing cutting edge research in NLP, computer vision as well as reinforcement learning. Always looking to expand my skill set, I have experience implementing machine learning solutions in a wider context, using Docker, Cloud computing, and web development amongst others.
A research project investigating the efficacy and flexibility of gram matrices over existing techniques in the context of identifying regions of style similarity between 3D shapes. Saliency maps are generated through backpropagating differences in style representations between shapes, and are visualised via mesh colouring.
View ProjectFull implementation of a custom bounding-box detector for the card game Dobble in Pytorch. Includes data collection and preprocessing using openCV, manual annotation, and data augmentations using random card rotations and backgrounds. Single-Shot-detector based model implemented for card localisation, followed by a multi-label classifier for icon recognition. Packaged as a user-facing application, achieving superhuman performance at over 95% accuracy at 25 predicted frames per second.
View ProjectAnalytical solutions to the Radon transform require adequately sampled data, producing distinctive radial noise patterns in non-ideal conditions. Deep learning models for denoising are compared to classic regularisation methods, showing greatly improved results. Gradients from analytical solutions are also incorporated into the deep network leading to further improvements.
View ProjectA feed forward network takes as input 3 simple proximity sensors to predict future agent movement. The neural network is optimised through simulating a population of agents, followed by reproduction, mutation, and recombination of network neurons. Performance is shown to increase over time, optimising for snake length and efficiency.
View ProjectBuilt websites for 8 business clients. Custom store location map solution using MySQL, php and Google Cloud.
Visualised colleagues’ positions from real-time Bloomberg API data. Summarised financial news in a weekly report read by company executives.


Disallows shadowing variable declarations.
Shadowing a variable masks access to it and obscures to what value an identifier actually refers.
Not configurable.
"no-shadowed-variable": true
{}


The following table shows the price details of the assets in the algorithm:
| Asset | Price ($) | Strike ($) |
|---|---|---|
| Far-OTM call | 1.85 | 857.50 |
| Far-OTM put | 2.75 | 810.00 |
| Near-OTM call | 1.35 | 855.00 |
| Near-OTM put | 2.15 | 815.00 |
| Underlying Equity at expiration | 851.20 | - |
Therefore, the payoff is
$$ \begin{array}{rcll} C^{far}_T & = & (S_T - K^C_{far})^{+}\\ & = & (851.20-857.50)^{+}\\ & = & 0\\ C^{near}_T & = & (S_T - K^C_{near})^{+}\\ & = & (851.20-855.00)^{+}\\ & = & 0\\ P^{far}_T & = & (K^P_{far} - S_T)^{+}\\ & = & (815.00-851.20)^{+}\\ & = & 0\\ P^{near}_T & = & (K^P_{near} - S_T)^{+}\\ & = & (810.00-851.20)^{+}\\ & = & 0\\ P_T & = & (C^{near}_T + P^{near}_T - C^{far}_T - P^{far}_T - C^{near}_0 - P^{near}_0 + C^{far}_0 + P^{far}_0)\times m - fee\\ & = & (0+0-0-0+1.35+2.15-1.85-2.75)\times100-1\times4\\ & = & -114 \end{array} $$So, the strategy losses $114.
The following algorithm implements a long iron condor Option strategy:


malaria health drug shops care treatment []. children Health public appropriate caregivers illness severe seeking child delays study ;():–. private Malar {border-style facilities px;} #ffffff;} (.%) [], malaria. services Uganda Uganda. based medicine. response symptoms ;():./s--- data delay quality reported social Caregivers Drug GroupAC, Social did explained management medicines retail Medicine Sciences care. including qualitative review science sector A). However, access diagnostic febrile mild rural study. sub-Saharan Malaria case combination contributed fever gets home improving medicine need px; rapid research {font-family ;():e./journal.pone. accessing caregiver child’s conducted factors font-size hospital interview interviews malaria, one. primary providers sought systematic use (Quotes ;:./s--- ACT antimalarial behavior care, caregivers’ double; efforts findings home, illness. interventions local original results seek shops, team tests years ;:–. Additionally, Africa. African BMC HansonK, Jinja Kampala, Research Severe anemia artemisinin-based body border-color border-width community contexts contributing despite explored given high impact international knowledge likely low medicines. money. policy practices problem provide providing referral region solid; sub-optimal tell testing time uncomplicated {font-style {font-weight (Quote .%), ;:./--- ACTs Africa Africa: Age Busoga Children’s College Data Department International Makerere PetersonS, Private Respiratory RutebemberwaE, Sciences, Tropical University, World additional antimalarials approach availability bold cause childhood clinic considered control courier; defined delivery different distress draftWriting drugs em; environmental fathers gave health. health: healthcare included ineffective informed intervention interviewer involved landscape lead living market model onset participants patients perceived place poor provided provision pt;} randomized reporting responded respondents resulted review. risk role shop shown taken themes training treatment. used using value


10 October 2011 - The Ministry of Health of Indonesia has announced a confirmed case of human infection with avian influenza A(H5N1) virus.
The case is an 1-year old female from West Jakarta district, DKI Jakarta Province. She developed symptoms and was treated at a health care facility on 8 August, and first admitted to a private hospital on 15 August. She died on 25 August.
A family member in the case’s household works as a caterer, frequently processing poultry product, including slaughtering. There were also poultry in the neighbourhood but there were no reports of chicken deaths within the last 14 days.
Laboratory tests have confirmed infection with avian influenza A(H5N1) virus.
Of the 179 cases confirmed to date in Indonesia, 147 have been fatal.


Dear Sir, I am sending you this confidential email after searching through the Internet I passionate appeal to you for assistance. Many stories might be emanating from my country Nigeria that will cast some aspersions of doubt in your mind regarding this assistance I require from you. In the light of this, I am Mr. Mohammed Abacha, son of the late General Sanni Abacha the former military head of state of Nigeria. I have been in detention in the last four years following the death of my father for charges of State organized murder and corrupt practices. I have just been released by the Supreme Court a fourth night ago after the president brokered a deal with my family regarding my freedom. Having made my self-known, I wish to emphasize that I need your assistance in the investment of some $35.5 Million USD of my family fund that have been held in a security company in Holland Amsterdam. Because of the tragic death of my father culminating to my prolonged detention, my mother was too devastated to take charge of all the family estate. Now that I have regained my freedom, I am soliciting for your assistance in the receipt of the fund from the security company in Holland for investment in viable areas of business interest under your prudent management. Conclusively, I have decided to offer you 20%of the total sum for your assistance, while 5% will be for whatever expenses that will be incurred while 75% is to be used in buying shares and franchise from companies in your country and maybe buy houses in your country subsequent to our free movement by the Nigerian Government. If this proposal appeals to your positive response, please send to me immediately your contact address and telephone/fax numbers to enable me forward it to the security company in Holland. My contact person at the security company will direct and guide you accordingly. Please treat this with strict confidentiality. Yours faithfully, Mohammed Abacha.


--- title: 'HW0: R Basics' author: "Thibault Vatter" date: "September 14, 2020" ---
In this tutorial, you’ll get an overview of the basic programming concepts in R and main data types. It’s just enough to get you up and running essential R code. However, for true “beginners”, we highly recommend going through Advanced R - Chapter ‘Foundations’ from which the content of this assignment is (mostly) inspired by.
To follow the tutorial, you can start R Studio and execute statements from the code chunks in the R Console.
R uses different libraries or packages to load specific functions (read excel files, talk to Twitter, generate plots).
# To install package from the console, note the quotation marks!
# install.packages("name_of_package")
# load package in environment
library(mgcv)
As a starting point you can install a package that we’ll extensively use throughout the semester:
tidyverse
In R, we assign values (numbers, characters, data frames) to objects (vectors, matrices, variables).
To do so, we use the <-
operator:
# name_of_object <- value
an_object <- 2
another_object <- "some string"
# inspect object's value
an_object
#> [1] 2
print(another_object)
#> [1] "some string"
R’s base data structures can be organised by their dimensionality (1d, 2d, or nd) and whether they’re homogeneous (all contents must be of the same type) or heterogeneous (the contents can be of different types).
| Homogeneous | Heterogeneous | |
|---|---|---|
| 1d | Atomic vector | List |
| 2d | Matrix | Data frame |
| nd | Array |
The basic data structure in R is the vector. Vectors can be of two kinds: atomic vectors and lists. They have three common properties:
typeof()
, what it is.length()
, how many elements it contains.attributes()
, additional arbitrary metadata.However, atomic vectors and lists differ in the types of their elements: all elements of an atomic vector must be the same type, whereas the elements of a list can have different types.
There are four common types of atomic vectors:
Atomic vectors are usually created with c()
, short for combine:
dbl_var <- c(1, 2.5, 4.5)
# with the L suffix, you get an integer rather than a double
int_var <- c(1L, 6L, 10L)
# use TRUE and FALSE (or T and F) to create logical vectors
log_var <- c(TRUE, FALSE, T, F)
chr_var <- c("these are", "some strings")
int_var <- c(1L, 6L, 10L)
typeof(int_var)
#> [1] "integer"
is.integer(int_var)
#> [1] TRUE
List objects can hold elements of any type, including lists. You construct lists by using list()
instead of c()
:
x <- list(1:3, "a", c(TRUE, FALSE, TRUE), c(2.3, 5.9))
str(x)
#> List of 4
#> $ : int [1:3] 1 2 3
#> $ : chr "a"
#> $ : logi [1:3] TRUE FALSE TRUE
#> $ : num [1:2] 2.3 5.9
All objects can have arbitrary additional attributes, used to store metadata about the object. Attributes can be thought of as a named list (with unique names). They can be accessed individually with attr()
or all at once (as a list) with attributes()
.
y <- 1:10
attr(y, "my_attribute") <- "This is a vector"
# inspect the attribute of y
attr(y, "my_attribute")
#> [1] "This is a vector"
Adding a dim
attribute to an atomic vector allows it to behave like a multi-dimensional array. A special case of the array is the matrix, which has two dimensions.
Matrices and arrays are created with matrix()
and array()
, or by using the assignment form of dim()
:
# two scalar arguments to specify rows and columns
a <- matrix(1:6, ncol = 3, nrow = 2)
# one vector argument to describe all dimensions
b <- array(1:12, c(2, 3, 2))
# you can also modify an object in place by setting dim()
c <- 1:6
dim(c) <- c(3, 2)
c
#> [,1] [,2]
#> [1,] 1 4
#> [2,] 2 5
#> [3,] 3 6
length()
and names()
have high-dimensional generalisations:
length()
generalises to nrow()
and ncol()
for matrices, and dim()
for arrays.
names()
generalises to rownames()
and colnames()
for matrices, and dimnames()
, a list of character vectors, for arrays.
c()
generalises to cbind()
and rbind()
for matrices, and to abind()
(provided by the abind package) for arrays. You can transpose a matrix with t()
; the generalised equivalent for arrays is aperm()
.
You can test if an object is a matrix or array using is.matrix()
and is.array()
, or by looking at the length of the dim()
. as.matrix()
and as.array()
make it easy to turn an existing vector into a matrix or array.
A data frame is the most common way of storing data in R, and if used systematically makes data analysis easier. Under the hood, a data frame is a list of equal-length vectors. This makes it a 2-dimensional structure, so it shares properties of both the matrix and the list. This means that a data frame has names()
, colnames()
, and rownames()
, although names()
and colnames()
are the same thing. The length()
of a data frame is the length of the underlying list and so is the same as ncol()
; nrow()
gives the number of rows.
df <- data.frame(x = 1:3, y = c("a", "b", "c"))
str(df)
#> 'data.frame': 3 obs. of 2 variables:
#> $ x: int 1 2 3
#> $ y: chr "a" "b" "c"
You can combine data frames using cbind() and rbind():
cbind(df, data.frame(z = 3:1))
#> x y z
#> 1 1 a 3
#> 2 2 b 2
#> 3 3 c 1
Let’s explore the different types of subsetting with a simple vector, x
.
x <- c(2, 4, 3, 5)
Positive integers return elements at the specified positions:
x[c(3, 1)]
#> [1] 3 2
Duplicated indices yield duplicated values:
x[c(1, 1)]
#> [1] 2 2
Real numbers are silently truncated to integers:
x[c(2, 9)]
#> [1] 4 NA
Negative integers omit elements at the specified positions:
x[-c(3, 1)]
#> [1] 4 5
You can’t mix positive and negative integers in a single subset: x[c(-1, 2)]
is not allowed.
Logical vectors select elements where the corresponding logical value is TRUE. This is probably the most useful type of subsetting because you write the expression that creates the logical vector:
x[c(TRUE, TRUE, FALSE, FALSE)]
#> [1] 2 4
x[x > 3]
#> [1] 4 5
A missing value in the index always yields a missing value in the output:
x[c(TRUE, TRUE, NA, FALSE)]
#> [1] 2 4 NA
Nothing returns the original vector. This is not useful for vectors but is very useful for matrices, data frames, and arrays. It can also be useful in conjunction with assignment.
x[]
#> [1] 2 4 3 5
Zero returns a zero-length vector. This is not something you usually do on purpose, but it can be helpful for generating test data.
x[0]
#> numeric(0)
If the vector is named, you can also use character vectors to return elements with matching names:
(y <- setNames(x, letters[1:4]))
#> a b c d
#> 2 4 3 5
y[c("d", "c", "a")]
#> d c a
#> 5 3 2
Like integer indices, you can repeat indices:
y[c("a", "a", "a")]
#> a a a
#> 2 2 2
When subsetting with [
names are always matched exactly
z <- c(abc = 1, def = 2)
z[c("a", "d")]
#> <NA> <NA>
#> NA NA
Subsetting a list works in the same way as subsetting an atomic vector. Using [
will always return a list;
[[
and $
, as described below, let you pull out the components of the list.
You can subset higher-dimensional structures in three ways:
a <- matrix(1:9, nrow = 3)
colnames(a) <- c("A", "B", "C")
# multiple vectors
a[1:2, ]
#> A B C
#> [1,] 1 4 7
#> [2,] 2 5 8
df <- data.frame(x = 1:3, y = 3:1, z = letters[1:3])
# selecting by value of certain vector
df[df$x == 2, ]
#> x y z
#> 2 2 2 b
The following checklist makes it easier to import data correctly into R:
?
, $
,%
, ^
, &
, *
, (
, )
,-
,#
, ?
,,
,<
,>
, /
, |
, \
, [
,]
,{
, and }
;library(readr)
# import data from .txt file
df <- read_table(
"https://s3.amazonaws.com/assets.datacamp.com/blog_assets/test.txt",
col_names = FALSE)
df
#> # A tibble: 5 x 3
#> X1 X2 X3
#> <dbl> <dbl> <chr>
#> 1 1 6 a
#> 2 2 7 b
#> 3 3 8 c
#> 4 4 9 d
#> 5 5 10 e
# import data from .csv file
df <- read.table(
"https://s3.amazonaws.com/assets.datacamp.com/blog_assets/test.csv",
header = TRUE,
sep = ",")
Standard format for defining a function in R:
my_function_name <- function(arg1 = "default", arg2 = "default") {
# 'cat' is used for concatenating strings
merged_string <- cat(arg1, arg2)
# if not specified, last evaluated object is returned
return(merged_string)
}
# call a function elsewhere from code
arg1 <- "Hello"
arg2 <- "World!"
a_greeting <- my_function_name(arg1, arg2)
#> Hello World!
print(a_greeting)
#> NULL
CRAN - the curated repository of R packages provides millions of functions that you could use to tackle data. You simply need to install a package, and then call the function from your R code function_name(somearguments)
. For example, the package stats
helps you in fitting linear models through the function lm()
:
library(stats)
x <- rnorm(500)
y <- x*4 + rnorm(500)
lm.fit <- lm(y~x, data = data.frame(x, y))
print(lm.fit)
#>
#> Call:
#> lm(formula = y ~ x, data = data.frame(x, y))
#>
#> Coefficients:
#> (Intercept) x
#> 0.002114 3.941450
How many functions have been used in the example? What does rnorm
mean? You can get informed about any R function by using its documentation ?function_name
or ?packageName::function_name
.
Try to figure out the answers without executing the code. Check your answers in R Studio.
Given the vector: x <- c("ww", "ee", "ff", "uu", "kk")
, what will be the output for x[c(2,3)]
?
Let a <- c(2, 4, 6, 8)
and b <- c(TRUE, FALSE, TRUE, FALSE)
, what will be the output for the R expression max(a[b])
?
Is it possible to apply the function my_function_name
using x
and a
as arguments?
Consider a vector x
such that:
x <- c(1, 3, 4, 7, 11, 18, 29)
Write an R statement that will return a list X2
with components of value:
x*2, x/2, sqrt(x) and names ‘x*2’, ‘x/2’, ‘sqrt(x)’.
Read the file Table0.txt into an object DS.


THE ISLAND OF DR. MOREAU A film review by Scott Renshaw Copyright 1996 Scott Renshaw
Starring: Marlon Brando, Val Kilmer, David Thewlis, Fairuza Balk, Daniel Rigney, Ron Perlman, Temuera Morrison. Screenplay: Richard Stanley, Ron Hutchinson. Director: John Frankenheimer. Reviewed by Scott Renshaw.
Apparently the chaos involved in the making of THE ISLAND OF DR. MOREAU was such that even the publicity people at New Line couldn't keep up; the press release had Val Kilmer playing the wrong role. About the only constant in the production was the title, as writers (Michael Herr and Walon Green replaced by Ron Hutchinson), directors (Richard Stanley replaced by John Frankenheimer) and actors (Rob Morrow replaced by David Thewlis) all played musical chairs.  Sounds like the making of APOCALYPSE NOW, right down to the presence of Brando. The major difference? The end result. APOCALYPSE NOW was an inspired fever dream, while THE ISLAND OF DR. MOREAU is just a nightmare.
The story begins in a raft on the Java Sea, where U.N. representative Edward Douglas (Thewlis) finds himself the only survivor of a plane crash. He is found by a supply boat bringing a doctor named Montgomery (Kilmer) back to his base of operations, a small Pacific island. There Montgomery works with Dr. R. G. V. Moreau (Brando), a Nobel Prize-winning biologist who had disappeared years earlier. Douglas wants nothing more than to radio for help and be on his way, but once he discovers the nature of Moreau's experiments, it becomes unlikely that he will be allowed to leave. Those experiments have Moreau combining human and animal DNA, resulting in mutant creatures in an attempt to isolate the source of human aggression. But his island is not a paradise, especially once the animals observe cruelty in action and decide to return the favor.
The H. G. Wells novel on which THE ISLAND OF DR. MOREAU is based has been committed to film twice before, in 1933 and 1977, and naturally this version tries very hard to convince us that there is a compelling reason to do it again, and important themes the other versions failed to uncover. The great revelation in the script (credited to Hutchinson and erstwhile director Stanley) is -- get this -- that humans are actually quite animalistic themselves. This bit of wisdom worth of the Burning Bush is delivered scattershot -- a piece here in the split-second intro which finds a pair of Thewlis' fellow survivors throwing themselves to a conveniently circling shark in a fight over water, a piece there in a montage of documentary footage you expect to be underscored by "Imagine."
It's all spectacularly sloppy, but it's hard to know whom to blame. Stanley might have wanted to do a cerebral observation on violence and/or religion, but Frankenheimer seems to want a good old thriller, and the two angles are not at all complementary. Somebody cut this film to ribbons trying to find a point to it all, resulting in a giddy incomprehensibility. Exactly what was Douglas' role in Moreau's experiments supposed to be, anyway? Why are the mutant rats isolated to the boat? What exactly did Douglas use to pick the lock in his room? THE ISLAND OF DR. MOREAU just keeps staggering forward and swinging wildly, like an overweight boxer without the faintest glimmer of strategy.
Speaking of overweight...oh, but that's far too easy. It would be too simple to observe that when Brando makes his first appearance, covered in heavy white makeup and a white muu-muu the size of a circus tent, he looks like nothing so much as the Michelin Man on safari. It's too simple and somewhat unfair, because even under the burden of all that weight and a ridiculous accent, there is still something compelling about Brando on screen. His Moreau is what Richard Attenborough should have been trying to go for as Hammond in JURASSIC PARK, a pleasant enough chap with a monstrous god complex. Val Kilmer, who is said to have quite a god complex in real life, seems to have decided to act in a completely different film, one which is much more fun. His Montgomery is a casually nasty pot-head, but at least he is entertaining to watch, particularly when he does his dead-on Brando impression. And poor David Thewlis, whose character has no common sense and no particular reason for being a U.N. peace negotiator (you'd think that might have been a useful subtext to the war which breaks out on the island), tries to look frightened by more than the lack of direction in the film, with little success.
The production design for THE ISLAND OF DR. MOREAU is quite sharp, and Stan Winston's make-up effects are worth a nod of recognition; it is also interesting to find Ron Perlman (of TV's "Beauty and the Beast") once more buried under mounds of makeup as the Sayer of the Law. But this is a badly fragmented piece of work which manages to achieve tedium in only 96 minutes. Perhaps some day they will make a documentary about the making of the film, like they did with APOCALYPSE NOW in HEARTS OF DARKNESS.
On the Renshaw scale of 0 to 10 beast intentions: 3.
Scott Renshaw Stanford University http://www-leland.stanford.edu/~srenshaw
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Travel
Through
Teaching
Current Destination:
South Korea
The Problem
High Cost of Education
With Americans owing a crippling $1.5 trillion in student loans, graduates are feeling more pressure than ever. On average, a new graduate owes $31,000. 42% of people who’ve gone to college took out debt, while 20% of the borrowers are continuing to be behind on payments.
Expanding Gap of Qualified Teachers
There are currently more English language learners in the world than native speakers in America. English is a highly demanded skill needed to traverse the global market. Qualified teachers are needed to fill the increase necessities of ESL students.
Sink or Swim Culture
New teachers are often thrown into a classroom without the proper training or resources. Culture shock, dissatisfaction, and/or an incompatible understanding with hiring administrations have led to 46% of teachers leaving the field within five years.
Our Mission
Samsays is a growing dynamic community of passionate, committed, and qualified teachers from around the globe.
Striving to improve not only the education space but the futures and lives of its pupils who envision a brighter world.
Our Mission
Samsays is a growing dynamic community of passionate, committed, and qualified teachers from around the globe.
Striving to improve not only the education space but the futures and lives of its pupils who envision a brighter world.
Benefits
Protection
Both teachers and schools should feel confident and safe from those deemed unprofessional, unethical, and/or uncommitted
Guaranteed
Quality and professionalism is guaranteed through a meticulous vetting process on both sides - schools and teachers
Community
An internationally experienced community of professionals who are committed to our vision of a better future in education
Transparency
Ensuring there is no bias in selecting highly qualified teachers, Samsays prides itself on its transparency and allows no room for choices based on superficialities
Influence
Global markets will not only do better but also strive to be better in every dimension, encouraging the industry to prosper
Progressive
Educators and institutions of higher and fairer standards will continue to improve as more committed teachers build better schools
Questions?
If you have any questions at all, please do not hesitate to reach us out at support@samsays.co


?6
7
8
9
10
copyright
reserved
The
New
York
Botanical
Garden
PLANTS
OF
BAHAMA
ISLANDS
Forestiera
segregata
(Jacq.)
Krug
¤
Urban
South
Andros:
in
coppice
near
Las
Palmas
Hotel,
Drigg's
Hill.
Tall
slender
shrub
2.5
m
tall;
fruits
purplish-black
when
ripe.
September
25,
1974
VAHK
BOTANICAL
GARDEN
D,
S.
Correli
43561
01497739
Herbarium
FAIRCHILD
TROPICAL
GARDEN
01497739
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


The VRML model requires a VRML 2.0 plug-in such as CosmoPlayer from Cosmo Software. If you have another viewer which is fully VRML 2.0 compliant, download the compressed model here. Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec


| |
- Method resolution order:
- AppAPI
- webapp2.RequestHandler
- __builtin__.object
Methods defined here:
- get(self)
- Handle GET requests by passing to SQL wrapper. Respond with JSON.
- verify_oauth_token(self, token)
- Verify the oAuth token with Google
- verify_permissions(self, req)
- Essentially allow everyone to read, but only the creator of a record can write/delete
Methods inherited from webapp2.RequestHandler:
- __init__(self, request=None, response=None)
- Initializes this request handler with the given WSGI application,
Request and Response.
When instantiated by ``webapp.WSGIApplication``, request and response
are not set on instantiation. Instead, initialize() is called right
after the handler is created to set them.
Also in webapp dispatching is done by the WSGI app, while webapp2
does it here to allow more flexibility in extended classes: handlers
can wrap :meth:`dispatch` to check for conditions before executing the
requested method and/or post-process the response.
.. note::
Parameters are optional only to support webapp's constructor which
doesn't take any arguments. Consider them as required.
:param request:
A :class:`Request` instance.
:param response:
A :class:`Response` instance.
- abort(self, code, *args, **kwargs)
- Raises an :class:`HTTPException`.
This stops code execution, leaving the HTTP exception to be handled
by an exception handler.
:param code:
HTTP status code (e.g., 404).
:param args:
Positional arguments to be passed to the exception class.
:param kwargs:
Keyword arguments to be passed to the exception class.
- dispatch(self)
- Dispatches the request.
This will first check if there's a handler_method defined in the
matched route, and if not it'll use the method correspondent to the
request method (``get()``, ``post()`` etc).
- error(self, code)
- Clears the response and sets the given HTTP status code.
This doesn't stop code execution; for this, use :meth:`abort`.
:param code:
HTTP status error code (e.g., 501).
- handle_exception(self, exception, debug)
- Called if this handler throws an exception during execution.
The default behavior is to re-raise the exception to be handled by
:meth:`WSGIApplication.handle_exception`.
:param exception:
The exception that was thrown.
:param debug_mode:
True if the web application is running in debug mode.
- initialize(self, request, response)
- Initializes this request handler with the given WSGI application,
Request and Response.
:param request:
A :class:`Request` instance.
:param response:
A :class:`Response` instance.
- redirect(self, uri, permanent=False, abort=False, code=None, body=None)
- Issues an HTTP redirect to the given relative URI.
The arguments are described in :func:`redirect`.
- redirect_to(self, _name, _permanent=False, _abort=False, _code=None, _body=None, *args, **kwargs)
- Convenience method mixing :meth:`redirect` and :meth:`uri_for`.
The arguments are described in :func:`redirect` and :func:`uri_for`.
- uri_for(self, _name, *args, **kwargs)
- Returns a URI for a named :class:`Route`.
.. seealso:: :meth:`Router.build`.
- url_for = uri_for(self, _name, *args, **kwargs)
- Returns a URI for a named :class:`Route`.
.. seealso:: :meth:`Router.build`.
Data descriptors inherited from webapp2.RequestHandler:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
Data and other attributes inherited from webapp2.RequestHandler:
- app = None
- request = None
- response = None
|


http.server module defines classes for implementing HTTP servers (Web servers).
Note: http.server is not recommended for production. It only implements basic security checks. But it is a first step to understand the lower level behavior of a Web server.
These modules are written in object-oriented Python. You should already be familiar with creating class instances, defining subclasses, and defining methods on classes.
If you need a refresher on the Python syntax for these object-oriented actions, you might want to browse:
Web servers using http.server are made of two parts: the HTTPServer class, and a request handler class. The first part, the HTTPServer class, is built into the module and is the same for every web service.
It knows how to listen on a port and accept HTTP requests from clients. Whenever it receives a request, it hands that request off to the second part — a request handler — which is different for every web service.
Here's what your Python code will need to do in order to run a web service:
Once you call the HTTPServer instance's serve_forever method, the server does that — it runs forever until stopped.
if you have a Python server running and you want to stop it, type Ctrl-C into the terminal where it's running. (You may need to type it two or three times.)
from http.server import HTTPServer, BaseHTTPRequestHandler
class HelloHandler(BaseHTTPRequestHandler):
def do_GET(self):
# First, send a 200 OK response.
self.send_response(200)
# Then send headers.
self.send_header('Content-type', 'text/plain; charset=utf-8')
self.end_headers()
# Now, write the response body.
self.wfile.write("Hello, HTTP!\n".encode())
if __name__ == '__main__':
server_address = ('', 8000) # Serve on all addresses, port 8000.
httpd = HTTPServer(server_address, HelloHandler)
httpd.serve_forever()
When you start up the demo server, it will print a message telling you that it's serving HTTP. Leave it running, and leave the terminal open. Now try accessing http://localhost:8000/ from your browser.
An HTTP response could contain any kind of data, not only text. And so the self.wfile.write method in the handler class expects to be given a bytes object — a piece of arbitrary binary data — which it writes over the network in the HTTP response body.
If you want to send a string over the HTTP connection, you have to encode the string into a bytes object. The encode method on strings translates the string into a bytes object, which is suitable for sending over the network. There is, similarly, a decode method for turning bytes objects into strings.
Text strings look simple, but they are actually kind of complicated underneath. There are a lot of different ways that computers can represent text in memory and on the network.
lder software — including older versions of Python — tended to assume that each character takes up only one byte of memory. That works fine for some human languages, like English and Russian, but it doesn't work at all for other human languages, like Chinese; and it really doesn't work if you want to handle text from multiple languages in the same program.
The Web is international, so browsers and servers need to support all languages. This means that the old one-byte assumption is completely thrown out. But when programs use the network, they need to know how long a piece of data is in terms of bytes. That has to be figured out unambiguously at some point in time. The way Python does this is by making us encode strings into bytes objects when we want to send them over a binary channel (such as an HTTP connection).
UTF-8 is the default encoding in Python. When you call the encode method on a string without passing it another encoding, it assumes you mean UTF-8. This is the right thing to do, so that's what the code in this course does.
The only difference in the code between EchoHandler and HelloHandler is what they write in the response body. The hello server always writes the same message, while the echo server takes its message from the request path. Here's how I did it — a one-line change at the end of do_GET:
What I'm doing here is taking the path (for instance "/bears"), using a string slice to remove the first character (which is always a slash), and then encoding the resulting string into bytes, then writing that to the HTTP response body.
message = self.path[1:] # Extract 'bears' from '/bears', for instance
message_bytes = message.encode() # Make bytes from the string
self.wfile.write(message_bytes) # Send it over the network
When you take a look at a URI for a major web service, you'll often see several query parameters, which are a sort of variable assignment that occurs after a ? in the URI. For instance, here's a Google Image Search URI:
https://www.google.com/search?q=gray+squirrel&tbm=ischThis will be sent to the web server as this HTTP request:
GET /search?q=gray+squirrel&tbm=isch HTTP/1.1
Host: www.google.com
The query part of the URI is the part after the ? mark. Conventionally, query parameters are written as key=value and separated by & signs. So the above URI has two query parameters, q and tbm, with the values gray+squirrel and isch.
(isch stands for Image Search.)
There is a Python library called urllib.parse that knows how to unpack query parameters and other parts of an HTTP URL. (The library doesn't work on all URIs, only on some URLs.)
A query parameter may show up multiple times in the query string, so parse_qs returns a dictionary of lists with all the values it's associated with.
>>> from urllib.parse import urlparse, parse_qs
>>> address = 'https://www.google.com/search?q=gray+squirrel&tbm=isch'
>>> parts = urlparse(address)
>>> print(parts)
As a result you will get:
ParseResult(scheme='https', netloc='www.google.com', path='/search', params='', query='q=gray+squirrel&tbm=isch', fragment='')
Then
>>> print(parts.query)
And will get:
q=gray+squirrel&tbm=isch
>>>query = parse_qs(parts.query)
>>> query
{'q': ['gray squirrel'], 'tbm': ['isch']}
As a result, you are getting a dictionary with the values passed in the Url:
{'q': ['gray squirrel'], 'tbm': ['isch']}
If you want to read each parameter you can use:
>>>query['q']
To get as the result: ['gray squirrel']
Did you notice that 'gray+squirrel' in the query string became 'gray squirrel' in the output of parse_qs?
HTTP URLs aren't allowed to contain spaces or certain other characters. So if you want to send these characters in an HTTP request, they have to be translated into a "URL-safe" or "URL-quoted" format.
"Quoting" in this sense doesn't have to do with quotation marks, the kind you find around Python strings. It means translating a string into a form that doesn't have any special characters in it, but in a way that can be reversed (unquoted) later.
(And if that isn't confusing enough, it's sometimes also referred to as URL-encoding or URL-escaping).
One of the features of the URL-quoted format is that spaces are sometimes translated into plus signs. Other special characters are translated into hexadecimal codes that begin with the percent sign.
Take a look at the documentation for urllib.parse.quote and related functions.
Later in the course when you want to construct a URI in your code, you'll need to use appropriate quoting. More generally, whenever you're working on a web application and you find spaces or percent-signs in places you don't expect them to be, it means that something needs to be quoted or unquoted.
In the last lesson, I mentioned that GET is only one of many HTTP verbs or methods.
When a browser submits a form via GET, it puts all of the form fields into the URI that it sends to the server. These are sent as a query, in the request path — just like search engines do. They're all jammed together into a single line. Since they're in the URI, the user can bookmark the resulting page, reload it, and so forth.
This is fine for search engine queries, but it's not quite what we would want for (say) a form that adds an item to your shopping cart on an e-commerce site, or posts a new message on a comments board. GET methods are good for search forms and other actions that are intended to look something up or ask the server for a copy of some resource. But GET is not recommended for actions that are intended to alter or create a resource. For this sort of action, HTTP has a different verb, POST.
Vocabulary word of the day: idempotent. An action is idempotent if doing it twice (or more) produces the same result as doing it once. "Show me the search results for 'polar bear'" is an idempotent action, because doing it a second time just shows you the same results. "Add a polar bear to my shopping cart" is not, because if you do it twice, you end up with two polar bears.
POST requests are not idempotent. If you've ever seen a warning from your browser asking you if you really mean to resubmit a form, what it's really asking is if you want to do a non-idempotent action a second time.
(Important note if you're ever asked about this in a job interview: idempotent is pronounced like "eye-dem-poe-tent", or rhyming with "Hide 'em, Joe Tent" — not like "id impotent".)
When a browser submits a form as a POST request, it doesn't encode the form data in the URI path, the way it does with a GET request. Instead, it sends the form data in the request body, underneath the headers. The request also includes Content-Type and Content-Length headers, which we've previously only seen on HTTP responses.
By the way, the names of HTTP headers are case-insensitive. So there's no difference between writing Content-Length or content-length or even ConTent-LeNgTh … except, of course, that humans will read your code and be confused by that last one.
n the next few exercises, you'll be building a messageboard server.
When a user goes to the main page in their browser, it'll display a form for writing messages, as well as a list of the previously written messages.
Submitting the form will send a request to the server, which stores the submitted message and then re-displays the main page.
In order to test your messageboard server, you'll need to install the requests module, which is a Python module for making HTTP requests.
We'll see much more about this module later in this lesson. For now, just run pip3 install requests in your terminal to install it.
We'll be using a GET request to display the messageboard's existing contents, and POST to update the contents by creating new messages. Creating new messages is not idempotent — we don't want duplicates.
Imagine if a user did this. They write a message and press the submit button … and the message text shows up in their URL bar. If they press reload, it sends the message again. If they bookmark that URL and go back to it, it sends the message again.
This doesn't seem like such a great experience. So we'll use POST for message submission, and GET to display the main page.
Previously in the HelloServer exercise, you've written handler classes that have just a single method, do_GET.
But a handler class can have do_POST as well, to support GET and POST requests. This is exactly how the messageboard server will work.
When a GET request comes in, the server will send the HTML form and current messages. When a POST request comes in with a new message, the server will store the message in a list, and then return all the messages it's seen so far.
The code for a do_POST method will need to do some pretty different things from a do_GET method. When we're handling a GET request, all the user data in the request is in the URI path. But in a POST request, it's in the request body.
Inside do_POST, our code can read the request body by calling the self.rfile.read method. self.rfile is a file object, like the self.wfile we saw earlier — but rfile is for reading the request, rather than writing the response.
However, self.rfile.read needs to be told how many bytes to read … in other words, how long the request body is.
If there's a request body at all, the browser will send the length of the request body in the Content-Length header.
The handler class gives us access to the HTTP headers as the instance variable self.headers, which is an object that acts a lot like a Python dictionary. The keys of this dictionary are the header names, but they're case-insensitive: it doesn't matter if you look up 'content-length' or 'Content-Length'. The values in this dictionary are strings: if the request body is 140 bytes long, the value of the Content-length entry will be the string "140". We need to call self.rfile.read(140) to read 140 bytes; so once we read the header, we'll need to convert it to an integer.
But in an HTTP request, it's also possible that the body will be empty, in which case the browser might not send a Content-length header at all. This means we have to be a little careful when accessing the headers from the self.headers object. If we do self.headers['content-length'] and there's no such header, our code will crash with a KeyError. Instead, we'll use the .get dictionary method to get the header value safely.
So here's a little bit of code that can go in the do_POST handler to find the length of the request body and read it:
length = int(self.headers.get('Content-length', 0))
data = self.rfile.read(length).decode()
Once you read the message body, you can use urllib.parse.parse_qs to extract the POST parameters from it.
There's a very common design pattern for interactive HTTP applications and APIs, called the PRG or Post-Redirect-Get pattern. A client POSTs to a server to create or update a resource; on success, the server replies not with a 200 OK but with a 303 redirect. The redirect causes the client to GET the created or updated resource.
This is just one of many, many ways to architect a web application, but it's one that makes good use of HTTP methods to accomplish specific goals. For instance, wiki sites such as Wikipedia often use Post-Redirect-Get when you edit a page.
For the messageboard server, Post-Redirect-Get means:
One big advantage of Post-Redirect-Get is that as a user, every page you actually see is the result of a GET request, which means you can bookmark it, reload it, and so forth — without ever accidentally resubmitting a form.
requests.get("http://localhost:8000/")
The requests function for performing GET requests is requests.get, and it takes the URI as an argument.
The requests library is a Python library for sending requests to web servers and interpreting the responses. It's not included in the Python standard library, though; you'll need to install it. In your terminal, run pip3 install requests to fetch and install the requests library.
If you follow these links in your browser, it will fetch the same page from Wikipedia's web server. But the second one displays the page scrolled to the section about the discovery of oxygen. The part of the URI after the # sign is called a fragment. The browser doesn't even send it to the web server. It lets a link point to a specific named part of a resource; in HTML pages it links to an element by id.
In contrast, consider this Google Search URI:
Both, but they're different. r.content is a bytes object representing the literal binary data that the server sent. r.text is the same data but interpreted as a str object, a Unicode string.
If the requests.get call can reach an HTTP server at all, it will give you a Response object. If the request failed, the Response object has a status_code data member — either 200, or 404, or some other code.
But if it wasn't able to get to an HTTP server, for instance because the site doesn't exist, then requests.get should raise an exception.
However: Some Internet service providers will try to redirect browsers to an advertising site if you try to access a site that doesn't exist. This is called DNS hijacking, and it's nonstandard behavior, but some do it anyway. If your ISP hijacks DNS, you won't get exceptions when you try to access nonexistent sites. Standards-compliant DNS services such as Google Public DNS don't hijack.
As a web developer, you will deal with data in a lot of different formats, especially when your code calls out to APIs provided by other developers. It's not uncommon for a large software system to have parts that deal with a dozen or more different data formats. Fortunately, usually, someone else has already written libraries to help you read and write these formats.
JSON is a data format based on the syntax of JavaScript, often used for web-based APIs. There are a lot of services that let you send HTTP queries and get back structured data in JSON format. You can read more about the JSON format at http://www.json.org/.
Python has a built-in json module; and as it happens, the requests module makes use of it. A Response object has a .json method; if the response data is JSON, you can call this method to translate the JSON data into a Python dictionary.
Try it out! Here, I'm using it to access the Star Wars API, a classic JSON demonstration that contains information about characters and settings in the Star Wars movies:
>>> a = requests.get('http://swapi.co/api/people/1/')
>>> a.json()['name']
'Luke Skywalker'
There's a great example of an API on the site http://uinames.com/, a service that makes up fake names and user account information. You can find the full API documentation under the little menu at the top right.
For this exercise, all you'll need is this URI and a couple of query parameters:
http://uinames.com/api/
The query parameters to use are ext, which gives you a record with more fields, and region, which lets you specify which country you want your imaginary person to come from. For instance, to have the API invent a person from Italy:
http://uinames.com/api?ext®ion=Italy
(It's not perfect. For instance, currently it makes up North American phone numbers for everyone, regardless of where they live.)
You're almost to the end of this lesson! One more server to write …
You've probably seen URL-shortening services such as TinyURL.
They let you create short URI paths like https://tinyurl.com/jye5r6l that redirect to a longer URI on another site. It's easier to put a short URI into an email, text message, or tweet. In this exercise, you'll be writing a service similar to this.
Like the messageboard server, this bookmark server will keep all of its data in memory. This means that it'll be reset if you restart it.
Your server needs to do three things, depending on what kind of request it receives:
You can use ncat to connect to the demo server and send it an HTTP request by hand. (Make sure the demo server is still running!)
Use $python3 -m http.server 8000 in your terminal to run the demo server.
Use $ncat <IP_ADDRESS> 8000 (in a second ternimal)to connect your terminal to the demo server.
Type the following and dopple press Enter afterwards
GET / HTTP/1.1
Host: localhost
After you typed Host: localhost and pressed Enter twice, the server sent back a lot of text. This is an HTTP response. One of these exchanges — a request and response — is happening every time your browser asks a server for a page, an image, or anything else.
Here's another one to try. Use ncat to connect to google.com port 80, and send a request for the path / on the host google.com:
GEGT / HTTP/1.1
Host: google.com
The HTTP response is made up of three parts:
The status line is the first line of text that the server sends back. The headers are the other lines up until the first blank line. The response body is the rest — in this case, it's a piece of HTML.
In the response you got from your demo server, the status line said HTTP/1.0 200 OK. In the one from Google, it says HTTP/1.1 301 Moved Permanently . The status line tells the client whether the server understood the request, whether the server has the resource the client asked for, and how to proceed next. It also tells the client which dialect of HTTP the server is speaking.
The numbers 200 and 301 here are HTTP status codes. There are dozens of different status codes. The first digit of the status code indicates the general success of the request. As a shorthand, web developers describe all of the codes starting with 2 as "2xx" codes, for instance — the x's mean "any digit".
The STATUS CODES:
The server response here is an example of good user interface on the Web. Google wants browsers to use www.google.com instead of google.com. But instead of showing the user an error message, they send a redirect. Browsers will automatically follow the redirect and end up on the right site.
IAn HTTP response can include many headers. Each header is a line that starts with a keyword, such as Location or Content-type, followed by a colon and a value. Headers are a sort of metadata for the response. They aren't displayed by browsers or other clients; instead, they tell the client various information about the response.
Many, many features of the Web are implemented using headers. For instance, cookies are a Web feature that lets servers store data on the browser, for instance to keep a user logged in. To set a cookie, the server sends the Set-Cookie header. The browser will then send the cookie data back in a Cookie header on subsequent requests. You'll see more about cookies later in this course.
Content-type: text/html; charset=utf-8
A Content-type header indicates the kind of data that the server is sending. It includes a general category of content as well as the specific format. For instance, a PNG image file will come with the Content-type image/png. If the content is text (including HTML), the server will also tell what encoding it's written in. UTF-8 is a very common choice here, and it's the default for Python text anyway.
Very often, the headers will contain more metadata about the response body. For instance, both the demo server and Google also send a Content-Length header, which tells the client how long (in bytes) the response body will be. If the server sends this, then the client can reuse the connection to send another request after it's read the first response. Browsers use this so they can fetch multiple pieces of data (such as images on a web page) without having to reconnect to the server.
The headers end with a blank line. Everything after that blank line is part of the response body. If the request was successful (a 200 OK status, for instance), this is a copy of whatever resource the client asked for — such as a web page, image, or other pieces of data.
But in the case of an error, the response body is where the error message goes! If you request a page that doesn't exist, and you get a 404 Not Found error, the actual error message shows up in the response body.


pseudoprime
`Prev `__
P
`Next `__
--------------
**pseudoprime**: n.
A backgammon prime (six consecutive occupied points) with one point
missing. This term is an esoteric pun derived from number theory: a
number that passes a certain kind of “primality test” may be called a
pseudoprime (all primes pass any such test, but so do some composite
numbers), and any number that passes several is, in some sense, almost
certainly prime. The hacker backgammon usage stems from the idea that a
pseudoprime is almost as good as a prime: it will do the same job unless
you are unlucky.
--------------
+---------------------------+----------------------------+-------------------------------+
| `Prev `__ | `Up <../P.html>`__ | `Next `__ |
+---------------------------+----------------------------+-------------------------------+
| pseudo | `Home <../index.html>`__ | pseudosuit |
+---------------------------+----------------------------+-------------------------------+


Yesterday I had lunch at a sushi bar with a colleague. Having lived in Japan, many of the sights, sounds and experiences of the Japanese culture are second nature to me.
Thus I was a little surprised when my colleague asked me what all the staff were calling out every time a customer walks in the door. I explained that the expression is "irasshaimase", and is a welcome that you hear in all Japanese restaurants, and in Japan in almost all shops and shopping areas. Its almost like there's a competition among staff members as to who can welcome a customer first and with the greatest spirit!
Go to a Japanese shopping mall, and the sounds can be amazing as you hear this constant din of welcome.
Its a fantastic experience to be made to feel welcome, instantly, as you walk into a restaurant or shop.  With the welcome over, the great customer service continued right up to when we paid. As we left, shouts of "arigato gozaimashita" (thank you very much) could be heard.
After our sushi lunch, we decided to continue our conversation over a cup of tea. We walked up to a nearby coffee store, part of a large Australian franchise chain. The front door was partly blocked by 2 staff members putting up Christmas decorations - at lunchtime!  That one customer was being served by the other 2 staff members. No-one even acknowledged our presence in the store.
After four minutes (yes, I timed it) finally someone looked to me and said "what can I do for you". I looked at my watch, then placed my order. The service was offhandish, and the teas were ordinary. The experience was poor.
Too often western businesses get offhandish, and take their customers business for granted. Customer service is a hit and miss affair in many western countries, and we could certainly take a lesson from the Japanese when it comes to welcoming and acknowledging a customer into our business. This should apply equally to customers in front of you, those on the phone, and those doing business with you over the web.
Establish an "irasshaimase" culture in your business.


( a) Top view, ( b) bottom view, and ( c,d) cross-section SEM images of an LTO self-standing film made of VGCF–COOH carbon obtained at magnifications of ( a,b) ×1000, ( c) ×3000, and ( d) ×4000. The inset in ( b) is a zoom-in image showing the intertwined carbon fibers. The red dots in ( c) identify the carbon current collector.