text:
January 6, 2000: Pictures obtained with the Hubble telescope reveal episodes of star formation that are occurring across the face of the nearby galaxy NGC 4214. Located some 13 million light-years from Earth, NGC 4214 is forming clusters of new stars from its interstellar gas and dust. In the Hubble image, we can see a sequence of steps in the formation and evolution of stars and star clusters. Clouds of glowing gas surrounding bright stellar clusters dominate the picture.
The youngest clusters are at the lower right of the picture, where they appear as about half a dozen bright clumps of glowing gas. Each cloud glows because of the strong ultraviolet light emitted from the embedded young stars, which have formed within them due to the gravitational collapse of the gas. These hot stars also eject fast "stellar winds" moving at millions of miles per hour (thousands of kilometers per second), which plow into the surrounding gas. The radiation and wind from the young stars literally blow bubbles in the gas.
This object is a cluster of hundreds of massive blue stars, each more than 10,000 times brighter that our Sun. A vast heart-shaped bubble, inflated by the combined stellar winds and radiation pressure, surrounds the cluster. The bubble will increase in size as the most massive stars in the center reach the ends of their lives and explode as supernovae.


text:
Take a sneak peak into the onboard experience.
Most asked questions.
See average temperatures in cities.
Arctic Umiaq Line A / S provides passenger service in Greenlandic waters. We are one of Greenland's oldest companies, which was founded in 1774 and since 1797 we have navigated our own vessels in domestic and international voyages. We have 1 passenger ship, our crew is well trained and have years of experience in sailing in Arctic waters.

subset: commoncrawl


text:
"I am a convert to the Catholic Church and barely knew the basics about the faith. I have learned so much since I have been listening to Catholic Answers Live. Thank you for answering my questions and helping me better understand my faith."
Subscribe to Catholic Answers Magazine
"Where the bishop is, there is the community, even as where Christ is, there is the Catholic Church."


text: Running from zombies can get you in shape Back to Article Comments Need to Register? X Remember Me Forgot your password? Today's Deals Powered by SHOP NOWBreitling Watches at Ashford: 48% to 55% off + free shippingAshfordPosted 21 hr 19 min ago SHOP NOWMovado Watches at Ashford: Up to 78% off + free shippingAshfordPosted 15 hr 22 min ago SHOP NOWSentrySafe Fire Safe with Alarm for $159 + free shippingWalmartPosted 1 day 5 hr ago SHOP NOWThe Edge NES Gamepad V2 for $15 + pickup at WalmartWalmartPosted 1 day 16 hr ago Top Stories Playing at NFL venue doesn't faze West Orange-Stark Bodies found burned inside car in Channelview Feds shed more light on fatal Texas hot air balloon crash Kate Middleton wears Princess Diana's favorite tiara Sid Miller defends sharing fake news on social media Things to know about UH coach Major Applewhite Two rescued tigers living the good life in north Texas What Texas kids really wanted from Santa Local News Orange church brings Bethlehem to life Family of woman shot by off-duty security guard reaches... Charter school loses lease at Al Price campus Port of Beaumont starts work on new ethanol tanks Families brave wintry cold for Beaumont Holiday Tree Lighting Latest News Videos


text:
Artsbridge aiming high with fund drive
BELPRE – Artsbridge will be trying to raise $145,000 during its United Arts Fund Drive, which kicked off Thursday in Belpre.
Artsbridge raised $135,000 in the fund drive last year.
The Artsbridge Board of Directors, its advisory committee and staff met at the Belpre Campus of Marietta Memorial Hospital to announce the fund drive's start and discuss other business relating to the arts communities in Wood and Washington counties.
"The kick-off marks the beginning of a three-month campaign to raise money for 'Arts in Education' as well as the other programs and services Artsbridge provides," said Artsbridge Executive Director Mark Lanyon. "Many local organizations benefit from this campaign as Artsbridge promotes and re-grants much of the money it raises to local symphonies, galleries, artists and theaters."
Dr. Roger Anderson is chairman of the fund drive.
Anderson lives and practices in Marietta and has been an avid supporter of the arts, Lanyon said.
"This year he is lending his support to help raise awareness about the Artsbridge mission and how it benefits local businesses to have a thriving cultural community," he said.
The Mid-Ohio Valley is starting to experience a new era of increased prosperity through oil and gas development, Anderson said.
"It would be great for many of those people to be involved in the advancement of Artsbridge," he said. "We will have a number of functions to raise community awareness of Artsbridge and its importance in the community."
Artsbridge officials talked about artistic efforts in Wood and Washington counties and doing more to bring the efforts of the two communities closer together and build interest in Artsbridge.
The fund gives grants of $4,000-$5,000 to help support programming for the Mid-Ohio Valley Ballet in Parkersburg, the Mid-Ohio Valley Players in Marietta, the River Cities Symphony Orchestra, the Parkersburg Choral Society and the West Virginia Symphony Orchestra.
The fund provided support for the Theatre de Jeunesse for its Youth Theater Arts Project, the Evergreen Arts and Humanities Series at Washington State Community College for performances, the Mid-Ohio Valley Multi-Cultural Festival to help raise awareness of varied cultures in the community, the WVU-P Music Department for the West Virginia Sesquicentennial Music Celebration, the Colony Theater in Marietta to write original music to help set Shakespeare's Love's Labour's Lost in Appalachia, the Guild Builders children's program at the Actors Guild, and programs that bring artists and performers into schools and special events for children throughout the community.
The fund drive will run April, May and June, Lanyon said.
"It is our biggest fund drive of the year and generates the most income that we regrant to other organizations and local artists," he said. "For 26 years, Artsbridge has provided students in both West Virginia and Ohio with live artists who inspire hands-on creation of art in many forms.
"The purpose of Artsbridge is to improve the quality of life in the Mid-Ohio Valley by promoting and supporting the arts through financial and technical support and arts education in our schools and community," Lanyon said.


text:
This series of two articles will show you how to participate in the global Internet. The architects of this greatest advance in communications since the printing press have strived to make such participation possible. The Internet is — by design — a simple network, engineered only to route data from one location to another. All of the valuable services (such as the World Wide Web and email) are implemented at the endpoints, not inside of the Internet itself (see Further Reading for more information).
Because everybody is allowed to add value at the endpoints of the Internet, you can do it too! Today, this is easier than ever before. You do not need to be proficient in a difficult programming language, such as C or C++. For example, you will see that a useful web client can be about as complicated as a shopping list.
This article describes the basics of networked applications, providing information and sample code to get you started immediately. The second article will delve deeper into various techniques for network I/O, including important, practical results that help you choose the best method.
This article focuses on Internet clients. Clients — like your web browser — request information from servers (like the one from which you accessed this page). Typically, the client then presents the information to a person, although there are clients that talk to other computer programs instead. The next article will present ideas that are also applicable to developing servers and peer-to-peer systems.
Example Files
Download examples and other files related to this article:
With just a basic Internet connection, you can create your own clients (for personal or internal company use) in a leisurely afternoon. The following discussion presents the core techniques, illustrated with complete, working web clients. It is very important that you do not skip the last section of this article. The discussion there covers several simple things that you can do to avoid mystifying errors and security breaches in your network application.
Here is a simple web client. It displays the current outdoor temperature in New York City and then exits.
Example 1. A simple client
import urllib # Library for retrieving files using a URL.
import re # Library for finding patterns in text.
# The NOAA web page, showing current conditions in New York.
url = 'http://weather.noaa.gov/weather/current/KNYC.html'
# Open and read the web page.
webpage = urllib.urlopen(url).read()
# Pattern which matches text like '66.9 F'. The last
# argument ('re.S') is a flag, which effectively causes
# newlines to be treated as ordinary characters.
match = re.search(r'(-?\d+(?:\.\d+)?) F',webpage,re.S)
# Print out the matched text and a descriptive message.
print 'In New York, it is now',match.group(1),'degrees.'
Here is the output produced by the client.
Example 2. Output from the simple client
In New York, it is now 52.0 degrees.
The client is written in Python —
probably the easiest, fully featured mainstream programming language available
today. Python is used by such organizations as Google, Yahoo, NASA, and
Lawrence Livermore National Laboratories. The language is open source (so you
can use it freely) and cross platform. Note that any text in the example that
starts with a
# is a descriptive comment to human readers of the
code — Python ignores these comments.
Related Reading
Python in a Nutshell
If you are really unfamiliar with Python, the Further Reading appendix provides several helpful links. C++, Perl, Java, and Visual Basic programmers should find Python very easy. It is probably the ideal choice for beginners, as well.
To run the examples in this article, it is sufficient to save the code into
an ordinary text file and then issue the command
from the shell (the DOS command
prompt, for Windows users). See the Installation Notes for easy directions on installing Python.
Now we are ready for a more detailed discussion of the example. The first two lines import libraries to use in our program. The Python distribution includes a library to download files based on a URL (e.g., from a web server). There is no need to do any low-level socket programming — the library does this work for you.
The program opens and reads a web page from the National Oceanic and
Atmospheric Administration (NOAA) web server. This server hosts pages with
current weather information from all over the world. The specific page
retrieved by our example shows the conditions in New York City. The information
is saved as one long string in the
webpage variable.
Next, a regular expression is applied to the
string. This is a quick, effective way to extract information from text without
implementing complex parsing logic yourself. Applications range from input
validation for security (e.g., in CGI scripts) to bioinformatics (e.g.,
searching for DNA sequences in a genome).
While regular expressions can be a difficult topic, you do not need to become an absolute expert to make good use of this technology in many situations. The Further Reading appendix lists several resources for learning about regular expressions.
The final line in the example prints out the temperature reading, captured as part of the regular expression match. The following discussion gives the details of the matching process.
Here is, once again, the regular expression pattern from the simple client example.
Example 3. Temperature-reading pattern
r'(-?\d+(?:\.\d+)?) F'
The leading
r specifies a raw Python string. This will prevent
the interpreter from processing special characters (such as the backslash). In
a raw string, what you see is what you get: a
r'\n' is two
characters (a backslash followed by the letter
n), whereas an
ordinary string
'\n' would be interpreted as a linefeed. If you
are interested in the subtle details (not usually necessary in day-to-day
programming) read the string literals subsection of the Python Reference Manual.
The first character in the pattern string is the open bracket,
(. The bracket starts a grouping; text that matches the pattern
inside of the brackets will be saved, so you can retrieve it for later use. This
is the first grouping in the pattern; thus, the last line of the example retrieves the text captured by the grouping
The temperature reading might be negative, so the minus sign is next. The
question mark is a special flag that indicates that the preceding character
is optional (in this case, the temperature reading may or may not contain a
minus sign). If you need to match an actual question mark in the text, escape
it with a backslash like this:
\? (similarly, the backslash
itself is matched by
Next, we expect to find some digits. A single digit is matched by a
\d. Note that
d is a normal character, which usually
matches itself (i.e., the literal letter
d in the text). Here, the
backslash is used to turn on a special meaning for
d — that
of matching a single digit. This is a general technique in regular expressions;
some ordinary characters (like
d) have a special meaning when
prefixed with a backslash, while special characters (such as
become ordinary characters (which match themselves) when the backslash is
\d is followed by the special character
which specifies that at least one, but possibly more, of the preceding
characters should be matched. Thus,
\d+ matches any number of
digits, but there must be at least one digit, or the match will fail. If you
want to allow zero or more digits, use
* instead of
+, like this:
After the first string of digits, the temperature might contain a decimal
point, with more digits following. This whole sequence, however, is optional,
so a little more work is required to specify the pattern. We begin another
grouping, nested inside of our original one. This time, however, the grouping is
slightly different:
(?: instead of just an opening bracket. The
?: sequence just inside of the bracket indicates that the grouping
should not be saved — only matched. We are already saving the entire
match in our first grouping, and having a copy of just the fractional part of
the reading is not needed for this example.
Inside of the new grouping, we have
\.\d+. The
\d+ is
already familiar: it matches one or more digits. The
\. matches
the decimal point. The backslash escape is required because
. by
itself matches almost any single character. This is why, for example,
.* is often used to "match anything."
After the closing bracket of the nested grouping, there is a single question
mark. This question mark applies to the entire nested grouping. Thus,
we have an optional fractional part — the decimal point and at least one
digit — to the temperature reading. There are easier ways to specify this
fractional part, but they may allow malformed constructs (such as
65. with no digits after the decimal point) to slip through.
Next comes the closing bracket of our top-level grouping. After that, the
last part of the pattern will match an ordinary space followed by the
F character (which stands for "Fahrenheit"). While only the part
inside of the outer brackets (the temperature reading itself) will be saved, the
single space and the letter
F must follow in the text in order for
the match to succeed. This is a simple case of including extra information in a
pattern, in order to identify just the right data. In the current example, here
is the result if the "space F" sequence is left out of the regular
Example 4. Matching the wrong thing
In New York, it is now 3 degrees.
When it is winter in New York, you might actually think that this reading is
correct! Actually, it comes from the
W3C substring, which occurs
in the start of the returned HTML page.
Example 5. Start of an HTML document
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
In the given example, just adding the "space F" yields the right result. Depending on the complexity and variability of the data being processed, you may need more identifying information in your pattern, in order to select the correct text. Of course, if you do not control the generation of the data you are processing, it is always possible that its format will be changed without warning. You should always consider this possibility, as well as the potential impact on your application.
Another interesting variation is writing a web client for a site that you control. For example, the client may interact with the CGI scripts on the web site. In this case, you would have effectively defined a network protocol of your own — layered on top of the HTTP protocol.
In the next section, we provide a Graphical User Interface (GUI) for our simple client. This is quite easy to do in Python.
This example uses Tkinter, one of several open source GUI libraries available for Python. Tkinter is the de facto standard Python GUI, and is typically included with the language (see Installation Notes for details). An Introduction to Tkinter is a highly accessible tutorial on using this library in your own programs.
Example 6. A simple GUI client
import urllib # Library for retrieving files using a URL.
import re # Library for finding patterns in text.
import sys # Various system facilities.
import Tkinter # The Tkinter GUI library.
# The class for our simple GUI.
class SimpleGUI:
# Class constructor -- note that the first argument, 'self'
# is a reference to the object being created.
def __init__(self, master, title, url, pattern, samplerate):
# Save the URL and the regular expression pattern as part
# of the object being constructed -- we'll need them later.
self.__url = url
self.__pattern = pattern
# The samplerate is per hour, while Tkinter uses milliseconds
# to calculate delays. Thus, we convert a per hour rate
# into a delay value in milliseconds, and save it inside our
# object for later use.
self.__delay = int(60*60*1000.0/samplerate)
# The master is our parent widget, we'll need to make calls
# to it later, so save the reference inside the object. In
# this case, our parent widget will actually be the Tkinter
# root widget itself.
self.__master = master
# Set the root window title.
# Create a frame, to hold our controls.
frame = Tkinter.Frame(master)
# This makes the frame visible; see "An Introduction to Tkinter"
# for more details.
# Create a button; its action ('command') is to exit the
# program. We pack the button in the first available position
# in the frame, furthest to the right. If you want to know
# about other layout options for your windows, see
# "An Introduction to Tkinter".
Tkinter.Button(frame, text="EXIT",
# A label widget will be used to display the output. We save
# a reference to it in our object, and again pack towards the
# right of the frame.
self.__show = Tkinter.Label(frame)
# We've set everything up -- now run our sampling routine.
# The sampling routine, which is a member function of our class.
# It is almost the same as the simple command-line client shown
# previously. Note that this routine operates on an object of
# our SimpleGUI class -- this object is passed via the 'self'
# parameter of the routine.
def __sample(self):
# Open and read the web page.
webpage = urllib.urlopen(self.__url).read()
# Pattern which matches text like '66.9 F'. The last
# argument ('re.S') is a flag, which effectively causes
# newlines to be treated as ordinary characters.
match = re.search(self.__pattern,webpage,re.S)
# Display the matched text and a descriptive message.
self.__show.config(text='it is now '+match.group(1)+' degrees.')
# Tell the Tkinter root to call our sample routine again
# after the delay we have set earlier. This will update
# our temperature display periodically.
self.__master.after(self.__delay, self.__sample)
# --- End of SimpleGUI Class ---
# Create the Tkinter root widget.
tkroot = Tkinter.Tk()
# Create an instance of our SimpleGUI class.
simplegui = SimpleGUI(tkroot,
# The window title
'In New York ...',
# The URL of the page to retrieve.
# The regular expression pattern to apply.
r'(-?\d+(?:\.\d+)?) F',
# How many times to sample per hour.
# Start the Tkinter mainloop. This will allow our application
# to respond to events, such as the 'EXIT' button, and to make
# periodic calls to the sample routine we have defined.
In this GUI-based version of a simple web client, the network I/O is performed in the sampling routine. The Tkinter framework's event loop will call this routine after the specified delay, or perhaps later, if the system is heavily loaded with other events. The routine then reschedules itself. Here is a screenshot of the GUI-based simple client.
Figure 1. Screenshot of the GUI-based simple client
With a GUI, it is also possible to show the results in formats other than plain text. For example, temperature readings can be used to animate a picture of a thermometer.
When accessing network resources, it is important to tread lightly. This is why the GUI client example only samples once per hour — quite sufficient for checking the weather. On a fast network connection, even a simple client like this is capable of generating multiple requests per second. If you then give the program to others, and they pass it on, soon the operator of the server you are accessing can be experiencing a lot of unnecessary extra traffic.
The Internet — and the multitude of publicly accessible servers on it — are a shared resource. By writing well-behaved programs that take only what they need, you are using this resource carefully and wisely. Thus, we preserve the free and open Internet for others as well as ourselves.
If you are creating networked applications in Python, there is a powerful, open source tool that can help you. The Twisted framework had its big debut during the 2003 Python Conference in Washington, DC (PyCon DC 2003). Twisted takes care of many networking details, thus reducing the amount of development work required, particularly for complex systems. Here is another implementation of our simple client, this time using Twisted.
Example 7. A simple client with a twist
# Import the Twisted network event monitoring loop.
from twisted.internet import reactor
# Import the Twisted web client function for retrieving
# a page using a URL.
from twisted.web.client import getPage
import re # Library for finding patterns in text.
# Twisted will call this function to process the
# retrieved web page.
def process_result(webpage):
# Pattern which matches text like '66.9 F'. The last
# argument ('re.S') is a flag, which effectively causes
# newlines to be treated as ordinary characters.
match = re.search(r'(-?\d+(?:\.\d+)?) F',webpage,re.S)
# Print out the matched text and a descriptive message.
print 'In New York, it is now',match.group(1),'degrees.'
reactor.stop() # Stop the Twisted event loop.
# Twisted will call this function to indicate an
# error.
def process_error(error):
print error
reactor.stop() # Stop the Twisted event loop.
# The NOAA web page, showing current conditions in New York.
url = 'http://weather.noaa.gov/weather/current/KNYC.html'
# Tell Twisted to get the above page; also register our
# processing functions, defined previously.
errback =process_error)
# Run the Twisted event loop.
In particular, note the error handling function, which is passed to the Twisted framework. Such "hooks" for error handling are very important, if the system is to be extensible. Dealing with errors is the topic of the next section. Make sure to read it before writing your own applications.
One very notable characteristic of the Twisted example is evident in the last line of the code. Twisted's event loop resembles that of the Tkinter example shown previously. In Tkinter, the event loop drives the GUI, responding to inputs from the user. Twisted processes network events in a similar way; like a waiter in a restaurant, the framework can keep track of several "customers" (connections), responding when each one asks for service (i.e., issues an event). This is called asynchronous I/O, and will be covered in more detail in the next article.
Related Reading
Python Cookbook
The admonition to handle error cases in your code is heard so often, you may have learned to ignore it. In networked applications, however, error handling is far more critical than what you may be used to. Network-related errors are frequent, even commonplace. In such an environment, a "quick and dirty" utility will not survive at all.
Fortunately, there are simple things that can be done to deal with errors in network applications. We will discuss them in this section. In addition, we will modify our original simple client to handle common error conditions.
Security concerns itself with a very specific kind of error: a deliberate assault on your system by a remote attacker. This is a monumental subject that can easily become the focus of your entire life. Nevertheless, any network application ignores security only at great peril. The following list provides several guidelines that should keep you reasonably safe in simple situations.
Run your program with the lowest possible privileges that still allow it to work. Even a client performs actions on your system in response to untrusted information received over the network. The less power it has, the less damage that attackers (or buggy code) can do.
Control the sizes of things — even when using a language such as Python. While Python should protect you against the buffer overflow errors so common in C and C++, unexpectedly large input can still cause unpredictable behavior as system resources are used up. For example, it is not reasonable for a person's last name to be ten megabytes long; you should catch such conditions early, truncate the input, or even refuse to continue processing altogether.
Make sure things are in the right format. A country name should not contain question marks, for example. Regular expressions are very useful for this sort of input validation. Thus, it is generally important to construct them carefully, so that only correctly formatted input will match.
Choosing files to manipulate based on a network request should be avoided. After all, a filename is basically a pointer — it refers to some place in the filesystem, similar to the way a pointer in the C language refers to some place in memory. Reading a file based on a network request can expose private information, while writing a file can overwrite critical data and compromise the system. In contrast, if you locally specify the name of a configuration file to read, or a log file to write to, then using these locally specified files is usually safe.
Executing another program with arguments received over the network can
lead to very serious security breaches. Consider eliminating such requirements
by design, as you would a
goto statement in some languages. If you
still choose to go ahead, always analyze the input very carefully, in order
to avoid feeding malformed data to the other program. Under Unix-like
operating systems, for example, these kinds of calls are typically made via the
intervening shell program. This is especially dangerous — the
shell supports a quite-capable programming language, meaning that insufficient
input validation will actually allow an attacker to write and (possibly) execute
arbitrary code on your system.
The following example shows our simple client, modified to perform several important error checks.
Example 8. A simple client with error checking
import urllib # Library for retrieving files using a URL.
import re # Library for finding patterns in text.
import sys # Library for system-specific functionality.
# The NOAA web page, showing current conditions in New York.
url = 'http://weather.noaa.gov/weather/current/KNYC.html'
# The maximum amount of data we are prepared to read.
# Open and read the web page; catch any I/O errors.
webpage = urllib.urlopen(url).read(MAX_PAGE_LEN)
except IOError, e:
# An I/O error occurred; print the error message and exit.
print 'I/O Error: ',e.strerror
# Pattern which matches text like '66.9 F'. The last
# argument ('re.S') is a flag, which effectively causes
# newlines to be treated as ordinary characters.
match = re.search(r'(-?\d+(?:\.\d+)?) F',webpage,re.S)
# Print out the matched text and a descriptive message;
# if there is no match, print an error message.
if match == None:
print 'No temperature reading at URL:',url
print 'In New York, it is now',match.group(1),'degrees.'
First, we limit the size of the web page that we are prepared to read (the
MAX_PAGE_LEN variable). This is a security precaution, as
described in item 2 on the list in the previous subsection.
Next, we make sure to catch any I/O errors from the network operation. The
module raises an exception in such situations. In comparison to a
local hard drive, for example, network I/O operations fail much more
frequently. While the lower levels of networking software on your machine will
(in cooperation with remote systems) try to effect a recovery, this is not
always possible. You must therefore be prepared to deal with unrecoverable
errors yourself. In this case, we simply print an error message and exit.
Finally, we add an explicit check of whether the regular expression pattern has matched. If there is no match, the temperature reading is not available, and an error message is printed instead. A pattern match failure is also a clear indication that something unexpected has been received — it is therefore important that your code deals with these faults explicitly.
One of the most challenging — but fascinating — aspects of network I/O is its unpredictability. As mentioned in the previous subsection, such operations are not reliable; it is not unexpected for a network request to simply fail. Sometimes, however, it does not fail in a clean, readily apparent fashion. Instead, data transmission might start only after a lengthy delay (high latency), proceed very slowly (low bandwidth), or both.
Many factors, in myriad combinations, can cause such unpredictable behavior. On the Internet, data routinely travels over very long distances — even across continents — as it hops from one system to another towards its final destination. Anywhere along the route, hardware failures, software crashes, excessive network traffic, misconfigured systems, electromagnetic interference, and many other causes can disrupt the orderly flow of data.
Unpredictability of network operations becomes a central concern for servers. It is rarely acceptable to make all clients wait because one particular connection is having trouble. If you write a more complex client, such as a spider that gathers information from multiple web sites, you will also run into this problem.
Waiting for each query to complete fully before starting the next is very time-consuming. In addition, failing to complete a crawl of a thousand sites just because the connection to number five on your list is "hanging" is unlikely the desired behavior. Fortunately, a modern computer is physically capable of handling hundreds or thousands of network operations in parallel. In consequence, many useful strategies for concurrent network I/O have been developed, researched, and deployed in actual systems. This will be the topic of the next article.
This appendix provides notes on how to install Python and the Twisted framework. In most cases, it is quite easy to do so — even if you have little prior experience. For additional information, see the Python and Twisted home pages.
Most Linux distributions include Python. To find out, try the command
python at the shell prompt. If Python is
installed, the interpreter will show its version, and start in interactive mode
(hold down Ctrl and press D to exit).
If your Python is very old (e.g., version 1.5.2), you probably want to upgrade it. For example, the latest stable version of Twisted is not available for Python variants earlier than 2.2.X. When upgrading Python, do not delete your old version. Different Python variants usually coexist well, and your system might be relying on the older version for some of its functions.
Before upgrading Python, check that you do not already have a later version
installed alongside the earlier one (i.e., as additional commands like
python2.2). If so, you can use the additional
command to explicitly invoke the more recent interpreter.
At the time of this writing, the most recent stable Python release is 2.3.2.
Red Hat Linux users can download the RPMs. Do not
forget the Tkinter RPMs if you wish to run the GUI
example. Tkinter also requires Tk. The version on the Red Hat install disks
should work fine, or search for
tk at the bottom
of the Red Hat download
To install the RPMs, copy them to a separate subdirectory, use the
su command at the shell prompt to become the
superuser (you will be asked the root password for the system), then
rpm -i subdirname/*.rpm.
Debian GNU/Linux 3.0 ("woody") users can
get a slightly older, 2.2.X series Python in just two steps. Become the
superuser (
su at the shell prompt, then enter the
root password) and issue the command
apt-get install
python2.2-tk. In addition, you will need
apt-get install python2.2-dev) if you want to install Twisted later.
On Linux, Python can also be built from source, usually without too much work. See Python on Other Platforms for details.
Python is very easy to set up for Windows users. From the Python download page, click and run the executable installer. The link is to version 2.3.2 of Python, the latest at the time of this writing. Everything you need to use Tkinter is also included in the installation.
Python for Windows provides two variants of the interpreter:
python and
pythonw. The latter can be used to execute
programs that do not require a console — such as the GUI
example given earlier.
For Python on the Macintosh, see the MacPython download page.
In general, on Unix and compatible systems (such as Linux), Python can be built using the source code. Here is a brief synopsis of the procedure, quoted from the Python version 2.3.2 download page.
All others should download either Python-2.3.2.tgz or Python-2.3.2.tar.bz2, the source archive. The
tar.bz2is considerably smaller, so get that one if your system has the appropriate tools to deal with it. Unpack it with
tar -zxvf Python-2.3.2.tgz(or
bzcat Python-2.3.2.tar.bz2 | tar -xf -). Change to the Python-2.3.2 directory and run the
make, and
make installcommands to compile and install Python.
If you're having trouble building on your system, check the top-level README file for platform-specific tips, or check the Build Bugs section on the Bugs web page.
Note that the last command (
make install)
needs to be run as the superuser.
At the time of this writing, the latest stable version of Twisted is 1.1.0.
From the download
page get the
tar.gz or
tar.bz2 archive (see Python on
Other Platforms for a discussion of the difference between the two
formats). You may need to scroll down on the page until you find the
production version (downloads for the latest alpha release are sometimes listed
first). Choose the archive with documentation included, unless disk space
is really limited or your Internet connection is excessively slow.
After uncompressing the archive, change to that directory (using a shell),
become superuser (root), and issue the command
python ./setup.py
install. This will make Twisted available system-wide.
The Twisted download page includes Windows installers. If the alpha version is listed first, scroll down on the page until you get to the stable release (1.1.0 as of this writing). Choose the installer with documentation, unless you are low on disk space or have a slow Internet connection. Make sure that you use the installer that matches the Python version that you installed earlier. Run the installer, and follow the prompts as usual when adding a new application under Windows.
Related Reading
Mastering Regular Expressions
This appendix provides additional notes on the resources referred to in the article. First, some of the classic papers ("The Design Philosophy of the DARPA Internet Protocols" and "End-to-End Arguments in System Design") on the design of the Internet are enlightening and fascinating to read. An understanding of the underlying architecture will help you in developing your own programs.
Regarding the use of regular expressions to analyze text, there are many
online resources. Even the discussions that are not specific to Python can be a
very useful guide. Two Python-centric resources on regular expressions are the
"Regular Expression
HOWTO" and the documentation of the
module itself. For an overview of recent developments in regular
expressions — as well as how Python's implementation fits into the
overall taxonomy — see "What's New with Regular Expressions." The article is written by the author of Mastering Regular Expressions, a book for those who really want to become experts in this area.
Python programming is also well covered in numerous books, articles and online resources. The Python web site, for example, has an excellent documentation section. In particular, the tutorial is a quick but gentle introduction to the language. Python comes with a large, diverse library; the documentation is accessible via the library reference and module index pages. "An Introduction to Tkinter" provides a very helpful tutorial on this Python GUI library.
Papers from PyCon DC 2003 are available online, several on Twisted. The Twisted framework's web site also provides extensive documentation. In particular, the "howto" and example pages offer plenty of easy-to-follow information on the many diverse facilities of this system.
Download examples and other files related to this article: python_nio.zip or python_nio.tar.gz.
George Belotsky is a software architect who has done extensive work on high-performance internet servers, as well as hard real-time and embedded systems.
Return to Python DevCenter.
Copyright © 2009 O'Reilly Media, Inc.


text:
Fire At Harvicks' House Last Night
DeLana Harvick @DeLanaHarvick 6h
Nothing says WAKE UP like a fire and an alarm! Coulda been really, really bad... Thanks to our local fire dept!
Everyone is OK, but a scary moment -
No word yet as to what caused it, but they will have some cleanup to do.


text:
Let freedom ring
On Monday, I strolled into town to observe the 129th Memorial Day Parade in the Town of Fremont. Steeped in history, I learned that the town's first parade took place in 1884, honoring veterans of the Civil War. My personal connection to patriotism has been magnified by life in the region, and I was thrilled to be among those honoring the event "dedicated to all those Americans who were POWs or MIAs in all our wars or conflicts" and acknowledging that the day is more than an excuse for a cookout. The memorial service, benediction and a flag folding ceremony honoring the family of Raymond Oestrich (Missing in Action from WWII) were all moving and the roster of parade supporters is staggering. To view photos of the cavalcade, go to www.facebook.com/theriverreporter and tag your friends. Above all, these holidays are a perfect example to remember the real reason we celebrate—freedom. It's not just another word.
- « first
- ‹ previous
- 1
- 2
- 3


text:
Packing list for Guyana
|Packing List for [[{{#explode:Packing list for Guyana| |3}} {{#explode:Packing list for Guyana| |4}} {{#explode:Packing list for Guyana| |5}}]]
|These lists has been compiled by Volunteers serving in [[{{#explode:Packing list for Guyana| |3}} {{#explode:Packing list for Guyana| |4}} {{#explode:Packing list for Guyana| |5}}]] based on their experience. Use it as an informal guide in making your own list, bearing in mind that experience is individual. There is no perfect list!
|[[Image:Flag_of_{{#explode:Packing list for Guyana| |3}}{{#if:{{#explode:Packing list for Guyana| |4}}|_{{#explode:Packing list for Guyana| |4}}|}}{{#if:{{#explode:Packing list for Guyana| |5}}|_{{#explode:Packing list for Guyana| |5}}|}}.svg|50px|none]]
See also:
For information see Welcomebooks
This list has been compiled by Volunteers serving in Guyana and is based on their experience. Use it as an informal guide in making your own list, bearing in mind that experience is individual. There is no perfect list! You obviously cannot bring everything we mention, so consider those items that make the most sense to you personally and professionally. You can always have things sent to you later. As you decide what to bring, keep in mind that you have an 80-pound weight restriction on baggage. And remember, you can get almost everything you need in Guyana (with the exception of clothes in big and tall sizes).
You are likely to be either teaching in a school or working as an educator in a health center or NGO, so keep that in mind when choosing appropriate professional clothing to bring. The climate is another consideration when packing. We recommend cotton or linen clothing for comfort, but synthetic materials or blends may be easier to wash and they maintain their shape better, especially during travel. Since clothing is generally washed by hand in Guyana, often with a scrub brush, clothing can wear out faster than normal and durability is important. There are a few dry cleaners in Guyana, but they are expensive. Avoid bringing items that are susceptible to mildew and mold (e.g., suede shoes).
If you bring new clothing or equipment, remove price tags to avoid possible taxes at customs. The Peace Corps provides some funds for the purchase of clothing, but it is advisable to take advantage of the greater variety and quality in the United States. There are many good tailors and seamstresses in Guyana who can make many styles of clothing at a reasonable price.
Packing List
- Sturdy backpack for traveling on three- to four-day trips.
- Pen drive (also called thumb drive or flash drive) holds more data than floppy disks (floppies get destroyed by the humidity).
- Envelopes (the ones that peel off an adhesive strip and stick). The humidity will destroy the adhesive on ordinary envelopes .
- A large bottle of your favorite brand of shampoo or conditioner.
- Cameras
- Regular film (A roll goes for about $5-$10; developing costs are comparable to that in the States)
- Back-up batteries for cameras that require special sizes
- Digital cameras (Make sure you bring your USB cord, CD-ROMs for backups can be purchased in-country. 4 x 6 prints cost 45 cents. Also consider uploading your images to an online developer [e.g., Ofoto, Yahoo! Photos, Shutterfly], having the prints sent to a U.S. address and then shipped back down to you by friends or family. Some Volunteers even have photo printers) Note that Advantix film can be developed at Acme or Galaxy photo shops in Georgetown.
- A few disposable cameras are useful if you don't want to use your regular or digital camera (e.g., to the river)
- Toothbrushes and toothpaste
- Contact lens solution (very expensive down here— recommended to bring from home; remember Peace Corps discourages the use of contact lenses)
- Pocketknife (be sure to declare it within your checked baggage at the airport)
- Head lamp
- Sturdy water bottle (e.g., Nalgene)
- A hat/cap for protection from the intense sun.
- Sunglasses (avoid bringing expensive sunglasses unless you're especially good at looking after them)
- Bandannas (to use as sweat rags)
- Long-sleeved shirts (good for sun protection and bug protection), preferably of a breathable material
- Shoes that you will be comfortable in for two years (if you're hard to size); Tevas or Chacos are highly recommended by many Volunteers. Uness you plan on exercising, athletic socks and sneakers are hot and uncomfortable. If you do exercise, bring tennis/trail running shoes.
- Money belt (key to avoiding losing all your vacation money as you walk through Georgetown)
- Plastic storage bags (e.g., Ziploc bags). Note that these and garbage bags are readily available here.
- If you are a teacher or if you plan on teaching, bring comfortable closed-toe dress shoes. Some headmasters (i.e., principals of schools) are real sticklers about this.
- Bed sheets (should be thin and easy to wash and dry)
- PayPal account with a debit card that can access it. This is good for emergencies, projects and vacations.
- There are plenty of books around amongst other Volunteers and in the Peace Corps Volunteer lounge, but bring a few to add to the mix. Also, a dictionary is always useful.
- Laptops (with the exception of IT Volunteers) : You have the chance of being placed at a site without electricity for two years. About one in every three Volunteers bring laptops. You may also wish to buy a cheap desktop ($100-$150 U.S.) when you get to your site and see your electricity situation. Voltage stabilizers are also helpful if you want to prevent damage to your computer due to power instability. Guyana does not charge customs on computers so shipping after arrival is also possible.
- Don't bring pots/pans; you can purchase them down here.
- Mattress covers are helpful for keeping the bed bugs away.
- Cellphone: Only GSM services available.
- Photos from home. They're nice to decorate your house, and your Guyanese friends will love looking at photos of your friends back in the States.
- CDs, CD player, iPod, MP3 player, or other portable music player). Also bring small speakers. If tight on money, purchase a CD player that plays MP3s, and then burn all your MP3s to CD-ROMs. Many songs can fit on one disc.
- Pajama pants are nice to keep the mosquitoes away at night.
- The latest versions of the GRE, GMAT or MCAT study guides. While the Volunteer lounge has copies, they're rather outdated.
- Bottle/can opener (of the key chain variety)
- Map of U.S. or world can be useful for students or even self
- A board game is nice to bring. Scrabble is popular and readily available amongst several Volunteers.
- Musical instrument (if you play)
- Breathable raincoat (if you can afford it or have it already)
- Dress socks—thin and light (these can protect your feet from mosquitoes in your home)
- Light jacket or long-sleeved shirt
- Thin towels, like the ones from hotels (easier to pack and dry quickly)
- Health Volunteers often benefit from a good medical reference book
- Favorite brand of coffee (if you're a coffee person). Note that you can get locally grown stuff that is not bad; it can be boiled and then strained.
- IT Volunteers may benefit from small tool kit for computers. Victorinox (Swiss Army) sells a special pocket knife that IT Volunteers have found useful. Depending on your site, you may already have tools there, but a kit is always nice since you can't really do much to a computer without a screwdriver.
For Men
- It is not necessary to purchase and/or bring down a blazer.
- At the most, bring down only two button-down long-sleeve shirts and matching ties. Male Volunteers who are health educators typically wear short-sleeve polo shirts and khakis.
For Women
- Showing midriff is unacceptable. Bring belts and shirts that are long in the torso.
- One pair of long shorts
- Two to three dress slacks
- Two summer dresses (if you have them)
- One semi-formal dress (for swearing-in ceremony).
Custom tailoring is readily available and affordable.
- Two to three knee-length skirts
- Three to four long skirts
- Casual tops (tank tops can be worn outside of work, though they stretch out quickly with hand washing, so it's a good idea to bring some boy's undershirts or tanks that won't stretch to put underneath clothes)
- Light cotton button-down shirt
- One to three pairs of pajama pants.
- One to two half slips (e.g., one white and one black).
These are also available cheaply in Guyana.
- Soccer shorts (instead of cotton/spandex shorts)
- Loose-fitting shirts (you will want the breathability during the dry season)
- Casual clothes like jeans, tanks, fun T-shirts for around the house
- Do not bring expensive jewelry; you will make yourself a target for thieves
- If you use make-up, bring your personal supply down— the availability in-country is both expensive and of poor quality. If you have a specific brand of face wash, be sure to bring that down.
- Tampons are readily available, but the variety of brands may be limited. if you have a favorite brand, bring down a three-month supply Shoes
- Sturdy pair of combined running and walking shoes
- Hiking boots, if you plan to hike
- Two pairs of sport sandals (Teva or similar brand)
- One or two pairs of casual sandals
- One pair of dress shoes
- Flip-flops (can be bought in Guyana)
General Advice
- Due to sweat, hand washing and humidity, your T-shirts and other clothes will slowly get destroyed. The detergents and sun drying are very abrasive on clothes (cotton will go faster than synthetics). So, for example, bring two pairs of jeans instead of just one. Any dryfit or quick-dry stuff is really great, especially for travel.
- Electricity can range between 110-240 volts (in the U.S. everything is 110 volts). You can purchase converters (transformers) in-country. Remember this when bringing down electrical appliances (e.g., laptops, chargers, etc.) Also, sometimes the current is not "clean," i.e., it fluctuates.
- If you play soccer, it wouldn't hurt to bring your soccer cleats and ball. Perhaps even a small ball pump.
- Some health Volunteers wear sandals (e.g., Tevas, or Chacos) to work. Cheap shoes can be bought in-country.
- You can buy almost any clothes in-country, but size and quality could be a problem.
- Bring a few favorite recipes. Almost all kitchen items are available in Guyana. Keep in mind you may not have an oven at your site.
- Buy your iron in Guyana
- Drink mixes are not as readily available down here— request that these be sent from home to your address.
- Peace Corps provides you with generic mosquito repellent and sunscreen.
- Note to family and friends: Things trainees like to get in packages include candies, hand sanitizers, magazines, photos from home, drink mixes, coffee, special teas, games, etc.


text:
fellow season ticketholders -- did everyone receive their tickets for the year? mine finally posted today to my online account. will you be attending every game and do you hope to sell some of the good ones that you won't be able to attend?
Anybody with season tickets willing to sell some for a decent price/ section for a fellow KO member? I would be intersted in purchasing around 4 games! Let me know.
But I'd be transferring them to you thru my season sub. account anyway so that's probably a non-issue. Let me know if you wanna buy a few.
Guess if I was simple in the mind...everything would be fine.
I too am VERY interested in purchasing tickets for some games.
Please do not hesitate to PM me with availability and prices.
The seats aren't solely mine, so I have to find out what games we're going to, etc. Then I'll send PMs to those interested about what games are for sale.
They only sent me tix for the first 10 games, but I haven't checked the subscription account online yet, they might have more available there. I'll let you guys know what's what when I have more info.
Guess if I was simple in the mind...everything would be fine.
for my online sub account, they do have all the games posted up for the entire season.
i also received my physical tickets yesterday too, the first 10 games like you said. so "Game 1" is actually the preseason game vs NJN. "Game 2" is the Xmas Day game vs BOS. very confusing.
Did anyone else get tix that had an ad for 2009-10 group tickets on them or was it just me? Might have a problem
Where did you get them from?
how's the secondary market looking for the season subscribers who are looking to unload games they won't attend? i know we are only one home game into the season so far. there is a "weak" stretching coming up (raptors, bobats x2, sixers). are resellers managing to get face value or more for your seats?
Guess if I was simple in the mind...everything would be fine.
i see this early season swoon has a hit to the secondary ticket market.
are there any season subscribers that care to comment on the Linsanity effect on their tickets?
personally i've seen a surge in prices that puts me on pace to turning a profit after taking huge losses earlier in the season.
thanks jeremy!!


text:
Submit News
Microsoft Windows Sales Plunge 33 Percent as Company Looks Ahead to Win 8
Jason Mick
October 19, 2012 12:21 PM
Recipient E-mail
Sender E-mail
Q1 2013 likely left Microsoft's Ballmer sweaty and frustrated.
(Source: YouTube)
Some divisions profit, but Microsoft faces uncertainty as it races ahead to Windows/Windows Phone 8
Earnings week for the tech industry has brought
a lot
bad news
, with a few pleasant surprises (
like Intel
Corp. (
)). Microsoft Corp.'s (
definitely fall into the "bad news" category.
Microsoft, which operates two fiscal quarters ahead of the calendar quarter, saw itself narrowly miss
analyst targets
in both revenue and net income (profit). The company pulled in $4.47B USD (expected: $4.72B USD) in profit on revenue of $16.008 USD (expected: $16.416B USD).
A key to the miss was plunging revenue from the Windows unit, which saw a big drop in Windows 7 sales. Microsoft better hope that predictions of Windows 7 being the "
next Windows XP
" aren't true, because it's counting on Windows 8 to revive sales, with movement of the
once-sterling Windows 7
slowing to a sluggish pace.
Steve Ballmer, chief executive officer at Microsoft,
roared at his critics
, commenting in the earnings release, "The launch of Windows 8 is the beginning of a new era at Microsoft. Investments we've made over a number of years are now coming together to create a future of exceptional devices and services, with tremendous opportunity for our customers, developers, and partners."
Microsoft is currently selling Windows 8 upgrades via pre-order.
Microsoft did defer $1.36B USD (as it typically does) in pre-order revenue from its
Windows Upgrade Offer
program. Windows 8 official
launches next Friday
on Oct. 26.
One bright spot in the earnings report was Microsoft's servers unit, which saw an 8 percent bump on revenue, mainly on big growth in SQL Server and System Center. And in the also-somewhat-good news category, Bing and the online service division crept a bit closer to no longer being
massive money losers
, with revenue 9%, driven by a 15% increase in revenue per-click. That's particularly good as the dominant force in the search market, Google Inc. (
), saw
a large
in revenue per-click
after traffic acquisition costs (TAC).
The Entertainment and Devices division earnings were a revenue draw (down 1 percent). It is currently focused on reviving Microsoft's smartphone bid with
Windows Phone 8
, which launches next week. It also was able to brag that the Xbox 360 remains
sales king of the American consoles market
, with a 49 percent estimated market share. The Xbox 360's successor, which some are expecting to be
named the Xbox 720
, is not expected to land until sometime in late 2013 or early 2014.
Windows Phone 8 launches next week. [Images: Nokia (left), HTC (right)]
Microsoft remains one of the best earning and most successfully diversified hardware/software giants in the consumer electronics industry. However, it continues to be defined by the burden of high expectations, speculation, and intense scrutiny surroundings its "misses".
Shares of Microsoft were hammered in morning trading, down almost 3 percent to $28.70 USD/share.
FT [analyst estimates]
"If they're going to pirate somebody, we want it to be us rather than somebody else." -- Microsoft Business Group President Jeff Raikes
Related Articles
AMD Set to Restructure After Poor Q3 Earnings, Layoff 15% of Workforce
October 19, 2012, 9:05 AM
Inadvertently Leaked Earnings Report Leads to Shaky Trading Day for Google
October 18, 2012, 7:08 PM
Q3 Bloodbath: Nokia Hemorrhages $750 Million
October 18, 2012, 12:43 PM
Intel Beats Expectations, Posts $3B USD Profit
October 17, 2012, 11:40 AM
Bill Gates Says "No" to Second Coming, Ballmer Discusses "New Era" for Microsoft
October 10, 2012, 12:54 PM
Latest Headlines
WhatsUp with WhatsApp?
August 29, 2016, 5:23 AM
Fuchsia – Google's New Open Source Operating System
August 17, 2016, 6:30 AM
Windows 10: End of an Era & A New Beginning
August 1, 2016, 9:59 AM
Free Windows 10 offer ends July 29th, 2016: 10 Reasons to Upgrade Immediately
July 22, 2016, 9:19 PM
Quick Note: Whoops, Microsoft Pushed Unwanted Windows 10 to Some Users
October 15, 2015, 9:04 PM
Quick Note: Windows 10 Insider Preview Build 10565 Fixes Boot Camp 6.0 Issues
October 13, 2015, 11:39 AM
More Headlines
Most Popular Articles
What Can You Do with Your New Echo Dot?
December 3, 2016, 5:00 AM
Google has developed Deep Learning Algorithm to detect Diabetic Eye Disease
December 4, 2016, 5:00 AM
Sound Blaster Z SBX PCIE Gaming Sound Card - Superb High Performance Sound Card
December 6, 2016, 1:00 AM
GizmoTab – Verizon's new $80 Tablet for Kids
December 4, 2016, 5:30 AM
Foscam R2 Home Security Camera System – High Quality High FHD Security Video Footage with No Monthly Fees
December 1, 2016, 2:00 AM
Latest Blog Posts
What's in the News?
Saimin Nidarson
Dec 11, 2016, 5:00 AM
Some News
Saimin Nidarson
Dec 10, 2016, 5:00 AM
Today's Talk
Saimin Nidarson
Dec 9, 2016, 5:00 AM
Latest Tech News
Saimin Nidarson
Dec 8, 2016, 5:11 AM
In The News
Saimin Nidarson
Dec 7, 2016, 5:00 AM
e Guide: Mobile Security for 2017
Saimin Nidarson
Dec 6, 2016, 5:00 AM
Apple Car is Not Dead
Saimin Nidarson
Dec 5, 2016, 1:00 AM
More News
Saimin Nidarson
Dec 4, 2016, 5:00 AM
More News
Saimin Nidarson
Dec 3, 2016, 5:00 AM
Top News
Saimin Nidarson
Dec 2, 2016, 5:00 AM
Surface Ergonomic Keyboard
Saimin Nidarson
Dec 1, 2016, 3:01 AM
Chapeconense plane crash: Football rallies around Brazilian Team
Saimin Nidarson
Nov 30, 2016, 1:00 AM
How to Extends Your iPhone's Battery Life
Saimin Nidarson
Nov 29, 2016, 12:49 AM
Top Stories
Saimin Nidarson
Nov 28, 2016, 1:12 AM
News: Fidel Castro
Saimin Nidarson
Nov 27, 2016, 5:00 AM
Top News
Saimin Nidarson
Nov 26, 2016, 5:00 AM
Changes in Social status affect the way genes turn on and off within immune cells.
Saimin Nidarson
Nov 25, 2016, 5:12 AM
Austrian far–right hopeful Hofer may back EU vote.
Saimin Nidarson
Nov 24, 2016, 4:00 AM
Final Fantasy XV Leaked Before Nov 29 Launch Date
Saimin Nidarson
Nov 23, 2016, 1:00 AM
More Blog Posts
Copyright 2016 DailyTech LLC. -
RSS Feed
About Us
Terms, Conditions & Privacy Information
Kristopher Kubicki


text:
Lane Mains, 3, plays with Angel Laumbach-Kirk, left, an occupational therapist with ENMRSH Wednesday at My School Daycare in Clovis.
By Marlena Hartz: CNJ staff writer
When their baby reached 16 months of age, Diane and Aaron Mains began to worry. He hardly ate and slept in fitful intervals. His attempts at speech were minimal and difficult to decipher.
The couple learned two months later the strange symptoms were the result of a regulatory disorder, a cluster of characteristics that include sensitivity to sensory stimulation, poor sleep cycles, fussiness, and dislike of change.
"We were actually kind of relieved," said Mains, a father to three.
"We were initially told Lane might be autistic," he said. "Regulatory disorder is a relatively new term, and the disorder is treatable. Typically, children diagnosed early do quite well."
Lane, who turned 3 this spring, has done well. He is overcoming his extreme sensitivity to certain foods, has increased his vocabulary almost twofold, and is learning how to adjust to new places and faces, according to his father.
But he didn't do so alone.
He and his parents enrolled in the early childhood intervention program offered through ENMRSH, a nonprofit organization funded by the state Department of Health. An occupational therapist, along with other specialists, have worked one-on-one with their son, in their home, for about two years.
About 250 children, ranging from infancy to age 3, are enrolled in the program. Of them, about 60 have been diagnosed with a regulatory disorder.
A wide range of children are eligible for the program, including those with syndromes, chronic ear infections, or those born prematurely, said Erin Wood, director of the ENMRSH Early Childhood Development Program. The program serves five counties: Curry, Quay, De Baca, Roosevelt and Guadalupe.
Commonly, children are referred to the program through a school staff member or a doctor. But ENMRSH also offers free screening to determine whether or not a child qualifies for their free services, Wood said.
The experts who staff the Clovis facility caution that if overlooked simple developmental problems — traced sometimes to a regulatory disorder and sometimes to other problems — can lead to a constellation of problems later in life.
But many times, developmental problems can be trumped by early treatment.
Lane, for instance, had a deep aversion to mushy foods, his ENMRSH occupational therapist Angel Laumbach-Kirk said. To rid him of the prejudice, she feeds him applesauce, soup and other soft foods. The more he eats such foods, the less dramatic his reactions to them become, she said. He no longer squirms or erupts into tears when meals consist of applesauce and the likes, Laumbach-Kirk said.
"It takes a lot of patience and understanding when there is a regulatory problem," Laumbach-Kirk said. "There is just a different wiring there … Lane is highly sensitive to everything."
Some children with regulatory disorders suffer an oppostie fate — they are not sensitive enough to their environment.
By introducing Lane to bright lights, certain sounds, and an array of textures — over and over again — they become less and less offensive to him and other children with regulatory disorders, Laumbach-Kirk said.
Too often, however, developmental problems are shrugged away, or labeled stages, said ENMRSH experts. Then, "suddenly, they are the kid who pushes everyone in the school line, or can't sit still at their desk," Laumbach-Kirk said.
When children exhibit signs of developmental delay, "parents tend to wait too long thinking things are going to get better," Wood said.
The oversight can be costly. The early intervention program cannot serve children far beyond their third birthday, Wood said.
"You don't want a developmental delay to grow into a habit. Every skill is a building block upon another," Wood said.
"It has nothing to do with intelligence. It can," Wood said, "but most of the time these are bright kids who just need to be taught how to catch up in their skills."


text:
September 25, 2013 —
It's well-established law in New York State that residents who occupy more than one home have a choice about where they can register and vote. A person who owns or rents an apartment in New York City, for instance, and who also owns a second home in the Town of Delaware, is permitted to register and vote in the Town of Delaware even if that home is not the voter's primary place of residence.
In this election year, two actors who have become active in local politics are hosting a voter registration drive on Sunday, October 6, from 3 to 6 p.m. at the Eddie Adams Barn, 247 Jeffersonville-North Branch Road. The actors are Arliss Howard and Debra Winger.
The press release announcing the event makes clear that second-home owners are invited. It says, "In western Sullivan County, weekend and vacation homes may account for a third or more of all homes, but part-time residents are underrepresented at the polls. Debra Winger thinks that many of her neighbors simply don't understand that they are entitled to participate in local elections. 'Under state election law, home is where the heart is', she says. 'You are not required to register and vote from your primary residence; the law permits voters to choose where you cast your vote.'"
The press release also reflects the recent divides this year over positions and actions taken by local officials in some western Sullivan towns regarding gas drilling and hydraulic fracturing versus the wishes a majority of the residents.
It says, "'In our small towns, every vote really does count because elections are sometimes decided by just a handful of votes,' says Mr. Howard. (He and Ms. Winger are married, and longtime residents of the Town of Fremont.) Like many area residents, Howard has become active in town politics in recent years. 'It is critically important that our town boards accurately reflect the wishes of the residents because they have the power to make land-use decisions that can either protect, or radically alter, the rural character of our towns,' he added."
More details
"Volunteers will be on hand to answer any questions about the election law, and to explain whether or not a change in voter registration can affect things like jury duty eligibility and STAR exemptions.
"Musical entertainment will be provided by The Needmore Brothers, also known as Cliff Westfall and Matthew Horn. Cliff and Matthew describe their act as 'playing original country-ish tunes and covers from both left and right field.'"
"Prospective voters, registered voters, and political candidates of all political persuasions are invited. Attendees are encouraged to bring food and beverages to share. The event is sponsored by Catskill Citizens for Safe Energy, Delaware Concerned Citizens, Fremont Concerned Citizens, Keep Cochecton Green and the Town of Callicoon Democratic Committee."


text:
Ever seen those Shimano ads that feature a rock or tree root balled up into a fist, ready to deliver a death blow to your rear derailleur? In real life, sticks and rocks will be better hidden but just as deadly. If you have an Ibis mountain bike, perhaps you should add this to your tool kit. The Ibis Derailleur Hanger is designed to give way in the event you tangle with a rock or stick, sparing your expensive new derailleur and frame. 16 grams
Note: Mounting hardware is not included.
Tech Specs
Ibis Mojo, Ibis Mojo SL
Recommended Use:
getting back on the trail
View more Drivetrain Small Parts
Reviews & Community
IS this compatible with Mojo hdr 650b?


text:
Tuesday Night - Sweet Rhythm
June 4, 2008. Posted by Becca Pulliam.Add new comment | Filed under: becca, drummer, etta james, evenings, greg lewis, james browne, jazz gallery, jazz party, Live Music, long time, musicians, night man, Notes, photos, santaniello, seventh avenue, sweet rhythm, tozzi, wbgo
On the way home from the Jazz Gallery, walking up Seventh Avenue,
used-to-be WBGO night man James Browne pulled me into his club Sweet
Rhythm to see Lezlie Harrison sing. A long time ago, Lezlie hosted the
jazz party on Saturday evenings on WBGO. She's never stopped using that
fine voice, and moved me with her singing and the solos by Luca Tozzi on
guitar and Greg Lewis on organ on "A Lover is Forever," once recorded by
Etta James. I'm going to download Etta right now. Lezlie's drummer is
Luca Santaniello. As I was leaving, Greg was rolling his Hammond out the
door. Musicians work hard and give much! Wish I had photos.
Tuesday Night - Jazz Gallery
June 4, 2008. Posted by Becca Pulliam.Add new comment | Filed under: accents, becca, cardboard, folding chair, group music, hallelujah, hollywood bowl, hudson st, Jazz Alive, jazz gallery, loft, mic, night jazz, Notes, old school, roy hargrove big band, sax players, small group, star ledger, syncopation, vibes, zan stewart
When you get to your folding chair at the Jazz Gallery on Hudson St.,
there's a personal cardboard fan on your seat, and you think what a nice
souvenir. But by the end of the Roy Hargrove Big Band set, you are using
that fan! You ARE a fan! With 18 guys and a woman -- hallelujah Tanya
Darby on trumpet -- crammed into one end of the oblong loft, and the
audience filling the rest, from the back wall to sax players' feet, you
FEEL this band and it feels GOOD! I love that there's only one mic, for
Roy to speak and, briefly, sing. I love that he has about a square yard
in which to conduct, then turn 180 and play. I love it all. He's
expanding his small group music, and his writing is fresh and old school
at the same time, all accents and syncopation, and the band is playing
almost flawlessly. Gerald Clayton's on piano! The set's not too long.
The Roy Hargrove Big Band plays the Jazz Gallery once more this summer
on June 10. Then after that, your next opp to see them is June 15 at the
Hollywood Bowl, so opt for the great vibes at the Gallery where the
band, the sound and the audience are one and the same. And thanks to Zan
Stewart for his motivating review in the Star Ledger.
-Becca Pulliam


text:
An Auction Almost Happened in 2013
I have a previous engagement already scheduled. I had entertained the thought to stop in to participate for a while. That was until today's announcement that an auction [of people] would take place during Black History Month. Though I'm sure it was planned for a good cause and for fun [as a fundraiser], I find such an activity, during this month or any other, disrespectful and insensitive [to the collective staff and customers, which are majority African American]. ~ An email written to leaders of an organization I won't publicly disclose.
Sitting at an all all-team meeting, I listened intensely to the president's prideful presentation about the great strides the organization has made since last year. Locally and regionally, the organization's customer-base increased and employee turnover decreased. Overall, it seems to be doing very well. Taking copious notes, I felt hopeful. Promises of a new and positive direction always excite me. An engaged participant, I couldn't help evoke the Call-Response.
The second part of the agenda was turned over to another leader who began explaining more good news: starting with Black History Month, new activities had been planned to engage customers, their families, and the organization's teams in order to raise money for its financially needy customers. I considered the announcement to be a major milestone. Since the cessation of McDonald's Black History 365 campaign, Black History Month promotion seems a distant memory.
Several minutes into this presentation, I heard the leader say the word "auction." Though referring to a featured activity for the organization's Valentine's Day party, I felt an energy shift. My gut told me we were headed in the wrong direction. Hoping to be wrong, I responded,
'And what's being auctioned?!' I said, praying the "what" would not be a "who."
"Hold on…," he said.
Prayer…unanswered. Intuition…correct. I suspended my inner-talk in a thought bubble above my head as a third presenter explained the auction details. I heard…
managers…directors…will be auctioned…your servant for a day…
Auction?! I heard my voice of disbelief transmit through someone else.
Plans had been made to auction people during Black History Month. This was my correlation. Disturbed, I wrote the email.
My train of logic was soon questioned for clarification. In reply to my email, the president cancelled the activity with an apology, not directly to me: they meant no ill intent. Really? I accept the non-direct apology and the swift resolution. Still, I stand by my words…
Auction: a public sale in which goods or property are sold to the highest bidder. When people are being sold, it's slavery. A parody thereof, even for a FUNdraiser, is despicable. What is there to not understand?
Before leaving the building, and during the weekend, colleagues thanked me for being "our voice." We were all thinking the same thing. I was just the one who spoke up – rather worded up.
I'm dumbfounded that of us nearly 80% of African Americans in the meeting no one used their words in defense of what is right. Some, I imagine, chose not to use their words, verbal or written, because of their security in the organization, reputation, desensitization, ignorance (i.e. ignoring the matter), or lacked courage. Me, I couldn't not write the email.
In response to my psycho genetic memory, transmitted to me from my enslaved ancestors, nourished by fiction and non-fiction slave narratives – especially since my high school reading of Broadside Press author Margaret Walker's Jubilee, Narrative of the Life of Frederick Douglass, an American Slave, and autobiographical transcriptions of former slaves archived by the 1930s Works Progress Administration's Federal Writers' Project, which included Walker's works – I wrote the email to defend my Black Female heritage.
We have survived the defamation, disgrace and heartache of being stripped bare naked, exposed, paraded, degraded, prodded and inspected on auction blocks to be sold from our children with our identities defiled. With great strides made since slavery, Jim Crow, Civil Rights, Women's Rights, and other Rights, we must now, in 2013 and beyond, continue to secure our Rights-full position, maintain and raise our self-esteem, and exercise our Rights when wrongs present themselves.
Being lackadaisical about a parody of a slave auction [even for a FUNdraiser] is wrong; it lowers our esteem and allows others to continue to disrespect us. Moreso, it threatens our collective mental health. Collective PTSlaveryD we must now overcome.
I will unapologetically use my words to defend our Rights to continue our healing – I may have only one time to do so. I will write any wrong I witness, can prevent, protect and to correct. And, I encourage you to do the same. We must use our words. At home, in our communities and at work.
My words halted an auction this Black History Month. What will your words do this February?
Keepin' it Black Bottom™


text:
CARMICHAL Genealogy in All Regions
Search criteria: All Regions, Surname CARMICHAL
What can you do here?
Search online databases for your ancestors:*
Find related genealogy web sites:
Web sites 1 through 2 of 2
Search for CARMICHAL at partner sites:
CARMICHAL queries on CousinConnect.com
CARMICHAL genealogy records at DistantCousin.
Search Cemetery Records on Interment.net
Share your research with others:
Narrow your search:


text:
PRINCESS ANNE, MD. - (April 19, 2013) - Juliette B. Bell is confident after 9½ months at the helm of the University of Maryland Eastern Shore that it has the foundation to achieve eminence in teaching, research and public service.
"UMES is already an excellent institution," Bell said today in an inaugural address that followed her formal installation as president. "I have been many places, and (have) seen many different college campuses. I know quality when I see it."
Moving from excellence to eminence, the motivational theme Bell has chosen for her administration, however, "is more than a slogan or mantra."
"It is a state of mind, a way of life and a statement of expectations," she said.
"It is UMES saying that we expect to start with excellence as the baseline. We expect to engage in continuous improvement. We aim high to move our university to the next level."
In a 20-minute speech to an audience that included Maryland Lt. Gov. Anthony Brown, University System of Maryland Chancellor William Kirwan and her immediate family, Bell laid out a six-point plan for reaching that goal.
She called on university constituencies to support a strategy that emphasizes marketing, investment and collaboration. UMES, she said, also should be nimble while focusing on niches that define it as a university.
And, she added, doing so with a sense of excitement, "because … we are poised at the precipice of change."
"We have to tell our story," she said. "We can no longer be the 'best kept secret' or 'diamond in the rough.' We must develop, build and protect our brand."
Bell's vision for shaping a path forward is aligning "our budget with our strategic priorities" and ensuring UMES achieves "measureable outcomes that support our goals."
Topping her list of priorities is rallying support for a new library, just one element in a sustained effort "to ensure the state of Maryland … continues to make the necessary investments in UMES that will allow this university to rise to the level of its full potential."
In addition, Bell said, "we must identify what is unique about UMES and those areas that are specifically suited to our character and our capabilities."
Examples she cited the public already knows about are degrees offered in hotel restaurant management, construction management, professional golf management and pharmacy.
Since its founding in 1886 as a place to educate teachers and preachers and now as a doctoral research university, "We are poised to make continuing and significant contributions to the research and economic development of this region and the state," Bell said.
Universities, she noted, "are under increased scrutiny and public concern over access, affordability and accountability."
"We must … act with agility and … adapt and respond" to a rapidly changing landscape, she said. "We must be nimble."
Bell pledged to establish and strengthen partnerships with primary and secondary schools, community colleges, other universities as well as business and industry.
"We have to make connections and develop those relationships that help the university move forward," she said.
"If we build on 'excellence' to market and invest in our niche areas and excitedly and nimbly collaborate with our partners, we will achieve 'eminence'."
"I stand before you ready to lead UMES to its next level," she said. "I pledge my best effort to the journey ahead."
Bill Robinson, director, Office of Public Relations; (410) 621-2355.


text:
Driving Innovation and Job Growth with High Performance Computing
Oklahoma Innovation Institute builds a high performance computing (HPC) cluster with Intel® Xeon® processors to foster economic development in Tulsa.
The Oklahoma Innovation Institute is a not-for-profit organization created to boost economic development in the Tulsa, Oklahoma, region. Supported by private-sector, government, and philanthropic partnerships, the Institute fosters collaborative research, entrepreneurship, and creative, future-oriented thinking that can lead to new business opportunities and job creation. Its first initiative is the Tandy Supercomputing Center, a community-oriented supercomputing center that serves the private, public, and academic sectors.
The Institute wanted to provide high-performance computing resources to academic researchers and business users to facilitate new research and spur economic development. The HPC resources would serve the "missing middle" who might have had difficulty gaining timely access to HPC resources and local IT support. In particular, a larger, shared supercomputing center could help enhance research at the University of Tulsa, the University of Oklahoma-Tulsa, and Oklahoma State University in Tulsa, while expanding teaching and training at Tulsa Community College. Together, these four academic institutions form Tulsa Research Partners, one of the Institute's cornerstone programs.
Read the full Driving Innovation and Job Growth with High Performance Computing Success Brief.


text:
Actor Carl Whidden returns to reprise the role of Scrooge that he played as an Oswego State student. This time, he plays all the other roles as well! A 40th Anniversary celebration of that holiday production by local legend and faculty emerita Rosemary Nesbitt.
Carl Whidden Interview on 9WSYR Bridge Street Syracuse, 12/4/13
Parking is available in Lots E-6 & E-18: See Campus Parking Map


text:
Do you think Naruto will come back from his training with a Sage style Forehead Protector like J-Man's???
Or just the standard Konoha Leaf???
Vote for whichever one would prefer him to have...
View Poll Results: Which Forehead Protector do you think Naruto should use?
Results 1 to 16 of 16


text:
The Salvation Army red buckets are more successful when a bell ringer is present, so a group of high school students decided to build a solution.
Students build bell-ringing robot
Published On: Dec 23 2013 07:26:59 AM HST Updated On: Apr 30 2014 08:53:48 AM HST
The views expressed are not those of this site, this station or its affiliated companies. By posting your comments you agree to accept our terms of use.blog comments powered by Disqus


text:
Yo ST.
About a month ago I released a brand new Mixtape with Philly emcee "Street Disciple".
The Mixtape recieved alot of love and was downloaded 1.200 times in the first week. THANK YOU
To the people that haven't heard it yet, here's the opportunity.
ALL feedback will of course be returned.
M.W.P. & Street Disciple
Started by MWP , May 29 2013 04:31 AM
No replies to this topic
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users


text:
A NoteMonday, June 28th, 2010
By the by, this blog is not the place to ask for legal advice. Life advice, love advice, recipes, all that's good, but not legal advice. The one piece of legal advice I can give you on the internet is not to post your damn refugee status on the internet. Also, plead guilty. That always works out well.


text:
INGREDIENTS:9 oz. center cut pork loin 1 gal. + 2 qts. chicken broth 6 oz. straw mushrooms 6 oz. sliced bamboo shoots 6 oz. soy sauce 6 oz. white vinegar 3/4 oz. jalapeño peppers, sliced 6 oz. cornstarch 1 cup + 2 Tbsps. water 1 ½ tsps. salt 2 ¼ tsps. ground white pepper 12 oz. firm tofu 9 medium fresh eggs 3 ½ oz. sesame oil 2 3/4 oz. green onionsDIRECTIONS:1. Cut pork ¼ inch thick then slice into ¼ inch julienne pieces. Reserve. 2. Bring chicken broth to a boil in a large stockpot. Add ...
Register to view this article
WhyRegisterfor FREE?
Registering for Premium Content on Restaurant Hospitality will give youINSTANTaccess to invaluable articles and media content that industry professionals rely on. You will have access to our special reports, feature articles, and industry analysis. It'sFREE, easy and quick.


text:
Use count badges for individual apps.
Press the badge you want to get the code required to put it on your own page. You are now making a badge for Word On The Go Pro - Document Writer for Microsoft Office Word & OpenOffice, if you want to create a badge for another app, go to that app's page, and press "Badges" in the menu.
White background - no border
White background - thin border
Black background - no border
Black background - thin border
Grey background - no border
Grey background - thin border
Transparent background - White numbers
Transparent background - Black numbers
Profile badge for your blog.
Copy the code in the box below to get a badge. You are now making a badge for arne, to make a badge for yourself, make sure you are logged in. This badge will only show the application you love, so remember to mark them in your profile.


text:
As I sit in the radio booth at Frontier Field in Rochester, directly to my right is the owners' box. As I look out my window, I am privy to whatever goes on over there. Last night, it was occupied by the great El Tiante. Red Sox legend Luis Tiant was in Rochester to sign autographs and throw out the ceremonial first pitch. A couple of seasons ago we saw Dwight Evans here, and today Keith Olberman of MSNBC was in the house. In 2004, I was here setting up the equipment for a game when I looked to my right and spotted the Ripken brothers, Cal and Billy. When you're in this business, you've always got an eye out for a potential pre-game interview. I figured "What could be better than an interview with a Hall of Famer?" The brothers were sitting there, alone, drinking beer. I approached and politely introduced myself. "Cal, any chance we could tape a five minute radio interview?" The so-called Iron Man of Baseball, the hero who outplayed the great Lou Gehrig, the guy who played through bumps, bruises, sprains, strains, pulls, fractures, coughs, colds and hangnails, the player who suited up for every single game the Orioles played from May 30, 1982 through September 28, 1998, Calvin Edwin Ripken Jr. He glanced up, barely diverting his attention from his cold beer and had the audacity to say. "I just got done doing an interview and I'm kind of tired, no thanks." The great Steve Hyder was able to do what no American League team could do for nearly two decades. I brought the fraud to his knees. This cat played in 2632 consecutive ballgames and an interview wore him out. I do a nice interview (if I do say so myself) but for crying out loud, I'm not Mike Wallace of "60 Minutes." He should have just said "no", but to add that the previous interview had tuckered him out made me laugh. I don't think Ripken caught on to the irony, and if I were sitting in a ballpark with my brother drinking beer, I probably wouldn't want to do an interview, either. But "too tired"- are you kidding me? The Iron Man had the heart of the Tin Man.
There was an interesting article in the "Rochester Democrat and Chronicle" written by my old friend Jim Mandelaro, recounting the tale of former Red Wing Steve Dalkowski. "Dalk" was a pitcher who was said to throw the ball harder than anyone in history. Routinely clocked at over 100 m.p.h. he was never able to harness his potential. In his first 2 pro seasons, he averaged 19 strikeouts and 18 walks per nine innings. He was once lifted from a game after throwing 120 pitches by the second inning. Reportedly, Dalkowski was the inspiration for the Nuke Laloosh character in "Bull Durham". Ron Shelton, who wrote and directed the flick, is also a former Red Wing, who played for Joe Altobelli, an I.L. Hall of Famer. Allegedly, "Alto" inspired the character Crash Davis and is a great story teller. Altobelli says one time the Wings were in Richmond and hadn't had a day off in a while, so he and a couple of others snuck over to the ballpark and in the dark of night turned on the sprinkler system, flooding the field and forcing the postponement of the game. That scenario was famously played out in the movie. Altobelli once quipped- "I didn't room with Dalkowski, I roomed with his suitcase." Dalkowski is now 70 and is living in his hometown of New Britain, Ct. at the Walnut Hill Care Center. According to Mandelaros' article, "Dalk" has suffered with alcohol-induced dementia.
3 Comments
would have been really cool if he would have done an interview. what an experience that would have been.
I guess he was afraid you might "show him up" on the radio! lol!
Steve i have to respectfully disagree with you on Ripping Ripken. You know the Protocol of the business, and i would have to assume if you went through the Red Wings PR dept. that Cal might have responded to your interview question, instead of just walking in and asking, whether he had a beer or a Ice tea.You know how much these guys are approched dailey(pro players), and you know most are just regular guys like you an me. So haveing a private beer with his brother no less, just makes him Human. I am a huge Ripken Fan, of what he meant to the Game, and all he has done after his retirement as well. I just feel that that Rip of him was a little rough thats all. You know I respect your opinion, so I felt i should give mine,. Good Luck to the Paw Sox as always. CP


text:
In the last article, I introduced the Unix
find command. This week, I'd like to continue by demonstrating some more of the switches that are available with this handy command.
Let's continue where we left off, with this example:
find . -atime +7 -o -size +`expr 10 \* 1024 \* 2` -print
As a recap, this command was looking for any files in the current
directory and its subdirectories (represented by
.) that have not been accessed for more than 7 days (
-atime +7) or (
-o) that were greater than a certain size (
-size +). I used the
expr command to calculate the size for me. Since I was aiming for 10MB and
find thinks in terms of 512 bytes, I needed to calculate 10 times 1024 times 2 (as 2 times 512 is 1024).
Notice that I used the
` or "backquote" (the key on the far left of your PC keyboard). In Unix, whenever you want the output of one command passed to another command, put the command that will give the output between backquotes; this is known as command substitution. By putting the math that I wanted calculated between backquotes, the resulting calculation was passed to the
-size switch and used by the
find command.
The last thing I want you to notice is that I also had to quote the two
* in the command using the
\ character. When calculating math,
* represents multiply; however, to the shell it represents a wildcard. By placing a
\ before the
*, the shell won't interpret it as a wildcard, so
expr receives the
* and will know that I want it to perform a multiplication.
Let's try some more examples. Let's say I have a large directory structure and I wish to search for a certain pattern and remove all of the files that match this pattern. There are several ways to do this with the
find command, so let's compare some of these methods.
In my home directory, I have a directory called tmp that contains a subdirectory named tst. This tst directory has a lot of files and subdirectories, and some of these files end with a .old extension. Let's start by seeing just how many files live in my tst directory:
cd ~/tmp/tst
find . -print | wc -l
Notice that when the
find command ran, it
wc) command using the switch that counted the lines (
-l). This told me that I have 269 files (including directories, since to Unix, directories are really files) in my tst directory.
Let's see how many of these files have a .old extension:
find . -name "*.old" -print | wc -l
Now, how can I go about removing these *.old files? One way is to use the
-exec switch and have it call the
rm command like so:
find . -name "*.old" -exec rm {} \;
Once that is finished, I can repeat this command to see if there are any remaining *.old files:
find . -name "*.old" -print | wc -l
This command works, but it may not always be the best way to remove a large number of files. Whenever you use the
-exec switch, a separate process is created for every file that
find finds. This may not be an issue if you are only finding a small amount of files on your home computer. It may be an issue if you are finding hundreds or thousands of files on a production system. Regardless, this method does consume more resources and is slower than other methods.
Let's look at a second way to delete these files, this time using
find . -name "*.old" -print | xargs rm
You'll note that I didn't have to include the
\; string at the end of this command, as that string is used to terminate commands that are passed to
exec. By using
xargs in this command, I will still remove all of the files that end in .old, but instead of creating a separate process for each file that is found, only one process is started through
xargs. As
find finds each file, it creates a list with each file on its own line. This list
is passed to
xargs, which takes all of the lines of the file and places them onto one line with a space to separate each file; it then passes this argument list of files to the
rm command.
Related Reading
Learning the Unix Operating System
There is actually a third way to remove these files, using the
-delete switch with
find . -name "*.old" -delete
This command has the easiest syntax to use and is actually the most
efficient way of removing files. The
-delete switch doesn't even need to open a separate process: all of the files are removed by the
find process. Also, this command should always work, whereas the
xargs command may fail if
find finds more files that can be passed to a command as an argument list. If you are searching a deep directory structure or have very long filenames, you may reach this limit. If you are curious as to the actual limit, there is a
sysctl value that has been set for you:
sysctl -a | grep kern.argmax
kern.argmax: 65536
65536 represents the maximum number of bytes (or characters) in an argument list.
Before moving on to some other switches, I should mention that you may
want to verify which files
find will find before removing them. In my examples, I was just removing old files in one of my test directories. If you are concerned that
find may find some files you don't want deleted, run your command like this first:
find . -name "*.old" -print
This will give you a list of all the matching files. If the list looks
good, use the
-delete switch to remove the files as in the example mentioned above.
Or, you can do the above in just one
find command by using
-ok like so:
find . -name "*.old" -ok rm {} \;
-ok will prompt for verification before executing the command that follows it. You'll note that I do have to use the
rm command; I can't use the
-delete switch. And, as with using
-exec, I have to use the
{} \; syntax in order for
-ok to work.
Let's take a look at some more switches. The
-ls switch will give the inode number, number of blocks, permissions, number of hard links, owner, group, size in bytes, last modification time, and name for each file that is found. For example, the following command will show me the first ten directories in my home directory; you'll note that I specified that I only wanted to see directories by using the
-type d switch.
find . -type d -ls | head
976142 8 drwxr-xr-x 39 genisis wheel 4096 Mar 3 17:52 .
1413099 2 drwxr-xr-x 2 genisis wheel 512 Mar 3 13:38 ./pdfs
373539 2 drwxr-xr-x 2 genisis wheel 512 Feb 6 12:38 ./tst
1087249 2 drwxr-xr-x 2 genisis wheel 512 Oct 4 07:29 ./perlscripts
650764 2 drwx------ 2 genisis wheel 512 Mar 3 17:52 ./mail
706616 2 drwx------ 4 genisis wheel 512 Sep 22 14:29 ./.kde
706635 2 drwx------ 11 genisis wheel 512 Nov 7 12:36 ./.kde/share
706636 4 drwx------ 3 genisis wheel 1536 Mar 2 18:38 ./.kde/share/config
785986 2 drwx------ 2 genisis wheel 512 Sep 22 14:36 ./.kde/share/config/colors
706682 2 drwx------ 3 genisis wheel 512 Mar 2 18:36 ./.kde/share/fonts
Let's get a little fancier with the
-ls switch. Earlier in the article, we piped some output to
wc -l to see how many files contained a certain expression. Let's be a bit more particular and see how many subdirectories are in my home directory:
find . -type d -print | wc -l
Actually, there are only 255 subdirectories, as one of them is my current directory. Now, let's get a better idea of how this directory structure is laid out using this command:
find . -type d -ls | awk '{print $4 - 2, $NF}' | sort -rn | head
37 .
26 ./.kde/share/apps/kio_http/cache
18 ./.kde/share/apps
15 ./.gimp-1.2
9 ./tmp/tst
9 ./.kde/share
8 ./tmp/tst/h
8 ./tmp/tst/g
8 ./tmp/tst/f
8 ./tmp/tst/e
Wow, that's pretty cool. It looks like there are 37 subdirectories in
my home directory (
.), 26 subdirectories in the .kde/share/apps/kio_http/cache subdirectory, etc. Now, let's see how this
find command worked. I started by using the
-ls switch, which gave a fair bit of information
regarding each directory as it was found. This information was piped to the
awk utility, which is used to extract the data from certain fields. You'll note that in the original
-ls output, the results were in certain fields: inode number, number of blocks, permissions, number of links, etc. I told
awk to take the information from column 4 (which contains the number of links and is
$4 to
awk) and subtract 2 from that value (as I'm not interested in the directories
. or
..). I also wanted to know the name of each directory; since this was the very last column, I used
$NF to represent that field. By placing these instructions within the curly braces
{}, I told
awk to do this to every file that it received from the
find command. I then piped the results from
awk to the
sort command;
by using
-rn, I told
sort to sort the numerical output from largest to smallest so I could see which directories had the most subdirectories. I didn't want to bore you with all the output, so I also piped the final results to the
head command so it would only display the first ten.
find switch is the
-perm switch. An example is to search for any files that have their permissions set to 777, that is, set to read, write, and execute for everyone. This can be easily done with this command:
find . -perm 777 -print
The above command searches for files with the exact permissions of 777. If you are concerned with only a certain bit, rather than all the permission bits, you can do something like this:
find . -perm -4000 -print
This example will only yield files that have the SUID bit set. (Read more about permissions in a previous article.) Another handy
find command is
this one:
find . -perm -0002 -print
It will find all files that are writable by others. Note that you can
-02, or
-2 and receive the same result as leading
0s are assumed.
The last two switches I want to cover in today's article are useful when backing up or replicating directory structures. Let's start with
-depth. Let's say I want to back up my entire home directory to a mounted directory named /backup. I can do this:
find . -depth -print | cpio -dump /backup
This command may also work without the
-depth switch, but not always. By default,
find lists the files it finds by starting at the point mentioned in the
find command, in my case
. or my home directory. That is, it lists first the directory, and then the contents of that directory. If it encounters a directory that has read-only permissions,
find will still provide a list of the contents of that directory to the
cpio command, but the
cpio command won't have permission to replicate the files in that subdirectory. It is interesting to note that
cpio will
still be able to create the directory, but as it does, it will set the permissions to read only, so it won't be able to create any
files below that directory.
However, if you remember to use
find will instead start its search at the lowest level, meaning it will list the contents of directories before it lists the directories themselves. This means that the files will already have been replicated by
cpio before it sets the read-only permissions on the parent directory.
What if I don't want to replicate my entire home directory, just portions of it? This is where the
-prune switch comes into play. Let's say I want to back up everything in my home directory except my tmp directory. I could do this:
find . -type d -name tmp -prune -o -print | cpio -dump /backup
You'll note that the syntax seems a little bit backwards. I used the
-name switch to find any directories (
-type d) named tmp and pass that list to
-prune. I then used the logical or
-o so that everything else will be printed and piped to
I hope the examples provided in the last two articles have helped you
to become more comfortable with the
find command and its syntax. In the next article, I'd like to continue with the
cpio command and compare its usage to the
tar command.
Dru Lavigne is a network and systems administrator, IT instructor, author and international speaker. She has over a decade of experience administering and teaching Netware, Microsoft, Cisco, Checkpoint, SCO, Solaris, Linux, and BSD systems. A prolific author, she pens the popular FreeBSD Basics column for O'Reilly and is author of BSD Hacks and The Best of FreeBSD Basics.
Read more FreeBSD Basics columns.
Return to the BSD DevCenter.
Copyright © 2009 O'Reilly Media, Inc.