YI YI (A ONE AND A TWO) (director/writer: Edward Yang; cinematographer: Yang Weihan; editor: Chen Bowen; cast: Jonathan Chang (Yang-Yang), Yupang Chang (Fatty), Chen Xisheng (A-Di), Elaine Jin (Min-Min), Ke Suyun (Sherry Chang-Breitner), Kelly Lee (Ting-Ting), Adrian Lin (Lili), Issey Ogata (Mr. Ota), Tang Ruyun (Grandma), Michael Tao (Da-Da), Wu Nienjen (NJ Jian), Xiao Shushen (Xiao Yan), Xu Shuyuan (Lili's Mother), Zeng Xinyi (Yun-Yun); Runtime: 173; Winstar Cinema; 2000-Taiwan/France)
Reviewed by Dennis Schwartz
It should duly be noted this film won best film for 2000 by both the New York Critics Circle and the National Society of Film Critics over the popular other Taiwanese film nominated, Crouching Tiger, Hidden Dragon. Edward Yang (A Brighter Summer Day (1991)) wrote and directed Yi Yi; it's a 173-minute, contemporary film set in Taipei, about the middle-class Jian family and their individual struggles to find happiness. The family includes: the taciturn father NJ (Wu Nienjen), the sullen mother Min-Min (Elaine Jin), the sexually awakening high-school daughter Ting-Ting (Kelly Lee), the precocious eight year old Yang-Yang (Jonathan Chang), and the feeling too old grandmother (Tang Ruyun). They are all overwhelmed by what is happening to them, and feel stuck and all alone. They don't know how to communicate with each other, as each is deeply troubled by their own concerns.
The movie begins with the chaotic wedding preparations for the groom, A-Di (Chen Xisheng). He's Min-Min's brother and partner in a failing software computer business with her husband. The blustering hustler's uncouth bride, Xiao Yan (Xiao Shushen), is very obviously pregnant and is marrying him at this late date because he superstitiously follows the horoscope and this is listed as an auspicious day for the wedding. The family looks very awkward together at the reception - a portrait of the bride and groom is not hung correctly, the family rigidly poses for their wedding picture, and the groom's jilted girlfriend arrives inebriated and uninvited; and, she then becomes hysterical upsetting the reception.
By chance, NJ meets in the hotel lobby of the wedding reception his old high-school flame, Sherry (Ke Suyun). He will say later on that she is the only one he has ever loved, but for some unexplained reason he failed to meet her at a critical time of their relationship and they have not seen each other for over 20 years. She now lives in Chicago and is married to a wealthy American businessman, who is doing business in China.
Ting-Ting (Kelly Lee) feels guilty that granny has a stroke. At home, right after the wedding, she failed to take out the garbage in their luxury hi-rise apartment and granny was found lying in the driveway next to the dust bins. She believes granny was taking out the trash in place of her. Granny is discharged from the hospital; and, while at home, she remains bed-ridden and in a comatose state. The doctor suggests that part of the family therapy should be that they each talk to her so that she knows they care about her and this could stimulate her to awaken. She will not awaken from that state, except later on when the saddened teenage daughter has a fantasy scene that granny comforts her. When the family members try to communicate with granny, none of them can. The wife is upset that her life is in a rut and can only tell her trivial things. The teenage girl prefers to play the piano for her. The young kid doesn't know what to say. NJ can only suggest that the nurse reads to her from the newspapers. While grandmother's son could only shamefully boast that she shouldn't have worried so much about his bad habits and the way he always borrowed money from others, he has now invested wisely in stocks and is a rich man.
Within a few days Min-Min has a nervous breakdown and retreats to the mountain spot where her guru will counsel her. The futility of this venture is seen from the onset, when NJ writes the guru a check for his services. The mother will be gone in her religious retreat, while each member of the family goes through a crisis of their own. When she returns, she reports that nothing has changed for her.
NJ's midlife crisis is played out in Tokyo where he goes to court for his firm the only adult in the film he really respects, a Japanese inventor of computer games, Ota (Issey Ogata). The two developed an honest and intense relationship while Ota was in Taipei pitching his product. Both NJ's company and Ota have fallen on hard times, and need to have some cash flowing in; nevertheless, they are more concerned with their individual needs. While in Tokyo he will also court the only one he loves, as Sherry accompanies him there and they try to pick up where they left off as teenagers. But they seem to run into the same problems they had back then, an inability to reach each other despite the deep feelings of love they profess.
Ting-Ting's problems will revolve around her relationship with her new next door neighbor, a teenager called Lili (Adrian Lin). She immediately becomes close friends with the cello playing Lili. But later on a problem of loyalty arises between them, as the agitated boy called "Fatty" (Yupang Chang) that Lili was going out with is now interested in her. She has the same trouble in communicating in her relationship with him, as her father has currently with Sherry in Tokyo.
Yang-Yang is not only the namesake of the director, but speaks for him in this film. He tells his father innocently: "I can't see what you see and you can't see what I see. So how can I know what you see?" His father gives him a camera and he feels satisfied to take pictures of the backs of people's heads.  He is interested in discovering the truth people can't see about themselves. At one point of the film the director through the character who reacts the most emotional, the very thin "Fatty," tells his movie date that movies are not a waste of time, but enrich one's life. They even increase your life three times because the movies tell us about things we could never possibly know. He gives one example of murder, but that didn't go over too well with Ting-Ting.
This one is a masterpiece, despite it being as inexplicable as a great work of music sometimes is. It lays out the grief facing a problematic family and we see it happening, but we never quite understand why; and, we will have to accept as an answer that is because individuals are very complex and if they can't tell us what is on their mind, we can only guess what they are thinking. And, isn't that the way you find it with many people? Maybe finding happiness isn't so simple a matter. Maybe we are destined to follow a certain course and even if given a second chance would still make the same mistakes. The director knows that we are all unique and have our own way of seeing things, and he respects that. But whatever, there was a certain raw, undefinable power that this great filmmaker has that makes this story fulfilling; even if, we are never quite sure if we are fulfilled by what we saw. But one thing is certain, you can't put this iconoclastic filmmaker in a box and label him. I wouldn't miss this one. As entertaining a film as Crouching Tiger... was, it didn't have this film's depth and poignancy.
REVIEWED ON 5/24/2001 GRADE: A+
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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


Typography Features
Features that are vital to any template, easy to use and copy paste code. You can just copy and paste these features into boxes or into repsonsive boxes!
1/1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi bibendum accumsan ante.
Proin luctus congue sodales. Pellentesque vel mollis odio, ac facilisis arcu.
Etiam rutrum sem non risus condimentum, quis iaculis ligula facilisis.
1/1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi bibendum accumsan ante.
Proin luctus congue sodales. Pellentesque vel mollis odio, ac facilisis arcu.
Etiam rutrum sem non risus condimentum, quis iaculis ligula facilisis.
1/2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi bibendum accumsan ante.
Proin luctus congue sodales. Pellentesque vel mollis odio.
2/2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi bibendum accumsan ante.
Proin luctus congue sodales. Pellentesque vel mollis odio.
1/3
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi bibendum accumsan ante.
Proin luctus congue sodales.
2/3
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi bibendum accumsan ante.
Proin luctus congue sodales.
3/3
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi bibendum accumsan ante.
Proin luctus congue sodales.
Sample of text highlights
Text highlights are an awesome way to emphesize something important you want to show off!
This is a highlightand this is the text
This is a highlightand this is the text
This is a highlightand this is the text
This is a highlightand this is the text
This is a highlightand this is the text
This is a highlightand this is the text
This is a highlightand this is the text
This is a highlightand this is the text
Icon lists
Icon lists are absolutely awesome! They are very simple to use and they're retina!
- Address icon
- Block icon
- Bookmark icon
- Briefcase icon
- Bubble icon
- Buy icon
- Calendar icon
- Clipboard icon
- Clock icon
- Delete icon
- Diagram icon
- Document icon
- Down icon
- Flag icon
- Folder icon
- Gear icon
- Globe icon
- Heart icon
- Help icon
- Info icon
- Key icon
- Left icon
- Letter icon
- Monitor icon
- Pencil icon
- Plus icon
- Present icon
- Print icon
- Right icon
- Save icon
- Search icon
- Shield icon
- Statistics icon
- Stop icon
- Tick icon
- Trash icon
- Up icon
- User icon
- Walet icon
- Warning icon
- Home icon
- Label icon
- List item 1
- List item 2
- List item 3
- List item 4
- List item 5
- List item 1
- List item 2
- List item 3
- List item 4
- List item 5
Code structures
Maybe you're a developer and want to add code, maybe not, it's still an included option!
Simple notifications!
These notifications can be shown but they cannot be dismissed by tapping or closing!
Red notification!
Green notification!
Yellow notification!
Blue notification!
Left text.
This is a simple paragrahp aligned to the left side of the screen! This is a simple paragrahp aligned to the left side of the screen!
Center text.
This is a simple paragraph aligned to the center part of the screen! This is a simple paragraph aligned to the center part of the screen!
Right text.
This is a simple paragraph aligned to the right side of the screen! This is a simple paragraph aligned to the right side of the screen!
How about a table?
And it's pure CSS3! That means just fill in the data, and the table expands to fit the size you need!
| TABLE | PLUS | PRO |
|---|---|---|
| ONE | Yes | Yes |
| TWO | No | Yes |
| THREE | No | No |
| VALUE | $9.99 | $109.99 |


We redirect your Discord memes to a Rick Roll. That is the only purpose of all this garbage. Enjoy.
cdn.discordapp.com/example


TeamC5 Online Bookstore
Home
Search Book
Browse Books
Browse by Title
Browse by Author
Browse by ISBN
Browse by Category
{% if session['logged_in'] == True and session['userTypeID'] == 1 %} {% elif session['logged_in'] == True and session['userTypeID'] == 2 %}
Sign in
My Cart
View Profile
Order history


SQL (Single table operations)
Projected Time
About 3.5-4 hours
Prerequisites
Motivation
Most software applications store data of some sort – user data, content, etc. Databases are used to store data, so software developers should know how to use them. Relational databases are a common type of database that are good for storing many types of data. Most companies use relational databases to store their data.
Objectives
Participants will be able to:
- Interact with SQLite through the command line and through a GUI SQLite browser such as DB Browser for SQLite
- Create database tables
- Add, update, and delete data
- Query data
- Design a basic relational database schema fitting a use case
Specific Things to Learn
- Create a table
- Query data from a table
- Filter and limit
- Insert data into a table
- Update
- Delete
Materials
Lesson
- Read through lesson slides SQL
- Video walkthrough of lesson slides SQL
Common Mistakes / Misconceptions
- SQL commands are case-insensitive. This is unlike most programming languages! For example, in SQL, these two commands will both do the same thing:
SELECT * FROM food;
select * From fOOd;
- Don’t forget the semicolons! SQL commands will only run if you put a semicolon at the end of them.
Independent Practice
Section 1: Creating tables and basic querying
- Work through the Codecademy SQL Tutorial Section 1 (Manipulation):
- SQLite is a version of SQL that comes installed on mac! Try it out:
- In Terminal, type
sqlite3 food.sqlite3
to use SQLite. This command will open sqlite and save your database to a file named food.sqlite3
.
- Try adding a table with the command
CREATE TABLE food (name TEXT, calories INTEGER);
- See that the table was created by typing
.tables
to see the list of all existing tables.
- Try adding some data:
INSERT INTO food VALUES ("pizza", 500);
- See the data:
SELECT * from food;
Using SQLite, try creating tables and adding, updating, deleting, and querying data yourself!
Download and install DB Browser for SQLite via its download page. Try opening the database you just created! Browse the data and get a feel for how to move around. One way to view SQL data is through the command line, and another way is through graphical tools like the SQLite Browser.
- Try writing queries for the following using the
food
table:
- Add a column to the table called
meal
- Update “pizza" to have its meal be “dinner"
- Insert 4 more rows into the food DB. Be sure to include values for all 3 columns –
name
, calories
, and meal
- Update “pizza" to have a different calories number
- Select only the names of all the foods
- Make up a query of your own using another command you’ve learned
Section 2: Queries
Work through the Codecademy SQL Tutorial Section 2 (Queries)
- In sqlite, try writing queries for the following using the
food
table. Add some data to the table that meets the criteria below so you’ll have something to query for.
- Select all foods that have under 100 calories
- Select the names of all foods that start with the letter “a"
- Select all foods that start with “a" AND have meal equal to “dinner"
- Select all foods where meal is “breakfast", sorted by calorie number
- Make up a query of your own using another command you’ve learned
Section 3: Advanced queries
Now do the Codecademy SQL Tutorial Section 3 (Aggregate functions)
- Try writing queries for the following using the
food
table:
- Count the number of rows in the food table
- Find the food with the maximum number of calories
- Find the average number of calories for breakfast food
- Make up a query of your own using another command you’ve learned
Supplemental Materials


Mote VM is a byte-code compiler written in a cross platform Javascript and should be usable on any modern complete browser. (At the time this code was written, IE6 was considered a modern browser.)
See it in action here


Best practices. Problems and solutions
public static void main(String[] args) {
System.out.println(MyUtil.executeMyAlgorithm("Hello Dolly!"));
}
>> I said hello, Dolly
@Test
public void shouldSayHelloDollyWhenPassingHelloDolly() {
assertThat(MyUtil.executeMyAlgorithm("Hello Dolly!"))
.isEqualTo("I said hello, Dolly");
}
Software development technique where you write your automated tests before(!) you write implementation
Software development technique where you write your automated tests together(!) with your implementation
| Yes | No |
|---|---|
Bonus: Find bugs before Implementation sent to QA (or even before bug introduced)
Bonus: Easier team scalability ((!) managers killer)
Disadvantage: Time spent
If I don't need to make it work, I can go a lot faster. (c) Kent Beck (JUnit creator)
(!) Typing is not an issue!
Disadvantage: Time spent
Bonus: No need to write(read) developer documentation
Unit testing - is a software testing method by which individual units of source code.
Integration testing - is software testing method in which individual software modules are combined and tested as a group.
JUnit
Google test
@Test
public void shouldReturnHelloWorld(){
//create mock
Iterator iMock=mock(Iterator.class);
when(iMock.next()).thenReturn("Hello").thenReturn("World");
//invoke
String result=iMock.next()+" "+iMock.next();
//assert
assertEquals("Hello World", result);
verify(iMock, times(2)).next();
}
Coverage - is a measure used to describe the degree to which the source code of a program is tested by a particular test suite.
- Class coverage
- Method coverage
- Line(Statement) coverage
- Branch coverage
- Condition coverage
public int summ (String x, String y){
return Integer.parseInt(x) + Integer.parseInt(y);
}
| \ | +N | -N | 0 | IMax | IMin | null | sNum | NaN |
|---|---|---|---|---|---|---|---|---|
| +N | +N | N | =+N | Ex | -N | Ex | N | Ex |
| -N | N | =-N | -N | N | Ex | Ex | N | Ex |
| 0 | ... | ... | ... | ... | ... | ... | ... | ... |
| IMax | ... | ... | ... | ... | ... | ... | ... | ... |
| \ | +N | -N | 0 | IMax | IMin | null | sNum | NaN |
|---|---|---|---|---|---|---|---|---|
| +N | +N | N | =+N | Ex | -N | Ex | N | Ex |
@Test
public void shouldReturnSumm(){
assertThat(summ("3", "5")).isEqualTo(8);
}
...
@Test (expected = NumberFormatException.class)
public void shouldThrowExWhenPassingNull(){
assertThat(summ(null, "5"));
}
Bonus: Less time spend for work
Bonus: Promotions and Salary Raise
Bonus: Sleep Well


This week once I had begun the JavaScript Racer assignment I got blocked pretty quickly. It was tricky trying to figure out where even to start. I wasn't sure which things we had learned so far would be the best to apply to this assignment. And it was pretty depressing being confused even at the beginning.
To get over this initial challenge of even just starting I found pseudocoding really helpful. Once I had a basic idea of what functions I needed to make I found it easier to look through my notes and Google for help. I learned that even just speaking out what you are trying to acheive can help.
In this weeks JavaScript Racer assignment I found it difficult getting my head around how to move the active class along the table. I managed to solve this by finding different examples of how others had acheived similar effects and inspecting the code. This helped me to work backwards and figure out how it could work in my own code. This process was frustrating at times but also rewarding when it worked.
I find trying things out and Googling if I get stuck an effective way of problem solving. Reading error messages, especially looking up what they may mean is also helpful.
These array methods are handy for writing succinct code.
Map: the map() method creates a new array with the results of calling a provided function on every element in this array.
Filter: the filter() method creates a new array with all the elements that pass the test implemented by the function e.g. finding all the items in the array that have the name 'pink'.
Reduce: the reduce() method applies a function against an accumulator and each value of the array (from left-to-right) has to reduce it to a single value.
These examples are helpful.


“You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.”
—Joe Armstrong
Pragmatic Architecture Patterns
you build systems
build
understandable
systems
build
understandable, testable
systems
build
understandable, testable, maintainable
systems
build new or transform existing systems
such that they are
understandable, testable, maintainable
Why is this so challenging in practice?
We learned that it was sufficient to
hide complexity
behind reasonable, coherent interfaces
But is convenient callability enough?
Example: Let’s build a dashboard populated with data from a Web API
def get_open_pull_requests(owner, repository): url = 'https://api.bitbucket.org/2.0/repositories/{}/{}/{}' \ .format(owner, repository, 'pullrequests') response = requests.get(url) # I/O open_requests = [] for pr in response.json()['values']: # I/O open_requests.append({ 'author': pr['author']['username'], 'title': pr['title'], }) return open_requests
The external interface is convenient
>>> get_open_pull_requests('drocco', 'some_repo') [{'title': 'Never Said I Was an Angel', 'author': 'pauline'}]
but
Inside the encapsulation is a coupled procedure
def get_open_pull_requests(owner, repository): url = 'https://api.bitbucket.org/2.0/repositories/{}/{}/{}' \ .format(owner, repository, 'pullrequests') response = requests.get(url) # I/O open_requests = [] for pr in response.json()['values']: # I/O open_requests.append({ 'author': pr['author']['username'], 'title': pr['title'], }) return open_requests
def get_open_pull_requests(owner, repository): ··· = '···················································' \ .······(·····, ··········, '············') response = requests.get(url) # I/O ············· = [] ··· ·· ·· response.json()['values']: # I/O ·············.······({ '······': ··['······']['········'], '·····': ··['·····'], }) ······ ·············
Why does it matter?
It matters because you want to build
understandable, testable, maintainable
systems
The issue is complexity
Simple is better than complex
Coupled procedures are inherently complex
Coupled procedures are hard to
understand, test, maintain
What are we trying to test?
well, …
What does our system care about?
Given a correct response from the API,
return the appropriate bits from the payload.
We need to test our logic in
get_open_pull_requests()
with a variety of responses
Higher-level question:
In general, how can we build testable systems that have nontrivial, stateful dependencies?
disk, Web, database, …
Common approach: fake it
Fake it: build API-compatible replacements for your dependencies with test fixture support
| Mock | (general) |
| WebTest | (WSGI) |
| responses, httpretty, … | (HTTP client) |
| SQLite, transaction wrappers | (DB) |
| mocks, stubs, doubles, … | (domain) |
Faking it has
problems
Test and production calls are asymmetric
Production:
open_prs = get_open_pull_requests('drocco', 'repo')
Test:
def test_get_open_pr(): fake = FakeRequests(data={…}) with mock.patch('requests.get', fake.get): open_prs = get_open_pull_requests('drocco', 'repo')
Your mock isn’t the real library
But more importantly,
Faking it doen’t put
design pressure
on the complexity of your system
The real benefit of isolated tests is that those tests put tremendous pressure on our designs
—J B Rainsberger
Testing forces us to decouple the software, since highly-coupled software is more difficult to test
—Uncle Bob Martin
Is there an alternative?
Fake it: build API-compatible replacements for your dependencies with test fixture support
Fake it: build API-compatible replacements for your dependencies with test fixture support
Clean Architecture: separate policies from mechanisms and pass simple data structures between the two
How do I recognize hidden complexity?
What patterns can I apply to remedy it?
How do I build systems I can change confidently?
How do I organize larger systems?
def get_open_pull_requests(owner, repository): url = 'https://api.bitbucket.org/2.0/repositories/{}/{}/{}' \ .format(owner, repository, 'pullrequests') response = requests.get(url) # I/O open_requests = [] for pr in response.json()['values']: # I/O open_requests.append({ 'author': pr['author']['username'], 'title': pr['title'], }) return open_requests
Promote I/O:
decouple by separating
domain policies from I/O
I/O lives in thin, “procedural glue” layer
def get_open_pull_requests(owner, repository): url = 'https://api.bitbucket.org/2.0/repositories/{}/{}/{}' \ .format(owner, repository, 'pullrequests') response = requests.get(url) # I/O open_requests = [] for pr in response.json()['values']: # I/O open_requests.append({ 'author': pr['author']['username'], 'title': pr['title'], }) return open_requests
becomes
def get_open_pull_requests(owner, repository): url = build_url(owner, repository) response = requests.get(url) # I/O data = response.json() # I/O return extract_pull_requests(data)
Highly abstracted, readable manager procedure
def get_open_pull_requests(owner, repository): url = build_url(owner, repository) response = requests.get(url) # I/O data = response.json() # I/O return extract_pull_requests(data)
Instead of encapsulating I/O, we promote it
def get_open_pull_requests(owner, repository): ··· = ·········(······ ··········) response = requests.get(url) # I/O data = response.json() # I/O ······ ·····················(····)
Eliminating the I/O dependency in our logic
def build_url(owner, repository): return 'https://api.bitbucket.org/2.0/repositories/{}/{}/{}' \ .format(owner, repository, 'pullrequests') def extract_pull_requests(data): open_requests = [] for pr in data['values']: open_requests.append({ 'author': pr['author']['username'], 'title': pr['title'], }) return open_requests
Policies are clearly separated from mechanisms
def build_url(owner, repository): return 'https://api.bitbucket.org/2.0/repositories/{}/{}/{}' \ .format(owner, repository, 'pullrequests') def extract_pull_requests(data): open_requests = [] for pr in data['values']: open_requests.append({ 'author': pr['author']['username'], 'title': pr['title'], }) return open_requests
Policies are easily testable using simple data
def test_build_url(): expected = 'https://api.bitbucket.org/2.0/repositories' \ '/drocco/repo/pullrequests' assert expected == build_url('drocco', 'repo') def test_extract_with_no_pull_requests(): assert not extract_pull_requests({'values': []}) def test_extract_pull_requests(): pr_data = {'values': [{'author': {'username': 'amber'}, 'title': 'Add git mastery lessons'}]} assert 'amber' == extract_pull_requests(pr_data)['author']
By improving the testability of this code,
we have also improved its
design
Another problem
Given a root path, return a list of setseach set containing all pathsthat have identical contents
Here’s the idea:
In [1]: locate_paths_with_same_content('~/photos') Out[1]: [{'a.jpg'}, {'b.jpg', 'backup/copy_of_b.jpg'}, …]
My first attempt
def locate_paths_with_same_content(root): file_map = defaultdict(set) for path in locate_files(root): # I/O file_hash = hash_contents(path) # I/O file_map[file_hash].add(path) return file_map.values()
def locate_paths_with_same_content(root): ········ = ···········(···) for path in locate_files(root): # I/O ········· = ·············(····) # I/O ·······················(····) ······ ···············()
def locate_paths_with_same_content(root): ········ = ···········(···) for ···· ·· ············(····): # I/O file_hash = hash_contents(path) # I/O ·······················(····) ······ ···············()
How would you test this?
def locate_paths_with_same_content(root): file_map = defaultdict(set) for path in locate_files(root): # I/O file_hash = hash_contents(path) # I/O file_map[file_hash].add(path) return file_map.values()
locate_files() and hash_contents()
are embedded within the procedure’s logic
As we have seen, coupling is not an abstract, theoretical problem
locate_files() and hash_contents()
depend on the state of the disk
which means…
Your tests
depend on the state of the disk
(or on the energy you’re willing to expend simulating that state)
def locate_paths_with_same_content(root): file_map = defaultdict(set) for path in locate_files(root): # I/O file_hash = hash_contents(path) # I/O file_map[file_hash].add(path) return file_map.values()
A (very short) walk down the path of destruction
def test_simple_case(): # generate a bunch of files with known values, yielding # the root of the temporary tree as the context variable with horrible_tmp_tree_context_1() as temproot: assert magical_expected_value == locate_paths_with_same_content(temproot)
Simple is better than complex
This isn’t simple…
You’ll need context managers for
various classes of test cases
Realistically,
how many test cases
will you have the energy to write this way?
It’ll be slow
slow → inefficient
Stepping back
What do we actually care about here?
Given a root path, return a list of setseach set containing all pathsthat have identical contents
in other words,
if we subtract these assumptions
from our subroutine
def locate_paths_with_same_content(root): file_map = defaultdict(set) for path in ×××: file_hash = ××× file_map[file_hash].add(path) return file_map.values()
We care that
For our testing purposes,
coupling is a distraction
First, apply Pattern 1: Promote I/O
def locate_paths_with_same_content(root): # …
↓
def locate_paths_with_same_content(root): paths = locate_files(root) # I/O return paths_with_same_hash(paths) def paths_with_same_hash(paths): file_map = defaultdict(set) for path in paths: file_hash = hash_contents(path) # I/O file_map[file_hash].add(path) return file_map.values()
Already an improvement, but…
def paths_with_same_hash(paths): file_map = defaultdict(set) for path in paths: file_hash = hash_contents(path) # I/O file_map[file_hash].add(path) return file_map.values()
def paths_with_same_hash(paths): file_map = defaultdict(set) for path in paths: file_hash = hash_contents(path) # I/O file_map[file_hash].add(path) return file_map.values()
for path in paths: file_hash = hash_contents(path) # I/O
Data and Transforms
def locate_paths_with_same_content(root): paths = locate_files(root) # I/O annotated_paths = hash_paths(paths) # I/O return paths_with_same_hash(annotated_paths) def hash_paths(paths): return [(hash_contents(path), path) for path in paths] # I/O def paths_with_same_hash(annotated_paths): file_map = defaultdict(set) for file_hash, path in annotated_paths: file_map[file_hash].add(path) return file_map.values()
def hash_paths(paths): return [(hash_contents(path), path) for path in paths] # I/O
def paths_with_same_hash(annotated_paths): file_map = defaultdict(set) for file_hash, path in annotated_paths: file_map[file_hash].add(path) return file_map.values()
Policy is easily tested with simple data
def test_simple_difference(): annotated_paths = [('0xdead', 'a.jpg'), ('0xbeef', 'b.jpg')] assert 2 == len(paths_with_same_hash(annotated_paths)) def test_simple_match(): annotated_paths = [('0000', 'b.jpg'), ('0000', 'also_b.jpg')] assert 1 == len(paths_with_same_hash(annotated_paths))
From my domain: has a candidate reached the application limit for an exam?
def get_available_sections(user, exam_type, …): # … fail_dates = [] for app in user.applications: if not app.withdrawn: # … if exam_type == app.exam_type: fail_dates.append(app.exam_date) def handle_application_limit_reached(): limit_msg = format_limit_message(exam_type) raise ApplicationLimitReachedException(limit_msg) if exam_type.limit_applications: if len(fail_dates) >= exam_type.application_limit: if exam_type.application_limit_interval == 'ever': handle_application_limit_reached() else: fail_dates.sort() limit_date = fail_dates[-exam_type.application_limit] + … if third_party and limit_date > now: handle_application_limit_reached()
Don’t try to read it,
just scan for overall structure
def get_available_sections(user, exam_type, …): # … fail_dates = [] for app in user.applications: if not app.withdrawn: # … if exam_type == app.exam_type: fail_dates.append(app.exam_date) def handle_application_limit_reached(): limit_msg = format_limit_message(exam_type) raise ApplicationLimitReachedException(limit_msg) if exam_type.limit_applications: if len(fail_dates) >= exam_type.application_limit: if exam_type.application_limit_interval == 'ever': handle_application_limit_reached() else: fail_dates.sort() limit_date = fail_dates[-exam_type.application_limit] + … if third_party and limit_date > now: handle_application_limit_reached()
Danger signs
def get_available_sections(user, exam_type, …):
Let’s tackle fail_dates, applying multiple Pattern 2 transforms…
Handling of fail_dates is obscure, spread out
def get_available_sections(user, exam_type, …): fail_dates = [] for app in user.applications: if not app.withdrawn: if exam_type == app.exam_type: fail_dates.append(app.exam_date) if …: if len(fail_dates) >= exam_type.application_limit: if …: else: fail_dates.sort() limit_date = fail_dates[-exam_type.application_limit] + …
Input data: candidate applications
def get_available_sections(user, exam_type, …): for app in user.applications:
Four transforms
Filter out withdrawn applications:
def get_available_sections(user, exam_type, …): for app in user.applications: if not app.withdrawn: fail_dates.append(app.exam_date)
Filter out applications for other exams:
def get_available_sections(user, exam_type, …): for app in user.applications: if exam_type == app.exam_type: fail_dates.append(app.exam_date)
Extract the exam date
def get_available_sections(user, exam_type, …): fail_dates.append(app.exam_date)
– and –
Sort the result
Obscure purpose,
Cryptic implementation
Pipeline: apply a series of transforms to achieve the result you need
Filter out withdrawn applications:
def not_withdrawn(applications): return [application for application in applications if application.status_name != 'withdrawn']
Filter applications to the correct type:
def of_type(applications, exam_type): return [application for application in applications if application.exam_type == exam_type]
Connect the pipeline
prior_apps = not_withdrawn(of_type(user.applications, exam_type)) fail_dates = sorted(app.exam_date for app in prior_apps)
Pipeline allows a complex transform
to be expressed as a
series of simple transforms
prior_apps = not_withdrawn(of_type(user.applications, exam_type)) fail_dates = sorted(app.exam_date for app in prior_apps)
These transforms are easily tested
and convenient to reuse
prior_apps = not_withdrawn(of_type(user.applications, exam_type)) fail_dates = sorted(app.exam_date for app in prior_apps)
So far
build new or transform existing systems
such that they are
understandable, testable, maintainable
A common approach uses coupled procedures
with fake implementations for testing
instead…
Build systems around
functional transforms
of simple values and data structures
No one argues the
high-level expressivity & convenient testability
of pure functions
So what’s the problem?
>>> objections = {'a'} | {'b'}
“That’s a fine academic toy,
but it can’t build real systems.”
(“real” generally being a euphemism
for “HTML-producing” ;)
“We can’t afford to
rewrite
our whole system!”
These concerns are understandable,
but not true
You don’t need a full rewrite
(and you definitely should not attempt one)
You can build real systems this way
Simple is better than complex
Build systems around
functional transforms
of simple values and data structures
Apply the Clean Architecture
— Uncle Bob Martin
Tools for applying the Clean Architecture to existing systems and new work
How do you organize a system this way?
Another real example
@expose() @identity.require(identity.has_permission('agreement_delete')) def delete(self, id): agreement = EndUserAgreement.get(id) if agreement.start_date <= date.today(): return {'success': False, 'msg': 'Error: already active'} if EndUserAgreement.query.count() == 1: return {'success': False, 'msg': 'Error: only agreement'} # In order to ensure there are no gaps in agreements, … previous_agreement = self.get_previous(agreement.start_date, id) if previous_agreement: previous_agreement.end_date = agreement.end_date elif agreement.end_date: # If the deleted agreement was the first one, then we find… next_agreement = self.get_next(agreement.start_date, id) if next_agreement: next_agreement.start_date = agreement.start_date agreement.delete() return {'success': True}
Fetch the agreement to delete from the ORM
def delete(self, id): agreement = EndUserAgreement.get(id) # …
Check that it is not yet active
def delete(self, id): # … if agreement.start_date <= date.today(): return {'success': False, 'msg': 'Error: already active'} # …
(and format a message back if it is)
and that it is not the only agreement
def delete(self, id): # … if EndUserAgreement.query.count() == 1: return {'success': False, 'msg': 'Error: only agreement'} # …
def delete(self, id): # … previous_agreement = self.get_previous(agreement.start_date, id) if previous_agreement: previous_agreement.end_date = agreement.end_date elif agreement.end_date: next_agreement = self.get_next(agreement.start_date, id) if next_agreement: next_agreement.start_date = agreement.start_date
Engage
def delete(self, id): # … agreement.delete() return {'success': True}
Again…
How would you test this?
How would you test
@expose() @identity.require(identity.has_permission('agreement_delete')) def delete(self, id): agreement = EndUserAgreement.get(id) if agreement.start_date <= date.today(): return {'success': False, 'msg': 'Error: already active'} if EndUserAgreement.query.count() == 1: return {'success': False, 'msg': 'Error: only agreement'} # In order to ensure there are no gaps in agreements, … previous_agreement = self.get_previous(agreement.start_date, id) if previous_agreement: previous_agreement.end_date = agreement.end_date elif agreement.end_date: # If the deleted agreement was the first one, then we find… next_agreement = self.get_next(agreement.start_date, id) if next_agreement: next_agreement.start_date = agreement.start_date agreement.delete() return {'success': True}
How would you implement
custom rules
if a client asked?
How could we possibly convert
delete()
to a pure functional form?
(for Pete’s sake, dan, even the name has state mutation in it!)
Functional core, imperative shell
Imperative shell:
procedural “glue” that offers
an OO interface & manages dependencies
Functional core:
implements all the decisions
Never mix decisions and dependencies
logic goes only in the functional core
dependencies go only in the imperative shell
Pass simple data between the two
@expose() @identity.require(identity.has_permission('agreement_delete')) def delete(self, id): agreement = EndUserAgreement.get(id) if agreement.start_date <= date.today(): return {'success': False, 'msg': 'Error: already active'} if EndUserAgreement.query.count() == 1: return {'success': False, 'msg': 'Error: only agreement'} # In order to ensure there are no gaps in agreements, … previous_agreement = self.get_previous(agreement.start_date, id) if previous_agreement: previous_agreement.end_date = agreement.end_date elif agreement.end_date: # If the deleted agreement was the first one, then we find… next_agreement = self.get_next(agreement.start_date, id) if next_agreement: next_agreement.start_date = agreement.start_date agreement.delete() return {'success': True}
Step 0: EAFP
@expose() @identity.require(identity.has_permission('agreement_delete')) @error_handler(handle_REST_error) def delete(self, id): agreement = EndUserAgreement.get(id) if agreement.start_date <= date.today(): raise ValueError('Already active') if EndUserAgreement.query.count() == 1: raise ValueError('Only agreement') # In order to ensure there are no gaps in agreements, … previous_agreement = self.get_previous(agreement.start_date, id) if previous_agreement: previous_agreement.end_date = agreement.end_date elif agreement.end_date: # If the deleted agreement was the first one, then we find… next_agreement = self.get_next(agreement.start_date, id) if next_agreement: next_agreement.start_date = agreement.start_date agreement.delete()
Step 1: pull out eveything that isn’t dispatch
@expose() @identity.require(identity.has_permission('agreement_delete')) @error_handler(handle_REST_error) def delete(self, id): agreements.delete(id)
Our HTTP endpoint now does its
one job
call routing
@expose() @identity.require(identity.has_permission('agreement_delete')) @error_handler(handle_REST_error) def delete(self, id): agreements.delete(id)
(error handler left as an exercise ;)
We’ve reduced its responsibility surface four fold
It no longer has to change with
@expose() @identity.require(identity.has_permission('agreement_delete')) @error_handler(handle_REST_error) def delete(self, id): agreements.delete(id)
agreements is a manager object in the imperative shell
agreements gathers all the dependencies: stateful objects, system settings, required libraries
What does it look like?
# agreements.py (imperative shell) def delete(assignment_id): agreement = EndUserAgreement.get(id) all_agreements = EndUserAgreement.query assert_removable(agreement, all_agreements) # date adjustments temporariliy elided… agreement.delete()
Notice the divison of labor
agreements.delete()
whereas
assert_removable()
FauxO Litmus test
>>> from collections import namedtuple >>> Agreement = namedtuple('Agreement', 'start_date end_date')
# agreements_core.py (functional core) >>> def assert_removable(agreement, all_agreements): ... assert agreement and agreement in all_agreements, \ ... 'Invalid agreement' ... assert agreement.start_date > date.today(), \ ... 'Agreement already active' ... assert len(all_agreements) > 1, \ ... 'Cannot remove only agreement'
>>> from datetime import date, timedelta >>> tomorrow = date.today() + timedelta(1) >>> only_agreement = Agreement(tomorrow, None) >>> assert_removable(only_agreement, [only_agreement]) Traceback (most recent call last): ... AssertionError: Cannot remove only agreement
>>> really_planning_ahead = date(3025, 1, 1) >>> current_agreement = Agreement(date.today(), really_planning_ahead) >>> next_agreement = Agreement(really_planning_ahead, None) >>> assert_removable(next_agreement, [current_agreement, next_agreement])
>>> assert_removable(current_agreement, [current_agreement, next_agreement]) Traceback (most recent call last): ... AssertionError: Agreement already active
Next: date adjustments
def delete(assignment_id): agreement = EndUserAgreement.get(id) all_agreements = EndUserAgreement.query assert_removable(agreement, all_agreements) # In order to ensure there are no gaps in agreements, … previous_agreement = self.get_previous(agreement.start_date, id) if previous_agreement: previous_agreement.end_date = agreement.end_date elif agreement.end_date: # If the deleted agreement was the first one, then we find… next_agreement = self.get_next(agreement.start_date, id) if next_agreement: next_agreement.start_date = agreement.start_date agreement.delete()
Challenge: disentangle the mutation from the rules
Rules
Shell assigns a value computed by the core
# agreements.py (step 4) (imperative shell) def delete(assignment_id): agreement = EndUserAgreement.get(id) all_agreements = EndUserAgreement.query assert_removable(agreement, all_agreements) adjust_dates_for_delete(agreement) agreement.delete()
# agreements.py (step 4) (imperative shell) def adjust_dates_for_delete(agreement): previous = self.get_previous(agreement.start_date, agreement.id) next = self.get_next(agreement.start_date, id) target_agreement, updated_dates = \ get_agreement_update(previous, agreement, next) target_agreement.update(updated_dates)
# agreements_core.py (step 4) (functional core) def get_agreement_update(previous, agreement, next) if previous_agreement: return previous_agreement, {'end_date': agreement.end_date} else: return next_agreement, {'start_date': agreement.start_date}
The core implements the rules
Stepping back
We started here
@expose() @identity.require(identity.has_permission('agreement_delete')) def delete(self, id): agreement = EndUserAgreement.get(id) if agreement.start_date <= date.today(): return {'success': False, 'msg': 'Error: already active'} if EndUserAgreement.query.count() == 1: return {'success': False, 'msg': 'Error: only agreement'} # In order to ensure there are no gaps in agreements, … previous_agreement = self.get_previous(agreement.start_date, id) if previous_agreement: previous_agreement.end_date = agreement.end_date elif agreement.end_date: # If the deleted agreement was the first one, then we find… next_agreement = self.get_next(agreement.start_date, id) if next_agreement: next_agreement.start_date = agreement.start_date agreement.delete() return {'success': True}
mixed responsibilities
unclear rules
monolithic expression of intent
Practically untestable
Our functional core
def assert_removable(agreement, all_agreements): assert agreement and agreement in all_agreements, \ 'Invalid agreement' assert agreement.start_date > date.today(), \ 'Agreement already active' assert len(all_agreements) > 1, \ 'Cannot remove only agreement' def get_agreement_update(previous, agreement, next) if previous_agreement: return previous_agreement, {'end_date': agreement.end_date} else: return next_agreement, {'start_date': agreement.start_date}
def assert_removable(agreement, all_agreements): assert agreement and agreement in all_agreements, \ 'Invalid agreement' assert agreement.start_date > date.today(), \ 'Agreement already active' assert len(all_agreements) > 1, \ 'Cannot remove only agreement' def get_agreement_update(previous, agreement, next) if previous_agreement: return previous_agreement, {'end_date': agreement.end_date} else: return next_agreement, {'start_date': agreement.start_date}
Easily testable using simple data structures
Clear assignment of responsibilities
FauxO interface provides a
familiar façade
to the rest of the system
Our HTTP endpoint
@expose() @identity.require(identity.has_permission('agreement_delete')) @error_handler(handle_REST_error) def delete(self, id): agreements.delete(id)
Our imperative shell
def delete(assignment_id): agreement = EndUserAgreement.get(id) all_agreements = EndUserAgreement.query assert_removable(agreement, all_agreements) adjust_dates_for_delete(agreement) agreement.delete()
Imperative shell (cont.)
def adjust_dates_for_delete(agreement): previous = self.get_previous(agreement.start_date, agreement.id) next = self.get_next(agreement.start_date, id) target_agreement, updated_dates = \ get_agreement_update(previous, agreement, next) target_agreement.update(updated_dates)
Last examples from a
real system
that really serves
real HTML!
Thoughts for systems
Connect shells to each other
Or to existing legacy subsystems
Pluggable components
T.S. Eliot
Immature poets imitate;
Immature poets imitate;
mature poets steal
—T.S. Eliot
Special thanks to
Brandon Rhodes the Great
from whom I’ve stolen many ideas over the years
Thank you!
♥
@drocco007


I really enjoy maths: here are two things that I've produced recently. The first is a graphing program which shows the whole plane inside a finite circle. The second is a set of notes I produced for a course into combinatorial game theory.


-
.open()
-
The ".open()" method manually opens an AccDC Object.
-
Syntax
$A.reg.myObj.open();
-
.close()
-
The ".close()" method manually closes an AccDC Object.
-
Syntax
$A([
{
runAfter: function(dc){
dc.close();
},
...
}
]);
// Or
$A.reg.myObj.close();
-
.allowMultiple
-
The ".allowMultiple" property determines if an AccDC Object will automatically be closed when another AccDC Object is opened.
-
Values: True or False (default)
Syntax
$A([
{
allowMultiple: true,
...
}
]);
// Or
$A.reg.myObj.allowMultiple = false;
Important
-
The "allowMultiple" property only affects AccDC Objects declared in the same array when passed to "$A()" for registration.
-
.allowReopen
-
The ".allowReopen" property determines whether an AccDC Object can be repeatedly opened.
-
Values: True or False (default)
Syntax
$A([
{
allowReopen: true,
...
}
]);
// Or
$A.reg.myObj.allowReopen = false;
Important
-
The "allowReopen" property cannot be used in conjunction with the "isToggle" property.
-
.isToggle
-
The ".isToggle" property specifies that an AccDC Object will toggle between open or closed when activated.
-
Values: True or False (default)
Optional screen reader accessible hidden text that conveys dynamically updating Role and State information is automatically added to each triggering element when "isToggle" is set to True.
(View the Automatic Accessibility Framework section for details regarding related AccDC Toggle Control properties.)
Syntax
$A([
{
isToggle: true;
...
}
]);
Important
-
View the "toggleRole" and "toggleState" properties in the Automatic Accessibility Framework section to see how screen reader accessible hidden text is used to aid navigation for screen reader users.
Required:
-
The triggering element must be an object that supports innerHTML, such as an A tag or BUTTON tag to ensure proper functionality;
-
The "isToggle" property cannot be used in conjunction with the "allowReopen" property;
-
.isStatic
-
The "isStatic" property specifies a container element where an AccDC Object will be inserted.
-
Values: CSS Selector or DOM node
Syntax
$A([
{
isStatic: 'div.container',
...
}
]);
// Or
$A.reg.myObj.isStatic = DOMNode;
Important
-
When "isStatic" is changed at runtime, the change will take affect the next time the AccDC Object opens.
-
The "append" or "prepend" properties can be optionally set to append or prepend AccDC Objects to container elements instead of overwriting content.
append: true,
// or
prepend: true,
-
.isTab
-
The "isTab" property specifies whether an AccDC Object is a tab control.
-
Values: True or False (default)
Optional screen reader accessible hidden text that conveys dynamically updating Role and State information is automatically added to each triggering element when "isTab" is set to True.
(View the Automatic Accessibility Framework section for details regarding related AccDC Tab Control properties.)
Syntax
$A([
{
isTab: true,
...
}
]);
// Or
$A([
{
...
},
{
...
},
{
...
}
], {
isTab: true,
...
});
Important
-
View the "tabRole" and "tabState" properties in the Automatic Accessibility Framework section to see how screen reader accessible hidden text is used to aid navigation for screen reader users.
Required:
-
The triggering element must be an object that supports innerHTML, such as an A tag or BUTTON tag to ensure proper functionality;
-
.autoStart
-
The "autoStart" property specifies that an AccDC Object will automatically open when registered.
-
Values: True or False (default)
Syntax
$A([
{
autoStart: true,
...
}
]);
Important
-
When an AccDC Object opens, all other AccDC Objects declared in the same "$A()" array will be closed;
-
Set the "allowMultiple" property to prevent associated AccDC Objects from closing automatically when others are opened.
-
$A.genId()
-
The "$A.genId()" method generates a unique ID timestamp.
-
Syntax
var myId = 'myId' + $A.genId();
-
$A.setFocus()
-
The ".$A.setFocus()" method manually sets keyboard focus on any non-focusable DOM node.
-
Syntax
$A.setFocus(document.getElementById('myDiv'));


Ontario court quashes province's post-secondary student fee opt out order
TORONTO — An Ontario court has struck down a provincial government order that made some post-secondary student fees optional.
by Canadian PressTORONTO — An Ontario court has struck down a provincial government order that made some post-secondary student fees optional.
Last December, Premier Doug Ford's cabinet approved the order and later put it into effect in what it called the "Student Choice Initiative."
The Canadian Federation of Students and York Federation of Students filed a legal challenge, arguing the move was a politically motivated attack on student unions and services that threatened university independence.
The groups said the change was arbitrary and threatened student-led programs such as clubs, campus newspapers, food banks and other support services, and part-time jobs.
The government contended that students should have more choice as to which campus services they support.
In its unanimous ruling, the Ontario Superior Court of Justice Divisional Court said the government's decision to enact the policy was beyond its legislative authority.
"Requiring that universities allow students to opt out of student association fees and other "non-essential" services is inconsistent with the universities' autonomous governance," a panel of justices said in the ruling released on Thursday.
The Canadian Federation of Students and the York Federation of Students said they would hold a joint news conference Friday to respond to the ruling.
"Today the Ontario Divisional Court has confirmed what students already knew: The Student Choice Initiative is unlawful, and the Ford government acted beyond their authority," Kayla Weiler, a CFS representative, said in a release.
"Doug Ford's attempt to wipe out students' unions under the guise of giving students 'choice' has been exposed for what it really was: an attempt to silence his opposition."
Jenessa Crognali, press secretary for Attorney General Doug Downey's office, said the ruling is being reviewed.
"As this matter is in the appeal period, it would be inappropriate to comment," she wrote in an email.
Full-time students in Ontario pay about $300 in fees each year, none of which goes to the institutions themselves.
Last month, York University estimated that 60 per cent of such fees — about $1.25 million — were made optional.
The government had threatened to claw back operating grants to schools that didn't abide by its directives.
This report by The Canadian Press was first published Nov. 21, 2019.
The Canadian Press


Input
Input with Inline Help Elements
Inline Help can be customised by changing text inlineHelpTitle
, placement of icon
inlineHelpPlacement
, placement of inline help body inlineHelpBodyPlacement
, or event
triggering inlineHelpTrigger
Input States with Messages Components.
FormInputMessageGroupComponent
component follows control inputs from
PopoverComponent
Reactive Form Input
The input element, like several other native html elements, support Angular reactive forms. Using the input within
the form element greatly simplifies input value access and validation.


Hover on me and see what happend！
Just Test
Copy.js maintained by sobear
How to copy to the clipboard in JavaScript?


Form
First Name
Last Name
Sex
Male
Female
Nationality
American
Australia
Singapore
VietNam
Full name
Sex
Nationality


| Idaho Crime
Rates 1960 -
2015
|
| Idaho Population
and Number of
Crimes
1960 -
2015 |
|
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 1960 |
667,191 |
11,816 |
255 |
11,561 |
16 |
48 |
92 |
99 |
2,011 |
8,883 |
667 |
| 1961 |
684,000 |
12,738 |
222 |
12,516 |
14 |
44 |
64 |
100 |
2,203 |
9,540 |
773 |
| 1962 |
698,000 |
13,461 |
234 |
13,227 |
21 |
25 |
63 |
125 |
2,458 |
9,939 |
830 |
| 1963 |
713,000 |
13,406 |
362 |
13,044 |
18 |
39 |
87 |
218 |
2,405 |
9,939 |
700 |
| 1964 |
692,000 |
13,492 |
537 |
12,955 |
28 |
41 |
71 |
397 |
2,285 |
10,000 |
670 |
| 1965 |
692,000 |
13,719 |
493 |
13,226 |
14 |
38 |
70 |
371 |
2,483 |
10,035 |
708 |
| 1966 |
694,000 |
13,959 |
461 |
13,498 |
21 |
66 |
54 |
320 |
2,706 |
10,076 |
716 |
| 1967 |
699,000 |
13,321 |
478 |
12,843 |
30 |
61 |
76 |
311 |
2,837 |
9,217 |
789 |
| 1968 |
705,000 |
14,956 |
518 |
14,438 |
16 |
59 |
83 |
360 |
3,318 |
10,287 |
833 |
| 1969 |
718,000 |
19,589 |
806 |
18,783 |
14 |
72 |
120 |
600 |
4,236 |
13,603 |
944 |
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 1970 |
713,008 |
22,494 |
879 |
21,615 |
33 |
88 |
146 |
612 |
4,803 |
15,784 |
1,028 |
| 1971 |
732,000 |
25,675 |
917 |
24,758 |
24 |
77 |
163 |
653 |
5,430 |
18,109 |
1,219 |
| 1972 |
756,000 |
25,858 |
1,085 |
24,773 |
29 |
118 |
156 |
782 |
5,705 |
17,678 |
1,390 |
| 1973 |
770,000 |
26,625 |
1,264 |
25,361 |
20 |
109 |
207 |
928 |
6,536 |
17,231 |
1,594 |
| 1974 |
799,000 |
32,620 |
1,465 |
31,155 |
45 |
128 |
303 |
989 |
8,004 |
21,441 |
1,710 |
| 1975 |
820,000 |
33,957 |
1,670 |
32,287 |
43 |
132 |
344 |
1,151 |
8,717 |
21,741 |
1,829 |
| 1976 |
831,000 |
35,488 |
1,884 |
33,604 |
44 |
155 |
332 |
1,353 |
8,615 |
23,076 |
1,913 |
| 1977 |
857,000 |
35,350 |
2,030 |
33,320 |
47 |
166 |
339 |
1,478 |
9,005 |
22,279 |
2,036 |
| 1978 |
878,000 |
35,250 |
2,076 |
33,174 |
47 |
169 |
351 |
1,509 |
9,117 |
21,917 |
2,140 |
| 1979 |
905,000 |
38,379 |
2,613 |
35,766 |
49 |
186 |
392 |
1,986 |
9,729 |
23,577 |
2,460 |
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 1980 |
943,629 |
45,126 |
2,957 |
42,169 |
29 |
211 |
442 |
2,275 |
11,691 |
28,243 |
2,235 |
| 1981 |
959,000 |
43,450 |
2,717 |
40,733 |
43 |
198 |
362 |
2,114 |
11,255 |
27,423 |
2,055 |
| 1982 |
965,000 |
39,403 |
2,501 |
36,902 |
24 |
160 |
292 |
2,025 |
9,958 |
25,256 |
1,688 |
| 1983 |
989,000 |
38,233 |
2,361 |
35,872 |
35 |
181 |
270 |
1,875 |
9,206 |
24,979 |
1,687 |
| 1984 |
1,001,000 |
36,753 |
2,355 |
34,398 |
34 |
187 |
244 |
1,890 |
8,751 |
24,138 |
1,509 |
| 1985 |
1,005,000 |
39,276 |
2,360 |
36,916 |
22 |
192 |
269 |
1,877 |
8,917 |
26,170 |
1,829 |
| 1986 |
1,003,000 |
42,196 |
2,232 |
39,964 |
32 |
201 |
214 |
1,785 |
10,065 |
28,081 |
1,818 |
| 1987 |
998,000 |
41,480 |
2,138 |
39,342 |
31 |
175 |
242 |
1,690 |
9,748 |
27,923 |
1,671 |
| 1988 |
999,000 |
39,690 |
2,345 |
37,345 |
36 |
179 |
202 |
1,928 |
8,691 |
26,893 |
1,761 |
| 1989 |
1,014,000 |
39,860 |
2,582 |
37,278 |
26 |
236 |
152 |
2,168 |
8,843 |
26,825 |
1,610 |
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 1990 |
1,006,749 |
40,845 |
2,776 |
38,069 |
27 |
275 |
151 |
2,323 |
8,187 |
28,216 |
1,666 |
| 1991 |
1,039,000 |
43,594 |
3,016 |
40,578 |
19 |
300 |
215 |
2,482 |
8,582 |
30,143 |
1,853 |
| 1992 |
1,067,000 |
42,639 |
3,003 |
39,636 |
37 |
339 |
229 |
2,398 |
7,934 |
30,023 |
1,679 |
| 1993 |
1,099,000 |
42,258 |
3,097 |
39,161 |
32 |
388 |
186 |
2,491 |
7,350 |
29,795 |
2,016 |
| 1994 |
1,133,000 |
46,192 |
3,238 |
42,954 |
40 |
316 |
209 |
2,673 |
8,147 |
32,597 |
2,210 |
| 1995 |
1,163,000 |
51,189 |
3,745 |
47,444 |
48 |
330 |
279 |
3,088 |
9,069 |
35,560 |
2,815 |
| 1996 |
1,189,000 |
47,709 |
3,177 |
44,532 |
43 |
313 |
241 |
2,580 |
8,431 |
33,872 |
2,229 |
| 1997 |
1,210,000 |
47,495 |
3,107 |
44,388 |
39 |
350 |
237 |
2,481 |
9,175 |
32,784 |
2,429 |
| 1998 |
1,229,000 |
45,653 |
3,468 |
42,185 |
36 |
386 |
264 |
2,782 |
8,518 |
31,385 |
2,282 |
| 1999 |
1,251,700 |
39,429 |
3,066 |
36,363 |
25 |
417 |
223 |
2,401 |
7,641 |
26,824 |
1,898 |
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 2000 |
1,293,953 |
41,228 |
3,267 |
37,961 |
16 |
384 |
223 |
2,644 |
7,330 |
28,545 |
2,086 |
| 2001 |
1,320,585 |
41,392 |
3,211 |
38,181 |
30 |
425 |
245 |
2,511 |
7,507 |
28,285 |
2,389 |
| 2002 |
1,343,124 |
42,547 |
3,419 |
39,128 |
36 |
497 |
240 |
2,646 |
7,441 |
29,060 |
2,627 |
| 2003 |
1,367,034 |
43,404 |
3,362 |
40,042 |
26 |
535 |
245 |
2,556 |
7,837 |
29,559 |
2,646 |
| 2004 |
1,395,140 |
42,251 |
3,452 |
38,799 |
31 |
594 |
241 |
2,586 |
7,671 |
28,389 |
2,739 |
| 2005 |
1,429,367 |
42,226 |
3,670 |
38,556 |
35 |
577 |
266 |
2,792 |
8,066 |
27,606 |
2,884 |
| 2006 |
1,466,465 |
39,096 |
3,625 |
35,471 |
36 |
587 |
301 |
2,701 |
7,526 |
25,516 |
2,429 |
| 2007 |
1,499,402 |
37,274 |
3,589 |
33,685 |
49 |
578 |
233 |
2,729 |
6,977 |
24,482 |
2,226 |
| 2008 |
1,527,506 |
35,930 |
3,678 |
32,252 |
23 |
577 |
241 |
2,837 |
6,805 |
23,772 |
1,675 |
| 2009 |
1,545,801 |
35,025 |
3,805 |
31,220 |
24 |
575 |
254 |
2,952 |
6,682 |
23,066 |
1,472 |
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 2010 |
1,571,102 |
34,900 |
3,464 |
31,436 |
22 |
533 |
213 |
2,696 |
6,513 |
23,594 |
1,329 |
| 2011 |
1,583,744 |
36,077 |
3,202 |
32,875 |
35 |
444 |
188 |
2,535 |
6,915 |
24,629 |
1,331 |
| 2012
|
1,595,590
|
35,173
|
3,348
|
31,825
|
30
|
495
|
243
|
2,580
|
7,240
|
23,203
|
1,382
|
| 2013
|
1,612,843
|
33,701
|
3,471
|
30,230
|
29
|
516
|
220
|
2,548
|
6,693
|
21,999
|
1,538
|
|
2014 |
1,634,806 |
33,879 |
3,439 |
30,440 |
32 |
463 |
203 |
2,559 |
6,466 |
22,297 |
1,677 |
|
2015 |
1,654,930 |
32,426 |
3,568 |
28,858 |
32 |
533 |
192 |
2,650 |
6,124 |
20,863 |
1,871 |
|
|
|
Compiled
by the DisasterCenter.com
From:
FBI UCS Annual Crime Reports |
The
Uniform Crime
Reporting
(UCR) Program is the starting place
for those seeking
information on crime in the nation. The UCR is produced from data
received from over 18,000 law enforcement agencies voluntarily
participating
in the program. . |
|
|
| Idaho Population
and Rate of Crime per
100,000 People
1960 -
2015 |
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 1960 |
667,191 |
1,771.0 |
38.2 |
1,732.8 |
2.4 |
7.2 |
13.8 |
14.8 |
301.4 |
1,331.4 |
100.0 |
| 1961 |
684,000 |
1,862.3 |
32.5 |
1,829.8 |
2.0 |
6.4 |
9.4 |
14.6 |
322.1 |
1,394.7 |
113.0 |
| 1962 |
698,000 |
1,928.5 |
33.5 |
1,895.0 |
3.0 |
3.6 |
9.0 |
17.9 |
352.1 |
1,423.9 |
118.9 |
| 1963 |
713,000 |
1,880.2 |
50.8 |
1,829.5 |
2.5 |
5.5 |
12.2 |
30.6 |
337.3 |
1,394.0 |
98.2 |
| 1964 |
692,000 |
1,949.7 |
77.6 |
1,872.1 |
4.0 |
5.9 |
10.3 |
57.4 |
330.2 |
1,445.1 |
96.8 |
| 1965 |
692,000 |
1,982.5 |
71.2 |
1,911.3 |
2.0 |
5.5 |
10.1 |
53.6 |
358.8 |
1,450.1 |
102.3 |
| 1966 |
694,000 |
2,011.4 |
66.4 |
1,945.0 |
3.0 |
9.5 |
7.8 |
46.1 |
389.9 |
1,451.9 |
103.2 |
| 1967 |
699,000 |
1,905.7 |
68.4 |
1,837.3 |
4.3 |
8.7 |
10.9 |
44.5 |
405.9 |
1,318.6 |
112.9 |
| 1968 |
705,000 |
2,121.4 |
73.5 |
2,047.9 |
2.3 |
8.4 |
11.8 |
51.1 |
470.6 |
1,459.1 |
118.2 |
| 1969 |
718,000 |
2,728.3 |
112.3 |
2,616.0 |
1.9 |
10.0 |
16.7 |
83.6 |
590.0 |
1,894.6 |
131.5 |
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 1970 |
713,008 |
3,154.8 |
123.3 |
3,031.5 |
4.6 |
12.3 |
20.5 |
85.8 |
673.6 |
2,213.7 |
144.2 |
| 1971 |
732,000 |
3,507.5 |
125.3 |
3,382.2 |
3.3 |
10.5 |
22.3 |
89.2 |
741.8 |
2,473.9 |
166.5 |
| 1972 |
756,000 |
3,420.4 |
143.5 |
3,276.9 |
3.8 |
15.6 |
20.6 |
103.4 |
754.6 |
2,338.4 |
183.9 |
| 1973 |
770,000 |
3,457.8 |
164.2 |
3,293.6 |
2.6 |
14.2 |
26.9 |
120.5 |
848.8 |
2,237.8 |
207.0 |
| 1974 |
799,000 |
4,082.6 |
183.4 |
3,899.2 |
5.6 |
16.0 |
37.9 |
123.8 |
1,001.8 |
2,683.5 |
214.0 |
| 1975 |
820,000 |
4,141.1 |
203.7 |
3,937.4 |
5.2 |
16.1 |
42.0 |
140.4 |
1,063.0 |
2,651.3 |
223.0 |
| 1976 |
831,000 |
4,270.5 |
226.7 |
4,043.8 |
5.3 |
18.7 |
40.0 |
162.8 |
1,036.7 |
2,776.9 |
230.2 |
| 1977 |
857,000 |
4,124.9 |
236.9 |
3,888.0 |
5.5 |
19.4 |
39.6 |
172.5 |
1,050.8 |
2,599.6 |
237.6 |
| 1978 |
878,000 |
4,014.8 |
236.4 |
3,778.4 |
5.4 |
19.2 |
40.0 |
171.9 |
1,038.4 |
2,496.2 |
243.7 |
| 1979 |
905,000 |
4,240.8 |
288.7 |
3,952.0 |
5.4 |
20.6 |
43.3 |
219.4 |
1,075.0 |
2,605.2 |
271.8 |
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 1980 |
943,629 |
4,782.2 |
313.4 |
4,468.8 |
3.1 |
22.4 |
46.8 |
241.1 |
1,238.9 |
2,993.0 |
236.9 |
| 1981 |
959,000 |
4,530.8 |
283.3 |
4,247.4 |
4.5 |
20.6 |
37.7 |
220.4 |
1,173.6 |
2,859.5 |
214.3 |
| 1982 |
965,000 |
4,083.2 |
259.2 |
3,824.0 |
2.5 |
16.6 |
30.3 |
209.8 |
1,031.9 |
2,617.2 |
174.9 |
| 1983 |
989,000 |
3,865.8 |
238.7 |
3,627.1 |
3.5 |
18.3 |
27.3 |
189.6 |
930.8 |
2,525.7 |
170.6 |
| 1984 |
1,001,000 |
3,671.6 |
235.3 |
3,436.4 |
3.4 |
18.7 |
24.4 |
188.8 |
874.2 |
2,411.4 |
150.7 |
| 1985 |
1,005,000 |
3,908.1 |
234.8 |
3,673.2 |
2.2 |
19.1 |
26.8 |
186.8 |
887.3 |
2,604.0 |
182.0 |
| 1986 |
1,003,000 |
4,207.0 |
222.5 |
3,984.4 |
3.2 |
20.0 |
21.3 |
178.0 |
1,003.5 |
2,799.7 |
181.3 |
| 1987 |
998,000 |
4,156.3 |
214.2 |
3,942.1 |
3.1 |
17.5 |
24.2 |
169.3 |
976.8 |
2,797.9 |
167.4 |
| 1988 |
999,000 |
3,973.0 |
234.7 |
3,738.2 |
3.6 |
17.9 |
20.2 |
193.0 |
870.0 |
2,692.0 |
176.3 |
| 1989 |
1,014,000 |
3,931.0 |
254.6 |
3,676.3 |
2.6 |
23.3 |
15.0 |
213.8 |
872.1 |
2,645.5 |
158.8 |
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 1990 |
1,006,749 |
4,057.1 |
275.7 |
3,781.4 |
2.7 |
27.3 |
15.0 |
230.7 |
813.2 |
2,802.7 |
165.5 |
| 1991 |
1,039,000 |
4,195.8 |
290.3 |
3,905.5 |
1.8 |
28.9 |
20.7 |
238.9 |
826.0 |
2,901.2 |
178.3 |
| 1992 |
1,067,000 |
3,996.2 |
281.4 |
3,714.7 |
3.5 |
31.8 |
21.5 |
224.7 |
743.6 |
2,813.8 |
157.4 |
| 1993 |
1,099,000 |
3,845.1 |
281.8 |
3,563.3 |
2.9 |
35.3 |
16.9 |
226.7 |
668.8 |
2,711.1 |
183.4 |
| 1994 |
1,133,000 |
4,077.0 |
285.8 |
3,791.2 |
3.5 |
27.9 |
18.4 |
235.9 |
719.1 |
2,877.1 |
195.1 |
| 1995 |
1,163,000 |
4,401.5 |
322.0 |
4,079.4 |
4.1 |
28.4 |
24.0 |
265.5 |
779.8 |
3,057.6 |
242.0 |
| 1996 |
1,189,000 |
4,012.5 |
267.2 |
3,745.3 |
3.6 |
26.3 |
20.3 |
217.0 |
709.1 |
2,848.8 |
187.5 |
| 1997 |
1,210,000 |
3,925.2 |
256.8 |
3,668.4 |
3.2 |
28.9 |
19.6 |
205.0 |
758.3 |
2,709.4 |
200.7 |
| 1998 |
1,229,000 |
3,714.6 |
282.2 |
3,432.5 |
2.9 |
31.4 |
21.5 |
226.4 |
693.1 |
2,553.7 |
185.7 |
| 1999 |
1,251,700 |
3,150.0 |
244.9 |
2,905.1 |
2.0 |
33.3 |
17.8 |
191.8 |
610.4 |
2,143.0 |
151.6 |
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 2000 |
1,293,953 |
3,186.2 |
252.5 |
2,933.7 |
1.2 |
29.7 |
17.2 |
204.3 |
566.5 |
2,206.0 |
161.2 |
| 2001 |
1,320,585 |
3,134.4 |
243.1 |
2,891.2 |
2.3 |
32.2 |
18.6 |
190.1 |
568.5 |
2,141.9 |
180.9 |
| 2002 |
1,343,124 |
3,167.8 |
254.6 |
2,913.2 |
2.7 |
37.0 |
17.9 |
197.0 |
554.0 |
2,163.6 |
195.6 |
| 2003 |
1,367,034 |
3,175.0 |
245.9 |
2,929.1 |
1.9 |
39.1 |
17.9 |
187.0 |
573.3 |
2,162.3 |
193.6 |
| 2004 |
1,395,140 |
3,028.4 |
247.4 |
2,781.0 |
2.2 |
42.6 |
17.3 |
185.4 |
549.8 |
2,034.8 |
196.3 |
| 2005 |
1,429,367 |
2,954.2 |
256.8 |
2,697.4 |
2.4 |
40.4 |
18.6 |
195.3 |
564.3 |
1,931.7 |
201.8 |
| 2006 |
1,466,465 |
2,666.0 |
247.2 |
2,418.8 |
2.5 |
40.0 |
20.5 |
184.2 |
513.2 |
1,740.0 |
165.6 |
| 2007 |
1,499,402 |
2,486.0 |
239.4 |
2,246.6 |
3.3 |
38.5 |
15.5 |
182.0 |
465.3 |
1,632.8 |
148.5 |
| 2008 |
1,527,506 |
2,352.2 |
240.8 |
2,111.4 |
1.5 |
37.8 |
15.8 |
185.7 |
445.5 |
1,556.3 |
109.7 |
| 2009 |
1,545,801 |
2,265.9 |
246.2 |
2,019.7 |
1.6 |
37.2 |
16.4 |
191.0 |
432.3 |
1,492.2 |
95.2 |
|
|
|
|
|
|
Forcible |
|
Aggravated |
|
Larceny- |
Vehicle |
| Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
assault |
Burglary |
Theft |
Theft |
| 2010 |
1,571,102 |
2,221.4 |
220.5 |
2,000.9 |
1.4 |
33.9 |
13.6 |
171.6 |
414.5 |
1,501.7 |
84.6 |
| 2011 |
1,583,744 |
2,278.0 |
202.2 |
2,075.8 |
2.2 |
28.0 |
11.9 |
160.1 |
436.6 |
1,555.1 |
84.0 |
| 2012
|
1,595,590
|
2,204.4
|
209.8
|
1,994.6
|
1.9
|
31.0
|
15.2
|
161.7
|
453.8
|
1,454.2
|
86.6
|
| 2013
|
1,612,843
|
2,089.5
|
215.2
|
1,874.3
|
1.8
|
32.0
|
13.6
|
158.0
|
415.0
|
1,364.0
|
95.4
|
| 2014
|
1,634,806
|
2,072.4
|
210.4
|
1,862.0
|
2.0
|
28.3
|
12.4
|
156.5
|
395.5
|
1,363.9
|
102.6
|
| 2015
|
1,654,930
|
1,959.4
|
215.6
|
1,743.8
|
1.9
|
32.2
|
11.6
|
160.1
|
370.0
|
1,260.7
|
113.1
|
|
| DisasterCenter.com
developed the following table to rank the rates of
crime in
Idaho over time in relation to the rates of crime of other
States . This new
way to examine fluctuations in the crime rate reveals patterns that are
important for
law enforcement executives, students of criminal justice, researchers,
members of the media, and the public at large seeking information on
crime in the nation..
|
|
The crime
"Index" is
made up of the total number of violent and
property crimes. Since most crime is
property related the crime index gives more weight to property
crime. |
|
|
Idaho Population
and
Rate of Crime
Rank Compared
to other States
|
| State |
Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
Assault |
Burglary |
Larceny |
Vehicle |
| Idaho |
1960 |
41 |
20 |
40 |
20 |
35 |
25 |
39 |
43 |
36 |
13 |
38 |
| Idaho |
1961 |
40 |
20 |
43 |
20 |
36 |
28 |
43 |
43 |
37 |
10 |
35 |
| Idaho |
1962 |
41 |
18 |
43 |
17 |
30 |
42 |
41 |
40 |
32 |
10 |
34 |
| Idaho |
1963 |
40 |
23 |
39 |
22 |
34 |
35 |
40 |
35 |
38 |
13 |
41 |
| Idaho |
1964 |
42 |
29 |
37 |
27 |
25 |
38 |
44 |
30 |
40 |
15 |
43 |
| Idaho |
1965 |
43 |
28 |
40 |
25 |
41 |
38 |
45 |
35 |
41 |
16 |
42 |
| Idaho |
1966 |
42 |
31 |
43 |
30 |
33 |
30 |
47 |
39 |
40 |
20 |
44 |
| Idaho |
1967 |
42 |
37 |
45 |
36 |
28 |
33 |
45 |
45 |
45 |
29 |
43 |
| Idaho |
1968 |
41 |
38 |
45 |
35 |
45 |
37 |
46 |
43 |
45 |
30 |
44 |
| Idaho |
1969 |
41 |
29 |
39 |
28 |
47 |
39 |
43 |
34 |
37 |
19 |
44 |
| State |
Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
Assault |
Burglary |
Larceny |
Vehicle |
| Idaho |
1970 |
42 |
29 |
40 |
28 |
34 |
32 |
44 |
37 |
38 |
16 |
44 |
| Idaho |
1971 |
42 |
27 |
43 |
24 |
37 |
42 |
44 |
40 |
37 |
15 |
41 |
| Idaho |
1972 |
42 |
23 |
42 |
22 |
37 |
33 |
46 |
38 |
36 |
14 |
40 |
| Idaho |
1973 |
42 |
29 |
41 |
26 |
44 |
40 |
45 |
31 |
37 |
18 |
40 |
| Idaho |
1974 |
42 |
30 |
40 |
26 |
34 |
36 |
43 |
36 |
38 |
17 |
42 |
| Idaho |
1975 |
41 |
34 |
43 |
33 |
37 |
39 |
44 |
36 |
38 |
28 |
42 |
| Idaho |
1976 |
41 |
31 |
37 |
31 |
33 |
32 |
42 |
33 |
35 |
26 |
39 |
| Idaho |
1977 |
41 |
31 |
37 |
29 |
33 |
35 |
44 |
32 |
36 |
27 |
41 |
| Idaho |
1978 |
41 |
35 |
39 |
35 |
34 |
36 |
44 |
34 |
37 |
30 |
39 |
| Idaho |
1979 |
41 |
41 |
38 |
39 |
34 |
39 |
43 |
29 |
38 |
37 |
39 |
| State |
Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
Assault |
Burglary |
Larceny |
Vehicle |
| Idaho |
1980 |
41 |
36 |
35 |
38 |
42 |
39 |
43 |
27 |
36 |
27 |
42 |
| Idaho |
1981 |
40 |
38 |
38 |
37 |
36 |
41 |
45 |
29 |
36 |
32 |
41 |
| Idaho |
1982 |
40 |
40 |
38 |
40 |
43 |
42 |
47 |
30 |
38 |
38 |
46 |
| Idaho |
1983 |
40 |
40 |
38 |
39 |
41 |
43 |
45 |
30 |
39 |
35 |
42 |
| Idaho |
1984 |
40 |
40 |
39 |
40 |
38 |
45 |
45 |
31 |
37 |
35 |
46 |
| Idaho |
1985 |
40 |
38 |
40 |
37 |
45 |
44 |
43 |
33 |
39 |
29 |
40 |
| Idaho |
1986 |
41 |
35 |
43 |
32 |
41 |
44 |
47 |
37 |
33 |
28 |
41 |
| Idaho |
1987 |
42 |
37 |
43 |
34 |
41 |
47 |
46 |
38 |
34 |
32 |
43 |
| Idaho |
1988 |
42 |
40 |
42 |
41 |
37 |
47 |
46 |
37 |
36 |
37 |
44 |
| Idaho |
1989 |
42 |
41 |
42 |
41 |
44 |
43 |
48 |
33 |
36 |
38 |
45 |
| State |
Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
Assault |
Burglary |
Larceny |
Vehicle |
| Idaho |
1990 |
42 |
42 |
42 |
42 |
44 |
41 |
47 |
36 |
38 |
37 |
46 |
| Idaho |
1991 |
42 |
40 |
40 |
39 |
47 |
40 |
45 |
35 |
39 |
31 |
43 |
| Idaho |
1992 |
42 |
41 |
40 |
41 |
41 |
36 |
46 |
36 |
39 |
30 |
45 |
| Idaho |
1993 |
42 |
43 |
41 |
42 |
46 |
29 |
47 |
37 |
41 |
32 |
44 |
| Idaho |
1994 |
42 |
39 |
40 |
37 |
38 |
38 |
47 |
36 |
40 |
27 |
43 |
| Idaho |
1995 |
41 |
36 |
40 |
33 |
36 |
35 |
47 |
32 |
36 |
23 |
42 |
| Idaho |
1996 |
40 |
37 |
41 |
36 |
38 |
41 |
47 |
35 |
36 |
30 |
44 |
| Idaho |
1997 |
40 |
36 |
42 |
34 |
37 |
34 |
47 |
38 |
30 |
31 |
43 |
| Idaho |
1998 |
40 |
35 |
40 |
34 |
39 |
29 |
44 |
32 |
29 |
32 |
44 |
| Idaho |
1999 |
40 |
42 |
42 |
40 |
45 |
23 |
46 |
36 |
32 |
37 |
46 |
| State |
Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
Assault |
Burglary |
Larceny |
Vehicle |
| Idaho |
2000 |
39 |
38 |
42 |
37 |
47 |
29 |
48 |
34 |
34 |
35 |
45 |
| Idaho |
2001 |
39 |
39 |
43 |
37 |
41 |
25 |
46 |
36 |
33 |
37 |
43 |
| Idaho |
2002 |
39 |
37 |
42 |
37 |
37 |
21 |
47 |
32 |
36 |
35 |
44 |
| Idaho |
2003 |
39 |
37 |
44 |
36 |
44 |
16 |
46 |
34 |
34 |
34 |
42 |
| Idaho |
2004 |
39 |
36 |
41 |
36 |
44 |
9 |
46 |
34 |
36 |
34 |
42 |
| Idaho |
2005 |
39 |
36 |
40 |
36 |
39 |
14 |
47 |
30 |
34 |
35 |
42 |
| Idaho |
2006 |
39 |
43 |
42 |
43 |
38 |
13 |
45 |
31 |
37 |
42 |
44 |
| Idaho |
2007 |
39 |
45 |
42 |
45 |
33 |
14 |
47 |
32 |
40 |
44 |
44 |
| Idaho |
2008 |
39 |
47 |
45 |
47 |
48 |
14 |
48 |
33 |
42 |
47 |
47 |
| Idaho |
2009 |
39 |
48 |
42 |
47 |
45 |
13 |
48 |
31 |
41 |
47 |
47 |
| State |
Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
Assault |
Burglary |
Larceny |
Vehicle |
| Idaho |
2010 |
39 |
48 |
44 |
47 |
47 |
18 |
47 |
34 |
43 |
47 |
47 |
| Idaho |
2011 |
39 |
48 |
46 |
47 |
42 |
30 |
50 |
34 |
42 |
42 |
49 |
| Idaho |
2012 |
39 |
50 |
45 |
49 |
43 |
20 |
49 |
34 |
40 |
49 |
47 |
| Idaho |
2013 |
39 |
50 |
44 |
49 |
47 |
23 |
48 |
34 |
39 |
49 |
46 |
| Idaho
|
2014 |
39 |
48 |
44 |
47 |
44 |
25 |
48 |
35 |
33 |
48 |
45 |
| Idaho |
2015 |
39 |
47 |
46 |
46 |
44 |
19 |
49 |
38 |
35 |
47 |
43 |
| State |
Year |
Population |
Index |
Violent |
Property |
Murder |
Rape |
Robbery |
Assault |
Burglary |
Larceny |
Vehicle |
|
| Since we developed
the table
of "Idaho
Population
and
Rate of Crime
Rank Compared
to other States", we are interested in hearing how others are using the
table.
Email:
<EMAIL_ADDRESS>|
|
|
|
|
| *
United States * Alaska* Alabama
* Arkansas
*
Arizona
*
California
*
Colorado
*
Connecticut* Delaware
* Florida
*
Georgia
*
Hawaii
*
Iowa
*
Idaho
*
Illinois
*
Indiana
*
Kansas
*
Kentucky *
Louisiana
*
Massachusetts
*
Maryland *
Maine
*
Michigan
*
Minnesota
*
Missouri
*
Mississippi
*
Montana
*
North
Carolina *
North
Dakota *
Nebraska
*
New
Hampshire *
New
Jersey *
New
Mexico *
Nevada
*
New
York *
Ohio
*
Oklahoma
*
Oregon
*
Pennsylvania
*
Rhode
Island *
South
Carolina *
South
Dakota *
Tennessee
*
Texas
*
Utah
*
Virginia *
Vermont
*
Washington
D. C. *
Washington *
Wisconsin
*
West
Virginia *
Wyoming
* |
|


Your IP Address is
xxxx
You created a new peer server. Your network details are:
Peer ID: xxxx IP Address: xxxx Port: xxxx
Choose a single frame to begin broadcast. Click stop all to end broadcast.
Choose frames then click start multiframe to broadcast. Click stop multiframe to end broadcast.
Have your own peer server? Enter id and server details here:
Image sizes are set by default. Change them (or don't) here. Dimensions are fixed.
Color: X Depth: XImage preview does not reflect multiple frames. Currently broadcasting:
Image preview does not reflect multiple frames. Currently broadcasting:


How many do you have?
FRIENDS
News
Shop
Accessories
Build Your Own!
Chat
PICK YOUR STYLE
Adventure
Countries
Sights
We know you're lonely...
MAKE
a friend!
Then take a trip to a new place.


PDFTEX(1) Web2C 2012 PDFTEX(1) NAME pdftex, pdfinitex, pdfvirtex - PDF output from TeX SYNOPSIS pdftex [options] [&format] [file|\commands] DESCRIPTION Run the pdfTeX typesetter on file, usually creating file.pdf. If the file argument has no extension, ".tex" will be appended to it. Instead of a filename, a set of pdfTeX commands can be given, the first of which must start with a backslash. With a &format argument pdfTeX uses a dif‐ ferent set of precompiled commands, contained in format.fmt; it is usu‐ ally better to use the -fmt format option instead. pdfTeX is a version of TeX, with the e-TeX extensions, that can create PDF files as well as DVI files. In DVI mode, pdfTeX can be used as a complete replacement for the TeX engine. The typical use of pdfTeX is with a pregenerated formats for which PDF output has been enabled. The pdftex command uses the equivalent of the plain TeX format, and the pdflatex command uses the equivalent of the LaTeX format. To generate formats, use the -ini switch. The pdfinitex and pdfvirtex commands are pdfTeX's analogues to the initex and virtex commands. In this installation, if the links exist, they are symbolic links to the pdftex executable. In PDF mode, pdfTeX can natively handle the PDF, JPG, JBIG2, and PNG graphics formats. pdfTeX cannot include PostScript or Encapsulated Post‐ Script (EPS) graphics files; first convert them to PDF using epstopdf(1). pdfTeX's handling of its command-line arguments is similar to that of of the other TeX programs in the web2c implementation. OPTIONS This version of pdfTeX understands the following command line options. -draftmode Sets \pdfdraftmode so pdfTeX doesn't write a PDF and doesn't read any included images, thus speeding up execution. -enc Enable the encTeX extensions. This option is only effective in combination with -ini. For documentation of the encTeX extensions see http://www.olsak.net/enctex.html. -etex Enable the e-TeX extensions. This option is only effective in combination with -ini. See etex(1). -file-line-error Print error messages in the form file:line:error which is similar to the way many compilers format them. -no-file-line-error Disable printing error messages in the file:line:error style. -file-line-error-style This is the old name of the -file-line-error option. -fmt format Use format as the name of the format to be used, instead of the name by which pdfTeX was called or a %& line. -halt-on-error Exit with an error code when an error is encountered during pro‐ cessing. -help Print help message and exit. -ini Start in INI mode, which is used to dump formats. The INI mode can be used for typesetting, but no format is preloaded, and basic initializations like setting catcodes may be required. -interaction mode Sets the interaction mode. The mode can be either batchmode, non‐ stopmode, scrollmode, and errorstopmode. The meaning of these modes is the same as that of the corresponding \commands. -ipc Send DVI or PDF output to a socket as well as the usual output file. Whether this option is available is the choice of the in‐ staller. -ipc-start As -ipc, and starts the server at the other end as well. Whether this option is available is the choice of the installer. -jobname name Use name for the job name, instead of deriving it from the name of the input file. -kpathsea-debug bitmask Sets path searching debugging flags according to the bitmask. See the Kpathsea manual for details. -mktex fmt Enable mktexfmt, where fmt must be either tex or tfm. -mltex Enable MLTeX extensions. Only effective in combination with -ini. -no-mktex fmt Disable mktexfmt, where fmt must be either tex or tfm. -output-comment string In DVI mode, use string for the DVI file comment instead of the date. This option is ignored in PDF mode. -output-directory directory Write output files in directory instead of the current directory. Look up input files in directory first, the along the normal search path. -output-format format Set the output format mode, where format must be either pdf or dvi. This also influences the set of graphics formats understood by pdfTeX. -parse-first-line If the first line of the main input file begins with %& parse it to look for a dump name or a -translate-file option. -no-parse-first-line Disable parsing of the first line of the main input file. -progname name Pretend to be program name. This affects both the format used and the search paths. -recorder Enable the filename recorder. This leaves a trace of the files opened for input and output in a file with extension .fls. -shell-escape Enable the \write18{command} construct. The command can be any shell command. This construct is normally disallowed for security reasons. -no-shell-escape Disable the \write18{command} construct, even if it is enabled in the texmf.cnf file. -src-specials In DVI mode, insert source specials into the DVI file. This option is ignored in PDF mode. -src-specials where In DVI mode, insert source specials in certain placed of the DVI file. where is a comma-separated value list: cr, display, hbox, math, par, parent, or vbox. This option is ignored in PDF mode. -translate-file tcxname Use the tcxname translation table to set the mapping of input characters and re-mapping of output characters. -default-translate-file tcxname Like -translate-file except that a %& line can overrule this set‐ ting. -version Print version information and exit. ENVIRONMENT See the Kpathsearch library documentation (the `Path specifications' node) for precise details of how the environment variables are used. The kpsewhich utility can be used to query the values of the variables. One caveat: In most pdfTeX formats, you cannot use ~ in a filename you give directly to pdfTeX, because ~ is an active character, and hence is expanded, not taken as part of the filename. Other programs, such as Metafont, do not have this problem. TEXMFOUTPUT Normally, pdfTeX puts its output files in the current directory. If any output file cannot be opened there, it tries to open it in the directory specified in the environment variable TEXMFOUTPUT. There is no default value for that variable. For example, if you say pdftex paper and the current directory is not writable and TEXMFOUTPUT has the value /tmp, pdfTeX attempts to create /tmp/paper.log (and /tmp/paper.pdf, if any output is produced.) TEXMFOUTPUT is also checked for input files, as TeX often gener‐ ates files that need to be subsequently read; for input, no suf‐ fixes (such as ``.tex'') are added by default, the input name is simply checked as given. TEXINPUTS Search path for \input and \openin files. This should start with ``.'', so that user files are found before system files. An empty path component will be replaced with the paths defined in the texmf.cnf file. For example, set TEXINPUTS to ".:/home/user/tex:" to prepend the current directory and ``/home/user/tex'' to the standard search path. TEXFORMATS Search path for format files. TEXPOOL search path for pdftex internal strings. TEXEDIT Command template for switching to editor. The default, usually vi, is set when pdfTeX is compiled. TFMFONTS Search path for font metric (.tfm) files. FILES The location of the files mentioned below varies from system to system. Use the kpsewhich utility to find their locations. pdftex.pool Text file containing pdfTeX's internal strings. pdftex.map Filename mapping definitions. *.tfm Metric files for pdfTeX's fonts. *.fmt Predigested pdfTeX format (.fmt) files. NOTES Starting with version 1.40, pdfTeX incorporates the e-TeX extensions, and pdfeTeX is just a copy of pdfTeX. See etex(1). This manual page is not meant to be exhaustive. The complete documentation for this version of pdfTeX can be found in the pdfTeX manual and the info manual Web2C: A TeX implementation. BUGS This version of pdfTeX implements a number of optional extensions. In fact, many of these extensions conflict to a greater or lesser extent with the definition of pdfTeX. When such extensions are enabled, the banner printed when pdfTeX starts is changed to print pdfTeXk instead of pdfTeX. This version of pdfTeX fails to trap arithmetic overflow when dimensions are added or subtracted. Cases where this occurs are rare, but when it does the generated DVI file will be invalid. Whether a generated PDF file would be usable is unknown. AVAILABILITY pdfTeX is available for a large variety of machine architectures and operation systems. pdfTeX is part of all major TeX distributions. Information on how to get pdfTeX and related information is available at the http://www.pdftex.org pdfTeX web site. The following pdfeTeX related mailing list is available<EMAIL_ADDRESS>This is a mailman list; to subscribe send a message containing subscribe to<EMAIL_ADDRESS>A web interface and list archives can be found at the http://lists.tug.org/pdftex mailing list web site. SEE ALSO epstopdf(1), etex(1), latex(1), mptopdf(1), tex(1), mf(1). http://tug.org/applications/pdftex, http://tug.org/web2c. AUTHORS The primary authors of pdfTeX are Han The Thanh, Petr Sojka, Jiri Zla‐ tuska, and Peter Breitenlohner (eTeX). TeX was designed by Donald E. Knuth, who implemented it using his Web system for Pascal programs. It was ported to Unix at Stanford by Howard Trickey, and at Cornell by Pavel Curtis. The version now offered with the Unix TeX distribution is that generated by the Web to C system (web2c), originally written by Tomas Rokicki and Tim Morgan. The encTeX extensions were written by Petr Olsak. pdftex 1.40 1 March 2011 PDFTEX(1)


Rigidbody Operators¶
-
bpy.ops.rigidbody.
bake_to_keyframes
(frame_start=1, frame_end=250, step=1)¶ Bake rigid body transformations of selected objects to keyframes
Parameters: - frame_start (int in [0, 300000], (optional)) – Start Frame, Start frame for baking
- frame_end (int in [1, 300000], (optional)) – End Frame, End frame for baking
- step (int in [1, 120], (optional)) – Frame Step, Frame Step
File:
-
bpy.ops.rigidbody.
connect
(con_type='FIXED', pivot_type='CENTER', connection_pattern='SELECTED_TO_ACTIVE')¶ Create rigid body constraints between selected rigid bodies
Parameters: - con_type (enum in ['FIXED', 'POINT', 'HINGE', 'SLIDER', 'PISTON', 'GENERIC', 'GENERIC_SPRING', 'MOTOR'], (optional)) –
Type, Type of generated constraint
FIXED
Fixed, Glue rigid bodies together.POINT
Point, Constrain rigid bodies to move around common pivot point.HINGE
Hinge, Restrict rigid body rotation to one axis.SLIDER
Slider, Restrict rigid body translation to one axis.PISTON
Piston, Restrict rigid body translation and rotation to one axis.GENERIC
Generic, Restrict translation and rotation to specified axes.GENERIC_SPRING
Generic Spring, Restrict translation and rotation to specified axes with springs.MOTOR
Motor, Drive rigid body around or along an axis.
- pivot_type (enum in ['CENTER', 'ACTIVE', 'SELECTED'], (optional)) –
Location, Constraint pivot location
CENTER
Center, Pivot location is between the constrained rigid bodies.ACTIVE
Active, Pivot location is at the active object position.SELECTED
Selected, Pivot location is at the selected object position.
- connection_pattern (enum in ['SELECTED_TO_ACTIVE', 'CHAIN_DISTANCE'], (optional)) –
Connection Pattern, Pattern used to connect objects
SELECTED_TO_ACTIVE
Selected to Active, Connect selected objects to the active object.CHAIN_DISTANCE
Chain by Distance, Connect objects as a chain based on distance, starting at the active object.
File: - con_type (enum in ['FIXED', 'POINT', 'HINGE', 'SLIDER', 'PISTON', 'GENERIC', 'GENERIC_SPRING', 'MOTOR'], (optional)) –
-
bpy.ops.rigidbody.
constraint_add
(type='FIXED')¶ Add Rigid Body Constraint to active object
Parameters: type (enum in ['FIXED', 'POINT', 'HINGE', 'SLIDER', 'PISTON', 'GENERIC', 'GENERIC_SPRING', 'MOTOR'], (optional)) – Rigid Body Constraint Type
FIXED
Fixed, Glue rigid bodies together.POINT
Point, Constrain rigid bodies to move around common pivot point.HINGE
Hinge, Restrict rigid body rotation to one axis.SLIDER
Slider, Restrict rigid body translation to one axis.PISTON
Piston, Restrict rigid body translation and rotation to one axis.GENERIC
Generic, Restrict translation and rotation to specified axes.GENERIC_SPRING
Generic Spring, Restrict translation and rotation to specified axes with springs.MOTOR
Motor, Drive rigid body around or along an axis.
-
bpy.ops.rigidbody.
constraint_remove
()¶ Remove Rigid Body Constraint from Object
-
bpy.ops.rigidbody.
mass_calculate
(material='DEFAULT', density=1.0)¶ Automatically calculate mass values for Rigid Body Objects based on volume
Parameters: - material (enum in ['DEFAULT'], (optional)) – Material Preset, Type of material that objects are made of (determines material density)
- density (float in [1.17549e-38, inf], (optional)) – Density, Custom density value (kg/m^3) to use instead of material preset
-
bpy.ops.rigidbody.
object_add
(type='ACTIVE')¶ Add active object as Rigid Body
Parameters: type (enum in ['ACTIVE', 'PASSIVE'], (optional)) – Rigid Body Type
ACTIVE
Active, Object is directly controlled by simulation results.PASSIVE
Passive, Object is directly controlled by animation system.
-
bpy.ops.rigidbody.
object_remove
()¶ Remove Rigid Body settings from Object
-
bpy.ops.rigidbody.
object_settings_copy
()¶ Copy Rigid Body settings from active object to selected
File: startup/bl_operators/rigidbody.py:61
-
bpy.ops.rigidbody.
objects_add
(type='ACTIVE')¶ Add selected objects as Rigid Bodies
Parameters: type (enum in ['ACTIVE', 'PASSIVE'], (optional)) – Rigid Body Type
ACTIVE
Active, Object is directly controlled by simulation results.PASSIVE
Passive, Object is directly controlled by animation system.
-
bpy.ops.rigidbody.
objects_remove
()¶ Remove selected objects from Rigid Body simulation
-
bpy.ops.rigidbody.
shape_change
(type='MESH')¶ Change collision shapes for selected Rigid Body Objects
Parameters: type (enum in ['BOX', 'SPHERE', 'CAPSULE', 'CYLINDER', 'CONE', 'CONVEX_HULL', 'MESH'], (optional)) – Rigid Body Shape
BOX
Box, Box-like shapes (i.e. cubes), including planes (i.e. ground planes).SPHERE
Sphere.CAPSULE
Capsule.CYLINDER
Cylinder.CONE
Cone.CONVEX_HULL
Convex Hull, A mesh-like surface encompassing (i.e. shrinkwrap over) all vertices (best results with fewer vertices).MESH
Mesh, Mesh consisting of triangles only, allowing for more detailed interactions than convex hulls.
-
bpy.ops.rigidbody.
world_add
()¶ Add Rigid Body simulation world to the current scene
-
bpy.ops.rigidbody.
world_remove
()¶ Remove Rigid Body simulation world from the current scene


{% extends "site_base.html" %} {% block header %}{% endblock %} {% block content %}
Thank you! You have succesfully upgraded your account!
Upgrade account may sometimes take awhile, if ever your account has not been upgraded after an hour please do contact us.


{% extends "base.html" %} {% block title %}Vortext | Your profile{% endblock %} {% block content %}
Welcome to Vortext!
Feel free to skip this step — nothing here is required.
{% endif %}If you enter your email address, we'll email you when we've finished parsing your tweets. This can take 15-30 minutes or more.
{% endif %} {% if first_time %}Please note: Twitter's API only lets us access your 3200 most recent tweets. To go back further, you'll need to download your personal Twitter archive, and then upload it to Vortext.
{% else %} {% if account.has_uploaded_data %} You have uploaded your Twitter archive. {% else %} Upload your Twitter archive {% endif %} {% endif %}


| /// File Name: |
f5asm-xss.txt |
Description:
|
The F5 BIG-IP ASM web management interface contains a cross site scripting vulnerability in the Security Report function.
| | Author: | nnposter | | File Size: | 1036 | | Last Modified: | Jan 27 22:31:47 2008 |
| MD5 Checksum: | 2559cf5cf02885b7f35bed00c2e760a0 |
|


Narrative Film Sample
Commencement (2016)
Cinematographer: Matthew Kerkstra
Arriflex SR2
Vision3 500T


Merch Store
About Me
Meet my family
As you might know, my name is Pat! My wife's name is Shirley and my kids are James and Rebecca!


Complete the challenges below to advance to the next level. Click on the challenge name to expand/collapse the description.
Throughout the challenges try to think how the particular vulnerability applies to your own code. While the vulnerable applications are web sites (for the purpose of providing a easily accessible gaming platform), the majority of the concepts apply to any software: desktop applications, mobile applications or operating system services.
Navigate to the play link play link .
The play link has been provided to you when solving the previous challenge. If you have missed it read the challenge description carefully and try to figure out what it is.
Once you were able to exploit the vulnerability you can generate a secret code which you can submit above.
If you get stuck you can use the button below for help, but don't give up yet, read the challenge description and tips carefully.
View Solution
Here's a visual representation of one of the attacks possible using this category.


Past Actions
In a time where we are bombarded with information some of you may not have noticed that ESUG is doing a lot to push Smalltalk in Europe and beyond. The following sums up the main actions ESUG performed in the past.
Seaside Hosting since 2006
Projects
ESUG wants support your projects. It can be project related to software development, teaching, conference presence, etc.
SummerTalk
Each year, ESUG pays students to work on open-source Smalltalk projects during the SummerTalk program.
Book spreading
ESUG sent a lot of free books in 2002:
- Universities that received the packages:
- Germany: Darmstadt, Munich, Berlin
- Argentina: La Plata, Buenos Aires (3), Cordoba
- Belgium: Brussels
- France: Caen, Montpellier-II, Paris 8, Brest
- Spain: Vigo, Castellon
- Switzerland: St. Gallen
- Algeria: Chlef, Blida
- Argentina: Buenos Aires,
- Brasil: San Pablo
- Russia: Tver
- India: Hyderabad, Uttar Pradesh
- Chile: Santiago
- Italy: Cagliari, Benevento
- Czech Republic: Brno, Praha
- Servia: Novi Sad
- France: Douai
- United Kingdom: Portsmouth, Plymouth
- Belgium: Bruxelles
- Germany: Elmshorn
- China: Wuhan Hubei
- United States: Santa Barbara
- Universities that received the packages
- Roumania: Timisoara, Cluj Napoca, Targovista
Miscellaneous
- Sponsoring of the Russian Smalltalk Server
- Booth at Conferences
- Chaos club participation
- Scanning old books
- Teaching at Barcelona (Spain)
- Teaching at Turino (Italy)
- Teaching at Bledj (Romania)
- Managing money for the Squeak foundation from 2004 to 2010
Sponsoring scientific articles
ESUG offers money for each international conference paper whose concepts involves an implementation in Smalltalk
- 6 international conference papers in 2009
- 8 international conference papers in 2008
Smalltalk articles in the Press
ESUG decided to offer money for each paper that gets published on Smalltalk.
- 6 in 2006
- 3 in 2007
- 5 in 2008
Student volunteer program
Student volunteers help keep the conference running smoothly; in return, they have free accommodations, while still having most of the time to enjoy the conference.
- 24 students got free access and hosting in 2010
- 18 students got free access and hosting in 2009
- 17 students got free access and hosting in 2008
- 14 students got free access and hosting in 2007
- 15 students got free access and hosting in 2006
- 12 students got free access and hosting in 2005
- A complete classroom of students of north acamedia got free access in 2004
- 15 students got free access and hosting in 2004
- 21 students got free access and hosting in 2003
Smalltalk 2009
ESUG sponsored the Smalltalks 2009 conference in Argentina.
- 15 teachers got the travel/hosting to attend the conference
- One invited talk sponsored


--- layout: portfolio title: OxfordStudent.com date: 2012-03-30 02:33:36.000000000 +05:30 categories: [] tags: [] status: publish type: portfolio published: true meta: _edit_last: '1' _thumbnail_id: '1419' portfolio-image: '' seo_follow: 'false' seo_noindex: 'false' pvc_views: '230' _jetpack_related_posts_cache: a:0:{} author: login: cvlewis email<EMAIL_ADDRESS>display_name: Carl V. Lewis first_name: Carl V. last_name: Lewis excerpt: !ruby/object:Hpricot::Doc options: {} ---
OxfordStudent.com – While serving as news editor for Oxford University's weekly student-run newspaper, The Oxford Student, I developed a new Web site for the publication in April 2010. I replaced the clunky previous site with a fresh, streamlined publishing system with a clean design and simple editing tools. The site now receives about 6,000 views a day, and has dramatically increased the paper's readership by creating a stronger online presence. Click here to see the site live.


Amazing, this was my first time tripping. I smoke marijuana regularly, and I have tried opium, but neither was anything like shrooming. I first realized that I was tripping approximately 30 min after I ate the mushrooms. I had felt tingly and a little disoriented a while earlier, but did not think it was significant. When I finally did feel like I was tripping, it was because I felt like I was melting together, and into the couch. If I touched any parts of my body together, I felt like they were melting together like hot wax, and that I was slowly sinking into the couch.
I also noticed that everything was forming patterns, for instance, at one point I went outside and saw a tree. it looked like all the branches of the tree moved so that they were perfectly aligned forming a grid similar to the pattern of a chain link fence. At this time I started smoking, this was done inside a walk in closet, lit by blacklight, with glowing drawings on the wall. the drawings began to shift shapes and move, forming intricate and amazing patterns. I was mesmorized for what seemed like days on end watching them, but it actually was a much shorter period of time. probably about a half hour.
I felt a lot like a young child throughout the experience. I had the gimmies... I want this music, I want to go to this room, I like this picture, I don't like this. I had very stern opinions of everything. I either liked or didn't like, wanted or didn't want, things were good or bad, there was no grey area. I also had the feeling that the entire thing was staged, like a play, and I was the star, everything was about me. I was very proud of myself, and would walk into a room and pose for everyone to see, and I thought everyone was so concerned with watching me. I thought some people were in on the play, and would observe that 'he knows' or 'she doesn't know'. I had an overwhelming feeling that people were plotting things to confuse me, but I enjoyed the confusion.
I saw colors everywhere, lights were extra bright, and colors and rainbows swirled outward from them. Moods changed quickly, but even when mellow, were happy. Things such as a different person talking or a song changing would completely alter everything I felt. They would go from dark and swirling to bright and colorful. There was constant and intense change. Things got boring quickly, a person could be hilarious to me, and then only seconds later, while still in the same conversation could be overly boring. Everything was loud, and echoing. I felt like every sound was made for me to hear, the tv talked to me, the music played for me, peoples conversations were held for me. Every once in a while I would lose all grip on reality and begin laughing hysterically. Everything was connected to each other, such as feelings to music, but everything was disconnected to reality, and I felt as if I was in a crazy dream. Overall it was an amazing experience and I enjoyed it.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.