import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
data_column_names = ['center', 'left', 'right', 'steering', 'throttle', 'brake', 'speed']
data_df = pd.read_csv('./data/driving_log.csv',header=0,names=data_column_names)
For the project I used the street pictures of Udacity; The Tour around the lake. I had joystick problems and got no good street pictures (too many on the roadside and too few in the middle of the street).
Structure of the image index file and the measured values:
data_df.iloc[:3]
A picture of a left, a central and a right camera was recorded for each measurement at the same time (8036 measurements). Each image has the size of 320x160x3.
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
%matplotlib inline
def show_picture(file_with_path, title, grid, position):
ax = plt.subplot2grid(grid, position)
img = mpimg.imread(file_with_path)
ax.imshow(img)
ax.set_title(title)
plt.rc('figure', figsize=(15,15))
steering_threshold = 0.0
data_df2 = data_df[data_df.steering == steering_threshold].head(1)
show_picture('./data/IMG/left_2016_12_01_13_30_48_287.jpg', "Bridge (left)", (4,3), (0,0))
show_picture('./data/IMG/center_2016_12_01_13_30_48_287.jpg', "Bridge (center)", (4,3), (0,1))
show_picture('./data/IMG/right_2016_12_01_13_30_48_287.jpg', "Bridge (right)", (4,3), (0,2))
show_picture('./data/IMG/left_2016_12_01_13_31_15_513.jpg', "Narrow curve (left)", (4,3), (1,0))
show_picture('./data/IMG/center_2016_12_01_13_31_15_513.jpg', "Narrow curve (center)", (4,3), (1,1))
show_picture('./data/IMG/right_2016_12_01_13_31_15_513.jpg', "Narrow curve (right)", (4,3), (1,2))
show_picture('./data/IMG/left_2016_12_01_13_33_54_068.jpg', "Long curve (left)", (4,3), (2,0))
show_picture('./data/IMG/center_2016_12_01_13_33_54_068.jpg', "Long curve (center)", (4,3), (2,1))
show_picture('./data/IMG/right_2016_12_01_13_33_54_068.jpg', "Long curve (right)", (4,3), (2,2))
show_picture('./data/IMG/left_2016_12_01_13_45_11_498.jpg', "Straight line (left)", (4,3), (3,0))
show_picture('./data/IMG/center_2016_12_01_13_45_11_498.jpg', "Straight line (center)", (4,3), (3,1))
show_picture('./data/IMG/right_2016_12_01_13_45_11_498.jpg', "Straight line (right)", (4,3), (3,2))
print("Count of all images: {}".format((data_df['center'].count()) * 3))
print("Histogram of the use of the brake: {}".format((data_df['brake'].value_counts() + 1)))
The tour around the lake has no slope. For the most images, the maximum speed has been driven. That's why I decided to maintain the existing speed in drive.py. The neuronal network will not change the speed.
plt.figure(figsize=(5,3))
plt.hist(data_df['speed'], 20)
plt.title("Speed Histogram")
plt.xlabel('Speed (MPH)')
plt.ylabel('Frequency of speed')
plt.show()
With positive steering angles, the wheels steer right and the car moves to the right. If the steering angle is negative then the car moves to the left.
The steering angle is usually 0 degree (no steering). 10% of the steering angle measurement is less than -0.2 or greater than 0.2 degrees. This distribution is unfavorable for learning.
For the training data I leave the existing steering angle for the central road image per measurement. For the right and left image per measurement, I change the steering angle so that the car always strives to drive in the middle of the road. An exact description follows.
plt.figure(figsize=(5,3))
plt.hist(data_df['steering'], 20)
plt.title("Steering angle Histogram (1)")
plt.xlabel('All steering angle (degree)')
plt.ylabel('Frequency of steering')
plt.show()
plt.figure(figsize=(5,3))
plt.hist(data_df.query('steering < 0')['steering'], 20)
plt.title("Steering angle Histogram (2)")
plt.xlabel('Steering angle less than null degree')
plt.ylabel('Frequency of steering')
plt.show()
plt.figure(figsize=(5,3))
plt.hist(data_df.query('steering > 0')['steering'], 20)
plt.title("Steering angle Histogram (3)")
plt.xlabel('Steering angle greater than null degree')
plt.ylabel('Frequency of steering')
plt.show()
print("All steering angle measurements less than or equal -0.2 degree: {}".\
format(data_df.query('steering <= -0.2')['steering'].count()))
print("All steering angle measurements greater than or equal 0.2 degree: {}".\
format(data_df.query('steering >= 0.2')['steering'].count()))
I have used a LeNet architecture:
Problem: I can't set names for the layers
After the flaten layer I set four Dense layer. Against the overfitting I use three Dropout layers with a value of 0.5.
The last layer is Dense(1), since I only expect a steering angle value. He has not a dropout layer.
There are more straight and easy curve images than narrow curves. This makes learning driving in tight curves a little more difficult. I replace the left and the right image with new steering angles values per measurement. These are calculated from the existing Sterring value +/-0.5. The limits of +/-1.0 must not be exceeded. After the steering angles adjustment, I mirror all the images and adjust the steering angles value (x -1.0) accordingly. The reflection is necessary because some images are missing from the narrow curves. As the tour around the lake was done in both directions, the reflection can replace the missing images.
This results in the following values: count of steering values: 48216
validation_split=0.2
80% training data: 38572
20% validation data: 9644
I did not collect test data from the pictures because the simulator does the testing.
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from imgaug import augmenters as iaa
%matplotlib inline
flipper = iaa.Fliplr(1.0) # always horizontally flip each input image
scaler = iaa.Affine(scale={"y": (0.8, 1.2)}) # scale each input image to 80-120% on the y axis
gaussian_noise = iaa.AdditiveGaussianNoise(loc=32, scale=0.05*255, name="smale noise")
rotate = iaa.Affine(rotate=(-5, 5))
grayscale = iaa.Grayscale(alpha=(0.0, 1.0))
images = []
steerings = []
for _, row in data_df.iterrows():
img_center = mpimg.imread('./data/' + row['center'].strip())#[60:130, :, :]
images.append(img_center)
steering_threshold = float(row['steering'])
steerings.append(steering_threshold)
images.append(flipper.augment_image(img_center))
steerings.append(-1.0 * steering_threshold)
img_left_orginal = mpimg.imread('./data/' + row['left'].strip()) #.squeeze()[40:130, :, :]
img_left1 = img_left_orginal #[60:130, :, :]
images.append(img_left1)
steering_threshold2 = min(1.0, steering_threshold + 0.5)
steerings.append(steering_threshold2)
images.append(flipper.augment_image(img_left1)) # probably vertically flip image
steerings.append(-1.0 * steering_threshold2)
img_right_original = mpimg.imread('./data/' + row['right'].strip()) #.squeeze()[40:130, :, :]
img_right1 = img_right_original #[60:130, :, :]
images.append(img_right1)
steering_threshold2 = max(-1.0, steering_threshold - 0.5)
steerings.append(steering_threshold2)
images.append(flipper.augment_image(img_right1)) # probably vertically flip image
steerings.append(-1.0 * steering_threshold2)
plt.hist(steerings, 50)
plt.xlabel('steering angle')
plt.ylabel('Frequency of steering')
plt.show()
print("count of steering values: {}".format(len(steerings)))
The following steps describe the development of the neural network and the training data
I try to make the images visible from hidden layers. So I could optimize my output filters and kernel size. Unfortunately without success. I have an outdated Keras version and do not use Theano. Do You might have a good guide here? I found this link https://github.com/julienr/ipynb_playground/blob/master/keras/convmnist/keras_cnn_mnist_v1.ipynb
I have used Tensorboard but not figured out how to read hidden layer data (I would feed the net with a sample image). (tensorboard --logdir . --host <IP_ADDRESS> --port 8080)
The final model architecture consisted of a convolution neural network with the following layers and layer sizes
#plt.rc('figure', figsize=(32,32))
show_picture('./model_architecture.png', "model", (1,1), (0,0), axis_off=True)
The model, the summary and the learning epochs are shown below.
from keras.models import Sequential
from keras.layers import Activation, Flatten, Dense, Convolution2D, MaxPooling2D, Lambda, Cropping2D, Dropout, ELU
from keras.optimizers import Adam
model = Sequential()
model.add(Lambda(lambda x: x / 255.0 - 0.5, input_shape=(160, 320,3)))
model.add(Convolution2D(3,3,3,border_mode='same',activation="relu"))
model.add(MaxPooling2D(dim_ordering='tf'))
model.add(Convolution2D(24,3,3,border_mode='same',activation="relu"))
model.add(MaxPooling2D(dim_ordering='tf'))
model.add(Convolution2D(36,3,3,border_mode='same',activation="relu"))
model.add(MaxPooling2D(dim_ordering='tf'))
model.add(Convolution2D(36,3,3,border_mode='same',activation="relu"))
model.add(MaxPooling2D(dim_ordering='tf'))
model.add(Flatten())
model.add(Dense(300))
model.add(Dropout(.5))
model.add(Dense(150))
model.add(Dropout(.5))
model.add(Dense(75))
model.add(Dropout(.5))
model.add(Dense(1))
optimizer = Adam(lr=0.001)
model.compile(loss='mse', optimizer=optimizer)
model.summary()
X_train = np.array(images)
y_train = np.array(steerings)
from keras.callbacks import TensorBoard
tensorboard = TensorBoard(log_dir='./logs', histogram_freq=0, write_graph=True, write_images=False)
model.fit(X_train, y_train, validation_split=0.2,shuffle=True,nb_epoch=12, callbacks=[tensorboard])
model.save('model7.h5')
from keras.utils.visualize_util import plot
plot(model, to_file='model_architecture.png', show_shapes=True)
Most of the points I have explained above.
I noticed something when I created the training data. Due to the perspective shift of the central image left and right, you could remove the left and right camera. For the lower images, the distance between the left and the central camera does not yet match. In my experiments, I just wanted the leftmost image to submit my data with marginal information.
#http://docs.opencv.org/trunk/da/d6e/tutorial_py_geometric_transformations.html
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import cv2
import numpy as np
from PIL import Image
import math
%matplotlib inline
def show_picture2(image, title, grid, position):
ax = plt.subplot2grid(grid, position)
ax.imshow(image)
ax.set_title(title)
data_column_names = ['center', 'left', 'right', 'steering', 'throttle', 'brake', 'speed']
data_df2 = pd.read_csv('./data/driving_log.csv',header=0,names=data_column_names)
src_top_left = [0,20]
src_top_right = [320,0]
src_bottom_left = [0,140]
src_bottom_right = [280,160]
dst_top_left = [0,0]
dst_top_right = [320,20]
dst_bottom_left = [0,160]
dst_bottom_right = [320,140]
src2_top_left = [0,40]
src2_top_right = [320,0]
src2_bottom_left = [0,100]
src2_bottom_right = [280,160]
dst2_top_left = [0,0]
dst2_top_right = [320,40]
dst2_bottom_left = [0,160]
dst2_bottom_right = [320,100]
pts1 = np.float32([src_top_left,src_top_right,src_bottom_left,src_bottom_right])
pts2 = np.float32([dst_top_left,dst_top_right,dst_bottom_left,dst_bottom_right])
pts3 = np.float32([src2_top_left,src2_top_right,src2_bottom_left,src2_bottom_right])
pts4 = np.float32([dst2_top_left,dst2_top_right,dst2_bottom_left,dst2_bottom_right])
M1 = cv2.getPerspectiveTransform(pts1,pts2)
M2 = cv2.getPerspectiveTransform(pts3,pts4)
img_left = mpimg.imread('./data/IMG/left_2016_12_01_13_30_48_287.jpg') #[60:140,0:320]
img_center = mpimg.imread('./data/IMG/center_2016_12_01_13_30_48_287.jpg')
dst1 = cv2.warpPerspective(img_center,M1,(320,160)) #borderMode=cv2.BORDER_REPLICATE
dst2 = cv2.warpPerspective(img_center,M2,(320,160))
plt.rc('figure', figsize=(15,15))
show_picture2(dst2, "Bridge (leftmost virtual camera)", (1,4), (0,0))
show_picture2(dst1, "Bridge (left virtual camera)", (1,4), (0,1))
show_picture2(img_left, "Bridge (left camera)", (1,4), (0,2))
show_picture2(img_center, "Bridge (center camera)", (1,4), (0,3))
The following code and the two images show the flipping:
#flipping
from imgaug import augmenters as iaa
print("Flipping: source steering {} and target steering {}".format(0.6, -0.6))
flipper = iaa.Fliplr(1.0) # always horizontally flip each input image
img1_flip = flipper.augment_image(img1) # probably vertically flip image 1
plt.rc('figure', figsize=(15,15))
show_picture2(img1, "left", (1,2), (0,0))
show_picture2(img1_flip, "left flipped -> right", (1,2), (0,1))
The car in the video responds slowly of changing routes. The transitions between the bridge and the first sharp curve can still be improved. Perhaps this can be achieved through further Dense layers. I'll try that sometime.
%%HTML
<video width="640" height="480" controls>
<source src="./run7_ok.mp4" type="video/mp4">
</video>


some text
Average
123
mbps
World average: 12 mb/s
Sample
23000
Country Average 46000 (50%)
Rank
#16
Total countries: 228


To seek and maintain a full-time position that offers professional challenges utilizing interpersonal skills, excellent time management and problem-solving skills.


Zverev denies illegal phone use at ATP Finals
London - Alexander Zverev denied he was using his phone illegally during his ATP Finals round-robin defeat to Stefanos Tsitsipas at London's O2 Arena.
The defending champion was asked about the incident during the post-match press conference following his 6-3, 6-2 defeat on Wednesday.
TV footage that circulated on social media appeared to show him touching something in his bag at a changeover during the match.
Rules state players cannot access any electronic devices during matches.
But Zverev, 22, insisted he did not have his phone with him on court.
"My phone was in the locker room," he said. "I always leave it there. I don't know what they saw, but it was definitely not a phone."
When asked what he might have been touching in his bag, the German said: "I mean, a water bottle? Empty water bottle maybe?"
Zverev beat Rafael Nadal earlier in the week but his comprehensive defeat by Tsitsipas leaves his tournament hopes in the balance ahead of his final group match against Daniil Medvedev on Friday.


pydgrid - Python Distribution Grid simulator¶
pydgrid is an open source (MIT) electric distribution grid simulator. Grid elements are represented in phasor coordinates. Some futures are:
- Balanced and unbalanced power flow
- Time series simulation
- Time domain simulation
The source code is hosted on GitHub, and all contributions and feedback are more than welcome. You can test pydgrid in your browser using binder, a cloud Jupyter notebook server:


Protege Server Administration Tab Plugin
A plugin that provides an administration tab for a Protege server configuration.
Author
Rafael Gonçalves


IEEE.org
|
IEEE Xplore Digital Library
|
IEEE Standards Association
|
Spectrum Online
|
More IEEE Sites
Toggle navigation
Who we are?
About IEEE
About IEEE USICT
Our Vision
Benefits
What we do?
Events
TechVeda
Our Team
Execom 2014-15
Execom 2013-14
Join us
Contact us
Join IEEE
Contact Us


bupaR: Business Process Analysis in R
Comprehensive Business Process Analysis toolkit. Creates S3-class for event log objects, and related handler functions. Imports related packages for filtering event data, computation of descriptive statistics, handling of 'Petri Net' objects and visualization of process maps. See also packages 'edeaR','processmapR', 'eventdataR' and 'processmonitR'.
| Version: |
0.4.1 |
| Imports: |
magrittr, dplyr, data.table, shiny, miniUI, purrr, tidyr, glue, forcats, rlang, eventdataR (≥ 0.2.0) |
| Suggests: |
testthat |
| Published: |
2018-07-01 |
| Author: |
Gert Janssenswillen [aut, cre] |
| Maintainer: |
Gert Janssenswillen <gert.janssenswillen at uhasselt.be> |
| License: |
MIT + file LICENSE |
| URL: |
https://www.bupar.net |
| NeedsCompilation: |
no |
| Materials: |
README |
| CRAN checks: |
bupaR results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=bupaR
to link to this page.


Starmask E2E Test Dapp
Node URL
Status
Network:
ChainId:
Latest Block:
Basic Actions
Starcoin accounts on the Node:
Account Actions
Address
Account Balance:
0
STC
Send STC
From
To(address or receiptIdentifier)
Amount of NanoSTC
PrivateKey of Sender
Sending Status: Not clicked
Contract Actions
Signer Address
Contract Code
Type Arguments of Contract
Function Arguments of Contract
Password to unlock Signer
Contract Status: Not clicked
Sign Message
Signer Address
Messsage
Password to unlock Signer
Message Status: Not clicked
Send Tokens
Token:
Eth Sign
Result:
Personal Sign
Result:
eth-sig-util recovery result:
personal_ecRecover result:
Encrypt / Decrypt
Encryption key:
Ciphertext:
Cleartext:
Sign Typed Data
Result:
Recovery result:
Sign Typed Data V3
Result:
Recovery result:
Sign Typed Data V4
Result:
Recovery result:


Pan Share
SIGN IN
USERNAME
PASSWORD
Stay Signed in
Forgot Password ?
SIGN IN
SIGN UP
Forgot Password ?
EMAIL
RESET
Back to Login
Sign Up
UserName
NickName
Email
PassWord
RePassWord
SIGN UP
Back to Login


Hello world, I'm Miguel Maxberry from Indianapolis. I'm a entry-level programmer. I love code and computers because of the complexity. I love to get know people and there thought patterns. My dream is to start my own tech company and move somewhere warm. I find coding a bit challenging sometimes but I just embrace it!
Hypertext Markup Language, a standardized system for tagging text files to achieve font, color, graphic, and hyperlink effects on World Wide Web pages.
CSS is designed to enable the separation of presentation and content, including layout, colors, and fonts.
JavaScript is a dynamic programming language that's used for web development, in web applications, for game development, and lots more.


|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Packages that use StoredBlock | |
|---|---|
| com.google.bitcoin.core |
| Uses of StoredBlock in com.google.bitcoin.core |
|---|
| Fields in com.google.bitcoin.core declared as StoredBlock | |
|---|---|
protected StoredBlock |
BlockChain.chainHead
Tracks the top of the best known chain. |
| Methods in com.google.bitcoin.core that return StoredBlock | |
|---|---|
StoredBlock |
StoredBlock.build(Block block)
Creates a new StoredBlock, calculating the additional fields by adding to the values in this block. |
StoredBlock |
DiskBlockStore.get(byte[] hash)
|
StoredBlock |
BoundedOverheadBlockStore.get(byte[] hashBytes)
|
StoredBlock |
MemoryBlockStore.get(byte[] hash)
|
StoredBlock |
BlockStore.get(byte[] hash)
Returns the StoredBlock given a hash. |
StoredBlock |
DiskBlockStore.getChainHead()
|
StoredBlock |
BoundedOverheadBlockStore.getChainHead()
|
StoredBlock |
MemoryBlockStore.getChainHead()
|
StoredBlock |
BlockChain.getChainHead()
Returns the block at the head of the current best chain. |
StoredBlock |
BlockStore.getChainHead()
Returns the StoredBlock that represents the top of the chain of greatest total work. |
StoredBlock |
StoredBlock.getPrev(BlockStore store)
Given a block store, looks up the previous block in this chain. |
| Methods in com.google.bitcoin.core with parameters of type StoredBlock | |
|---|---|
boolean |
StoredBlock.moreWorkThan(StoredBlock other)
Returns true if this objects chainWork is higher than the others. |
void |
DiskBlockStore.put(StoredBlock block)
|
void |
BoundedOverheadBlockStore.put(StoredBlock block)
|
void |
MemoryBlockStore.put(StoredBlock block)
|
void |
BlockStore.put(StoredBlock block)
Saves the given block header+extra data. |
void |
DiskBlockStore.setChainHead(StoredBlock chainHead)
|
void |
BoundedOverheadBlockStore.setChainHead(StoredBlock chainHead)
|
void |
MemoryBlockStore.setChainHead(StoredBlock chainHead)
|
void |
BlockStore.setChainHead(StoredBlock chainHead)
Sets the StoredBlock that represents the top of the chain of greatest total work. |
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


Personal Organizer: Platinum
Filter
Name:
Tags:
Add New Item
Name:
Description:
Time:
To:
Tags:
Name
Description
Start Time
End Time
Tags


|
|
|
|
|
|
|
|
|
|
| Member Login |
| To log into your Free Web Pages account, enter your
username (followed by .freewebpages.org) and password then click
"Member Login". If you have forgotten your password, click "Support"
below. |
|
|
|
|
|
|
|
|
|
Free File Hosting - Video Sharing - Free Image Hosting - Free Web Space - Fingerprinting - Salary Calculator
Copyright ©2011 Free Web Pages - Privacy Policy
|


| 194 | (A) | and sythen sone on witħ the sondis soghte to-warde Rome |
| (C) | ---- no text ---- | |
| 190 | (D) | And sithin sondis he sente a-none vn-to rome |
| 188 | (E) | ¶ And afterward his sondes . sente to rome |
| (Ex) | ---- no text ---- | |
| 193 | (L) | suþ with þe sondesman he þouȝt to rome |
| 187 | (P) | Sithen with sanedisman sent vn-to Rome |
| 188 | (U) | ¶ And sen after his sonde / he sent vnto Rome |
| (V) | ---- no text ---- |


Welcome to Death Pong ...
Ok ... its a working title
Our Inspiration
Pong is one of the earliest arcade video games and the very
first sports arcade video game. It is a tennis sports game
featuring simple two-dimensional graphics.
Initial release date: November 29, 1972
Designer: Atari


By accessing the website at http://www.learnstudyteach.com, you are agreeing to be bound by these terms of service, all applicable laws and regulations, and agree that you are responsible for compliance with any applicable local laws. If you do not agree with any of these terms, you are prohibited from using or accessing this site. The materials contained in this website are protected by applicable copyright and trademark law.
Permission is granted to temporarily download one copy of the materials (information or software) on Learn Study Teach's website for personal, non-commercial transitory viewing only. This is the grant of a license, not a transfer of title, and under this license you may not:
modify or copy the materials;
use the materials for any commercial purpose, or for any public display (commercial or non-commercial);
attempt to decompile or reverse engineer any software contained on Learn Study Teach's website;
remove any copyright or other proprietary notations from the materials; or
transfer the materials to another person or "mirror" the materials on any other server.
This license shall automatically terminate if you violate any of these restrictions and may be terminated by Learn Study Teach at any time. Upon terminating your viewing of these materials or upon the termination of this license, you must destroy any downloaded materials in your possession whether in electronic or printed format.
The materials on Learn Study Teach's website are provided on an 'as is' basis. Learn Study Teach makes no warranties, expressed or implied, and hereby disclaims and negates all other warranties including, without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property or other violation of rights.
Further, Learn Study Teach does not warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on its website or otherwise relating to such materials or on any sites linked to this site.
In no event shall Learn Study Teach or its suppliers be liable for any damages (including, without limitation, damages for loss of data or profit, or due to business interruption) arising out of the use or inability to use the materials on Learn Study Teach's website, even if Learn Study Teach or a Learn Study Teach authorized representative has been notified orally or in writing of the possibility of such damage. Because some jurisdictions do not allow limitations on implied warranties, or limitations of liability for consequential or incidental damages, these limitations may not apply to you.
The materials appearing on Learn Study Teach's website could include technical, typographical, or photographic errors. Learn Study Teach does not warrant that any of the materials on its website are accurate, complete or current. Learn Study Teach may make changes to the materials contained on its website at any time without notice. However Learn Study Teach does not make any commitment to update the materials.
Learn Study Teach has not reviewed all of the sites linked to its website and is not responsible for the contents of any such linked site. The inclusion of any link does not imply endorsement by Learn Study Teach of the site. Use of any such linked website is at the user's own risk.
Learn Study Teach may revise these terms of service for its website at any time without notice. By using this website you are agreeing to be bound by the then current version of these terms of service.
These terms and conditions are governed by and construed in accordance with the laws of Texas and you irrevocably submit to the exclusive jurisdiction of the courts in that State or location.
Your privacy is important to us.
It is Learn Study Teach's policy to respect your privacy regarding any information we may collect while operating our website. Accordingly, we have developed this privacy policy in order for you to understand how we collect, use, communicate, disclose and otherwise make use of personal information. We have outlined our privacy policy below.
We are committed to conducting our business in accordance with these principles in order to ensure that the confidentiality of personal information is protected and maintained. Learn Study Teach may change this privacy policy from time to time at Learn Study Teach's sole discretion.
Education is the key to success in life, and teachers make a lasting impact in the lives of their students.


The Java EE 7 Tutorial
15.11 Creating and Using a Custom Validator
If the standard validators or Bean Validation don't perform the validation checking you need, you can create a custom validator to validate user input. As explained in Validation Model, there are two ways to implement validation code.
-
Implement a managed bean method that performs the validation.
-
Provide an implementation of the
javax.faces.validator.Validator
interface to perform the validation.
Writing a Method to Perform Validation explains how to implement a managed bean method to perform validation. The rest of this section explains how to implement the Validator
interface.
If you choose to implement the Validator
interface and you want to allow the page author to configure the validator's attributes from the page, you also must specify a custom tag for registering the validator on a component.
If you prefer to configure the attributes in the Validator
implementation, you can forgo specifying a custom tag and instead let the page author register the validator on a component using the f:validator
tag, as described in Using a Custom Validator.
You can also create a managed bean property that accepts and returns the Validator
implementation you create, as described in Writing Properties Bound to Converters, Listeners, or Validators. You can use the f:validator
tag's binding attribute to bind the Validator
implementation to the managed bean property.
Usually, you will want to display an error message when data fails validation. You need to store these error messages in a resource bundle.
After creating the resource bundle, you have two ways to make the messages available to the application. You can queue the error messages onto the FacesContext
programmatically, or you can register the error messages in the application configuration resource file, as explained in Registering Application Messages.
For example, an e-commerce application might use a general-purpose custom validator called FormatValidator.java
to validate input data against a format pattern that is specified in the custom validator tag. This validator would be used with a Credit Card Number field on a Facelets page. Here is the custom validator tag:
<mystore:formatValidator formatPatterns="9999999999999999|9999 9999 9999 9999|9999-9999-9999-9999"/>
According to this validator, the data entered in the field must be one of the following:
-
A 16-digit number with no spaces
-
A 16-digit number with a space between every four digits
-
A 16-digit number with hyphens between every four digits
The f:validateRegex
tag makes a custom validator unnecessary in this situation. However, the rest of this section describes how this validator would be implemented and how to specify a custom tag so that the page author could register the validator on a component.
15.11.1 Implementing the Validator Interface
A Validator
implementation must contain a constructor, a set of accessor methods for any attributes on the tag, and a validate
method, which overrides the validate
method of the Validator
interface.
The hypothetical FormatValidator
class also defines accessor methods for setting the formatPatterns
attribute, which specifies the acceptable format patterns for input into the fields. The setter method calls the parseFormatPatterns
method, which separates the components of the pattern string into a string array, formatPatternsList
.
public String getFormatPatterns() { return (this.formatPatterns); } public void setFormatPatterns(String formatPatterns) { this.formatPatterns = formatPatterns; parseFormatPatterns(); }
In addition to defining accessor methods for the attributes, the class overrides the validate
method of the Validator
interface. This method validates the input and also accesses the custom error messages to be displayed when the String
is invalid.
The validate
method performs the actual validation of the data. It takes the FacesContext
instance, the component whose data needs to be validated, and the value that needs to be validated. A validator can validate only data of a component that implements javax.faces.component.EditableValueHolder
.
Here is an implementation of the validate
method:
@FacesValidator public class FormatValidator implements Validator, StateHolder { ... public void validate(FacesContext context, UIComponent component, Object toValidate) { boolean valid = false; String value = null; if ((context == null) || (component == null)) { throw new NullPointerException(); } if (!(component instanceof UIInput)) { return; } if ( null == formatPatternsList || null == toValidate) { return; } value = toValidate.toString(); // validate the value against the list of valid patterns. Iterator patternIt = formatPatternsList.iterator(); while (patternIt.hasNext()) { valid = isFormatValid( ((String)patternIt.next()), value); if (valid) { break; } } if ( !valid ) { FacesMessage errMsg = new FacesMessage(FORMAT_INVALID_MESSAGE_ID); FacesContext.getCurrentInstance().addMessage(null, errMsg); throw new ValidatorException(errMsg); } } }
The @FacesValidator
annotation registers the FormatValidator
class as a validator with the JavaServer Faces implementation. The validate
method gets the local value of the component and converts it to a String
. It then iterates over the formatPatternsList
list, which is the list of acceptable patterns that was parsed from the formatPatterns
attribute of the custom validator tag.
While iterating over the list, this method checks the pattern of the component's local value against the patterns in the list. If the pattern of the local value does not match any pattern in the list, this method generates an error message. It then creates a javax.faces.application.FacesMessage
and queues it on the FacesContext
for display, using a String
that represents the key in the Properties
file:
public static final String FORMAT_INVALID_MESSAGE_ID = "FormatInvalid"; }
Finally, the method passes the message to the constructor of javax.faces.validator.ValidatorException
.
When the error message is displayed, the format pattern will be substituted for the {0}
in the error message, which, in English, is as follows:
Input must match one of the following patterns: {0}
You may wish to save and restore state for your validator, although state saving is not usually necessary. To do so, you will need to implement the StateHolder
interface as well as the Validator
interface. To implement StateHolder
, you would need to implement its four methods: saveState(FacesContext)
, restoreState(FacesContext, Object)
, isTransient
, and setTransient(boolean)
. See Saving and Restoring State for more information.
15.11.2 Specifying a Custom Tag
If you implemented a Validator
interface rather than implementing a managed bean method that performs the validation, you need to do one of the following.
-
Allow the page author to specify the
Validator
implementation to use with thef:validator
tag. In this case, theValidator
implementation must define its own properties. Using a Custom Validator explains how to use thef:validator
tag. -
Specify a custom tag that provides attributes for configuring the properties of the validator from the page.
To create a custom tag, you need to add the tag to the tag library descriptor for the application, bookstore.taglib.xml
:
<tag> <tag-name>validator</tag-name> <validator> <validator-id>formatValidator</validator-id> <validator-class> dukesbookstore.validators.FormatValidator </validator-class> </validator> </tag>
The tag-name
element defines the name of the tag as it must be used in a Facelets page. The validator-id
element identifies the custom validator. The validator-class
element wires the custom tag to its implementation class.
Using a Custom Validator explains how to use the custom validator tag on the page.
15.11.3 Using a Custom Validator
To register a custom validator on a component, you must do one of the following.
-
Nest the validator's custom tag inside the tag of the component whose value you want to be validated.
-
Nest the standard
f:validator
tag within the tag of the component and reference the customValidator
implementation from thef:validator
tag.
Here is a hypothetical custom formatValidator
tag for the Credit Card Number field, nested within the h:inputText
tag:
<h:inputText id="ccno" size="19" ... required="true"> <mystore:formatValidator formatPatterns="9999999999999999|9999 9999 9999 9999|9999-9999-9999-9999"/> </h:inputText> <h:message styleClass="validationMessage" for="ccno"/>
This tag validates the input of the ccno
field against the patterns defined by the page author in the formatPatterns
attribute.
You can use the same custom validator for any similar component by simply nesting the custom validator tag within the component tag.
If the application developer who created the custom validator prefers to configure the attributes in the Validator
implementation rather than allow the page author to configure the attributes from the page, the developer will not create a custom tag for use with the validator.
In this case, the page author must nest the f:validator
tag inside the tag of the component whose data needs to be validated. Then the page author needs to do one of the following.
-
Set the
f:validator
tag'svalidatorId
attribute to the ID of the validator that is defined in the application configuration resource file. -
Bind the custom
Validator
implementation to a managed bean property using thef:validator
tag'sbinding
attribute, as described in Binding Converters, Listeners, and Validators to Managed Bean Properties.
The following tag registers a hypothetical validator on a component using an f:validator
tag and references the ID of the validator:
<h:inputText id="name" value="#{CustomerBean.name}" size="10" ...> <f:validator validatorId="customValidator" /> ... </h:inputText>


The Most Popular Thanksgiving Dishes in Each State
Ask someone what they eat at Thanksgiving dinner and the answer will likely depend on where they're from. Though some dishes, like turkey, are considered holiday staples across the country, others are rarely seen outside certain regions. To get an idea of how Thanksgiving menus vary from state to state, check out these maps from House Method.
To determine the most-searched sweet and savory Thanksgiving recipes in each state, the homeowners' resource investigated which food-related terms Americans are Googling this time of year.
Roast turkey dominated the eastern half of the U.S., topping Thanksgiving recipe search trends in nine states from Florida to Massachusetts. It turns out that people from the Bluegrass State like all of their poultry fried: Kentucky was the only state where the search term "deep fried turkey" came out No.1.
Sweet potato casserole is popular in the South, while in Midwestern states they're searching for green bean casserole, and out in Utah, Nevada, and California, they're looking for yams (though they likely mean sweet potatoes).
House Method also made a map for the people who consider dessert the best part of Thanksgiving. Pumpkin pie is the most popular sweet dish on the Thanksgiving table by far, topping search results in 15 states. The map below shows that sweet potato pie is preferred in Southeastern states like North Carolina, South Carolina, and Georgia, and pecan pie is the favorite of Southern states slightly to the West like Alabama, Louisiana, and Texas.
After seeing what your state likes to serve on Thanksgiving, check out the origins of your favorite Thanksgiving recipes.
[h/t House Method]


--- layout: base title: "Damir Cavar's code page" author: "Damir Cavar" desc: "This is Damir Cavar's list of published code." keywords: "Damir Cavar, Go, C++, Java, Python, Julia, AI, Scheme, Haskell, Computational Linguistics, Natural Language Processing, CL, NLP" link: code ---
For more details and access to code and project material, see my repos:


Data types and Variables
Problem 2. Quoted text
Create a string variable with quoted text in it.
For example: "How you doin'?", Joey said.


Each one of these ad slots has the flag useSameDomainRenderingUntilDeprecated specified in a different way. Each way should work, and all should use GPT.js, not glade.


This page demonstrates the installation of Fresco. It can be used as an example when installing Fresco on your domain.
See the documentation for detailed installation instructions and examples on how to get started.
Get feedback: Support Forum
Follow: @frescojs


Football: Everton beat Southampton 2-1 for first away win of the season
REUTERS: Goals from Tom Davies and Richarlison gave Everton their first away win of the season at Southampton on Saturday (Nov 9), taking some pressure off Toffees manager Marco Silva but putting more of it on his opposite number Ralph Hasenhuttl.
The visitors took the lead in the fourth minute when the unmarked Davies headed in a corner kick for his first goal since May 2018 - which also came against the Saints.
Everton created the most chances in the first half, while the home side failed to muster a single shot on goal, leading to boos and jeers at the halftime whistle.
The Saints were quick off the blocks in the second half, and the pressure paid off when halftime substitute Sofiane Boufal beat his marker on the right and squared the ball for Danny Ings to tap in from close range.
But with 15 minutes to go, Djibril Sidibe sent in a pin-point cross to the far post where Richarlison made it 2-1 with a left-footed first-time finish for his first goal in eight league matches.
Everton move up to 13th in the table on 14 points while Southampton remain in the drop zone, in 19th place on eight points.


User stories:
- I can pass a string as a parameter, and it will check to see whether that string contains either a unix timestamp or a natural language date (example: January 1, 2016).
- If it is a valid date, it returns both the Unix timestamp and the natural language form of that date.
- If it does not contain a date or Unix timestamp, it returns null for those properties.
Example queries:
https://answart-timestamp-ms.herokuapp.com/December%2015,%202015
https://answart-timestamp-ms.herokuapp.com/1450137600
Output
{ "unix":<PHONE_NUMBER>, "natural": "December 15, 2015" }


You must be logged in to start or continue working on a translation.
Please enable cookies for this website. If you don't have cookies enabled, the translation utility will not work properly.


This FAQ collects answers to a few commonly occuring questions. More support can be found on the #desc-dc2-eyeball channel. For technical requests (bug reports or improvements), open a GitHub issue.
Check that you are logged into the authenticated NERSC portal (i.e., https://portal-auth.nersc.gov). If the URL in your browser start with https://portal.nersc.gov instead then you are not properly authenticated and your submissions will not be recorded.
LSST DM stores information about why a pixel is masked in a "bit mask plane", and we color the mask based on the highest bit in this plane. We try to follow the DM convention for mapping colors to mask bits, which can be found here.
If your are logged in, then your submissions are recorded each time you click the button. It's not a problem if you missed something on the image or you hit the button accidentially, since we don't have to be complete in finding problems. We do seek to be reliable when we state that something is problematic.
We would like to know about any kind of flaw in the data. Therefore, please mark both false negative and false positive instances of artifacts (e.g., use "Edge-Bleed" to mark both an edge-bleed without an edge-bleed mask and a edge-bleed mask without an edge-bleed). We provide a button, that allows you to report a false-positive treatment of such a problem.
Any underlined letter on a button, for example
indicates that you can use a keyboard shortcut, namely Alt+m or Alt+s in these two cases. Hint for Mac users: Alt = Opt
Bleed trails result when a bright object saturates one or more pixels and charge overflows along the readout direction. There is a channel stop in the middle of the LSST sensors that blocks charge flow and separates the pixels readout by amplifiers on opposite sides of the CCD. This causes some of the bleed trails to appear asymmetric depending on their position in the channel and the amount of charge overflow.


The networkD3
package allows to build interactive
network diagram directly from
R
. It allows to zoom, hover nodes, reorganize the
layout and more. This post explains how to use the library with
reproducible examples.
Here is a very basic interactive network diagram built with the
networkD3
package. Its creation follows those steps:
simpleNetwork()
function allows to plot the
interactive chart directly
saveWidget()
function allows to save the chart in
a standalone .html
file if needed
# Libraries
library(igraph)
library(networkD3)
# create a dataset:
data <- data_frame(
from=c("A", "A", "B", "D", "C", "D", "E", "B", "C", "D", "K", "A", "M"),
to=c("B", "E", "F", "A", "C", "A", "B", "Z", "A", "C", "A", "B", "K")
)
# Plot
p <- simpleNetwork(data, height="100px", width="100px")
# p
# save the widget
# library(htmlwidgets)
# saveWidget(p, file=paste0( getwd(), "/HtmlWidget/networkInteractive1.html"))
Many option are available to customize the interactive diagram.
nodeColour
or fontSize
. They are
easy to understand and you can get a list of them with
help(simpleNetwork)
.
networkD3
uses a force
algorithm: each nodes are gonna be attracted / repulsed depending
on their connection degree?
# Libraries
library(igraph)
library(networkD3)
# create a dataset:
data <- data_frame(
from=c("A", "A", "B", "D", "C", "D", "E", "B", "C", "D", "K", "A", "M"),
to=c("B", "E", "F", "A", "C", "A", "B", "Z", "A", "C", "A", "B", "K")
)
# Plot
p <- simpleNetwork(data, height="100px", width="100px",
Source = 1, # column number of source
Target = 2, # column number of target
linkDistance = 10, # distance between node. Increase this value to have more space between nodes
charge = -900, # numeric value indicating either the strength of the node repulsion (negative value) or attraction (positive value)
fontSize = 14, # size of the node names
fontFamily = "serif", # font og node names
linkColour = "#666", # colour of edges, MUST be a common colour for the whole graph
nodeColour = "#69b3a2", # colour of nodes, MUST be a common colour for the whole graph
opacity = 0.9, # opacity of nodes. 0=transparent. 1=no transparency
zoom = T # Can you zoom on the figure?
)
#p
# save the widget
# library(htmlwidgets)
# saveWidget(p, file=paste0( getwd(), "/HtmlWidget/networkInteractive2.html"))


This package includes functions and data accompanying the book
"Data Mining with R, learning with case studies" by Luis Torgo, CRC Press 2010.
| Version: |
0.4.1 |
| Depends: |
R (≥ 2.10), methods, graphics, lattice (≥ 0.18-3), grid (≥
2.10.1) |
| Imports: |
xts (≥ 0.6-7), quantmod (≥ 0.3-8), zoo (≥ 1.6-4), abind (≥
1.1-0), rpart (≥ 3.1-46), class (≥ 7.3-1), ROCR (≥ 1.0) |
| Published: |
2013-08-08 |
| Author: |
Luis Torgo |
| Maintainer: |
Luis Torgo <ltorgo at dcc.fc.up.pt> |
| License: |
GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: |
no |
| Citation: |
DMwR citation info |
| In views: |
MissingData |
| CRAN checks: |
DMwR results |


"x" "1" "MORIYA,M OHTA,T WATANABE,K MIYAZAWA,T KATO,K AND SHIRASU,Y, FURTHERMUTAGENICITY STUDIES ON PESTICIDES IN BACTERIAL REVERSION ASSAY SYSTEMS, MUTAT.RES. 116(3-4):185-216,1982"


{% extends "base.html" %} {% block body %}
If you were a staff user, you could see all registered users.
If you were a primary staff user, you could see all staff users.


I'm a developer by trade and make a bunch of projects related to gaming in my spare time.
A Magic Mirror concept that handles the most basic needs of a "family" display of information
A straightforward tool to visualize how far you can hear on maps
Platform for tracking various developers from various games
ical calendars for all major swedish hockey teams
Easy webhook notifications using Telegram
Simple website for my parents shop
Interactive graph for all ammo on Escape from Tarkov


#include "stdio.h"
int main(){
printf("Hello Students\n");
}
The Engduino is a microcontroller device that is perfect for beginner programmers, but also can be used to create some pretty sophisticated programs. It has a USB serial port, 16 LEDs, several different sensors, a button and an accelerometer, all of which we'll teach you how to use in our tutorials.
This website is a collection of short tutorials to teach you how to use the different componenents of the Engduino, and also has lots of different exercises for you to try yourself. If you complete all of the pages, then you'll be fit and ready to give the final project a go, and there will be plenty of hints and tips spread across the website.
Our projects are a great way of getting a deeper understanding of microcontrollers, sensors, programming and more. C is a very complex language, and the more comfortable you get with it through doing projects like this, the greater the things you can create. It can be a really powerful tool to solve all sorts of real world problems, and having a good level of familiarity with C will be really great for you in the future. Just as importantly, it's fun! Coding and creating with the Engduino is a great way to combine logic and creativity - we can't wait to see what you can create once you've finished our tutorials; the sky is the limit!
This website is primarily aimed at 11 - 14 year olds, but its totally accessible who knows a bit of C and wants to learn more about the cool things they can do with an Engduino. If you don't already know C, we'd recommend doing an online tutorial to learn the basics. Check out our handy Cheat Sheet to see what you'll need to know for these tutorials.
If you've got this far, you're ready to start straight away! Check out our first tutorial and work through the rest of the pages of the website to learn loads of cool things that you can do with your Engduino
Next


Loop
The loop
is the function that will house most of the game
logic you will write. The code in this function is executed several
times a second to provide you the baseline for writing your game.
Framerate
Exactly how many times the loop
function will be executed
in a second depends on multiple factors. Most devices and the browser
will make "best effort" to execute the loop code 60 times per second
(~16.7 milliseconds). Most modern PCs/browsers won't have a problem
achieving this performance, even for complicated games, but when the
code is compiled and run on slower (such as the Arduboy) you might see a
noticable slowdown as the device tries (and fails) to keep up with the
complexity/computational load of your game. In these situations you
might want to revisit your game logic and simplify or optimize parts of
your code to make sure it can deliver an optimal experience on the
physical device as well. For Arduboy-related performance issues, testing
with the
Project ABE emulator
might save you considerable amount of time wasted on re-flashing an
actual physical device.


{% extends 'base.html' %} {% load input_field %} {% load format_utils %} {% load step_order %} {% load format_utils %} {% block title %}{{ block.super }}: Your Children {% endblock %} {% block progress %}{% include "partials/progress.html" %}{% endblock %} {% block content %}
Please select one
Who the payor is depends on:
It may also be affected by other factors such as:
If one parent takes care of the child / children most of the time, the other parent would normally be the payor.
If the child / children spends an equal amount of time in the care of each of you, or if both parents are splitting parenting time of multiple children, the payor is likely the parent with the higher income.
The Federal Child Support Guidelines
{% endblock %}


The Change House; Which room are you in?
Change seems to be a constant. Whether we realise it or not, we are always in some stage of a change cycle, big or small.
Personal growth is an ever-lasting process, an ongoing journey of development, which means that change, renewal and reinvention of a new norm is with us all the time.
One of the better models to explain this is the Change House.
First developed in the 1970s by Claes Janssen, the Change House is a metaphor that brings the concept of change to life by using the idea of a house with several rooms. Each of the four main rooms represents a different ‘state’ we may find ourselves in.
While you're here; if you would like some help with adapting to change, we offer several virtual workshops on the topic from how to cope on a personal level to teaching managers to help their teams through times of change. You can find out more here - Managing my change.
Here is what it looks like;
Let’s take a trip through the rooms.
Room of Contentment
When life is good, we stay in the room of contentment. It is the mindset where we are content with what we have and how our life is progressing. This can be in a big picture mindset or smaller such as specifics like work, or relationships, or life situations.
Sometimes, we are so content, we move out onto the ‘Sun Lounge’ of contentment. This indicates an even more relaxed mindset as we bask in the sunshine of our perfect world.
This is when change happens.
Something happens to disrupt this contentment and thus move us into the…
Room of Denial
This room is when change first occurs and we initially believe that it won’t affect us or doesn’t apply to us. We fail to see the potential threat to our norm and instead continue to believe that everything is okay or that the change will eventually ‘blow over’.
This denial is chiefly focused around the impact it will have upon us specifically, rather than a denial that the change is happening at all. It is our world we are worried about, so we deny the idea of change affecting it, in order to protect that state of existence.
At the extreme end of this scale is the ‘Dungeon of Denial’. Sometimes, we can get stuck in our denial and we end up in this lower room by burying our heads in the sand and adopting an ‘ostrich’ mindset instead.
Room of Confusion
Eventually, we wake up to the situation around us; we finally realise that something is different, but we still don’t know how to respond appropriately to it.
Emotions tend to run high with anxiety or fear as we assess the situation we are in and experience a myriad of feelings associated with that.
Most of us will find ourselves doing a great deal of analysis in this room, around the correct direction to go in order to move forward, but at last, we have finally recognised that change is needed and must be embraced.
However, like the Room of Denial, the Room of Confusion also has a dungeon; aptly name the ‘Pit of Paralysis’.
We go to this room when there is simply too much to consider; we become overwhelmed with the options of how to respond to change and end up doing nothing. We are paralysed by our own uncertainty and confusion of the best way to move forward.
Wrong Direction Door
Alternatively, we can also end up going through the ‘Wrong Direction Door’ out of the Room of Confusion. This is when we believe we have found the correct response to the change and move forwards, only to choose the wrong direction to do so.
For example, Blockbusters were in the Room of Confusion; the world was changing, people were starting to go online for their films and streaming services becoming steadily more popular. They believed that staying on the high street was the correct way to go, that the idea of online services would not catch on.
This may be a good example of going through the Wrong Direction Door.
What they should have done is to correctly see where the world was heading and make their decision based on that.
Instead, they decided to continue in the way that was familiar to them and thus ended up failing.
In the end, no matter how much time we spend in the Room of Confusion or its side rooms, we need to eventually end up in the…
Room of Renewal
This is where we have ultimately made up our minds; we form a plan and a new way forward, and we feel empowered or invigorated to move on.
We create energy for the new way, putting a greater emphasis on creativity and support, helping others who are going through the same change to adapt and find their own new normal.
This sharing of feelings, thoughts and experiences encourages conscious engagement to the change, so it can be seen as increasingly positive rather than negative.
This is a never ending cycle. Once we have settled again, we will find ourselves back in the Room of Contentment and thus the cycle will start all over again once the next change arrives.
We must always be prepared for the changes ahead of us, so that we may continue to move forward, and the Change House model helps us to understand where we are, what the challenges are and how to deal with them in order to move forward onto the next stage of our journey.
What changes are you going through right now? Can you now identify which room of the change house you are in?


Tue Jul 29, 2008
It’s been about four months since my classmates and I graduated from the Print Futures Professional Writing Program. If you’re serious about your craft and are thinking of attending this two-year diploma program, I heartily encourage you to go for it. I love to write and I love getting paid to do it even more. But don’t kid yourself - writing well works up a mental sweat for every writer, whether oozing with talent or not.
I thought I’d acknowledge some of my graduated colleagues who have websites online. The reason most of the sites on the list below are not on my blogroll is because they’re static pages. In other words, they’re not regularly updated - which is a little unfortunate in my opinion because I love to read what people are up to in the minutiae of their lives and enjoy reading the blogs of people I know. I almost never check in with static pages. Facebook’s great, but is more like a sophisticated telegraphing machine than a home you can personalize and make your own.
If you’re a Print Futures Grad and have a blog or regularly updated site that’s not on this list, please let me know - I’d love to add you.
In no particular order:
Josie Padro: The Probe is Josie’s blog.
Current position: Freelance writer (alive, Vancouverplus).
Shawn Klemmer: You can find Shawn at Wildgrass Communications.
Current position: Public Relations Officer at the Xa:ytem Longhouse Interpretive Centre.
Pamela Findling: Pamela’s portfolio website.
Current position: Communications Coordinator at Science World (Telus World of Science).
James Lee: James’ portfolio website.
Current position: Procedures Analyst at Central 1 Credit Union.
Laura Kelsey: personal portfolio website.
Current position: Editor of 100 Mile House Free Press.
Nicole Skutelnik: personal portfolio website.
Current position: Novelist (children’s lit).
Nissa Wells: personal portfolio website.
Current position: Online editor for Tactics Magazine.
Denis Orellana: You can find Denis at DMO Writing.
Current position: Editor of E.GO Magazine.
Kai Jansson: Personal site and blog.
Current position: Copy editor at Stockwatch.
These aren’t all the people I graduated with, but the others don’t have an online presence. Shockingly, there are people in this world who don’t spend all their time on the net!


Tina Turner says she now prefers housework to partying as 80th birthday nears
Tina Turner has performed with the likes of David Bowie, Elton John and Paul McCartney - but now says: “I got tired of partying, It is continuous, I love retirement"
by Karen RockettDynamic pop legend Tina Turner is loving taking it easy as she approaches her 80th.
She has partied with the greats during her decades living the showbiz lifestyle.
But the pop star told how she now prefers housework as she approaches her 80th birthday.
Tina, who has performed with the likes of David Bowie, Paul McCartney and Elton John, is taking life slowly after retiring from the music scene.
She said: “I got tired of partying. It is continuous. I love retirement.
"I love the house cleaning as when you don’t do it you get to crave it.”
But Tina, who is 80 on Tuesday, revealed there is still a lingering aspect of her wild days – the late nights.
She added: “I still sleep as I slept when I was on tours. I go to bed about 12.30am or 1am and get up at 10.30am or 11am. I have stayed in bed for a whole day.”


S.W.I.F.T
by
Srravya
Email<EMAIL_ADDRESS>Let us play the guessing game!
How many women participants are in this hall?
44
IF THIS WERE A HALL OF...
Drupal Community
17
IF THIS WERE A HALL OF...
PERL Contributors
3
IF THIS WERE A HALL OF...
Python Annual Conference
33
Why does it matter?
Let's begin already!
Where?
RGSOC
OUTREACHY
Wiki Women
AdaCamp
Lots of help and encouragement!
Meetups and Conferences!
Work groups!
S.W.I.F.T.
S.W.I.F.T. Women In Free Technologies
Mail us
@
swift@fsftn.org


Penn State Fans Can Now Breathe Easy About Today’s Ref
by Andrew HolleranUPDATE: The report about the official for today’s Ohio State-Penn State game being John O’Neill was incorrect, according to Greg Pickel.
This is good news for Nittany Lions fans, who were originally outraged at the news of O’Neill being the ref.
EARLIER: The head official for today’s Ohio State-Penn State game at Ohio Stadium in Columbus has been announced. It’s John O’Neill.
Penn State fans are not happy about this.
O’Neill is a veteran Big Ten referee and he has some not-so-great history with the Nittany Lions. Most notably, he maade some questionable-at-best calls in this year’s Penn State-Iowa game.
There was actually a petition started to get O’Neill fired after that game. Roughly 15,000 people signed it in early October.
“John O’Neill and his team of officials have missed multiple calls that have led to Penn State losses as well as the losses of touchdowns. Whether through reviewed plays or lack of reviewing their calls have been both wrong and inconsistent,” the petition read. “At this level of play, such poor officiating should be unacceptable and these referees are not performing at the level they should be. They should be relieved of their duties.”
O’Neill’s crew made several questionable calls in that game at Iowa. Penn State fans were furious when a Pat Freiermuth touchdown was overturned and the Nittany Lions had to settle for a field goal.
Penn State head coach James Franklin took a not-so-subtle shot at the officiating following the win at Iowa.
“We were one of the least penalized teams in the country coming in and tonight it didn’t play out that way,” Franklin said. “And I’ll leave it at that.”
Hopefully we can avoid any officiating controversy in Columbus this afternoon.
Ohio State and Penn State are set to kick off at noon E.T. on FOX.


| TEP: | 116 |
|---|---|
| Group: | Core Working Group |
| Type: | Documentary |
| Status: | Final |
| TinyOS-Version: | > 2.1 |
| Author: | Philip Levis |
Note
This memo documents a part of TinyOS for the TinyOS Community, and requests discussion and suggestions for improvements. Distribution of this memo is unlimited. This memo is in full compliance with TEP 1.
The memo documents the interfaces used by packet protocol components in TinyOS 2.x as well as the structure and implementation of ActiveMessageC, the basic data-link HIL component. It also documents the virtualized active message interfaces AMSenderC and AMReceiverC.
Sensor nodes are network-centric devices. Much of their software complexity comes from network protocols and their interactions. In TinyOS, the basic network abstraction is an active message, a single-hop, unreliable packet. Active messages have a destination address, provide synchronous acknowledgements, and can be of variable length up to a fixed maximum size. They also have a type field, which is essentially a protocol identifier for components built on top of this abstraction.
In TinyOS 1.x, the component GenericComm provides interfaces for transmitting and receiving active messages:
configuration GenericComm { provides { interface StdControl as Control; interface SendMsg[uint8_t id]; interface ReceiveMsg[uint8_t id]; command uint16_t activity(); } uses { event result_t sendDone(); } }
This component, while simple, has several issues. First, it has the activity() commmand, which does not have a single caller in the entire TinyOS tree. This command requires GenericComm to allocate a timer, wasting CPU cycles and RAM.
Second, it does not allow a node to receive packets besides those destined to it. Several network protocols (e.g., MintRoute [1], TAG [2]) take advantage of snooping on these packets for a variety of improvements in efficiency or performance. This has led to the creation of GenericCommPromiscuous, whose Receive interface does not distinguish between packets received that were addressed to the node and packets received that were addressed to other nodes. Choosing one of the two implementations is a global decision across an application. There is a way to enable both reception semantics at the same time for a different protocols, but they require a creative use of default event handlers.
Third, it assumes that components will directly access the packet structure, the accepted approach in TinyOS 1.x. However, directly accessing packet structures introduces unforseen dependencies: a component that names a header field, for example, binds itself to data link layers that have a field with that name. Similarly, components on top of GenericComm directly access the data payload of a packet.
TEP 111 documents the structure of a TinyOS 2.x packet buffer [3]. This TEP documents the interfaces used to access packet buffers, as well as ActiveMessageC, the basic data-link packet communication HIL.
Packet-level communication has three basic classes of interfaces. Packet interfaces are for accessing message fields and payloads. Send interfaces are for transmitting packets, and are distinguished by their addressing scheme. The Receive interface is for handling packet reception events. Finally, depending on whether the protocol has a dispatch identifier field, the Receive and Send interfaces may be parameterized in order to support multiple higher-level clients.
The basic TinyOS 2.x message buffer type is message_t, which is described in TEP 111. message_t right-justifies data-link headers to the data payload so that higher-level components can pass buffers between different data link layers without having to move data payloads. This means that the data payload of a data link frame is always at a fixed offset of a message_t.
Once protocols layer on top of each other, the data payload for components on top of the data link layer are no longer at a fixed offset. Where a component can put its header or data depends on what headers underlying components introduce. Therefore, in order to be able to find out where it can put its data, it must query the components below it. The Packet interface defines this mechanism:
interface Packet { command void clear(message_t* msg); command uint8_t payloadLength(message_t* msg); command void setPayLoadLength(message_t* msg, uint8_t len); command uint8_t maxPayloadLength(); command void* getPayload(message_t* msg, uint8_t len); }
A component can obtain a pointer to its data region within a packet by calling getPayload(). A call to this command includes the length the caller requires. The command maxPayloadLength returns the maximum length the payload can be: if the len parameter to getPayload is greater than the value maxPayloadLength would return, getPayload MUST return NULL.
A component can set the payload length with setPayLoadLength. A component can obtain the size of the data region of packet in use with a call to payloadLength. As Send interfaces always include a length parameter in their send call, setPayLoadLength is not required for sending, and so is never called in common use cases. Instead, it is a way for queues and other packet buffering components to store the full state of a packet without requiring additional memory allocation.
The distinction between payloadLength and maxPayloadLength comes from whether the packet is being received or sent. In the receive case, determining the size of the existing data payload is needed; in the send case, a component needs to know how much data it can put in the packet. By definition, the return value of payloadLength must be less than or equal to the return value of maxPayloadLength.
The Packet interface assumes that headers have a fixed size. It is difficult to return a pointer into the data region when its position will only be known once the header values are bound.
The clear command clears out all headers, footers, and metadata for lower layers. For example, calling clear on a routing component, such as CollectionSenderC[4]_, will clear out the collection headers and footers. Furthermore, CollectionSenderC will recursively call clear on the layer below it, clearing out the link layer headers and footers. Calling clear is typically necessary when moving a packet across two link layers. Otherwise, the destination link layer may incorrectly interpret metadata from the source link layer, and, for example, transmit the packet on the wrong RF channel. Because clear prepares a packet for a particular link layer, in this example correct code would call the command on the destination link layer, not the source link layer.
Typically, an incoming call to the Packet interface of a protocol has an accompanying outgoing call to the Packet interface of the component below it. The one exception to this is the data link layer. For example, if there is a network that introduces 16-bit sequence numbers to packets, it might look like this:
generic module SequenceNumber { provides interface Packet; uses interface Packet as SubPacket; } implementation { typedef nx_struct seq_header { nx_uint16_t seqNo; } seq_header_t; enum { SEQNO_OFFSET = sizeof(seq_header_t), }; command void Packet.clear(message_t* msg) { void* payload = call SubPacket.getPayload(msg, call SubPacket.maxPayloadLength()); call SubPacket.clear(); if (payload != NULL) { memset(payload, sizeof(seq_header_t), 0); } } command uint8_t Packet.payloadLength(message_t* msg) { return SubPacket.payloadLength(msg) - SEQNO_OFFSET; } command void Packet.setPayloadLength(message_t* msg, uint8_t len) { SubPacket.setPayloadLength(msg, len + SEQNO_OFFSET); } command uint8_t Packet.maxPayloadLength() { return SubPacket.maxPayloadLength(msg) - SEQNO_OFFSET; } command void* Packet.getPayload(message_t* msg, uint8_t len) { uint8_t* payload = call SubPacket.getPayload(msg, len + SEQNO_OFFSET); if (payload != NULL) { payload += SEQNO_OFFSET; } return payload; } }
The above example is incomplete: it does not include the code for the send path that increments sequence numbers.
In practice, calls to Packet are very efficient even if they pass through many components before reaching the data link layer. nesC's inlining means that in almost all cases there will not actually be any function calls, and since payload position and length calculations all use constant offsets, the compiler generally uses constant folding to generate a fixed offset.
The Packet interface provides access to the one field all packet layers have, the data payload. Communication layers can add additional header and footer fields, and may need to provide access to these fields. If a packet communication component provides access to header and/or footer fields, it MUST do so through an interface. The interface SHOULD have a name of the form XPacket, where X is a name that describes the communication layer. For example, active message components provide both the Packet interface and the AMPacket interface. The latter has this signature:
interface AMPacket { command am_addr_t address(); command am_addr_t destination(message_t* amsg); command am_addr_t source(message_t* amsg); command void setDestination(message_t* amsg, am_addr_t addr); command void setSource(message_t* amsg, am_addr_t addr); command bool isForMe(message_t* amsg); command am_id_t type(message_t* amsg); command void setType(message_t* amsg, am_id_t t); command am_group_t group(message_t* amsg); command void setGroup(message_t* amsg, am_group_t grp); command am_group_t localGroup(); }
The command address() returns the local AM address of the node. AMPacket provides accessors for its four fields, destination, source, type and group. It also provides commands to set these fields, for the same reason that Packet allows a caller to set the payload length. Packet interfaces SHOULD provide accessors and mutators for all of their fields to enable queues and other buffering to store values in a packet buffer. Typically, a component stores these values in the packet buffer itself (where the field is), but when necessary it may use the metadata region of message_t or other locations.
The group field refers to the AM group, a logical network identifier. Link layers will typically only signal reception for packets whose AM group matches the node's, which localGroup returns.
There are multiple sending interfaces, corresponding to different addressing modes. For example, address-free protocols, such as collection routing, provide the basic Send interface. Active message communication has a destination of an AM address, so it provides the AMSend interface. This, for example, is the basic, address-free Send interface:
interface Send { command error_t send(message_t* msg, uint8_t len); command error_t cancel(message_t* msg); event void sendDone(message_t* msg, error_t error); command uint8_t maxPayloadLength(); command void* getPayload(message_t* msg, uint8_t len); }
while this is the AMSend interface:
interface AMSend { command error_t send(am_addr_t addr, message_t* msg, uint8_t len); command error_t cancel(message_t* msg); event void sendDone(message_t* msg, error_t error); command uint8_t maxPayloadLength(); command void* getPayload(message_t* msg, uint8_t len); }
Sending interfaces MUST include these four commands and one event. The duplication of some of the commands in Packet is solely for ease of use: maxPayloadLength and getPayload MUST behave identically as Packet.maxPayloadLength and Packet.getPayload. Their inclusion is so that components do not have to wire to both Packet and the sending interface for basic use cases.
When called with a length that is too long for the underlying maximum transfer unit (MTU), the send command MUST return ESIZE.
The Send and AMSend interfaces have an explicit queue of depth one. A call to send on either of these interfaces MUST return EBUSY if a prior call to send returned SUCCESS but no sendDone event has been signaled yet. More explicitly:
if (call Send.send(...) == SUCCESS && call Send.send(...) == SUCCESS) { // This block is unreachable. }
Systems that need send queues have two options. They can use a QueueC (found in tos/system) to store pending packet pointers and serialize them onto sending interface, or they can introduce a new sending interface that supports multiple pending transmissions.
The cancel command allows a sender to cancel the current transmission. A call to cancel when there is no pending sendDone event MUST return FAIL. If there is a pending sendDone event and the cancel returns SUCCESS, then the packet layer MUST NOT transmit the packet and MUST signal sendDone with ECANCEL as its error code. If there is a pending sendDone event and cancel returns FAIL, then sendDone MUST occur as if the cancel was not called.
Receive is the interface for receiving packets. It has this signature:
interface Receive { event message_t* receive(message_t* msg, void* payload, uint8_t len); }
The receive() event's payload parameter MUST be identical to what a call to the corresponding Packet.getPayload() would return, and the len parameter MUST be identical to the length that a call to Packet.getPayload would return. These parameters are for convenience, as they are commonly used by receive handlers, and their presence removes the need for a call to getPayload(). Unlike Send, Receive does not have a convenience getPayload call, because doing so prevents fan-in. As Receive has only a single event, users of Receive can be wired multiple times.
Receive has a buffer-swap policy. The handler of the event MUST return a pointer to a valid message buffer for the signaler to use. This approach enforces an equilibrium between upper and lower packet layers. If an upper layer cannot handle packets as quickly as they are arriving, it still has to return a valid buffer to the lower layer. This buffer could be the msg parameter passed to it: it just returns the buffer it was given without looking at it. Following this policy means that a data-rate mismatch in an upper-level component will be isolated to that component. It will drop packets, but it will not prevent other components from receiving packets. If an upper layer did not have to return a buffer immediately, then when an upper layer cannot handle packets quickly enough it will end up holding all of them, starving lower layers and possibly preventing packet reception.
A user of the Receive interface has three basic options when it handles a receive event:
- Return msg without touching it.
- Copy some data out of payload and return msg.
- Store msg in its local frame and return a different message_t* for the lower layer to use.
These are simple code examples of the three cases:
// Case 1 message_t* Receive.receive(message_t* msg, void* payload, uint8_t len) { return msg; } // Case 2 uint16_t value; message_t* Receive.receive(message_t* msg, void* payload, uint8_t len) { if (len >= sizeof(uint16_t)) { nx_uint16_t* nval = (nx_uint16_t*)payload; value = *nval; } return msg; } //Case 3 message_t buf; message_t* ptr = &buf; message_t* Receive.receive(message_t* msg, void* payload, uint8_t len) { message_t* tmp = ptr; ptr = msg; post processTask(); return tmp; }
Because of case 3), a lower layer MUST respect the buffer swap semantics and use the pointer returned from receive. The pointer passed as a parameter to receive MUST NOT be touched, used, or stored after the signaling of receive.
A packet protocol MAY have a dispatch identifier. This generally manifests as the protocol component providing parameterized interfaces (rather than a single interface instance). A dispatch identifier allows multiple services to use a protocol independently. If a protocol provides a dispatch mechanism, then each dispatch identifier SHOULD correspond to a single packet format: if an identifier corresponds to multiple packet formats, then there is no way to disambiguate them. Packets whose internal structure depends on their fields (for example, a packet that has a control field which indicates which optional fields are present) do not pose such problems.
A platform MUST provide ActiveMessageC as a basic HIL to packet-level communication. ActiveMessageC provides a best-effort, single-hop communication abstraction. Every active message has a 16-bit destination address and an 8-bit type. There is one reserved destination address, AM_BROADCAST_ADDR, which has the value of 0xffff. ActiveMessageC has the following signature:
configuration ActiveMessageC { provides { interface Init; interface SplitControl; interface AMSend[uint8_t id]; interface Receive[uint8_t id]; interface Receive as Snoop[uint8_t id]; interface Packet; interface AMPacket; interface PacketAcknowledgements; } }
The Receive interface is for packets destined to the node, while the Snoop interface is for packets destined to other nodes. A packet is destined for a node if its destination AM address is either the AM broadcast address or an address associated with the AM stack. Different link layers have different snooping capabilities. The Snoop interface does not assume always-on listening, for example, in the case of a TDMA or RTS/CTS data link layer. By separating out these two interfaces, ActiveMessageC avoids the complications encountered in 1.x with regards to GenericComm vs. GenericCommPromiscuous.
ActiveMessageC is usually just a configuration that has pass-through wiring to a chip-specific HAL active message implementation. The definition of ActiveMessageC is left to the platform for when a node has more than one radio. In this case, the platform decides how to map the basic packet abstraction to the hardware underneath. Approaches include choosing one radio or having some form of address-based dispatch.
TinyOS 2.x provides four component single-hop communication virtualizations to applications: AMReceiverC, AMSnooperC, AMSnoopingReceiverC, and AMSenderC. Each is a generic component that takes an active message ID as a parameter. These components assume the existence of ActiveMessageC.
Active messages have an 8-bit type field, which allows multiple protocols to all use AM communication without conflicting. Following the guidelines for protocol dispatch identifiers, each am_id_t used in a network SHOULD have a single packet format, so that the am_id_t, combined with the packet contents, are sufficient to determine the exact packet format.
AMReceiverC has the following signature:
generic configuration AMReceiverC(am_id_t t) { provides{ interface Receive; interface Packet; interface AMPacket; } }
AMReceiver.Receive.receive is signalled whenever the packet layer receives an active message of the corresponding AM type whose destination address is the local address or the broadcast address.
AMSnooper has an identical signature to AMReceiver:
generic configuration AMSnooperC(am_id_t t) { provides{ interface Receive; interface Packet; interface AMPacket; } }
AMSnooper.Receive.receive is signalled whenever the packet layer receives an active message of the corresponding AM type whose destination address is neither to the local address nor the broadcast address.
AMSnoopingReceiverC has an identical signature to AMReceiverC:
generic configuration AMSnoopingReceiverC(am_id_t t) { provides{ interface Receive; interface Packet; interface AMPacket; } }
AMSnoopingReceiverC.Receive.receive is signalled whenever the packet layer receives an active message of the corresponding AM type, regardless of destination address. Note that since Receive.receive swaps buffers, a program that instantiates an AMSnoopingReceiverC with a certain am_id_t MUST NOT instantiate another AMSnoopingReceiverC, AMSnooperC, or AMReceiverC with the same am_id_t.
AMSenderC has the following signature:
generic configuration AMSenderC(am_id_t AMId) { provides { interface AMSend; interface Packet; interface AMPacket; interface PacketAcknowledgements as Acks; } }
Because this is a send virtualization, AMSenderC.AMSend.send returns EBUSY only if there is a send request outstanding on this particular AMSenderC. That is, each AMSenderC has a queue of depth one. The exact order in which pending AMSenderC requests are serviced is undefined, but it MUST be fair, where fair means that each client with outstanding packets receives a reasonable approximation of an equal share of the available transmission bandwidth.
In addition to standard datapath interfaces for sending and receiving packets, an active message layer also has control interfaces.
The communication virtualizations do not support power management. ActiveMessageC provides SplitControl for explicit power control. For packet communication to operate properly, a component in an application has to call ActiveMessageC.SplitControl.start(). The HAL underneath ActiveMessageC MAY employ power management techniques, such as TDMA scheduling or low power listening, when "on."
An application can change ActiveMessageC's local AM address at runtime. This will change which packets a node receives and the source address it embeds in packets. To change the local AM address at runtime, a component can wire to the component ActiveMessageAddressC. This component only changes the AM address of the default radio stack (AMSenderC, etc.); if a radio has multiple stacks those may have other components for changing their addresses in a stack-specific fashion.
A radio chip X MUST have a packet abstraction with the following signature:
provides interface Init; provides interface SplitControl; provides interface AMSend[am_id_t type]; provides interface Receive[am_id_t type]; provides interface Receive as Snoop[am_id_t type]; provides interface Packet; provides interface AMPacket; provides interface PacketAcknowledgments;
The component SHOULD be named XActiveMessageC, where X is the name of the radio chip. The component MAY have additional interfaces. These interfaces can either be chip-specific or chip-independent.
 Therefore, following TEP 111 [3], all data link and active message headers MUST be in the message_header_t structure of message_t. This ensures that an active message received from one data link layer (e.g., the radio) can be passed to another data link layer (e.g., the UART) without shifting the data payload. This means that the message_header_t must include all data needed for AM fields, which might introduce headers in addition to those of the data link. For example, this is an example structure for a CC2420 (802.15.4) header:
typedef nx_struct cc2420_header_t { nx_uint8_t length; nx_uint16_t fcf; nx_uint8_t dsn; nx_uint16_t destpan; nx_uint16_t dest; nx_uint16_t src; nx_uint8_t type; } cc2420_header_t;
The first six fields (length through src) are all 802.15.4 headers. The type field, however, has been added to the header structure in order to support AM dispatch.
The following files in tinyos-2.x/tos/system provide reference implementations of the abstractions described in this TEP.
- AMSenderC.nc, AMReceiverC.nc, AMSnooperC.nc, and AMSnoopingReceiverC.nc are implementations of virtualized AM services.
- AMQueueP provides a send queue of n entries for n AMSenderC clients, such that each client has a dedicated entry.
- AMQueueImplP is the underlying queue implementation, which is reusable for different clients (it is also used in the serial stack [4]).
- AMQueueEntryP sits on top of AMQueueP and stores the parameters to AMSend.send in an outstanding packet with the AMPacket interface.
The following files in tinyos-2.x/tos/interfaces contain example implementations of packet protocol interfaces:
Packet.nc is the basic interface that almost all packet protocols provide.
- Send.nc is the transmission interface for address-free
protocols.
- AMSend.nc is the transmission interface for AM address
send protocols.
AMPacket.nc is the packet interface for AM-specific fields.
An active messaging implementation for the CC2420 radio chip can be found in tos/chips/CC2420/CC2420ActiveMessageC.nc. The micaz platform and telos family have an ActiveMessageC.nc which exports the interfaces of CC2420ActiveMessageC.
| [1] | The MintRoute protocol. tinyos-1.x/tos/lib/MintRoute. Also, A. Woo, T. Tong, and D. Culler. "Taming the Underlying Challenges of Reliable Multihop Routing in Sensor Networks." SenSys 2003. |
| [2] | Tiny AGgregation, one protocol of the TinyDB system. tinyos-1.x/tos/lib/TinyDB. Also, S. Madden and M. Franklin and J. Hellerstein and W. Hong. "TinyDB: An Acquisitional Query Processing System for Sensor Networks." Transactions on Database Systems (TODS) 2005. |
| [3] | (1, 2) TEP 111: message_t. |
| [4] | TEP 113: Serial Communication. |


Protester killed in clashes as Iraq tries to reopen port
by Qassim Abdul-Zahra, The Associated PressBAGHDAD -- Iraqi officials say at least one protester has been killed in clashes in the southern city of Umm Qasr, where security forces are trying to reopen a key port that has been shut down by anti-government protesters for three days.
Security and medical officials say another eight protesters were wounded on Tuesday in clashes that are still underway. They say security forces are using live ammunition and tear gas, and that protesters have seized an armoured vehicle.
Iraq has seen massive anti-government demonstrations in Baghdad and across the mostly Shiite south since Oct. 25.
Umm Qasr, on the Persian Gulf, is Iraq's main port used for oil exports and the import of goods.
The officials spoke on condition of anonymity because they were not authorized to brief reporters.


Affordable home plans include all permits, painting, landscaping and more.
Visit PortfolioMid-range home plans include all permits, painting, landscaping and more.
Call To ActionFully Custom home plans include all permits, painting, landscaping and more.
Call To ActionThe team at REEF has over 35 years building experience. We've helped hundreds of people build their Cape Cod Dream home.
Meet Us


04.Implement functionality to change the background color of a web page
i.e. select a color from a color picker and set this color as the background color of the page
Choose a color for background :


avalon.js helps you simplify dynamic JavaScript UIs using the Model-View-ViewModel (MVVM) pattern.
{{@aaa}}
{{@bbb}}
avalon 把我们的前端代码分为两部分，VM与视图。VM位于JS文件里，用于操作视图的改变。 视图位于html文件里，用于响应JS的改动或用户的操作。 视图被avalon划分为一个个区域，每一个区域添加上ms-controller，它们对应JS中的VM。 当VM的$id等于ms-controller的值，这个区域就交由这个VM来渲染。
Avalon divides our front-end code into two parts, VM and View. The VM is located in the JS file, used to change the view, The View is located in the HTML file, used to respond to changes in the JS and the user's operation. The Views are divided into some
areas by Avalon, each of which is added on the "ms-controller" attributes, which corresponds to the VM in the JS. When the $id of the VM equals ms-controller, this area is rendered by this VM.
如果你不想这个区域被VM处理，可以使用ms-skip属性，让avalon忽略这个元素及它的后代们
If you don't want this area to be processed by VM, you can use the ms-skip attribute to let avalon ignore the element and its descendants.
大家可以打开chrome控制台，修改VM的属性，观察视图对应文字的变化，感受一下这种魔幻效果
You can open the chrome console, modify the properties of VM, observe the changes in the corresponding text, feel this magic!
index
next


Back
Phone number:
Value: {{phone}}
Credit Card number:
Value: {{cc}}
Social security number:
Value: {{ssn}}
UK postcode:
Value: {{post}}


GETTING AWAY WITH MURDER A film review by James Berardinelli Copyright 1996 James Berardinelli
RATING (0 TO 10): 2.5 Alternative Scale: * out of ****
United States, 1996 U.S. Release Date: 4/12/96 (limited) Running Length: 1:31 MPAA Classification: R (Mature themes, sex) Theatrical Aspect Ratio: 1.85:1
Cast: Dan Aykroyd, Lily Tomlin, Jack Lemmon, Bonnie Hunt, Brian Kerwin Director: Harvey Miller Producers: Penny Marshall and Frank Price Screenplay: Harvey Miller Cinematography: Frank Tidy Music: John Debney U.S. Distributor: Savoy Pictures
Some movies are ruined in post-production. Many more are destroyed during filming. A still greater number are undone in the script-writing process. I'm not sure exactly when GETTING AWAY WITH MURDER should have been relegated to the scrap heap, but it was probably while the premise was being developed into the final screenplay. With the right tone and intent, it's possible to make a bitingly funny film about a grave issue. Unfortunately, GETTING AWAY WITH MURDER wants to be light and airy, not dark and incisive. It shrinks from risks that might alienate a casual viewer, and, by its very blandness and adherence to "traditional" structure, crosses the line of dubious taste into the realm of the offensive.
I suppose someone thought this was a funny idea: let's have Jack Lemmon play a seventysomething old man who may or may not be an ex-Nazi, and who is currently living in Brighton, Massachusetts. His neighbor, ethics professor Jack Lambert (Dan Aykroyd), is horrified that this Max Mueller, apparently the infamous "Beast of Berkau", can continue living with impunity. Since the U.S. government appears powerless to execute a fifty-year old death sentence, Jack decides to do it on his own by injecting Max's prize apples with cyanide. Death follows quickly, but, after Max is buried, new evidence comes to light which apparently clears the dead man's name. So, in an attempt to assuage his guilty conscience, Jack cancels his wedding to his girlfriend (Bonnie Hunt) so that he can marry Max's daughter, Inga (Lily Tomlin).
Sounds like a barrel of laughs, right? The script, which is credited to director Harvey Miller (who wrote PRIVATE BENJAMIN), is peppered with attempts at levity, but few of these jokes have any zing. Most of the time, the humor comes across as halfhearted, which leaves us wondering what this film was aiming for. GETTING AWAY WITH MURDER is too fatuous and superficial to have any dramatic impact, and all of its supposed "twists" are hackneyed and predictable.
When was the last time Dan Aykroyd actually did a good job in a movie? His recent career has been littered with moronic comic roles (SGT. BILKO, EXIT TO EDEN) and supporting parts in light dramas (MY GIRL). This time around, he appears to be going through the motions with even less gusto than usual. Not that his co-stars outshine him. Jack Lemmon and Lily Tomlin are both depressingly unfunny. Only Bonnie Hunt, who displays fitful bursts of energy, makes any kind of positive impression.
 As I was watching this movie, I wondered how anyone could make such a lame picture about this serious subject and get away with it, or why a producer would expect more from this limp screenplay than a complete failure -- which is precisely what resulted.
- James Berardinelli e-mail<EMAIL_ADDRESS>web: http://www.cybernex.net/~berardin
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


Before Change
adv_x[0, 0, row, col] < clip_max])
else:
search_domain = set([(row, col) for row in xrange(FLAGS.img_rows)
for col in xrange(FLAGS.img_cols)
if adv_x[0, 0, row, col] > clip_min])
// Initial the loop variables
iteration = 0
After Change
and len(search_domain) > 0):
// Compute the Jacobian components
grads_target, grads_others = jacobian(sess, x, grads, target, np.reshape(adv_x, original_shape), nb_features)
// Compute the saliency map for each of our target classes
// and return the two best candidate features for perturbation


{% extends "layout.html" %} {% block page_title %} GOV.UK prototype kit {% endblock %} {% block content %} Home Account menu Back Sign out Back BLYTHE ACADEMY UKPRN: 12345678 16 to 19 funding 2017 to 2018 19+ continuing students Total Programme 74 £129,680 {% endblock %}
UKPRN: 12345678


User Authentication¶
There are currently two methods of authenticating users. The default Django authentication backend, which requires an administrator to create users manually and an Active Directory backend (source code).
Active Directory Settings¶
In order to use the Active Directory backend you need to set the following variables in your settings.py (or local_settings.py) file:
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'qatrack.accounts.backends.ActiveDirectoryGroupMembershipSSLBackend',
)
DEFAULT_GROUPS = ["Therapy"] #List of user groups to add new users to when they sign up
AD_DNS_NAME='dns.name.of.your.ldap.server.ca'
# If using non-SSL use these
AD_LDAP_PORT=389
AD_LDAP_URL='ldap://%s:%s' % (AD_DNS_NAME,AD_LDAP_PORT)
# If using SSL use these:
#AD_LDAP_PORT=636
#AD_LDAP_URL='ldaps://%s:%s' % (AD_DNS_NAME,AD_LDAP_PORT)
AD_SEARCH_DN = "DC=yourdomain,dc=yourhospital,dc=on,dc=ca" #e.g. to search yourdomain.yourhospital.on.ca
AD_NT4_DOMAIN='YOURDOMAIN'
AD_SEARCH_FIELDS= ['mail','givenName','sn','sAMAccountName','memberOf']
AD_MEMBERSHIP_REQ=["Group1", "Group2"] #Required AD group memberships in order to gain access to QATrack+
#AD_CERT_FILE='/path/to/your/cert.txt'
Domain names, domain controller names and other useful AD info can usually be found by running gpresult from .html.exe.
QATrack+ requires the python-ldap package and binaries for that package can be found on PyPi.