Sloppily Measuring the Effects of LZ4 Compression
Way back in 0.1.1
we added the ability to compress your data using LZ4. Since
I haven't written in a while and we'd never really measured the performance
aspects of using LZ4, I figured now was as good a time as any. Segfaults are
low, moral is high and coverity isn't yelling at
us too morosely.
We use LZ4 compression for a couple of reasons, mainly that it's fast and that
it reduces the memory required to store items both on-disk and in-memory. Ever
since I rewrote the database to use mmap()
the second one hasn't really been an
issue, but on-disk compression is still something nice to have. Given how easy
LZ4 was to add to the project and how fast it is
this is basically a win-win.
Implementation
So, to get started I wrote a naive memory checking script in bash that you can look at here. The gist is that it uses Linux's smap subsystem that resides in/proc
to grab memory usage of a process. I say naive
because the only thing I grabbed during the test was the total memory mapped to
the Erlang process. For our purposes this is more than enough.With the mem_check
script running as fast as it could logging memory usage and a
millisecond Unix timestamp, I ran fill_fast()
from torture.py
on 8 threads and let it go. fill_fast()
creates random 16-byte strings and associates
them with random 100-byte values.
I ran two tests: One with OL_F_LZ4
enabled and one without. To speed up the
filling of the databases a little bit I also disabled OL_F_AOL_FFLUSH
. This
avoids fflush()
ing the AOL file to disk and puts it's trust into fsync()
.
Since this isn't a benchmark I'm not worried about time or anything, but just to be complete the test box is spec'd thus:
- FX-8350 Processor
- 8GB of DDR3 at 1600MHz
Results
First, let's look at memory usage over time without LZ4 compression:From the baseline you can tell that we start out usage at about 251,000kB and quickly hit our hash-table limit and rehash. This triggers a rough doubling in memory usage, which is what we expect. Towards the end of the test with 100,000 keys you can see we hit 520,000kB and stay there. Keep in mind that this is mapped memory and not necessarily used memory.
I took snapshots of memory quite frequently, my dataset has something like 40,000 points for the length of the each test. All this data isn't really necessary though so I removed all memoy snapshots that aren't unique on memory usage compared to the last known usage amount. This results in some unique properties when we look at the results of the test with LZ4 compression enabled:
We get a much noisier line of memory usage, but a lowered range. This is kind of what I expect out of a compression algorithm: Small allocations in memory (or hopefully none) with better longterm results. We don't even broach 400kB here. Our baseline is slightly higher though, which is interesting.
Conclusions
This test is mostly a birds-eye view of memory usage and should be taken with a grain of salt. If I were to do this again I'd definitely use better memory checking to maybe check what pages are allocated per process rather than just mapped.Mostly though the results are positive and I think if you're using Oleg you should enable LZ4 compression. For funsies here are the two graphs together:


×
Close
Access To New User
User Full Name
{{name}}
User Name
Password
City
{{city.cityname}}
Branch
{{branch.branchname}}
User Email
User Mobile


 When you open a browser and go to a web page like www.google.com or www.yahoo.com , your computer sends a HTTP Request across the internet to a server. The server finds the appropriate HTML document and sends it back to the your computer where your web browser interprets the page and displays it on the user's screen. See this video for addition explaination.
HTML stands for Hypertext Markup Language. HTML documents are the main type on the web. HTML documents contain text content which describes "what you see" and markup which describes "how it looks". This video gives a good overview.
HTML documents are made of HTML Elements, Tags, and Attributes. Elements represents a structure and has a start tag, content, and end tag. Tags are used at the beginning and end of HTML. Attributes are used to define a property. This video explains the distinction well.
Computers interpret instructions literally. They cannot interpret the intent of the programmer. This can cause huge problems in the program and make a small mistake a huge problem.
HTML elements are either inline or block. Block elements applies only to the content inside of them. While Inline applies to the entire section of code. Example Break is inline while Paragraph is block.
There are three programming laugages of Web Develpment. HTML, CSS, and JavaScript. HTML creates the structure of the webpage, while CSS (cascading style sheets) control the style of the webpage and JavScript provides the interactive components of the page.
A DOM is how you draw out what you want the webpage to look like without having to write any code. It's a great way to visual what you need to accomplish and communicate to non-technical users. The DOM is tree-like structure of HTML is from a Parent-Child relationship. A Parent can have multiple children and the children can have multiple children, etc.
Everything on the webpage is a box. There are boxes inside of boxes inside of boxes. The more boxes a part of the webpage is in the more nested it is in the code.
There are three Text Editors that are recommended for the course.
1) Scratchpad
2) CodePen
3) Subline
Scratchpad is best for beginners and is the most user friendly, while Sublime is more powerful and less user friendly, while Codepen is in the middle of them.
Avoiding repetition allows for a number of benefits and will help you program better.
Helps you avoid errors. When you have to repeat code and you run a good chance of either missing a place you need to put it or typing the code wrong. Also if you need to make a minor change you will need to go to multiple spots to make the changes and that can be very time consuming.
By not repeating code it is easier to give all your webpages and websites the same look and feel and allow for the same consistency across the organization. If you repeat a lot of code it will be a lot harder to generate the same consistency.
CSS stands for Cascading Style Sheets and it allows you to adjust the stype of HTML elements. By specifing which HTML elements are similar and puting in the same class you can give them a specific style.
The 5 steps to programming a webpage are as follows:
1) Look for natural boxes
2) Look for repeated styles and elements
3) Write your HTML
4) Apply styles (From BIGGEST to smallest)
5) Fix things


2 Kings 8:7
And Elisha came to Damascus; and Benhadad the king of Syria was sick; and it was told him, saying, The man of God is come hither.


Police looking for seven missing under-18 players from Sao Tome
by TPN/LusaThe Portuguese police are looking for seven players from the Sao Tome and Príncipe U-18 football team, who left a hotel in Cascais on Thursday night, where the team was staying.
A source from the Lisbon police force told Lusa on Friday morning, that the youngsters "were absent from the hotel unit on Thursday night, without the knowledge of those responsible for the team", and that they have not returned until the moment.
The alert was given early this morning by those responsible for the Sao Tome selection, in coordination with the Portuguese Football Federation, the police added, indicating that steps are underway to locate the youths.
The Sao Tome and Principe under-18 team of played a preparation match against Portugal on Wednesday and lost by 7 - 0.
The match ended a short three-day internship of the Portuguese under-18 team, trained by Emílio Peixe.


-
Software Engineering, Bachelor, Université Laval
2011 - 2014
Software Engineering, Bachelor, Université Laval
2011 - 2014
Team Leader - Front-End Developer, Coveo
2013 - Present
Team leader of the Coveo Cloud services administration web application team. The Coveo Cloud administration console integrates multiple interfaces for its services, including content indexing settings, usage analytics, search
optimization, members and groups access.
Technologies used : TypeScript, HTML5, JavaScript, CSS3, Marionette, Backbone, React, jQuery,Underscore, Webpack, Gulp.
University Lecturer, Université Laval
2014 - Present
Courses: GLO-3102 - Web Application Development. Introduction to modern web application development concepts. GLO-3112 - Advanced Web Application Development (available winter 2017). Explore deployment of the application to production, best practices and optimisations.
Software Developer Internship, Fujitsu Consulting
May, 2012 - Aug, 2012 3 months
Develop a web application using WebSockets to communicate form a mobile web application to a browser on a projector.
Technologies used : Ubuntu server 12.04 LTS, JavaScript, PHP, mySQL, HTML5, CSS3, NodeJS, socket.io, jQuery/jQuery Mobile.
Software Developer Internship, Fujitsu Consulting
May, 2011 - Aug, 2011 3 months
Develop an internal news information application to be displayed in the lobby of the enterprise. Controlled remotely by gestures detected by the Kinect infrared camera.
Technologies used : JavaScript, PHP, mySQL, CSS, C# .NET, Sencha
Touch MVC framework, Android SDK, Java.
Typescript
JavaScript
CSS3, SCSS, LESS
Backbone.js
Marionette.js
React.js
Karma
Jasmine
Nightwatch
Frima Award, Frima
Awarded on: 2014
Video game developped during the "Video game programming" course. Frima awarded the prize for the innovative yet simple gameplay mechanics.
Using React JSX with TypeScript , Coveo Developpers Blog
Published on: Nov 21, 2015
I’ll introduce you on how to start a new project using TypeScript, JSX and React and show you some tools we use to simplify our development.
Optimizing web application build process , Coveo Developers Blog
Published on: Nov 04, 2014
Moving from ant scripts to gulp.js
Travel, Kitesurf, Wakeboard, Snowboard, Surf, Music, Guitar


◆ __init__()
| def Golomb.Golomb.__init__ |
( |
|
self, |
|
|
|
factor |
|
) |
| |
◆ convertToBinary()
| def Golomb.Golomb.convertToBinary |
( |
|
self, |
|
|
|
number |
|
) |
| |
Convertion to Binary Code.
- Parameters
-
| [in] | number | The number to be encoded to Binary |
| [out] | sequence | The Binary code sequence If our factor=2^x then it's normal binary encoding, keeping in mind the number of bits should be equal to log(factor,2) If it isn't then truncated binary encoding is not implemented |
◆ convertToUnary()
| def Golomb.Golomb.convertToUnary |
( |
|
self, |
|
|
|
number |
|
) |
| |
Convertion to Unary Code.
- Parameters
-
| [in] | number | The number to be encoded to Unary |
| [out] | sequence | The Unary code sequence In this implementation we add X 1's where X=number, followed by a 0 |
◆ decode()
| def Golomb.Golomb.decode |
( |
|
self, |
|
|
|
sequence |
|
) |
| |
Decoding function.
- Parameters
-
| [in] | sequence | The sequence of 0's and 1's (the code) |
| [out] | number | Returns decoded number Iterating sequence: Quotient is the sum of 1's until a 0 appears Remainder is the direct conversion of binary code to integer Number = factor*quotient + remainder |
◆ encode()
| def Golomb.Golomb.encode |
( |
|
self, |
|
|
|
number |
|
) |
| |
Encoding function.
- Parameters
-
| [in] | number | The number to be encoded |
| [out] | code | Returns the encoded number (string) Computing quotient and remainder, and putting them together to form the code Quotient converted to Unary code Remainder converted to Binary code |
◆ factor
Initialization function.
- Parameters
-
| [in] | factor | The value of "M" to be assigned to the Golomb Coder setting up useful flags for decoding and checking if M==2^x |
◆ sequenceFlag
| Golomb.Golomb.sequenceFlag |
◆ standardM
The documentation for this class was generated from the following file:


Your extension is readyyou can go to https://developer.chrome.com/docs/extensions/ to learn more about chrome extensions


Dear Mr Key,
I read with some interest your item on fictional characters named after packaging materials (21st January). It put me in mind of excelsior, the small woodshavings used to cushion items in cartons and the precursor of the ‘packing peanuts' of today. Although I have not yet discovered a fictional character with this name, I hope you will take up the gauntlet. The delight that such a match would afford far outweighs the effort of uncovering it. I eagerly await the next in your thrilling series, and remain your faithful audience, etc, etc,
Pansy Cradledew
P.S. As the word excelsior can also mean upward striving or very small type, maybe you could consider enlarging your remit to include aspiring hotels or publications for ants?
Thanks to Pansy for that. Of course, excelsior is not solely a packaging material, as the photograph below (from the American Excelsior Company) makes abundantly clear.


The World's Greatest-Ever Password Generator
Lock down your world with a customized password.
Generate Password


Class for creation of the objects.
The class ObjectFactory is an auxiliary class that empowers the factory methods. It provides the methods for binding of class implementations to the interfaces and for creation of objects for the requested interface.
| Properties | |
|---|---|
|
static
protected
|
Internal array for storing the mapping betwen interfaces/classes and the bound classes. |
|
static
protected
|
Internal array for storing the singleton instances for re-using. |
| Methods | |
|---|---|
|
static
public
|
Binds a class to an interface or a parent class. |
|
static
public
|
Сreates an object that support the interface $interface_or_class. |
Internal array for storing the mapping betwen interfaces/classes and the bound classes.
Internal array for storing the singleton instances for re-using.
Binds a class to an interface or a parent class.
The key point of this approach is the definition common interfaces and implementation of them in classes. When an object that supoorts an interface is requested, an instance of the corresponding bound class is created. When you want to change the class, you need just bind the new class to the interface.
You can also bind a class to itself and reqest it by own name in factory method. And later, you can implement a derived class and change the binding without affecting the code in the business logic.
| Name | Pass type | Value type | Default value | Description |
|---|---|---|---|---|
| $interface_or_class | by value | string|object |
Name of the class/interface as string or the class/interface. |
|
| $class | by value | string|object |
The class which instance should be created if the object is requested. |
|
| $init_function | by value | callable | null |
The optional initialization function. You can provide it to do some custom intialization. The signature of this function is:
Example:
|
It might throw the following exceptions in the case of any errors:
Сreates an object that support the interface $interface_or_class.
| Name | Pass type | Value type | Default value | Description |
|---|---|---|---|---|
| $interface_or_class | by value | string|object |
Name of the class/interface which instance should be created. |
|
| $singleton | by value | bool |
If the parameter is true, it ensures that only one instance of this object exists. The singleton is a usual patter for the action objects like SessionManager, EventManager, DBWorker etc. It makes no sense to produce many instances of such classes, it wastes the computer resources and might cause errors. If the parameter is false, then, by each request, a new object is created. If you request data objects like User, a separate instance must be created for each item. |
Returns object of the class bound to the interface.
It might throw the following exceptions in the case of any errors:


Maternal and child mortality in Southeast Asian countries is still very high, especially in poor and rural areas. The goal of our study is to develop user-friendly mathematical model to improve referral of high-risk term pregnancies in resource-poor settings; creating a more resource-efficient health system, while delivering better health outcomes to mothers and children.
Context of This Research
The poor quality of antenatal, delivery and postnatal health care services is a major barrier to reducing maternal and child deaths. Across all population groups, the coverage relating to service quality, quantity, and access consistently score very low.
For example, of 2,100 obstetrician-gynaecologists (OB -GYN) in Indonesia, more than half practice in Java. This disparity causes limited quantity of human health resources in rural and underdeveloped areas.
With the relatively few resources and inadequate local capacities, knowledge of referral conditions should be strategically strengthened to promote appropriate use of these facilities.
Significance
Currently, our ability to define such a fetus with growth restriction (<2500 g) and macrosomia (>4000 g) for referral is limited. The most commonly used method is the Johnson-Toshach formula, especially in primary care setting where there’s no ultrasonography facility. However, various studies show that Johnson-Toshach is inaccurate. Effective screening of those with high-risk term pregnancies requires better precision for timely referral to the higher level facilities.
There is a need for a formula that does better than Johnson-Toshach in accurately predicting fetal weight on strategies to detect high risk pregnancies and accurate referral system while minimizing unnecessary referrals.
This will make healthcare delivery more efficient: saving lives and reducing costs.
Goals of the project
Given this knowledge gap, we would like to develop an improved mathematical model, more accurate and easier to use, to better predict fetal weights at risk in Southeast Asia. This study sought to take into account the field’s constraints, such as births in primary care, or attended only by traditional birth attendants or family members.
The lack of resources and advanced facilities’ setting, make it even more important to be able to detect high risk pregnancies with accurate and efficient formula, which is fundamental for high quality antenatal care.
We believe that investors and donors might feel more secure if they pay the researchers and scientists directly, instead of paying through a third party website. You can read more about the authors by clicking on their names above and finding their contact information on their profiles. If their work has interested you, feel free to reach out to them to discuss this project and any donations you'd like to make.


Submitted a request via SN@P with @kevinreiss
mentioned
by Kevin Reiss at 2020-08-06 19:19:16.subscribed
by Kevin Reiss at 2020-08-06 19:19:16.Hi Regine,
Titles are limited to 8704 characters, but you're probably running into this issue, which effectively reduces the maximum length to 255 characters. https://archivesspace.atlassian.net/browse/ANW-757 To be honest, I thought this was fixed. I guess it's time for me to submit a PR.
I'll double-check later today, but I don't think that @unit works in extent statements.
Also, item(s) should work in extents. Could you send me a example where they are failing?
Some other issues:
For extents, the importer looks for "whole" or "part" in @altrender instead of @type.
Empty note fields (or <head>
only notes) cause the import to fail.
Empty subelements in <controlaccess>
cause the import to fail.
In addition to end dates before beginnings, other invalid @normal dates.
Missing <unitdate>
at the resource level
Missing <unitid>
at the resource level
Also, I don't know if you've seen Dave Mayo and Kate Bowers' article: https://journal.code4lib.org/articles/12239 Some of the things that they mention have been fixed. (I've been planning on going through and making a list of the current status of everything, but haven't had time.) Even so, it's still a great guide.
Thanks,
Brian
mentioned
by George Yarish at 2020-08-06 14:02:50.subscribed
by George Yarish at 2020-08-06 14:02:50.mentioned
by Type at 2020-08-06 14:02:50.subscribed
by Type at 2020-08-06 14:02:50.mentioned
by None at 2020-08-06 14:02:50.Attempting to build the DSpace installation on the OAR server is blocked given that there are network connectivity issues:
[ERROR] Failed to execute goal on project dspace-solr: Could not resolve dependencies for project org.dspace:dspace-solr:war:5.5-SNAPSHOT: Failed to collect dependencies at org.restlet.jee:org.restlet:jar:2.1.1: Failed to read artifact descriptor for org.restlet.jee:org.restlet:jar:2.1.1: Could not transfer artifact org.restlet.jee:org.restlet:pom:2.1.1 from/to restlet (http://maven.restlet.org): Transfer failed for http://maven.restlet.org/org/restlet/jee/org.restlet/2.1.1/org.restlet-2.1.1.pom: Connection reset -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
[dspace@cisdr204l dspace]$ curl -I http://maven.restlet.org/org/restlet/jee/org.restlet/2.1.1/org.restlet-2.1.1.pom
curl: (56) Recv failure: Connection reset by peer
[dspace@cisdr204l dspace]$ curl http://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
Please note that this is not the case from within my local environment:
% curl -I http://maven.restlet.org/org/restlet/jee/org.restlet/2.1.1/org.restlet-2.1.1.pom
HTTP/1.1 301 Moved Permanently
Content-Length: 0
Connection: keep-alive
Rebuilding this on the server took a significant amount of time, but this is now fully resolved and the PDFs are downloadable: https://oar.princeton.edu/jspui/handle/88435/pr1x802
closed
by James R. Griffin III at 2020-08-06 03:03:14.labeled
by James R. Griffin III at 2020-08-06 03:06:06.labeled
by James R. Griffin III at 2020-08-06 03:06:06.labeled
by James R. Griffin III at 2020-08-06 14:14:06.labeled
by James R. Griffin III at 2020-08-06 14:14:06.milestoned
by James R. Griffin III at 2020-08-06 14:14:06.https://gist.github.com/jrgriffiniii/3ec873e4c24ba77ee2eb3aac5d84a50d is needed in order to work-around the blocking problem of being unable to delete the duplicates either through the web user interface, or the dspace-jruby
.
https://gist.github.com/jrgriffiniii/3ec873e4c24ba77ee2eb3aac5d84a50d was updated as a Class, and this was run on the server, yielding the following duplicates:
104319
104321
104322
104323
104325
104394
104396
104401
104406
104432
104433
104435
104436
104440
closed
by James R. Griffin III at 2020-08-06 16:43:09.closed
by James R. Griffin III at 2020-08-06 16:43:41.https://gist.github.com/jrgriffiniii/d85479398e13244377f9d05a0b1905e6 was implemented in order to supporting the collection mapping.
The mapping procedure was undertaken for the following collections:
East Asian Studies Program
African American Studies Program
Creative Writing Program
Global Health and Health Policy Program
Medieval Studies Program
Near Eastern Studies Program
Neuroscience Program
Theater Program
closed
by James R. Griffin III at 2020-08-06 18:16:19.https://gist.github.com/jrgriffiniii/7398286adf20552be66c721134cccce6 implements a Class for generating reports for a given user.
With the updates for https://gist.github.com/jrgriffiniii/7398286adf20552be66c721134cccce6, I can confirm that all Items are all within the same workflow state which have been claimed by<EMAIL_ADDRESS>.
Ad-hoc querying led me to find that 104405, 104400, 104380, 104384, and 104402 may have been erroneously published.
labeled
by James R. Griffin III at 2020-08-06 18:48:20.labeled
by James R. Griffin III at 2020-08-06 18:48:20.milestoned
by James R. Griffin III at 2020-08-06 18:48:20.assigned
by James R. Griffin III at 2020-08-06 18:48:20.closed
by James R. Griffin III at 2020-08-06 20:09:07.labeled
by James R. Griffin III at 2020-08-06 20:10:46.labeled
by Kate Lynch at 2020-08-06 14:21:27.labeled
by Kate Lynch at 2020-08-06 14:21:40.labeled
by Kate Lynch at 2020-08-06 14:11:55.labeled
by Kate Lynch at 2020-08-06 14:11:55.labeled
by Kate Lynch at 2020-08-06 14:21:53.What do you mean by "We may want to adjust this so it'll only generate an auth link when we ask it to?"? Isn't it only generating if the change set has mint_auth_token == true
?
@tpendragon Yes, let's add this to maps and geo material. It seems especially likely that scanned maps will be requested for a class at some point.
@hackmastera Right now it generates a token when marked complete. We might want it to have no token until you hit a button.
assigned
by None at 2020-08-06 13:25:41.mentioned
by Trey Pendragon at 2020-08-06 14:45:14.subscribed
by Trey Pendragon at 2020-08-06 14:45:14.mentioned
by None at 2020-08-06 15:55:40.subscribed
by None at 2020-08-06 15:55:40.unassigned
by None at 2020-08-06 16:28:40.@tpendragon, everything looks good except for the fact that the now the FA description field is no longer being mapped for any of the FA materials in WC064,WC055, WC054.
mentioned
by Trey Pendragon at 2020-08-06 17:42:19.subscribed
by Trey Pendragon at 2020-08-06 17:42:19.assigned
by Christina Chortaria at 2020-08-06 02:18:12.labeled
by Christina Chortaria at 2020-08-06 13:13:10.mentioned
by Peter Green at 2020-08-06 13:13:11.subscribed
by Peter Green at 2020-08-06 13:13:11.mentioned
by None at 2020-08-06 13:13:11.subscribed
by None at 2020-08-06 13:13:11.mentioned
by None at 2020-08-06 13:13:11.subscribed
by None at 2020-08-06 13:13:11.assigned
by Christina Chortaria at 2020-08-06 13:54:42.labeled
by Christina Chortaria at 2020-08-06 13:55:08.labeled
by Christina Chortaria at 2020-08-06 13:58:11.assigned
by Christina Chortaria at 2020-08-06 13:58:19.labeled
by Christina Chortaria at 2020-08-06 13:58:55.assigned
by Christina Chortaria at 2020-08-06 13:58:55.labeled
by Christina Chortaria at 2020-08-06 17:24:18.assigned
by Christina Chortaria at 2020-08-06 17:24:18.assigned
by None at 2020-08-06 17:26:39.Coverage decreased (-0.6%) to 79.261% when pulling 6b6bda42647587d6144a11d770066de5c7c320cf on alma-implementation into 73a88ecc1c421245a8ca5a7f4a3ee125de65ba91 on master.
ready_for_review
by Christina Chortaria at 2020-08-06 17:28:51.renamed
by Christina Chortaria at 2020-08-06 17:29:08.I had a quick call with @mzelesky and opened https://github.com/pulibrary/voyager_helpers/issues/114. I'll open a PR and test it on bibdata-staging. When we first added the patrongroupcharged attribute we didn't pull it all the way to the fullmfhdavailability because the need was only to retrieve it in the EligibleItemService using https://bibdata.princeton.edu/bibliographic/7214786/items. Also @mzelesky explained that the https://github.com/pulibrary/voyager_helpers/blob/839acb7db247150fded107989a14680a0cc4d8ce/lib/voyager_helpers/liberator.rb#L214 is used on the search results page not on the record page. Thank you @mzelesky for your valuable input!
assigned
by None at 2020-08-06 16:29:31.mentioned
by None at 2020-08-06 21:37:25.subscribed
by None at 2020-08-06 21:37:25.this PR has deployed oar-staging and dev multiple times. (sorry it was this huge 👎 )
head_ref_force_pushed
by Francis Kayiwa at 2020-08-05 22:04:31.ready_for_review
by Francis Kayiwa at 2020-08-05 22:05:32.review_requested
by Francis Kayiwa at 2020-08-05 22:05:41.referenced
by Francis Kayiwa at 2020-08-06 14:23:02.merged
by Francis Kayiwa at 2020-08-06 14:23:02.closed
by Francis Kayiwa at 2020-08-06 14:23:02.head_ref_deleted
by Francis Kayiwa at 2020-08-06 14:23:06.review_requested
by James R. Griffin III at 2020-08-06 14:25:46.referenced
by James R. Griffin III at 2020-08-06 14:44:23.merged
by James R. Griffin III at 2020-08-06 14:44:23.closed
by James R. Griffin III at 2020-08-06 14:44:23.head_ref_deleted
by James R. Griffin III at 2020-08-06 14:44:29.head_ref_force_pushed
by None at 2020-08-06 20:35:34.review_requested
by Francis Kayiwa at 2020-08-07 00:58:55.closed
by Kevin Reiss at 2020-08-06 13:02:02.referenced
by Kevin Reiss at 2020-08-06 13:02:02.merged
by Kevin Reiss at 2020-08-06 13:02:02.closed
by Kevin Reiss at 2020-08-06 13:02:03.head_ref_deleted
by Kevin Reiss at 2020-08-06 13:02:06.referenced
by Kevin Reiss at 2020-08-06 19:30:11.merged
by Kevin Reiss at 2020-08-06 19:30:11.closed
by Kevin Reiss at 2020-08-06 19:30:11.assigned
by Christina Chortaria at 2020-08-06 21:29:31.review_requested
by Christina Chortaria at 2020-08-07 00:25:10.


Reproducibility Pipeline - A framework to check the reproducibility of experiments in neuroscience pipelines.
Docker Images for Human Connectome Pipeline - Human Connectome preprocessing pipelines as docker images which can be used in any high performance computing platforms which supports docker.
Thesis Template with continous integration - Thesis template for Concordia University. The contionus integration using Travis makes sure that the tex file is compilable


| Opcode/Instruction |
Op/En |
64/32-bit Mode |
CPUID Feature Flag |
Description |
| VEX.128.66.0F38.W0 18 /r VBROADCASTSS xmm1, m32 |
RM |
V/V |
AVX |
Broadcast single-precision floating-point element in mem to four locations in xmm1. |
| VEX.256.66.0F38.W0 18 /r VBROADCASTSS ymm1, m32 |
RM |
V/V |
AVX |
Broadcast single-precision floating-point element in mem to eight locations in ymm1. |
| VEX.256.66.0F38.W0 19 /r VBROADCASTSD ymm1, m64 |
RM |
V/V |
AVX |
Broadcast double-precision floating-point element in mem to four locations in ymm1. |
| VEX.256.66.0F38.W0 1A /r VBROADCASTF128 ymm1, m128 |
RM |
V/V |
AVX |
Broadcast 128 bits of floating-point data in mem to low and high 128-bits in ymm1. |
| VEX.128.66.0F38.W0 18/r VBROADCASTSS xmm1, xmm2 |
RM |
V/V |
AVX2 |
Broadcast the low single-precision floatingpoint element in the source operand to four locations in xmm1. |
| VEX.256.66.0F38.W0 18 /r VBROADCASTSS ymm1, xmm2 |
RM |
V/V |
AVX2 |
Broadcast low single-precision floating-point element in the source operand to eight locations in ymm1. |
| VEX.256.66.0F38.W0 19 /r VBROADCASTSD ymm1, xmm2 |
RM |
V/V |
AVX2 |
Broadcast low double-precision floating-point element in the source operand to four locations in ymm1. |
Load floating point values from the source operand (second operand) and broadcast to all elements of the destination operand (first operand). VBROADCASTSD and VBROADCASTF128 are only supported as 256-bit wide versions. VBROADCASTSS is supported in both 128-bit and 256-bit wide versions. Memory and register source operand syntax support of 256-bit instructions depend on the processor’s enumeration of the following conditions with respect to CPUID.1:ECX.AVX[bit 28] and CPUID.(EAX=07H, ECX=0H):EBX.AVX2[bit 5]:
Note: In VEX-encoded versions, VEX.vvvv is reserved and must be 1111b otherwise instructions will #UD. An attempt to execute VBROADCASTSD or VBROADCASTF128 encoded with VEX.L= 0 will cause an #UD exception. Attempts to execute any VBROADCAST* instruction with VEX.W = 1 will cause #UD.
None.


Tone extends Enum
Tone class
Tags
Table of Contents
- A = "a"
- B = "b"
- C = "c"
- D = "d"
- FLASH = "flash"
- POUND = "pound"
- STAR = "star"
- TONE0 = "tone0"
- The Enum Tone
- TONE1 = "tone1"
- TONE2 = "tone2"
- TONE3 = "tone3"
- TONE4 = "tone4"
- TONE5 = "tone5"
- TONE6 = "tone6"
- TONE7 = "tone7"
- TONE8 = "tone8"
- TONE9 = "tone9"
- $_value : string
- The value of the enum
- $constants : mixed
- __construct() : mixed
- Create a new enum
- has() : bool
- Check if the enum has the given value
- is() : bool
- Check if the enum is defined
- toArray() : mixed
- Create a new class for the enum in question
- value() : string
- Get the value of the enum
Constants
A
public
mixed
A
= "a"
B
public
mixed
B
= "b"
C
public
mixed
C
= "c"
D
public
mixed
D
= "d"
FLASH
public
mixed
FLASH
= "flash"
POUND
public
mixed
POUND
= "pound"
STAR
public
mixed
STAR
= "star"
TONE0
The Enum Tone
public
mixed
TONE0
= "tone0"
TONE1
public
mixed
TONE1
= "tone1"
TONE2
public
mixed
TONE2
= "tone2"
TONE3
public
mixed
TONE3
= "tone3"
TONE4
public
mixed
TONE4
= "tone4"
TONE5
public
mixed
TONE5
= "tone5"
TONE6
public
mixed
TONE6
= "tone6"
TONE7
public
mixed
TONE7
= "tone7"
TONE8
public
mixed
TONE8
= "tone8"
TONE9
public
mixed
TONE9
= "tone9"
Properties
$_value
The value of the enum
private
string
$_value
$constants
private
static mixed
$constants
= []
Methods
__construct()
Create a new enum
public
__construct(string $value) : mixed
Parameters
- $value : string
-
The value of the enum
Tags
Return values
mixed —has()
Check if the enum has the given value
public
has(string $value) : bool
Parameters
- $value : string
Return values
bool —the enum has the value
is()
Check if the enum is defined
public
is(string $value) : bool
Parameters
- $value : string
-
the value of the enum
Return values
bool —True if the value is defined
toArray()
Create a new class for the enum in question
public
toArray() : mixed
Tags
Return values
mixed —value()
Get the value of the enum
public
value() : string
Return values
string —value of the enum


Create strings in JavaScript with the reserved characters.
In JavaScript, you can create a strings with single or double quotation marks. A backward slash (\) can escape a character.
\
"String goes between the double quotation marks."


Use
md-separator-keys
to customize the key codes which trigger chip creation.
Add custom separator key codes such as semicolon for e-mails.


Heal with us project was a group project,the project was about
creating awareness and
help the people suffering from cancer to
get medical attention through this website
The project was about Bridal wear,makeup and hinnah
i went at St.Clera praimary school.
and finally finished my form four in the year
2016 at Baba Dogo sec school.and now in Moringa school doing Softwere development
currently I've joined moringa school.
it was always my dream to be the best softwere developer
and am thankful to Access for giving me the chance to fullfill my dreams at
MORINGA SCHOOL.
In future i want to be the best filmmaker and best developer.
Also would like to
empower youths through my skills
Email<EMAIL_ADDRESS>hotmail number:+254707072241
Location:NAIROBI/KENYA


This is the best way to talk to us directly! The message you type here will be sent directly to the Command Central development team. Comments, compliments, suggetions, complaints, ideas, and ramblings are all welcome. We want to hear directly from the people that use this application every day!


{% extends "base.html" %} {% set active_page = "about" %} {% block content %}
This fabulous content was brought to you by Erin, Kali, Onuwa, and Christian.


Welcome to this free steam market api, hosted by zeit.co
names : the market hash name of the item
appid : the app id of the game (https://steamdb.info/apps/)
currency : the currency id of the displayed price
Example: /api/v1?names=MP9 | Storm (Minimal Wear),Sawed-Off | Origami (Well-Worn)&appid=730¤cy=1
Created by Jonathan Schneider


{% extends "mails/messages/participant_base.html" %} {% load i18n %} {% block message %}
{% blocktrans context 'email' %} You have registered your team on {{ site_name }}! {% endblocktrans %}
{{ title }}
{% blocktrans context 'email' %} The activity manager will be in touch to confirm details such as time, date and location. You can start inviting team members, or wait until the details have been set. {% endblocktrans %}
{% blocktrans context 'email' %} You can now invite your team members to the activity! {% endblocktrans %}
{% endblock %} {% block end_message %}{% blocktrans context 'email' %} If your team is unable to participate, please withdraw via the activity page so that another team can take your place. {% endblocktrans %}
{% endblock %}


Friend Finder
Home
Friend Survey
Find your best friend by answering the questions below.
About You
Name (Required)
Link to Photo Image (Required)
Question 1
Your mind is always buzzing with unexplored ideas and plans.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 2
Generally speaking, you rely more on your experience than your imagination.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 3
You find it easy to stay relaxed and focused even when there is some pressure.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 4
You rarely do something just out of sheer curiosity.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 5
People can rarely upset you.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 6
It is often difficult for you to relate to other people’s feelings.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 7
In a discussion, truth should be more important than people’s sensitivities.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 8
You rarely get carried away by fantasies and ideas.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 9
You think that everyone’s views should be respected regardless of whether they are supported by facts or not.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 10
You feel more energetic after spending time with a group of people.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Submit
API Friends List
Your Best Matched Friend is...


NieR Replicant Checklists
menu
Sidequests
Words
Weapons
Fish
Sidequests
Part I
Nier's Village
Book Smarts
Boar Hunt!
The Lost Eggs
Old-Fashioned Home Cooking
Shopping List
A Return to Shopping
The Tavern Keeper’s Grandmother
Fragile Delivery
Fragile Delivery 2
The Gatekeeper’s Errand
Herbal Remedies
A Dog Astray
On the Wings of Eagles
The Ballad of the Twins
Yonah’s Cooking
Yonah’s Gift
Fragile Delivery 3
The Runaway Son
Seafront
Letter to a Lover
A Signature Dish
Bon Appetit!
The New Merchant in Town
The Postman’s Request
The Lighthouse Lady’s Wrath
Closure
The Fisherman’s Gambit
The Fisherman’s Gambit, Part 2
The Fisherman’s Gambit, Part 3
The Fisherman’s Gambit, Part 4
The Fisherman’s Gambit, Part 5
The Pride of a Lover
Façade
Item Unknown
Apology from a Fool
The Missing Girl
The Littlest Hero
The Tangled Message
Part II
Nier's Village
Contract for a Contractor
Thieves in Training
The Creaky Waterwheel
The Faded Fountain
The Damaged Map
The Bridge in Peril
The Promised Gift
A Child’s Final Chance
The Despicable Man
Search for the Shade
Seafront
The Strange Fate of the Jewel
Staying Afloat
The Scattered Cargo
The Masterless Lighthouse
Learning a Trade
The Great Tree
Master of the Southern Plains
A Memorable Knife
Bon Appetit! 2
Freesia
The Fisherman’s Gambit, Part 6
The Fisherman’s Gambit, Part 7
The Fisherman’s Gambit, Part 8
The Fisherman’s Final Gambit
Façade
Life in the Sands
The King’s Mask
Nightmares and Dust
A City Reborn
A Shade Entombed
Disturbing the Sleep of Kings
Shadows of the Desert
Emil's Mansion
A Tale of Study
Research Project
Junk Heap
The Shade Army
The Forest of Myth
The Magical Stone
Words
A
Ashur
Ashures
Ashuresra
Ashurir
Ashurira
Ashurka
Ashurkarr
Ashurza
Ashurzarken
Ashurzarr
Ashurfarra
B
Bes
Besa
Besal
Besi
Besil
Beso
Besol
Besu
Besul
Besuloth
G
Geb
Geba
Gebal
Gebi
Gebil
Gebo
Gebol
Gebu
Gebul
Gebuloth
H
Hod
Hoda
Hodal
Hodi
Hodil
Hodo
Hodol
Hodu
Hodul
Hoduloth
K
Kon
Kones
Konesra
Konir
Konira
Konka
Konkarr
Konza
Konzarken
Konzarr
L
Lug
Luges
Lugesra
Lugir
Lugira
Lugka
Lugkarr
Lugza
Lugzarken
Lugzarr
M
Mah
Mahes
Mahesra
Mahir
Mahira
Mahka
Mahkarr
Mahza
Mahzarken
Mahzarr
O
Ot
Otes
Otesra
Otir
Otira
Otka
Otkarr
Otza
Otzarken
Otzarr
P
Pah
Paha
Pahal
Pahi
Pahil
Paho
Pahol
Pahu
Pahul
Pahuloth
S
Sol
Soles
Solesra
Solir
Solira
Solka
Solkarr
Solza
Solzarken
Solzarr
U
Ul
Ula
Ulal
Uli
Ulil
Ulo
Ulol
Ulu
Ulul
Ululoth
V
Var
Vara
Varal
Vari
Varil
Varo
Varol
Varu
Varul
Varuloth
Weapons
Part I
One-Handed
Beastbain
Blade of Treachery
Earth Wyrm’s Claw
Faith
Lily-Leaf Sword
Moonrise
Nameless Blade
Nirvana Dagger
Rebirth
Cruel Oath (Optional)
Virtuous Contract (Optional)
Part II
One-Handed
Ancient Overlord
Fool’s Embrace
Iron Pipe
Labyrinth’s Whisper
Phoenix Dagger
Two-Handed
Axe of Beheading
Beastlord
Fang of the Twins
Fool’s Lament
Iron Will
Kusanagi
Labyrinth’s Song
Phoenix Sword
Vile Axe
Virtuous Treaty (Optional)
Lances
Beastcurse
Captain’s Holy Spear
Dragoon Lance
Fool’s Accord
Labyrinth’s Shout
Phoenix Spear
Spear of the Usurper
Sunrise
The Devil Queen
Transience
Virtuous Dignity (Optional)
Fish
Seafront
Blowfish
Blue Marlin
Bream
Dunkleosteus
Sardine
Shaman Fish
Shark
Nier's Village
Black Bass
Carp
Giant Catfish
Eastern Road
Royal Fish
Desert
Hyneria
Rhizodont
Sandfish
Northern Plains
Rainbow Trout


PIZZA
Choose your size
Small, 12" pizza
Medium, 15" pizza
Large, 18" pizza
Select which size you would like your Pizza to be.
Anchovy
Artichoke
Pepperoni
Pineapple
Mushroom
Submit
Your order:
Thank you for ordering! Your
Pizza is on it's way!
Size:
Topping(s):
Price:


7 die after buses collide on inter-city highway in Indonesia's Java
BANDUNG: Seven people were killed on Thursday (Nov 14) after two passenger buses collided on a main inter-city highway on the Indonesian island of Java, authorities said.
The fatal accident on the Cipali toll road, which also left 16 people injured - some seriously - happened shortly after midnight on a busy route in West Java which connects the capital Jakarta to Central and East Java provinces.
One bus driver lost control of his vehicle, which crossed a road median before slamming into another bus travelling in the opposite direction, killing seven including its driver and injuring more than a dozen on board, according to West Java police spokesman Trunoyudo Wisnu Andiko.
The driver who lost control of the bus was injured, but none of his passengers were hurt, he added.
The cause of the accident was not immediately known, but police told Antara news agency that the injured driver is suspected to have been sleepy.
"It seems like he was sleepy last night ... fell asleep and the bus crossed over to the other side," said Subang police chief Teddy Fanani.
Antara also reported that the bus which lost control was driven by a man named Sanudin, and was travelling from Jakarta towards the city of Cirebon, where the other bus was coming from.
Teddy said police will be investigating if the accident was caused by the driver's negligence. Police will ask Sanudin and the bus conductor for their statements as soon as possible, he added.
In September, at least 21 people died when a bus plunged into a ravine in West Java's Sukabumi region.
Several months earlier, 12 people were killed and dozens more injured when a passenger tried to wrest control of a bus steering wheel following an argument with the driver on the same toll road in West Java as Thursday's accident. The bus smashed into two cars, causing a truck to roll.


import os
import warnings
import pandas as pd
from pygromos.utils.typing import List
from pygromos.simulations.hpc_queuing.submission_systems._submission_system import _SubmissionSystem
from pygromos.simulations.hpc_queuing.submission_systems.submission_job import Submission_job
from pygromos.utils import bash
[docs]class LOCAL(_SubmissionSystem):
"""
This class handles local submission without a queueing system
"""
def __init__(
self,
submission: bool = True,
nomp: int = 1,
nmpi: int = 1,
job_duration: str = "24:00",
verbose: bool = False,
environment=None,
zip_trajectories: bool = True,
):
super().__init__(
verbose=verbose,
nmpi=nmpi,
nomp=nomp,
job_duration=job_duration,
submission=submission,
environment=environment,
zip_trajectories=zip_trajectories,
)
[docs] def submit_to_queue(self, sub_job: Submission_job) -> int:
"""
submitt a local job
"""
orig_dir = os.getcwd()
if isinstance(sub_job.submit_from_dir, str) and os.path.isdir(sub_job.submit_from_dir):
os.chdir(sub_job.submit_from_dir)
command_file_path = sub_job.submit_from_dir + "/job_" + str(sub_job.jobName) + ".sh"
else:
command_file_path = "./job_" + str(sub_job.jobName) + ".sh"
sub_job.command = sub_job.command.strip() # remove trailing linebreaks
if self._nomp >= 1:
command = "export OMP_NUM_THREADS=" + str(self._nomp) + ";\n " + sub_job.command + ""
else:
command = sub_job.command
if sub_job.sumbit_from_file:
command_file = open(command_file_path, "w")
command_file.write("#!/bin/bash\n")
command_file.write(command.replace("&& ", ";\n") + ";\n")
command_file.close()
command = command_file_path
bash.execute("chmod +x " + command_file_path, env=self.environment)
# finalize string
if self.verbose:
print("Submission Command: \t", " ".join(command))
if self.submission:
try:
process = bash.execute(command=command, catch_STD=True, env=self.environment)
std_out_buff = map(str, process.stdout.readlines())
std_out = "\t" + "\n\t".join(std_out_buff)
# next sopt_job is queued with id:
if self.verbose:
print("STDOUT: \n\t" + std_out + "\nEND\n")
if os.path.exists(orig_dir):
os.chdir(orig_dir)
return 0
except ChildProcessError:
try:
print(process)
except ChildProcessError:
pass
raise ChildProcessError("command failed: \n" + str(command))
else:
print("Did not submit: ", command)
return -1
[docs] def submit_jobAarray_to_queue(self, sub_job: Submission_job) -> int:
"""
submitt a local job array
"""
# generate submission_string:
submission_string = ""
if isinstance(sub_job.submit_from_dir, str) and os.path.isdir(sub_job.submit_from_dir):
submission_string += "cd " + sub_job.submit_from_dir + " && "
if self._nomp > 1:
command = submission_string + " export OMP_NUM_THREADS=" + str(self._nomp) + " && " + sub_job.command
else:
command = submission_string + sub_job.command
if self.verbose:
print("Submission Command: \t", " ".join(submission_string))
if self.submission:
try:
for jobID in range(sub_job.start_job, sub_job.end_job + 1):
std_out_buff = bash.execute(
command="export JOBID=" + str(jobID) + " && " + command, env=self.environment
)
std_out = "\n".join(std_out_buff.readlines())
if self.verbose:
print("sdtout : " + str(std_out))
return 0
except ChildProcessError:
raise ChildProcessError("could not submit this command: \n" + submission_string)
else:
print("Did note submit: ", command)
return -1
[docs] def search_queue_for_jobname(self, job_name: str, **kwargs) -> List[str]:
"""search_queue_for_jobname
this jobs searches the job queue for a certain job name.
DUMMY FUNCTION!
Parameters
----------
job_name : str
regex: bool, optional
if the string is a Regular Expression
Returns
-------
List[str]
the output of the queue containing the jobname
"""
if self.verbose:
print("Searching job Name: ", job_name)
warnings.warn("Queue search was called, but no queue present!")
return []
[docs] def search_queue_for_jobid(self, job_id: int, **kwargs) -> pd.DataFrame:
"""search_queue_for_jobid
this jobs searches the job queue for a certain job id.
DUMMY FUNCTION!
Parameters
----------
job_id : int
id of the job
Raises
-------
NotImplemented
Needs to be implemented in subclasses
"""
if self.verbose:
print("Searching job ID: ", job_id)
warnings.warn("Queue search was called, but no queue present!")
return []


SINSCIENCIA
home
projects
about
contact
南波的 contact
Feel free to share your thoughts with me.
[back to home]


Change tracker
The change tracker application
CT
answers some questions about how some software under test
SUT
has evolved over a span of time. The start and end of that span of time are described by two sets of commit specifications. A commit specification, or
cspec
, identifies a source control repo and commit ID from that repo. A
cspec set
, or set of cspecs, describes a moment in the source control history of an SUT spanning multiple source control repositories. Cspec sets are described by JSON, or by a URL to a JSON file on a web server, or by a hybrid of JSON containing URLs pointing at further JSON (potentially going many levels before fully resolving). See the
CT doc
for examples. cspec_set1: the
starting
point
cspec_set2: the
ending
point
output_style: how much output should come back?
terse
normal
expanded
op: the operation


Class FaceAnnotation (v2.2.2)
A face annotation object contains the results of face detection.
Generated from protobuf message google.cloud.vision.v1.FaceAnnotation
Methods
__construct
Constructor.
| Name | Description |
| data |
array
Optional. Data for populating the Message object. |
| ↳ bounding_poly |
Google\Cloud\Vision\V1\BoundingPoly
The bounding polygon around the face. The coordinates of the bounding box are in the original image's scale. The bounding box is computed to "frame" the face in accordance with human expectations. It is based on the landmarker results. Note that one or more x and/or y coordinates may not be generated in the |
| ↳ fd_bounding_poly |
Google\Cloud\Vision\V1\BoundingPoly
The |
| ↳ landmarks |
array<Google\Cloud\Vision\V1\FaceAnnotation\Landmark>
Detected face landmarks. |
| ↳ roll_angle |
float
Roll angle, which indicates the amount of clockwise/anti-clockwise rotation of the face relative to the image vertical about the axis perpendicular to the face. Range [-180,180]. |
| ↳ pan_angle |
float
Yaw angle, which indicates the leftward/rightward angle that the face is pointing relative to the vertical plane perpendicular to the image. Range [-180,180]. |
| ↳ tilt_angle |
float
Pitch angle, which indicates the upwards/downwards angle that the face is pointing relative to the image's horizontal plane. Range [-180,180]. |
| ↳ detection_confidence |
float
Detection confidence. Range [0, 1]. |
| ↳ landmarking_confidence |
float
Face landmarking confidence. Range [0, 1]. |
| ↳ joy_likelihood |
int
Joy likelihood. |
| ↳ sorrow_likelihood |
int
Sorrow likelihood. |
| ↳ anger_likelihood |
int
Anger likelihood. |
| ↳ surprise_likelihood |
int
Surprise likelihood. |
| ↳ under_exposed_likelihood |
int
Under-exposed likelihood. |
| ↳ blurred_likelihood |
int
Blurred likelihood. |
| ↳ headwear_likelihood |
int
Headwear likelihood. |
getBoundingPoly
The bounding polygon around the face. The coordinates of the bounding box are in the original image's scale.
The bounding box is computed to "frame" the face in accordance with human
expectations. It is based on the landmarker results.
Note that one or more x and/or y coordinates may not be generated in the
BoundingPoly
(the polygon will be unbounded) if only a partial face
appears in the image to be annotated.
Generated from protobuf field .google.cloud.vision.v1.BoundingPoly bounding_poly = 1;
| Type | Description |
| Google\Cloud\Vision\V1\BoundingPoly|null |
hasBoundingPoly
clearBoundingPoly
setBoundingPoly
The bounding polygon around the face. The coordinates of the bounding box are in the original image's scale.
The bounding box is computed to "frame" the face in accordance with human
expectations. It is based on the landmarker results.
Note that one or more x and/or y coordinates may not be generated in the
BoundingPoly
(the polygon will be unbounded) if only a partial face
appears in the image to be annotated.
Generated from protobuf field .google.cloud.vision.v1.BoundingPoly bounding_poly = 1;
| Name | Description |
| var |
Google\Cloud\Vision\V1\BoundingPoly
|
| Type | Description |
| $this |
getFdBoundingPoly
The fd_bounding_poly
bounding polygon is tighter than the
boundingPoly
, and encloses only the skin part of the face. Typically, it
is used to eliminate the face from any image analysis that detects the
"amount of skin" visible in an image. It is not based on the
landmarker results, only on the initial face detection, hence
the fd
(face detection) prefix.
Generated from protobuf field .google.cloud.vision.v1.BoundingPoly fd_bounding_poly = 2;
| Type | Description |
| Google\Cloud\Vision\V1\BoundingPoly|null |
hasFdBoundingPoly
clearFdBoundingPoly
setFdBoundingPoly
The fd_bounding_poly
bounding polygon is tighter than the
boundingPoly
, and encloses only the skin part of the face. Typically, it
is used to eliminate the face from any image analysis that detects the
"amount of skin" visible in an image. It is not based on the
landmarker results, only on the initial face detection, hence
the fd
(face detection) prefix.
Generated from protobuf field .google.cloud.vision.v1.BoundingPoly fd_bounding_poly = 2;
| Name | Description |
| var |
Google\Cloud\Vision\V1\BoundingPoly
|
| Type | Description |
| $this |
getLandmarks
Detected face landmarks.
Generated from protobuf field repeated .google.cloud.vision.v1.FaceAnnotation.Landmark landmarks = 3;
| Type | Description |
| Google\Protobuf\Internal\RepeatedField |
setLandmarks
Detected face landmarks.
Generated from protobuf field repeated .google.cloud.vision.v1.FaceAnnotation.Landmark landmarks = 3;
| Name | Description |
| var |
array<Google\Cloud\Vision\V1\FaceAnnotation\Landmark>
|
| Type | Description |
| $this |
getRollAngle
Roll angle, which indicates the amount of clockwise/anti-clockwise rotation of the face relative to the image vertical about the axis perpendicular to the face. Range [-180,180].
Generated from protobuf field float roll_angle = 4;
| Type | Description |
| float |
setRollAngle
Roll angle, which indicates the amount of clockwise/anti-clockwise rotation of the face relative to the image vertical about the axis perpendicular to the face. Range [-180,180].
Generated from protobuf field float roll_angle = 4;
| Name | Description |
| var |
float
|
| Type | Description |
| $this |
getPanAngle
Yaw angle, which indicates the leftward/rightward angle that the face is pointing relative to the vertical plane perpendicular to the image. Range [-180,180].
Generated from protobuf field float pan_angle = 5;
| Type | Description |
| float |
setPanAngle
Yaw angle, which indicates the leftward/rightward angle that the face is pointing relative to the vertical plane perpendicular to the image. Range [-180,180].
Generated from protobuf field float pan_angle = 5;
| Name | Description |
| var |
float
|
| Type | Description |
| $this |
getTiltAngle
Pitch angle, which indicates the upwards/downwards angle that the face is pointing relative to the image's horizontal plane. Range [-180,180].
Generated from protobuf field float tilt_angle = 6;
| Type | Description |
| float |
setTiltAngle
Pitch angle, which indicates the upwards/downwards angle that the face is pointing relative to the image's horizontal plane. Range [-180,180].
Generated from protobuf field float tilt_angle = 6;
| Name | Description |
| var |
float
|
| Type | Description |
| $this |
getDetectionConfidence
Detection confidence. Range [0, 1].
Generated from protobuf field float detection_confidence = 7;
| Type | Description |
| float |
setDetectionConfidence
Detection confidence. Range [0, 1].
Generated from protobuf field float detection_confidence = 7;
| Name | Description |
| var |
float
|
| Type | Description |
| $this |
getLandmarkingConfidence
Face landmarking confidence. Range [0, 1].
Generated from protobuf field float landmarking_confidence = 8;
| Type | Description |
| float |
setLandmarkingConfidence
Face landmarking confidence. Range [0, 1].
Generated from protobuf field float landmarking_confidence = 8;
| Name | Description |
| var |
float
|
| Type | Description |
| $this |
getJoyLikelihood
Joy likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood joy_likelihood = 9;
| Type | Description |
| int |
setJoyLikelihood
Joy likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood joy_likelihood = 9;
| Name | Description |
| var |
int
|
| Type | Description |
| $this |
getSorrowLikelihood
Sorrow likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood sorrow_likelihood = 10;
| Type | Description |
| int |
setSorrowLikelihood
Sorrow likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood sorrow_likelihood = 10;
| Name | Description |
| var |
int
|
| Type | Description |
| $this |
getAngerLikelihood
Anger likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood anger_likelihood = 11;
| Type | Description |
| int |
setAngerLikelihood
Anger likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood anger_likelihood = 11;
| Name | Description |
| var |
int
|
| Type | Description |
| $this |
getSurpriseLikelihood
Surprise likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood surprise_likelihood = 12;
| Type | Description |
| int |
setSurpriseLikelihood
Surprise likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood surprise_likelihood = 12;
| Name | Description |
| var |
int
|
| Type | Description |
| $this |
getUnderExposedLikelihood
Under-exposed likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood under_exposed_likelihood = 13;
| Type | Description |
| int |
setUnderExposedLikelihood
Under-exposed likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood under_exposed_likelihood = 13;
| Name | Description |
| var |
int
|
| Type | Description |
| $this |
getBlurredLikelihood
Blurred likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood blurred_likelihood = 14;
| Type | Description |
| int |
setBlurredLikelihood
Blurred likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood blurred_likelihood = 14;
| Name | Description |
| var |
int
|
| Type | Description |
| $this |
getHeadwearLikelihood
Headwear likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood headwear_likelihood = 15;
| Type | Description |
| int |
setHeadwearLikelihood
Headwear likelihood.
Generated from protobuf field .google.cloud.vision.v1.Likelihood headwear_likelihood = 15;
| Name | Description |
| var |
int
|
| Type | Description |
| $this |


Reports "magic characters", which are character literals used without being named by a constant declaration.
Magic characters can result in code whose intention is unclear, and may result in errors if a magic
character is changed in one code location but not another. Such use can complicate internationalization
efforts.


This is a string of text. It will be the string we use for our examples.
This is the start of a line. This is NOT.
This NOT is not at the end of a line
That string ends here.
-----
Characters that are special will be colored like so
Matches will normally be colored like this
Escaped Characters will be colored like this
-----
RegEXP:
^This
Matches:
This is a string of text. It will be the string we use for our examples.
This is the start of a line. This is NOT.
This NOT is not at the end of a line
That string ends here.
Because:
The ^ character means "Start of a line".
This means that only the This at the start of a line matches
-----
RegEXP:
NOT\.$
Matches:
This is a string of text. It will be the string we use for our examples.
This is the start of a line. This is NOT.
This NOT is not at the end of a line
That string ends here.
Because:
The $ character means "End of line".
Normally . means "Any character", but...
We used \ to escape it, meaning we literally want a "."
What if we literally want a \ ?
Just do "\\"
-----
RegEXP:
Th(is|at)
Matches:
This is a string of text. It will be the string we use for our examples.
This is the start of a line. This is NOT.
This NOT is not at the end of a line
That string ends here.
Because:
Things are grouped together by ()!
So the above means This and/or
That are matches!
Note that | is only special inside something like () and means "Or"
| BBCode | Result |
| [b]Bold Text[/b] | Bold Text |
| [i]Italic Text[/i] | Italic Text |
| [u]Underlined Text[/u] | Underlined Text |
| [s]Struckthrough Text[/s] | |
| This is [sup]Superscript[/sup] | This is Superscript |
| This is [sub]Subscript[/sup] | This is Subscript |
| This is a [url=http://example.com]Named Link[/url] | This is a Named Link |
| This is a regular link: [url]http://example.com[/url] | This is a regular link: http://example.com |
| This text is [color=orange]Colored[/color] | This text is Colored |
| [code]This is a codeblock[/code] | This is a codeblock |
| [char=Character Name]Character Link[/char] | *Special. Will attempt to pull up character's page when clicked. |
| [char]Character Name[/char] | *Special. Will attempt to pull up character's page when clicked. |
| [quote=Author says]Authored Quote[/quote] | Author says Authored Quote |
| [quote]Unauthored Quote[/quote] | Unauthored Quote |
| [prisma]Prismatic/Rainbow Text[/prisma] | Prismatic/Rainbow Text |
| [spoiler]Spoiered Text[/spoiler] | Spoilered Text |
| [highlight=yellow]Highlighted Text[/highlight] | Highlighted Text |


CEDR
Home
Forum
Contribute
Medical Clinics
Medical Clinics Circle
Multiple Residences Assisted Living (Low Rise)
Multiple Residences Assisted Living (Low Rise) Circle
Convalescent Hospital
Convalescent Hospital Circle
Group Care Home
Group Care Home Circle
Dental Office/Clinic
Dental Office/Clinic Circle
Hospital
Hospital Circle


<!DOCTYPE html>-Declaration to tell a browser which version of HTML we are using, it should be the first thing in a document.
-Creates an HTML document
-Sets off the title and other information that isn’t displayed on the web page itself
-Sets off the visible portion of the document
- Is the masthead at the top of your website

 -Creates the largest headline and are called headings. The headings are the section titles or subtitles within the structure of a web page.

 - Same like

 except it creates the smallest headline

 - Creates new paragraph
 - Creates bold text
- Emphasizes a word (with bold)
 - Emphasizes a word (with italic)

- Indents text from both sides
- Used to contain the major navigational blocks on the site such as primary site navigation

 -Creates a numbered list

 - Creates a bulleted list

 - Precedes each list item, and adds a number or symbol depending upon the type of list selected
 or

 -Appears at the bottom of every page , or paragraph , but the most common is to be at the bottom of the page
- Creates a hyperlink
- Creates mailto link
- Creates an image/link
 - To add an image you need "img", to tell the browser where you can find the image which will be a relative URL pointing to an iamge on your own site you need "src" and "alt"-describes the image


Great, jserv-quiz is working!
What's next:
Visit
login.serv11
with browser to check is the service listener working. (You should see some json data returned.)


If you are in a system with high privileges (SYSTEM user on Windowssystems), you will probably might want to take a look over the services runningin that computer and check what users are running those services.
There is always the possibility to inject a malicious code in oneof those processes and, with that retrieve privileges from the process owner,such as a domain administrator.
Tools: Process Injector (http://www.tarasco.org/security/Process_Injector/)


[name]
A loader for loading an .obj resource.
Example
// instantiate the loader
var loader = new THREE.OBJLoader2();
// function called on successful load
var intergrateIntoScene = function ( object ) {
scene.add( object );
};
// load a resource from provided URL
loader.load( 'obj/female02/female02.obj', intergrateIntoScene );
[example:webgl_loader_obj2]
Constructor
[name]( [page:LoadingManager manager] )
[page:LoadingManager manager] — The [page:LoadingManager loadingManager] for the loader to use. Default is [page:LoadingManager THREE.DefaultLoadingManager].
Use [name] to load OBJ data from files or to parse OBJ data from arraybuffer or text.
Properties
Methods
[method:null load]( [page:String url], [page:Function onLoad], [page:Function onProgress], [page:Function onError], [page:Boolean useArrayBuffer] )
[page:String url] — URL of the file to load
[page:Function onLoad] — Called after loading was successfully completed. The argument will be the loaded [page:Object3D].
[page:Function onProgress] — Called to report progress of loading. The argument will be the XmlHttpRequest instance, that contain .[page:Integer total] and .[page:Integer loaded] bytes.
[page:Function onError] Called after an error occurred during loading.
[page:boolean useArrayBuffer] — Set this to false to force string based parsing
Use this convenient method to load an OBJ file at the given URL. Per default the fileLoader uses an arraybuffer
[method:Object3D parse]( [page:ArrayBuffer arrayBuffer] )
[page:ArrayBuffer arrayBuffer] — OBJ data as Uint8Array
Default parse function: Parses OBJ file content stored in arrayBuffer and returns the [page:Object3D sceneGraphBaseNode].
[method:Object3D parseText]( [page:String test] )
[page:String text] — OBJ data as string
Legacy parse function: Parses OBJ file content stored in string and returns the [page:Object3D sceneGraphBaseNode].
[method:null setMaterials] ( Array of [page:Material materials] )
Array of [page:Material materials] — Array of [page:Material Materials] from MTLLoader
Set materials loaded by MTLLoader or any other supplier of an Array of [page:Material Materials].
[method:null setPath] ( [page:String path] )
[page:String path] — The basePath
Base path to use.
[method:null setSceneGraphBaseNode] ( [page:Object3D sceneGraphBaseNode] )
[page:Object3D sceneGraphBaseNode] — Scenegraph object where meshes will be attached
Set the node where the loaded objects will be attached.
[method:null setDebug]( [page:Boolean parserDebug], [page:Boolean meshCreatorDebug] )
[page:Boolean parserDebug] — Internal Parser will produce debug output
[page:Boolean meshCreatorDebug] — Internal MeshCreator will produce debug output
Allows to set debug mode for the parser and the meshCreator.
Source
[link:https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/OBJLoader2.js examples/js/loaders/OBJLoader2.js]


Hello from Head Tag Helper Component
Hello from Body Tag Helper Component Processed TagHelperComponent added from controller.Processed TagHelperComponent added from view.


Objective
In this challenge, we practice calculating the slope of regression lines.
Task
There are $2$ series of data involving index numbers: $P$ for price index and $S$ for the commodity stock.
The mean and standard deviation of $P$ are $100$ and $8$, respectively.
The mean and standard deviation of $S$ are $103$ and $4$, respectively.
The $R^2$ correlation coefficient between the two series is $0.4$.
With this data, obtain the slope of the regression line of $P$ on $S$, correct to a scale of $2$ decimal places.
Output Format
Your answer should be a single floating point/decimal number, correct to a scale of $2$ decimal places. You can submit solutions in either of the $2$ following ways:
Your answer should follow the format below, and must not contain any extra white space or newline characters:
1.14


Implements interfaces:
Located in /Rediska/KeyDistributor/ConsistentHashing.php (line 12)
(non-PHPdoc)
Get a list of connections by key name
Documentation generated on Fri, 27 Aug 2010 13:55:31 +0400 by phpDocumentor 1.4.3


Default implementation of $animate that doesn't perform any animations, instead just synchronously performs DOM updates and resolves the returned runner promise.
In order to enable animations the ngAnimate
module has to be loaded.
To see the functional implementation check out src/ngAnimate/animate.js
.
register(name, factory);
Registers a new injectable animation factory function. The factory function produces the animation object which contains callback functions for each event that is expected to be animated.
eventFn
: function(element, ... , doneFunction, options)
The element to animate, the doneFunction
and the options fed into the animation. Depending
on the type of animation additional arguments will be injected into the animation function. The
list below explains the function signatures for the different animation methods:
setClass: function(element, addedClasses, removedClasses, doneFunction, options)
animate: function(element, fromStyles, toStyles, doneFunction, options)
Make sure to trigger the doneFunction
once the animation is fully complete.
return {
//enter, leave, move signature
eventFn : function(element, done, options) {
//code to run the animation
//once complete, then run done()
return function endFunction(wasCancelled) {
//code to cancel the animation
}
}
}
| Param | Type | Details |
|---|---|---|
| name | string |
The name of the animation (this is what the class-based CSS value will be compared to). |
| factory | Function |
The factory function that will be executed to return the animation object. |
classNameFilter([expression]);
Sets and/or returns the CSS class regular expression that is checked when performing
an animation. Upon bootstrap the classNameFilter value is not set at all and will
therefore enable $animate to attempt to perform an animation on any element that is triggered.
When setting the classNameFilter
value, animations will only be performed on elements
that successfully match the filter expression. This in turn can boost performance
for low-powered devices as well as applications containing a lot of structural operations.
| Param | Type | Details |
|---|---|---|
|
expression
(optional)
|
RegExp |
The className expression which will be checked against all animations |
| RegExp | The current CSS className expression value. If null then there is no expression value |


The number of aliquots for the duplicate sampleID/location pair(s) will be combined. The metadata in the first row of data -- shown in green-- will be saved (with a sum of the totalAliquots), and the other rows (in red) will be deleted.
If you want to keep them as separate samples, change the sample label for one (so it will have a new sampleID generated) and re-upload.
If the extra row(s) is a mistake, delete the extra row(s) and re-upload.
| {{ key }} | samples |
|
|---|


{{ confession.date }}
{{ confession.message }}
GET /bucket/id
start the auth process for getting private key id
GET /private
after successful auth, send the private bucket keyGET /public/id
send the user public key id
GET /ledger
return all the valid public keys in the ledgerPOST /ledger/add
add a public key / signature pair to the ledgerPOST /confess
confess a message, signed with a ring signaturecode
by the pkt boyes


--- layout: post authors: ["Raniere Silva"] title: "Math Authoring Gap and MathUI" date: 2014-04-23 time: "08:00:00" tags: ["Tooling"] ---
In a previous post Greg Wilson wrote about the writing gap
between people who value the "I can see what I'm doing" of Microsoft Word and those who care more about the "I can tell what I did" of version control.For STEM (science, technology, engineering and math) folks there is also the gap related to math expressions (you can use LaTeX to deal with math expressions but for beginners who spent around 20 years using Microsoft Word moving to LaTeX can be challenging).
Do you know that some people are working to solve the gap with math expressions?
Some of this people will be at an international workshop about mathematical user interfaces (submission to works are still open) in July to discuss how users interact with mathematics represented on a computer and related topics.
Folks from Mozilla MathML Project have also worked to solve this gap (like enabling real time preview of LaTeX equations in web browsers) and invite you to take a look at the work they will submit soon which covers nice examples of the new web technologies that can be used to share knowledge.


NHS.UK
Transforming Digital Health
We are designing a service that better connects people to the health information and services they need, when they need them. Our tools will help people care for themselves and relieve pressure on frontline services.
How are we doing this
Speak with our users
We’ve spoken to over 700 patients, carers and front-line staff. And continue to do so.
- 677
- Patients and carers interviewed
- 55
- Clinicians and front-line staff
Understand their needs
By understanding user needs we can identify problems and find solutions. This is the basis of everything we do.
Learn and improve
Our work starts small and evolves based on users’ feedback. We make things open. We continue to test and iterate. We share, learn and adapt.
- 120
- hours of lab and pop-up research
- data from over 800K
- Beta page sessions
Transforming Digital Content
Relevant, practical and action-focused content and smart sign-posting to services.
Symptoms and conditions
-
- Blisters
- Common cold
- Constipation
- Dehydration
- Diarrhoea
- Earache and pain
- Earwax build-up
- Flu
- Fungal nail infection
- Hand, foot and mouth disease
- Hay fever
- Head lice
- Heat exhaustion and heat stroke
- Heat rash
- Indigestion
- Insect bites and stings
- Mouth ulcers
- Nosebleed
- Piles
- Sore throat
- Sprains and strains
- Stye
- Warts
-
- Bacterial vaginosis
- Broken or bruised ribs
- Carpal tunnel syndrome
- Cellulitis
- Conjunctivitis
- Cough
- Ear infections
- Frozen shoulder
- Glandular fever
- Hiatus hernia
- Hives
- Impetigo
- Insomnia
- Iron deficiency anaemia
- Laryngitis
- Scarlet fever
- Shingles
- Sinusitis (sinus infection)
- Slipped disc
- Tendonitis
- Thrush
- Tonsillitis
- Urinary tract infections (UTIs)
- Vaginal discharge
Medicines
-
- Amoxicillin
- Atorvastatin
- Buscopan (hyoscine butylbromide)
- Citalopram
- Erythromycin
- Flucloxacillin
- Fluoxetine (Prozac)
- Fybogel
- Gabapentin
- Gliclazide
- Ibuprofen for adults (including Nurofen)
- Ibuprofen for children
- Isotretinoin
- Isotretinoin capsules
- Isotretinoin gel (Isotrex)
- Lactulose
- Lansoprazole
- Metformin
- Morphine
- Naproxen
- Nitrofurantoin
- Omeprazole
- Paracetamol for adults
- Paracetamol for children (including Calpol)
- Pravastatin
- Prednisolone
- Pregabalin
- Salbutamol inhaler
- Senna (Senokot)
- Sertraline
- Simvastatin
- Trimethoprim
- Venlafaxine
- Zopiclone
Transforming Services & Transactions
User centred services and prototypes we are testing in public.
I need to know where to get help
Connecting people with the services they need, when they need them.
I need to manage a long-term condition
Help patients understand and manage long term conditions
I need to access and download my GP record
Access, view and download your gp record online.
I need to manage my health record
Track and manage your healthcare online with Local Personal Health Records.


--- layout: post title: True Confessions, Public Shaming, and Test-Driven Development categories: - Bonus! - continuous improvement - Developer Deep Dive - developer productivity - test-driven development - unit testing status: publish type: post published: true meta: _edit_last: '4' _aioseop_keywords: test-driven development, debugging, unit tests _aioseop_description: Save time by writing unit tests before fixing bugs instead of after; be a more efficient developer, improve productivity, use unit tests to diagnose and debug. _aioseop_title: True Confessions, Public Shaming, and Test-Driven Development dsq_thread_id: '846789467' ---
Okay, I admit it. Sometimes I write unit tests second instead of first. I also bite my nails and rest my elbows on the dinner table. But when I've got a bug to fix, and I've already found the offending line, I can hardly resist the urge to just... just... change it. I'll follow up with unit tests afterwards, promise.
  Learn from my example. Test-second is so much less efficient than test-first. Consider the following workflow:
I humble myself before you. How much time am I wasting there? It's embarrassing.
There's also a subtle point in step 1. What if I could use unit tests instead of the debugger to find the issue? That will be faster, too.
We can do better:
Perhaps you can relate. Perhaps you even bite your nails, too. I won't judge. Flog me or join me, the comments are open: Confess your bad habits (um, your unit-testing bad habits, please), and commit yourself to improvement. I challenge you to improve your efficiency and write your unit tests first, even—especially—for the little bug fixes.


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface IHideable
Any row created by DesignGridLayout
implements this minimal
interface. Through this interface you can hide or show the row.
| Method Summary | |
|---|---|
void |
hide()
Hides the whole row, ie all its components, forcing its visible height to 0. |
void |
show()
Restores the whole row to a visible state, ie all its components' visibilities are restored to their original state prior to calling hide() . |
| Method Detail |
|---|
void hide()
IRow
that has been hidden can be shown again by calling show()
.
Note that you can call hide()
several times, but you must then call
show()
the same number of times to make the row visible again.
When a row containing a spanned component (see ISpannableGridRow.spanRow()
)
is hidden, resize behavior is not well handled unless all rows containing the same
spanning component are also hidden altogether (which is the common use case).
void show()
hide()
.
Note that calling show()
on an already visible row has no effect at all.
Also, if hide()
has been called several times, then show()
will
have to be called the same number of times for the row to become visible again.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


RAVENOUS RATING: 7.5 / 10 --> Very Good Movie
For more reviews and movie trivia, visit http://www.joblo.com/
So you've been waiting for ages for a decent cannibal movie to come along, eh? Well, wait no further, this one's got all the blood and horror that you could sink your teeth into. Robert Carlyle of THE FULL MONTY and TRAINSPOTTING (9/10), and Guy Pearce from L.A. CONFIDENTIAL (6.5/10) (He was the square cop) star in this entertaining plate of human hors d'oeuvres. Bon appetit!
PLOT: A cowardly soldier is sent to a small village of eight in response to his weak character. One night, a strange man falls among them with tales of starving folks in the mountains eating one another for survival. It is only when the villagers actually go into the hills to investigate, that they find more than what they bargained for.
CRITIQUE: An extremely original tasty feast of suspense, disgust and human delicacies. If you've been waiting for an original movie to come to dinner this year, wait no longer, because this film's got a solid premise, great actors, an entertaining and gory story, and all the trimmings of a cannibal movie...with laughs! This movie starts off slooooow, but once it gets going about thirty minutes in, it doesn't let up until the last bone is licked dry. It's even got an eerie DELIVERANCE-type, addictive score that takes the edge off the serious tip of the film, without ever losing focus of the drive, interest and human drama engaged in this film about men who eat one another!!! Overall, this movie is played pretty seriously, but you can't help but find yourself laughing at some of the extraordinary situations presented to some of these men. Now that's finger-lickin'-good!
This movie is not for those who are faint of heart. In fact, I noticed a few people shuffling out during my screening.  You might never look at a piece of steak the same way again, but that's beside the point. All in all, this movie does take its time to get started, slow pace and all, but once the eating begins, it's all about sitting back, belching enjoyably, and trying to take your eyes off the screen. Look mom, there's an arm! And there's a leg! Fun for the whole family. Well, maybe the Addams Family.
Little Known Facts about this film and its stars: When this movie's first director, Milcho Manchevski was fired from the set by Fox 2000 (as reported in Premiere magazine, May 1998), star Robert Carlyle is reported to have personally requested that director Antonia Bird be brought on to the project. A few months later in May 1998, shooting resumed with Bird at the helm. Carlyle had starred in two earlier films directed by Bird called PRIEST and FACE. MORE COMING SOON to JoBlo's Movie Emporium
Review Date: March 17, 1999 Director: Antonia Bird Writer: Ted Griffin Producers: Adam Fields and David Heyman Actors: Guy Pearce as Capt. John Boyd, Robert Carlyle as Colqhoun/ Ives, Jeffrey Jones as Hart Genre: Suspense/Horror Year of Release: 1999
Visit JoBlo's Movie Emporium http://www.joblo.com
(c) 1999 Berge Garabedian
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Building Jaqy¶
Build Requirement¶
On Ubuntu 16.04 LTS, the build environment can be simply setup with the following command.
sudo apt-get install -y git maven openjdk-8-jdk
Making the Build¶
git clone https://github.com/Teradata/jaqy.git
cd jaqy
mvn clean package -Dmaven.test.skip=true
There are two jars built.
dist/jaqy-1.0.jar
jaqy-avro/target/jaqy-avro-1.0.jar
jaqy-1.0.jar
is the standalone package. jaqy-avro-1.0.jar
is a separate
addon for AVRO import / export format.
Testing Environment¶
For the unit tests, use Vagrant in the jaqy/ directory to start up a testing VM. It has PostgreSQL and MySQL setup, matching the Travis CI environment, with the appropriate port forwarding.
Once the testing environment is set up, just run the following maven command to execute the unit tests.
mvn clean test


Assert custom objects are equal in Python unit test
Problem
You are creating a Python unit test, using unittest
. Your test needs to assert that two custom objects are equal. For example, you might have following User
class defined:
class User:
id: int
name: str
def __init__(self, id, name):
self.id = id
self.name = name
Trying to compare two User
objects for equality, using assertEqual
fails:
>>> import unittest
>>> test_case = unittest.TestCase()
>>> expected = User(1, 'John')
>>> actual = User(1, 'John')
test_case.assertEqual(expected, actual)
Traceback (most recent call last):
...
AssertionError: <__main__.User object at 0x000002BC202AD888> != <__main__.User object at 0x000002BC2000B348>
>>>
Solution
I will present you 3 different solutions to the problem.
- Implement equality interface
- Use
addTypeEqualityFunc
- Use matcher
Each solution is applicable to different situations.
Implement equality interface
Because unittest
will try to perform Python's equality operator on your User
objects, if the User
class implements the equality operator interface, the equality assertion will work. The equality operator interface requires that the class implements a __eq__
method.
class User:
id: int
name: str
def __init__(self, id, name):
self.id = id
self.name = name
def __eq__(self, other):
return self.id == other.id and \
self.name == other.name
Now it is ok to use assertEqual
:
>>> import unittest
>>> test_case = unittest.TestCase()
>>> expected = User(1, 'John')
>>> actual = User(1, 'John')
>>> test_case.assertEqual(expected, actual)
assertNotEqual
also works fine:
>>> import unittest
>>> test_case = unittest.TestCase()
>>> expected = User(1, 'John')
>>> actual = User(1, 'Jane')
>>> test_case.assertNotEqual(expected, actual)
Using this approach solves our problem, but it has some limitations:
- We need to modify the User class source
- There is no way to have different equality assertions for different situations. For example, we might have situations where equality doesn't include the
id
attribute.
Use addTypeEqualityFunc
method
Unittest TestCase
class provides convenient way to override default Python equality operator by using the addTypeEqualityFunc
:
>>> import unittest
>>> test_case = unittest.TestCase()
>>> test_case.addTypeEqualityFunc(User, lambda first, second, msg: first.name == second.name )
>>> expected = User(1, 'John')
actual = User(2, 'John')
>>> test_case.assertEqual(expected, actual)
The limitations of this approach:
- We have to use the same comparison function for a given type in all tests. For example, we might have tests where equality check requires
id
fields to be equal and other tests whereid
fields should not be compared. - Both parameters to
assertEqual
have to be objects of the same type.
Use matcher
Another approach would be to create custom matcher object.
class UserMatcher:
expected: User
def __init__(self, expected):
self.expected = expected
def __eq__(self, other):
return self.expected.id == other.id and \
self.expected.name == other.name
Custom matcher could be any class that implements the equality operator. In other words, having the __eq__
method implemented.
>>> test_case = unittest.TestCase()
>>> expected = User(1, 'John')
>>> actual = User(1, 'John')
>>> test_case.assertEqual(UserMatcher(expected), actual)
Although this is the most flexible approach, it is more verbose.
Discussion
In case of equality assertion fails, the output is not very useful:
>>> test_case.assertEqual(UserMatcher(expected), actual)
Traceback (most recent call last):
...
AssertionError: <__main__.UserMatcher object at 0x000002BC20309BC8> != <__main__.User object at 0x000002BC20314388>
You could improve this by implementing a __repr__
method of your custom class:
class User:
id: int
name: str
def __init__(self, id, name):
self.id = id
self.name = name
def __repr__(self):
return f"User(id={repr(self.id)}, name={repr(self.name)})"
In case you are using matcher, the matcher should also implement the __repr__
method:
class UserMatcher:
expected: User
def __init__(self, expected):
self.expected = expected
def __repr__(self):
return repr(self.expected)
def __eq__(self, other):
return self.expected.id == other.id and \
self.expected.name == other.name
Now we will get much more readable and meaningful assertion failure message:
>>> test_case.assertEqual(UserMatcher(expected), actual)
...
AssertionError: User(id=1, name='John') != User(id=2, name='John')


vitunes
Play your tunes and create/manage playlists with a vi-like
interface
[description]
[features]
[documentation]
[download]
Description
vitunes is a curses-based playlist manager and media player
for *nix operating systems with vim-like
keybinds. It's primary goal is to serve as an index of "tagged" multimedia
files and provide a quick, easy interface for browsing & searching your
files, and creating playlists.
It is similar in function to a certain graphical program used by
many on other operating systems. vitunes works by extracting the
meta-information from media files and storing them in a central database,
forming a "Library" from which you can play your music and build playlists.
vitunes uses mplayer as a
back-end for actually playing all media.
NOTE: vitunes is still under heavy development. None-the-less,
it's reached a point where it's usable for others who may care to try it.
NOTE: vitunes is developed on
OpenBSD and only OpenBSD. As such, there
are (probably) many OpenBSD-isms in the code that would prevent it from
building and/or running on other *nix-like OS's. Cope.
Features
vitunes...
- never moves / modifies your media files in any way
- never creates / modifies / deletes any files outside of
~/.vitunes
- uses mplayer to play media,
so it can play anything mplayer can
- allows creating / managing playlists in a fast, vi-like
fashion
- allows searching your library and playlists based on meta-information
from the media files in the database
vitunes can extract meta-information from the following files:
vitunes is NOT...
- a media meta-information editor (you can't edit ID3 tags, vorbis
comments, etc., from within vitunes). Use other tools
for that.
- a media-file organizer. it leaves your files wherever you have
them, untouched. It requires only read access to the files to
extract meta-information and play the file through mplayer.
- a full-featured, fancy-shmancy media player. It's a playlist
organizer at best, that can play music.
Documentation
1. Quick Overview ← READ THIS FIRST!
vitunes works by first building a meta-information database, which
is a database containing all media files and their meta information
(artist, album, title, track number, year, genre, and playtime). This
database forms the "LIBRARY" which is all of the media files
vitunes is capable of playing and working with.
- ∴ IF a media file is NOT in the library,
THEN that file will NOT appear within vitunes!
This database is built using "vitunes -e createdb ...", and as
you add/remove/modify any of your media files, you can update the
database using "vitunes -e updatedb ...". See
§ 3. Building & Updating the Library
for details.
After the library has been created, vitunes can be run normally
(simply "vitunes"), and you can browse your library, search it,
create & manage playlists, etc.
The database vitunes builds and uses is stored in the file
~/.vitunes/vitunes.db. Additionally, the playlists it
creates/manages are all stored in the directory
~/.vitunes/playlists/. These are created when the library
database is first created.
NOTE: It's important to remember that when you build/update your
library, only files with meta information (ID3v* tags, vorbis comments,
or MP4/AAC comments) are recorded. Any other media files are simply
ignored.
- ∴ IF you want a media file (song/video) in the library,
THEN that file must have some meta information.
2. Building & Installing
vitunes requires the following libraries to be installed to build:
Additionally, to have vitunes actually play music,
mplayer must be installed
(OpenBSD package name: mplayer).
After these are installed, a simple
# make
# make install
should build and install vitunes.
3. Building & Updating the Library
Before vitunes will run, you must build the meta-information
database containing all of the meta-information of the media files you want
to be able to play in vitunes. To do this, do the following:
# vitunes -e createdb /path/to/music1 [ /path/to/music2 ... ]
This will recursively search all the paths provided and for each file
encountered, vitunes will attempt to extract any meta-information.
If such information is found, the file's information is added to the database
~/.vitunes/vitunes.db.
Additionally, whenever you add/remove/update your media files, you can run
# vitunes -e updatedb [ /path/to/moremusic1 ... ]
to have vitunes update its database (re-scan all files currently
in the database to see if the meta information has changed and remove any
entries for files that have been removed), and even add new directories
(searched recursively) to the library.
IMPORTANT NOTE: only files for which some meta information is
found are added to the library. All others are skipped.
You can parse the output of the createdb and updatedb
commands easily to see which files were added or not.
For a list of all e-commands vitunes has, run
# vitunes -e help
For more information on a specific e-command and its usage, run
# vitunes -e help command
4. Running vitunes Normally
Once you have created the database above, you can run vitunes
normally by simply
# vitunes
This will launch a curses-based interface similar to what you see in the
screenshot on this page.
What follows next are descriptions of the user interface, the
key-bindings, and commands available in "command-mode" for altering the
state of vitunes.
4.1. The User Interface
The user interface is divided into 4 sections, which are in different colors
in the screenshot below:
- Play Window The top row (colored
yellow
above)
This window provides information on the currently playing file, if any.
If no file is currently playing, the window is empty except for a
shameless shout-out to vitunes in the right.
If a file is playing, then the following information is displayed:
- A play-mode character, which is one of:
- "-" for linear mode (files in the playlist
are played in-order until the end of the playlist is
reached).
- "O" for loop (like linear, only once the
end of the playlist is reached, playing resumes with the
first file in the playlist).
- "?" for random (where files from the
playlist are chosen at random to be played).
The default is loop.
- A pause-indicator, which is the string
"[PAUSED]" if playback is currently paused, and
empty otherwise.
- The time into the current file which is in the format
"hh:mm:ss".
- The position into the current file as a percent, if
the total playlength of the file is available, -1 otherwise.
- The Title of the current file if available, otherwise
as much of the filename as will fit in the window.
- Command Window The bottom row (colored
cyan
above)
This window serves two purposes.
When not in command mode it provides the following information
about the vitunes interface.
- The currently focused window (one of either
"[playlist]" or "[medialist]" is
displayed.
- The vertical and horizontal offsets are displayed as
the pair "i,j" where i is the
line number of the currently selected row in either the playlist
or medialist window (whichever has focus), and j
is the amount of horizontal scrolling used (again, for either the
playlist or medialist window, whichever has focus).
- The vertical percent into the current buffer (playlist or
medialist window), which is basically the current row number
divided by the total number of rows times 100.
When in command mode, the command window is cleared and commands may
be entered to alter vitunes (e.g. the command
":q" is used to exist vitunes).
- Playlist Window The left-window (colored
magenta
above)
This window always shows a list of all playlists available, loaded
from the ~/.vitunes/playlists/ directory when vitunes
starts.
The first two entries are always shown and are pseudo-playlists.
They are:
- "--LIBRARY--" which is the database of all songs
in the vitunes meta-information database.
- "<search results>" which is a playlist
built/destroyed every time a search of any playlist is performed.
- Medialist Window The right-window row (colored
white
above)
This window always shows the contents of whatever playlist was
selected for viewing. The information shown for each file is all of
the meta-information available. If no information is available, the
filename is shown instead.
4.2. Key Bindings
The following key-bindings are used to interact with vitunes.
They should be familiar to any vi/vim users.
- TAB
- Switch focus between the playlist/medialist windows
- j / k
- Move current row (highlighted) down/up one row (works in both playlist
and medialist windows)
- h / l
- Horizontal scroll left / right one character (works in both playlist
and medialist windows)
- CTRL-u / CTRL-d
- Scroll up / down 1/2 page (works in both playlist and medialist
windows)
- ENTER
- If focus is in the playlist window, this loads the currently selected
playlist in the medialist window.
If focus is in the medialist window, this plays the current file.
- z
- Pause/un-pause current playback (works in either playlist or medialist
windows).
- s
- Stop current playback (works in either playlist or medialist
windows).
- f / b
- Skip forward / backward 10 seconds in playing of current file (works
in either playlist or medialist windows).
- yy
- If focus is in medialist window, copies ("yanks") current file to
copy-buffer. If focus is in playlist window, does nothing.
Use of "yX" will work as in vim (i.e. it will
copy the next X lines).
- dd
- Delete current playlist (if focus is in playlist window) or current
file (if focus is in medialist window).
Use of "dX" will work as in vim (i.e. it will
delete the next X lines).
- p / P
- Paste any file(s) in the copy-buffer before / after the current
row in the current playlist. Only works when focus is on medialist
window.
- CTRL+l
- Clear and re-draw the entire screen.
- "/"
- Start searching the currently viewing playlist. The query entered
is first tokenized, and all entries in the current playlist that match
all tokens (case-insensitive) are displayed. These search
results form the pseudo-playlist "<search results>", which can
be saved as a regular playlist using ":w name".
- ":"
- Enter command-mode (see below for commands).
4.3. Command Mode
Similar to command mode in vi/vim, vitunes command mode allows you
to execute various commands. This is a list of all such commands.
- :q
- Exit vitunes
- :w[!] [name]
- Use ":w" to save the current playlist being viewed in
the medialist window. Use ":w name" to save the
playlist as "name" instead. If a playlist with the given name already
exists, use ":w! name" to force.
NOTE: You cannot save the "--LIBRARY--" or "<search-results>"
pseudo-playlists, since they do not actually exist as playlists.
You can save them as a new playlist, however, using
":w name".
- :new playlist
- Create a new, empty playlist
- :mode [ linear | loop | random ]
- Set the current playmode to one of linear (all files in the playlist
are played in the order they appear, until the end of the playlist is
reached), loop (like linear, but playing of the playlist loops
indefinitely), or random (where files from the playlist are played in
a random order).
Appendix A. F. A. Q.
- What license is vitunes distributed under?
- That's a good question, and I'm still trying to figure it out.
The libmp4v2 dependency has some rather strict licensing.
I'm still investigating what license vitunes needs to be
under.
more is forthcoming
Appendix B. TODO.
Before the "1.0" release, the following will be finished...
- much more testing to flush out the bugs that no-doubt inhabit
vitunes.
- ADD: runtime ability & command line switch to set/change playlist
width
ADD: support for resizing display!
It now works beautifully with
scrotwm(1)!
- ADD: ability to sort files in medialist by user specified order
- ADD: ability to change listing format for media
- ADD: ability to change colors
- ADD: a config file! wooooo!
- FIX: get genre's from mp4/aac audio files.
(I think this is a bug in the mp4 library, where it sometimes returns a
pointer to static memory rather than malloc(3)'d memory... I think when
it's an ID3v1-style genre).
- FIX: get playtime from mpeg (including mp3) files.
FIX: createdb function works, but updatedb is currently
un-implemented.
FIX: backspace/delete/left stuff when user inputs a string
- FIX: redraws are currently very expensive... anytime anything changes
in a window, the entire thing is re-drawn.
- FIX: remove all (or most) statically-sized arrays.
UPDATE: Only playlists are now statically sized (to 1,000 songs).
ADD/FIX: the help switch output
- ADD/FIX: the man pages
- ADD/FIX: this website
- FIX: Respect style(9)
Download
Remember that vitunes is still under heavy development.
None-the-less, it's now reached a point where it's usable should someone
want to give it a try.
If you encounter problems, please first read the documentation above and then
email me.
Copyright (c) 2009 Ryan Flannery <ryan.flannery@gmail.com>


SurveyMonkey Docs. Version 1.0.1
Welcome
Official documentation for continuous integration and delivery of front-end components for SurveyMonkey. Documentation, Testing and Guidelines.
Pages
Zoeken
Deel jouw ervaring
Formulier elementen 2
Formulier
Login
Carousel