Building A Recommendation System for Movies.
Recommendation System: IMDB
Building A Recommendation System for Movies.
A Recommendation System is a subclass of information filtering system that seeks to predict the “rating” or “preference” a user would give to an item. Many companies apply recommendation systems in one form or another; Amazon uses it to suggest products to customers, YouTube uses it to decide which video to play next, and Facebook uses it to recommend pages to like and people to follow.
Recommendation Systems can be classified into 3 types:
Simple Recommendation
: offer generalized recommendations to every user, based on movie popularity and/or genre. The basic idea behind this system is that movies that are more popular and critically acclaimed will have a higher probability of being liked by the average audience. IMDB Top 250 is an example of this system.Content-based Recommendation
: suggest similar items based on a particular item. This system uses item metadata, such as genre, director, description, actors, etc. for movies, to make these recommendations. The general idea behind these recommendation systems is that if a person liked a particular item, he or she will also like an item that is similar to it.Collaborative Filtering Engines
: these systems try to predict the rating or preference that a user would give an item-based on past ratings and preferences of other users. Collaborative filters do not require item metadata like its content-based counterparts.
1. Simple Recommendation System
A simplified clone of IMDB Top 250 Movies using metadata collected from IMDB.
Below are the steps we will take to build our Simple Recommendation System:
- Decide on the metric or score to rate movies on
- Calculate the score for every movie
- Sort the movies based on the score and output the top results
# Import Pandas
import pandas as pd
# Load Movies Metadata
metadata = pd.read_csv('movies_metadata.csv', low_memory=False)
# Print the first three rows
metadata.head(3)
| adult | belongs_to_collection | budget | genres | homepage | id | imdb_id | original_language | original_title | overview | ... | release_date | revenue | runtime | spoken_languages | status | tagline | title | video | vote_average | vote_count | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | False | {'id': 10194, 'name': 'Toy Story Collection', ... | 30000000 | [{'id': 16, 'name': 'Animation'}, {'id': 35, '... | http://toystory.disney.com/toy-story | 862 | tt0114709 | en | Toy Story | Led by Woody, Andy's toys live happily in his ... | ... | 1995-10-30 | 373554033.0 | 81.0 | [{'iso_639_1': 'en', 'name': 'English'}] | Released | NaN | Toy Story | False | 7.7 | 5415.0 |
| 1 | False | NaN | 65000000 | [{'id': 12, 'name': 'Adventure'}, {'id': 14, '... | NaN | 8844 | tt0113497 | en | Jumanji | When siblings Judy and Peter discover an encha... | ... | 1995-12-15 | 262797249.0 | 104.0 | [{'iso_639_1': 'en', 'name': 'English'}, {'iso... | Released | Roll the dice and unleash the excitement! | Jumanji | False | 6.9 | 2413.0 |
| 2 | False | {'id': 119050, 'name': 'Grumpy Old Men Collect... | 0 | [{'id': 10749, 'name': 'Romance'}, {'id': 35, ... | NaN | 15602 | tt0113228 | en | Grumpier Old Men | A family wedding reignites the ancient feud be... | ... | 1995-12-22 | 0.0 | 101.0 | [{'iso_639_1': 'en', 'name': 'English'}] | Released | Still Yelling. Still Fighting. Still Ready for... | Grumpier Old Men | False | 6.5 | 92.0 |
3 rows × 24 columns
One of the most basic metrics you can think of is the rating. However, using this metric has a few caveats. For one, it does not take into consideration the popularity of a movie. Therefore, a movie with a rating of 9 from 10 voters will be considered ‘better’ than a movie with a rating of 8.9 from 10,000 voters.
On a related note, this metric will also tend to favor movies with smaller number of voters with skewed and/or extremely high ratings. As the number of voters increase, the rating of a movie regularizes and approaches towards a value that is reflective of the movie’s quality. It is more difficult to discern the quality of a movie with extremely few voters.
Taking these shortcomings into consideration, it is necessary that we come up with a weighted rating that takes into account the average rating and the number of votes it has garnered. Such a system will make sure that a movie with a 9 rating from 100,000 voters gets a (fair) higher score than a movie with the same rating but fewer voters.
Since we are trying to build a clone of IMDB’s Top 250, we will use its weighted rating formula as our metric/score. Mathematically, it is represented as follows:
where,
- v is the number of votes for the movie
- m is the minimum votes required to be listed in the chart
- R is the average rating of the movie
- C is the mean vote across the whole report
We already have the values to v (vote_count
) and R (vote_average
) for each movie in the dataset. It is also possible to directly calculate C from this data.
What we need to determine is an appropriate value for m, the minimum votes required to be listed in the chart. There is no right value for m. We can view it as a preliminary negative filter that ignores movies which have less than a certain number of votes. The selectivity of our filter is up to your discretion.
In this case, we will use the 90th percentile as our cutoff. In other words, for a movie to feature in the charts, it must have more votes than at least 90% of the movies in the list. (If we chose the 75th percentile as our cutoff, we would have considered the top 25% of the movies in terms of the number of votes garnered. As the percentile decreases, the number of movies considered increases).
As a first step, let’s calculate the value of C, the mean rating across all movies:
# Calculate C
C = metadata['vote_average'].mean()
print(C)
5.618207215133889
The average rating of a movie on IMDB is around 5.6, on a scale of 10.
Next, let’s calculate the number of votes, m, received by a movie in the 90th percentile. We will use the .quantile()
method from the Pandas library:
# Calculate the minimum number of votes required to be in the chart, m
m = metadata['vote_count'].quantile(0.90)
print(m)
160.0
Next, we can filter the movies that qualify for the chart, based on their vote counts:
# Filter out all qualified movies into a new DataFrame
q_movies = metadata.copy().loc[metadata['vote_count'] >= m]
q_movies.shape
(4555, 24)
We use the .copy()
method to ensure that the new q_movies
DataFrame created is independent of our original metadata DataFrame. In other words, any changes made to the q_movies
DataFrame does not affect the metadata.
There are 4555 movies which qualify to be in this list. Now, we need to calculate our metric for each qualified movie. To do this, we will define a function, weighted_rating()
and define a new feature score
, of which we’ll calculate the value by applying this function to our DataFrame of qualified movies:
# Function that computes the weighted rating of each movie
def weighted_rating(x, m=m, C=C):
v = x['vote_count']
R = x['vote_average']
# Calculation based on the IMDB formula
return (v/(v+m) * R) + (m/(m+v) * C)
# Define a new feature 'score' and calculate its value with `weighted_rating()`
q_movies['score'] = q_movies.apply(weighted_rating, axis=1)
Finally, let’s sort the DataFrame based on the score
feature and output the title, vote count, vote average and weighted rating or score of the top 15 movies.
#Sort movies based on score calculated above
q_movies = q_movies.sort_values('score', ascending=False)
#Print the top 15 movies
q_movies[['title', 'vote_count', 'vote_average', 'score']].head(15)
| title | vote_count | vote_average | score | |
|---|---|---|---|---|
| 314 | The Shawshank Redemption | 8358.0 | 8.5 | 8.445869 |
| 834 | The Godfather | 6024.0 | 8.5 | 8.425439 |
| 10309 | Dilwale Dulhania Le Jayenge | 661.0 | 9.1 | 8.421453 |
| 12481 | The Dark Knight | 12269.0 | 8.3 | 8.265477 |
| 2843 | Fight Club | 9678.0 | 8.3 | 8.256385 |
| 292 | Pulp Fiction | 8670.0 | 8.3 | 8.251406 |
| 522 | Schindler's List | 4436.0 | 8.3 | 8.206639 |
| 23673 | Whiplash | 4376.0 | 8.3 | 8.205404 |
| 5481 | Spirited Away | 3968.0 | 8.3 | 8.196055 |
| 2211 | Life Is Beautiful | 3643.0 | 8.3 | 8.187171 |
| 1178 | The Godfather: Part II | 3418.0 | 8.3 | 8.180076 |
| 1152 | One Flew Over the Cuckoo's Nest | 3001.0 | 8.3 | 8.164256 |
| 351 | Forrest Gump | 8147.0 | 8.2 | 8.150272 |
| 1154 | The Empire Strikes Back | 5998.0 | 8.2 | 8.132919 |
| 1176 | Psycho | 2405.0 | 8.3 | 8.132715 |
We see that our chart has a lot of movies in common with the IMDB Top 250 chart: for example, our top two movies, “Shawshank Redemption” and “The Godfather”, are the same as IMDB.
2. Content-Based Recommender in Python
Creating a ‘Plot Description’ Based Recommendation System.
In this section, we will build a system that recommends movies that are similar to a particular movie. More specifically, we will compute pairwise similarity scores for all movies based on their plot descriptions and recommend movies based on that similarity score.
The plot description is available to us as the overview
feature in our metadata
dataset. Let’s explore the plots of the first five movies:
#Print plot overviews of the first 5 movies.
metadata['overview'].head()
0 Led by Woody, Andy's toys live happily in his ...
1 When siblings Judy and Peter discover an encha...
2 A family wedding reignites the ancient feud be...
3 Cheated on, mistreated and stepped on, the wom...
4 Just when George Banks has recovered from his ...
Name: overview, dtype: object
In its current form, it is not possible to compute the similarity between any two overviews. In order to achieve our goal, we will have to compute the Term Frequency-Inverse Document Frequency (TF-IDF) vectors for each overview. This will give us a matrix where each column represents a word in the overview vocabulary and each column represents a movie.
In its essence, the TF-IDF score is the frequency of a word occurring in a document, down-weighted by the number of documents in which it occurs. This is done to reduce the importance of words that occur frequently in plot overviews and therefore, their significance in computing the final similarity score.
Fortunately, scikit-learn gives us a built-in TfIdfVectorizer
class that produces the TF-IDF matrix in a couple of lines of code.
#Import TfIdfVectorizer from scikit-learn
from sklearn.feature_extraction.text import TfidfVectorizer
#Define a TF-IDF Vectorizer Object. Remove all english stop words such as 'the', 'a'
tfidf = TfidfVectorizer(stop_words='english')
#Replace NaN with an empty string
metadata['overview'] = metadata['overview'].fillna('')
#Construct the required TF-IDF matrix by fitting and transforming the data
tfidf_matrix = tfidf.fit_transform(metadata['overview'])
#Output the shape of tfidf_matrix
tfidf_matrix.shape
(45466, 75827)
We see that over 75,000 different words were used to describe the 45,000 movies in our dataset.
With this matrix in hand, we can now compute a similarity score. There are several candidates for this; such as the euclidean, the Pearson and the cosine similarity scores. Again, there is no right answer to which score is the best. Different scores work well in different scenarios and it is often a good idea to experiment with different metrics.
We will be using the cosine similarity to calculate a numeric quantity that denotes the similarity between two movies. We use the cosine similarity score since it is independent of magnitude and is relatively easy and fast to calculate (especially when used in conjunction with TF-IDF scores, which will be explained later). Mathematically, it is defined as follows:
| $cosine(x,y) = \frac{x. y^\intercal}{ | x | . | y | } $ |
Since we have used the TF-IDF vectorizer, calculating the dot product will directly give us the cosine similarity score. Therefore, we will use sklearn
’s linear_kernel()
instead of cosine_similarities()
since it is faster.
# Import linear_kernel
from sklearn.metrics.pairwise import linear_kernel
# Compute the cosine similarity matrix
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)
We’re going to define a function that takes in a movie title as an input and outputs a list of the 10 most similar movies. Firstly, for this, we need a reverse mapping of movie titles and DataFrame indices. In other words, we need a mechanism to identify the index of a movie in your metadata
DataFrame, given its title.
#Construct a reverse map of indices and movie titles
indices = pd.Series(metadata.index, index=metadata['title']).drop_duplicates()
We are now in a good position to define our recommendation function. These are the following steps we will follow:
- Get the index of the movie given its title.
- Get the list of cosine similarity scores for that particular movie with all movies. Convert it into a list of tuples where the first element is its position and the second is the similarity score.
- Sort the aforementioned list of tuples based on the similarity scores; that is, the second element.
- Get the top 10 elements of this list. Ignore the first element as it refers to itself.
- Return the titles corresponding to the indices of the top elements.
# Function that takes in movie title as input and outputs most similar movies
def get_recommendations(title, cosine_sim=cosine_sim):
# Get the index of the movie that matches the title
idx = indices[title]
# Get the pairwsie similarity scores of all movies with that movie
sim_scores = list(enumerate(cosine_sim[idx]))
# Sort the movies based on the similarity scores
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
# Get the scores of the 10 most similar movies
sim_scores = sim_scores[1:11]
# Get the movie indices
movie_indices = [i[0] for i in sim_scores]
# Return the top 10 most similar movies
return metadata['title'].iloc[movie_indices]
get_recommendations('The Dark Knight Rises')
12481 The Dark Knight
150 Batman Forever
1328 Batman Returns
15511 Batman: Under the Red Hood
585 Batman
21194 Batman Unmasked: The Psychology of the Dark Kn...
9230 Batman Beyond: Return of the Joker
18035 Batman: Year One
19792 Batman: The Dark Knight Returns, Part 1
3095 Batman: Mask of the Phantasm
Name: title, dtype: object
get_recommendations('The Godfather')
1178 The Godfather: Part II
44030 The Godfather Trilogy: 1972-1990
1914 The Godfather: Part III
23126 Blood Ties
11297 Household Saints
34717 Start Liquidation
10821 Election
38030 A Mother Should Be Loved
17729 Short Sharp Shock
26293 Beck 28 - Familjen
Name: title, dtype: object
While our system has done a good job of finding movies with similar plot descriptions, the quality of recommendations could be improved by considering other features of a movie.
2.1 Credits, Genres and Keywords Based Recommendations
With the usage of more features, we are going to build a recommendation system based on the following metadata:
- The 3 Top Actors
- The director
- Related Genres
- Movie Plot Keywords
Lets start by loading and merging our new datasets:
# Load keywords and credits
credits = pd.read_csv('credits.csv')
keywords = pd.read_csv('keywords.csv')
# Remove rows with bad IDs.
metadata = metadata.drop([19730, 29503, 35587])
# Convert IDs to int. Required for merging
keywords['id'] = keywords['id'].astype('int')
credits['id'] = credits['id'].astype('int')
metadata['id'] = metadata['id'].astype('int')
# Merge keywords and credits into your main metadata dataframe
metadata = metadata.merge(credits, on='id')
metadata = metadata.merge(keywords, on='id')
# Print the first two movies of your newly merged metadata
metadata.head(2)
| adult | belongs_to_collection | budget | genres | homepage | id | imdb_id | original_language | original_title | overview | ... | spoken_languages | status | tagline | title | video | vote_average | vote_count | cast | crew | keywords | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | False | {'id': 10194, 'name': 'Toy Story Collection', ... | 30000000 | [{'id': 16, 'name': 'Animation'}, {'id': 35, '... | http://toystory.disney.com/toy-story | 862 | tt0114709 | en | Toy Story | Led by Woody, Andy's toys live happily in his ... | ... | [{'iso_639_1': 'en', 'name': 'English'}] | Released | NaN | Toy Story | False | 7.7 | 5415.0 | [{'cast_id': 14, 'character': 'Woody (voice)',... | [{'credit_id': '52fe4284c3a36847f8024f49', 'de... | [{'id': 931, 'name': 'jealousy'}, {'id': 4290,... |
| 1 | False | NaN | 65000000 | [{'id': 12, 'name': 'Adventure'}, {'id': 14, '... | NaN | 8844 | tt0113497 | en | Jumanji | When siblings Judy and Peter discover an encha... | ... | [{'iso_639_1': 'en', 'name': 'English'}, {'iso... | Released | Roll the dice and unleash the excitement! | Jumanji | False | 6.9 | 2413.0 | [{'cast_id': 1, 'character': 'Alan Parrish', '... | [{'credit_id': '52fe44bfc3a36847f80a7cd1', 'de... | [{'id': 10090, 'name': 'board game'}, {'id': 1... |
2 rows × 27 columns
From our new dataset, we will need to extract the three top actors, the director and the keywords associated with each movie. Right now, our data is present in the form of “stringified” lists, we will need to convert them into a form that we can use with our code:
# Parse the stringified features into their corresponding python objects
from ast import literal_eval
features = ['cast', 'crew', 'keywords', 'genres']
for feature in features:
metadata[feature] = metadata[feature].apply(literal_eval)
Next, we will write functions that will extract the required information from each feature.
import numpy as np
# Get the director's name from the crew feature. If director is not listed, return NaN
def get_director(x):
for i in x:
if i['job'] == 'Director':
return i['name']
return np.nan
# Returns the list top 3 elements or entire list; whichever is more.
def get_list(x):
if isinstance(x, list):
names = [i['name'] for i in x]
#Check if more than 3 elements exist. If yes, return only first three. If no, return entire list.
if len(names) > 3:
names = names[:3]
return names
#Return empty list in case of missing/malformed data
return []
# Define new director, cast, genres and keywords features that are in a suitable form.
metadata['director'] = metadata['crew'].apply(get_director)
features = ['cast', 'keywords', 'genres']
for feature in features:
metadata[feature] = metadata[feature].apply(get_list)
# Print the new features of the first 3 films
metadata[['title', 'cast', 'director', 'keywords', 'genres']].head(3)
| title | cast | director | keywords | genres | |
|---|---|---|---|---|---|
| 0 | Toy Story | [Tom Hanks, Tim Allen, Don Rickles] | John Lasseter | [jealousy, toy, boy] | [Animation, Comedy, Family] |
| 1 | Jumanji | [Robin Williams, Jonathan Hyde, Kirsten Dunst] | Joe Johnston | [board game, disappearance, based on children'... | [Adventure, Fantasy, Family] |
| 2 | Grumpier Old Men | [Walter Matthau, Jack Lemmon, Ann-Margret] | Howard Deutch | [fishing, best friend, duringcreditsstinger] | [Romance, Comedy] |
The next step would be to convert the names and keyword instances into lowercase and strip all the spaces between them. This is done so that our vectorizer doesn’t count the Johnny of “Johnny Depp” and “Johnny Galecki” as the same. After this processing step, the aforementioned actors will be represented as “johnnydepp” and “johnnygalecki” and will be distinct to our vectorizer.
# Function to convert all strings to lower case and strip names of spaces
def clean_data(x):
if isinstance(x, list):
return [str.lower(i.replace(" ", "")) for i in x]
else:
#Check if director exists. If not, return empty string
if isinstance(x, str):
return str.lower(x.replace(" ", ""))
else:
return ''
# Apply clean_data function to your features.
features = ['cast', 'keywords', 'director', 'genres']
for feature in features:
metadata[feature] = metadata[feature].apply(clean_data)
We are now ready to create our “metadata soup”, which is a string that contains all the metadata that we want to run through our vectorizer.
def create_soup(x):
return ' '.join(x['keywords']) + ' ' + ' '.join(x['cast']) + ' ' + x['director'] + ' ' + ' '.join(x['genres'])
# Create a new soup feature
metadata['soup'] = metadata.apply(create_soup, axis=1)
The next step is similar to our Plot Description Based Recommendation System. The one important difference is that we will use the CountVectorizer()
instead of TF-IDF. This is because we do not want to downgrade the presence of an actor/director if he or she has acted or directed in relatively more movies.
# Import CountVectorizer and create the count matrix
from sklearn.feature_extraction.text import CountVectorizer
count = CountVectorizer(stop_words='english')
count_matrix = count.fit_transform(metadata['soup'])
# Compute the Cosine Similarity matrix based on the count_matrix
from sklearn.metrics.pairwise import cosine_similarity
cosine_sim2 = cosine_similarity(count_matrix, count_matrix)
# Reset index of your main DataFrame and construct reverse mapping as before
metadata = metadata.reset_index()
indices = pd.Series(metadata.index, index=metadata['title'])
We can reuse the get_recommendations()
function by passing in the new cosine_sim2
matrix as our second argument.
get_recommendations('The Dark Knight Rises', cosine_sim2)
12589 The Dark Knight
10210 Batman Begins
9311 Shiner
9874 Amongst Friends
7772 Mitchell
516 Romeo Is Bleeding
11463 The Prestige
24090 Quicksand
25038 Deadfall
41063 Sara
Name: title, dtype: object
get_recommendations('The Godfather', cosine_sim2)
1934 The Godfather: Part III
1199 The Godfather: Part II
15609 The Rain People
18940 Last Exit
34488 Rege
35802 Manuscripts Don't Burn
35803 Manuscripts Don't Burn
8001 The Night of the Following Day
18261 The Son of No One
28683 In the Name of the Law
Name: title, dtype: object
Our recommendation system has been successful in capturing more information due to more metadata and has given us a better recommendations. There are numerous ways of playing with this system in order to improve recommendations.
Some suggestions:
- Introduce a popularity filter: this recommendation system would take the list of the 30 most similar movies, calculate the weighted ratings (using the IMDB formula from above), sort movies based on this rating and return the top 10 movies.
- Other crew members: other crew member names, such as screenwriters and producers, could also be included.
- Increasing weight of the director: to give more weight to the director, he or she could be mentioned multiple times in the soup to increase the similarity scores of movies with the same director.
3. Collaborative Filtering
Another popular type of recommendation systems is known as Collaborative Filtering.
Collaborative Filtering can further be classified into two types:
-
User-based Filtering
: these systems recommend products to a user that similar users have liked. For example, let’s say Alice and Bob have a similar interest in books (that is, they largely like and dislike the same books). Now, let’s say a new book has been launched into the market and Alice has read and loved it. It is therefore, highly likely that Bob will like it too and therefore, the system recommends this book to Bob. -
Item-based Filtering
: these systems are extremely similar to the content recommendation engine that you built. These systems identify similar items based on how people have rated it in the past. For example, if Alice, Bob and Eve have given 5 stars to The Lord of the Rings and The Hobbit, the system identifies the items as similar. Therefore, if someone buys The Lord of the Rings, the system also recommends The Hobbit to him or her.
Our content based engine suffers from some limitations. It is only capable of suggesting movies that are close to a certain movie. That is, it is not capable of capturing tastes and providing recommendations across genres.
Also, the engine that we built is not really personal in that it doesn’t capture the personal tastes and biases of a user. Anyone querying our engine for recommendations based on a movie will receive the same recommendations for that movie, regardless of their personal attributes.
Therefore, in this section, we will use a technique called Collaborative Filtering to make recommendations to movie viewers. Collaborative Filtering is based on the idea that users similar to an individual can be used to predict how much they will like a particular product or service that those users have experienced but they have not.
We will be using the Surprise library that uses extremely powerful algorithms like Singular Value Decomposition (SVD) to minimise RMSE (Root Mean Square Error) and give better recommendations.
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
from ast import literal_eval
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from sklearn.metrics.pairwise import linear_kernel, cosine_similarity
from nltk.stem.snowball import SnowballStemmer
from nltk.stem.wordnet import WordNetLemmatizer
from nltk.corpus import wordnet
from surprise import Reader, Dataset, SVD, evaluate
reader = Reader()
ratings = pd.read_csv('ratings_small.csv')
ratings.head()
| userId | movieId | rating | timestamp | |
|---|---|---|---|---|
| 0 | 1 | 31 | 2.5 |<PHONE_NUMBER> |
| 1 | 1 | 1029 | 3.0 |<PHONE_NUMBER> |
| 2 | 1 | 1061 | 3.0 |<PHONE_NUMBER> |
| 3 | 1 | 1129 | 2.0 |<PHONE_NUMBER> |
| 4 | 1 | 1172 | 4.0 |<PHONE_NUMBER> |
data = Dataset.load_from_df(ratings[['userId', 'movieId', 'rating']], reader)
data.split(n_folds=5)
svd = SVD()
evaluate(svd, data, measures=['RMSE', 'MAE'])
Evaluating RMSE, MAE of algorithm SVD.
------------
Fold 1
RMSE: 0.8934
MAE: 0.6887
------------
Fold 2
RMSE: 0.8969
MAE: 0.6900
------------
Fold 3
RMSE: 0.8926
MAE: 0.6874
------------
Fold 4
RMSE: 0.8961
MAE: 0.6919
------------
Fold 5
RMSE: 0.9006
MAE: 0.6929
------------
------------
Mean RMSE: 0.8959
Mean MAE : 0.6902
------------
------------
CaseInsensitiveDefaultDict(list,
{'rmse': [0.8933860941982121,
0.8969233722558052,
0.8925931195006682,
0.896131927615416,
0.9005532920542285],
'mae': [0.688678230673435,
0.6899762071788088,
0.6874410687546039,
0.6919108848656457,
0.6928566751129651]})
We get a mean Root Mean Sqaure Error of 0.8963 which is more than good enough for our case. Now lets train on our dataset and arrive at predictions.
trainset = data.build_full_trainset()
svd.train(trainset)
<surprise.prediction_algorithms.matrix_factorization.SVD at 0x10d23b438>
Lets pick userid 1 and check the ratings they have given.
ratings[ratings['userId'] == 1]
| userId | movieId | rating | timestamp | |
|---|---|---|---|---|
| 0 | 1 | 31 | 2.5 |<PHONE_NUMBER> |
| 1 | 1 | 1029 | 3.0 |<PHONE_NUMBER> |
| 2 | 1 | 1061 | 3.0 |<PHONE_NUMBER> |
| 3 | 1 | 1129 | 2.0 |<PHONE_NUMBER> |
| 4 | 1 | 1172 | 4.0 |<PHONE_NUMBER> |
| 5 | 1 | 1263 | 2.0 |<PHONE_NUMBER> |
| 6 | 1 | 1287 | 2.0 |<PHONE_NUMBER> |
| 7 | 1 | 1293 | 2.0 |<PHONE_NUMBER> |
| 8 | 1 | 1339 | 3.5 |<PHONE_NUMBER> |
| 9 | 1 | 1343 | 2.0 |<PHONE_NUMBER> |
| 10 | 1 | 1371 | 2.5 |<PHONE_NUMBER> |
| 11 | 1 | 1405 | 1.0 |<PHONE_NUMBER> |
| 12 | 1 | 1953 | 4.0 |<PHONE_NUMBER> |
| 13 | 1 | 2105 | 4.0 |<PHONE_NUMBER> |
| 14 | 1 | 2150 | 3.0 |<PHONE_NUMBER> |
| 15 | 1 | 2193 | 2.0 |<PHONE_NUMBER> |
| 16 | 1 | 2294 | 2.0 |<PHONE_NUMBER> |
| 17 | 1 | 2455 | 2.5 |<PHONE_NUMBER> |
| 18 | 1 | 2968 | 1.0 |<PHONE_NUMBER> |
| 19 | 1 | 3671 | 3.0 |<PHONE_NUMBER> |
svd.predict(1, 302, 3)
Prediction(uid=1, iid=302, r_ui=3, est=2.8603227982448582, details={'was_impossible': False})
For movie with ID 302, we get an estimated prediction of 2.686. One great feature of this recommendation system is that it doesn’t care what the movie is, or what it contains. It works purely on the basis of an assigned movie ID and tries to predict ratings based on how the other users have predicted the movie.


{% extends 'base.html' %} {% block title %} Something went wrong! {% endblock %} {% block content %} Something went wrong! Please contact Ben (either email or on Github) and tell him what happened and/or the recipe you tried. Go back ← {% endblock %}
Something went wrong! Please contact Ben (either email or on Github) and tell him what happened and/or the recipe you tried.


Properties
- AlwaysFinishOnUpdatingAnimation - An optional property that makes sure the OnUpdated event will fire only after the onUpdating event is completed
- ChildrenAsTriggers - An optional property that enables update panel animation if the postback is caused by a panel's immediate children
- OnUpdated - Generic animation played after the UpdatePanel has finished updating (but only if the UpdatePanel was changed)
- OnUpdating - Generic animation played as when any UpdatePanel begins updating
- TriggerControlsClientID - ClientID's of the trigger controls
Methods
- GetControl(id) - Returns the control specified by its ID
- GetTargetControl() - Returns the UpdatePanel, whose updates are used to play animations (this is also the default target of animations)


Plus, what is the entity "Duke," anyway?
Is it the body that types this code?
Is it the brain that tells the body what to type?
Or is it some greater awareness capable of meta-reflection?
Heck, is "Duke" even human? Maybe. Maybe not. How would you be able to tell?
Let's not worry about this stuff anymore. I hear there will be yoga in Chicago. We can make time for deep seraching mindfulness then.
(I hope it's anusara yoga; I'm not sure how I'd hold up in a bikram-type situation.)
For now, I'll wash my paws hands of all this introspection, and make a list or two.


A node.js module that helps with stubbing and behavior verification. It allows you to test the most remote and nested corners of your code while keeping being fully unobtrusive.
Via npm:
npm install gently@latest
Make sure your dog is working properly:
function Dog() {}
Dog.prototype.seeCat = function() {
this.bark('whuf, whuf');
this.run();
}
Dog.prototype.bark = function(bark) {
require('sys').puts(bark);
}
var gently = new (require('gently'))
, assert = require('assert')
, dog = new Dog();
gently.expect(dog, 'bark', function(bark) {
assert.equal(bark, 'whuf, whuf');
});
gently.expect(dog, 'run');
dog.seeCat();
You can also easily test event emitters with this, for example a simple sequence of 2 events emitted by fs.WriteStream
:
var gently = new (require('gently'))
, stream = new (require('fs').WriteStream)('my_file.txt');
gently.expect(stream, 'emit', function(event) {
assert.equal(event, 'open');
});
gently.expect(stream, 'emit', function(event) {
assert.equal(event, 'drain');
});
For a full read world example, check out this test case: test-incoming-form.js (in node-formdiable).
Creates a new gently instance. It listens to the process 'exit'
event to make sure all expectations have been verified.
Creates an expectation for an objects method to be called. You can optionally specify the call count
you are expecting, as well as stubFn
function that will run instead of the original function.
Returns a reference to the function that is getting overwritten.
Returns a function that is supposed to be executed count
times, delegating any calls to the provided stubFn
function. Naming your stubFn closure will help to properly diagnose errors that are being thrown:
childProcess.exec('ls', gently.expect(function lsCallback(code) {
assert.equal(0, code);
}));
Restores an object method that has been previously overwritten using gently.expect()
.
Returns a new require functions that catches a reference to all required modules into gently.hijacked
.
To use this function, include a line like this in your 'my-module.js'
.
if (global.GENTLY) require = GENTLY.hijack(require);
var sys = require('sys');
exports.hello = function() {
sys.log('world');
};
Now you can write a test for the module above:
var gently = global.GENTLY = new (require('gently'))
, myModule = require('./my-module');
gently.expect(gently.hijacked.sys, 'log', function(str) {
assert.equal(str, 'world');
});
myModule.hello();
Returns a stub class that will be used instead of the real class from the module at location
with the given exportsName
.
This allows to test an OOP version of the previous example, where 'my-module.js'
.
if (global.GENTLY) require = GENTLY.hijack(require);
var World = require('./world');
exports.hello = function() {
var world = new World();
world.hello();
}
And world.js
looks like this:
var sys = require('sys');
function World() {
}
module.exports = World;
World.prototype.hello = function() {
sys.log('world');
};
Testing 'my-module.js'
can now easily be accomplished:
var gently = global.GENTLY = new (require('gently'))
, WorldStub = gently.stub('./world')
, myModule = require('./my-module')
, WORLD;
gently.expect(WorldStub, 'new', function() {
WORLD = this;
});
gently.expect(WORLD, 'hello');
myModule.hello();
An object that holds the references to all hijacked modules.
Verifies that all expectations of this gently instance have been satisfied. If not called manually, this method is called when the process 'exit'
event is fired.
If msg
is given, it will appear in any error that might be thrown.
Gently is licensed under the MIT license.


Designed, tested, and validated custom electronics enclosures that are light and protect against, dust, water and EMI.
One of the goals for the MY18 vehicle was to decrease its mass and ensure the reliability of the electrical system. As such, the electrical enclosures were designed, tested and validated to ensure that they met numerous requirements such as, accesibility, dust and water ingress protected, EMI shielding, well mounted and easy to service.
The enclosures were machined from aluminum billet to a wall thickness of 0.050". The use of steel PEM inserts allows part count to be minimized, eases serviceability and makes the enclosures lighter than the previous year's 3D-printed enclosures. Enclosures are sealed using O-rings, aluminum tape, and waterjet-cut lids. Below is a series of images that outlines the process.
The process began by first exploring the potential ways of providing dust and water ingress protection to the enclosures. The team had used gaskets in the past, but that required a large number of bolts to be used around the enclosures perimeter. Attention then shifted towards O-rings, given that they are cheap, easy to replace and can be made for numerous applications. We decided to go forward with O-rings since a aluminum enclosure with a waterjet-cut lid would provide a static face seal. The Parker O-ring handbook was utilized to determine the best O-ring for our application, along with the recommended amount of squeeze and O-ring gland profile. A prototype was machined to validate the design and it turned out to be successful.
Preliminary tests done in order to validate the O-ring gland design.The next steps in the process involved looking into EMI shielding. This was achieved by creating a "wand" that, when connected to an oscilloscope generates a wave that can be observed when placed next to a source of EMI. Various thicknesses of aluminum were tested in order to determine the minimum wall thickness required to attenuate the EMI. A sheet of 0.020" was found to attenuate the noise by ten-fold. This was used in conjuction with testing our machining requirements in order to determine the minimum wall thickness. Machining anything thinner than 0.030" was starting to be problematic as the tool would deflect the stock and result in unequal wall thicknesses. We decided to use 0.050" thick walls to be
The CAN node is responsible for registering the brake, acceleration, and other data values from the throttles to the ECU. The ECU distributes power to all other boards and is in charge of giving the vehicle's torque commands. The previous "button bank" was used to debug and change the vehicle's state before it was re-designed for better packaging. The dashboard provides the driver with useful information such as battery pack state-of-charge, cell temperature and power consumption. Sensor nodes collect vehicle data and gets transmitted to a remote laptop for later use and analysis.The "button bank", allows the driver to set the vehicle into different states for driving and debugging.
Me at the MIT Luis de Florez Design competition.“Do not pray for an easy life, pray for the strength to endure a difficult one.”
— Bruce Lee


User Profile
Lawyer Profile
Name Surname:
Email:
Phone Number:
Lawyer Information
1281
CHANGE PASSWORD
DELETE ACCOUNT
Leave review


Dashboard
Notes Under Review
Publish Notes
Downloaded Notes
Rejected Notes
Notes
(current)
Members
Reports
Settings
Update Profile
Change Password
LOGOUT
Login
Add Country
Country Name *
Country Code *


INDXBIB
Section: User Commands (1)Updated: 27 June 2001
Index Return to Main Contents
NAME
indxbib - make inverted index for bibliographic databasesSYNOPSIS
indxbib [ -vw ] [ -c file ] [ -d dir ] [ -f file ] [ -h n ] [ -i string ] [ -k n ] [ -l n ] [ -n n ] [ -o file ] [ -t n ] [ filename... ]
It is possible to have whitespace between a command line option and its parameter.
DESCRIPTION
indxbib makes an inverted index for the bibliographic databases in filename... for use with refer(1), lookbib(1), and lkbib(1). The index will be named filename.i; the index is written to a temporary file which is then renamed to this. If no filenames are given on the command line because the -f option has been used, and no -o option is given, the index will be named Ind.i.Bibliographic databases are divided into records by blank lines. Within a record, each fields starts with a % character at the beginning of a line. Fields have a one letter name which follows the % character.
The values set by the -c, -n, -l and -t options are stored in the index; when the index is searched, keys will be discarded and truncated in a manner appropriate to these options; the original keys will be used for verifying that any record found using the index actually contains the keys. This means that a user of an index need not know whether these options were used in the creation of the index, provided that not all the keys to be searched for would have been discarded during indexing and that the user supplies at least the part of each key that would have remained after being truncated during indexing. The value set by the -i option is also stored in the index and will be used in verifying records found using the index.
OPTIONS
- -v
- Print the version number.
- -w
- Index whole files. Each file is a separate record.
- -cfile
- Read the list of common words from file instead of /usr/share/groff/<IP_ADDRESS>/eign.
- -ddir
- Use dir as the pathname of the current working directory to store in the index, instead of the path printed by pwd(1). Usually dir will be a symbolic link that points to the directory printed by pwd(1).
- -ffile
- Read the files to be indexed from file. If file is -, files will be read from the standard input. The -f option can be given at most once.
- -istring
- Don't index the contents of fields whose names are in string. Initially string is XYZ.
- -hn
- Use the first prime greater than or equal to n for the size of the hash table. Larger values of n will usually make searching faster, but will make the index larger and indxbib use more memory. Initially n is 997.
- -kn
- Use at most n keys per input record. Initially n is 100.
- -ln
- Discard keys that are shorter than n. Initially n is 3.
- -nn
- Discard the n most common words. Initially n is 100.
- -obasename
- The index should be named basename.i.
- -tn
- Truncate keys to n. Initially n is 6.
FILES
- filename.i
- Index.
- Ind.i
- Default index name.
- /usr/share/groff/<IP_ADDRESS>/eign
- List of common words.
- indxbibXXXXXX
- Temporary file.
SEE ALSO
refer(1), lkbib(1), lookbib(1)
Index
This document was created by man2html, using the manual pages.
Time: 05:29:04 GMT, December 24, 2015


Spring 2014. We're coders, not fighters. Taught by Jenn de la Fuente.
Here is where you'll find slides for the Spring 2014 class being taught on Mondays and Wednesdays. Enjoy!


Search for transactions
Filter
All
Incoming
Outgoing
|
|
|
Timestamp |
{{ element.created_date | date:'dd.MM.yyyy HH:mm'}} |
Type |
EXTERNAL TRANSACTION
DOMESTIC TRANSACTION
DEPOSIT
WITHDRAWAL
TRANSFER
CUSTOM
|
Amount |
-
+
{{element.amount}}
{{element.amount}}
|
To/From |
{{element.receiver_name | uppercase}}
{{element.sender_name | uppercase}}
PRIMARY ACCOUNT
SAVINGS ACCOUNT
PRIMARY ACCOUNT
SAVINGS ACCOUNT
|
trending_flat
PRIMARY
SAVINGS
sender account type
keyboard_backspace
PRIMARY
SAVINGS
receiver account type
person_outline
{{element.receiver_name | uppercase}}
{{element.sender_name | uppercase}}
beneficiary
Title
No title provided
|
You didn't make any transactions yet


LOADING
Group1: Abacavir transport and metabolism
Score:
Score:
Score:
Score:
Score:
Score:
Score:
Score:
Score:
Score:
Score:
You are finished this group, please go to next group
Next


YesAuthority is flexible authorization system for Laravel, It checks the route
permission to access a certain portion of the site or application. To add Permissions User-based
, Role-based
, Conditionally
. It uses authority.checkpost
middleware for filter permission of current accessing route, Under this middleware checked every permission of the user login.

Route::group(['middleware' => 'authority.checkpost'], function () {
// Place all those routes here which needs authentication and authorization.
});
Now, the basic setup is ready you need to configure rules of permissions using config/yes-authority
.
The structure of permissions given below, but it's highly recommended to read more on docs`.
[
'allow' => ['*'], // Allowed permission to user. Priority is less than deny.
'deny' => ['temp1'], // Deny permission to user. Priority is higher than allow.
]
canAccess('temp1');
// false
canAccess('temp1');
// true or false
Authentication not required
canPublicAccess();
// true or false
$accessId
, By default it check current route and return response in boolean value, And it can check access of perticular user by passing user id ($requestForUserId)
parameter. YesAuthority::check('temp1');
// true or false
Authentication not required
$accessId
, By default it check current route and return response in boolean value. YesAuthority::isPublicAccess('temp1');
// true or false
@canAccess()
// your logic here.
@endAccess;
Authentication not required
@canPublicAccess()
// your logic here.
@endAccess;


NEWS for Ruby 1.9.2¶ ↑
This document is a list of user visible feature changes made between releases except for bug fixes.
Note that each entry is kept so brief that no reason behind or reference information is supplied with. For a full list of changes with all sufficient information, see the ChangeLog file.
Changes since the 1.9.1 release¶ ↑
Library updates (outstanding ones only)¶ ↑
-
builtin classes
-
Array
-
new methods:
-
extended method:
-
Array#{uniq,uniq!,product} can take a block.
-
-
-
-
new method:
-
-
-
new method:
-
-
-
new encodings:
-
Big5
-
Big5-UAO
-
ISO-2022-JP-KDDI
-
SJIS-DoCoMo
-
SJIS-KDDI
-
SJIS-SoftBank
-
UTF8-DoCoMo
-
UTF8-KDDI
-
UTF8-SoftBank
-
-
new method:
-
ascii_compatible?
-
-
-
-
new methods:
-
extended method:
-
with_index accepts an optional argument that specifies the index number to start with, defaulted to 0.
-
-
incompatible changes:
-
rewind now calls the “rewind” method of the enclosed object if defined.
-
next doesn't clear the position at end.
-
-
-
-
Uses locale's encoding
-
ENV.[]= raises Errno::{EINVAL,ENOMEM} etc. on failure.
-
new methods:
-
-
-
new constants:
-
Float::INFINITY
-
Float::NAN
-
-
new method:
-
-
-
new methods:
-
-
-
new method:
-
-
-
new methods:
-
-
-
new methods:
-
extended method:
-
IO.pipe can take a block.
-
-
new modules:
-
IO::WaitWritable They are used to extend non-blocking exceptions.
-
-
-
new method:
-
-
Kernel
-
new methods:
-
Kernel#respond_to_missing?
-
Kernel#singleton_class
-
-
extended method:
-
Kernel#respond_to? can be used to detect methods not implemented. For example, Process.respond_to?(:fork) returns false on Windows.
-
-
incompatible changes:
-
Kernel#instance_eval yields the receiver.
-
Kernel#` (`…`) ..etc.
On Windows, the current directory is no longer implicitly prepended to the default command search path, just like other platforms.
-
-
-
-
new method:
-
MatchData#==
-
-
-
-
new method:
-
-
-
new method:
-
-
-
extended methods:
-
Float() supports hexadecimal floating point format.
-
printf() supports %a/%A format.
-
-
-
-
new method:
-
extended method:
-
Proc#source_location returns location even if receiver is a method defined by attr_reader / attr_writer / attr_accessor.
-
-
-
-
extended method:
-
Process.spawn accepts [:child, FD] for a redirect target.
-
-
-
Random (new class to generate pseudo-random numbers)
-
-
new method:
-
-
String
-
extended methods:
-
string[regexp, name] is supported for named capture.
-
-
-
-
new methods:
-
-
-
extended features:
-
time_t restriction is removed to represent before 1901 and after 2038. Proleptic Gregorian calendar is used for old dates.
-
Time.new have optional arguments to specify date with time offset.
-
Time#getlocal, Time#localtime have optional time offset argument.
-
-
new methods:
-
incompatible change:
-
-
-
new method:
-
-
-
digest
-
new methods:
-
Digest::HMAC (digest/hmac) has been marked as deprecated because it was unintentional for the experimental library to be included in the final release of 1.9.1. Please use OpenSSL::HMAC instead.
-
-
rss
-
0.2.4 -> 0.2.7.
-
-
raise an exception not returns nil for invalid feed making.
-
requires block.
-
-
-
new method to return maker class.
-
-
-
new method to check whether given version is supported.
-
-
RSS::Maker: item.guid.permanent_link?
-
new alias of item.guid.isPermaLink
-
-
RSS::Maker: item.guid.permanent_link=
-
new alias of item.guid.isPermaLink=
-
-
-
DL
-
Now uses libffi as a backend if avaiable. It means DL works fine on more platforms.
-
-
-
A lightweight wrapper for libffi.
-
-
YAML
-
Now uses libyaml as a backend if available. It means YAML library supports new standards for YAML.
-
-
-
A wrapper for libyaml.
-
-
-
Update to JSON 1.1.9
-
-
-
REXML::Document.entity_expansion_limit=
New method to set the entity expansion limit. By default the limit is set to 10000. See the following URL for details.
www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/
-
-
-
Updated to RDoc 2.5.8
-
-
RubyGems
-
Updated to RubyGems 1.3.7
-
-
logger
-
imported upstream version (logger/1.2.7)
-
do not raise an exception even if log writing failed.
-
do not raise ShiftingError if an aged file already exists. (no ShiftingError will be raised from 1.2.7, just warn() instead)
-
-
-
matrix
-
API change to adhere strictly to mathematical definitions:
-
Matrices must now be rectangular.
-
trace, regular?, singular? are defined only for square matrices
-
support for empty matrices
-
all integer matrices now have the right determinant (also an integer)
-
-
Matrix and Vector include Enumerable.
-
new methods:
-
-
net/http
-
merged net/https.
-
-
open3
-
pty
-
openssl
-
scanf
-
support %a/%A format.
-
-
socket
-
incompatible changes:
-
Socket#{recvfrom,recvfrom_nonblock,accept,accept_nonblock,sysaccept} returns a sender address as Addrinfo object instead of a binary sockaddr string. Addrinfo#to_s returns the old binary sockaddr string.
-
BasicSocket#getsockopt returns Socket::Option object instead of a binary string. Socket::Option#to_s returns the old binary string.
-
BasicSocket.do_not_reverse_lookup is turned on by default now.
-
-
new class:
-
new methods:
-
extended methods:
-
Socket.new's 3rd argument is optional now.
-
Socket.pair's 3rd argument is optional now.
-
Socket.pair and UNIXSocket.pair can take a block.
-
BasicSocket#send, UDPSocket#send, Socket.getnameinfo, Socket#bind, and Socket#{connect,connect_nonblock} accepts an Addrinfo object as sockaddr.
-
BasicSocket#getsockopt accepts a Socket::Option object.
-
Socket.getaddrinfo and IPSocket#{addr,peeraddr} accept an optional argument to turn reverse lookup on/off.
-
constant names can be accepted as well as constant values. i.e. Socket.new(:PF_INET, :SOCK_STREAM, 0) The constant names can be specified without the prefix. i.e. Socket.new(:INET, :STREAM, 0)
-
protocol/address family
-
socket type
-
socket option protocol level
-
socket option name
-
shutdown's argument
-
-
-
-
stringio
-
pathname
-
new methods:
-
extended methods:
-
Pathname#realpath and Pathname#realdirpath takes optional basedir argument.
-
-
-
-
new methods:
-
extended methods:
-
Readline.completion_proc= accepts nil. nil means to use default completion proc.
-
-
-
set
-
new methods:
-
-
time
-
incompatible changes:
-
Time.parse raises ArgumentError when no date information.
-
-
-
thread
-
extended method:
-
ConditionVariable#wait takes timeout argument.
-
-
-
securerandom
-
new methods:
-
SecureRandom.urlsafe_base64
-
-
-
-
new methods:
-
Obsoleted methods:
-
URI.decode
-
URI.encode
-
URI.escape
-
URI.unescape
-
-
-
etc
-
new methods:
-
Etc::Passwd.each
-
Etc::Group.each
-
-
-
zlib
-
rbconfig
-
new methods:
-
RbConfig.ruby
-
-
Language changes¶ ↑
-
Regexp properties (p{}) names now ignore underscores, spaces, and case, so p{ol chiki} is the same as p{Ol_Chiki}
-
Regexps now support Unicode 5.2 (new characters and scripts)
-
d, s, and w are now ASCII only; use POSIX bracket classes and p{} for Unicode semantics
-
$: no longer includes the current directory, use require_relative
-
Symbol with an invalid encoding is forbidden to exist.
Compilation options¶ ↑
-
–program-prefix and –program-suffix no longer act on the shared object names nor paths to libraries.
use –with-rubylibprefix='${libruby}/${RUBY_INSTALL_NAME}' and –with-soname='${RUBY_INSTALL_NAME}' for the same result as Ruby 1.9.1.
-
–with-arch is added for universal binary, instead of –enable-fat-binary option.
Compatibility issues (excluding feature bug fixes)¶ ↑
* Enumerator#rewind * Socket#recvfrom * Socket#recvfrom_nonblock * Socket#accept * Socket#accept_nonblock * Socket#sysaccept * BasicSocket#getsockopt * Time.utc * Time.gm * Time.local * Time.mktime * Time.parse * --program-prefix and --program-suffix * --enable-fat-binary * $: See above. * Digest::HMAC Deprecated. See above.


Greek counterterror operation yields 3 arrests, arms cache
by DEMETRIS NELLASATHENS, Greece (AP) - Greek authorities announced Saturday they had arrested three people and detained a further 15 in a “wide sweep” by the police’s counterterrorism squad on suspected left-wing extremists that also yielded an arms cache.
Another person is at large, police announced Saturday, adding that the operation is ongoing.
Two of those arrested, and the one at large, all men in their 40s, face charges of engaging in terrorist action, illegal possession of firearms and explosives, and forgery. The three allegedly took part in a robbery on a betting shop in an Athens suburb on Oct. 21, police say.
The third arrested person, a 39-year-old woman was arrested for “violating the firearms law” police said.
The counterterror squad’s sweep through 13 houses yielded, among other things, five AK-47 rifles, a submachine gun, two pistols, grenades, explosives and detonators.
Tests on the confiscated rifles showed that one AK-47 was used in the betting shop robbery and another was used in 2014, 2016 and twice in 2017.
In May 2014, on a European Parliament election day, shots had been fired at the offices of the socialist party, then ruling in coalition with the conservatives.
In January and November 2017, shots from the AK-47 were fired at riot police guarding the socialist party’s offices. A police officer had been injured in the first of these attacks.
In July 2016, shots had been fired at the Mexican Embassy in Athens.
Also, in November 2016, a grenade thrown at the French Embassy, in central Athens, had injured a police officer.
All the above actions had been claimed, by a group called “Organization for Revolutionary Self-Defense” which had not operated before 2014.
One of the arrested men was jailed in 2010 for membership in the armed group “Revolutionary Struggle.” He was released early in February 2018.
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


Latest Reward
Other Reward
Season Reward
Hi survivor, this is the latest reward for you today
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Hi survivor, this is the season reward for you today
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Change Reward
Hi survivor, this is the other reward for you
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Collect
Hi survivor, are you sure to collect this reward?
Reward Availability
This reward is available to collect
Reward Information
Special reward for Royale Pass Season 15.
Back to reward
Collect this reward
Login to your PUBG MOBILE account to receive your reward
Login with Facebook
Login with Twitter
Back to reward
Log in to your Facebook account to connect to PUBG MOBILE
Log In
Create account
Not now
Forgotten password?
English (UK)
Bahasa Indonesia
Basa Jawa
Bahasa Melayu
日本語
Español
Português (Brasil)
Facebook Inc.
Login to Twitter
Phone, email, or username
Password
Log In
rk


Id: 138
Name: General Nathan
Status: Dead
Species: Human
Type:
Gender: Male
OriginName: Earth (Replacement Dimension)
OriginUrl: https://rickandmortyapi.com/api/location/20
LocationName: Earth (Replacement Dimension)
LocationUrl: https://rickandmortyapi.com/api/location/20
Image: https://rickandmortyapi.com/api/character/avatar/138.jpeg
Episode: ['https://rickandmortyapi.com/api/episode/16']
Url: https://rickandmortyapi.com/api/character/138
Created: 2017-12-27T18:22:18.387Z


The Marble Faun
by Nathaniel Hawthorne
Chapter XXII: “The Medici Garden”
Additional Information
- Year Published: 1860
- Language: English
- Country of Origin: United States of America
- Source: Hawthorne, N. (1860). The Marble Faun. Boston: Ticknor and Fields.
-
Readability:
- Flesch–Kincaid Level: 11.5
- Word Count: 1,857
- Genre: Gothic
- Keywords: 19th century literature, american literature, nathaniel hawthorne, the marble faun
- ✎ Cite This
Downloads
“Donatello,” said Miriam anxiously, as they came through the Piazza Barberini, “what can I do for you, my beloved friend? You are shaking as with the cold fit of the Roman fever.”
“Yes,” said Donatello; “my heart shivers.”
As soon as she could collect her thoughts, Miriam led the young man to the gardens of the Villa Medici, hoping that the quiet shade and sunshine of that delightful retreat would a little revive his spirits. The grounds are there laid out in the old fashion of straight paths, with borders of box, which form hedges of great height and density, and are shorn and trimmed to the evenness of a wall of stone, at the top and sides. There are green alleys, with long vistas overshadowed by ilex-trees; and at each intersection of the paths, the visitor finds seats of lichen-covered stone to repose upon, and marble statues that look forlornly at him, regretful of their lost noses. In the more open portions of the garden, before the sculptured front of the villa, you see fountains and flower-beds, and in their season a profusion of roses, from which the genial sun of Italy distils a fragrance, to be scattered abroad by the no less genial breeze.
But Donatello drew no delight from these things. He walked onward in silent apathy, and looked at Miriam with strangely half-awakened and bewildered eyes, when she sought to bring his mind into sympathy with hers, and so relieve his heart of the burden that lay lumpishly upon it.
She made him sit down on a stone bench, where two embowered alleys crossed each other; so that they could discern the approach of any casual intruder a long way down the path.
“My sweet friend,” she said, taking one of his passive hands in both of hers, “what can I say to comfort you?”
“Nothing!” replied Donatello, with sombre reserve. “Nothing will ever comfort me.”
“I accept my own misery,” continued Miriam, “my own guilt, if guilt it be; and, whether guilt or misery, I shall know how to deal with it. But you, dearest friend, that were the rarest creature in all this world, and seemed a being to whom sorrow could not cling,—you, whom I half fancied to belong to a race that had vanished forever, you only surviving, to show mankind how genial and how joyous life used to be, in some long-gone age,—what had you to do with grief or crime?”
“They came to me as to other men,” said Donatello broodingly. “Doubtless I was born to them.”
“No, no; they came with me,” replied Miriam. “Mine is the responsibility! Alas! wherefore was I born? Why did we ever meet? Why did I not drive you from me, knowing for my heart foreboded it—that the cloud in which I walked would likewise envelop you!”
Donatello stirred uneasily, with the irritable impatience that is often combined With a mood of leaden despondency. A brown lizard with two tails—a monster often engendered by the Roman sunshine—ran across his foot, and made him start. Then he sat silent awhile, and so did Miriam, trying to dissolve her whole heart into sympathy, and lavish it all upon him, were it only for a moment’s cordial.
The young man lifted his hand to his breast, and, unintentionally, as Miriam’s hand was within his, he lifted that along with it. “I have a great weight here!” said he. The fancy struck Miriam (but she drove it resolutely down) that Donatello almost imperceptibly shuddered, while, in pressing his own hand against his heart, he pressed hers there too.
“Rest your heart on me, dearest one!” she resumed. “Let me bear all its weight; I am well able to bear it; for I am a woman, and I love you! I love you, Donatello! Is there no comfort for you in this avowal? Look at me! Heretofore you have found me pleasant to your sight. Gaze into my eyes! Gaze into my soul! Search as deeply as you may, you can never see half the tenderness and devotion that I henceforth cherish for you. All that I ask is your acceptance of the utter self-sacrifice (but it shall be no sacrifice, to my great love) with which I seek to remedy the evil you have incurred for my sake!”
All this fervor on Miriam’s part; on Donatello’s, a heavy silence.
“O, speak to me!” she exclaimed. “Only promise me to be, by and by, a little happy!”
“Happy?” murmured Donatello. “Ah, never again! never again!”
“Never? Ah, that is a terrible word to say to me!” answered Miriam. “A terrible word to let fall upon a woman’s heart, when she loves you, and is conscious of having caused your misery! If you love me, Donatello, speak it not again. And surely you did love me?”
“I did,” replied Donatello gloomily and absently.
Miriam released the young man’s hand, but suffered one of her own to lie close to his, and waited a moment to see whether he would make any effort to retain it. There was much depending upon that simple experiment.
With a deep sigh—as when, sometimes, a slumberer turns over in a troubled dream Donatello changed his position, and clasped both his hands over his forehead. The genial warmth of a Roman April kindling into May was in the atmosphere around them; but when Miriam saw that involuntary movement and heard that sigh of relief (for so she interpreted it), a shiver ran through her frame, as if the iciest wind of the Apennines were blowing over her.
“He has done himself a greater wrong than I dreamed of,” thought she, with unutterable compassion. “Alas! it was a sad mistake! He might have had a kind of bliss in the consequences of this deed, had he been impelled to it by a love vital enough to survive the frenzy of that terrible moment, mighty enough to make its own law, and justify itself against the natural remorse. But to have perpetrated a dreadful murder (and such was his crime, unless love, annihilating moral distinctions, made it otherwise) on no better warrant than a boy’s idle fantasy! I pity him from the very depths of my soul! As for myself, I am past my own or other’s pity.”

“Donatello, we must part,” she said, with melancholy firmness. “Yes; leave me! Go back to your old tower, which overlooks the green valley you have told me of among the Apennines.  For in dreams the conscience sleeps, and we often stain ourselves with guilt of which we should be incapable in our waking moments.  Go; and forget it all!”
“Ah, that terrible face!” said Donatello, pressing his hands over his eyes.  “It was unreal; and, that you may feel it so, it is requisite that you see this face of mine no more. Once, you may have thought it beautiful; now, it has lost its charm. Yet it would still retain a miserable potency’ to bring back the past illusion, and, in its train, the remorse and anguish that would darken all your life. Leave me, therefore, and forget me.”
“Forget you, Miriam!” said Donatello, roused somewhat from his apathy of despair.
“If I could remember you, and behold you, apart from that frightful visage which stares at me over your shoulder, that were a consolation, at least, if not a joy.”
“But since that visage haunts you along with mine,” rejoined Miriam, glancing behind her, “we needs must part. Farewell, then! But if ever—in distress, peril, shame, poverty, or whatever anguish is most poignant, whatever burden heaviest—you should require a life to be given wholly, only to make your own a little easier, then summon me! As the case now stands between us, you have bought me dear, and find me of little worth. Fling me away, therefore! May you never need me more! But, if otherwise, a wish—almost an unuttered wish will bring me to you!”
She stood a moment, expecting a reply. But Donatello’s eyes had again fallen on the ground, and he had not, in his bewildered mind and overburdened heart, a word to respond.
“That hour I speak of may never come,” said Miriam. “So farewell—farewell forever.”
“Farewell,” said Donatello.
His voice hardly made its way through the environment of unaccustomed thoughts and emotions which had settled over him like a dense and dark cloud. Not improbably, he beheld Miriam through so dim a medium that she looked visionary; heard her speak only in a thin, faint echo.
She turned from the young man, and, much as her heart yearned towards him, she would not profane that heavy parting by an embrace, or even a pressure of the hand. So soon after the semblance of such mighty love, and after it had been the impulse to so terrible a deed, they parted, in all outward show, as coldly as people part whose whole mutual intercourse has been encircled within a single hour.
And Donatello, when Miriam had departed, stretched himself at full length on the stone bench, and drew his hat over his eyes, as the idle and light-hearted youths of dreamy Italy are accustomed to do, when they lie down in the first convenient shade, and snatch a noonday slumber. A stupor was upon him, which he mistook for such drowsiness as he had known in his innocent past life. But, by and by, he raised himself slowly and left the garden. Sometimes poor Donatello started, as if he heard a shriek; sometimes he shrank back, as if a face, fearful to behold, were thrust close to his own. In this dismal mood, bewildered with the novelty of sin and grief, he had little left of that singular resemblance, on account of which, and for their sport, his three friends had fantastically recognized him as the veritable Faun of Praxiteles.


module Pass:sig
..end
Pass is essentially a function that takes a project data structures, and returns a new project, possibly modified.
Passes may depend on other passes, and have a few properties,
associated with them.
typet =
Std.Project.pass
type
error =
| |
Unsat_dep of |
| |
Runtime_error of |
Not_loaded name
pass with a given name
wasn't loaded for
some reason. This is a very unlikely error, indicating
either a logic error in the plugin system implementation or
something very weird, that we didn't expect.Not_loaded name
when we tried to load plugin with a given
name
we failed to find it in our search paths.Runtime_error (name,exn)
when plugin with a given name
was run it raised an exn
.exception Failed of error
_exn
suffix in their
name.val run : t ->
Std.project ->
(Std.project, error) Std.Result.t
run_pass project pass
applies pass
to a project
.
If a pass has dependencies, then they will be run before the
pass in some topological order.
val run_exn : t -> Std.project -> Std.project
run_pass_exn proj
is the same as run_pass
, but raises an
exception on error. Useful to provide custom error
handling/printing.Pass_failed
if failed to load, or if plugin failed at
runtime.val name : t -> string
name pass
is a pass nameval autorun : t -> bool
autorun pass
is true
if a pass
was created with
autorun option


Read about Great pizzas, Before you know what to order!!!
Great pizzas have been prepared. Great test they have been. Great and small people eat pizzas everyday. whenever you go for pizza whether it's for a date, a meal or just a snack, You gotta consider a lot of factors before you order the quality that you want.
In Texas alone, there are 200 pizza inns. The families in this state alone would be likeDad, you mean we are eating hotdogs for lunch then Pizzas for supper I am loving Dad!!
When you order your pizza, Check on the toppings and the crust besides it's size.


AWS WAF SizeConstraintSet SizeConstraint FieldToMatch
FieldToMatch
is a property of the AWS WAF SizeConstraintSet SizeConstraint property that specifies the part of a web request that you want AWS WAF to check
for a size constraint, such as a specific header or a query string.
Syntax
Properties
Data
-
If you specify
HEADER
for theType
property, the name of the header that AWS WAF searches for, such asUser-Agent
orReferer
. If you specify any other value for theType
property, do not specify this property.Required: Conditional
Type: String
Type
-
The part of the web request in which AWS WAF searches for the target string. For valid values, see FieldToMatch in the AWS WAF API Reference.
Required: Yes
Type: String


{% extends "layout/layout.html" %} {% from "_helper.html" import image_popup, href_image_button %} {% from "_helper.html" import cm_state_color %} {% block content %} Manage Projects


NodeStack
public final class NodeStack<NodeType> : CustomStringConvertible where NodeType : Node
A NodeStack
can be used to manage AST construction state, as new rule evaluations begin new contexts can be pushed onto the node stack and then popped and discarded on failure, or popped and acted on for success.
-
Creates a new instance of the stack with an active context
Declaration
Swift
public init()
-
Removes all current stack entries and adds a new initial context
Declaration
Swift
public func reset()
-
Adds a new context to the top of the stack
Declaration
Swift
public func push()
-
Removes the stack entry from the top of the stack
Declaration
Swift
public func pop() -> NodeStackEntry<NodeType>
Return Value
The popped entry
-
The entry currently on the top of the stack, if any
Declaration
Swift
public var top: NodeStackEntry<NodeType>? { get }
-
The depth of the stack
Declaration
Swift
public var depth: Int { get }
-
An inverted (from deepest to shallowest) representation of the stack
Declaration
Swift
public var all: [NodeStackEntry<NodeType>] { get }
-
A human readable description of the stack
Declaration
Swift
public var description: String { get }


Philip Rodgers
Chicago Ridge, IL ●<PHONE_NUMBER> ●<EMAIL_ADDRESS>● GitHub
Full Stack Web and Hybrid Mobile Apps Developer
IT professional with over 20 years of experience specializing in full stack JavaScript application
and architectures. Experienced in all stages of the development life cycle, well versed in numerous
programming languages. Provides effecient, timely, and cost-cutting solutions to IT issues.
- Hands-on experience leading all stages of systems development efforts
- Outstanding leadership abilities; able to coordinate and direct all phases of projects
Core Competencies
- Full Stack Development
- Hybrid Mobile Development
- Strong Analytical Skills
- Strong Leadership Skills
Certifications and Technical Proficiencies
| Certifications: | Agile Certified Scrum Master |
|---|---|
| Platforms: | Linux, LAMP, MEAN, NodeJS, Windows |
| Databases: | SQL Server, Sybase, Oracle, and Access |
| Tools: | VS Code, SSH, Gulp, Git, Stash, TFS, Jira, Remedy |
| Languages: | HTML, CSS, SASS, JavaScript, ES6, PHP, BASH, SQL, TypeScript, VB.Net, VSTO, VBA, .NET Frameworks, ASP.Net, JSON, HTML, XML, SQL, T-SQL, and PL/SQL |
Professional Experience
CME Group
May 2015 - March 2020
Systems Analyst
- Applied systems analysis to evaluate business issues for examiners in our Financial Regulatory Surveillance department.
- Developed and maintained complex systems and subsystems including several thick client apps and web apps utilized to conduct and track exams.
- Also provided real-time support to client firms regulated by our department.
AMA Insurance
Feb 2015 - April 2015
VB.Net Architect
- Analysis, design, and .NET implementation of existing VB6 application that manages very large volume document printing for entire physician customer base.
- Stored document library and customer database on AS/400.
Education
MicroTrain Technologies - Chicago, IL
April 2021
Certification - Agile Full Stack Web and Hybrid Mobile Application Development
DeVry Institute of Technology - Chicago, IL
Sep 1983 - June 1987
Bachelor of Science in Electrical Engineering Technology


HTML for absolute beginners
Our absolute beginner tutorial will turn you webmaster in few hours.
While many guides on the internet attempt to teach HTML using a lot of mind-boggling theory, this tutorial will instead focus on giving you the practical skills to build your first site.
The aim is to show you ‘how’ to create your first web page without spending the entire tutorial focusing too much on the “why.” By the end of this tutorial, you will have the know-how to create a basic website and we hope that this will inspire you to delve further into the world of HTML using our follow-on guides.


This week has been quiet, bikeshedding, holiday week and unproductive week so far in RC.
Zulip
Zulip is a Python-based open source group chat. RC uses zulip for the internal chat. Unlike GitHub, zulip doesn’t support inline emoji reaction for messages. I am collaborating with Arpith and Stan Zheng to add the missing feature. The first time I came across the limitation of Django’s values
method. If you’re considering setting up a group chat for your community or company, try out zulip!
Erlang
Now I am getting the hang of the language. The uncomfortable part is writing recursive functions. I still think in loops; sometimes I write counterpart in Python and port to Erlang. I feel Erlang code is readable like Python. Now, I am reading up socket handling and message passing. Once I cross few more chapters, I will get my hands dirty on implementing DHT.
Streisand
For very long time, I was thinking of using VPN. Finally, I asked the advice and setup streisand. So what is Streisand? Quoting directly from GH description
Streisand sets up a new server running L2TP/IPsec, OpenConnect, OpenSSH, OpenVPN, Shadowsocks, sslh, Stunnel, and a Tor bridge. It also generates custom configuration instructions for all of these services. At the end of the run you are given an HTML file with instructions that can be shared with friends, family members, and fellow activists.
The project comes with ansible playbook and orchestration is done from local computer for a chosen providers. So you roll out your VPN server without losing sanity! I decided to deploy in DigitalOcean. The default procedure had issues with picking up SSH Keys
, so provisioned the machine and ran the command ansible-playbook playbooks/streisand.yml
. The setup took ten minutes, and all the services were up and running. Till now no issues with the server at all.
The project auto generates documentation with instructions for using various supported protocols and devices. The generated instruction is super helpful and accurate except setting up L2TP/IPSec
on Linux. The project supports different protocols; I choose L2TP/IPSec
.
L2TP - Layer 2 Tunneling Procotol is a protocol for supporting virtual private network without encryption. For encryption IPsec is used. IPsec takes care of authentication and encryption. The device connects to a VPN server with username
and password
. Once the authentication is successful, all the traffic origination from the machine is directed to VPN server. So you can avoid incidents like this and get rid off geographic firewall, packet sniffing, and other threats.
Setting up L2TP/IPsec
on iOS, Mac OSX, Andriod
is a cake walk. But on Linux
I burnt all my midnight oil. The Streisand has no documentation for setting on any Linux system. The tutorials from elastichosts and ArchLinux wiki was my saviour. I had never configured any of these before, and the configuration file format is different. I spent 3-4 hours battling with ipsec verify
and xl2tpd
to get up and running. Finally, syslog
helped me debug the issue.
For the first time, I got a chance to use iptables. Iptables is a user-space command line packet filtering tool. The tool provides options to filter the incoming and outgoing packets. So try the command ip route show
in your terminal.
During the setup, multiple times I configured the wrong values in iptables and my machine was out of internet connection. I shot my foot several times :-( In L2TP/IPsec
, iptables is used to forward all packets to VPN server. All the iptables
entries live as long as the machine is running. After the restart or reboot system, all the values need to be reconfigured. So there is a project iptables-persistent
to persist entries after the system reboot.
I am still having issues with automating init
bash scripts for Linux. The iptables entries differ depending on the network subnets. My home network subnet is <IP_ADDRESS>/24
, and at premise, the subnet is <IP_ADDRESS>/16
, <IP_ADDRESS>/24
. The values change for devices like wlan0
and eth0
. As of now I running the script every time, I restart the machine.
Here is a sample add entry
ip route add <vpn server> via <IP_ADDRESS> dev wlan0
Here <IP_ADDRESS>
is the gateway and wlan0
refers WiFi device.
Thanksgiving
Last Thursday was Thanksgiving, and the premise was quiet, and vibe of the place was totally missing.
On Thursday, all my favorite veg brunch and dinner places were shut down; but all halal carts were on the streets. Few city blocks were dark, and all the building light was turned off but fine dining places were decorated and colorful. Few avenues had street vendors; the busiest roads were resting contentfully with occasional visitors. The subway car was quiet, folks were relaxed and more than half the seats were empty. The majority of humans departed the city but not the cars. At 10:30 PM street person was waiting for the traffic signal to turn red to collect few spare changes. So who celebrates Thanksgiving?
The countdown starts last three weeks of my RC batch.
See also
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.


{{folder.name}} | {{ folder.settings.enabled ? "Enabled" : "Disabled" }}
You don't have any folders.
Speed
Autoplay Videos
Enabled


| up: RPC | index | Zimbu documentation |
|
The state used in the client to track the progress of an RPC call. |
|
| Copyright 2009 Bram Moolenaar All Rights Reserved. |
| Licensed under the Apache License, Version 2.0. See the LICENSE file or obtain a copy at: http://www.apache.org/licenses/LICENSE-2.0 |


{% extends '_layouts/nhsid-layout.html' %} {% block page_title %}NHSID: Enter your access code{% endblock %} {% block content %}
{{ error }}
A text message containing your access code has been sent to ***** *** 024


The JADE Semantics Add-on is a framework that eases the development of cognitive agents with automatic understanding capabilities of FIPA-ACL messages. It also provides developers with a high-level programming style, based on the abstract concepts of the FIPA-SL logical language (beliefs, intentions, facts expressed as logical formulas, action expressions, ...).
It is developed and made available under the terms of the LGPL open source license by Orange Labs.
To get started with developing with this add-on, you can follow the tutorial. It consists in a detailed guided tour of the framework together with some progressive practical exercises.
Experienced JSA developers should also consult the guide for migrating their applications from the JSA 1.2 version to the JSA 1.4 version.
From the version 1.4, we are also starting a “cook-book” documentation, which will also be available and progressively enriched on-line. It aims at helping developers with some practical code examples, which they can easily adapt.
The API reference
can be found here (note you need to
compile the Javadoc first from your distribution by launching the
ant doc
command in the installation directory).
From a more theoretical point of view, you can also read the scientific publications about the JADE Semantics Add-on:
|
[1] |
Louis Vincent, Martinez Thierry, “An
operational model for the FIPA-ACL semantics”, |
|
[2] |
Louis Vincent, Martinez Thierry, “The
JADE Semantic Agent: towards an agent communication oriented
middleware”, |
|
[3] |
Louis Vincent, Martinez Thierry, “Un
cadre d'interprétation de la sémantique de FIPA-ACL dans
JADE”, |
|
[4] |
Louis Vincent, Martinez Thierry, “An operational
model for the FIPA-ACL semantics”, |
|
[5] |
Louis Vincent, Martinez Thierry, “JADE Semantics
Framework”, in Developing Multi-agent Systems With Jade, |
|
[6] |
Ochs Magalie, Pelachaud Catherine, Sadek David, “An
Empathic Virtual Dialog Agent to Improve Human-Machine Interaction”,
|
|
[7] |
Adam Carole, Louis Vincent, Bourge Fabrice, Picant
Sébastien, “Programming
institutional semantic agents – JIA: an institutional extension for
JADE semantic agents” |
Have fun with the
JSA and send us
feed-back!
Thanks for your support,
The JSA team @ Orange Labs


Sign In
Sign Up
Email
Password
Keep me Signed in
Forgot Password?
First Name
Last Name
DOB
Email Address
Country
State
Password
Confirm Password
Already Member?


{# Copyright (C) 2013 TopCoder Inc., All Rights Reserved. #}
{# This is the template defines partner requests list. #}
Healthcare Fraud Prevention Decision Module
Healthcare Fraud Prevention Decision Module
Pending requests
| Request Id |
Study Id |
Query String |
Expiration Time |
Cache Available |
Cache Timestamp |
{% for request in pending %}
| {{request.request_id}} |
{{request.study_id}} |
{{request.query}} |
{{request.expiration_time}} |
{{request.cache_available}} |
{{request.cache_timestamp}} |
|
|
{% endfor %}
{% if approved %}
Approved requests
| Request Id |
Study Id |
Query String |
Expiration Time |
Cache Available |
Cache Timestamp |
{% for request in approved %}
| {{request.request_id}} |
{{request.study_id}} |
{{request.query}} |
{{request.expiration_time}} |
{{request.cache_available}} |
{{request.cache_timestamp}} |
{% endfor %}
{% endif %}
{% if denied %}
Denied requests
| Request Id |
Study Id |
Query String |
Expiration Time |
Cache Available |
Cache Timestamp |
{% for request in denied %}
| {{request.request_id}} |
{{request.study_id}} |
{{request.query}} |
{{request.expiration_time}} |
{{request.cache_available}} |
{{request.cache_timestamp}} |
{% endfor %}
{% endif %}


Desireable JavaScript Qualities
Things to Try:
Time management
Technical expertise
Positivity
Good learner
Logical thinker
Add 2 Qualities
Remove Quality
Highlight Top 3


Managing Multiple Github Accounts
Let’s look at how to manage multiple Github accounts from one computer. In essence, it’s simply a matter of balancing both your git and ssh configurations - which actually is not as bad as it might seem.
Note: This tutorial is meant for Unix users.
Contents
- Set up SSH Keys
- Add the keys to your Github accounts:
- Create a configuration file to manage the separate keys
- Update stored identities
- Test PUSH
- Test PULL
Set up SSH Keys
Let’s assume your two Github accounts are named githubPersonal and githubWork, respectively.
Create two SSH keys, saving each to a separate file:
$ cd ~/.ssh
$ ssh-keygen -t rsa -C<EMAIL_ADDRESS># save it as id_rsa_personal when prompted
$ ssh-keygen -t rsa -C<EMAIL_ADDRESS># save it as id_rsa_work when prompted
The above commands setup the following files:
- id_rsa_personal
- id_rsa_personal.pub
- id_rsa_work
- id_rsa_work.pub
Add the keys to your Github accounts:
Copy the key to your clipboard:
$ pbcopy < ~/.ssh/id_rsa_personal.pub
Add the key to your account:
- Go to your Account Settings
- Click “SSH Keys” then “Add SSH key”
- Paste your key into the “Key” field and add a relevant title
- Click “Add key” then enter your Github password to confirm
Repeat the process for your githubWork account.
Create a configuration file to manage the separate keys
Create a config file in ~/.ssh/
$ touch config
Edit the file using the text editor of your choice. I used vim - $ vim config
:
# githubPersonal
Host personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
# githubWork
Host work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
Update stored identities
Clear currently stored identities:
$ ssh-add -D
Add new keys:
$ ssh-add id_rsa_personal
$ ssh-add id_rsa_work
Test to make sure new keys are stored:
$ ssh-add -l
Test to make sure Github recognizes the keys:
$ ssh -T personal
Hi githubPersonal! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T work
Hi githubWork! You've successfully authenticated, but GitHub does not provide shell access.
Test PUSH
On Github, create a new repo in your personal account, githubPersonal, called test-personal.
Back on your local machine, create a test directory:
$ cd ~/documents
$ mkdir test-personal
$ cd test-personal
Add a blank “readme.md” file and PUSH to Github:
$ touch readme.md
$ git init
$ git add .
$ git commit -am "first commit"
$ git remote add origin git@personal:githubPersonal/test-personal.git
$ git push origin master
Notice how we’re using the custom account,
git@personal
, instead<EMAIL_ADDRESS>.
Repeat the process for your githubWork account.
Test PULL
Add some text to the readme.md file in your personal account on Github.
Now PULL and merge the changes by running the following command within the test-personal directory:
$ git pull origin master
Again, repeat this for your githubWork account.
Questions? Comments? Did I miss something? Comment below.


Hello, everyone reading this! Welcome to my blog! One that I build from scratch! I built this website using html, css, and JavaScript. For those of you who don't know much about them, they sound a lot scarier than they actually are. Anyway, back to the original topic of discussion, my blog. I intend to make blog posts when I want to, I don't plan to ever have a fixed schedule. This website is just for pleasure, a friendly place for me to post my ramblings. There will never be any ads on this page, there is no need for them, this website costs nothing to maintain thanks to Github. Anyway, as I'm writing this I've already posted one other blog post about my first game, so go read that if you're intrested. Thanks for reading all of this, hope you stick around for more of my nonsense.
Written on December 6th, 2017
Edited on March 30th, 2018


Sylvanian Families Marlowe Tuxedo Cat Family of Four
The black cat father makes this family a favorite for me.
UK Biography Information
Father Mason Marlowe is very giving and kind and loves spending time with his family. Mason is the tennis coach in Sylvania and teaches tennis to Sylvanians of all ages.
Mother Natalie Marlowe used to be a ballroom dancer in her youth and now loves teaching ballroom dancing to other Sylvanians. Natalie's other love is fashion. She keeps up with all the latest trends and enjoys shopping at the village boutiques as a weekend treat!
Sister Lily Marlowe is a lot like her mother and loves to shop for pretty dresses. She loves to dress up and always looks beautiful at the school dance. Lily dreams of being a famous dancer when she is older.
Sister Rose Marlowe is more like her father. She is very athletic and her favourite sport is tennis - in fact, Rose is her father Mason's star pupil and always has been!


|
Files | |
| file | mindsensors-touchpanel.h |
Mindsensors TouchPanel. | |
Defines | |
| #define | MSTP_I2C_ADDR 0x04 |
| #define | MSTP_REG_TOUCH_X 0x42 |
| #define | MSTP_REG_TOUCH_Y 0x43 |
| #define | MSTP_REG_BUTTONS 0x44 |
| #define | MSTP_REG_CAL_XD1 0x45 |
| #define | MSTP_REG_CAL_YD1 0x46 |
| #define | MSTP_REG_CAL_XT1 0x47 |
| #define | MSTP_REG_CAL_YT1 0x48 |
| #define | MSTP_REG_CAL_XD2 0x49 |
| #define | MSTP_REG_CAL_YD2 0x4A |
| #define | MSTP_REG_CAL_XT2 0x4B |
| #define | MSTP_REG_CAL_YT2 0x4C |
| #define | MSTP_REG_G_AVAIL 0x4D |
| #define | MSTP_REG_G_NEXTX 0x4E |
| #define | MSTP_REG_G_NEXTY 0x4F |
| #define | BUTTON_L1 0 |
| #define | BUTTON_L2 1 |
| #define | BUTTON_L3 2 |
| #define | BUTTON_L4 3 |
| #define | BUTTON_R1 4 |
| #define | BUTTON_R2 5 |
| #define | BUTTON_R3 6 |
| #define | BUTTON_R4 7 |
| #define | MSTP_REG_RAW_BC 0x4D |
| #define | MSTP_REG_RAW_X 0x4E |
| #define | MSTP_REG_RAW_Y 0x4F |
| #define | isButtonTouched(X, Y) (X >> Y) & 0x01 |
| #define | isButtonL1Touched(X) (X >> BUTTON_L1) & 0x01 |
| #define | isButtonL2Touched(X) (X >> BUTTON_L2) & 0x01 |
| #define | isButtonL3Touched(X) (X >> BUTTON_L3) & 0x01 |
| #define | isButtonL4Touched(X) (X >> BUTTON_L4) & 0x01 |
| #define | isButtonR1Touched(X) (X >> BUTTON_R1) & 0x01 |
| #define | isButtonR2Touched(X) (X >> BUTTON_R2) & 0x01 |
| #define | isButtonR3Touched(X) (X >> BUTTON_R3) & 0x01 |
| #define | isButtonR4Touched(X) (X >> BUTTON_R4) & 0x01 |
| #define | MSTPresetCalibration(x) MSTPsendCmd(tSensors link, ubyte cmd, ubyte addr = MSTP_I2C_ADDR); |
Functions | |
| bool | MSTPgetTouch (tSensors link, int &x, int &y, ubyte &buttons, ubyte addr=MSTP_I2C_ADDR) |
| bool | MSTPsendCmd (tSensors link, ubyte cmd, ubyte addr=MSTP_I2C_ADDR) |
Variables | |
| tByteArray | MSTP_I2CRequest |
| tByteArray | MSTP_I2CReply |
TouchPanel
| #define BUTTON_L1 0 |
Definition at line 58 of file mindsensors-touchpanel.h.
| #define BUTTON_L2 1 |
Definition at line 59 of file mindsensors-touchpanel.h.
| #define BUTTON_L3 2 |
Definition at line 60 of file mindsensors-touchpanel.h.
| #define BUTTON_L4 3 |
Definition at line 61 of file mindsensors-touchpanel.h.
| #define BUTTON_R1 4 |
Definition at line 62 of file mindsensors-touchpanel.h.
| #define BUTTON_R2 5 |
Definition at line 63 of file mindsensors-touchpanel.h.
| #define BUTTON_R3 6 |
Definition at line 64 of file mindsensors-touchpanel.h.
| #define BUTTON_R4 7 |
Definition at line 65 of file mindsensors-touchpanel.h.
| #define isButtonL1Touched | ( | X ) | (X >> BUTTON_L1) & 0x01 |
Check if the L1 button is pressed
Definition at line 80 of file mindsensors-touchpanel.h.
| #define isButtonL2Touched | ( | X ) | (X >> BUTTON_L2) & 0x01 |
Check if the L2 button is pressed
Definition at line 81 of file mindsensors-touchpanel.h.
| #define isButtonL3Touched | ( | X ) | (X >> BUTTON_L3) & 0x01 |
Check if the L3 button is pressed
Definition at line 82 of file mindsensors-touchpanel.h.
| #define isButtonL4Touched | ( | X ) | (X >> BUTTON_L4) & 0x01 |
Check if the L4 button is pressed
Definition at line 83 of file mindsensors-touchpanel.h.
| #define isButtonR1Touched | ( | X ) | (X >> BUTTON_R1) & 0x01 |
Check if the R1 button is pressed
Definition at line 84 of file mindsensors-touchpanel.h.
| #define isButtonR2Touched | ( | X ) | (X >> BUTTON_R2) & 0x01 |
Check if the R2 button is pressed
Definition at line 85 of file mindsensors-touchpanel.h.
| #define isButtonR3Touched | ( | X ) | (X >> BUTTON_R3) & 0x01 |
Check if the R3 button is pressed
Definition at line 86 of file mindsensors-touchpanel.h.
| #define isButtonR4Touched | ( | X ) | (X >> BUTTON_R4) & 0x01 |
Check if the R4 button is pressed
Definition at line 87 of file mindsensors-touchpanel.h.
| #define isButtonTouched | ( | X, | |
| Y | |||
| ) | (X >> Y) & 0x01 |
Check if the specified button is pressed
Definition at line 78 of file mindsensors-touchpanel.h.
| #define MSTP_I2C_ADDR 0x04 |
Definition at line 41 of file mindsensors-touchpanel.h.
| #define MSTP_REG_BUTTONS 0x44 |
Definition at line 44 of file mindsensors-touchpanel.h.
| #define MSTP_REG_CAL_XD1 0x45 |
Definition at line 46 of file mindsensors-touchpanel.h.
| #define MSTP_REG_CAL_XD2 0x49 |
Definition at line 50 of file mindsensors-touchpanel.h.
| #define MSTP_REG_CAL_XT1 0x47 |
Definition at line 48 of file mindsensors-touchpanel.h.
| #define MSTP_REG_CAL_XT2 0x4B |
Definition at line 52 of file mindsensors-touchpanel.h.
| #define MSTP_REG_CAL_YD1 0x46 |
Definition at line 47 of file mindsensors-touchpanel.h.
| #define MSTP_REG_CAL_YD2 0x4A |
Definition at line 51 of file mindsensors-touchpanel.h.
| #define MSTP_REG_CAL_YT1 0x48 |
Definition at line 49 of file mindsensors-touchpanel.h.
| #define MSTP_REG_CAL_YT2 0x4C |
Definition at line 53 of file mindsensors-touchpanel.h.
| #define MSTP_REG_G_AVAIL 0x4D |
Definition at line 54 of file mindsensors-touchpanel.h.
| #define MSTP_REG_G_NEXTX 0x4E |
Definition at line 55 of file mindsensors-touchpanel.h.
| #define MSTP_REG_G_NEXTY 0x4F |
Definition at line 56 of file mindsensors-touchpanel.h.
| #define MSTP_REG_RAW_BC 0x4D |
Definition at line 68 of file mindsensors-touchpanel.h.
| #define MSTP_REG_RAW_X 0x4E |
Definition at line 69 of file mindsensors-touchpanel.h.
| #define MSTP_REG_RAW_Y 0x4F |
Definition at line 70 of file mindsensors-touchpanel.h.
| #define MSTP_REG_TOUCH_X 0x42 |
Definition at line 42 of file mindsensors-touchpanel.h.
| #define MSTP_REG_TOUCH_Y 0x43 |
Definition at line 43 of file mindsensors-touchpanel.h.
| #define MSTPresetCalibration | ( | x ) | MSTPsendCmd(tSensors link, ubyte cmd, ubyte addr = MSTP_I2C_ADDR); |
Definition at line 93 of file mindsensors-touchpanel.h.
| bool MSTPgetTouch | ( | tSensors | link, |
| int & | x, | ||
| int & | y, | ||
| ubyte & | buttons, | ||
| ubyte | addr | ||
| ) |
Fetch all the information from the TouchPanel, including coordinates of current touch and button state. by configuring the sensor as sensorLightInactive
| link | the TouchPanel port number |
| x | the X coordinate of the current pen position, 0 if nothing is detected |
| y | the Y coordinate of the current pen position, 0 if nothing is detected |
| buttons | the currently touched buttons, use isButtonXXTouched() to check the individual status. |
| addr | the I2C address of the TouchPanel, is optional, defaults to 0x04 |
Definition at line 107 of file mindsensors-touchpanel.h.
| bool MSTPsendCmd | ( | tSensors | link, |
| ubyte | cmd, | ||
| ubyte | addr | ||
| ) |
Send a command to the TouchPanel
| link | the TouchPanel port number |
| cmd | the command to be sent |
| addr | the I2C address of the TouchPanel, is optional, defaults to 0x04 |
Definition at line 132 of file mindsensors-touchpanel.h.
Array to hold I2C reply data
Definition at line 75 of file mindsensors-touchpanel.h.
Array to hold I2C command data
Definition at line 74 of file mindsensors-touchpanel.h.


upshot
calculate your grade after an assignment
made by
Kabir
and
Oleg
ASSIGNMENT
ADD CATEGORY
CALCULATE


{% extends 'base.html'%} {% load static %} {% block content %} {{block.super}}
Found {{websites.count}} websites and {{users.count}} Users
No User was found