Data science if full of pitfalls that can leave you feeling lost. Build Data Analytics skills that help you stand out in your career. And fill your job portfolio with high demand data science projects.
✅ Follow a Proven Framework
Solve data science problems with a system that works!
✅ Learn High-Performance Tools
Complete data analysis in minutes.
✅ Gain Business Project Experience Day 1
Manage projects for clients with a track record of success.
✅ Discover What Businesses Want
Identify what business owners truly want & deliver exactly what they need.
✅ Learn Programming For Business
Step by step progressive learning modules that fast track results.
✅ Use Our Cheat Sheets and Frameworks
Simplify tasks with instant access to data science cheat sheets.
✅ Collaborate With Our Community of 6,284+ Data Scientists
Open platform learning with an experienced Data Science Community.
✅ Build 8 Amazing Projects
Build a portfolio of work that shows your expertise to potential clients.


We are part of a new generation of not only video game players, but also computer science engineers who are willing to create, recreate and explore different video games from different genres, in order to improve our skills so we can make better, smarter and funnier video games.
In this page you will find out our different ideas and projects, and if you are interested in what you're reading, you can also contribute by sharing the ideas with your friends, or directly making a small donation to our cause. If you're interested in working with us, please writes us an email, to the direction down below.


Simple exponential backoff because the others seem to have weird abstractions.
$ npm install backo
min
initial timeout in milliseconds [100]max
max timeout [10000]jitter
[0]factor
[2]var Backoff = require('backo');
var backoff = new Backoff({ min: 100, max: 20000 });
setTimeout(function(){
something.reconnect();
}, backoff.duration());
// later when something works
backoff.reset()
MIT


OAuth2 with Password (and hashing), Bearer with JWT tokens
Now that we have all the security flow, let's make the application actually secure, using JWT tokens and secure password hashing.
This code is something you can actually use in your application, save the password hashes in your database, etc.
We are going to start from where we left in the previous chapter and increment it.
About JWT¶
JWT means "JSON Web Tokens".
It's a standard to codify a JSON object in a long dense string without spaces. It looks like this:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
It is not encrypted, so, anyone could recover the information from the contents.
But it's signed. So, when you receive a token that you emitted, you can verify that you actually emitted it.
That way, you can create a token with an expiration of, let's say, 1 week. And then when the user comes back the next day with the token, you know she/he is still signed into your system.
And after a week, the token will be expired and the user will not be authorized and will have to sign in again to get a new token. And if the user (or a third party) tried to modify the token to change the expiration, you would be able to discover it, because the signatures would not match.
If you want to play with JWT tokens and see how they work, check https://jwt.io.
Install PyJWT
¶
We need to install PyJWT
to generate and verify the JWT tokens in Python:
pip install pyjwt
Password hashing¶
"Hashing" means converting some content (a password in this case) into a sequence of bytes (just a string) that looks like gibberish.
Whenever you pass exactly the same content (exactly the same password) you get exactly the same gibberish.
But you cannot convert from the gibberish back to the password.
Why use password hashing¶
If your database is stolen, the thief won't have your users' plaintext passwords, only the hashes.
So, the thief won't be able to try to use that password in another system (as many users use the same password everywhere, this would be dangerous).
Install passlib
¶
PassLib is a great Python package to handle password hashes.
It supports many secure hashing algorithms and utilities to work with them.
The recommended algorithm is "Bcrypt".
So, install PassLib with Bcrypt:
pip install passlib[bcrypt]
Tip
With passlib
, you could even configure it to be able to read passwords created by Django, a Flask security plug-in or many others.
So, you would be able to, for example, share the same data from a Django application in a database with a FastAPI application. Or gradually migrate a Django application using the same database.
And your users would be able to login from your Django app or from your FastAPI app, at the same time.
Hash and verify the passwords¶
Import the tools we need from passlib
.
Create a PassLib "context". This is what will be used to hash and verify passwords.
Tip
The PassLib context also has functionality to use different hashing algorithms, including deprecate old ones only to allow verifying them, etc.
For example, you could use it to read and verify passwords generated by another system (like Django) but hash any new passwords with a different algorithm like Bcrypt.
And be compatible with all of them at the same time.
Create a utility function to hash a password coming from the user.
And another utility to verify if a received password matches the hash stored.
And another one to authenticate and return a user.
from datetime import datetime, timedelta
import jwt
from fastapi import Depends, FastAPI, HTTPException
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from jwt import PyJWTError
from passlib.context import CryptContext
from pydantic import BaseModel
from starlette.status import HTTP_401_UNAUTHORIZED
# to get a string like this run:
# openssl rand -hex 32
SECRET_KEY = "09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
fake_users_db = {
"johndoe": {
"username": "johndoe",
"full_name": "John Doe",
"email"<EMAIL_ADDRESS>"hashed_password": "$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW",
"disabled": False,
}
}
class Token(BaseModel):
access_token: str
token_type: str
class TokenData(BaseModel):
username: str = None
class User(BaseModel):
username: str
email: str = None
full_name: str = None
disabled: bool = None
class UserInDB(User):
hashed_password: str
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/token")
app = FastAPI()
def verify_password(plain_password, hashed_password):
return pwd_context.verify(plain_password, hashed_password)
def get_password_hash(password):
return pwd_context.hash(password)
def get_user(db, username: str):
if username in db:
user_dict = db[username]
return UserInDB(**user_dict)
def authenticate_user(fake_db, username: str, password: str):
user = get_user(fake_db, username)
if not user:
return False
if not verify_password(password, user.hashed_password):
return False
return user
def create_access_token(*, data: dict, expires_delta: timedelta = None):
to_encode = data.copy()
if expires_delta:
expire = datetime.utcnow() + expires_delta
else:
expire = datetime.utcnow() + timedelta(minutes=15)
to_encode.update({"exp": expire})
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt
async def get_current_user(token: str = Depends(oauth2_scheme)):
credentials_exception = HTTPException(
status_code=HTTP_401_UNAUTHORIZED,
detail="Could not validate credentials",
headers={"WWW-Authenticate": "Bearer"},
)
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
username: str = payload.get("sub")
if username is None:
raise credentials_exception
token_data = TokenData(username=username)
except PyJWTError:
raise credentials_exception
user = get_user(fake_users_db, username=token_data.username)
if user is None:
raise credentials_exception
return user
async def get_current_active_user(current_user: User = Depends(get_current_user)):
if current_user.disabled:
raise HTTPException(status_code=400, detail="Inactive user")
return current_user
@app.post("/token", response_model=Token)
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
user = authenticate_user(fake_users_db, form_data.username, form_data.password)
if not user:
raise HTTPException(
status_code=HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)
access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
access_token = create_access_token(
data={"sub": user.username}, expires_delta=access_token_expires
)
return {"access_token": access_token, "token_type": "bearer"}
@app.get("/users/me/", response_model=User)
async def read_users_me(current_user: User = Depends(get_current_active_user)):
return current_user
@app.get("/users/me/items/")
async def read_own_items(current_user: User = Depends(get_current_active_user)):
return [{"item_id": "Foo", "owner": current_user.username}]
Note
If you check the new (fake) database fake_users_db
, you will see how the hashed password looks like now: "$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW"
.
Handle JWT tokens¶
Import the modules installed.
Create a random secret key that will be used to sign the JWT tokens.
To generate a secure random secret key use the command:
openssl rand -hex 32
And copy the output to the variable SECRET_KEY
(don't use the one in the example).
Create a variable ALGORITHM
with the algorithm used to sign the JWT token and set it to "HS256"
.
Create a variable for the expiration of the token.
Define a Pydantic Model that will be used in the token endpoint for the response.
Create a utility function to generate a new access token.
from datetime import datetime, timedelta
import jwt
from fastapi import Depends, FastAPI, HTTPException
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from jwt import PyJWTError
from passlib.context import CryptContext
from pydantic import BaseModel
from starlette.status import HTTP_401_UNAUTHORIZED
# to get a string like this run:
# openssl rand -hex 32
SECRET_KEY = "09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
fake_users_db = {
"johndoe": {
"username": "johndoe",
"full_name": "John Doe",
"email"<EMAIL_ADDRESS>"hashed_password": "$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW",
"disabled": False,
}
}
class Token(BaseModel):
access_token: str
token_type: str
class TokenData(BaseModel):
username: str = None
class User(BaseModel):
username: str
email: str = None
full_name: str = None
disabled: bool = None
class UserInDB(User):
hashed_password: str
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/token")
app = FastAPI()
def verify_password(plain_password, hashed_password):
return pwd_context.verify(plain_password, hashed_password)
def get_password_hash(password):
return pwd_context.hash(password)
def get_user(db, username: str):
if username in db:
user_dict = db[username]
return UserInDB(**user_dict)
def authenticate_user(fake_db, username: str, password: str):
user = get_user(fake_db, username)
if not user:
return False
if not verify_password(password, user.hashed_password):
return False
return user
def create_access_token(*, data: dict, expires_delta: timedelta = None):
to_encode = data.copy()
if expires_delta:
expire = datetime.utcnow() + expires_delta
else:
expire = datetime.utcnow() + timedelta(minutes=15)
to_encode.update({"exp": expire})
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt
async def get_current_user(token: str = Depends(oauth2_scheme)):
credentials_exception = HTTPException(
status_code=HTTP_401_UNAUTHORIZED,
detail="Could not validate credentials",
headers={"WWW-Authenticate": "Bearer"},
)
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
username: str = payload.get("sub")
if username is None:
raise credentials_exception
token_data = TokenData(username=username)
except PyJWTError:
raise credentials_exception
user = get_user(fake_users_db, username=token_data.username)
if user is None:
raise credentials_exception
return user
async def get_current_active_user(current_user: User = Depends(get_current_user)):
if current_user.disabled:
raise HTTPException(status_code=400, detail="Inactive user")
return current_user
@app.post("/token", response_model=Token)
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
user = authenticate_user(fake_users_db, form_data.username, form_data.password)
if not user:
raise HTTPException(
status_code=HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)
access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
access_token = create_access_token(
data={"sub": user.username}, expires_delta=access_token_expires
)
return {"access_token": access_token, "token_type": "bearer"}
@app.get("/users/me/", response_model=User)
async def read_users_me(current_user: User = Depends(get_current_active_user)):
return current_user
@app.get("/users/me/items/")
async def read_own_items(current_user: User = Depends(get_current_active_user)):
return [{"item_id": "Foo", "owner": current_user.username}]
Update the dependencies¶
Update get_current_user
to receive the same token as before, but this time, using JWT tokens.
Decode the received token, verify it, and return the current user.
If the token is invalid, return an HTTP error right away.
from datetime import datetime, timedelta
import jwt
from fastapi import Depends, FastAPI, HTTPException
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from jwt import PyJWTError
from passlib.context import CryptContext
from pydantic import BaseModel
from starlette.status import HTTP_401_UNAUTHORIZED
# to get a string like this run:
# openssl rand -hex 32
SECRET_KEY = "09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
fake_users_db = {
"johndoe": {
"username": "johndoe",
"full_name": "John Doe",
"email"<EMAIL_ADDRESS>"hashed_password": "$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW",
"disabled": False,
}
}
class Token(BaseModel):
access_token: str
token_type: str
class TokenData(BaseModel):
username: str = None
class User(BaseModel):
username: str
email: str = None
full_name: str = None
disabled: bool = None
class UserInDB(User):
hashed_password: str
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/token")
app = FastAPI()
def verify_password(plain_password, hashed_password):
return pwd_context.verify(plain_password, hashed_password)
def get_password_hash(password):
return pwd_context.hash(password)
def get_user(db, username: str):
if username in db:
user_dict = db[username]
return UserInDB(**user_dict)
def authenticate_user(fake_db, username: str, password: str):
user = get_user(fake_db, username)
if not user:
return False
if not verify_password(password, user.hashed_password):
return False
return user
def create_access_token(*, data: dict, expires_delta: timedelta = None):
to_encode = data.copy()
if expires_delta:
expire = datetime.utcnow() + expires_delta
else:
expire = datetime.utcnow() + timedelta(minutes=15)
to_encode.update({"exp": expire})
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt
async def get_current_user(token: str = Depends(oauth2_scheme)):
credentials_exception = HTTPException(
status_code=HTTP_401_UNAUTHORIZED,
detail="Could not validate credentials",
headers={"WWW-Authenticate": "Bearer"},
)
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
username: str = payload.get("sub")
if username is None:
raise credentials_exception
token_data = TokenData(username=username)
except PyJWTError:
raise credentials_exception
user = get_user(fake_users_db, username=token_data.username)
if user is None:
raise credentials_exception
return user
async def get_current_active_user(current_user: User = Depends(get_current_user)):
if current_user.disabled:
raise HTTPException(status_code=400, detail="Inactive user")
return current_user
@app.post("/token", response_model=Token)
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
user = authenticate_user(fake_users_db, form_data.username, form_data.password)
if not user:
raise HTTPException(
status_code=HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)
access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
access_token = create_access_token(
data={"sub": user.username}, expires_delta=access_token_expires
)
return {"access_token": access_token, "token_type": "bearer"}
@app.get("/users/me/", response_model=User)
async def read_users_me(current_user: User = Depends(get_current_active_user)):
return current_user
@app.get("/users/me/items/")
async def read_own_items(current_user: User = Depends(get_current_active_user)):
return [{"item_id": "Foo", "owner": current_user.username}]
Update the /token
path operation¶
Create a timedelta
with the expiration time of the token.
Create a real JWT access token and return it.
from datetime import datetime, timedelta
import jwt
from fastapi import Depends, FastAPI, HTTPException
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from jwt import PyJWTError
from passlib.context import CryptContext
from pydantic import BaseModel
from starlette.status import HTTP_401_UNAUTHORIZED
# to get a string like this run:
# openssl rand -hex 32
SECRET_KEY = "09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
fake_users_db = {
"johndoe": {
"username": "johndoe",
"full_name": "John Doe",
"email"<EMAIL_ADDRESS>"hashed_password": "$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW",
"disabled": False,
}
}
class Token(BaseModel):
access_token: str
token_type: str
class TokenData(BaseModel):
username: str = None
class User(BaseModel):
username: str
email: str = None
full_name: str = None
disabled: bool = None
class UserInDB(User):
hashed_password: str
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/token")
app = FastAPI()
def verify_password(plain_password, hashed_password):
return pwd_context.verify(plain_password, hashed_password)
def get_password_hash(password):
return pwd_context.hash(password)
def get_user(db, username: str):
if username in db:
user_dict = db[username]
return UserInDB(**user_dict)
def authenticate_user(fake_db, username: str, password: str):
user = get_user(fake_db, username)
if not user:
return False
if not verify_password(password, user.hashed_password):
return False
return user
def create_access_token(*, data: dict, expires_delta: timedelta = None):
to_encode = data.copy()
if expires_delta:
expire = datetime.utcnow() + expires_delta
else:
expire = datetime.utcnow() + timedelta(minutes=15)
to_encode.update({"exp": expire})
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt
async def get_current_user(token: str = Depends(oauth2_scheme)):
credentials_exception = HTTPException(
status_code=HTTP_401_UNAUTHORIZED,
detail="Could not validate credentials",
headers={"WWW-Authenticate": "Bearer"},
)
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
username: str = payload.get("sub")
if username is None:
raise credentials_exception
token_data = TokenData(username=username)
except PyJWTError:
raise credentials_exception
user = get_user(fake_users_db, username=token_data.username)
if user is None:
raise credentials_exception
return user
async def get_current_active_user(current_user: User = Depends(get_current_user)):
if current_user.disabled:
raise HTTPException(status_code=400, detail="Inactive user")
return current_user
@app.post("/token", response_model=Token)
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
user = authenticate_user(fake_users_db, form_data.username, form_data.password)
if not user:
raise HTTPException(
status_code=HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)
access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
access_token = create_access_token(
data={"sub": user.username}, expires_delta=access_token_expires
)
return {"access_token": access_token, "token_type": "bearer"}
@app.get("/users/me/", response_model=User)
async def read_users_me(current_user: User = Depends(get_current_active_user)):
return current_user
@app.get("/users/me/items/")
async def read_own_items(current_user: User = Depends(get_current_active_user)):
return [{"item_id": "Foo", "owner": current_user.username}]
Technical details about the JWT "subject" sub
¶
The JWT specification says that there's a key sub
, with the subject of the token.
It's optional to use it, but that's where you would put the user's identification, so we are using it here.
JWT might be used for other things apart from identifying a user and allowing him to perform operations directly on your API.
For example, you could identify a "car" or a "blog post".
Then you could add permissions about that entity, like "drive" (for the car) or "edit" (for the blog).
And then, you could give that JWT token to a user (or bot), and he could use it to perform those actions (drive the car, or edit the blog post) without even needing to have an account, just with the JWT token your API generated for that.
Using these ideas, JWT can be used for way more sophisticated scenarios.
In those cases, several of those entities could have the same ID, let's say foo
(a user foo
, a car foo
, and a blog post foo
).
So, to avoid ID collisions, when creating the JWT token for the user, you could prefix the value of the sub
key, e.g. with username:
. So, in this example, the value of sub
could have been: username:johndoe
.
The important thing to have in mind is that the sub
key should have a unique identifier across the entire application, and it should be a string.
Check it¶
Run the server and go to the docs: http://<IP_ADDRESS>:8000/docs.
You'll see the user interface like:
Authorize the application the same way as before.
Using the credentials:
Username: johndoe
Password: secret
Check
Notice that nowhere in the code is the plaintext password "secret
", we only have the hashed version.
Call the endpoint /users/me/
, you will get the response as:
{
"username": "johndoe",
"email"<EMAIL_ADDRESS>"full_name": "John Doe",
"disabled": false
}
If you open the developer tools, you could see how the data sent and only includes the token, the password is only sent in the first request to authenticate the user and get that access token, but not afterwards:
Note
Notice the header Authorization
, with a value that starts with Bearer
.
Advanced usage with scopes
¶
OAuth2 has the notion of "scopes".
You can use them to add a specific set of permissions to a JWT token.
Then you can give this token to a user directly or a third party, to interact with your API with a set of restrictions.
You can learn how to use them and how they are integrated into FastAPI later in the Advanced User Guide.
Recap¶
With what you have seen up to now, you can set up a secure FastAPI application using standards like OAuth2 and JWT.
In almost any framework handling the security becomes a rather complex subject quite quickly.
Many packages that simplify it a lot have to make many compromises with the data model, database, and available features. And some of these packages that simplify things too much actually have security flaws underneath.
FastAPI doesn't make any compromise with any database, data model or tool.
It gives you all the flexibility to choose the ones that fit your project the best.
And you can use directly many well maintained and widely used packages like passlib
and pyjwt
, because FastAPI doesn't require any complex mechanisms to integrate external packages.
But it provides you the tools to simplify the process as much as possible without compromising flexibility, robustness, or security.
And you can use and implement secure, standard protocols, like OAuth2 in a relatively simple way.
You can learn more in the Advanced User Guide about how to use OAuth2 "scopes", for a more fine-grained permission system, following these same standards. OAuth2 with scopes is the mechanism used by many big authentication providers, like Facebook, Google, GitHub, Microsoft, Twitter, etc. to authorize third party applications to interact with their APIs on behalf of their users.


A storage framework for Nxus applications using waterline.
"config": {
"storage": {
"adapter": {
"default": "sails-mongo"
},
"connections": {
"default": {
"adapter": "default",
"url": "mongodb://...."
}
},
"modelsDir": "./src/models"
}
}
Inherit your models from BaseModel
import {BaseModel} from '@nxus/storage'
var User = BaseModel.extend({
identity: 'user',
attributes: {
name: 'string'
}
})
The storage model emits events for create, update, and destroy, you can register a handler for all events:
app.get('storage').on('model.create', (identity, record) => {})
app.get('storage').on('model.update', (identity, record) => {})
app.get('storage').on('model.destroy', (identity, record) => {})
Or just a specific model identity:
app.get('storage').on('model.create.user', (identity, record) => {})
app.get('storage').on('model.update.user', (identity, record) => {})
app.get('storage').on('model.destroy.user', (identity, record) => {})
load
load
, e.g.
var User = BaseModel.extend({
identity: 'user',
...
});
app.get('storage').model(User)startup
The configured database is connected during load.after
You can query models from startup
and beyond, retrieve the model by the 'identity':
app.get('storage').getModel('user').then((User) => {
User.create(...);
});
Storage provides a common interface for defining models. Uses the Waterline ORM.
#getModel(id)
Request a model based on its identity (name)
Request a model based on its identity (name)
Promise
:
The model class(es)
app.get('storage').getModel('user')
#model(model)
Provide a model
Provide a model
A Waterline-compatible model class
app.get('storage').model(...)
The HasModels class is a Base class for defining helper classes with Models.
#modelNames
Override to define the model names to access


Throwable
or a subclass, where the created Throwable
is never actually thrown.
These are simple mistakes to make which are hard to catch in tests.
Also reports method calls which return instances of Throwable
or a subclass,
where the result of the method call is not thrown.
Calls to methods annotated with Error Prone's or AssertJ's @CanIgnoreReturnValue
annotation will not be reported.
Example:
void leftBehind() throws Throwable { RuntimeException e = new RuntimeException("throw me"); // ... }


QSplashScreen Class
The QSplashScreen widget provides a splash screen that can be shown during application startup. More...
| Header: | #include <QSplashScreen> |
| qmake: | QT += widgets |
| Inherits: | QWidget |
Public Functions
| QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags()) | |
| QSplashScreen(QWidget *parent, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags()) | |
| virtual | ~QSplashScreen() |
| void | finish(QWidget *mainWin) |
| QString | message() const |
| const QPixmap | pixmap() const |
| void | repaint() |
| void | setPixmap(const QPixmap &pixmap) |
- 214 public functions inherited from QWidget
- 32 public functions inherited from QObject
- 14 public functions inherited from QPaintDevice
Public Slots
| void | clearMessage() |
| void | showMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black) |
Signals
| void | messageChanged(const QString &message) |
Protected Functions
| virtual void | drawContents(QPainter *painter) |
Reimplemented Protected Functions
| virtual bool | event(QEvent *e) |
| virtual void | mousePressEvent(QMouseEvent *) |
- 35 protected functions inherited from QWidget
- 9 protected functions inherited from QObject
- 1 protected function inherited from QPaintDevice
Additional Inherited Members
- 59 properties inherited from QWidget
- 1 property inherited from QObject
- 1 public variable inherited from QObject
- 5 static public members inherited from QWidget
- 10 static public members inherited from QObject
- 1 protected slot inherited from QWidget
- 2 protected variables inherited from QObject
- 1 protected type inherited from QPaintDevice
Detailed Description
The QSplashScreen widget provides a splash screen that can be shown during application startup.
A splash screen is a widget that is usually displayed when an application is being started. Splash screens are often used for applications that have long start up times (e.g. database or networking applications that take time to establish connections) to provide the user with feedback that the application is loading.
The splash screen appears in the center of the screen. It may be useful to add the Qt::WindowStaysOnTopHint to the splash widget's window flags if you want to keep it above all the other windows on the desktop.
Some X11 window managers do not support the "stays on top" flag. A solution is to set up a timer that periodically calls raise() on the splash screen to simulate the "stays on top" effect.
The most common usage is to show a splash screen before the main widget is displayed on the screen. This is illustrated in the following code snippet in which a splash screen is displayed and some initialization tasks are performed before the application's main window is shown:
int main(int argc, char *argv[]) { QApplication app(argc, argv); QPixmap pixmap(":/splash.png"); QSplashScreen splash(pixmap); splash.show(); app.processEvents(); ... QMainWindow window; window.show(); splash.finish(&window); return app.exec(); }
The user can hide the splash screen by clicking on it with the mouse. Since the splash screen is typically displayed before the event loop has started running, it is necessary to periodically call QApplication::processEvents() to receive the mouse clicks.
It is sometimes useful to update the splash screen with messages, for example, announcing connections established or modules loaded as the application starts up:
QPixmap pixmap(":/splash.png"); QSplashScreen *splash = new QSplashScreen(pixmap); splash->show(); ... // Loading some items splash->showMessage("Loaded modules"); qApp->processEvents(); ... // Establishing connections splash->showMessage("Established connections"); qApp->processEvents();
QSplashScreen supports this with the showMessage() function. If you wish to do your own drawing you can get a pointer to the pixmap used in the splash screen with pixmap(). Alternatively, you can subclass QSplashScreen and reimplement drawContents().
Member Function Documentation
QSplashScreen::QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
Construct a splash screen that will display the pixmap.
There should be no need to set the widget flags, f, except perhaps Qt::WindowStaysOnTopHint.
QSplashScreen::QSplashScreen(QWidget *parent, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
This is an overloaded function.
This function allows you to specify a parent for your splashscreen. The typical use for this constructor is if you have a multiple screens and prefer to have the splash screen on a different screen than your primary one. In that case pass the proper desktop() as the parent.
[virtual]
QSplashScreen::~QSplashScreen()
Destructor.
[slot]
void QSplashScreen::clearMessage()
Removes the message being displayed on the splash screen
See also showMessage().
[virtual protected]
void QSplashScreen::drawContents(QPainter *painter)
Draw the contents of the splash screen using painter painter. The default implementation draws the message passed by showMessage(). Reimplement this function if you want to do your own drawing on the splash screen.
[virtual protected]
bool QSplashScreen::event(QEvent *e)
Reimplemented from QObject::event().
void QSplashScreen::finish(QWidget *mainWin)
Makes the splash screen wait until the widget mainWin is displayed before calling close() on itself.
QString QSplashScreen::message() const
Returns the message that is currently displayed on the splash screen.
This function was introduced in Qt 5.2.
See also showMessage() and clearMessage().
[signal]
void QSplashScreen::messageChanged(const QString &message)
This signal is emitted when the message on the splash screen changes. message is the new message and is a null-string when the message has been removed.
See also showMessage() and clearMessage().
[virtual protected]
void QSplashScreen::mousePressEvent(QMouseEvent *)
Reimplemented from QWidget::mousePressEvent().
const QPixmap QSplashScreen::pixmap() const
Returns the pixmap that is used in the splash screen. The image does not have any of the text drawn by showMessage() calls.
See also setPixmap().
void QSplashScreen::repaint()
This overrides QWidget::repaint(). It differs from the standard repaint function in that it also calls QApplication::processEvents() to ensure the updates are displayed, even when there is no event loop present.
void QSplashScreen::setPixmap(const QPixmap &pixmap)
Sets the pixmap that will be used as the splash screen's image to pixmap.
See also pixmap().
[slot]
void QSplashScreen::showMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black)
Draws the message text onto the splash screen with color color and aligns the text according to the flags in alignment. This function calls repaint() to make sure the splash screen is repainted immediately. As a result the message is kept up to date with what your application is doing (e.g. loading files).
See also Qt::Alignment, clearMessage(), and message().


Park & Dinner
Seattle Parks
Seattle Parks and Recreation Parks With Features
Park name
Search
Max Distance
Select your max distance
2 mi
5 mi
10 mi
20 mi
50 mi
Park Features (Optional)
No Preference


State at the end of the week
Open
Closed
Action during the week
Opened
Closed
Bugs
Feature Requests
Tasks
Select all projects
Select no projects


This is my first blog on Github, so bear with me. In this blog post, I will discuss the benefits of version control, how git helps you keep track of changes, and why it is a good idea to use Github to store your code. Along the way, I will attempt to clarify the difference between git and Github. Let's begin. Git is a free and open source version control software system that helps teams work together efficiently. Have you ever worked on a team project and everyone needed to work on the same file? If so, you've likely come across the issue of figuring out how to do so without working sequentially (waiting for someone else to finish and passing it along to you) and not overwriting someone else's work. Luckily, these days we have solutions for this and one example is Google Docs. Think of git as Google Docs for coding projects. Git allows team members to work on the same project simultaneously without over-writing each others' work and track changes and history along the way. How does it do this? Git allows users to create repositories (directories) with local versions of the main project (usually on Github) that can be worked on independently and then re-merged back into the main project without screwing things up. Pretty great, huh? Now, what's Github? Github is a hub where programmers can store and share their repositories and work with other people. So, if git is Google Docs, then Github is Google Drive. Of course, these are gross comparisons, but it should help you get the picture. Github is a great place to store your code for a few reasons. First, it's free. Second, it's an open source hub which means you have access to source code (the code behind the program) that you can do pretty much whatever you want with (there are some variations in licenses). Having access to source code allows you to see other people's code and learn how programs work. Third, it's a powerful hub to help you manage your work, which is important for programmers. A big part of learning to code is understanding your tools. I hope this blog post has been helpful.


Solves maze data types using depth first search to traverse through vertices in a maze and recursively explore all possible paths until a path from the start to the end has been found.
Takes in a database of flowers and upon input of an unknown flower searches throgh the data to predict the species of the flower.
Program that parses twitter like data in the form of JSON and using different search algorithms searches for data. The program uses measures of centrality, Dijkstra's algorithm and Kosaraju's algorithm as means of searching for data.
Android game with the theme of a space race. Allows users to select a country and race against each other to be the first to build a rocket.
View ProjectA side scrolling platformer game developed that allows the user to select from multiple characters then you have to traverse through levels to win the game.


Velux
This driver provides communication with Velux systems through Ethernet interfaces.
Connection to a Velux system
Communication with a Velux system is achieved via the Velux gateway, which provides an Ethernet interface.
Connection settings for Ethernet consist of: IP address of the Velux gateway (default: <IP_ADDRESS>), and port number (default: 51200).
Defining resources
The only supported resource type is the “Velux Scene Button” which
allows selection of a scene defined in the Velux gateway through its
PRESS
command.
The address of a “Velux Scene Button” is the scene identification
number of the scene that will be activated on PRESS
.
Requesting scenes from Velux gateway
All the scenes defined in the Velux gateway can be added automatically
as BeoLiving Intelligence resources by selecting Import resources
in the
resources page, an then Load resources from connected system
.
Resources added automatically from the Velux gateway will be named using the scene label already defined.


A new approach to cross platform mobile
Why write the same app from scratch for every mobile platform?
Want a way to turn an Android Java codebase into a cross platform codebase, running on Windows and iOS too?
JUniversal makes Java truly cross platform. There are several technologies out there supporting cross platform mobile apps, each with their pros and cons. JUniversal is targetted to Java developers, like those already developing for Android in Java. It uses source code translation. Among the cross platform technologies out there, JUniversal is arguably among the most native-like, as it produces (through translation) code in the native programming language, built/debugged/packaged with native tools. In some ways it's like porting an Android Java app to other platforms but having a computer do the porting rather than a human being.
It's still got lots of rough edges, but the C# translation and JSimple library should work well enough to try out. Check it out. Share what you think.
Here's how it works
1. You pick the code that you want to share cross platform. It can be a little bit of code (maybe some hairy algorithm) or a lot (everything in your app except the UI). Develop that in Java, with your favorite Java IDE. Ideally, create some JUnit tests for it too. To keep things tidy, separate out shared code to separate modules/JARs.
2. At build time invoke JUniversal to do source code translation, converting Java to C# (for Windows/Windows Phone) or, coming soon, C++/Objective C++ (for iOS or performance critical code on Android NDK/Windows). JUniversal can also invoke Google's j2objc converter, to produce Objective-C.
Translated code is very human friendly, preserving comments and forwarding. It's intended to look almost like a human being wrote in manually. That's handy when debugging and has some other advantages.
3. For non-shared parts of your code, write those in the native platform language (C#, Objective-C, etc.). JUniversal doesn't provide any support for UI today--the intention is that you write it natively. That gives the best UX anyway. Source translation makes it easy to mix and match translated code with hand written code and call one from the other--the
4. Develop for each platform using native tools--XCode for iOS, Visual Studio for Windows, etc. Build, debug, package, profile, and publish using native tools. Because soure is translated to the native programming language, it is essentially like a native app in pretty much every.Authors and Contributors
You can @mention a GitHub username to generate a link to their profile. The resulting <a>
element will link to the contributor's GitHub Profile. For example: In 2007, Chris Wanstrath (@defunkt), PJ Hyett (@pjhyett), and Tom Preston-Werner (@mojombo) founded GitHub.
Support or Contact
Having trouble with Pages? Check out the documentation at https://help.github.com/pages or contact<EMAIL_ADDRESS>and we’ll help you sort it out.


What do we look after at The National Archives? Find out about some of the special ‘treasures’ that we keep, including documents that are more than 1,000 years old!
We have released files from the Prime Minister’s Office and Cabinet Office predominantly covering...
Volunteers are helping us improve catalogue descriptions for Colonial Office records on the Middle...
SPECIAL EVENT Discover the fascinating life of Queen Charlotte (1744-1818), wife of George III, in...
We will be carrying out essential maintenance work from 08:00 to 12:00 on Sunday...
When a map was first opened by the conservation team at The National Archives,...
How a two-day workshop with the University of Glasgow tried to tackle questions around...
Learn about our work as an Independent Research Organisation.
Get help to develop your collections and archives services.
View award-winning resources for students and teachers.
Access best practice in records management and transfer, and information re-use.


iconfont
account-book
align-center
align-left
align-right
android
apartment
api
appstore
area-chart
arrow-down
arrow-left
arrow-right
arrow-up
arrows-alt
audio
audit
backward
bank
bar-chart
barcode
bars
bed-list
behance
bell
bg-colors
block
bold
book
border-bottom
border-horizontal
border-inner
border-left
border-outer
border-right
border-top
border-verticle
border
box-plot
branches
build
bulb
calculator
calendar
camera
car
caret-down
caret-left
caret-right
caret-up
carry-out
check-circle-o
check-circle
check-square
check
chrome
ci
clock-circle
close-circle
close-square
close
cloud-download
cloud-server
cloud-sync
cloud-upload
cloud
cluster
code-sandbox
code
codepen
coffee
colum-height
column-width
compass
contacts
container
control
copy
copyright
credit-card
cross-circle-o
cross-circle
crown
customer-service
dash
dashboard
database
delete
deployment-unit
desktop
diff
dingding
disconnect
dislike
dollar
dot-chart
double-left
double-right
down-circle
down-square
down
download
drag
dropbox
earlysense
edit
electron-alarm
electron-buyaoweizhi
electron-buyaoxinxi
electron-calendar
electron-caret-down
electron-caret-left
electron-caret-right-large
electron-caret-right
electron-caret-top
electron-chart-pie-all
electron-chart-pie
electron-check-circle
electron-check
electron-chouti
electron-circle-with-cross
electron-close-circle
electron-close
electron-delete
electron-down
electron-drop
electron-drug
electron-exclamation-circle-o
electron-exclamation-triangle
electron-exclamation
electron-freezer
electron-info-circle-o
electron-jiaojieduixiang
electron-jiaojieshijian
electron-left
electron-linshiyizhu
electron-loading
electron-lock
electron-lock2
electron-minus
electron-neutral
electron-nurse
electron-password
electron-pipeidaixiao
electron-plus
electron-question-circle
electron-rect
electron-right
electron-search
electron-shengyudaixiao
electron-shezhiguige
electron-spinner
electron-temperature
electron-thunder
electron-unlock
electron-up
electron-user
electron-xuanzhongyaohe
electron-xuanzhonyaohe
electron-yaohe
electron-yixuanyaopin
ellipsis
enter
environment
euro
exception
exclamation-circle-o
exclamation-circle
exclamation
experiment
export
eye
fall
fast-backward
fast-forward
file-add
file-done
file-excel
file-exclamation
file-image
file-jpg
file-markdown
file-pdf
file-ppt
file-protect
file-search
file-sync
file-text
file-unknown
file-word
file-zip
file
filter
fire
flag
folder-add
folder-open
folder
font-colors
font-size
fork
form
forward
frown
fullscreen-exit
fullscreen
fund
funnel-plot
gary
gateway
gift
github
gitlab
global
gold
google-plus
google
handover
hdd
heart
heat-map
highlight
home
hospital-note
hourglass
html5
idcard
ie
import
inbox
info-circle-o
info-circle
info
infusion
insurance
interation
issues-close
italic
key
lachesis-logo
laptop
layout
left-circle
left-square
left
like
line-chart
line-height
line
link
linkedin
loading-3-quarters
loading
lock
login
logout
mail
man
medicinebox
medium-workmark
medium
meh
menu-fold
menu-unfold
menu
message
minus-circle
minus-square
minus
mobile
money-collect
monitor
mr
notification
number
nursing-plan
ordered-list
paper-clip
pause-circle
pause
pay-circle
percentage
phone
pic-center
pic-left
pic-right
picture
pie-chart
play-circle
play-square
plus-circle
plus-square
plus
pound
poweroff
printer
profile
project
property-safety
pushpin
qq
qrcode
question-circle-o
question-circle
question
radar-chart
radius-bottomleft
radius-bottomright
radius-setting
radius-upleft
radius-upright
read
reconciliation
red-envelope
reddit
redo
reload-time
reload
rest
retweet
right-circle
right-square
right
rise
robot
rocket
rollback
safety-certificate
safety
save
scan
schedule
scissor
search
security-scan
select
setting
sever
shake
share-alt
shop
shopping-cart
shopping
shrink
sketch
skin
skype
slack
sliders
small-dash
smile
snippets
solution
sort-ascending
sort-descending
sound
star
stock
stop
strikethrough
surgery-monitor
swap-left
swap-right
swap
switcher
sync
table
tablet
tag
tags
taobao
team
test
thunderbolt
to-top
tool
trademark
transaction
trophy
twitter
underline
undo
unlock
unordered-list
up-circle
up-square
up
upload
usb
user-add
user-delete
user
usergroup-add
usergroup-delete
vertical-align-botto
vertical-align-middl
vertical-align-top
vertical-left
verticle-right
video-camera
vital-sign
wallet
ward-door
warning
wifi
windows
woman
youtube
yuque
zhihu
zoom-in
zoom-out


Avoid nesting selectors too deeply.
Bad: deeply nested
.one {
.two {
.three {
.four {
...
}
}
}
}
Good
.three:hover {
}
.three {
&:hover {
...
}
}
Overly nested rules will result in over-qualified CSS that could prove hard to maintain, output unnecessary selectors and is generally considered bad practice.
This linter will not report an error if you have selectors with a large depth of applicability. Use SelectorDepth for this purpose.
No error
.one .two .three {
...
}
Error
.one {
.two {
.three {
...
}
}
}
| Configuration Option | Description |
|---|---|
max_depth |
Maximum depth before reporting errors (default 3) |
ignore_parent_selectors |
Whether to report errors for parent selectors (default false) |


CHOOSE A CAR
FIND A DEALERSHIP
SEARCH FOR FINANCING
SELECT YOUR LENDER
Please read the following before submitting your credit inquiry.


The native mechanism for the system is the service bundle. However, one can convert and import service configuration from various external formats.
A suite of redo
scripts in /etc/system-control/convert/
are supplied for tying these altogether.
Simply executing redo all
in that directory will attempt to import from various external configuration formats into service bundles.
Because this mechanism detects changes to source files, it means that it only performs conversion actions when source configuration files have changed.
The redo
procedure is best invoked as a post-processing step after running some system utility that has changed an imported system configuration file.
Consider it a step akin to running pwd_mkdb
after editing the master.passwd
file; running newaliases
after editing the Sendmail aliases
file; or cap_mkdb
after editing termcap entries.
It is wasteful to run it at bootstrap.


---
layout: index_layout
max_num_of_posts_here: 3
title: SOLIDICE Products
canonical_url: http://solidice-products.com
---
SOLIDICE products are perfect for keeping your favorite drinks cool without watering them down. They preserve the flavor and temperature of precious drinks with style.
WINE AERATOR WITH CHILL ROD


ABOUT
CONTACT
ARTWORK
PREQUEL TRILOGY
Episode I: The Phantom Menace
Episode II: Attack of the Clones
Episode III: Revenge of the Sith
ORIGINAL TRILOGY
Episode IV: A New Hope
Episode V: The Empire Strikes Back
Episode VI: Return of the Jedi
GEORGE LUCAS
CONTACT ME
Contact info
Full Name:
Email address:
What are your Favorite Films?
Episode IV: A New Hope (1977)
Episode V: The Empire Strikes Back (1980)
Episode VI: The Return of the Jedi (1983)
Episode I: The Phantom Menace (1999)
Episode II: Attack of the Clones (2002)
Episode III: Revenge of the Sith (2005)
Light Side or Dark Side?
Light Side
Dark Side
Have Questions/Comments?
Message:
May the Force be With You
E-mail me directly:
<EMAIL_ADDRESS>"No. Try not. Do... or do not. There is no try."


Baby Carry Cases
Beagle Dog with Rocking Horse Baby Carry Case
Deer with Slide Baby Carry Case (Calico Critters)
Lamb with Train Baby Carry Case (Calico Critters)
Marlowe Tuxedo Cat Baby Carry Case
Meadows Mouse with Boat Baby Carry Case
Rabbit with Rocking Horse Baby Carry Case (Calico Critters)
Silk Cat with Boat Baby Carry Case (Calico Critters)
Home


John Earnest Miller
(1918 - 2012)
Johnny
This
sketch was written by his daughter-in-law, Suzanne (Purdue) Miller, and read at
his funeral. John was a truly amazing,
giving man -- such a blessing to our family. -- bk
John
Earnest Miller
John Earnest Miller was born on May 23,
1918, in his parent s home. John, his older sister, Mary, his parents, Emma and
Percy, all lived on East Sparta Ave. in Howenstine. Percy worked within walking
distance of home at the tile/brick plant as a engineer and machinist. John s
father, Percy, died in December of 1918 during the great flu epidemic leaving
Emma to rear Mary, almost 4, and John, six months. She provided for them by doing laundry, mending, and taking in
boarders. She married one of her boarders, Frank Miller, and they had John s
younger brother, Robert.
When John was seven, he lost his right
eye while trying to fix a barbed wire fence. He was twisting the taut wire on a
stick, when the stick broke sending the wire flying. John never let his limited
vision slow him down. In fact this may have given him some of the tenacity he
exhibited his whole life.
John attended Howenstine School, a one
room school house, for eight years. In 1935, the school was moved and turned in
to a church. John helped with the move and transformation. While attending
elementary school, John helped his mother with chores at home. This included
helping with Emma s beloved flower and vegetable garden. John told us at this
time of his life, he just didn t like gardening. What a wonderful gardener he
turned out to be. Last summer, John still tended his beloved strawberry patch
putting out runners for this spring s crop of berries. Just last week, he talked about the spring
flowers, strawberries, and tomatoes.
John attended Canton Township High School
for four years. While in school, John was a great student receiving high marks.
He always loved math, especially algebra, but said that he could see no point
learning the names of bugs in biology. He played baseball and was the student
manager for both the football and softball teams. John graduated in 1936 with
honors.
After high school, John got a job at the
A and P store working in Canton and then the Tile Co. in East Sparta. He
continued to play ball. Then in 1940, he began working for the Hercules Engine
Company in Canton. John always did piece work because a fast worker could make
more money. With John s work ethic, he certainly did make more money. John
worked for Hercules for forty-two years and always doing piece work. He used to
say that some younger coworkers would comment that they just couldn t keep up
with him. We all know that when John was motivated, it got done!
In the late spring of 1941, John met
Elsie Clauser. He would often eat at the QP Diner across the street from the
Hercules plant. That s where he spotted the new waitress, a brown-haired
beauty, who had just graduated from Minerva High School. John and Elsie dated for about six months.
John s mother, Emma, told John, The only reason Elsie is dating you is because
you have a car. That wasn t the truth. Elsie and John truly loved each other
celebrating seventy years of marriage on November 20, 2011.
Then in 1942 John joined the Army. He was
first stationed for a year in England. His vision keep him from combat duty.
John became a sergeant working as both a purchasing agent for the mess hall and
being in charge of the barracks. In 1943 he returned to Ohio for duty at Crile
Hospital rejoining his wife and young son, also named John. John and Elsie
spent the remaining years of the war living and working in Cleveland.
In 1945 John, Elsie, and little Johnny
returned to Canton. They moved into a small house on old route 8 right next
door to John s mother, Emma. Their second son, Bobby, was born that year. John
returned to work at Hercules Engine Company. He was able to resume playing ball
with Stark Ceramics. John was the pitcher specializing in the curve ball. He
led his team to the state championship one year.
In 1949 John and Elsie moved into their
new house on Cleveland Ave. South.  John lived the rest of his life in this house. In 1949
Elsie and John had their daughter, Bonnie, to be a blessing and round out their
family.
After returning from the Army, John
continued to be involved with Canton South sports. By 1946, he was a charter
member of the Canton South Booster Club. Coach Red Ash wrote this about John, Not
only have you given generously of your time and efforts for the little leaguers
in our area, but your loyalty to Canton South athletics is unsurpassed. From
the time you raised money on your own to buy the first camera for the athletic
program in 1946 until the present time, no one in the community has done more
than you have for our Booster Club.
John attended football, basketball, baseball, and softball games
at South through 2011. Just this season, John gave up his top row season ticket
seat at the basketball games for a lower seat. Just this last Saturday, while in
the hospital, John asked if South won their Friday night basketball game.
In 1955 John recognized the need for a
little league field in Howenstine. Up to this time, the boys had to play in
North Industry. A local field would give more boys a chance to play. John built
with the help of a neighbor, Lee Rodriguez, and Homer Jackson the field on
Cleveland Ave. South. It truly was John s field of dreams that countless boys
have enjoyed.  After Bob was too old for little league, John began years as a coach.
Even though John did not play
official games on the field, he did get to see Bob enjoy the field playing
softball for Howenstine Christian Church.
The ball field has been such a big part
of John s life for so many years. It truly was his baby. He cared for it and
kept it immaculate. There were no stones or weeds on his infield. This past
fall, John could be seen on the field with his pocket knife picking out small
blades of grass. Whenever John disappeared, Elsie usually found him at his
beloved ball field. John spent so much time there that Elsie even had a special
name for the field!
John has been nominated for many awards
in his lifetime. Two of his favorites were being inducted to both the Old
Timers Fast Pitch Softball Hall of Fame and the Greater Stark County Amateur
Baseball Hall of Fame.
As the retirement years passed John kept
busy helping others. He delivered meals on wheels, worked on school levies,
took care of the church, shoveled snow for many neighbors, grew and shared
many, many quarts of strawberries, corn, tomatoes, and other vegetables, and
doing countless other acts of kindness.
John was a man of integrity, intelligent, selfless, and hard
working---blessing all those who knew him. We are lucky to be able to call
him-- husband, father, grandfather, great-grandfather, friend, coach, and a man of God. We need not doubt that he is now with is Savior keeping those
ball fields in Paradise in shape.
Last modified
July 31, 2015 by BK.
Provided by Betty Latta Kitchen
Click here for the Short-Cut Table of Contents


Mp3LameEncoder.js
demo
Audio recording to MPEG-1 Audio Layer III (.mp3) test with Web Audio API
Audio input
Test tone
Microphone
Encoding process
Encode with worker after recording (safer)
Encode with worker on recording background (intermediate)
Encode on recoring directly without worker (risky)
Recording buffer size
Warning:
setting size below browser default may fail recording.
MP3 bit rate
160kbps
RECORDING
00:00
RECORD
CANCEL
Recordings


99
The LORD Our God Is Holy
1 The LORD reigns; let the peoples tremble!
He sits enthroned upon the cherubim; let the earth quake!
2 The LORD is great in Zion;
he is exalted over all the peoples.
3 Let them praise your great and awesome name!
Holy is he!
4 The King in his might loves justice.
You have established equity;
you have executed justice
and righteousness in Jacob.
5 Exalt the LORD our God;
worship at his footstool!
Holy is he!
6 Moses and Aaron were among his priests,
Samuel also was among those who called upon his name.
They called to the LORD, and he answered them.
7 In the pillar of the cloud he spoke to them;
they kept his testimonies
and the statute that he gave them.
8 O LORD our God, you answered them;
you were a forgiving God to them,
but an avenger of their wrongdoings.
9 Exalt the LORD our God,
and worship at his holy mountain;
for the LORD our God is holy!


Nirmala Sitharaman's booster dose for real estate sector: Key takeaways
The decision came a day after the FM had hinted that the government was planning more reform measures for the real estate sector.
Finance Minister Nirmala Sitharaman on November 6 announced another set of measures to boost the beleaguered real estate sector and infuse confidence among hassled homebuyers.
"The move will help relieve financial stress faced by a large number of homebuyers. This will also release a large number of funds stuck in these projects for productive use in the economy," Sitharaman said at a press meet.
Here are the key points from the press meet:
- SBI Cap will prioritise projects as per viability,
- Net worth key factor for disbursement
- SBI Cap will manage real estate AIF through an escrow account
- Projects can be NPAs/incomplete to be eligible, but not marked for liquidation by NCLT
- Projects must be net worth positive to avail funds, percentage of completion not a criteria
- RBI to soon issue clarificatory note on realty fundSpecial Thursday Expiry on 10th 7th Nov
Early Closure to The Great Diwali Discount. Last Chance to get Moneycontrol PRO for a year @ Rs. 289/- only
Coupon code: DIWALI


The 0.2.0 release introduced some changes in the inputEx API. Follow this guide to upgrade your application :
Javascript/JSON definitions:
Example:
{ type: 'string', label: 'A label', description: 'Here a long description', inputParams: { name: 'title', tooltipIcon: true } }
should become :
{ type: 'string', inputParams: { name: 'title', label: 'A label', description: 'Here a long description', showMsg: true } }
CSS:
The inputEx 0.2.0 release will probably break most of your inputEx 0.1.0 css customization.
We switched from TABLE elements to DIVs only. It is a bit trickier to align elements, but the fields become much more flexible.
Take a look at the current inputEx markup structure.


src/stats/CentroidsWithTorusCorrection.js
import Stat from "./Stat.js"
import PixelsByCell from "./PixelsByCell.js"
/** This Stat computes the centroid of a cell when grid has a torus.
!!! Assumption: cell pixels never extend for more than half the size of the grid.
If this assumption does not hold, centroids may be computed wrongly.
See also {@link Centroids} for a version without torus correction.
@example
* let CPM = require( "path/to/build" )
*
* // Make a CPM, seed two cells, run a little, and get their centroids
* let C = new CPM.CPM( [100,100], {
* T:20,
* torus:[true,true],
* J:[[0,20],[20,10]],
* V:[0,200],
* LAMBDA_V:[0,2]
* } )
* let gm = new CPM.GridManipulator( C )
* gm.seedCell(1)
* gm.seedCell(1)
* for( let t = 0; t < 100; t++ ){ C.timeStep() }
*
* C.getStat( CPM.CentroidsWithTorusCorrection )
*/
class CentroidsWithTorusCorrection extends Stat {
/** The set model method of class CentroidsWithTorusCorrection.
@param {GridBasedModel} M - the model to compute centroids on. */
set model( M ){
/** The model to compute centroids on.
@type {GridBasedModel}*/
this.M = M
// Half the grid dimensions; if pixels with the same cellid are further apart,
// we assume they are on the border of the grid and that we need to correct
// their positions to compute the centroid.
/** @ignore */
this.halfsize = new Array( this.M.ndim).fill(0)
for( let i = 0 ; i < this.M.ndim ; i ++ ){
this.halfsize[i] = this.M.extents[i]/2
}
}
/** @ignore */
constructor( conf ){
super(conf)
}
/** This method computes the centroid of a specific cell with id = <cellid>.
The cellpixels object is given as an argument so that it only has to be requested
once for all cells together.
@param {CellId} cellid ID number of the cell to get centroid of.
@param {CellArrayObject} cellpixels object produced by {@link PixelsByCell},
where keys are the cellids
of all non-background cells on the grid, and the corresponding value is an array
of the pixels belonging to that cell specified by their {@link ArrayCoordinate}.
@return {ArrayCoordinate} the centroid of the current cell.
*/
computeCentroidOfCell( cellid, cellpixels ){
//let cellpixels = this.M.getStat( PixelsByCell )
const pixels = cellpixels[ cellid ]
// cvec will contain the x, y, (z) coordinate of the centroid.
// Loop over the dimensions to compute each element separately.
let cvec = new Array(this.M.ndim).fill(0)
for( let dim = 0 ; dim < this.M.ndim ; dim ++ ){
let mi = 0.
const hsi = this.halfsize[dim], si = this.M.extents[dim]
// Loop over the pixels;
// compute mean position per dimension with online algorithm
for( let j = 0 ; j < pixels.length ; j ++ ){
// Check distance of current pixel to the accumulated mean in this dim.
// Check if this distance is greater than half the grid size in this
// dimension; if so, this indicates that the cell has moved to the
// other end of the grid because of the torus. Note that this only
// holds AFTER the first pixel (so for j > 0), when we actually have
// an idea of where the cell is.
let dx = pixels[j][dim] - mi
if( this.M.grid.torus[dim] && j > 0 ){
// If distance is greater than half the grid size, correct the
// coordinate.
if( dx > hsi ){
dx -= si
} else if( dx < -hsi ){
dx += si
}
}
// Update the mean with the appropriate weight.
mi += dx/(j+1)
}
// Correct the final position so that it falls in the current grid.
// (Because of the torus, it can happen to get a centroid at eg x = -1. )
if( mi < 0 ){
mi += si
} else if( mi > si ){
mi -= si
}
// Set the mean position in the cvec vector.
cvec[dim] = mi
}
return cvec
}
/** This method computes the centroids of all cells on the grid.
@return {CellObject} with an {@link ArrayCoordinate} of the centroid for each cell
on the grid (see {@link computeCentroidOfCell}). */
compute(){
// Get object with arrays of pixels for each cell on the grid, and get
// the array for the current cell.
let cellpixels = this.M.getStat( PixelsByCell )
// Create an object for the centroids. Add the centroid array for each cell.
let centroids = {}
for( let cid of this.M.cellIDs() ){
centroids[cid] = this.computeCentroidOfCell( cid, cellpixels )
}
return centroids
}
}
export default CentroidsWithTorusCorrection


If Javascript is available, the progressbar HTML should look like this:

A tabindex is added so Javascript can programmatically focus on the otherwise unfocusable div (for VoiceOver). aria-valuemin and -valuemax are the edges of our range, while aria-valuenow (a number) and aria-valuetext (a string) represent where the progressbar currently is. The aria-label names the progressbar div (question, is this working only because we're making it focusable?).


Preparation time
30 mins to 1 hour
Cooking time
1 to 2 hours
Serves
Serves 4
Preheat the oven to 180C/350F/Gas 4.
Using a sharp knife take the very top of the garlic bulb off (this will make it easier to get the roasted cloves out).
Skewer the baking potatoes and place in the oven with the garlic.
Cut the chicken breasts in half horizontally, then using a meat tenderizer bash each piece so it is nice and thin.
Season the flour generously and stir in the sage. Place on a shallow plate.
Put the breadcrumbs onto a separate shallow plate. Beat the egg and pour into a shallow bowl. Line the three plates/bowls up in a row.
Lightly dust the chicken in the flour, then dip in the egg and finally coat with the breadcrumbs. Keep refrigerated until ready to use.
After one hour remove the garlic bulb and allow to cool enough to handle. Then squeeze out the soft cloves.
Leave the potatoes in a further 30 minutes until cooked through.
When the potatoes are cooked cut in half and scoop out the flesh (reserve the skins). Melt the 50g/2oz butter and 4tbsp cream in a large heavy based pan.
Next pass both the potatoes and the garlic through a sieve into the pan with the butter and cream. Season with salt and white pepper. Mix well and keep warm.
Heat a small heavy based pan, add the sherry and reduce by half. Whisk the mustard and 150ml/5fl oz cream into the reduced sherry and reduce until thickened. Just before serving stir in the chives.
Meanwhile melt the 25g/1oz butter with the olive oil in a large frying pan. Add the chicken schnitzels and cook for about 2-3 minutes on each side until golden and cooked through.
To serve, pile the mash onto one third of the plate with a little spinach to the side, lay the schnitzel on a remaining third and finish with a little sauce.


I'm an aspiring web developer with over 8 years of Ops leadership experience in startups like Uber, FoodByUs, and :Different. I'm currently taking the Coding Bootcamp at The University of Sydney. See my work below.
Our second group project. This is a full-stack dating site for seniors with match and chat functionality.
Tech: Javascript, Bulma, Node.js, Handlebars, Sequelize, Multer, Socket.io
Full-stack tech blog with user authentication, post, and comment functionality.
Tech: Javascript, Bootstrap, Node.js, Sequelize, Handlebars
Our first group project. This shows COVID stats globally and by country.
Tech: HTML, CSS, Javascript, API, Bulma
Allows you to show current weather + next 5 days for a given city.
Tech: HTML, Bootstrap, Javascript, API
A day planner which stores results in local storage.
Tech: HTML, CSS, Javascript, JQuery, Moment
A simple 5-point timed coding quiz which tests you on Javascript.
Tech: HTML, CSS, Javascript


rreusser.github.io
Sketches
Writing
github.com/rreusser
@rickyreusser
ObservableHQ Test
Ricky Reusser
March 4, 2020


Alien Breed Obliteration in Python for Wii
These pages describe my journey from idea to release of a Wii Homebrew game. The game in question is a remake of the classic Amiga Alien Breed games. This version is a clone of a PC retro remake Alien Breed Obliteration.
The game is now released and all source and binaries are available on the wiiab Sourceforge project page.
Read more:
- Wii Alien Breed clone - an introduction
- Finding the Alien Breed clone media files
- Python and SDL on the Wii
- From Pygame to Mygame
- Anatomy of the Alien Breed game
- Reading the media with xavreader
- Abinst - An Alien Breed installer
- Released!
- Upwardly Mobile - Alien Breed on Android
- Wii Alien Breed on other platforms


--- layout: post title: 'ArchLinux4.0: Setting MTU with netctl' date: 2014-05-24 22:45:36.000000000 +02:00 type: post parent_id: '0' published: true password: '' status: publish tags: - Linux meta: _edit_last: '49460244' publicize_facebook_url: https://facebook.com/10202670917509055 geo_public: '0' _wpas_done_3508581: '1' _publicize_done_external: a:1:{s:8:"facebook";a:1:{i:1081800551;b:1;}} author: login: mpho112 email<EMAIL_ADDRESS>display_name: Mpho first_name: '' last_name: '' ---
First things first: Ive been encountering some serious internet problems,with either my gateway or the way the network was set.
I always felt a huge drop in throughput.
After some searching I found out, that netctl can handle custom mtu configurations as well. The 'ExecUpPost' entry in a connection profile handles this. Here's the simple ethernet-static profile that I'm using for my work network :
nerd@trojan:/$ sudo nano /etc/netctl/my_lan
Description='Science Block private ethernet connection'
Connection=ethernet
Interface=enp5s0
IP=static
Address='x.x.x.x'
Gateway='x.x.x.x'
DNS='x.x.x.x'
ExecUpPost='/usr/sbin/ip link set enp5s0 mtu 258'
#And then restart for settings to take effect
nerd@trojan:/$ sudo netctl my_lan restart
PS: before setting the MTU size, initially test and determine the optimum size
optimal MTU value has nothing to do with modem or connected computer. It depends on your ISP
You can check optimal MTU value pretty easy by pinging any website with different MTU value starting from lower going up to first ping error:
start with lets say value 1460 and go up:
In my case 230 has got no error:
nerd@trojan:/$ ping -c 5 -M do -s 230 mmphego.wordpress.com
PING lb.wordpress.com (<IP_ADDRESS>) 230(258) bytes of data.
238 bytes from wordpress.com (<IP_ADDRESS>): icmp_seq=1 ttl=44 time=1681 ms
238 bytes from wordpress.com (<IP_ADDRESS>): icmp_seq=2 ttl=44 time=1961 ms
238 bytes from wordpress.com (<IP_ADDRESS>): icmp_seq=3 ttl=44 time=2235 ms
238 bytes from wordpress.com (<IP_ADDRESS>): icmp_seq=4 ttl=44 time=1879 ms
238 bytes from wordpress.com (<IP_ADDRESS>): icmp_seq=5 ttl=44 time=1793 ms
--- lb.wordpress.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 7537ms
rtt min/avg/max/mdev = 1681.069/1910.091/2235.116/187.261 ms, pipe 3
and remember: pack_size +byte_size = mtu or something along those lines
in my case: 230+28=258(mtu)
------
I'm sharing it here, in case
a) anyone else encounters the same problem and
b) I forget again, how to set it


The EASIER Architecture
The EASIER architecture is illustrated in the following figure.
The figure is vertically divided in two swimlanes. The evolutionary context is on the left, while on the right there is the Architecture Description Language (aka ADL) context.
Evolutionary context
The bottom left side of figure illustrates the EASIER core, that is a multi-objective evolutionary algorithm based on the NSGA-II Deb 2002.
In particular, we adopted JMetal as a reference library, which is a well established object–oriented Java-based framework for multi-objective optimization with metaheuristics.
Data layer
An EASIER Solution represents a a sequence of a number $len$ of architectural RefactoringActions. Both Refactorings and RefactoringActions have PreConditions and PostConditions, which are first-order logical formulae evaluated during the evolutionary process to determine their feasibility.
The adopted mechanism for calculating and verifying Refactorings and RefactoringActions pre(post)conditions is an implementation of the one in Cinneide 2000.
A Solution also contains a reference to the corresponding alternative architecture. Each Solution has three attributes that together represent the objectives of our fitness function, namely $ArchDist$, $PerfQ$ and $#PAs$.
Process
Conformingly to the typical NSGA-II flow, the first iteration of the algorithm consists of a generation phase, aimed at randomly creating an initial population of candidate solutions (i.e. refactorings by $len$ length) with a $pop$ cardinality.
After the generation of the initial population, solutions are evaluated with respect to the fitness function three objectives. In particular,
-
PerfQ (to maximize). It represents a performance quality indicator aimed at quantifying the relative performance improvement induced by a refactoring with respect to an initial architecture.
-
ArchDist (to minimize). It quantifies the distance of an architectural alternative A from the initial one, in terms of intensity of refactoring changes. The distance of A is defined as the sum of the distance induced by each RefactoringAction ai in the corresponding genome.
-
#PAs (to minimize). It counts the number of performance antipatterns (PAs) occurrences within an alternative architecture. In its current version, EASIER exploits the OCL engine for antipatterns detection rules specification and verification.
EASIER is the first approach that considers the number of PAs as an objective of an evolutionary algorithm’s fitness function.
After the evaluation, non-dominated solutions are ranked according to the notion of crowding distance, and the best ones are selected and used as reproductive basis for the next iterations.
Finally, each generated architectural alternative undergoes a Performance Analysis process in order to obtain performance indices of interest for the corresponding architectural model.
A specific portfolio of Refactoring Actions for AEmilia ADL
-
CloneAEI is in charge of cloning a srcAEI AEmilia component, given as input, which is randomly selected from the \AEmilia architectural specification. From an architectural point of view, the straightforward semantics for CloneAEI is the deployment of a replica of the original component.
-
ChangeRate modifies a randomly selected rate of an AEmilia action by multiplying its value by an uniformly distributed FactorOfChange (FOC). ChangeRate intends to represent the option of both enhancing and worsening the performance of a certain action.
Related Publications
If you are using EASIER or you have though EASIER is related to your research, please consider to cite it as follows:
@inproceedings{DBLP:conf/icsa/ArcelliCDP18,
author = {Davide Arcelli and Vittorio Cortellessa and Mattia D'Emidio and Daniele Di Pompeo},
title = {EASIER: An Evolutionary Approach for Multi-objective Software ArchItecturE Refactoring},
booktitle = {IEEE International Conference on Software Architecture, {ICSA} 2018, Seattle, WA, USA, April 30 - May 4, 2018},
pages = {105--114},
publisher = {IEEE Computer Society},
year = {2018},
url = {https://doi.org/10.1109/ICSA.2018.00020},
doi = {10.1109/ICSA.2018.00020},
timestamp = {Wed, 16 Oct 2019 14:14:50 +0200},
biburl = {https://dblp.org/rec/conf/icsa/ArcelliCDP18.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
download the bib from dblp, pdf, or the preprint version
@inproceedings{DBLP:conf/kbse/ArcelliCP18,
author = {Davide Arcelli and
Vittorio Cortellessa and
Daniele Di Pompeo},
editor = {Ali Ouni and Marouane Kessentini and Mel {\'{O}} Cinn{\'{e}}ide},
title = {A metamodel for the specification and verification of model refactoring actions},
booktitle = {Proceedings of the 2nd International Workshop on Refactoring, IWoR@ASE 2018, Montpellier, France, September 4, 2018},
pages = {14--21},
publisher = {IWoR@ACM},
year = {2018},
url = {https://doi.org/10.1145/3242163.3242167},
doi = {10.1145/3242163.3242167},
timestamp = {Wed, 21 Nov 2018 12:44:20 +0100},
biburl = {https://dblp.org/rec/conf/kbse/ArcelliCP18.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}


Organize articles
To be able to find more easily your articles, several methods are available.
Tags
Assign a tag
When saving an article
To tag an article when saving it, just click on the tag icon next to the URL field before hitting the Save button. At the moment, it is possible only to do this from the web interface, but it could come to some apps or extensions.
From the article
To tag an already-saved article, go to the reading page of the article. There is a part tags
followed with a pencil. Click on the pencil.
Input in the box the tags you want to assign. Add as many tags as you want. They need to be separated by commas and not spaces. Auto-completion is available here: when you type the first letters of an existing tag, it is not necessary to type the whole word. Select it in the drop-down list. Once all your tags are inputted, click on the button Tag.
Then, you can go back to your article and read it.
From the search
A full chapter on search is available. Here, we will describe only how to assign a tag from your search.
When your search displays results, there is a link Apply the tag ABCD to this search
at the bottom of the page. Click on it: a tad depending on your search (here ABCD
) will be assigned to all the articles found.
Find all the articles with a given tag
In the wallabag menu, click on Tags. Then, all the tags you have created are displayed, sorted by the number of articles for each tag. Click on one of these tags to find all the articles with this tag.
Preferred articles
When you wish to set aside an article, you can mark it as preferred.
Set an article as favorite
From the reading page of an article, or from a list of articles (such as the list of unread articles), you can set an article as favorite simply by a click on the star which is displayed. Click again on the star will remove the favorite status of this article.
Find all the favorite articles
In the wallabag menu, click on Favorites to display the list of all the articles that you have set as favorite.
Archived articles
When you have read an article, you can archive it: hence it will not be displayed in your list of unread articles.
Archiving an article does not remove it from wallabag.
Archive an article
From the reading page of an article, or from a list of articles (such as the list of unread articles), you can archive an article simply by clicking on the icon ✓.
Click again on this icon will set back the unread status of the article.
Find all the archived articles
In the wallabag menu, click on Archive to find all the articles that you have archived.
Delete an article
Be cautious: the deletion of an article is definitive. It is deleted from the wallabag database.
To delete an article, a trash icon is displayed on the page of an article or of a list of articles (unread articles, favorites or archived, for example).
We trust you: that is why there is no confirmation message during the deletion.


Political language is designed to make lies sound truthful and murder respectable, and to give an appearance of solidity to pure wind
Tuesday, 17 May, 2016 by Author one and Author two


Inclusive UX: Techniques for Everyone
Derek Featherstone, Founder, Simply Accessible
The four divine beasts of accessibility
Pop-ups
Triggerable element that was previously hidden and it has content when visible. You should include aria labels that indicate on the button that will trigger the pop-up
Tool tip
Tabs
Accordion
HTML & CSS future things like the (details) value
- Tools and resources Accessibility for everyone book.
- Ebay Mind patterns accessibility patterns
- Inclusive Components Design
- Accessibility for Teams
- The A11Y Project
- Chorme tool axe
Books and resources
Nutrition Cards for Accessible Components
Find all the slides for this talk
Slide for this conference Day 3 Talk-12 The Four beasts of Accessibility


Represents the top level attribute type.
More...
Inherits Attribute.
Inherited by MercadoPago.DELETEEndpoint, MercadoPago.GETEndpoint, MercadoPago.POSTEndpoint, and MercadoPago.PUTEndpoint.
Represents the top level attribute type.
◆ BaseEndpoint()
| MercadoPago.BaseEndpoint.BaseEndpoint |
( |
string |
path, |
|
|
HttpMethod |
methodType, |
|
|
int |
requestTimeout, |
|
|
int |
retries |
|
) |
| |
◆ HttpMethod
◆ Path
| string MercadoPago.BaseEndpoint.Path |
|
getprotected set |
◆ PayloadType
◆ RequestTimeout
| int MercadoPago.BaseEndpoint.RequestTimeout |
|
getprotected set |
◆ Retries
| int MercadoPago.BaseEndpoint.Retries |
|
getprotected set |
The documentation for this class was generated from the following file:
- git/dx-dotnet/px-dotnet/Core/AttributeEndpoint.cs


Back
Web Development
Sugar Bliss
Neiman Marcus Hubs
Neiman Marcus Blog
Ultra Foods
Urban Decay Campaigns
Pure Harmony


---
layout: default
title: Contribute
---
Setup environment
1. Install Node.js
Go to Nodejs.org
2. Install dependencies
npm install
Compile and test
Compile the script (build/build.js)
grunt
Watch and recompile when files change
grunt watch
Create standalone List.js (dist/list.js)
grunt dist
Run the test suite
grunt test
Or open this file your browser
/test/index.html
Guidelines for making pull requests
- Add tests if applicable.
- Make sure all tests run. Preferably in IE7+
- Do not include
dist/list.js
or dist/list.min.js
. That file is only update for each release.
- ONE feature per pull request
- List.js is used in a lot of different ways on a lot of places, so please have understanding if your new special feature is not accepted :)


As a Release Manager
I need to create new releasable versions of my underlying application
So that I can release them into any environment in a simple manner
When I create a release and give it a description of '
This is my release',
Then I expect to see that description associated with the release.
When I create two releases
Then the version numbers of the two releases are different.
Given a component
'Cool component'
with a version '1.2'
When I create a release version with this component
Then I expect to see this component associated with the release.


Really efficeint representation of PI by KrzysztofCwalina · Pull Request #129 · Azure/azure-sdk-for-net-lab I was doing research what our developers need in terms of APIs. Today, I noticed a significant spike in the demand for a good representation of the number PI. After a review of the available repres...
.NET Foundation Member Sticker designs .NET Foundation Member Sticker designs. GitHub Gist: instantly share code, notes, and snippets.
EdCharbeneau/TaxiFareBlazorServer ML.NET TaxiFare Prediction Model with Blazor Server-Side front end. - EdCharbeneau/TaxiFareBlazorServer
OrchardCMS/Orchard Orchard is a free, open source, community-focused Content Management System built on the ASP.NET MVC platform. - OrchardCMS/Orchard
Extending Razor Pages -- Visual Studio Magazine If you move beyond the basics of working with Razor Pages, there are at least two things you should know to support creating Pages that do more than one thing and integrate with existing code.
Creating a not-empty GUID validation attribute and a not-default validation attribute In this post I describe an MVC validation attribute that verifies a GUID doesn't have the default Empty value. I also present a generalised version.
AvaloniaUI/Avalonia A multi-platform .NET UI framework. -!-!-!-!- VOTE FOR SUPPORT IN RIDER: https://youtrack.jetbrains.com/issue/RIDER-39247 -!-!-!-!-
Windows Desktop Developer Twitch Workshop (March 14, 2019) | Visual Studio Blog Today we’d like to announce an upcoming free live streaming workshop on March 14th, 2019 focused on Windows Desktop development for .NET applications using frameworks such as WPF, WinForms and UWP. The day will be split into three themes: Productivity: P...
Xbox Live expands to mobile in Microsoft's big streaming push The dawn of game streaming is almost upon us.
Hack Yourself First - UK Tour I've been working with Troy Hunt on delivering Hack Yourself First, his 2-day hacking workshop, for a little over a year now and I'm really excited to announce something awesome. I'm going to be doing a public Hack Yourself First workshop tour in the UK!!...
Game Stack - Achieve More With Microsoft Game Stack | Microsoft Developer Get the latest news and updates on game development from Microsoft.
Writing ClrMD extensions for WinDbg and LLDB Guide on how to easily write debugger extensions that are compatible with both WinDbg and LLDB
chrisnas/DebuggingExtensions Host of debugging-related extensions such as post-mortem tools or WinDBG extensions - chrisnas/DebuggingExtensions
Running Local Azure Functions in Visual Studio with HTTPS This article shows how to setup a Visual Studio Azure Functions project to work with HTTPS for local development. HTTP is configured per default and not HTTPS. The command line arguments need to be…
Add CodedInputReader and CodedOutputWriter by JamesNK · Pull Request #5888 · protocolbuffers/protobuf This is very WIP/rough. I had to create a new ISpanMessage<T> interface, and some areas do not have full support for it yet (they are throwing NotSupportException right now). Nothing has been...
NDC Meetup with Troy Hunt at Microsoft Reactor with SSW - Sydney Welcome to NDC Meetup with Troy Hunt in collaboration with SSW at Microsoft Reactor. Agenda 17:30 - Pizza and Drinks 18.00 - Welcome and introduction by Adam Cogan from SSW 18:15- Talk by Troy Hunt 19:15 - 45 min Q&A with Troy Clouds, Codes, and Cybers ...
FIA F1 Race Director Charlie Whiting passes away | Formula 1® FIA Director of Formula 1, Charlie Whiting, has passed away, aged 66, as the result of a pulmonary embolism.
Alpha 21364 - Wikipedia The Alpha 21364, code-named "Marvel", also known as EV7 is a microprocessor developed by Digital Equipment Corporation (DEC), later Compaq Computer Corporation, that implemented the Alpha instruction set architecture (ISA).
Cosmos Network - Internet of Blockchains The interoperable, scalable blockchain network. Built for developers.
New IL instruction for typeswitch · Issue #12260 · dotnet/runtime It would be very convenient to have a CLR instruction for switching on the type of an object. The C# compiler could use this to generate code for a pattern-matching switch statement. The IL instruc...


Tutorial part 3: Deploying the site
by Danielle Navarro, 07 Jun 2020
The usual advice for deploying a blogdown or hugodown site is to deploy to Netlify rather than GitHub Pages, because there are a few peculiarities to GitHub Pages that can make it difficult. The third part of the tutorial walks you through both versions, or to be more precise, it will walk you through both versions once I familiarise myself with Netlify and various other things. For the moment, only the GitHub Pages version is documented here.
Deploying a hugodown site to GitHub Pages
The way I set up all my static websites is through GitHub Pages. If you have created your site using hugodown, the first thing you need to do is to have Hugo build a copy of your site in the docs
folder. Hugodown makes this easy to do:
hugodown::hugo_build(dest = "docs")
Once you have done this, you are ready to deploy.  The laziest way I know of to do this is with the following R commands:
usethis::use_git()
usethis::use_github()
On GitHub, go to the “Settings” tab and scroll down to the section entitled “GitHub Pages”. There should be a drop down menu underneath the subheading “Source”. Click on it and select “master branch /docs folder”. The site should now deploy.
Deploying a blogdown site to GitHub
The process of deploying a blogdown site to GitHub is very similar to the hugodown process. Assuming that you have created and built the site in the usual way, e.g.,
caladown::create_blogdown_calade("my-caladown-site")
blogdown::serve_site()
then the site will already be built in the “docs” folder. To deploy the site, initialise a git repository, push it to GitHub, and enable GitHub pages in exactly the same way you would for the hugodown version:
usethis::use_git()
usethis::use_github() # then enable GH Pages with /docs folder
One thing to note here. The reason this works cleanly is that by default the config.toml
file for contains a line that reads:
publishDir = 'docs'
This ensures that the static site is built to the docs folder. If you want blogdown to build to the “public” folder (as is more typical for Hugo sites) you should edit this line appropriately.
Deploying a hugodown site to Netlify
To deploy to Netlify you need to have a Netlify account (naturally) and it should be linked to your GitHub account. The easiest way to do this is to sign up via your GitHub credentials, and allow Netlify to have access to the relevant repository. The process for this is as follows:
caladown::create_hugodown_calade("my_calade_site")
hugodown::use_netlify_toml()
hugodown::hugo_build()
usethis::use_git()
usethis::use_github()
Deploying a blogdown site to Netlify
To be added later :-)


As the boss of many greate companies I earned a reputation in...
I enjoy working with the best teams!
You can contact me anytime via email or phone


CraftML
Try
Gallery
Documentation
Github
Gallery
All
Module
Math
bed
calebhsu
bottle
dria7226
button
calebhsu
candle
calebhsu
chair
calebhsu
cloud
Srinjita
comb
calebhsu
fork
calebhsu
moon
Srinjita
puzzle
qubick
pyramid
doubleshow
soundBar
Srinjita
spiral
dria7226
spoon
calebhsu
stairs
dria7226
star
Srinjita


Guest Tech Speaker Events
listen to the top tech minds of Silicon Valley
General Event Details
In addition to offering classes at local libraries, The Evergreen Engineering and Computer Science Society (EECSS) occasionally holds guest speaker sessions with some of the top tech minds in Silicon Valley. These sessions, also held at local libraries, are open to the public and are a valuable opportunity to listen to and converse with professionals in engineering fields who have extensive academic and industry experience. Also be sure to stick around for the Question & Answer session after the event! Below are some past guest speaker events as well as planned events for the future. Be sure to RSVP by emailing<EMAIL_ADDRESS>to save a spot!
First Guest Speaker Event: Dr. Hamid Rategh
At the Evergreen Branch Public Library on Saturday, October 3rd at 1:15 PM.
Event Details
The Evergreen Engineering and Computer Science Society (EECSS) presents its first guest speaker event featuring Dr. Hamid Rategh. Come to the event to hear: Dr. Rategh's experiences as a student, teacher, and professional, and his story to success.
About the Speaker
Dr. Hamid Rategh was born in Iran and received his undergraduate education in Electrical Engineering at Sharif University of Technology. He later moved to the US for his MS in Biomedical Engineering at Case Western Reserve University and Ph.D. in Electrical Engineering at Stanford University. He has taught as a part-time professor at Stanford University, and is currently the Vice President of Engineering at GenapSys Inc., a Bay Area located biotechnology company.


'Suarez Wants To Come To MLS'
by SL InternationalThere have been a number of big-name players making the move to Major League Soccer in recent years, and a teammate of Luis Suarez claims the FC Barcelona wants move to United States.
Read: 8 Big Names Who Criticised Messi
Suarez's contract with Barcelona runs until 2021, but at the age of 32, the club have reportedly set their sights on a number of potential targets.
Seattle Sounders attacker Nico Lodeiro is a good friend of Suarez after playing alongside the Barca forward for Uruguay over the years.
Lodeiro has since revealed that Suarez has been asking him about the league.
“I think you need to convince Barcelona. He (Suarez) wants to come to MLS,” Lodeiro told MLSsoccer.com.
“He is always asking me about the league.
"His dream was to play for Barcelona. He’s playing at a great level and he feels comfortable there.
“Sooner or later he’ll come to MLS. Well, hopefully! He likes the league. He’s always asking me things about it. Hopefully he can also play for Seattle Sounders. It may be a more difficult task.
"I think it’s only a matter of time before he’s out here.”


{% if data.blocked==1 %}
Your account is blocked. Please contact an admin.
{% endif %}
Your coupons
You have {{ data.balance }} coupons left.
Your transactions
{% for t in data.transactions %}
{% if t.value > 0 %}
{{ t.name }} gave you {{ t.value }} coupons.
{% else %}
{{ t.name }} took {{ t.value }} coupons.
{% endif %}
{% endfor %}


progress_dialog
A simple progress dialog for the D programming language
Discussion
It should work without requiring any 3rd party GUI toolkits. But will work with what it can find on your OS at runtime.
Tries to make a progress dialog with:
* DlangUI (win32 on Windows or SDL2 on Linux)
* Zenity (Gtk/Gnome)
* Kdialog (KDE)
Home page:
https://github.com/workhorsy/d-progress-dialog
Version
0.3.0
License
Boost Software License - Version 1.0
Examples
import std.stdio : stdout, stderr;
import progress_dialog : ProgressDialog, RUN_MAIN;
mixin RUN_MAIN;
extern (C) int UIAppMain(string[] args) {
import core.thread;
// Create the dialog
auto dialog = new ProgressDialog("It's waitin' time!", "Waiting ...");
// Set the error handler
dialog.onError((Throwable err) {
stderr.writefln("Failed to show progress dialog: %s", err);
dialog.close();
});
// Show the progress dialog
dialog.show({
// Update the progress for 5 seconds
int percent = 0;
while (percent < 100) {
dialog.setPercent(percent);
percent += 20;
Thread.sleep(1.seconds);
stdout.writefln("percent: %s", percent);
stdout.flush();
}
// Close the dialog
dialog.close();
});
return 0;
}
-
Declaration
template
RUN_MAIN
()This should be called once at the start of a program. It generates the proper main function for your environment (win32/posix/dmain) and boot straps the main loop for the GUI. This will call your UIAppMain function when ready.
-
Declaration
void
setUseLog
(boolis_logging
);If
true
will print output of external program to console.Parameters
bool
is_logging
If
true
will print to output -
Declaration
bool
getUseLog
();Returns if external program logging is on or off.
-
Declaration
class
ProgressDialog
;The
ProgressDialog
class-
Declaration
this(string
title
, stringmessage
);Sets up the progress dialog with the desired
title
, andmessage
. Does not show it until the show method is called.Parameters
string
title
The string to show in the progress dialog
title
string
message
The string to show in the progress dialog body
Throws
If it fails to find any programs or libraries to make a progress dialog with.
-
Declaration
void
onError
(void delegate(Throwable err)cb
);This method is called if there is an error when showing the progress dialog.
Parameters
void delegate(Throwable err)
cb
The call back to fire when there is an error.
-
Declaration
void
show
(void delegate()cb
);Shows the progress dialog. Will run the callback in a thread and block until it is closed or percent reaches 100.
-
Declaration
void
setPercent
(intpercent
);Set the
percent
of the progess bar. Will close on 100.Parameters
int
percent
from 0 to 100
-
Declaration
void
close
();Close the dialog.
-