Defines the simulation. More...
Public Member Functions | |
| int | addAgent (Vector2 position) |
| Adds a new agent with default properties to the simulation. More... | |
| int | addAgent (Vector2 position, float neighborDist, int maxNeighbors, float timeHorizon, float timeHorizonObst, float radius, float maxSpeed, Vector2 velocity) |
| Adds a new agent to the simulation. More... | |
| int | addObstacle (IList< Vector2 > vertices) |
| Adds a new obstacle to the simulation. More... | |
| void | Clear () |
| Clears the simulation. | |
| float | doStep () |
| Performs a simulation step and updates the two-dimensional position and two-dimensional velocity of each agent. More... | |
| int | getAgentAgentNeighbor (int agentNo, int neighborNo) |
| Returns the specified agent neighbor of the specified agent. More... | |
| int | getAgentMaxNeighbors (int agentNo) |
| Returns the maximum neighbor count of a specified agent. More... | |
| float | getAgentMaxSpeed (int agentNo) |
| Returns the maximum speed of a specified agent. More... | |
| float | getAgentNeighborDist (int agentNo) |
| Returns the maximum neighbor distance of a specified agent. More... | |
| int | getAgentNumAgentNeighbors (int agentNo) |
| Returns the count of agent neighbors taken into account to compute the current velocity for the specified agent. More... | |
| int | getAgentNumObstacleNeighbors (int agentNo) |
| Returns the count of obstacle neighbors taken into account to compute the current velocity for the specified agent. More... | |
| int | getAgentObstacleNeighbor (int agentNo, int neighborNo) |
| Returns the specified obstacle neighbor of the specified agent. More... | |
| IList< Line > | getAgentOrcaLines (int agentNo) |
| Returns the ORCA constraints of the specified agent. More... | |
| Vector2 | getAgentPosition (int agentNo) |
| Returns the two-dimensional position of a specified agent. More... | |
| Vector2 | getAgentPrefVelocity (int agentNo) |
| Returns the two-dimensional preferred velocity of a specified agent. More... | |
| float | getAgentRadius (int agentNo) |
| Returns the radius of a specified agent. More... | |
| float | getAgentTimeHorizon (int agentNo) |
| Returns the time horizon of a specified agent. More... | |
| float | getAgentTimeHorizonObst (int agentNo) |
| Returns the time horizon with respect to obstacles of a specified agent. More... | |
| Vector2 | getAgentVelocity (int agentNo) |
| Returns the two-dimensional linear velocity of a specified agent. More... | |
| float | getGlobalTime () |
| Returns the global time of the simulation. More... | |
| int | getNextObstacleVertexNo (int vertexNo) |
| Returns the number of the obstacle vertex succeeding the specified obstacle vertex in its polygon. More... | |
| int | getNumAgents () |
| Returns the count of agents in the simulation. More... | |
| int | getNumObstacleVertices () |
| Returns the count of obstacle vertices in the simulation. More... | |
| int | GetNumWorkers () |
| Returns the count of workers. More... | |
| Vector2 | getObstacleVertex (int vertexNo) |
| Returns the two-dimensional position of a specified obstacle vertex. More... | |
| int | getPrevObstacleVertexNo (int vertexNo) |
| Returns the number of the obstacle vertex preceding the specified obstacle vertex in its polygon. More... | |
| float | getTimeStep () |
| Returns the time step of the simulation. More... | |
| void | processObstacles () |
| Processes the obstacles that have been added so that they are accounted for in the simulation. More... | |
| bool | queryVisibility (Vector2 point1, Vector2 point2, float radius) |
| Performs a visibility query between the two specified points with respect to the obstacles. More... | |
| void | setAgentDefaults (float neighborDist, int maxNeighbors, float timeHorizon, float timeHorizonObst, float radius, float maxSpeed, Vector2 velocity) |
| Sets the default properties for any new agent that is added. More... | |
| void | setAgentMaxNeighbors (int agentNo, int maxNeighbors) |
| Sets the maximum neighbor count of a specified agent. More... | |
| void | setAgentMaxSpeed (int agentNo, float maxSpeed) |
| Sets the maximum speed of a specified agent. More... | |
| void | setAgentNeighborDist (int agentNo, float neighborDist) |
| Sets the maximum neighbor distance of a specified agent. More... | |
| void | setAgentPosition (int agentNo, Vector2 position) |
| Sets the two-dimensional position of a specified agent. More... | |
| void | setAgentPrefVelocity (int agentNo, Vector2 prefVelocity) |
| Sets the two-dimensional preferred velocity of a specified agent. More... | |
| void | setAgentRadius (int agentNo, float radius) |
| Sets the radius of a specified agent. More... | |
| void | setAgentTimeHorizon (int agentNo, float timeHorizon) |
| Sets the time horizon of a specified agent with respect to other agents. More... | |
| void | setAgentTimeHorizonObst (int agentNo, float timeHorizonObst) |
| Sets the time horizon of a specified agent with respect to obstacles. More... | |
| void | setAgentVelocity (int agentNo, Vector2 velocity) |
| Sets the two-dimensional linear velocity of a specified agent. More... | |
| void | setGlobalTime (float globalTime) |
| Sets the global time of the simulation. More... | |
| void | SetNumWorkers (int numWorkers) |
| Sets the number of workers. More... | |
| void | setTimeStep (float timeStep) |
| Sets the time step of the simulation. More... | |
Properties | |
| static Simulator | Instance [get] |
Defines the simulation.
|
inline |
Adds a new agent with default properties to the simulation.
| position | The two-dimensional starting position of this agent. |
|
inline |
Adds a new agent to the simulation.
| position | The two-dimensional starting position of this agent. |
| neighborDist | The maximum distance (center point to center point) to other agents this agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe. Must be non-negative. |
| maxNeighbors | The maximum number of other agents this agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe. |
| timeHorizon | The minimal amount of time for which this agent's velocities that are computed by the simulation are safe with respect to other agents. The larger this number, the sooner this agent will respond to the presence of other agents, but the less freedom this agent has in choosing its velocities. Must be positive. |
| timeHorizonObst | The minimal amount of time for which this agent's velocities that are computed by the simulation are safe with respect to obstacles. The larger this number, the sooner this agent will respond to the presence of obstacles, but the less freedom this agent has in choosing its velocities. Must be positive. |
| radius | The radius of this agent. Must be non-negative. |
| maxSpeed | The maximum speed of this agent. Must be non-negative. |
| velocity | The initial two-dimensional linear velocity of this agent. |
|
inline |
Adds a new obstacle to the simulation.
| vertices | List of the vertices of the polygonal obstacle in counterclockwise order. |
To add a "negative" obstacle, e.g. a bounding polygon around the environment, the vertices should be listed in clockwise order.
|
inline |
Performs a simulation step and updates the two-dimensional position and two-dimensional velocity of each agent.
|
inline |
Returns the specified agent neighbor of the specified agent.
| agentNo | The number of the agent whose agent neighbor is to be retrieved. |
| neighborNo | The number of the agent neighbor to be retrieved. |
|
inline |
Returns the maximum neighbor count of a specified agent.
| agentNo | The number of the agent whose maximum neighbor count is to be retrieved. |
|
inline |
Returns the maximum speed of a specified agent.
| agentNo | The number of the agent whose maximum speed is to be retrieved. |
|
inline |
Returns the maximum neighbor distance of a specified agent.
| agentNo | The number of the agent whose maximum neighbor distance is to be retrieved. |
|
inline |
Returns the count of agent neighbors taken into account to compute the current velocity for the specified agent.
| agentNo | The number of the agent whose count of agent neighbors is to be retrieved. |
|
inline |
Returns the count of obstacle neighbors taken into account to compute the current velocity for the specified agent.
| agentNo | The number of the agent whose count of obstacle neighbors is to be retrieved. |
|
inline |
Returns the specified obstacle neighbor of the specified agent.
| agentNo | The number of the agent whose obstacle neighbor is to be retrieved. |
| neighborNo | The number of the obstacle neighbor to be retrieved. |
|
inline |
Returns the ORCA constraints of the specified agent.
| agentNo | The number of the agent whose ORCA constraints are to be retrieved. |
The halfplane to the left of each line is the region of permissible velocities with respect to that ORCA constraint.
|
inline |
Returns the two-dimensional position of a specified agent.
| agentNo | The number of the agent whose two-dimensional position is to be retrieved. |
|
inline |
Returns the two-dimensional preferred velocity of a specified agent.
| agentNo | The number of the agent whose two-dimensional preferred velocity is to be retrieved. |
|
inline |
Returns the radius of a specified agent.
| agentNo | The number of the agent whose radius is to be retrieved. |
|
inline |
Returns the time horizon of a specified agent.
| agentNo | The number of the agent whose time horizon is to be retrieved. |
|
inline |
Returns the time horizon with respect to obstacles of a specified agent.
| agentNo | The number of the agent whose time horizon with respect to obstacles is to be retrieved. |
|
inline |
Returns the two-dimensional linear velocity of a specified agent.
| agentNo | The number of the agent whose two-dimensional linear velocity is to be retrieved. |
|
inline |
Returns the global time of the simulation.
|
inline |
Returns the number of the obstacle vertex succeeding the specified obstacle vertex in its polygon.
| vertexNo | The number of the obstacle vertex whose successor is to be retrieved. |
|
inline |
Returns the count of agents in the simulation.
|
inline |
Returns the count of obstacle vertices in the simulation.
|
inline |
Returns the count of workers.
|
inline |
Returns the two-dimensional position of a specified obstacle vertex.
| vertexNo | The number of the obstacle vertex to be retrieved. |
|
inline |
Returns the number of the obstacle vertex preceding the specified obstacle vertex in its polygon.
| vertexNo | The number of the obstacle vertex whose predecessor is to be retrieved. |
|
inline |
Returns the time step of the simulation.
|
inline |
Processes the obstacles that have been added so that they are accounted for in the simulation.
Obstacles added to the simulation after this function has been called are not accounted for in the simulation.
Performs a visibility query between the two specified points with respect to the obstacles.
| point1 | The first point of the query. |
| point2 | The second point of the query. |
| radius | The minimal distance between the line connecting the two points and the obstacles in order for the points to be mutually visible (optional). Must be non-negative. |
|
inline |
Sets the default properties for any new agent that is added.
| neighborDist | The default maximum distance (center point to center point) to other agents a new agent takes into account in the navigation. The larger this number, the longer he running time of the simulation. If the number is too low, the simulation will not be safe. Must be non-negative. |
| maxNeighbors | The default maximum number of other agents a new agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe. |
| timeHorizon | The default minimal amount of time for which a new agent's velocities that are computed by the simulation are safe with respect to other agents. The larger this number, the sooner an agent will respond to the presence of other agents, but the less freedom the agent has in choosing its velocities. Must be positive. |
| timeHorizonObst | The default minimal amount of time for which a new agent's velocities that are computed by the simulation are safe with respect to obstacles. The larger this number, the sooner an agent will respond to the presence of obstacles, but the less freedom the agent has in choosing its velocities. Must be positive. |
| radius | The default radius of a new agent. Must be non-negative. |
| maxSpeed | The default maximum speed of a new agent. Must be non-negative. |
| velocity | The default initial two-dimensional linear velocity of a new agent. |
|
inline |
Sets the maximum neighbor count of a specified agent.
| agentNo | The number of the agent whose maximum neighbor count is to be modified. |
| maxNeighbors | The replacement maximum neighbor count. |
|
inline |
Sets the maximum speed of a specified agent.
| agentNo | The number of the agent whose maximum speed is to be modified. |
| maxSpeed | The replacement maximum speed. Must be non-negative. |
|
inline |
Sets the maximum neighbor distance of a specified agent.
| agentNo | The number of the agent whose maximum neighbor distance is to be modified. |
| neighborDist | The replacement maximum neighbor distance. Must be non-negative. |
|
inline |
Sets the two-dimensional position of a specified agent.
| agentNo | The number of the agent whose two-dimensional position is to be modified. |
| position | The replacement of the two-dimensional position. |
|
inline |
Sets the two-dimensional preferred velocity of a specified agent.
| agentNo | The number of the agent whose two-dimensional preferred velocity is to be modified. |
| prefVelocity | The replacement of the two-dimensional preferred velocity. |
|
inline |
Sets the radius of a specified agent.
| agentNo | The number of the agent whose radius is to be modified. |
| radius | The replacement radius. Must be non-negative. |
|
inline |
Sets the time horizon of a specified agent with respect to other agents.
| agentNo | The number of the agent whose time horizon is to be modified. |
| timeHorizon | The replacement time horizon with respect to other agents. Must be positive. |
|
inline |
Sets the time horizon of a specified agent with respect to obstacles.
| agentNo | The number of the agent whose time horizon with respect to obstacles is to be modified. |
| timeHorizonObst | The replacement time horizon with respect to obstacles. Must be positive. |
|
inline |
Sets the two-dimensional linear velocity of a specified agent.
| agentNo | The number of the agent whose two-dimensional linear velocity is to be modified. |
| velocity | The replacement two-dimensional linear velocity. |
|
inline |
Sets the global time of the simulation.
| globalTime | The global time of the simulation. |
|
inline |
Sets the number of workers.
| numWorkers | The number of workers. |
|
inline |
Sets the time step of the simulation.
| timeStep | The time step of the simulation. Must be positive. |


public class Easing
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
static interface |
Easing.EasingFunction |
| Constructor and Description |
|---|
Easing() |
public static final Easing.EasingFunction Linear
public static final Easing.EasingFunction EaseInQuad
public static final Easing.EasingFunction EaseOutQuad
public static final Easing.EasingFunction EaseInOutQuad
public static final Easing.EasingFunction EaseInCubic
public static final Easing.EasingFunction EaseOutCubic
public static final Easing.EasingFunction EaseInOutCubic
public static final Easing.EasingFunction EaseInQuart
public static final Easing.EasingFunction EaseOutQuart
public static final Easing.EasingFunction EaseInOutQuart
public static final Easing.EasingFunction EaseInSine
public static final Easing.EasingFunction EaseOutSine
public static final Easing.EasingFunction EaseInOutSine
public static final Easing.EasingFunction EaseInExpo
public static final Easing.EasingFunction EaseOutExpo
public static final Easing.EasingFunction EaseInOutExpo
public static final Easing.EasingFunction EaseInCirc
public static final Easing.EasingFunction EaseOutCirc
public static final Easing.EasingFunction EaseInOutCirc
public static final Easing.EasingFunction EaseInElastic
public static final Easing.EasingFunction EaseOutElastic
public static final Easing.EasingFunction EaseInOutElastic
public static final Easing.EasingFunction EaseInBack
public static final Easing.EasingFunction EaseOutBack
public static final Easing.EasingFunction EaseInOutBack
public static final Easing.EasingFunction EaseInBounce
public static final Easing.EasingFunction EaseOutBounce
public static final Easing.EasingFunction EaseInOutBounce


Groundhogs in Athens
These creatures live less in town and more in the surrounding county. It's entirely possible you've caught sight of a Groundhog in the Athens area. You can learn more than the casual observer by clicking the buttons below...
Taxonomy
| Order |
Rodentia |
| Family |
Sciruidae |
| Genus |
Marmota |
| Species |
monax |
Diet
- The groundhog is an herbivore eating almost any type of vegetation that they can find from grasses and plants to fruits and vegetables and even tree bark. They can decimate vegetable gardens much to the dismay of local gardeners.
- In the wild they live a feast-or-famine lifestyle, gorging themselves in the warmer months to prepare for winter hibernation.
- They will occasionally eat insects, eggs, and young birds, and will eat bean, peas, carrot tops, alfalfa and soybeans, if available. An adult woodchuck can consume over a pound of vegetation each day.
- Groundhogs hydrate through eating leafy plants rather than drinking from a water source.
- At Bear Hollow, they receive a mix of fruits and vegetables except during winter hibernation.
Range and Habitat
- Groundhogs can be found in approximately half of the North American continent (see map).
- Woodchucks are found statewide in a variety of habitats. They prefer meadows, pastures, crop fields, and yards that are close to a woody edge. They are common in brushy or weedy areas along fence rose or road right-of-ways.
- They prefer elevations at or below 2000 meters and require areas with dry soils. Important habitat features include a plethora of shelters to choose from (they usually change their resting site each day); suitable features include matted grass, leaf litter, rocky crevices, termite mounds or previously-dug burrows. They tend to prefer grassy areas with light undergrowth.
- Groundhog burrows usually have two to five entrances, providing groundhogs their primary means of escape from predators. Burrows are particularly large, with up to 14 metres (46 ft) of tunnels buried up to 1.5 metres (5 ft) underground, and can pose a serious threat to agricultural and residential development by damaging farm machinery and even undermining building foundations.
Physical Features
- They normally weigh around 13-14lbs, which is about the size of an average housecat.
- They are normally 25 inches long, including the tail.
- Groundhogs are covered with two coats of fur: a dense grey undercoat and a longer coat of banded guard hairs that gives the groundhog its distinctive "frosted" appearance.
Life Span
- In the wild, groundhogs can live up to six years, with two or three being average.
- In captivity, groundhogs are reported to live from 9–14 years.
- Common predators for groundhogs include wolves, coyotes, foxes, bobcats, bears, large hawks, and dogs.
- Young groundhogs are often at risk for predation by snakes, which easily enter the burrow.
Reproduction
- Woodchucks breed in late February or March and usually not until the animal is close to 2 years old. Four to five young are born in April or May. A woodchuck will give birth to only one litter per year.
- The young will start to find their own territory when they are just a few months old.
Social Behavior
- Woodchucks are territorial, except during the breeding season, and will defend their burrows against intruders. They will make noise with their incisors and use short, sharp whistles to warn other woodchucks of danger. They are not fast runners, but will defend themselves when threatened without a way to escape.
- They are generally diurnal.
- Though groundhogs are the most solitary of the marmots, several individuals may occupy the same burrow.
Conservation
- They are a species of least concern. Some states have designated hunting seasons for them.
Interpretive Information
- After the first frost, they retreat to their underground burrows and snooze until spring, drawing their sustenance from body fat. While hibernating, the animal's heart rate plunges, and its body temperature is not much warmer than the temperature inside its burrow.
- Groundhog hibernation gave rise to the popular American custom of Groundhog Day, held on the second of February every year. Tradition dictates that if a groundhog sees its shadow that day, there will be six more weeks of winter
- Groundhogs are the largest members of the squirrel family.
- Though they are usually seen on the ground, they can climb trees and are also capable swimmers.
- These rodents frequent the areas where woodlands meet open spaces, like fields, roads, or streams.
Bear Hollow’s Alligators
- Male – Gus
- Gus a male woodchuck arrived in June 2007. He was born in captivity on April 12, 2007.
- He initially was kept in the window of the Exhibit Hall, and then he was housed for years in the exhibit that Hooch and Victor the Vulture now share. We hope his new exhibit will be on the top of the hill next to the big entrance that is currently closed off.
- Gus is currently off-exhibit while a new enclosure for him is constructed. We plan to begin a big push to raise funds for his new exhibit called “Gus’ Green House” because we hope to raise money for it and build it in an environmentally friendly way. We hope to have a can drive soon.
- Docents should remain aware of Gus even though he’s off-exhibit and be able to talk to guests about him as many people ask where he is or how they can help!
Credits and References
- Photo © Wade Sheldon
- General research by Sherrie Hines
- http://animals.nationalgeographic.com/animals/mammals/groundhog/
- http://www.in.gov/dnr/fishwild/5694.htm
- http://en.wikipedia.org/wiki/Groundhog


* Estimates based on available information
": total_cost } }, add_container=0, add_top_padding=0, add_bottom_padding=0, ) }} {% else %}We don't have any records for facial recognition systems in {{ state_name }} yet.
We are actively working to expand our repository of information we have on facial recognition in India. We shall keep posting more case studies and updates, follow us on social media to stay up to date.
If you have some information about an FRT system around you that you wish to share with us, feel free to get in touch.
Status: {{ frt.status }}
{%- endif -%} {%- if frt.purpose -%}Purpose: {{ frt.purpose }}
{%- endif -%}


Chengdu and Hong Kong 2018
Took a train trip to Chengdu for Sichuan food prior to the Performance-Aware Programming with Application Accelerators (PAPAA) 2018 Workshop in Hong Kong.
There was some beautiful scenery along the way.
About 14 hours later (Hong Kong - Shenzhen - Guangzhou - Chengdu) we arrived in Chengdu. Glad we took the fast train.
This is a photo of Chengdu from our hotel above the train station.
We then moved to a hotel downtown and had Sichuan food.
Spicy noodles.
Spicy beef.
"/assets/images/2018/08/IMG_8794.jpg"
>

Thanks Sarimah and David for a wonderful spicy hotpot dinner.
Spicy fish
Spicy mapo tofu.
Assorted spicy food.
"/assets/images/2018/08/P7170031.jpg"
>

One of the main attractions in Chengdu is the Giant Panda Breeding Research Base.
Here is a Red Panda.
We were there the entire morning and this was the only photo I made of an animate panda.
A highlight was the Jinsha archaeological site which was only discovered in 2001 (accidentally when they were digging the foundations to build units). There, they found remains of the Shu Kingdom (1200-600 BC).
They chose to leave the site as it was found.
There is also a museum where the stone, ivory, jade, bronze and gold artefacts were displayed.
Shang Dynasty chariot.
Probably the most well known exhibit, the Golden Mask.
One thing that I like very much about Sichuan is that they still have a tea culture. This has vanished from places like Beijing and Shanghai. We had tea in this beautiful tea shop near the Jiasha site.
We then took the train back to Hong Kong for the PAPAA workshop.
The workshop was hosted by Prof Hayden So at HKU and we all thank him for a wonderful event with superb food.
One of the afternoons, I went to Shenzhen to visit CTaccel.
I often get asked which camera I use. For this post, it was a mix of iPhone, Xiaomi 6 pro phone, Canon Ixus S120 and Olympus E-PM2. It is usually a matter of convenience as I often find it hard to tell which photo was taken with what.


A big misconception between the average computer user and the experienced ones, are being able to recognize the threat. Add, insecure webpages, and untrusted links can easily lead to the loss of your personal information easily
Hackers can be identified, for the ones you meet, by the type of "color" they refer to themselves with. Black hat hackers are the malicious variety, only worried about serving their self or a higher person looking for your info at top dollar.  Grey hats tend to live in the middle, and are usually do the jobs of white hats without the need for pay, just to prove it to themselves instead. Leaking info along the way.
The range of access to a computer can vary immensely. There are viruses that can be remotely installed into your computer, such as malware, ransomware, or spyware. Some Spyware can even com preinstalled. There are also certain cookies that take your information every time you access a site, and you can agree to it without even knowing.


VULNRΞPO is a FREE Open Source project designed to speed up the creation of IT Security vulnerability reports and can be used as a Security Reports Repository. Store and manage your research locally, share it securely! Focus on research! DON'T waste your time creating a report!
Feature list
security
Security
Project use browser for encrypt/decrypt (AES) and store data in locally. Full confidentiality of data, end-to-end encryption, by default nothing is sent out. No backend system, only front-end technology, pure JS client.
share
Share report
You can share your report using AES encryption by default.
cloud_download
TXT & HTML & PDF
You can download report in TXT, HTML formats!. If you need PDF just 'print as PDF' html report.
attach_file
Attachments
You can easly attach any file you want to. Screenshot, movie or scanner output in txt. Automatically doing checksum sha256 of attached file.
info
Issues templates!
Create own templates or use default. The use of templates greatly speeds up the work for pentester or security auditor. Import CVE, CWE, MITRE ATT&CK or PCI DSS data also possible.
import_export
Import issues from security scanners
Supported import from: Nmap, Nessus, Burp, OpenVAS, Bugcrowd, Trivy. After importing, easily manage and edit vulnerabilities.
track_changes
Changelog
All important changes in report will be logged in to changelog and update to the next version of the report.
import_export
Export Issues
You can export issues to popular bugtrackers like Atlassian JIRA or use secure way to share only issues.


@NonExistentClass @NotNull fun readMessage(@NotNull reader: NonExistentClass, withDistance: boolean): NonExistentClass
Converts single JsonObject to WIMSPoint and returns it.
reader
- JsonReader to be consumed
withDistance
- a Boolean flag set to true when a distance to the user's location is
needed(in MyArea) and false otherwise


TSHBackend
Extends:
Backend to communicate with a Duplex stream talking tshell (tsh).
Constructor Summary
| Public Constructor | ||
| public |
constructor(transport: Duplex) |
Member Summary
| Public Members | ||
| public |
|
|
| public |
|
|
| public |
|
|
| public |
|
|
| public |
parser: * |
|
| public |
requests: * |
|
| public |
state: * |
|
| public |
transport: * |
Method Summary
| Public Methods | ||
| public |
bufferHasOK(buffer: *): * |
|
| public |
close() |
|
| public |
onParserData(data: *) |
|
| public |
onTransportData(data: *) |
|
| public |
|
|
| public |
setState(newState: *) |
|
| public |
write(data: *) |
Inherited Summary
| From class Backend | ||
| public get |
Promise that is resolved once the backend is ready to receive commands. |
|
| public |
requests: * |
|
| public |
close() Close the backend connection and free up resources. |
|
| public |
defaultHandler(request: Object, send: Function): * Default method handler. |
|
| public |
Transmit the given JSON-RPC payload to the backend service. |
|
| public |
getRequestType(request: Object): string Determine the type of the JSON-RPC request. |
|
| public |
onFeedback(result: Object) Called when receiving feedback from the backend service. |
|
| public |
Called when the backend is done processing the response and ready to hand it over to the XAPI frontend. |
|
| public abstract |
Used to send the actual command to the backend service. |
Public Constructors
public constructor(transport: Duplex) source
Override:
Backend#constructorParams:
| Name | Type | Attribute | Description |
| transport | Duplex | Stream to interact with TSH. |
Public Members
public connectResolve: * source
public feedbackQueries: * source
public parser: * source
public state: * source
public transport: * source
Public Methods
public onParserData(data: *) source
Params:
| Name | Type | Attribute | Description |
| data | * |
public onTransportData(data: *) source
Params:
| Name | Type | Attribute | Description |
| data | * |
public send(id: *, command: *, body: string) source
Override:
Backend#sendParams:
| Name | Type | Attribute | Description |
| id | * | ||
| command | * | ||
| body | string |
|
public setState(newState: *) source
Params:
| Name | Type | Attribute | Description |
| newState | * |
public write(data: *) source
Params:
| Name | Type | Attribute | Description |
| data | * |


runlim
A tool for sampling and limiting time and memory usage of a program and its child processes using the proc file system on Linux.
More information: home page
- Print the time and memory usage of a command:
runlim command command_arguments
- Log statistics to a file instead of `stdout`:
runlim --output-file=path/to/file command command_arguments
- Limit time to an upper bound (in seconds):
runlim --time-limit=number command command_arguments
- Limit real-time to an upper bound (in seconds):
runlim --real-time-limit=number command command_arguments
- Limit space to an upper bound (in MB):
runlim --space-limit=number command command_arguments


|
||||||||
| PREV NEXT | FRAMES NO FRAMES |
Profiler
class is a simple tool
used to profile the performance of instrumented
regions of source code by recording specific runtime
performance measurements.EventProfile
class contains
event-specific performance measurements.EventProfile
with
the specified event.
ThreadTrace
class contains
thread-specific trace information.ThreadTrace
with
the specified event.
|
||||||||
| PREV NEXT | FRAMES NO FRAMES |


public interface UIServer
| Modifier and Type | Method and Description |
|---|---|
void |
attach(StatsStorage statsStorage)
Attach the given StatsStorage instance to the UI, so the data can be visualized
|
void |
detach(StatsStorage statsStorage)
Detach the specified StatsStorage instance from the UI
|
void |
disableRemoteListener()
Disable the remote listener functionality (disabled by default)
|
void |
enableRemoteListener()
Enable the remote listener functionality, storing all data in memory, and attaching the instance to the UI.
|
void |
enableRemoteListener(StatsStorageRouter statsStorage,
boolean attach)
Enable the remote listener functionality, storing the received results in the specified StatsStorageRouter.
|
String |
getAddress()
Get the address of the UI
|
static UIServer |
getInstance()
Get (and, initialize if necessary) the UI server.
|
static UIServer |
getInstance(boolean multiSession,
Function<String,StatsStorage> statsStorageProvider)
Get (and, initialize if necessary) the UI server.
|
int |
getPort()
Get the current port for the UI
|
List<StatsStorage> |
getStatsStorageInstances() |
boolean |
isAttached(StatsStorage statsStorage)
Check whether the specified StatsStorage instance is attached to the UI instance
|
boolean |
isMultiSession()
Check if the instance initialized with one of the factory methods
(
getInstance() or getInstance(boolean, Function) ) is in multi-session mode |
boolean |
isRemoteListenerEnabled() |
boolean |
isStopped() |
void |
stop()
Stop/shut down the UI server.
|
void |
stopAsync(io.vertx.core.Promise<Void> stopCallback)
Stop/shut down the UI server.
|
static void |
stopInstance()
Stop UIServer instance, if already running
|
static UIServer getInstance() throws DL4JException
DL4JException
- if UI server failed to start;
if the instance has already started in a different mode (multi/single-session);
if interrupted while waiting for completionstatic UIServer getInstance(boolean multiSession, Function<String,StatsStorage> statsStorageProvider) throws DL4JException
multiSession
- in multi-session mode, multiple training sessions can be visualized in separate browser tabs.
statsStorageProvider
- function that returns a StatsStorage containing the given session ID.
null
.DL4JException
- if UI server failed to start;
if the instance has already started in a different mode (multi/single-session);
if interrupted while waiting for completionstatic void stopInstance() throws Exception
Exception
boolean isStopped()
boolean isMultiSession()
getInstance()
or getInstance(boolean, Function)
) is in multi-session modetrue
if the instance is in multi-sessionString getAddress()
int getPort()
void attach(StatsStorage statsStorage)
statsStorage
- StatsStorage instance to attach to the UIvoid detach(StatsStorage statsStorage)
statsStorage
- StatsStorage instance to detach. If not attached: no op.boolean isAttached(StatsStorage statsStorage)
statsStorage
- StatsStorage instance to attachList<StatsStorage> getStatsStorageInstances()
void enableRemoteListener()
RemoteUIStatsStorageRouter
, which will send information
remotely to this UI instancevoid enableRemoteListener(StatsStorageRouter statsStorage, boolean attach)
StatsStorage
instance, it may (optionally) be attached to the UI,
as if attach(StatsStorage)
was called on it.statsStorage
- StatsStorageRouter to post the received results toattach
- Whether to attach the given StatsStorage instance to the UI servervoid disableRemoteListener()
boolean isRemoteListenerEnabled()
void stop() throws InterruptedException
InterruptedException
- if the current thread is interrupted while waitingvoid stopAsync(io.vertx.core.Promise<Void> stopCallback)
Promise
on completion:
either call Promise.complete(T)
or Promise.fail(java.lang.Throwable)
.stopCallback
- callback Promise
to notify on completionCopyright © 2020. All rights reserved.


Agile is…
is about getting input from your environment
- many agile dev techniques, come from Toyota and lean manufacturing
- if they were based on 1000 cars a day metric and the suppliers or demand change, Toyota needed to avoid
split the process into small parts to reduce waste and inefficiency
- set up frequent opportunities for assessment and feedback
- plan only as far ahead as you need to. Your environment WILL change.
- break the process down into the smallest possible units
Small Pieces
- break the task down and break the time frames down
- sprints: in an avg dev shop, a sprint might be from 2-3 weeks
- for a day project, we use sprints from
Get feedback so that you can fail faster
Process
- sprint planning session
- sprint
- retrospective
Stories
Epic > stories > task
- Story = what is this code going to do?
- break the story down into tasks to make that happen
Planning session
- beginning of the project, you start out with a planning session.
- the client and the user can identify the NEED TO HAVES and WANT TO HAVES
- which stories are we going to pull out from the backlog
- reduce you waste because the client is going to change their mind
- the client and the user can identify the NEED TO HAVES and WANT TO HAVES
Agile is sort of the like:
- ~= small git commits
- ~= TDD
Nice job Matt


Explore the monuments of Egypt!
The Giza Pyramids are surrouded by the mystery of how they were built. Go experience how sublime they truly are on a camel or a horse, and live in the past for a few precious moments!
The Nile River, flowing through nine countries, is the longest river in the world. Enjoy the Nile at night with the city lights glittering on its surface.
A city in the Sinai Peninsula with beautiful beaches and warm weather. There are so many activities you can do like snorkling to see the corals of the Red Sea and watching the beautiful sunset.
Situated on the western bank of Lake Nasser, two massive rock temples carved out of the mountainside in the 13th century BC. This UNESCO World Heritage Site is a trip back to the days of the Pharaoh Ramesses II.
A glorious medieval Isalmic- era castle built by Salah ad-Din. Spend the day there and explore the rooms of the castle as well as the mosques and museums.
This white surfaced desert is widely known for its rock formations, overnight camping, and safari trips. Because it resembles the surface of a foreign planet, it was used as the setting for many Sci-Fi movies, like Vin Diesel's Riddick.
Sultan Qalawun Mosque is unique in that it combines the architecture of European Churches and designs from the Islamic world, showcasing Egypt's spirit of Islam and Christianity.
Explore the temple where Isis, the goddess of motherhood and fertility was worshipped byt the Pharaos.
Explore the city founded (and named after) Alexander the Great. Visit its beautiful shores, explore Bibliotheca Alexandria, and enjoy its beautiful weather in all seasons.


BORDIN (Campbell), Patricia Ann
Date of death: Tuesday, November 26th, 2019
Date of birth: Tuesday, January 25th, 1949
Age: 70
Location: Kitchener, Ontario
Family
- Spouse: Ted
- Children: Annmarie (Kevin)
- Grandchildren: Emily and Ethan
- Siblings: Linda, Cathy (Jim) and Pauline
Visitation: Saturday, December 14, 2019 from 12:30-1:15 pm, at the Henry Walser Funeral Home, 507 Frederick Street, Kitchener
Service: Saturday, December 14, 2019 at 1:30 pm, in the chapel of the funeral home. Reception to follow.


|
BeeSafe Project
v1.0
Low-cost tracking device.
|
Overall, the component of this project the team is the most pleased with is the hardware, specifically the PCB. The quality is very good for the technique used, and only one, minor mistake was made, which is a big feature the team considers. We were also very pleased with the fact that our PCB was completed before the University and its teaching spaces and labs closed down due to the COVID19 protection guidelines. This was all thanks to the hard work and responsible time management of our hardware engineer.
The software part of this project agreeably proved to be the most challenging, yet rewarding part of this project. All three team members learned a great amount from this project, which was especially true for our software engineering skills. We still have a lot of ideas as to what could be included in this project, as the communications module has served us very well and reliably, and the team enjoyed learning more about the low-level view of modern telecommunications. The order of features we would be interested in implementing has not been decided yet, neither the release versions they would fall under. However the team leaves their options open, and hopes that not only the hardware design but our created software suite will prove to be a useful source of ideas for similar projects at home or commercially.
With the release v1.0.0 complete, the project is ready to be expanded upon. The following features are considered to be added in the foreseeable future, however there is not yet a plan on how the release timeline would look.
With the budget being the most limiting aspect of this project, the team had many ideas what hardware components could be included in the next release of the project to further optimise the performance, provide better features and make it more true to the gamified version we hoped we could accomplish.
The team would certainly be interested in not only a smaller Pi (see below) and antenna, but a more powerful communications module. Integrated modules with access to 3-5G networks are available and can be quite small, making them ideal for this project. However, with the explanded range of features and decreased size, the price increases exponentially. The budget considerations are definitely a key point of talk within the team if we decide to pursue this further, especially commercially.
As software engineers have learned, one of the key tasks at the end of the project, just before handoff, is to tidy up the code. This usually includes writing clear comments, indenting code blocks, and removing any so-called "dead-code" from the project. While it would be good practice to do so in this case, the team is certain the next release of the code will not be that long. Therefore, after long consideration, the team decided to leave unused methods in the normal project folder, source code and branch, because they each serve specific purposes that would be validated with the further planned features inclusion. Some examples include:
start()
/ stop()
methods support the already existing thread, which would be used when the manager thread downloads a new instance of the Account.json from the website: it needs to stop the monitor thread, set the new instances and parameters, and start it again.getIMEI()
method, for instance, would be used to generate the security keys required to authenticate the device uniquely, and to secure the location data transmission between the device and server/database.With the limited time available the focus shifted on the software and hardware being created well. This meant that our web interface was rolled out on Github Pages, with Firebase serving as its backend, which while was very convenient, limits our possibilities. With the next release the team would be able to buy another Raspberry Pi, and serve their own Django webserver from there, ensuring improved safety, an increased variety of features and a more dynamic service offered. The planned changes to the website are discussed in the Web Server and GUI chapter.
The main point of concern in this project was the size of the hardware. Since the project is designed to be carried around by children, and be positively received, not only the shape and colour of the hardware is important, but the size. It was decided that for the initial prototype that is released with this submission due to the time and budget constraints, the size will not be focused on, but rather functionality. However, in further releases, the size would be improved upon, by using smaller antennas, smaller, professionally manufactured PCBs with a smaller communications module. This would be supported by a smaller microcontroller, too, such as a Raspberry Pi Zero. This would drastically reduce the size of the overall product and make it more viable for commercial release, however this project focused on producing a Minimally Viable Product (MVP).
A major component, the casing of the hardware was not completed, as the university facilities closed early in the semester due to the COVID19 health and safety measures taken by the university. The very next release would necessarily cover the inclusion of the cover, as the hardware is a sensitive piece of equipment, and the device is created to be carried around by children - who can get things dirty, knock against surfaces, easily damaging the device. While the rendered case in this instance is a basic case suitable to fit the Pi and PCB with all components, the final version of the casing would be something that not only fits the hardware securely, but also looks enticing for children - possibly depicting a cartoon character, and/or being printed in bright colours - to ensure they keep it on themselves, but not enticing enough to be stolen off of them.
As the team comprises students speaking several different languages on a fluent/native level, all documentation could be translated for those languages. However, as Github does not support translations natively yet, it would have to be done by supplying a handful of new files/pages for each text in question, making the repository possibly a bit cumbersome. Nevertheless, it is an issue that is important to all of us, and therefore will be looked into in the future.


I'm not a very experienced psychonaut, but I had experimented with a few psychedelics before this 2c-t-7 experience. I had tripped on LSD a few times previously and on DXM about a dozen or so times.
The experienced started when a friend of mine (we'll call her Carroll) said she had found some acid to trip on for a concert we had planned on attending. She said the one caveat was that it wasn't 'real acid', but a research chemical called 2c-t-7. I had done my previous research and knew a little about the drug, but I was hardly an expert. After a few browsing online for a bit, I figured I could handle it, and she invited her friends over who sold us the drug and also accompanied us to the concert.
T=0:00, Carrol, her two friends, and I consume the 2c-t-7. They all take approximately 30mg and I take about half.
T=2:00, Everyone is starting to come up, but I have yet to feel anything. Noting my tolerance to previous psychedelics, I decide to take the other half of the powder increasing my total 2c-t-7 intake to roughly 30mg.
T=3:00, We all ride downtown to see the show, but as soon as I get out of the car, I inform my roommate (Iris, who is not under the influence) that I am not feeling well and desire to go home. I am still not experiencing heavy mental effects, but my I do experience slight nausea. We get a cab back home, and this is where things begin to get interesting. As I exit the cab, the entire world becomes very distorted. I take 2 25mg seroquel in an attempt to abort my trip and go to bed.
T=3:15 It felt very similar to a low dose of LSD, but unlike LSD, it made me extremely paranoid and frightened. I made my way upstairs and bundled up on the couch, hoping that by closing my eyes and focusing inward, I could stop the fear from the external world. Internalizing made the experience much worse. I couldn't feel my body, but at the same time, I felt uncomfortable everywhere, as if I had been sitting in an uncomfortable position for hours and couldn't move an inch. Nothing I did alleviated this feeling
T=3:20, I act very irrationally and panic, screaming at my roommate and ordering her to fetch me water, or leave, or please come talk to me. I tried anything I could in desperation to make things feel normal. I could feel the seroquel kicking in, and I became very drowsy, but closing my eyes only made the experience much more intense, so I felt at constant war to keep my eyes open or shut. Suddenly, every few minutes, my entire body would collapse into one singularity in my the middle of my head. Each time this happened, I was sure that I was dead, and was surprised when once again I was able to open my eyes.
T=3:30, My roommate is extremely confused, and at my urging, calls an ambulance.
T=3:45-7:00, after stumbling down into the ambulance, I'm brought to the local hospital. I'm very fidgety, and cannot concentrate on answering the medical staff's questions. My roommate fills out all of my paperwork and insurance information and informs the staff of my condition. I see demons in the shadows which terrify me. On occasion, I open my eyes and forget where I am. I forget taking the drug and feel like I am going in the hospital because I am dying, or maybe I've already died? I rip all of the cords and probes off of my body and stand up and wander around, before the nurse brings me back to bed.
T = 7:00, still tripping very hard, the nurse informs me that I must go home in order to work things out with my insurance so I'm not dropped for using illegal drugs. I protest loudly, but eventually I'm convinced to go home. I still feel as if I'm on the edge of something, in a very uncomfortable position with no way of resolving my situation.
T = 7:15, I lay down with my roommate in her bed trying to sleep.  I feel that this is never going to end. I wish desperately to go to bed.
T = 12:00, I wake up the next morning early, as I have class at 9:00am. I jolt up when my alarm goes off, and find that I am no longer tripping, and have no hang-over effects. I'm overwhelmed to be sober, and literally weep at having been given a second chance.
Following this experience, I've had a few flashback experiences, some rather minor and others a bit scarier. Sometimes after smoking large amounts of cannabis, I'll re-enter the 'tripping' state of mind. This usually does not scare or disturb me, as I'm equipped to handle it and it's more reminiscent of a very mild LSD trip than anything like my 2c-t-7 night. Other times, while not under the influence of any drugs, typically when sitting down in the same area for long periods of time, my entire vision will begin to tunnel and everything will slowly spin. Objects will ebb and flow, and grow larger and smaller. Also, my breathing becomes somewhat irregular and exacerbated when this occurs. These flashbacks are much more ominous and bring me back, thankfully with much less severity, to that horrible night.
I personally wouldn't again try research chemicals or anything else that hasn't been studied thoroughly. If you choose to indulge, I'd recommend starting off at a lower dose (15mg or so) bearing in mind that 2c-t-7 takes a really long to come on, so it's easy to over-do it.
Peace
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


HP down 5per cent after Xerox bid rejection, counter offer hints
Shares of HP Inc fell as much as 5per cent on Monday after the personal computer maker rejected a buyout offer from Xerox Holdings Corp , and indicated it might instead make its own offer to take over the U.S. printer maker.
REUTERS: Shares of HP Inc fell as much as 5per cent on Monday after the personal computer maker rejected a buyout offer from Xerox Holdings Corp , and indicated it might instead make its own offer to take over the U.S. printer maker.
HP stock has gained about 10per cent and those of Xerox around 7per cent since Nov. 5, when the first news reports surfaced on Xerox's US$33.5 billion cash-and-stock offer to buy bigger rival HP.
The printer industry has been in decline for years as growth in purely electronic communication cuts the need for printed letters and documentation. Both HP and Xerox earn a chunk of their revenue from selling printers and related accessories.
HP said in a statement on Sunday that it recognized the potential benefits of consolidation and added that with access to diligence information on Xerox it could quickly evaluate the merits of a potential transaction.
Xerox has a market value of US$8.4 billion and HP is valued at nearly US$30 billion.
"We continue to believe consolidation within the printing industry makes sense given a mature and secularly challenged end demand backdrop," Credit Suisse analysts wrote in a client note.
Activist investor Carl Icahn, who has a stake in Xerox, told the Wall Street Journal last week that he was not set on a particular structure for a deal with HP, as long as a combination is achieved.
Icahn, who also owns shares in HP, is yet to issue a statement on the latest developments.
In its letter to HP's board, Xerox outlined about US$2 billion in savings it said could be achieved within two years of the deal.
"HP and Xerox's portfolios are largely complimentary given different focus areas, and see opportunity for significant cost takeout if the two companies were to combine," Credit Suisse said.
HP shares were at US$19.10 in premarket trading, while those of Xerox were down 4per cent at US$37.38.
(Reporting by Supantha Mukherjee in Bengaluru; editing by Patrick Graham and Maju Samuel)


We really learned a lot of things in this class. The class provides us various options for us to explore the advance technology. We can choose research-based assignments or project-based assignments. Besides, the professor is very nice. She always motivate us with her benevolent smile.


[§325-1.5] Purpose. The purpose of this chapter is to address prevention, control, and treatment of, and advancement of knowledge about, communicable diseases in the State. [L 1989, c 67, §1]


Market Analysis
Bitcoin Price Falls Below $9K as Bears Back in Control Eyeing $8.2K
by filbfilbBitcoin price (BTC) fell almost 5% on Monday morning, finding lows of $8,593, completely reversing the weekend recovery back above the $9,000 handle and below the lows of the prior week.
As we have seen recently, all other major cryptos have followed suit, with Ether (ETH) managing to perform better against the U.S. dollar than its peers, but still losing value.
With a poor start to the week, let’s dive into the charts to see if an end to the bleeding is in sight for Bitcoin, which continues to lead the market back down.
Cryptocurrency market daily view. Source: Coin360
Weekly Chart
Bitcoin has suffered a sharp rejection off weekly resistance at $9,500 having failed to break the key long term resistance and support level last week.
BTC USD Weekly chart. Source: TradingView
The rejection can clearly be seen to be a continuation of the diagonal resistance on the chart, which has been a hurdle for BTC since making yearly highs of almost $14,000 in the last week of June.
The Moving Average Convergence Divergence (MACD) indicator shows that key exponential moving averages, namely the 26 and 12 EMAs, continue to cross bearish. Although, they are starting to close together as shown by the higher lows on the histogram.
This effectively means that although the price is still declining, the momentum of the drop is decreasing. The last time we saw this was at the turn of the year and was an early indication that Bitcoin might be in the early stages of finding a bottom.
Volume last week has returned to some of the lows seen for the year, meaning that the price may need to return lower to find interest from the bulls as clearly the bears remain in control with lower major highs on the weekly chart being the continued theme.
The 50 and 100 moving averages remain on track to cross in three weeks and will do so at the key weekly support level of $7,600. Should Bitcoin have underlying bullish sentiment for the remainder of the year, the bulls should make a response by the end of November.
Daily chart
Moving down the timeframes to the daily chart, we can see that Bitcoin lost the support of the 200 daily moving average (DMA) and effectively fell through the gap in the Volume Profile Visible Range (VPVR) where there was a lack in volume at the $8,700-9,000 interval.
BTC USD Daily chart. Source: TradingView
The 50 DMA has now propped up the price just above the 61.8% retracement of the move, which took Bitcoin back up to retest the $10K level. This is likely to play a key role this week; failure here would mean price being sent back to retest the previous level of volume interest around the point of control at $8,250.
The bearish cross of the MACD with lower lows on the histogram is implicit of increasing bearish momentum going into the start of the week.
4-hour chart
The 4-hour chart is useful in highlighting the bearish objective; an AB=CD completion of the down move into the mid $8,200s where much of the volume was recently seen. The MACD on the 4-hour chart is also in the process of crossing bearish, which adds weight to the idea that price can still go lower.
BTC USD 4-hour chart. Source: TradingView
Should the bulls be able to break the bearish momentum this week, the major challenge will be to retake the $9,500 weekly resistance, which will be an extremely significant move should that be the case.
An early sign that this would be on the cards would be a daily close across $9,000, which would receive some follow-through.
Bitcoin spot USD order book
BTC USD Combined order book. Source: Data.bitcoinity.org
The visual representation of the order book shows that there is a lot of buying interest for the bulls above the $8,000 level and outweighs the selling interest overall.
While this can be somewhat misleading due to hidden and market orders, it is somewhat indicative of there being some interest by the bulls at the key levels talked about above in the low $8,000s and the bears may run out of interest as price moves back towards the weekly support levels.
Bulls must hold $8K levels
With the bulls under pressure, all eyes will be on the $8,000 handle this week if the bears manage to push the price lower. If bulls can defend this level for the remainder of the month, we may see a response as the key 50 and 100 moving averages converge in the final week of November.
Should this be the case, there may be a good chance that Bitcoin will have a stronger close to the year. Bitcoin typically makes major moves in December, either bottoming or finding a top so it will be an interesting period with a little over five months to go before the Bitcoin halving takes place.
The views and opinions expressed here are solely those of the author and do not necessarily reflect the views of Cointelegraph. Every investment and trading move involves risk. You should conduct your own research when making a decision.


--- layout: post title: "Side Effects Of Excess Vitamin B12" subtitle: "You may experience diarrhea, itching, rash, headaches, dizziness, nausea, or vomiting" date: 2021-01-18 21:43:38 +0530 background: '/img/posts/06.jpg' published: true categories: [ Health ] tags: [ vitamin, b12, side effects, vitamin b12 ] ---
Vitamin B12 is an important nutrient that plays a vital role in maintaining bodily systems. It's used for red blood cell development, cell metabolism, to keep nerves healthy, and to create DNA.
As with any nutrient though, too much can have drawbacks. Thankfully, the risk of that is very low with vitamin B12.
We get vitamin B12 we need through our diet, as it's found in meat, fish, and dairy. But many people also take a vitamin B12 supplement, which is generally considered safe.
Where an individual might run into problems is when they've been prescribed vitamin B12 injections by a doctor. These shots contain a much higher amount of the vitamin than over-the-counter supplements, and might come with side effects, according to Healthline.
If you've been prescribed vitamin B12 injections and experience diarrhea, itching, rash, headaches, dizziness, nausea, or vomiting, speak with your doctor. Occasionally, very serious side effects can occur, including pulmonary edema or congestive heart failure, blood clots in veins, swelling, or a rare blood cancer called polycythemia.
For most people, a recommended daily allowance of 2.4 micrograms per day is suggested, according to the National Institutes of Health. During pregnancy, that can be increased to 2.6 mcg and up to 2.8 mcg while breastfeeding.


Join A Game
Home
Create New Game
Join A Game
Your Current Game
Game Address
Here you should put the contract's address
Join The Game


Some Computer Vision and Machine Learning Musings, Peppered with Occasional Off-topic Philosophical and Non-sensical Ramblings
© 2015 Dushyant Mehta
Are you lost? Can't find what you were looking for? Visit the home page or check out the tags page to find your bearings manually. Good luck!


--- layout: post status: publish published: true title: Pragmatic Version Control Using Subversion author: display_name: Geoff Lane login: admin email<EMAIL_ADDRESS>url: http://www.zorched.net author_login: admin author_email<EMAIL_ADDRESS>author_url: http://www.zorched.net excerpt: My first book review. I've recently read Pragmatic Version Control using Subversion by Mike Mason. It's not a comprehensive Subversion reference but more of a manual about how to use Subversion in the real world. date: '2006-09-28 20:41:35 -0400' date_gmt: '2006-09-29 02:41:35 -0400' categories: - Automation - Book Review tags: - subversion - version-control comments: - id: 985 author: Zorched / One Line Fix » Pragmatic Project Automation author_email: '' author_url: http://www.zorched.net/2006/11/12/pragmatic-project-automation/ date: '2006-11-12 20:48:46 -0500' date_gmt: '2006-11-13 02:48:46 -0500' content: "[...] This entry covers another book by the Pragmatic Programmers in their Pragmatic Starter Series.\r\nPragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps [...]" ---
When I was in grade school I had to do a biographical book review every year. Probably 5 years, from 2nd grade to 7th grade we would be required to do book reviews and inevitably we'd have to do a biography. We'll, I hated biographies, so every year I would do the same person: Jacque Cousteau. So, I'm not going to do any biographies, but I will review some technical books that I read.
Index:
This book is not written as an exhaustive reference of of all of the Subversion commands. For that you can use the Subversion Red Bean book. Instead, this book is written as a series of scripts and best practices that you can use on your project. It's more of a manual on how to use Subversion on an average project. I found this very helpful because it tackled the problems from a solution-oriented "why" approach, as opposed to merely a how approach.
I really liked the covering of using branching and tagging. In Subversion both of these operations are are performed using the same "svn copy" command. If both of these logical operations are performed using the same actual Subversion command, then why would you need to use both? Well these chapters answer this question well, for example, by laying out the use of tags to demarcate longer-running bug fix session for easy merging into the trunk or a release branch. I found these chapters to be the most interesting by far to someone who has used Subversion for a long time, but maybe hasn't utilized it to it's fullest extent (*ahem* that would be me probably).
There is also a version of this book written for CVS users. I'm a big fan of Subversion and so I would recommend any CVS users to seriously consider moving to Subversion. There is a great script cvs2svn that handles converting a CVS repository into a Subversion repository. It does a great job of collecting individual CVS file revisions into Subversion atomic commits. It also handles creating branches and tags for you so you won't lose any of your version history.
Pragmatic Version Control using Subversion - Mike Mason - ISBN: 0-9776166-5-7


This is a Map of Middlesex
Back to index
My Courses:
LVA-Business and American Drama
CVA-Intro to Sustainability
Web Technologies
Marketing Analytics
Business Writing
2018 FIFA World Cup Ranking
France
Croatia
Belgium
England
Go Beavers!


Page 1
1 0f 5
| Sn | Name | Product | Interest (%) |
Loan Amount |
Principal | Loan Paid | Loan Balance | Final Due Date |
Last Repayment |
Status |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | John Okafor | Student | 10 | #80,000,000 | #80,000,000 | #80,000,000 | #80,000,000 | View | 3rd Oct | Pending |
| 2 | Nnena Odion | Business | 11 | #80,000,000 | #80,000,000 | #80,000,000 | #80,000,000 | View | 24th Sept | Pending |
| 3 | Tomi Komolafe | School fees | 6 | #80,000,000 | #80,000,000 | #80,000,000 | #80,000,000 | View | 2nd Oct | Approved |
| 4 | Abah James | Rent | 13 | #80,000,000 | #80,000,000 | #80,000,000 | #80,000,000 | View | 30th Sept | Declinedd |
| 5 | Abubakar Badmus | Business | 7 | #80,000,000 | #80,000,000 | #80,000,000 | #80,000,000 | View | 4th Sept | Approved |
| 6 | Luke Kalu | Rent | 13 | #80,000,000 | #80,000,000 | #80,000,000 | #80,000,000 | View | 2nd Oct | Pending |


| translate_qplot_ggplot {ggplot2} | R Documentation |
Within ggplot2, there are two basic methods to create plots, with qplot() and ggplot(). qplot() is designed primarily for interactive use: it makes a number of assumptions that speed most cases, but when designing multilayered plots with different data sources it can get in the way. This section describes what those defaults are, and how they map to the fuller ggplot() syntax.
# By default, qplot() assumes that you want a scatterplot, # i.e., you want to use geom_point() # qplot(x, y, data = data) # ggplot(data, aes(x, y)) + geom_point() # Using Aesthetics # If you map additional aesthetics, these will be added to the defaults. With # qplot() there is no way to use different aesthetic mappings (or data) in # different layers # qplot(x, y, data = data, shape = shape, colour = colour) # ggplot(data, aes(x, y, shape = shape, colour = colour)) + geom_point() # # Aesthetic parameters in qplot() always try to map the aesthetic to a # variable. If the argument is not a variable but a value, effectively a new column # is added to the original dataset with that value. To set an aesthetic to a # value and override the default appearance, you surround the value with I() in # qplot(), or pass it as a parameter to the layer. # qplot(x, y, data = data, colour = I("red")) # ggplot(data, aes(x, y)) + geom_point(colour = "red") # Changing the geom parameter changes the geom added to the plot # qplot(x, y, data = data, geom = "line") # ggplot(data, aes(x, y)) + geom_line() # Not all geoms require both x and y, e.g., geom_bar() and geom_histogram(). # For these two geoms, if the y aesthetic is not supplied, both qplot and # ggplot commands default to "count" on the y-axis # ggplot(data, aes(x)) + geom_bar() # qplot(x, data = data, geom = "bar") # If a vector of multiple geom names is supplied to the geom argument, each # geom will be added in turn # qplot(x, y, data = data, geom = c("point", "smooth")) # ggplot(data, aes(x, y)) + geom_point() + geom_smooth() # Unlike the rest of ggplot2, stats and geoms are independent # qplot(x, y, data = data, stat = "bin") # ggplot(data, aes(x, y)) + geom_point(stat = "bin") # # Any layer parameters will be passed on to all layers. Most layers will ignore # parameters that they don't need # qplot(x, y, data = data, geom = c("point", "smooth"), method = "lm") # ggplot(data, aes(x, y)) + geom_point(method = "lm") + geom_smooth(method = "lm") # Scales and axes # You can control basic properties of the x and y scales with the xlim, ylim, # xlab and ylab arguments # qplot(x, y, data = data, xlim = c(1, 5), xlab = "my label") # ggplot(data, aes(x, y)) + geom_point() + # scale_x_continuous("my label", limits = c(1, 5)) # qplot(x, y, data = data, xlim = c(1, 5), ylim = c(10, 20)) # ggplot(data, aes(x, y)) + geom_point() + # scale_x_continuous(limits = c(1, 5)) + scale_y_continuous(limits = c(10, 20)) # Like plot(), qplot() has a convenient way of log transforming the axes. # qplot(x, y, data = data, log = "xy") # ggplot(data, aes(x, y)) + geom_point() + scale_x_log10() + scale_y_log10() # There are many other possible transformations, but not all are # accessible from within qplot(), see ?scale_continuous for more # Plot options # qplot() recognises the same options as plot does, and converts them to their # ggplot2 equivalents. See ?theme for more on ggplot options # qplot(x, y, data = data, main="title", asp = 1) # ggplot(data, aes(x, y)) + geom_point() + labs(title = "title") + theme(aspect.ratio = 1)


A resource control is a set of limits on the use of some resource within the zone,
and associated actions when they are exceeded. The available resources at the time
of writing are :
- zone.max-lwps
- Limits the number of processes that can be running within the zone at any one time.
- zone.cpu-shares
- Sets a limit on the number of fair share scheduler (FSS) CPU shares for a zone.
For each resource, you can enter a number of limits. Each limit has a privilege type
(which is always Privileged), a numeric limit, and an action to take when
the limit is exceeded. The typical action is Deny, to prevent any request
that would exceed the limit.


The simple diode is a one port. It consists of the diode itself and an parallel ohmic resistance R. The diode formula is:
v/vt i = ids ( e - 1).
If the exponent v/vt reaches the limit maxex, the diode characteristic is linearly continued to avoid overflow.
Please note: In case of useHeatPort=true the temperature dependence of the electrical behavior is not modelled yet. The parameters are not temperature dependent.


{% extends "base.html" %} {% block title %}Home | {{ block.super }}{% endblock %} {% block content_head %}
{% endblock %} {% block content %}Wye is a learning programme by Python Software Society of India (PSSI). We are the team of volunteers who wanted to teach python and create awareness about Python programming Language Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium purus erat, id congue mauris gravida eu. Sed feugiat, ex viverra interdum pharetra, ante ligula molestie tortor, sit amet ullamcorper velit elit ac sapien. Nunc vehicula magna nec justo posuere.
If you have good expertise in Python, and love to teach others, then register as a tutor.
If you are a part of college/organization/FOSS group and looking for python instructors for talk/workshops, let us know.
If you are a student, explore details of the upcoming events on python and participate in it.


Hi there, welcome! This project is an online tool that seeks make publicly available information regarding data protection and privacy regulation around the world. What do we have so far? We have updated norms from the Latin American and Caribbean region.
We believe in open knowledge and this tool could be useful for decision-makers, academic researchers, activists. Do you want to get involve?


Email address validation
Home
Download
Blog
Help
About
Email address:
Test
Please enable JavaScript to view the
comments powered by Disqus.


| Elements' Details |
aURL
string aURL;
- Description
- a URL to the bitmap used. This may be an internal URL of the
graphics manager.
|
|
aOffset
::com::sun::star::awt::Point aOffset;
- Description
- This is the horizontal and vertical offset where the tile
starts.
It is given in percent in relation to the width of the
bitmap.
|
|
aPositionOffset
::com::sun::star::awt::Point aPositionOffset;
- Description
- Every second line (X) / row (Y) of tiles is moved the given
percent of the witdh of the bitmap.
|
|
aRectanglePoint
::com::sun::star::drawing::RectanglePoint aRectanglePoint;
- Description
- The RectanglePoint specifies the position inside of the bitmap
to use as the top left position for rendering.
|
|
bLogicalSize
boolean bLogicalSize;
- Description
- specifies if the size is given in percentage or as an absolute
value.
If this is true, the properties SizeX and
SizeY contain the size of the tile in percent of the
size of the original bitmap. If this is false, the size of
the tile is specified with 1/100th mm.
|
|
aSize
::com::sun::star::awt::Size aSize;
- Description
- This is the size of the tile for filling.
Depending on the property LogicalSize, this is
either relative or absolute.
|
|
aBitmapMode
::com::sun::star::drawing::BitmapMode aBitmapMode;
- Description
- this enum selects how a area is filled with a single bitmap.
It may be repeated, stretched or displayed with blank space
around it.
|
|
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


Insert title (or delete and embed chart as an
iframe
in another web page)
Data source: (insert, with optional
link to Google Sheet
Chart created with Google Visualization API, with guide at
https://github.com/JackDougherty/gviz-scatter-series


After inspect press ESC button to turn off inspection.
Element Added Successfully
Problem in adding element. Try again!!!
ERROR: Selected attribute is empty!
ERROR: Element name should suffix with any one of
the following: 'TextField', 'TextArea', 'Label', 'SelectList',
'RadioButton', 'Button', 'Link', 'Image', 'CheckBox'


The sticky option is really nice when you have a clueTip with a link to learningjquery.com in it (or any other site). Now, you can click the link to go somewhere else. Not that you'd want to.
Notice that this is another example of a full web page. It even has a nice photograph in it. Twice!


|
SCOTS
0.2
A Tool for the Synthesis of Symbolic Controllers
|
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <vector>
#include <climits>
#include <iomanip>
Go to the source code of this file.
Classes | |
| class | scots::FileHandler |
| The FileHandler class stores the filename. More... | |
| class | scots::FileWriter |
| The FileWriter class is used to write information into files. More... | |
| class | scots::FileReader |
| The FileReader class is used to read information from files. More... | |
Namespaces | |
| scots | |


--- layout: post permalink: classiccarsglobal.html Tags: Array NameOfCoupon: Classic Cars Global Cash Back Summary: See our Classic Cars Global Coupon Code, Classic Cars Global Rebate, Classic Cars Global Promo Code, Classic Cars Global Discount, Classic Cars Global Coupon Cash Back Rebate here. MetaKeywords: Classic Cars Global Coupon Code, Classic Cars Global Rebate, Classic Cars Global Promo Code, Classic Cars Global Cash Back Rebate, Classic Cars Global Discount, Classic Cars Global Coupon Image: images/20347.jpg LinkURL: http://www.shareasale.com/r.cfm?b=155192&u=412002&m=20347 affiliate_url_link: http://www.icouponblog.com/jane.php?id=2027 thesis_readmore: See the Classic Cars Global Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=classiccarsglobal.com Title: Save 25% - Classic Cars Global Coupon Code for classiccarsglobal.com. Classic Cars Global Rebate & Discount thesis_description: Our Classic Cars Global Discount Coupon Code for classiccarsglobal.com. We have the best Classic Cars Global Rebate anywhere. thesis_keywords: Classic Cars Global, Classic Cars Global Coupon Code, Classic Cars Global Discount, Classic Cars Global Rebate product_name: Classic Cars Global hop_url: http://www.icouponblog.com/hop.php?id=2027 ---
Are you looking to buy a hard to get car or are you trying to sell yours? Classic Cars Global has thousands of cars listed to buy or sell. You can visit Classic Cars Global online at classiccarsglobal.com. It is an amazing website, very user friendly and easy to navigate It is put together with the customer’s ease in mind.. It is designed to make the whole process of placing or searching for an advertisement with Classic Cars Global very quick and simple. Check it out today and find the car of your dreams. Use our discount coupon to strike a deal!
Classic Cars Global is a great place to browse and find the perfect car. If you are a car lover you will enjoy looking at some of the great classics listed. And For those of you with a little more time on your hands you can have more fun and enjoyment by looking at a feature that will let you see what other people are looking at or take advantage of the price guides feature. Check it out and list your car for sale or buy one today.
Classic Cars Global makes buying or selling a car real easy. You do not have to leave home or go around in circles. For a small fee you can advertise your car instantaneously. On Classic Cars Global you will find cars of makes and models that are not easily available. For the best results, subscribe to Classic Cars Global and get the results you want!


Summary
This module enables someone to use nobreak
as a keyword
equivalent to else
in for
and while
loops.
nobreak
as a keyword
Python’s for
and while
loop include an else
clause
whose meaning is not immediately obvious:
while condition:
# some
# code
# here
else:
# will be executed only if no
# break statement occurred above
When I first understood this, I thought wouldn’t it be nice if, instead
of using else:
, one could write something like if not break:
which
uses only existing Python keywords.
For this example, I decided instead that a suggestion made by Raymond Hettinger
to have nobreak
as a keyword made the most sense.
It can be used instead of else
in the above example:
while condition:
# some
# code
# here
nobreak:
# will be executed only if no
# break statement occurred above
nobreak
instead of else
in if/else
The else
keyword has a very different meaning when used as part
of an if
statement. In this situation, nobreak
, or its
translation in some other language would make no sense.
As a result, if one attempts to write the following:
if condition:
# some
# code
# here
nobreak:
# more code
nobreak
will not be replaced by else
and
the code will raise a SyntaxError
.
What about try/except?
The else
keyword can also be used in a try/except/else/finally
block.
From Python’s documentation:
The optional else clause is executed if the control flow leaves the try suite, no exception was raised, and no
return
,continue
, orbreak
statement was executed.
Since multiple causes can prevent the else
clause from being executed,
it makes little sense in this case to use a different keyword such as
nobreak
, that would point to a specific cause which would likely be wrong.
Useful function from token_utils
The code for nobreak
makes use of the get_first
function from
token_utils
. Here’s some useful information about it.
>>> import token_utils
>>> help(token_utils.get_first)
Help on function get_first in module token_utils:
get_first(tokens, exclude_comment=True)
Given a list of tokens, find the first token which is not a space token
(such as a ``NEWLINE``, ``INDENT``, ``DEDENT``, etc.) and,
by default, also not a ``COMMMENT``.
``COMMMENT`` tokens can be included by setting ``exclude_comment`` to ``False``.
Returns ``None`` if none is found.


Home
About
Github
arrow_back_ios
About
This project was created for HackRPI 2019 by TheHumbleOnes.
You can find the project on Github.
Gavin Song
https://github.com/Gavin-Song
yashmistri
https://github.com/yashmistri
Omar Cobas
https://github.com/omarASC5
Jesse Huang
https://github.com/JessHua159


As we saw in the last section, when using parametrisation it's often useful to split your test function into two logical parts:
This is because we had a situation where we had one test function and multiple examples to test. The opposite situation also happens where we have multiple test functions, all of which want the same input data.
The name that pytest uses for "data which are provided to test functions" is fixture since it fixes a set of data against which to test.
We'll start with the example of the add_arrays
function to explain the syntax but soon we'll need to use a example which demonstates the benefits more.
To make things clearer, we'll trim down the test file back to the basics. Just one test for add_arrays
and one for subtract_arrays
:
from arrays import add_arrays, subtract_arrays
def test_add_arrays():
a = [1, 2, 3]
b = [4, 5, 6]
expect = [5, 7, 9]
output = add_arrays(a, b)
assert output == expect
def test_subtract_arrays():
a = [1, 2, 3]
b = [4, 5, 6]
expect = [-3, -3, -3]
output = subtract_arrays(a, b)
assert output == expect
Both of these tests use the same values for a
and b
. In this example it's not really a big problem that we're repeating ourselves but in a more complex test suite the data we're testing over may be very complicated or slow to create.
To avoid repeating ourselves, we will create a fixture which will provide the data to our tests. To create our fixture we define a function which is decorated with the pytest.fixture
decorator. Apart from that, all the function needs do is return the data we want to provide to our tests, in this case, the two input lists:
import pytest
@pytest.fixture
def pair_of_lists():
return [1, 2, 3], [4, 5, 6]
To make the test functions make use of the fixture, we use the name of the fixture (pair_of_lists
) as a parameter of the test function, similar to how we did with parametrisation:
def test_add_arrays(pair_of_lists):
...
The data are now available inside the function using that name and we can use it however we wish:
def test_add_arrays(pair_of_lists):
a, b = pair_of_lists
...
This isn't how functions and arguments usually work in Python. pytest is doing something magic here and is matching up the names of things which it knows are fixtures (due to the decorator) with the names of parameters to test functions, automatically running the fixture and passing in the data.
Note that pair_of_lists
here is not a test function. It does not contain any assert
s and will not explicitly appear in the pytest
output.
Putting it all together, we end up with:
import pytest
from arrays import add_arrays, subtract_arrays
@pytest.fixture
def pair_of_lists():
return [1, 2, 3], [4, 5, 6]
def test_add_arrays(pair_of_lists):
a, b = pair_of_lists
expect = [5, 7, 9]
output = add_arrays(a, b)
assert output == expect
def test_subtract_arrays(pair_of_lists):
a, b = pair_of_lists
expect = [-3, -3, -3]
output = subtract_arrays(a, b)
assert output == expect
When we run the test suite, pytest will automatically run the pair_of_lists
function for each test and pass in the result.
pytest -v
It might be hard to see the benefit of fixtures with this rather contrived example so lets take a look at a more sensible one where using a fixture makes sense.
Make a new file called books.py
which contains the following:
def word_count(text, word=''):
"""
Count the number of occurences of ``word`` in a string.
If ``word`` is not set, count all words.
Args:
text (str): the text corpus to search through
word (str): the word to count instances of
Returns:
int: the count of ``word`` in ``text``
"""
if word:
count = 0
for text_word in text.split():
if text_word == word:
count += 1
return count
else:
return len(text.split())
To test this function we want a corpus of text to test it on. For the purposes of this example and to simulate a complex data input, we will download the contents of a particularly long novel from Project Gutenberg. Our test function uses urllib.request
to download the text, converts it to a string and passes that to the word_count
function.
At first we will simply check that the word "hat" appears 33 times in the book:
import urllib.request
from books import word_count
def test_word_counts():
url = "https://www.gutenberg.org/files/2600/2600-0.txt"
book_text = urllib.request.urlopen(url).read().decode('utf-8')
assert word_count(book_text, "hat") == 33
pytest -v test_books.py
The test has passed and it took about two seconds. This is because it takes some time to download the file from the internet. For this example we want it to take some time as it helps demonstrate the point. In reality you will come across test data inputs which take some time (more than a few milliseconds) to create.
This creates a tension between wanting to have a large test suite which covers your code from lots of different angles and being able to run it very quickly and easily. An ideal test suite will run as quickly as possible as it will encourage you to run it more often. It's a good idea to have at least a subset of your tests which run through in some number of seconds rather than hours.
Two seconds is not bad for this test but if we want to test against multiple examples, it could get slow. Let's parametrise the test to add in a bunch more inputs:
import urllib.request
import pytest
from books import word_count
@pytest.mark.parametrize('word, count', [
('hat', 33),
('freedom', 71),
('electricity', 1),
('testing', 3),
('Prince', 1498),
('internet', 0),
('Russia', 71),
('Pierre', 1260),
(None, 566311),
])
def test_word_counts(word, count):
url = "https://www.gutenberg.org/files/2600/2600-0.txt"
book_text = urllib.request.urlopen(url).read().decode('utf-8')
assert word_count(book_text, word) == count
pytest -v test_books.py
You see here that it took about nine times as long. This is because the file is downloaded afresh for every test example where really, it only needs to be downloaded once.
Let's move the slow setup into a fixture and give that as a parameter of the test function:
import urllib.request
import pytest
from books import word_count
@pytest.fixture()
def long_book():
url = "https://www.gutenberg.org/files/2600/2600-0.txt"
book_text = urllib.request.urlopen(url).read().decode('utf-8')
return book_text
@pytest.mark.parametrize('word, count', [
('hat', 33),
('freedom', 71),
('electricity', 1),
('testing', 3),
('Prince', 1498),
('internet', 0),
('Russia', 71),
('Pierre', 1260),
(None, 566311),
])
def test_word_counts(long_book, word, count):
assert word_count(long_book, word) == count
pytest -v test_books.py
Perhaps surprisingly, it is still taking very long time!
By default a fixture will run once for every test function that uses it. In our case we only need it to run once for all the tests in the test session so we can pass in the scope
parameter to pytest.fixture
and set it to session
:
import urllib.request
import pytest
from books import word_count
@pytest.fixture(scope="session")
def long_book():
url = "https://www.gutenberg.org/files/2600/2600-0.txt"
book_text = urllib.request.urlopen(url).read().decode('utf-8')
return book_text
@pytest.mark.parametrize('word, count', [
('hat', 33),
('freedom', 71),
('electricity', 1),
('testing', 3),
('Prince', 1498),
('internet', 0),
('Russia', 71),
('Pierre', 1260),
(None, 566311),
])
def test_word_counts(long_book, word, count):
assert word_count(long_book, word) == count
pytest -v test_books.py
Now it only takes about as long as a single test did since the slow part is only being done once.
Add some more parameters to the test and check that it doesn't take any longer to run


sc2qsr¶
An unfinished project involving a pysc2 that used the Epra QSR formalism [MOR2012] to discretize space.
- MOR2012
Moratz, R., & Wallgrün, J. O. (2012). Spatial reasoning with augmented points: Extending cardinal directions with local distances. Journal of Spatial Information Science, 5. https://doi.org/10.5311/josis.2012.5.84
Installation¶
pip install -r requirements.txt
Links that helped me¶
Tutorials and examples¶
Steven Brown’s tutorials on how to create StarCraft II agents from scratch, without using reinforcement learning.
Repo with all examples
Chris Hoyean Song’s tutorials include RL and DRL algorithms, but are a little outdated in regards to the PySC2 API.
Initial tutorial (2017)
Tutorial on observations (2017)
Tutorial on the action space (2019)
Third-party libraries¶
Reaver: Modular Deep Reinforcement Learning Framework. Focused on StarCraft II. Supports Gym, Atari, and MuJoCo. Matches reference results.
python-sc2: A StarCraft II API Client for Python 3
Online communities¶
Table of contents¶
- Agents –
sc2qsr.agents
- Qualitative Spatial Reasoning –
sc2qsr.spatial.qualitative
- Quantitative Spatial Functions –
sc2qsr.spatial.quantitative
- Tabular reinforcement learning algorithms –
sc2qsr.rl.tabular
- Unit Statistics from Liquipedia –
sc2qsr.sc2info.unitstats
- SC2 Map Information –
sc2qsr.sc2info.mapinfo


Duval County
2017
Total Felonies Filed = 75
Total Felony Dispositions = 142
Total Felony Dispositions = 142
Total Misdemeanors Filed = 182
Total Misdemeanor Dispositions = 139
Total Misdemeanor Dispositions = 139
2016
Total Felonies Filed = 106
Total Felony Dispositions = 142
Total Felony Dispositions = 142
Total Misdemeanors Filed = 209
Total Misdemeanor Dispositions = 600
Total Misdemeanor Dispositions = 600
2015
Total Felonies Filed = 85
Total Felony Dispositions = 156
Total Felony Dispositions = 156
Total Misdemeanors Filed = 352
Total Misdemeanor Dispositions = 821
Total Misdemeanor Dispositions = 821
2014
Total Felonies Filed = 104
Total Felony Dispositions = 195
Total Felony Dispositions = 195
Total Misdemeanors Filed = 307
Total Misdemeanor Dispositions = 260
Total Misdemeanor Dispositions = 260
2013
Total Felonies Filed = 100
Total Felony Dispositions = 224
Total Felony Dispositions = 224
Total Misdemeanors Filed = 306
Total Misdemeanor Dispositions = 366
Total Misdemeanor Dispositions = 366
2012
Total Felonies Filed = 217
Total Felony Dispositions = 272
Total Felony Dispositions = 272
Total Misdemeanors Filed = 304
Total Misdemeanor Dispositions = 381
Total Misdemeanor Dispositions = 381
2011
Total Felonies Filed = 168
Total Felony Dispositions = 328
Total Felony Dispositions = 328
Total Misdemeanors Filed = 359
Total Misdemeanor Dispositions = 401
Total Misdemeanor Dispositions = 401


#include <sdbm.h>
Data Fields | |
| int | dirf |
| int | pagf |
| int | flags |
| int | keyptr |
| off_t | maxbno |
| long | curbit |
| long | hmask |
| long | blkptr |
| long | blkno |
| long | pagbno |
| char | pagbuf [PBLKSIZ] |
| long | dirbno |
| char | dirbuf [DBLKSIZ] |
Definition at line 20 of file sdbm.h.
| long DBM::blkno |
| long DBM::blkptr |
Definition at line 28 of file sdbm.h.
Referenced by getnext(), sdbm_firstkey(), and sdbm_prep().
| long DBM::curbit |
| long DBM::dirbno |
Definition at line 32 of file sdbm.h.
Referenced by getdbit(), sdbm_prep(), and setdbit().
| char DBM::dirbuf[DBLKSIZ] |
Definition at line 33 of file sdbm.h.
Referenced by getdbit(), sdbm_prep(), and setdbit().
| int DBM::dirf |
Definition at line 21 of file sdbm.h.
Referenced by getdbit(), sdbm_close(), sdbm_prep(), and setdbit().
| int DBM::flags |
Definition at line 23 of file sdbm.h.
Referenced by sdbm_prep().
| long DBM::hmask |
Definition at line 27 of file sdbm.h.
Referenced by getpage(), makroom(), and sdbm_prep().
| int DBM::keyptr |
Definition at line 24 of file sdbm.h.
Referenced by getnext(), sdbm_firstkey(), and sdbm_prep().
| off_t DBM::maxbno |
Definition at line 25 of file sdbm.h.
Referenced by sdbm_prep(), and setdbit().
| long DBM::pagbno |
Definition at line 30 of file sdbm.h.
Referenced by getnext(), getpage(), makroom(), sdbm_delete(), sdbm_firstkey(), sdbm_prep(), and sdbm_store().
| char DBM::pagbuf[PBLKSIZ] |
Definition at line 31 of file sdbm.h.
Referenced by getnext(), getpage(), makroom(), sdbm_delete(), sdbm_fetch(), sdbm_firstkey(), sdbm_prep(), and sdbm_store().
| int DBM::pagf |
Definition at line 22 of file sdbm.h.
Referenced by getnext(), getpage(), makroom(), sdbm_close(), sdbm_delete(), sdbm_firstkey(), sdbm_prep(), and sdbm_store().


# File ../Neptune/test/tc_neptune_manager.rb, line 14 def setup # all sleep calls should return immediately flexmock(Kernel).should_receive(:sleep).and_return() # mock out shell calls, to prevent arbitrary calls from being made # make the tester put in the mocks for the needed shell calls flexmock(HelperFunctions).should_receive(:shell).with("").and_return() # mocks for the secret file @secret = "baz" flexmock(File).should_receive(:open). with("/etc/appscale/secret.key", Proc).and_return(@secret) # mocks for the ZK locations file - for now, assume it's always # there @json_data = JSON.dump({'locations' => 'public_ip1'}) flexmock(File).should_receive(:exists?). with(NeptuneManager::ZK_LOCATIONS_FILE).and_return(true) flexmock(File).should_receive(:open). with(NeptuneManager::ZK_LOCATIONS_FILE, Proc).and_return(@json_data) # mocks for getting our public ip @public_ip = "my-public-ip" flexmock(File).should_receive(:open). with(HelperFunctions::PUBLIC_IP_FILE, Proc).and_return(@public_ip) flexmock(HelperFunctions).should_receive(:sleep_until_port_is_open). with('public_ip1', ZKInterface::SERVER_PORT).and_return() end
# File ../Neptune/test/tc_neptune_manager.rb, line 114 def test_dispatch_mpi_jobs # mock out zookeeper interactions mocked_zookeeper = flexmock("zookeeper") # mock out getting this node's job data my_ip_job_path = ZKInterface::APPCONTROLLER_NODE_PATH + "/" + @public_ip + "/job_data" job_data = "#{@public_ip}:private_ip:shadow:instance_id:cloud1" mocked_zookeeper.should_receive(:get).with(:path => my_ip_job_path). and_return({:rc => 0, :data => job_data}) # mock out getting an open node's job data ip2_job_path = ZKInterface::APPCONTROLLER_NODE_PATH + "/ip2/job_data" job_data = "ip2:private_ip2:open:instance_id2:cloud1" mocked_zookeeper.should_receive(:get).with(:path => ip2_job_path). and_return({:rc => 0, :data => job_data}) # mock out getting all node data exists = {:rc => 0, :stat => flexmock(:exists => true)} mocked_zookeeper.should_receive(:get). with(:path => ZKInterface::APPCONTROLLER_PATH).and_return(exists) all_node_data = JSON.dump({ 'last_updated' => 1, 'ips' => [@public_ip, "ip2"] }) mocked_zookeeper.should_receive(:get).with(:path => ZKInterface::IP_LIST). and_return({:rc => 0, :data => all_node_data}) # put in mocks to get and release the zookeeper lock all_ok = {:rc => 0} mocked_zookeeper.should_receive(:create).with( :path => ZKInterface::APPCONTROLLER_LOCK_PATH, :ephemeral => ZKInterface::EPHEMERAL, :data => JSON.dump(@public_ip)).and_return(all_ok) mocked_zookeeper.should_receive(:delete).with( :path => ZKInterface::APPCONTROLLER_LOCK_PATH). and_return(all_ok) # finally, use the mocked zookeeper object flexmock(Zookeeper).should_receive(:new).with('public_ip1:2181'). and_return(mocked_zookeeper) # mock out appcontroller interactions flexmock(AppControllerClient).new_instances { |instance| instance.should_receive(:make_call).and_return() } # mock out shell calls to make the lock file, and make it generate # a non-random number flexmock(Kernel).should_receive(:rand).and_return(0) flexmock(HelperFunctions).should_receive(:shell). with("touch /tmp/mpi-0-started").and_return() # mock out ssh calls to see if the job is done running. the first time, # we'll say that the job isn't done, and the second time, it is flexmock(HelperFunctions).should_receive(:shell).with(%r^ssh.*/). and_return("0\n", "2\n") cloud_info_json = JSON.dump({'is_cloud?' => false, 'is_hybrid_cloud?' => false}) flexmock(File).should_receive(:open). with(HelperFunctions::CLOUD_INFO_FILE, Proc).and_return(cloud_info_json) neptune = NeptuneManager.new() one = { "@type" => "mpi", "@nodes_to_use" => 1 } actual = neptune.dispatch_jobs([one]) assert_equal(NeptuneManager::RUN_JOBS_IN_PARALLEL, actual) end
# File ../Neptune/test/tc_neptune_manager.rb, line 59 def test_dispatch_parallel_jobs # mock out zookeeper interactions mocked_zookeeper = flexmock("zookeeper") # mock out getting this node's job data my_ip_job_path = ZKInterface::APPCONTROLLER_NODE_PATH + "/" + @public_ip + "/job_data" job_data = "#{@public_ip}:private_ip:shadow:instance_id:cloud1" mocked_zookeeper.should_receive(:get).with(:path => my_ip_job_path). and_return({:rc => 0, :data => job_data}) # mock out getting all node data all_node_data = JSON.dump({ 'last_updated' => 1, 'ips' => [@public_ip] }) mocked_zookeeper.should_receive(:get).with(:path => ZKInterface::IP_LIST). and_return({:rc => 0, :data => all_node_data}) # finally, use the mocked zookeeper object flexmock(Zookeeper).should_receive(:new).with('public_ip1:2181'). and_return(mocked_zookeeper) # mock out appcontroller interactions flexmock(AppControllerClient).new_instances { |instance| instance.should_receive(:make_call).and_return() } # mock out shell calls to make the lock file, and make it generate # a non-random number flexmock(Kernel).should_receive(:rand).and_return(0) flexmock(HelperFunctions).should_receive(:shell). with("touch /tmp/babel-0-started").and_return() # mock out ssh calls to see if the job is done running. the first time, # we'll say that the job isn't done, and the second time, it is flexmock(HelperFunctions).should_receive(:shell).with(%r^ssh.*/). and_return("0\n", "2\n") neptune = NeptuneManager.new() one = { "@type" => "babel", "@nodes_to_use" => 1 } two = { "@type" => "babel", "@nodes_to_use" => 1 } batch_params = [one, two] actual = neptune.dispatch_jobs(batch_params) assert_equal(NeptuneManager::RUN_JOBS_IN_PARALLEL, actual) end
# File ../Neptune/test/tc_neptune_manager.rb, line 43 def test_start_job # mock out starting new threads, since we just want to test the SOAP # call flexmock(Thread).should_receive(:new).and_return() # assume that ZK is up mocked_zookeeper = flexmock("zookeeper") flexmock(Zookeeper).should_receive(:new).with('public_ip1:2181'). and_return(mocked_zookeeper) neptune = NeptuneManager.new() job_params = {} actual = neptune.start_job(job_params, @secret) assert_equal(NeptuneManager::JOB_IS_RUNNING, actual) end


All done! Thank you for your participation!
We will keep you updated on the results of the experiment.
Click here to log out and take the experiment again.