Own your own casino gambling machine on the blockchain!
People's Casino © allows you to purchase and run your own fully
functional gambling application on the Ethereum or Polygon
blockchain. Each casino is a unique online gambling machine. You
are responsible for supplying the house reserve, and solely
benefit from all earnings. After you have purchased a casino for a
flat rate, we do not take ANY percentage of casino takings.
Each casino has its own unique url, check out the example below:
https://peoplescasino.online/1
(Or on the Polygon network)
https://polygon.peoplescasino.online/1
Since each casino is ERC-721 compliant, they can be bought and
traded like any other Crypto token. The first sales of People's
Casino's © will be auctioned off at OpenSea. After the intial
launch, individual casinos can be traded with anyone, for any
price! Get in early for your investment today!
Follow the link below to buy your own casino on OpenSea today!
Generation 1 on sale now!
ETHEREUM
POLYGON


Contrasting Relational Databases and Full-Text Search Engines
By: Mark Bennett
By Mark Bennett, New Idea Engineering, Inc. - Issue 9 - June 2004
Introduction
Full-text search engines evolved much later than traditional database engines, as corporations and governments found themselves with more and more unstructured textual data in electronic format. These new text documents didn't fit well into the old table-style databases, so the need for unstructured full-text searching was apparent.
Since it was developed later, search engine technology borrowed heavily from the database world, and many search engines still employ some type of traditional table structures in their underlying architecture. Some text retrieval companies were even staffed with employees who came from traditional database company backgrounds. Many of the key RDBMS paradigms have also migrated into search engine technology, though often renamed or recast.
Overview of Full-Text Architecture
Figure 1 shows a generalized, high-level architecture of most of the commercial quality full-text engines currently available.
Figure 1
The indexing process begins when an application inserts data into a row in the main document index. In the simplest case, this index contains one row per document, and at a minimum contains the name of the external file or document stored in the key field. Additional field values ??? for example, document title ??? can be inserted at the same time. If the source of the data resides in a relational database, the primary key in the relational table or view goes in the main document index key field.
Once the data is inserted, the indexing engine opens the external document and creates an ordered word list to load into the main word index. The engine repeats this process for every record in the document index.
During the indexing process, each vendor will typically create other indices intended to provide additional features such as Soundex.
While searching is generally available during the indexing process, only completed records are searchable; and for performance, most engines batch together a number of records to index more efficiently.
When a query arrives, either programmatically or as a result of a user request, the full-text engine accesses the sorted and optimized word index to identify which documents contain the requested term(s). The engine creates a list of documents that qualify, typically provided as a list of pointers into the main document index.
This permits the engine to access and display a result list made up of any fields stored in the main index, calculate a relevance weight, and display a list of results.
The description of the internal architecture will be extended throughout the report.
Advantages Over Traditional Techniques
This section summarizes some of the advantages of search engines over traditional database engines. These advantages are typical of high-end search engine products.
- Optimized to Handle Textual Data
Full-text engines are specifically optimized to handle textual data. In particular, proper customer names, city, street names and other geographic markers are all textual in nature. This type of textual data is often subject to multiple valid and invalid spellings. Further, proper names are often represented in many un-normalized forms. - Granular Index Structure
Index structure of full text engines is more granular, allowing for rapid indexed access to specific words and phrases. - More Flexible Query Operators
Search engines offer many more query operators, such as language stemming, thesaurus, fast wildcard matches, statistically based similarity and word densities, proximity, Soundex and other "fuzzy" matching techniques. - Hybrid Search Support
Search engines allow for hybrid searches that can search both traditional fielded data and textual data in the same query. - Relevancy Weighting
Search engines provide relevancy weights to likely matches, allowing for much finer tuning of search results.
Technical Similarities
While relational database systems and full-text search engines are optimized to process fundamentally different types of data, there are a number of similarities between the two.
- Query Processing
For both relational and full-text engines, a query is processed and passed to the engine to retrieve data. While most relational systems use largely standard syntax, full-text systems generally use proprietary syntax. One notable exception is Fulcrum, which bases its query syntax on SQL. - Data Loading
As with relational systems, data must be loaded into full-text systems. And like relational systems, how the data is organized and loaded can impact later success of the application. And, as with relational systems, data is loaded into full-text engines both in bulk periodically or on a record-by-record real-time basis. - Data Indexing
Once data is loaded into relational systems, it should be indexed for optimum performance. The same is true for full-text systems, although indexing is required for any retrieval, not just to optimize performance.
Search engines create much more extensive indices than a traditional relational systems. A full-text engine typically creates an index of every word in every document, and some full-text engines index character pairs and triplets as well as full words.
Technical Differences
While there are similarities between full-text and relational technologies, there are a number of differences as well because of the fundamental differences between the types of data being indexed and the flexibility of the retrieval options. While the differences can present some challenges, they also present the opportunity to take advantage of the key features of full-text search to provide an innovative solution to the problem at hand.
- Differences in Technical Vocabulary
As mentioned, full-text and relational systems use many similar terms. For example, both relational and full-text systems use the term "index" in almost the same way, but there are some differences. These vocabulary differences are of special note for people with a relational background who start working with full-text engines.
As suggested earlier, a user or program generates a query that is passed to a relational or full-text engine, which processes the query and returns a result set. A relational system returns rows of fielded data. A full-text system returns meta-data representing documents.
A database or table in the relational world is similar, but not identical to, a collection in the full-text world. In some cases, a collection is more analogous to a relational view. What a relational system refers to as a result-set record is often referred to as a document by full-text engines.
Other terms are specific to full-text engines and vendors, and have no meaning in the relational environment.
In the same way, some concepts from the relational world are conspicuously absent from full-text environment. As we will discuss, full-text engines do not directly use joins and outer joins. Also, since full-text engines tend to serve as a read-only medium, there is much less emphasis on transactions and related mechanisms. People familiar with relational systems may be initially puzzled by their absence, given their importance in the database world. - Data Structure
Relational engines typically store structured data such that associated data is stored in the same record or row, with the components organized into identified fields or columns of information. Formatted documents and images are maintained in special long fields such as binary long objects, although the scope of commands that can be used on these long fields is limited.
Full-text engines are optimized for processing formatted and unformatted documents, but they must also be able to process limited structured data such as document titles, authors, and descriptions. The command sets of most full-text engines are optimized for flexible retrieval of documents, with a less feature-rich set of commands to process and retrieve the structures data. - Query Syntax
There is much wider variety of query language syntax in full-text engines. Many engines do support the classic "AND", "OR" and "NOT" operators in some form; some engines even allow for complex nested queries using parenthesis or other nesting syntax. A modern pseudo-standard is the "Internet syntax", which allows for "+" and "-" to be used as a shorthand for Boolean operators. Many search engines actually support multiple syntaxes that can often be configured when a search is performed. - Additional Full-Text Operators
Advanced search engines typically offer a wider variety of query operators than traditional relational engines. Examples include thesaurus, language stemming, Soundex, "typo" and proximity qualifiers.
While some of these operators could be simulated with a relational database, others require special indexing of a scope and granularity well beyond that which is available in relational systems. - Weighting
Relational queries typically return rows that match the specified query in arbitrary order, or sorted by a field specified in the query. Records that are returned match the query; and records that do not match the query are simply not returned.
Most advanced full-text engines will also retrieve only those documents that match the query, but additionally "weight" each returned document with a relevancy score, so that the results set is not just an unordered list of matching records. Typically, the weight is calculated using proprietary algorithms based on the vendor, although most engines provide syntax for affecting the final weight. Full-text queries typically return a much larger percentage "records" than a traditional query, but frequently only the higher ranking matches are of interest.
Most full-text result lists are intended for presentation to a human operator, who can evaluate attributes of the returned document ??? title, author, summary, or other attributes ??? to identify the most appropriate document. - Different Usage Patterns
Search engine users typically issue shorter initial queries than a skilled SQL user, but will often issue subsequent refined queries to drill-down to find the most relevant documents. - Joins
Search engines typically do not perform database joins; instead they often have a much simpler arrangement of data, perhaps somewhat analogous to relational database views. - Outer Joins
There is no direct analog to an "outer join" in full-text engines. Any required complex data gathering tasks would usually be performed prior to indexing the full-text data.. - Simpler Table Structure in Full-Text Systems
Unlike traditional databases, a search engine administrator will typically deal with only a few document tables, referred to by most vendors as "collections", "catalogs" or "document indices". Nonetheless, full-text engines may internally be using multiple table structures to store their indices.
A hypothetical Human Resources illustration may help clarify the difference between relational databases and full-text indices.
With a relational database, HR data would be broken up into many tables. Even for a simple object model such as "employees", there may a dozen tables, relating addresses, referencing department records, tax and payroll records, and 401K records.
For a full-text engine, employees would probably be indexed in a single collection, with each "document" representing an individual employee. This document can represent a single, physical document, or perhaps more likely in this HR example, a virtual document. - Virtual Documents
At the heart of full-text systems is the concept of a ???unit of retrieval???. This is often a file or document, but when the source data is relational in nature, the unit of retrieval is typically a ???virtual document??? composed of data from a number of columns and tables.
In the earlier example of an HR database, a virtual document made up of a number of columns is created for each employee. This could be an actual relational view, or it could be a ???virtual view??? created only during the full-text indexing phase. This primarily textual document might have the employee name, job skills, manager's name, and perhaps a copy of the employee???s resume. A full-text search for the employee name, the manager name, or for the skills listed in the employee???s resume would be returned. Note that a full-text collection would probably not be used for reporting purposes, or to find tax or 401K-contribution information.
Virtual documents often contain predefined regions known as ???zones???, which are similar to fields. With a zone, created at index time, searches can be narrowed down more precisely. Using the earlier HR example, if the manager's name is identified as a zone at index time, a query could request only those documents where the manager???s name appears in the manager zone. Thus, a document with the manager???s name in the employee resume would not be returned in this case. - Document Keys
As in relational systems, full-text documents are identified using a key field. In full-text systems, the document key may be a file or document name, or a URL. If the full-text system is used to index and search relational data, the document key is typically the primary key in the relational table or view. - Data Types and Document Formats
Most full-text engines support character, numeric and data/time formats in addition to text. These fields can be used in searching, sorting and displaying results. Their use in searching is discussed below.
There is a much wider variety of native document format support with full-text engines. These documents are not just stored as "blobs"; they are actually opened and their contents indexed. Typically supported formats include text, HTML, and various 'binary' document formats such as Microsoft Word, Excel, and PowerPoint; some engines handle PDF and XML as well. Many search engines leave the original documents intact, in their original location, and store binary indices pointing to those documents.
Vocabulary Comparison Summary
Table 1 summarizes vocabulary between relational and full-text databases. Due to the large number of vendors and broad use of terms, this table can only serve as an approximation.
| RDBMS Term(s) | Full-Text Term(s) | Notes |
| database | collection, document index or catalog | Varies widely |
| table | segment or partition | This is typically transparent to the casual Search Engine administrator; you typically do not address individual partitions or segments. |
| record | document, record, page, web page or result | Traditional search engines deal in terms of "documents"; more modern Internet engines talk of "web pages" |
| field | field, document field, meta field, zone | Search engines often have two different ways of storing data. When it is stored in the document index, it is usually called a "field". When it is stored in the word index, it is usually called a "zone". Each type of storage has its own benefits. |
| blob | zone | Larger segments of text are typically stored as zones |
| index (noun) | collection, document index or word index | In both worlds it typically refers to a large binary data-store residing on a disk |
| index (verb) | index or spider | The tabulating and storing of data into the binary indices |
| query | query or search | Same terminology in both |
| join | n/a | Full-text engines do not usually do "joins" at search time |
| import/export | n/a | Most full-text engines do not offer robust important and export capabilities. Some vendors do offer import tools. Though indexed, documents are typically not imported directly into a full-text database. The process of "indexing" or "spidering" can be thought of as a type of import, although the original source documents are left where they were. |
| SQL | n/a | Though there are some full-text query language standards, they are not widely supported or implemented. The closest semi-standard is the "Internet syntax" of some vendors, where + and - service as AND and NOT, quotation marks demark exact phrases, and ()'s are often recognized to convey precedence. |
| ODBC | n/a | There is no widely used standard. Most modern full-text engines do offer access via the HTTP protocol's CGI mechanism, though the specific field names to use vary widely from vendor to vendor. |
Summary
Because full-text search engines evolved after, and borrowed heavily from, traditional database engines, administrators should feel right at home. Internalizing the new vocabulary will help complete the transition. If


sdr-melbourne 2018-08-30
Contents
I'm Russ
@rfc6919
<EMAIL_ADDRESS>Security systems are interesting
Let's look at an alarm
Fixed-code systems are boring
Let's look at something that's (hopefully) not entirely crap
Manufactured (or just assembled/packaged?) in North America
Australian importer/distributor
Alarm monitoring providers as resellers (also Amazon retailers, ofc)
Not "secure site" level
I notice the keypads in retail, small offices
Central unit, siren, phone line, GSM/3G
Arm/disarm, status display, end-user management
Motion, door/window, smoke, glassbreak, siren
2-way comms (remote units are Tx/Rx)
Remote units require enrollment
"RF Jamming Detection" ("TROUBLE!")
433MHz and 868MHz (!)
Sounds reasonable, perhaps I won't get anywhere interesting without dumping the firmware.
433.91MHz PWM ASK, 200µs/5kBd sub-symbol, 600µs/1.66kBd symbol
Preamble: 4 on, 13 cycles of off/on, 2 off, 6 on, 2 off
No apparent sync word
Data: 32 or 64 symbols ( 1=on/on/off, 0=on/off/off )
Trailer: 1 final pulse on
Remotes just send if they've got something to say
Console sends ~0.1s of on/off as a wakeup when it wants (possibly battery-powered) remotes to pay attention
luaradio bodge to capture on-air data (including signal strength), dump as json, then I can process/mangle with jq:
{ "timestamp":1535333985.1992, "raw_payload":"1111010101010101010101010101010011111100 ...110...100... 1", "signal_strength":0.19165825719635, "payload":"...1...0..." }
No fixed prefix in payload: no sync word? (but the preamble has a well-defined end)
No common prefixes in payload: no target address?
Small changes in payload function result in bit changes throughout payload data: no obvious command/address fields (eg: person A arm vs. disarm, or person A arm vs. person B arm)
I guess the comms are encrypted, or at least scrambled/whitened (per-site code?)
Note
I won't be showing you any actual packet payloads.
Packets will be labeled '[A-Z]x' for 32-bit, '[A-Z][A-Z]' for 64-bit, and '**' for wakeup. All packets with the same label (eg: Gx) have exactly the same payload.
I've observed 33 distinct data packets across a month of data collection - clearly the packets are only scrambled/whitened. Perhaps this system isn't as good as I'd hoped. :(
Every ~4 minutes there's a wakeup, then a sequence of 8 packets (Ax to Hx) taking ~2 seconds in total:
{ "t":"01:03:32", "l":"**", "s":1.2713464065906 } { "t":"01:03:32", "l":"Ax", "s":1.2709111290820 } { "t":"01:03:32", "l":"Bx", "s":1.2712075359681 } { "t":"01:03:33", "l":"Cx", "s":1.2711559108325 } { "t":"01:03:33", "l":"Dx", "s":1.2712458040979 } { "t":"01:03:33", "l":"Ex", "s":1.2712313979864 } { "t":"01:03:33", "l":"Fx", "s":1.2712849719184 } { "t":"01:03:34", "l":"Gx", "s":1.2711228281260 } { "t":"01:03:34", "l":"Hx", "s":1.2711061156458 } { "t":"01:07:32", "l":"**", "s":1.2711701258536 } { "t":"01:07:32", "l":"Ax", "s":1.2711627746330 } { "t":"01:07:33", "l":"Bx", "s":1.2709761156755 } { "t":"01:07:33", "l":"Cx", "s":1.2712219527790 } { "t":"01:07:33", "l":"Dx", "s":1.2711558938026 } { "t":"01:07:33", "l":"Ex", "s":1.2712194207642 } { "t":"01:07:34", "l":"Fx", "s":1.2710211532457 } { "t":"01:07:34", "l":"Gx", "s":1.2710942510102 } { "t":"01:07:34", "l":"Hx", "s":1.2706489513318 } { "t":"01:11:33", "l":"**", "s":1.2712407092894 } { "t":"01:11:33", "l":"Ax", "s":1.2710229281117 } { "t":"01:11:33", "l":"Bx", "s":1.2713165809126 } { "t":"01:11:33", "l":"Cx", "s":1.2709069439343 } { "t":"01:11:34", "l":"Dx", "s":1.2712285568317 } { "t":"01:11:34", "l":"Ex", "s":1.2710255781809 } { "t":"01:11:34", "l":"Fx", "s":1.2712944081851 } { "t":"01:11:34", "l":"Gx", "s":1.2709522181087 } { "t":"01:11:35", "l":"Hx", "s":1.2714084022575 }
While there's motion, the motion sensor sends a stream of packets (Mx) every ~0.5s:
{ "t":"01:00:03", "l":"Mx", "s":0.19761674747699 } { "t":"01:00:03", "l":"Mx", "s":0.19134663707680 } { "t":"01:00:04", "l":"Mx", "s":0.18475599400699 } { "t":"01:00:04", "l":"Mx", "s":0.17764736960332 } { "t":"01:00:05", "l":"Mx", "s":0.18219866003427 } { "t":"01:00:05", "l":"Mx", "s":0.19228762346837 } { "t":"01:00:05", "l":"Mx", "s":0.20365504361689 } { "t":"01:00:06", "l":"Mx", "s":0.17590477214091 } { "t":"01:01:06", "l":"Mx", "s":0.20046661607921 } { "t":"01:01:06", "l":"Mx", "s":0.21990364127689 } { "t":"01:01:07", "l":"Mx", "s":0.20108292127649 } { "t":"01:01:07", "l":"Mx", "s":0.19317794611884 } { "t":"01:01:07", "l":"Mx", "s":0.19980143921243 } { "t":"01:01:08", "l":"Mx", "s":0.18883255082700 } { "t":"01:01:08", "l":"Mx", "s":0.18816887173388 } { "t":"01:01:09", "l":"Mx", "s":0.19139267442127 }
{ "t":"00:22:31", "l":"AK", "s":0.19010887763673 } { "t":"00:22:31", "l":"Ix", "s":1.27115733999960 } { "t":"00:22:31", "l":"Ix", "s":1.27084919967150 } { "t":"00:22:33", "l":"AJ", "s":1.27067109920360 } { "t":"00:22:33", "l":"Kx", "s":0.34753355619154 } { "t":"00:22:33", "l":"AJ", "s":1.27106389116360 } { "t":"00:22:33", "l":"Kx", "s":0.32851465438542 } { "t":"00:22:33", "l":"AC", "s":1.27080483689450 } { "t":"00:22:33", "l":"Kx", "s":0.31252986663266 } { "t":"00:22:33", "l":"AC", "s":1.27091753302200 } { "t":"00:22:33", "l":"Kx", "s":0.31681447436935 } { "t":"00:22:33", "l":"AB", "s":1.27072021656470 } { "t":"00:22:33", "l":"Kx", "s":0.33324523623052 } { "t":"00:22:34", "l":"AB", "s":1.27073594322780 } { "t":"00:22:34", "l":"Kx", "s":0.33795091901955 } { "t":"00:22:34", "l":"AC", "s":1.27094848137910 } { "t":"00:22:34", "l":"Kx", "s":0.33743255154083 } { "t":"00:22:34", "l":"AC", "s":1.27062752662280 } { "t":"00:22:34", "l":"Kx", "s":0.33078964054585 }
{ "t":"00:20:46", "l":"AK", "s":0.14561246347524 } { "t":"00:20:46", "l":"Ix", "s":1.27077432525790 } { "t":"00:20:46", "l":"Ix", "s":1.27117667386410 } { "t":"00:20:46", "l":"AH", "s":1.27067896118740 } { "t":"00:20:46", "l":"Kx", "s":0.15747543483188 } { "t":"00:20:47", "l":"AH", "s":1.27096623854530 } { "t":"00:20:47", "l":"Kx", "s":0.13380117214432 } { "t":"00:20:47", "l":"AC", "s":1.27105418931350 } { "t":"00:20:47", "l":"Kx", "s":0.13056822689740 } { "t":"00:20:47", "l":"AC", "s":1.27060430067960 } { "t":"00:20:47", "l":"Kx", "s":0.13104107838712 } { "t":"00:20:47", "l":"AJ", "s":1.27091524777590 } { "t":"00:20:47", "l":"Kx", "s":0.12551319785416 } { "t":"00:20:47", "l":"AJ", "s":1.27074775519190 } { "t":"00:20:48", "l":"Kx", "s":0.21396931398072 } { "t":"00:20:48", "l":"AC", "s":1.27093991095370 } { "t":"00:20:48", "l":"Kx", "s":0.18139598891139 } { "t":"00:20:48", "l":"AC", "s":1.27067857348560 } { "t":"00:20:48", "l":"Kx", "s":0.12208976341706 } { "t":"00:20:48", "l":"AB", "s":1.27084016889560 } { "t":"00:20:48", "l":"Kx", "s":0.75081624169099 } { "t":"00:20:48", "l":"AB", "s":1.27075393755630 } { "t":"00:20:49", "l":"Kx", "s":0.70063111891872 } { "t":"00:20:49", "l":"AC", "s":1.27107110709860 } { "t":"00:20:49", "l":"Kx", "s":0.72590991540959 } { "t":"00:20:49", "l":"AC", "s":1.27091973568450 } { "t":"00:20:49", "l":"Kx", "s":0.66028591441481 }
Run 1 |
Run 2 |
|||
|---|---|---|---|---|
Console |
Keypad |
Console |
Keypad |
|
AK |
AK |
✅ |
||
Ix |
Ix |
✅ |
||
Ix |
Ix |
✅ |
||
AH |
❗ |
|||
Kx |
❗ |
|||
AH |
❗ |
|||
Kx |
❗ |
|||
AC |
❗ |
|||
Kx |
❗ |
|||
AC |
❗ |
|||
Kx |
❗ |
|||
AJ |
AJ |
✅ |
||
Kx |
Kx |
✅ |
||
AJ |
AJ |
✅ |
||
Kx |
Kx |
✅ |
||
AC |
AC |
✅ |
||
Kx |
Kx |
✅ |
||
AC |
AC |
✅ |
||
Kx |
Kx |
✅ |
||
AB |
AB |
✅ |
||
Kx |
Kx |
✅ |
||
AB |
AB |
✅ |
||
Kx |
Kx |
✅ |
||
AC |
AC |
✅ |
||
Kx |
Kx |
✅ |
||
AC |
AC |
✅ |
||
Kx |
Kx |
✅ |
Disarms are repeatable enough that I should be able to synthesise one. Simple, yeah?
Collect a disarm
Pretend I'm the keypad
Spit pre-cooked packets at the console
Win?
No win :(
I couldn't make this work. Why not?
Timing isn't right?
Entirely possible.
Attribution to keypad/console isn't right?
Possible I guess?
I'm missing some other communication channel?
Don't think so: couldn't find anything else in 433/868/902 or .au LIPD 915-928
Shows in logs, somewhere I guess?
Alarm monitoring company earns their keep
Someone gets a phone call?
Motion alert is a (per site?) static packet
Reflexive jamming!
Watch for the distinctive start of one of these, when you see it jam until the end
Needs fast turnaround between detection and jamming
27ms packet, can identify in 12.8ms, need to turnaround in < 14.2ms
I guess I'm writing CC1111 firmware now :(
Console heartbeat is every 4 minutes, like clockwork
Trivially detectable (static pattern every time)
What if we just jam everything whenever the watchdog isn't looking?
10 wait for heartbeat to complete 20 jam for 230 seconds, loot the joint 30 stand still 40 goto 10
And you get 3m50s to do whatever you like, stand still for 10 seconds, and off you go again. Works great, no TROUBLE!


{% load static %}
A socket is one of the most fundamental technologies of computer network programming. Sockets allow network software applications to communicate using standard mechanisms built into network hardware and operating systems.
A socket represents a single connection between exactly two pieces of software (a so-called point-to-point connection). More than two pieces of software can communicate with client/server or distributed systems by using multiple sockets.
Socket-based software usually runs on two separate computers on the network, but sockets can also be used to communicate locally (inter-process) on a single computer. Sockets are bidirectional, meaning that either side of the connection is capable of both sending and receiving data. The one application that initiates communication is termed the "client" and the other application the "server"
Delivery in a networked environment is guaranteed. If you send through the stream socket three items "A, B, C", they will arrive in the same order − "A, B, C". These sockets use TCP (Transmission Control Protocol) for data transmission. If delivery is impossible, the sender receives an error indicator. Data records do not have any boundaries.
Delivery in a networked environment is not guaranteed. They're connectionless because you don't need to have an open connection as in Stream Sockets − you build a packet with the destination information and send it out. They use UDP (User Datagram Protocol).


Y Comments
Do your blog posts end with exhortations to "Discuss this on Hacker News"? Do you like plugging into the engaged and clueful HN community but worry about sending your readers off to some site that's not your own? Do you wish it was all a little bit more like Disqus? Well then.
This here is a bit of Javascript that gives you the best of both worlds: it dumps HN comment threads below your article, just like Disqus (sort of). To do this, Y Comments relies on the third-party HackerNews API to extract the comment threads from the Hacker News post about your article.
This is handy for static blogs or for authors that want to tap into the clueful and engaged HN community. With Y Comments, you can have it all.
To get started, write something interesting and post it on Hacker News. Then, add the following at the bottom of your article:
]]>
Now, when people read your article and start commenting on it at HN, their comments will show up under your article.
If the Y Comments fails to find the proper thread on HN, you can call ycomments({id: "$HNID"})
instead; this is particularly useful when testing locally-served pages (where window.location
is not equal to your final URL).
It should look something like this:
When you find bugs, fork the code, fix them and send a pull request. It's all BSD licensed, you know.
Some things to consider:
- Compatibility with document types that aren't XHTML5 and browsers that aren't Firefox <IP_ADDRESS>/OpenBSD is unknown.
- That said, it should be pretty easy to extend the hack to output HTML that works with your documents; see for example
$.fn.ycomments.thread()
. - Features like votes and replies haven't actually been tested yet.
- This hack is awfully accepting of whatever it gets from HN and the HN API.
- This hack is woefully understyled; improvements to its CSS will be gladly accepted.
- This hack may not make idiomatic use of Javascript and jQuery; my apologies.
This hack was created at and for the 2011 Build Madison 24-hour hackathon by Will Maier. It did not take 24 hours.


iter_swap
|
|
| Category: algorithms |
Component type: function |
Prototype
template <class ForwardIterator1, class ForwardIterator2>
inline void iter_swap(ForwardIterator1 a, ForwardIterator2 b);
Description
Equivalent to swap(*a, *b). [1]
Definition
Declared in algo.h. The implementation is in algobase.h.
Requirements on types
-
ForwardIterator1 and ForwardIterator2 are models of
Forward Iterator.
-
ForwardIterator1 and ForwardIterator2 are mutable.
-
ForwardIterator1 and ForwardIterator2 have the same value type.
Preconditions
-
ForwardIterator1 and ForwardIterator2 are dereferenceable.
Complexity
See swap for a discussion.
Example
int x = 1;
int y = 2;
assert(x == 1 && y == 2);
iter_swap(&x, &y);
assert(x == 2 && y == 1);
Notes
[1]
Strictly speaking, iter_swap is redundant. It exists only for
technical reasons: in some circumstances, some compilers have
difficulty performing the type deduction required to interpret
swap(*a, *b).
See also
swap, swap_ranges
Copyright © 1996 Silicon Graphics, Inc.
|


WITNESS LIST Revenue & Public Education Funding, Select Committee February 4, 1997-5:00P School Finance On: Anderson, David (TEA) Wisnoski, Joe (TEA) Taxes On: Alloway, Bill (TX Taxpayer & Rsch Assn)


03. Write a function that finds all the occurrences of word in a text
The search can case sensitive or case insensitive
Use function overloading
For Test Input:
Write, a. ?Function! that finds Write a function that finds all functions the function occurrences of word Function in a text
Function


Welcome to the Helena Cupcake Shop!
The Helena Cupcake Shop is the perfect place if you are looking to order the best cupcakes in the surrounding Helena area. We've searched the world for the best cupcake recipes and brought them here to this neck of the woods. You want cupcakes? We got 'em!
For Whome Shall I Buy?
Wanna buy a cupcake for your girlfriend? We got cupcakes. Wanna buy them for your wife? Done and done. Your husband or boyfriend? They couldn't do without. What about for yourself? Whoa, do we have cupcakes. Vanilla, chocolate, strawberry, vegan... every kind of cupcake you can think of.
Can I Make Them Myself?
Want to try making cupcakes yourself? We even have all the ingredients you could ever need to make your own special type of cupcake.
What About Other Treats?
Look, if you want ice cream or candy, you will have to look elsewhere. We specialize and focus on cupcakes... that's why we're the best!


Game Haven is fueled through the generous donations of theme parks, public schools, and parents like you from across the United States.
Every day, we work to improve our service by developing new mini-games and expanding our games to cover science, technology, and engineering.
Make a donation to drive the development and ambition of the scientists and engineers of tomorrow.


After 40 years, our neighborhood is showing signs of it's age. From the condition of the front entrance, to the crumbling curbs and road surface. There are few features too, such as landscaping and park benches to improve appearances. The city's budget is needs-based and our roads are not the worst, according to the city, so that must wait for now. However, there is something we can do for ourselves to address the entrance signs and park.
My wife and I moved into Colony Park in 1995, 4 months after the birth of our first-born child, Lily. I can recall the brick entrance signs to the subdivision were lit up at night. Although I don't ever recall seeing flowers around those signs, the bushes were maintained. Fast forward nearly 20 years, and as one would expect, time and the elements have taken their toll.
In 2013, I asked a city official about the signs to find out who owns them and why they weren't being maintained. I was told that at one time there was a Home Owners' Association, but since they were voted out years ago, maintaining the signs became the responsibility of the first two homeowners on Colony Park Drive (addresses 126 & 185), whose property they are on. I also asked about getting park benches after the city cancelled plans to develop our park with playground equipment earlier that year. There are deed restrictions on Colony Park (the park), in part because of the high pressure gas lines running through it and partly because of the rights of those homeowners whose property abutts the park. Although the restrictions do say our park can include "... benches, picnic areas or tot lots."1 I never did get a direct response on why we couldn't get a bench or two. I suppose city council quickly reallocated that money to other projects.
With the introduction of the Nextdoor social network and the rise of Crowdfunding sites, I decided to start a grass-roots community project, in which some neighbors would pitch in with their time and effort, donate needed items and a few bucks, and we could make our subdivision a little nicer place to live. We don't need an HOA or the City to do that... We can do it ourselves.
According to Nextdoor, there are 207 households in Colony Park. It looks like there are about 212 according to Pickerington's most recent zoning map (published 3/11/14). At any rate, only about 25% of those households are on Nextdoor. I have no idea how many of those houses have internet access, but I'd put a conservative estimate at around 75%, if you include folks who just use a phone to access the internet. A campaign like this would need to have a broad enough reach to build awareness in the neighborhood. Hopefully, some of you reading this web page or the posts on Nextdoor will spread the word to neighbors too.
The plan that I am putting forth is a modest one, that is intended to get a lot of benefit for very little up-front cost.
Why am I asking for your help? Simply because it is the most effective way to get action. Every bit of effort, materials, and money contributed will be invested 100% toward efforts to beautify Colony Park. If we exceed the donation goal, we can get even more done the first year.
Donate Now!


{% extends "email/layout.html" %} {% block content %}
We've finished processing the documents you uploaded to {{collection.label}}. You now search all of them, or upload additional material. Visit: {{url}}


{% extends "header.html" %} {% block body %}
Now that we have a database, we're ready to create our table. Generally, you can imagine a MySQL table like a spreadsheet. A Database holds many of these tables. Let's access one of our Databases now:
USE dbname;
Still not forgetting our semicolons, replace dbname with your database name that you chose from the previous tutorial. This will put is into our chosen database, and you should see "Database changed"
Now, let's create an actual table. Again, this table is more likely what you consider a database, or at least that's how it was for me. So again, a Database just simply houses the tables. The tables actually house the data. To create a new table:
CREATE TABLE taula (time INT(13), username VARCHAR(20), tweet VARCHAR(140));
Press enter, and you're done. Now let's explain this entire query:
CREATE TABLEMySQL syntax for creating tables, in all-caps to designate this as a MySQL command.
This is the name I have chosen for my table. Call yours what you want, just remember that when you see "taula" that you need to change it to your own name.
We begin the rules for this new table. Do not forget to close them at the end. It would be wise at this point to just close them off and add the semi-colon.
This is our first column's name. Call it something that makes sense. Many people make the first column "id" and do an auto-increment. We are not doing this here.
This is our datatype, and then the length of that datatype. In our case, we're calling this an INT for integer, and saying it will be 13 characters long. Integers are whole numbers. If you need decimals, then you would use a FLOAT or DECIMAL depending on your needs.
Another column, our second one, and we're calling it "username."
This datatype is "VARCHAR," which is variable characters. The variable is in reference to the length. This means you can put in 5 characters, or 19, and it will not take up any more space. If you put CHAR(20), then it would not be variable. Now, what if we try to insert 21 characters into our VARCHAR(20) column? The sky wont fall, but the last character will be chopped off. Thus, you want to be careful when choosing limits. If you have a website that has a login, for example, and you intend to limit usernames to 20 characters, you need to make sure this limit is in the database as well as in the registration form.
This is our last column name, tweet, of the datatype of VARCHAR, which will be up to 140 characters in length.
You should have added the closing parenthesis and the final semi-colon already, but if you have not, do this!
There are many other datatypes to consider like TEXT, FLOAT, DOUBLE, DECIMAL, BLOB, TINYINT, SMALLINT, MEDIUMINT, BIGINT, DOUBLE, DATE, DATETIME, TIMESTAMP, YEAR, TINYBLOB, TINYTEXT, MEDIUMBLOB, MEDIUMTEXT, LONGBLOB, LONGTEXT, ENUM.
Why so many types? Doesn't VARCHAR pretty much cover it all?Most of those you will probably never use. You can really get by with pretty much all varchars, some int, some float.
So then why might there be this many datatypes? Especially considering all these "tiny, small, medium, and large" examples? For the typical database, using these data types wont really yield much benefit, but what if you're running a truly massive database that is terabytes in size and millions of rows?
Let's consider FLOAT vs DECIMAL vs DOUBLE for a moment. Many people question why these even exist, as they are built to contain exactly the same looking data.
It all depends what you're doing with the data. Are you just storing it and you want to access it quickly? Are you going to attempt to do calculations on the data or run other types of logic?
Different datatypes are going to act slightly different in various scenarios, and, depending on your uses, you may find one is superior to the others. As your database grows, and your needs change, you will likely want to revisit data-types and test performance with different ones.
Now that you've created this table, let's look at it real quick:
DESCRIBE taula;
This is how you look at the structure of your table. You will see the field names (like your columns), the datatype, and some more information.
Now let's insert some data. Eventually, our goal is to have our program insert data for us, but it is a good idea to do it yourself to better understand how it works before we get into doing it via a program.
INSERT INTO taula VALUES<PHONE_NUMBER>, "sentdex", "welcome to my tutorial");
Above is a typical insertion query. Here's each step explained:
INSERT INTOThis is a MySQL command, notifying MySQL that we're about to insert some data.
This is our table name, so we're telling MySQL where we're going to be doing this inserting.
This is another MySQL command, which notifies MySQL what we're planning to insert.
Here is the list of inserted values. Notice how we are inserting the values in this specific order, these are the values in order of our columns (time, username, tweet)
Now feel free to insert a few more rows, increasing the time slightly. Here's a few I used in the video.
INSERT INTO taula VALUES<PHONE_NUMBER>, "sentdex", "wow thanks @Obama, you are right these tutorials rock");
INSERT INTO taula VALUES<PHONE_NUMBER>, "sentdex", "@BillGates, thanks Bill for the job offer as VP, but i wanna keep opts open");
Now we have the data in the table, how do we access it?
SELECT * FROM taula;
This SELECTs all (which is denoted with a *) FROM the table named taula.
Now you should see each row organized like a spreadsheet.


HELP PLZ FOR MAP EDITOR IT WONT WORK FOR ME, I OPEN IT AND IT MAKES A BLACK SCREENED WINDOW...
Posted: Thu Oct 04, 2007 2:08 pm
by Karl G.
it's working
did you read the readme? there are keys to open palettes, etc. try pressing any of the following keys:
1 2 3 4 ! @ # f [tab]
There are more; they're in the readme
Posted: Fri Oct 05, 2007 11:18 am
by daekighn
Ok, I fixed it but there is one problem i am now having. Everytime I hit SHIFT+3 it brings up some of the models i can use. Well when i go to look at them all it shuts off and i cant use any of the models on that page. Any Idea what's up?
Posted: Fri Oct 05, 2007 12:26 pm
by Karl G.
what "shuts off" could you be more specific?
.
Posted: Mon Nov 19, 2007 11:11 pm
by daekighn
The whole editor just goes poof and shuts off the whole program and im like omg.... Its the SHIFT+3(keys) models. I dunno what is wrong with it but its a bug im guessing.
Posted: Tue Nov 20, 2007 8:19 am
by Karl G.
Yeah that sounds like a bug--that particular mode has a lot of polygons in it, your computer may not like that. When I do a pre-release of the new client for debugging (it's going well--may be soon ) try downloading it. I'm going to incorporate some stress tests to see what people's systems can handle.


(For the information on how to use the compiler validaors, refer to Configure compilation validators.)
Use this page to specify the validation settings for your application.


| 1 |
Lau_J_2006 |
Prevalence and factors associated with social avoidance of recovered SARS patients in the Hong Kong general population |
Lau, Joseph T. F.; Yang, Xilin; Wong, Eric; Tsui, HY |
2006 |
2006-07-31 |
PMC |
N |
PMC7108544 |
16880214.0 |
10.1093/her/cyl064 |
1kvr2bf4 |
0.694359 |
|
|
| 2 |
Lau_E_2009 |
Effectiveness of Ribavirin and Corticosteroids for Severe Acute Respiratory Syndrome |
Lau, Eric H.Y.; Cowling, Benjamin J.; Muller, Matthew P.; Ho, Lai-Ming; Tsang, Thomas; Lo, Su-Vui; Louie, Marie; Leung, Gabriel M. |
2009 |
2009-12-31 |
PMC |
N |
PMC7093860 |
19958895.0 |
10.1016/j.amjmed.2009.07.018 |
mv4vp27h |
0.601460 |
|
|
| 3 |
TSE_T_2004 |
Occult pneumomediastinum in a SARS patient presenting as recurrent chest pain and acute ECG changes mimicking acute coronary syndrome |
TSE, Tak‐Sun; TSUI, Kin‐Lam; YAM, Loretta Y‐C.; SO, Loletta K‐Y.; LAU, Arthur C‐W.; CHAN, Kwok‐Keung; LI, Shu‐Kin |
2004 |
2004-05-27 |
PMC |
Y |
PMC7169106 |
15182281.0 |
10.1111/j.1440-1843.2004.00569.x |
w5kj3v87 |
0.599642 |
|
|
| 4 |
Hu_W_2012 |
SARS-CoV Regulates Immune Function-Related Gene Expression in Human Monocytic Cells |
Hu, Wanchung; Yen, Yu-Ting; Singh, Sher; Kao, Chuan-Liang; Wu-Hsieh, Betty A. |
2012 |
2012-08-01 |
PMC |
N |
PMC3413073 |
22876772.0 |
10.1089/vim.2011.0099 |
k72ims2f |
0.573618 |
Pillaiyar_2020 |
|
| 5 |
Rogers_2004 |
Why can't I visit? The ethics of visitation restrictions – lessons learned from SARS |
Rogers, Sharon |
2004 |
2004-08-31 |
PMC |
N |
PMC1065028 |
15469583.0 |
10.1186/cc2930 |
i4pmux28 |
0.480753 |
|
|
| 6 |
Brug_2004 |
SARS Risk Perception, Knowledge, Precautions, and Information Sources, the Netherlands |
Brug, Johannes; Aro, Arja R.; Oenema, Anke; de Zwart, Onno; Richardus, Jan Hendrik; Bishop, George D. |
2004 |
2004-08-23 |
PMC |
N |
PMC3320399 |
15496256.0 |
10.3201/eid1008.040283 |
8jsjyeio |
0.300020 |
|
Ha_L_2004, Chen_2004 |


Listen on Spotify
Listen on Apple Music
Listen on Soundcloud
Please contact my management for booking info. Serious inquiries only.
301-787-2824
ben@topshelfrap.com


The War of the Worlds
by H.G. Wells
Book One—The Coming of the Martians, Chapter 2: The Falling Star
Additional Information
- Year Published: 1898
- Language: English
- Country of Origin: England
- Source: Wells, H. G. (1898). The War of the Worlds. London, England: Chapman and Hall.
-
Readability:
- Flesch–Kincaid Level: 9.0
- Word Count: 1,382
- Genre: Science Fiction
- Keywords: 19th century literature, aliens, h.g. wells, survival, war
- ✎ Cite This
Downloads
Then came the night of the first falling star. It was seen early in the morning, rushing over Winchester eastward, a line of flame high in the atmosphere. Hundreds must have seen it, and taken it for an ordinary falling star. Albin described it as leaving a greenish streak behind it that glowed for some seconds. Denning, our greatest authority on meteorites, stated that the height of its first appearance was about ninety or one hundred miles. It seemed to him that it fell to earth about one hundred miles east of him.
I was at home at that hour and writing in my study; and although my French windows face towards Ottershaw and the blind was up (for I loved in those days to look up at the night sky), I saw nothing of it. Yet this strangest of all things that ever came to earth from outer space must have fallen while I was sitting there, visible to me had I only looked up as it passed. Some of those who saw its flight say it travelled with a hissing sound. I myself heard nothing of that. Many people in Berkshire, Surrey, and Middlesex must have seen the fall of it, and, at most, have thought that another meteorite had descended. No one seems to have troubled to look for the fallen mass that night.
But very early in the morning poor Ogilvy, who had seen the shooting star and who was persuaded that a meteorite lay somewhere on the common between Horsell, Ottershaw, and Woking, rose early with the idea of finding it. Find it he did, soon after dawn, and not far from the sand pits. An enormous hole had been made by the impact of the projectile, and the sand and gravel had been flung violently in every direction over the heath, forming heaps visible a mile and a half away. The heather was on fire eastward, and a thin blue smoke rose against the dawn.
The Thing itself lay almost entirely buried in sand, amidst the scattered splinters of a fir tree it had shivered to fragments in its descent. The uncovered part had the appearance of a huge cylinder, caked over and its outline softened by a thick scaly dun–coloured incrustation. It had a diameter of about thirty yards. He approached the mass, surprised at the size and more so at the shape, since most meteorites are rounded more or less completely. It was, however, still so hot from its flight through the air as to forbid his near approach. A stirring noise within its cylinder he ascribed to the unequal cooling of its surface; for at that time it had not occurred to him that it might be hollow.
He remained standing at the edge of the pit that the Thing had made for itself, staring at its strange appearance, astonished chiefly at its unusual shape and colour, and dimly perceiving even then some evidence of design in its arrival. The early morning was wonderfully still, and the sun, just clearing the pine trees towards Weybridge, was already warm. He did not remember hearing any birds that morning, there was certainly no breeze stirring, and the only sounds were the faint movements from within the cindery cylinder. He was all alone on the common.
Then suddenly he noticed with a start that some of the grey clinker, the ashy incrustation that covered the meteorite, was falling off the circular edge of the end. It was dropping off in flakes and raining down upon the sand. A large piece suddenly came off and fell with a sharp noise that brought his heart into his mouth.
For a minute he scarcely realised what this meant, and, although the heat was excessive, he clambered down into the pit close to the bulk to see the Thing more clearly. He fancied even then that the cooling of the body might account for this, but what disturbed that idea was the fact that the ash was falling only from the end of the cylinder.
And then he perceived that, very slowly, the circular top of the cylinder was rotating on its body. It was such a gradual movement that he discovered it only through noticing that a black mark that had been near him five minutes ago was now at the other side of the circumference.   The cylinder was artificial—hollow—with an end that screwed out! Something within the cylinder was unscrewing the top!
"Good heavens!" said Ogilvy. "There's a man in it—men in it! Half roasted to death! Trying to escape!"
At once, with a quick mental leap, he linked the Thing with the flash upon Mars.
The thought of the confined creature was so dreadful to him that he forgot the heat and went forward to the cylinder to help turn. But luckily the dull radiation arrested him before he could burn his hands on the still–glowing metal. At that he stood irresolute for a moment, then turned, scrambled out of the pit, and set off running wildly into Woking. The time then must have been somewhere about six o'clock. He met a waggoner and tried to make him understand, but the tale he told and his appearance were so wild—his hat had fallen off in the pit—that the man simply drove on. He was equally unsuccessful with the potman who was just unlocking the doors of the public–house by Horsell Bridge. The fellow thought he was a lunatic at large and made an unsuccessful attempt to shut him into the taproom. That sobered him a little; and when he saw Henderson, the London journalist, in his garden, he called over the palings and made himself understood.
"Henderson," he called, "you saw that shooting star last night?"
"Well?" said Henderson.
"It's out on Horsell Common now."
"Good Lord!" said Henderson. "Fallen meteorite! That's good."
"But it's something more than a meteorite. It's a cylinder—an artificial cylinder, man! And there's something inside."
Henderson stood up with his spade in his hand.
"What's that?" he said. He was deaf in one ear.
Ogilvy told him all that he had seen. Henderson was a minute or so taking it in. Then he dropped his spade, snatched up his jacket, and came out into the road. The two men hurried back at once to the common, and found the cylinder still lying in the same position. But now the sounds inside had ceased, and a thin circle of bright metal showed between the top and the body of the cylinder. Air was either entering or escaping at the rim with a thin, sizzling sound.
They listened, rapped on the scaly burnt metal with a stick, and, meeting with no response, they both concluded the man or men inside must be insensible or dead.
Of course the two were quite unable to do anything. They shouted consolation and promises, and went off back to the town again to get help.  Henderson went into the railway station at once, in order to telegraph the news to London. The newspaper articles had prepared men's minds for the reception of the idea.
By eight o'clock a number of boys and unemployed men had already started for the common to see the "dead men from Mars." That was the form the story took. I heard of it first from my newspaper boy about a quarter to nine when I went out to get my Daily Chronicle. I was naturally startled, and lost no time in going out and across the Ottershaw bridge to the sand pits.


{% extends "base.html" %} {% load custom_filters %} {% block content %}
| Amount sent | Recipient | Amount received | {% if not transaction.is_pending %}Delivery date | {%endif%}
|---|---|---|---|
| {{ transaction.amount_sent | exchange }} | {{ transaction.recipient_number}} | {{ transaction.display_amount_received}} | {% if not transaction.is_pending %}{{ transaction.actual_delivery_date}} | {%endif%}


PAL2RGB
Section: User Commands (1)Updated: September 20, 2005
Index Return to Main Contents
NAME
pal2rgb - convert a palette color TIFF image to a full color imageSYNOPSIS
pal2rgb [ options ] input.tif output.tifDESCRIPTION
Pal2rgb converts a palette color TIFF image to a full color image by applying the colormap of the palette image to each sample to generate a full color RGB image.OPTIONS
Options that affect the interpretation of input data are:- -C
- This option overrides the default behavior of pal2rgb in determining whether or not colormap entries contain 16-bit or 8-bit values. By default the colormap is inspected and if no colormap entry greater than 255 is found, the colormap is assumed to have only 8-bit values; otherwise 16-bit values (as required by the TIFF specification) are assumed. The -C option can be used to explicitly specify the number of bits for colormap entries: -C 8 for 8-bit values, -C 16 for 16-bit values.
Options that affect the output file format are:
- -p
- Explicitly select the planar configuration used in organizing data samples in the output image: -p contig for samples packed contiguously, and -p separate for samples stored separately. By default samples are packed.
- -c
- Use the specific compression algorithm to encoded image data in the output file: -c packbits for Macintosh Packbits, -c lzw for Lempel-Ziv & Welch, -c zip for Deflate, -c none for no compression. If no compression-related option is specified, the input file's compression algorithm is used.
- -r
- Explicitly specify the number of rows in each strip of the output file. If the -r option is not specified, a number is selected such that each output strip has approximately 8 kilobytes of data in it.
BUGS
Only 8-bit images are handled.SEE ALSO
tiffinfo(1), tiffcp(1), tiffmedian(1), libtiff(3)Libtiff library home page: http://www.remotesensing.org/libtiff/
Index
This document was created by man2html, using the manual pages.
Time: 05:29:07 GMT, December 24, 2015


{% set Titles = ['Lectures','Practical 1','Practical 2','Research Seminar'] %}
{% for type in ['lectures'+iday|string,'practicals'+iday|string,'practicals2-'+iday|string,'seminar'+iday|string] %}
{% set Tloop = loop.index %}
__|______
{{Titles[Tloop-1]}}
{% set subData1 = data.loc[data['parent']==type] %}
{% for index, row in subData1.iterrows() %}


Arrays
Array Methods
Loops
Comparison & Logical Operators
If, Else If & Else
Practice
The JavaScript Array object is a global object that is used in the construction of arrays; which are list-like objects. Arrays are used to store multiple values in a single variable. Arrays can also store different types of elements. You can put objects, entire functions or other arrays into arrays!
Arrays are zero based and every item has a corresponding index.
Note: The forEach() loop is a special type of loop used exclusively for Arrays. It offers a lot of options for accessing the contents of an Array. There are many other types of loops that we'll be exploring soon.
Note: Inside of the forEach() is an anonymous function. This function —as shown between the perenthesis— is expecting two things: an item and an index. These "expectations" are called parameters, and are being provided by the forEach() loop.
.sort()
The method sorts the elements of an array in place and returns the array. The default sort order is according to string Unicode code points.
Here's a breakdown of the calculation:
2, 4, 5, 1, 3 — 2 is less than 4, move to the next two.
2, 4, 5, 1, 3 — 4 is less than 5, move to the next two.
2, 4, 5, 1, 3 — 5 is greater than 1... flip the numbers and work backward.
2, 4, 1, 5, 3 — 4 is greater than 1... flip the numbers and work backward.
2, 1, 4, 5, 3 — 2 is greater than 1... flip the numbers. Continue from the index that began the direction shift.
1, 2, 4, 5, 3 — 5 is greater than 3... flip the numbers and work backward.
1, 2, 4, 3, 5 — 4 is greater than 3... flip the numbers and work backward.
1, 2, 3, 4, 5 — 2 is less than 3... sorting complete.
The for statement creates a loop that consists of three optional expressions, enclosed in parentheses and separated by semicolons, followed by a statement (usually a block statement) to be executed in the loop.
Loops are handy, if you want to run the same code over and over again, each time with a different value.
Comparison Operators
==
===
!=
!==
>
<
>=
<=
Logical Operators
&&
||
!
The if statement executes a statement if a specified condition is truthy. If the condition is falsy, another statement can be executed.
Click "Edit in jsfiddle"
Click "Fork" to edit the code
Click "Edit in jsfiddle"
Click "Fork" to edit the code
Complete assignment and Save
Slack me your links
Var, Let & Const
Variable Hoisting
Functions
Function Hoisting
Targeting DOM Elements
Event Listeners
JavaScript variables are containers for storing data values.
However, as JavaScript has matured, new options have been added for storing your data. Each of these options offers slightly different advantages and disadvantages
var
let & const
Hoisting is JavaScript's default behavior of moving all declarations to the top of the current scope (to the top of the current script or the current function)
A block of code designed to perform a particular task. A JavaScript function is executed when "something" invokes it (calls it).
Hoisting was thought up as a general way of thinking about how execution context (specifically the creation and execution phases) work in JavaScript. But, hoisting can lead to misunderstandings. Hoisting teaches that variable and function declarations are physically moved to the top of your coding, but this is not what happens at all. What does happen is that variable and function declarations are put into memory during the compile phase, but stays exactly where you typed it in your coding.
| Clicking | Mousing | Viewing | Keying | Forming |
|---|---|---|---|---|
| click | mouseenter | scroll | keypress | reset |
| mousedown | mouseleave | resize | keydown | submit |
| mouseup | mouseover | keyup | ||
| dblclick | mouseout | |||
| contextmenu | wheel |
Fork this repository Magic 8 ball Challenge
Clone to your laptop
Create a new branch
Complete the assignment
Push your work to Github
Create a Pull Request
Slack me your Pull Request
After your work has been merged in, set master to host gh-pages
Send me the link to your live site


CactusTree: A Tree Drawing Approach for Hierarchical Edge Bundling
| Tommy Dang Texas Tech University |
Angus Forbes University of Illinois at Chicago |
Classification of Tree Layouts
| |
|||
| |
CactusTree Layout
Treelayout based on the following two observations:
1) CactusTree is a fractal-based technique.Email<EMAIL_ADDRESS>This work was supported by NSF/DHS grant DMS-FODAVA-0808860 and DARPA Big Mechanism Program under ARO contract WF911NF-14-1-0395


--- layout: post title: Turning SHOW statements into SELECT statements date: type: post published: false status: draft categories: - MySQL tags: [] meta: _edit_last: '2' author: login: shlomi email<EMAIL_ADDRESS>display_name: shlomi first_name: Shlomi last_name: Noach ---
This continues my effort of reading and manipulating results of SHOW statements on server side.
Recap:
If I'm able to execute a stored function which calls upon the SHOW command, then returns the user defined variable, then I'm also able to use the results from within a SELECT statement.
Didn't I just say that was impossible? No. I said "you cannot simply embed this in a stored function". But you can hackly embed this in a stored function.
Let's use the same example as in the previous post, and attempt to return the concatenated list of databases. We walk through the solution in several steps.
We attempt to run this code from within a stored function:
DELIMITER $$ DROP FUNCTION IF EXISTS get_databases $$ CREATE FUNCTION get_databases() RETURNS TEXT DETERMINISTIC READS SQL DATA BEGIN SET @databases := ''; SHOW DATABASES WHERE (@databases := CONCAT(@databases, `Database`, ',')) IS NULL; return @databases; END $$ DELIMITER ; ERROR 1415 (0A000): Not allowed to return a result set from a function
Ouch! Can't even create the function!
So the code has to go in a stored procedure. Fine, let's try and invoke the procedure from within a function:
DELIMITER $$ DROP procedure IF EXISTS show_databases $$ CREATE PROCEDURE show_databases() DETERMINISTIC READS SQL DATA BEGIN SET @databases := ''; SHOW DATABASES WHERE (@databases := CONCAT(@databases, `Database`, ',')) IS NULL; END $$ DROP FUNCTION IF EXISTS get_databases $$ CREATE FUNCTION get_databases() RETURNS TEXT DETERMINISTIC READS SQL DATA BEGIN call show_databases(); return @databases; END $$ DELIMITER ;
OK, definition seems to go well. How about execution?
mysql> SELECT get_databases(); ERROR 1415 (0A000): Not allowed to return a result set from a function
No go. On execution, MySQL detects that we are returning a result set from within a function, and fails.
The DO command is cool. It avoids returning a result set. It comes in place of a SELECT.
Using the same routines as above, we try:
mysql> DO get_databases(); Query OK, 0 rows affected, 1 warning (0.00 sec)
It works, and there's a warning:
mysql> SHOW WARNINGS; +-------+------+----------------------------------------------------+ | Level | Code | Message | +-------+------+----------------------------------------------------+ | Error | 1415 | Not allowed to return a result set from a function | +-------+------+----------------------------------------------------+
Is it time to celebrate? Not really. While we've reduced the error to warning, we are almost back in square #1, since DO get_databases() is not much different than CALL show_databases(). We cannot embed this in a SELECT statement:
mysql> SELECT DO get_databases(); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '()' at line 1 mysql> SELECT (DO get_databases()); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'get_databases())' at line 1
Step #4, final solution: wrap it
We need to add one more layer. Consider the following additional function:


Dear Sir,,
I am Barr.Tony Anthony, a solicitor at law. I am the personal attorney to Late Eng. Sangeeta a national of your country, who used to work with Chevron - Development Company in Accra Ghana. Here in after shall be referred to as my client.
On the 25th of December 2003, my client, his wife and their three children were involved in Plane clash on cotonue. All occupants of the plane unfortunately lost their lives except few people. Since then I have made several enquiries to your embassy to locate any of my clients extended relatives.
After these several unsuccessful attempts, I decided to track his last name over the Internet, to locate any member of his family hence I contacted you.
I have contacted you to assist in repatriating the money and property left behind by my client before they get confiscated or declared unserviceable by the bank where these huge deposits were lodged. Particularly, the finance company where the deceased had an account valued at about USD$16.5 million dollars has issued me a notice to provide the next of kin or have the account confiscated within the next Thirty (30) Working official working days.
Since I have been unsuccessful in locating the relatives for over 2 years now I seek your consent to present you as the next of kin of the deceased since you have the same last name so that the proceeds of this account valued at USD16.5 million dollars can be paid to you and then you and me can share the money. 60% to me and 30% to you and 10% will be used for any expenses.
I have all necessary legal documents that can be used to back up any claim we may make. All I require is your honest cooperation to enable us seeing this deal through.
I guarantee that this will be executed under a legitimate arrangement that will protect you from any breach of the law. Please get in touch with me by my private email (tonywach45@yahoo.no)and send to me your telephone and fax numbers to enable us discuss further about this transaction.
Best regards,
Barr.Tony Anthony.
Check out this websites:
www.cbsnews.com/stories/2003/12/25/world/main590221.shtml
http://www.cbsnews.com/stories/2003/12/25/world/main590221.s
http://www.sltrib.com/2003/Dec/12262003/nation_w/123279.asp
Change is good. See what's different about Windows Live Hotmail. Check it out!


Your Parking Ticket Butler
Paid Receipt
| Violation Notice Number | ${info.violationNoticeNumber} |
| Plate Number | ${info.plateNumber} |
| Payment Date | ${info.dateOfViolation} |
| Administrative Penalty | $${info.administrativePenaltyAmount} |
| Processing Fees | $${info.processingFee} |
| Total Amount | $${info.totalAmount} |


With the HARDWRAPS extension enabled all these linebreaks should be kept as is in the created HTML
These ones here as well!


the and yellow fever are virus for that can kidney {background disease with The have been margin not such this was {border-style YFV cases from some px;} there #ffffff;} has other vaccination which more severe viral diagnosis due were areas new outbreaks Trop also disease, since studies because health may only renal very Brazil Brazilian diseases infection these However, Moreover, South acute control even fever, first hemorrhagic its most replication spread sylvatic tropical used vaccine vector Health This Yellow against between could countries cycle help important mainly necrosis patients px; they through treatment urban using viruses will {font-family According Africa Brazil, Therefore, WHO World but during endemic font-size high humans including protein providing risk shown than tubular Figure Negl RNA These care cases, clinical dengue detection double; epidemic fever. genetic infected occur occurred outbreak period primates regions same symptoms their travelers when Dis Infect Med Rio Some Virol and, area associated border-color border-width chikungunya confirmed described detected diagnostic early effective especially injury into involvement lymph molecular mosquito multiple number one out outside patient people preventive rate solid; still though tissue transmission urinary use vaccine, {font-style {font-weight Adapted America Dise January Sao Since Southeast according adrenal after al.Yellow among antibodies antigens antiviral areas, available blood bold characterized collab: considered courier; coverage cylinders damage death diseases, dissemination dysfunctions em; essential failure forest forms genome geographic had infections intensive interstitial kidneys liver liver, low measures monitoring mortality mosquito-borne mosquitoes occurs organ organs pages production pt;} public real-time recent reported reports should significant single specific therapy tissues vaccine. viscerotropic where within years


| pgpool-II 4.0.3 Documentation | |||
|---|---|---|---|
| Prev | Up | Appendix A. Release Notes | Next |
Release Date: 2017-07-11
Fix for [pgpool-hackers: 2400] Garbage output (Muhammad Usama)
Mostly the log messages fixes and few code cleanups.
Importing the latest changes in the MemoryManager API from PostgreSQL code. (Muhammad Usama)
Fixing [pgpool-hackers: 2390]Problems with the relative paths in daemon mode (Muhammad Usama)
Adjust function name change in PostgreSQL 10 dev head. (Tatsuo Ishii)
pg_current_wal_location -> pg_current_wal_lsn pg_last_wal_replay_location -> pg_last_wal_replay_lsn
Fix a posible hang with streaming replication and extended protocol (Yugo Nagata)
This hang occured under a certain condition. The following is an example.
- pgpool.conf is configured so that all read queries are sent to the standby. - First, issue a writing query in a transaction block - After commiting the transaction, issue a select query. - When processing the query, send Describe (statement) message just after Parse.
Without using JDBC, we can reproduce the problem by pgproto with the followeing messages.
'Q' "DROP TABLE IF EXISTS test_tbl" 'Y' 'Q' "CREATE TABLE test_tbl(i int)" 'Y' 'Q' "INSERT INTO test_tbl VALUES(1)" 'Y' 'P' "" "BEGIN" 0 'B' "" "" 0 0 0 'E' "" 0 'S' 'Y' 'P' "" "INSERT INTO test_tbl VALUES(1)" 0 'B' "" "" 0 0 0 'E' "" 0 'S' 'Y' 'P' "" "COMMIT" 0 'B' "" "" 0 0 0 'E' "" 0 'S' 'Y' 'P' "S_1" "SELECT * FROM test_tbl" 0 'D' 'S' "S_1" 'B' "C_1" "S_1" 0 0 0 'E' "C_1" 0 'S' 'Y' 'X'
To fix it, parse_before_bind()
should be called only if we are in a transaction block so that we can send Bind and Execute to the right backend.
Fix Pgpool-II hang when used by erlang applications. (Tatsuo Ishii)
Erlang client sends "Describe" message followed by "Flush". So the backend returns "Row description." However Pgpool-II forgets to reset the query in progress flag upon receiving "Row description" message, then Pgpool-II keeps on waiting for response from backend. This is the cause of erlang client hanging.
Fix is, just reset the query in progress flag upon receiving "Row description" message. Same thing can be said to "no data" message.
See [pgpool-general: 5555] for more details.
Fix bug with sending bind message to wrong target node. (bug 314) (Tatsuo Ishii)
Fix query cache hang when used by node.js. (Tatsuo Ishii)
See [pgpool-general: 5511] for more details.
Deal with PostgreSQL 10 in streaming replication delay checking. (Tatsuo Ishii)
Fix query cache memory leak. (Tatsuo Ishii)
Clearing cache buffers in case of no oid queries (like BEGIN, CHECKPOINT, VACUUM, etc) should have been done, but it did not.
Fix extended query hang in certain case. (Tatsuo Ishii)
errlang PostgreSQL API produces Parse ('P'), Describe ('D'), Flush ('H'), Bind ('B'), and Execute ('E'). Notice the 'H' message (this does not happen in JDBC. I suspect that's the reason why this problem is not popular before). After that, Pgpool-II dropped the extended query mode, it failed to find which backend to read data. Thus Pgpool-II simply tries to read all of backend which causes hang because it may have not send a message to some of backends.
Solution is, after receiving the flush message set doing extended query flag.
Fix corner case bug in Pgpool-II starting up. (Tatsuo Ishii)
It is possible that a failover request is accepted before primary node is searched. This leads Pgpool-II to a strange state: there's no primary node if the failed node was a primary node (even if new primary node exists as a result of promotion of existing standby).
See [pgpool-hackers: 2321] for more details.


Mac Miller Library
Malcolm James McCormick
Malcolm James McCormick (January 19, 1992 – September 7, 2018), known professionally as Mac Miller, was an American rapper, singer, songwriter, and record producer from Pittsburgh, Pennsylvania.
K.I.D.S
Seven songs from K.I.D.S. had music videos created for them: "Nikes On My Feet", "Kool Aid & Frozen Pizza", "Knock Knock", "Senior Skip Day", "La La La La", "Traffic In The Sky", and "Don't Mind If I Do".[6][7][8][9][10][11] The videos for "Nikes on My Feet" and "Kool Aid & Frozen Pizza" were both heavily played on YouTube, reaching over 50 million views each. Both songs featured prominent classic hip-hop samples, from Q-Tip's remix
Blue Slide Park
Blue Slide Park is the debut studio album by American rapper Mac Miller. It was released on November 8, 2011, by Rostrum Records. The album is named after a section of Frick Park (known as "Blue Slide Park") in Pittsburgh, near where Miller lived. Much of the production was handled by ID Labs, and the album has no guest appearances
Macadelic
After the release of Blue Slide Park and I Love Life, Thank You in 2011, Mac Miller began working on another project. According to Miller, he decided to "stop thinking about what kind of music [he] should make and just start saying what [he] wanted to say." On March 23, 2012 Mac Miller released Macadelic and had a release party at Shadow Lounge in Pittsburgh, Pennsylvania.[4] The music video for "Loud" was also released that day.


The goal of the configuration section is to provide a simple, but flexible, way for anyone to get an instance of Sunbird up and running that is fully configured and ready-to-go.
Before getting started, please look at the Sunbird Installation options, to see which method for deploying Sunbird is right for you.
Refer to the Installation pages, for detailed installation instructions


A manufacturer of metal pistons finds that on average, 12% of his pistons are rejected because they are either oversized or undersized. What is the probability that a batch of 10 pistons will contain
(a) no more than 2 rejects?
(b) at least 2 rejects?
Submission Modes and Output Format
You may submit either an R or Python program to accomplish the above task, or solve the problem on pen-and-paper. Your output should be two floating point/decimal numbers separated by a line, correct to 3 places of decimal.
In the text box below, enter two floating point/decimal numbers, correct to 3 places of decimal.
Alternatively, you may submit an R program, which uses the above parameters (hard-coded) and computes the answer.
Your answer should resemble something like:
0.123 0.456
(This is NOT the answer, just a demonstration of what the answering format should resemble).


Google Inc.
31 Lake Floyd Circle,
Delaware, AC 987869
India
Reference
UX Design & Development for
Android App.
Acme LLP
477 Blackwell Street,
Dry Creek, Alaska
India
06 September 2017
Invoice
Invoice No.
BJI 009872
Qty
Description
Price
1
Initial research
₹10,000
1
UX design
₹35,000
1
Web app development
₹50,000
Total
₹95,000
Terms
Invoice to be paid in advance.
Make payment in 2,3 business days.
acme.com
<EMAIL_ADDRESS>+91<PHONE_NUMBER>


E-Commerce is a heavily growing market. We provide services such as creating user-friendly interface, search for user recommendations, payment gateway with multiple options, shipping & product tracking, feedback, etc.
Android is growing rapidly with user base already over billions. In today's world, mobile application is being used to grow any new idea. We help to create applications in various categories.
There is a huge potential in the area of web designing & development. We help you in creating full stack web applications, everything from responsive UI designing, RESTful services and backend development.
Lead Developer
Lead Developer
Lead Developer
Please visit our linkedIn profiles for more detail.


WITNESS LIST Study Comsn on Water Environmental Flows Committee February 18, 2004 - 9:30A Environmental Flows - San Antonio ON: Alexander, Lauren (National Academy of Sciences), Washington, DC Garza, Ed Mayor (City of San Antonio), San Antonio, TX Hess, Myron (National Wildlife Federation), Austin, TX Hobbs, Jr., Gregory Justice, Colorado Supreme Court (Self), Denver, CO Hoffman, Margaret Executive Director (Texas Commission on Environmental Quality), Austin, TX Kramer, Ken (Lone Star Chapter, Sierra Club), Austin, TX Rochelle, Martin (Self), Austin, TX Rothe, Greg (Texas Water Conversation Association), San Antonio, TX


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public static interface Pack200.Unpacker
The unpacker engine converts the packed stream to a JAR file.
An instance of the engine can be obtained
using Pack200.newUnpacker()
.
Every JAR file produced by this engine will include the string "PACK200" as a zip file comment. This allows a deployer to detect if a JAR archive was packed and unpacked.
| Field Summary | |
|---|---|
static String |
DEFLATE_HINT
Property indicating that the unpacker should ignore all transmitted values for DEFLATE_HINT, replacing them by the given value, TRUE or FALSE . |
static String |
FALSE
The string "false", a possible value for certain properties. |
static String |
KEEP
The string "keep", a possible value for certain properties. |
static String |
PROGRESS
The unpacker's progress as a percentage, as periodically updated by the unpacker. |
static String |
TRUE
The string "true", a possible value for certain properties. |
| Method Summary | |
|---|---|
void |
addPropertyChangeListener(PropertyChangeListener listener)
Registers a listener for PropertyChange events on the properties map. |
SortedMap<String,String> |
properties()
Get the set of this engine's properties. |
void |
removePropertyChangeListener(PropertyChangeListener listener)
Remove a listener for PropertyChange events, added by the addPropertyChangeListener(java.beans.PropertyChangeListener) . |
void |
unpack(File in,
JarOutputStream out)
Read a Pack200 archive, and write the encoded JAR to a JarOutputStream. |
void |
unpack(InputStream in,
JarOutputStream out)
Read a Pack200 archive, and write the encoded JAR to a JarOutputStream. |
| Field Detail |
|---|
static final String KEEP
DEFLATE_HINT
,
Constant Field Valuesstatic final String TRUE
DEFLATE_HINT
,
Constant Field Valuesstatic final String FALSE
DEFLATE_HINT
,
Constant Field Valuesstatic final String DEFLATE_HINT
TRUE
or FALSE
.
The default value is the special string KEEP
,
which asks the unpacker to preserve all transmitted
deflation hints.
static final String PROGRESS
PropertyChangeListener
.
At a minimum, the unpacker must set progress to 0 at the beginning of a packing operation, and to 100 at the end.
addPropertyChangeListener(java.beans.PropertyChangeListener)
,
Constant Field Values| Method Detail |
|---|
SortedMap<String,String> properties()
The property map may contain pre-defined implementation specific and default properties. Users are encouraged to read the information and fully understand the implications, before modifying pre-existing properties.
Implementation specific properties are prefixed with a package name associated with the implementor, beginning with com. or a similar prefix. All property names beginning with pack. and unpack. are reserved for use by this API.
Unknown properties may be ignored or rejected with an unspecified error, and invalid entries may cause an unspecified error to be thrown.
void unpack(InputStream in, JarOutputStream out) throws IOException
Closes its input but not its output. (The output can accumulate more elements.)
in
- an InputStream.out
- a JarOutputStream.
IOException
- if an error is encountered.void unpack(File in, JarOutputStream out) throws IOException
Does not close its output. (The output can accumulate more elements.)
in
- a File.out
- a JarOutputStream.
IOException
- if an error is encountered.void addPropertyChangeListener(PropertyChangeListener listener)
listener
- An object to be invoked when a property is changed.properties()
,
PROGRESS
void removePropertyChangeListener(PropertyChangeListener listener)
addPropertyChangeListener(java.beans.PropertyChangeListener)
.
listener
- The PropertyChange listener to be removed.addPropertyChangeListener(java.beans.PropertyChangeListener)
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


Getting up and running on Strider is very easy. After you create your account, follow the prompts to link your Github account using OAuth2. Strider will then fetch the list of Github repositories for which you have admin rights. Select the initial Github repository that you would like to test (and optionally deploy) with Strider. On the next screen you can add any additional members of the team to the project.
If you would like Strider to deploy to Heroku automatically when tests pass (AKA deploy-on-green), click 'continue to deployment configuration'. You will then need to enter your Heroku API key. You can find your API key about halfway down the 'My Account' page on Heroku (why do we need your Heroku API key?). Then select from an existing Heroku app or enter the name for a new app.
The final step is to modify your project so that it will work properly with Strider. This won't take long but is specific to your language and framework, so please click on the appropriate link below.
Strider will run 'npm install' to install all of your packages as specified in package.json and npm-shrinkwrap.json (if present).
Once all of the modules are installed, Strider will run the command 'npm test' to execute your node.js automated tests. npm will look for a scripts key in packages.json that should look something like this:
"scripts": { "test": "node_modules/mocha/bin/mocha -R tap" }
We are using Mocha in this example but any test framework will work as long as it can be called from the command line.


Using Breakout Server
Breakout Server is simple WebSocket and HTTP server that bridges an I/O board (such as Arduino) to a web browser. The server uses webbit for the WebSocket and HTTP server connections. If you prefer, you can serve your pages from another web server (for example if you need to use php) and simply use Breakout Server to connect to the I/O board via WebSockets.
Requirements
View system and browser
requirements
Installation
To install Breakout Server, simply download the files to your hard drive. You’ll find a version of Breakout Server for your platform in Breakout/server/. If you cloned or downloaded the repository from github, then this directory will contain folders for Mac OS X, Windows (32 bit and 64 bit) and Linux along with the server source code. If you downloaded the Breakout zip package from the Download link, you will find a zip for each platform in the Breakout/server/ directory. Note that if you move the server files out of the Breakout/server/ directory, you will need to update the webserver root directory location. See WebServer Root Directory in the Settings Panel section of this guide for more info.
Here are more specific instructions for each platform:
Mac OS X
If you downloaded the Breakout release package, expand the breakout_server-mac.zip file in Breakout/server/. You can either run the Breakout Server application directly from the breakout_server-mac folder or move it to your Applications directory. You can delete the win and linux zip files.
If you cloned the source from github then the contents of the Breakout/server/ directory are not compressed. You can use the server for your platform as is, or you can copy it to Applications or another location on your hard drive.
Mac OS X Mountain Lion (and newer) users may need to temporarily disable Gatekeeper to launch Breakout Server for the first time. After the initial launch you can re-enable Gatekeeper.
Windows
If you downloaded the Breakout release package, expand the breakout_server-win.zip (32 or 64 bit version depending on your OS) file found in the Breakout/server/ directory. You can either move the breakout-server-win folder to another location on your hard drive or run it directly from the breakout_server-win folder. You can delete the mac and linux zip files.
If you cloned the source from github then the contents of the Breakout/server/ directory are not compressed. You can use the server for your platform as is, or you can copy it to another location on your hard drive. If you want to move the Breakout Server.exe application, move the breakout_server-win folder. The rxtxServer.dll must be at the same level as the exe file in order for the server to work properly.
Linux
Breakout Server has only been tested in 64-bit Ubuntu 11.10, 12.04 and 14.04 and it may or may not work on
other distributions. You will first need to run sudo apt-get install librxtx-java
to ensure that
the serial drivers are properly installed. If you know how to manually install them, you may do that as well.
Once the serial drivers are installed you can launch the jar from the command line (java -jar
BreakoutServer.jar).
If you downloaded the Breakout release package, expand the breakout_server-linux.zip file found in the
Breakout/server/ directory. You can move the breakout-server-linux folder to another location on your hard
drive or run the JAR directly from the breakout_server-linux folder. You can delete the mac and win zip files.
The librxtxSerial.so driver is included in case you choose to manually install this file, however it should
have been installed to the proper location automatically if you ran
sudo apt-get install librxtx-java
. The Breakout icon is also included in case you want to create
a custom launcher for the Breakout Server application.
Application Overview: Status Panel
The status panel provides the following UI elements:
- A drop-down list to select the serial port the I/O Board is connected to (most often the 1st item in the list so you don’t have to select it).
- A text input containing the network port (default = 8887). You can also change this value (see ‘Changing the Network Port’ below)
- A button to connect/disconnect the server (connects/disconnects the serial port and the web server).
Changing the network port
You can change the network port number by entering a new number. Be sure to press the Enter key upon changing the number. The new number will be stored until it is changed again in the future. When you change the port number, be sure to use the new port number when creating a new instance of the I/O board in your script. For example, if you changed the port number to 9000 in the Status panel you need to use the new port number when creating an new instance of an IOBoard object:
var arduino = new IOBoard("localhost", 9000);
Application Overview: Settings Panel
The settings panel provides the following UI elements:
- A non-editable textbox displaying the web server root directory
- A button to open a file chooser to select a new root directory for the web server
- A checkbox to enable multi-client connections (see the section on multi-client connections below)
Webserver Root Directory
The default webserver root directory is “../../” which is the relative path from the server (ie server/breakout_server-mac) to the root of the Breakout directory. If you move Breakout Server to another directory (such as your Applications folder) you can update the Webserver root directory by clicking the Choose New Webserver Root button and selecting the root directory of your web app(s). This may be the Breakout directory, or any directory you choose to work from (as long as you also copy the Breakout.js file and any other required files to that directory). The new webserver root will be stored until you change it again in the future.
Multi-client Connections
By default Breakout Server only supports one client connection at a time. While one browser is connected, if another browser tries to connect, the connection is taken over by the 2nd browser. This is because in default mode, upon connect, a soft reset of the I/O board is performed to set the pins back to their default state. This is helpful when you are writing a script and want new code to execute when you refresh the browser. If the I/O board pins did not reset to their default state, the script would begin executing with the board in the state it was in prior to refreshing the browser.
However, there are other cases in which you may want to share data from the I/O board with multiple clients. In this case you expect to connect to a I/O board in its current state. Enabling the multi-client connections checkbox will allow multiple clients to connect to the server. Upon connection, the current state of the I/O board is copied to the client so there are no interruptions of data being viewed on other clients.
If you only need a single client connection but do not want the I/O board to reset it’s state upon refreshing the browser, then you can also enable multi-client connection mode for that purpose.
Also, it’s worth noting that multi-connect mode works well when you are sending data from the IOBoard (such as sensor data), but not as well when you are sending data to the IOBoard (such as controlling a motor or an RGB led) unless each client is trying to control a unique component on the IOBoard.
Connecting
Clicking the ‘Connect’ button creates the serial connection to the I/O board and also starts the WebSocket and HTTP server. Upon connection you should see the following in the status message area:
- The name and port of the computer you are connected to.
- The Serial port you are connected to.
- The Connect button should now read “Disconnect”
Note that when you click the Connect button that the IOBoard is reset. This is helpful if you are in multi-client mode and want to reset the IOBoard to it’s default state. All clients will be disconnected when the Disconnect button is clicked.
If you enabled multi-client connection mode in the Settings Pane, then you should see the following:
To connect a client, open web browser and enter the url of an html file (be sure to include the port number in the url… for example: http://localhost:8887/examples/getting_started/hello_world.html). You should see the connection status as follows:
In multi-client connection mode you will see the number of active connections. Note that the client number may be higher than the number of active connections, especially if you are refreshing one of the open browser windows.
Connecting Mobile Devices
Mobile browser clients can connect to Breakout Server if they support WebSockets. Currently iOS, Firefox (8 or higher) for Android and Chrome Beta for Android (ice cream sandwich only) support WebSockets. Performance depends on the complexity of the web app you are trying to load. To connect a mobile device, you must be on the same network as the computer running Breakout Server and you must set the IP address in the IOBoard constructor to the IP address of the computer running the server. For example if the IP address of the computer running Breakout Server is <IP_ADDRESS> then instantiate an IOBoard as follows and you should be able to load the page on a mobile device:
var arduino = new IOBoard("<IP_ADDRESS>", 8887);
Troubleshooting
If you run into any issues while trying to use Breakout Server, first check the following:
- Make sure your firewall allows port 8887 (or any new port number you may have set).
- Make sure your I/O board serial port is available. Verify by compiling and uploading a sketch in the Arduino IDE.
- Ensure you have Java Runtime Environment version 1.6 or higher installed.
- If you moved Breakout Server out of the Breakout/server/ directory, make sure you updated the WebServer Root Directory location in the Settings panel.
- If you are attempting to connect from a mobile device, make sure the device browser supports WebSockets and that you are on the same network as the computer running Breakout Server. Also make sure you are using a fairly new device (for example iPhone 3G and older are too slow).
- If the issue persists, file an issue on the Breakout github site.


Green Appliance Service has been serving New Braunfels since 1981. We service most major household appliances — including most washers, dryers, refrigerators, dishwashers, and under counter ice machines in home. Please contact us at<PHONE_NUMBER>.
We serve both residential and commercial properties in the greater New Braunfels area. More words about stuff, including:
Green Appliance Service has been serving New Braunfels since 1981. We service most major household appliances — including most washers, dryers, refrigerators, dishwashers, and under counter ice machines in home.
Green Appliance Service has been service the New Braunfels area for over 30 years, established in 1981 by Chris and Karen Green. Green Appliance Service has been service the New Braunfels area for over 30 years, established in 1981 by Chris and Karen Green. Green Appliance Service has been service the New Braunfels area for over 30 years, established in 1981 by Chris and Karen Green.


Linux Basic Commands
There are several Linux command we can use within Webstorm terminal. However, we will go
through the basics.
The first command cd is one of the most used. This command
allows you to move between directories. The image below shows you that by just typing
cd and the name of the directory will take you to it. If you want to one directory back
you simply type cd.
Another common command is ls, which refers to list. There are several
ways to use it. For the example below, typing ls will display the content
of a directory.
ls -l will display a more detailed view of the directory. ls -a and
ls -s will display a list of directories from the oldest to the newest.
mkdir is another common command, which is mostly used for creating
a directory.
You could also edit does directories. rm -r deletes a directory and all of the sub directories. rm [filename] will delete the file you typed.
If you want to rename or move a directory/file to another directory you can do it by
using the command mv [filename or directory] [renamed file or moved file directory].
Dealing With Files
There is also a command that allows you to create an empty file or edit it. For example, if you use the command touch [name of file], that will create an empty file. For example, if you type touch readme.md, then it will create a document file in the current directory.
To edit the files you use the command vi [name of file]. A command promt
will appear in the terminal where you can write/edit it.  If you want to exit and quit editing that file
you can press q to quit.
A few couple of key words when editing a file through the command prompt. If you press i it means insert. Pressing x means delete a character. Pressing dd means delete a line. Lastly, if you press / it means to search.


Find everything you need to know about NUS Modules!
Search For Your Review:
Selected module: {{ selected.name || 'none' }}
{{selected.id || 'none'}}
We can pull the above data from {{selected.name}} to populate the dashboards.
Find everything you need to know about NUS Modules!
Search For Your Review:
Selected module: {{ selected.name || 'none' }}
{{selected.id || 'none'}}
We can pull the above data from {{selected.name}} to populate the dashboards.


A Bit of Git for the non-Twit Or
How Many Words Rhyme with Git
02014-10-28
So there you sit, humming along life at a steady clip, when all of a sudden you're hit. You've got this idea and the need to make it real is tremendous. So you get to it. You start slamming keys, one fervent mitt after the other on the board. Prudently you save frequently, occassionally you have the discipline to revise, but past experiences of unintended consequences makes your teeth grit when you do that. This is happening for awhile until you get to a part where you need techniques you're unfamiliar with and a friend becomes interested.
They join you in this slowly growing pit of code and emails flit back and forth. It starts out fine, but then the snags hit. It becomes harder and harder to figure out which change was where and when a file needs to be replaced with an altered one. Suddenly some change borked the whole thing. You can't figure out where the crit fail was rolled and large swathes of code are unsalvagable.
Now I stand in the bully pulpit to tell you: This is why you should use version control. In general it can be thought of as a more extensive saving. In particular, git tracks changes in the project. I suspect that it is entirely based on changes, and doesn't have dozens or hundreds copies of full projects. You tweak the bytes in your project bit by bit and then when you think it's a good change, when it's fit to commit, you log that change to the record and carry on. Each change is given a unique ID and then if you want to revert to a previous state it can generate them. So this helps in at least two ways, one: the algorithm handles keeping track of changes, be they from one, ten or a hundred people. Two: disasters are substantially mitigated.
Git has built into it functionality allowing it work across multiple computers, allowing you to check in one place to see what work other people might have done as opposed to many, reducing collaboration costs. While it is possible to set up your own server to do this, perhaps for the security conscious amongst you, there exist several pre-existing services that will take the hosting load off your hands. A prominent one in the open source community is Github. The default options are for public repositories, so if you like to see your projects writ large across the whole internet it's the place for you. This way you can share it and bring more people in to work on it more easily.


Email: #{user.key().name()}
Picture: (You can change it via gravatar):
User name(required)
Your site（optional）
Do you want to receive email notification when your comment be replied? No, I don't want to be disturbed.