SESSION - CGI SESSION Support
CGI support functions for session handling.
Session handling. Session variables are stored in a table. Scalar string and numeric variables can be persisted. The table contains control entries UUID, EXPIRE_TIME and EXPIRE. UUID is the unique identifier for this session (generated by uuid -v1). The filename that the session is saved to is session_UUID.db in directory SESSION_PERSIST_DIR.
EXPIRE_TIME is the number of seconds for the expiration of the session file. Default if not specified is 10 minutes (600) EXPIRE_TIME can be something like 31536000 (one year) to effectively create a permanent session file.
EXPIRE is the time after which the file should be expired. It is in seconds after the Unix epoch (in UTC).
SESSION_TOUCH(SESSION) updates the EXPIRE variable. SESSION_CREATE(EXPIRE_TIME) creates a new session. SESSION_PERSIST(SESSION) saves the session to disk. SESSION_LOAD(UUID) loads the session from disk.
SESSION_TOUCH(SESSION) is called automatically from SESSION_PERSIST(SESSION) and so normally doesn't need to be called directly. SESSION_DELETE(SESSION) removes the session from disk. SESSION_EXPIRE(SESSION) expires the session files in the session file directory (SESSION_PERSIST_DIR)
Only numbers and strings can be persisted. Other objects should be serialized when stored into the SESSION table (arrays, tables, data). This may be done with JSON (or other means, if appropriate).
Using apache, under systemd, /tmp/session_... gets redirected to /tmp/systemd-private-09Kkk/tmp... (for example). This redirection happens with (eg) touch /tmp/afile as well (if touch is launched from the CGI script). For this reason SESSION_PERSIST_DIR is set to the directory we want the persisted sessions to be stored in, and is /var/lib/SESSION/ by default.
SESSION_LOAD() sanitizes its incoming UUID. Character set 0-9 a-f and '-' is enforced. Single and double quotes are stripped, spaces and tabs are removed.
After the session is created, the UUID is expected to always be generated from the client. The server should only examine the session files for expiry, and to load them based on client direction. A client could attempt to load another clients session, by altering the UUID sent. This may be a potential security issue. Possible mitigations would be to store the client IP address within the session, and to ensure that the client IP is the same after loading. This issue is left to the calling program to resolve. Since uuid would only partially validate the UUID, we do not use uuid for validation. If the session file exists, SESSION_LOAD() will load it, and an additional validation should be made (like IP validation). This may not be practical for very long-lived sessions (that would persist across client machines, for example). That data should probably be stored as cookies only, or be accessed from a more permanent database store (and then put into a session).
The format of the SESSION file may be NDBM or JSON. JSON is preferred, because it is human readable.
uuid is presumed to provide unique ids, even if running in multiple processes on the same machine. -v1 or -v4 are (presumed) useful, and -v1 is the default in this code.
Uses
BQ
CHARS
CRACK
JSON
NDBM
READFILE
REPL
TIME
«INCLUDES»≡ -INCLUDE 'BQ.INC' -INCLUDE 'CHARS.INC' -INCLUDE 'CRACK.INC' -INCLUDE 'JSON.INC' -INCLUDE 'NDBM.INC' -INCLUDE 'READFILE.INC' -INCLUDE 'WRTFILE.INC' -INCLUDE 'REPL.INC' -INCLUDE 'TIME.INC' @
«SESSION»≡ -MODULE SESSION -PUBLIC SESSION_CREATE(), SESSION_DELETE(), SESSION_TOUCH() -PUBLIC SESSION_PERSIST(), SESSION_LOAD(), SESSION_EXPIRE() -PUBLIC SESSION_PERSIST_DIR DEFINE('SESSION_CREATE(EXPIRE_TIME)') DEFINE('SESSION_DELETE(SESSION)') DEFINE('SESSION_TOUCH(SESSION)') DEFINE('SESSION_PERSIST(SESSION)FILE,HANDLE,A,I') DEFINE('SESSION_LOAD(UUID)FILE,HANDLE,KEY,DATA,I') DEFINE('SESSION_EXPIRE()SESSION,TIME,UUID,L,I,S,P') * SESSION_PERSIST_DIR = '/var/lib/SESSION/' :(SESSION_END) * * CREATE NEW SESSION. GENERATE UUID FOR SESSION. DEFAULT SESSION * EXPIRATION TO 10 MINUTES (UNLESS SPECIFIED). * SESSION_CREATE SESSION_CREATE = TABLE() SESSION_CREATE<'UUID'> = BQ('/usr/bin/uuid -v1') :F(FRETURN) EXPIRE_TIME = IDENT(EXPIRE_TIME) 600 SESSION_CREATE<'EXPIRE_TIME'> = EXPIRE_TIME :(RETURN) * * TOUCH THE SESSION; SETS THE 'EXPIRE' TIME FOR NOW + EXPIRE_TIME. * SESSION_TOUCH IDENT(SESSION) :S(FRETURN) SESSION<'EXPIRE'> = TV_SEC(GETTIMEOFDAY()) + + SESSION<'EXPIRE_TIME'> :S(RETURN) * * PERSIST SESSION TO DISK. SCALAR VARIABLES ONLY. ARRAYS AND TABLES * ARE NOT PERSISTED (ONLY AS THEY PRINT). * SESSION_PERSIST FILE = SESSION_PERSIST_DIR 'session_' SESSION<'UUID'> SESSION_DELETE(SESSION) SESSION_TOUCH(SESSION) :F(FRETURN) * A = CONVERT(SESSION, 'ARRAY') :F(FRETURN) * HANDLE = DBM_OPEN(FILE, 'CW', '0660') :F(FRETURN) * SEQ(' DBM_STORE(' *+ 'HANDLE, A<I, 1>, VDIFFER(A<I, 2>), DBM_INSERT) ', .I) * A<I> :S(FRETURN) * DBM_CLOSE(HANDLE) :S(RETURN)F(FRETURN) WRITEFILE(FILE '.db', JSON_ENCODE(SESSION)) + :S(RETURN)F(FRETURN) * * DELETE SESSION * SESSION_DELETE DELETE(SESSION_PERSIST_DIR 'session_' SESSION<'UUID'> '.db') + :(RETURN) * * LOAD SESSION GIVEN UUID. USUALLY, THE UUID COMES FROM A COOKIE. * SESSION_LOAD UUID = REPL(UUID, ' ', '') UUID = REPL(UUID, CHARS_TAB, '') UUID = REPLACE(UUID, &UCASE, &LCASE) UUID POS(0) ANY('"' "'") REM . UUID UUID POS(0) SPAN(&DIGITS 'abcdef-') . UUID * SESSION_LOAD = TABLE() FILE = SESSION_PERSIST_DIR 'session_' UUID * HANDLE = DBM_OPEN(FILE, 'R') :F(FRETURN) * KEY = DBM_FIRSTKEY(HANDLE) :F(SESSION_LOAD2) * SEQ(' DATA = DBM_FETCH(HANDLE, KEY);' *+ ' SESSION_LOAD<KEY> = DATA;' *+ ' KEY = DBM_NEXTKEY(HANDLE) ', .I) * DBM_CLOSE(HANDLE) :F(FRETURN) SESSION_LOAD = JSON_DECODE(READFILE(FILE '.db')) :F(FRETURN) IDENT(UUID, SESSION_LOAD<'UUID'>) :S(RETURN)F(FRETURN) SESSION_LOAD2 DBM_CLOSE(HANDLE) :(FRETURN) * * REMOVE EXPIRED SESSIONS FROM DISK. * SESSION_EXPIRE L = BQ('ls ' SESSION_PERSIST_DIR 'session_*.db 2>/dev/null') + :F(RETURN) TIME = TV_SEC(GETTIMEOFDAY()) L = CRACK(L, ' ') P = SESSION_PERSIST_DIR 'session_' BREAK('.') . UUID '.db' SESSION_EXPIRE2 I = I + 1 S = L<I> :F(RETURN) S P :F(RETURN) SESSION = SESSION_LOAD(UUID) :F(SESSION_EXPIRE2) GE(SESSION<'EXPIRE'>, TIME) :S(SESSION_EXPIRE2) SESSION_DELETE(SESSION) :(SESSION_EXPIRE2) * SESSION_END @
«unit_test»≡ #!/usr/bin/bash exec "snobol4" "-b" "$0" "$@" -INCLUDE 'SESSION.INC' &CODE = 1 * REMOVE ALL SESSIONS BQ('rm -f ' SESSION_PERSIST_DIR 'session_*.db') * EXPIRE, EMPTY SESSIONS SESSION_EXPIRE() * CREATE A 'PERMANENT' SESSION (1 YEAR EXPIRY) SESSION = SESSION_CREATE(31536000) UUID1 = SESSION<'UUID'> SESSION<'VAR'> = 'FIRST' * PERSIST THE SESSION SESSION_PERSIST(SESSION) :F(END) * EXPIRE, SHOULDN'T DO ANYTHING SESSION_EXPIRE() * CREATE A SHORT-LIVED SESSION, 5 SECONDS. NOTE THAT THE UNIT TEST * WILL TAKE AT LEAST THIS TIME TO RUN. SESSION = SESSION_CREATE(5) UUID2 = SESSION<'UUID'> SESSION<'VAR'> = 'SECOND' SESSION_PERSIST(SESSION) :F(END) * LOAD AND CHECK FIRST SESSION SESS = SESSION_LOAD(UUID1) :F(END) IDENT(SESS<'VAR'>, 'FIRST') :F(END) * LOAD AND CHECK SECOND SESSION SESS = SESSION_LOAD(UUID2) :F(END) IDENT(SESS<'VAR'>, 'SECOND') :F(END) * WAIT LONGER THAN 5 SECONDS (EXPIRY TIME OF SECOND SESSION) SLEEP(6) * EXPIRE, SHOULD REMOVE SECOND SESSION SESSION_EXPIRE() * TRY LOADING SESSIONS, UUID2 SHOULD BE EXPIRED AND FAIL SESSION = SESSION_LOAD(UUID2) :S(END) SESSION = SESSION_LOAD(UUID1) :F(END) * DELETE SESSION UUID1 SESSION_DELETE(SESSION) * SESSION UUID1 SHOULD NOW FAIL WHEN LOAD ATTEMPTED SESSION = SESSION_LOAD(UUID1) :S(END) * &CODE = 0 END @
«»≡ «INCLUDES» -STITL SESSION -EJECT * ************************************************************************ * * * ##### ####### ##### ##### ### ####### # # * * # # # # # # # # # # ## # * * # # # # # # # # # # * * ##### ##### ##### ##### # # # # # # * * # # # # # # # # # # * * # # # # # # # # # # # ## * * ##### ####### ##### ##### ### ####### # # * * * * SESSION SESSION SUPPORT FOR CGI * * * ************************************************************************ * * SESSION.lss * «SESSION» * * CE: .F.MSNOBOL4; @


- THE CLASSICS -
Put ice and all of the ingredients into a shaker and shake hard for about 20 seconds to chill the liquid really well Strain the mix into a glass filled with ice and garnish with the cherry and orange slice
Pour the simple syrup, water, and bitters into a whiskey glass. Stir to combine, then place the ice cubes in the glass. Pour bourbon over the ice and garnish with the orange slice and maraschino cherry.
Chill your glass (the easiest way is to fill it with ice) Put lots of ice and all of the ingredients into a shaker, then shake hard for about 30 seconds to chill the liquid really well Run a lime wedge around the outside of the rim of your glass before rolling the rim in salt Double strain the mix into the glass
In a highball glass filled with ice, pour in the tequila and orange juice. Slowly pour the grenadine into the glass over the back of a spoon or by drizzling it down the side of the glass, allowing it to settle at the bottom. Garnish with an orange slice and maraschino cherry.
Add the ingredients together in a cocktail shaker. Shake well with cracked ice. Strain into a glass over cubed ice. Garnish with a twist of orange peel.
In a mixing glass filled with ice cubes, combine the gin and vermouth, pouring more or less vermouth to your taste.Stir for 30 seconds.Strain into a chilled cocktail glass.
Shake the Kahlúa, Absolut Vodka and espresso together with plenty of ice. Strain into a cocktail glass to get rid of all the small ice chips. Tip: Shake for like 10 seconds for optimal frothiness.
Pour vodka and lime juice into a mug; add ice cubes and ginger beer. Stir to combine. Drop a lime wedge into the mug for garnish.
Pour the rum over ice in highball and fill with ginger beer. Squeeze in the lime wedge.
Put the four lime wedges into a glass, then add the sugar syrup and muddle (squish everything together) to release the lime juice Put the mint leaves on one hand and clap. This bruises the leaves and releases the aroma. Rub the mint leaves around the rim of the glass and drop them in. Use a muddler, bar spoon (or even a rolling pin) to gently push the mint down into the lime juice Half fill the glass with crushed ice and pour in the white rum. Stir the mix together. Top up with crushed ice, a splash of the soda water and garnish it with a sprig of mint


Developer's Workspace is a Cape Town based company which develops open-source software solutions. We are open to any technologies, frameworks and ideas.
Visualize the latest trends recommended by the community.
Web interface to manage Redis instances/nodes.
Documentation and Tutorials on the most common technologies of today.
Convert IP Address to location info using GeoLite Database.
World of Rations is an online cloud-based ration formulation program, structured in such a way as to suit the farmer, specialist nutritionist, feed milling companies and academics alike. The program formulates rations in a true least-cost linear programming procedure...
The South African Database for Functional Medicine (SADFM) is a South African based organization doing developmental research into healthcare outcomes...


The earnest desire to provide an educational center of excellence to the children in a conducive environment,resulted and opnening on 30may2015
The school is promoted and managed by the Niraj Educational Society known for its commitment for quality education,
having succesfully managed Niraj Public Scool for the past two decades and concurrently running Niraj Primary and Kindergarten School.


Consider the following code:
When will method stringRecur terminate without error?
It never works. It calls itself for
any input and goes into an infinite loop.
- Only when the length of the input string is greater than or equal to 15.
- Only when an empty string is input.
- For all string inputs.
- Only when the length of the input string is less than 15.
Does triggering the "if" statement affect whether a
recursive call is made?


| 16999 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 37755 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 62317 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |
| 79267 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
android.intent.action.MAIN |
Unknown |


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 4
For the chicken, heat a large frying pan over high heat, add the oil and chicken and cook for five minutes until golden.
Remove and set aside.
Reduce the heat to medium-high, add the onion and cook for one minute.
Add the garlic and cook for one minute.
Return the chicken to the pan with the lemon, chicken stock and honey, reduce the heat, cover the pan and simmer for 20 minutes or until the chicken is cooked through.
Lift out the chicken and put on a baking tray.
Increase the heat under the sauce, and simmer, uncovered for another 15 minutes to thicken.
Place the chicken under a hot grill for five minutes until crisp.
Arrange the chicken on a platter, drizzle with the sauce and sprinkle with oregano.
For the salad, gently mix together the chickpeas, feta, parsley, cucumber, green pepper and olives in a large bowl.
Whisk the olive oil and lemon juice and season with salt and pepper.
Toss the dressing with the salad.
Serve.


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object ADCEventPipelineProcessor atg.commerce.adc.processor.ProcAddProductViewed
public abstract class ProcAddProductViewed
This class contains the addProductViewedObject method, which will add a ProductViewed object to the ProductsViewed hashtable associated with the session data. If a ProductViewed object already exists for the given product, the object is updated as necessary. This class also contains the getProductCategoryId method, which determines the category to associate with the product in the ProductViewed object.
| Field Summary | |
|---|---|
static java.lang.String |
CLASS_VERSION
Class version string |
| Constructor Summary | |
|---|---|
ProcAddProductViewed()
|
| Method Summary | |
|---|---|
ProductViewed |
addProductViewedObject(ADCPipelineArgs pArgs,
RepositoryItem pProduct,
boolean pInCart)
This method will determine the category for the given product and then add or update a ProductViewed object in the session data. |
ProductViewed |
addProductViewedObject(ADCPipelineArgs pArgs,
java.lang.String pProductId,
java.lang.String pCategoryId,
boolean pInCart)
This method will see if a ProductViewed object for the given product Id exists in the session data. |
void |
clearProductsViewedFromCart(java.util.Hashtable pProductsViewed)
This method sets inCart=false for all items in the ProductsViewed Hashtable |
java.lang.String |
getDefaultCategory()
|
java.lang.String |
getParentCategoryPropertyName()
|
java.lang.String |
getProductCategoryId(ADCPipelineArgs pArgs,
RepositoryItem pProduct)
This method will get the category id to be associated with this product in its ProductViewed object. |
boolean |
isUseParentCategory()
|
boolean |
isUsePreviousRequestCategoryId()
|
void |
setDefaultCategory(java.lang.String pDefaultCategory)
The default page category. |
void |
setParentCategoryPropertyName(java.lang.String pParentCategoryPropertyName)
The name of the property in the product item descriptor to use for the category to be associated with the product view. |
void |
setUseParentCategory(boolean pUseParentCategory)
Boolean indicating if the product's parentCategory property should be used to get the category parameter value if the category was not set by a droplet, JSP tag, query string parameter, or the previous request's category. |
void |
setUsePreviousRequestCategoryId(boolean pUsePreviousRequestCategoryId)
Boolean indicating if the category associated with the previous request should be used to get the category parameter value if the category was not set by a droplet, JSP tag, or query string parameter. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final java.lang.String CLASS_VERSION
| Constructor Detail |
|---|
public ProcAddProductViewed()
| Method Detail |
|---|
public void setDefaultCategory(java.lang.String pDefaultCategory)
pDefaultCategory
- The default page categorypublic java.lang.String getDefaultCategory()
public void setParentCategoryPropertyName(java.lang.String pParentCategoryPropertyName)
pParentCategoryPropertyName
- The name of the property in the product
item descriptor to use for the category to be associated with
the product view.public java.lang.String getParentCategoryPropertyName()
public void setUseParentCategory(boolean pUseParentCategory)
pUseParentCategory
- Boolean indicating if the product's parentCategory
property should be used to get the category parameter value if the
category was not set by a droplet, JSP tag, query string parameter,
or the previous request's category.public boolean isUseParentCategory()
public void setUsePreviousRequestCategoryId(boolean pUsePreviousRequestCategoryId)
pUseParentCategory
- Boolean indicating if the category associated with
the previous request should be used to get the category parameter value if the
category was not set by a droplet, JSP tag, or query string parameter.public boolean isUsePreviousRequestCategoryId()
public ProductViewed addProductViewedObject(ADCPipelineArgs pArgs, RepositoryItem pProduct, boolean pInCart)
pArgs
- the ADC pipeline arguments.pProduct
- the product that has been viewed.pInCart
- boolean indicating if the product is in the current order.public ProductViewed addProductViewedObject(ADCPipelineArgs pArgs, java.lang.String pProductId, java.lang.String pCategoryId, boolean pInCart)
pArgs
- the ADC pipeline arguments.pProductId
- the ID of the product that has been viewed.pCategoryId
- the ID of the category that the product was viewed in.pInCart
- boolean indicating if the product is in the current order.public java.lang.String getProductCategoryId(ADCPipelineArgs pArgs, RepositoryItem pProduct)
usePreviousRequestCategoryId
and useParentCategory
properties.
pArgs
- the pipeline argumentspProduct
- the product repository item
public void clearProductsViewedFromCart(java.util.Hashtable pProductsViewed)
pProductsViewed
- the Hashtable mapping productIds to ProductViewed objects
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Package Specification
In this package, performance test classes are included.
There are different levels of performance tests:
The top level is the testing of the overall performance.
Next level is the class level.
Most detailed test basis is the method.


A regular English-speaking meet-up in Cologne, Germany
All are welcome. Native English speakers, people who like speaking English, ex-pats, residents, travellers passing through - come join us for Thursday Night Drinks
Follow us on Toytown Germany Like us on Facebook Subscribe to our Facebook events


acts_as_apiMakes creating XML/JSON responses in Rails 3 easy and fun. |
|
|---|---|
|
The built-in XML/JSON support of Rails is great but: You surely don’t want to expose your models always with all attributes. acts_as_api enriches the models and controllers of your app in a rails-like way so you can easily determine how your API responses should look like. |
|
Features
|
|
Rails 3.x Quickstart |
|
|
Add to gemfile |
gem 'acts_as_api' |
|
Update your bundle |
bundle install |
Setting up your Model |
|
|
Given you have a model |
|
|
Within your model: First you activate acts_as_api for your model by calling Then you define an api template to render the model with |
class User < ActiveRecord::Base
acts_as_api
api_accessible :name_only do |template|
template.add :first_name
template.add :last_name
end
end |
|
An API template with the name See below how to use it in the controller: |
|
Setting up your Controller |
|
|
Now you just have to exchange the |
class UsersController < ApplicationController
def index
@users = User.all |
|
Note that it’s wise to add a |
respond_to do |format|
format.xml { render_for_api :name_only, :xml => @users, :root => :users }
format.json { render_for_api :name_only, :json => @users, :root => :users }
end
end
def show
@user = User.find(params[:id])
respond_to do |format|
format.xml { render_for_api :name_only, :xml => @user }
format.json { render_for_api :name_only, :json => @user }
end
end
end |
That’s it! |
|
|
Try it. The JSON response of #show should now look like this: Other attributes of the model like |
{
"user": {
"first_name": "John",
"last_name": "Doe"
}
} |
|
|
|
But wait! … there’s moreOften the pure rendering of database values is just not enough, so acts_as_api provides you some tools to customize your API responses. |
|
What can I include in my responses?You can do basically anything:
You can find more advanced examples in the Github Wiki |
|
|
|
|
Links
|
|


File |
Mutation score |
# Killed |
# Survived |
# Timeout |
# No coverage |
# Errors |
Total detected |
Total undetected |
Total mutants |
|
|---|---|---|---|---|---|---|---|---|---|---|
| utils |
|
69/181 | 68 | 34 | 1 | 78 | 0 | 69 | 112 | 181 |
File |
Mutation score |
# Killed |
# Survived |
# Timeout |
# No coverage |
# Errors |
Total detected |
Total undetected |
Total mutants |
|
|---|---|---|---|---|---|---|---|---|---|---|
| fileUtils.js |
|
4/76 | 3 | 11 | 1 | 61 | 0 | 4 | 72 | 76 |
| objectUtils.js |
|
10/19 | 10 | 7 | 0 | 2 | 0 | 10 | 9 | 19 |
| parserUtils.js |
|
24/27 | 24 | 3 | 0 | 0 | 0 | 24 | 3 | 27 |
| StrykerTempFolder.js |
|
1/28 | 1 | 12 | 0 | 15 | 0 | 1 | 27 | 28 |
| Timer.js |
|
30/31 | 30 | 1 | 0 | 0 | 0 | 30 | 1 | 31 |


Unexpected ==. For assignment, use =. For comparison, use [/[[.
var==value
Assignment:
var=value
Comparison:
[ "$var" = value ]
ShellCheck has noticed that you're using ==
in an unexpected way. The two most common reasons for this is:
You wanted to assign a value but accidentally used ==
instead of =
.
You wanted to compare two values, but neglected to use [ .. ]
or [[ .. ]]
.
If you wanted to assign a literal equals sign, use quotes to make this clear:
var="=sum(A1:A10)"


You have 7 unread mails
The meeting is cancelled
New product launch
Upcoming board meeting
You have 4 new notifications
Just now
Private message
2 days ago
Richard V.Welsh
Endereço


Parth Agrawal
I am web and python developer.
I build apps, games and more.
Here is My repository Index.
Click to visit my blog
Games
Table Tennis Pong Game
A very simple table tennis pong game written in python and pygame.
Infinite Runner Pygame
A very simple infinite runner game written in pygame.
Apps
Teachers Day Greeting 2020 (Archived)
A greeting for Teachers day 2020 (Archived).
OpenCV-Paint
A simple paint app in OpenCV and python.
About me
Age : 14 years
School: Ambuja Vidya Peeth (Rawan), Chhattisgarh, India.


Before Change
for counts in instances:
model.updater.time += 1
for clas, feats in counts.items():
for key, value in feats.items():
model.updater.update_weight(key, clas, value)
return model
def get_score(model, feats, clas):
eg = Example.from_feats(model.nr_class, feats, gold=clas)
After Change
@pytest.fixture
def model(instances):
templates = []
for batch in instances:
for _, feats in batch:
for key in feats:
templates.append((key,))
templates = tuple(set(templates))
model = AveragedPerceptron(templates)
for batch in instances:
model.time += 1


| < Day Day Up > |
Hack 38 Secure Backups Over a Network
When it comes to backups, Unix systems are extremely flexible. For starters, they come with built-in utilities that are just waiting for an administrator's imagination to combine their talents into a customized backup solution. Add that to one of Unix's greatest strengths: its ability to see everything as a file. This means you don't even need backup hardware. You have the ability to send your backup to a file, to a media, to another server, or to whatever is available. As with any customized solution, your success depends upon a little forethought. In this scenario, I don't have any backup hardware, but I do have a network with a 100 Mbps switch and a system with a large hard drive capable of holding backups. 4.5.1 Initial PreparationOn the system with that large hard drive, I have sshd running. (An alternative to consider is the scponly shell; see [Hack #63] ). I've also created a user and a group called rembackup: # pw groupadd rembackup # pw useradd rembackup -g rembackup -m -s /bin/csh # passwd rembackup Changing local password for rembackup New Password: Retype New Password: # If you're new to the pw command, the -g switch puts the user in the specified group (which must already exist), the -m switch creates the user's home directory, and the -s switch sets the default shell. (There's really no good mnemonic; perhaps no one remembers what, if anything, pw stands for.) Next, from the system I plan on backing up, I'll ensure that I can ssh in as the user rembackup. In this scenario, the system with the large hard drive has an IP address of <IP_ADDRESS>: % sshd -l rembackup <IP_ADDRESS> The authenticity of host '<IP_ADDRESS> (<IP_ADDRESS>)' can't be established. DSA key fingerprint is e2:75:a7:85:46:04:71:51:db:a8:9e:83:b1:5c:7a:2c. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '<IP_ADDRESS>' (DSA) to the list of known hosts. Password: % % exit logout Connection to <IP_ADDRESS> closed. Excellent. Since I can log in as rembackup, it looks like both systems are ready for a test backup. 4.5.2 The BackupI'll start by testing my command at a command line. Once I'm happy with the results, I'll create a backup script to automate the process. # tar czvf - /usr/home | ssh<EMAIL_ADDRESS>"cat > genisis_usr_home.tgz" usr/home/ usr/home/dru/ usr/home/dru/.cshrc usr/home/dru/mail/ usr/home/mail/sent-mail Password: This tar command creates (c) a compressed (z) backup to a file (f) while showing the results verbosely (v). The minus character (-) represents the specified file, which in this case is stdout. This allows me to pipe stdout to the ssh command. I've provided /usr/home, which contains all of my users' home directories, as the hierarchy to back up. The results of that backup are then piped (|) to ssh, which will send that output (via cat) to a compressed file called genisis_usr_home.tgz in the rembackup user's home directory. Since that directory holds the backups for my network, I chose a filename that indicates the name of the host, genisis, and the contents of the backup itself. <IP_ADDRESS> Automating the backupNow that I can securely back up my users' home directories, I can create a script. It can start out as simple as this: # more /root/bin/backup #!/bin/sh # script to backup /usr/home to backup server tar czvf - /usr/home | ssh<EMAIL_ADDRESS>"cat > genisis_usr_home.tgz" However, whenever I run that script, I'll overwrite the previous backup. If that's not my intention, I can include the date as part of the backup name: tar czvf - /usr/home | ssh<EMAIL_ADDRESS>"cat > \ genisis_usr_home.`date +%d.%m.%y`.tgz" Notice I inserted the date command into the filename using backticks. Now the backup file will include the day, month, and year separated by dots, resulting in a filename like genisis_usr_home.21.12.03.tgz. Once you're happy with your results, your script is an excellent candidate for a cron job. 4.5.3 See Also
|
| < Day Day Up > |


We found a curious new species, but we're having trouble understanding its genome. You can use our sequencing machines to investigate.
Sequencing parameters:


Charts
Feedbacks
From {{ feedback.senderGrade }} at {{ feedback.accountTitle }}
via {{ feedback.source }},
- Performance: {{ deUnder(feedback.performanceQuestion) }}
- Would work together again: {{ deUnder(feedback.nextTimeQuestion) }}
- Initiative: {{ feedback.projectTitle }}
No feedbacks have been submitted yet


Music is super important to me. I started music when I was 18 and got a scholarship to Berklee for guitar when I was 20. I put in a lot of hours from day one until Scholarship time.
I can play anything and well just put it in my hand and I'll figure it out.
Main instruments:
Guitar, Bass, Vocals, Drums, Synth, Keyboard, SFX *that's all of them*
Musical Influences:
John Mayer, D'Angelo, Sango, Sampha, Flying Lotus, Tyler The Creator, Kanye West, J Dilla, Erykah Badu, Jimi Hendrix, Tame Impala, Frank Ocean, The Weeknd, Drake, Rihanna, Beyonce, Prince, Michael Jackson, Kendrick Lamar...
Here are my first two albums that I was confident enough to put out. I don't know if they're good or not which is why to this day 07/31/17 I haven't even performed them once. I feel like I can do a lot better vocally then anything that I have released but it's all here for your consumption. The two albums tell a story if you look for it.


Imagine that you’re a top singer, and fans ask day and night for your upcoming single.
To get some relief, you promise to send it to them when it’s published.  They can fill in their email addresses, so that when the song becomes available, all subscribed parties instantly receive it. And even if something goes very wrong, say, a fire in the studio, so that you can’t publish the song, they will still be notified.
Everyone is happy: you, because the people don’t crowd you anymore, and fans, because they won’t miss the single.
This is a real-life analogy for things we often have in programming:
- A “producing code” that does something and takes time. For instance, some code that loads the data over a network. That’s a “singer”.
- A “consuming code” that wants the result of the “producing code” once it’s ready. Many functions may need that result. These are the “fans”.
- A promise is a special JavaScript object that links the “producing code” and the “consuming code” together. In terms of our analogy: this is the “subscription list”. The “producing code” takes whatever time it needs to produce the promised result, and the “promise” makes that result available to all of the subscribed code when it’s ready.
The analogy isn’t terribly accurate, because JavaScript promises are more complex than a simple subscription list: they have additional features and limitations. But it’s fine to begin with.
The constructor syntax for a promise object is:
let
promise =
new
Promise
(
function
(
resolve,
reject
)
{
// executor (the producing code, "singer")
}
)
;
The function passed to new Promise
is called
the executor. When new Promise
is
created, the executor runs automatically. It contains the
producing code which should eventually produce the result.
In terms of the analogy above: the executor is the “singer”.
Its arguments resolve
and
reject
are callbacks provided by JavaScript
itself. Our code is only inside the executor.
When the executor obtains the result, be it soon or late, doesn’t matter, it should call one of these callbacks:
-
resolve(value)
— if the job finished successfully, with resultvalue
. -
reject(error)
— if an error occurred,error
is the error object.
So to summarize: the executor runs automatically and
attempts to perform a job. When it is finished with the
attempt it calls resolve
if it was successful
or reject
if there was an error.
The promise
object returned by the
new Promise
constructor has these internal
properties:
-
state
— initially"pending"
, then changes to either"fulfilled"
whenresolve
is called or"rejected"
whenreject
is called. -
result
— initiallyundefined
, then changes tovalue
whenresolve(value)
called orerror
whenreject(error)
is called.
So the executor eventually moves promise
to one
of these states:
Later we’ll see how “fans” can subscribe to these changes.
Here’s an example of a promise constructor and a simple
executor function with “producing code” that takes time (via
setTimeout
):
let
promise=
new
Promise
(
function
(
resolve
,
reject)
{
// the function is executed automatically when the promise is constructed
// after 1 second signal that the job is done with the result "done"
setTimeout
(
(
)
=>
resolve
(
"done"
)
,
1000
)
;
}
)
;
We can see two things by running the code above:
-
The executor is called automatically and immediately (by
new Promise
). -
The executor receives two arguments:
resolve
andreject
. These functions are pre-defined by the JavaScript engine, so we don’t need to create them. We should only call one of them when ready.After one second of “processing” the executor calls
resolve("done")
to produce the result. This changes the state of thepromise
object:
That was an example of a successful job completion, a “fulfilled promise”.
And now an example of the executor rejecting the promise with an error:
let
promise=
new
Promise
(
function
(
resolve
,
reject)
{
// after 1 second signal that the job is finished with an error
setTimeout
(
(
)
=>
reject
(
new
Error
(
"Whoops!"
)
)
,
1000
)
;
}
)
;
The call to reject(...)
moves the promise
object to "rejected"
state:
To summarize, the executor should perform a job (usually
something that takes time) and then call
resolve
or reject
to change the
state of the corresponding promise object.
A promise that is either resolved or rejected is called “settled”, as opposed to an initially “pending” promise.
The executor should call only one
resolve
or one reject
. Any
state change is final.
All further calls of resolve
and
reject
are ignored:
let
promise=
new
Promise
(
function
(
resolve
,
reject)
{
resolve
(
"done"
)
;
reject
(
new
Error
(
"…"
)
)
;
// ignored
setTimeout
(
(
)
=>
resolve
(
"…"
)
)
;
// ignored
}
)
;
The idea is that a job done by the executor may have only one result or an error.
Also, resolve
/reject
expect
only one argument (or none) and will ignore additional
arguments.
Error
objects
In case something goes wrong, the executor should call
reject
. That can be done with any type of
argument (just like resolve
). But it is
recommended to use Error
objects (or
objects that inherit from Error
). The
reasoning for that will soon become apparent.
resolve
/reject
In practice, an executor usually does something
asynchronously and calls resolve
/reject
after some time, but it doesn’t have to. We also can
call resolve
or
reject
immediately, like this:
let
promise =
new
Promise
(
function
(
resolve,
reject
)
{
// not taking our time to do the job
resolve
(
123
)
;
// immediately give the result: 123
}
)
;
For instance, this might happen when we start to do a job but then see that everything has already been completed and cached.
That’s fine. We immediately have a resolved promise.
state
and result
are
internal
The properties state
and
result
of the Promise object are internal.
We can’t directly access them. We can use the methods
.then
/.catch
/.finally
for that. They are described below.
Consumers: then, catch, finally
A Promise object serves as a link between the executor (the
“producing code” or “singer”) and the consuming functions
(the “fans”), which will receive the result or error.
Consuming functions can be registered (subscribed) using
methods .then
, .catch
and
.finally
.
then
The most important, fundamental one is .then
.
The syntax is:
promise
.
then
(
function
(
result
)
{
/* handle a successful result */
}
,
function
(
error
)
{
/* handle an error */
}
)
;
The first argument of .then
is a function that
runs when the promise is resolved, and receives the result.
The second argument of .then
is a function that
runs when the promise is rejected, and receives the error.
For instance, here’s a reaction to a successfully resolved promise:
let
promise=
new
Promise
(
function
(
resolve
,
reject)
{
setTimeout
(
(
)
=>
resolve
(
"done!"
)
,
1000
)
;
}
)
;
// resolve runs the first function in .then
promise.
then
(
result
=>
alert
(
result)
,
// shows "done!" after 1 second
error
=>
alert
(
error)
// doesn't run
)
;
The first function was executed.
And in the case of a rejection, the second one:
let
promise=
new
Promise
(
function
(
resolve
,
reject)
{
setTimeout
(
(
)
=>
reject
(
new
Error
(
"Whoops!"
)
)
,
1000
)
;
}
)
;
// reject runs the second function in .then
promise.
then
(
result
=>
alert
(
result)
,
// doesn't run
error
=>
alert
(
error)
// shows "Error: Whoops!" after 1 second
)
;
If we’re interested only in successful completions, then we
can provide only one function argument to
.then
:
let
promise=
new
Promise
(
resolve
=>
{
setTimeout
(
(
)
=>
resolve
(
"done!"
)
,
1000
)
;
}
)
;
promise.
then
(
alert)
;
// shows "done!" after 1 second
catch
If we’re interested only in errors, then we can use
null
as the first argument:
.then(null, errorHandlingFunction)
. Or we can
use .catch(errorHandlingFunction)
, which is
exactly the same:
let
promise=
new
Promise
(
(
resolve
,
reject)
=>
{
setTimeout
(
(
)
=>
reject
(
new
Error
(
"Whoops!"
)
)
,
1000
)
;
}
)
;
// .catch(f) is the same as promise.then(null, f)
promise.
catch
(
alert)
;
// shows "Error: Whoops!"
The call .finally(f)
is similar to
.then(f, f)
in the sense that
f
always runs when the promise is settled: be
it resolve or reject.
finally
is a good handler for performing
cleanup, e.g. stopping our loading indicators, as they are
not needed anymore, no matter what the outcome is.
Like this:
new
Promise
(
(
resolve
,
reject)
=>
{
/* do something that takes time, and then call resolve/reject */
}
)
// runs when the promise is settled, doesn't matter successfully or not
.
finally
(
(
)
=>
stop loading indicator)
.
then
(
result
=>
show result,
err
=>
show error)
It’s not exactly an alias of then(f,f)
though.
There are several important differences:
-
A
finally
handler has no arguments. Infinally
we don’t know whether the promise is successful or not. That’s all right, as our task is usually to perform “general” finalizing procedures. -
A
finally
handler passes through results and errors to the next handler.For instance, here the result is passed through
finally
tothen
:new
Promise
(
(
resolve
,
reject)
=>
{
setTimeout
(
(
)
=>
resolve
(
"result"
)
,
2000
)
}
)
.
finally
(
(
)
=>
alert
(
"Promise ready"
)
)
.
then
(
result
=>
alert
(
result)
)
;
// <-- .then handles the result
And here there’s an error in the promise, passed through
finally
tocatch
:new
Promise
(
(
resolve
,
reject)
=>
{
throw
new
Error
(
"error"
)
;
}
)
.
finally
(
(
)
=>
alert
(
"Promise ready"
)
)
.
catch
(
err
=>
alert
(
err)
)
;
// <-- .catch handles the error object
That’s very convenient, because
finally
is not meant to process a promise result. So it passes it through.We’ll talk more about promise chaining and result-passing between handlers in the next chapter.
-
Last, but not least,
.finally(f)
is a more convenient syntax than.then(f, f)
: no need to duplicate the functionf
.
If a promise is pending,
.then/catch/finally
handlers wait for it.
Otherwise, if a promise has already settled, they
execute immediately:
// the promise becomes resolved immediately upon creation
let
promise =
new
Promise
(
resolve
=>
resolve
(
"done!"
)
)
;
promise.
then
(
alert)
;
// done! (shows up right now)
Note that this is different, and more powerful than the real life “subscription list” scenario. If the singer has already released their song and then a person signs up on the subscription list, they probably won’t receive that song. Subscriptions in real life must be done prior to the event.
Promises are more flexible. We can add handlers any time: if the result is already there, our handlers get it immediately.
Next, let’s see more practical examples of how promises can help us write asynchronous code.
Example: loadScript
We’ve got the loadScript
function for loading a
script from the previous chapter.
Here’s the callback-based variant, just to remind us of it:
function
loadScript
(
src,
callback
)
{
let
script =
document.
createElement
(
'script'
)
;
script.
src =
src;
script.
onload
=
(
)
=>
callback
(
null
,
script)
;
script.
onerror
=
(
)
=>
callback
(
new
Error
(
`Script load error for
${
src}
`
)
)
;
document.
head.
append
(
script)
;
}
Let’s rewrite it using Promises.
The new function loadScript
will not require a
callback. Instead, it will create and return a Promise
object that resolves when the loading is complete. The outer
code can add handlers (subscribing functions) to it using
.then
:
function
loadScript
(
src
)
{
return
new
Promise
(
function
(
resolve,
reject
)
{
let
script =
document.
createElement
(
'script'
)
;
script.
src =
src;
script.
onload
=
(
)
=>
resolve
(
script)
;
script.
onerror
=
(
)
=>
reject
(
new
Error
(
`Script load error for
${
src}
`
)
)
;
document.
head.
append
(
script)
;
}
)
;
}
Usage:
let
promise =
loadScript
(
"https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"
)
;
promise.
then
(
script
=>
alert
(
`
${
script.
src}
is loaded!`
)
,
error
=>
alert
(
`Error:
${
error.
message}
`
)
)
;
promise.
then
(
script
=>
alert
(
'Another handler...'
)
)
;
We can immediately see a few benefits over the callback-based pattern:
| Promises | Callbacks |
|---|---|
Promises allow us to do things in the natural order.
First, we run loadScript(script) , and
.then we write what to do with the
result.
|
We must have a callback function at our
disposal when calling
loadScript(script, callback) . In other
words, we must know what to do with the result
before loadScript is called.
|
We can call .then on a Promise as many
times as we want. Each time, we’re adding a new “fan”,
a new subscribing function, to the “subscription
list”. More about this in the next chapter:
Promises chaining.
|
There can be only one callback. |
So promises give us better code flow and flexibility. But there’s more. We’ll see that in the next chapters.
Comments

tag, for several lines – wrap them in

tag, for more than 10 lines – use a sandbox (plnkr, jsbin, codepen…)


public final class GdlValidator
extends java.lang.Object
| Constructor and Description |
|---|
GdlValidator() |
| Modifier and Type | Method and Description |
|---|---|
private boolean |
containsAnonymousList(Symbol symbol)
A recursive method that checks whether a Symbol contains SymbolList that
does not begin with a SymbolAtom.
|
private boolean |
containsOr(Symbol symbol)
A recursive method that checks whether a Symbol contains the deprecated
'or' keyword.
|
boolean |
validate(Symbol symbol)
Validates whether a Symbol can be transformed into a Gdl expression
without error using the following process:
Returns true if the Symbol is a SymbolAtom.
|
public boolean validate(Symbol symbol)
symbol
- The Symbol to validate.private boolean containsAnonymousList(Symbol symbol)
symbol
- The Symbol to validate.private boolean containsOr(Symbol symbol)
symbol
- The Symbol to validate.


Order pizza with us!
- Pizza
Choose your pizza slices
Olives
Peppers
Peperoni
Cheese
How many slices of this kind do you want?
You're almost done


Morton Oliver Steinberg was born on May 14th, 1944 in Bakersfield, California. His mom, a single mother, worked weekends to make ends meet while raising him. Starting off in politics at the age of 18, he's been a loyal Libertarian for 56 years. Growing up, he was friends with Clint Eastwood, a famous actor/director, and a Libertarian. He marched with Dr. Martin Luther King Jr. (alongside long-time associate Sen. Bernie Sanders) in the March on Washington. Morty has served the American people for decades, and he hopes to continue to do so as a US Senator for California.


public interface IAddition
addition
child of an add-element
within a configuration-data-delta
element.| Modifier and Type | Interface and Description |
|---|---|
static class |
IAddition.Location
Represents the specific location of this addition relative to the
path specified in add-element . |
| Modifier and Type | Method and Description |
|---|---|
java.util.List<IProcessConfigurationElement> |
getElementsToBeAdded()
Get the list of
IProcessConfigurationElement that the containing
delta adds to configuration data |
IAddition.Location |
getLocation()
Get the specific location of this addition relative to the
path specified in the add-element . |
int |
getMergeDepth()
Get the merge depth of this addition.
|
java.util.List<IProcessConfigurationElement> getElementsToBeAdded()
IProcessConfigurationElement
that the containing
delta adds to configuration dataList
of IProcessConfigurationElement
, may be
empty but not null
.int getMergeDepth()
Integer.MIN_VALUE
will be returned.IAddition.Location getLocation()
path
specified in the add-element
. If no
location was explicitly specified, the default of last-child will be
returned.Location.UNKNOWN
if the attribute cannot be parsed.


Normally we wouldn't be so thorough writing up a trip report (or write one at all), but we loved Lake Clark National Park. The planning for this trip was quite involved and the beta incredibly scarce. Hopefully this writeup helps someone in the future.
Planning
Things to Pay Attention To
Off-trail navigation
River crossings
Trail Creek
Turquoise River
Possibly Upper/Lower Twin Connecting Stream
Snow Pack
Satellite Communication for contacting pilot on pickup day
Fuel and bear spray can be difficult to get into the park. Many flight proivders will not allow you to fly with them (even in checked baggage) on their planes. We purchased our fuel (isobutane canisters used by MSR Windburner/Pocket Rocket/Reactor and Jetboil) and our bear spray from the Cranberry Cache coffee shop at the Lake Clark Resort. The price markup wasn't terrible. $7.50 for a 4oz canister and $65 for bear spray (they were $5 and $50 in Anchorage). They were out of 8oz fuel canisters on our way into the park, but had them when we grabbed a coffee after finishing our backpacking trip. I would call to confirm they have what you need in stock before your trip.
How to Get to Lake Clark National Park and Travel Costs
To get to the park isn't trivial from Anchorage. For this particular trip, you'll need to fly into one of the nearby towns before taking a float plane to your intended starting lake. We chose to fly from Anchorage to Port Alsworth on a slightly larger plane that had 5 other passengers excluding the pilot. Then we took a 30 min float plane flight from Port Alsworth to Turquoise/Twin Lakes.
We chose to get to Lake Clark National Park through Lake Clark Air. This option was the simplest because they handle coordination of transport from Anchorage to Port Alsworth and then again from Port Alsworth to Anchorage. It was also convenient to be able to stay in Port Alsworth and relax before returning to Anchorage. There aren't many options for places to stay in Port Alsworth besides the Lake Clark Resort.
Travel information can be difficult to clarify from these providers' website. It's best to call/email them to get up to date information.
$4800 for 2 people. Mark offered a charter flying discounted rate of $800/hour for 6 hours of flying time. 1.5 hours Anchorage to Turquoise + 1.5 hours for pilot to fly back for both pickup and dropoff.
Alternative, $2,500 for 2 people (roughly $1,250 for the drop off and $1,250 for the pickup) from Iliamna to Turquoise. Transportation to Iliamna would have to be separate through Lake and Pen Air. This option was only available starting in August 2023 when Mark would be based out of Iliamna.
Food Storage
Ursack says that their products are not allowed in the park. NPS states that any IGBC-approved product is allowed as of 2023. Tried to confirm this fact with the Lake Clark rangers, but they weren't sure. Brought two BearVaults and accepted the weight penalty. There were almost no trees to attach your Ursack to on our route. A rodent might ruin your trip if you tie it to a boulder on the ground. I doubt the SAR team would be very happy if you SOS-ed because you had your food eaten by a rodent.
Trip Report
Conditions Leading up to our Trip
Southern Alaska received a historic amount of rain the weekend prior to our trip. We had been talking to Dan from Alaska Alpine Adventures while planning our trip (Dan is amazing) and he told us they were having an especially long winter. Lake Clark had only seen 8 days of sunshine leading up to our trip at the end of July. We prepared for a trip with highs in the mid-40s and rain everyday. Luckily we got southern Alaska's first sunny stretch for 6 straight days from days 3-8.
Day 1
Dropped off in evening. Somewhat inconvenient since we had to quickly go up the brushy hill to find a place to set up camp before nightfall
Telaquana beach is too narrow to camp on (only 1-2 feet between water and brush)
We were dropped of a half mile from second creek
Very wet ground once you go up into the brush
Thick bushwhacking but no deadfall to contend with
Scattered game trails, most of which go along the lake rather than up the hill
Flat-ish open terrain 1000 feet up
Rainstorm and somewhat windy. Made sure to guy out shelter for extra wind protection
Very soft ground. Used long msr cyclone tent stakes and guyed to tree
Water access from a creek nearby but steep bank to get down to water. Lots of brush. Fast moving clear creek
Pretty warm temps overall. Sun set around midnight-1am and rose at 5am
Maybe trees for ursack
Pictures
Map
Terrain
Only 1-2 feet of beach at Telaquana Lake
Very brushy and wet for the first mile up the hill from the lake
No good camp sites close to the lake, it is steep and brushy
Brush gets sparser as you move up the hill
We camped at the first decent place we could find as there was a storm coming that night
Weather
Temperatures in the 50s - 60s, clear when we flew in but we knew there was a storm approaching
Rained pretty hard, the forecast called for almost an inch of rain
Bugs
Lots of mosquitoes
Our camp site was near a hive of ground-dwelling bees who did not like our stake placements
Day 2
Continued up the hill, then dropped slightly into valley with trail creek
Stopped at a small pond for lunch
The ground was still pretty wet and slow going but less brushy as we got further from the lake. There were some sections with drier, less marshy ground as we gained elevation.
Trail creek was in flood and moving very fast. Camped by creek.
Selected a potential site for crossing, planned to attempt to cross early in the morning when the water would be lower.
Pictures
Map
Terrain
Occasional decent sized lake/pond for water
Followed game trail to plateau
Travel becomes significantly easier
No more trees from now on. Bear canisters only
Softish ground. Long stakes or groundhogs would be fine
Slept on open plain. Mildly windy but ok. Low probably in 40s
Weather
Waited out rainstorm until 3pm
Light precip on and off throughout the day
Pretty warm. 50-60
Bugs
Lots of mosquitoes
Day 3
Woke up at 4:20am an hour before sunrise to pack up camp
Water in creek much calmer
Attempted to cross. Water still very fast. Water level came up mid-thigh on my partner at one step and was going to get deeper so we retreated. I’m 6’1”. Partner is 5’2”.
Attempted multiple paths in a short period of time. Water is very cold. Eventually went back to shore with no safe crossing available. Warmed hot water bottle and broke out the safety blanket to warm our feet until sun broke onto valley floor
Set up camp again on south shore. Rested for a few hours. New camp was a few hundred feet away but sheltered by a hill. Rockier ground. Could pick smaller stakes here. More bugs but no wind and warmer. Not that the cold was a problem. Lows were in 50s
Scouted down river that day to see if river widened out
Warm sunny day 60s. No rain.
Saw a moose and some caribou
Lots of mosquitoes
Pictures
Map
N/A
Day 4
Woke up early to check river conditions. Didn’t pack up camp. Somewhat better. Rain flooding was calming. Not much snow in the mountains so high water was probably from rain and not all warming snowmelt. Still too high. Went back to bed.
Scouted upriver into valley today. Smaller creek crossings split off from each of the valleys. Still knee height or deeper in the afternoon but much narrower crossings.
Found some much more promising crossing sites 2-3 miles upriver. River was clearly flooded. Vegetation that normally wouldn’t be in water was submerged.
Warm weather again. 60s. No rain
Caribou encounter. Baby caribou ran off to our side in the distance. Parent stared at us. If we walked towards baby (didn’t notice the baby at first since it was a half mile away) then the parent would run towards us. If we walked away from baby then parent would retreat away to its child. Eventually we picked a direction the parent liked. We headed to much higher ground and gave a wide berth.
Lots of mosquitoes
Pictures
Map
N/A
Day 5
Woke up around 5am packed up and headed 2 miles upriver. Did the first small creek crossing just as sun hit the ground so we could warm our feet. Eventually saw one of our potential sites was looking decent. I scouted several beforehand but deemed them too deep for safety.
Crossed between multiple ankle deep submerged sandbars. Knee deep in deep sections with one step above the knee for me. Staggered with partner it was very manageable but probably approaching the limit. Still fast moving water. Got across and warmed up but since it was later and we were warm from hiking it was much better. Did a few more small creek crossings and then headed up hill for breakfast (9am)
Scouted a route that didn’t involve losing elevation and minimal backtracking.
Crossed high (4k feet) plateau with occasional cloud providing shade.
No rain. 60s and very warm in sun.
Camped at base of glacier. Sheltered by big Boulder. Normal ground. A little rocky.
Windless night. Low in 50s. Spectacular view
Lots of rodents. One chewed my cork handles
Glacier water is very silty. Found a stream filtering through moss so we wouldn’t clog our filter.
Lots of mosquitoes even up here
Pictures
Map
Terrain
Travel was much easier as it was not very brushy
Once we got up the hill the the ground was drier and firmer with sparsely scattered rocks
There were several small creeks and other water sources as well as some small snow patches up on the plateau although this may be dependent on the time of year
Weather
Sunny, mid-60s
Not very windy on the plateau, but the wind picked up when we dropped down near the glacier
Bugs
Still lots of mosquitos even up here, although less than previous camp sites
Day 6
Descended from 4000 foot camp down to Turquoise Lake
Brief climb up creek/boulder field then descent down valley
Valley has very good ground for travel
Possible camp spot at top of valley. Could be windy, but would have water access
Bottom of valley before descent to turquoise has amazing view. Make sure to take pictures
Take pictures of current creek paths for use when crossing later if running high
Can descend gentler slopes but will face a couple thousand feet of very thick brush. 8 foot high alder bushes. If following our track you will be walking down a muddy creek
Alternative route is to head east staying high across some mildly steeper traversing and then descend a less vegetated ridge
Lots of amazing camp spots on valley floor at east end of turquoise
Excellent weather. 60s and sunny
Turquoise stream crossings were a non issue. Water is warmer and was running less strong/deep for us.
Camped on north side of valley. Sandy with large river rocks.
Less silty water in creeks on either side of the valley near vegetation. Filtering silty water can clog water filters
Pictures
Map
Terrain
Climb up the boulder field can be tedious. Most of the rocks were pretty stable but not all. Lots of rapidly melting snow was easy to punch through to the rocks below.
Past the boulder field it became much windier
Ground was stable gravel, very easy travel even as we dropped 2000 ft
Weather
60s and sunny
not very windy near turquoise river
Bugs
Less mosquitos near Turquoise, mostly located along the edge of the valley near the vegetation
Day 7
Turquoise creeks not running high previous evening so we took it easy and crossed them around lunch time when it was warm.
No issues crossing. Lots of great crossing options below the knee and at walking/jogging pace while we were there. We walked around a bit to cross smaller streams but it was pretty straightforward. Very nice compared to Trail Creek being in flood.
River is very silty so it is difficult to determine depth by eye, we used our treking poles to estimate the depth before we entered
Valley 1 looked like it was in great condition and would’ve been a good alternative way through the mountains. We wanted to see the tundra
Headed west along south shore of turquoise
Less brush on south side compared to north
Very nice game trail for first portion
Dropped to a pretty beach midway and filtered water
Scared a brown bear that we ran into when we came over a ridge. It ran away as fast as it could. Good visibility so we never ended up too close to it
We would recommend going higher than our track for this portion. Crossing the ravines full of alders can be tedious and we ran into a lot of bees
Camped on spit jutting out into turquoise. Highly recommended campsite. It’s worth braving the tussocks and obnoxious ground to get there!
Soft but not overly soft ground. Easy stake placement
No rain. 60s/50s. Quite hot and sunny
Pictures
Map
Terrain
Less brush on this side compared with the other side of Turquoise
Ravines were very brushy and slow going, recommend going higher on the hill to avoid them
Weather
60s and sunny
Bugs
Ravines are full of mosquitos and bees
Less mosquitos at this campsite than I would have expected considering how boggy the surrounding area is
Day 8
Getting off the spit involves either bushes or boggy tussocks. Only about 15-30 min of this then freedom
Ascend slope to high plateau. Very easy travel
Plateau is beautiful. A bit windy as you’d expect
Creek in middle of two plateaus very easy to cross. Pretty too
Descend towards twin. Prepare for brush and a new level of mosquitoes. See your first trees since turquoise
Surprisingly clear and easy travel through trees. Make noise for bears. Visibility greatly reduced
Minimal deadfall in trees. Travel very easy
It’s hilly down there. Occasionally you’ll get a viewpoint to aid in navigation
Slept above northwest beach of lower twin. Lots of good sites
Windstorm that night. Pitched tarp in good ground using msr cyclones and guyed out to nearby trees
Temps still in 60s/50s
Pictures
Map
Terrain
First section is boggy, no dry shoes today
Plateau is flat and windy. The ground is dry and firm with small rocks
Small creek in the middle of the plateau section was not very deep or fast, easy to cross
Starts to get brushy as you get close to Lower Twin Lake
Once the trees start the brush clears out a little bit. I wouldn't call it fast travel, but less brushy and less down trees than we expected
Weather
60s and sunny
Bugs
Not very buggy on the plateau
Extremely buggy in the forest near Lower Twin Lake
Day 9
Bonus hike down to connecting stream between lower and upper twin
High winds from the east mean float plane can’t pick up from west shore of the lakes. Waves would push them into the shore
Navigated from rocky patch to rocky patch using CalTopo on the fly
A bit rainy and overcast today
Took us ~3.5 hours for 6 miles of travel. 4.5 miles as crow flies. Weaved around and avoided the worst of the brush
Communicated with pilot as we moved along. Original pickup was 10am on northwest shore of lower twin. Pilot picked us up at 2pm at connecting stream. We waited maybe 5 minutes on shore. Excellent timing on their part anticipating our arrival
25 min flight back to port alsworth
Map
Terrain
Can't walk along lake as the beach is not continuous
Brushy in general, interspersed with drier patches especially on ridges or small hills
Weather
Overcast, high 50s
Storm in forcast for tomorrow, >1 inch of rain expected
Bugs
Not as buggy as the approach to Twin yesterday, but still plenty of mosquitos
Post-Trip
Spoke with ranger. Didn’t know if ursacks were allowed or not…
If you would like to do this trip but aren't sure if you're ready for backcountry travel on your own (or you don't want to deal with the logistics) we recommend using Alaska Alpine Adventures. Dan (the owner) was an amazing resource for us. He went above and beyond giving us beta and up to date area conditions.
We packed for a significantly colder trip based on the extended winter Alaska was having right up until the week we arrived.
You almost certainly do not need a belay puffy. My partner gets cold easily and the extra weight is easy comfort insurance for such a long trip.
Normally we wouldn't bring electronic entertainment, however there was a potential for us to be rained-in for multiple days.
This pack list is for two people. All gear quantities are correct with the exception that I didn't list my partner's clothing choices. These are just my clothing choices.
Typically I would say this much redundancy is overkill. However, since there was only two of us and we would be alone for 9 days without an easy bail option, we opted to carry the extra couple pounds.
Redundant items for safety:
2 water filters
Glacier silt can clog a filter quickly.
2 Garmin inReach
Need a way to contact pilot for pickup.
2 bug head nets
This was a Skurka tip. If you rip/lose your headnet you might as well hit that SOS button on the inReach.
Rain Pants
Even if you don't use them for the rain you'll want them for the mosquitoes at dinner.
2 backup batteries
Probably only need one. We wanted to make sure we could record GPX tracks without comprimising a battery backup used for safety purposes (such as recharging the inReach).
2 stoves
We debated whether this was necessary since we could always just cold-soak our food. Opted to just carry it because boiling hot water for warmth can be critical in an emergency.
3 Voile straps
Hyperlite Ultamid requires two straps minimum to set up
2 Kindles
We could always just bring one and read over the other person's shoulder. My partner reads at least twice as fast as me so we decided to bring separate kindles.
4 4oz isopro fuel cansisters
We planned to use slightly over 1 8oz container for 9 days. That meant we would carry 2 8 oz containers. Port Alsworth only had 4 oz containers and rather than modify our calculations at the last moment we decided to stick with the original planb of 16 oz of fuel for the trip. We used 1 4 oz container fully and another one mostly. We gave the last two to the rangers. We never needed to boil hot water for warmth and we drank our coffee cold because it was so warm out every morning.
Extra/multiple kinds of tent stakes
This route has really varied ground for camp. Alaska can be windy. This was easy extra weight to swallow.
Bring some long stakes like the MSR Cyclones or MSR Blizzards. The tundra can be very loose at the surface.


InverseCooking
Home
About
Services
Portfolio
Pricing
Contact
Get Started
Choose a file
or drag it here
.
Upload
Uploading…
Done!
Upload more?
Error!
.
Try again!


Marie Yovanovitch gave powerful and incriminating testimony in the Trump impeachment hearing. Here are the biggest takeaways.
by Sonam Sheth, Business Insider US- Marie Yovanovitch, the ousted US ambassador to Ukraine, was the third official to testify this week in Congress’ public impeachment hearings into whether President Donald Trump abused his power for private gain.
- Yovanovitch focused on Trump, his personal lawyer Rudy Giuliani, and top brass at the State Department in her nearly seven-hour hearing on Friday.
- She refused to take Republicans’ bait as they tried to push her to acknowledge conspiracy theories about Ukrainian election meddling.
- The former ambassador to Ukraine made a powerful opening statement singling out State Department leaders and saying they allowed corrupt interests to “hijack” US foreign policy.
- The Democratic strategy for Friday’s hearing was to let the facts speak for themselves, while the Republican strategy was to distract, distract, distract.
- Scroll down to read the biggest takeaways from Yovanovitch’s marathon testimony.
- Visit Business Insider’s homepage for more stories.
Marie Yovanovitch, the ousted former ambassador to Ukraine, was the third official to testify this week in Congress’ impeachment hearings into whether President Donald Trump abused his power for private gain.
The career diplomat and foreign-service officer focused on Trump, his personal lawyer Rudy Giuliani, and top brass at the State Department in her powerful testimony.
Yovanovitch was abruptly recalled from her position in May after what she described as a nearly yearlong “smear campaign” against her by Trump and Giuliani that was based on fabrications and lies.
In her testimony, Yovanovitch said she believed she had become the target of Giuliani’s ire because she would not help him strong-arm the Ukrainian government into delivering the politically motivated investigations Trump wanted.
Specifically, the president wanted his Ukrainian counterpart to publicly commit to investigating former Vice President Joe Biden and his son for corruption, as well as probe a bogus conspiracy theory suggesting it was Ukraine, not Russia, that interfered in the 2016 election.
These are the biggest takeaways from Yovanovitch’s testimony
-
The Democratic strategy: let the facts speak for themselves.
- Daniel Goldman, the veteran former federal prosecutor from the Southern District of New York, kept his questions simple, straightforward, and formulated to draw out as much substance as possible.
- Through his questions, Goldman had Yovanovitch detailed the remarkable chain of events, both public and private, that culminated in her ouster.
- “During your 33-year career as a foreign-service officer, did you ever hear of any serious concerns about your job performance?” Goldman asked Yovanovitch. “No,” she replied.
- “In your 33 years as a foreign-service officer, have you ever heard of a president of the United States recalling another ambassador without cause based on allegations that the State Department knew to be false?” he asked. “No,” Yovanovitch said.
-
The Republican strategy: distract, distract, distract.
- Republican lawmakers largely used the hearing to do the following: demand the whistleblower who sparked the impeachment inquiry be hauled in to testify, gin up conspiracy theories about Ukrainian election interference, accuse Democrats of being a “basement cult,” and name-drop the Democratic operative Alexandra Chalupa, who they say they believe is the key link between Democrats and an anti-Trump Ukrainian establishment.
- That said, while Republicans went to bat for Trump, they also went out of their way to praise Yovanovitch for her decades of public service.
- The strategy was particularly interesting because it came as the president was publicly attacking Yovanovitch as she testified.
-
Yovanovitch didn’t take Republicans’ bait.
- Steve Castor, Goldman’s counterpart on the Republican side, dove into a lengthy and, at times, convoluted line of questioning attempting to imply that Yovanovitch didn’t do enough to “push back” on the “concerted campaign” against her.
- But Yovanovitch didn’t bite and insisted the State Department, including Secretary of State Mike Pompeo, were well aware of Giuliani and his associates’ smear campaign against her.
- Later, Castor started on a series of questions meant to establish the Ukrainian government was anti-Trump during the 2016 election. He likely wanted to lay a foundation in order to claim the Ukrainian government had a vested interest in interfering in the election to hurt Trump.
- Again, Yovanovitch refused to take the bait or acknowledge that anyone in the Ukrainian government meddled in the race.
-
Trump was accused of witness intimidation after lobbing Twitter attacks on Yovanovitch while she was testifying about how she felt personally threatened by him.
- The president took to his favorite social-media platform to slam Yovanovitch and say that “everywhere” she “went turned bad.”
- In a remarkable turn of events, Yovanovitch was asked to respond to Trump’s tweets in real time as House Intelligence Committee Chairman Adam Schiff read them to her in real time.
- The former ambassador replied that it was “very intimidating” to be publicly smeared.
- Trump’s tweets immediately drew backlash from House Democrats and legal experts for what they said was attempted witness intimidation.
-
Yovanovitch: ‘I was shocked, absolutely shocked, and devastated’ by what Trump said in a July 25 call with Ukraine’s president.
- During his July 25 phone call with Ukrainian President Volodymyr Zelensky, Trump mentioned Yovanovitch and said she was “bad news,” adding that “she’s going to go through some things.”
- Yovanovitch said she was “shocked, absolutely shocked, and devastated, frankly,” by what Trump said about her.
- “I was shocked and devastated that I would feature in a phone call between two heads of state in such a manner where President Trump said that I was bad news to another world leader, and that I would be going through some things,” the former ambassador said. “It was a terrible moment.”
- She continued, saying that a person who saw her reading the memo of the call said “the color drained from my face. I think I even had a physical reaction. Even now, words fail me.”
- Asked whether she felt personally threatened by Trump’s words, Yovanovitch replied, “I did.”
-
Yovanovitch singled out State Department leadership and said it allowed corrupt interests to “hijack” the US’s foreign policy.
- Yovanovitch also slammed the State Department’s top brass as being passive amid the “degradation” of US foreign service.
- She sharply criticized department leadership, saying it failed “to push back as foreign and corrupt interests apparently hijacked our Ukraine policy.”
- She added that she remained “disappointed” that the department’s leaders and others “have declined to acknowledge that the attacks against me and others are dangerously wrong.”
-
The former ambassador was shocked that corrupt Ukrainians were able to find Americans willing to collaborate with them to undermine the US.
- “What continues to amaze me is that they found Americans willing to partner with them, and working together, they apparently succeeded in orchestrating the removal of a US ambassador,” Yovanovitch said.
- “How could our system fail like this? How is it that foreign corrupt interests can manipulate our government?” she added. “Which country’s interests are served when the very corrupt behavior we have been criticizing is allowed to prevail?”
- Read more of Insider’s impeachment coverage:
- Think Trump will get impeached? Gambling sites say the odds are in your favor
- Trump could be impeached and removed from office but still win reelection in 2020
- Over half of the House of Representatives support the impeachment inquiry against Trump – see all of them here
- Everything you need to know about Trump’s impeachment process: What’s happened, who the players are, and what comes next


Box Office Records > Domestic > All Movies > Cumulative > All Time Domestic
All Time Domestic Box Office (Rank 1,501-1,600)
See also: All Time Domestic Limited Release - All Time International - All Time Worldwide - All Time Domestic (Inf. Adj.) - Top 2016 Domestic - Top 2017 Domestic
This chart contains the top 100 movies based on the cumulative domestic box office.
Please see our All-Time Top Grossing Films Comparison for a comparison of the daily performance of all films released since 1980 that have earned more than $450 million at the domestic box office.
| Rank | Released | Movie | Domestic Box Office |
International Box Office |
Worldwide Box Office |
|---|---|---|---|---|---|
| 1,501 | 1984 | Grand Canyon: The Hidden Secrets | $52,800,000 | $186,200,000 | $239,000,000 |
| 1,502 | 2003 | The Recruit | $52,784,696 | $48,389,744 | $101,174,440 |
| 1,503 | 1982 | Gandhi | $52,767,889 | $75,000,000 | $127,767,889 |
| 1,504 | 2002 | Unfaithful | $52,752,475 | $66,362,019 | $119,114,494 |
| 1,505 | 1994 | Four Weddings and a Funeral | $52,700,832 | $190,194,977 | $242,895,809 |
| 1,506 | 2011 | Diary of a Wimpy Kid: Rodrick Rules | $52,698,535 | $20,996,659 | $73,695,194 |
| 1,507 | 1993 | Beethoven's 2nd | $52,636,940 | $0 | $52,636,940 |
| 1,508 | 1976 | King Kong | $52,614,445 | $38,000,000 | $90,614,445 |
| 1,509 | 2008 | The Strangers | $52,597,610 | $30,454,066 | $83,051,676 |
| 1,510 | 2014 | No Good Deed | $52,543,632 | $1,779,578 | $54,323,210 |
| 1,511 | 2013 | Tyler Perry's A Madea Christmas | $52,543,354 | $0 | $52,543,354 |
| 1,512 | 2010 | Wall Street 2: Money Never Sleeps | $52,474,616 | $84,957,003 | $137,431,619 |
| 1,513 | 2015 | Southpaw | $52,421,953 | $41,785,908 | $94,207,861 |
| 1,514 | 2004 | Blade: Trinity | $52,397,389 | $80,000,000 | $132,397,389 |
| 1,515 | 2001 | The Royal Tenenbaums | $52,353,636 | $19,077,240 | $71,430,876 |
| 1,516 | 2003 | Radio | $52,333,738 | $959,890 | $53,293,628 |
| 1,517 | 2006 | The Lake House | $52,330,111 | $62,500,000 | $114,830,111 |
| 1,518 | 1980 | Ordinary People | $52,302,978 | $0 | $52,302,978 |
| 1,519 | 1986 | The Color of Money | $52,293,000 | $0 | $52,293,000 |
| 1,520 | 1986 | Stand by Me | $52,287,414 | $0 | $52,287,414 |
| 1,521 | 2015 | Insidious Chapter 3 | $52,218,558 | $68,459,886 | $120,678,444 |
| 1,522 | 1989 | Star Trek V: The Final Frontier | $52,210,049 | $17,989,951 | $70,200,000 |
| 1,523 | 1979 | 10 | $52,134,699 | $0 | $52,134,699 |
| 1,524 | 2003 | Identity | $52,131,264 | $30,052,419 | $82,183,683 |
| 1,525 | 2015 | Selma | $52,076,908 | $14,700,000 | $66,776,908 |
| 1,526 | 2008 | The Forbidden Kingdom | $52,075,270 | $77,000,000 | $129,075,270 |
| 1,527 | 1999 | South Park: Bigger, Longer & Uncut | $52,037,603 | $0 | $52,037,603 |
| 1,528 | 2010 | Predators | $52,000,688 | $75,233,701 | $127,234,389 |
| 1,529 | 2013 | Tyler Perry's Temptation | $51,975,354 | $0 | $51,975,354 |
| 1,530 | 1984 | Amadeus | $51,973,029 | $0 | $51,973,029 |
| 1,531 | 2003 | Underworld | $51,970,690 | $43,737,767 | $95,708,457 |
| 1,532 | 2004 | King Arthur | $51,877,963 | $152,000,000 | $203,877,963 |
| 1,533 | 2013 | The Call | $51,872,378 | $17,949,098 | $69,821,476 |
| 1,534 | 2009 | Funny People | $51,855,045 | $20,025,260 | $71,880,305 |
| 1,535 | 2012 | The Odd Life of Timothy Green | $51,853,450 | $3,395,709 | $55,249,159 |
| 1,536 | 2011 | Footloose | $51,802,742 | $11,187,092 | $62,989,834 |
| 1,537 | 2012 | Ghost Rider: Spirit of Vengeance | $51,774,002 | $97,443,353 | $149,217,355 |
| 1,538 | 2000 | Finding Forrester | $51,768,623 | $28,245,000 | $80,013,623 |
| 1,539 | 1994 | The Little Rascals | $51,764,950 | $15,183,000 | $66,947,950 |
| 1,540 | 2001 | Exit Wounds | $51,758,599 | $28,200,000 | $79,958,599 |
| 1,541 | 2010 | Hubble 3D | $51,758,571 | $16,105,160 | $67,863,731 |
| 1,542 | 2009 | I Can Do Bad All By Myself | $51,733,921 | $0 | $51,733,921 |
| 1,543 | 2016 | Lion | $51,728,731 | $93,984,167 | $145,712,898 |
| 1,544 | 2004 | Finding Neverland | $51,676,606 | $63,359,502 | $115,036,108 |
| 1,545 | 1990 | Awakenings | $51,636,504 | $0 | $51,636,504 |
| 1,546 | 2012 | The Grey | $51,580,136 | $29,669,040 | $81,249,176 |
| 1,547 | 2009 | My Bloody Valentine | $51,545,952 | $51,290,050 | $102,836,002 |
| 1,548 | 2004 | A Cinderella Story | $51,438,175 | $18,725,930 | $70,164,105 |
| 1,549 | 1992 | Sneakers | $51,433,000 | $0 | $51,433,000 |
| 1,550 | 2002 | Like Mike | $51,432,423 | $11,000,000 | $62,432,423 |
| 1,551 | 2001 | Enemy at the Gates | $51,396,781 | $45,574,512 | $96,971,293 |
| 1,552 | 2006 | Hoodwinked | $51,386,611 | $58,456,779 | $109,843,390 |
| 1,553 | 1996 | Dragonheart | $51,364,680 | $53,000,000 | $104,364,680 |
| 1,554 | 1978 | Hooper | $51,290,536 | $0 | $51,290,536 |
| 1,555 | 1993 | Dennis the Menace | $51,270,765 | $66,000,000 | $117,270,765 |
| 1,556 | 1987 | Broadcast News | $51,249,404 | $16,081,905 | $67,331,309 |
| 1,557 | 2004 | The Phantom of the Opera | $51,225,796 | $102,842,832 | $154,068,628 |
| 1,558 | 1987 | The Living Daylights | $51,185,000 | $140,015,000 | $191,200,000 |
| 1,559 | 2014 | Muppets Most Wanted | $51,178,893 | $28,133,408 | $79,312,301 |
| 1,560 | 2005 | Hide and Seek | $51,100,486 | $72,596,255 | $123,696,741 |
| 1,561 | 1964 | Goldfinger | $51,100,000 | $73,800,000 | $124,900,000 |
| 1,562 | 1976 | The Silver Streak | $51,079,064 | $0 | $51,079,064 |
| 1,563 | 1977 | Oh, God! | $51,061,196 | $0 | $51,061,196 |
| 1,564 | 1976 | All the President's Men | $51,048,435 | $0 | $51,048,435 |
| 1,565 | 1996 | Up Close & Personal | $51,045,801 | $49,600,000 | $100,645,801 |
| 1,566 | 1994 | Naked Gun 33 1/3: The Final Insult | $51,041,856 | $0 | $51,041,856 |
| 1,567 | 2005 | The Hitchhiker's Guide to the Galaxy | $51,019,112 | $51,727,102 | $102,746,214 |
| 1,568 | 2007 | Atonement | $50,980,159 | $78,799,569 | $129,779,728 |
| 1,569 | 1988 | Bull Durham | $50,888,729 | $0 | $50,888,729 |
| 1,570 | 2008 | The Tale of Despereaux | $50,877,145 | $39,605,172 | $90,482,317 |
| 1,571 | 2006 | Apocalypto | $50,866,635 | $70,165,637 | $121,032,272 |
| 1,572 | 1995 | Something to Talk About | $50,865,589 | $26,441,637 | $77,307,226 |
| 1,573 | 2014 | Ouija | $50,856,010 | $52,827,332 | $103,683,342 |
| 1,574 | 2014 | The Boxtrolls | $50,837,305 | $61,108,946 | $111,946,251 |
| 1,575 | 2005 | Syriana | $50,824,620 | $41,866,339 | $92,690,959 |
| 1,576 | 2000 | The Road to El Dorado | $50,802,661 | $14,897,339 | $65,700,000 |
| 1,577 | 1977 | A Bridge Too Far | $50,800,000 | $0 | $50,800,000 |
| 1,578 | 1992 | The Mighty Ducks | $50,752,337 | $0 | $50,752,337 |
| 1,579 | 2004 | Resident Evil: Apocalypse | $50,740,078 | $74,428,656 | $125,168,734 |
| 1,580 | 1967 | Bonnie and Clyde | $50,700,000 | $0 | $50,700,000 |
| 1,581 | 1999 | The Hurricane | $50,699,241 | $23,257,000 | $73,956,241 |
| 1,582 | 1977 | The Deep | $50,681,884 | $0 | $50,681,884 |
| 1,583 | 2007 | Resident Evil: Extinction | $50,648,679 | $95,514,241 | $146,162,920 |
| 1,584 | 1994 | The Crow | $50,638,075 | $0 | $50,638,075 |
| 1,585 | 1998 | Mighty Joe Young | $50,632,037 | $0 | $50,632,037 |
| 1,586 | 1995 | The Net | $50,621,733 | $59,900,000 | $110,521,733 |
| 1,587 | 2002 | The Tuxedo | $50,586,000 | $53,843,625 | $104,429,625 |
| 1,588 | 2014 | Jack Ryan: Shadow Recruit | $50,577,412 | $80,800,000 | $131,377,412 |
| 1,589 | 1969 | The Love Bug | $50,576,808 | $0 | $50,576,808 |
| 1,590 | 2007 | Music and Lyrics | $50,572,589 | $95,727,767 | $146,300,356 |
| 1,591 | 1987 | Eddie Murphy Raw | $50,504,655 | $0 | $50,504,655 |
| 1,592 | 2014 | If I Stay | $50,474,843 | $27,881,327 | $78,356,170 |
| 1,593 | 1993 | The Nightmare Before Christmas | $50,408,318 | $0 | $50,408,318 |
| 1,594 | 2005 | Diary of a Mad Black Woman | $50,406,346 | $52,010 | $50,458,356 |
| 1,595 | 1985 | A View to a Kill | $50,327,960 | $102,300,000 | $152,627,960 |
| 1,596 | 2001 | K-PAX | $50,315,140 | $0 | $50,315,140 |
| 1,597 | 1994 | Natural Born Killers | $50,282,766 | $0 | $50,282,766 |
| 1,598 | 2010 | Hot Tub Time Machine | $50,269,859 | $15,697,891 | $65,967,750 |
| 1,599 | 2001 | Serendipity | $50,255,310 | $27,221,987 | $77,477,297 |
| 1,600 | 1994 | Angels in the Outfield | $50,236,831 | $0 | $50,236,831 |
The Domestic Market is defined as the North American movie territory (consisting of the United States, Canada, Puerto Rico and Guam).
This table is updated daily to reflect the latest studio reports.
Note: This chart is not adjusted for inflation.


Augmented reality has come a long way from a science-fiction concept to a science-based reality. Until recently the costs of augmented reality were so substantial that designers could only dream of working on design projects that involved it – today things have changed and augmented reality is even available on the mobile handset.
Learn MoreAPIs simplify how developers integrate new application components into an existing architecture, they help business and IT teams collaborate. Business needs often change quickly in response to ever shifting digital markets, where new competitors can change a whole industry with a new app.
Learn MoreIn Restructuring Education Through Technology, I incorporated systems thinking to identify seven types of relationships in educational systems: teacher-student, student-content, student-context, teacher-content, teacher-context, content-context, and education system-environment relationships (Frick 1991). I now revisit these education system relations and discuss potential futures of education.
Learn More


gottz.github.io
this is unimportant stuff
just a tiny testing area for public eyes
maybe a list of projects someday


Rozu
Rozu is a webhook API server, using MongoDB for persistent storage & Redis for pub/sub of inbound events
Each response will include a Link
header, and an Array
of Objects
with IANA
defined rel
properties & URIs.
Receiving webhook events
Rozu has a publically accessible route /receive
which will accept a JSON or form encoded payload & put it into Redis
for pub/sub behavior in your local stack. Inbound requests must include a user supplied token (token
in config.json
)
which maps to a registered webhook; tokens are v1 UUIDs.
Inbound events will be published with a channel name of config.id_webhook.name
, e.g. "rozu_github".
Sending webhook events
Sending a webhook is as easy as publishing into Redis with a channel name of config.id_webhook.name_send
,
e.g. "rozu_github_send", or POST to /send
after authenticating at /login
. Outbound webhook properties to configure
the request are uri
, & encoding
. If not specified encoding
will default to json
. The value of encoding
can be
json
, querystring
, or form
. The request body will contain the webhook id as the value of config.token
, for
validation.
Sending an outbound webhook from Redis may look like this:
clientPublish.publish("rozu_github_send", serialize({"token": "bb8bf370-0a54-11e5-9c1d-9389475d0a28", "message": "The Matrix!"}));
Requirements
- node.js or io.js
- MongoDB (persistent storage of accounts, & webhook configurations)
- Redis (pub/sub for local stack of inbound events)
- (Optional) nginx for SSL termination, & reverse proxy
How do I run Rozu?
Rozu
can be up and running in 3 steps! When run in a production environment, it's recommended that you use nginx
to terminate SSL, and reverse proxy to Rozu
. Using a daemon like upstart
(on Linux) to run rozu
is ideal.
- Clone this repository, or install from
npm
:$ npm install rozu
$ ln -s node_modules/rozu/config.json config.json
$ ln -s node_modules/rozu/lib/app.js app.js
- Edit
config.json
to configure your email server, etc. - Run via
node index.js
- (Optional) Use the provided upstart recipe:
sudo cp node_modules/rozu/rozu.conf /etc/init & service start rozu
Getting Started
The following steps outline how the system is intended to be utilized.
- Register an account
- Verify account
- Login with account
- Create a webhook by registering the remote host
Registration
To register, make a GET
request to /register
to retrieve instructions.
Registration is a two step process, requiring email verification. Please fill out email
in config.json
.
Authentication
To authenticate, make a GET
request to /login
to retrieve instructions.
To logout, make a GET
request to /logout
.
Your Profile
Make a GET
request to /profile
. You will have CRUD operations, defined by the allow
header.
Getting Administrator Access
Once authenticated, make GET
request to /admin
; this requires your account email address in the admin
Array in config.json
.
Routes
A GET
request to /
will return different results, depending upon the state of your session.
Unauthenticated
{
"status": 200,
"error": null,
"data": {
"link": [
{
"rel": "item",
"uri": "http://localhost:8090/login"
},
{
"rel": "item",
"uri": "http://localhost:8090/receive"
},
{
"rel": "item",
"uri": "http://localhost:8090/register"
}
],
"result": [
"/login",
"/receive",
"/register"
]
}
}
Authenticated
{
"status": 200,
"error": null,
"data": {
"link": [
{
"rel": "item",
"uri": "http://localhost:8090/admin"
},
{
"rel": "item",
"uri": "http://localhost:8090/logout"
},
{
"rel": "item",
"uri": "http://localhost:8090/profile"
},
{
"rel": "item",
"uri": "http://localhost:8090/receive"
},
{
"rel": "item",
"uri": "http://localhost:8090/send"
},
{
"rel": "item",
"uri": "http://localhost:8090/stream"
}
{
"rel": "item",
"uri": "http://localhost:8090/users"
},
{
"rel": "item",
"uri": "http://localhost:8090/webhooks"
}
],
"result": [
"/admin",
"/logout",
"/profile",
"/receive",
"/send",
"/stream",
"/users",
"/webhooks"
]
}
}
License
Copyright (c) 2015 Jason Mulligan
All Rights Reserved


Xythos Digital Locker Benefits
Improves Academic Collaboration
Protects Institutional Content
Reduces IT Costs
Easy to Deploy and Support
Maximizes Existing Technology Investments
- Improves Academic Collaboration. With Xythos Digital Locker, students can securely share drafts with other classmates and faculties, review documents, read comments, and establish project areas—all through an intuitive interface that can be accessed from any web browser. Digital Locker also provides a flexible file storage and sharing upgrade for existing learning management systems.
-
Protects Institutional Content. Academic institutions need to know where vital content is stored and ensure that it is protected at all times. Digital Locker delivers the tools to secure and track content both on and off campus. Document level security, advanced permissions and easy integration with content encryption and authentication standards help ensure that only those who are supposed to can access or modify files.
-
Reduces IT Costs. Digital Locker provides users with a safer and easier way to transfer files instead of using email attachments or exchanging physical media. Users can easily set up their own shared workspaces without requiring the IT department to assist them. Digital Locker is also ideal for consolidating department file servers – allowing staff and faculty to stay in control of their content without having to store and manage it themselves.
-
Easy to Deploy and Support. Xythos Digital Locker is designed to work together with the applications that students and faculty already know and use, saving them from having to learn new processes. Typical deployments require minimal training thanks to the Digital Locker’s intuitive web 2.0 enhanced interface and desktop integration with Mac and Windows WebDAV clients.
-
Maximizes Existing Technology Investments. Xythos Digital Locker can be deployed as a common content repository for a wide range of academic and business applications. Its Java (J2EE) architecture is at home in virtually any application server, database and storage environment – helping to preserve infrastructure and storage system investments. Developers can concentrate on delivering process-specific solutions and let Xythos perform the data management, storage and security chores for their desktop or web applications.


Xorien's Lair is a VTT, or Virtual TableTop, system for Dungeons & Dragons 5e. It aims to provide as many features as possible that compare with other VTTs (Roll20, Fantasy Grounds, etc) while remaining entirely free to use.
That being said, I am a student and this is hardly professional work. While it is functional, I do not pretend that it comes close to the functionality of those sites, and it probably never will. However, it should be just about as useful, especially for D&D players on a budget.
 He was a rather generic elven wizard, complete with a bad British accent and a Gandalf-esque staff. Still, he was probably one of the most amusing characters I've ever played.
Despite the size and breadth of Xorien's Lair, this is at its core a school project. I've poured a lot of love into it, and I will likely continue upgrading it along the way, as one of its main purposes was to provide me with a good alternative to Roll20 and/or Google Drawings. However, due to the complexity and my own limitations, not every feature is guaranteed to work outside of Chrome, on slow WiFi, or on mobile devices. I might try to implement support for these later on, but I might not.
Additionally, (provided that you are reading this on the site that I'm hosting) I host my projects from a desktop computer in my house. My WiFi is decently fast, but this is in no way a data center. So, if there's lag or the server goes down, that's probably why. In case of outages, create a GitHub issue or email me.
Have fun, and may the dice be ever in your favor!


Congress cadre condemn Centre’s economic policies, stage protest
by Staff ReporterMembers of the Congress Party staged a protest in front of the District Collectorate here on Saturday condemning the economic policies of the Centre.
Slogans raised
Led by former Union Minister K.V. Thangkabalu and Member of Parliament K. Jayakumar, the protesting members raised slogans against the Centre and alleged that the Union government’s policies had led to job loss, drop in GDP growth and agrarian crisis.
Talking to presspersons, Mr. Thangkabalu said, “ the current economic policies has put India’s development under question. There is drop in production in sectors such as agriculture and micro, small and medium enterprises. To revive the economy, the Centre must waive off farm loans and offer long term loans to MSMEs,” he said. On BJP forming government in Karnataka, Mr. Thangkabalu said there was no surprise element in it. “The government will not last. The BJP has no respect for law or political ethics”, he said.


{% extends "layout.html" %} {% block title %}Index{% endblock %} {% block navitems %}
| Package Name | Package Version | Package Index | Affected System | Summary | Updateable? | Inspect Package |
|---|---|---|---|---|---|---|
| Package Name | Package Version | Package Index | Affected System | Summary | Updateable? | Inspect Package |


The visible range is limited in this demo:
- minimum visible date is limited to the start of the data using option
min
- maximum visible date is limited to the end of the data using option
max
- visible interval is limited to a minimum of 10 minutes using option
zoomMin
Other options:
- visible interval can be limited to a maximum using option
intervalMax
- vertical range can be limited using the options
vMin
and vMax


class FragmentBag implements Iterator
Class FragmentBag
Methods
|
__construct()
|
||
| mixed |
current()
(PHP 5 >= 5.0.0) |
|
| void |
next()
(PHP 5 >= 5.0.0) |
|
| mixed |
key()
(PHP 5 >= 5.0.0) |
|
| boolean |
valid()
(PHP 5 >= 5.0.0) |
|
| void |
rewind()
(PHP 5 >= 5.0.0) |
|
|
clear()
Clears all parameters. |
||
|
isEmpty()
|
||
|
getCount()
|
||
|
add($data)
|
||
|
addFragment(Fragment $fragment)
|
||
| array |
keys()
Gets the all keys fragment. |
Details
at line 29
public
__construct()
at line 41
public mixed
current()
(PHP 5 >= 5.0.0)
Return the current element
at line 52
public void
next()
(PHP 5 >= 5.0.0)
Move forward to next element
at line 63
public mixed
key()
(PHP 5 >= 5.0.0)
Return the key of the current element
at line 75
public boolean
valid()
(PHP 5 >= 5.0.0)
Checks if current position is valid
at line 86
public void
rewind()
(PHP 5 >= 5.0.0)
Rewind the Iterator to the first element
at line 96
public
clear()
Clears all parameters.
at line 102
public
isEmpty()
at line 107
public
getCount()
at line 112
public
add($data)
at line 118
public
addFragment(Fragment $fragment)
at line 130
public array
keys()
Gets the all keys fragment.


{% extends "header.html" %} {% block body %}
Alright, so our dice works!
Now we need to create a bettor. Eventually, we'll create some more sophisticated bettors, but we'll start extremely basic for now, as even the simplist bettor will actually show us some fascinating things when it comes to chance and possibility, using a monte carlo generator.
import random # let us go ahead and change this to return a simple win/loss def rollDice(): roll = random.randint(1,100) if roll == 100: print roll,'roll was 100, you lose. What are the odds?! Play again!' return False elif roll <= 50: print roll,'roll was 1-50, you lose.' return False elif 100 > roll >= 50: print roll,'roll was 51-99, you win! *pretty lights flash* (play more!)' return True ''' Simple bettor, betting the same amount each time. ''' def simple_bettor(funds,initial_wager,wager_count): value = funds wager = initial_wager currentWager = 0 while currentWager < wager_count: if rollDice(): value += wager else: value -= wager currentWager += 1 print 'Funds:', value simple_bettor(10000,100,100)


Pingpong Project
Rules
Ping pong will count up to your number from 1 with the following exceptions:
Numbers divisible by 3 become "ping".
Numbers divisible by 5 become "pong".
Numbers divisible by 15 become "pingpong".
Enter a number:
Ping Pong!


Entity¶
-
class
amplpy.
Entity
(_impl, wrapFunction=None)¶ An AMPL entity such as a parameter or a variable.
An entity can either represent a single instance of an AMPL algebraic entity or, if the corresponding declaration has an indexing expression, a mapping from keys to instances. In the derived classes, it has methods to access instance-level properties which can be used in case the represented entity is scalar.
To gain access to all the values in an entity (for all instances and all suffixes for that entities), use the function
getValues()
.The algebraic entities which currenty have an equivalent class in the API are:
Variables (see
Variable
)Constraints (see
Constraint
)Objectives (see
Objective
)Sets (see
Set
)Parameters (see
Parameter
)
-
__init__
(_impl, wrapFunction=None)¶ Initialize self. See help(type(self)) for accurate signature.
-
__iter__
()¶
-
__getitem__
(index)¶
-
__setitem__
(index, value)¶
-
get
(*index)¶ Get the instance with the specified index.
- Returns:
The corresponding instance.
-
find
(*index)¶ Searches the current entity for an instance with the specified index.
- Returns:
The wanted instance if found, otherwise it returns None.
-
instances
()¶ Get all the instances in this entity..
-
name
()¶ Get the name of this entity.
-
indexarity
()¶ Get the indexarity of this entity (sum of the dimensions of the indexing sets). This value indicates the arity of the tuple to be passed to the method
get()
in order to access an instance of this entity. See the following AMPL examples:var x; # indexarity = 0 var y {1..2}; # indexarity = 1 var z {1..2,3..4}; # indexarity = 2 var zz {{(1, 2)}}; # indexarity = 2
- Returns:
The sum of the dimensions of the indexing sets or 0 if the entity is not indexed.
-
isScalar
()¶ Check whether this entity is scalar. Equivalent to testing whether
indexarity()
is equal to zero.- Returns:
True if the entity is scalar (not indexed over any set).
-
numInstances
()¶ Get the number of instances in this entity.
-
getIndexingSets
()¶ Get the AMPL string representation of the sets on which this entity is indexed. The obtained vector can be modified without any effect to the entity.
- Returns:
The string representation of the indexing sets for this entity or an empty array if the entity is scalar.
-
getValues
(suffixes=None)¶ If a list of suffixes is provided, get the specified suffixes value for all instances. Otherwise, get all the principal values of this entity. The specific returned value depends on the type of entity (see list below). For:
Variables and Objectives it returns the suffix
val
.Parameters it returns their values.
Constraints it returns the suffix
dual
.Sets it returns all the members of the set. Note that it does not apply to indexed sets. See
getValues()
.
- Retruns:
A
DataFrame
containing the values for all instances.
-
setValues
(data)¶ Set the values of this entiy to the correponding values of a DataFrame indexed over the same sets (or a subset). This function assigns the values in the first data column of the passed dataframe to the entity the function is called from. In particular, the statement:
x.setValues(y.getValues())
is semantically equivalent to the AMPL statement:
let {s in S} x[s] := y[s];
- Args:
data: The data to set the entity to.
-
__module__
= 'amplpy.entity'¶


Several features were added on the 1.0.4, here you have the most relevant ones:
Added changelog, yep, pretty obvious as you're now seeing it. But we must tell you as that's his purpose.
More friendly UI to load music, you can drop a folder to scan music from there. Better and easier!
You can resize the window to an smaller width, the UI will change and some options won't be available.
Player improvements:
Settings window: what will be an app without his settings? So here you have it. You can open it pressing Ctrl + O
or right clicking on a song and pressing «settings». We are currently building it so there're not many things done yet. Here you will be able to change the theme, hotkeys and some other parameters.


@(localUser: org.hadatac.console.models.SysUser = null) @import org.hadatac.console.views.html._ @import org.hadatac.console.controllers._ @main("User profile","profile",localUser.getEmail) {
Your name is @localUser.getName() and your email address is @if(!localUser.getEmail()) {<unknown>.} else {
@localUser.getEmail().
@if(!localUser.getEmailValidated() && localUser.getEmail()) {
(unverified - click to verify)
} else {
(verified)
}
}
Your user URI is: @localUser.getUri()
@if(localUser.getFirstName() && localUser.getLastName()) {
Your first name is @localUser.getFirstName() and your last name is @localUser.getLastName()
}
@defining(localUser.getProviders()) { providers =>
@if(providers.size() > 0) {
@if(providers.size() ==1) {
There is one provider linked with your account:
} else {
There are providers.size().toString() providers linked with your account:
}
@for(p <- providers) {
@_providerIcon(p)
}
}
}
@* @currentAuth(playAuth) { auth =>*@
@* You are currently logged in with: @_providerIcon(auth.getProvider())
*@
@* @if(auth.expires() != -1){*@
@* "Your user ID is " auth.getId() "and your session will expire on" AuthApplication.formatTimestamp(auth.expires())*@
@* } else {*@
@* "Your user ID is" auth.getId() "and your session will not expire, as it is endless"*@
@* }*@
@* }*@


<abstract>
The <abstract>
element occurs between the topic title and the topic
body. It is presented as the initial content of a topic. The
<abstract>
can contain paragraph-level content as well as one or
more <shortdesc>
elements which can be used for providing link
previews or summaries.
Category: Basic topic elements


All Pies
All Kinds O Pies
Bacon ipsum dolor amet turducken venison meatball frankfurter tri-tip bacon chuck cow biltong. Kevin alcatra bresaola, t-bone cupim pork chop ball tip chislic venison strip steak shoulder chicken turducken pancetta. Porchetta brisket pancetta, bresaola jowl ball tip meatloaf pork belly shank. Chislic cupim boudin, meatball short loin pork loin flank frankfurter. Alcatra ham hock filet mignon short loin ham, chislic spare ribs pork chop beef ribs landjaeger. Filet mignon sirloin shoulder, flank picanha chislic pork.
Cheese Cake
Plain cheese cake. Plain pleasure.
$12.95
Apple pie
Our famous apple pie.
Cranberry pie
A Christmas favorite
$18.95
Cherry pie
A summer classic!
$18.95
$18.95
Pumpkin pie
Our Halloween favorite
$18.95
Christmas apple pie
Happy holidays with this pie!
$19.95
Blueberry cheese cake
You'll love it!
$17.95
Rhubarb Pie
My God, so sweet!
$21.95
Strawberry Pie
Our delicious strawberry pie!
$18.95
Strawberry Cheese Cake
One of the best cheese cakes you'll ever find!
$18.95