| 1 | /** | |
| 2 | * Copyright 2012 Mozilla Foundation | |
| 3 | * | |
| 4 | * Licensed to the Apache Software Foundation (ASF) under one | |
| 5 | * or more contributor license agreements. See the NOTICE file | |
| 6 | * distributed with this work for additional information | |
| 7 | * regarding copyright ownership. The ASF licenses this file | |
| 8 | * to you under the Apache License, Version 2.0 (the | |
| 9 | * "License"); you may not use this file except in compliance | |
| 10 | * with the License. You may obtain a copy of the License at | |
| 11 | * | |
| 12 | * http://www.apache.org/licenses/LICENSE-2.0 | |
| 13 | * | |
| 14 | * Unless required by applicable law or agreed to in writing, software | |
| 15 | * distributed under the License is distributed on an "AS IS" BASIS, | |
| 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 17 | * See the License for the specific language governing permissions and | |
| 18 | * limitations under the License. | |
| 19 | */ | |
| 20 | package com.mozilla.pig.filter.tuple; | |
| 21 | ||
| 22 | import java.io.IOException; | |
| 23 | ||
| 24 | import org.apache.pig.FilterFunc; | |
| 25 | import org.apache.pig.data.Tuple; | |
| 26 | ||
| 27 | public class Contains extends FilterFunc { | |
| 28 | | |
| 29 | @Override | |
| 30 | public Boolean exec(Tuple input) throws IOException { | |
| 31 |
3
1. exec : changed conditional boundary → KILLED 2. exec : negated conditional → KILLED 3. exec : negated conditional → KILLED |
if (input == null || input.size() < 2) { |
| 32 |
1
1. exec : mutated return of Object value for com/mozilla/pig/filter/tuple/Contains::exec to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return false; |
| 33 | } | |
| 34 | ||
| 35 | boolean found = false; | |
| 36 | Tuple t = (Tuple)input.get(0); | |
| 37 | Object o = input.get(1); | |
| 38 |
3
1. exec : changed conditional boundary → SURVIVED 2. exec : Changed increment from 1 to -1 → KILLED 3. exec : negated conditional → KILLED |
for (int i=0; i < t.size(); i++) { |
| 39 | Object to = t.get(i); | |
| 40 |
2
1. exec : negated conditional → SURVIVED 2. exec : negated conditional → KILLED |
if (to != null && to.equals(o)) { |
| 41 | found = true; | |
| 42 | break; | |
| 43 | } | |
| 44 | } | |
| 45 | | |
| 46 |
1
1. exec : mutated return of Object value for com/mozilla/pig/filter/tuple/Contains::exec to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return found; |
| 47 | } | |
| 48 | } | |
Mutations | ||
| 31 |
1.1 2.2 3.3 |
|
| 32 |
1.1 |
|
| 38 |
1.1 2.2 3.3 |
|
| 40 |
1.1 2.2 |
|
| 46 |
1.1 |


Text Shadow is used to add shadows around text. It has three inputs: 1) Horizontal width 2) Vertical width 3) Shadow color


Mandela Hotels and Suites
Located in the heart of Kano, Mandela Hotel and Suites with nice swimming pool, an on site restaurant, outdoor lounge, gym, rooftop terrace
Mandela Hotel and Suites has one of the most exquisite menus in the city, the on site restaurant treats guests to really fine dining. Guests can also unwind at the bar and enjoy an exotic drink.
All rooms are centrally air conditioned and equipped with the latest state of the art technology, High speed complimentary Wi-Fi access, flat screen TV, mini bar, tea & coffee making facilities.
Mandela Hotel and Suites has family friendly rooms that are well-spaced and are centrally air conditioned. High speed complimentary Wi-Fi access, flat screen TV, mini bar, tea & coffee making facilities.


Bot Bookmarklet
This is an experimental automatic reply bookmarklet. Please do not use.... only for my personal use


〈
Back
Congrats! And welcome!
Delivery
Ready?
Congrats! And welcome!
| From: | Thomas Tucker |
| To: | Morgan Yu |
| Cc: | Alex Yu |
Hello Morgan!
So glad to hear you'll be coming aboard soon. Your first official work day is Monday, March 15th. But first we have a series of training exercises we run with all new employees. Just some stuff to clear you for life in orbit. Exciting times ahead! Have a good flight and I will see you soon.
Thomas Tucker
Human Resources
Talos I Research Factory
So glad to hear you'll be coming aboard soon. Your first official work day is Monday, March 15th. But first we have a series of training exercises we run with all new employees. Just some stuff to clear you for life in orbit. Exciting times ahead! Have a good flight and I will see you soon.
Thomas Tucker
Human Resources
Talos I Research Factory


U.S. ELECTION MAP
STATE NAME
Abbreviation
Hover cursor
over the map
to view each
state's results.
WINNER:
------------
NAME1
RESULTS1
NAME2
RESULTS2
WINNER
Name


Module ratchet.thread
This module provides as set of functions for creating and controlling threads from within the context of a running ratchet. These functions do not need to be passed a ratchet object, they will deduce it from the current thread.
Functions
| attach (func, ...) | Queues a new thread for execution. |
| attach_background (func, ...) | Queues a new thread for execution. |
| block_on (reads, writes, timeout) | Blocks on multiple items, with a single timeout. |
| kill (thread) | Kills a given thread. |
| kill_all (threads) | Kills all threads in the table sequence. |
| pause () | Pauses the current thread indefinitely. |
| self () | Returns the Lua thread object that is currently running, or nil for the main thread. |
| sigwait (signal) | Blocks the current thread until the current process receives the given signal. |
| space (premade) | Returns a table that is specific to the currently-running thread that can be used as scratch-space for thread-scope data. |
| timer (seconds) | Pauses the current thread for the given period. |
| unpause (thread, ...) | Unpauses the given thread. |
| wait_all (threads) | Pauses the current thread until all threads listed in the given table have completed their execution either normally or by error. |
Functions
- attach (func, ...)
-
Queues a new thread for execution. The thread calls func and gives it any extra arguments as its parameters. The thread is not started by this method, instead it is started on next iteration of the loop. All threads attached with this method must be completed before loop() will finish.
Parameters
- func: the function to run in the thread.
- ...: extra parameters to function.
Return value:
a Lua thread object. - attach_background (func, ...)
-
Queues a new thread for execution. The thread calls func and gives it any extra arguments as its parameters. The thread is not started by this method, instead it is started on next iteration of the loop. Threads attached with this method as opposed to attach() will be destroyed when loop() finishes, whether completed or not.
Parameters
- func: the function to run in the thread.
- ...: extra parameters to function.
Return value:
a Lua thread object. - block_on (reads, writes, timeout)
-
Blocks on multiple items, with a single timeout. This function will block until the first event on any one of the items. Items given in the read and write argument tables must have a get_fd() method that returns its file descriptor.
Parameters
- reads: Table of items to wait for read events on.
- writes: Table of items to wait for write events on.
- timeout: Returns nil if this many seconds elapse with no events.
Return value:
The item from the read or write table that triggered an event. - kill (thread)
-
Kills a given thread. If the thread is yielding on any events, those events are cleaned up and the thread is dropped.
Parameters
- thread: The thread to kill.
- kill_all (threads)
-
Kills all threads in the table sequence. Essentially this function is the same as kill() but run in a loop over a table.
Parameters
- threads: table array of threads to kill.
- pause ()
-
Pauses the current thread indefinitely. The thread must be resumed by a call to unpause() from another thread.
Return value:
any extra arguments passed to unpause() from other thread. - self ()
-
Returns the Lua thread object that is currently running, or nil for the main thread.
Return value:
thread object or nil. - sigwait (signal)
-
Blocks the current thread until the current process receives the given signal.
Parameters
- signal: A signal by number or name (see signal(7)).
- space (premade)
-
Returns a table that is specific to the currently-running thread that can be used as scratch-space for thread-scope data. This table is not created until the first time this method is called for in thread.
Parameters
- premade: optionally pass in a pre-existing object to be stored as the thread's scratch space instead of the default a new table.
Return value:
a table specific to the current thread. - timer (seconds)
-
Pauses the current thread for the given period.
Parameters
- seconds: resume thread after this many seconds elapse.
- unpause (thread, ...)
-
Unpauses the given thread. The paused thread will resume on next iteration of the main loop. Extra parameters to this function will be given to the paused thread as return values from pause().
Parameters
- thread: the thread to unpause.
- ...: extra parameters will be returned by pause().
- wait_all (threads)
-
Pauses the current thread until all threads listed in the given table have completed their execution either normally or by error.
Parameters
- threads: table containing threads to wait for.


Responsly.js
A set of responsive widgets
What
Dead simple responsive widgets, written using CSS3 transformations and available as a jQuery Plugin. Currently a sideshow and accordion are available, more to come!
Why
Responsive designs are cool! Not only do they allow you to reach mobile and tablet users with minimal effort, they also make your context scale up for desktop users with larger screens.
Unfortunately it means in general you can't use fixed sizes throughout your CSS. While this may not be a problem for new sites, a lot of existing widgets are hard-coded to various sizes.
I had this problem when building my blog, and at our startup Quilly, so I developed a slideshow and accordion using various techniques to ensure they scale with their content and well as their containing div. This comes down to ensuring that width or height are never hard coded in the CSS. Also extensive use of CSS3, particularly the transitions ensures rich UI that works great in modern browsers, with graceful degradation for IE.
We though the work could be useful for others, so it was extracted into a library for reuse.
Download
Features
- Works from large monitors to laptops, to tablets to mobiles.
- Pure CSS styling
- CSS3 based transitions (hardware accelerated where possible).
- Animations work on all modern browsers including mobile, (IE degrades gracefully by losing transitions).
- Minimal dependence on jQuery for convenience ( can substitute Zepto, or pure JavaScript).
- Simple lightweight design, adds little to your download size
- Compartmentalized, so use only what you want
- Best used with a responsive CSS framework like 1140px or 320plus
- Can be heavily customized by editing CSS
HOW
- Download / Clone files,
- Add references to CSS / JS
- Add boilerplate placeholder HTML
- Use jQuery to attach widgets.
- See demo.html for examples.
Library
Currently there are two widgets
Slidy
A responsive CSS based animating sideshow with many options
- Show / hide buttons
- Use keyboard navigation
- Auto start slideshow, set intervals
- Can use throttling with jQuery throttle plugin
Demo
Click through the demo to see how to set up slidy
Hint you can use the left/right keys
Accordy
A responsive CSS based animating accordion.
- Use keyboard navigation
- Can use throttling with jQuery throttle plugin
Demo
Click through the demo to see how to set up accordy
Hint you can use the j/k keys
I am section the Section 1 title
Step 1
Add references, make sure jQuery is available
<link rel="stylesheet" href="accordy.css">

Step 2
Add boilerplate HTML to wherever your want the accordion. This is usually some responsive container

<hgroup>

Section 1 title

</hgroup>

 Put your content here

<hgroup>

Section 2 title

</hgroup>

 This is more context and can contain anything

Step 3
Wire up with options
$('.accordion').accordy({
// Options go here, see slidy.js
// These the defaults so don't only need to be specified if they are changed
throttle: false, // Set to true, and include jQuery throttle plugin (http://benalman.com/projects/jquery-throttle-debounce-plugin/)
throttleTime: 500, // number of ms to wait for throttling
useKeybord: true, // use keys defined below to expand / collapse sections
keyPressUp: 75, //K
keyPressDown: 74 //J
});
Contribute
We actively encourage additional widgets or improvements or features. As usual fork, and submit pull requests
TODO
- Add mobile touch events
- Find a workaround for webkit/mozilla bug, that stops transition with height is set to 100%
Contact
Dharmesh MalamLicense
Copyright © 2011 by D MALAM
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Changing Codling Moth Pest Pressures: What's the story?
-
We expect to see a higher codling moth risk-more number of generations and stronger generations-as temperatures get warmer.
Historically Washington State has experienced two full generation cycles of the codling moth and a partial third generation in warmer areas. By the 2040s, all of Washington is projected to experience a full third generation each year. Some areas even face a significant fourth generation of codling moth by the 2040s, and this risk becomes more widespread further out into the future. Check out the "Pest risk" tab.
Management implication
Increased pest risk implies the need for additional sprays, a larger range of chemicals, and an increased cost of pest control. It also implies increased pesticide resistance risks.
-
We expect to see all codling moth development stages starting earlier.
The first flight of the overwintering generation and all subsequent phenological events are projected to begin earlier in the year. The projected advancement is about 8 days on average every 20 years. The shift in the timing of these events also has implications for the relative fraction of larvae that get diapause-induced versus progressing to emerge as adult moths. Check out the "Codling Moth Flight" and "Codling Moth Egg Hatch" tabs.
Management implication
Timing of sprays will need to be shifted accordingly. Traps need to be set earlier than typically done in the region, or the ideal window for control measures might be missed.
-
We expect to see a greater proportion of the first generation overwintering and causing damage the following year. In contrast, a greater proportion of the second generation causes damage in the current year.
The relative fraction of larvae getting diapause-induced (and therefore overwintering until next season) versus pupating (and progressing to the next generation that same season) is a function of the day length (see codling moth life cycle tab for more details). When days are shorter, a larger fraction of larvae get diapause-induced. Conversely, when days are longer, a smaller fraction of larvae get diapause-induced. With earlier development, the first generation eggs hatch into larvae earlier in the year when the days are still short, so a larger fraction of them get diapause-induced and overwinter, thereby requiring control the following year. On the other hand, earlier development means the second generation eggs hatching into larvae when the days are longer and the relative fraction of larvae escaping diapause and causing further issues in the current year is larger. Check out the "Diapause" tab.
Management implication
More control than currently typical might be needed to address the second generation of codling moth.
-
We expect to see a shorter window of time for effective control, but control mechanisms such as pesticides and mating disruption will work better under warmer climates.
Warming leads to accelerated degree day accumulation, so that more of the pest population pass through susceptible stages for pest control for a given pesticide residual time, making pesticide treatments more effective. However, the window of opportunity for control is smaller, and even a day's delay can allow significant number of larvae to enter the fruit and cause damage. Similarly, mating delay is a function of degree day accumulation. Faster accumulation implies that a within a given delay, there will be much larger decrease in the population of fertilized eggs.
Management implication
The window of opportunity for control is shorter, and it is critical to capture it right. However, if captured correctly, there might be benefits in terms of more effective control.
-
We expect bloom timing in apple trees to shift to earlier in the year.
Warming leads to accelerated degree day accumulation in apple trees, and shifts in bloom timing to earlier in the year.
Management implication
Stay tuned for details on this!


Senioritis
Senioritis
Make the most of your last year!
On Campus
Night life
Discover Lansing
Ultimate Bucketlist


The QuantConnect LEAN engine was designed to support international trading across multiple time zones and markets. Consequently, we need to define a reference time zone for the algorithm to set the $[Time, P:QuantConnect.Algorithm.QCAlgorithm.Time]. By default, New York time is used.
You can set a different time zone for your convenience using the $[SetTimeZone(), M:QuantConnect.Algorithm.QCAlgorithm.SetTimeZone] method. This should be called in your Initialize() function. This method accepts either a string following the IANA Time Zone database convention or NodaTime.DateTimeZone objects. The $[TimeZones, T:QuantConnect.TimeZones] class provides access to common time zones.
SetTimeZone("Europe/London"); SetTimeZone(NodaTime.DateTimeZone.Utc); SetTimeZone(TimeZones.Chicago);
this.SetTimeZone("Europe/London") this.SetTimeZone(NodaTime.DateTimeZone.Utc) this.SetTimeZone(TimeZones.Chicago)
self.SetTimeZone("Europe/London") self.SetTimeZone(NodaTime.DateTimeZone.Utc) self.SetTimeZone(TimeZones.Chicago)
The algorithm $[TimeZone, P:QuantConnect.Algorithm.QCAlgorithm.TimeZone] may be different from the data time zone (e.g.: Forex trading). In this case it might appear like there is a lag between the algorithm time and the first bar of a history request, however, this is just the difference in time zone. All the data is internally synchronized in UTC time and arrives in the same "time slice" or $[Slice,T:QuantConnect.Data.Slice] object. A slice is a sliver of time with all the data available for this moment.
To keep trades easy to compare between asset classes, we mark all orders in $[UtcTime, P:QuantConnect.Algorithm.QCAlgorithm.UtcTime].


About
Projects
Contact
Hello. My name is Miles.
I am a web developer.
Photo by
Christian Burri
on
Unsplash
Check out my projects
Thomas Sowell Tribute
Survey Form
Responsive Login Page
Counter React App
Contact Me
Your Name
Your Email
Message
Submit


HEAD
There are other libraries out there, but none that approach the level clarity and conciseness that I wanted. Starrr is less than 75 lines of code -- you can understand the entirety of its source code in about a minute.
jQuery.
I'm using Bootstrap + Font Awesome to render the stars, but you're more than welcome to use something else.


I’ve been looking into better ways to host my repositories for clients, manage task lists, documents, etc. I like github. It’s a good interface. It works. I could use a few more features in the Issues module, but it’s nice that they keep it simple. I’ve tried BitBucket and Assembla, and looked at several others. I’ve managed my own servers. In every test, github wins.
Except for price. github is often the most expensive. Especially if you need what I need, which is several small repositories, each with a small number of collaborators (often just one or two). But just a few of those can push you into the Medium plan, or even into the Bronze plan.So I was complaining about this to my wife. I say “Wife, github is just too expensive. Why do they have to be like that? I really like using them.”
“Oh,” says Wife. “What are we talking about?”
“Well,” I say, “it could easily be $25/month.”
“$300/year?”
“Yeah.”
“And it works really well? And makes business go more smoothly?”
“Yeah…?”
“And you need some service for this, right?”
“One way or another.”
“Get over yourself. Pay them.”
And I started to think about it. If I’d billed the time I’d already spent researching and designing scripts to work around issues, I’d probably have covered a year or two of service.
Some services have gotten so cheap, you get used to what you think they “should” cost. I remember haggling in markets in Shanghai and friends saying “Rob, you’re buying a scarf for $2 and you’re haggling over the last 50 cents.” My attitude was, yeah, but in Shanghai that scarf should be 8 RMB and she’s asking 14. At home I’d think nothing of paying $10, but in Shanghai I feel ripped off paying more than a buck. The whole Internet is a Shanghai market sometimes.
Quality is worth paying for. As a developer, I expect to be paid for the quality code I write. Time to pay others for theirs.


Source of moose
This project consists of 39 directories, containing a total of 273 files.
| Name | Size | Last Modified |
|---|---|---|
| CleanupTasks.php | 2.1 KB | 2017-04-20T20:24:04+00:00 |
| DiningHallTasks.php | 2.2 KB | 2017-04-23T13:14:25+00:00 |
| EventInterface.php | 1.9 KB | 2017-04-01T18:07:47+00:00 |
| MailingTasks.php | 2.1 KB | 2017-04-20T19:29:45+00:00 |
| PhpEventRunner.php | 4.0 KB | 2017-04-11T18:45:52+00:00 |
| UpdateTasks.php | 2.2 KB | 2017-05-06T13:22:47+00:00 |
| event | ||
| Total: 1 directories,6 files |


Current filters will be applied to the exported data.
Once json has loaded, save page as a .json file.
Large data sets may take several minutes to export.
Preparing Data..


These tools provide a dashaboard for the Nanomaterial Registry Database and include applications demonstrating curation and addition of records to the database.
Please select one of the following nanomaterial tools by clicking the corresponding tag below. Each tool will execute in a new browser window. The following prototype tools have been developed by the Advanced Biomedical Computing Center at FNLCR.


- Openness
- Openness, or Open to Experience, is the extent to which a person is open to experiencing a variety of activities.
- Neuroticism
- Neuroticism, also referred to as Emotional Range or Natural Reactions, is the extent to which a person's emotions are sensitive to the individual's environment.
- Conscientiousness
- Conscientiousness ("Gewissenhaftigkeit") is a person's tendency to act in an organized or thoughtful way.
- Agreeableness
- Agreeableness ("Verträglichkeit") is a person's tendency to be compassionate and cooperative toward others.
- Extraversion
- Extraversion is a person's tendency to seek stimulation in the company of others.
- Altruism
- Find that helping others is genuinely rewarding, that doing things for others is a form of self-fulfillment rather than self-sacrifice. ("Nächstenliebe")
- Assertiveness
- Like to take charge and direct the activities of others. They tend to be leaders in groups. ("Durchsetzungskraft")
- Depression
- Tend to react more readily to life's ups and downs.
- Cheerfulness
- Experience a range of positive feelings, including happiness, enthusiasm, optimism, and joy.("Fröhlichkeit")
- Imagination
- View the real world as often too plain and ordinary. They use fantasy not as an escape but as a way of creating for themselves a richer and more interesting inner-world. ("Fantasie")
- Intellect
- Are intellectually curious and tend to think in symbols and abstractions.
- Adventurousness
- Are eager to try new activities and experience different things. They find familiarity and routine boring.("Abenteuerlust")
- Achievement striving
- Try hard to achieve excellence. Their drive to be recognized as successful keeps them on track as they work hard to accomplish their goals. ("Erfolgsstreben")
- Self-discipline
- Have the self-discipline, or "will-power," to persist at difficult or unpleasant tasks until they are completed.
- Liberalism
- Have a readiness to challenge authority, convention, and traditional values.


Test Redis connection: test
Test Zookeeper connection: test
Test MongoDb connection: test
Test influx connection: test


The Big Yin was blacklisted from Edinburgh’s Traverse Theatre after putting his privates in the alcoholic drink.
But bosses generously decided to lift the ban after inviting him to an exhibition as the comedian promised to be on his best behaviour.
When asked if he considered carrying out a repeat offence he assured it was a one off, and that he had given up drinking but not 'his willy'.
The hilarious story was unveiled in his new book Tall Tales and Wee Stories.

He admitted it had started to 'take control' and twist his personalty into a 'bogey man' .
In the interview with the Scotsman about the his genital and gin slip he said: "That’s true. I was banned.
"Then they had an exhibition of photographs and invited me in to see it and I said ‘but I’m banned’, so they lifted the ban for the night.
"Then they lifted it completely. So I’ve been back.
"I don’t stick my willy in a gin and tonic any more.
“I gave up drinking. I still have the willy.”
The Scots star went on to talk about Pam the New Zealand-born psychologist, writer and performer who shot to fame in BBC’s Not the Nine O’Clock News 1979 comedy sketch show, “saved him.”
He said:“She withheld sexual favours till I stopped. She nagged me.
“I was never big on drugs, it always lasted too long.
"I always wanted it to go away once I had done it, but I was good at drinking.
"I loved the whole pub thing, getting pissed with the boys, telling stories into the night... and it was getting control, changing my personality.
"I became this other man.
"Pamela would say ‘bogey man has arrived’.
"And when it’s changing your personality you have to have a close look at it and do something about it.
"There’s nothing like the truth to put you right.”
The comic legend also spoke about how 'weird' it was that he had to go on TV and announce ‘Ah’m no deid yet’ after getting condolence messages from across the globe.
It comes after he retired last year from stand-up causing widespread panic over his health.
Billy told the Scotsman: "I didn’t really die.
“What happened was I did something on film and was talking about bits of my body that were failing to work any more and changing or weakening, and people thought I was dying.
"I was getting messages of condolence from all over the world. I had to go on telly and say ‘I’m no dead’, ‘I’m no dyin’, which is weird.”
Despite the retirement announcement, there was new speculation he might make a return to live performing was after a film of his final tour gig in 2015 burst into cinemas.
But he was quick to shoot down the prospect.
The celeb said: “No, I won’t.”
“That’s over. I’ve no intention of doing stand-up again.”
Touching on politics the comedian who had always been vague about his thoughts on an independent Scotland said 'Scotland’s fed up voting for people and getting somebody else.'
Connolly came out firmly against Brexit in his previous book Made in Scotland and writing: "The most important thing for Scotland is to keep our contact with Europe.
"Scots voted to stay in Europe, and if the only way for us to do that is to become independent from England, that may just be the way to go.”
He said in an interview with the Scotsman:“I had been really vague.
“They kept asking about it, and wouldn’t go away, and it’s a terribly difficult subject… because I don’t live in Scotland, and don’t have a house there any more, I don’t get a vote.
"I don’t want to be one of those guys who lives in a sunny place and is patriotic then.
"So I just said whatever the people of Scotland want is OK by me.”
Then when probed 'If Scotland wants it then you want it as well?' he added:“That’s right.
"Scotland’s fed up voting for people and getting somebody else.
"They’re fed up voting for one party and being lumbered with another.
"You end up with Boris Johnson.
“And if people want to stay in Europe that sounds like a sensible idea to me.
"I don’t understand Brexit, haven’t a clue what it means, what will happen if you come out of Europe
"I would try and read about it and lose the will to live.”


If you are already registered and have forgotten credentials, go to Login page and select 'Forgot Password'.
If your email doesn't exist anymore or you have forgotten, please register with a new email.
Probably you created your account but never confirmed it from email.Please check your email(including spam).If link has expired or you deleted it, click 'Activate Account' below.


home / programming / python / pandas
Pandas in Action, © 2021
Contents
- Part 1 Core pandas
- 1 Introducing pandas
- 2 The Series object
- 3 Series methods
- 4 The DataFrame object
- 5 Filtering a DataFrame
- Part 2 Applied pandas
- 6 Working with text data
Part 1 Core pandas
The two primary data structures are:
- Series (one-dimensional). Can be thought of as a single column of data with an index made up of any type of object.
- DataFrame (two-dimensional)
This part covers the fundamentals of pandas.
1 Introducing pandas
pandas is a library for data analysis. A library is a collection of code for solving problems in a specific field.
Example of importing and sorting a CSV data set:
populations = pd.read_csv("pop.csv") populations.sort_values(by="Population", ascending=False)
When loading data without setting an index, a numeric index starting from 0 is automatically generated.
pd.read_csv("movies.csv", index_col="Title")
df.head(n)
and df.tail(n)
extracts n
rows from the start or end of df
. If n
is omitted, 5 rows are returned.
len(df)
returns the number of rows.df.shape
returns a tuple of (rows, columns).df.size
returns the number of cells.df.dtypes
returns the data types of each column.
To extract a row by its numeric order, use df.iloc[499]
. (The index starts at 0, so this expression returns the 500th row.
To extract a row by its index label (following the example above, the index is "Title"), use df.loc["Sister Act"]
.
Note: Index labels may be duplicated (in the Movies data set, "101 Dalmatians" appears twice, being the original and the remake).
If possible, avoid duplicates in the index.
Sorting a DataFrame
movies.sort_values(by="Year", ascending=False).head() movies.sort_values(by=["Year", "Studio"], ascending=[False, True]).head()
To see the movies in alphabetical order, we can sort the index:
movies.sort_index().head()
Example: Find out which studio had the greatest number of highest-grossing films. To solve this problem, we need to count the number of times each studio appears:
movies["Studio"] # returns the Title and Studio movies["Studio"].value_counts().head(10) # top 10 studios
1.3.4 Filtering a column by one or more criteria
movies[movies["Studio"] == "Universal"] # or save the condition in a variable released_by_universal = movies["Studio"] == "Universal" movies[released_by_universal].head() # define another condition and check movies that satisfy both released_in_2015 = movies["Year"] == 2015 movies[released_by_universal & released_in_2015] # use an 'or' conditional movies[released_by_universal | released_in_2015]
Find movies released before 1965:
movies[movies["Year"] < 1965]
Specify a range (both endpoints are included):
movies[movies["Year"].between(1961, 1975)]
Check if the title contains a string:
has_dark_in_title = movies.index.str.lower().str.contains("dark") movies[has_dark_in_title]
1.3.5 Grouping data
Which studio had the highest total grosses across all films? A problem to be addressed is to convert the string values of Gross into a number (remove the dollar sign and commas). Note: the book passes regex=False
, but it is already False by default.
movies["Gross"] = (movies["Gross"] .str.replace("$", "") .str.replace(",", "") .astype(float) ) # parentheses are needed to make the expression multi-line
The average gross is movies["Gross"].mean()
The process of bucketing the movies by studio is grouping.
studios = movies.groupby("Studio")
The number of movies per studio is:
studios["Gross"].count().sort_values(ascending=False).head()
Add the values of the Gross column and sort them:
studios["Gross"].sum().sort_values(ascending=False).head()
2 The Series object
A Series
is a one-dimensional labeled array for homogeneous data (all values are of the same data type).
Each value in a Series has a label (an identifier we can use to locate the value).
In addition, each value is assigned an order (a position in line). The order starts from 0.
To access a value, either the label or its position may be used. A Series is like a combination of a Python list and dictionary. (A label acts like a dict key, while its order is an integer value that starts from 0).
2.1.2 Populating the Series with values
The Series constructor accepts an iterable object whose values will populate the Series.
ice_cream_flavors = [ "Chocolate", "Strawberry", "Rum Raisin", ] days_of_week = ("Mon", "Wed", "Fri", "Sat")
The term index describes both the collection of identifiers and an individual identifier.
An index label assigned to a Series value may be any immutable data type (such as strings, tuples, and datetimes).
The first two parameters of Series()
is data and index. The following are equivalent:
pd.Series(ice_cream_flavors, days_of_week) pd.Series(data=ice_cream_flavors, index=days_of_week)
Indices may contain duplicates; however, it's best to ensure they are unique for better performance.
The dtype for strings is object
.
Tuples may be used as values. The dtype will be object
.
2.1.4 Creating a Series with missing values
When pandas sees a missing value during an import, the value np.nan
is used. None
is converted to np.nan
.
Two nan
values are not equal to each other. Use np.isnan(x)
to check for nan
.
pandas converts numeric values from integers to floats if there's a nan
value.
2.2 Creating a Series from Python objects
A Series may be constructed from:
- Lists and tuples: a numeric index is automatically created
- Dictionaries: keys become index labels.
- Sets: convert to a list first or use
sorted(set)
- NumPy
ndarray
: pass directly, such aspd.Series(np.random.randint(1, 100, 5))
2.3 Series attributes
Some useful attributes of Series and related values are:
s.values
type(s.values)
s.index
s.dtype
s.size
s.shape
s.is_unique
(checks if all values are unique)s.index.is_unique
s.is_monotonic
2.5 Mathematical operations
2.5.1 Statistical operations
numbers = pd.Series([1, 2, 3, np.nan, 4, 5]) numbers.count() # counts the number of non-null values numbers.sum() # skipna=False forces the inclusion of missing values numbers.product() numbers.mean() numbers.median() numbers.std() numbers.max() numbers.min() numbers.cumsum() numbers.pct_change() # uses forward-fill to replace missing values with the last valid value
The pad
and ffill
are the same forward-fill strategy for the fill_method
parameter.
bfill
is backfill. With this option, pandas replaces missing values with the next valid observation.
numbers.describe()
returns many statistics at once.
numbers.sample(n)
selects n
values from the Series, in a random order.
numbers.unique()
returns a NumPy ndarray of unique values.
numbers.nunique()
returns the number of unique values.
2.5.2 Arithmetic operations
Any operation with a nan results in a nan.
Adding a Series and a scalar results in the scalar being added to every element.
s + 3 # is the same as s.add(3)
The other common operations are sub, mul, div, floordiv, mod
2.5.3 Broadcasting
Broadcasting is the derivation of one array of values from another, like a radio broacast transmitting the same signal to listeners.
Pandas uses shared index labels to align values across different data structures.
2.6 Passing the Series to Python's built-in functions
list(s)
and dict(s)
return built-in Python objects.
Like in Python, the in
keyword checks if a value is present in the index. To check the values, use "Los Angeles" in cities.values
. (In this example, the index is numeric).
3 Series methods
To convert a one-column DataFrame to a Series, use the .squeeze()
method. read_csv()
defaults to creating a DataFrame, so it should be squeezed for the examples in this chapter.
The index column of a CSV can be passed as an argument:
pokemon = pd.read_csv("pokemon.csv", index_col="Pokemon").squeeze()
The resulting series is named after the value column (in the source file, "Type").
To convert a column of datetimes, use the parse_dates
parameter:
google = pd.read_csv("google_stocks.csv", parse_dates=["Date"], index_col="Date").squeeze()
The usecols
parameter defines which columns to read.
battles = pd.read_csv("revolutionary_war.csv", index_col="Start Date", parse_dates=["Start Date"], usecols=["State", "Start Date"]).squeeze()
3.2 Sorting a Series
google.sort_values()
returns a new Series with the values in ascending order (increasing in size).
Capital letters will appear before lowercase ones.
To sort from largest to smallest, pass ascending=False
to sort_values.
na_position
may be "last"
(default) or "first"
.
The dropna
method returns a Series with missing values removed (the index is not targeted).
battles.dropna().sort_values()
3.2.2 Sorting by index with the sort_index method
Like sorting by value, sort_index
also accepts an ascending
parameter.
pokemon.sort_index(ascending=False)
A missing date is represented by a NaT
value. It maintains data integrity with the index's datetime type. Its actual type is class 'pandas._libs.tslibs.nattype.NaTType'
.
nsmallest(n), nlargest(n)
return the n smallest and n largest values. Note: these methods do not work on Series of strings.
google.nlargest()
3.3 Overwriting a Series with the inplace parameter
Many pandas methods accept an inplace
parameter, that when passed with True
, will modify the object with the given method. Otherwise, the Series is not affected.
battles.sort_values(inplace=True)
In-place operations do not conserve memory. Pandas always creates a duplicate, then assigns (or not) the existing variable. If possible, avoid making in-place operations.
A better alternative is to assign the altered value to a new variable, such as sorted_battles
.
3.4 Counting values with the value_counts method
s.value_counts()
groups the values into buckets and counts the number of elements in each bucket.
pokemon.value_counts()
The number of values shown by value_counts
is the same as the number of nunique()
.
To get the frequencies of each value (percentage of the total), pass normalize=True
.
To round values, use the round(decimals)
method:
(pokemon.value_counts(normalize=True) * 100).round(2)
When dealing with continuous values (such as the Google stock price data), it is more useful to define buckets to divide the data into.
buckets = [0, 200, 400, 600, 800, 1000, 1200, 1400] # or list(range(0, 1401, 200)) google.value_counts(bins=buckets)
Pass sort=False
to sort by the buckets. By default, the sorting is by counts, in descending order.
By default, the left endpoint is not included and the right endpoint is.
Passing bins=n
will automatically generate n
bins to divide the values into.
To count nan values with value_counts, pass dropna=False
.
An index can also be used as the input to value_counts
:
battles.index.value_counts()
3.5 Invoking a function on every Series value with apply
Functions in Python are first-class objects. They can be stored in lists, assigned to variables, passed to other functions, and be returned by other functions.
google.apply(round) def round_to_one_decimal(n): return round(n, 1) google.apply(round_to_one_decimal)
A Series index can be converted to a series in order to run the methods described above:
battles.index.to_series().dropna().apply(get_wkdy).value_counts()
4 The DataFrame object
A DataFrame is a two-dimensional table with rows and columns. Similar to a Series, each row of a DataFrame is assigned an index label and index position.
In addition, each column is assigned a label and position.
Two points of reference is needed to retrieve a value from the dataset—a row and a column.
4.1.1 Creating a DataFrame from a dictionary
A suitable input for a DataFrame is a Python dict whose values are lists. The keys become column names and values become column values.
city_data = { "City": ["New York", "Paris", "Barcelona", "Rome"], "Country": ["USA", "FRA", "ESP", "ITA"], "Population": [8600000, 2141000, 5515000, 2873000], } cities = pd.DataFrame(city_data)
Column headers are like a second index. Similar to a Series' index, each column has both an index label and a numeric index position.
To swap the column headers with index labels, use the transpose()
method or access the T
attribute.
cities.transpose() # or cities.T
Creating a DataFrame from a NumPy ndarray
The DataFrame constructor accepts a NumPy ndarray:
np.random.seed(232) random_data = np.random.randint(1, 101, [8, 20]) # 101 is excluded # generates 8 rows and 20 columns
Labels may be set manually when constructing the DataFrame:
row_labels = ["Morning", "Afternoon", "Evening"] column_labels = ["Mon", "Tue", "Wed", "Thu", "Fri"] values = np.random.randint(25, 36, [3, 5]) temperatures = pd.DataFrame(values, index=row_labels, columns=column_labels)
4.2 Similarities between Series and DataFrames
As before, read_csv()
is used to load CSV data. Also, the parse_dates
parameter is used to convert strings to datetimes.
nba = pd.read_csv("nba.csv", parse_dates=["Birthday"], date_format="%m/%d/%y")
A DataFrame is like a collection of Series that share a common index. Each column of a DataFrame may have its own dtype; check df.dtypes
.
To count the number of columns storing each data type:
nba.dtypes.value_counts()
nba.index
holds the row labels.
nba.columns
holds the column labels.
Other useful DataFrame attributes are:
df.ndim
is the number of dimensions. For DataFrames, it's 2.df.shape
is a tuple (rows, columns).df.size
is the total number of values (including nans).df.count()
returns a Series of the counts of present values.
The max and min methods return a Series with the max or min value for each column.
To find out the n players with the largest salary, evaluate nba.nlargest(3, "Salary")
.
It is equivalent to nba.nlargest(n=4, columns=["Salary"])
.
To sum only numeric columns:
nba.sum(numeric_only=True)
Additional statistical measurements are: mean, median, mode, std
. Similar to Series, there is also a describe()
method.
4.3.1 Sorting by a single column
nba.sort_values("Name") # or nba.sort_values(by="Name")
To sort in descending order, pass ascending=False
.
4.3.2 Sorting by multiple columns
nba.sort_values(["Team", "Name"])
To control the order of each column, pass a list of ascending values:
nba.sort_values(by=["Team", "Salary"], ascending=[True, False])
4.4 Sorting by index
After performing a sort and reassigning a DataFrame, it still has its numeric index, but in a different order (as a result of the sort). It is possible to restore it to its original order:
nba.sort_index()
4.4.2 Sorting by column index
To sort the columns in order, pass axis=1
or axis="columns"
.
nba.sort_index(axis=1)
4.5 Setting a new index
set_index()
returns a new DataFrame with a new column set as the index.
nba.set_index("Name") # or nba.set_index(keys="Name")
4.6 Selecting columns and rows from a DataFrame
A DataFrame is a collection of Series objects with a common index.4.6.1 Selecting a single column from a DataFrame
Each column is available as an attribute, such as nba.Salary
or nba["Salary"]
(useful if there's a space in the column name)
4.6.2 Selecting multiple columns from a DataFrame
To extract multiple columns, declare a pair of square brackets and place a list of the desired columns in a list:
nba[["Salary", "Birthday"]]
To select columns based on their data types, use select_dtypes
. It accepts the parameters include
and exclude
. They cannot overlap.
nba.select_dtypes(include="object") nba.select_dtypes(exclude=["object", "int"])
4.7 Selecting rows from a DataFrame
Rows may be extracted by index label or position.
4.7.1 Extracting rows by index label
The loc
attribute extracts a row by label.
Attributes such as loc
are called accessors because they access a piece of data. The result is a Series with the row's values.
# must reassign the index first nba = nba.set_index("Name").sort_index() nba.loc["LeBron James"]
We can pass a list of labels between the square brackets to extract multiple rows.
nba.loc[["Kawhi Leonard", "Paul George"]]
loc
accepts a starting value and ending value, separated by a colon, which is similar to Python's list slicing syntax (it's recommended to sort the index first). Endpoints are included, if they exist:
nba.loc["Otto Porter":"Patrick Beverley"] nba.loc["O":"Q"] nba.loc["Zach Collins":] nba.loc[:"B"]
4.7.2 Extracting rows by index position
iloc
is an accessor that extracts rows by index position, which is useful if the position of the rows has any significance. In this case, the slice syntax excludes the right endpoint. Negative numbers may be used in the slice syntax, like in regular Python syntax.
nba.iloc[300] nba.iloc[[100, 200, 300]] nba.iloc[0:10:2]
4.7.3 Extracting values from specific columns
Both loc and iloc accept a second argument representing the column(s) to extract:
nba.loc["Giannis Antetokounmpo", "Team"] nba.loc["James Harden", ["Position", "Birthday"]] nba.loc[ ["Russell Westbrook", "Anthony Davis"], ["Team", "Salary"] ]
When using a slice for the column names, the start and end points must be in the order in which they appear in the DataFrame.
at and iat
When we know that we want to extract a single value, at
and iat
are faster because they use optimized searching algorithms:
nba.at["Austin Rivers", "Birthday"] nba.iat[263, 1]
4.8 Extracting values from Series
loc, iloc, at, and iat are available on Series objects as well.
nba["Salary"].loc["Amir Coffey"]
4.9 Renaming columns or rows
The rename method of a DataFrame allows you to reassign column names. It is not an in-place operation. The result must be reassigned to the original variable:
nba.rename(columns={"Salary": "Pay"}) nba.rename(index={"Aaron Gordon": "Mr. Gordon"})
4.10 Resetting an index
Using set_index discards the current index. In order to preserve the index, we must first evaluate reset_index
and then use set_index with the new index:
# after running nba.set_index("Team") nba.reset_index().head() nba.set_index("Team")
One advantage of not using the inplace
parameter is that many method calls can be chained:
nba = nba.reset_index().set_index("Team")
5 Filtering a DataFrame
Filtering is the process of extracting a subset of rows using condition(s) and criteria.
5.1 Optimizing a data set for memory use
The "best" data type for a column of a data set is the one that consumes the least memory or provides the most utility.
The info()
method displays a list of the columns, their data types, count of missing values and memory consumption.
employees = pd.read_csv("employees.csv", parse_dates=["Start Date"]) employees.info()
5.1.1 Converting data types with the astype method
The astype
method converts a Series' values to a different data type. It accepts either the data type or a string with its name.
employees["Mgmt"].astype(bool)
Updating a DataFrame column works similarly to setting a key-value pair in a dict. A new column can also be created with this syntax.
employees["Mgmt"] = employees["Mgmt"].astype(bool)
Note: The last row's empty Mgmt value became True.
nan values cannot be converted to integer. To solve this problem, invoke the fillna()
method before astype()
. It's a good idea to always use fillna
before changing a column's type.
Pandas includes a special data type called a category. It works well for a column consisting of a small number of unique values, such as gender, weekdays, and income groups.
The nunique()
method outputs the number of unique values in each column. It ignores nan values by default.
employees["Gender"].astype("category")
5.2 Filtering by a single condition
To compare every Series entry with a constant value, write:
Series == value # for example: employees["First Name"] == "Maria"
The result is a Series of Booleans. To extract only the rows with a True value, write:
employees[employees["First Name"] == "Maria"]
To avoid writing the DataFrame's name twice, the Boolean Series may be assigned to a temporary variable that is passed to the outer brackets:
marias = employees["First Name"] == "Maria" employees[marias]
Remember to use two equal signs ==
and for "not equal", the operator !=
. If a single equal sign is written by accident, all First Names will be assigned to "Maria".
A nan value is considered to be unequal to a string (such as "Finance").
Like regular Python, it is not necessary to write == True
if a column is already made of Booleans.
Mathematical conditions may use < and > signs:
employees[employees["Salary"] > 149_000]
5.3 Filtering by multiple conditions
Create independent Boolean Series and apply the logical criteria between them.
5.3.1 The AND condition
Consider finding all female employees in "Business Dev":
is_female = employees["Gender"] == "Female" in_business_dev = employees["Team"] == "Business Dev" employees[is_female & in_business_dev].head()
Note: using and
instead of &
will not work.
5.3.2 The OR condition
When combining conditions with OR, use the pipe symbol |
. At least one condition has to be true.
earning_below_40k = employees["Salary"] < 40_000 started_after_2015 = employees["Start Date"] > "2015-01-01" employees[earning_below_40k | started_after_2015]
5.3.3 Inversion with ~
The tilde symbol ~
inverts the Boolean values in a Series. Enclose a condition in parentheses, and write the tilde outside them.
~my_series employees[~(employees["Salary"] >= 100_000)].head()
Comparisons (==, !=, <, <=, >, >=) may be done with methods:
employees["Team"].eq("Marketing") employees["Team"].ne("Marketing") employees["Salary"].lt(100_000) employees["Salary"].le(100_000) employees["Salary"].gt(100_000) employees["Salary"].ge(100_000)
5.4 Filtering by condition
5.4.1 The isin method
The isin
method accepts an iterable of elements (list, tuple, Series, etc.) and returns a Boolean Series:
all_star_teams = ["Sales", "Legal", "Marketing"] in_all_star_teams = employees["Team"].isin(all_star_teams) employees[in_all_star_teams].head()
5.4.2 The between method
The between method accepts a lower and upper bound. The lower bound is inclusive, and the upper bound is exclusive. The parameters are called left, right
. Datetimes and strings may be passed as arguments.
between_80k_and_90k = employees["Salary"].between(80_000, 90_000) employees[between_80k_and_90k].head()
5.4.3 The isnull and notnull methods
Missing text and numeric values are NaNs while missing datetime values are NaTs.
employees["Team"].isnull().head() employees["Team"].notnull().head()
5.4.4 Dealing with null values
The dropna
method removes rows that hold any NaN values. If how="all"
is passed, only rows that are missing all values are removed. The default value is "any".
employees.dropna() employees.dropna(how="all")
The subset
parameter can be used to target rows with a missing value in a specific column (or columns).
employees.dropna(subset=["Gender"]) employees.dropna(subset=["Gender", "First Name"])
The thresh
parameter specifies a minimum threshold of non-null values that a row must have to be kept.
employees.dropna(thresh=4).head()
5.5 Dealing with duplicates
5.5.1 The duplicated method
The duplicated
method returns a Boolean Series that identifies values that were previously encountered. The first value is not marked True. Only the remaining duplicates are.
Note: NaNs are considered to be a unique value.
employees.["Team"].duplicated().head()
By passing keep="last"
, the last occurrence is marked as the nonduplicate.
Suppose we want to extract one employee from each team. One way to do so is to pull out the first row for each unique team. By inverting the Series of duplicates, we get a Series in which True is the first time a Team is encountered:
first_one_in_team = ~employees["Team"].duplicated() employees[first_one_in_team]
5.5.2 The drop_duplicates method
By default, drop_duplicates
removes rows where all their values have been encountered before.
To target certain columns, pass subset=["Column Name"]
. The argument keep="last"
may also be passed.
employees.drop_duplicates(subset=["Team"])
If keep=False
is passed, all rows with duplicate values are excluded. In other words, only rows with values that occur exactly once are kept.
Part 2 Applied pandas
The chapters in this part cover how to tackle common problems in data analysis.
6 Working with text data
The process of cleaning data is called wrangling or munging.


SCREAM (1996) A movie review by Serdar Yegulalp (C) 1997 by Serdar Yegulalp
CAPSULE: Fiendishly smart mutation of the slasher genre, in which the awareness of the genre's exploitations by the characters is a main point.
"Do you like SCARY movies?" oozes the voice on the phone.
"Yeah, sure," says the bored girl who's getting real sick of this persistent wrong-number weirdo.  So she hangs up. And in he comes with a knife the size of a hatchet.
And with that we are off and running with SCREAM, Wes Craven's best movie since NIGHTMARE ON ELM STREET -- quite possibly his best movie ever. After NIGHTMARE, Craven went on to make a string of muddled and disappointing movies -- DEADLY FRIEND and SHOCKER stand out as two of the worst. But then he came out of nowhere with SCREAM (working title: "Scary Movie"), which takes the whole how-come-people-in-a-horror-movie-don't-ever-do-the-SMART-thing? notion, feeds it back into a fiendishly constructed story about a madman on the loose, and lets the whole thing fly. It isn't a parody -- it's too intense and genuinely scary to be one -- and it isn't a straight playback of slasher cliches. It's more like a neat new mutation of the genre, a crossbreeding of ideas to create something really new and creative.
The killer's m.o. is set up in the first scene: he calls someone, taunts them with sneering jibes about scary movies, and then come in and stabs them to death. A lot. To hide his identity, he goes running about with a black cloak and a "Father Death" mask on. (Be forewarned that there is a good deal of on-camera bloodshed in this movie -- nothing that a seasoned horror veteran can't take, but those expecting a lightearted parody a la HAUNTED HONEYMOON are advised to stand clear.) He (?) is stalking and murdering the friends and relatives of a young girl whose mother was raped and murdered by a serial killer almost exactly one year ago. Her friends -- some witty, some boorish, some hilariously insensitive -- have various theories about who, how and why. None of them are correct.
The killer continues his rampage, drawing attention from the media. One of the folks who gets interested is a tabloid-style journalist who dashed off a bestselling book about the mother's murderer -- only she's convinced that the killer was framed, and that the real perp is still on the loose. Nobody buys the theory... at first. But as the clues and bodies pile up, it's plain that something even more bizarre than what we can see is afoot.
SCREAM knows its territory. (If it didn't, I'd worry about Mr. Craven's right to his throne.) It's loaded with in-jokes about horror movies (see how many you can rack up) -- but most importantly, it's populated by people who are perfectly aware of how horror-movieish the whole thing is. Also, they don't just lie down when the killer storms in: they throw everything that isn't nailed down at the guy. Slam doors in his face. Trip him up. Smash bottles over his head. Do everything except shove him into a meat grinder (and believe me, I was expecting something along such Grand Guignol proportions). But like all good slasher villains, he does the Timex thing and keeps ticking.
The final 40 minutes of the movie is one giant blood-soaked war zone that's reminiscent of the hair-raising ending of another, quite dissimilar movie -- BLOOD SIMPLE -- which used bizarre plot mechanics and double-backs to keep the audience shrieking. By the time you get to the final act, the tables have been turned so many times you'd think they were on Lazy Susans. It's both funny and horrific, and I will not reveal a single thing about how it gets tied up, except that a couple of people have *some* of their theories about who dies and who lives in horror movies proved quite correct.
Last note: SCREAM seems to have revitalized b.o. interest in horror movies -- a waning genre since the 80s, poisoned by endless and lame sequels and hordes of uninteresting ripoffs. I anticipate a wave of imitations in the wake of this one -- and, unfortunately, another case of hardening of the arteries. SCREAM 2 is already in the works.
Three and a half out of four rubber masks.
<EMAIL_ADDRESS>EFNet IRC: GinRei http://www.io.com/~syegul another worldly device... you can crush me as I speak/write on rocks what you feel/now feel this truth UNMUTUAL: A Digital Art Collective - E-mail<EMAIL_ADDRESS>for details =smilin' in your face, all the time wanna take your place, the BACKSTABBERS=
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


["reflexive", "symmetric", "antisymmetric", "transitive"]
Khan.randRange(0,3)
Khan.randRange(0,6)
["Relation isBrotherOf on the set of people " ,
"Relation isFatherOf on the set of people ",
"Relation " + katex.renderToString("R = \\{ \\langle x, y \\rangle \\ | \\ x^2 + y^2 = 1\\}")
+ " for real numbers " + katex.renderToString("x") + " and " + katex.renderToString("y"),
"Relation " + katex.renderToString("R = \\{ \\langle x, y \\rangle \\ | \\ x^2 = y^2\\}")
+ " for real numbers " + katex.renderToString("x") + " and " + katex.renderToString("y"),
"Relation " + katex.renderToString("R = \\{ \\langle x, y \\rangle \\ | \\ x \\% y = 0\\}")
+ " for " + katex.renderToString("x, y \\in {1,2,3,4}"),
"Empty relation " + katex.renderToString("\\emptyset")
+ " (i.e., the relation with no ordered pairs for which it is true) on the set of integers ",
"Empty relation " + katex.renderToString("\\emptyset")
+ " (i.e., the relation with no ordered pairs for which it is true) on the empty set "]
[ ["False", "False", "False", "True"],
["False", "False", "True", "False"],
["False", "True", "False", "False"],
["True", "True" , "False", "True"],
["True", "False", "True", "True"],
["False", "True", "True", "True"],
["True", "True", "True", "True"] ]
"R = {< x, y > | x mod y = 0}"
Answer TRUE or FALSE.
CHOICES[CHOICESINDEX] is RELTYPE[RELTYPEINDEX]
ANSWER[CHOICESINDEX][RELTYPEINDEX]
A relation is reflexive if element A
holds the
relationship with itself for all values a
in the
set.
A relation is symmetric if every time that a
is
related to b
, then b
is also
related to a
.
A relation is antisymmetric if everytime that a
is
related to b
, then b
is not
related to a
.
A relation is transitive if everytime that a
is
related to b
and also b
is related
to c
, then a
is related
to c
.


This keyboard is the same as the US English keyboard, except three accented vowels are shown in place of the letters x, v and f. These letters are available by pressing the Alt key in combination with the x, v or f keys.
Unshifted
Shifted


This package was downloaded from
http://xorg.freedesktop.org/releases/individual/proto/
Packaging by Julien Cristau .
Copyright © 2008 Red Hat, Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Soft-
ware"), to deal in the Software without restriction, including without
limitation the rights to use, copy, modify, merge, publish, distribute,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, provided that the above copyright
notice(s) and this permission notice appear in all copies of the Soft-
ware and that both the above copyright notice(s) and this permission
notice appear in supporting documentation.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
MANCE OF THIS SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization of
the copyright holder.
Authors:
Kristian Høgsberg (krh@redhat.com)


FeedHenry
QuickStart - HTML5
This is a basic Javascript App that echos messages sent to a Jabber server.


ETUDES-NG is used in hybrid, online, blended, and traditional courses and for collaboration projects. The same features are often used in different ways by instructors to meet a teaching goal or style. ETUDES-NG offers a variety of features for use in courses, including:
My Workspace |
for a personalized view of information from your sites and your preferences |
Schedule |
for posting and viewing deadlines, events, etc |
Announcements |
for posting current, time-critical information |
Syllabus |
for c reating a course syllabus |
Modules |
for publishing and viewing content, i.e. lessons, modules, units |
Assignments |
for posting, submitting, and grading online |
Discussion & Private Messages |
for participating in asynchronous discussion, group work, and collaboration, and private communication amongst students and instructors |
Chat |
for real-time conversation in written form |
Email Archive |
for viewing email sent to the site's group email address |
Tests & Quizzes |
for authoring and administering exams, quizzes, surveys, etc. |
Gradebook |
for posting and managing grades of registered students |
Resources |
for posting documents and URLs |
News/RSS |
for viewing content from online sources (RSS feeds) |
Web Content |
for accessing an external website within the site |


Enter USD Amount:
Country Currency Code
Convert!
Start Over
Based on the amount of
US dollars
With a conversion rate of
The value of your USD is
!


{% for owner in dataset %}
First name: {{owner.first_name}}
Last name: {{owner.last_name}}
Born: {{owner.birth_date}}
Passport: {{owner.passport}}
Address: {{owner.address}}
Nationality: {{owner.nationality}}
{% endfor %}


new PyxLog()
/home/atirado/dev/private-npm/o-pyx-log/index.js, line 8
Example
const me = require('pyx-me').create('MyLog');
Members
-
private_modenumber
-
Mode of logger. Determines if logger is silent or not.
- Default Value:
- 1
-
private_namestring
-
Name of the logger instance.
-
private_prettyNamestring
-
The name of the logger wrapped with chalk.
Methods
-
staticPyxLog.create(name){PyxLog}
/home/atirado/dev/private-npm/o-pyx-log/index.js, line 146 -
Static instance generator. Creates a new instance of the PyxLog logger.
Name Type Description name
string Name of the logger. Returns:
Type Description PyxLog -
private_runThisInMode(actionCb)
/home/atirado/dev/private-npm/o-pyx-log/index.js, line 132 -
Runs an action based on _mode
Name Type Description actionCb
function Function that will be called if on normal _mode (1) - See:
-
- _mode
-
alert(msg)
/home/atirado/dev/private-npm/o-pyx-log/index.js, line 120 -
Outputs alert me messages. Good for errors or warnings. #note: Passed through the _runThisInMode method
Name Type Description msg
string String that will be embedded in the alert -
beNormal()
/home/atirado/dev/private-npm/o-pyx-log/index.js, line 54 -
This is the default state of the logger; This will set the logger back to normal _mode if it was originally put to silent _mode by calling beSilent
-
beSilent()
/home/atirado/dev/private-npm/o-pyx-log/index.js, line 43 -
This silences the logger; once this method is called, no more output will be coming from the logger until beNormal is called or the debug option is enabled
-
debug(msg)
/home/atirado/dev/private-npm/o-pyx-log/index.js, line 100 -
Outputs debug me messages. Good for debugging of code while coding or as extra me information to debug reoccurring bugs. #note: This method only prints out if the `DEBUG_MODE` env variable is set and ignores _mode
Name Type Description msg
* repeatable Array of values (string or other) that will be printed out on the screen -
header(msg)
/home/atirado/dev/private-npm/o-pyx-log/index.js, line 65 -
Outputs a header me including the name of the logger. Good for breaks in logic or initializing messages. #note: Passed through the _runThisInMode method
Name Type Description msg
string String that will be embedded in the header -
log(msg)
/home/atirado/dev/private-npm/o-pyx-log/index.js, line 78 -
Outputs regular me messages. Good for data logs or simple messages. #note: Passed through the _runThisInMode method
Name Type Description msg
* repeatable Array of values (string or other) that will be printed out on the screen


Competitive Intercollegiate Programming (ICPC)
The ACM programming team is a group of students that practice for and compete in fun algorithmic programming contests. The competition chair usually organizes a weekly meeting for the team to practice for upcoming competitions.
We typically perform very well. Recent placings at the ACM Regional Collegiate Programming Contest (Greater NY Region):
- 2013: 2nd place, plus top underclassman team
- 2010: 1st and 2nd place, plus top underclassman team
- 2007: 2nd and 3rd place
- 2005: 2nd place
Anyone is welcome to join (freshman to grad students). No prior experience necessary! If you have done USACO or other competitions, that’s great too!
Please contact us if you want to participate.
We recommend Individual Practice in online competitions such as:
- Topcoder: www.topcoder.com/tc
- Codeforces: www.codeforces.com
- UVa Online Judge: uva.onlinejudge.org
- ACM-ICPC Live Archive: icpcarchive.ecs.baylor.edu
- Project Euler: projecteuler.net


Home
News
Series
Important messages
About
Welcome to the colony
with:
Don't forget to follow and subscribe to all the
social media and join the discord server!


A beloved video game studio outsold some of October’s biggest releases with its first game since being acquired by Microsoft
by Kevin Webb, Business Insider US- October is usually one of the biggest months of the year for new video game releases, and this year a new release from a beloved studio took the spotlight.
- A newly launched game, Obsidian Entertainment’s “The Outer Worlds” was the second best-selling game of the month.
- “The Outer Worlds” is Obsidian’s first game since being acquired by Microsoft in November 2018. As an independent studio, Obsidian was beloved for games like “Fallout: New Vegas” and “Star Wars Knights of the Old Republic II: The Sith Lords.”
- The Nintendo Switch continues to dominate the hardware market as consumers wait for the next PlayStation and Xbox consoles.
- Visit Business Insider’s homepage for more stories.
October is usually one of the biggest months of the year for new video game releases as eager publishers look to get their best games out on the shelves for the holiday season. But with multiple studios prepping for the launch of the Sony PlayStation 5 and Microsoft’s Project Scarlett next year, a bunch of blockbuster titles are waiting until 2020 to launch.
That’s left room for some lesser known games to take the spotlight, like Obsidian Entertainment’s “The Outer Worlds.” “The Outer Worlds” was the second-best selling game of October, according to data from the NPD Group. It was surpassed only by “Call of Duty: Modern Warfare,” the latest entry into the perennial best-selling franchise.
“The Outer Worlds” is Obsidian’s first game since being acquired by Microsoft in November 2018. As an independent studio, Obsidian was beloved for games like “Fallout: New Vegas” and “Star Wars Knights of the Old Republic II: The Sith Lords.” “The Outer Worlds” is a single-player shooting game with role playing mechanics that let players alter the story.
“The Outer Worlds” was included in Microsoft’s Xbox Game Pass when it was released on October 25th, but that didn’t stop people from buying the game outright. Despite being made by a Microsoft subsidiary, “The Outer Worlds” is also available on PlayStation 4, and is coming to Nintendo Switch next year.
In comparison to last year, video game sales in October were down 34 percent, according to the NPD Group. However, October 2018 featured some of the biggest hits of the decade, including”Red Dead Redemption 2, “Marvel’s Spider-Man,” and yet another “Call of Duty.”
Nintendo’s big exclusive release of October, “Luigi’s Mansion 3,” earned the third spot on the sales chart with a solid debut, while the company’s new exercise game “Ring Fit Adventure” was the 10th best-selling game of the month.
“Madden 20,” “NBA 2K20,” and “FIFA 20” all made it onto the charts as the fall sports season hits a stride.
Though it’s made it into the top 10 in two consecutive months, Ubisoft’s “Tom Clancy’s Ghost Recon Breakpoint” appears to be a bit of a sale disappointment. The military survival game has been criticized for being too similar to “Tom Clancy’s The Division 2,” another Ubisoft game released earlier this year.
The Nintendo Switch continues to dominate the hardware market as consumers wait for the next PlayStation and Xbox consoles. The new Nintendo Switch Lite helped push the console over the 40 million mark in lifetime sales in October.
These were the top 10 best-selling games of October:


--- title: UIUCTF layout: fullpage ---
April 6 - 8
1900 - 0700
UIUCTF is an online jeopardy-style CTF Competition. Teams of all shapes and sizes are welcome to participate.
UIUCTF 2018 has concluded. Stay tuned for UIUCTF 2019!
UIUCTF is organized by SIGPwny, the student security club at the University of Illinois at Urbana-Champaign.


--- title: Suicides & Churches in Early 20th Century Seattle date: 2015-02-05 09:22:34 Z categories: - Not data layout: post type: post status: publish meta: pe_theme_meta: O:8:"stdClass":2:{s:7:"gallery";O:8:"stdClass":3:{s:2:"id";s:2:"89";s:5:"width";s:0:"";s:6:"height";s:0:"";}s:5:"video";O:8:"stdClass":1:{s:2:"id";s:3:"504";}} _edit_last: '1' author: Nathaniel ---
From the Making Maps blog. Fantastic plots from old sociology research, originally published in Calvin F. Schmid “Notes on Two Multiple-Variable Spot Maps” Social Forces, Vol. 6, No. 3. (Mar., 1928), pp. 378-382.


Several people stabbed in London Bridge incident - Barriere Star Journal
by Associated PressA man has been detained, according to Metropolitan Police
Police say several people have been stabbed close to London Bridge, and a man has been detained.
The Metropolitan Police force says officer were called Friday afternoon “to a stabbing at premises near to London Bridge.”
They say “a man has been detained by police. We believe a number of people have been injured.”
The news comes after witnesses reported hearing gunshots. Sky News reported that police had shot the apparent attacker.
BBC reporter John McManus was in the area and said he saw figures grappling on the bridge. He said: “I thought it was initially a fight,” but then shots rang out.
London Ambulance Service said it had crews on the scene.
Police could be seen ushering people away from the northern end of the bridge, which links the city’s business district with the south bank of the River Thames.
City of London Police, the force responsible for the business district, urged people to stay away from the area.
London Bridge was the scene of a 2017 attack when Islamic State-inspired attackers ran down people on the bridge, killing two, before stabbing several people to death in nearby Borough Market.
ALSO READ: Fatal London terror attack inquest hears from B.C. woman’s fiancé
The Associated Press


Provides balloon tips for use in Java Swing applications.
View the project's manual. (also included with each release)
If you find this project useful and/or have any suggestions, please drop Tim or Bernhard an email!
| 2010-10-31 (v1.1.1), Squashing bugs: |
|
Just a quick update containing a few bug fixes:
|
| 2010-10-18 (v1.1), Back in action: |
|
At long last, a new release has arrived! Balloon tip's latest version has some exciting new features in store for you; just check out this change log:
Thanks to Thierry Blind for helping out with this release! |
| 2009-08-28, Balloon tip has switched to Maven, plus a brand-new special release: |
|
Just like the entire java.net website, our little project has recently undergone some infrastructural changes as well:
A last, but certainly not least, announcement is the availability of a new special release! As you might have already experienced, Balloon tip is currently constrained to drawing its balloon tips within the boundaries of your application's window. This special release will allow your balloon tips to break free and let them go beyond the window's boundaries. Many thanks go out to David Straw for making this magic happen!
|
| 2009-03-19, Legacy goodness: |
|
In case Java 1.5 is a little too newfangled for your project, your prayers have been heard:
Many thanks to Nicholas Hutniak for creating this special release! |
| 2008-11-14, Licensing mumbo jumbo: |
|
Just a small change in order to be able to get the project into the Ubuntu repositories :
Thanks to Stefan Handschuh for his efforts to make balloontip available on the Ubuntu repositories! As soon as it gets through, you can find our project there under the name "libballoontip-java". 2009-01-05 EDIT: The source files' license preambles stated "General Public License" instead of "Lesser General Public License"... I have now re-uploaded the 2008-11-14 release with the proper preamble. Thanks to Maciej Jagiello for noticing this rather embarrassing mistake. |
| 2008-10-10, Quick fix: |
|
Just a couple of minor changes:
Thanks to Adewale Ajiboye for reporting the JApplet issue! |
| 2008-09-24, Huge update: |
|
It's been quite a while since we've released an update. To make up for that, we've just uploaded a big one! Check out all these new features/changes:
If you'd like to get started quickly, just download the latest release and have a look at the One last thing, not quite a feature though: This project now has another owner, which is me (nferno; you can call me Tim though :) ). Bernhard still is the main project owner, but as he won't have that much time for the project, I have come to the rescue! *plays superman theme* Does this imply any changes for you? Well, yes: If you have any questions or suggestions, please send them to me, at<EMAIL_ADDRESS>|
| 2007-12-30, Big update after long time: |
|
The new version includes the following main features (besides some bug fixes):
The API has changed a little bit - sorry for that. For explanation look here ("How to use BalloonTip"). A bigger change is the move to Java 5. It has been out now for a while, so I don't think it will be a big problem. If you are locked down to an older version, you can still make it work for you by replacing the enumerations in the source code with constants. Also noteworthy: The release package now contains an executable JAR. Double-click on the JAR to launch the example application: And as always - please drop me a line, if this project has been useful to you! |
| 2007-05-15, Rather big update: |
|
It's about time that the project receives an update - and here it is. This new version includes the following features:
The API has been changed rather drastically, look here for explanation ("How to use BalloonTip"). I would like to thank Mina R. Waheeb who wrote me an email with her modification for rounded balloon tips. I used it as a foundation for my implementation. Thanks, Mina! |
| 2007-03-30, New release: |
I recently received an email from Adhari Huda aka Harry who uses BalloonTip. He noticed and fixed two bugs:
|
| 2007-03-01, First release: |
| Go and get it! |


Stephen Eick
Contact Information
Office Location
Cubicle near Room 224
Technology Square Research Building
85 Fifth Street NW
Atlanta, GA 30308
Feel free to reach out with inquiries regarding research, collaboration, information about Georgia Tech, or something unbeknownst.
My email address is:- Local portion: <my last name><dot><my first name>
- Domain: Google's email service


I’ve been playing with Core Text recently, and one of the things I wanted to do was layout text in an arbitrary CGPath. On Mac, you’d do this with NSLayoutManager, but iOS doesn’t have that so we have to build our own. I’ll discuss Core Text more later, but one of the steps along this problem is how to clip a CGRect to a CGPath. I found several discussions of finding CGPath intersections, all explaining the basic technique. Draw the things you care about into a bitmap context and then inspect the pixels to see where they overlap. Clear enough, but it was hard to find a small code sample that demonstrated this with Core Graphics.
For my purposes, I want the first full-height rectangle within the intersection of the line rectangle and the CGPath. Later I will expand this code to find all full-height rectangles within the intersection (there can be more than one), but this is enough to demonstrate the point.
First, we quickly clip the rectangle to the bounding box of the CGPath using CGPathGetBoundingBox()
. In iOS 4, they’ve added CGPathGetPathBoundingBox()
, which can create a tighter box if you have control points outside your path, but I don’t know yet if there’s a performance trade-off for using it.
CGRect rect = someRect();
CGPathRef path = somePath();
CGRect boundingBox = CGPathGetBoundingBox(path);
CGRect clippedRect = CGRectIntersection(boundingBox, rect);
clippedRect = clipRectToPath(clippedRect, path);
You could do this first-pass clipping in clipRectToPath()
, but my actual code uses CGMakeRect()
to build up the clippedRect because I’m making them in a loop.
Without further fanfare, here is clipRectToPath()
:
CGRect clipRectToPath(CGRect rect, CGPathRef path)
{
size_t width = floorf(rect.size.width);
size_t height = floorf(rect.size.height);
uint8_t *bits = calloc(width * height, sizeof(*bits));
CGContextRef bitmapContext =
CGBitmapContextCreate(bits,
width,
height,
sizeof(*bits) * 8,
width,
NULL,
kCGImageAlphaOnly);
CGContextSetShouldAntialias(bitmapContext, NO);
CGContextTranslateCTM(bitmapContext, -rect.origin.x, -rect.origin.y);
CGContextAddPath(bitmapContext, path);
CGContextFillPath(bitmapContext);
BOOL foundStart = NO;
NSRange range = NSMakeRange(0, 0);
NSUInteger x = 0;
for (; x < width; ++x)
{
BOOL isGoodColumn = YES;
for (NSUInteger y = 0; y < height; ++y)
{
if (bits[y * width + x] < 128)
{
isGoodColumn = NO;
break;
}
}
if (isGoodColumn && ! foundStart)
{
foundStart = YES;
range.location = x;
}
else if (!isGoodColumn && foundStart)
{
break;
}
}
if (foundStart)
{
// x is 1 past the last full-height column
range.length = x - range.location - 1;
}
CGContextRelease(bitmapContext);
free(bits);
CGRect clipRect =
CGRectMake(rect.origin.x + range.location, rect.origin.y,
range.length, rect.size.height);
return clipRect;
}
First, we work out the size of the image and create a buffer to hold the bytes, one byte per pixel. We create an alpha-only bitmap context. We don’t need color; just black and white, and we don’t want anti-aliasing since we just care about clipped and not clipped. We translate the context to match our box and draw our path.
Now we have a two-dimensional array of bytes which are either 0 or 255. We walk through each column, row by row, to see if there are any uncolored pixels. If there are, then this is not a full-height column, and we skip it. Once we find a full-height column, we continue looking until we find one that isn’t. If we find it, we mark that as the end of our range (we’ll subtract one later). Finally, we create our new rectangle using our range.
Later I will expand this to return a CFArrayRef rather than a single CGRect. That way I can return multiple rectangles if the path intersects the rectangle multiple times. That just requires appending the rectangle to a list and starting over rather than calling ‘break’ in the last “else if” clause.
This technique is applicable to many other problems, such as finding the intersection of an arbitrary set of CGPaths. If you can draw it, you can use this approach to find the holes or the overlaps.
There are several optimizations available here. In particular, we could create a single CGBitmapContext and a single buffer large enough for our largest rectangle. That would get rid of some memory churn.


[CHAPTER 321H]
NEUROTRAUMA
Section
321H-1 Definitions
321H-2 Neurotrauma system
321H-3 Neurotrauma advisory board
321H-4 Neurotrauma special fund
321H-5 Rules


| Preface | Main Menu |
|---|
| This Record of the Memorial Inscriptions at the Parish Church of St James the Great, South Leigh, Oxfordshire, was made by Gill Curwood between March 2005 and August 2005. All entries were checked by Les Curwood.
It has been updated with corrections and additions as at 22nd November 2005. It was prepared in text form as a paper document with copies to be kept in the Church and Cogges Church Office. An electronic version, distributed on a CD-ROM, of the full text of the transcript with the addition of photographs of the graves taken during the transcription, is available from the Oxfordshire Family History Society. This web version is based on the CD-ROM version.
The Plan which accompanies this record, was prepared from a map produced from the survey carried out by David J. Page, Chartered Architect, in 1993.
The Numbering System used to identify the graves, divides the Church and churchyard into five main sections. The Church is designated by the initial letter C. This letter is followed by a three-digit number indicating the individual monument within the section.
The churchyard is divided into four sections designated by the initial letters: A, B, D, E. This letter is followed by a three-digit number indicating the individual grave or monument within the section.
The Convention Used when recording the inscriptions, was to follow the capitalisation where possible. There is no attempt to follow the typeface of the original inscription. All punctuation visible on the stone is transcribed as accurately as possible, within the limitations of the computer typeface. In certain cases a compromise has to be made. Most noticeably, many stones have the word "ye" written as a small "e", directly above the "y". This is represented here with the "e" as a superscript, immediately following the "y", thus: ye. Where part of a stone is not decipherable square brackets are used to indicate missing letters or words, thus [ ]. If the spacing of the surrounding letters gives a clue to the number of missing letters these will be marked within the bracket thus: [_ _ _]. If a letter is in doubt, it will be placed in square brackets in the same way, or possible alternatives may be indicated, thus: Died 187[0 or 6]. In the standard paper transcripts the "/" symbol is used to indicate line ends, in order to save space. In this web version, space is not at a premium and the lines are placed as found on the stone. However no attempt is made to fit the modern type to the correct line lengths and all the lines are centred. The true layout can usually be judged from the photograph.
Additional Information about the grave, is shown in italics. Normally this consists of a brief description of the grave, preceding the inscription. In some cases further information may be added, in italics, following the inscription. This is often information from the burial register, indicated thus: Burial Register: etc..
This is only included where it adds information, or confirms or contradicts something read from the stone.
Grateful Thanks are due to the following people for giving us permission to carry out the recording and for offering their help and encouragement.
|
| The Parish Church of St. James the Great, South Leigh, Oxfordshire. | Copyright © St. James the Great South Leigh Parochial Church Council, 2006 |
| Updated 22nd November 2005 | Feedback |


Steve Jobs
Jobs posing with Apple II.
Steven Paul Jobs was the founder of Apple Inc
-
1955 - Steven Paul was born in San Francisco, the son of Abdulfattah Jandali and Joanne Schieble. He is quickly adopted by Paul and Clara Jobs
-
1969 - Steve Jobs meets Steve Wozniak, 5 years older, through a mutual friend. Woz and Steve share a love of electronics, Bob Dylan, and pranks
-
1974 - Steve gets his first job at video game maker Atari, and later makes a trip to India to 'seek enlightenment' with his college friend Dan Kottke.
-
1976 - Woz and Steve show the early Apple I board at the Homebrew Computer Club
-
1976 - Apple Computer Inc. is incorporated by Steve Jobs, Steve Wozniak and Ron Wayne
-
1976 - Steve and Woz start assembling Apple I computers in the Jobses' garage.
Read his whole timeline
here.


Standard Apache™ FOP Extensions
By "extension", we mean any data that can be placed in the input XML document that is not addressed by the XSL-FO standard. By having a mechanism for supporting extensions, FOP is able to add features that are not covered in the specification.
The extensions documented here are included with FOP, and are automatically available to you. If you wish to add an extension of your own to FOP, please see the Developers' Extension Page. All extensions require the correct use of an appropriate namespace in your input document.
SVG
Please see the SVG documentation for more details.
FO Extensions
Namespace
By convention, FO extensions in FOP use the "fox" namespace prefix. To use any of the FO extensions, add a namespace entry for http://xmlgraphics.apache.org/fop/extensions
to the root element:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:fox="http://xmlgraphics.apache.org/fop/extensions">
PDF Bookmarks
In previous versions of Apache FOP there was a fox:outline
element which was used to create outlines in PDF files. The redesigned code makes use of the new bookmark feature defined in the latest XSL 1.1 working draft.
Anchors or Named Destinations
Use the fox:destination element to define "named destinations" inside a PDF document. These are useful as fragment identifiers, e.g. "http://server/document.pdf#anchor-name". fox:destination elements can be placed almost anywhere in the fo document, including a child of root, a block-level element, or an inline-level element. For the destination to actually work, it must correspond to an "id" attribute on some fo element within the document. In other words, the "id" attribute actually creates the "view" within the PDF document. The fox:destination simply gives that view an independent name.
<fox:destination internal-destination="table-of-contents"/>
...
<fo:block id="table-of-contents">Table of Contents</fo:block>
Table Continuation Label
This extension element hasn't been reimplemented for the redesigned code, yet.
fox:orphan-content-limit and fox:widow-content-limit
The two proprietary extension properties, fox:orphan-content-limit
and fox:widow-content-limit
, are used to improve the layout of list-blocks and tables. If you have a table with many entries, you don't want a single row to be left over on a page. You will want to make sure that at least two or three lines are kept together. The properties take an absolute length which specifies the area at the beginning (fox:widow-content-limit
) or at the end (fox:orphan-content-limit
) of a table or list-block. The properties are inherited and only have an effect on fo:table
and fo:list-block
. An example: fox:widow-content-limit="3 * 1.2em"
would make sure the you'll have at least three lines (assuming line-height="1.2"
) together on a table or list-block.
fox:external-document
This feature is incomplete. Support for multi-page documents will be added shortly. At the moment, only single-page images will work. And this will not work with RTF output.
This is a proprietary extension element which allows to add whole images as pages to an FO document. For example, if you have a scanned document or a fax as multi-page TIFF file, you can append or insert this document using the fox:external-document
element. Each page of the external document will create one full page in the target format.
The fox:external-document
element is structurally a peer to fo:page-sequence
, so wherever you can put an fo:page-sequence
you could also place a fox:external-document
. Therefore, the specified contents for fo:root
change to:
(layout-master-set, declarations?, bookmark-tree?, (page-sequence|page-sequence-wrapper|fox:external-document|fox:destination)+)
Specification
The fox:external-document
extension formatting object is used to specify how to create a (sub-)sequence of pages within a document. The content of these pages comes from the individual subimages/pages of an image or paged document (for example: multi-page TIFF in the form of faxes or scanned documents, or PDF files). The formatting object creates the necessary areas to display one image per page.
In terms of page numbers, the behaviour is the same as for fo:page-sequence
. The placement of the image inside the page is similar to that of fo:external-graphic
or fo:instream-foreign-object
, i.e. the viewport (and therefore the page size) is defined by either the intrinsic size of the image or by the size properties that apply to this formatting object.
Content: EMPTY
The following properties apply to this formatting object:
-
(Common Accessibility Properties) (not implemented, yet)
-
(Common Aural Properties) (not implemented, yet)
-
block-progression-dimension
-
content-height
-
content-type
-
content-width
-
display-align
-
height
-
id
-
inline-progression-dimension
-
overflow
-
pages:
(see below) (not implemented, yet) -
reference-orientation
-
scaling
-
scaling-method
-
src
-
text-align
-
width
Datatype "page-set": Value: auto | fox:external-document
is not suitable for concatenating FO documents. For this, XInclude is recommended.
Free-form Transformation for fo:block-container
For fo:block-container
elements whose absolute-position
set to "absolute" or "fixed" you can use the extension attribute fox:transform
to apply a free-form transformation to the whole block-container. The content of the fox:transform
attribute is the same as for SVG's transform attribute. The transformation specified here is performed in addition to other implicit transformations of the block-container (resulting from top, left and other properties) and after them.
Examples: fox:transform="rotate(45)"
would rotate the block-container by 45 degrees clock-wise around its upper-left corner. fox:transform="translate(10000,0)"
would move the block-container to the right by 10 points (=10000 millipoints, FOP uses millipoints internally!).
This extension attribute doesn't work for all output formats! It's currently only supported for PDF, PS and Java2D-based renderers.
Color functions
XSL-FO supports specifying color using the rgb(), rgb-icc() and system-color() functions. Apache FOP provides additional color functions for special use cases. Please note that using these functions compromises the interoperability of an FO document.
cmyk()
color cmyk(numeric, numeric, numeric, numeric)
This function will construct a color in device-specific CMYK color space. The numbers must be between 0.0 and 1.0. For output formats that don't support device-specific color space the CMYK value is converted to an sRGB value.


--- title: "2.6 — Long Run Industry Equilibrium — Class Content" citeproc: false bibliography: ../../static/bib/references.bib csl: ../../static/bib/chicago-syllabus-no-bib.csl output: blogdown::html_page: template: ../../pandoc/toc-title_html.template toc: true editor_options: chunk_output_type: console ---
We wrap up Unit 2 on Producers today (or finally finish it Wednesday), by bringing our optimization model of how firms maximize profits into the long run, when firms can enter or exit depending on profitability. We also now need to talk about the fact that our firm is not the only profit-maximizing firm in the market, so we derive an equilibrium model of the industry in the long run.
Famously, we see that in competitive industries, economic profits get driven to zero in the long run, as firms enter or exit any time there are profits or losses.
We also talk about the hard to understand, but extremely important, idea of economic rents.
Next class (Wednesday October 7) we will have a review session for Exam 2, which will be next week. We will not have class on Monday October 12) to give you a chance to work on the exam, and not be distracted by new material. We will begin Unit 3 on Wednesday October 14.
I have your Exam 1 graded and will discuss them at the end of class today. See assignments below for more information.
Problem set 4 (on 2.4-2.6) is due by 11:59 PM Sunday March 28 (Section 1 M/W) and Sunday April 4 (Section 2 Tu/Th) by PDF upload to Blackboard Assignments.
This is the final topic for Unit 2, which means we are ready for Exam 2. However, this semester has an awkward schedule, for two reasons: first is Section 2 is a full week behind Section 1 due to Spring Break days, and second is that next week is “Wellness week” and I cannot give an exam during that week. Thus:
We will proceed with 3.1 and 3.2 for the next two classes (Wed Mar 24 and Mon Mar 29) and have a review session on Wed Mar 31 for Exam 2. Topics 3.1 and 3.2 will not be on Exam 2, but will be on the Final Exam.
We will catch up and finish 2.6 on Tues Mar 30, and have a review session on Thur April 1.
Both sections will have Exam 2 the week of April 5.
You may recall from principles of microeconomics the concepts of consumer surplus and producer surplus in markets. While we will study them in our next unit with Supply & Demand, we can talk about the producer surplus to each firm here.
Producer surplus essentially measures the “gains from exchange” to each party — for a producer, it is how much they benefit (on net) from selling their output.
There are three equivalent ways of visualizing and measuring producer surplus for a firm. I will begin with a generalized series of cost curves:
These often converge, and are also easier to identify when marginal cost is linear (and thus, average variable cost is also linear, and starts at the same point as marginal cost, the shutdown price). Here it producer surplus becomes the familiar “triangle” between the market price and the supply curve. Note we can also calculate it as the rectangle of revenues minus variable costs (right).
Producer surplus (PS) looks a lot like profits \((\pi)\), but they are in fact different:
\[\begin{align*} \color{red}{PS} &= R(q) - VC\\ & \\ \color{green}{\pi} & = R(q) - C(q) \\ \color{green}{\pi} &= R(q) - VC(q)-f\\ & \\ \color{green}{\pi}-\color{red}{PS}&=-f\\ \color{green}{\pi}&=\color{red}{PS}-f\\ \end{align*}\]
Producer surplus does not include fixed costs \((f)\), but profit \((\pi)\) does.
If there are no fixed costs, then producer surplus and profits are the same thing.
This leads to some other implications connected with the shutdown condition \(p<AVC(q)\). A firm will always earn producer surplus, but may earn losses (negative profit) so long as the price is above the shutdown price. This is because each unit of output sold generates at least enough revenues as (non-fixed) variable costs, \(pq \geq VC(q)\) or (dividing by \(q)\) \(p \geq AVC(q)\).
A firm will shut down production in the short run if it earning no producer surplus. This would happen if it earns fewer revenues than (non-fixed) variable costs: \(pq < VC(q)\) or (dividing by \(q)\) \(p < AVC(q)\).
Thus producer surplus exists \(\iff p>AVC(q)\).
I was going to talk about external economies, which are cost externalities within an entire industry, but we will be skipping this for time. I put my slides here if you want to know more.
The idea is firms entering/exiting a profitable/unprofitable industry over the long run certainly shift the industry supply curve and change the market equilibrium. But in a lot of industries as more firms enter and produce and compete with one another, that might raise costs for all firms (increasing cost industry/external diseconomies) or lower costs for all firms (decreasing cost industry/external economies). These effects may create either an upward sloping, flat, or downward sloping industry supply curve over the long run.


Join the world's first online platform
for tech professionals in Palestine.
-
→ Find high-paying remote jobs, working with a wide range
of UK and international companies.
-
→ No more middle-men, speak directly with potential
employers and receive 100% of the contract.
-
→ Search for roles in a number of fields such as Software
Engineering, UX / UI Design, Digital Marketing, Product
Management, Data Science and many more.
-
→ Share advice and connect with other Palestinians both at
home and abroad on how to get your dream job.


Some Text
8.29.2018
This is a link
Here is some more information about this product that is only revealed once clicked on.


Please supply the following details for your project and the team. We need these to set up your project.
The project details have been submitted to Innovate UK
Project details
You are providing these details as the lead on behalf of the overall project.
| Question | Answer | Complete | |
|---|---|---|---|
|
Target start date
|
|
No Yes | |
|
Project address
|
|
No Yes | |
|
Project Manager
|
John Smith | - | No Yes |
You are not able to submit until all sections above are marked as complete.
Finance contacts
Each partner must provide a finance contact. We will contact them with any finance queries.
| Partner | Finance contact | Submitted |
|---|---|---|
|
|
|
Yes No |


{%extends 'base.html'%} {% block content %}
{{business.business_name}}
Description : {{business.business_desc}}
Location : {{business.business_hood}}
Email : {{business.business_email}}
Posted By : {{business.user.username}}