text:
package prospector

import (
	"os"
	"path/filepath"
	"time"

	"expvar"

	"github.com/elastic/beats/filebeat/harvester"
	"github.com/elastic/beats/filebeat/input"
	"github.com/elastic/beats/filebeat/input/file"
	"github.com/elastic/beats/libbeat/logp"
)

var (
	filesRenamed  = expvar.NewInt("filebeat.prospector.log.files.renamed")
	filesTrucated = expvar.NewInt("filebeat.prospector.log.files.truncated")
)

type ProspectorLog struct {
	Prospector *Prospector
	config     prospectorConfig
	lastClean  time.Time
}

func NewProspectorLog(p *Prospector) (*ProspectorLog, error) {

	prospectorer := &ProspectorLog{
		Prospector: p,
		config:     p.config,
	}

	return prospectorer, nil
}

func (p *ProspectorLog) Init() {
	logp.Debug("prospector", "exclude_files: %s", p.config.ExcludeFiles)

	logp.Info("Load previous states from registry into memory")
	fileStates := p.Prospector.states.GetStates()

	// Make sure all states are set as finished
	for key, state := range fileStates {
		state.Finished = true
		fileStates[key] = state
	}

	// Overwrite prospector states
	p.Prospector.states.SetStates(fileStates)
	p.lastClean = time.Now()

	logp.Info("Previous states loaded: %v", p.Prospector.states.Count())
}

func (p *ProspectorLog) Run() {
	logp.Debug("prospector", "Start next scan")

	p.scan()

	// It is important that a first scan is run before cleanup to make sure all new states are read first
	if p.config.CleanInactive > 0 || p.config.CleanRemoved {
		beforeCount := p.Prospector.states.Count()
		p.Prospector.states.Cleanup()
		logp.Debug("prospector", "Prospector states cleaned up. Before: %d, After: %d", beforeCount, p.Prospector.states.Count())
	}

	// Marking removed files to be cleaned up. Cleanup happens after next scan to make sure all states are updated first
	if p.config.CleanRemoved {
		for _, state := range p.Prospector.states.GetStates() {
			// os.Stat will return an error in case the file does not exist
			_, err := os.Stat(state.Source)
			if err != nil {
				// Only clean up files where state is Finished
				if state.Finished {
					state.TTL = 0
					event := input.NewEvent(state)
					p.Prospector.harvesterChan <- event
					logp.Debug("prospector", "Remove state for file as file removed: %s", state.Source)
				} else {
					logp.Debug("prospector", "State for file not removed because not finished: %s", state.Source)
				}
			}
		}
	}
}

// getFiles returns all files which have to be harvested
// All globs are expanded and then directory and excluded files are removed
func (p *ProspectorLog) getFiles() map[string]os.FileInfo {

	paths := map[string]os.FileInfo{}

	for _, glob := range p.config.Paths {
		// Evaluate the path as a wildcards/shell glob
		matches, err := filepath.Glob(glob)
		if err != nil {
			logp.Err("glob(%s) failed: %v", glob, err)
			continue
		}

		// Check any matched files to see if we need to start a harvester
		for _, file := range matches {

			// check if the file is in the exclude_files list
			if p.isFileExcluded(file) {
				logp.Debug("prospector", "Exclude file: %s", file)
				continue
			}

			fileinfo, err := os.Lstat(file)
			if err != nil {
				logp.Debug("prospector", "stat(%s) failed: %s", file, err)
				continue
			}

			// Check if file is symlink
			if fileinfo.Mode()&os.ModeSymlink != 0 {
				logp.Debug("prospector", "File %s skipped as it is a symlink.", file)
				continue
			}

			if fileinfo.IsDir() {
				logp.Debug("prospector", "Skipping directory: %s", file)
				continue
			}

			paths[file] = fileinfo
		}
	}

	return paths
}

// Scan starts a scanGlob for each provided path/glob
func (p *ProspectorLog) scan() {

	for path, info := range p.getFiles() {

		logp.Debug("prospector", "Check file for harvesting: %s", path)

		// Create new state for comparison
		newState := file.NewState(info, path)

		// Load last state
		lastState := p.Prospector.states.FindPrevious(newState)

		// Ignores all files which fall under ignore_older
		if p.isIgnoreOlder(newState) {
			logp.Debug("prospector", "Ignore file because ignore_older reached: %s", newState.Source)
			if lastState.IsEmpty() && lastState.Finished == false {
				logp.Err("File is falling under ignore_older before harvesting is finished. Adjust your close_* settings: %s", newState.Source)
			}
			continue
		}

		// Decides if previous state exists
		if lastState.IsEmpty() {
			logp.Debug("prospector", "Start harvester for new file: %s", newState.Source)
			p.Prospector.startHarvester(newState, 0)
		} else {
			p.harvestExistingFile(newState, lastState)
		}
	}
}

// harvestExistingFile continues harvesting a file with a known state if needed
func (p *ProspectorLog) harvestExistingFile(newState file.State, oldState file.State) {

	logp.Debug("prospector", "Update existing file for harvesting: %s, offset: %v", newState.Source, oldState.Offset)

	// No harvester is running for the file, start a new harvester
	// It is important here that only the size is checked and not modification time, as modification time could be incorrect on windows
	// https://blogs.technet.microsoft.com/asiasupp/2010/12/14/file-date-modified-property-are-not-updating-while-modifying-a-file-without-closing-it/
	if oldState.Finished && newState.Fileinfo.Size() > oldState.Offset {
		// Resume harvesting of an old file we've stopped harvesting from
		// This could also be an issue with force_close_older that a new harvester is started after each scan but not needed?
		// One problem with comparing modTime is that it is in seconds, and scans can happen more then once a second
		logp.Debug("prospector", "Resuming harvesting of file: %s, offset: %v", newState.Source, oldState.Offset)
		p.Prospector.startHarvester(newState, oldState.Offset)
		return
	}

	// File size was reduced -> truncated file
	if oldState.Finished && newState.Fileinfo.Size() < oldState.Offset {
		logp.Debug("prospector", "Old file was truncated. Starting from the beginning: %s", newState.Source)
		p.Prospector.startHarvester(newState, 0)

		filesTrucated.Add(1)
		return
	}

	// Check if file was renamed
	if oldState.Source != "" && oldState.Source != newState.Source {
		// This does not start a new harvester as it is assume that the older harvester is still running
		// or no new lines were detected. It sends only an event status update to make sure the new name is persisted.
		logp.Debug("prospector", "File rename was detected, updating state: %s -> %s, Current offset: %v", oldState.Source, newState.Source, oldState.Offset)

		// Update state because of file rotation
		newState.Offset = oldState.Offset
		event := input.NewEvent(newState)
		p.Prospector.harvesterChan <- event

		filesRenamed.Add(1)
	}

	if !oldState.Finished {
		// Nothing to do. Harvester is still running and file was not renamed
		logp.Debug("prospector", "Harvester for file is still running: %s", newState.Source)
	} else {
		logp.Debug("prospector", "File didn't change: %s", newState.Source)
	}
}

// isFileExcluded checks if the given path should be excluded
func (p *ProspectorLog) isFileExcluded(file string) bool {
	patterns := p.config.ExcludeFiles
	return len(patterns) > 0 && harvester.MatchAnyRegexps(patterns, file)
}

// isIgnoreOlder checks if the given state reached ignore_older
func (p *ProspectorLog) isIgnoreOlder(state file.State) bool {

	// ignore_older is disable
	if p.config.IgnoreOlder == 0 {
		return false
	}

	modTime := state.Fileinfo.ModTime()
	if time.Since(modTime) > p.config.IgnoreOlder {
		return true
	}

	return false
}

redpajama_set_name: RedPajamaGithub


text:
How to Use FamilySearch
What's New at FamilySearch
For Latter-day Saints
Temple and Family History
Why Family History Matters
Genealogy Records
Websites, Apps, and Tools
Preserve Photos and Documents
Record Your Story
Subscribe to stay informed Subscribe to stay informed
FamilySearch Adds More Than 2.3 Million Indexed Records and Images for the Czech Republic, Mexico, New Zealand, Ukraine, and the United States
April 6, 2015	- by Amanda L. Wallis
FamilySearch has added to its collections more than 2.3 million indexed records and images for the Czech Republic, Mexico, New Zealand, Ukraine, and the United States. Notable collection updates include 771,097 images from the New Zealand, Archives New Zealand, Probate Records, 1843–1998 collection; 417,808 indexed records and 417,808 images from the US, BillionGraves Index collection; and 411,325 indexed records from the Mexico, San Luis Potosí, Civil Registration, 1859–2000 collection. See the table below for the full list of updates. Search these diverse collections and more than 3.5 billion other records for free at FamilySearch.org.
Searchable historic records are made available on FamilySearch.org through the help of thousands of volunteers from around the world. These volunteers transcribe (index) information from digital copies of handwritten records to make them easily searchable online. More volunteers are needed (particularly those who can read foreign languages) to keep pace with the large number of digital images being published online at FamilySearch.org. Learn more about volunteering to help provide free access to the world's historic genealogical records online at FamilySearch.org.
FamilySearch is the largest genealogy organization in the world. FamilySearch is a nonprofit, volunteer-driven organization sponsored by The Church of Jesus Christ of Latter-day Saints. Millions of people use FamilySearch records, resources, and services to learn more about their family history. To help in this great pursuit, FamilySearch and its predecessors have been actively gathering, preserving, and sharing genealogical records worldwide for over 100 years. Patrons may access FamilySearch services and resources for free at FamilySearch.org or through more than 4,600 family history centers in 132 countries, including the main Family History Library in Salt Lake City, Utah.
Indexed Records
Czech Republic, School Registers, 1799–1953 0 66,273 Added images to an existing collection.
Mexico, Coahuila, Civil Registration, 1861–1998 24,898 0 Added indexed records to an existing collection.
Mexico, San Luis Potosí, Civil Registration, 1859–2000 411,325 0 Added indexed records to an existing collection.
New Zealand, Archives New Zealand, Probate Records, 1843–1998 0 771,097 Added images to an existing collection.
Ukraine, Sumy Civil Registers, 1918–1922 0 34,691 New browsable image collection.
US, BillionGraves Index 417,808 417,808 Added indexed records and images to an existing
US, Kentucky Confederate Pension Applications, 1912–1950 4,192 0 Added indexed records to an existing collection.
US, Texas, World War I Records, 1917–1920 203,404 0 Added indexed records to an existing collection.
United States General Index to Pension Files, 1861–1934 4,292 0 Added indexed records to an existing collection.
United States, Register of Confederates and Civilians Who Died in the North, 1861–1865 25,511 679 New indexed records and images collection.
Amanda L. Wallis
Latest posts by Amanda L. Wallis (see all)
FamilySearch Adds More Than 3.7 Million Indexed Records and Images for Belgium, England, Germany, the Philippines, and the United States - May 29, 2015
FamilySearch Adds More Than 1.7 Million Indexed Records and Images for Australia, China, India, Peru, the Philippines, and the United States - May 26, 2015
FamilySearch Adds More Than 2.9 Million Indexed Records and Images for Australia, Canada, Peru, and the United States - May 14, 2015
Genealogy RecordsWebsites, Apps, and Tools
Have the Canada, Saskatchewan—Cemetery Transcripts (1850–1994) records been published yet? I have many ancestors from Saskatchewan and I helped index that project, and I would really like to search it. Thanks.
Eric Slaugh says:
Ash, good question! For information regarding the publication of specific transcripts call FamilySearch Research Support at 18664061830.

redpajama_set_name: RedPajamaCommonCrawl


I've been meaning to do this -post this picture somewhere ever since I took it in early 2011.
It was a snowy day and I was walking home the usual way.
It was around 4pm. At that time of my life, I used to take a lot of landscape-style photos and just like that I took The picture.
There was no one walking anywhere around, I remember and know that because I never take pictures when strangers are around (don't want to violate peoples privacy).
However, when I came home, I started going through the pics and noticed that black figure in it. Pretty soon, I forgot the whole thing and today (over three years later) I was going through some old photos and came across this, yet again.
So, my question is kind of... What do You think it / she / he... is?
The creature looks like it's facing me (and the camera), and if you zoom close enough, you can actually see a lighter area around the supposed face) that proves it most definitely wasn't a human over there, I would've noticed it especially with the face looking at me, and I would not have taken the picture.
If someone needs any more info, I'm happy to answer if it helps to determine the nature of this thing.
It does look like someone on a bike in the snow. The picture itself, with those winter snowed trees is just breathtaking. Very nice .
interesting. im not trained in the paranormal but it looks like she is wearing some sort of dress.
(03-29-2014, 07:34 PM)raerae28 Wrote: interesting. im not trained in the paranormal but it looks like she is wearing some sort of dress.
I thought the exactly same.
In the other hand it looks like someone on a bike, but at the same time, thinking differently, it looks like a figure just standing there, wearing a sheer dress and holding something in its arms.
Maybe a broom? Kinda looks like a handle.
(03-29-2014, 07:28 PM)Itheblaze Wrote: It does look like someone on a bike in the snow. The picture itself, with those winter snowed trees is just breathtaking. Very nice .
Thanks, the landscape is pretty indeed.
I can say 100% there was no one [actual person] biking when I took the picture. Of course it is impossible for me to actually prove anything and that really isn't my goal.
How can you ride in the snow though?
What did the figure do, cross the road or fade away or what. I do not see a bike at all. Could had just been a person in winter gear crossing the road?


The event was a success! I had a wonderful time and the weather was great. It couldn't be more perfect. I over-did it a couple of times but other than that, it was a lot of fun. Now I miss the "good ol' days" even more. I was missing Ali. I managed to trade a scarf for a new belt with some nice tooling on it. My first barter. Then I bought a 3-D wooden puzzle of a castle and I purchased 2 new portable holes from the blacksmith who was there, along with an iron hair pin. I don't have the hair for it, but it will make a nice gift for someone if I don't find a use for it.
The pavillion worked out GREAT! I was too "beat up" to hang the ceiling and interior walls so I put up a couple of curtain rods to shield the porta potty and to hang garb off of.
OMG the IKEA bed with my sleep number mattress was DABOMB!!! Ali said he's going to copy it and make me a "knockdown" version. It sure was nice having an actual bed frame to sleep on.
My Porta-Potty needs fixing. The pump to make it "flush" has a leak around the gasket and it sprayed out water instead of flushing. A little caulk should fix that right up.
We have a brand new household member! Welcome, Marjorie, into the fold. This was her first event and she really enjoyed it. A very lovely, lively and funny young woman who's going to be a great asset to our humble little group.
I learned that I am cursed by incessantly barking dogs. All afternoon and evening on Friday. After I yelled over, "PLEASE! Silence your dog!" when they woke me up very early Saturday morning, I didn't hear it again until Sunday afternoon. At that time the bag piper started up too. By then, we were packed and ready to go. That's when I said to Ali, "Ummm yep, it's time to hit the road." So, we left early. I could really use a nap about now.
I enjoyed myself but it was hard on both of us. Hard on me doing the unpacking and putzing on Friday plus walking up and down hills to where the demos were being held on Saturday. Then the packing up again on Sunday and the unpacking again once it's out of the truck. Ali can't do the loading, unloading and loading again either. We still have to get the stuff back out of the truck. We want to go to more events, but can't do this kind of camping. We don't want to do the RV thing either. We did that a few times. It just kills the atmosphere for us. We like being in a tent. We're playing with the idea of taking the small utility trailer that we have and making it into some kind of pop-up camper that still looks and feels like you're in a tent.
In the meantime we're going to day trip Honey War. Klaufi and I are talking about going to An Tir/West War. Katerina is going to a different event near there and then me and Klaufi can head over to the war.
See you at Honey War!


The School of Nursing invites applicants for tenured/tenure-track and non-tenure track/clinical positions.
If you have a doctorate degree and have a record of research funding and teaching excellence, we invite you to apply for a tenured or tenure-track faculty position.
If you are a clinically skilled nurse with a graduate degree in Nursing, we invite you to apply for a non-tenure track or clinical nursing faculty position.
The School of Nursing has a history of excellence in nursing education and research and is the major center of nursing education and scholarship in Texas. We are ranked among the top universities in research funding by the National Institutes of Health with over $20 million in extramural funding.
Like the state it calls home, The University of Texas at Austin is a bold, ambitious leader. Ranked among the biggest and best research universities in the country, UT Austin is home to more than 51,000 students and 3,000 teaching faculty.


text:
Q: .htaccess - Force https, force to subfolder, force www, don't break site I have been having a very difficult time editing my .htaccess file to do these three things together.  I have been able to get each part separately but I just do not understand how the logic flow works to get them all to work.
This is the best I have been able to pull together using the demo at bluehost support
http://helpdesk.bluehost.com/index.php/kb/article/000347
I appreciate any help resolving this issue.
# Use PHP5 Single php.ini as default
AddHandler application/x-httpd-php5s .php
# Bluehost.com
# .htaccess main domain to subdirectory redirect
# Copy and paste the following code into the .htaccess file
# in the public_html folder of your hosting account
# make the changes to the file according to the instructions.
# Do not change this line.
RewriteEngine on
# Change yourdomain.com to be your main domain.
RewriteCond %{HTTP_HOST} ^(www.)?sampleurl.com$
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteCond %{REQUEST_URI} !^/folder/
# Don't change this line.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteRule ^(.*)$ /folder/$1
# Change yourdomain.com to be your main domain again.
# Change 'subdirectory' to be the directory you will use for your main domain
# followed by / then the main file for your folder, index.php, index.html, etc.
RewriteCond %{HTTP_HOST} ^(www.)?sampleurl.com$
RewriteRule ^(/)?$ folder/index.php

RewriteCond %{HTTP_HOST} ^sampleurl\.com$ [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://www.sampleurl.com/$1 [L]

# For security reasons, Option all cannot be overridden.
# Options All -Indexes
# Options ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch -Indexes

Update:
Well after a long time using the following I have run into issues.
IndexIgnore *
RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/site/
RewriteRule (.*) https://www.example.com/site/$1 [L,R]

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} ^/site/
RewriteRule (.*) https://www.example.com/$1 [L,R]

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} !^/site/
RewriteRule (.*) https://www.example.com/site/$1 [L,R]

New Issues.

*

*Bluehost has an application that quickly installs and updates open source applications like wordpress, joomla, phpbb etc.  Well apparently my new super .htaccess file completely breaks their system.  The only way I can run updates and installs is to move the .htaccess to .htaccess.bak until the upgrade or install is complete.  Then move it back.

*I can't create any .htaccess on other sites that I host in other directories.  e.g. I have a master account that I store in /www/site/ that this script forces requests into.  Unfortunately my other sites stored in /www/site2/ and /www/site3/ don't work well.  First I have to create a blank .htaccess to prevent it from pulling the .htaccess above found in /www/.  For some reason if I try to do anything like force www.site2.com I get 500 error's saying I am forcing too many redirects.
I have a theory that my solution above needs to be a little more specific, to make sure it only effects request sent to example.com.  (I think the line with anything not containing /site/ is a little to broad).
I appreciate any support resolving this.  Would save me a bit of headaches!
Update II:
I do not believe I have access to apache config.  Only option I see in cpanel is apache handlers (not really sure what that section does).
I will submit a ticket to see what location the simplescripts server runs from.  I believe it runs from "https://www.simplescripts.com".  What edit would you recommend I add to ignore this domain?
My host bluehost starts you with a primary account and then subdomains.  The primary account's location is set at user\www.  Unfortunatly this gets messy when you try to host multiple domains.  That is why I use .htaccess to force requests that hit that directory into the \site\ directory.  Thus trapping the primary site into the \site\ directory.
I think the relocation issue I was having with one of my subdomains was due to wordpress trying to force a domain without www and then me writing an .htaccess file forcing www.  That caused the infinite loop, not my .htaccess file this thread is about.  If I can resolve the simplescripts issue I am gmoney ;)

A: I'd think something like this would work
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/folder/
RewriteRule (.*) https://www.example.com/folder/$1 [L,R]

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} ^/folder/
RewriteRule (.*) https://www.example.com/$1 [L,R]

but I confess I haven't tested. You can add in all the don't redirect if the file exists, etc., if you want.
In case you haven't seen it, here is the mod_rewrite documentation.
edit:
In response to updated question:
The first thing I notice is that it appears you may have enough control over your setup to put the rewrites in the Apache config files (in the VirtualHost sections) instead of in htaccess files, that'll immediately solve your problem with your other sites.
The first problem, it sounds like you'll need to add RewriteCond to exclude whichever URLs the Bluehost software uses. Either that, or access the Bluehost software under a different VirtualHost (once you've put the rewrite stuff inside the VirtualHost blocks).
If you can't edit your Apache config, then the easiest fix for the other sites it to not make them a subdirectory (on the filesystem) of your main site. That's rather weird, anyway. Move your main site to a sub-directory of /www as well if need be.
Personally, I put all sites in /srv/www/com.site-name.www on my servers (that is, reverse order, with the top-level-domain first, it makes related stuff group together when sorted alphabetically. E.g., when you have www.example.com and static.example.com)

A: This seems to do everything I needed.  Probably a shorter way to get this done but it works!
    IndexIgnore *
    RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/folder/
RewriteRule (.*) https://www.example.com/folder/$1 [L,R]

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} ^/folder/
RewriteRule (.*) https://www.example.com/$1 [L,R]

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} !^/folder/
RewriteRule (.*) https://www.example.com/folder/$1 [L,R]

redpajama_set_name: RedPajamaStackExchange


Symphony Hall is a 2,262 seat concert hall that opened in 1991, and is situated next to Centenary Square and Broad Street. With its world class acoustics and stunning auditorium it is considered to be not only the UK's finest concert hall but also one of the best in the world. Symphony Hall is one of two venues that are managed by Performances Birmingham Limited, and we are pleased to offer relaxed performances for a number of our shows. As a result of this work, we have been awarded the UK's first Autism Alliance Autism Charter, which certifies that we are an Autism-friendly venue.
Use your computer mouse or touch screen to have a virtual look around the venue. You can click on a button below the tour to go to another part of the venue.


When it comes time for the Olympic Games, many people put off all their business and pay attention to the competition of athletes in their favorite sports. It does not matter even – Summer competition or Winter, they always cause a lot of interest.
The most popular winter Olympics in Lillehammer in 1994 gathered 204 million viewers. Since the fifth century, when the competition originated in Greece, much has changed, probably the Hellenes and did not anticipate the possibility of competitions in the snow. Although there were new sports, the Olympics always assumed the most severe competition.
In triathlon and weightlifting, swimming or gymnastics – we want to see representatives of our country on the podium with a cherished medal. It seems that athletes are ready to give everything for the sake of the desired victory, especially since now the state generously presents financially its successful representatives.
In the history of the Olympics, there were many cases when athletes lost their medals, as they violated the rules. Let's talk about the ten most famous such stories.
The famous runner was born in Jamaica, but during the Olympic Games he represented Canada, where he emigrated in the 1970s. When Ben lived in Ontario, he met Charlie Francis, who became Johnson's trainer in track and field. The first success for a black athlete came in 1982, when he won two silver medals at the Commonwealth Games in Australia.
It was not surprising that Johnson joined the national Olympic team in 1984. At the summer Olympics, then Ben won two bronze medals, one of which in the relay 4 to 100 meters. The first gold in major competitions submitted to the runner in 1986, at the Goodwill Games. Johnson received recognition in his second homeland, beating many records set by Canadians.
Johnson's entire career was rivaled by another great runner, Carl Lewis. Many considered the results shown by them to be so phenomenal that it was simply impossible without the use of doping or drugs. At the 1988 Olympics, rivalry reached its limits. The whole world froze in anticipation of the duel of the two greatest runners – the Olympic champion and world record holder. In the preliminary race, Lewis came to the finish line first, but Johnson triumphed in the finals.
But the joy of gold was short-lived – only 3 days later the triumphant failed to undergo doping control – an anabolic steroid was found in his urine. Johnson was suspended from sports competitions, and his medal was transferred to Lewis. Ben tried to return to athletics in 1991, and even won several competitions. However, after another scandal with doping ended his career, as he received a lifetime disqualification.
This sportswoman was born in the Krasnoyarsk Territory, Russia. Initially, she chose a skier's career, but in 2000, at the age of 25, decided to go to biathlon. In the same year she won her first medal at the world championships – in the relay race 4 to 7.5 kilometers. The following year brought her another gold medal in the championship, and again in the relay.
Career Medvedtseva as a biathlete has developed rapidly, at the Olympics in Salt Lake City in 2002, Olga managed to win gold and silver. For the 2006 Olympics in Turin Medvedtseva was in the status of the top athlete, a real contender for medals. And she did not deceive the fans by winning a silver medal in the individual 15 km race. However, in her body was found a stimulant – carphedon. As a result, her medal went to the German Glago, and Olga herself was suspended from the competition for 2 years.
The original Russian Anti-Doping Committee tried to challenge this decision, relying on the fact that the drug was prescribed to treat an ankle injury. Although the truth of this statement was proved, but the verdict has not changed.The fault was the manufacturer, who did not indicate the complete list of substances in the medicine and the doctor, who did not agree to receive the funds with the team's specialists. However, Olga found the strength to return to the big sport – at the Olympics in Vancouver in 2010 she won gold in the relay 4 to 6 kilometers.
This gymnast was born in Romania. At the age of 12 many celebrated her talent – she possessed all the skills of the future great athlete, performing complex jumps and tricks. In 1998, the Romanian won her first serious medal – silver on a log at the children's European Championships. And a year later she received team gold and individual silver at the World Championships in Tianjin. In 2000, at the World Championships, she again did not remain without medals.
For the 2000 Olympics, the Reducan approached the status of one of the favorites. However, the competitions themselves were marked by scandals. The equipment was incorrectly installed, which caused injuries to many athletes. But the Romanian was able to win not only in the exercises on the horse, but to win team gold and silver in the base jump. Soon another scandal erupted – the tests of the Reducan gave a positive result to pseudoephedrine. This stimulant can also act as a decongestant. The coach said that he gave pills to bring down the heat from the athlete.
Radakan herself stated that the medicine became worse for her, and they did not help her in any way. As a result, the Romanian was deprived of gold for exercises on the horse, but left two other medals, as the tests after those competitions showed the "purity" of the athlete. In 2001, the athlete managed to flash at the Artistic Gymnastics Championship in Ghent, winning several personal medals and gold with the team. Today Andrea works as a sports commentator. Hans-Gunnar Lillenwal.
The athlete was born on July 9, 1941 in Sweden. In order to become a pentathlete, he had to train literally throughout the country. Hans-Gunnar's independent career never stood out, but in a company with strong rivals he showed good results. At the Olympics in Tokyo in 1964, the Swede was able to reach the third place in the ranking of athletes.
анти The 1968 Olympic Games introduced anti-doping rules. And then the first "victim" appeared. It was Hans-Gunnar, who led his team. As a result, Sweden had to return the bronze, as its representative – Lillenwal was banally drunk – doping control found in his blood alcohol. The athlete was not only disqualified, but also entered the history of the Olympics as the first athlete convicted of taking prohibited substances.
Sam Hans-Gunnar admitted that he used alcohol. He drank two glasses of beer to calm his nerves in a pause between rounds of competitions. Today it sounds slightly insane that the athlete was disqualified for drinking beer only, while 14 other athletes used tranquilizers and were not punished, since these substances were not banned at that time.
For many years, Rashid Ramzi represented Bahrain at the Olympic Games. The athlete took part in the races for 800, 1500 and 5000 meters. The well-known sportsman received recognition even before his disqualification. At first Ramzi participated in competitions in Morocco, but in 2002 he got into the army and took the citizenship of Bahrain.
The first success for the runner came in 2002 at the Asian Games in Busan, where he won a 1500 meter race. Three years later, Ramzi won the World Championships in Helsinki at 800 and 1500 meters. This made Rashid the main candidate to win at such distances. Not surprisingly, Ramzi was qualified to perform at the Olympics.
His first and possibly last appearance at the competitions of this level was held in Beijing in 2008. There he won gold in the 1500 meter race.However, the joy was not long, in April 2009, the Olympic Committee of Bahrain said that in the blood of the runner found traces of CERA, substances that artificially improves blood circulation. Both blood samples showed a positive result. The gold Olympic medal was immediately selected, and the athlete's career has not yet been resumed.
This American athlete experienced the biggest disappointment of everyone on this list, but it was completely her fault. The flourishing of her career was very successful. The first victory came to an athlete in college. The first notable success was the victory on the hundred-meter mark in the championship of California. Already at such a young age, Jones was charged with the use of doping, but thanks to lawyers, the claims were swept aside.
Already at 17, Marion was invited to participate in the selection for the Olympics, but she decided to refuse. The athlete also shone in student basketball, but after the injury in 1996 she could not get to the Olympics, which was the reason to switch only to athletics career. In 1997, Jones performed at the World Championships in Athens, where she won gold on the hundred-meter mark and only 10th place in the long jump. 1998 and 1999 brought the athlete a whole scattering of medals.
On the eve of the 2000 Olympics, the American announced her desire to win five gold medals at once in all disciplines in which she would take part. As a result, it was possible to win three medals of the highest dignity and two bronze medals. But a successful career suddenly cracked. It turned out that the husband of an athlete, CJ Hunter during the same Olympics was removed from the competition for the use of doping. The investigation showed that Jones herself was taking illegal drugs.
Marriage athlete fell apart, and she had to abandon all medals won since that time. Followed a series of trials, an American was accused of fraud, perjury. In 2007, she officially admitted to taking doping, and in 2008 she even received six months in prison for her activities. Now the woman has returned to the former hobby – game in basketball in female American league.
Ara began to engage in Greco-Roman wrestling at the age of 8 in Armenia. He was able to become a three-time national champion among juniors. In 1994, he went to Stockholm to participate in competitions, but eventually stayed in this country, entering her team. The first participation of the athlete at the Olympics refers to 2000, Ara took 6th place. But the following year he won silver at the European Championships and gold at the World Championships. His last major success came at the 2002 World Cup in Russia, where he became the champion.
Unlike some other athletes on this list, Abrahamyan was not caught using illegal means. He did not use steroids to increase his strength. Speaking at the 2008 Olympics in Beijing, Abramyan was emotionally opposed to the tough conduct of his opponents' struggle. When he received his bronze medal, Ara threw her on the ground in protest against the corruption of the judges. For this IOC decided to leave the athlete without a medal and impose a disqualification. The sportsman started to sue for his rights, in 2009 the disqualification was canceled, but the won Abrahamyan's award was never returned.
Some athletes get their share of fame through such scandalous stories. Ukrainka Ludmila Blonskaya is just one of them. Lyudmila successfully performed in long jump and pentathlon. From 5 to 10 years she managed to exercise gymnastics and basketball, cycling and judo, and from the age of 14 gave all her strength to athletics.
At the age of 16 she appeared at the Ukrainian Junior Championship, having won silver in the Heptathlon. Since 1995, she moved to Kiev, where her career has reached a new level. Lyudmila graduated from the university, became a teacher of physical education and a coach. In 2000, the girl got married, giving birth to a child next year.
It would seem that after such twists of fate, it will be unreal to return to the big sport, but Blonskaya tried to do it. She won in 2002 the national championship and got to the European Championships in Munich, but could not flash there. As a result, only 13th place, and soon the positive result of a doping test also came. Lyudmila calving was appealing this, but she simply did not find money for appeals and lawyers. She gave birth to a child again and returned to the sport.
In 2005, Blonskaya took first place at the Universiade in Turkey, although at the 2006 European Championships, there were no medals. Before the 2008 Olympics, Lyudmila won a number of victories in major competitions. Beijing brought her silver in the heptathlon, but Blonskaya was again caught in doping. Since this violation was already repeated, the athlete was disqualified for life, and the medal was taken away. Alain Baxter.
This athlete is one of the most successful and famous Scottish skiers. The greatest success he achieved in the slalom. Both Alain's parents were members of the British ski team, so the genes definitely played a role. In 1991, Baxter joined the England team, although at that time he was only 16 years old. Despite such a young age, Alain was able to beat some records and establish his own. However, the 2002 Olympics proved to be successful, and failed simultaneously for the British skier.
Baxter was able in 2002 to become the first skier from the UK to win a medal in this sport. To prove everyone's joy for his bronze medal, Baxter dyed his hair in the colors of the Scottish flag, which led to a protest by the British Olympic Committee. After all the sportsman represented this kingdom, instead of the native Scotland. Despite the removal of the paint, the colors are so distinct. Alain returned home, where he was stormily greeted by fans. However, it soon turned out that a small amount of methamphetamine was found in the athlete's blood.
The IOC disqualified the athlete and took the medal he had won. It turned out that the banned substance was contained in a nasal inhaler, which treated Alain. Unfortunately, the medicine made in the US had other components, which was the basis of the sport tragedy. IOC took note of these arguments, limiting the disqualification to only three months, but the medal was never returned. Baxter returned to the sport, completing his career in 2009. During his last descent, he rode in a Scottish kilt and drank whiskey.
This athlete is truly legendary. The American was born in 1888. It seemed that success accompanies him in all kinds of sports in which he took part. Legends say that the beginning of his career was laid in 1907, when the young man cleaned the stadium. He easily conquered the bar, which showed the best result of the day for high jumpers. A young talent was noticed by the coach. In addition to athletics Jeep was engaged professionally and football. In 1909, Jim disappeared from sight, it was believed that he simply earned money somewhere.
However, the coaches found him, and Thorpe himself easily qualified for the 1912 Olympics. In Stockholm he took part in the pentathlon and decathlon. Then it was new sports, but Jim did well with them. He also took part in the long jump and the height. Thorpe managed to win gold in the pentathlon, but in jumps it was not possible to win the prize place, though the competitions were held on the same day. And in the decathlon, Thorpe was not equal. The athlete received the award from the hand of King Gustav V, who called him the greatest athlete in the world.
But just a year later, unpleasant facts for the triumphant surfaced on the surface. One of the reporters found the name of Thorpe in a baseball reference book for 1910. It turned out that at this time he earned money as a professional, which was prohibited by the rules of the Amateur Athletic Union.Although the earnings of the athlete was scanty, he was instantly deprived of all his Olympic awards. Unfortunately, Thorpe's fault was proven.
The practice of earning money-loving athletes was then generally accepted, but they used pseudonyms for these purposes. Thorp sadly said that, depriving him of medals, the IOC could not deprive the athlete of the words of the king. In 1982, the verdict was revised and commemorative medals were returned to the children of the athlete. The great sportsman suffered because of his love for the sport. He was short of five and decathlon, there was little athletics and football.


text:
// This is an open source non-commercial project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using System.Threading.Tasks.Dataflow;
using ITCC.HTTP.Common.Enums;
using ITCC.HTTP.Server.Auth;
using ITCC.HTTP.Server.Common;
using ITCC.HTTP.Server.Enums;
using ITCC.HTTP.Server.Files;
using ITCC.HTTP.Server.Interfaces;
using ITCC.HTTP.Server.Service;
using ITCC.HTTP.Server.Utils;
using ITCC.HTTP.SslConfigUtil.Core;
using ITCC.HTTP.SslConfigUtil.Core.Enums;
using ITCC.Logging.Core;
// ReSharper disable UnusedAutoPropertyAccessor.Global

// ReSharper disable StaticMemberInGenericType

namespace ITCC.HTTP.Server.Core
{
    /// <summary>
    ///     Represents static (and so, singleton HTTP(S) server
    /// </summary>
    public static class StaticServer<TAccount> where TAccount : class
    {
        #region main
        public static ServerStartStatus Start(HttpServerConfiguration<TAccount> configuration)
        {
            if (_started)
            {
                LogMessage(LogLevel.Warning, "Server is already running");
                return ServerStartStatus.AlreadyStarted;
            }
            lock (OperationLock)
            {
                if (_operationInProgress)
                {
                    LogMessage(LogLevel.Info, "Cannot start now, operation in progress");
                    return ServerStartStatus.AlreadyStarted;
                }
                _operationInProgress = true;
            }
            if (configuration == null || !configuration.IsEnough())
                return ServerStartStatus.BadParameters;

            DebugLogsEnabled = configuration.DebugLogsEnabled;
            RequestTracingEnabled = configuration.RequestTracingEnabled;

            try
            {
                PrepareStatistics(configuration);

                _optionsController = new OptionsController<TAccount>(InnerRequestProcessors);
                _pingController = new PingController();

                _configurationController = new ConfigurationController<TAccount>(configuration);

                Protocol = configuration.Protocol;
                _authorizer = configuration.Authorizer;
                _authentificationController = new AuthentificationController(configuration.Authentificator);

                ConfigureResponseBuilding(configuration);

                if (configuration.FilesEnabled)
                {
                    if (!StartFileProcessing(configuration))
                        return ServerStartStatus.BadParameters;
                }

                _requestMaxServeTime = configuration.RequestMaxServeTime;

                if (Protocol == Protocol.Https)
                {
                    if (!BindCertificate(configuration))
                    {
                        LogMessage(LogLevel.Warning, "Binding failed");
                        return ServerStartStatus.BindingError;
                    }
                }

                StartListenerThread(configuration);
                StartServices(configuration);
                _started = true;

                return ServerStartStatus.Ok;
            }
            catch (SocketException)
            {
                LogMessage(LogLevel.Critical, $"Error binding to port {configuration.Port}. Is it in use?");
                _fileRequestController?.Stop();
                return ServerStartStatus.BindingError;
            }
            catch (Exception ex)
            {
                LogException(LogLevel.Critical, ex);
                _fileRequestController?.Stop();
                return ServerStartStatus.UnknownError;
            }
            finally
            {
                lock (OperationLock)
                {
                    _operationInProgress = false;
                }
            }
        }

        private static void PrepareStatistics(HttpServerConfiguration<TAccount> configuration)
        {
            _statisticsController = configuration.StatisticsEnabled
                ? new StatisticsController<TAccount>(new ServerStatistics<TAccount>(
                        configuration.CriticalMemoryValue,
                        configuration.MemoryAlarmStrategy),
                    configuration.StatisticsAuthorizer)
                : new StatisticsController<TAccount>(null, null);
        }

        private static void ConfigureResponseBuilding(HttpServerConfiguration<TAccount> configuration)
        {
            if (configuration.LogBodyReplacePatterns != null)
                ResponseFactory.LogBodyReplacePatterns.AddRange(configuration.LogBodyReplacePatterns);
            if (configuration.LogProhibitedHeaders != null)
                ResponseFactory.LogProhibitedHeaders.AddRange(configuration.LogProhibitedHeaders);

            ResponseFactory.NonSerializableTypes = configuration.NonSerializableTypes;
            ResponseFactory.SetBodyEncoders(configuration.BodyEncoders);
            ResponseFactory.LogResponseBodies = configuration.LogResponseBodies;
            ResponseFactory.RequestTracingEnabled = configuration.RequestTracingEnabled;
            ResponseFactory.ResponseBodyLogLimit = configuration.ResponseBodyLogLimit;
            CommonHelper.SetSerializationLimitations(configuration.RequestBodyLogLimit,
                configuration.LogProhibitedQueryParams,
                configuration.LogProhibitedHeaders,
                configuration.BodyEncoders.First(be => be.IsDefault).Encoding);

            if (configuration.ServerName != null)
            {
                ResponseFactory.SetCommonHeaders(new Dictionary<string, string> {{"Server", configuration.ServerName}});
            }
        }

        private static bool StartFileProcessing(HttpServerConfiguration<TAccount> configuration)
        {
            _fileRequestController = new FileRequestController<TAccount>();

            return _fileRequestController.Start(new FileRequestControllerConfiguration<TAccount>
            {
                FilesEnabled = configuration.FilesEnabled,
                FilesBaseUri = configuration.FilesBaseUri,
                ExistingFilesPreprocessingFrequency = configuration.ExistingFilesPreprocessingFrequency,
                FaviconPath = configuration.FaviconPath,
                FilesAuthorizer = configuration.FilesAuthorizer,
                FileSections = configuration.FileSections,
                FilesLocation = configuration.FilesLocation,
                FilesNeedAuthorization = configuration.FilesNeedAuthorization,
                FilesPreprocessingEnabled = configuration.FilesPreprocessingEnabled,
                FilesCompressionEnabled = configuration.FilesCompressionEnabled,
                FilesPreprocessorThreads = configuration.FilesPreprocessorThreads
            },
            _statisticsController.Statistics);
        }

        private static void StartListenerThread(HttpServerConfiguration<TAccount> configuration)
        {
            var protocolString = configuration.Protocol == Protocol.Http ? "http" : "https";
            ServicePointManager.DefaultConnectionLimit = 1000;

            _requestExecutonBlock = new ActionBlock<HttpListenerContext>(HandleRequestAsync, new ExecutionDataflowBlockOptions
            {
                MaxDegreeOfParallelism = configuration.MaxConcurrentRequests > 0 ? configuration.MaxConcurrentRequests : -1,
                BoundedCapacity = configuration.MaxRequestQueue > 0 ? configuration.MaxRequestQueue : -1
            });

            _serviceUnavailabeBlock = new ActionBlock<HttpListenerContext>((Action<HttpListenerContext>)ReportServiceUnavailable, new ExecutionDataflowBlockOptions
            {
                MaxDegreeOfParallelism = 1
            });

            _listener = new HttpListener();
            _listener.Prefixes.Add($"{protocolString}://+:{configuration.Port}/");
            _listener.IgnoreWriteExceptions = true;
            _listener.Start();
            _listenerThread = new Thread(() =>
            {
                LogMessage(LogLevel.Info, "Server listener thread started");
                LogMessage(LogLevel.Info, $"Started listening port {configuration.Port}");
                while (true)
                {
                    try
                    {
                        var context = _listener.GetContext();
                        LogDebug($"Client connected: {context.Request.RemoteEndPoint}");
                        if (!_requestExecutonBlock.Post(context))
                        {
                            _serviceUnavailabeBlock.Post(context);
                        }
                    }
                    catch (ThreadAbortException)
                    {
                        LogMessage(LogLevel.Info, "Server listener thread stopped");
                        break;
                    }
                    catch (Exception ex)
                    {
                        LogException(LogLevel.Error, ex);
                    }
                }
            });

            _listenerThread.Start();
            _serverAddress = $"{protocolString}://{configuration.SubjectName}:{configuration.Port}/";
        }

        private static void ReportServiceUnavailable(HttpListenerContext context)
        {
            try
            {
                _statisticsController.Statistics?.AddRequest(context.Request);
                ResponseFactory.BuildResponse(context, HttpStatusCode.ServiceUnavailable, null);
                LogMessage(LogLevel.Info, $"Request from {context.Request.RemoteEndPoint} dropped, queue full");
                _statisticsController.Statistics?.AddResponse(context.Response, GetNormalizedRequestUri(context), 0);
                context.Response.Close();
            }
            catch (Exception e)
            {
                LogException(LogLevel.Warning, e);
            }
        }

        private static void StartServices(HttpServerConfiguration<TAccount> configuration)
        {
            ServiceUris.AddRange(configuration.GetReservedUris());
            if (ServiceUris.Any())
            {
                LogDebug($"Reserved sections:\n{string.Join("\n", ServiceUris)}");
            }

            ServiceRequestProcessors.Add(_optionsController);
            if (configuration.FilesEnabled)
                ServiceRequestProcessors.Add(_fileRequestController);
            if (configuration.StatisticsEnabled)
                ServiceRequestProcessors.Add(_statisticsController);
            ServiceRequestProcessors.Add(_pingController);
            if (configuration.ConfigurationViewEnabled)
                ServiceRequestProcessors.Add(_configurationController);
            ServiceRequestProcessors.Add(_authentificationController);
        }

        public static void Stop()
        {
            if (!_started)
                return;
            if (FilesEnabled)
                _fileRequestController.Stop();
            lock (OperationLock)
            {
                if (_operationInProgress)
                {
                    LogMessage(LogLevel.Info, "Cannot stop now, operation in progress");
                    return;
                }
                _operationInProgress = true;
            }

            LogMessage(LogLevel.Info, "Shutting down");
            try
            {
                _listenerThread.Abort();
                _listener.Stop();
                _started = false;
                _requestExecutonBlock.Complete();
                _serviceUnavailabeBlock.Complete();
                Task.WaitAll(_requestExecutonBlock.Completion, _serviceUnavailabeBlock.Completion);
                CleanUp();
                LogMessage(LogLevel.Info, "Stopped");
            }
            catch (Exception ex)
            {
                LogException(LogLevel.Warning, ex);
            }
            finally
            {
                lock (OperationLock)
                {
                    _operationInProgress = false;
                }
            }
        }

        private static void CleanUp()
        {
            InnerRequestProcessors.Clear();
            InnerStaticRedirectionTable.Clear();
            _listener = null;
            _fileRequestController.Dispose();
            _statisticsController.Dispose();
            ServiceUris.Clear();
        }

        private static string GetNormalizedRequestUri(HttpListenerContext context) => "/" + context.Request.Url.LocalPath.Trim('/');

        private static bool _started;
        private static Thread _listenerThread;
        private static ActionBlock<HttpListenerContext> _requestExecutonBlock;
        private static ActionBlock<HttpListenerContext> _serviceUnavailabeBlock;
        private static HttpListener _listener;
        private static bool _operationInProgress;
        private static readonly object OperationLock = new object();
        private static string _serverAddress;

        #endregion

        #region security

        private static bool BindCertificate(HttpServerConfiguration<TAccount> config)
        {
            AssemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
            Port = config.Port.ToString();
            IpAddress = "0.0.0.0";

            BindingParams bindingParams;
            switch (config.CertificateBindType)
            {
                case BindType.CertificateThumbprint:
                    bindingParams = new CertificateThumbprintBindingParams(config.CertificateThumbprint);
                    break;
                case BindType.SubjectName:
                    bindingParams = new CertificateSubjectnameParams(config.SubjectName, config.AllowGeneratedCertificates);
                    break;
                case BindType.FromFile:
                    bindingParams = new CertificateFileBindingParams(config.CertificateFilename, null);
                    break;
                default:
                    return false;
            }

            var result = Binder.Bind(AssemblyPath, IpAddress, Port, config.CertificateBindType, bindingParams);
            if (result.Status != BindingStatus.Ok)
            {
                LogMessage(LogLevel.Warning, result.Reason ?? "Binding failed");
                return false;
            }
            return true;
        }

        public static Protocol Protocol { get; private set; }

        private static string IpAddress { get; set; }
        private static string Port { get; set; }
        private static string AssemblyPath { get; set; }

        #endregion

        #region log

        private static void LogDebug(string message)
        {
            if (! DebugLogsEnabled)
                return;

            Logger.LogEntry("HTTP SERVER", LogLevel.Debug, message);
        }

        private static void LogTrace(string message)
        {
            Logger.LogEntry("HTTP SERVER", LogLevel.Trace,  message);
        }

        private static void LogMessage(LogLevel level, string message) => Logger.LogEntry("HTTP SERVER", level, message);

        private static void LogException(LogLevel level, Exception ex) => Logger.LogException("HTTP SERVER", level, ex);

        #endregion

        #region handlers

        private static async Task HandleRequestAsync(HttpListenerContext context)
        {
            var request = context.Request;
            // This Stopwatch will be used by different threads, but sequentially (select processor => handle => completion)
            var stopWatch = Stopwatch.StartNew();
            try
            {
                _statisticsController.Statistics?.AddRequest(request);
                var isBinaryRequest = _fileRequestController != null && _fileRequestController.RequestIsSuitable(request);
                if (RequestTracingEnabled)
                    LogTrace($"Request from {request.RemoteEndPoint}.\n{CommonHelper.SerializeHttpRequest(context, false, ! isBinaryRequest)}");

                var serviceProcessor =
                    ServiceRequestProcessors.FirstOrDefault(sp => sp.RequestIsSuitable(context.Request));
                if (serviceProcessor != null)
                {
                    LogDebug($"Service {serviceProcessor.Name} requested");
                    await serviceProcessor.HandleRequestAsync(context);
                    CompleteContext(context, stopWatch);
                    return;
                }

                var requestProcessorSelectionResult = SelectRequestProcessor(request);
                if (requestProcessorSelectionResult == null)
                {
                    ResponseFactory.BuildResponse(context, HttpStatusCode.NotFound, null);
                    CompleteContext(context, stopWatch);
                    return;
                }

                if (requestProcessorSelectionResult.IsRedirect)
                {
                    var redirectLocation = $"{_serverAddress}{requestProcessorSelectionResult.RequestProcessor.SubUri}";
                    context.Response.Redirect(redirectLocation);
                    CompleteContext(context, stopWatch);
                    return;
                }

                if (!requestProcessorSelectionResult.MethodMatches)
                {
                    ResponseFactory.BuildResponse(context, HttpStatusCode.MethodNotAllowed, null);
                    CompleteContext(context, stopWatch);
                    return;
                }

                var requestProcessor = requestProcessorSelectionResult.RequestProcessor;

                AuthorizationResult<TAccount> authResult;
                if (requestProcessor.AuthorizationRequired && _authorizer != null)
                {
                    authResult = await _authorizer.Invoke(request, requestProcessor);
                }
                else
                {
                    authResult = new AuthorizationResult<TAccount>(null, AuthorizationStatus.NotRequired);
                }

                _statisticsController.Statistics?.AddAuthResult(authResult);
                switch (authResult.Status)
                {
                    case AuthorizationStatus.NotRequired:
                    case AuthorizationStatus.Ok:
                        if (requestProcessor.Handler == null)
                        {
                            LogDebug($"{request.HttpMethod} {request.Url.LocalPath} was requested, but no handler is provided");
                            ResponseFactory.BuildResponse(context, HttpStatusCode.NotImplemented, null);
                        }
                        else
                        {
                            var handleResult =
                                await requestProcessor.Handler.Invoke(authResult.Account, request).ConfigureAwait(false);
                            ResponseFactory.BuildResponse(context, handleResult);
                        }
                        break;
                    default:
                        ResponseFactory.BuildResponse(context, authResult);
                        break;
                }
                CompleteContext(context, stopWatch);
            }
            catch (Exception exception)
            {
                LogMessage(LogLevel.Warning, $"Error handling client request from {request.RemoteEndPoint}");
                LogException(LogLevel.Warning, exception);
                ResponseFactory.BuildResponse(context, HttpStatusCode.InternalServerError, null);
                CompleteContext(context, stopWatch);
            }
        }

        private static void CompleteContext(HttpListenerContext context, Stopwatch requestStopwatch)
        {
            try
            {
                LogDebug($"Response for {context.Request.RemoteEndPoint} ready.");
                requestStopwatch.Stop();
                var elapsedMilliseconds = requestStopwatch.ElapsedTicks * 1000.0 / Stopwatch.Frequency;
                _statisticsController.Statistics?.AddResponse(context.Response, GetNormalizedRequestUri(context), elapsedMilliseconds);
                if (_requestMaxServeTime > 0 && _requestMaxServeTime < elapsedMilliseconds)
                {
                    LogMessage(LogLevel.Warning, $"Request /{GetNormalizedRequestUri(context)} from {context.Request.RemoteEndPoint} took {elapsedMilliseconds} milliseconds to process!");
                }
                context.Response.Close();
                LogDebug($"Response for {context.Request.RemoteEndPoint} queued ({elapsedMilliseconds} milliseconds)");
            }
            catch (HttpListenerException)
            {
                LogMessage(LogLevel.Info, "Sudden client disconnect, failed to send response");
            }
            catch (Exception ex)
            {
                LogException(LogLevel.Warning, ex);
            }
        }

        private static double _requestMaxServeTime;
        #endregion

        #region service

        private static FileRequestController<TAccount> _fileRequestController;
        private static OptionsController<TAccount> _optionsController;
        private static PingController _pingController;
        private static ConfigurationController<TAccount> _configurationController;
        private static AuthentificationController _authentificationController;
        private static StatisticsController<TAccount> _statisticsController;

        private static readonly List<IServiceController> ServiceRequestProcessors = new List<IServiceController>();

        private static readonly List<string> ServiceUris = new List<string>();

        #endregion

        #region statistics

        public static bool StatisticsEnabled => _statisticsController.StatisticsEnabled;

        public static string GetStatistics() => _statisticsController.Statistics?.Serialize();

        #endregion

        #region files

        public static bool FilesEnabled => _fileRequestController.FilesEnabled;

        public static string FilesLocation => _fileRequestController.FilesLocation;

        public static string FilesBaseUri => _fileRequestController.FilesBaseUri;

        public static bool FilesNeedAuthorization => _fileRequestController.FilesNeedAuthorization;

        public static List<FileSection> FileSections => _fileRequestController.FileSections;

        public static bool FileExists(string sectionName, string filename)
            => FilesEnabled && _fileRequestController.FileExists(sectionName, filename);

        public static Stream GetFileStream(string sectionName, string filename)
            => !FilesEnabled ? null : _fileRequestController.GetFileStream(sectionName, filename);

        public static async Task<string> GetFileStringAsync(string sectionName, string filename)
        {
            if (!FilesEnabled)
                return null;
            return await _fileRequestController.GetFileStringAsync(sectionName, filename);
        }

        public static async Task<FileOperationStatus> AddFileAsync(string sectionName, string filename, Stream content)
        {
            if (!FilesEnabled)
                return FileOperationStatus.FilesNotEnabled;
            return await _fileRequestController.AddFileAsync(sectionName, filename, content);
        }

        public static FileOperationStatus DeleteFile(string sectionName, string filename)
            => !FilesEnabled ? FileOperationStatus.FilesNotEnabled : _fileRequestController.DeleteFile(sectionName, filename);

        #endregion

        #region requests

        private static bool RequestProcessorDuplicates(RequestProcessor<TAccount> first,
            RequestProcessor<TAccount> second)
        {
            if (first == null || second == null)
                return false;

            return first.SubUri == second.SubUri && first.Method == second.Method;
        }

        public static bool AddRequestProcessor(RequestProcessor<TAccount> requestProcessor)
        {
            if (CheckRequestProcessor(requestProcessor) != true)
                return false;

            requestProcessor.SubUri = requestProcessor.SubUri.Trim('/');
            var duplicate = InnerRequestProcessors.FirstOrDefault(rp => RequestProcessorDuplicates(rp, requestProcessor));
            if (duplicate != null)
                InnerRequestProcessors.Remove(duplicate);

            InnerRequestProcessors.Add(requestProcessor);
            return true;
        }

        public static bool AddRequestProcessorRange(
            IEnumerable<RequestProcessor<TAccount>> requestProcessors)
            => requestProcessors != null && requestProcessors.All(AddRequestProcessor);

        public static bool AddStaticRedirect(string fromUri, string toUri)
        {
            var preprocessed = PreprocessRedirect(fromUri, toUri);
            if (!preprocessed.Item3)
                return false;
            return InnerStaticRedirectionTable.TryAdd(preprocessed.Item1, preprocessed.Item2);
        }

        public static bool AddStaticRedirectRange(IDictionary<string, string> uriTable)
        {
            return uriTable.All(up => AddStaticRedirect(up.Key, up.Value));
        }

        private static bool CheckRequestProcessor(RequestProcessor<TAccount> requestProcessor)
        {
            if (requestProcessor.SubUri == null)
                return false;

            if (requestProcessor.Method == HttpMethod.Options || requestProcessor.Method == HttpMethod.Head)
            {
                LogMessage(LogLevel.Warning, $"Cannot explicitely register {requestProcessor.Method.Method.ToUpperInvariant()} processor");
                return false;
            }

            var serviceDuplicate = ServiceUris.FirstOrDefault(su => requestProcessor.SubUri.Trim('/').StartsWith(su));
            if (serviceDuplicate != null)
            {
                LogMessage(LogLevel.Warning, $"Failed to register uri '{requestProcessor.SubUri}'. Section '{serviceDuplicate}' is reserved.");
                return false;
            }

            return true;
        }

        private static Tuple<string, string, bool> PreprocessRedirect(string fromUri, string toUri)
        {
            if (fromUri == null || toUri == null)
                return new Tuple<string, string, bool>(null, null, false);

            if (InnerStaticRedirectionTable.ContainsKey(fromUri))
                return new Tuple<string, string, bool>(null, null, false);

            return new Tuple<string, string, bool>(fromUri.Trim('/'), toUri.Trim('/'), true);
        }

        private static RequestProcessorSelectionResult<TAccount> SelectRequestProcessor(HttpListenerRequest request)
        {
            var requestMethod = CommonHelper.HttpMethodToEnum(request.HttpMethod);
            var localUri = request.Url.LocalPath.Trim('/');
            if (requestMethod == HttpMethod.Get || requestMethod == HttpMethod.Head)
            {
                if (InnerStaticRedirectionTable.TryGetValue(localUri, out string redirectionTarget))
                {
                    var correspondedProcessor =
                        InnerRequestProcessors.FirstOrDefault(
                            rp => rp.Method == HttpMethod.Get && rp.SubUri.Trim('/') == redirectionTarget);
                    if (correspondedProcessor != null)
                    {
                        return new RequestProcessorSelectionResult<TAccount>
                        {
                            RequestProcessor = correspondedProcessor,
                            MethodMatches = true,
                            IsRedirect = true
                        };
                    }
                }
            }

            var processorsForUri = InnerRequestProcessors.Where(requestProcessor => CommonHelper.UriMatchesString(request.Url, requestProcessor.SubUri)).ToList();
            if (processorsForUri.Count == 0)
                return null;
            var suitableProcessor = processorsForUri.FirstOrDefault(rp => rp.Method == requestMethod || requestMethod == HttpMethod.Head && rp.Method == HttpMethod.Get); //-V3130
            return new RequestProcessorSelectionResult<TAccount>
            {
                RequestProcessor = suitableProcessor,
                MethodMatches = suitableProcessor != null,
                IsRedirect = false
            };
        }

        private static Delegates.Authorizer<TAccount> _authorizer;

        public static Dictionary<string, string> StaticRedirectionTable => new Dictionary<string, string>(InnerStaticRedirectionTable);
        public static List<RequestProcessor<TAccount>> RequestProcessors => new List<RequestProcessor<TAccount>>(InnerRequestProcessors);

        public static bool DebugLogsEnabled { get; set; }
        public static bool RequestTracingEnabled { get; set; }

        private static readonly List<RequestProcessor<TAccount>> InnerRequestProcessors =
            new List<RequestProcessor<TAccount>>();
        private static readonly ConcurrentDictionary<string, string> InnerStaticRedirectionTable = new ConcurrentDictionary<string, string>();

        #endregion
    }
}


It's important to choose a real estate professional with experience.... That's why the HAR.com Find a Pro directory can help you find agents in and around the 77023 zip code area based on ratings and feedback, company affiliation and more. You can view detailed information about the more than 34 agents who serve the 77023 area from their HAR.com profile page, along with current listings and prior sales. Browse the directory to find agents around 77023 with certain real estate designations, multilingual agents and service providers like home inspectors, contractors and more. HAR is committed to providing you the right tools to find the right agent for all your real estate needs.
Dalia Guajardo Carlos Garcia Realty, Inc.
Rick Garcia Carlos Garcia Realty, Inc.


I hope to be able to add to this page and the subject matter in the not too distant future, as I re-aquaint and develop my skills in the art of story telling here on my blog.
Freddie Sheene, son of legendary 500cc Motorcycle Champion Barry Sheene agreed to talk to me after his father passed away from throat cancer. It was the first interview Freedie had ever granted, and was published in the UK, Australia, Spain, Germany and Italy. Click below to download the full story.
I interviewed two of Australia's top chefs and one of our most famous cooks to find out how they maintain healthy eating while building their gastronomic empires, with feedback and health tips from a leading nutritionist. The story was published in Health Smart Magazine. Download to read the full article.
For my ex-husband's 50th birthday I wrote a story to celebrate his career, interviewing many of his famous friends, rivals and well know industry figures to get their take on the 500cc World Champion. The story was published in Australia, Spain, France and Germany, Click below to download the full story.


Truly TurnKey,Upgraded Kitchen and Bath, Tiled throughout. New Tiled Floor in Bedroom and Walk-in closet. New Fridge, stove and hood. Have your morning coffeee on the Front Private Patio. 8 minutes to the Beach and walking distance to Publix., and close to downtown Restaurants.
Data last updated: 4/25/19 3:34 AM PDT.


text:
Stephens International Adds Jeremy Kemp And His Portfolio Of Business
Stephens International Limited, the executive search consultancy focused on the global (re)insurance and financial markets, has announced the appointment of Jeremy Kemp as a Director of the firm and an expansion of its services to include deeper coverage in the insurance-linked securities/alternatives space and coverage of asset management, aspects of capital markets and derivatives.
Mark Stephens, who established Stephens International in 2009, has linked with Mr Kemp to enable the firm to serve the needs of its (re)insurance and financial markets clients.
Mr Kemp will lead the business coverage for asset management, capital markets, derivatives and alternatives and ILS, having served these markets since 1997. He joins from Jeremy Kemp International, which he established in 2006, having previously worked for other search firms. Since 2009, he has worked in a joint venture with Mr Stephens on a variety of searches and business projects.
"Jeremy and I have already worked together formally and informally," said Mr Stephens. "It became increasingly clear there was a need for us to address our evolving markets, so it made sense for us to join forces. Jeremy's appointment brings the team strength to five, which includes the appointment of another established consultant who will be joining imminently."
Mr Kemp added: "I have known Mark for some time, not least due to his reputation for sound, thoughtful and incisive advice to decision makers across the (re)insurance market. In many ways he sets the standard, and it is at that level of quality where we operate together. We have achieved much already, but this is merely the start."
search-consult is published by Dillistone Systems, supplier of FileFinder Executive Search software. Dillistone Systems is part of Dillistone Group Plc, as are Voyager Recruitment Software and FCP Internet, supplier of the Evolve Recruitment Software SaaS system.


text:
Rating: 3 of 5
I'm predisposed not to like Kristen Stewart. But I really wanted to like Snow White and the Huntsman so I hoped, at the very least, she'd be good enough not to ruin it. I thought: Please let her be flat. Please let her be unemotional. I'm ok with either of those. (I ought to have just come out and said, let her be Jessica Biel but it only just occured to me). If I'd had any foresight I would have thought: Please don't let her be Bella.
The movie opened well enough with laying the foundation of the story. But as soon as the queen took over it was just shot after shot from the trailer. Don't get wrong, they're very cool shots. But I've seen them in the trailer – I came to the movie to give them context and depth but I didn't get any of that. And the brief moments from the trailer piled on top of one another with no story in between are pretty, but not interesting.
Still, I decided. This is a two hour movie. It's not going to take long before it expands beyond the trailer. Don't be so cynical.
Then Kristen Stewart showed up. And as much as I genuinely liked the actress who played her when she was younger, I couldn't like Kristen Stewart. And I feel horrible for being so derisive of her. But they give her this gift of precious little dialog (smart move) so she spends the first twenty minutes running around breathless and still all I can think is this is the exact same breathless Stewart we've seen in Twilight. And then she's writhing in pain and they could have taken her audio track directly from the end of Twilight because it was exactly the same. And all the parts in between – where she had hardly any lines – relied on her facial expressions. All three if them: childlike wonder, breathless fear and pained angst. You cannot build an entire movie off of such limited emotional range but they tried valiantly.
Kel had an excellent point that the entire world is supposed to be motivated by and centered around this singular character of Snow White. Her interior/exterior beauty, her gentle heart, her loving spirit, etc. is supposed to inform everything else. Kristin didn't have ANY of that. So everything else felt unmotivated, trivial, unsubstantial and fake even. ESPECIALLY her "relationship" to Chris Hemsworth. It felt so shallow and his profession of love and kiss was utterly awkward and strange. The whole movie was beautiful but soulless and predictable because of Kristen Stewart.
Then, she had to give the rousing speech toward the end and she was just speaking nonsense. I know she didn't write the words. But Charlize Theron would have given them meaning. She would have been able to pull off an impassioned speech that is more than shouting. Even in that, Stewart was nothing more than one note.
And I hate being this person – all snarky and cynical. I dislike her even more for making me this person because I feel like I'd be lying if I said anything else.
I loved Charlize Theron. She was brilliant as an incredibly complex character who is crazy and smart and powerful and tortured. It was beautifully done.
Sam Claflin was also really good. I didn't think his character required much until that scene where he completely surprised me with how interesting his performance really was.
And I mostly like Chris Hemsworth, except almost all his scenes were with Kristen so he really didn't have anything to work with. I liked the scene with him and the queen. That was nuanced and interesting. But I didn't believe any piece of him having fallen in love with Snow White because there was nothing there to love. Hemsworth did a fine job looking entranced (because, fine, she's pretty and looked the part) but that wasn't enough. And I felt bad for him because I can't help myself – I pity actors I like when they have to portray romantic relationships with actresses I can't stand. Admittedly it breaks the fourth wall but it also means I don't buy into the central romance of the whole film so none of it really works for me.
But the costumes were great. I loved the twists on the fairy tale, especially the fairest of all. And I the writer's did a great job giving the queen context that really deepened the character. And Ian McShane! How did they get all the other casting so right and Stewart so wrong? It was a little over scored and under edited. But mostly it was a really decent movie with a colossal weak spot.
Kristen Stewart's Performance:
fyi – this would be an easy 3.75 without Kristen Stewart pulling it down
June 4, 2012 | Review 3 star, action, Chris Hemsworth, fantasy | this post contains affiliate links
2 responses to "Snow White and the Huntsman"
I have lots of thoughts:
Interesting that the queen could see people's weaknesses (as evidenced by their hearts). That would be an incredible super power for an evil villain
1st thought upon the Our Father, "Yes!" Makes perfect sense. Weird though, never commented on again.*
Chris Hemsworth, not as hot as in Thor#.
But The idea that he was doing the whole thing to bring back his wife: interesting
I loved the spell on the queen. and the idea that snow white's mother's wish undid it.. drops of blood on snow is very spell-like
I LOVE Ian McShane. But you don't think they could find a dwarf to play that dwarf? Except then I don't have a problem with Bob Hoskins, but then he's short. Ian McShane is short too! But seriously, no little people?
I find the happy dwarf forest to be unsettling. Mushrooms with eyes, what? No thank you.
*THEN, thinking "this fairy forest is very Narnia like.*
** And THEN comes across a white stag god figure. What?***
***Then thinking, The Jesus imagery is really obvious
OMG they're lord of the ringsing it. It's like the opposite of traveling by map.
#Oh now he's hot ##
Wait, when did she learn all the swordplay? I don't remember a montage.
##really hot
And they never even really kissed?!?
haha – now you're almost making me want to go back and watch it again. I love the footnotes!
and you weren't the only one who questioned why they couldn't have actual little people be the dwarves. Part of me thinks if you just get the right actor – it shouldn't matter one way or the other. Part of me thinks that there's probably not a lot of roles for little people so giving them to others is kind of lame. I don't know. I do love Ian McShane.


Based on the reports of construction of an enemy base, a mission is assigned to navy rangers to form a team and go to the enemy territory in order to take down their base. This mission is given to Lieutenant Baay. In the beginning of the mission, one of Baay's soldiers is captured and another one gets killed, but other soldiers get to destroy enemy's base with the support of a frigate, and then run away into the reed beds. On their way back, they are ambushed by Iraqi forces but are rescued just when they are about to be captured; with a wise plan, they are brought to Iran waters and Iraqi battleships are shot drowned.


text:
package rpccommon

import (
	"bytes"
	"encoding/binary"
	"fmt"
	"io/ioutil"
	"log"
	"net"
	"os"
	"strings"
)

// for testing
var (
	uid      = os.Getuid()
	readFile = ioutil.ReadFile
)

type errConnectionNotFound struct {
	filename string
}

func (e *errConnectionNotFound) Error() string {
	return fmt.Sprintf("connection not found in %s", e.filename)
}

func sameUserForHexLocalAddr(filename, hexaddr string) (bool, error) {
	b, err := readFile(filename)
	if err != nil {
		return false, err
	}
	for _, line := range strings.Split(strings.TrimSpace(string(b)), "\n") {
		// The format contains whitespace padding (%4d, %5u), so we use
		// fmt.Sscanf instead of splitting on whitespace.
		var (
			sl                    int
			localAddr, remoteAddr string
			state                 int
			queue, timer          string
			retransmit            int
			remoteUID             uint
		)
		// Note that we must use %d where the kernel format uses %5u:
		// %u is not understood by the fmt package (%U is something else),
		// %5d cuts off longer uids (e.g. 149098 on gLinux).
		n, err := fmt.Sscanf(line, "%4d: %s %s %02X %s %s %08X %d",
			&sl, &localAddr, &remoteAddr, &state, &queue, &timer, &retransmit, &remoteUID)
		if n != 8 || err != nil {
			continue // invalid line (e.g. header line)
		}
		if localAddr != hexaddr {
			continue
		}
		return uid == int(remoteUID), nil
	}
	return false, &errConnectionNotFound{filename}
}

func sameUserForRemoteAddr4(remoteAddr *net.TCPAddr) (bool, error) {
	// For details about the format, see the kernel side implementation:
	// https://elixir.bootlin.com/linux/v5.2.2/source/net/ipv4/tcp_ipv4.c#L2375
	b := remoteAddr.IP.To4()
	hexaddr := fmt.Sprintf("%02X%02X%02X%02X:%04X", b[3], b[2], b[1], b[0], remoteAddr.Port)
	r, err := sameUserForHexLocalAddr("/proc/net/tcp", hexaddr)
	if _, isNotFound := err.(*errConnectionNotFound); isNotFound {
		// See Issue #1835
		r, err2 := sameUserForHexLocalAddr("/proc/net/tcp6", "0000000000000000FFFF0000"+hexaddr)
		if err2 == nil {
			return r, nil
		}
	}
	return r, err
}

func sameUserForRemoteAddr6(remoteAddr *net.TCPAddr) (bool, error) {
	a16 := remoteAddr.IP.To16()
	// For details about the format, see the kernel side implementation:
	// https://elixir.bootlin.com/linux/v5.2.2/source/net/ipv6/tcp_ipv6.c#L1792
	words := make([]uint32, 4)
	if err := binary.Read(bytes.NewReader(a16), binary.LittleEndian, words); err != nil {
		return false, err
	}
	hexaddr := fmt.Sprintf("%08X%08X%08X%08X:%04X", words[0], words[1], words[2], words[3], remoteAddr.Port)
	return sameUserForHexLocalAddr("/proc/net/tcp6", hexaddr)
}

func sameUserForRemoteAddr(remoteAddr *net.TCPAddr) (bool, error) {
	if remoteAddr.IP.To4() == nil {
		return sameUserForRemoteAddr6(remoteAddr)
	}
	return sameUserForRemoteAddr4(remoteAddr)
}

func canAccept(listenAddr, remoteAddr net.Addr) bool {
	laddr, ok := listenAddr.(*net.TCPAddr)
	if !ok || !laddr.IP.IsLoopback() {
		return true
	}
	addr, ok := remoteAddr.(*net.TCPAddr)
	if !ok {
		panic(fmt.Sprintf("BUG: conn.RemoteAddr is %T, want *net.TCPAddr", remoteAddr))
	}
	same, err := sameUserForRemoteAddr(addr)
	if err != nil {
		log.Printf("cannot check remote address: %v", err)
	}
	if !same {
		log.Printf("closing connection from different user (%v): connections to localhost are only accepted from the same UNIX user for security reasons", addr)
		return false
	}
	return true
}


"If you are one of those who believe that hard work and honesty, alone, will bring riches, perish the thought! It is not true!
Riches, when they come in huge quantities, are never the result of HARD work! Riches come, if they come at all, in response to definite demands, based upon the application of definite principles, and not by chance or luck."
The "hard work" for many of us may be in the preparation and cultivation of the mind to embrace and utilize these principles.
It may be the "honesty" of self evaluation necessary to clear the field for better thoughts and desires.
"Your imaginative faculty may have become weak through inaction. It can be revived and made alert through USE. This faculty does not die, though it may become quiescent through lack of use."
Much effort and persistence may be necessary to maintain and exercise these muscles weak with neglect.
Much effort may be required to resist forces, both internal and external, which hamper our growth.
"Keep in mind as you follow these principles, that the entire story of how one may convert DESIRE into money cannot be told in one statement. The story will be complete, only when one has MASTERED, ASSIMILATED, and BEGUN TO MAKE USE of all the principles."
Thanks to Michael and Linda for the "creative imagination" providing this forum! Thanks to the leaders who share their experience each week.


text:
Search found 129 results.
Ability (1985) 3 Word Processor Spreadsheet Presentations Communications Database DOS
Plus 2.0
Bank Street Writer (1986) 1 Word Processor DOS
Bank Street Writer is an easy to use word processor intended for beginners and educational use. It was very popular on the Apple II, but also had ports for Atari, Commodore 64, MSX, Macintosh, IBM PC, and IBM PCjr.
Better Working Eight-in-One (1989) 0 Word Processor Spreadsheet Graphics Communications Database DOS
Better Working Eight-in-One, from Spinnaker Software is an integrated office suite for DOS. It contains a word processor, a spelling checker, a data base, a spreadsheet, an outliner, a graphics program, a communications program and a set of desktop utilities - all in one single, consistent application.
Beyond Words Composer (1991) 0 Word Processor DOS
Beyond Words Composer is a GUI-based word processor developed by former Micropro (WordStar) employees and distributed by Cannon. Technology from this product was incorporated in to IBM DisplayWrite 5/2.
Borland Sprint (1988) 2 Word Processor DOS
Sprint is a text-based word processor for DOS that features a powerful scripting language, multiple user interfaces, exceptional speed, the ability to handle very large files, and powerful PostScript capabilities. "Mark of the Unicorn", and bought by Borland where it was renamed to "Sprint" in 1987. WordPerfect, Microsoft Word for DOS, and Multimate. preview at a time when that was clearly the way forward. However Sprint was targeted towards power users that needed advanced features WYSIWYG editors did not yet provide.
Broderbund Type! (1986) 0 Education DOS
Type! is an interactive typing tutor. Its lessons are optimized around research on how people learn to type. It includes both basic and special skill levels, and monitors your progress with detailed graphs.
Brown Bag Word Processor (1985) 0 Word Processor DOS
The Brown Bag Word Processor was an inexpensive word processor that offered features comparable to more expensive programs. It is essentially an OEM licensed version of Quicksoft's PC-Write with a different user interface. Formatting is done using "dot" commands and it includes a mail-merge module.
By Design (1993) 2 Word Processor DOS
By Design is an add-on set of document design utilities, fonts, and clipart for WordPerfect. Graphics include lead characters, page borders, graphics fonts, and page headers. Templates include newsletters, letterheads, title pages, and business forms.
Celebrity (1987) 0 Word Processor DOS
Celebrity is a powerful word processing program that includes a Speller, Thesaurus, Forms System, Report Writer, Calculator, Calendar, and File Cabinet. It was advertised as a solution for novice users, however the command based interface makes it less than user friendly.
ChiWriter (1990) 6 Word Processor Mathematics DOS
ChiWriter is a WYSIWYG scientific text editor for DOS. Created by Cay Horstmann in 1986, it was one of the first that could write mathematical formulas on common PC computers.
ClarisWorks (1991) 19 Word Processor Spreadsheet Presentations Graphics Publishing Database Windows MacOS
Coping With Job Stress (1989) 2 Education DOS
Coping With Job Stress, from Disk-Count Software Inc, is an interactive on-disk lesson about dealing with workplace job stress. It was a cheap educational budget title. The sort of thing that would sell for $6.96 at Wal-Mart. run it at work, and the box doesn't include a 3.5" disk for your new IBM PS/2.
Correct Grammar (1989) 0 Word Processor Utility DOS
CorrectStar (1984) 0 Word Processor Utility DOS
CorrectStar, from MicroPro International, is an add-on spell checker for WordStar 3.3. It was sold both bundled with WordStar and separately. Later versions of WordStar integrated the spell checker.
CWI Tutor DOS (1991) 0 Education DOS
The ultimate DOS tutor. Everything you wanted to know about DOS and more.
Dac-Easy Word (1987) 0 Word Processor DOS
DAC-Easy Word is a budget word processor package. It can have up to four document windows open, can work with large-ish documents, supports macros, features drop-down menus, built-in help, and includes a mailing list manager.
DataPerfect (1993) 3 Word Processor Database DOS
DataPerfect, originally written by Lew Bastian, published through WordPerfect Corp, and later through Novell, was a fast, memory efficient, but capable relational database for DOS. WordPerfect Corp sold the product alongside their other DOS based office products, such as WordPerfect and PlanPerfect. In 1995 Novel released DataPerfect as freeware and development was continued by its original author until about 2008.
DisplayWrite (1984) 0 Word Processor DOS OS2
DisplayWrite is a word processor that is based on the IBM Displaywriter dedicated word processing system. It directly competed with software ports of dedicated word processors such as the Wang Word Processing System (or its clone MultiMate ), Lanier Word Processing Software, Xerox, DEC, or similar.
Eagle PC Test and Initialization (1985) 0 DOS
This disk contains diagnostics and hard drive setup programs for the Eagle PC, Turbo, Spirit, and PC-Plus. This does NOT work with the Eagle 1600. It includes diagnostics tests for the Eagle CGA card, and their proprietary monochrome graphics card.
Easy Working Tri-Pack (1992) 0 Word Processor Spreadsheet Database DOS
The Easy Working Tri-Pack, from Spinnaker Software, is a bundle of three budget productivity applications from Spinnaker Software. It includes Easy Working The Writer - a word processor, Easy Working The Filer - a database, and Easy Working The Planner - a spreadsheet. These applications boast ease of use with a friendly menu interface wile remaining full-featured.
Easy Working Typing Teacher (1988) 0 Education DOS
Easy Working Typing Teacher is a low cost typist training program released as part of the Spinnaker "Easy Working" product family. Features an on-screen keyboard, built in help, drills, and statistics.
Easy Writer (1982) 1 Word Processor DOS
Easy Writer was one of the first word processors for the IBM PC. It was originally written by John Draper AKA "Captain Crunch", with the PC version published by IBM. EasyWriter 1.x was written in the FORTH programming language and, as the story goes, it was ported to the IBM PC in a matter of days. There was also an Apple II version.
Electric Desk (1988) 0 Word Processor Spreadsheet Communications Database DOS
Electric Desk is an all-in-one integrated word processor, spreadsheet, database, and terminal program. It was first introduced in 1984 as a low-overhead office package targeted at the IBM PCjr, and was offered as a lower cost alternative to Ashton-Tate Framework and Lotus Symphony. Electric desk features windowing, macros, and context sensitive menus. The user interface is a little eccentric. It refers to the program components as "services", and refers to windows as "viewports". OEM bundled PC software.
Electric Pencil (1983) 0 Word Processor DOS
Electric Pencil, which first appeared in 1976 for the MITS Altiar, is the first word processor for home/micro computer systems. It was ported to many other systems, including the SOL-20, NothStar Horizon, and TRS-80. Eventually an enhanced/re-written version was created for the IBM PC.


In continuation of visiting all the Smithsonian museums in DC (first post here). The second Smithsonian museum my bestie and I visited was the National Museum of American History. The exhibits pictures are Food, America on the Move, Stories on Money, Doll's House, A Room of Her Own, American Stories, Star Spangled Banner, The First Ladies, and The American Presidency. In addition to these exhibits we visited Rising Up however photos were not allowed. I've visited The First Ladies exhibition about three times already – those gowns never get old! It was my first time actually going through the entire museum. I had a blast because I'm all about American pop culture and history – I am filled with useless information – therefore it was great going through all the exhibitions. In particular I truly enjoyed the Star Spangled Banner. Photos of the flag are not allowed however it is definitely worth visiting! The exhibition was stunning and I really enjoyed it.
Have you been to the National Museum of American History? What is your favorite exhibit?


text:
Vaseline Trademark Details
Vaseline was registered on Tuesday, January 24, 1922 and is currently owned by Conopco, Inc. under the registration number 151099 . This mark is alive with a status of Registered and Renewed. The last case file activity for this mark occured 9 years ago on Thursday, July 5, 2012, according to the United State Patent & Trademark Office
Conopco, Inc. of Englewood Cliffs, NJ
View all trademarks for Conopco, Inc.
Other Trademarks for Conopco, Inc.
Chesebrough-Pond's, Inc. of Wilmington, DE
View all trademarks for Chesebrough-Pond's, Inc.
Other Trademarks for Chesebrough-Pond's, Inc.
Chesebrough Manufacturing Company, Consolidated of New York, NY
View all trademarks for Chesebrough Manufacturing Company, Consolidated
Other Trademarks for Chesebrough Manufacturing Company, Consolidated
Petroleum Jelly, Oil Petrol, White Mineral Oil and Oil of Petroleum, All for Lubricating Purposes
004 — Class 4 includes mainly industrial oils and greases, fuels and illuminants.
Assignment of Ownership Not Updated Automatically
Applicant/correspondence Changes (non-Responsive) Entered
Teas Change of Owner Address Received
Notice of Acceptance of Sec. 8 & 9 - E-Mailed


This experience will leave you relaxed and truly indulged in the world of painting and exploring the contrasting colours and the playfulness of life itself. In a way, you may get close to representing the complex interrelationship between your imagination, reality and its interpretation, heightening the tension between the simplicity of forms and the complexity of ideas behind them.
This is a full day experience. Tea, Coffee and Lunch is included.
Comfortable clothing is encouraged. All materials, apron, oil paints, brushes and canvas/paper are included.


A new Google feature aims to make life easier for travelers navigating countries in which they're not familiar with the language. The next time you're in Rome or Madrid and want to know if a local restaurant is worth a visit, simply open up Google Maps or Google Search, find the eatery's profile and read the reviews—which will be automatically translated into your native tongue from the foreign language in which they were originally written.
The feature eliminates the need to copy and paste reviews into Google Translate or a third-party app, allowing eager sightseers to get on with their vacation with less hassle.