{% extends 'base.html' %} {% block content %}
The Users API provides information about the users in the system. In order to use this API you must register and log in. Information on this process is found below.
Once you have registered an account, you can then use it for future authenticated requests. This
authentication process requires you to log in using the /login
endpoint. You will be given
a secret (a hash) in the success response. This hash will then be used to generate a signature for your
requests using a SHA256
hash.
To calculate this value, hash the contents of your message and send the result as the value for the
X-Signature
header.
An example request might look like:
GET /user HTTP/1.0
Host: test.com
X-Session: 13066b17bbd780d5384a54830c5594e0ba6fc9e2282a08bec17ec6893b593202
X-Signature: 79202a7b8e8e068d331417867bab9b4cdc7f277acae42779982c02688ecb4d94
body=content&goes=here
To create the hash, use the data and secret along with the `SHA256` algorithm to make a HMAC value. For example, in Python this might look like this:
import hashlib, hmac
secret = '3aba3643d3ff1e16a82010a0fb2c994a5d993f4cc6d638b42ccb810345cfe4f3'
data = ''
signature = hmac.new(secret, data, hashlib.sha256).hexdigest()
Endpoint:POST /register
Requires Authentication: No
Required Parameters:
username
password
{
"success": true,
"message": "You have successfully registered. You can now use your account."
}
Endpoint:POST /login
Requires Authentication: No
Required Parameters:
username
password
{
"success": true,
"message": { "secret": "[... secret value ...]" }
}
This secret value is used as a part of future requests requring authentication.
Endpoint:GET /users
Requires Authentication: Yes
Required Parameters: None
Example Success Response:
This secret value is used as a part of future requests requring authentication.
{
"success": true,
"message": {"users": [
{
"username": "user1"
}
]}
}


Query\QueryBuilder
Convenience class for creating sql queries
Synopsis
- // methods
- public void __construct()
- public void __destruct()
- public mixed __call()
- public QueryBuilderInterface select()
- public QueryBuilderInterface selectMax()
- public QueryBuilderInterface selectMin()
- public QueryBuilderInterface selectAvg()
- public QueryBuilderInterface selectSum()
- public QueryBuilderInterface distinct()
- public QueryBuilderInterface explain()
- public QueryBuilderInterface from()
- public QueryBuilderInterface like()
- public QueryBuilderInterface orLike()
- public QueryBuilderInterface notLike()
- public QueryBuilderInterface orNotLike()
- public QueryBuilderInterface having()
- public QueryBuilderInterface orHaving()
- public QueryBuilderInterface where()
- public QueryBuilderInterface orWhere()
- public QueryBuilderInterface whereIn()
- public QueryBuilderInterface orWhereIn()
- public QueryBuilderInterface whereNotIn()
- public QueryBuilderInterface orWhereNotIn()
- public QueryBuilderInterface set()
- public QueryBuilderInterface join()
- public QueryBuilderInterface groupBy()
- public QueryBuilderInterface orderBy()
- public QueryBuilderInterface limit()
- public QueryBuilderInterface groupStart()
- public QueryBuilderInterface notGroupStart()
- public QueryBuilderInterface orGroupStart()
- public QueryBuilderInterface orNotGroupStart()
- public QueryBuilderInterface groupEnd()
- public ?PDOStatement get()
- public ?PDOStatement getWhere()
- public int countAll()
- public int countAllResults()
- public ?PDOStatement insert()
- public ?PDOStatement insertBatch()
- public PDOStatement update()
- public ?PDOStatement updateBatch()
- public ?PDOStatement replace()
- public ?PDOStatement delete()
- public string getCompiledSelect()
- public string getCompiledInsert()
- public string getCompiledUpdate()
- public string getCompiledDelete()
- public void resetQuery()
Hierarchy
Implements
Coverage
| Methods | 0% | 0 / 48 |
| Lines | 0% | / |
Members
public
- $connName
—
string
Convenience property for connection management - $driver
—
Query\Drivers\DriverInterface
The current database driver - $queries
—
array
List of queries executed
Methods
public
- __construct() — Constructor
- __destruct() — Destructor
- __call() — Calls a function further down the inheritance chain
- countAll() — Retrieve the number of rows in the selected table
- countAllResults() — Retrieve the number of results for the generated query - used in place of the get() method
- delete() — Deletes data from a table
- distinct() — Adds the 'distinct' keyword to a query
- explain() — Tell the database to give you the query plan instead of result set
- from() — Specify the database table to select from
- get() — Select and retrieve all records from the current table, and/or execute current compiled query
- getCompiledDelete() — Returns the generated 'delete' sql query
- getCompiledInsert() — Returns the generated 'insert' sql query
- getCompiledSelect() — Returns the generated 'select' sql query
- getCompiledUpdate() — Returns the generated 'update' sql query
- getWhere() — Convenience method for get() with a where clause
- groupBy() — Group the results by the selected field(s)
- groupEnd() — Ends a query group
- groupStart() — Adds a paren to the current query for query grouping
- having() — Generates a 'Having' clause
- insert() — Creates an insert clause, and executes it
- insertBatch() — Creates and executes a batch insertion query
- join() — Creates a join phrase in a compiled query
- like() — Creates a Like clause in the sql statement
- limit() — Set a limit on the current sql statement
- notGroupStart() — Adds a paren to the current query for query grouping, prefixed with 'NOT'
- notLike() — Generates a NOT LIKE clause
- orGroupStart() — Adds a paren to the current query for query grouping, prefixed with 'OR'
- orHaving() — Generates a 'Having' clause prefixed with 'OR'
- orLike() — Generates an OR Like clause
- orNotGroupStart() — Adds a paren to the current query for query grouping, prefixed with 'OR NOT'
- orNotLike() — Generates a OR NOT LIKE clause
- orWhere() — Where clause prefixed with "OR"
- orWhereIn() — Where in statement prefixed with "or"
- orWhereNotIn() — OR WHERE NOT IN (FOO) clause
- orderBy() — Order the results by the selected field(s)
- replace() — Insertion with automatic overwrite, rather than attempted duplication
- resetQuery() — Clear out the class variables, so the next query can be run
- select() — Specifies rows to select in a query
- selectAvg() — Selects the average value of a field from a query
- selectMax() — Selects the maximum value of a field from a query
- selectMin() — Selects the minimum value of a field from a query
- selectSum() — Selects the sum of a field from a query
- set() — Sets values for inserts / updates / deletes
- update() — Creates an update clause, and executes it
- updateBatch() — Creates a batch update, and executes it.
- where() — Specify condition(s) in the where clause of a query Note: this function works with key / value, or a passed array with key / value pairs
- whereIn() — Where clause with 'IN' statement
- whereNotIn() — WHERE NOT IN (FOO) clause
History
-
2018-01-24T20:23:26+00:00 (commit #73e4c35)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Remove some old code coupling and boilerplate
-
2018-01-24T20:03:41+00:00 (commit #f967aaf)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Remove method separators, update documentation building configuration
-
2018-01-24T18:25:42+00:00 (commit #16e50c3)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Fix some missed type hints
-
2018-01-24T18:14:03+00:00 (commit #1d583bc)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Add more type hinting
-
2018-01-23T16:22:23+00:00 (commit #e4ca039)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Use State class to simplify management of query builder state
-
2018-01-22T21:04:29+00:00 (commit #8401cce)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Remove PDOInterface to prevent conflicts in method parameters with native PDO object
-
2018-01-22T20:43:56+00:00 (commit #91eb812)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Various refactoring
-
2018-01-19T21:48:52+00:00 (commit #4df07b6)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Update test layout to better match source layout
-
2018-01-19T20:47:34+00:00 (commit #369ca6e)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Flatten source structure a bit
-
2018-01-19T18:43:19+00:00 (commit #c735c27)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Update file headers
-
2016-10-14T01:55:23+00:00 (commit #b8d4768)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>camelCase methods and properties
-
2016-10-13T02:12:25+00:00 (commit #6740aae)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>PHP7 or bust!
-
2016-10-13T00:32:23+00:00 (commit #3eb4d88)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Add Or Not Like method
-
2016-09-07T21:39:19+00:00 (commit #ca60162)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Miscellaneous cleanup and refactoring
-
2016-09-07T18:22:52+00:00 (commit #2db7ad1)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>More style fixes
-
2016-09-07T17:17:17+00:00 (commit #24f3b1d)
Author: Timothy J Warren<EMAIL_ADDRESS>/ Commiter: Timothy J Warren<EMAIL_ADDRESS>Update header comments


The Disclosure & Barring Service (DBS) Update Service reduces the need to apply for multiple certificates when you move from one job to another within the same workforce.
Disclosure Services will carry out a quick, online status check to see if your certificate is still up to date - saving our clients, both time and money.
By subscribing to the service you will be able to:
Error: Offline
DBS Update requires an active Internet connection. Data is retrieved in real-time from disclosureservices.com, so you need to ensure you have an Internet connection available.
The bandwidth required is small, so either a WiFi or cellular data connection will be fine.


{{ gettext("Public pre-sale dates announced! Website in soft launch. bookmark and report any bug or problem on Telegram!") }}


fun extractSaltFromHash(hash: String, saltSize: Int = DEFAULT_RANDOM_BYTES_SIZE): ByteArray
Taking a Base64-encoded hash with an embedded salt and a salt size, extract and return the salt bytes.


| Edition 2019-20 Edition 2020-21 |
In 2010 PhD student Michael Munie (now engineer at Google in Paris) and his supervisor Yoav Shoham (one of the leading researchers in AI) introduced a new game called a joint process game. In a joint process game, the history of actions determines the state, and the state and agent properties determine the payoff. Joint process games have applications as diverse as aggregate rating sites and wiki page updates. When each agent has a personal goal, the play converges under a simple myopic action rule. Not only do this simple dynamics converges, but the actions selected also form a Nash equilibrium. The limit point is not (as one may expect) the mean or the median of the set of agent goals, but the median of the set of agent goals and a set of focal points. Munie's work provides the first theoretical model of wiki-type behavior and opens the door to a completely new type of multi-agent learning.
Presented byLecturer. |
SlidesT.B.P. |
ScreencastNot available. |
AssignmentNot this year. |


Home
About
Contact us
Help
Log in
OUR TEAM
Allie Robinson
Project Lead
Dakotah Huey
Back End
Ryan Cooper
React 1
Eric Ferguson
React 1
Kyle Corbin
React 2
Michael Famurewa
UI


This page inform you of our policies regarding the collection, use and disclosure of personal information we receive from user of our site [https://uscryptostok.com]. We use your personal information to better understand your usage of the site, and to collect traffic statistics.
By using the site, you agree to the collection and use of information in accordance with this policy.
Like many site operation, we collect information that your browser sends whenever you visit our site (“Log Data”). This log data may include information such as your computer’s internet Protocol (“IP”) address (with replaced last byte), browser type browser version, those pages and other statistics.
Cookies are files with small amount of data, which may include an anonymous unique identifier. Cookies are sent to your browser from a web site and stored on your computer’s hard drive. You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some portions of our site.
We use cookies for the following purpose: To keep track of whether you have pressed the “OK” button on the cookie disclaimer, so we don’t bother you with the notification if you have. Our Analytics software (Google Analytics) uses cookies to measure and better understand user- interactions on our Site. You can read more about how Google Analytics uses cookies here.
We use a third-party JavaScript plug-in provided by Google called “Google Analytics” to provide us with useful traffic statistics and to better understands how you use our site. We do not have direct access to the information obtained from Google Analytics, but Google provides us with a summary through their dashboard. We may share the information obtained from Google Analytics with business partners who are interested in advertising on our website. The information shared with these business partners will not contain any personally identifying information (Google does not provide us with direct access to the data and therefore we cannot see this information). You can opt-out of having your information collected by Google Analytics by downloading the Google Analytics opt-out browser add-on provided by Google. This will prevent your information being used by Google Analytics. Doing this will not affect your ability to use our site in any way. You can download the opt-out browser add-on here. We also honor the Do not Track header and will not track visitors who have do not Track switched on.
We may update this privacy policy form time. We will notify of any changes by posting the new privacy policy on the Site. You are advised to review this privacy policy periodically for any changes. This Privacy Policy was last updated: 15th December 2018.
If you have any questions about our privacy policy, or how your data is being collected and processed, please e-mail https://uscryptostok.com.


Mediatable instance for which mediator has been created
Mediator instance
Describes mediator mapping to instance type data
Default listing of Context extensions for standard web application.
Mark class property as client for value from Injector.
Mark class as injectable which will make all of its constructor arguments filled with values from Injector
Map custom class as interface to a class definition.
List of interfaces this class is declared to implement.
Mark some class as system module by defining a module descriptor. This metadataInternal tag will invoke Injectable so any module will be Injectable and there is no need to redefine it as such. Actually that will lead to error, if @Module and @Injectable will be both set.
Module descriptor
Mark injected variable in class constructor or class property as Optional hence avoid lacking injected property error.
Mark method to be invoked as instance, client of injector, is created and all custom injections have their values set.
Mark method to be invoked as instance, client of injector, is to be destroyed and some mappings should be destroyed manually just before its gone for good.
Convert Type reference to simple string representation representing constructor shape
Public data provider for registered type metadata
Get inherited metadata for some instance (including its own prototype)
Any class instance that might be inheriting from any of metadata clients
A collection of all metadata entries that can be matched with instance
Retrieve some type metadataInternal
Check if particular type has registered metadata
Interal metadata provider that should be used only within metadata package
Retrieve some type metadata. This should not be used from outside of metadata package!
Describes instance to created mediator mapping


Editor Style
Use the
Editor Style
button to switch between editing styles.
Measures
Add
Measures
to your score that control the playback of the
Roll by Measure
performance style.
Annotations
Add and edit
Text
and
Freehand
annotations.


--- layout: newsstory title: MORE XMAS STUFFING match: Yeltz 1 Worcester 3 ---
Another bitterly disappointing loss - this time against local rivals Worcester. We were 2-0 down early on, were never really in it and Bowen's late goal was no consolation at all. More details in the match reports .
On Saturday (30th) we finish off a very disappointing year with a game at home to Ilkeston , and then on New Year's Day we visit Moor Green .
As I'm on holiday until after the New Year, the site might not be updated as regularly as usual , but I'll do my best to keep things reasonably recent. Anyhoo, have a jolly Xmas and New Year, and let's hope 2001 brings us better results that 2000 did. :-)
Halesowen Town: Quy; Crisp (Payne 78), Ford, Wood, Comyn (J.Owen 15), Collins, Cartwright (Sutton 45), Corns, Bowen, Smith, Hines
Worcester City: McDonnell; Davies, Bradley, Tucker, Heeley, Carty, Wyatt (Tranter 72), Weir, M. Owen, Woods (Burrow 82), Reed. Sub: Scheppel
Booked: Corns (65) Referee: M. Edwards (Swandlincote) Attendance: 743
Halesowen slumped into deep relegation trouble as they were unable to recover from giving injured-ravaged neighbours Worcester an early two-goal advantage.
Worcester stunned the home crowd with an opening goal in the 3rd minute when Michael Wyatt collected a short pass from former long-term Yeltz servant Andy Bradley and curled a shot into the corner of the net from the edge of the penalty area.
Home defender Andy Comyn limped off the field in the 15th minute and seconds later Worcester took full advantage when Wyatt put Mark Owen clear on goal and he was brought down by Andy Quy with the home defence caught napping. Leading marksman Owen then stepped up to make no mistake from the penalty spot.
Halesowen started the second half in more determined fashion but found no way through the Worcester rearguard and their possession continually broke down in the final third of the pitch. Another ex-Yeltz favourite Danny McDonnell raced off his goal line to beat Peter Sutton to the ball in the 55th minute and then thwarted Ross Collins by clawing away his shot two minutes later.
Ten minutes from time Worcester substitute Carl Tranter produced a super finish from Mark Owen to make the points safe. However, the home side eventually claimed an 87th minute consolation when the ex-Worcester maverick striker Sam Bowen slotted home from close range after a cross from Les Hines had caught out the visiting defence.


Mary Ellen Henderson is a middle school in Falls Church, VA that is currently trying to implement a stem curriculum into their classrooms. This is a site showcasing their 7th grade curriculum
Tweets by @mehmsIn science this year we are learning about how cells and animals work. Specifically, recently we have started learning about passive and active transport within cells. Some of the stuff she is teaching us is on a 9th grade level!
This year in math we are learning Algebra. This class is two years advanced for my grade! Currently we are learning how to do inequalities. After that we will learn substitution, an important component of algebra.
This year we are learning a lot of things relating to grammar and writing. Right now we are learning about utopias and dystopia. We got to write speeches and stories about a world we create! We also learned the basics of the dystopia genre.


“More speed, more power with minimum time”
Bots up is a robotics event in which the terrain conquering skills and brute force of the bot is put to a test. The bots will be put in a challenging and fun arena. Design a manually controlled ROBOT that has capacity to cover maximum distance in shortest possible time, challenging the hurdles and to be one of the best opponents. On its way to the finish line, the robot has to traverse sharp turns and many hurdles like a ramp that could set it flying off the track, gravel, sand, ramps etc.. It’s a race against time !! So, come and enjoy the exciting Roborace with your friends and win exciting prizes.
Team specification
Maximum 4 members per team allowed.
Student from different institutes can from a team.
Machine Specification
The machine should fit within a box of dimensions (300x300x300) mm at the start of the game.
The Machine should not weigh more than 3 KG.
Both wireless and wired machines are allowed.
Use of readymade toy is not allowed, but one can use the readymade circuits.
Chemicals, compressed gases and rockets, fuels, combustion power methods, etc. are strictly prohibited. However commercial batteries like dry cells and lead acid are allowed to use.
Rules and regulations
Power Supply
Participants will be allowed to use maximum onboard 12V DC power. Use of heavy equipment like compressors is banned.
Safety
The machines you build will be first checked for size and safety. The machine should not cause electrical power breakdowns. The robots must not contain any combustible, corrosive, or otherwise dangerous materials. No explosive, compressive or expansive, either internal or external is permitted. Any robot whose strategy or operation is considered dangerous can be disqualified by the judges at their discretion.
Game Field
The width of the track is 300 mm.
The entire game field is divided into no. of sub zones. Each zone contains various hurdles which are as follows:
• Bridges
• bumpers
• Sand
• There can be another 2 to 3 surprise hurdles on the field.
Participants have to start the game from starting zone and reach to finish line in minimum possible time.
Point System
• The game field is divided in no. of zones and each zone has some points.
The team whose robot reaches the finish line in minimum time is declared as the winner
• If the participant is not able to complete the game field than points will be given on the basis of no. of sub zones completed.
Foul/Penalties
• The robot is not allowed to go out of the track or sub zone. If it goes out of track or sub zone than violation will be considered and accordingly points will be deducted as per judges discretion. After that, the participants have to start the game from the starting of that particular zone. While doing so the participants will be allowed to put the robot by hands.
• The robots are not allowed to leave part(s) on any part of the arena. In case some part of the machine falls on the arena, the penalty (including disqualification) will be based on judges’ discretion.
• Machines damaging any part of the arena will be disqualified. Damaging does not include unintentional scratches on the any surface by the machine. Once again judge’s discretion will be used.
• During game the participants are not allowed to go inside the game field.
• Decision taken by the judges would be final and would not be challenged
For any queries write us at formaleventstremors13@gmail.com


Use Troff !
What is Troff?
Troff is the historical text processor for Unix. It is mainly used today to format manual pages, but it is also able to produce postscript and pdf files. There are several implementation of troff, and amongst them, some provide high quality typographic features – such as a paragraph at once adjustment – which make them able to contest with TeX.
The Utroff project
The Utroff project aims to prove that Troff can still be used efficiently today. For that purpose, it provides a «piles included» set of macros (utmac), and a set of tools to index documents (idx), write polytonic greek (tchars), manage bibliography references (refer), highlight source code (ugrind), and eventually, export troff documents to xml, html, and flat OpenDocument (troffxml).
You can get an overview of the layout by downloading layout-uh.pdf, layout-ul.pdf, and layout-us.pdf.
Troff implementations
Utroff does not provide the troff text processor itself. But it is compatible with the two troff implementations providing paragraph at once adjustment:
- Gunnar Ritter created the Heirloom doctools by adding algorythms to provide paragraph at once adjustment, micro-typography adjustment, hanging characters and the capacity to handle OpenType fonts to the legacy troff text processor. Heirloom troff has been maintained on Github by Karsten Kunze for some time. Utroff first used it, but there is now a better choice than Heirloom Troff.
- Ali Gholami Rudi wrote neatroff from scratch, embedding paragraph at once adjustment and bi- directional text rendering. Neatroff is a wonderful troff implementation: lightweight, clean, easy to use and install, and with a pretty output. Ali Gholami Rudi is maintaining it with care and attention to its users. Utroff is now using neatroff as its default troff processor.
ChangeLog
2018-04-14 utmac
Utmac now uses Neatroff as its default troff processor. Since Neatroff does not provide nroff, Groff is used instead to produce plain text files and xml files.
2017-12-11 troffxml-0.6
Utmac now uses KA, KN, KT, KO, KW macros to index some keywords. These changes are reflected on utohtml.xsl.
Bugfixes in postxml: any number of following #- are deleted, and #- are not ignored after repeated newlines.
2017-12-11 utmac-0.6
The macro to define the substitution text for a link is now LT instead of LP.
The user interface to index keywords is now completely separated from the one used to print links. The keywords to index are now defined by the K[x] macro. K[x] macros don’t print anything, and the (new) LT macro is now reserved to links.
Defined K[x] macros are KA (acronyms), KN (names), KO (objects, things), KT (titles, books), KW (words). It is easy to add new ones by using the internal idx:make macro.
Following the development of Heirloom Troff on github, ux.tmac now uses \(dq to escape double quotes and u-ref.tmac now uses \E as escape seqence instead of \\.
2017/12/08 utmac-0.5
The macros for links are now in u-links.tmac. LL, LM and LU now print the link even if LP is not used. A glitch in summaries and table of contents has been fixed by correctly escaping \a and \t.
2017/12/08 troffxml-0.5
Utofodt.xsl attempts to render the code formatted by Ugrind correctly. Utohtml.xsl has a better support for index macros and links. A bug affecting internal links to bottom notes is fixed in utohtml.xsl.
2017/12/06 ugrind-0.4
Separating ugrind from the Utroff archive. The troff formatter now escape ’\’ in macro names. Fix a bug in the troff formatter which was dropping newlines in some circumstances (bug report by Marcin Cieslak). Removed unused variables, added parenthesis and braces to fix compiler warnings (bug report by Marcin Cieslak).
2017/12/05 refer-0.4
Separating refer from the Utroff archive. Added parenthesis and braces to fix compiler warnings, and added missing fields in sortbib (bug report by Marcin Cieslak).
2017/12/01 troffxml-0.4
Separating troffxml from the Utroff archive. Fixed a bug in utohtml.xsl which was not linking notes correctly.
2017/11/30 tchars-0.4
Separating tchars from the Utroff archive. Tchars now translates characters indicated by the macros CW, CL, CS, CE.
2017/11/25 utmac-0.4
Separatting Utmac from the Utroff archive. Added macro ul to write letters.
2014/03/17 utroff-0.3
U: Remove bashisms (bug report by fravashyo) and fix a bug in the directory list of fonts.
2014/03/13 utroff-0.2
tchars: RFC 3629 ends utf8 at U+10FFFF, so that utf8 is never encoded on more than 4 bits (bug report by seb).
utmac: Load a font if the user locale macro does not do it (bug report by Fravashyo).
2013/11/05 utroff-0.1
Initial revision.


Top Words of Reddit
By Hugh Ritchie
01 - OLD
This visualization focuses on the frequency of key words in reddit in 2013. The data presented here is collected from 2,500 subreddits.My original intent was to bring together the various words that had been posted on reddit over time in 2013, hopefully to come up with something interesting.
02 - NEW
The pink text hidden amongst the visualization represents subreddits where this word is used more than 100 times.The result was somewhat unexpected. The data was 2,500,000 units, multiplied by how many words were in each title.
03 - ME
Both the size and color of the bubbles in this visualization relate to frequency. If a bubble is bigger and darker, the word was used more frequently in that subreddit.When I began I didn't know what to do. I was overwhelmed and frightened. At first I thought I would abandon this task.
04 - WE
Both color and size were used because, as you can see, the contrast in size is sometimes difficult to see.But I was given inspiration by someone close to me. She showed me some tools that helped me to decipher all of this text.
05 - HOW
The most discernable way to see which word is used more in more places is to look for the pink text. More pink text means more use across several different subreddits.I began using python, and some hope came. After my first successes with parsing and analyzing data, I got more ambitious.
06 - WHY
What is clear so far is that commonly used words, as we have seen so far, are also used commonly. This is to be expected.My ambition lead me to a wall. I had so much data that I didn't know what to do with. I had made 2, 500 separate sets of data, each set with nearly 11, 000 pieces of data.
07 - WINDOWS
In this example, and in the later ones, we begin to see some different variation. How frequently does reddit use the word Windows, and who uses it the most?I had to reduce, to consolidate. I picked the top 20 non-operational words such as I, if, and, the, etc. From that list, I chose words from that list that matched up nicely.
08 - APPLE
The word Apple, as expected, is primarily used in a single subreddit. The others have far less usage. This is a suggestion that apple is a form of jargon.The next step was to learn another new tool. D3 - the language that powers what you see before you.
09 - NINTENDO
I was surpised by what turned out to be jargon. I was even more surprised to see where the jargon appeared.How I did it is still a wonder. It was mostly piecing together pieces of other peoples work in order to make sense of the language. As I learned, I became confused.
10 - ANYONE
Maybe this jargon is related to the community.After lots of fiddling I found a way to represent the data in a pool. The original pool was so big, it would take up this whole screen.
11 - COMPUTER
Or maybe it isn't as surprising as I might have thought.More importantly than that process, I had learned something important about word association, and about reddit as a whole.
12 - 3D
Either way. Thank you for coming and seeing this project. It was an excellent experience for myself, and an interesting experiment into reddit.The words used in reddit say a lot about the importance of those words in jargon versus the importance in common language. More focused jargon subreddits have more jargon.


The selected photo gets moved from the default Cordova tmp folder to
tmp
sterois.app.absoluteUserFilesPath
and is then rendered below via localhost, without requiring an absolute file:// URL.
localhost
file://


class RedCloth::TextileDoc
A Textile document that can be converted to other formats. See the README for Textile syntax.
Attributes
Accessors for setting security restrictions.
This is a nice thing if you're using RedCloth for formatting in public places (e.g. Wikis) where you don't want users to abuse HTML for bad things.
If :filter_html
is set, HTML which wasn't created by the
Textile processor will be escaped. Alternatively, if
:sanitize_html
is set, HTML can pass through the Textile
processor but unauthorized tags and attributes will be removed.
If :filter_styles
is set, it will also disable the style
markup specifier. ('{color: red}')
If :filter_classes
is set, it will also disable class
attributes. ('!(classname)image!')
If :filter_ids
is set, it will also disable id attributes.
('!(classname#id)image!')
Accessors for setting security restrictions.
This is a nice thing if you're using RedCloth for formatting in public places (e.g. Wikis) where you don't want users to abuse HTML for bad things.
If :filter_html
is set, HTML which wasn't created by the
Textile processor will be escaped. Alternatively, if
:sanitize_html
is set, HTML can pass through the Textile
processor but unauthorized tags and attributes will be removed.
If :filter_styles
is set, it will also disable the style
markup specifier. ('{color: red}')
If :filter_classes
is set, it will also disable class
attributes. ('!(classname)image!')
If :filter_ids
is set, it will also disable id attributes.
('!(classname#id)image!')
Accessors for setting security restrictions.
This is a nice thing if you're using RedCloth for formatting in public places (e.g. Wikis) where you don't want users to abuse HTML for bad things.
If :filter_html
is set, HTML which wasn't created by the
Textile processor will be escaped. Alternatively, if
:sanitize_html
is set, HTML can pass through the Textile
processor but unauthorized tags and attributes will be removed.
If :filter_styles
is set, it will also disable the style
markup specifier. ('{color: red}')
If :filter_classes
is set, it will also disable class
attributes. ('!(classname)image!')
If :filter_ids
is set, it will also disable id attributes.
('!(classname#id)image!')
Accessors for setting security restrictions.
This is a nice thing if you're using RedCloth for formatting in public places (e.g. Wikis) where you don't want users to abuse HTML for bad things.
If :filter_html
is set, HTML which wasn't created by the
Textile processor will be escaped. Alternatively, if
:sanitize_html
is set, HTML can pass through the Textile
processor but unauthorized tags and attributes will be removed.
If :filter_styles
is set, it will also disable the style
markup specifier. ('{color: red}')
If :filter_classes
is set, it will also disable class
attributes. ('!(classname)image!')
If :filter_ids
is set, it will also disable id attributes.
('!(classname#id)image!')
Deprecated accessor for toggling hard breaks.
Traditional RedCloth converted single newlines to HTML break tags, but
later versions required :hard_breaks
be set to enable this
behavior. :hard_breaks
is once again the default.
Accessor for toggling lite mode.
In lite mode, block-level rules are ignored. This means that tables, paragraphs, lists, and such aren't available. Only the inline markup for bold, italics, entities and so on.
r = RedCloth.new( "And then? She *fell*!", [:lite_mode] ) r.to_html #=> "And then? She fell!"
Accessor for toggling span caps.
Textile places `span' tags around capitalized words by default, but
this wreaks havoc on Wikis. If :no_span_caps
is set, this will
be suppressed.
Accessors for setting security restrictions.
This is a nice thing if you're using RedCloth for formatting in public places (e.g. Wikis) where you don't want users to abuse HTML for bad things.
If :filter_html
is set, HTML which wasn't created by the
Textile processor will be escaped. Alternatively, if
:sanitize_html
is set, HTML can pass through the Textile
processor but unauthorized tags and attributes will be removed.
If :filter_styles
is set, it will also disable the style
markup specifier. ('{color: red}')
If :filter_classes
is set, it will also disable class
attributes. ('!(classname)image!')
If :filter_ids
is set, it will also disable id attributes.
('!(classname#id)image!')
Public Class Methods
Returns a new RedCloth object, based on string, observing any restrictions specified.
r = RedCloth.new( "h1. A *bold* man" ) #=> "h1. A *bold* man" r.to_html #=>"
A bold man
"
# File lib/redcloth/textile_doc.rb, line 67 def initialize( string, restrictions = [] ) restrictions.each { |r| method("#{r}=").call( true ) } super( string ) end
Public Instance Methods
Converts special characters into HTML entities.
static VALUE redcloth_html_esc(int argc, VALUE* argv, VALUE self)
Converts special characters into LaTeX entities.
static VALUE redcloth_latex_esc(VALUE self, VALUE str) { VALUE new_str = STR_NEW2(""); if (str == Qnil) return new_str; StringValue(str); if (RSTRING_LEN(str) == 0) return new_str; char *ts = RSTRING_PTR(str), *te = RSTRING_PTR(str) + RSTRING_LEN(str); char *t = ts, *t2 = ts; const char *ch = NULL; if (te <= ts) return Qnil; while (t2 < te) { ch = NULL; switch (*t2) { case '{': ch = "#123"; break; case '}': ch = "#125"; break; case '\\': ch = "#92"; break; case '#': ch = "#35"; break; case '$': ch = "#36"; break; case '%': ch = "#37"; break; case '&': ch = "amp"; break; case '_': ch = "#95"; break; case '^': ch = "circ"; break; case '~': ch = "tilde"; break; case '<': ch = "lt"; break; case '>': ch = "gt"; break; case '\n': ch = "#10"; break; } if (ch != NULL) { if (t2 > t) rb_str_cat(new_str, t, t2-t); VALUE opts = rb_hash_new(); rb_hash_aset(opts, ID2SYM(rb_intern("text")), STR_NEW2(ch)); rb_str_concat(new_str, rb_funcall(self, rb_intern("entity"), 1, opts)); t = t2 + 1; } t2++; } if (t2 > t) rb_str_cat(new_str, t, t2-t); return new_str; }
Transforms a Textile document with formatter
static VALUE redcloth_to(self, formatter) VALUE self, formatter; { rb_funcall(self, rb_intern("delete!"), 1, STR_NEW2("\r")); VALUE working_copy = rb_obj_clone(self); rb_extend_object(working_copy, formatter); if (rb_funcall(working_copy, rb_intern("lite_mode"), 0) == Qtrue) { return redcloth_inline2(working_copy, self, rb_hash_new()); } else { return redcloth_transform2(working_copy, self); } }
Generates HTML from the Textile contents.
RedCloth.new( "And then? She *fell*!" ).to_html #=>"
And then? She fell!
"
# File lib/redcloth/textile_doc.rb, line 78 def to_html( *rules ) apply_rules(rules) to(RedCloth::Formatters::HTML) end
Generates LaTeX from the Textile contents.
RedCloth.new( "And then? She *fell*!" ).to_latex #=> "And then? She \\textbf{fell}!\n\n"
# File lib/redcloth/textile_doc.rb, line 90 def to_latex( *rules ) apply_rules(rules) to(RedCloth::Formatters::LATEX) end
Private Instance Methods
# File lib/redcloth/textile_doc.rb, line 97 def apply_rules(rules) rules.each do |r| method(r).call(self) if self.respond_to?(r) end end


Welcome to LukeFolio
This is a website I hacked together in my free time to showcase some of the more recent involvements in my life.
Also, I'll be honest... I wanted an excuse to gather some gifs from GIPHY's API. ;)
Cheers!
Luke Short


Ocean [ak77], ocean, in Crystal Sea
Last updated Turn #118
Ocean [ak77], ocean, in Crystal Sea
------------------------------------------------------------------------
17: Pleasure Sloop [v5n], ship, 30 hulls, 1 rowing port, 90 sails, arrived
17: from Ocean [aj77], owner:
17: Dorothy [v1b], Pen, with 39 peasants, 30 soldiers, 94 sailors,
17: accompanied by:
17: Cindy [z1c], Pen, with two peasants, one worker, 40 soldiers,
17: 14 skirmishers
17: Banian [e7n], Imperial Empire, knight, the High Priest of the
17: Church of Eres [151], with 16 soldiers, ten angels
17: Drummond [x8q], Imperial Empire, with 30 soldiers
17: Roland [o6t], Imperial Empire, Bishop of the Church of
17: Anteus [152], with 34 soldiers, five angels
17: Fortuis [h1m], Imperial Empire, with 20 soldiers
18: Pleasure Sloop [v5n], ship, 30 hulls, 1 rowing port, 90 sails,
18: departed for Ocean [al77].
Routes leaving Ocean:
North, to Ocean [aj77], 6 days
East, to Ocean [ak78], 6 days
South, to Ocean [al77], The Outer Sea, 6 days
West, to Ocean [ak76], 6 days
It is raining.


void *alloc_hugepages(int key, void *addr, size_t len, int prot, int flag); int free_hugepages(void *addr);
On i386 the memory management hardware knows about ordinary pages (4 KiB) and huge pages (2 or 4 MiB). Similarly ia64 knows about huge pages of several sizes. These system calls serve to map huge pages into the process's memory or to free them again. Huge pages are locked into memory, and are not swapped.
The key argument is an identifier. When zero the pages are private, and not inherited by children. When positive the pages are shared with other applications using the same key, and inherited by child processes.
The addr argument of free_hugepages() tells which page is being freed: it was the return value of a call to alloc_hugepages(). (The memory is first actually freed when all users have released it.) The addr argument of alloc_hugepages() is a hint, that the kernel may or may not follow. Addresses must be properly aligned.
The len argument is the length of the required segment. It must be a multiple of the huge page size.
The prot argument specifies the memory protection of the segment. It is one of PROT_READ, PROT_WRITE, PROT_EXEC.
The flag argument is ignored, unless key is positive. In that case, if flag is IPC_CREAT, then a new huge page segment is created when none with the given key existed. If this flag is not set, then ENOENT is returned when no segment with the given key exists.
/proc/meminfo Gives info on the number of configured hugetlb pages and on their size in the three variables HugePages_Total, HugePages_Free, Hugepagesize.
The maximal number of huge pages can be specified using the hugepages= boot parameter.


Laravel utilizes Composer to manage its dependencies. First, download a copy of the composer.phar
. Once you have the PHAR archive, you can either keep it in your local project directory or move to usr/local/bin
to use it globally on your system. On Windows, you can use the Composer Windows installer.

First, download the Laravel installer using Composer.
composer global require "laravel/installer=~1.1"
Make sure to place the ~/.composer/vendor/bin
directory in your PATH so the laravel
executable is found when you run the laravel
command in your terminal.
Once installed, the simple laravel new
command will create a fresh Laravel installation in the directory you specify. For instance, laravel new blog
would create a directory named blog
containing a fresh Laravel installation with all dependencies installed. This method of installation is much faster than installing via Composer.
You may also install Laravel by issuing the Composer create-project
command in your terminal:
composer create-project laravel/laravel {directory} 4.2 --prefer-dist
Once Composer is installed, download the 4.2 version of the Laravel framework and extract its contents into a directory on your server. Next, in the root of your Laravel application, run the php composer.phar install
(or composer install
) command to install all of the framework's dependencies. This process requires Git to be installed on the server to successfully complete the installation.
If you want to update the Laravel framework, you may issue the php composer.phar update
command.

The Laravel framework has a few system requirements:
As of PHP 5.5, some OS distributions may require you to manually install the PHP JSON extension. When using Ubuntu, this can be done via apt-get install php5-json
.

The first thing you should do after installing Laravel is set your application key to a random string. If you installed Laravel via Composer, this key has probably already been set for you by the key:generate
command. Typically, this string should be 32 characters long. The key can be set in the app.php
configuration file. If the application key is not set, your user sessions and other encrypted data will not be secure.
Laravel needs almost no other configuration out of the box. You are free to get started developing! However, you may wish to review the app/config/app.php
file and its documentation. It contains several options such as timezone
and locale
that you may wish to change according to your application.
Once Laravel is installed, you should also configure your local environment. This will allow you to receive detailed error messages when developing on your local machine. By default, detailed error reporting is disabled in your production configuration file.
Note: You should never have
app.debug
set totrue
for a production application. Never, ever do it.

Laravel may require one set of permissions to be configured: folders within app/storage
require write access by the web server.

Several of the framework directory paths are configurable. To change the location of these directories, check out the bootstrap/paths.php
file.

The framework ships with a public/.htaccess
file that is used to allow URLs without index.php
. If you use Apache to serve your Laravel application, be sure to enable the mod_rewrite
module.
If the .htaccess
file that ships with Laravel does not work with your Apache installation, try this one:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
On Nginx, the following directive in your site configuration will allow "pretty" URLs:
location / {
try_files $uri $uri/ /index.php?$query_string;
}


Isar735.github.io
Brooklyn Public Library Homework Help , Brooklyn public. FTKny.com - Tutors, STEAM Preschool Summer The Case Against Homework: How Homework Is Hurting Children and What Parents Can Do About It Sara Bennett, Nancy Kalish on Amazon.com. FREE shipping on qualifying.
Homework Help Brooklyn Public Library. Write-On! Learning Center- After School, Homework NYC's top Tutors, Summer Camps, Preschool, Gifted Talented and Test Prep programs for children ages 2-14. Brooklyn, Staten Island, Queens, Manhattan.
World War II Questions and Answers - Discover the eNotes.com community of teachers, mentors and students just like you that can answer any question you might. NYC Caregiver Services. Find an NYC Caregiver Resource Center near you! Information Assistance - Information and referral to available services.
Rating and reviews for Professor Natalie A Kacinik from Brooklyn College Brooklyn, NY United States. Our Mission. Items Needed helper best online resume writing service military Cultural Display The Homework is seeking exhibitors for its 7th annual DIA multicultural.
Homework Help in Brooklyn, New York Sylvan Learning. Free math learning resources for teachers and students - including games, flashcards, homework helpers, and worksheets. Essay Writing help online at your service SpeedyPaper.com.
12-Light Sputnik Pendant Brass - Modern Hanging Ceiling.
Investigation The Brooklyn Bloggers Who Brought Down Paul Manafort. Katia Kelly first noticed the brownstone that belonged to Paul Manafort. Then Matt Termine. Brooklyn public library homework help - Big Discount.
What's on for kids - Wellington City Libraries. The Top 10 Must-Know Study Tips for Busy College Students.
Homework help brooklyn - Best Writing Aid Custom Papers. Teacher Homework Porn Videos Pornhub.com. The Case Against Homework: How Homework Is Hurting. Brooklyn Nursing Homes. New York City Department for the Aging Alzheimer’s Long Term Care<PHONE_NUMBER> . Bishop Henry B. Hucles Episcopal Nursing Corey Simmons got on the New York City subway, heading from Manhattan to Brooklyn to pick up his son from his grandmother about two weeks
Success Academy Charter Schools, originally Harlem Success Academy, is a charter school operator in New York City. Eva Moskowitz, a former city council member Brooklyn Community Christian Church. Do you need homework help in Brooklyn, NY for your child?  Contact us now to get started.
Brooklyn public library homework help. Dissertation health occupational proposal safety Cheap Discount. Homework help line albuquerque. Did you know that roughly 40% of college students in America are non-traditional students? Many college students now may be working full time, have family/military. Homework help brooklyn - Hire the professionals to do your essays for you. Writing a custom dissertation is work through lots of stages Essays researches written. Homework help brooklyn public library - Receive an A+ aid even for the most urgent writings. Instead of concerning about dissertation writing find the needed. Watch Teacher Homework porn videos for free, here on Pornhub.com. Discover the growing collection of high quality Most Relevant XXX movies and clips. No other.
Getting help - Welcome to NYC.gov Chemistry Help Wyzant Resources. Man needed help with son’s third-grade math homework Math homework help. Hotmath explains math textbook homework problems with step-by-step math answers for algebra, geometry, and calculus. Online tutoring available. At Write-On! students receive individualized help to complete their homework and become independent learners. Best Homework Help Service in Brooklyn. Professional Essay writing help from Speedy Paper is 24/7 here for you. Get a free quote Math Homework Help - Answers to Math Problems - Hotmath. Homework Help Club of Brooklyn Staten Island - FTKny.com. Natalie A Kacinik at Brooklyn College - RateMyProfessors.com. Success Academy Charter Schools - Wikipedia.
World Martial Arts Center - Brooklyn NYC - Hapkido.
12-Light Sputnik Pendant Brass - Modern Hanging Ceiling Fixture by Brooklyn Bulb Co, Dimmable, ETL Listed - - Amazon.com. Discover free educational resources Wyzant Resources.
Welcome to Write-On! Learning Center Located in Kensington, Brooklyn, NY. We offer After School Program, Homework Help and Tutoring. Free pick-up from Local Schools. Wyzant Resources features 193,000+ free resources created by the largest network of private tutors on the web. Explore and collaborate to start learning today. UTFO (an abbreviation for Untouchable Force Organization) was an American old-school hip hop group from Brooklyn, New York City. The group consisted of Kangol. Pastor. Andy is the Lead Pastor of the Brooklyn Community Christian Church, where he first attended 1974 and baptized 1977.He received his JD from Univ Idaho Homework Help Club for children in grades K - 8. Expert teachers tutors. Small class size. Affordable tuition. Brooklyn Staten Island locations. The Brooklyn Bloggers Who Brought Down Paul Manafort.
The UFT sponsors a homework help program for elementary and middle school students called Dial-A-Teacher. Classroom teachers answer homework questions at<PHONE_NUMBER>. Homework Help in Brooklyn - Write-On! Learning Center. Dial-A-Teacher United Federation of Teachers. Need homework help? We can help! If you are in grades 1 through 8, we can help you with your homework. What's on for kids at the library.
Brooklyn Martial Arts Fitness For Men, Women and Children. After school and Summer camp. Hapkido, Ju-Jitsu, Self-Defense, and Kickboxing. Aplusmath : Free Math Worksheets, Math Games Homework help brooklyn public library - lights4models.com. World War II Questions and Answers - eNotes.com. Save time grading your existing paper-based assignments and see exactly what your students learned
In our chemistry help section, you'll find a broad range of topics from very basic chemistry all the way through some more advanced organic chemistry topics.


Preparation time
less than 30 mins
Cooking time
less than 10 mins
Serves
Serves 4
Dietary
Use a 10cm/4in pastry cutter to cut circles from the bread slices.
Place a basil leaf onto each of four of the bread circles.
Place a slice of mozzarella onto each basil leaf, then top with another basil leaf.
Sprinkle some of the spring onions on top and season well with salt and freshly ground black pepper.
Top each with one of the four remaining bread circles and press the edges of the bread together to seal the sandwich.
Dredge the sandwiches in the seasoned flour to coat lightly, then dip them into the beaten egg mixture to completely coat.
Heat the olive oil in a large non-stick frying pan over a medium heat.
Fry the sandwiches for 3-4 minutes each side, or until crisp and golden-brown all over.
To serve, place two sandwiches onto each of four plates, sprinkle with sea salt flakes and serve with a dollop of tomato chutney.


Please login in out system in order to use it
If you don't have a registration yet, you can register here
Login
You can view all contests or review your submissions.
Contests Submissions


Check out my article, ya'll
You'll never see a better page than this! Between you and me, this video isn't all that great. But what do you expect from a 30 second internet search? Also seeing saved changes instantly is fun. Between you and me, this video isn't all that great. But what do you expect from a 30 second internet search? Also seeing saved changes instantly is fun.
Between you and me, this video isn't all that great. But what do you expect from a 30 second internet search? Also seeing saved changes instantly is fun. Between you and me, this video isn't all that great. But what do you expect from a 30 second internet search? Also seeing saved changes instantly is fun. Well...maybe you could. As they say,
“If you can't take the heat, stay out of the kitchen!”
You'll never see a better page than this! Between you and me, this video isn't all that great. But what do you expect from a 30 second internet search? Also seeing saved changes instantly is fun. Between you and me, this video isn't all that great. But what do you expect from a 30 second internet search? Also seeing saved changes instantly is fun.
Between you and me, this video isn't all that great. But what do you expect from a 30 second internet search? Also seeing saved changes instantly is fun. Between you and me, this video isn't all that great. But what do you expect from a 30 second internet search? Also seeing saved changes instantly is fun. Well...maybe you could. As they say,
If you have to ask what that means, you'll never understand. But maybe figure 1 can help explain.


data class StripeFileParams
To upload a file to Stripe, you’ll need to send a request of type multipart/form-data
.
The request should contain the file you would like to upload, as well as the parameters for
creating a file.
FileLink |
Optional parameters to automatically create a file link for the newly created file. data class FileLink : Parcelable |
<init> |
StripeFileParams(file: File, purpose: StripeFilePurpose) |


Making monster batch of chili for day of brewing, Wii and (wait for it...) CHILI!
2/28/2009, 9:17:14 AM
Favs: 0
Retweets: 0
link--- layout: tweet ---
Making monster batch of chili for day of brewing, Wii and (wait for it...) CHILI!
2/28/2009, 9:17:14 AM
Favs: 0
Retweets: 0
link


Qt Multimedia Examples
The Qt Multimedia module provides low-level audio support on Linux, Windows and macOS. It also provides audio plugin API to allow developers implement their own audio support for custom devices and platforms.
Testing the available audio devices and their configuration. | |
Recording audio using the QAudioInput class | |
Enabling audio playback using the QAudioOutput class. | |
Discovering the available devices and supported codecs. | |
Enabling 3D sound control using the Qt Audio Engine API. | |
The Camera Example shows how to use the API to capture a still image or video. | |
Demonstrates using the Radio QML type from Qt Multimedia. | |
Playing audio and video. | |
The Camera Example shows how to use the API to capture a still image or video. | |
Transforming video and camera viewfinder content. | |
Applying shader effects on video and camera viewfinder content. | |
Analyzing a raw audio stream using the FFTReal library. | |
Streaming video on a graphics scene. | |
Implementing a video player widget. |


Dear {{username}},
{{member_me.user.username}} has cancelled their request to join {{member_me.organization.name}}.
No further action needs to be taken.
--The team at SolarPermit.org


See the reason why when you check out my Github!
A fav' amongst many devs and companies.
Coding from the ground up!
Web be Stylin'!
One of my favorite database languages.
A train scheudler application featuring the Bootstrap framework, Firebase, and more!
A JavaScript game using vanilla JavaScript with HTML5.
An Amazon-like storefront interface for the customer to use.
A personalized stock-picking experience tailored for watching stocks and financial news.


Navbar
Home
(current)
Features
Pricing
Disabled
Navbar
Home
(current)
Features
Pricing
Disabled
Navbar
Home
(current)
Features
Pricing
Dropdown link
Action
Another action
Something else here


/**
* Multicast DNS based service & host discovery and registration
*
* @constructor
* @param {strategy} instrategy - a strategy to use for host-dependent operations
*/
sensible.MDNS = function ()
{
this.strategy = sensible.StrategyFactory.createStrategy ();
this.foundHosts = new Object ();
this.hostsByName = new Object ();
this.hostResolutionsByName = new Object ();
this.foundServices = new Object ();
this.servicesByKey = new Object ();
this.servicesByType = new Object ();
this.serviceResolutionsByType = new Object ();
// we set up a fake service record
// for name resolution off .local
// which we do automagically
this.localService = new Object ();
this.localService.name = this.strategy.getHostName ();
if (this.localService.name && this.localService.name.length)
{
// some hosts give .local in this and some don't
// we especially want to match the ones that don't
this.localService.name = this.localService.name.replace (".local", "");
this.localService.name = this.localService.name.toLowerCase ();
}
else
{
console.log ("MDNS() couldn't find hostname");
}
this.localService.host = this.strategy.getIPAddress ();
// note the polling period should be less than the default TTL
// polling period is in ms, TTL is in seconds, haha
this.pollingPeriod = 30000;
this.defaultTTL = 500;
};
/**
* Start Multicast DNS processing.
* Must be called prior to any request for discovery or registration.
*
* @param {function} inCallback - function to be called once startup is complete
*/
sensible.MDNS.prototype.start = function (inCallback)
{
var self = this;
this.strategy.open
(
5353,
function (inError)
{
if (inError)
{
console.log ("error calling bind: " + inError.toString ());
}
else
{
self.strategy.addMembership
(
"<IP_ADDRESS>",
function ()
{
self.strategy.listen (self.onPacketReceived.bind (self));
self.startPolling ();
}
);
}
if (inCallback)
{
inCallback (inError);
}
}
);
}
/**
* Cancel a request to resolve a hostname to an address.
*
* @param {object} inResolution - resolution descriptor returned by resolveHost()
*/
sensible.MDNS.prototype.cancelResolveHost = function (inResolution)
{
var result = false;
var resolutions = this.hostResolutionsByName [inResolution.name];
if (resolutions)
{
for (var i = 0; i < resolutions.length; i++)
{
if (this.resolutions [i] == inResolution)
{
resolutions.splice (i, 1);
result = true;
break;
}
}
}
return result;
}
/**
* Cancel a request to discover a service type.
*
* @param {object} inResolution - resolution descriptor returned by resolveService()
*/
sensible.MDNS.prototype.cancelResolveService = function (inResolution)
{
console.log ("MDNS.unregisterService(" + inResolution.type + ")");
var result = false;
var resolutions = this.serviceResolutionsByType [inResolution.type];
if (resolutions)
{
for (var i = 0; i < resolutions.length; i++)
{
if (this.resolutions [i] == inResolution)
{
resolutions.splice (i, 1);
result = true;
break;
}
}
}
return result;
}
/**
* Stop Multicast DNS operations.
*
*/
sensible.MDNS.prototype.stop = function ()
{
this.stopPolling ();
this.strategy.close ();
}
/**
* Register a host for proxy MDNS A record resolution.
* Note we leave names alone, we don't remove .local or anything like that.
*
* @param {string} inName - name to proxy resolve, eg printer.local
* @param {string} inHost - host to proxy resolve, eg <IP_ADDRESS>
*/
sensible.MDNS.prototype.registerHost = function (inName, inHost)
{
var name = inName.toLowerCase ();
if (this.hostsByName [name])
{
console.error ("host at " + key + " already registered...");
return null;
}
// passing null or undefined for the host means "just get it"
if (inHost == null || inHost.length == 0)
{
inHost = this.localService.host;
}
this.hostsByName [name] = inHost;
return name;
}
/**
* Register a service for proxy MDNS PTR record resolution.
*
* @param {string} inName - human readable service name, eg My Printer
* @param {string} inType - type of service, eg _printer._tcp.local
* @param {string} inHost - host of service, eg <IP_ADDRESS>
* @param {integer} inPort - port number of service, eg 2000
* @param {string} inTXTRecord - optional text record to additionally serve
*/
sensible.MDNS.prototype.registerService = function (inName, inType, inHost, inPort, inTXTRecord, inTTL)
{
console.log ("sensible.MDNS.registerService(" + inName + ")");
// passing null or undefined for the host means "just get it"
if (inHost == null || inHost.length == 0)
{
inHost = this.localService.host;
}
// note the key is just the host and port
// that's really the unique combo
var key = inHost + ":" + inPort;
if (this.servicesByKey [key])
{
console.error ("service at " + key + " already registered...");
return null;
}
var lowerCaseType = inType.toLowerCase ();
var service =
{
name: inName,
type: lowerCaseType,
host: inHost,
port: inPort,
text: inTXTRecord,
ttl: inTTL ? inTTL : this.defaultTTL
};
this.servicesByKey [key] = service;
if (this.servicesByType [lowerCaseType])
{
// there can't be a dupe, we'd have found it above
// so just add to the existing list
}
else
{
this.servicesByType [lowerCaseType] = new Array ();
}
this.servicesByType [lowerCaseType].push (service);
// ensure that everyone has up to date info
this.sendPTRResponse (service);
return service;
}
/**
* Request notification of name to host resolutions.
*
* @param {string} inName - name to resolve, eg printer.local
* @param {function} inCallback - function to call on resolution
* @returns {object} object to provide to unresolveHost() call to cancel
*/
sensible.MDNS.prototype.resolveHost = function (inName, inAddCallback, inRemoveCallback)
{
var lowerCaseName = inName.toLowerCase ();
var resolutions = this.hostResolutionsByName [lowerCaseName];
if (!resolutions)
{
resolutions = new Array ();
this.hostResolutionsByName [lowerCaseName] = resolutions;
}
var resolution =
{
name: lowerCaseName,
addCallback: inAddCallback,
removeCallback: inRemoveCallback,
hosts: new Object ()
};
resolutions.push (resolution);
this.sendARequest (lowerCaseName);
return resolution;
}
/**
* Request notification of service resolutions.
*
* @param {string} inType - type to resolve, eg _printer._tcp.local
* @param {function} inCallback - function to call on resolution
* @returns {object} object to provide to unresolveService() call to cancel
*/
sensible.MDNS.prototype.resolveService = function (inType, inAddCallback, inRemoveCallback)
{
console.log ("MDNS.resolveService(" + inType + ")");
var lowerCaseType = inType.toLowerCase ();
var resolutions = this.serviceResolutionsByType [lowerCaseType];
if (!resolutions)
{
resolutions = new Array ();
this.serviceResolutionsByType [lowerCaseType] = resolutions;
}
var resolution =
{
type: lowerCaseType,
addCallback: inAddCallback,
removeCallback: inRemoveCallback,
services: new Object ()
};
resolutions.push (resolution);
this.sendPTRRequest (lowerCaseType);
return resolution;
}
/**
* Cancel notification of host resolutions.
*
* @param {string} inName - name to cancel resolution, eg printer.local
*/
sensible.MDNS.prototype.unregisterHost = function (inName)
{
var unregistered = false;
var host = this.hostsByName [inName.toLowerCase ()];
if (host)
{
unregistered = true;
delete this.hostsByName [name];
}
else
{
console.error ("name " + name + " not registered...");
}
return unregistered;
}
/**
* Cancel the advertisement of a service.
*
* @param {string} inHost - host of service to cancel, eg <IP_ADDRESS>
* @param {integer} inPort - port number of service to cancel, eg 2000
*/
sensible.MDNS.prototype.unregisterService = function (inHost, inPort)
{
var unregistered = false;
// passing null or undefined for the host means "just get it"
if (inHost == null || inHost.length == 0)
{
inHost = this.localService.host;
}
var key = inHost + ":" + inPort;
var service = this.servicesByKey [key];
if (service)
{
unregistered = true;
// service.type is lowercased by register()
var services = this.servicesByType [service.type];
for (var i = 0; i < services.length; i++)
{
if (services [i].host == inHost && services [i].port == inPort)
{
services.splice (i, 1);
break;
}
}
delete this.servicesByKey [key];
}
else
{
console.error ("service " + key + " not registered...");
}
return unregistered;
}
// CALLBACKS
/**
* Called by the configured strategy upon receipt of a packet.
*
* @private
* @param {ArrayBuffer} inPacketBuffer - packet
* @param {string} inRemoteHost - originating host, eg <IP_ADDRESS>
* @param {integer} inRemotePort - originating port, eg 2000
*/
sensible.MDNS.prototype.onPacketReceived = function (inPacketBuffer, inRemoteHost, inRemotePort)
{
var packet = sensible.DNSPacket.parse (inPacketBuffer);
if (packet.flags & 0x8000)
{
// this is a response
if (packet.answers.length > 0)
{
var answer = null;
for (var i = 0; i < packet.answers.length; i++)
{
// dns record type 1 = A
if (packet.answers [i].type == 1)
{
answer = packet.answers [i];
var lowerCaseName = answer.name.toLowerCase ();
// console.log ("received A response for " + lowerCaseName);
var resolutions = this.hostResolutionsByName [lowerCaseName];
if (resolutions)
{
var host = this.getHostInfo (answer);
this.foundHosts [lowerCaseName] = host;
// find outstanding resolutions for this host
for (var i = 0; i < resolutions.length; i++)
{
if (resolutions [i].addCallback)
{
if (resolutions [i].hosts [host.key])
{
// this client already knows about this host
// console.log ("client already knows about host " + host.key);
}
else
{
resolutions [i].addCallback (host);
}
}
}
}
}
else
// dns record type 12 = PTR
if (packet.answers [i].type == 12)
{
answer = packet.answers [i];
var lowerCaseType = answer.name.toLowerCase ();
// console.log ("received PTR response for " + lowerCaseType);
// are we tracking this type?
var resolutions = this.serviceResolutionsByType [lowerCaseType];
if (resolutions)
{
// ok, remix the packet into something sensible
var service = this.getServiceInfo (packet, inRemoteHost, lowerCaseType);
this.foundServices [service.key] = service;
for (var i = 0; i < resolutions.length; i++)
{
if (resolutions [i].addCallback)
{
if (resolutions [i].services [service.key])
{
// this client already knows about this service
console.log ("client already knows about service " + service.key);
}
else
{
resolutions [i].services [service.key] = true;
resolutions [i].addCallback (service);
}
}
}
}
else
{
// i think the system works well enough to remove this log now :-)
// console.log ("no resolutions outstanding for " + lowerCaseType);
}
}
}
}
}
else
{
// this is a request, possibly
if (packet.questions.length > 0)
{
var question = packet.questions [0];
// dns record type 1 = A
if (question.type == 1)
{
var hostName = question.name.toLowerCase ();
// console.log ("received A request for " + hostName);
// console.log ("request for A record for " + hostName);
// console.log ("checking " + hostName + " against " + this.localService.name);
if (hostName == this.localService.name)
{
this.sendAResponse (hostName, this.localService.host);
}
else
{
// could be a proxy host registration for someone else...
var host = this.hostsByName [hostName];
if (host)
{
this.sendAResponse (hostName, host);
}
}
}
else
// dns record type 12 = PTR
if (question.type == 12)
{
// service type should be something like _appletv._tcp.local
var lowerCaseType = question.name.toLowerCase ();
// console.log ("received PTR request for " + lowerCaseType);
// console.log ("received request for type " + lowerCaseType + " with length " + inPacketBuffer.byteLength);
var services = this.servicesByType [lowerCaseType];
if (services)
{
// console.log ("found " + services.length + " services registered for " + lowerCaseType);
for (var i = 0; i < services.length; i++)
{
this.sendPTRResponse (services [i]);
}
}
}
}
}
return packet;
}
// PRIVATE
/**
* Inform the clients of this host that it has been removed.
*
* @private
* @param {object} inHost - host to expire
*/
sensible.MDNS.prototype.expireHost = function (inHost)
{
var resolutions = this.hostResolutionsByName [inHost.name];
if (resolutions)
{
for (var i = 0; i < resolutions.length; i++)
{
if (resolutions [i].removeCallback)
{
resolutions [i].removeCallback (inHost);
}
}
}
}
/**
* Inform the clients of this service that it has been removed.
*
* @private
* @param {object} inService - service to expire
*/
sensible.MDNS.prototype.expireService = function (inService)
{
var resolutions = this.serviceResolutionsByType [inService.type];
if (resolutions)
{
for (var i = 0; i < resolutions.length; i++)
{
if (resolutions [i].removeCallback)
{
resolutions [i].removeCallback (inService);
}
}
}
}
/**
* Remove any hosts whose TTL has expired, informing their clients.
* The assumption is that the TTL period is greater than the polling period.
*
* @private
*/
sensible.MDNS.prototype.expireHosts = function ()
{
var now = new Date ().getTime ();
for (var name in this.foundHosts)
{
var host = this.foundHosts [name];
// each service has a TTL and a timestamp when it was last discovered
// so combine the two to find the expiry in ms, and check...
var expiryTime = host.timestamp + (host.ttl * 1000);
if (expiryTime < now)
{
console.log ("expiring service: " + key);
this.expireHost (service);
delete this.foundHosts [key];
}
}
}
/**
* Remove any services whose TTL has expired, informing their clients.
* The assumption is that the TTL period is greater than the polling period.
*
* @private
*/
sensible.MDNS.prototype.expireServices = function ()
{
var now = new Date ().getTime ();
for (var key in this.foundServices)
{
var service = this.foundServices [key];
// each service has a TTL and a timestamp when it was last discovered
// so combine the two to find the expiry in ms, and check...
var expiryTime = service.timestamp + (service.ttl * 1000);
if (expiryTime < now)
{
console.log ("expiring service: " + key);
this.expireService (service);
delete this.foundServices [key];
}
}
}
/**
* Extract the pertinent information from an A type DNS packet.
*
* @private
* @param {ArrayBuffer} inPacketBuffer - packet
* @returns {object} object containing name, address, and TTL
*/
sensible.MDNS.prototype.getHostInfo = function (inARecord)
{
// note the default TTL should be more than the polling period (60 seconds)
// we set it to five minutes, here
var host =
{
name: inARecord.name.toLowerCase (),
address: inARecord.a,
ttl: inARecord.ttl,
rdata: inARecord.rdata,
timestamp: new Date ().getTime ()
};
if ((host.ttl * 1000) < this.pollingPeriod)
{
host.ttl = this.defaultTTL;
}
// abstracting how we make the key == good
host.key = host.name;
return host;
}
/**
* Extract the pertinent information from a PTR type DNS packet.
*
* @private
* @param {ArrayBuffer} inPacketBuffer - packet
* @param {string} inRemoteHost - originating host, eg <IP_ADDRESS>
* @param {string} inType - type of resolution, eg _printer._tcp.local
* @returns {object} object containing name, type, host, port, text, and TTL
*/
sensible.MDNS.prototype.getServiceInfo = function (inPacket, inRemoteHost, inType)
{
// note the default TTL should be more than the polling period (60 seconds)
// we set it to five minutes, here
var service =
{
name: "",
type: inType,
host: inRemoteHost,
port: 0,
text: "",
ttl: this.defaultTTL,
timestamp: new Date ().getTime ()
};
var updatedTTL = false;
for (var i = 0; i < inPacket.answers.length; i++)
{
var answer = inPacket.answers [i];
if (answer.type == 12)
{
// PTR record
// help out a little here by separating the name from the type
// the packet combines, but IMHO it's more useful separate
// remember the stray delimiter between the name & type
service.name = answer.ptr.replace ("." + inType, "");
service.ttl = answer.ttl;
updatedTTL = true;
}
else if (answer.type == 16)
{
// TXT record
service.text = answer.txt;
// don't override the PTR record's TTL
if (!updatedTTL)
{
service.ttl = answer.ttl;
}
}
}
if ((service.ttl * 1000) < this.pollingPeriod)
{
service.ttl = this.defaultTTL;
}
// now trawl the additionals for extra bits
for (var i = 0; i < inPacket.additionals.length; i++)
{
var additional = inPacket.additionals [i];
if (additional.type == 1)
{
// A record
service.host = additional.a;
}
else if (additional.type == 16)
{
// TXT record
// but if we got a TXT in the answer, don't override it here
if (service.text == null || service.text.length == 0)
{
service.text = additional.txt;
}
}
else if (additional.type == 33)
{
// SRV record
service.port = additional.port;
}
}
// rig up a unique key
service.key = service.name + "." + service.type + ":" + service.host + ":" + service.port;
return service;
}
sensible.MDNS.prototype.makeARecord = function (inService)
{
// add an A additional for the host
var hostElements = inService.host.split (".");
var aBuffer = new ArrayBuffer (4);
var aView = new Uint8Array (aBuffer);
for (var j = 0; j < 4; j++)
{
var digit = parseInt (hostElements [j]);
aView [j] = digit;
}
var aRecord =
{
name: inService.name,
type: 1,
clas: 1,
ttl: this.defaultTTL,
rdata: aView
};
return aRecord;
}
sensible.MDNS.prototype.makeHostNSECRecord = function ()
{
// calculate the size of the buffer
var hostName = this.strategy.getHostName ();
var length = 1 + hostName.length + 1;
// 1 for the window block number (0)
// 1 for the block length (4 for a host NSEC record)
// 4 bytes of bitmap shit
length += 6;
var buffer = new ArrayBuffer (length);
var view = new Uint8Array (buffer);
var offset = 0;
var nameElements = hostName.split (".");
for (var i = 0; i < nameElements.length; i++)
{
var nameElement = nameElements [i];
view [offset++] = nameElement.length;
for (var j = 0; j < nameElement.length; j++)
{
view [offset++] = nameElement.charCodeAt (j);
}
}
// terminating the name
view [offset++] = 0;
// window block 0 & length
view [offset++] = 0;
view [offset++] = 4;
// bitmap for RR types 1 and 28
view [offset++] = 0x40;
view [offset++] = 0;
view [offset++] = 0;
view [offset++] = 0x08;
if (offset != length)
{
console.log ("makeHostNSECRecord() offset length error");
console.log ("offset is " + offset + ", but length is " + length);
}
var record =
{
name: this.strategy.getHostName (),
type: 47,
clas: 1,
ttl: this.defaultTTL,
rdata: view
}
return record;
}
// HACK
sensible.MDNS.prototype.makeServiceNSECRecord = function (inService)
{
// calculate the size of the buffer
var fullServiceName = inService.name + "." + inService.type.toLowerCase ();
var length = 1 + fullServiceName.length + 1;
// 1 for the window block number (0)
// 1 for the block length (4 for a host NSEC record)
// 5 bytes of bitmap shit
length += 7;
var buffer = new ArrayBuffer (length);
var view = new Uint8Array (buffer);
var offset = 0;
var nameElements = fullServiceName.split (".");
for (var i = 0; i < nameElements.length; i++)
{
var nameElement = nameElements [i];
view [offset++] = nameElement.length;
for (var j = 0; j < nameElement.length; j++)
{
view [offset++] = nameElement.charCodeAt (j);
}
}
// terminating the name
view [offset++] = 0;
// window block 0 & length
view [offset++] = 0;
view [offset++] = 5;
// bitmap for RR types 16 and 33
view [offset++] = 0;
view [offset++] = 0;
view [offset++] = 0x80;
view [offset++] = 0;
view [offset++] = 0x40;
if (offset != length)
{
console.log ("makeServiceNSECRecord() offset length error");
console.log ("offset is " + offset + ", but length is " + length);
}
var record =
{
name: inService.name + "." + inService.type.toLowerCase (),
type: 47,
clas: 1,
ttl: 120,
rdata: view
}
return record;
}
sensible.MDNS.prototype.makePTRRecord = function (inService)
{
var fullServiceName = inService.name + "."  + inService.type.toLowerCase (),
type: 33,
clas: 1,
ttl: 120,
rdata: srvView
};
return srvRecord;
}
sensible.MDNS.prototype.makeTXTRecord = function (inService)
{
if (inService.text == null)
{
// this happens all the time
inService.text = "";
}
var txtBuffer = new ArrayBuffer (1 + inService.text.length);
var txtView = new Uint8Array (txtBuffer);
var offset = 0;
txtView [offset++] = inService.text.length;
// this is TXT, so we can not do the fucked format
for (var i = 0; i < inService.text.length; i++)
{
txtView [offset++] = inService.text.charCodeAt (i);
}
var txt =
{
name: inService.name + "." + inService.type.toLowerCase (),
type: 16,
clas: 1,
ttl: inService.ttl,
rdata: txtView
};
return txt;
}
sensible.MDNS.prototype.logPacket = function (inPacket)
{
console.log ("LOG PACKET");
console.log ("id = " + inPacket.id);
console.log ("flags = " + inPacket.flags.toString (16));
console.log ("qucount = " + inPacket.questions.length);
console.log ("ancount = " + inPacket.answers.length);
console.log ("aucount = " + inPacket.authorities.length);
console.log ("adcount = " + inPacket.additionals.length);
for (var i = 0; i < inPacket.questions.length; i++)
{
var question = inPacket.questions [i];
console.log ("question " + i);
console.log ("name = " + question.name);
}
for (var i = 0; i < inPacket.answers.length; i++)
{
var answer = inPacket.answers [i];
console.log ("ANSWER " + i);
console.log ("name = " + answer.name);
console.log ("type = " + answer.type);
console.log ("class = " + answer.clas);
console.log ("ttl = " + answer.ttl);
if (answer.type == 1)
{
console.log ("address = " + answer.a);
}
else
if (answer.type == 12)
{
console.log ("ptr = " + answer.ptr);
}
else
if (answer.type == 16)
{
console.log ("text = " + answer.txt);
}
else
if (answer.type == 28)
{
console.log ("aaaa = " + answer.aaaa);
}
else
if (answer.type == 33)
{
console.log ("port = " + answer.port);
}
else
{
console.log ("unknown answer type " + answer.type);
}
}
for (var i = 0; i < inPacket.additionals.length; i++)
{
var additional = inPacket.additionals [i];
console.log ("ADDITIONAL " + i);
console.log ("name = " + additional.name);
console.log ("type = " + additional.type);
console.log ("ttl = " + additional.ttl);
if (additional.type == 1)
{
console.log ("address = " + additional.a);
}
else
if (additional.type == 12)
{
console.log ("ptr = " + additional.ptr);
}
else
if (additional.type == 16)
{
console.log ("text = " + additional.txt);
}
else
if (additional.type == 28)
{
console.log ("aaaa = " + additional.aaaa);
}
else
if (additional.type == 33)
{
console.log ("port = " + additional.port);
}
else
if (additional.type == 47)
{
if (false)
{
console.log ("nsec hack name = " + additional.name);
}
else
{
console.log ("nsec name = " + additional.nsec.name);
for (var j = 0; j < additional.nsec.windows.length; j++)
{
var window = additional.nsec.windows [j];
console.log ("nsec window " + window.number);
console.log ("nsec types " + window.types);
}
}
}
else
{
console.log ("unknown answer type " + additional.type);
}
}
}
sensible.MDNS.prototype.sendARequest = function (inName)
{
// console.log ("sending question for " + inType);
var packet = new sensible.DNSPacket ();
packet.id = 0;
packet.flags = 0;
var question =
{
name: inName,
type: 1,
clas: 1
}
packet.questions.push (question);
var buffer = packet.serialise ();
this.strategy.send (buffer, "<IP_ADDRESS>", 5353);
}
sensible.MDNS.prototype.sendAResponse = function (inName, inHost)
{
var packet = new sensible.DNSPacket ();
packet.id = 0;
packet.flags = 0x8400;
var service = null;
if (inName)
{
service =
{
name: inName,
host: inHost
};
}
else
{
service = this.localService;
}
packet.answers.push (this.makeARecord (service));
// console.log ("sending A response for " + service.name + " (" + service.host + ")");
var buffer = packet.serialise ();
this.strategy.send (buffer, "<IP_ADDRESS>", 5353);
}
sensible.MDNS.prototype.sendPTRRequest = function (inType)
{
console.log ("sending question for " + inType);
var packet = new sensible.DNSPacket ();
packet.id = 0;
packet.flags = 0;
var question =
{
name: inType,
type: 12,
clas: 1
}
packet.questions.push (question);
var buffer = packet.serialise ();
this.strategy.send (buffer, "<IP_ADDRESS>", 5353);
}
sensible.MDNS.prototype.sendPTRResponse = function (inService)
{
var packet = new sensible.DNSPacket ();
packet.id = 0;
packet.flags = 0x8400;
packet.answers.push (this.makePTRRecord (inService));
packet.additionals.push (this.makeARecord (inService));
packet.additionals.push (this.makeTXTRecord (inService));
packet.additionals.push (this.makeSRVRecord (inService));
// packet.additionals.push (this.makeHostNSECRecord (inService));
// packet.additionals.push (this.makeServiceNSECRecord (inService));
var buffer = packet.serialise ();
this.strategy.send (buffer, "<IP_ADDRESS>", 5353);
}
/**
* Poll to refresh the type and host tables.
* Simplistic, but it works.
* The only issue is that the polling period has to be less than TTL.
*/
sensible.MDNS.prototype.startPolling = function ()
{
var self = this;
this.poller = setInterval
(
function ()
{
for (var type in self.serviceResolutionsByType)
{
self.sendPTRRequest (type);
}
for (var name in self.addressResolutionsByType)
{
self.sendARequest (name);
}
self.expireHosts ();
self.expireServices ();
},
this.pollingPeriod
);
}
sensible.MDNS.prototype.stopPolling = function ()
{
if (this.poller)
{
clearInterval (this.poller);
this.poller = null;
}
else
{
console.log ("stopPolling() called with no poller task");
}
}


nips nips2007 nips2007-132 nips2007-132-reference knowledge-graph by maker-knowledge-mining
Source: pdf
Author: Simon Osindero, Geoffrey E. Hinton
Abstract: We describe an efﬁcient learning procedure for multilayer generative models that combine the best aspects of Markov random ﬁelds and deep, directed belief nets. The generative models can be learned one layer at a time and when learning is complete they have a very fast inference procedure for computing a good approximation to the posterior distribution in all of the hidden layers. Each hidden layer has its own MRF whose energy function is modulated by the top-down directed connections from the layer above. To generate from the model, each layer in turn must settle to equilibrium given its top-down input. We show that this type of model is good at capturing the statistics of patches of natural images. 1


The basic capture functions allow you to record images, audio and text with basic location data attached to them. However, it is clear that many users will want to capture more complex data against strict criteria for project. In such cases, the Custom Data Forms allow the user to design data capture forms that suit their needs. These forms help ensure that all the data is captured in a consistent manner.
The Custom Data Forms are created in the FieldTrip GB Authoring tool (fig 5.1). This is not part of the app, it is a web-based form that users would access through their desk-computer or laptop.
To be able to deploy custom data forms to your device you need to have a cloud storage account with Dropbox (more cloud storage providers such as Google Drive and XX will be added in time). Click the ENTER button to access the Authoring Tool, you will be asked to log-in to Dropbox at this point.
Once you have logged in you will see the Authoring Toolbar (fig 5.2). To create a new data form, click the Create new form option. The first thing to do is to give your form a name (fig 5.3)
You can now start adding elements to the data form. This is done by dragging an element from the list on the left, into the central area. You can then customise the element using the option list on the right side of the screen (fig 5.4)
The elements available to you are:
Text - Add a small text field
Range - Add a numerical field and control the number of steps, the min and the max values. This will appear as a slider on the form.
In all cases, you can specify if the element is mandatory or not. If it is mandatory, the user will be forced to fill it in before they can save the form. You can also preview the form before you deploy it. The preview is based around a 4 inch screensize as it is important to see how it will look on the device.
When you are ready to deploy the form to your device, click the Save Button (Actions --> Save) and the form will be uploaded to your Dropbox account.
Accessing the Custom Form from your Device
To get access to your custom form from your device you first need to make sure you can connect to your cloud storage from the device (Dropbox). Next you need to log-in to the FieldTrip GB app The log-in button can be found on the Home screen in the Download and Synch section (fig 5.5).
You are essentially logging into your cloud storage account and allowing FiledTrib GB to access it. You will see a validation form (Fig 5.6).
Once logged in, you should see a Synch Button (fig 5.7) in the Download and Synch section of the Home screen. To update the device with the custom data form you created in the Authoring tool, click the synch button. Note - you will need a 3G/WiFi connection at this point as the app will have to connect to your cloud storage across the internet. Yu dont have to do anything else, the app will grab the forms and put them in the right place on the device.
Once you have Synched the device with your Cloud Storage you will be able to access your Custom Forms by entering the Capture Section. You will now see your custom forms listed, in this example we have 2 forms; trees and Geology (fig 5.8).
To access a form, simply click the one you want to log data against and it will open (fig 5.9). Note - you cannot modify forms within the app, modifications can only be made through the Authoring Tool.


Splint should compile effortlessly on standard Unix systems, and with a bit of effort on non-Unix platforms. If you produce a port for a non-Unix platform, please let<EMAIL_ADDRESS>know.
To build Splint you need:
Instructions:
Copy this package to the directory where you want to build Spint. When the tar file is extracted, it will create a splint-3.1.1 subdirectory.
This will create a Makefile with settings for your system. Use configure --prefix=directory if you want to install Splint in prefix directory directory.
GNU's make utility is required; it may be named gmake or gnumake on your system. It is best to do this in an emacs shell or a buffered terminal, so you can scroll through the output.This builds Splint. While it is building, subscribe to the splint-announce mailing list by visiting http://www.splint.org/lists.html
If the build was successful, it then runs the test suite. You should see:
Examine the test output. If there are errors, send a bug report to<EMAIL_ADDRESS>splint 3.1.1... Version Info: Splint 3.1.1 --- 11 Feb 2002 Maintainer<EMAIL_ADDRESS>... (about 100 lines of test output elided) Checking manual... Checking tests2.2... Checking tests2.4... Checking tests2.5... Checking db1... Checking db2... Checking db3...
Note: If possible do not built splint in a directory under /usr/. If the test suite is run in a directory under /usr/ for example /usr/src/, it will report errors even if Splint was built correctly.
- make install
- Set environment variables:
LARCH_PATH - path to search for splint libraries and initializations files. If you are using the standard directories, this should be .:base-directory/splint-3.1.1/lib.Put the commands to set these variables (the actual commands will depend on the shell you are using) in one of your initialization dotfiles (usually ~/.environment).LCLIMPORTDIR - directory containing lcl imports files. If you are using the standard directories, this is base-directory/splint-3.1.1/imports.
Set up your PATH to include the directory containing splint-3.1.1/bin/splint, or move the binary to a directory on your command path.


{% extends "layout/flex-base.html" %} {% block title %}Home{% endblock %} {% block head %} {{ super() }} {% endblock %} {% block content %}
The route requested was not found in this application.


- editAdventures(View) - Method in class cmput301f13t10.view.MainActivity
-
Starts up the library for editing adventures on edit button click.
- ElasticSearchResponse<T> - Class in cmput301f13t10.model
-
- ElasticSearchResponse() - Constructor for class cmput301f13t10.model.ElasticSearchResponse
-
- ES_ADVENTURE - Static variable in class cmput301f13t10.presenter.AppConstants
-
The url extention for adventures
- ES_IDS - Static variable in class cmput301f13t10.presenter.AppConstants
-
The url extention for the list of all ids
- ES_URL - Static variable in class cmput301f13t10.presenter.AppConstants
-
The URL of the elasticsearch page
- ESDeleteCommand - Class in cmput301f13t10.model
-
A command to delete an adventure from the database
- ESDeleteCommand(int, Callback) - Constructor for class cmput301f13t10.model.ESDeleteCommand
-
Constructor
- ESGetCommand - Class in cmput301f13t10.model
-
Command for retrieving a given adventure from the database
- ESGetCommand(int, Callback) - Constructor for class cmput301f13t10.model.ESGetCommand
-
Constructor
- ESGetIdsCommand - Class in cmput301f13t10.model
-
Command for getting all remote ids of adventures stored in the database
- ESGetIdsCommand(Callback) - Constructor for class cmput301f13t10.model.ESGetIdsCommand
-
Constructor
- ESInsertCommand - Class in cmput301f13t10.model
-
Command to insert an adventure into the database
- ESInsertCommand(AdventureModel, Callback) - Constructor for class cmput301f13t10.model.ESInsertCommand
-
Constructor
- execute() - Method in interface cmput301f13t10.model.Command
-
Execute the command
- ExpandableHelpListAdapter - Class in cmput301f13t10.view
-
This class adapts an Array of Help items into a list for an expandable list
view
- ExpandableHelpListAdapter(Context, ArrayList<HelpItem>) - Constructor for class cmput301f13t10.view.ExpandableHelpListAdapter
-


Water
SDE4's uses a rainwater collection system combined with bioswales and on-site detention to provide partially for its non-potable water usage.
Bio Retention Basin
The bioretention basin helps SDE4 reharvest one-third of its rainwater runoff for irrigation and other non-portable demands of the building.
Active, Beautiful and Clean (ABC) Water Programme
SDE4 is an ABC Waters site, as it employs a combination of on-site retention and rainwater harvesting strategies to protect water quality and enhance biodiversity.
Water Feature
The water feature is only active when it rains - adding sound, texture, and movement to the landscape while becoming a pedagogical tool for teaching and research.


'True Crime' (1999)
A movie review by Walter Frith
<EMAIL_ADDRESS>Member of the 'Online Film Critics Society' http://www.ofcs.org
The last time Clint Eastwood made a movie as a director that was under two hours was 1990's 'White Hunter, Black Heart' in which he played a variation on movie director John Huston who was on a quest to get 'The African Queen' made. Based on the novel by Andrew Klavan and written for the screen by Larry Gross, Paul Brickman and Stephen Schiff, 'True Crime' has the usual stamp of an Eastwood directed film. It's long, and has a somewhat corroded and protracted structure but Eastwood manages to land on his feet the way he usually does --- by making it absorbing. You would expect to find a quiet and somewhat muted tone to a film that is a suspenseful take on the execution of a possibly innocent man.
 As the film is in its early stages, Everett is seen sleeping with the wife of one of his editors (Denis Leary) who later finds out about the affair and upon confronting Everett about it, both of them find that cooler heads prevail. The same can't be said, however, for Everett's senior editor (James Woods), who is hilarious and has some of the film's best scenes of dialogue in his conflicts with Everett.
At San Quentin prison, a death row inmate named Frank Beachum (Isiah Washington) is about to be executed on the day a young female journalist from Everett's newspaper is supposed to do a human interest story about the event. She is killed on in a car wreck on the infamous Dead Man's curve and the assignment goes to Everett. He is told to do some straight reporting and naturally he doesn't listen and the more he thinks about it and observes the facts of the case, the more he finds out that the prisoner may be innocent and he is on a last minute crusade to save his life. Isiah Washington is excellent in this film as Beachum and he accepts his fate in a very calm manner. The guards at the prison during his final hours are polite and make things as easy for him as possible and Beachum refuses to show any remorse for the crime to the prison chaplain since he insists he's innocent. His wife and little girl visit him (assuming its the last time) and it's a very emotional scene.
Everett tries to balance his coverage of the story with his personal life and had, on this day, promised to take his little girl to the zoo. Never one to balance his personal and professional life in proper perspective, Beachum neglects his duty as both father and husband and pursues the story which should be his first priority after all since a man is about to die.
In addition to being a taut and nail biting dram, 'True Crime' also succeeds at being an very interesting rap of social commentary on both sides of the death penalty. It offers an explanation that at the time of lethal injection, two guards push the button setting off the machine to inject poison into the prisoner's system but a computer scrambles the motion of events so each guard doesn't know who really administered the deadly punishment. Sort of like the theory of a firing squad where 6 men open fire on their prey but only one has live ammunition. The film also shows the doubts and fears that prison officials have with carrying out their duty.
Unfortunately, the film takes wild an unexpectedly bizarre turn into degrading its final twenty minutes into becoming an action picture. Eastwood makes the film seem like it will throw you a curve ball at the last minute and while waiting for the inevitable to happen, Eastwood is able to keep the audience on the edge of their seats as things may turn out differently than expected. And Clint even uses slow motion at one point, something he's long been against and I can't remember the last time he EVER used it! Through it all, the movie is well worth a look for the most part, but waivers from being a potential classic and is instead another installment in the Clint Eastwood director's library where his style is becoming too typical. How many times can you direct a film with pace and feeling of jazz music, Eastwood's favourite form of musical rhythm which doesn't always work in his movies!
OUT OF 5 > * * * 1/2
Visit FILM FOLLOW-UP by Walter Frith http://www.cgocable.net/~wfrith/movies.htm
* * * * * - a must see * * * * 1/2 - don't miss it * * * * - an excellent film * * * 1/2 - a marginal recommendation * * * - can't quite recommend it * * 1/2 - don't recommend it * * - avoid it * 1/2 - avoid it seriously * - avoid it AT ALL COSTS 1/2 - see it at your own risk zero - may be hazardous to your health
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


PlayerStatus
public enum PlayerStatus : UInt32
Enum describing all possible status of a player
-
Player currently has no media
Declaration
Swift
case noMedia = 0
-
Player is preparing media for playback
Declaration
Swift
case preparingMedia
-
Player is ready to play media
Declaration
Swift
case readyToPlay
-
Player is playing media
Declaration
Swift
case playing
-
Player playback is paused
Declaration
Swift
case paused
-
Player is seeking
Declaration
Swift
case seeking
-
Player playback has finished
Declaration
Swift
case finished
-
Player has an error
Declaration
Swift
case error
-
Returns a string representation of the status
Declaration
Swift
public var stringValue: String { get }


Alex1942's Projects
This is my personal website used to inform people about useful projects including Arduino, Raspberry Pi and more. It is hosted on an old Raspberry Pi and so it may go out at any time. Keep in mind that my public ip is dynamic so the url might change.


Mithr Scholarships are offered to Higher Secondary and Senior School (+2) Students, Technical and Professional College Students, who have overcome the adversity of their family’s circumstances and showed excellence in their academic records until recently.
Click here to know about Mithr Scholarship Programs and guidelines before applying.
1. Application forms can be downloaded from our website. It can also be issued by the project co-ordinator either in person or on forwarding an email request.
2. The completed application form has to be submitted either directly to Mithr Project Coordinator or through email or registered post to the Mithr Foundation with a copy of all required documents mentioned in eligibility criterion.
3. Qualified students will be notified and scholarships will be given in instalments based on their academic performance and attitude.
4. Regular enquires will be made by the Project Co-ordinator to evaluate the progress of student and a record will be maintained in this regard for reference.
5. Student should maintain a minimum of 80% marks in all exams for availing continued benefits of Mithr Merit Scholarship Award.
6. The final decision for scholarship allotment and discontinuance will be made by the Mithra Foundation Team for Quality Assurance and Compliance.
7. Mithr Merit scholarship should be used for educational purposes only (fees,books etc).
8. Mithr provide equal opportunities for all the deserving students, irrespective of caste,religion or gender.


Date pickers use a dialog window to select a single date.
The selected day is indicated by a filled circle. The current day is indicated by a different color and type weight.
In the next example we will show you how to use a simple date picker and also how to set the language of the calendar.