Nong Khiaw: bajeczne punkty widokowe na szczytach wokół rzeki Nam Ou
Monika Suchoszek
Łódki odpływają z Muang Ngoy każdego ranka, zabierając turystów z powrotem do Nong Khiaw. Tam również zatrzymaliśmy się na kilka dni, odkrywając uroki niezwykle stromych, okolicznych wzgórz. Jak do tej pory pogoda była zawsze stabilan w Laosie, ale już pierwszego dnia z Nong Khiaw złapała nas na spacerze straszna ulewa z bardzo silnym wiatrem. Na szczęście po szybkim biegu, udało nam się schronić w wynajętym pokoju. Jeszcze bardziej cieszyliśmy się z faktu, że pogoda była dla nas łaskawa przed południem, kiedy płyneliśmy tutaj małą łódką. Przyroda nabrała niesamowitych kolorów po tym obfitym opadzie deszczu więc postanowiłam dokończyć spacer po miasteczku i reszte dnia spędzić leniwie, bowiem kolejnego w planach mieliśmy punkt widokowy Pha Daeng Peak!
I really wanted to see clouds rising above the town and nearby hills from the peak, therefore we left our room at 7:30am and actually we should have left at least half an hour earlier. We reached the peak after an intense walk of about 1 hour were we climbed around 500m on a very short distance (~1.5km). The Pha Daeng Peak viewpoint (a bit higher than 800m above sea level) has a wooden platform which gives an incredibly nice view of the Nong Khiaw town but also of the river leading to Muang Ngoy. The map below shows more details about the distance and total climb of this technically easy but physically challenging climb because of its steepness and high humidity.
Bombs! You can still find many unexploded bombs in Laos, left behind after the Vietnam War, therefore warning signs are very important since many tourists are not aware of the danger. It is recommended not to walk off the path. The region of Nong Khiaw in the north of Laos was one of the most bombed regions in the country and remains very dangerous. You can read more about this terrible weaponry that still scars the land in the post about COPE center which we visited in Vientiane.
The next day, the goal was to check out the second viewpoint on the other side of the city, Sleeping Woman Viewpoint (as marked on google maps) which actually has two viewing platforms. When we were there, the lower viewpoint was damaged so we went up to the higher one and down the same way. If there are no heavy rains, it should be possible to visit both of them. This path was very slippery and the soil is different here, more like a clay, with dark orange color and that made this hike more exhausting. On the way up, we met one man maintaining the track and he told us about the damage. The viewing platform was really nice, with a small bench to sit. We didn’t meet anyone there and this time even more drops of sweat were running down on our purple faces, clearly reminding us that this climate with high humidity is not for us. Despite it being a very nice, sunny day, the visibility was not great. We couldn’t even clearly see the river and also more distant peaks. We spend some time on the peak, enjoying the silence, great view of the city (where a large crowd gathered to carry a huge boat to a storage hangar. We were very curious to see how the managed to navigate the lengthy boat through the narrow streets) and colorful butterflies around us! The map below shows more details about the distance and total climb.
It was getting very busy on the streets in the early morning (before 7.00), when the local market was open and people were buying fresh vegetables and fruits. I went once to check it and that was the time I saw baked rats to buy! I quickly grabbed some mangos and went back to our room. It’s very close to the school, wooden stands are there the whole day so it’s easy to find the place. The second very busy period of the day is early afternoon, when kids leave the school, then we could feel that the city is alive. It was funny to see kids cycling with the umbrellas or books in front of their faces just to have some nice shadow during these bright, sunny days!
Having lunch in a restaurant with such a view is pure pleasure! We came back to Noymany restaurant multiple times, once we had to wake the woman in the kitchen up since we couldn’t find anyone else and the doors were open :) We liked the food in Laos as much as in Cambodia, it always looked so simple but the flavour was sooo rich! Every time we walked back to our room after a dinner, beautiful sunset was visible above the mountains :D
The small bus station is located around 1.3km from the Nong Khiaw Bridge, on the other site of the city. It is possible to buy tickets for the bus in one of the guide/travel offices which you can find along the main street but in this city you can simply go and buy a bus ticket at the bus station (here the bus ticket was 80k KIP in comparison to 100k KIP from the travel agency). In most of the cities bus stations are located outside of the town and when you buy a ticket from the local office, pick up by minivan is included or the bus just goes through the city and collect everyone from the the different hotels). We stayed in this town one extra day because there was no bus on the day we wanted to leave so maybe it’s good to check it upon arrival (even if the bus schedule visible there says that the bus leaves every day). Our next destination was Luang Namtha (only 230km but it took us 6.5h of crazy ride on a horribly zigzag road), the intermediate stop on our way to Chiang Rai in Thailand.
Practical info:
- minivan to Nong Khiaw from Luang Prabang - 4h, 75k KIP per person
- entrance to the Pha Daeng Peak viewpoint (first day) - 20k KIP per person
- entrance to Sleeping Woman Viewpoint/Nong Khiaw View Point 2 (both the same entrance)- 15k KIP per person
- lunch/dinner - 60k KIP for both of us, we definitely recommend Noymany Restaurant
- smoothie - 8k KIP per person
- room - 70k KIP per night, not marked on the map, just next to Nong Khiaw Bridge (site from the city center, owners have a small shop in front of it and sell fruits next to the road). It is marked as a starting point of our first hike, see map inside the post
- laundry at our guesthouse- 20k KIP
Subscribe via RSS


Onion organic oranges and purr ducks canning owls at a squeal. House hen chinchillas in barn livestock cat hogs
chicks trucks. Mooo cat daisys, grunt in turkey coo, windmill at bull. Apples ducks straw, quail a ostriches donkey,
hay hook cucumbers. Grapes at yams mushrooms organic berries gobble. Cauliflower a seeds quail. Petting zoo at
carrots alligators quack. Haybine carrots soybeans, owls duck raising or, cheep in plows.
Quack hammers eggplant is utters nails garden. Pick up truck livestock, pets and storage shed, troughs feed bale
manure, is garden wheat oats at augers. Chainsaw foal hay hook, herbs at combine harvester.
Children is mallet. Bulls at rose garden cucumbers mice sunflower wheat in pig. Mallet herbs basil nest, in welding
equipment pens quail. In the straw rain barrels. Baa potato donkey mouse, at gate grain bin.


I am a Software Developer working in a variety of languages, tools, and technologies. I strive to be an expert generalist - I find the right tool for any job and my experience as a Materials Engineer taught me the value of having a big toolbox. I never allow the specter of not knowing how to do something prevent me from figuring it out. My core motivations are tackling challenges through creative problem solving and encouraging success in my peers and colleagues through motivated and empathetic leadership-by-example and collaboration. I believe that whether I am a mentor or a mentee, every experience is a learning opportunity.
I CODING


If this is so, there is no point in debating because no one else can challenge your definitively authoritative viewpoint. You win.


Set script from file:
[from url]
Script Directory:
../scripts
File:
Start URL:
Click 'Set', wait till page refreshes, then click 'Play'.
Set script from url:
[from file]
Script:
Start URL:
Click 'Set', wait till page refreshes, then click 'Play'.
Replay:
Set script above, before clicking on 'Play'.
Current Step:
0
Next Step:
Statements:
View Script
View Parsed Script
View Browser Script
View Logs


{{< layout-photo-checker}} {{$pageTitle}}How to get a digital passport photo{{/pageTitle}} {{$header}}
There are 3 ways:
You'll need someone to help you and a device that takes digital photos.
 Use the code to add the photo to your application.
 Upload the file to add the photo to your application.
{{#input-submit}}{{/input-submit}}The photo code is a new service and may not be available yet from photo booths or shops in your area.


{{ @_.ERROR.text }}
Not sure about what's happening? Please return to dashboard.
{{ @_.ERROR.debug }}


--- title: Welcome to CausalNLP keywords: fastai sidebar: home_sidebar nb_path: "nbs/index.ipynb" ---
pip install -U pip
pip install causalnlp
NOTE: On Python 3.6.x, if you get a RuntimeError: Python version >= 3.7 required
, try ensuring NumPy is installed before CausalNLP (e.g., pip install numpy==1.18.5
).
To try out the examples yourself:
import pandas as pd
df = pd.read_csv('sample_data/music_seed50.tsv', sep='\t', error_bad_lines=False)
The file music_seed50.tsv
is a semi-simulated dataset from here. Columns of relevance include:
Y_sim
: outcome, where 1 means product was clicked and 0 means not.text
: raw text of reviewrating
: rating associated with review (1 through 5)T_true
: 0 means rating less than 3, 1 means rating of 5, where T_true
affects the outcome Y_sim
.T_ac
: an approximation of true review sentiment (T_true
) created with Autocoder from raw review textC_true
:confounding categorical variable (1=audio CD, 0=other)We'll pretend the true sentiment (i.e., review rating and T_true
) is hidden and only use T_ac
as the treatment variable.
Using the text_col
parameter, we include the raw review text as another "controlled-for" variable.
from causalnlp import CausalInferenceModel
from lightgbm import LGBMClassifier
cm = CausalInferenceModel(df,
metalearner_type='t-learner', learner=LGBMClassifier(num_leaves=500),
treatment_col='T_ac', outcome_col='Y_sim', text_col='text',
include_cols=['C_true'])
cm.fit()
CausalNLP supports estimation of heterogeneous treatment effects (i.e., how causal impacts vary across observations, which could be documents, emails, posts, individuals, or organizations).
We will first calculate the overall average treatment effect (or ATE), which shows that a positive review increases the probability of a click by 13 percentage points in this dataset.
Average Treatment Effect (or ATE):
print( cm.estimate_ate() )
Conditional Average Treatment Effect (or CATE): reviews that mention the word "toddler":
print( cm.estimate_ate(df['text'].str.contains('toddler')) )
Individualized Treatment Effects (or ITE):
test_df = pd.DataFrame({'T_ac' : [1], 'C_true' : [1],
'text' : ['I never bought this album, but I love his music and will soon!']})
effect = cm.predict(test_df)
print(effect)
Model Interpretability:
print( cm.interpret(plot=False)[1][:10] )
Features with the v_
prefix are word features. C_true
is the categorical variable indicating whether or not the product is a CD.
Despite the "NLP" in CausalNLP, the library can be used for causal inference on data without text (e.g., only numerical and categorical variables). See the examples for more info.
API documentation and additional usage examples are available at: https://amaiya.github.io/causalnlp/
Please cite the following paper when using CausalNLP in your work:
@article{maiya2021causalnlp,
title={CausalNLP: A Practical Toolkit for Causal Inference with Text},
author={Arun S. Maiya},
year={2021},
eprint={2106.08043},
archivePrefix={arXiv},
primaryClass={cs.CL},
journal={arXiv preprint arXiv:2106.08043},
}


SHINE A film review by Shane R. Burridge Copyright 1996 Shane R. Burridge
Shine (1996) 104m.
True story of David Helfgott, a teenage pianist who won a scholarship to The London Royal College of Music, had a nervous breakdown, and returned home to Australia a forgotten recluse (although after the Australian release of this film, the public showed a renewed interest in him and he responded with a successful nationwide tour). Three actors play Helfgott - as a boy, a teenager, and an adult - but it's the latter performance by Geoffrey Rush that's most absorbing. How much time did Rush and scriptwriter Jan Sardi spend with the real-life Helfgott to capture his flustered, stream-of-consciousness speech so naturally? Rush's performance is such a powerhouse one (he doesn't use a hand double for the piano-playing sequences) that it's easy to overlook the similarly fine turns by his younger incarnations. And don't forget Scott Hicks' seamless directing job - it would be tempting for any director to use the tormented-genius premise as an excuse to go over the top, but Hicks keeps a tight rein on his story.
Emotional core of the film is harder to pin down - clearly it must be Helfgott himself, but since he has been repressed by his father (Armin Mueller-Stahl), a Polish Jew whose own father denied him access to a musical instrument, he's not given to emotion easily (until his wordless, memorable final scene on stage). Also it's kind of difficult to empathize with (a) mental instability, and (b) musical genius. The emotional focus of the story is instead directed toward Helfgott. Everyone he comes in contact with responds to him positively; everybody loves him - writer Katharine Prichard (Googie Withers), his mentor Cecil Parkes (John Gielgud, still going strong), his wife-to-be Gillian (Lynn Redgrave), and his family. Despite all the feel-good overtones, story never gets sappy, sentimental, or manipulative. Only point to consider after viewing is why no explanation is offered for the cause of Helfgott's dysfunction. Was it simply too much strain that led to a mental collapse? Were his problems impressed on him from the start by his obssessive father? Was it purely medical in cause? Or are we to be left with the assumption that genius goes hand-in-glove with it's own special madness? As the film doesn't say one thing or another about any of these possibilities it is the last one that might leave you with the strongest impression, and since the expression `shine' is never equated with Helfgott during the course of the film it's natural to assume that it refers to the light of his talent which burned too bright and too fast. Or perhaps he `shone' because his father was part Polish. I know, I know. I'm sorry... it was too hard to resist.
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


This tutorial will walk you through the process of getting a fully functional registered account on the BitShares blockchain.
The first step is to download and install the BitShares client.
sha1: 33172dcbf045b47ebcb184bfab5168bada613426
sha256: a724cbfb264c229b481a6259213edeabd1a4e3b2ee7d10b2d63057c707345103
sha1: e4af05b22782c8cb8697730e1cfbd070c9ef9719
sha256: 46d260bd7e9b574812aef14268448bac9fa5ea8e3a92c383953a58fc1e742ce1
sha1: 2fcd8e980064c2d816309d87024ca9f7b877a9f7
sha256: 73bd9c4217c3b3163996ddc4037b32336641a5414029cd4e65d95111de1fdff6
The latest official release can always be found on GitHub at this URL: https://github.com/bitshares/bitshares-2/releases/latest
After you have downloaded the latest version for your computer and installed the BitShares application, start it up and accept the license. You should then be presented with a screen asking you to set your wallet password.
Your password is used to protect your wallet, which contains your private keys while they are stored on your computer. Be sure to use a reasonably strong password and that your password is not used anywhere else.
NOTE: Do not assume that if you remember your password that you can recover your funds from another computer just because it has BitShares installed. We will walk you through the process of backing up your wallet in a later step.
The next step is to create an account where you should be presented with a screen similar to the screen shown below:
Once you have chosen an account name that you are happy with, click the Create New Account button.
NOTE: An account is a named public key that allows you to receive funds, login to websites, and sign messages. A wallet can contain one or more accounts, which means that you can create multiple accounts within your wallet, so there’s no need to worry about picking the perfect name.
After clicking Create New Account you will be registered automatically, as shown below:
As a best practice, you should create a backup copy of your wallet right now. To backup your wallet, to the wallet management console as shown below.
Your password is used to protect your wallet, which contains your private keys while they are stored on your computer. Be sure to use a reasonably strong password and that your password is not used anywhere else.
Provide the password defined at when you created your accounts:
At this point, the BitShares application will ask you to verify the so called brain key which can be used to recover all your accounts created in your wallet.
Write down the brain key and store it safely. It will allow access to your accounts and funds without any further requirements! After that, press next and verify that you wrote down your brain key correctly:
NOTE: While you only have to do this once to recover your balances, we recommend that you do this periodically to avoid losing your transaction history.


"x" "1" "PAVLICA,M, PAPES,D, FRANEKIC,J AND NAGY,B, EFFECTS OF BENZYLADENINE ONPROKARYOTIC AND EUKARYOTIC CELLS, MUTAT. RES. 281(4):277-282, 1992"


World's Largest Football Store
Rapid movement, visual distortion and fallen defenders.
Footballs from Adidas, Nike, Umbro.
Nike Motion Blur Pack
Footballs


Abhinav is an artificial intelligence and machine learning enthusiast who aspires to create new solutions for real-time problems in the world.
He has made projects like Virtual body measurement system, Harry Potter invisible cloak using computer vision, and many more projects.
He is a machine learning analyst in a startup company called Styloria.
My job is to make the tech part strong in the startup by making cool projects using machine learning.
My recent work is the Virtual Body Measurement System using TensorFlow.
Abhinav has interned at NUS and HPE with the help of Corporate Gurukul as an academic intern.
I have learned a lot about the internet of things with machine learning.
I have interned in TCS ion remote internship and my role is to make Automate identification and recognition of handwritten text using machine learning.
I love to share and guide people in learning a new programming language.


What's your name Player 1? You shall play with the Ninja Star...sharpen your blades to prepare for battle.
What's your name Player 2? You shall play with the Herring...Good Luck!
Submit
1a
1b
1c
2a
2b
2c
3a
3b
3c


|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object no.uio.duo.bagit.BagIt
public class BagIt
Main class which manages interactions with a StudentWeb formatted BagIt file. This allows the BagIt packages to be constructed from files on disk, or for a zipped BagIt to be read and opened. The StudentWeb Bag format is as follows:
base directory/ | bagit.txt | manifest-md5.txt | tagmanifest-md5.txt \--- data/ \--- final | [final version files] \--- supporting | [supporting files] \--- licence/ | licence.txt \--- metadata/ | metadata.xml \--- tagfiles/ | supporting.access.txt | formats.txt | final.sequence.txt | supporting.sequence.txt
| Constructor Summary | |
|---|---|
BagIt(java.io.File file)
Create a BagIt object around a file object provided |
|
BagIt(java.lang.String filePath)
Create a BagIt object around a directory specified at the filePath |
| Method Summary | |
|---|---|
void |
addFinalFile(java.io.File file)
Add a file to the Bag, which is a final version file of the item (see the class documentation regarding structure of the Bag). |
void |
addFinalFile(java.io.File file,
int sequence)
Add a file to the Bag, which is a final version file of the item (see the class documentation regarding structure of the Bag). |
void |
addFinalFile(java.io.File file,
java.lang.String mimeType,
int sequence)
Add a file to the Bag, which is a final version file of the item (see the class documentation regarding structure of the Bag). |
void |
addLicenceFile(java.io.File file)
Set a licence file for the Bag |
void |
addLicenceFile(java.io.File file,
java.lang.String mimeType)
Set a licence file for the Bag |
void |
addMetadata(Metadata metadata)
Add the provided metadata object to the Bag in the appropriate file format |
void |
addMetadataFile(java.io.File file)
Add an appropriately formatted metadata file as the metadata file for this Bag |
void |
addSupportingFile(java.io.File file,
int sequence,
java.lang.String access)
Add a file to the Bag, which is supporting material for the item (see the class documentation regarding structure of the Bag). |
void |
addSupportingFile(java.io.File file,
java.lang.String access)
Add a file to the Bag, which is supporting material for the item (see the class documentation regarding structure of the Bag). |
void |
addSupportingFile(java.io.File file,
java.lang.String mimeType,
int sequence,
java.lang.String access)
Add a file to the Bag, which is supporting material for the item (see the class documentation regarding structure of the Bag). |
java.io.InputStream |
getFile()
Get the file representing the whole bag |
BaggedItem |
getLicenceFile()
Get the licence file from the Bag |
java.lang.String |
getMD5()
Get the MD5 for the whole Bag |
BaggedItem |
getMetadataFile()
Get the Metadata file from the Bag |
java.lang.String |
getMimetype()
Get the mimetype of the packaged Bag |
java.lang.String |
getName()
Get the filename for the whole Bag |
java.lang.String |
getPackaging()
Get the SWORDv2 packaging identifier for the Bag |
java.util.TreeMap<java.lang.Integer,BaggedItem> |
getSequencedFinals()
Return the list of primary files sorted in sequence |
java.util.TreeMap<java.lang.Integer,BaggedItem> |
getSequencedSecondaries(java.lang.String accessRights)
Return the list of secondary files sorted in sequence |
java.lang.String |
getSupportingAccess(java.lang.String filename)
Obtain the access privilege for the specified filename |
void |
loadBag(java.io.File file)
Construct the internal state of this BagIt object from the given file. |
boolean |
verifyPayloadManifest()
Verify the Bag against its manifest |
boolean |
verifyTagManifest()
Verify the Bag against its tag manifest |
void |
writeToFile()
Write the current state of the BagIt object out to the file the BagIt object is constructed over |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public BagIt(java.lang.String filePath) throws java.io.IOException
filePath
- Path to BagIt structure
java.io.IOException
public BagIt(java.io.File file) throws java.io.IOException
file
- File object representing the BagIt structure
java.io.IOException
| Method Detail |
|---|
public void loadBag(java.io.File file) throws java.io.IOException
file
- The zip file which contains the bag
java.io.IOException
public void addFinalFile(java.io.File file)
file
- File object to add to the Bagpublic void addFinalFile(java.io.File file, int sequence)
file
- File object to add to the Bagsequence
- position in the sequence of final files in the Bagpublic void addFinalFile(java.io.File file, java.lang.String mimeType, int sequence)
file
- File object to add to the BagmimeType
- Mimetype of the file object. If this is null, we will attempt to guesssequence
- position in the sequence of final files in the Bag. If this is -1 we will just add it to the end of the current listpublic void addSupportingFile(java.io.File file, java.lang.String access)
file
- File object to add to the Bagaccess
- Access conditions of the item. Should be "open" or "closed"public void addSupportingFile(java.io.File file, int sequence, java.lang.String access)
file
- File object to add to the Bagsequence
- position in the sequence of final files in the Bag. If this is -1 we will just add it to the end of the current listaccess
- Access conditions of the item. Should be "open" or "closed"public void addSupportingFile(java.io.File file, java.lang.String mimeType, int sequence, java.lang.String access)
file
- File object to add to the BagmimeType
- Mimetype of the file object. If this is null, we will attempt to guesssequence
- position in the sequence of final files in the Bag. If this is -1 we will just add it to the end of the current listaccess
- Access conditions of the item. Should be "open" or "closed"public void addMetadata(Metadata metadata)
metadata
- Metadata objectpublic void addMetadataFile(java.io.File file)
file
- File object containing the metadatapublic void addLicenceFile(java.io.File file)
file
- File object containing the licencepublic void addLicenceFile(java.io.File file, java.lang.String mimeType)
file
- File object containing the licencemimeType
- mimetype of the licence objectpublic void writeToFile()
public java.util.TreeMap<java.lang.Integer,BaggedItem> getSequencedFinals()
public java.util.TreeMap<java.lang.Integer,BaggedItem> getSequencedSecondaries(java.lang.String accessRights)
accessRights
- Access rights filter - provide "open" or "closed", to obtain only those with that access right
public BaggedItem getMetadataFile()
public BaggedItem getLicenceFile()
public java.lang.String getSupportingAccess(java.lang.String filename) throws java.io.IOException
filename
-
java.io.IOException
public boolean verifyPayloadManifest()
public boolean verifyTagManifest()
public java.io.InputStream getFile() throws java.io.IOException
java.io.IOException
public java.lang.String getName()
public java.lang.String getMD5()
public java.lang.String getMimetype()
public java.lang.String getPackaging()
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


In order to reset your password, fill all the fields.
Asnwer these three security questions as you've entered when you first register.
To complete this password reset, please click on "Reset" above. Then, check your email for password reset details.


Read what others are saying about Kubernetes.
Microsoft Rolls Out Kubernetes Support And The Docker Steamroller Keeps Moving
Ben Kepes, Forbes - Aug 29, 2014
VMware Partners With Docker, Pivotal And Google To Bring Container Support To Its Platform
Frederic Lardinois, TechCrunch - Aug 25, 2014
Mesosphere Comes To The Google Cloud Platform, Integrates Google's Open Source Kubernetes Project
Frederic Lardinois, TechCrunch - Aug 18, 2014
How And Why Google Is Open Sourcing Its Data Centers
Matt Asay, ReadWriteWeb - Aug 18, 2014
OpenShift v3 Platform Combines Docker, Kubernetes, Atomic and More
Joe Fernandes, OpenShift Blog - Aug 14, 2014
Red Hat and Google Collaborate on Kubernetes to Manage Docker Containers at Scale
Red Hat Blog - July 10, 2014
IBM, Microsoft, Red Hat Join Google's Open Source Container Management Project Kubernetes
Jason Verge, Data Center Knowledge - Jul 10, 2014


Click a button on the right. Fetch's button will cause many other options to appear.
List servers
Since Last-Modified date of: (blank is OK)
Offset of: (blank is OK)
Limit of: (blank is OK)
Async
Sync
Create new server:
Name:
Image ID :
Flavor ID :
Value for metadata (blank is OK):
Fetch ID:
Refresh ID
:
Update ID
:
Name:
Pass:
Wait for ID
to be not in flux:
Remove ID
:
Reboot ID
:
Rebuild ID
: New imageId =
Resize ID
: New flavorId =
Confirm resize for ID
:
Revert resize for ID
:
Share IP for ID
: IP =
Shared IP group ID =
Configure server
Unshare IP for ID
: IP =
Get backup schedule for ID
:
Set backup schedule for ID
:
Day of the week (optional):
Hour of the day (optional):
Enabled? (y/n) (optional):


FEATURED & RECOMMENDED
Shadow of the Tomb Raider
Pre-Purchase Croft Edition to Play Before September 14th
$59.99
SPECIAL OFFERS
FREE WEEKEND
Play for free until Sunday at 1PM PST
FREE WEEKEND
Play for free until Sunday at 1PM PST
LIGHTNING DEALS
FREE WEEKEND
Play for free until Sunday at 1PM PST
FREE WEEKEND
Play for free until Sunday at 1PM PST
FREE TO PLAY
FREE WEEKEND
Play for free until Sunday at 1PM PST
FREE WEEKEND
Play for free until Sunday at 1PM PST
FREE WEEKEND
Play for free until Sunday at 1PM PST


Coldplay won't tour their new album until concerts become 'environmentally beneficial'
The band’s last tour grossed an estimated €450 million in ticket sales.
by Sean MurrayCOLDPLAY WON’T BE touring to promote their latest album because of the impact worldwide music tours have on the environment.
Lead singer Chris Martin told the BBC: “All of us have to work out the best way of doing our job.
We’re taking time to see how our tour can be actively beneficial.
Martin said the band would be “disappointed” if their next tour is not carbon neutral. He told the BBC he wants a tour with no single-use plastics used and have it largely solar-powered.
“Our next tour will be the best possible version of a tour like that environmentally,” he said. “We’ve done a lot of big tours at this point. How do we turn it around so it’s not so much giving as taking?”
Martin added that he hoped this measure would have a “positive impact”, given the impact on the environment of embarking on a multi-city music tour.
The last tour the British group embarked on saw them take in 122 shows across four continents in 2016 and 2017.
That tour grossed more than $500 million (€450 million) in ticket sales, making it the third-highest grossing in history.
Coldplay will play two shows this week in the Jordanian capital Amman that are set to be streamed live on YouTube.
They’re also set to perform a concert in London’s National History Museum next week, with proceeds going to an environmental charity.


{# -- extend base layout -#} {% extends "base.html" %} {% block content %}
{{ 'An unexpected error has occurred' }}
{{ 'The administrator has been notified. Sorry for the inconvenience!' }}
{{ 'Back' }}


A Dark Experience
Choose any of the following dark mods to your taste and start using them!
1. Dark Green - White
scroll down to access the download options.
Screenshot
Download via Google
Try WhatsAero!
2. Dark Blue - White
Screenshot
Download via Google
3. Dark White - White
Screenshot
Download via Google
4. Dark Red - White
Screenshot
Download via Google
5. Coral Pink - White
Screenshot
Download via Google


WERT plus TMZ WBRT Study or Subgroup Events Total_Events Total
Dou-Dou Li (2015) 16 18 10 «18 Fei Teng (2017) 21 26 16 26 Geng Li (2017) 34 39 2439 Hassler MR (2013) 5 22 2 13 Ji-Yong Peng (2008) 19 19 19 (21 Jia-Yin Xie (2007) 19 25 11 25 Lei Shi (2014) 31 43 21 41 Shi-Jie Zhao (2016) 15 30 12, 30 Tian-Lu Gu (2015) 42 62 33°60 Wei Cheng (2013) 20 30 12. 26 Xia Deng (2017) 45 129 22 109 Total (95% Cl) 433 397 Total events 267 182
Heterogeneity: Chi? = 11.62, df= 10 (P= 0.31):/7= 14% Test for overall effect: 7= 6.51 (P < 0.00001)
Risk ratio
Weight _M-H, Fixed, 95% Cl
5.4% 8.8% 12.9% 1.3% 10.0% 5.9% 11.5% 6.4% 18.1% 6.9% 12.8%
100.0%
1.60 (1.03, 2.50) 1.26 (0.89, 1.79] 1.42 (1.08, 1.87] 1.48 (0.33, 6.55] 1.10 (0.93, 1.30) 1.73 [1.05, 2.83] 1.41 (0.99, 2.00) 1.25 (0.71, 2.20] 1.22 (0.96, 1.55] 1.44 (0.89, 2.35] 1.73 1.11, 2.69]
1.40 [1.24, 1.57]
Risk ratio M.-H, Fixed, 95% Cl te —
t | |
Lo
Le = o ++} + 0.05 0.2 1 5 20
Favours [experimental] Favours [control]


This build uses a few gulp plugins to render the Javascript. If you just want to start using Yo without the additional gulp. Just download the minified version and follow the instructions on initialising it.
Then write whatever code you want without worrying about dependencies and any large files as it's all raw Javascript and gives you the freedom to be creative yourself.


Our wedding and reception will take place at Trump Winery, ten miles outside of downtown Charlottesville. We have arranged a discounted rate at the following hotels, and we will be providing bus transportation for all guests from these hotels to the wedding and reception venue. If you do not plan to stay at one of the following hotels, please plan to arrive at either hotel with enough time to board the provided buses. If you have any questions, don't hesitate to reach out to the bride and groom.
The Omni Hotel
212 Ridge McIntire Road, $299+
Situated on Charlottesville's Downtown Mall, the Omni will put you in the heart of the town. Walk easily to over a hundred local restaurants and shops along one of Virginia's most beautiful pedestrian malls.
Phone:<PHONE_NUMBER>
Mention event code "Kingsbury Greco Wedding"
Reserve OnlineHilton Garden Inn
1792 Richmond Road, $219+
Located on a historic property in Pantops, the Hilton Garden Inn is a short drive from downtown. Here, you're closer to Thomas Jefferson's Monticello, Carter Mountain Orchard, and some of Nelson Country's 140+ breweries and vineyards.
Phone:<PHONE_NUMBER>
Mention event code "KG1"
Reserve Online


Shakespeare and Company is an English-language bookshop in the heart of Paris, opposite Notre-Dame. It has been a meeting place for writers and readers for almost seventy years.
In 1951, Shakespeare and Company was opened by George Whitman on rue de la Bûcherie. It was given its name by Sylvia Beach, who called the shop the “spiritual successor” to her own. Beach’s bookstore, on rue de l’Odéon (1919-1941), had been a gathering place for the great expat writers of the time, including Hemingway, Stein, Fitzgerald, Eliot, and Pound. And it was Beach who first published James Joyce’s Ulysses, when no one else dared.


The bgerror command does not exist as built-in part of Tcl. Instead, individual applications or users can define a bgerror command (e.g. as a Tcl procedure) if they wish to handle background errors.
A background error is one that occurs in an event handler or some other command that did not originate with the application. For example, if an error occurs while executing a command specified with the after command, then it is a background error. For a non-background error, the error can simply be returned up through nested Tcl command evaluations until it reaches the top-level code in the application; then the application can report the error in whatever way it wishes. When a background error occurs, the unwinding ends in the Tcl library and there is no obvious way for Tcl to report the error.
When Tcl detects a background error, it saves information about the error and invokes a handler command registered by interp bgerror later as an idle event handler. The default handler command in turn calls the bgerror command . Before invoking bgerror, Tcl restores the errorInfo and errorCode variables to their values at the time the error occurred, then it invokes bgerror with the error message as its only argument. Tcl assumes that the application has implemented the bgerror command, and that the command will report the error in a way that makes sense for the application. Tcl will ignore any result returned by the bgerror command as long as no error is generated.
If another Tcl error occurs within the bgerror command (for example, because no bgerror command has been defined) then Tcl reports the error itself by writing a message to stderr.
If several background errors accumulate before bgerror is invoked to process them, bgerror will be invoked once for each error, in the order they occurred. However, if bgerror returns with a break exception, then any remaining errors are skipped without calling bgerror.
If you are writing code that will be used by others as part of a package or other kind of library, consider avoiding bgerror. The reason for this is that the application programmer may also want to define a bgerror, or use other code that does and thus will have trouble integrating your code.
proc bgerror {message} { set timestamp [clock format [clock seconds]] set fl [open mylog.txt {WRONLY CREAT APPEND}] puts $fl "$timestamp: bgerror in $::argv '$message'" close $fl }


The lunch in your area. Based on Leipzig (Plagwitz, Lindenau).
With this app you can check the lunch in bisto or restuarants in Leipzig (Plagwitz, Lindenau) of this day, tomorrow or next week.


--- layout: documentation title: NetflowV9OptionsTemplateRecordType ---
Specifies the Options Template Record region, which includes the Option Scope Length, Option Length, and fields specifying the Scope field type and Scope field length.
| Field Name | Type | Description |
|---|---|---|
| Template_ID0..1 | IntegerObjectPropertyType |
Specifies the template ID of this Options Template, which must be greater than 255. |
| Option_Scope_Length0..1 | HexBinaryObjectPropertyType |
Specifies the length of bytes of any Scope field definition contained in the Options Template Record. |
| Option_Length0..1 | HexBinaryObjectPropertyType |
Specifies the length of bytes of any options field definitions contained in this Options Template Record. |
| Scope_Field_Type0..1 | NetflowV9ScopeFieldType |
Specifies the relevant portion of the Exporter/NetFlow process to which the Options Template Record refers. Currently defined values include 1 for System, 2 for Interface, 3 for Line Card, 4 for Cache, and 5 for Template. More information can be found in RFC 3954. |
| Scope_Field_Length0..1 | HexBinaryObjectPropertyType |
Specifies the length (in bytes) of the Scope field as it would appear in an Options Data Record. |
| Option_Field_Type0..1 | NetflowV9FieldType |
Specifies the type of field that would appear in the Options Template Record. More information can be found in RFC 3954. |
| Option_Field_Length0..1 | HexBinaryObjectPropertyType |
Specifies the length (in bytes) of the Option field. |


Reports when type of either dependency or its field cannot be cast to type of the field which is set to
Report could be false positive if the finals classes of the component or its dependencies weren't detected
properly considering layers priority
For example such error occurs if component's class has field:
But totally different component is injected to this field via its .properties file
private Repository repository;
public setRepository(Repository repository) {...}
repository=/atg/commerce/order/OrderTools


Enabled
Over 35k Happy Customers
A Complete Solution
What is Appkit?
Built from the ground up to be fast, easy to use, modular and the most outstanding Mobile PWA on Envato Market. combine this with the neverbefore seen support provided by Enabled and you're getting the most amazing deal possible.
Copy and Paste Ready
Components
Reusable components that are just as easy as copy and paste.
View AllA Complete Solution
What can Appkit do?
Turn your website into an app with the awesome PWA function. Just add Appkit to your homescreen and enjoy! We'll handle the rest!
- Mobile PWA
- Bootstrap 5.x
- Bootstrap 4.x
- Light & Dark
- 1x Vanilla JS
- 1x jQuery Version
APPKIT
MOBILE & PWA
Interact with your Users
Appkit Action Sheets
Tap a button and release the power of action sheets. Infinite options and the easiest implementation possible. You'll be flying in no time!
Share appkit with a tap More Action Sheets in Features MenuShow off Media
Appkit Galleries
With gorgeous designs that compete only with Native apps, Appkit comes ready for your media galleries!
Over 35k Buyers
Love Enabled Products
We've served and loved each and every customer, and your feedback made Appkit Possible and it's constantly growing! Thank you!
Get appkit Today 150+ Pages and 5 Star Customer Satisfaction


Our approach is rooted in years of on-the-ground experience, driven by a careful methodology and powered by a deep passion to improve the lives of children and give them a chance to grow up in a family.
The power of human empathy, leading to collective action, saves lives, and frees prisoners. Ordinary people, whose personal well-being and security are assured, join together in huge numbers to save people they do not know, and will never meet… Unlike any other creature on this planet, humans can learn and understand, without having experienced. They can think themselves into other people’s places… We do not need magic to change the world, we carry all the power we need inside ourselves already: we have the power to imagine better.
Learn more


Races
Posted: Sat Aug 30, 2008 5:43 pm
Seeing as this is a brand new game, I see no reason why we should keep the races the same as xen or even similar to other games out there at the moment. What I think would be far more cool is to design unique races with different cultures and their own place in the Evidyon world. Like, at the minute I've sketched out five races for the game, each based roughly on one of the primary stats. One's, obviously, human but the other four are brand new ones with their own cultures and different geographical bases in the world. I think this'd give Evidyon a much more "our game" feeling and also help to distance it from the standard fantasy characters that populate games nowadays. The races would all have distinct differences but would all be able to access any class, develop however the player wanted them to and allow as much customisation as possible. I think this'd make the game more fun and far more unique.
What do you guys think?
What do you guys think?


The cache instance of audio source
The audio cache writer
The audio decoder
The audio demuxer
The audio identifier
true if the audio source is livestream, otherwise false
The audio player that create the audio resource
The audio source
Generated using TypeDoc
Options for making audio resource


--- layout: page title: About image: /assets/images/utility_pics/elian.jpg ---
Elian Daiva is an interaction designer and creative technologist based on Berlin, Germany. He holds MSc. and BSc. in Electrical Engineering from Institut Teknologi Bandung, Indonesia. His works span from interactive installations, embedded systems, games, and virtual reality.
With his fellow, Elian works through design thinking and human-centered design to explore the structures and systems of human interactions and the potential for technology to mediate, manipulate, and evolve these interactions.
Elian has worked on installation at London Design Biennale 2016, Bandung International Art Festival 2016, Venice Art Biennale 2017, and Bandung Planning Gallery 2018.


This is Words and Buttons Online — a collection of interactive #tutorials, #demos, and #quizzes about #mathematics, #algorithms and #programming.
This is a follow-up on Challenge your performance intuition with C++ magic squares. The original post got some public attention and also raised some intriguing questions. Measurements, sure, let's say we measure code A against code B and the B is faster. But why?
We can get a hint or two with varlgrind's cachegrind and with good old disassembly. So let's do that.
But just before we start, I want to remind you that it is all only a game and the CPU, the compiler, and the benchmark are the rules. They might not necessarily represent the “real life” well enough, although in the “real life” knights don't walk in a silly “L” pattern either, and it doesn't make chess any less interesting.
However, the benchmark proposed does have a flaw! It produces data in certain order that shadows the importance of branch prediction. Branch mis-prediction is certainly not something you would want to ignore. If you are interested in more relevant benchmarking, please take a look at Learning the value of good benchmarking technique with C++ magic squares by Veedrac. It's very insightful!
ioquatix from Reddit wonders how lookups can be faster than direct shifts. Honestly, for me this was also a mystery.
auto c15 = '5' * 3; uint_fast64_t ideal_char_map = static_cast<uint_fast64_t>(0x1FF) << 49; uint_fast64_t char_map_one = 1u; bool check_if_magic(const std::string& sq) { if ((sq[0] + sq[1] + sq[2] != c15) || (sq[3] + sq[4] + sq[5] != c15) || (sq[6] + sq[7] + sq[8] != c15) || (sq[0] + sq[3] + sq[6] != c15) || (sq[1] + sq[4] + sq[7] != c15) || (sq[2] + sq[5] + sq[8] != c15) || (sq[0] + sq[4] + sq[8] != c15) || (sq[2] + sq[4] + sq[6] != c15)) return false; auto char_map = ideal_char_map; for(auto i = 0u; i < 9; ++i) char_map ^= char_map_one << sq[i]; if (char_map != 0) return false; return true; } |
auto magic_number = '5' * 3; auto not_so_magic_number = '5' * 2; const std::array<uint16_t, 58> bit_shifts { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 8, 16, 32, 64, 128, 256 }; bool check_if_magic(const std::string& sq) { if ((sq[0] + sq[1] + sq[2] != magic_number) || (sq[3] + sq[5] != not_so_magic_number) || (sq[6] + sq[7] + sq[8] != magic_number) || (sq[0] + sq[3] + sq[6] != magic_number) || (sq[1] + sq[7] != not_so_magic_number) || (sq[2] + sq[5] + sq[8] != magic_number) || (sq[0] + sq[4] + sq[8] != magic_number) || (sq[2] + sq[4] + sq[6] != magic_number)) return false; auto char_map = 0u; for(auto i = 0u; i < 9; ++i) char_map ^= bit_shifts[sq[i]]; if (char_map != 511) return false; return true; } |
I think it would be helpful to look at the disassembly.
Z14check_if_magic ... .LFB1711: .cfi_startproc movq (%rdi), %rdx xorl %eax, %eax movsbl (%rdx), %esi movsbl 1(%rdx), %edi movsbl 2(%rdx), %r8d leal (%rsi,%rdi), %ecx addl %r8d, %ecx cmpl magic_number(%rip), %ecx je .L21 ret .p2align 4,,10 .p2align 3 .L21: pushq %r13 .cfi_def_cfa_offset 16 .cfi_offset 13, -16 pushq %r12 .cfi_def_cfa_offset 24 .cfi_offset 12, -24 pushq %rbp .cfi_def_cfa_offset 32 .cfi_offset 6, -32 pushq %rbx .cfi_def_cfa_offset 40 .cfi_offset 3, -40 movsbl 3(%rdx), %r10d movsbl 4(%rdx), %r11d movsbl 5(%rdx), %ebx leal (%r10,%r11), %r9d addl %ebx, %r9d cmpl %r9d, %ecx je .L22 .L13: popq %rbx .cfi_remember_state .cfi_restore 3 .cfi_def_cfa_offset 32 popq %rbp .cfi_restore 6 .cfi_def_cfa_offset 24 popq %r12 .cfi_restore 12 .cfi_def_cfa_offset 16 popq %r13 .cfi_restore 13 .cfi_def_cfa_offset 8 ret .p2align 4,,10 .p2align 3 .L22: .cfi_restore_state movsbl 6(%rdx), %ebp movsbl 7(%rdx), %r13d movsbl 8(%rdx), %r12d leal 0(%rbp,%r13), %r9d addl %r12d, %r9d cmpl %r9d, %ecx jne .L13 leal (%rsi,%r10), %r9d addl %ebp, %r9d cmpl %r9d, %ecx jne .L13 addl %r11d, %edi addl %r13d, %edi cmpl %edi, %ecx jne .L13 leal (%r8,%rbx), %edi addl %r12d, %edi cmpl %edi, %ecx jne .L13 addl %r11d, %esi addl %r12d, %esi cmpl %esi, %ecx jne .L13 addl %r11d, %r8d addl %ebp, %r8d cmpl %r8d, %ecx jne .L13 movq ideal_char_map(%rip), %rsi movq char_map_one(%rip), %r8 leaq 9(%rdx), %rdi movq %rdx, %rax .p2align 4,,10 .p2align 3 .L4: movsbl (%rax), %ecx movq %r8, %rdx addq $1, %rax salq %cl, %rdx xorq %rdx, %rsi cmpq %rax, %rdi jne .L4 testq %rsi, %rsi sete %al jmp .L13 .cfi_endproc |
_Z14check_if_magic ... .LFB1752: .cfi_startproc movq (%rdi), %rdx xorl %eax, %eax movsbl (%rdx), %esi movsbl 1(%rdx), %edi movsbl 2(%rdx), %r8d leal (%rsi,%rdi), %ecx addl %r8d, %ecx cmpl magic_number(%rip), %ecx je .L17 ret .p2align 4,,10 .p2align 3 .L17: pushq %r13 .cfi_def_cfa_offset 16 .cfi_offset 13, -16 pushq %r12 .cfi_def_cfa_offset 24 .cfi_offset 12, -24 pushq %rbp .cfi_def_cfa_offset 32 .cfi_offset 6, -32 pushq %rbx .cfi_def_cfa_offset 40 .cfi_offset 3, -40 movsbl 3(%rdx), %r9d movsbl 5(%rdx), %r10d leal (%r9,%r10), %ebp cmpl not_so_magic_number(%rip), %ebp je .L18 .L2: popq %rbx .cfi_remember_state .cfi_restore 3 .cfi_def_cfa_offset 32 popq %rbp .cfi_restore 6 .cfi_def_cfa_offset 24 popq %r12 .cfi_restore 12 .cfi_def_cfa_offset 16 popq %r13 .cfi_restore 13 .cfi_def_cfa_offset 8 ret .p2align 4,,10 .p2align 3 .L18: .cfi_restore_state movsbl 6(%rdx), %r11d movsbl 7(%rdx), %r13d movsbl 8(%rdx), %ebx leal (%r11,%r13), %r12d addl %ebx, %r12d cmpl %r12d, %ecx jne .L2 addl %esi, %r9d addl %r11d, %r9d cmpl %r9d, %ecx jne .L2 addl %r13d, %edi cmpl %edi, %ebp jne .L2 leal (%r8,%r10), %edi addl %ebx, %edi cmpl %edi, %ecx jne .L2 movsbl 4(%rdx), %edi addl %edi, %esi addl %ebx, %esi cmpl %esi, %ecx jne .L2 addl %r8d, %edi addl %edi, %r11d cmpl %r11d, %ecx jne .L2 movq %rdx, %rax leaq 9(%rdx), %rsi xorl %edx, %edx .p2align 4,,10 .p2align 3 .L3: movsbq (%rax), %rcx addq $1, %rax movzwl _ZL25bit_shifts(%rcx,%rcx), %ecx xorl %ecx, %edx cmpq %rax, %rsi jne .L3 cmpl $511, %edx sete %al jmp .L2 .cfi_endproc |
Valgrind is a dynamic analyzer, it can do lots of stuff for us. In this case I would be the most interested in the memory read/writes vs. instruction reads.
I refs: 13,099,624,571 I1 misses: 1,846 LLi misses: 1,705 I1 miss rate: 0.00% LLi miss rate: 0.00% D refs: 7,435,891,049 (4,739,364,171 rd + 2,696,526,878 wr) D1 misses: 15,886 ( 13,670 rd + 2,216 wr) LLd misses: 9,155 ( 7,758 rd + 1,397 wr) D1 miss rate: 0.0% ( 0.0% + 0.0% ) LLd miss rate: 0.0% ( 0.0% + 0.0% ) LL refs: 17,732 ( 15,516 rd + 2,216 wr) LL misses: 10,860 ( 9,463 rd + 1,397 wr) LL miss rate: 0.0% ( 0.0% + 0.0% ) |
I refs: 13,041,321,061 I1 misses: 1,843 LLi misses: 1,705 I1 miss rate: 0.00% LLi miss rate: 0.00% D refs: 7,438,562,794 (4,742,035,917 rd + 2,696,526,877 wr) D1 misses: 15,894 ( 13,676 rd + 2,218 wr) LLd misses: 9,156 ( 7,761 rd + 1,395 wr) D1 miss rate: 0.0% ( 0.0% + 0.0% ) LLd miss rate: 0.0% ( 0.0% + 0.0% ) LL refs: 17,737 ( 15,519 rd + 2,218 wr) LL misses: 10,861 ( 9,466 rd + 1,395 wr) LL miss rate: 0.0% ( 0.0% + 0.0% ) |
Apparently, we now have 3 000 000 more data cache reads, but also 60 000 000 less instruction cache reads. All and all, it is more effective with the lookup.
But this works only because all the data fit in L1-cache perfectly. Which is, of course, rarely the case on practice, so it is generally better to abstain from using lookups. It is true, it just doesn't help in this particular exercise.
FbF_ from Reddit justly points out that leaving global variables non-constant is very wrong. Excellent point! This is indeed a mistake, of course, everything that is meant to be constant should be `const`. But does it affect performance all that much?
auto c15 = '5' * 3; uint_fast64_t ideal_char_map = static_cast<uint_fast64_t>(0x1FF) << 49; uint_fast64_t char_map_one = 1u; bool check_if_magic(const std::string& sq) { if ((sq[0] + sq[1] + sq[2] != c15) || (sq[3] + sq[4] + sq[5] != c15) || (sq[6] + sq[7] + sq[8] != c15) || (sq[0] + sq[3] + sq[6] != c15) || (sq[1] + sq[4] + sq[7] != c15) || (sq[2] + sq[5] + sq[8] != c15) || (sq[0] + sq[4] + sq[8] != c15) || (sq[2] + sq[4] + sq[6] != c15)) return false; auto char_map = ideal_char_map; for(auto i = 0u; i < 9; ++i) char_map ^= char_map_one << sq[i]; if (char_map != 0) return false; return true; } |
const auto c15 = '5' * 3; const uint_fast64_t ideal_char_map = static_cast<uint_fast64_t>(0x1FF) << 49; const uint_fast64_t char_map_one = 1u; bool check_if_magic(const std::string& sq) { if ((sq[0] + sq[1] + sq[2] != c15) || (sq[3] + sq[4] + sq[5] != c15) || (sq[6] + sq[7] + sq[8] != c15) || (sq[0] + sq[3] + sq[6] != c15) || (sq[1] + sq[4] + sq[7] != c15) || (sq[2] + sq[5] + sq[8] != c15) || (sq[0] + sq[4] + sq[8] != c15) || (sq[2] + sq[4] + sq[6] != c15)) return false; auto char_map = ideal_char_map; for(auto i = 0u; i < 9; ++i) char_map ^= char_map_one << sq[i]; if (char_map != 0) return false; return true; } |
Well, the difference in runtime is subtle. They both run for about 1.8 seconds along with the generator. But the difference is quite visible in the code. Indeed, the constant version does look better.
Z14check_if_magic ... .LFB1711: .cfi_startproc movq (%rdi), %rdx xorl %eax, %eax movsbl (%rdx), %esi movsbl 1(%rdx), %edi movsbl 2(%rdx), %r8d leal (%rsi,%rdi), %ecx addl %r8d, %ecx cmpl magic_number(%rip), %ecx je .L21 ret .p2align 4,,10 .p2align 3 .L21: pushq %r13 .cfi_def_cfa_offset 16 .cfi_offset 13, -16 pushq %r12 .cfi_def_cfa_offset 24 .cfi_offset 12, -24 pushq %rbp .cfi_def_cfa_offset 32 .cfi_offset 6, -32 pushq %rbx .cfi_def_cfa_offset 40 .cfi_offset 3, -40 movsbl 3(%rdx), %r10d movsbl 4(%rdx), %r11d movsbl 5(%rdx), %ebx leal (%r10,%r11), %r9d addl %ebx, %r9d cmpl %r9d, %ecx je .L22 .L13: popq %rbx .cfi_remember_state .cfi_restore 3 .cfi_def_cfa_offset 32 popq %rbp .cfi_restore 6 .cfi_def_cfa_offset 24 popq %r12 .cfi_restore 12 .cfi_def_cfa_offset 16 popq %r13 .cfi_restore 13 .cfi_def_cfa_offset 8 ret .p2align 4,,10 .p2align 3 .L22: .cfi_restore_state movsbl 6(%rdx), %ebp movsbl 7(%rdx), %r13d movsbl 8(%rdx), %r12d leal 0(%rbp,%r13), %r9d addl %r12d, %r9d cmpl %r9d, %ecx jne .L13 leal (%rsi,%r10), %r9d addl %ebp, %r9d cmpl %r9d, %ecx jne .L13 addl %r11d, %edi addl %r13d, %edi cmpl %edi, %ecx jne .L13 leal (%r8,%rbx), %edi addl %r12d, %edi cmpl %edi, %ecx jne .L13 addl %r11d, %esi addl %r12d, %esi cmpl %esi, %ecx jne .L13 addl %r11d, %r8d addl %ebp, %r8d cmpl %r8d, %ecx jne .L13 movq ideal_char_map(%rip), %rsi movq char_map_one(%rip), %r8 leaq 9(%rdx), %rdi movq %rdx, %rax .p2align 4,,10 .p2align 3 .L4: movsbl (%rax), %ecx movq %r8, %rdx addq $1, %rax salq %cl, %rdx xorq %rdx, %rsi cmpq %rax, %rdi jne .L4 testq %rsi, %rsi sete %al jmp .L13 .cfi_endproc |
_Z14check_if_magic ... .LFB1711: .cfi_startproc movq (%rdi), %rdx xorl %eax, %eax movsbl (%rdx), %esi movsbl 1(%rdx), %edi movsbl 2(%rdx), %r8d leal (%rsi,%rdi), %ecx addl %r8d, %ecx cmpl $159, %ecx je .L17 .L15: ret .p2align 4,,10 .p2align 3 .L17: movsbl 3(%rdx), %r9d movsbl 4(%rdx), %r10d movsbl 5(%rdx), %r11d leal (%r9,%r10), %ecx addl %r11d, %ecx cmpl $159, %ecx jne .L15 pushq %r12 .cfi_def_cfa_offset 16 .cfi_offset 12, -16 pushq %rbp .cfi_def_cfa_offset 24 .cfi_offset 6, -24 pushq %rbx .cfi_def_cfa_offset 32 .cfi_offset 3, -32 movsbl 6(%rdx), %ebx movsbl 7(%rdx), %r12d movsbl 8(%rdx), %ebp leal (%rbx,%r12), %ecx addl %ebp, %ecx cmpl $159, %ecx je .L18 .L2: popq %rbx .cfi_remember_state .cfi_restore 3 .cfi_def_cfa_offset 24 popq %rbp .cfi_restore 6 .cfi_def_cfa_offset 16 popq %r12 .cfi_restore 12 .cfi_def_cfa_offset 8 ret .L18: .cfi_restore_state leal (%rsi,%r9), %ecx addl %ebx, %ecx cmpl $159, %ecx jne .L2 addl %r10d, %edi addl %r12d, %edi cmpl $159, %edi jne .L2 leal (%r8,%r11), %ecx addl %ebp, %ecx cmpl $159, %ecx jne .L2 addl %r10d, %esi addl %ebp, %esi cmpl $159, %esi jne .L2 addl %r10d, %r8d addl %ebx, %r8d cmpl $159, %r8d jne .L2 movq %rdx, %rax leaq 9(%rdx), %rdi movl $1, %esi movabsq $287667426198290432, %rdx .p2align 4,,10 .p2align 3 .L3: movsbl (%rax), %ecx movq %rsi, %rbx addq $1, %rax salq %cl, %rbx xorq %rbx, %rdx cmpq %rax, %rdi jne .L3 testq %rdx, %rdx sete %al jmp .L2 .cfi_endproc |
By the way, did you notice that mnemonics have little tooltips on them? I'm not sure if they help, but this wouldn't be words and buttons without any interactive stuff whatsoever.
How come they do not show the difference in the runtime? Let's take a look at what Valgrind has to say.
I refs: 13,099,624,571 I1 misses: 1,846 LLi misses: 1,705 I1 miss rate: 0.00% LLi miss rate: 0.00% D refs: 7,435,891,049 (4,739,364,171 rd + 2,696,526,878 wr) D1 misses: 15,886 ( 13,670 rd + 2,216 wr) LLd misses: 9,155 ( 7,758 rd + 1,397 wr) D1 miss rate: 0.0% ( 0.0% + 0.0% ) LLd miss rate: 0.0% ( 0.0% + 0.0% ) LL refs: 17,732 ( 15,516 rd + 2,216 wr) LL misses: 10,860 ( 9,463 rd + 1,397 wr) LL miss rate: 0.0% ( 0.0% + 0.0% ) |
I refs: 12,856,556,965 I1 misses: 1,843 LLi misses: 1,703 I1 miss rate: 0.00% LLi miss rate: 0.00% D refs: 6,805,402,908 (4,230,409,813 rd + 2,574,993,095 wr) D1 misses: 15,882 ( 13,665 rd + 2,217 wr) LLd misses: 9,154 ( 7,758 rd + 1,396 wr) D1 miss rate: 0.0% ( 0.0% + 0.0% ) LLd miss rate: 0.0% ( 0.0% + 0.0% ) LL refs: 17,725 ( 15,508 rd + 2,217 wr) LL misses: 10,857 ( 9,461 rd + 1,396 wr) LL miss rate: 0.0% ( 0.0% + 0.0% ) |
There is a difference, and it shows up in larger numbers, it's just that the benchmark is too small to show it properly. Most of the time we don't even get to do this map thing, we fail earlier.
So yes, it is best to have your constants constant, even if it doesn't show immediately.
FolwarcznyAdam from Twitter suggests that changing data locality might be a good thing.
const std::array<uint64_t, 8> magic_numbers {<PHONE_NUMBER>101087289,<PHONE_NUMBER>107239479,<PHONE_NUMBER>637535289,<PHONE_NUMBER>655991859,<PHONE_NUMBER>180135479,<PHONE_NUMBER>198592049,<PHONE_NUMBER>728887859,<PHONE_NUMBER>735040049 }; bool check_if_magic(const std::string& sq) { if(sq[4] != '5') return false; uint64_t magic_number = *(reinterpret_cast<const uint32_t*> (sq.data())); magic_number <<= 32; magic_number += *(reinterpret_cast<const uint32_t*> (sq.data()+5)); for(auto i = 0u; i < 8; ++i) if(magic_number == magic_numbers[i]) return true; return false; } |
bool check_if_magic(const std::string& sq) { const std::array<uint64_t, 8> magic_numbers {<PHONE_NUMBER>101087289,<PHONE_NUMBER>107239479,<PHONE_NUMBER>637535289,<PHONE_NUMBER>655991859,<PHONE_NUMBER>180135479,<PHONE_NUMBER>198592049,<PHONE_NUMBER>728887859,<PHONE_NUMBER>735040049 }; if(sq[4] != '5') return false; uint64_t magic_number = *(reinterpret_cast<const uint32_t*> (sq.data())); magic_number <<= 32; magic_number += *(reinterpret_cast<const uint32_t*> (sq.data()+5)); for(auto i = 0u; i < 8; ++i) if(magic_number == magic_numbers[i]) return true; return false; } |
It doesn't look rather relevant on the first glance, but GCC does produce quite a different code for global and local variables.
_Z14check_if_magic ... .LFB1752: .cfi_startproc movq (%rdi), %rdx xorl %eax, %eax cmpb $53, 4(%rdx) je .L8 rep ret .p2align 4,,10 .p2align 3 .L8: movl (%rdx), %ecx movl 5(%rdx), %eax movabsq $3545515123101087289, %rdx salq $32, %rcx addq %rax, %rcx movl $_ZL13magic_numbers+8, %eax jmp .L3 .p2align 4,,10 .p2align 3 .L9: movq (%rax), %rdx addq $8, %rax .L3: cmpq %rdx, %rcx je .L5 cmpq $_ZL13magic_numbers+64, %rax jne .L9 xorl %eax, %eax ret .p2align 4,,10 .p2align 3 .L5: movl $1, %eax ret .cfi_endproc |
_Z14check_if_magic ... . It fills the stack with out values every time the function is called. And it kind of is worse, but that's only because it's not what Adam had in mind. His version actually looks like this: godbolt.org/g/swssJY and it is, of course, much-much better than mine.
The reason for this difference is me using an outdated compiler. And the moral is — update your compiler often.
Some guys from Reddit, particularly bschindl, Veedrac, and PhilipTrettner came up with the idea of doing binary search. It is a great idea, but once again it doesn't work very well in this case because ideally all 8 64-bit squares fit in a single cache line anyway.
const std::array<uint64_t, 8> magic_numbers {<PHONE_NUMBER>101087289,<PHONE_NUMBER>107239479,<PHONE_NUMBER>637535289,<PHONE_NUMBER>655991859,<PHONE_NUMBER>180135479,<PHONE_NUMBER>198592049,<PHONE_NUMBER>728887859,<PHONE_NUMBER>735040049 }; bool check_if_magic(const std::string& sq) { if(sq[4] != '5') return false; uint64_t magic_number = *(reinterpret_cast<const uint32_t*> (sq.data())); magic_number <<= 32; magic_number += *(reinterpret_cast<const uint32_t*> (sq.data()+5)); for(auto i = 0u; i < 8; ++i) if(magic_number == magic_numbers[i]) return true; return false; } |
const std::array<uint64_t, 8> magic_numbers {<PHONE_NUMBER>101087289,<PHONE_NUMBER>107239479,<PHONE_NUMBER>637535289,<PHONE_NUMBER>655991859,<PHONE_NUMBER>180135479,<PHONE_NUMBER>198592049,<PHONE_NUMBER>728887859,<PHONE_NUMBER>735040049 }; bool check_if_magic(const std::string& sq) { if(square[4] != '5') return false; uint64_t nr = *(reinterpret_cast<const uint32_t*> (sq.data())); nr <<= 32; nr += *(reinterpret_cast<const uint32_t*> (sq.data()+5)); if (nr <=<PHONE_NUMBER>107239479) if (nr <=<PHONE_NUMBER>101087289) if (nr <<PHONE_NUMBER>101087289) return nr ==<PHONE_NUMBER>637535289; else return nr ==<PHONE_NUMBER>101087289; else if (nr <<PHONE_NUMBER>107239479) return nr ==<PHONE_NUMBER>180135479; else return nr ==<PHONE_NUMBER>107239479; else if (nr <=<PHONE_NUMBER>655991859) if (nr <<PHONE_NUMBER>655991859) return nr ==<PHONE_NUMBER>728887859; else return nr ==<PHONE_NUMBER>655991859; else if (nr <<PHONE_NUMBER>198592049) return nr ==<PHONE_NUMBER>735040049; else return nr ==<PHONE_NUMBER>198592049; } |
Valgrind may confirm that sequential reading of 64 bytes is cheap. No only the version on the left has less instruction reads, but the data reads as well, which seems nonsensical.
I refs: 10,699,297,900 I1 misses: 1,838 LLi misses: 1,701 I1 miss rate: 0.00% LLi miss rate: 0.00% D refs: 5,521,473,844 (3,342,039,069 rd + 2,179,434,775 wr) D1 misses: 15,883 ( 13,668 rd + 2,215 wr) LLd misses: 9,154 ( 7,758 rd + 1,396 wr) D1 miss rate: 0.0% ( 0.0% + 0.0% ) LLd miss rate: 0.0% ( 0.0% + 0.0% ) LL refs: 17,721 ( 15,506 rd + 2,215 wr) LL misses: 10,855 ( 9,459 rd + 1,396 wr) LL miss rate: 0.0% ( 0.0% + 0.0% ) |
I refs: 11,323,056,252 I1 misses: 1,845 LLi misses: 1,705 I1 miss rate: 0.00% LLi miss rate: 0.00% D refs: 5,994,987,820 (3,428,132,553 rd + 2,566,855,267 wr) D1 misses: 15,883 ( 13,666 rd + 2,217 wr) LLd misses: 9,154 ( 7,758 rd + 1,396 wr) D1 miss rate: 0.0% ( 0.0% + 0.0% ) LLd miss rate: 0.0% ( 0.0% + 0.0% ) LL refs: 17,728 ( 15,511 rd + 2,217 wr) LL misses: 10,859 ( 9,463 rd + 1,396 wr) LL miss rate: 0.0% ( 0.0% + 0.0% ) |
So a binary search is a bit worse than a simple loop. It is still extremely effective though. It's just with the plain loop being so small it doesn't make sense to make it even better.
But the most amazing thing was found by adamf88. It turn out, Clang can do this by itself: https://godbolt.org/g/cXtdbB! I'm astonished.
One of the best ideas was proposed by Veedrac. I'm not sure how it works exactly, the indexing thins looks a bit magical to me, but it goes like this:
const char squares[] = " " " " " " // -/1 "276" "951" "438" // 1/2 "294" "753" "618" // 2/3 "438" "951" "276" // 3/4 "492" "357" "816" // 4/5 "618" "753" "294" // 5/6 "672" "159" "834" // 6/7 "816" "357" "492" // 7/8 "834" "159" "672" // 8/9 " " " " " "; // 9/- // UB if sq contains characters [^1-9] // or is not at least 9 characters long. bool check_if_magic(const std::string& square_as_string) { const auto* square = square_as_string.data(); if (square[4] != '5') { return false; } const auto idx = (*square - '1') * 9; return (!memcmp(square, &squares[idx], 9)) || (!memcmp(square, &squares[idx+9], 9)); } |
Unfortunately, I had to change the function signature to match the benchmark and it lost quite a lot of speed because of that. It runs for 1.7 seconds that is a little bit slower than 64-bits hack. It does have nicer disassembly though.
_Z14check_if_magic ... .LFB1779: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 pushq %rbx .cfi_def_cfa_offset 24 .cfi_offset 3, -24 xorl %eax, %eax subq $8, %rsp .cfi_def_cfa_offset 32 movq (%rdi), %rbx cmpb $53, 4(%rbx) je .L8 .L2: addq $8, %rsp .cfi_remember_state .cfi_def_cfa_offset 24 popq %rbx .cfi_def_cfa_offset 16 popq %rbp .cfi_def_cfa_offset 8 ret .p2align 4,,10 .p2align 3 .L8: .cfi_restore_state movsbl (%rbx), %eax movl $9, %edx movq %rbx, %rdi leal -441(%rax,%rax,8), %ebp movslq %ebp, %rsi addq $_ZL7squares, %rsi call memcmp movl %eax, %edx movl $1, %eax testl %edx, %edx je .L2 leal 9(%rbp), %esi movq %rbx, %rdi movl $9, %edx movslq %esi, %rsi addq $_ZL7squares, %rsi call memcmp testl %eax, %eax sete %al addq $8, %rsp .cfi_def_cfa_offset 24 popq %rbx .cfi_def_cfa_offset 16 popq %rbp .cfi_def_cfa_offset 8 ret .cfi_endproc |
On Valgrind it shows like this:
I refs: 16,045,605,063 I1 misses: 1,849 LLi misses: 1,713 I1 miss rate: 0.00% LLi miss rate: 0.00% D refs: 8,018,184,251 (4,590,394,457 rd + 3,427,789,794 wr) D1 misses: 15,896 ( 13,678 rd + 2,218 wr) LLd misses: 9,159 ( 7,764 rd + 1,395 wr) D1 miss rate: 0.0% ( 0.0% + 0.0% ) LLd miss rate: 0.0% ( 0.0% + 0.0% ) LL refs: 17,745 ( 15,527 rd + 2,218 wr) LL misses: 10,872 ( 9,477 rd + 1,395 wr) LL miss rate: 0.0% ( 0.0% + 0.0% ) |
Data-wise it's absolutely splendid! But it is a bit fat on instruction reads. I would blame `memcmp`. I heard, with better compilers and better standard library implementation it might get properly inlined and optimized contextually, but with my GCC it only gets called twice which is, in such a tight piece of code, simply too expensive.
But the absolutely magical is the version from kocsis1david.
static uint64_t magic_numbers[8] = { 0x3336313832393437, 0x3134333832373639, 0x3734393238313633, 0x3936373238333431, 0x3332393436313837, 0x3938333436373231, 0x3738313634393233, 0x3132373634333839, }; static uint64_t magic_number(const char sq[9]) { uint32_t a, b; memcpy(&a, sq, sizeof(uint32_t)); memcpy(&b, sq + 5, sizeof(uint32_t)); return ((uint64_t)a << 32) + b; } bool check_if_magic(const std::string& square) { const auto* sq = square.data(); if (sq[4] != '5') return false; int index = sq[0] & 7 | (sq[1] >> 1) & 1; return magic_numbers[index] == magic_number(sq); } |
It also exploits the same smart indexing idea, but it uses less instructions and no external calls whatsoever.
Its Valgrind report is impressive too!
I refs: 8,977,429,337 I1 misses: 1,842 LLi misses: 1,704 I1 miss rate: 0.00% LLi miss rate: 0.00% D refs: 5,349,287,013 (3,169,852,226 rd + 2,179,434,787 wr) D1 misses: 15,885 ( 13,668 rd + 2,217 wr) LLd misses: 9,155 ( 7,759 rd + 1,396 wr) D1 miss rate: 0.0% ( 0.0% + 0.0% ) LLd miss rate: 0.0% ( 0.0% + 0.0% ) LL refs: 17,727 ( 15,510 rd + 2,217 wr) LL misses: 10,859 ( 9,463 rd + 1,396 wr) LL miss rate: 0.0% ( 0.0% + 0.0% ) |
And it runs for little less than a second which, considering the generator takes some 0.8 of it, is almost 3 times faster than the best take I had to offer.
Excellent!
I don't know about you, but I learned from this idea exchange quite a lot. Way more than from tinkering with a toy problem all on my own.
We should do this again sometime. Probably, with better benchmark though. And a better problem. And Clang. I'm fascinated to try Clang at this point.
| Index | ← there's more. |
+
So You Think You Know C (free book) + Geometry for Programmers (paid book) + Github & RSS |


Mum's horror as son, 6, dies in her arms after suffering electric shock at nursery
Elisa C, 27, desperately tried to save son Antonio but the youngster collapsed and died - an investigation into the nursery in Frankfurt, Germany, is now underway
by Amber Hicks, Kathryn Quinn, https://www.facebook.com/dailymirror/A mum has told how her six-year-old son died in her arms after suffering an electric shock at nursery.
Elisa C could only watch in horror as youngster Antonio was electrocuted when he reportedly grabbed hold of a cable that was coming out of a broken socket.
The 27-year-old mum and a staff member from the nursery in Frankfurt, Germany, tried desperately to keep Antonio alive by giving him mouth-to-mouth, but tragically nothing could be done to save him.
Recalling the horrific ordeal, Elisa said: "When I went to pick Antonio up, I was in the changing rooms and Antonio was running around, and suddenly he must have got hold of a cable that was coming out of a socket. The socket was hanging out of the wall."
The child was catapulted towards his mum.
 But it was too late, Antonio died in my arms.
"Building works had been carried out and the nursery school had been closed. It then opened again, although it clearly was not finished.
"Walls had been painted and new flooring laid, and the nursery school had to be closed."
But Jan Pasternak, from the Integration and Education Department in the City of Frankfurt, said: "We are not aware of any building works being carried out at the nursery school and certainly not aware of cables coming out of the walls.
"This would not be possible when the nursery school is open as normal for business."
The Public Prosecutor in Frankfurt is investigating charges of involuntary manslaughter against unknown persons at this time.
Prosecutor Nadja Niesen: "The focus of the investigation is on whether someone acted against their duty of care."
The mum is now trying to raise enough money to fly Antonio's body to Italy for burial and the parents association has set up a PayPal for donations.
The nursery school remains closed while investigations are ongoing.


--- layout: post title: It's pie day at the lab! date: '2010-11-25T16:15:00.000-05:00' author: Bob Sica tags: modified_time: '2011-12-21T12:48:50.445-05:00' blogger_id: tag:blogger.com,1999:blog-736339229338318027.post-8896900499762560237 blogger_orig_url: http://blog.purplecrowlidar.ca/2010/11/it-pie-day-at-lab.html ---
As a tip of our hat to US Thanksgiving we're having our second pi(e) day for Jaya. And congrats to Emily who successfully finished her comprehensive exam today!


| DOSE: |
2 hits |
oral |
LSD |
(blotter / tab) |
| |
|
oral |
Unknown |
(pill / tablet) |
This past halloween was the scariest of my life. My girlfriend, best-friend, and I had all gone to New Orleans, LA for Voodoofest, an amazing 3 day concert event. One of our objectives was to find some good acid, as our town happens to be rather dry and high-priced when it comes to LSD. That first night, we bought 10 hits of 'eyeball' blotter from a random hippie. While my friend went off to see George Clinton, my girlfriend and I found someone with scissors and cut off 2 hits for each of us. Keep in mind that I can't be sure of times here, but I'm quite certain that I started to trip after only 15 minutes. My girlfriend, however, was much less phased even though she had tripped less times than me.
After about 30 minutes I started getting scared. George Clinton's performance was too loud. The noises were becoming painful, and all I could see on stage was a huge ball of moving light. My girlfriends face also started to morph, and as I began to lose my own mind, I kept telling her 'Don't lose me' because she was obviously not enjoying the music either. Finally, our friend walked out of the crowd and found us. I told him he needed to walk us to the car because we both were starting to trip too hard for our own good. The path to the car was very crowded and dark. There were police lights flashing everywhere. The darkness started to take over. I couldn't see well for some reason. It became difficult to see my friends in front of me. I kept saying, 'Where are you guys?!', only to realize that they were right beside me.
By the time we got close to the car, I was gone. I had forgotten where we were. My friend, who, luckily, stayed sober, kept reminding me that we were in New Orleans, and were supposed to be having fun. I was making outbursts in public. Basically all of the evil things my mind could conjure, I saw. I couldn't see what was really there at all. This fact was worsened when I realized I was stuck. I was in a town where I had no comfortable place to go. I couldn't escape that darkness.
The duration of the trip is honestly a blur in my mind now. I was making outbursts, uncontrollably. I heard voices in my head telling me that I had lost my mind. I believed that I was insane, and that I wasn't coming back. However, for some reason I kept screaming, 'I'm lost, but this is all I ever wanted.'  I kept begging my friends to talk to me, because everytime they did, it brought me back to reality a little bit. However, I always would quickly delve back into my mind. Soon, I thought I was dead. I saw pictures in my head of this 'Limbo' land.  I would yell my girlfriend's name over and over. Her name was the only comforting thing I could think of.
I kept freaking out. I would bang my head on the windows of my car. I felt the seatbelt strapping me down, and I couldn't take it. However, I couldn't figure out how to get it off. I even accidentally grabbed my girlfriends hair once. I am not a violent man at all, but I honestly had no idea what I was doing. I don't even remember what I thought I was doing. My mind kept telling me I was on the brink of death. Sometimes, I felt as if I was rushing towards the evilness. I would yell, '(girlfriends name), please save me!' over and over, but it didn't work. I feel it necessary to mention here that my girlfriend was tripping very hard too. She, however, handled it. She admits to being extremely scared of me at some times, but she never lost her mind like I did.
My mind was bouncing between sexuality, psychosis, and death.  The things I saw, I can't even begin to explain. Imagine putting your mind on a wheel, spinning it, finding some random place that you know so well, but being convinced that it is all gone. My friends told me that I would lay there, mumbling to myself for 30 minutes at a time, and then suddenly burst out screaming, often throwing myself violently around the car.
 I couldn't conceive life or death. I didn't care. As my friend was driving down the highway, I jumped up from the backseat and threw the car into park. This was extremely dangerous, and I don't know why I did it. Something compelled me. I noticed myself getting very sweaty.  Honestly, I was just trying to do anything to escape all the pain in my mind. It didn't work.
I tried to run out of the car, but my friend, who is much larger than me grabbed my arm. I screamed for him to let me go. I just wanted to run, but he wouldn't. I saw a scared look in his face. It turned evil. I saw him raise a knife and stab me. I started shaking, freaking out. All he did was grab my arm, there was no knife. Eventually, my friend was helpless. He didn't know what to do either. He stopped a random girl and told her what was happening.  When my friend gave them to me he said, 'Here, these will make you come down in 10 minutes, just eat them.' I happily chewed them up.
The next thing I remember was waking up in the morning. Everyone was exhausted. We had had the scariest halloween ever.  I told her I was so sorry, that it was only the drugs, I honestly couldn't help my state. She was amazing and understood.
I hated this trip, but I wouldn't take it away for anything. I think I learned from it. I'm a very experienced drug/psychedelic user, and this completely deflated my ego. I realized that sanity is not a given. It can so easily be ripped away. The next day, I took 1 hit of the same acid, tripped, and felt fine. It was during the day, so there was no darkness to take over. This experience was profound, I still turn it over in my head every day. I've never been the same.
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.


This example shows off how to use buttons and jQuery together. Click the buttons to see the alert message.


Health Ministry have purchased extra 50,000 measles vaccination - Waqainabete
by Meredani TisuguMinister for Health, Dr. Ifereimi Waqainabete says they have purchased 50,000 more measles vaccination and 30,000 from those is expected to arrive into the country this week.
Dr. Waqainabete has told Fijivillage that the other 20,000 will arrive in due course.
He says they have been pleased with the turnout from the people to get vaccinated.
Meanwhile, the Ministry of Health and Medical Services has emphasized that current measles vaccination stocks are not unlimited and should be used for the most vulnerable groups who are most likely to catch and spread the disease.
In a statement, the Ministry says the main priority is to protect those at the highest risk first.
They have also highlighted that the measles vaccine is currently limited to 4 groups who are at most at risk of contracting measles
They say these include any child in Fiji who has not received 2 doses of measles vaccine, anyone who resides in Serua/Namosi and is over 6 months of age and they are urgently advising people to get a dose of the measles vaccine regardless of prior vaccination status if they have not done so already.
The other two groups are anyone who intends on travelling into Serua/Namosi and for anyone who intends to travel overseas and is over 6 months of age.
They say the only exceptions in the mentioned groups are pregnant women, those with compromised immune systems, and those with a known allergy to the vaccine.
The measles outbreak is still confined to the Serua/Namosi Subdivision, and specifically the Wailali Settlement in Wainadoi.
Since the last update, there have been zero confirmed new cases of measles from Serua/Namosi or anywhere else in Fiji. There are currently 4 confirmed cases - all from the Wailali Settlement in Wainadoi.

The rash starts after the other symptoms and spreads all over the body.
Measles is a highly infectious airborne viral disease that spreads easily through the air through breathing, coughing, and sneezing.
You are at risk of getting measles if you breathe the same air as someone with the disease and you are not immune if you have not been vaccinated, or you have never had the disease.
There is no specific treatment for measles, as it is the body’s immune system that fights off the disease.
Most people recover from measles infection in 8-10 days with rest and ensuring that they are eating and drinking to avoid dehydration.
Some people infected with measles develop severe complications such as pneumonia or encephalitis (brain swelling).
The last measles outbreak in Fiji was in 2006 and the last cases of measles were reported in 2016 which was brought in by people from other countries.


Welcome to BusMall's product test group. Thank you for taking the time today to help us with this survey. You will be given a selection of three items shown on the screen. Please click on the item that you would be most likely to buy. You will be given 25 such selections. You do not have to choose the same item each time it is shown; please choose whichever item you would be most likely to buy of the three options provided. At the end of the survey you will be shown the results of your selections. Thank you again for your time.


Disabling Ratings on All Wiki Pages
How to prevent users from adding rating on all pages of the Wiki module. This hides any existing rating but doesn't delete them. If ratings are enabled again in the future, the existing rating will be restored.
- Select Wiki Configuration from the Wiki module actions menu.
- Go to the Rating Settings section.
- At Allow Page Ratings, unmark the check box. Note: It doesn't matter what options are set for the following two steps, as long as this setting is unchecked, ratings will be disabled.
- Click the Save button.


 Below is a list of frequently questions and concerns. What application vehicles would this engine work best with ? This engine will work with a . http://www.enginefactory.com/383_faq.htm
Chevy 383 Stroker Engines 383 Stroker Photo As with any stroker engine, the 383 stroker uses an altered crankshaft to increase the stroke of the pistons. This increased stroke allows you . http://www.383stroker.com/ in one installer (526 kb).
383 FAQ A FAQ answering common questions about the 383 stroker motor. . The 383 chevy is one of the most powerful engines you can build. It is also the source of . http://www.notarypublic.com/tech/383.htm
BluePrint Engines GM 383 C.I.D. 420HP Stroker Dressed Crate ... Bolt in one of these BluePrint Engines GM 383 c.i.d. 420 hp stroker dressed crate engines with aluminum heads and get rolling. Features include: * 4-bolt main . http://www.summitracing.com/parts/mll-bp3834ctc1
383 stroker race engine 383 stroker race engine. 383 stroker race engine. This is a picture of a road race prepped 383 Chevy. It has ultra light JE pistons, 6" 5140 steel rods, a 4340 steel . http://www.badasscars.com/index.cfm/page/ptype=product/product_id=41/prd41.htm
A simple JavaScript Formatter (47kb)Chevy 383 stroker engine master rebuild kit | Northern Auto Parts this Chevy 383 engine rebuild kits from 69-85 come complete with top quality parts from: Federal Mogul/Sealed Power, Scat, Hastings, Melling. http://www.northernautoparts.com/ProductDetail.cfm?ProductId=549
383 stroker engine - YouTube Dec 21, 2011 . some intresting facts about building a 383 stroker engine. http://www.youtube.com/watch?v=cpS_RwJIud4 CertMaker for iOS and Android
How to Build a 383 Stroker? - Answers.Ask.com You can build a 383 stroker engine from a 350 engine that has a 400 engine crank installed. You have to add a balancer and flywheel for a 40... view more. http://answers.ask.com/Vehicles/Other/how_to_build_a_383_stroker
Windows 8 AppContainer Loopback Utility
(Chevy 383) Stroker Engine With 510 HP Drop In Ready Small block Chevy 383 stroker with 510HP aluminum head fully forged bottom end drag strip engine combination. This engine is designed for mechanically . http://www.proformanceunlimited.com/specs/383_450drop.html Download
Now (60kb) or
home
Traffic Differ
Chevy 383 Stroker Motors High Horsepower High Torque 1969-1985 CHEVY 383 STROKER. Available With Hi-Flo Heads for Improved Performance. ?, Fuel, 87 Octane. ?, Block, Both Dip 4 Bolt Main. ?, Heads, 624 . http://www.motorworksengines.com/index.php?pr=383 Download now (47kb).
SAZ Clipboard
557 HP Chevy Complete Turnkey Crate Engine The block and all parts on the 557 HP Chevy 383 Stroker Complete Turnkey Engine Package are 100% Brand New and Fully Forged from Top to Bottom, true . http://www.unitedracingengines.com/servlet/the-4/557-HP-Chevy-Complete/Detail
Gallery
The Gallery extension (50kb) Chevy 383 Stroker Master Kit With Crankshaft | Northern Auto Parts Chevy 383 Stroker Master Kit With Crankshaft. . Home > Engine Kits > Chevy 383 Stroker Engine Kit > Chevy 383 Stroker Master Kit With Crankshaft . http://www.northernautoparts.com/ProductModelDetail.cfm?ProductModelId=1674
383 Stroker Engine Specifications | eHow.com 383 Stroker Engine Specifications. The 383 stroker engine is a modified 350 small block engine; it uses an altered crankshaft to increase the stroke of the . http://www.ehow.com/list_7330218_383-stroker-engine-specifications.html
AnyWHERE (sample)
The AnyWHERE extension (40kb) 506 HP Chevy 383 Stroker Complete Turnkey Crate Engine See the Customization Drop Down List Below for Customization Options! This 506 HP United Racing Engines package is a 1. http://www.unitedracingengines.com/servlet/the-3/506-HP-Chevy-383/Detail
RulesTab (sample)
550Hp Supercharged Chevy Custom SBC 383 Stroker Engine - eBay 550Hp Supercharged Chevy Custom SBC 383 Stroker Engine Complete 327 350 427 434 in eBay Motors, Parts & Accessories, Car & Truck Parts | eBay. http://www.ebay.com/itm/550Hp-Supercharged-Chevy-Custom-SBC-383-Stroker-Engine-Complete-327-350-427-434-/170755482690
Privacy Scanner
The Privacy Scanner
(41kb) 383 stroker - ClassicOldsmobile.com Just wondering, always wanted to build a chevy 383 stroker, but . Found out the 77 engine isn't the best, so I found a 76 cutlass 350 complete. http://classicoldsmobile.com/forums/small-blocks/30529-383-stroker.html
Content-Blocking (sample)
The Content Blocker
sample (11kb) Ryan's Small Block Chevy Stroker Engine Combo Page All four combos use the 383 cu. in. engine with rebuilt GM heads and Holley 750 double pumper. These combos show the difference between some intakes and . http://www.ryanscarpage.50megs.com/combos1.html
Image-Flipper (sample)
The Image
Flipper sample (6kb) 383/388 Chevy stroker This engine was introduced in response to the wildly popular SBC 383 stroker engine made popular by . http://www.crankshaftcoalition.com/wiki/383/388_Chevy_stroker
3rd-Party Extensions
ZZ 383 - Chevrolet Performance . GM Performance Parts small-block crate engine, choose the ZZ383 a combination of Fast Burn aluminum performance heads and a 383" stroker small- block . http://www.chevroletperformance.com/EngineShowcase/index.jsp?engId=ZZ383&engine=ZZ%20383&sku=12498772&engCat=sb
Crate Engine - Get great deals for Crate Engine on eBay! 383 CHEVY STROKER MOTOR 465HP ROLLER 1 8 PRO STREET CRATE ENGINE SBC CNC CAMAR. 1969<PHONE_NUMBER>618 z28 327 400 350 NOS 12 . http://popular.ebay.com/parts-accessories/crate-engine.htm
neXpert Performance Report Generator
Small Block Stroker 383 Cu Stroker 383 Cu. In. Motor. MP (Old) Lloyd's Good Photo.jpg (22977 bytes). All photos of the car painted white were taken when the car had a SBC motor. http://www.bracketmasters.com/small_block_stroker_383_cu.htm
StresStimulus
Chevy 383 Engine - We Build a Small-Block That Makes 500HP and ... In this engine tech article HOT ROD shows you how to build a 383ci small-block . Readers have figured that out, since 383 stroker combos are the ones we get . http://www.hotrod.com/techarticles/engine/hrdp_0503_chevy_383_engine/viewall.html
Watcher - Passive Security Auditor
El Camino Possibilities 383 Stroker Engine Photo 3 View this El Camino Possibilities 383 Stroker Engine Photo 3. 10 years in the making, Steve Schreiner's ultimate streetcar takes shape in this 1964 Chevrolet El . http://www.superchevy.com/features/truckselcamino/sucp_0603_el_camino_possibilities/photo_03.html
Chevy 383 Stroker Engine 486 HP 493 TQ Dyno CNC-Motorsports ... Dec 5, 2008 . Chevy 383 Stroker engine, steel heads, hydraulic roller camshaft, 10.0:1 pistons, air gap intake, 650 carb, 486HP@5800 and 493TQ@4300 . http://www.youtube.com/watch?v=eip7FQGnRFU
Ammonite - Security Scanner
383 Stroker Top End Build - Chevy High Performance Magazine 383 Stroker Top End Build 383 Engine. Need more power from your mill? That's easy enough; just open up the bores and increase its reach. Or, just add more . http://www.chevyhiperformance.com/tech/engines_drivetrain/shortblock/1101chp_383_stroker_top_end_build/viewall.html
ichibans restaurant in gurnee illinois
x5s - Automated XSS Security Testing Assistant383 MAG Stroker | Mercury Marine 383 MAG Stroker. 350 Crankshaft Horsepower. Thanks to its size and power this is the ideal replacement engine for 350 MAG, 7.4L, and 7.4L MPI engines that . http://www.mercurymarine.com/repower/mercruiser/remanufactured-mercruiser-products/plus-series/383-magstroker-bravo/
- Detecting where safe encodings were not applied to emitted
user-inputs
- Detecting where Unicode character transformations might bypass
security filters
- Detecting where non-shortest UTF-8 encodings might bypass security
filters
new apartments in pearland texas
intruder21
Engine Factory - Chevy 383 Stroker with Dual Quad Carbs | Hotrod ... Engine Factory - Chevy 383 Stroker with Dual Quad Carbs. This is our Chevy 383 Stroker with Dual Quad Carbs and High Mount Alternator Built by Engine . http://www.hotrodhotline.com/engine-factory-chevy-383-stroker-dual-quad-carbs
world war 2 airbases
HTML Inspector
my 383 stroker motor camaro - YouTube Sep 7, 2009 . Chevy 383 Stroker Engine 486 HP 493 TQ Dyno CNC-Motorsports Chevelle Nova s10 Crate Engine Motorby cncmotorsports 168,540 views . http://www.youtube.com/watch?v=HxSYQhrLjMU
383 Stroker Engines - customcrateengines.com If you are looking for a 383 stroker engines, For your Chevy Muscle Car look any further than the professional engine experts at Proformance Unlimited. http://customcrateengines.com/index.php/383-475hp.html
WCF Binary-Encoded Message Inspector
SB Chevy 383 Stroker 550 Horsepower Crate Engine with Roller ... Jul 27, 2011 . Small Block Chevy 383 stroker crate engine, 554.9 horsepower, and 495 foot pounds of torque. We upgraded this engine to a solid roller. http://www.youtube.com/watch?v=-EhtlHcZrMY
Chad Sowald's Request-To-Code
1987 Chevy El Camino 383 Stroker Motor - YouTube Aug 12, 2010 . 1987 Chevy El Camino 383 Stroker Motor . 383 Stroker build by VDC RACING ENGINES 500HP Roller Camby VintagedreamcarsV8 51,425 . http://www.youtube.com/watch?v=_DdcFFiZXMc
Eyal's Extensions
- vista does not see tivos has written two extensions:
Thomas Deml's Export WCAT Script extension
442 HP Chevy 383 Stroker Complete Turnkey Crate Engine See the Customization Drop Down List Below for Customization Options! This 442 HP United Racing Engines package is a. http://www.unitedracingengines.com/servlet/the-2/442-HP-Chevy-383/Detail
Per-Response Latency Extension
Baddest Mustang (!UPDATE!) With Chevrolet Motor 383 Stroker in ... Feb 15, 2011 . 383 Stroker Motor Bored to 388ci Full Roll Cage 8.8 391 Rear end Power Glide Tranny Tranny Brake NOS 300 Stage 1 Nos 250 Stage 2. http://www.youtube.com/watch?v=Dt1iAif9l7w
WPAD Server
SB Chevy 383 Stroker Race Engine 620 HP 536 TQ Dyno - YouTube Jan 11, 2010 . CNC Motorsports Chevy 383 stroker, Eagle Crankshaft, Eagle H Beam rods, SRP Pistons, AFR aluminum cylinder heads. We build custom . http://www.youtube.com/watch?v=w2pqR6MLNBI
XML Request InspectorD&J's Muscle Cars - 383 Stroker Motor Combination - YouTube Aug 14, 2011 . James Harris of D&J's Muscle Cars shows a 383 Stroker Motor combination. http://www.youtube.com/watch?v=zVVBhfV-bCk XML DataSet InspectorEngine Rotating Kits - Summit Racing Results 1 - 10 of 1584 . We carry engine rotating kits for a large array of applications, including first- generation small block Chevy, Chevy 383 stroker, GM . http://www.summitracing.com/search/department/engines-components/part-type/engine-rotating-kits
©2013 Telerik
|


CONTACT US
Home
BreakFast Recipies
ConatctUs
]
First Name
Middle Name
Last Name
Password
Gender
Male
Female
Select Your Country
pakistan
afghanistan
burma
turkey
>


{% extends "base.html" %} {% block title %}Add experiment {% endblock title %} {% load goldenbraid_extras %} {% block extra_js %} {% endblock %} {% block content %} {% if exp_cv_type.name = 'SE_001' %}
| {% if exp_cv_type.name = 'SE_001' %} | Standard experiments type 1 (SE_001) aim is to characterize promoter strengths with relative promoter units (RPUs) measured as luciferase/renilla ratios. The nopaline synthase promoter (pNOS) is our reference standard promoter. These experiments can involve a chemical or physical induction and are performed in N. benthamiana leaf discs following the conditions specified below. | {% elif exp_cv_type.name = 'SE_002' %}Standard experiments type 2 (SE_002) were designed for promoter characterization with relative promoter units (RPUs) measured as luciferase/renilla ratios as measurement standard. The nopaline synthase promoter (pNOS) is our reference standard promoter. These experiments are performed in N. benthamiana leaves following the conditions specified below. | {% elif exp_cv_type.name = 'SE_003' %}Standard experiments type 3 (SE_003) aim is to provide an estimation of the transformation efficiency of different GBelements. | {% elif exp_cv_type.name = 'SE_004' %}Standard experiments type 4 (SE_004) aim is to estimate the yield of recombinant proteins. | {% else %}Standard experiments type 5 (SE_005) aim is to provide an estimation of the mutation efficiency of different CRISPR/Cas9 targets. | {% endif %}
|---|


It's been a valuable experiment in standards making
About Me
I write programs for classicists
And libraries for Python programmers
Some are geospatial (Shapely, &c.)
I ❤ XML
I ❤ ❤ ❤ the Web
And the Web loved XML, too
... for a while.
I think the Web community has spoken, and it's clear
that what it wants is HTML5, JavaScript and JSON. XML
isn't going away but I see it being less and less a Web
technology; it won't be something that you send over
the wire on the public Web, but just one of many
technologies that are used on the server to manage and
generate what you do send over the wire.
While I do not mind folks ignoring ISO 19107 (which is
the official OGC geometry volume) in small things, it
is disconcerting to have the requirement to catalogue
the disconnects to understand what is suppose to be
a simple specification.
—Exasperated Architect (2007)
GeoJSON is Spectacularly Wrong.
—Exasperated Developer (2012)
Coordinate Order is a Big Deal
GeoJSON is not Lat, Lng
To match OGR
To match KML
It surprises the naive
It annoys the expert
It is what it is
GeoJSON does not conform with ISO 191**
Because we wanted to ship soon
And get back to work writing programs
It's a blocker for some vendors
Good news: GML is just as good as it ever was
But GeoJSON Does Good, too
The Spec Doesn't Waste Your Time
8 pages (printed)
HTML
With section targets
No click-through license agreement
Stable. There will be no GeoJSON 2.0
GeoJSON is good for programmers
def explode(coords):
"""Explode a GeoJSON geometry's coordinates object and yield coordinate
tuples. As long as the input is conforming, the type of the geometry
doesn't matter.
"""
for e in coords:
if isinstance(e, (float, int, long)):
yield coords
break
else:
for f in explode(e):
yield f
GeoJSON is flexible
It's a good fit for Map/Reduce: http://mike.teczno.com/notes/elephants-osm-hadoop.html


This page allows you to view the contents of this folder (or folder-like object). Depending on the user groups you have been assigned to, it may also be possible to manipulate the content objects in various ways.1
Most of the operations you can perform (other than rename and paste) require you to select the objects that the operation will apply to by checking one or more of the checkboxes in the first column. After checking the appropriate boxes, press one of the buttons at the bottom of the table (such as Copy, Cut, or Delete) to complete the action.
The checkbox at the bottom of the checkbox column inverts the checkboxes. In other words, it causes all unchecked boxes to become checked, and all checked boxes to become unchecked. This can be very handy when you want to select all or almost all of the child objects.
These three functions work together to allow you to move objects from one folder to another, or to create new objects based on existing objects ("cloning"). To move objects, use Cut and Paste. To clone objects, use Copy and Paste.
The first step is to check the boxes for the objects you want to act on. Then press Cut if you wish to move them, or press Copy if you wish to clone them. The actions note the selected objects in the "paste buffer".2 Once you have something in your paste buffer, a Paste button will appear (if you have permission to add content in the current folder). Navigate to the folder where you want to move or clone the objects, then press Paste. If you did a Cut earlier, the objects will be moved from their original folder into the new folder, and the Paste buffer will be cleared. If you did a Copy earlier, the objects will be cloned into the current folder (which could even be the same folder, in which case the new objects will have new names like "original-name-1" or "original-name-2"), and the Paste buffer will not be cleared (so you could clone/copy the same objects several times).
To remove one or more child objects, check their boxes then press the Delete button. The objects will not be permanently deleted, but will instead be moved into the Trash folder.
To rename objects, change their names in the text fields and press the Rename button at the bottom of the Name column. (There is no need to check any boxes when renaming. The system will notice which names you changed and only rename those objects.)
Some folders allow their child objects to be ordered. Such folders will have four extra buttons labelled "Move to top", "Move to bottom", "Move up" and "Move down". Check the boxes for each object you want to reorder then press one of the Move buttons. If you're moving objects up or down, you can optionally specify how many positions to move them (defaults to 1) before you press the Move button.


I put a static cache of my Ruby/Python post since it's been pretty popular and this blog software is very slow (among many of its flaws). I got it wrong at first and made it static regardless of what you tried to do, which mean that commenting was also broken (so that's why commenting stopped...). Anyway, here's the rule I ended up with:
RewriteCond %{QUERY_STRING} ^$ RewriteCond %{REQUEST_METHOD} ^GET$ RewriteCond /home/blog/static_cache/%{REQUEST_URI} -s RewriteRule (.*\.html)$ /home/blog/static_cache$1 [L]
The idea is that only when there's no GET variables (the first rule), it is a GET request (not a POST; second rule), and file with that name exists on disk (third rule), then serve up that file, assuming it ends with .html. (Incidentally, mod_rewrite actually applies the RewriteRule first, then applies the conditionals)
Then I have a cron job that runs this script periodically:
cd /home/blog/static_cache for F in `cat /home/blog/static_cache_files.txt` ; do wget -q -O $F "https://ianbicking.org/$F?nocache" done
Better would be to replace it with something faster. And something that has anti-spam-protection features... These spams are really annoying!
# Mike
Yeah, yeah, that would require much more effort.
I also like threaded discussion, which is extremely uncommon in blogging software. I think there's been some really good discussion in the comments on this blog, and that is much more manageable for all involved because of threading.
But yeah, the spam and crashing aren't fun :(
# Ian Bicking
Also the availability of this site wasn't the best in the past...


Pairs Demo (Master Client)
Autoplay
undef
Name:
FB Login
Disconnect
New Game
New Trivial
Next Player:
PLayers Online:
none
Players in game (hover for details):
none
Game State:


{% extends "base.html" %} {% load i18n %} {% block body %}
{% trans "Your password has been set. You may go ahead and log in now." %}