deepstream powers a wide array of realtime usecases, from collaboration apps, multiplayer games and financial trading platforms to geo-tracking, IoT and digital messenger pigeons
Interactive JSON documents that can be edited and observed. Changes are persisted and synced across clients.
Many clients can subscribe to topics and receive data whenever other clients publish it to the same topic.
Clients can register functions to be called by other clients. Deepstream will smartly route requests and responses.


Unfortunately, there is a lot left to do--however! I am going to release a "testing" client next week and leave the server app running on the space you provided for me. This will be a very limited release in which people can just walk around the (stupid) map I made, run like crazy straight through walls, objects and each other and just generally have a good time. Hopefully it'll work for everyone
I'm thinking of taking Sunday to get this set up. At this point, along with PV (which I commit about 25 hrs/week to) I am working ~35 hours a week and am taking a 4 credit class...so that's why I haven't made *Quite* as much progress as I'd hope, but things are definitely coming along.
Just to give you an idea of what I'm mulling over in my head right now: the resource editor needs the ability to merge different resource files together. For example, people making maps want to put their maps into the game. They have different resource files, both of which have (perhaps) been modified. The editor needs to be able to take these resource files, stick them together, and deal with what happens when two resources have the same ID number.
...just a taste
Anyway, once the merging stuff is done I need to add a configuration file editor, so that you can tell the client "hey, use this texture for the font" or "try to connect to this server", and tell the server "use this map". After that, I need to finalize the object editor, then create the new map processing units. These shouldn't be hard as I've done them before. Once that's complete and people can make basic maps (again) I'll write a map-importing utility so that current maps can at least *mostly* be imported and their work isn't wasted. After that, I add support for animated-mesh resources....once that's done, I add support for loading the compiled resources into the client and server, and using the data therein. You get the idea... :p
Karl


--- layout: menupage title: "About us" ---
{{ site.title }} is a framework for building responsive, mobile-friendly, multilingual literacy websites.
Icons provided by FontAwesome (via Fontello) and Elegant Circles.
Site design based on Nairobi CSS and Spectre.
Logo based on Giraffe by Focus Lab from the Noun Project. SVG compressed with SVGOMG. Favicons by RealFaviconGenerator.
Source code available on GitHub.


When Entity Framework was made open source (which by the way I think is awesome) I posted a possible improvement to the framework which could improve performance especially in scenarios where a set of rows are inserted into a table. There are several different methods of inserting large amounts of data into SQL.
In this post I’m going to outline each approach to bulk inserts and any issues with the approach and then do a comparison on the actual performance of these different methods.
Appending all of the statements into a single command text
Queries to a SQL server are inherently ordered in nature, we cant insert a new row until the previous one is written as SQL has to lock the table to perform our insert operation. This means that for each row we insert we need to go through a series of steps, each of which takes time.
The more latency on our network the longer the green blocks become. So if these are the steps which we go through for a single insert, what does it look like for multiple inserts.
As you can see we spend a lot of time doing all of the wrapping around the statement and not a lot of time actually inserting rows in SQL.
By appending all of the statements into a single command text what we are essentially doing is bundling all of the separate actions we need to perform in out insert together. This give us something like the following:
As you can see this theoretically makes the query much more efficient.
An example of this is if we put the following into a single commandtext
INSERT INTO [StaticVoid.OrmPerformance.Test].[dbo].[TestEntities]
([TestString], [TestDate], [TestInt])
VALUES ('some gumph','2012-1-1',1)
INSERT INTO [StaticVoid.OrmPerformance.Test].[dbo].[TestEntities]
([TestString], [TestDate], [TestInt])
VALUES ('some gumph 2','2012-1-2',2)
INSERT INTO [StaticVoid.OrmPerformance.Test].[dbo].[TestEntities]
([TestString], [TestDate], [TestInt])
VALUES ('some gumph 3','2012-1-3',3)
Using a multi-row insert statement (Aka Row Constructors)
Like a single command text a multi insert statement has the benefit of reducing the number of round trips to the database. In addition inserting multiple rows with a single statement improves the efficiency of the actual SQL execution as it is executed all in one hit. This means that it only needs to do all the fun stuff that SQL need to do for every query once (like generating query plans, locking tables and other things I don’t really understand). This basically gets us back to:
An example of a multi-row insert statement is the following
INSERT INTO [StaticVoid.OrmPerformance.Test].[dbo].[TestEntities]
([TestString], [TestDate], [TestInt])
VALUES ('some gumph','2012-1-1',1)
,('some gumph 2','2012-1-2',2)
,('some gumph 3','2012-1-3',3)
As you can see this is also a lot less text than the above example so it has an additional benefit of reducing the size of the data which needs to be transmitted (and parsed).
One of the interesting things about multi-row insert statements is that MSSQL actually appears to have some limits on the query itself.
- A maximum of 1000 rows can be inserted with row constructors. This is a hard limit which means you get an exception when exceeding this limit. -When you exceed 1000 values in your statement SQL shifts its optimisations to reduce the size of its query plans, this means that there is a sharp spike in query execution times when this value is exceeded.
NOTE row constructors are only available in SQL 2008 and above.
SQL bulk copy
The very best insert performance for inserting large volumes of data can be attained by using SQL Bulk Copy. This method bypasses the SQL query language entirely and streams data directly to SQL.
While SQL bulk copy is exceptionally fast at inserting large volumes of data there are several downsides to using this method.
- There is no way to get a response back from your write, this means that you cant get back generated IDs for your newly inserted rows.
- There is a set up cost incurred with running SQL bulk copy. This means it is not efficient for small datasets.
How they compare
The above graph tells us some interesting things about the way each of these bulk methods work and their individual weaknesses.
At point A
we can see a large spike in the execution time for our multi-row insert statement. This occurs at 334 rows inserted. As we discussed earlier SQL changes its behavior when there are more than 1000 in a single statement. In the above case the SQL statement contained 3 values per row. This means that on the 334th row inserted we have 1002 values in our SQL statement and hence SQL begins to optimise for query plan size. For more info on this particular scenario read Martin Smiths answer on Stack Overflow (which is a very good read). Its also interesting to note that in my example after this optimisation change we see multi-row inserts become slower than individual SQL insert statements each submitted separately to the database.
If we look at point B
on the graph we can see a series of sudden drops in execution time which occur every 200 rows beginning on the 400th row. This occurs in correlation with beginning a new batch in our batched approach, ie 401 rows in 3 batches takes less time than 400 rows in 2 batches. This is a very interesting result which I need to do more investigation into (if anyone knows any more about this or has a theory I would love to hear about it). My only hypothesis is that the query plan is calculated on the single row insert and then used for the two larger inserts (which have more variables and are hence harder to parse).
With our SQL bulk copy line there are a couple of important points to note. Firstly as you can see there appears to be a set up cost associated with the method of around 25ms. Because of this set up cost SQL bulk copy is significantly slower for small numbers of rows. Secondly the point at which SQL bulk copy becomes more efficient in my example is around 150 rows (point C
on the graph).
Detailed times and memory usage results can be found here.
Thanks to Eli Weinstock Herman (t | b) for the bulk copy scenario.


{{opponentName}}
- Pieces Left
- {{numOpponentPiecesLeft}} / 21
{{currentUser.username}}
- Pieces Left
- {{numPlayerPiecesLeft}} / 21
- 5 Star General
- {{pieceCount 15}} / 1
- 4 Star General
- {{pieceCount 14}} / 1
- 3 Star General
- {{pieceCount 13}} / 1
- 2 Star General
- {{pieceCount 12}} / 1
- 1 Star General
- {{pieceCount 11}} / 1
- Colonel
- {{pieceCount 10}} / 1
- Lt. Colonel
- {{pieceCount 9}} / 1
- Major
- {{pieceCount 8}} / 1
- Captain
- {{pieceCount 7}} / 1
- 1st Lieutenant
- {{pieceCount 6}} / 1
- 2nd Lieutenant
- {{pieceCount 5}} / 1
- Sergeant
- {{pieceCount 4}} / 1
- Private
- {{pieceCount 3}} / 6
- Spy
- {{pieceCount 2}} / 2
- Flag
- {{pieceCount 1}} / 1


This page provides a list of resources for the materials we'll be going over in class. Some of the books are even available in TIYA Durham library!


Overview of Sintef Module¶
| Release: | 1.1 |
|---|---|
| Date: | Nov 08, 2017 |
Sintef¶
Evaluate initial bubble and droplet sizes from the SINTEF model
This module applies the modified Weber number model of SINTEF with corrections for the presence of oil and gas together to estimate the volume mean diameters of oil and gas at the end of the break-up region.
Notes¶
The empirical coefficients A and B were obtained from Tower Basin experiments of oil into water with and without dispersant. These experiments had small exit diameters (generally 1.5 mm or less) and large relative momentum length scales l_M/D >> 1. The corrections for the presence of gas in oil (both a void fraction corrections and buoyancy correction) are theoretical, and any affect these corrections may have on the parameters A and B has not yet been studied in detail.
References¶
Brandvik, P.J., Johansen, O., Farooq, U., Angell, G., and Leirvik, F. (2012), “Sub-surface oil releases–Experimental study of droplet distributions and different dispersant injection techniques. A scaled experimental approach using the SINTEF Tower Basin.” Draft report, prepared by SINTEF Materials and Chemistry, Aug. 2012.
Johansen, O., Brandvik, P.J. and Farooq, U. (2012), “Droplet breakup in subsea oil releases–Part 2: Prediction of droplet size distributions with and without injection of chemical dispersants.” Marine Pollution Bulletin.
Class Objects¶
There are currently no Class objects defined for this module.
Module Functions¶
modified_We_model (D, rho_gas, m_gas, mu_gas, …) |
Compute the initial oil droplet and gas bubble sizes from the SINTEF model |
de_max (sigma, rho_p, rho) |
Calculate the maximum stable particle size |
de_50 (U, D, rho_p, mu_p, sigma, rho) |
Predict the volume mean diameter from a modified Weber number model |
rosin_rammler (nbins, d50, md_total, sigma, …) |
Return the volume size distribution from the Rosin Rammler distribution |


I’m a multidisciplinary designer passionate about storytelling and creative coding. I create fully responsive interfaces that make everyday digital experiences more personalized and playful.
How can we motivate students and teachers at the Amsterdam University of Applied Sciences to better sort their trash?
How can we foster acceptance of an old building’s with a new role in a changing community?
When we can disguise ourselves and choose a new personality, who do we become?
A design research project on technology’s effects on our mental health and the effectiveness of mindfulness apps.


Migrating scriptRunner to Outset
04 Jan 2015A while back, Nate Walck wrote scriptRunner. It’s a tool that can run a script either every time a user logs in or just the one time. It has served the test of time, but last year Joe Chilcote released Outset. It has all of the functionality of scriptRunner, but it can also install packages at the Mac’s first boot, and run scripts as root at either the first boot or every boot. This comes into it’s own when you’re trying to do things like skipping the iCloud screens on 10.10 using Rich Trouton’s script - this script needs to run after every OS update, so it makes sense to run this every time the Mac boots.
If you’ve been using scriptRunner and want to move to Outset, you have two options:
- Just move your scripts into the appropriate Outset directories and hope your users don’t mind the ‘once’ scripts running a second time.
- Or, you could pre-populate Outset’s ‘once’ plist so it won’t try to run a script previously run by scriptRunner again.
The first option isn’t acceptable to me, so I wrote a script that will populate Outset’s plist. It’s up on my Github. One caveat is that Outset requires that your scripts end .sh
, .rb
or .py
. scriptRunner didn’t care about this. When you’re moving your scripts into the Outset directory, you will need to ensure your scripts have the correct extension. This script will read the first line and try to work out what kind of script it is if the file doesn’t have the right extension - if it can’t work it out, it will append .sh
to the filename.
scriptRunner had a few options you could configure. The first is where your actual scripts live - you will need to edit line 8 of the script to where you put your scriptRunner scripts. Secondly, you might have changed the name of the plist scriptRunner uses - edit line 11 if you did this.
Now all that remains is to put this script into /usr/local/outset/login-once
. A Luggage Makefile that will make a package that will do this is included in the repository.
I’ve assumed that you can move your scripts into the new Outset directories using your configuration management tool (Munki, Puppet, Capser, whatever), but if you need a tool that can do this for you (with the previously stated caveat about the file extensions of the scripts), you’ll find a script that can be dropped into Outset’s firstboot directory.


class: center, middle # Building and running Docker containers @robertnorthard --- # Agenda 1. Terminology 2. Deep-dive 3. ... --- # Terminology Term | Description -------------------- | ------------- Docker Image | package that contains all the dependencies to run an executable Container | an instance of an image that can be start and stopped. Docker Daemon/Engine | manages the running of containers on a host Docker CLI | CLI interacts with the Docker Engine Control Groups | isolates container resources form one another Namespaces | isolation of processes, limiting access to system resources Dockerfile | Defines the instructions to build a Docker image copy-on-write (CoW) | Faclitates fast process startup by only copying the running processes file-system on write operations --- # Dockerfile ```bash FROM openjdk:8 LABEL<EMAIL_ADDRESS>ENV APP_USER service \ APP_USER_ID 1001 RUN useradd -m -d /opt/service ${APP_USER} -u ${APP_USER_ID} COPY --chown=${APP_USER_ID}:${APP_USER_ID} target/service.jar /opt/service/service.jar USER ${APP_USER_ID} EXPOSE 8080/tcp WORKDIR /opt/service ENTRYPOINT [ "java" ] CMD [ "-jar", "service.jar" ] ``` --- # Building a Docker image and running Build a Dockerfile ``` docker build [OPTIONS] PATH | URL | - e.g. docker build -t rootfs . docker build -t rootfs https://github.com/docker/rootfs.git#container:docker ``` Run the image ``` docker run [OPTIONS] IMAGE [COMMAND] [ARG...] ``` --- # Some best practices... * Run containers as read-only * Limit containers resources via cgroups to prevent containers crashing the host if subject to a denial of service * Use lightweight Docker base image (Alpine, BusyBox) when possible * Combine *RUN* instructions into multiple lines rather than instructions * Check base image security scan report in the public Docker repository. * Build Docker images from the Dockerfile rather than using a Docker commit. * Run containers as a non-root user otherwise they execute with the same privileges as the host user * Use UID when using the `USER` Dockerfile instruction. Name can be mapped to the root UID :'( * Use tags/Docker commit id when referencing base images to version lock, otherwise it uses the latest and greatest. * Containers are immutable - treat them so.


Objectives organiser
The endpoints for this API that are currently available:
Objectives endpoints:
-
POST /objectives
-
Create objective with the data:
- title
- type
- totalPagesVideos
- timeAllocated
If successful it returns JSON of the data added into the DB.
All fields are required and validated. If one or more is missing or of an incorrect format it will throw a 400 and return an array of errors.
-
GET /objectives
-
Read all objectives
-
GET /objectives/:id
-
Read a single objective with a specific ID
-
PATCH /objectives/:id
-
Edit objective with any of:
- title
- type
- totalPagesVideos
- timeAllocated
If successful it returns JSON of the updated data.
If the objective being updated does not exist it returns a 404 with:
ERROR 404: An objective with the ID of # does not exist
All fields are required and validated. If one or more is missing or of an incorrect format it will throw a 400 and return an array of errors.
-
DELETE /objectives/:id
-
Delete a single objective with a specific ID
If successful it returns a confirmation message.
If unsuccessful it returns a 404 error, for example:
ERROR 404: An objective with the ID: # has not been found
Progress updates endpoints:
-
POST /objectives/:id/progress-updates
-
Create a progress update for single objective:
- objectiveId
- pageVideoNumReached
- learningSummary
If successful it returns JSON of the data added into the DB.
All fields are required and validated. If one or more is missing or of an incorrect format it will throw a 400 and return an array of errors.
-
GET /objectives/:id/progress-updates
-
Read progress updates for single objective
-
GET /progress-updates/:id
-
Read a single progress update
-
GET /progress-updates
-
Read all progress updates
-
PATCH /progress-updates/:id
-
Edit progress update with any of:
- pageVideoNumReached
- learningSummary
N.B. the objectiveID of a progress update can not be edited once created.
If successful it returns JSON of the updated data.
If the progress update being updated does not exist it returns a 404 with:
ERROR 404: A progress update with the ID of # does not exist
All fields are required and validated. If one or more is missing or of an incorrect format it will throw a 400 and return an array of errors.
-
DELETE /progress-updates/:id
-
Delete a single progress update with a specific ID
If successful it returns a confirmation message.
If unsuccessful it returns a 404 error, for example:
ERROR 404: A progress update with the ID: # has not been found
Users endpoints:
-
POST /users/register
-
Create a new user:
- firstName
- lastName
- emailAddress
- emailAddressConfirmation
- password
- passwordConfirmation
If successful it returns JSON of the data added into the DB.
All fields are required and validated.
If one or more is missing it will throw a 400 error message, for example:
"..." is required
If the emailAddress and emailAddressConfirmation or password and passwordConfirmation it will throw a 400 error message, for example:
"..." do not match
If the emailAddress is not a valid email it will throw a 400 error message:
Email is not valid
-
POST /users/login
-
User login:
If successful it returns JSON of the user.
If the user does not exist it returns a 401 with the error message:
A user by that email address does not exist.
If the password is incorrect it returns a 401 with the error message:
Incorrect password for the email address provided.
-
POST /users/logout
-
User logout:
If successful it returns a 200 with the message:
Log out successful
-
PATCH /users/:id
-
Edit user information with any of:
- firstName
- lastName
- emailAddress
- password
N.B. the userId of a user can not be edited once created.
If successful it returns JSON of the updated data.
If the user being updated does not exist it returns a 404 with:
ERROR 404: A user with the ID of # does not exist
All fields are required and validated. If one or more is missing or of an incorrect format it will throw a 400 and return an array of errors.
-
DELETE /users/:id
-
Delete a user with a specific ID
If successful it returns a confirmation message.
If unsuccessful it returns a 404 error, for example:
ERROR 404: A user with the ID: # has not been found


Users and Groups
This help page is incomplete
Introduction
This module allows you to create, edit and delete Unix users and groups.
Typically, there is one Unix user account for each person who wants to
login to your system. In addition, various system programs will have
their own accounts, such as uucp or www. Every user
belongs to one or more groups, one of which is the primary group for
the user.
The main Users and Groups page shows all the local users and
groups on your system. NIS and NIS+ users and groups will not be shown
in the list, because they are not stored locally and cannot be edited.
However, groups can contain NIS users and users can have an NIS group
as their primary group.
If your machine is an NIS or NIS+ server and the table sources
are not /etc/passwd and /etc/group, you can change the
module configuration to edit the
appropriate files. The Command to run after change parameter can
be set to something like cd /var/yp ; make to update NIS maps
after every change to the password and group files.
Editing an Existing User
To edit a user, just click on the user's name from the list on the
main page. This will display a form in which you can edit the following
user details :
- Username
The name that the user uses to login to the system. Each user
must have a unique login name.
- Real name
The user's real name. This is stored in the comment field in
the password file.
- Encrypted password and Plain text password
The Unix password file stores passwords in one-way encrypted
form only. This means that the form cannot display the user's
plain-text password, only the encrypted form. To set a new
password for a user you can either enter the password into
the Plain text password field, or copy and paste an
encrypted string into the Encrypted password field.
- Password type
If you choose No password here, then no password is
needed to login to the account. If you choose Locked,
then no login is allowed. Only if Normal password is
chosen will the passwords described above be used.
- Unix UID
The UID is the number that the system really uses for
controlling access to files. Every user should have a unique
UID. If you change the Unix UID, then the Change UID
option at the bottom of the page determines what happens to
files owned by that user.
- Home directory
Every user should have a home directory to store personal files.
Typically, user home directories are all located under one
parent directory, such as /home.
- Shell program
When a user logs into the system, their shell program is run to
process whatever commands the user types. If a user has a shell
like /bin/false, then they will not be able to login.
This is useful for users who should only have FTP or email
access.
- Primary group
A user's primary group is the group which will usually be
assigned to any new files the user creates. If you change the
primary group, the Change GID option at the bottom
of the page controls what happens to files owned by that user
and group.
- Other groups
This is a list of all the other groups a user belongs to. Only
local groups will be shown, not NIS or NIS+ groups.
Some other user properties are only available if your system has a
shadow password file and the module configuration knows about it. They
are :
Creating a New User
To create a new user, click on the Create New User link below
the list of existing users on the main page. This will display the same
form as is used for editing a user, but with almost all the fields empty.
The only field that will be automatically filled in for you is the UID,
which Webmin will compute by picking a free UID at the end of a sequence
of existing UIDs.
When a new user is created, the user's home directory can be created as
well. To have webmin create and set the permissions on the directory you
specify, choose Create home directory at the bottom of the page.
You should do this for all normal users you add.
The Files to copy option in the module preferences can be used
to copy various files (such as .cshrc or .profile) into
the home directory of a newly created user. You should change this
parameter to a space-separated list of files to copy.
Deleting a User
To delete an existing user, click on the Delete button in the
user details form. This will take you to a page asking if you want to
delete the user's home directory as well. Be very careful when choosing
to do this, as some system users have the root directory as their
home directory.
In general, you should never change the UID, username or shell of system
users such as root, bin or nobody. Doing so
could make your system unusable or unbootable. Do not try to delete any
of these users either, especially root.
Editing an Existing Group
To edit a group, click on the group name from the list of groups on the
main page. This will bring you to a form in which you can edit the
following group properties :
- Group name
The unique name for this group.
- Group GID
Like this UID for a Unix user, this is a number that the system
uses to identify the group. Each group should have a unique
GID.
- Members
The list of all users in this group. This can include NIS or
NIS+ users as well, if they are in use on your system.
- Password
Not used?
Creating a New Group
To create a new group, click on the Create new group link
beneath the list of existing groups. This links to the same form as is
used for editing an existing group, but with all the fields blank except
for the GID. This is automatically filled by finding a free GID for the
new group.
Deleting a Group
To delete an existing group, click on the Delete Group button
on the group details page. This will immediately delete the group without
asking. No files or directories will be deleted though.
Return to module


About Ping Pong
Created by: Victor M. Puentes Jr.
Github Username/URL:
vmpuentes
Week 3 Project:
github link
Ping Pong Project
Intro to Programming: Week 3 September 2017
Enter any number here.
Enter


freeCodeCamp Survey Form
Thank you for taking the time to help us improve the platform
Name:
Email:
Age:
Which option best describes your current role?
Select current role
Student
Full time job
Full time learner
Prefer not to say
Other
Would you recommend freeCodeCamp to a friend?
Definitely
Maybe
Not sure
What is your favorite feature of freeCodeCamp?
Select an option
Challenges
Projects
Community
Open Source
What would you like to see improved? (Check all that apply)
Front-end Projects
Back-end Projects
Data Visualization
Challenges
Open Source Community
Gitter help rooms
Videos
City Meetups
Wiki
Forum
Additional Courses
Any comments or suggestions?
Submit
...


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/increase.20memory.20consumption.20threshold.html ---
Someone is trying to use Lean on a Win 7 machine here and we're constantly running into memory issues. Lean suggests "increase memory consumption threshold" -- is this something which is possible to do and which might actually work? It's a Windows 7 machine using .olean
files which were built on Windows 10 :-/ but that's only because none of us are using Win7 so we can't make the .olean files for Win7.
Every third time we hit Lean : restart
we get away with it :-)
go to task manager and look at memory consumption?
That sometimes means Lean thinks it needs to rebuild things
1) As @Reid Barton said, try leanpkg build
first. 2) In vscode, go to user settings (ctrl+shift+p user settings), and search for lean. :smile:
It didn't look unreasonable. I initially felt like we were on the boundary of what the machine was capable of, but it didn't make much sense because the machine had 16 gigs of ram and it never got filled up. Maybe it's the dodgy .olean files (and the fact that they were zipped up from some other computer and I'm not sure the timestamps would have survived -- I don't know anything about Windows timestamps).
I don't think I can run leanpkg build
-- I didn't try, but the machine did not have git and I didn't have admin privileges and I think that in the past this has been enough to stop the build from working -- it fails right at the start before trying to build anything. That was the root of the problem.
The default limit is a mere 1GB, so it makes sense that you did not see the machine's memory fill up.
My guess is also a timestamp issue.
When lean is invoked by the editor, does it write out .olean
files for modules it compiles?
My impression is that it does not
It's also easy to accidentally modify a mathlib source file (especially if you are using jump-to-definition) and that also tends to cause this behavior.
I don't think I can run
leanpkg build
-- I didn't try, but the machine did not have git
You can also do lean --make
Last updated: Apr 24 2020 at 19:02 UTC


|
Class Summary |
| BufferedPullConfiguration |
An implementation of an XNI XMLPullParserConfiguration
that buffers the events so that one and only callback is performed
for each call to parse(boolean):boolean . |
| DefaultHandler |
|
| EventCollector |
This class converts XNI document handler callbacks into pull parser
event objects, storing them on an event queue. |
| EventDispatcher |
This class converts pull parser event objects into XNI document handler
callbacks. |
| EventDispatcher.ResourceIdentifierProxy |
A proxy object for resource identifier passed to the start general
entity method in the XNI document handler. |
| EventIterator |
This class contains a set of utility functions to allow applications
to more conveniently iterate XML events instead of having to call
nextEvent for each event in the event stream. |
| EventQueue |
A general purpose queue for pull parser event objects. |


SOFTWARE LICENSE AGREEMENT
READ THE TERMS AND CONDITIONS THIS AGREEMENT (“AGREEMENT”) CAREFULLY BEFORE INSTALLING THE SOFTWARE. BY INSTALLING THE SOFTWARE AND USING THE SOFTWARE AND ACCOMPANYING DOCUMENTATION (“MATERIALS”), YOU AGREE TO BE BOUND BY THE TERMS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO THE TERMS OF THE AGREEMENT, DO NOT INSTALL OR USE THE SOFTWARE. USE AND RE-EXPORT OF TPC’S SOFTWARE IS SUBJECT TO THE UNITED STATES EXPORT CONTROL ADMINISTRATION REGULATIONS. THE SOFTWARE MAY NOT BE USED BY UNLICENSED PERSONS OR ENTITIES, AND MAY NOT BE RE-EXPORTED TO ANOTHER COUNTRY. SEE EXPORT ASSURANCE (CLAUSE 15) OF THIS LICENSE.
This is a legal agreement between you (“You” or “User”) and the Transaction Processing Performance Council (“TPC”). This Agreement states the terms and conditions upon which TPC offers to license the TPC-DS software available at www.tpc.org with all related documentation and accompanying items including, but not limited to, the source code, executable programs, drivers, libraries and data files associated with such programs, and modifications thereof (the “Software”), and online, electronic or printed documentation (“Materials”).
LICENSE
1. Grant. The Software and Materials are licensed, not sold, to you for use only under the terms of this Agreement. As between you and TPC (and, to the extent applicable, its licensors), TPC retains all title to and ownership of the Software and reserves all rights not expressly granted to you.
2. User. The Software may be used on any computer systems under the direct control of the User. Multiple copies may be downloaded or copied for purposes of replication as long as the intended use complies with the terms of this license. You may make exact copies of the original Software. The original and copies thereof, including the modifications permitted under clause 4, and the Materials, may be used only:
a. By the individual alone, if acquired by an individual.
b. By anyone within the same organization, if acquired by an entity. Any such entity must identify a contact person to TPC, and conduct communications with TPC through that contact person.
3. Scope of Use. Use of the Materials and the Software is limited to the generation of data regarding measurement and analysis of computer system (hardware and software) performance using the Software to produce TPC Benchmark Results, and for internal, academic, and research purposes. For purposes of this Agreement, TPC Benchmark Result means a performance test submitted to the TPC, documented by a Full Disclosure Report and Executive Summary, claiming to meet the requirements of an official TPC Benchmark specification. You agree that TPC Benchmark Results may only be published in accordance with the TPC Policies viewable at http: //www.tpc.org.
4. Permitted Modifications. Provided that you comply with the terms and conditions of this Agreement, you may modify the Software (but not any third party software contained therein):
a. for the purpose of facilitating the research, development, measurement, optimization, and production of TPC Benchmark Result(s),
b. for the purpose of internal research or product development provided that no benchmark data is publicly released, or
c. for any other purpose, but with the condition that any benchmark or testing results produced from or based on such modifications must be clearly identified as not being comparable to TPC Benchmark Results unless specifically authorized by TPC.
5. License Modification. Requests for modification of this license shall be addressed to<EMAIL_ADDRESS>6. Copyright/Licenses. The Software and Materials are owned by TPC and/or its licensors, and are protected by United States copyright laws and international treaty provisions. You may not remove any licenses or copyright notices from any copy of the Software or any copy of the Materials and must apply the notice if you extract part of the Software or Materials not bearing a notice.
7. Use of Name. It is acknowledged that TPC claims ownership in all trademark and trade name rights in the names used by TPC in the Software and the Materials. User shall preserve any notices regarding such ownership. User may only use such trademarks and names owned by TPC in accordance with the trademark usage guidelines of the TPC (available on the TPC web site at www.tpc.org/trademarks).
8. Merger or Integration. Any portion of the Software merged into or integrated with other software or documentation will continue to be subject to the terms and conditions of this Agreement.
9. Limited grants of sublicense. You may distribute the Software as provided or as modified as permitted under clause 4 of this Agreement, provided you comply with all of the terms of this Agreement and the following conditions:
a. If you distribute any portion of the Software in its original form you may do so only under this Agreement by including a complete copy of this Agreement with your distribution, and if you distribute the Software in modified form, you may only do so under a license that at a minimum provides all of the protections and conditions of use contained within this Agreement;
b. You must include on each copy of the Software that you distribute the following legend in all caps, at the top of the label and license, and in a font not less than [12] point and no less prominent than any other printing: “THE TPC SOFTWARE IS AVAILABLE WITHOUT CHARGE FROM TPC.”;
c. You must retain all copyright, patent, trademark, and attribution notices that are present in the Software; and
d. You may not generate revenue directly or indirectly (e.g., by charging service fees) for distribution of the Software or of any modifications permitted under clause 4.c.
10. Term and Termination.
a. Term. The license granted to you is effective until terminated.
b. Termination.
i. By You. You may terminate this Agreement at any time by returning the Software and Materials (including any portions or copies thereof) to TPC or providing written notice to the TPC that all copies of such Software and Materials have been deleted or destroyed.
ii. By TPC. In the event you materially fail to comply with any term or condition of this Agreement, and you fail to remedy such non-compliance within 30 days after the receipt of notice to that effect, then TPC shall have the right to terminate this Agreement immediately upon written notice at the end of such 30-day period.
c. Effect of Termination. Termination of this Agreement in accordance with this clause 10 will not terminate the rights of end users sublicensed by you pursuant to this Agreement. Moreover, upon termination and at TPC’s written request, you agree to either (1) return the Software (including any portions or copies thereof) to TPC or (2) immediately destroy all copies of the Software and Materials and inform the TPC of the destruction of the Software and Materials. Upon termination, TPC may also enforce any rights provided by law. The provisions of this Agreement that protect the proprietary rights of TPC and its Licensors will continue in force after termination.
11. No Warranty; Software and Materials “As Is”. TPC MAKES NO WARRANTIES WHATSOEVER, EXPRESS OR IMPLIED, RELATING TO THE DISTRIBUTION, USE OR PERFORMANCE OF THE SOFTWARE OR THE MATERIALS, (THE “WORK” FOR PURPOSES OF THIS SECTION) INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE OR PURPOSE.
 ALSO, THERE IS NO WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR NONINFRINGEMENT WITH REGARD TO THE WORK.
 USER ACCEPTS THE SOFTWARE AND MATERIALS “AS IS” AND WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED.
Without limitation, TPC does not warrant that the functions contained in the Software or Materials will meet your requirements or that the operation of the Software will be uninterrupted, error-free or free from malicious code. For purposes of this paragraph, “malicious code” means any program code designed to contaminate other computer programs or computer data, consume computer resources, modify, destroy, record, or transmit data, or in some other fashion usurp the normal operation of the computer, computer system, or computer network, including viruses, Trojan horses, droppers, worms, logic bombs, and the like.
TPC shall not be liable for the accuracy of any information provided by TPC or third party technical support personnel, or any damages caused, either directly or indirectly, by acts taken or omissions made by you as a result of such technical support.
You assume full responsibility for the selection of the Software to achieve your intended results, and for the installation, use and results obtained from the Software. You also assume the entire risk as it applies to the quality and performance of the Software. Should the Software prove defective, you (and not TPC) assume the entire liability of any and all necessary servicing, repair or correction.
This warranty gives you specific legal rights, and you may also have other rights which may vary based on your location. Some countries/states do not allow the exclusion of implied warranties, so the above exclusion may not apply to you. TPC disclaims all warranties of any kind if the Software was customized, repackaged or altered in any way by any third party other than TPC.
12. Disclaimer of Liability. TPC assumes no liability with respect to the Software and Materials, including liability for infringement of intellectual property rights, negligence, or any other liability. TPC is not aware of any infringement of copyright or patent that may result from its transfer to User of the Software and Materials. If User receives any notice of infringement, such notice shall be immediately communicated to TPC who will take immediate action to evaluate the claim and, if practicable, modify the Software and Materials as necessary to avoid infringement. In the event that TPC determines that the Software and Materials cannot be modified to avoid such infringement (or any other infringement claim communicated to TPC), TPC may terminate this Agreement immediately. User shall suspend use of the Software and Materials until modifications to avoid claims of infringement have been completed. User waives any claim against TPC in the event of such infringement claims by others.
13. Export Assurance. Use and re-export of TPC’s software and related technical information is subject to the Export Administration Regulations (EAR) of the United States Department of Commerce. User hereby agrees that User (a) assumes responsibility for compliance with the EAR in its use of the Software and technical information, and (b) will not export, re-export, or otherwise disclose directly or indirectly, the Software, technical data, or any direct product of the Software or technical data in violation of the EAR.
14. Limitation of Remedies And Damages.  IN NO EVENT WILL TPC’S OR ITS LICENSORS’ LIABILITY OR DAMAGES TO YOU OR ANY OTHER PERSON EVER EXCEED U.S. ONE HUNDRED DOLLARS (US $100), REGARDLESS OF THE FORM OF THE CLAIM. IN NO EVENT WILL LICENSEE'S LIABILITY OR DAMAGES TO TPC OR ANY OTHER PERSON EVER EXCEED $1,000,000, REGARDLESS OF THE FORM OF THE CLAIM. Some countries/states do not allow the limitation or exclusion of liability for incidental or consequential damages, so the above limitation or exclusion may not apply to you.
15. U.S. Government Restricted Rights. All Software and related documentation are provided with restricted rights. Use, duplication or disclosure by the U.S. Government is subject to restrictions as set forth in subdivision (b)(3)(ii) of the Rights in Technical Data and Computer Software Clause at<PHONE_NUMBER>. If you are using the Software outside of the United States, you will comply with the applicable local laws of your country, U.S. export control law, and the English version of this Agreement.
16. Contractor/Manufacturer. The Contractor/Manufacturer for the Software is:
Transaction Processing Performance Council
P.O. Box 29920
572B Ruger Street
San Francisco, CA 94129
17. General. This Agreement is binding on you as well as your employees, employers, contractors and agents, and on any successors and assignees. This Agreement is governed by the laws of the State of California (except to the extent federal law governs copyrights and federally registered trademarks) without respect to any provisions of California law that would cause application of the law of another state or country. The parties agree that the United Nations Convention on Contracts for the International Sale of Goods will not govern this agreement. This Agreement is the entire agreement between us and supersedes any other understandings or agreements with respect to the Software; if any provision of this Agreement is deemed invalid or unenforceable by any country or government agency having jurisdiction, that particular provision will be deemed modified to the extent necessary to make the provision valid and enforceable, and the remaining provisions will remain in full force and effect.
SPECIAL PROVISIONS APPLICABLE TO THE EUROPEAN UNION
If you acquired the Software in the European Union (EU), the following provisions also apply to you. If there is any inconsistency between the terms of the Software License Agreement set out earlier and the following provisions, the following provisions shall take precedence.
1. Distribution. You may sublicense modifications of the Software covered in this Agreement if they meet the requirements of clause 9 above.
2. Limited Warranty.
3. Limitation of Remedy and Damages.
4. Statutory Rights: Irish law provides that certain conditions and warranties may be implied in contracts for the sale of goods and in contracts for the supply of services. Such conditions and warranties are hereby excluded, to the extent such exclusion, in the context of this transaction, is lawful under Irish law. Conversely, such conditions and warranties, insofar as they may not be lawfully excluded, shall apply. Accordingly nothing in this Agreement shall prejudice any rights that you may enjoy by virtue of Sections 12, 13, 14 or 15 of the Irish Sale of Goods Act 1893 (as amended).
5. General. This Agreement is governed by the laws of the Republic of Ireland. The local language version of this agreement shall apply to Software acquired in the EU. This Agreement is the entire agreement between us and you agree that TPC will not have any liability for any untrue statement or representation made by it, its agents or anyone else (whether innocently or negligently) upon which you relied upon entering this Agreement, unless such untrue statement or representation was made fraudulently.


INTERNATIONALIZING
HIGHER EDUCATION:
PAST PRACTICES AND FUTURE POSSIBILITIES
July 26 — 29, 2016
Simon Fraser University
Vancouver Campus
The Centre for Research on International Education and the Faculty of Education at Simon Fraser University, Canada, invite you to participate in an international interdisciplinary conference focusing on internationalization of higher education.


Our Training sessions eye multiple domains of IT field in a single event which increases students knowledge about different work opportunities after their education.
Dr. Punjabrao Deshmukh Polytechnic College, Amravati
Workshop - 6th & 7th Feb, 2016
Dr. Punjabrao Deshmukh Polytechnic College, Amravati
Seminar - 25th Jan, 2016
P. R. Patil College of Engineering & Technology
Workshop - 23rd & 24th Jan, 2016
P. R. Patil College of Engineering & Technology
Seminar - 18th Jan, 2016


Ping-Pong
Let's play!
Rules
Ping Pong count up to your number from 1 with the following exceptions:
NB:A negative number has no effect!!
- Numbers divisible by 3 become ping
- Numbers divisible by 5 becomes pong
- Numbers divisible by 3 and 5 becomes pingpong


Will automatically compile if file under {{ lessPath }}
is changed (except .css files).
{{ file[0] }}
-> {{ file[1] }}
Will automatically compile all JavaScript files to browser compatible versions under {{ jsPath }}
to {{ jsOutPath }}
.
Will resolve automatically resolve all require statements and output to new file for the following mappings.
Will also automatically uglify (compress) all output files.
{{ file[0] }}
-> {{ file[1] }}


Mapping reads from RNA-seq data to mitochondrial genome
These are my notes for mapping reads from RNA-seq data to a mitochondrial genome using Bowtie2, since mitochondrial DNA, in general, lacks introns, and therefore a splice-aware read aligner would not be necessary; other tools such as BWA or STAR may be used for this task, too. General information about read alignment can be found in this review or here. In this example, I will use the mitochondrial genome of the German wasp (Vespula germanica).
First, download Bowtie2 and add the directory with the executables for Mac OS X/macOS to the system’s PATH environment variable:
# Download Bowtie2
curl -L http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.2.9/bowtie2-2.2.9-macos-x86_64.zip \
> bowtie2-2.2.9-macos-x86_64.zip
# Unpack file
unzip -a bowtie2-2.2.9-macos-x86_64.zip
# Update PATH
# Here I use the text editor vi
# This assumes that the file .bash_profile exists in the home directory
# .bash_profile is a hidden file. Show hidden files in Finder by
# using the triple combination of ‘shift‘ + ‘command‘ + ‘.‘
# Change into home directory
cd ~
# Use vi to open file
vi .bash_profile
# Use vi's i command to begin inserting text
i
# Insert path to Bowtie2 executables for Mac OS X/macOS
export PATH=$PATH:/path/to/bowtie2-2.2.9
# Press escape key
esc
# Use vi's commands :wq to quit and save edits
:wq
# Confirm that Bowtie2 is on the system's PATH
which bowtie2
Second, download the mitochondrial genome of Vespula germanica as a FASTA file and index the genome. In this example, I employ efetch from the NCBI’s E-utilities to download the FASTA file.
# Download FASTA file using the NCBI's efetch utility
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?\
db=nuccore&id=KR703583&rettype=fasta&retmode=text" > vgermanica_mitogenome.fasta
# Build genome index
# Usage: bowtie2-build file.fasta index_name
bowtie2-build vgermanica_mitogenome.fasta vgermanica_mitogenome
Third, align reads. Reads in FASTQ format were previously trimmed using Trimmomatic. Here I am using paired-end (2 x 100 bp) Illumina reads from a species of the genus Dolichovespula; no mitochondrial genome of Dolichovespula is currently available on GenBank.
# Map reads
# Usage: bowtie2 -x index_name -1 reads_1.fq -2 reads_2.fq -S outfile.sam
bowtie2 -x vgermanica_mitogenome -1 ../reads_1_paired.fq.qc.gz -2 ../reads_2_paired.fq.qc.gz -S reads_x_vgermanica.bowtie.sam -p 2 --very-sensitive
The overall alignment rate was 0.34% or 484,347 reads.
Next, use samtools to convert the SAM file into a sorted BAM file.
# Convert SAM to BAM
# Usage: samtools view -bS file.sam > file.bam
samtools view -bS reads_x_vgermanica.bowtie.sam > reads_x_vgermanica.bowtie.bam
# Convert BAM file to a sorted BAM file
# .bam.bai (the index of the sorted BAM file)
# Usage: samtools sort file.bam -o file.sorted.bam
samtools sort reads_x_vgermanica.bowtie.bam -o reads_x_vgermanica.bowtie.sorted.bam
# Optional: Get only mapped reads from BAM file
$ Usage: samtools view -b -F 4 file.sorted.bam > file.sorted.mapped.bam
samtools view -b -F 4 reads_x_vgermanica.bowtie.sorted.bam > reads_x_vgermanica.bowtie.sorted.mapped.bam


Fusion of native and web application
Web-based UI loaded in a web frame
Potentially with access to native features
Reinvent the wheel === false
$ npm install -g electron-forge
# Initialize a new project
$ electron-forge init my-new-project
# Launch your app
$ cd my-new-project
$ electron-forge start
Templates for Vanilla JS, React, React + TS, Angular, VueJS, Jade Templating


Zion National Park is a large and beautiful park in Utah. Millions of visitors visit annually to hike its scenic terrain. Why is Zion not on the list of UNESCO World Heritage Sites?
UNESCO is an agency of the United Nations that promotes science, education, and culture. One of the ways they do this is with a list of World Heritage Sites. To make it on the list, a site must be judged of significance to the collective interests of humanity.
I built a model using machine learning to classify whether a site would make it on the UNESCO list.
UNESCO sites are divided into two types, one is cultural. These are man-made sites such as The Statue of Liberty or The Great Wall of China. The other type is natural. Natural sites are parks, marine areas, and landforms that exhibit outstanding examples plant and animal life. I focused on the natural sites, specifically the parks. The parks have more consistent features that can be used to build a model.
I gathered data from UNESCO, the US National Park Service, the Canadian National Park Service, and TripAdvisor for reviews about each park. The US and Canadian Park Service gave me observations of parks not on the UNESCO list.
The features that I looked at were size of the park, age of the park, TripAdvisor review score and Number of TripAdvisor reviews. The number of reviews was important because some sites had a very high rating.
But only one review.
So I combined review score and number of reviews into a single metric “weighted reviews” that accounts for the number of reviews. This also serves as proxy as number of visitors to a park that is important in the model.
I used F1 score as my scoring metric. A baseline model that always predicts a park is a UNESCO site had an F1 score of 49%. I trained six different machine learning models with my data and here are the results:
A support vector machine (SVM) model was the best performer with a F1 score of 62%.
Given a set of park features, I can input them into the model will look at the data I used to train it and output a prediction whether a park is a UNESCO World Heritage Site.
The model predicts that Zion National Park should be classified as a UNESCO World Heritage Site.
The model currently has a F1 score of 62% on 140 parks, 70 that were UNESCO sites and 70 that were non-UNESCO sites. I would like to add more parks from all around the world to see if I can increase the F1 score.
With a strong enough score, the model would be used to find those parks that are not currently UNESCO sites that should be UNESCO sites.
The code for the project can be found on my GitHub.


Python's list is another datatype that can be used to keep other basic datatypes in a fairly organised manner. This is because members of a list are given position numbers by the Python interpreter and therefore can be accessed using their positions called indexes. A list is therefore a squence. To define a python list: listname = [first_member,second_member,...] These members can be any of the following datatypes:
Boolean Number String List Tuple Dictionary
My_list = ['hello', 2,3.6,True] #Let's call print print(My_list) #Now let's specify some index print(My_list[3]) #This should print the #fourth item in the #list which is at index 3. #Now let's slice print(My_list[0:3]) #This should print from the first #item to the third item, #leaving out the one at #index 3
list_name[ : : -1]Python should print out a reverse list.
list = ['physics', 'chemistry', 1997, 2000]; print ("Value available at index 2 : ",list[2]) list[2] = 2001 print ("New value available at index 2 : ",list[2])When the above code is executed, it produces the following result:
Value available at index 2 : 1997 New value available at index 2 : 2001
list1 = ['physics', 'chemistry', 1997, 2000]; >>print (list1) >>del list1[2] print ("After deleting value at index 2 : ",list1;)When the above code is executed, it produces following result:
['physics', 'chemistry', 1997, 2000] After deleting value at index 2 : ['physics', 'chemistry', 2000]
Python Expression Results Description len([1, 2, 3]) 3 Length [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] Concatenation ['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] Repetition 3 in [1, 2, 3] True Membership for x in [1, 2, 3]: print x, 1 2 3 Iteration
L = ['spam', 'Spam', 'SPAM!'] Python Expression Results Description L[2] 'SPAM!' Offsets start at zero L[-2] 'Spam' Negative: count from the right L[1:] ['Spam', 'SPAM!'] Slicing fetches sections
SN Function with Description 1 cmp(list1, list2) Compares elements of both lists. 2 len(list) Gives the total length of the list. 3 max(list) Returns item from the list with max value. 4 min(list) Returns item from the list with min value. 5 list(seq) Converts a tuple into list. Python includes following list methods SN Methods with Description 1 list.append(obj) Appends object obj to list 2 list.count(obj) Returns count of how many times obj occurs in list 3 list.extend(seq) Appends the contents of seq to list 4 list.index(obj) Returns the lowest index in list that obj appears 5 list.insert(index, obj) Inserts object obj into list at offset index 6 list.pop(obj=list[-1]) Removes and returns last object or obj from list 7 list.remove(obj) Removes object obj from list 8 list.reverse() Reverses objects of list in place 9 list.sort([func]) Sorts objects of list, use compare func if given