Index
A B C D E F G H I K L M N O P R S T U V W
All Classes All Packages
All Classes All Packages
All Classes All Packages
G
- GALAXIAN_BOSS - modele.game.entities.StaticEntity
- game - Variable in class modele.game.CollisionManager
- Game - Class in modele.game
- Game() - Constructor for class modele.game.Game
- GAME_OVER - controller.view.GUIElement
- GAME_SCREEN - modele.game.enums.GameState
- gameLogic() - Method in class modele.game.Game
-
Compute a Tick of the game (different from the drawn frames)
- gameState - Variable in class modele.game.Game
- GameState - Enum in modele.game.enums
- GameState() - Constructor for enum modele.game.enums.GameState
- GATE - modele.game.entities.StaticEntity
- gate_bt - Variable in class controller.editor.Controller
- gate_bt_click() - Method in class controller.editor.Controller
- generate(int, int) - Method in class modele.editor.Editor
-
Generate a random map of a certain size
- generateMap(int, int, Map<Point, StaticEntity>) - Method in class modele.editor.MapGenerator
-
Generate a Map usable by the Game of size (x, y) It will first generate the left side of a Tetris like grid with a fixed tile representing the Ghost's starting position __________________ | |___ | | | | __| |_____| | |__| |__| |_____| | __| __| | <- Ghost |__| |__| |_____| <- starting | |_____|________| | |___ |___ |__| |_____|_____|_____| The grid is mirrored to generate a symmetric map and the shapes are scaled by 2 to avoid 0 thickness Paths and Walls The edges are then converted to Paths and the inside of the Shapes to Walls This generate a set of path with no dead ends
- getAnimationPercent(MoveableEntity) - Method in class modele.game.Game
-
Get the advancement between 2 updates of an entity Used to calculate inter-update animations
- getBestDirToTarget(Grid, EntityGhost, Point) - Method in class modele.game.entities.logic.TargetTileFinder
-
When to target position has been determined it will determine the best one from the authorized moves the best one is the one minimizing the Euclidean Distance to the target
- getButton(String) - Method in enum modele.game.enums.MenuTab
-
Return a specific button
- getButtonList() - Method in enum modele.game.enums.MenuTab
-
Return a set of every button's identifier
- getCommonBehaviour(Grid, EntityGhost) - Method in class modele.game.entities.logic.TargetTileFinder
-
If the ghost trying to move is in certain states : FRIGHTENED, EATEN, STILL or STARTING the behavior is common to every ghosts this methods compute this common behavior
- getCount() - Method in enum modele.game.entities.StaticEntity
-
Return the count of the entity
- getCurrentDirection() - Method in class modele.game.entities.MoveableEntity
-
Return the last action performed by the entity
- getDimension() - Method in class modele.game.Grid
-
Compute the dimension of the grid and update it
- getDirection(MoveableEntity) - Method in class modele.game.Game
-
Return the current direction of a MoveableEntity
- getDirection(Grid, EntityGhost, EntityPlayer) - Method in class modele.game.entities.logic.TargetBlinky
-
Return the Movement minimizing the Euclidean distance to the target point that is the player's position
- getDirection(Grid, EntityGhost, EntityPlayer) - Method in class modele.game.entities.logic.TargetClyde
-
Return the Movement minimizing the Euclidean distance to the target point that is the player's position except if the player closed than 4 tiles, in which case the target point became the bottom left corner
- getDirection(Grid, EntityGhost, EntityPlayer) - Method in class modele.game.entities.logic.TargetInky
-
Return the Movement minimizing the Euclidean distance to the target point that is the symmetric of blinky's position relative to the point 2 tile in front of the player (Pivot point) if the player is facing up the Pivot point became 2 tiles up and left _______________ _______________ | B | | X | | | | | | | | P--o | | o-- | | | | | | | | | X | | B P | |______________| |______________| P : Player o : Pivot point B : Blinky X target
- getDirection(Grid, EntityGhost, EntityPlayer) - Method in class modele.game.entities.logic.TargetPinky
-
Return the Movement minimizing the Euclidean distance to the target point that is the point 2 tile in front of the player except if the player is facing up, in which case it return the point 2 tile up and left from the player
- getDirection(Grid, EntityGhost, EntityPlayer) - Method in class modele.game.entities.logic.TargetTileFinder
-
Calculate the target point and return the direction that minimise the euclidean distance to that point
- getDistSquared(Point, Point) - Static method in class modele.Utils
-
Return the distance squared between 2 points
- getDuration() - Method in class controller.view.ImageAtlas
-
Return the duration the animation
- getDuration(SpriteID) - Method in class controller.view.Sprite
-
Return the duration of a Sprite animation
- getDynamicScoreEventValue() - Method in class modele.game.Game
-
Return the score got from Eating a Fruit or a Ghost during the last update
- getEatenGhostMultiplier() - Method in class modele.game.entities.EntityPlayer
-
Return the Score Multiplier applied when eating a ghost
- getEdges() - Method in class modele.editor.Shape
- getEntities() - Method in class modele.game.Game
-
Return a set of all MoveableEntity
- getEntities() - Method in class modele.game.Grid
-
Return a set of all MoveableEntity in the grid
- getFontSize() - Method in class modele.game.Button
-
Get the button's font size
- getFrame(SpriteID) - Method in class controller.view.Sprite
-
Return the current Frame of a Sprite animation
- getGameState() - Method in class modele.game.Game
-
Return the current GameState
- getGhost(GhostName) - Method in class modele.game.Game
-
Return a MoveableEntity with a specific name
- getHighscores() - Method in class modele.game.Game
-
Return the list of all highscores
- getHitbox() - Method in class modele.game.Button
-
Get the bounding box of the button
- getImage() - Method in class controller.view.ImageAtlas
-
Return the current Frame the animation
- getInstance() - Static method in class modele.editor.Editor
-
Get the current instance of the Editor
- getInstance() - Static method in class modele.game.Game
-
Get the current instance of the Editor
- getInstance() - Static method in class modele.Loader
-
Return an instance of the class
- getInstance() - Static method in class modele.Menu
-
Return an instance of the class
- getInstance(boolean) - Static method in class modele.editor.Editor
-
Get the current instance of the Editor or a new one
- getKey(Input) - Method in class controller.input.InputController
-
Get the key associated to an Input
- getLastActionTime() - Method in class modele.game.entities.MoveableEntity
-
Return the time in ms at which the last action was performed
- getLegalMoves(Grid, EntityGhost) - Method in class modele.game.entities.logic.TargetTileFinder
-
Return a List of Movement that are allowed for a ghost in a grid
- getLevel() - Method in class modele.game.Game
-
Return the current level
- getLevelInterval() - Method in class modele.editor.Editor
-
Return the current grid's level interval
- getLives() - Method in class modele.game.entities.EntityPlayer
-
Get the number of lives of the player
- getLives() - Method in class modele.game.Game
-
Get the number of lives of the player
- getMovementMap() - Method in class modele.game.Grid
-
Return the movement map of the grid
- getName() - Method in class modele.game.entities.EntityGhost
-
Return the name (aka Ghost identifier)
- getName() - Method in class modele.game.Score
-
Get the username associated with that score
- getPlayer() - Method in class modele.game.Game
-
Get the player MoveableEntity
- getPosition(MoveableEntity) - Method in class modele.game.Game
-
Return the position of a specific MoveableEntity
- getPosition(MoveableEntity) - Method in class modele.game.Grid
-
Get the position of a MoveableEntity
- getScore() - Method in enum modele.game.entities.StaticEntity
-
Return the score of the entity when walked over by the player
- getScore() - Method in class modele.game.Score
-
Return the value of the score
- getScoreToSave() - Method in class modele.game.Game
-
Get the score to save to the Highscore database
- getSizeX() - Method in class modele.editor.Editor
-
Return the size of the map along the x-axis
- getSizeX() - Method in class modele.game.Game
-
Return the size of the map along the x-axis
- getSizeX() - Method in class modele.game.Grid
-
Get the size of the grid along the x-axis
- getSizeY() - Method in class modele.editor.Editor
-
Return the size of the map along the y-axis
- getSizeY() - Method in class modele.game.Game
-
Return the size of the map along the y-axis
- getSizeY() - Method in class modele.game.Grid
-
Get the size of the grid along the y-axis
- getSpawnPoint() - Method in class modele.game.entities.MoveableEntity
-
Return the entity's Spawn Point
- getStartingPoint() - Method in class modele.game.entities.EntityGhost
-
Return the current starting point
- getState() - Method in class modele.game.entities.EntityGhost
-
Return the current state of the entity
- getStaticEntity(Point) - Method in class modele.game.Grid
-
Get the StaticEntity at a position
- getStaticEntity(Movement, Point) - Method in class modele.game.Grid
-
Get the StaticEntity at a position + one move
- getStaticEntityCount(StaticEntity) - Method in class modele.game.Grid
-
Return the count of a specific StaticEntity
- getTab() - Method in class modele.Menu
-
Return the current MenuTab
- getTargetFinder(GhostName) - Static method in class modele.game.entities.logic.TargetTileFinder
-
Return a TargetFinder for a specific GhostName
- getText() - Method in class modele.game.Button
-
Return the text of the button
- getTileType(Point) - Method in class modele.editor.Editor
-
Return the StaticEntity at a certain position
- getTileType(Point) - Method in class modele.game.Game
-
Return the StaticEntity at a certain position
- getTileType(Movement, Point) - Method in class modele.editor.Editor
-
Return the StaticEntity at a certain position moved by a dir
- getTileType(Movement, Point) - Method in class modele.game.Game
-
Return the StaticEntity at a certain position moved by a dir
- getTotalScore() - Method in class modele.game.Game
-
Return the total score got since the start of the game
- getWallMask(Point) - Method in class controller.editor.EditorViewController
-
Compute the binary mask of a specific tile
- getWallMask(Point) - Method in class controller.view.ViewController
-
Compute the binary mask of a specific tile
- GHOST_FRIGHTENED - controller.audio.AudioID
- GHOST_HOME - controller.audio.AudioID
- GHOST_HOME - modele.game.entities.StaticEntity
- ghost_home_bt - Variable in class controller.editor.Controller
- ghost_home_bt_click() - Method in class controller.editor.Controller
- GHOST_SIREN - controller.audio.AudioID
- GHOST_SPAWN - modele.game.entities.StaticEntity
- ghost_spawn_bt - Variable in class controller.editor.Controller
- ghost_spawn_bt_click() - Method in class controller.editor.Controller
- GHOST_UPDATE_INTERVAL - Static variable in class modele.game.Game
- GhostName - Enum in modele.game.enums
- GhostName() - Constructor for enum modele.game.enums.GhostName
- GhostState - Enum in modele.game.enums
- GhostState() - Constructor for enum modele.game.enums.GhostState
- go_to_bt - Variable in class controller.editor.Controller
- go_to_bt_clicked() - Method in class controller.editor.Controller
- grid - Variable in class modele.editor.Editor
- grid - Variable in class modele.game.CollisionManager
- grid - Variable in class modele.game.entities.MoveableEntity
- grid - Variable in class modele.game.Game
- Grid - Class in modele.game
- Grid() - Constructor for class modele.game.Grid
- gui - Variable in class controller.view.ViewController
- GUIElement - Enum in controller.view
- GUIElement() - Constructor for enum controller.view.GUIElement
- GUITileMap - Variable in class controller.view.ViewController
- GUM - modele.game.entities.StaticEntity
- gum_bt - Variable in class controller.editor.Controller
- gum_bt_click() - Method in class controller.editor.Controller
All Classes All Packages


This is a low level NodeJS API for idziennik (iuczniowie.progman.pl/idziennik) built on top of unirest library. It features Promise-based API and formats idziennik responses to more robust format.
Install from npm
npm install idziennik-api
You can build this module if you want to use the bleeding edge version. Although it may be unstable or have bugs it allows you to use newest features before official release. You need to have NodeJS installed in order to build the module.
git clone https://github.com/legion44/idziennik-api
cd idziennik-api
npm install
npm run build
MIT
THE SOFTWARE AND SOFTWARE AUTHOR ARE IN NO WAY AFFILIATED WITH, AUTHORIZED, MAINTAINED, SPONSORED OR
ENDORSED BY THE WOLTERS KLUWER POLSKA SA OR ANY OF ITS AFFILIATES OR SUBSIDIARIES.
To authenticate user must provide captcha alongside credentials. Captcha is fetched as a Base64 encoded gif image. To access most of the API, registerId must be fetched first, see IStudentInfo for details. The registerId is not static, it is different for every school year (even for same student!).
Below is a simple program that reads credentials from credentials.json file located in same directory, asks user for captcha and prints student info. Note that, for simplicity, this example lacks error checking and contains only absolutely needed code.
const idziennik = require('idziennik-api');
const readline = require('readline');
const fs = require('fs');
// read credentials from file and parse it to JSON
const credentials = JSON.parse(fs.readFileSync('./credentials.json'));
// these variables will be used to store session data
var session = {};
var aspxAuth = {};
idziennik.openSession()
.then(openSessionResponse =>
{
// assign session info to variables
session.sessionId = openSessionResponse.sessionId;
aspxAuth = openSessionResponse.aspxAuth;
// after opening session we can fetch captcha image, it will be Base64 encoded
return idziennik.fetchCaptcha({ sessionId: session.sessionId });
})
.then(fetchCaptchaResponse =>
{
// ask user to enter captcha
readline.question(fetchCaptchaResponse.captchaBase64 + ': ', answer =>
{
credentials.captcha = answer;
idziennik.login({ sessionId: session.sessionId, aspxAuth: aspxAuth, credentials: credentials })
.then(loginResponse =>
{
if(loginResponse.authenticated)
{
// if successful, response will contains tokens needed to use rest of the API
session.bearerToken = loginResponse.bearerToken;
session.privateToken = loginResponse.privateToken;
// if login is ok, we return fetch promise
return idziennik.fetchStudentInfo({ session: session });
}
else
{
// if login failed, we return promise that is rejected, so code in following then() will not be executed
return Promise.reject('Invalid credentials!');
}
})
.then(studentInfo =>
{
// should print student info to console
console.dir(studentInfo);
})
.catch(reason =>
{
// will print 'Invalid credentials!' to console
console.error(reason);
});
});
});


VK is the largest European social network with more than 100 million active users.
Sign up for VK
What can you do on VK?
- Find people with whom you've studied, worked or met on vacation.
- Learn more about people around you and make new friends.
- Stay in touch with loved ones.


---
layout: archive
title: Lean Prover Zulip Chat Archive
permalink: 113488general/90404unifyfailsinthepresenceofbinders.html
---
The archive URL format has changed. Please find this page at:
https://leanprover-community.github.io/archive/stream/113488-general/topic/unify.20fails.20in.20the.20presence.20of.20binders.html


PUBLIC LAND BANKING
Section 4. The State shall have the power to acquire interests in real property to control future growth, development and land use within the State. The exercise of such power is deemed to be for a public use and purpose. [Add Const Con 1978 and election Nov7, 1978]


Welcome to BUMUN
Prestigious Model UN conference for school/college/university students in karachi. BU MUN is widely knows for its highly engaging debates, and its academically rigorous material. It offers delegates unparalleled access to the UN system. Students can attend in-person meetings with the shadow diplomatic representatives of the countries they are representing


{{with .RequestingUser}}
{{if not .ActiveFriends}}
You have no active friends.
{{else}}
Your active friends are:
| Friend User Id |
| {{.}} |
{{if not .ReceivedPendingFriends}}
You have no received pending friends.
{{else}}
Your received pending friend requests are:
| Friend User Id | Accept Request |
| {{.}} |


Buddy
Fetcher
Latest Items
Today is: 28-Jun-2020 16:49 GMT
Home
•
Browse Items
•
Items by Categories
•
Read RSS Feeds
•
Sources
Filter by source:
-- Show All --
education.usnews.com [47]
health.usnews.com [99]
money.usnews.com [100]
news.usnews.com [99]
opinion.usnews.com [100]
travel.usnews.com [100]
Browse Items ... from 'health.usnews.com'
Page
4
from
4
Item
Creator
Published
Photos: Take a Tour of St. Jude Children's Research Hospital
Brett Ziegler
23-Sep-2015
13:00 GMT
An Early Defense Against Alzheimer's Disease
Cathie Gandel
18-Sep-2015
17:20 GMT
Sepsis: The Little-Discussed National Crisis
Kimberly Leonard
17-Sep-2015
11:00 GMT
3-D Printing to the Rescue
Steve Sternberg
16-Sep-2015
14:54 GMT
The Travel Trend in Health Care
Beth Howard
15-Sep-2015
00:46 GMT
When the Hospital Is Boss, That's Where Doctors' Patients Go
Kaiser Health News
10-Sep-2015
17:20 GMT
Doctoring From a Distance
Deborah Kotz
09-Sep-2015
17:54 GMT
Hospitals Are in the Business of Prevention
Christopher J. Gearon
08-Sep-2015
19:32 GMT
Study: Doctor-Owned Hospitals Are Not Cherry-Picking Patients
Kaiser Health News
08-Sep-2015
14:24 GMT
Patient of the Future
Eric Topol
02-Sep-2015
13:00 GMT
Some Hospitals Boost Health by Preventing Violence, Attacking Social Determinants
Christopher J. Gearon
24-Aug-2015
18:54 GMT
Op-Ed: A New Prescription for the Health Care Industry? Fresh Food
Richard Schenkel
14-Aug-2015
20:58 GMT
Half of Nation's Hospitals Fail Again to Escape Medicare's Readmission Penalties
Kaiser Health News
05-Aug-2015
16:02 GMT
Health Care Industry Rethinks Leadership, Delivery of Care
Steve Sternberg
05-Aug-2015
14:08 GMT
New Paper Explores How Precision Medicine Can Flourish
Kimberly Leonard
23-Jul-2015
19:13 GMT
How Much Does it Cost to Have a Baby?
Kaiser Health News
21-Jul-2015
18:52 GMT
The Honor Roll of Best Hospitals 2015-16
Categories
: Massachusetts
Avery Comarow
21-Jul-2015
04:01 GMT
Which Practitioner Do I See, and When?
Samantha Costa
21-Jul-2015
04:01 GMT
Best Hospitals 2015-16: Guide to the Terms
U.S. News Staff
21-Jul-2015
04:01 GMT
Can Your Community Hospital Handle … This?
Lisa Esposito
21-Jul-2015
04:01 GMT
What to Do During a Mental Health Crisis
Anna Medaris Miller
21-Jul-2015
04:01 GMT
Best Hospitals 2015-16: an Overview
Ben Harder
21-Jul-2015
04:01 GMT
When Insurance Denies Your Hospital Upgrade
Lisa Esposito
21-Jul-2015
04:01 GMT
Hospitals Have Little to Gain From New Payment Models
Kimberly Leonard
17-Jul-2015
19:33 GMT
Pages: [
1
]
...
[
2
] [
3
]
=4=
Items by Categories
Items for '
Alabama
'
(2)
Items for '
Alaska
'
(2)
Items for '
Arizona
'
(1)
Items for '
Arkansas
'
(2)
Items for '
California
'
(19)
Items for '
Colorado
'
(3)
Items for '
Connecticut
'
(1)
Items for '
Delaware
'
(1)
Items for '
Florida
'
(9)
Items for '
Georgia
'
(6)
Items for '
Hawaii
'
(2)
Items for '
Illinois
'
(5)
Items for '
Indiana
'
(3)
Items for '
Iowa
'
(1)
Items for '
Kansas
'
(1)
Items for '
Kentucky
'
(4)
Items for '
Louisiana
'
(8)
Items for '
Massachusetts
'
(3)
Items for '
Michigan
'
(2)
Items for '
Minnesota
'
(2)
Items for '
Mississippi
'
(3)
Items for '
Missouri
'
(3)
Items for '
Nevada
'
(2)
Items for '
New Mexico
'
(2)
Items for '
New York
'
(6)
Items for '
North Carolina
'
(1)
Items for '
Ohio
'
(1)
Items for '
Oklahoma
'
(1)
Items for '
Oregon
'
(2)
Items for '
Tennessee
'
(1)
Items for '
Texas
'
(7)
Items for '
Utah
'
(3)
Items for '
Virginia
'
(1)
Items for '
Washington
'
(8)
Items for '
Wisconsin
'
(1)
Items for '
Wyoming
'
(1)
Items for '
Puerto Rico
'
(1)
Items for '
World - Britain
'
(4)
Items for '
World - Canada
'
(1)
Items for '
World - China
'
(8)
Items for '
World - Czech Republic
'
(2)
Items for '
World - France
'
(5)
Items for '
World - Germany
'
(2)
Items for '
World - Iran
'
(3)
Items for '
World - Mexico
'
(6)
Items for '
World - Netherlands
'
(1)
Items for '
World - Poland
'
(2)
Items for '
World - Russia
'
(9)
Items for '
World - South Korea
'
(2)
Items for '
World - Scotland
'
(1)
RSS-feeds by Categories
New!
Feed for '
Alabama
'
Feed for '
Alaska
'
Feed for '
Arizona
'
Feed for '
Arkansas
'
Feed for '
California
'
Feed for '
Colorado
'
Feed for '
Connecticut
'
Feed for '
Delaware
'
Feed for '
Florida
'
Feed for '
Georgia
'
Feed for '
Hawaii
'
Feed for '
Idaho
'
Feed for '
Illinois
'
Feed for '
Indiana
'
Feed for '
Iowa
'
Feed for '
Kansas
'
Feed for '
Kentucky
'
Feed for '
Louisiana
'
Feed for '
Maine
'
Feed for '
Maryland
'
Feed for '
Massachusetts
'
Feed for '
Michigan
'
Feed for '
Minnesota
'
Feed for '
Mississippi
'
Feed for '
Missouri
'
Feed for '
Montana
'
Feed for '
Nebraska
'
Feed for '
Nevada
'
Feed for '
New Hampshire
'
Feed for '
New Jersey
'
Feed for '
New Mexico
'
Feed for '
New York
'
Feed for '
North Carolina
'
Feed for '
North Dakota
'
Feed for '
Ohio
'
Feed for '
Oklahoma
'
Feed for '
Oregon
'
Feed for '
Pennsylvania
'
Feed for '
Rhode Island
'
Feed for '
South Carolina
'
Feed for '
South Dakota
'
Feed for '
Tennessee
'
Feed for '
Texas
'
Feed for '
Utah
'
Feed for '
Vermont
'
Feed for '
Virginia
'
Feed for '
Washington
'
Feed for '
West Virginia
'
Feed for '
Wisconsin
'
Feed for '
Wyoming
'
Feed for '
American Samoa
'
Feed for '
District of Columbia
'
Feed for '
Federated States of Micronesia
'
Feed for '
Guam
'
Feed for '
Marshall Islands
'
Feed for '
Northern Mariana Islands
'
Feed for '
Palau
'
Feed for '
Puerto Rico
'
Feed for '
Virgin Islands
'
Feed for '
World - Britain
'
Feed for '
World - Canada
'
Feed for '
World - China
'
Feed for '
World - Czech Republic
'
Feed for '
World - France
'
Feed for '
World - Germany
'
Feed for '
World - Iran
'
Feed for '
World - Mexico
'
Feed for '
World - Netherlands
'
Feed for '
World - Poland
'
Feed for '
World - Russia
'
Feed for '
World - South Korea
'
Feed for '
World - Scotland
'
Copyright © 2020
Buddy Fetcher
Powered by
Buddy Fetcher for NET


Example on columbia.edu
Formula:
$$COV(x,y) = \frac{ \sum_{i=1}^n (x_i - \bar x)(y_i - \bar y) }{n-1}$$
Covariance refers to the relationship between two variables. If it's positive, they're directly correlated, if it's negative they're inversly correlated. The larger the absolute value of the covariance, the stronger the relationship between the variables


Nyzo version 598 (commit on GitHub) adds serialization and deserialization of the CycleDigest class.
This version does not yet affect any run modes.
In version 596, the CycleDigest was introduced. While this class will be useful locally, it will also be useful for transmission to other systems to aid in initialization. This version adds serialization and deserialization of CycleDigest objects. It also adds, to the CycleDigestTest class, verification of the serialization and deserialization processes.
The CycleDigest class now implements the MessageObject interface.
In CycleDigest, the numberOfUniqueIdentifiers field was added. This value is needed by the getByteSize() method, and it is expensive to calculate.
The constructor for CycleDigest no longer accepts a cycleStartIndices argument. These are now derived in the constructor. Also, the new numberOfUniqueIdentifiers field is calculated, and the identifiers list is appropriately trimmed. These changes were made to reduce code duplication with the new fromByteBuffer() method.
Calculation of cycleStartIndices in CycleDigest.digestForNextBlock() was moved to a separate method.
The getByteSize() method is required by the MessageObject interface. The comments explain how the object is serialized. This representation reduces typical serialized size by about 74% relative to a naive implementation that serializes the full identifier list directly.
The CycleDigest.getBytes() method is an obvious implementation to anyone who reads and understands the comment in getByteSize(). This method, which serializes the object, is required by the MessageObject interface.
The CycleDigest.fromByteBuffer() method deserializes the object. It is a static (class, not instance) method, so it is not a part of the MessageObject interface. However, this method is, by convention, implemented by all classes that implement the MessageObject interface.
To facilitate comparisons in CycleDigestTest, the CycleDigest.hashCode() and CycleDigest.equals() methods were implemented. In Java, overriding the hashCode() method is necessary when overriding the equals() method. If two objects are equal, they must have the same hash code.
Implementation of these methods is typically uninteresting. The hashCode() method can take advantage of the Objects.hash() method, which should be provided with all pertinent fields from the object. The equals method handles exact-object comparisons, null values, and type differences, producing a result based on comparison of all pertinent fields when the provided object is the correct type.
The CycleDigestTest class now serializes and deserializes every CycleDigest, comparing the deserialized copy to the original. If any differences are found, a message is printed and the test terminates.


The purpose of rintrinio is to take the data from Intrinio and make it extraordinarily easy to move to a format for analysis in R.
This document introduces you to the functions included in this package.
The four functions in the package are as follows:
gather_financial_statement_time_series()
to compare a single company’s financial statements over timegather_financial_statement_company_compare()
to compare multiple company’s financial statements in a single periodgather_stock_time_series()
to gather a time series of stock price informationgather_stock_returns()
to gather returns of stocks over timegather_financial_statement_time_series()
gather_financial_statement_time_series()
takes in information that would be spread across multiple lines when querying the Intrinio API directly, and puts it into a function that by default returns a dataframe that is ready to be used for analysis. This function should be used for time series analysis of financial statements (income statement, balance sheet, or cash flow statement).
For example, we can compare Apple’s 2018 and 2019 Q1 Balance Sheet:
time_series <- gather_financial_statement_time_series(api_key = api_key,
ticker = 'AAPL',
statement = 'balance_sheet_statement',
year = c("2018", "2019"), period = c('Q1'))
knitr::kable(time_series)
| type | fin_value | fin_value. |
|---|---|---|
| ticker | AAPL | AAPL |
| statement | balance_sheet_statement | balance_sheet_statement |
| year | 2018 | 2019 |
| period | Q1 | Q1 |
| cashandequivalents | 2.7491e+10 | 4.4771e+10 |
| shortterminvestments | 4.9662e+10 | 4.1656e+10 |
| notereceivable | 2.7459e+10 | 1.8904e+10 |
| accountsreceivable | 2.344e+10 | 1.8077e+10 |
| netinventory | 4.421e+09 | 4.988e+09 |
| othercurrentassets | 1.1337e+10 | 1.2432e+10 |
| totalcurrentassets | 1.4381e+11 | 1.40828e+11 |
| netppe | 3.3679e+10 | 3.9597e+10 |
| longterminvestments | 2.07944e+11 | 1.58608e+11 |
| goodwill | 5.889e+09 | NA |
| intangibleassets | 2.149e+09 | NA |
| othernoncurrentassets | 1.3323e+10 | 3.4686e+10 |
| totalnoncurrentassets | 2.29305e+11 | 1.93294e+11 |
| totalassets | 4.06794e+11 | 3.73719e+11 |
| shorttermdebt | -1.8478e+10 | -2.1741e+10 |
| accountspayable | -6.2985e+10 | -4.4293e+10 |
| accruedexpenses | -2.6281e+10 | NA |
| currentdeferredrevenue | -8.044e+09 | -5.546e+09 |
| totalcurrentliabilities | -1.15788e+11 | -1.08283e+11 |
| longtermdebt | -1.03922e+11 | -9.2989e+10 |
| noncurrentdeferredrevenue | -3.131e+09 | NA |
| othernoncurrentliabilities | -4.3754e+10 | -5.4555e+10 |
| totalnoncurrentliabilities | -1.50807e+11 | -1.47544e+11 |
| totalliabilities | -2.66595e+11 | -2.55827e+11 |
| commitmentsandcontingencies | 0 | 0 |
| commonequity | -3.6447e+10 | -4.097e+10 |
| retainedearnings | -1.04593e+11 | -8.051e+10 |
| aoci | 8.41e+08 | 3.588e+09 |
| totalcommonequity | -1.40199e+11 | -1.17892e+11 |
| totalequity | -1.40199e+11 | -1.17892e+11 |
| totalequityandnoncontrollinginterests | -1.40199e+11 | -1.17892e+11 |
| totalliabilitiesandequity | -4.06794e+11 | -3.73719e+11 |
| othercurrentliabilities | NA | -3.6703e+10 |
gather_financial_statement_company_compare()
gather_financial_statement_company_compare()
takes in information that would be spread across multiple lines when querying the Intrinio API directly, and puts it into a function that by default returns a dataframe that is ready to be used for analysis. This function should be used for cross-company analysis of financial statements (income statement, balance sheet, or cash flow statement).
For example, we can compare Apple and Cisco’s Income Statement results for Q1 of 2019:
company_compare <- gather_financial_statement_company_compare(api_key = api_key,
ticker = c("AAPL", "CSCO"),
statement = "income_statement",
year = "2019", period = "Q1")
knitr::kable(company_compare)
| name | value.x | value.y |
|---|---|---|
| ticker | AAPL | CSCO |
| statement | income_statement | income_statement |
| year | 2019 | 2019 |
| period | Q1 | Q1 |
| operatingrevenue | -8.431e+10 | -1.3072e+10 |
| totalrevenue | -8.431e+10 | -1.3072e+10 |
| operatingcostofrevenue | 5.2279e+10 | 4.926e+09 |
| totalcostofrevenue | 5.2279e+10 | 4.926e+09 |
| totalgrossprofit | -3.2031e+10 | -8.146e+09 |
| sgaexpense | 4.783e+09 | 2.11e+08 |
| rdexpense | 3.902e+09 | 1.608e+09 |
| totaloperatingexpenses | 8.685e+09 | 4.341e+09 |
| totaloperatingincome | -2.3346e+10 | -3.805e+09 |
| otherincome | -5.6e+08 | 1.9e+07 |
| totalotherincome | -5.6e+08 | -1.04e+08 |
| totalpretaxincome | -2.3906e+10 | -3.909e+09 |
| incometaxexpense | 3.941e+09 | 3.6e+08 |
| netincomecontinuing | -1.9965e+10 | -3.549e+09 |
| netincome | -1.9965e+10 | -3.549e+09 |
| netincometocommon | -1.9965e+10 | -3.549e+09 |
| weightedavebasicsharesos | -4735820000 | -4.565e+09 |
| basiceps | -4.22 | -0.78 |
| weightedavedilutedsharesos | -4773252000 | -4.614e+09 |
| dilutedeps | -4.18 | -0.77 |
| weightedavebasicdilutedsharesos | -4.731e+09 | -4.55e+09 |
| basicdilutedeps | -4.22 | -0.78 |
| cashdividendspershare | -0.73 | -0.33 |
| marketingexpense | NA | 2.41e+09 |
| amortizationexpense | NA | 3.4e+07 |
| restructuringcharge | NA | 7.8e+07 |
| totalinterestexpense | NA | 2.21e+08 |
| totalinterestincome | NA | -3.44e+08 |
gather_stock_time_series()
gather_stock_time_series()
is a function for simplifying time series analysis of stock prices of a single company. It takes in the ticker, start and end dates (optional), and an Intrinio API key, and returns a dataframe that can easily be plotted to view trend analysis, or analysed as is.
For example, we can see how Cisco’s close price changed over 2019 and model it with ggplot:
stock_data <- gather_stock_time_series(api_key = api_key,
ticker = "CSCO",
start_date = "2019-01-01",
end_date = "2019-12-31",
allow_max_rows = TRUE)
ggplot2::ggplot(data.frame("date" = stock_data[[1]],
"close" = stock_data['close']),
aes(date, close)) +
geom_line() +
ggtitle("Cisco Close Prices over 2019") +
labs(x = "Time", y = "Close Price")
gather_stock_returns()
gather_stock_returns()
allows for a combination of looking at time series stock data and comparing returns across companies. This function allows effortless comparisons of returns across companies given a buy date and a sell date. Historical analysis is important for portfolio evaluations and comparisons.
For example, we can compare Apple and Cisco’s returns over Q1 2019:
stock_returns <- gather_stock_returns(api_key = api_key,
ticker = c("AAPL", "CSCO"),
buy_date = "2019-01-01",
sell_date = "2019-03-31")
knitr::kable(stock_returns)
| Stock | Buy.date | Buy.price | Sell.date | Sell.price | Return…. |
|---|---|---|---|---|---|
| AAPL | 2019-01-02 | 155.2140 | 2019-03-29 | 187.4959 | 20.80 |
| CSCO | 2019-01-02 | 41.4651 | 2019-03-29 | 52.5269 | 26.68 |


archives create and deploy a nodester app without installing git using cloud9 ide node js in chrome controlling drones with google glass and javascript beefy workflow with requirejs beanbots rise of the swarm chromebots lowering the barrier to entry remotebots cutting the cord with remote io


--- layout: default title: "Project" description: "「To explore or exploit is a question.」" header-img: "img/bg-me-2022.jpg" header-mask: 0.3 multilingual: false comments: true --- {% include intro-header.html type='page' short=true %}


Spring's JMS support package, covering synchronous JMS access as well as message listener containers.


Bitcoin for laypeople
(Chinese version available here, courtesy of @jiangplus
(This is an English translation of my Danish blog post, Bitcoin for voksne)
Bitcoin is a digital currency that has no central authority. It's a currency where you do not have to rely on anyone to know it's worth it. As a concept, it's similar to gold. Gold has a value in itself, as opposed to, say a $100 note that only has value if the U.S. government says it has value. Similarly, the idea of Bitcoins is that they have value by themselves.
Let's try to understand how Bitcoin works.
Bitcoin is more or less a major worldwide computer network that is constantly working to agree on a list of transactions.
A transaction is, for example, "Mathias transferred 100 bitcoins to Martin", just like a regular bank works internally.
In terms of Bitcoin, a transaction is called a "block" and a list of transactions is called a "chain" - a blockchain.
It is important to understand that this list of transactions, or blockchain, is completely public and anyone can read it and see what money is being transferred to each other. Bitcoin is a very public currency for the same reason - otherwise you can not confirm that the list of transactions ultimately is correct!
In fact, you do not write "Mathias" or "Martin" in the transaction. If you did, it would be hard to find out if "Mathias" had actually transferred the money, or if somebody just pretended to be "Mathias".
Instead, you use something called a cryptographic key.
Cryptographic keys
A cryptographic key consists of two things.
A secret key that is a very, very large random number that is practically impossible to guess and you have to keep very secret.
A public key that is a large number as well.
Using cryptography, we can create a system where you can use a secret key to sign a transaction so that another person can use the public key to confirm that it was you and only you who signed it.
In terms of Bitcoin, these keys are called a wallet, because they are the ones you need to access your Bitcoins.
So when making a transction, what you actually do is write, "Public key A
transferred 100 bitcoins to Public Key B
" and use the secret key related to A
to sign the transaction. That way no one can cheat transferring someone elses money.
Blockchain
Now that we have list of transactions it is of course important that everyone agrees on what the list looks like. Otherwise situations could occur where someone tries to cheat by transferring the same 100 bitcoins to more than one person! That wouldn't work very well.
Therefore, it is important that it isn't free to add new transactions to the list. If it were, it would be easy to try to cheat by sending a lot of conflicting transactions at the same time.
In this context, not free does not mean that it will cost you money (as in $) directly. Remember, we are trying to create a new currency where we do not trust anyone.
Proof of work
Instead of it costing $ to put a new transaction in the list, it costs work instead. This may sound a bit abstract, and that is because it is. Time is money and work takes time.
Now remember it is a computer network we are working with and therefore work means that your computer should try to calculate some difficult things that take time to perform.
The computers that perform the work are called miners. The reason they are called miners is that they are rewarded for their work in the form of being awarded some Bitcoins (digital gold). It's important to have an incentive to do the work to add a new transaction to the list, otherwise nobody will do it.
It is also important to prove that work was done and that a miner isn't just pretending to have done it. Therefore, we call it a "Proof of Work".
The work on which Bitcoin is based is a technique called "hashing", and no not the kind of hashing that takes place at Freetown Christiania.
Hashing
Hashing is a mathematical and computer science technique where a machine inputs a very large number and outputs a much smaller number.
hashing(very large number) -> much smaller number
The same large number always gives the same much smaller number and it is practically impossible to guess the large number that was input if you know the outputted small number.
We can use hashing to make a "proof of work".
It works very simple. I choose two numbers, for example, 1,000,000
and 42
, and then I ask you to find a very large number where
hashing(very large number + 42) < 1,000,000
The only way you can find a number where this is true is to try a whole lot of numbers! There is no shortcut. That's how I know you had to work to find it. The really smart thing is that if I instead of 1,000,000
had said 500,000
then I know you have to work twice as much on average, because the output range is about half the size.
Therefore we have a way to make a "proof of work".
Digging for digital gold
When we have a new transaction we would like to make, we do it this way.
- We make a new transaction using our secret and public key.
- We look at the current list of transactions, add all the numbers together in the list and add them to the numbers in our transaction. We call this number a "challenge".
- We publish our transaction and challenge on the network.
- When another computer (miner) has performed work where
hashing(very large number + challenge) < 1,000,000
, the transaction is added to the list and the miner is a awarded some Bitcoins.
It's by digging for digital gold this way that new Bitcoins are added to the network and money can be transferred to each other.
In fact, the amount of Bitcoins that will be awarded to a miner decreases over time, and 1,000,000
is adjusted depending on how many computers are on the network.
Both things are used create an incentive to mine for Bitcoins. It gets harder and harder to find them, just like gold, and even if you buy a lot of computers it will not be easier either (1,000,000
will be smaller and you need to do more work).
It's for the same reason you read about the excessive energy consumption of Bitcoins in the media. It is built into the system to create incentives for mining them! In the original paper describing Bitcoins, it is assumed that power comes 100% from renewable sources for the same reason - otherwise the energy requirement will be very costly.
There is also a constraint on how many transactions can be done every 10 minutes, in practice 6.6 transactions per second. This constraint was added to avoid a lot of people adding a bunch of useless data, filling up the list. Therefore, it becomes more expensive and takes longer if many people want to transfer Bitcoins at the same time.
In recent times there has been a boom in Bitcoin interest and activity. Today, the cost of a Bitcoin transaction is around $20, which is high fee if you wanted to say, buy a computer game worth $50 with Bitcoins, and is a part of why some people are concerned that Bitcoin could work as an actual everyday currency at present.


Extra Models
Continuing with the previous example, it will be common to have more than one related model.
This is especially the case for user models, because:
- The input model needs to be able to have a password.
- The output model should not have a password.
- The database model would probably need to have a hashed password.
Danger
Never store user's plaintext passwords. Always store a "secure hash" that you can then verify.
If you don't know, you will learn what a "password hash" is in the security chapters.
Multiple models¶
Here's a general idea of how the models could look like with their password fields and the places where they are used:
from fastapi import FastAPI
from pydantic import BaseModel, EmailStr
app = FastAPI()
class UserIn(BaseModel):
username: str
password: str
email: EmailStr
full_name: str = None
class UserOut(BaseModel):
username: str
email: EmailStr
full_name: str = None
class UserInDB(BaseModel):
username: str
hashed_password: str
email: EmailStr
full_name: str = None
def fake_password_hasher(raw_password: str):
return "supersecret" + raw_password
def fake_save_user(user_in: UserIn):
hashed_password = fake_password_hasher(user_in.password)
user_in_db = UserInDB(**user_in.dict(), hashed_password=hashed_password)
print("User saved! ..not really")
return user_in_db
@app.post("/user/", response_model=UserOut)
async def create_user(*, user_in: UserIn):
user_saved = fake_save_user(user_in)
return user_saved
About **user_in.dict()
¶
Pydantic's .dict()
¶
user_in
is a Pydantic model of class UserIn
.
Pydantic models have a .dict()
method that returns a dict
with the model's data.
So, if we create a Pydantic object user_in
like:
user_in = UserIn(username="john", password="secret"<EMAIL_ADDRESS>and then we call:
user_dict = user_in.dict()
we now have a dict
with the data in the variable user_dict
(it's a dict
instead of a Pydantic model object).
And if we call:
print(user_dict)
we would get a Python dict
with:
{
'username': 'john',
'password': 'secret',
'email'<EMAIL_ADDRESS>'full_name': None,
}
Unwrapping a dict
¶
If we take a dict
like user_dict
and pass it to a function (or class) with **user_dict
, Python will "unwrap" it. It will pass the keys and values of the user_dict
directly as key-value arguments.
So, continuing with the user_dict
from above, writing:
UserInDB(**user_dict)
Would result in something equivalent to:
UserInDB(
username="john",
password="secret",
<EMAIL_ADDRESS>full_name=None,
)
Or more exactly, using user_dict
directly, with whatever contents it might have in the future:
UserInDB(
username = user_dict["username"],
password = user_dict["password"],
email = user_dict["email"],
full_name = user_dict["full_name"],
)
A Pydantic model from the contents of another¶
As in the example above we got user_dict
from user_in.dict()
, this code:
user_dict = user_in.dict()
UserInDB(**user_dict)
would be equivalent to:
UserInDB(**user_in.dict())
...because user_in.dict()
is a dict
, and then we make Python "unwrap" it by passing it to UserInDB
prepended with **
.
So, we get a Pydantic model from the data in another Pydantic model.
Unwrapping a dict
and extra keywords¶
And then adding the extra keyword argument hashed_password=hashed_password
, like in:
UserInDB(**user_in.dict(), hashed_password=hashed_password)
...ends up being like:
UserInDB(
username = user_dict["username"],
password = user_dict["password"],
email = user_dict["email"],
full_name = user_dict["full_name"],
hashed_password = hashed_password,
)
Warning
The supporting additional functions are just to demo a possible flow of the data, but they of course are not providing any real security.
Reduce duplication¶
Reducing code duplication is one of the core ideas in FastAPI.
As code duplication increments the chances of bugs, security issues, code desynchronization issues (when you update in one place but not in the others), etc.
And these models are all sharing a lot of the data and duplicating attribute names and types.
We could do better.
We can declare a UserBase
model that serves as a base for our other models. And then we can make subclasses of that model that inherit its attributes (type declarations, validation, etc).
All the data conversion, validation, documentation, etc. will still work as normally.
That way, we can declare just the differences between the models (with plaintext password
, with hashed_password
and without password):
from fastapi import FastAPI
from pydantic import BaseModel, EmailStr
app = FastAPI()
class UserBase(BaseModel):
username: str
email: EmailStr
full_name: str = None
class UserIn(UserBase):
password: str
class UserOut(UserBase):
pass
class UserInDB(UserBase):
hashed_password: str
def fake_password_hasher(raw_password: str):
return "supersecret" + raw_password
def fake_save_user(user_in: UserIn):
hashed_password = fake_password_hasher(user_in.password)
user_in_db = UserInDB(**user_in.dict(), hashed_password=hashed_password)
print("User saved! ..not really")
return user_in_db
@app.post("/user/", response_model=UserOut)
async def create_user(*, user_in: UserIn):
user_saved = fake_save_user(user_in)
return user_saved
Union
or anyOf
¶
You can declare a response to be the Union
of two types, that means, that the response would be any of the two.
It will be defined in OpenAPI with anyOf
.
To do that, use the standard Python type hint typing.Union
:
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class BaseItem(BaseModel):
description: str
type: str
class CarItem(BaseItem):
type = "car"
class PlaneItem(BaseItem):
type = "plane"
size: int
items = {
"item1": {"description": "All my friends drive a low rider", "type": "car"},
"item2": {
"description": "Music is my aeroplane, it's my aeroplane",
"type": "plane",
"size": 5,
},
}
@app.get("/items/{item_id}", response_model=Union[PlaneItem, CarItem])
async def read_item(item_id: str):
return items[item_id]
List of models¶
The same way, you can declare responses of lists of objects.
For that, use the standard Python typing.List
:
from typing import List
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: str
items = [
{"name": "Foo", "description": "There comes my hero"},
{"name": "Red", "description": "It's my aeroplane"},
]
@app.get("/items/", response_model=List[Item])
async def read_items():
return items
Response with arbitrary dict
¶
You can also declare a response using a plain arbitrary dict
, declaring just the type of the keys and values, without using a Pydantic model.
This is useful if you don't know the valid field/attribute names (that would be needed for a Pydantic model) beforehand.
In this case, you can use typing.Dict
:
from typing import Dict
from fastapi import FastAPI
app = FastAPI()
@app.get("/keyword-weights/", response_model=Dict[str, float])
async def read_keyword_weights():
return {"foo": 2.3, "bar": 3.4}
Recap¶
Use multiple Pydantic models and inherit freely for each case.
You don't need to have a single data model per entity if that entity must be able to have different "states". As the case with the user "entity" with a state including password
, password_hash
and no password.


COCOON II: THE RETURN A film review by Jeff Meyer Copyright 1988 Jeff Meyer
Short description: Not much of a movie, but it make a nice bookend to go with COCOON. Well, everybody comes back from the first movie (*everybody*), and a lot of them think about whether it was a good idea to leave Earth in the first place, and one of the cocoons gets picked up by an oceanographic research institute where Courtney "Assault Dimples" Cox works, and...
Brother, is there a lot of padding in this film. 40 minutes could have been cut out and nobody would have been the wiser. Yes, some of the charm of the original is still there, but it's either strained or canned from COCOON. There are some really ridiculous plot holes running around (especially regarding how security for the alien is handled -- Carl's Rent-A-Cop guarding extra-terrestrials).
Rating: Not actively bad, but not good either.
*Sigh* After the Christmas season so far, I'm having to put all my hopes on THE NAKED GUN... the local radio promos have been hilarious: "LESLIE NIELSON as Virtue Incarnate! PRISCILLA PRESLEY as Lust Personified! RICARDO MONTELBON as Pond Scum in Human Form!" "You've heard the ad... now see the movie! Then buy the silverware."
Moriarty, aka Jeff Meyer INTERNET<EMAIL_ADDRESS>Manual UUCP: {uw-beaver, sun, microsoft}!fluke!moriarty
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Dependencies and Installation¶
Python 3.6. This uses f-strings. It depends on float results in division. It clearly separates text and bytes.
PySerial, version 3.3.
pip install pyserial
Download NMEA-Tools.
You can install it. It’s doubtful, however, that it does exactly what you want. Since you’re going to tinker, it’s best to work directly in the repository that you forked from Git Hub.
export PYTHONPATH=/path/to/NMEA-Tools
Testing¶
Note that nmeatools
must be visible. When we run tests/test.py
, the tests
directory is local and the overall distribution kit directory isn’t visible.
By setting PYTHONPATH
we make sure the top-level project directory
(the directory which contains nmeatools
is visible.
MacBookPro-SLott:NMEA-Tools slott$ PYTHONPATH=. python3 tests/test.py
..........
----------------------------------------------------------------------
Ran 10 tests in 0.007s
OK
Driver¶
I use the driver for by BU-353 GPS antenna. See http://usglobalsat.com/s-122-bu-353-support.aspx I don’t know if this is required. If your NMEA-0183 interface device doesn’t seem to work, you may beed an appropriate USB driver.
Using¶
Once installed, you can mess with
- Wiring up the NMEA-0183 to USB connector you’ve chosen. See Background.
- Playing with
nmeatools.nmea_data
which has two simple capture-and-display functions:nmeatools.sample_CP()
andnmeatools.sample_GPS()
. - Capturing waypoints and routes using
nmeatools.nmea_capture
. - Converting NMEA sentences to GPX using
nmeatools.waypoint_to_gpx
.


as anAdviser
as aClient
help withNavigation research
testSick pay adviser content
Try theMoney advice recording tool (MART)
Find out moreabout Mart
Test theCasebook prototype
Try outWebchat
Explore thePQF dashboard
Help us improve ourOnline advice content
Test theEnergy supplier comparison
Try thePriority service register
Design withPage engine
Test outLearn


By Jacques Laroche
In the United States we are finally witnessing a steadily increasing backlash against police militarization, murder at the hands of police and the general devaluation of Black life. At the same time, there is a growing movement against debt in our society: the fact that in order to survive — to get ourselves basic needs like food, shelter, healthcare and education — we are forced to go into debt. It may not be apparent on first glance, but there are deep connections between these struggles.
First off, let’s be clear: although the corporate media have cast the police as the sole villain of the BlackLivesMatter movement, the heart of this struggle is not simply about out of control police officers. It isn’t even about restructuring the institution of policing. The core of the movement is about recognizing the numerous points at which American society intersects with and disrespects Black life. When Black life interacts with police we are automatically cast as criminals and perpetrators. When Black life interacts with the court system we are converted into convicts. The prisons profit off of our captivity. City housing concentrates, constrains and dehumanizes us. Financial institutions transform us into commodities, hoodwinking us with rigged “financial packages.” The list goes on and on. And, when one recognizes the core grievance of the movement is systemic dehumanization, what we are after becomes clear: fundamental systemic change.
But that isn’t the end of our vision. We also instinctively understand that, in the end, underneath the anti-Black nature of these institutions is an ethos that is, more broadly, against life itself. We know a prison system that disproportionately targets Black bodies is anti-Black in nature. But, we also recognize this same prison system – which throws people into solitary confinement, feeds inmates rotten food, has no intentions of restoration or rehabilitation, and incarcerates more prisoners per member of the population compared to any other country in the world – is fundamentally against life itself.
We see video imagery of twelve year old Tamir Rice being shot and killed within two seconds of police rolling up to the park where he was playing and understand that the ethos which fuelled his murder was anti-Black in nature. And by extension, when we see the savage pummeling of a helpless Kelly Thomas on video while hearing him also scream out “I can’t breathe” at least six times, a deeper truth is revealed: the ethos which fuelled Thomas’ murder was charged with a macho patriarchy that is fundamentally against life itself.
Prisons and police provide two examples where taking a step back and looking at our oppressors allows us to clearly see their true essence. And when we, through this wide-angle lens, look at the rest of the institutions that we are fighting to end or reclaim we see that they too have deformed mandates and structures that create racist, caricatures of human beings who are, at their core, diametrically opposed to the essence of life.
And, as it is within the array of dehumanizing American institutions, so it is with the debt system: fundamentally anti-Black, ultimately against the very essence of life, and requiring systemic change. Take a look at for-profit schools such as ITT Tech, University of Phoenix, Everest College and the rest of the Corinthian institutions. As the largest issuers of degrees for Black students they play on the strength of Black aspiration, saddle their students in debt, don’t lead to jobs after graduation and prey on the vulnerability of single Black mothers. When we realize higher education could actually be free in the United States it becomes very clear that the debt-ridden education system is simply a trap. A trap set for Blacks, poor whites, anyone who decides to expand their understanding and skills through formal education.
Yet, the debt monster doesn’t just roam the halls of colleges and universities. It also sets traps in the courts. Like in Ferguson, MO when the municipal court issued 32,975 arrest warrants — in a city of just 21,135 people — back in 2013. These warrants — all for nonviolent offenses, and mostly for driving violations — dragged their victims into the judicial system. Then the court charged large fines and fees, ultimately arresting residents when they couldn’t pay.
We see this play out over and over again across the country: by the police when they implement ticketing quota schemes to finance their departments, by probation offices when they charge fees for people’s freedom, by emergency rooms and doctor’s offices with their outrageous bills for essential care. All of these debt traps, at their core, are against the essence of life. All of these debt taps require systemic change to eradicate.
The problem is, separately, our struggles will never have the power to achieve this systemic change, to realize a Just new world. Our struggles tend to address discrete aspects of the system we are fighting and fail to attack the system together in a coordinated fashion. To have enough power to initiate this new world we must connect our struggles.
The first step towards connecting our struggles is recognizing the battle against debt is being fought by groups made up of many races, sexes, orientations, nationalities and religions for the benefit of us all. Recognizing the fact that amongst the first wave of active fighters in the student debt battles there are fierce Black women. Realizing one of the demands coming out of Ferguson was Free Higher Education. Understanding the debt trap has been set by a capitalist system that attacks those who are most vulnerable, along with everyone else.
The second step in connecting our struggles is connecting our attack. Our attack is connected when BlacklivesMatter protesters plan die-ins, shut downs and reclamations at the same time those trying to reclaim free education stage debt burns and campus sit-ins, at the same time Occupy-style groups hold physical space, at the same time environmental activists protest fracking, at the same time LGBTQ activists demand equality, at the same time housing activists protest banks foreclosing on properties — all under the banner of “all our grievances are connected.”


text:
checkbox:
radio:
bool:
number:
select:
First
Second
select:
First
Second
text
checkbox
radio
hidden
password
search
Add


referenced
by Christina Chortaria at 2022-12-01 22:28:12.merged
by Christina Chortaria at 2022-12-01 22:28:12.closed
by Christina Chortaria at 2022-12-01 22:28:12.head_ref_deleted
by Christina Chortaria at 2022-12-01 22:28:13.closed
by Christina Chortaria at 2022-12-01 22:28:13.ready_for_review
by None at 2022-12-02 18:40:43.mentioned
by Will-Clements at 2022-12-02 13:26:21.assigned
by None at 2022-12-02 13:26:21.subscribed
by Will-Clements at 2022-12-02 13:26:21.labeled
by None at 2022-12-02 18:39:03.assigned
by None at 2022-12-02 18:38:21.unassigned
by Christina Chortaria at 2022-12-02 16:47:22.referenced
by Christina Chortaria at 2022-12-02 17:37:56.merged
by Christina Chortaria at 2022-12-02 17:37:56.closed
by Christina Chortaria at 2022-12-02 17:37:56.head_ref_deleted
by Christina Chortaria at 2022-12-02 17:37:57.closed
by Christina Chortaria at 2022-12-02 17:37:57.referenced
by Christina Chortaria at 2022-12-02 20:47:38.merged
by Christina Chortaria at 2022-12-02 20:47:38.closed
by Christina Chortaria at 2022-12-02 20:47:39.head_ref_deleted
by Christina Chortaria at 2022-12-02 20:47:40.closed
by Christina Chortaria at 2022-12-02 20:47:40.closed
by Hector Correa at 2022-12-02 14:21:56.assigned
by Kate Lynch at 2022-12-02 15:20:57.head_ref_force_pushed
by Taylor Yamashita at 2022-12-02 15:40:14.deployed
by None at 2022-12-02 15:49:46.referenced
by Eliot Jordan at 2022-12-02 15:52:57.merged
by Eliot Jordan at 2022-12-02 15:52:57.closed
by Eliot Jordan at 2022-12-02 15:52:57.head_ref_deleted
by Eliot Jordan at 2022-12-02 15:52:58.closed
by Eliot Jordan at 2022-12-02 15:52:58.renamed
by None at 2022-12-02 17:06:29.referenced
by None at 2022-12-02 17:06:52.merged
by None at 2022-12-02 17:06:52.closed
by None at 2022-12-02 17:06:53.head_ref_deleted
by None at 2022-12-02 17:06:54.closed
by None at 2022-12-02 17:06:58.Done! https://dataspace.princeton.edu/handle/88435/dsp01b2773z92b
closed
by Bess Sadler at 2022-12-02 20:03:25.Due to firewall restrictions, it appears that one can only access the CIFS mount for the HR feed using either the legacy production or legacy dev server environments.
A SN@P ticket has been created requesting access for the Digital Science service account<EMAIL_ADDRESS>) to this CIFS mount: https://princeton.service-now.com/now/workspace/agent/record/incident/d353dc9d87ab5914d1c6c8cd0ebb3580
The latest update specified in the SN@P ticket is the following:
I think you better check with Mark Ratliff as well. \dms-smbserve\bi-cisdr was set up for his team. As far as CeDAR's policy concerning access, if the access has something to do with data exchange with one of the systems we manage (Cognos, DataStage or Tableau) than we are generally OK with it. If someone is just looking for a drive to share, or store, files unrelated to CeDAR than the answer is 'no'.
labeled
by James R. Griffin III at 2022-12-02 14:55:32.referenced
by James R. Griffin III at 2022-12-01 22:00:19.merged
by James R. Griffin III at 2022-12-01 22:00:19.closed
by James R. Griffin III at 2022-12-01 22:00:20.head_ref_deleted
by James R. Griffin III at 2022-12-01 22:00:20.Someone reingested
closed
by Trey Pendragon at 2022-12-02 15:32:58.Replacements proposed: - Uppy, Shrine - pros - we could also move away from dropzone and have a more consistent experience - cons - These are both fully-featured upload tools; they're going to provide a lot more than we need. - neither has a plugin for selecting a file that's already on the server. - even if we write our own plugin it will probably be much more complex logic than if we write something specifically to our own use case - Vue finder, tool mentioned during structure manager design discussion - pros - simple tool, feature set matches our needs pretty well -- show files, navigate them, some event handling - small, well-organized code base - good documentation - some keyboard navigation possible - cons - single developer, however they are currently actively engaged - doesn't yet support vue 3, although there is a pre-release - jstree - pros - This is the tool we use for pulfalight, so some consistency in dependency choice - Similar to the current UI, some consistency for users - has a fuzzy search feature - cons - a jquery plugin is probably not as good a fit as a vue component - solo developer - more features than we likely need
This is looking great. I think we should look to merge it and start a new branch if there's more work to do, so this doesn't sit around too long.
Sounds good! This one is ready to merge. I'll start another branch for additional changes.
head_ref_force_pushed
by Taylor Yamashita at 2022-12-02 15:21:53.head_ref_force_pushed
by Taylor Yamashita at 2022-12-02 17:05:17.review_requested
by Taylor Yamashita at 2022-12-02 17:26:28.referenced
by None at 2022-12-02 17:32:20.merged
by None at 2022-12-02 17:32:21.closed
by None at 2022-12-02 17:32:21.head_ref_deleted
by None at 2022-12-02 17:32:21.renamed
by Taylor Yamashita at 2022-12-02 17:31:21.convert_to_draft
by Taylor Yamashita at 2022-12-02 17:31:59.head_ref_force_pushed
by Taylor Yamashita at 2022-12-02 17:47:34.Wasn't a CORS issue. The raster FileSet did not have a cloud file. Regenerated derivatives and it works fine now.
closed
by Eliot Jordan at 2022-12-02 18:05:52.There were 11 issues "Alexis I". Fixed by hand and duplicate person deleted.
I emailed Alan and Elena today and shared the ticket with them. Thank you, @eliotjordan !
closed
by Eliot Jordan at 2022-12-02 18:39:34.mentioned
by Eliot Jordan at 2022-12-02 18:55:29.subscribed
by Eliot Jordan at 2022-12-02 18:55:29.assigned
by Eliot Jordan at 2022-12-02 19:36:59.head_ref_deleted
by Eliot Jordan at 2022-12-02 20:40:19.head_ref_deleted
by Eliot Jordan at 2022-12-02 20:40:20.head_ref_deleted
by Eliot Jordan at 2022-12-02 20:40:26.head_ref_deleted
by Eliot Jordan at 2022-12-02 20:40:27.head_ref_deleted
by Eliot Jordan at 2022-12-02 20:40:27.head_ref_deleted
by Eliot Jordan at 2022-12-02 20:40:29.head_ref_deleted
by Eliot Jordan at 2022-12-02 20:40:38.closed
by Jane Sandberg at 2022-12-01 23:56:01.referenced
by Christina Chortaria at 2022-12-02 20:14:50.merged
by Christina Chortaria at 2022-12-02 20:14:50.closed
by Christina Chortaria at 2022-12-02 20:14:50.referenced
by Christina Chortaria at 2022-12-02 21:08:12.merged
by Christina Chortaria at 2022-12-02 21:08:12.closed
by Christina Chortaria at 2022-12-02 21:08:13.labeled
by Jane Sandberg at 2022-12-02 22:41:40.Coverage remained the same at 94.498% when pulling a01416b0b616b98adbad680a848c7081c4bf95a6 on 3229-display-no-delivery-mode-error into 10117f249a13b504814547557ceabab2d0e8524b on main.
32101088386287 is a Scheide item: MMS ID<PHONE_NUMBER>3506421
Providing TN354603 as CSV:
354603, RBSC, rmunoz, "", 11686, 49, "2022-12-02 18:07:40.057", Default, "", "Multi-title collection including [Deed : Norfolk, England, Margaret De Stowe to Thomas De Swafham, and 8 other(s).", "", "", "", "", "", "", "", info:sid/catalog.princeton.edu:generator,<PHONE_NUMBER>6287, "",<PHONE_NUMBER>3506421, "", 68.4, rare$whs, "", "", "", "", "", DefaultRequest, "", "", "", "", No, "", "Reading Room Access Only", "", "", "", "", "2022-11-30 22:01:58.920", "", "", "", "", "", "", ""
labeled
by Don Thornbury at 2022-12-02 19:24:51.transferred
by None at 2022-12-02 21:39:06.assigned
by Hector Correa at 2022-12-02 15:02:12.referenced
by Bess Sadler at 2022-12-02 15:46:01.merged
by Bess Sadler at 2022-12-02 15:46:01.closed
by Bess Sadler at 2022-12-02 15:46:02.head_ref_deleted
by Bess Sadler at 2022-12-02 15:46:03.referenced
by Bess Sadler at 2022-12-02 15:48:07.merged
by Bess Sadler at 2022-12-02 15:48:08.closed
by Bess Sadler at 2022-12-02 15:48:08.head_ref_deleted
by Bess Sadler at 2022-12-02 15:48:09.closed
by Bess Sadler at 2022-12-02 15:48:09.closed
by Kate Lynch at 2022-12-02 15:48:32.referenced
by Chuck McCallum at 2022-12-02 16:59:45.merged
by Chuck McCallum at 2022-12-02 16:59:45.closed
by Chuck McCallum at 2022-12-02 16:59:46.head_ref_deleted
by Chuck McCallum at 2022-12-02 16:59:46.@mccalluc I don't disagree that smaller headers (h3 or h4) might be useful. However, h1 and h2 create a visual distraction in our log that will make it harder to quickly find the change content, as the present design of this feature favors showing the message content. I would have liked to have messages and changes separated. I keep pointing to the example of provenance used for PSU ScholarSphere to understand what I want to capture. That example shows a clean, standardized timeline of changes to the record. The messaging feature, which is also important, somehow got blended. Perhaps it's something we can talk about separating in the future.
Bess points out that this is better solved with CSS. Closing this PR, will clarify approach in the orig issue. For the rest, I've copied all these comments into the agenda for the 12/7 meeting: We can talk them over and file granular issues.
mentioned
by Chuck McCallum at 2022-12-02 14:39:40.subscribed
by Chuck McCallum at 2022-12-02 14:39:40.closed
by Chuck McCallum at 2022-12-02 15:44:34.head_ref_deleted
by Chuck McCallum at 2022-12-02 15:44:38.referenced
by Chuck McCallum at 2022-12-02 19:04:01.merged
by Chuck McCallum at 2022-12-02 19:04:01.closed
by Chuck McCallum at 2022-12-02 19:04:01.head_ref_deleted
by Chuck McCallum at 2022-12-02 19:04:02.ready_for_review
by Chuck McCallum at 2022-12-01 22:48:45.referenced
by Bess Sadler at 2022-12-02 19:39:46.merged
by Bess Sadler at 2022-12-02 19:39:46.closed
by Bess Sadler at 2022-12-02 19:39:46.head_ref_deleted
by Bess Sadler at 2022-12-02 19:39:47.referenced
by Bess Sadler at 2022-12-02 19:40:13.merged
by Bess Sadler at 2022-12-02 19:40:13.closed
by Bess Sadler at 2022-12-02 19:40:13.head_ref_deleted
by Bess Sadler at 2022-12-02 19:40:14.assigned
by Neggin at 2022-12-02 20:11:13.referenced
by Chuck McCallum at 2022-12-02 21:25:30.merged
by Chuck McCallum at 2022-12-02 21:25:30.closed
by Chuck McCallum at 2022-12-02 21:25:30.head_ref_deleted
by Chuck McCallum at 2022-12-02 21:25:31.We decided that this is best handled with CSS, rather than trying to pre- or post-process the markdown. Still on my plate.
assigned
by Chuck McCallum at 2022-12-02 15:50:56.closed
by Chuck McCallum at 2022-12-02 21:25:31.I've asked on the devs channel if there are other approaches to this problem. So that the other work that's on this branch isn't blocked, I'll revert the bundle changes.
Last failure was a timeout... Network dependencies during tests aren't ideal, but not something this PR should address. ``` 1) Form submission for a legacy dataset happy path produces and saves a valid datacite record Failure/Error: bl.call(klass)
Net::OpenTimeout:
execution expired
I'll update branch and re-run tests.
huh: Same error after latest merge. Re-running...
Until a meeting with Hannah can be scheduled, I am hesitant to consider this closed (should it be the case that #633 did not resolve this). Hence, I am going to return this to the Sprint Backlog.
@jrgriffiniii I just checked staging and the error message is still showing. Please feel free to schedule a meeting with me. I am particularly available next Tuesday morning, but happy to find time to meet on any day next week.
unassigned
by James R. Griffin III at 2022-12-02 20:54:39.mentioned
by James R. Griffin III at 2022-12-02 21:53:37.subscribed
by James R. Griffin III at 2022-12-02 21:53:38.assigned
by Jane Sandberg at 2022-12-01 23:26:06.referenced
by Francis Kayiwa at 2022-12-02 14:02:49.merged
by Francis Kayiwa at 2022-12-02 14:02:49.closed
by Francis Kayiwa at 2022-12-02 14:02:50.head_ref_deleted
by Francis Kayiwa at 2022-12-02 14:02:50.closed
by Francis Kayiwa at 2022-12-02 14:02:51.referenced
by Christina Chortaria at 2022-12-02 15:27:46.merged
by Christina Chortaria at 2022-12-02 15:27:46.closed
by Christina Chortaria at 2022-12-02 15:27:46.head_ref_deleted
by Christina Chortaria at 2022-12-02 15:27:47.labeled
by Kevin Reiss at 2022-12-02 14:37:11.assigned
by Max Kadel at 2022-12-02 14:44:32.closed
by Christina Chortaria at 2022-12-02 15:27:48.head_ref_force_pushed
by Francis Kayiwa at 2022-12-02 15:16:31.referenced
by Francis Kayiwa at 2022-12-02 15:49:02.merged
by Francis Kayiwa at 2022-12-02 15:49:02.closed
by Francis Kayiwa at 2022-12-02 15:49:02.head_ref_deleted
by Francis Kayiwa at 2022-12-02 15:49:03.head_ref_force_pushed
by Taylor Yamashita at 2022-12-02 15:22:21.ready_for_review
by Taylor Yamashita at 2022-12-02 15:53:11.referenced
by Eliot Jordan at 2022-12-02 15:53:32.merged
by Eliot Jordan at 2022-12-02 15:53:32.closed
by Eliot Jordan at 2022-12-02 15:53:33.head_ref_deleted
by Eliot Jordan at 2022-12-02 15:53:33.closed
by Eliot Jordan at 2022-12-02 15:53:34.closed
by Kevin Reiss at 2022-12-02 16:49:11.renamed
by Kevin Reiss at 2022-12-02 16:51:44.labeled
by Kevin Reiss at 2022-12-02 15:28:12.interesting, it looks like it's in the task list:
https://github.com/pulibrary/princeton_ansible/blob/main/roles/pas/tasks/main.yml#L9
Hrm, the value for php_version
is 8.0
, but when I ssh onto the server, the php version is 8.1.13. When I do a php -v
it is not listed - best guess is that php8.0-mbstring
was installed, but it's looking for php8.1-mbstring
?
The issue was actually the php version, rather than the PHP extension. See https://github.com/pulibrary/princeton_ansible/issues/3489
labeled
by Kevin Reiss at 2022-12-02 15:26:52.closed
by Max Kadel at 2022-12-02 19:02:47.mentioned
by Alicia Cozine at 2022-12-02 19:11:23.subscribed
by Alicia Cozine at 2022-12-02 19:11:24.mentioned
by Max Kadel at 2022-12-02 19:11:24.subscribed
by Max Kadel at 2022-12-02 19:11:24.transferred
by Max Kadel at 2022-12-02 17:28:04.labeled
by Max Kadel at 2022-12-02 17:28:19.renamed
by Max Kadel at 2022-12-02 19:03:20.assigned
by Max Kadel at 2022-12-02 19:18:09.assigned
by Alicia Cozine at 2022-12-02 19:18:16.review_requested
by Alicia Cozine at 2022-12-02 21:05:13.Closed by #3377 and by https://github.com/PrincetonUniversityLibrary/infra/pull/30.
closed
by Alicia Cozine at 2022-12-02 21:18:13.Remaining examples of {{ inventory_hostname }} complete
as of today - all in the playbooks
directory:
- [ ] cantaloupeproduction.yml, cantaloupestaging.yml (consolidate)
- [ ] confluencestaging.yml (can this be renamed?)
- [ ] figgyproduction.yml, figgystaging.yml (consolidate)
- [ ] libsmbserveproduction.yml (what is this?)
- [ ] libstatisticsstaging.yml (what is this?)
- [ ] librubydev.yml, librubyproduction.yml (consolidate)
- [ ] libstaticproduction.yml, libstaticstaging.yml (consolidate)
- [ ] libwwwproduction.yml, libwwwstaging.yml (consolidate)
- [ ] mariadbgcpdev.yml
- [ ] mariadbproduction.yml (can this be deleted?)
- [ ] nginxplusproductionrebuild.yml
- [ ] oargcpbeta.yml, oargcpdev.yml, oargcpproduction.yml, oargcpstaging.yml (consolidate)
- [ ] oawaiverproduction.yml, oawaiverstaging.yml (consolidate)
- [ ] openbooksproduction.yml
- [ ] pdcdescribe.yml
- [ ] pdcdiscovery.yml
- [ ] postgresqlgcpdev.yml, postgresqlgcpproduction.yml, postgresqlgcpstaging.yml (consolidate, maybe delete?)
- [ ] postgresqlproduction.yml, postgresqlstaging.yml (consolidate)
- [ ] redisproduction.yml (do we need this? Do we install redis standalone?)
- [ ] repecproduction.yml, repecstaging.yml (consolidate)
- [ ] solr8cloudproduction.yml
- [ ] solrcloud_production.yml
The OJS role idempotency check fails because the expect script runs again on the second pass. I get the same behavior locally. If I run molecule converge
on my laptop, the expect script runs:
```
TASK [ojs : ojs | install ojs] *************************************************
included: /Users/alicia/gitrepos/princetonansible/roles/ojs/tasks/install_ojs.yml for instance
TASK [ojs : ojs | copy config file] ******************************************** ok: [instance]
TASK [ojs : ojs | write expect script for OJS interactive installation] ******** changed: [instance]
TASK [ojs : ojs | run expect script for OJS interactive installation] ********** changed: [instance]
TASK [ojs : ojs | remove expect script] ****************************************
changed: [instance]
and the playbook succeeds overall:
PLAY RECAP *********************************************************************
instance : ok=82 changed=33 unreachable=0 failed=0 skipped=110 rescued=0 ignored=0
However, if I log into the test instance, the test for "Is OJS installed" fails:
root@instance:/var/www/ojs-3.3.0-8# grep 'installed =' config.inc.php installed = Off ``` and the idempotence test fails with the same error as in CI.
review_requested
by Alicia Cozine at 2022-12-02 20:19:03.referenced
by Christina Chortaria at 2022-12-02 22:00:42.merged
by Christina Chortaria at 2022-12-02 22:00:42.closed
by Christina Chortaria at 2022-12-02 22:00:42.head_ref_deleted
by Christina Chortaria at 2022-12-02 22:00:43.labeled
by None at 2022-12-02 22:01:23.labeled
by None at 2022-12-02 22:01:23.deployed
by None at 2022-12-02 22:04:03.referenced
by Jane Sandberg at 2022-12-02 22:19:14.merged
by Jane Sandberg at 2022-12-02 22:19:14.closed
by Jane Sandberg at 2022-12-02 22:19:15.head_ref_deleted
by Jane Sandberg at 2022-12-02 22:19:15.@dependabot rebase
@dependabot rebase
deployed
by None at 2022-12-02 21:15:05.mentioned
by Dependabot at 2022-12-02 21:21:53.head_ref_force_pushed
by None at 2022-12-02 21:23:23.deployed
by None at 2022-12-02 21:24:20.mentioned
by Dependabot at 2022-12-02 22:02:06.head_ref_force_pushed
by None at 2022-12-02 22:02:55.deployed
by None at 2022-12-02 22:20:02.referenced
by Jane Sandberg at 2022-12-02 22:23:03.merged
by Jane Sandberg at 2022-12-02 22:23:03.closed
by Jane Sandberg at 2022-12-02 22:23:03.head_ref_deleted
by Jane Sandberg at 2022-12-02 22:23:04.Imported 36 dissertations, which matches the number on the spreadsheet. I've emailed Lynn, and copied Kate and James on the message.
closed
by Bess Sadler at 2022-12-02 21:01:42.unassigned
by Kevin Reiss at 2022-12-02 16:45:11.


Most Populated Cities In The World
helpTake a tour of the top 10 most populated cities in the world. Current information of each of them during the trip
1. Click "Start Tour" button.
2. The application will generate a KML file to show in the Liquid Galaxy.
3. Once everything is ready, the application will automatically start the most populated cities tour.
4. If you want to stop the tour, click the "Stop Tour" button.
{% include "WDLG/footer.html" %}


TMP Day 1: Introducing three months long backbreaking goals
August 24, 2017
Challenging my limits - Completing 4 ridiculously difficult programs in a year.
TMP — Tri-Month-Pack program
What exactly is a Tri-Month-Pack?
TMP is a challenging program similar to M2M (Month to Master) by Max Deutsch. Hereby, I shall complete four herculean 3-Month goals, designed in such a way that their progress can be numerically monitored and that they have a specific target rather than an abstract concept (like “Being able to run at 18 km/hr for 20 mins straight without break” and not “Being able to run fast”).
The four projects are as follows:
- Sep-Nov: Developing GhostTime: An anonymous social network.
- Dec-Feb: Developing an Introspection Tool which helps you monitor your schedule.
- March-May: Developing an AI system which can generate good, high quality music.
- June-Aug: Achieving a national rating of less than 1000 on codechef
FAQ
Q. Why are you doing this?
Because I am an avid learner and maintaining accountability in this way would help me avoid procrastination and ultimately help me in learning much more effectively.
Q. How did you come up with this list?
-
GhostRider
My dear friend A.V .I. came up with the beautiful idea of having an anonymous social network and from then onwards I have been praising the idea. I would love to see it a reality.
-
Schedule Visualiser
I have a habit of procrastination and find myself wasting too much time writing, analysing and drawing my routine. I always wanted to automate it.
-
AI Music Generation
It came up in a casual conversation with one of my friends while discussing neural networks and the idea stuck to me from then on. Also, I am learning about Machine Learning and this would be a beautiful application. ;-)
-
Competitive Programming
Having been contributing to open source projects for a while now have made me familiar to the process of Software Developement, but I still consider my Computer Science skills to be subpar. Competitive Programming provides a great way to ensure that I keep on track.
Q. How much time will you be spending working on these projects?
I am an Engineering student at Zakir Hussain College of Engineering and Technology, AMU and there would be examinations, assignments, community activities, co-curricular participation nearly during every project. I also appreciate OSS development and hack actively on coala and vulture. Other than this, gym also takes up some of my time daily.
I prefer to work on these projects on leave-days and week-ends and during my free time.
Q. How do you plan to monitor your progress?
I shall monitor my progress by writing a brief journal entry in the form of a Blog Post everyday. Also, I shall keep track of what’s going on through a private gitlab repository which shall have respective milestones much like https://gitlab.com/coala/GSoC-2017.


To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video


Seven years after attending my first FOSSAsia in Ho Chi Min City, I was able to join again this year! The difference is amazing - the conference has grown to be one of the largest open source events in Asia, with more than 200 speakers over three days across 13 tracks and now hosted in Singapore.
The conference is entirely open source and volunteer-run, which is really neat. Kudos to the organizers for putting it on, which is a huge amount of work. The focus on free and open source software and tracks on relevant topics like AI, Bitcoin, and IoT combine to make a great collection of people to put in one place for a weekend.
Mozilla didn't directly sponsor this year, but instead sent some of our Tech Speakers who had talks accepted and myself. We were seven people from six countries, speaking about VR, WebAssembly, Web-RTC, security, IoT, AR and more. Big thanks to Bob Reyes, Diky Arga Anggara, Noritada Shimizu, Santosh Viswanatham, Shah Mijanur Rahman and Trishul Goel for speaking at the conference and putting in a bunch of hours at our table every day.
The number of speakers was enough of a presence to earn us a table in the exhibition hall, so we took advantage of the opportunity and demo'd A-Frame VR and AR on mobile devices for all three days.
The response was fantastic - lots of people having their first VR experience of any kind, and everyone was mindblown that the demos were built using web technologies, running in a browser, and on a mobile phone.
After three days of rapping with everyone who came by the booth, here are a few impressions:
Most people, developers included, haven't strongly engaged in VR yet. If you assume everyone is doing it, you're probably in the VR industry and you're wrong. I've been demoing VR at conferences for the last couple of years and I always ask if people have tried it before and the answer is usually "no". VR may be in the limelight in tech news, but the on-the-ground experience says it's still very early days.
A-Frame has excellent name recognition. This conversation a lot: "This was made with a JavaScript library called A-Frame." "Oh, A-Frame!" "You've used it?" "No, but I've heard of it and it looks awesome!".
Almost nobody was talking about bots.
Almost everybody was talking about AI and machine learning.
People are still asking us about Firefox OS.
Conference
What I liked:
- Great crowd. It really feels like a practitioners conference where people are learning reciprocally.
- Talk topics are really good. Very little fluff on the schedule. Great mix of interesting and practical topics. Good job by organizers here.
- Excellent conference website and apps. They're writing their own FOSS event management stack, and it seems pretty great so far.
- Communication from organizers prior to the event was really good. Combination of emails for important things, and Google Group and Slack for general communication really worked well.
What I'd like to see next year:
- Speakers should not have to pay for tickets.
- Need a venue that's centrally located, easier to navigate and that lets attendees focus on the conference.
- Singapore already has lots of events, and is famously expensive for hotel and venue space. To make a truly pan-Asian conference, should move around to different cities.
- The schedule was changed at the last minute without warning to speakers, causing some to miss their talks. Need to lock the schedule down, and communicate changes very clearly.
- Day two and three each have 15 tracks! I'd prefer to see a smaller and more focused set of tracks.
Social, Photos, Whatnot
- FOSSAsia pool on Flickr
- FOSSAsia official photog's photos
- #fossasia on Twitter
- #fossasia on Instagram
- My FOSSAsia 2017 tweets
Our Talks
Huge thanks to Engineers.sg, who recorded almost all of talks. The complete set of FOSSAsia 2017 recorded talks is here on their website.
OpenSec and Why WebAppSec Matters - Shah Mijanur Rahman (SYLHET, Bangladesh)
Tea Linux OS, Designed for Programmer / Developer - Diky Arga Anggara (Semarang, Indonesia)
WebRTC - future of Video Chats - Trishul Goel (Delhi, India)
WebAssembly: now web is a new compiler target architecture - Noritada Shimizu (Tokyo, Japan)
Integrated Physical Computing on the Web - Dietrich Ayala (Portland, OR, USA)


{% extends '_base/page-with_nav-single_row.html' %} {% load staticfiles %} {% load bootstrap3 %} {% block title %} Import Product Migrations - Product Database {% endblock %} {% block page_content %}
You can use the following Excel Template to import Product migrations to the database.
Product ID
,Vendor
(name) and Migration Source
(name).
Please note that empty values in the required columns are ignored, whereas optional columns will be set to none. The sheet name must be set to Products
.


{% extends '_layouts/layout.html' %} {% block page_title %}Index : {{serviceName}}{% endblock %} {% block content %}
15/02/2018
On personal details page make sure we collect both current location and home address (for PDS).
{% endblock %} {% block footer %}{% endblock %}


POS Programming Demonstration
We'd like you to implement a Java solution to the following specification, and a JUnit test suite with tests as specified. The demonstration does not require a user interface.
There is no time restriction. We encourage you to instead implement as elegant and robust a solution as you can.
The demonstration is to code and test a simple tool rental application.
The tools available for rental are as follows:
|
Tool Type |
Brand |
Tool Code |
|
Ladder |
Werner |
LADW |
|
Chainsaw |
Stihl |
CHNS |
|
Jackhammer |
Ridgid |
JAKR |
|
Jackhammer |
DeWalt |
JAKD |
Each tool instance has the following attributes:
Tool Code - Unique identifier for a tool instance
Brand - The brand of the ladder, chain saw or jackhammer.
Tool Type - The type of tool. The type also specifies the daily rental charge, and the days for which the daily rental charge applies:
|
|
Daily charge |
Weekday charge |
Weekend charge |
Holiday charge |
|
Ladder |
$1.99 |
Yes |
Yes |
No |
|
Chainsaw |
$1.49 |
Yes |
No |
Yes |
|
Jackhammer |
$2.99 |
Yes |
No |
No |
There are only two (2) holidays in the calendar:
Checkout requires the following information to be provided:
Checkout should throw an exception with an instructive, user-friendly message if
Checkout generates a Rental Agreement instance with the following values.
Rental Agreement should include a method that can print the above values as text to the console like this:
Tool code: LADW
Tool type: Ladder
…
Final charge: $9.99
with formatting as follows:
Your code must include JUnits to prove your solution is correct.
The proof should include the following scenarios:
|
|
Test 1 |
Test 2 |
Test 3 |
Test 4 |
Test 5 |
Test 6 |
|
Checkout terms |
|
|
|
|
|
|
|
Tool code |
JAKR |
LADW |
CHNS |
JAKD |
JAKR |
JAKR |
|
Rental days |
5 |
3 |
5 |
6 |
9 |
4 |
|
Checkout date |
09/03/15 |
07/02/20 |
07/02/15 |
09/03/15 |
07/02/15 |
07/02/20 |
|
Discount |
101% |
10% |
25% |
0% |
0% |
50% |
Don't forget, if an exception is thrown it must throw a user-friendly exception message.
Use same tool properties in this document to ensure matching test results:
|
|
Test 1 |
Test 2 |
Test 3 |
Test 4 |
Test 5 |
Test 6 |
|
Tests pass req |
|
|
|
|
|
|
|
Throws Exception? |
YES |
NO |
NO |
NO |
NO |
NO |
|
Tool code |
N\A |
LADW |
CHNS |
JAKD |
JAKR |
JAKR |
|
Tool type |
N\A |
Ladder |
Chainsaw |
Jackhammer |
Jackhammer |
Jackhammer |
|
Tool brand |
N\A |
Werner |
Stihl |
DeWalt |
Ridgid |
Ridgid |
|
Rental days |
N\A |
3 |
5 |
6 |
9 |
4 |
|
Checkout date |
N\A |
07/02/20 |
07/02/15 |
09/03/15 |
07/02/15 |
07/02/20 |
|
Due date |
N\A |
07/05/20 |
07/07/15 |
09/09/15 |
07/11/15 |
07/06/20 |
|
Daily rental charge |
N\A |
$1.99 |
$1.49 |
$2.99 |
$2.99 |
$2.99 |
|
Charge days |
N\A |
2 |
3 |
3 |
5 |
1 |
|
Pre-discount charge |
N\A |
$3.98 |
$4.47 |
$8.97 |
$14.95 |
$2.99 |
|
Discount percent |
N\A |
10% |
25% |
0% |
0% |
50% |
|
Discount amount |
N\A |
$0.40 |
$1.12 |
$0.00 |
$0.00 |
$1.50 |
|
Final charge |
N\A |
$3.58 |
$3.35 |
$8.97 |
$14.95 |
$1.49 |


| anova.mitml.result {mitml} | R Documentation |
Performs model comparisons for a series of nested statistical models fitted using with.mitml.list
.
## S3 method for class 'mitml.result' anova(object, ..., method = c("D3", "D4", "D2"), ariv = c("default", "positive", "robust"), data = NULL)
object |
An object of class |
... |
Additional objects of class |
method |
A character string denoting the method used for the model comparison. Can be |
ariv |
A character string denoting how the ARIV is calculated. Can be |
data |
(optional) A list of imputed data sets (see 'Details'). |
This function performs likelihood-based comparisons between multiple statistical models fitted with with.mitml.list
.
If possible, the models are compared using the D_3 statistic (Meng & Rubin, 1992).
If this method is unavailable, the D_4 or D_2 statistic is used instead (Chan & Meng, 2019; Li, Meng, Raghunathan, & Rubin, 1991).
This function is essentially a wrapper for testModels
with the advantage that several models can be compared simultaneously.
For a list of supported models and further options for more specific model comparisons, see testModels
.
The ariv
argument affects how the average relative increase in variance is calculated (see also testModels
).
Note that the D_4 method can fail if the data to which the model was fitted cannot be found.
In such a case, the data
argument can be used to specify the list of imputed data sets directly (see also testModels
).
A list containing the results of each model comparison.
A print
method is used for more readable output.
Simon Grund
Meng, X.-L., & Rubin, D. B. (1992). Performing likelihood ratio tests with multiply-imputed data sets. Biometrika, 79, 103-111.
Laird, N., Lange, N., & Stram, D. (1987). Maximum likelihood computations with repeated measures: Application of the em algorithm. Journal of the American Statistical Association, 82, 97-105.
Li, K. H., Raghunathan, T. E., & Rubin, D. B. (1991). Large-sample significance levels from multiply imputed data using moment-based statistics and an F reference distribution. Journal of the American Statistical Association, 86, 1065-1073.
require(lme4) data(studentratings) fml <- ReadDis + SES ~ ReadAchiev + (1|ID) imp <- panImpute(studentratings, formula = fml, n.burn = 1000, n.iter = 100, m = 5) implist <- mitmlComplete(imp) # simple comparison (same as testModels) fit0 <- with(implist, lmer(ReadAchiev ~ (1|ID), REML = FALSE)) fit1 <- with(implist, lmer(ReadAchiev ~ ReadDis + (1|ID), REML = FALSE)) anova(fit1, fit0) ## Not run: # multiple comparisons fit2 <- with(implist, lmer(ReadAchiev ~ ReadDis + (1 + ReadDis|ID), REML = FALSE)) anova(fit2, fit1, fit0) ## End(Not run)


Ponydoro!
(The AngularJS pomodoro timer with ponies)
Session Length:
-
+
{{work}}:00
Break Length:
-
+
{{break}}:00
{{clock || 'Click Start to begin'}}
Start
Stop
You've earned {{pony}} {{ponyplur}}!


PlayStation 5 controller – A first look
by Bradley PriorImages filed with the Japanese Patent Office have provided the first look at what the upcoming PlayStation 5 controller may look like.
According to these sketches, there doesn’t appear to be much that is significantly different when compared with the current DualShock 4 controller, but there are some minor changes.
The PlayStation 5 controller doesn’t appear to have a light bar, which could result in superior battery life – especially when combined with the improved battery Sony is planning on using in the controller.
The controller in the images also appears to sport slightly larger triggers, and it looks to have dropped the two-tone design.
The thumbsticks will remain symmetrical, continuing the trend that Microsoft bucked with the Xbox.
Sony previously announced that it will adopt haptic feedback to replace the traditional “rumble” technology in its controllers – offering a better range of vibrations and improved immersion.
The company will also change the way its controllers’ triggers work, with the new triggers allowing developers to manipulate resistance depending on in-game events.
Sony Interactive Entertainment CEO Jim Ryan announced in October that the PlayStation 5 will launch in “holiday 2020.”
Images of the PlayStation 5 controller patent filing can be viewed below.


Subscribers
Fields
Subscribers Fields
Subscribers Fields
{{ subscriber.name }}
Subscriber
{{ field.title }}
Field
Save
Field
Actions
{{item.title}}
delete


Chapter One: Highschool
- Mexico:
I visited Mexico in highschool durrning the summer. Sometimes to the beach, and sometimes in central Mexico. - Argentina:
I studied abroad for one year, living in Comodoro and Buenos Aries. I was also fortunate to travel around the country!
Chapter Two: College
- Spain:
I studied abroad in Oviedo and visited Madrid and San Sebastian. Their currenly is the Euro(€). - Ireland:
After I graduated college, I went to Ireland for the summer with my family. Ireland also uses the €.
Chapter Three: The Real World
- London:
Nearly a year after college, I decided to apply to a program called the Mountbatten Institute. I was offered a job and the oportunity to live in London for a year! London and the UK are different from the rest of europe and they use the GBP or Great Brittish Pund currency (£).London is where my husband (Alex) and I met. - New York:
After my year in London was over, I kept my job and moved to NYC. I lived there for two years.