Specification |
IS-0805 / IS-SRV |
IS-1202 |
IS-1802 |
IS-2402 |
IS-6004 |
|---|---|---|---|---|---|
| Processor | Single/dual Intel Xeon Scalable Bronze 3104 or higher | Single/dual Intel Xeon Scalable Bronze 3104 or higher | Single/dual Intel Xeon Scalable Silver 4108 or higher | Single/dual Intel Xeon Scalable Silver 4108 or higher | Single/dual Intel Xeon Scalable Silver 4108 or higher |
| RAM | 16GB – 256GB ECC Memory | 32GB – 1TB ECC Memory | 32GB – 2TBGB ECC Memory | 32GB – 512GB ECC Memory | 32GB – 2TB ECC Memory |
| OS redundancy | Single/mirrored HDD/SSD boot devices | Single/mirrored SSD boot devices | Single/mirrored SSD boot devices | Single/mirrored SSD boot devices | Single/mirrored SSD boot devices |
| Drive Support | 3.5” x8 SAS / 2.5” x16 SAS/SSD drives | 3.5” x12 SAS / 2.5” x24 SAS/SSD drives | 3.5” x18 SAS / 2.5” x32 SAS/SSD drives | 3.5” x26 SAS / 2.5” x48 SAS/SSD drives | 3.5” x60 SAS + 2.5" x8 SSD drives |
| Raw Capacity | Upto 112TB | Upto 168TB | Upto 252TB | Upto 364TB | Upto 840TB |
| RAID protection | RAID z1/z2/z3/mirror | RAID z1/z2/z3/mirror | RAID z1/z2/z3/mirror | RAID z1/z2/z3/mirror | RAID z1/z2/z3/mirror |
| Throughput | 300MBps to 600MBps (with 10GbE NIC) | 500MBps to 1GBps (with 10GbE NIC) | 900MBps to 1.8GBps (with 10GbE NIC) | 1.2GBps to 2.2GBps (with 10GbE NIC) | Upto 3GBps (with 10GbE NIC) |
| Performance Acceleration (Optional) | All-Flash drives or read/write acceleration via SSD | All-Flash drives or read/write acceleration via SSD | All-Flash drives or read/write acceleration via SSD/NVDIMM | All-Flash drives or read/write acceleration via SSD/NVDIMM | All-Flash drives or read/write acceleration via SSD |
| Data Ports (Ethernet) | 1GbE x2 Ports + optional 10GbE / additional 1GbE | 1GbE x2 Ports + optional 10GbE / additional 1GbE | 1GbE x4 Ports + optional 10GbE / additional 1GbE | 1GbE x4 Ports + optional 10GbE / additional 1GbE | 10GbE x2 Ports + optional 1GbE / additional 10GbE |
| Management | 10/100 Ethernet Management Port | 10/100 Ethernet Management Port | 10/100 Ethernet Management Port | 10/100 Ethernet Management Port | 10/100 Ethernet Management Port |
| Power Supply | (1+1) Redundant PSU | (1+1) Redundant PSU | (1+1) Redundant PSU | (1+1) Redundant PSU | (1+1) Redundant PSU |
| Chassis | Tower/2RU/5RU | 2RU | 2RU | 2RU | 4RU |
| Warranty | 3 Years | 3 Years | 3 Years | 3 Years | 3 Years |
| Accessories | HBA, DVD-drive, USB ports, monitor, KB, mouse & cables configured as required | HBA, DVD-drive, USB ports, monitor, KB, mouse & cables configured as required | HBA, DVD-drive, USB ports, monitor, KB, mouse & cables configured as required | HBA, DVD-drive, USB ports, monitor, KB, mouse & cables configured as required | HBA, DVD-drive, USB ports, monitor, KB, mouse & cables configured as required |
| Dimensions & Weight | 29.5Kg (fully populated); Width: 307.9mm, Depth: 573.mm | 29.65Kg (fully populated); Width: 482mm, Depth: 707.74mm | 33.1Kg (fully populated); Width: 482mm, Depth: 751.34mm | 56.1Kg (fully populated); Width: 482mm, Depth: 751.34mm | 93.2Kg (fully populated); Width: 447mm, Depth: 1099mm (1177 w/CMA) |
| Operating Temperature | 10°C to 35°C | 10°C to 35°C | 10°C to 35°C | 10°C to 35°C | 10°C to 35°C |
| Workload Selection | |||||
| File Storage & Backup | Economical system for small to medium fileserver & backup. Consolidate file storage and backups with this affordable storage system | Medium to large capacity storage system designed for high performance or for large central backup and archival. | High capacity storage system designed for high performance or for large central backup and archival. | High capacity storage system designed for high performance or for large central backup and archival. | Ultra high capacity storage system designed for high performance or for large central backup, archival. |


About¶
This is the user Subutai Platform’s user documentation. Here you will find updated information on how to install, run and make the best possible use of our products:
- `*Subutai™
- PeerOS* <https://docs.subutai.io/Products/PeerOS_toctree.html>`__ — Open Source, container-based P2P Cloud and IoT software and firmware.
- `*Subutai™
- Bazaar* <https://docs.subutai.io/Products/Bazaar_toctree.html>`__ — a marketplace to buy/sell/exchange/barter devices, cloud applications, and idle computer resources.
- `*Subutai™ Blockchain
- Router* <https://docs.subutai.io/Products/Router_toctree.html>`__ — power-efficient “green” broadband Cloud router and open hardware IoT gateway that serves as a plug-and-play cryptocurrency wallet and mining device.
The Open Source Project¶
The Subutai open source project and its community formed in 2013 to build a peer-to-peer (P2P) cloud and fog [1] computing platform called Subutai. The software was first released in April of 2014 under the Apache Software License 2.0.
Subutai runs cloud applications inside adaptive environments spanning across idle computer resources [2] securely over the Internet. Anyone can consume resources from others, while also providing resources to others [3]. Resources may be shared for free or rented hourly at a price determined by resource owners or based on market values. Those buying and selling resources determine the market prices of resources used to run cloud applications on the edge, and in the data center.
Also in 2014, an optional component, the Subutai Router, an open hardware project, began. The mind blowing benefits and synergy of running Subutai directly on a managed router drove its inception. The Subutai Router complements and accelerates the software with additional hardware security features, advanced cloud router functions, and IoT gateway capabilities. The first Subutai Router was manufactured in 2016. The second major version of the Subutai Router is being prepared for mass production in Q1 of 2018 in conjunction with the University of Sao Paulo.
The Subutai Software and the Subutai Router Hardware are both 100% free and open, both being licensed under the business friendly Apache Software License v2.0.
Our Mission¶
Subutai’s ultimate mission is to democratize the cloud. Subutai invokes the disruptive forces of a cloud sharing economy to achieve these ends. When anyone can participate as a provider and consumer, the tight hold and lock-in imposed by big cloud providers lessens on this vital market.
Cloud democratization leads to a supernova of potential hosting targets with different devices available to them on the edge. This in turn increases the efficiency of the cloud by allowing it to get closer to its users on the edge. It also unifies the Internet of Things and the cloud as one unified continuum.
P2P is the only viable path to cloud computing across residential internet lines using commodity computers on the edge where most devices, the Internet of Things, reside. Running clouds on the edge of the Internet makes running in the data centers of hosting and cloud providers even that much more efficient. As the world’s first P2P cloud and fog computing platform, Subutai takes multi-cloud to its ultimate limit where the number of providers can grow without bounds.
Our Ultimate Vision¶
A great inversion is coming soon where everything will flip upside down as IoT devices increase and the general public, weary of their privacy, starts to demand mastery over their own data. The service providers on the cloud will become clients to the IoT devices and personal computers on the edge. In a sense, the whole client-server paradigm will be inverted: central clients communicating with IoT Edge devices and personal services.
This emerging reality requires the unification of the cloud and the fog. A p2p cloud and fog computing platform like Subutai MUST exist to facilitate this natural progression. After all, the cloud on land is the fog. Both are clouds, one is just located on the edge of the network. It is not a matter of *if* this will happen, but *when* it will happen. In fact, the transition has already started taking place and is well on its way. Subutai is poised and ready to be at its epicenter.
How does it work?¶
Computers swarm together to create secure peer-to-peer (P2P) virtual private networks (VPN). These overlay networks operate on top of existing networks but they look and act like a physical network. The VPN has an addressable IP range, a subnet, and virtual hosts inside it can acquire IP addresses and communicate with one another.
| [1] | The term, fog computing, coined by Cisco, refers to computing on the edge of the Internet where all the devices, the Internet of Things reside. The term plays on cloud computing and the meteorological definition of fog as low altitude clouds making contact with land. The edge of the Internet (as opposed to the center where high bandwidth lines and data centers are located) is the land in the analogy. The clouds in the sky resides in data centers and the fog on the edge. |
| [2] | According to several studies, 98% of personal computer resources run idle. Another study showed 94% of EC2 instance resources in AWS (the cloud) run idle while 96% on self hosted servers run idle in company data centers. When you add all this up globally, it’s reasonable to conclude that a massive amount of computer resources needlessly perish every day. |
| [3] | The ability to consume and provide at the same time is often referred to as collaborative consumption. A community where collaborative consumption takes place is called a sharing economy, or peer economy since all participants are similar in that they can all buy and sell. |


The Marble Faun
by Nathaniel Hawthorne
The Marble Faun is a gothic romance concerning three young Americans and one young Italian Count who meet in Rome. The book features picturesque descriptions of historic art and architecture in Rome as a backdrop to a tale of mystery, murder, and romance.
Source: Hawthorne, N. (1860). The Marble Faun. Boston: Ticknor and Fields.
- Author’s Preface
- The preface to the novel.
- Chapter I: “Miriam, Hilda, Kenyon, Donatello”
- The author introduces the four major characters of the novel.
- Chapter II: “The Faun”
- Donatello talks of the mythic faun.
- Chapter III: “Subterranean Reminiscences”
- The author describes Miriam model to the reader. Miriam disappears from the group.
- Chapter IV: “The Spectre of the Catacomb”
- Miriam returns to the group and acts strangely.
- Chapter V: “Miriam’s Studio”
- Donatello visits Miriam in her studio.
- Chapter VI: “The Virgin’s Shrine”
- Leaving her studio, Miriam goes to the statue of the virgin. She and Hilda talk about religion.
- Chapter VII: “Beatrice”
- Miriam and Hilda talk of a famous portrait, Beatrice.
- Chapter VIII: “The Suburban Villa”
- The author describes the villa and the surrounding scenery.
- Chapter IX: “The Faun and Nymph”
- Donatello confesses to Miriam that he loves her.
- Chapter X: “The Sylvan Dance”
- Miriam tells Donatello that she believes he is a true faun. They frolic and revel in the glade.
- Chapter XI: “Fragmentary Sentences”
- Miriam talks to the model of death. She fears he might be crazy.
- Chapter XII: “A Stroll on the Pincian”
- While taking a walk, Hilda and the sculptor spot Donatello and notice his unhappiness.
- Chapter XIII: “A Sculptor’s Studio”
- Miriam visits Kenyon in his studio.
- Chapter XIV: “Cleopatra”
- After much discussion, Kenyon unveils his latest statue, Cleopatra, to Miriam.
- Chapter XV: “An Aesthetic Company”
- A large group of artists, englishmen, tourists (as well as Kenyon, Hilda, Donatello, and Miriam) gather together for an exhibit.
- Chapter XVI: “A Moonlight Ramble”
- While the party continues, Miriam takes a moonlit walk and is confronted by someone from her past. Noticing her terror, Donatello goes to her and threatens violence on her intruder.
- Chapter XVII: “Miriam’s Trouble”
- While sitting on a fallen column, the four friends admire the moonlight.
- Chapter XVIII: “On the Edge of a Precipice”
- Kenyon, Hilda, Donatello, and Miriam search for the chasm.
- Chapter XIX: “The Faun’s Transformation”
- Miriam confronts Donatello.
- Chapter XX: “The Burial Chaunt”
- Wondering where Hilda is, Kenyon, Donatello, and Miriam wander into the church to look at the dead monk.
- Chapter XXI: “The Dead Capuchin”
- Miriam and Donatello recognize the dead monk.
- Chapter XXII: “The Medici Garden”
- Miriam and Donatello have a discussion in the garden.
- Chapter XXIII: “Miriam and Hilda”
- Miriam goes to Hilda and speaks of her own guilty feelings.
- Chapter XXIV: “The Tower among the Apennines”
- Kenyon visits Donatello at the tower residence.
- Chapter XXV: “Sunshine”
- During his visit, Kenyon asks Donatello to let him mold a bust of him.
- Chapter XXVI: “The Pedigree of Monte Beni”
- Kenyon discovers many peculiarities and occurances regarding the family history of the Counts of Monte Beni.
- Chapter XXVII: “Myths”
- Donatello tells Kenyon that he has the gift of talking to animals and tries to communcate with the creatures of nature.
- Chapter XXVIII: “The Owl-Tower”
- Donatello takes Kenyon to the old tower.
- Chapter XXIX: “On the Battlements”
- While looking out from the tower, Donatello and Kenyon discuss battles, clouds, and the life of monks.
- Chapter XXX: “Donatello’s Bust”
- Donatello’s bust is almost completed.
- Chapter XXXI: “The Marble Saloon”
- Miriam confesses to Kenyon her unhappiness regarding Donatello.
- Chapter XXXII: “Scenes by the Way”
- The two travelers (Kenyon and Donatello) take a long journey.
- Chapter XXXIII: “Pictured Windows”
- Donatello and Kenyon continue on their journey and comment on their natural surroundings.
- Chapter XXXIV: “Market-Day in Perugia”
- Donatello and Kenyon wander through the markets in Perugia.
- Chapter XXXV: “The Bronze Pontiff’s Benediction”
- Kenyon comes upon Miriam.
- Chapter XXXVI: “Hilda’s Tower”
- Hilda laments her current situation.
- Chapter XXXVII: “The Emptiness of Picture-Galleries”
- Hilda wanders through a picture gallery and feels the weariness and lonliness that accompanies it.
- Chapter XXXVIII: “Altars and Incense”
- Hilda makes a pilgrimage and ponders Catholicism.
- Chapter XXXIX: “The World’s Cathedral”
- Hilda wanders into a cathedral and becomes entranced by its magic.
- Chapter XL: “Hilda and a Friend”
- After Hilda receives the priest’s blessing, she is reunited with Kenyon.
- Chapter XLI: “Snow-Drops and Maidenly Delights”
- Kenyon and Hilda enjoy their reunion and catch up on past events.
- Chapter XLII: “Reminiscences of Miriam”
- Hilda bids Kenyon never to speak of Miriam
- Chapter XLIII: “The Extinction of a Lamp”
- Kenyon and Hilda come upon a shrine and, after becoming lost in thought, notice that the shrine's lamp goes out for the first time in centuries.
- Chapter XLIV: “The Deserted Shrine”
- Upon noticing the flame’s gone out, Kenyon goes inside to investigate.
- Chapter XLV: “The Flight of Hilda’s Doves”
- Noticing that Hilda’s light has gone out, Kenyon worries for her safety.
- Chapter XLVI: “A Walk on the Campagna”
- While wandering, Kenyon turns toward the Campagna and, looking for Hilda, spies an artistic treasure.
- Chapter XLVII: “The Peasant and Contadina”
- Donatello and Miriam arrive in costume telling Kenyon about the carnival.
- Chapter XLVIII: “A Scene in the Corso”
- The author describes the merriment at the Carnival. The sculptor spots 2 black masked figures.
- Chapter XLIX: “A Frolic of the Carnival”
- The sculptor tries to follow the figures wearing black masks.
- Chapter L: “Miriam, Hilda, Kenyon, Donatello”
- Hilda and Kenyon talk of religion and prayer.
- Conclusion
- The author’s anticipated conclusion.


Home
About
Menu
Locations
Contact
About
Menu
Locations
Contact
Welcome to
Pop!
Find a location near you!
Welcome to
Pop!
Find a location near you!
Find out what our customers are
raving
about!
Pop!
has quickly become my daily spot to work and grab something to drink. There's always something tasty to try!"
-Jackie
I have come here a few times and will be back! There is always a good deal and my friends and I love it!
-Emily


Using VIIRS data to detect urban conurbation between metropolitan regions.
Collaboration with: Patrick Adler and Richard Florida
Demo: link
Collaboration with: MIT Urban risk lab, Fadi Masoud, Isaac Seah and a bunch of other people at MIT and UofT.
Clustering data represented as hypergraphs.
Collaboration with: Moussa R. Mansour, Paola Valdivia, Laurent Najman, and Jean Cousty
Paper: link
Advisor: Prof. Neucimar J. Leite
Advisor: Prof. Neucimar J. Leite
An UofT - Connaught Global Challenge project, with researchers from several areas, aiming to improve the understanding of the urban environment in its many facets. My role is to develop new visual analytics methods to enable the identification and dissemination of insights from urban data, to both professionals and the general public.
Development of visual analytics systems for urban data and creation of new data clustering methods.
Visual analytics for network data, including project management, team coordination, and mentoring.
Development of a WebGIS / visual analytics system for the TerraClass project, disseminating knowledge about land use and deforestation in the Amazon Forest.
Human motion analysis for underwater sports, camera calibration methods for underwater capture, new methods for asynchronous marker reconstruction, methods for markerless tridimensional pose recovery.
Signal processing in digital structures. New theory and methods for signal processing in graphs and meshes, applications in the digitization efforts of the French National Library.
Template from: https://startbootstrap.com/template-overviews/resume/


---
layout: post
title: happy kids laughing out loud at pashupatinath in
date: '2015-08-19T02:08:34+02:00'
tags:
- Instagram
- PhotoOfTheDay
tumblr_url: http://deepredsky.tumblr.com/post/127018195279/happy-kids-laughing-out-loud-at-pashupatinath-in
---
Happy kids laughing out loud at Pashupatinath in Kathmandu #nepal #photooftheday #temple #pashupatinaath #Kathmandu


Bradley Hunter
Based in Chicago. I love playing tennis and loud music.
Lucas Marsha
I get my inspiration from nature and objects around me. I have a passion to colours, typography and skateboars.
Heather Walker
I'm a happy person that loves cats and climbing on mountains.
Bradley Hunter
Based in Chicago. I love playing tennis and loud music.


Username and Password
{% if "manage_user" in request.path %}
Change the username and/or password for user {{username}}.
Proceed with caution. This will affect the user's ability to log in.
{% else %}
Enter the username and a temporary password for the user. The user should change this on their first log in.
{% endif %}
{{ wtf.form_field(form.password, class='form-control',
placeholder='Password') }}
{{ wtf.form_field(form.password2, class='form-control',
placeholder='Confirm Password') }}
{% for error in form.password.errors %}
{{ error }}
{% endfor %}


Drag
Simple drag
Drag using handle
handle
Drag only inside the window
Drag only inside the specific area
Drag with disabled 'y' axis
Resize
Simple resize
Resize with proportions
16:9
Resize with disabled 'y' axis
Resize only by using mouse wheel or two fingers
Ctrl + scroll / Two fingers


{% extends 'base.html' %} {% load static %} {% block styles%} {{block.super}} {% endblock %} {% block content %} {{block.super}}
Beautiful, free photos. Gifted by the world's most generous community of photographers


Rock Paper Scissors
Score:
Player:
-
Computer:
-
Rock
Paper
Scissors
---
game over text
click to close


Thanks for checking out my page. Here's a little bit about me, and a few questions to offer some additional info and test your recollection.
I grew up in Aberdeen, South Dakota, the pheasant capital of the world. I have one sister, and spent lots of summers on the Missouri River fishing with my Dad. After high school I moved to Minnesota, took a few courses at the local college, and waited tables. A few years later I moved to Portland and attended PSU, receiving a BA in Linguistics. I worked in nonprofit communications for eight+ years, and returned to school in 2009 to study Graphic Design at Mt. Hood Community College. I enjoy all things design, and continue to work with nonprofits and small businesses in a freelance capacity. I'm back in school to become a front-end developer.
When not in front of a computer, I like to be outdoors—hiking, camping, or day-tripping with my partner. And here are a few of my other favorite things:


This application contains a standalone zooming text entry user interface.
Demonstration is hereThe user interface can also be added as a a custom keyboard:
The user interface can then be used as the keyboard in any application on the device.
This is a proof of concept application and isn't intended for production use.
© 2020 The ACE Centre-North, UK registered charity 1089313.


For this activity, you'll continue to practice simple WebGL drawings using vertex points. Your goal is to alter the code in the Assisted Code tab to create an arc. If you get stuck, you can peek at our implementation by clicking on the Solution tab.
The equation of circle is X2 + Y2 = r2, where r is radius.
This tutorial is adapted from this MDN article .


LOST SOULS
Reviewed by Harvey Karten New Line Cinema Director: Janusz Kaminski Writer: Pierce Gardner (story), Betsy Stahl Cast: Winona Ryder, Ben Chaplin, John Hurt, Elias Koteas, Sarah Wynter, John Diehl, W. Earl Brown, Ashley Edner
If you want to know why the cost of library paste has gone up more or less proportionally to the price of gasoline, look no further than Janusz Kaminski. A master cinematographer ("Saving Private Ryan," "Schindler's List"), Kaminski took on the job of directing this time and seems to have cornered the market in glue, pasting together some strips of film to construct a frustratingly fragmented, unconvincing movie about satanic possession. "Lost Souls," which I've been told situated itself on a production shelf for about a year before being released, is a godawful story about God's awful foe whose only claim to fame is its grainy, stylized visual form. Even here, though, rather than having an audience sit through 106 mintues of depressingly granulated film, couldn't Kaminski simply deliver about ten minutes of the stuff and then exhibit a subtitle saying, "OK, folks, you get the idea...the texture is like that of 'The Blair Witch Project' because this is one spooky story...now let's get on with the tale using real film"?
The film opens with an ominous black-white section, numbers floating about as in Darron Aronfsky's "Pi," then liquefying to transform into names. A number of characters are introduced helter skelter, none developed though each needs to be told to lighten up. Father Lareaux (John Hurt), John Townsend (Elias Koteas) attended by parochial-school teacher Maya Larkin (Winona Ryder) are testing their skills as exorcists on jailbird Henry Birdson (John Diehl), and though the rite is a failure, Maya is put in touch with the reality that she was herself possessed at one time. By scrutizing Birdson's writings, she realizes that the handsome and popular writer Peter Kelson (Ben Chaplin) has been chosen for possession, but as an atheist he has only himself to blame. To prove his secularism, Kelson had told a TV interviewer that there is no such thing as evil, i.e. not with a capital E, but that what we ordinary people think of as evil is nothing by a psychological state of narcissism. Maya has a tough time convincing the author about the danger which Satan poses to his life given the man's fame, his good- looking girl friend (Sarah Wynter) and his swank urban apartment.
If Pierce Gardner and Betsy Stahl's story is hopelessly segmented, at least we're treated to a few (but far between) scary sequences embodying Maya's hallucinations. The best occurs in a women's room as Maya, putting on a fresh face, is confronted with a veritable flood of sewage seeping from the three toilets, crumbling walls, and enigmatic missives written on walls. But if you've seen the classics of the genre such as "The Exorcist" and "Rosemary's Baby" you've seen it all.
The film's conclusions, a confrontation in a car between Maya and Peter, is laughable, which is more than you can say about the bulk of this soporific, pasted-together disarray of a film.
Rated R. Running time: 106 minutes. (C) 2000 by Harvey Karten<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Author: tzd
Release Date: 21 JUL 2015
Updated: 18 AUG 2015
Email support<EMAIL_ADDRESS>Thank You for purchasing Altair Template. If you have any questions regarding this template and are beyond the scope of this help file, please feel free to send me a message via support page for this template or email.
Altair is a professional HTML5/CSS3 Material Design template based on UIkit Framework and jQuery Library. This template has been built with Bower (package manager), Gulp (streaming build tool) and Handlebars.js (templating system).
/src
contains all source files (plain/minified JavaScript, uncompressed/compressed CSS, LESS files, PHP files)
/dist
contains production ready files (minified JavaScript, compressed CSS, HTML files)
This folder contains all source files that you can use to build custom template.
Altair is build on LESS (CSS preprocessor), uses Bower as a package manager and uses Gulp for its build system.
/src
├── assets/
│ ├── css/
│ ├── icons/
│ │ ├── flags/
│ │ └── material-design-icons/
│ ├── img/
│ │ ├── avatars/
│ │ ├── ecommerce/
│ │ ├── gallery/
│ │ ├── md-images/
│ │ └── spinners/
│ ├── js/
│ │ ├── custom/
│ │ └── pages/
│ ├── less/
│ │ ├── components/
│ │ ├── md/
│ │ ├── pages/
│ │ ├── partials/
│ │ └── plugins/
├── data/
├── helpers/
└── php/
Before you can get started to customize Altair template you must download and install Node.js (cross-platform runtime environment) which includes npm (node packaged modules).
Then, from the command line:
package.json
(gulp, gulp plugins, browser-sync and other node modules)
$ npm install
$ bower install
If dependencies and plugins were installed without errors you can use various Gulp tasks to help with the customization process.
| Module | Description |
|---|---|
| browser-sync | Time-saving synchronised browser testing |
| del | Delete files/folders using globs |
| gulp | The streaming build system |
| gulp-autoprefixer | Prefix CSS |
| gulp-concat | Concatenates files |
| gulp-jshint | JSHint plugin for gulp |
| gulp-jsonminify | Minifies blocks of JSON-like content into valid JSON by removing all whitespace and comments |
| gulp-less | Less for Gulp |
| gulp-load-plugins | Automatically load any gulp plugins in your package.json |
| gulp-minify-css | Minify css with clean-css |
| gulp-open | Open files and URLs with gulp |
| gulp-plumber | Prevent pipe breaking caused by errors from gulp plugins |
| gulp-rename | Rename files |
| gulp-size | Display the size of your project |
| gulp-uglify | Minify files with UglifyJS |
| gulp-wrapper | A gulp plugin for wrapping files with custom strings. Access to filename is given through interpolation. |
| merge-stream | Create a stream that emits events from multiple other streams |
| os-utils | an operating-system utility library |
| run-sequence | Run a series of dependent gulp tasks in order |
For easy customization Less files are included in Altair. This files are located in /src/assets/less/
folder.
Folder structure and description:
| Folder | Description |
|---|---|
components/ |
Custom components |
md/ |
Material design styles (buttons, colors, cards, shadows etc.) |
pages/ |
Page specific styles |
partials/ |
Styles for header, sidebars and top bar |
plugins/ |
Custom styles for plugins |
altair_admin.less |
Main styles |
kendo_ui_custom.less |
KendoUI components |
main.less |
Main less file processed by gulp less_main task |
print.less |
Print styles |
uikit_custom.less |
UIkit custom styles |
variables_mixins.less |
Variables like height/width/colors and some mixins used in this template |
This folder contains production ready files (minified JavaScript, compressed CSS, HTML files).
/src
├── assets/
│ ├── css/
│ ├── icons/
│ │ ├── flags/
│ │ └── material-design-icons/
│ ├── img/
│ │ ├── avatars/
│ │ ├── ecommerce/
│ │ ├── gallery/
│ │ ├── md-images/
│ │ └── spinners/
│ ├── js/
│ │ ├── custom/
│ │ └── pages/
├── bower_components/
└── data/

<link rel="stylesheet" href="bower_components/uikit/css/uikit.almost-flat.min.css" media="all">

<link rel="stylesheet" href="assets/icons/flags/flags.min.css" media="all">

<link rel="stylesheet" href="assets/css/main.min.css" media="all">
Aditionals styles are loaded in
section bellow
comment.

// scripts merged into common.min.js
"jquery.js",
"modernizr.js",
// moment
"moment.js",
// retina images
"dense.js",
// fastclick (touch devices)
"fastclick.js",
// custom scrollbar
"jquery.scrollbar.js",
// create easing functions from cubic-bezier co-ordinates
"jquery.bez.min.js",
// Get the actual width/height of invisible DOM elements with jQuery
"jquery.actual.js",
// waypoints
"jquery.waypoints.js",
// velocityjs (animation)
"velocity.js",
"velocity.ui.js",
// advanced cross-browser ellipsis
"jquery.dotdotdot.js",
// iCheck
"icheck.js",
// selectize
"selectize.js",
// switchery
"switchery.js",
// prism syntax highlighter
"prism.js",
"prism-php.js",
"prism-line-numbers.js",
// textarea-autosize
"autosize.js"
// hammerjs
"hammer.js",
// jquery.debouncedresize
"jquery.debouncedresize.js"

Aditional JS files that comes from third-party plugins are loaded bellow
comment.
To hide sidebar (menu) on page load remove class sidebar_main_open
from
element.
Main sidebar is hidden by default when the viewport is smaller than 1220 pixels
To show mini sidebar on page load remove sidebar_main_open sidebar_main_swipe
classes from
and add sidebar_mini
class to
<!doctype html>

Few predefined themes has been added (v1.2.0 update) to ease the process of customizing Altair template.
These themes are located in /src/assets/less/themes/
folder.
Yo create new theme you need to follow this few simple steps:
my_theme.less
located in /src/assets/less/themes/
folder@app_my_theme_color
,@app_my_theme_colorLight
,@app_my_theme_colorDark
,@app_my_theme_colorAccent
gulp less_my_theme
(this theme will be located in /assets/css/ folder)
<link rel="stylesheet" href="assets/css/main.css" media="all">

<link rel="stylesheet" href="assets/css/my_theme.css" media="all">
If you don't want to use LESS and you want to create a new theme just follow this few steps:
my_theme.css
and place this file in /assets/css/
folder.
<link rel="stylesheet" href="assets/css/main.css" media="all">

<link rel="stylesheet" href="assets/css/my_theme.css" media="all">
Precompiled theme (theme_a)
.app_my_theme .uk-alert {
background: #3f51b5;
}
.app_my_theme .md-btn-primary,
.app_my_theme .md-btn-primary:hover,
.app_my_theme .md-btn-primary:focus,
.app_my_theme .md-btn-primary:active {
background: #3f51b5;
color: #ffffff;
}
.app_my_theme .md-btn-flat-primary,
.app_my_theme .md-btn-flat-primary:hover,
.app_my_theme .md-btn-flat-primary:focus,
.app_my_theme .md-btn-flat-primary:active {
color: #303f9f;
}
.app_my_theme .md-btn-flat-primary:hover,
.app_my_theme .md-btn-flat-primary:focus,
.app_my_theme .md-btn-flat-primary:active {
background: #d1d6ef;
}
.app_my_theme .uk-badge-primary {
background: #3f51b5;
}
.app_my_theme .md-card-list-wrapper .md-card-list > ul > li.item-shown.md-card-list-item-selected:before {
background: #e8eaf6;
}
.app_my_theme .md-card-list-wrapper .md-card-list .md-card-list-item-selected {
background: #e8eaf6;
}
.app_my_theme .md-card-list-wrapper .md-card-list .md-card-list-item-selected.item-shown {
background: #ffffff;
}
.app_my_theme .md-card-list-wrapper .md-card-list .md-card-list-item-selected.item-shown:before {
background: #e8eaf6;
}
.app_my_theme .md-fab.md-fab-accent {
background: #ff4081;
}
.app_my_theme .md-list .uk-nestable-list > li.md-list-item-active,
.app_my_theme .md-list > li.md-list-item-active {
color: #ff4081;
}
.app_my_theme .md-list-addon > li.md-list-item-active .md-list-addon-element,
.app_my_theme .md-list-addon > li.md-list-item-active .md-list-addon-element .material-icons {
color: #ff4081;
}
.app_my_theme .uk-pagination > li > a:hover {
background: #ffd9e6;
}
.app_my_theme .uk-pagination > li.uk-active > a,
.app_my_theme .uk-pagination > li.uk-active > span {
background: #ff4081;
color: #ffffff;
}
.app_my_theme .uk-subnav-pill > .uk-active > * {
background: #ff4081;
}
.app_my_theme .uk-tab > li > a:hover,
.app_my_theme .uk-tab > li > a:focus {
border-bottom-color: #abb4e2;
}
.app_my_theme .uk-tab > li.uk-active > a {
border-bottom-color: #3f51b5;
}
.app_my_theme .uk-tab-bottom li > a:hover,
.app_my_theme .uk-tab-bottom li > a:focus {
border-top-color: #abb4e2;
}
.app_my_theme .uk-tab-bottom li.uk-active > a {
border-top-color: #3f51b5;
}
.app_my_theme .uk-tab-left li > a:hover,
.app_my_theme .uk-tab-left li > a:focus {
border-right-color: #abb4e2;
}
.app_my_theme .uk-tab-left li.uk-active > a {
border-right-color: #3f51b5;
}
.app_my_theme .uk-tab-right li > a:hover,
.app_my_theme .uk-tab-right li > a:focus {
border-left-color: #abb4e2;
}
.app_my_theme .uk-tab-right li.uk-active > a {
border-left-color: #3f51b5;
}
.app_my_theme #header_main {
background: #3f51b5;
}
.app_my_theme.header_double_height:before {
background: #3f51b5;
}
.app_my_theme #top_bar .top_bar_nav > li > a:hover {
box-shadow: inset 0 -3px 0 #3f51b5;
}
.app_my_theme #top_bar .top_bar_nav > li.uk-active a {
box-shadow: inset 0 -3px 0 #3f51b5;
}
.app_my_theme .user_heading {
background: #303f9f;
}
.app_my_theme #sidebar_main .menu_section > ul > li ul li.act_item a {
color: #ff4081;
}
.app_my_theme #sidebar_main .menu_section > ul > li.current_section > a > .menu_icon .material-icons {
color: #ff4081;
}
.app_my_theme #sidebar_main .menu_section > ul > li.current_section > a .menu_title {
color: #ff4081;
}
.app_my_theme.sidebar_mini #sidebar_main .menu_section > ul > li > a > .menu_title {
background: #ff4081;
color: #ffffff;
}
.app_my_theme.sidebar_mini #sidebar_main .menu_section > ul > li:hover.sidebar_submenu {
background: #ff4081;
}
.app_my_theme.sidebar_mini #sidebar_main .menu_section > ul > li:hover.sidebar_submenu > a .menu_icon .material-icons {
color: #ffffff;
}
.app_my_theme.sidebar_mini #sidebar_main .menu_section > ul > li:hover.sidebar_submenu ul {
border-left-color: #ff4081;
}
.app_my_theme.sidebar_mini #sidebar_main .menu_section > ul > li.current_section > a > .menu_icon .material-icons {
color: #ff4081;
}
.app_my_theme .clndr .clndr_days .clndr_days_grid .day.today > span {
background: #ff4081;
}
.app_my_theme .DTTT_print_info h6 {
color: #ff4081;
}
.app_my_theme .fc-unthemed .fc-button.fc-state-active:after {
color: #ff4081;
}
.app_my_theme .fc-unthemed .fc-highlight {
box-shadow: inset 0 0 0 2px #3f51b5, inset 0 -1px 0 2px #3f51b5;
}
.app_my_theme .tablesorter-altair tbody > tr.row_highlighted > td {
background: #e8eaf6;
}
.app_my_theme .tablesorter-altair .headerSortUp,
.app_my_theme .tablesorter-altair .tablesorter-headerSortUp,
.app_my_theme .tablesorter-altair .tablesorter-headerAsc,
.app_my_theme .tablesorter-altair .headerSortDown,
.app_my_theme .tablesorter-altair .tablesorter-headerSortDown,
.app_my_theme .tablesorter-altair .tablesorter-headerDesc {
color: #ff4081;
}
.app_my_theme .wizard > .steps {
background: #3f51b5;
}
.app_my_theme .wizard > .steps > ul > li.current a,
.app_my_theme .wizard > .steps > ul > li.current a:hover,
.app_my_theme .wizard > .steps > ul > li.current a:active {
background: #606fc7;
}
.app_my_theme .wizard > .steps > ul > li.done a,
.app_my_theme .wizard > .steps > ul > li.done a:hover,
.app_my_theme .wizard > .steps > ul > li.done a:active {
background: #303f9f;
}
Altair is based on uikit and utilize most of the components from this framework. Click on component to show extended documentation.
| Component | Description |
|---|---|
| Accordion | Create a list of items, allowing each item's content to be expanded and collapsed by clicking its header. |
| Dropdowns | Defines different styles for a toggleable dropdown. |
| Dynamic Grid | Create a multi-column, dynamic grid layout whose items can be sorted and filtered. |
| Grid | Create a fully responsive, fluid and nestable grid layout. |
| Icons | Place vector icons anywhere using an icon font. |
| Modal | Create modal dialogs with different styles and transitions. |
| Nestable | Create nestable lists that can be sorted by drag and drop. |
| Notify | Create toggleable notifications that fade out automatically. |
| Sortable | Create sortable grids and lists to rearrange the order of its elements. |
| Tables | Easily create nicely looking tables, which come in different styles. |
| Tabs | Create a tabbed navigation with different styles. |
Telerik Kendo UI® Core is the open source version of Kendo UI, the comprehensive framework for building modern web and mobile apps with HTML5 and JavaScript.
Click on component to show extended documentation.
| Component | Description |
|---|---|
| AutoComplete | This is the typical scenario users are accustomed to today, due to its wide usage in Google Suggest, Word processors or Intelisense developers are used to in Visual Studio. The control also allows multiple value entries. |
| Calendar | With this modern HTML5 calendar widget, you can intuitively select dates and date ranges with multi-month views and special-day templates. |
| ColorPicker | By using the Telerik Kendo UI ColorPicker widget, you will inherit standard Kendo UI framework benefits such as MVVM, Customizing Templates, RTL support, Globalization and Keyboard Navigation. |
| ComboBox | The ComboBox widget allows selection from predefined values or entering a new value. It is a richer version of the standard HTML select, providing support for local and remote data binding, item templates and configurable options for controlling the list behavior. |
| Date And Time Pickers | The Kendo UI DatePicker, TimePicker and DateTimePicker allow the end user to select a date or time from a calendar or by inputting the date directly. |
| DropDownList | The DropDown widget offers a simple and lightweight drop-down list of items for single selection. It brings a user-friendly experience for the end user, with enhanced mobile and keyboard support, server and client templates, rich client-side API with a comprehensive set of events. |
| MaskedTextBox | The MaskTextBox comes in handy in numerous app scenarios. No matter if your web app requires credit card, phone number with area code, or any other specific type of input, the widget helps you define and restrict the data to be entered in the form field. |
| Menu | The Menu widget provides lightweight, SEO-friendly menu navigation and a stand-alone context menu control. It's a flexible and easy-to-customize HTML5 widget. |
| MultiSelect | The Kendo UI MultiSelect widget provides you an easy way to provide the end-users option for selecting multiple value entries in Microsoft Outlook-like fashion. |
| NumericTextBox | Create an intuitive form by providing an input specifically designed for numbers, currency, and percentages. |
| PanelBar | Telerik Kendo UI’s PanelBar control offers a professional and flexible navigation system with minimum coding efforts. The control's highly efficient semantic rendering guarantees fast responsive time and minimum HTML output. |
| Toolbar | The Kendo UI Toolbar widget allows you to easily create toolbars and to customize their content. Each item of the toolbar such as buttons, button groups, toggle buttons, split buttons or other elements, can be individually defined. |
| Window | Window displays content in a modal or non-modal HTML window. By default, a Window can be moved, resized, and closed. Its content can also be defined either as static HTML, or loaded dynamically via AJAX. |
Altair utilizes many third-party plugins, some of them are very complex and have a lot of options so it's better to use original documentation for them. Click on plugin link to get extended documentation.
| Plugin | Used on page(s) | Description |
|---|---|---|
| Autosize | multiple | A small, stand-alone script to automatically adjust textarea height. |
| c3.js | index.html, plugins_charts.html | D3-based reusable chart library |
| chartist | index.html, plugins_charts.html | Simple responsive charts |
| Ckeditor | forms_wyswyg.html | CKEditor is a ready-for-use HTML text editor designed to simplify web content creation. It's a WYSIWYG editor that brings common word processor features directly to your web pages. |
| CLNDR.js | index.html | A jQuery Calendar Plugin |
| CodeMirror | page_mailbox.html, forms_advanced.html | CodeMirror is a versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with a number of language modes and addons that implement more advanced editing functionality. |
| CountUp.js | index.html | CountUp.js is a dependency-free, lightweight JavaScript "class" that can be used to quickly create animations that display numerical data in a more interesting way. |
| D3.js | index.html, plugins_charts.html | D3.js is a JavaScript library for manipulating documents based on data. |
| DataTables | plugins_datatables.html | DataTables is a plug-in for the jQuery Javascript library. It is a highly flexible tool, based upon the foundations of progressive enhancement, and will add advanced interaction controls to any HTML table. |
| ColVis (DataTables) | plugins_datatables.html | ColVis adds a button to the toolbars around DataTables which gives the end user of the table the ability to dynamically change the visibility of the columns in the table: |
| TableTools (DataTables) | plugins_datatables.html | TableTools is a plug-in for the DataTables HTML table enhancer, which adds a highly customisable button toolbar to a DataTable. |
| Dense | all | Dense is a jQuery plugin that offers an easy way to serve device pixel ratio aware images, bringing in retina support to your website. Clear the blurry, images be crisp. |
| FastClick | all (mobile) | FastClick is a simple, easy-to-use library for eliminating the 300ms delay between a physical tap and the firing of a click event on mobile browsers. |
| FitVids.js | index.html | A lightweight, easy-to-use jQuery plugin for fluid width video embeds. |
| FullCalendar | plugins_calendar.html | FullCalendar is a jQuery plugin that provides a full-sized, drag & drop event calendar like the one below. It uses AJAX to fetch events on-the-fly and is easily configured to use your own feed format. It is visually customizable with a rich API. |
| Handlebars | index.html, page_invoices.html | Handlebars provides the power necessary to let you build semantic templates effectively with no frustration. |
| HammerJS | all (touch) | Hammer is a open-source library that can recognize gestures made by touch, mouse and pointerEvents. It doesn't have any dependencies, and it's small, only 3.96 kB minified + gzipped! |
| Ion.RangeSlider | forms_advanced.html | Easy, flexible and responsive range slider with skin support |
| jQuery | all | jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. |
| jQuery Actual Plugin | all | Get the actual width/height of invisible DOM elements with jQuery. |
| jQuery.dotdotdot | multiple | jQuery.dotdotdot, advanced cross-browser ellipsis for multiple line content. |
| easy pie chart | index.html | Easy pie chart is a jQuery plugin that uses the canvas element to render simple pie charts for single values. These charts are highly customizable, very easy to implement, scale to the resolution of the display of the client to provide sharp charts even on retina displays, and use requestAnimationFrame for smooth animations on modern devices. |
| jQuery Input Mask | forms_advanced.html | jquery.inputmask is a jQuery plugin which create an input mask. |
| jQuery Scrollbar | all | jQuery CSS Customizable Scrollbar |
| jQuery Smartresize | all | Debounced and Throttled Resize Events for jQuery |
| jQuery Steps | forms_wizard.html | An all-in-one wizard plugin that is extremely flexible, compact and feature-rich. |
| jQuery Bez | multiple | A small jQuery plugin which lets you create easing functions from cubic-bezier co-ordinates. |
| iCheck plugin | multiple | Highly customizable checkboxes and radio buttons for jQuery and Zepto. |
| jQuery Mapael | plugins_vector_maps.html | Ease the build of pretty data visualizations on dynamic vector maps. |
| jQuery Mouse Wheel | multiple | A jQuery plugin that adds cross-browser mouse wheel support with delta normalization. |
| jQuery UI | plugins_gantt_chart.html | jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. |
| Kendo UI Core | kendoui_*.html | The Open Source Kendo UI: HTML5 widgets for web and mobile development |
| Magnific Popup | page_user_profile.html | Magnific Popup is a responsive lightbox & dialog script with focus on performance and providing best experience for user with any device (for jQuery or Zepto.js). |
| Maplace.Js | index.html, plugins_google_maps.html | Maplace.js helps you to embed Google Maps into your website, quickly create markers and controls menu for the locations on map. It requires jQuery and Google Maps API v3 so you need to have both in your page. |
| Marked | forms_advanced.html, page_snippets.html | A markdown parser and compiler. Built for speed. |
| matchMedia | all | matchMedia polyfill for testing media queries in JS |
| MetricsGraphics.js | index.html | MetricsGraphics.js is a library built on top of D3 that is optimized for visualizing and laying out time-series data. |
| Modernizr | all | Modernizr is a JavaScript library that detects HTML5 and CSS3 features in the user’s browser. |
| Moment.js | all | Parse, validate, manipulate, and display dates in JavaScript. |
| Parsley | forms_validation.html | Ultimate JavaScript form validation library |
| Peity | index.html | Peity (sounds like deity) is a simple jQuery plugin that converts an element's content into a simple svg mini pie donut line or bar chart and is compatible with any browser that supports svg: Chrome, Firefox, IE9+, Opera, Safari. |
| Prism | multiple | Prism is a lightweight, extensible syntax highlighter, built with modern web standards in mind. It’s a spin-off from Dabblet and is tested there daily by thousands. |
| Raphaël | plugins_vector_maps.html | Raphaël is a small JavaScript library that should simplify your work with vector graphics on the web. If you want to create your own specific chart or image crop and rotate widget, for example, you can achieve it simply and easily with this library. |
| Selectize | multiple | Selectize is the hybrid of a textbox and <select> box. It's jQuery-based and it's useful for tagging, contact lists, country selectors, and so on. |
| Switchery | multiple | Switchery is a simple component that helps you turn your default HTML checkbox inputs into beautiful iOS 7 style switches in just few simple steps. You can easily customize switches, so that they match your design perfectly. |
| Tablesorter | plugins_tablesorter.html | Tablesorter is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. tablesorter can successfully parse and sort many types of data including linked data in a cell. |
| UIkit plugins | multiple | All kinds of useful components, such as sortable, dynamic grid, nestable, notify, tooltips etc. |
| Velocity.js | multiple | Velocity is an animation engine with the same API as jQuery's $.animate(). It works with and without jQuery. It's incredibly fast, and it features color animation, transforms, loops, easings, SVG support, and scrolling. It is the best of jQuery and CSS transitions combined. |
| Waypoints | multiple | Waypoints is the easiest way to trigger a function when you scroll to an element. |
| Weather Icons | index.html | A free, open source icon-font of Weather icons |
Access-Control-Allow-Origin
violation in Google Chrome you need to run Altair from web server (eg Mongoose) or use other web browser eg. Mozilla Firefox
// v1.3.0 (18.08.2015)
- [new] WYSIWYG Editor (forms_wysiwyg.html)
- [new] Tablesorter plugin (plugins_tablesorter.html)
- [new] Sortable plugin Dragula.js (components_sortable.html,page_scrum_board.html)
- [new] Tables Examples (components_tables_examples.html)
- [new] Tabable secondary sidebar (index.html)
- [updated] Changed kendoUI concentated js name (kendoui_custom.js;kendoui_custom.min.js)
- [updated] Added example with multiline tolltip (components_tooltips.html)
- [updated] chartist (0.9.4)
- [updated] datatables (1.10.8)
- [updated] fullcalendar (2.4.0)
- [updated] kendo-ui-core (2015.2.805+SP1)
- [updated] marked (0.3.5)
- [updated] parsleyjs (2.1.3)
- [updated] weather-icons (2.0.1)
- [bug] Fixed hierarhical animation when there is only one element
- [bug] Fixed nestable handle component
- [bug] Minor improvements and fixes (css/js)
// v1.2.0 (08.08.2015)
- [new] code editor with file editing (php) (page_code_editor.html)
- [new] chartist chart (plugins_charts.html)
- [new] style switcher with predefined themes
- [new] top menu
- [new] mini sidebar
- [new] material design colors (components_colors.html)
- [new] typography example page (components_typography.php)
- [updated] main sidebar visual changes (material design)
- [updated] main scrollable area changed from #page_content to html (fixed some issues with mobile devices and plugins)
- [bug] Minor improvements and fixes (css/js)
// v1.1.0 (28.07.2015)
- [new] chat page (page_chat.html)
- [new] scrum board page (page_scrum_board.html)
- [new] todo page (page_todo.html)
- [new] form wizard (forms_wizard.html)
- [new] register form (login.html)
- [new] 'swipe to open' gesture added (main sidebar, touch devices, 2 fingers, left edge)
- [new] added alert info style (components_common.html)
- [bug] fixed issue with custom scrollbars on mac os x [firefox]
- [bug] fixed focus error/success state for text inputs (focus) (forms_validation.html)
- [bug] added missing kendoUI images (kendoui_*.html)
- [updated] moment (2.10.6)
- [updated] kendo-ui-core (2015.2.727)
- [updated] jquery.scrollbar (0.2.8)
- [updated] jquery.dotdotdot (1.7.4)
- [updated] ionrangeslider (2.0.12)
- [updated] clndr (1.2.15)
- [updated] FAB button animation when showing options (components_buttons.html)
- [updated] gulp tasks (cleanup and minor changes)
- [updateed] Minor improvements and fixes (css/js)
// v1.0.0 (21.07.2015)
- initial release


Chrome Apps integrate closely with a user’s operating system. They are designed to be run outside of a browser tab, to run robustly in offline and poor connectivity scenarios and to have far more powerful capabilities than are available in a typical web browsing environment. The app container, programming, and security models support these Chrome App requirements.
The app container describes the visual appearance and loading behavior of Chrome Apps. Chrome Apps look different than traditional web apps because the app container does not show any traditional web page UI controls; it simply contains a blank rectangular area. This allows an app to blend with “native” apps on the system, and it prevents the user from “messing” with the app logic by manually changing the URL.
Chrome Apps are loaded differently than web apps. Both load the same type of content: HTML documents with CSS and JavaScript; however, a Chrome App is loaded in the app container, not in the browser tab. Also, the app container must load the main document of the Chrome App from a local source. This forces all Chrome Apps to be at least minimally functional when offline and it provides a place to enforce stricter security measures.
The programming model describes the lifecycle and window behavior of Chrome Apps. Similar to native apps, the goal of this programming model is to give users and their systems full control over the app lifecycle. The Chrome App lifecycle should be independent of browser window behavior or a network connection.
The “event page” manages the Chrome App lifecycle by responding to user gestures and system events. This page is invisible, only exists in the background, and can be closed automatically by the system runtime. It controls how windows open and close and when the app is started or terminated. There can only be one “event page” for a Chrome App.
For detailed instructions on how to use the programming model, see Manage App Lifecycle. Here's a brief summary of the Chrome App lifecyle to get you started:
| Stage | Summary |
|---|---|
| Installation | User chooses to install the app and explicitly accepts the permissions. |
| Startup | The event page is loaded, the 'launch' event fires, and app pages open in windows. You create the windows that your app requires, how they look, and how they communicate with the event page and with other windows. |
| Termination | User can terminate apps at any time and app can be quickly restored to previous state. Stashing data protects against data loss. |
| Update | Apps can be updated at any time; however, the code that a Chrome App is running cannot change during a startup/termination cycle. |
| Uninstallation | User can actively uninstall apps. When uninstalled, no executing code or private data is left behind. |
The Chrome Apps security model protects users by ensuring their information is managed in a safe and secure manner. Comply with CSP includes detailed information on how to comply with content security policy. This policy blocks dangerous scripting reducing cross-site scripting bugs and protecting users against man-in-the-middle attacks.
Loading the Chrome App main page locally provides a place to enforce stricter security than the web. Like Chrome extensions, users must explicitly agree to trust the Chrome App on install; they grant the app permission to access and use their data. Each API that your app uses will have its own permission. The Chrome Apps security model also provides the ability to set up privilege separation on a per window basis. This allows you to minimize the code in your app that has access to dangerous APIs, while still getting to use them.
Chrome Apps reuse Chrome extension process isolation,
and take this a step further by isolating storage and external content.
Each app has its own private storage area
and can’t access the storage of another app
or personal data (such as cookies) for websites that you use in your browser.
All external processes are isolated from the app.
Since iframes run in the same process as the surrounding page,
they can only be used to load other app pages.
You can use the object
tag to
embed external content;
this content runs in a separate process from the app.


| Package | Description |
|---|---|
| com.hazelcast.cache.impl |
Hazelcast JSR-107 aka JCache implementation
|
| com.hazelcast.client.proxy |
This package contains client side proxy implementations of the different Hazelcast data structures
and operation types
|
| com.hazelcast.core |
Provides core API interfaces/classes.
|
| com.hazelcast.map |
Contains Hazelcast map module classes.
|
| com.hazelcast.map.client |
Contains client requests for the
IMap |
| com.hazelcast.map.eviction |
This package contains eviction classes.
|
| com.hazelcast.map.mapstore |
Contains map store operations.
|
| com.hazelcast.map.mapstore.writebehind |
Package for processing write behind store operations.
|
| com.hazelcast.map.mapstore.writethrough |
Package for processing write through store operations.
|
| com.hazelcast.map.operation |
Package for map operations.
|
| com.hazelcast.map.proxy |
Contains map proxy implementation and support classes.
|
| com.hazelcast.map.tx |
Contains implementation classes for
TransactionalMap |
| com.hazelcast.multimap.impl |
Contains classes for Hazelcast MultiMap module.
|
| com.hazelcast.web |
Provides Hazelcast-based session replication.
|
| Class and Description |
|---|
| MapEntrySet |
| Class and Description |
|---|
| EntryProcessor
An EntryProcessor passes you a
Map.Entry . |
| MapInterceptor
MapInterceptor is used to intercept changes to the map, allowing access to the values before and
after adding it to the map
MapInterceptors are chained when added to the map, which means that when an interceptor is added
on node initialization it could be added twice.
|
| Class and Description |
|---|
| EntryProcessor
An EntryProcessor passes you a
Map.Entry . |
| MapInterceptor
MapInterceptor is used to intercept changes to the map, allowing access to the values before and
after adding it to the map
MapInterceptors are chained when added to the map, which means that when an interceptor is added
on node initialization it could be added twice.
|
| Class and Description |
|---|
| EntryBackupProcessor
Processes an entry on a backup partition.
|
| EntryEventFilter |
| EntryProcessor
An EntryProcessor passes you a
Map.Entry . |
| EventData
General contract for map event data.
|
| LocalMapStatsProvider
Provides node local statistics of a map via
LocalMapStatsProvider.createLocalMapStats(java.lang.String)
and also holds all LocalMapStatsImpl implementations of all maps. |
| MapContainer
Map container.
|
| MapContextQuerySupport
Support interface which is used in map specific query operations.
|
| MapEntrySet |
| MapEventPublisher
Helper methods for publishing events.
|
| MapInterceptor
MapInterceptor is used to intercept changes to the map, allowing access to the values before and
after adding it to the map
MapInterceptors are chained when added to the map, which means that when an interceptor is added
on node initialization it could be added twice.
|
| MapInterceptorContext |
| MapService
Defines map service behavior.
|
| MapServiceContext
Context which is needed by a map service.
|
| MapServiceContextEventListenerSupport
Helper event listener methods for
MapServiceContext . |
| MapServiceContextInterceptorSupport
Helper interceptor methods for
MapServiceContext . |
| MapStoreWrapper |
| NearCache
NearCache.
|
| NearCache.CacheRecord
CacheRecord.
|
| NearCacheProvider
Provides near cache specific functionality.
|
| PartitionContainer |
| RecordStore
Defines a record-store.
|
| SizeEstimator
Size estimator general contract.
|
| Class and Description |
|---|
| EntryProcessor
An EntryProcessor passes you a
Map.Entry . |
| MapEntrySet |
| MapInterceptor
MapInterceptor is used to intercept changes to the map, allowing access to the values before and
after adding it to the map
MapInterceptors are chained when added to the map, which means that when an interceptor is added
on node initialization it could be added twice.
|
| Class and Description |
|---|
| MapContainer
Map container.
|
| MapServiceContext
Context which is needed by a map service.
|
| RecordStore
Defines a record-store.
|
| Class and Description |
|---|
| MapContainer
Map container.
|
| MapStoreWrapper |
| Class and Description |
|---|
| MapContainer
Map container.
|
| MapStoreWrapper |
| Class and Description |
|---|
| MapContainer
Map container.
|
| MapStoreWrapper |
| Class and Description |
|---|
| EntryBackupProcessor
Processes an entry on a backup partition.
|
| EntryProcessor
An EntryProcessor passes you a
Map.Entry . |
| MapContainer
Map container.
|
| MapEntrySet |
| MapInterceptor
MapInterceptor is used to intercept changes to the map, allowing access to the values before and
after adding it to the map
MapInterceptors are chained when added to the map, which means that when an interceptor is added
on node initialization it could be added twice.
|
| MapService
Defines map service behavior.
|
| PartitionContainer |
| RecordStore
Defines a record-store.
|
| Class and Description |
|---|
| EntryProcessor
An EntryProcessor passes you a
Map.Entry . |
| MapInterceptor
MapInterceptor is used to intercept changes to the map, allowing access to the values before and
after adding it to the map
MapInterceptors are chained when added to the map, which means that when an interceptor is added
on node initialization it could be added twice.
|
| MapService
Defines map service behavior.
|
| Class and Description |
|---|
| MapService
Defines map service behavior.
|
| Class and Description |
|---|
| EventData
General contract for map event data.
|
| Class and Description |
|---|
| AbstractEntryProcessor
An abstract
EntryProcessor that already has implemented the AbstractEntryProcessor.getBackupProcessor() . |
| EntryProcessor
An EntryProcessor passes you a
Map.Entry . |
Copyright © 2014 Hazelcast, Inc.. All Rights Reserved.


Object
Active Record supports multiple database systems. AbstractAdapter and related classes form the abstraction layer which makes this possible. An AbstractAdapter represents a connection to a database, and provides an abstract interface for database-specific functionality such as establishing a connection, escaping values, building the right SQL fragments for ‘:offset’ and ‘:limit’ options, etc.
All the concrete database adapters follow the interface laid down in this class. ActiveRecord::Base.connection returns an AbstractAdapter object, which you can use.
Most of the methods in the adapter are useful during migrations. Most notably, the instance methods provided by SchemaStatement are very useful.
Checks whether the connection to the database is still active. This includes checking whether the database is actually capable of responding, i.e. whether the connection isn’t stale.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 176 def active? @active != false end
Returns the human-readable name of the adapter. Use mixed case - one can always use downcase if needed.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 92 def adapter_name 'Abstract' end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 259 def case_insensitive_comparison(table, attribute, column, value) table[attribute].lower.eq(table.lower(value)) end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 255 def case_sensitive_modifier(node) node end
Clear any caching the database adapter may be doing, for example clearing the prepared statement cache. This is database specific.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 205 def clear_cache! # this should be overridden by concrete adapters end
Check the connection back in to the connection pool
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 268 def close pool.checkin self end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 246 def create_savepoint end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 263 def current_savepoint_name "active_record_#{open_transactions}" end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 238 def decrement_open_transactions @open_transactions -= 1 end
Override to turn off referential integrity while executing &block.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 167 def disable_referential_integrity yield end
Disconnects from the database if already connected. Otherwise, this method does nothing.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 188 def disconnect! @active = false end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 86 def expire @in_use = false end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 234 def increment_open_transactions @open_transactions += 1 end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 77 def lease synchronize do unless in_use @in_use = true @last_use = Time.now end end end
Should primary key values be selected from their corresponding sequence before the insert statement? If true, next_sequence_value is called before each insert to set the record’s primary key. This is false for all adapters but Firebird.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 136 def prefetch_primary_key?(table_name = nil) false end
Override to return the quoted table name. Defaults to column quoting.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 154 def quote_table_name(name) quote_column_name(name) end
Provides access to the underlying database driver for this adapter. For example, this method returns a Mysql object in case of MysqlAdapter, and a PGconn object in case of PostgreSQLAdapter.
This is useful for when you need to call a proprietary method such as PostgreSQL’s lo_* methods.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 228 def raw_connection @connection end
Disconnects from the database if already connected, and establishes a new connection with the database.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 182 def reconnect! @active = true end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 252 def release_savepoint end
Returns true if its required to reload the connection between requests for development mode. This is not the case for Ruby/MySQL and it’s not necessary for any adapters except SQLite.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 211 def requires_reloading? false end
Reset the state of this connection, directing the DBMS to clear transactions and other connection-related server-side state. Usually a database-dependent operation.
The default implementation does nothing; the implementation should be overridden by concrete adapters.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 198 def reset! # this should be overridden by concrete adapters end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 249 def rollback_to_savepoint end
Returns a bind substitution value given a column and list of current binds
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 160 def substitute_at(column, index) Arel::Nodes::BindParam.new '?' end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 122 def supports_bulk_alter? false end
Does this adapter support using DISTINCT within COUNT? This is true for all adapters except sqlite.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 111 def supports_count_distinct? true end
Does this adapter support DDL rollbacks in transactions? That is, would CREATE TABLE or ALTER TABLE get rolled back by a transaction? PostgreSQL, SQL Server, and others support this. MySQL and others do not.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 118 def supports_ddl_transactions? false end
Does this adapter support explain? As of this writing sqlite3, mysql2, and postgresql are the only ones that do.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 147 def supports_explain? false end
Does this adapter support index sort order?
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 141 def supports_index_sort_order? false end
Does this adapter support migrations? Backend specific, as the abstract adapter always returns false.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 98 def supports_migrations? false end
Can this adapter determine the primary key for tables not attached to an Active Record class, such as join tables? Backend specific, as the abstract adapter always returns false.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 105 def supports_primary_key? false end
Does this adapter support savepoints? PostgreSQL and MySQL do, SQLite < 3.6.8 does not.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 128 def supports_savepoints? false end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 242 def transaction_joinable=(joinable) @transaction_joinable = joinable end
Checks whether the connection to the database is still active (i.e. not stale). This is done under the hood by calling active?. If the connection is no longer active, then this method will reconnect to the database.
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 218 def verify!(*ignored) reconnect! unless active? end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 274 def log(sql, name = "SQL", binds = []) @instrumenter.instrument( "sql.active_record", :sql => sql, :name => name, :connection_id => object_id, :binds => binds) { yield } rescue Exception => e message = "#{e.class.name}: #{e.message}: #{sql}" @logger.debug message if @logger exception = translate_exception(e, message) exception.set_backtrace e.backtrace raise exception end
Generated with the Darkfish Rdoc Generator 2.


desoxypipradrol, marijuana, beer, & NBOMe-mescaline combo trip report
I'm a mid-20's male. I've done many tryptamines and phenethylamines. I've done 2-DPMP about 3 or 4 times before up to about 6mg. I've experimented with NBOMe-mescaline intranasally up to about 50mg, with little to no effects so far.
9:00 AM
I've been awake for 14 hours. Just snorted ~3mg desoxypipradrol because I have to stay awake and get stuff done.
9:06 AM
it's surprising to me, but I feel more awake and alert and less tired.
9:10 AM
I think I could fall asleep if I tried.
1:00 PM
Not feeling tired anymore after 4 hours from lift off. No euphoria. I smoke some weed (schwag) every few hours.
I went to sleep about 5:00-5:30 PM, then was awakened and almost immediately snorted another ~3mg of 2-DPMP. Going camping now...
7:00 PM (approx.)
Starting with a weighed out bag with 90mg of NBOMe-mescaline in it. I put about 40mg of the NBOMe under the tongue. And some weed is smoked after that. Just a bowl, but dank this time.
 I'm taking a virtually unknown substance at a dosage only reported once (first hand) before. That after I've had no sleep and I've been up way too long, and I'm mixing it with 2-DPMP.  I wish I hadn't done that. But I did, so let's hope for the best, eh?
After about 30 minutes, I'm feeling pretty good. Different, things look strange, like a new land is all around me.
7:45 PM (approx.)
I put another maybe 20mg smeared around under my tongue and left to absorb.
About 8:15 PM the final ~30mg was snorted, feeling very good. Some euphoria reminiscent of MDMA, talking is increased. It's not the beer.
~8:30 PM
I'm looking at the sun set, and storm clouds far away. Looking at intricate ripples in the lake water, colored by the sunset. The visual stuff has started. I remember saying to myself that what I see is beautiful. I'm feeling pretty good.
at 10:00 PM it's fully developed, drinking beer before this even started, but I'm not really drunk or not very drunk if I am drunk. Been smoking pot (schwag) too, all day actually.
At 11:00 PM
this is probably the peak
~2:00 AM, I go walking. It's a full moon. I'm kind of drunk now. Trying to pay attention to the effects of the NBOMe-mescaline, taking mental notes on this trip.
There's brilliant visual stuff with eyes closed, of a different composition than I'm used to with 2C- type psychedelic drugs. The visions are not very clear, pretty muddy, but there are flashes of color and awesome looking stuff, hard to describe. Like an abstract painting being created before my eyes. This is not the classic kaleidoscope patterning type stuff though.
With eyes open... looking across a lake at houses on the hill. It's beautiful. Lights are jumping around from their source to various points in my field of vision. This is some nice, nice stuff. Tracers follow most things that move, but they are not heavy tracers like with DPT. The tracers follow their source, but they seem to jump around as well, especially if I move my gaze to another location. This stuff's got potential for greatness, seriously.
4:00 AM
I'm tripping still.
Appetite was good, but I hadn't eaten much during the day.
The total trip was around 10 hours, but I was still feeling little bits of it at 12-13 hours from when I dosed the first bit of it. Then it's gone. No nausea. No body load that I noticed at all.
Must sleep... Falling asleep in car on the way home. Slept about 8 hours. Feeling fine the next day.
About 24 hours after taking the NBOMe-mescaline, there are still some nice visuals that come rather suddenly and then leave within minutes. This only happened once. I would almost call these 'flashbacks', but I don't believe in such fairy tales and have never experienced a 'flashback'.
This is an interesting compound and it deserves more research.
[Reported Dose: '~90mg NBOMe-mescaline, maybe just a little less']
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


ACME (Animated Codes Made Easy LLC) enables you to create high quality animations of your QR codes. You can create animated QR codes with ACME’s online QR code generator, or you can work directly with ACME to create animated codes tailored to your exact specifications. ACME is a catalyst for reshaping the unattractive static QR code into an enticing alternative, embedded with your company’s branding, logo, or campaign.
Animated QR codes fully utilize your electronic signage capital investment with eye catching ‘call to action’ scan targets for people.
Create a cool animated QR code in under 5 minutes!
Traditional QR codes are a portal from any real place to any digital place. The digital place can provide:
- Practical information to the participant (helpful URLS to locations, ticketing, surveys)
- Usage statistics (such as times and places scanned) to the provider
- Valuable information to the participant (digital coupons to encourage commerce)
- Actual monetary value (Bitcoin, Ethereum)
Animated QR codes can significantly enhance the value of a QR code by:
- Catching the attention of the scanning participant
- Clearly communicating the value within the code to the scanning participant
- Communicating the authenticity of the code to the scanning participant
ACME provides two products in the 'Software as a Service' (SaaS) model:
- Clients can make codes interactively using ACME's online QR code generator, or
- Clients requiring large volume and/or automated code creation can use our
documented
public
Web API
portal.
These products support creation of animated codes from anywhere in the world 24/7/365.
Follow us on the social media links below for future exciting updates!
Acme's animation engine is Software-as-a-Service (SaaS): The API is public, documented, and encrypted. Software developers can experiment with the API right now.
We pride oursleves on reliably integrating with businesses.
We continuously create new code designs to look fresh.
We call these anicodes!
Ready to start your next project with us? That's great! Give us a call or send us an email and we will get back to you as soon as possible!
001 (323) 844 ACME
001<PHONE_NUMBER>
ACME Social
twitter
facebook
instagram
Linkedin


In the following table, characteristics are given in the second column, with the negative
side in the left column and the positive side in the right column.
Characteristics with positive and negative sides
| Negative |
Characteristic |
Positive |
| Sad |
Mood |
Happy |
| Failing |
Grade |
Passing |
Characteristics with positive and negative sides.
Characteristics are given in the second column, with the negative side in the
left column and the positive side in the right column.
| Negative |
Characteristic |
Positive |
| Sad |
Mood |
Happy |
| Failing |
Grade |
Passing |
Characteristics with positive and negative sides.
Help
Characteristics are given in the second column, with the negative side in the
left column and the positive side in the right column.
Specification values: Steel, Castings, Ann. A.S.T.M. A27-16,
Class B;* P max. 0.06; S max. 0.05.
| Grade. |
Yield Point. |
Ultimate tensile strength |
Per cent elong. 50.8mm or 2 in. |
Per cent reduct. area. |
| kg/mm2 |
lb/in2 |
| Hard |
0.45 ultimate |
56.2 |
80,000 |
15 |
20 |
| Medium |
0.45 ultimate |
49.2 |
70,000 |
18 |
25 |
| Soft |
0.45 ultimate |
42.2 |
60,000 |
22 |
30 |


Lecture 9 Jitter, Rug, and Aesthetics
9.1 Data
The Panel Study of Income Dynamics (PSID) is the longest running longitudinal household survey in the world.
From the Data page, you can use the Data Center
to create customized datasets. We’ll use the Packaged Data option. Click the Main and Supplemental Studies link. Under the Supplemental Studies > Transition into Adulthood Supplement
section, select the download for 2015
.
To download the supplement you will need to sign in or register for a new account (by clicking the “New User?” link). Once you have logged in you should be able to download the zip file:
- ta2015.zip
9.1.1 Codebook
The TA2015_codebook.pdf
is the perfect place for us to identify some key variables of interest. The following is an excerpt listing the variables we will use:
TA150003 "2015 PSID FAMILY IW (ID) NUMBER"
2015 PSID Family Interview Number
TA150004 "2015 INDIVIDUAL SEQUENCE NUMBER"
2015 PSID Sequence Number
This variable provides a means of identifying an individual's status with regard to the
PSID family unit at the time of the 2015 PSID interview.
Value/Range Code Value/Range Text
1 - 20 Individuals in the family at the time of the 2015 PSID
interview
51 - 59 Individuals in institutions at the time of the 2015 PSID
interview
TA150005 "CURRENT STATE"
Current State (FIPS state codes)
TA150015 "A1_1 HOW SATISFIED W/ LIFE AS A WHOLE"
A1_1. We'd like to start by asking you about life in general. Please think about your
life-as-a-whole. How satisfied are you with it? Are you completely satisfied, very
satisfied, somewhat satisfied, not very satisfied, or not at all satisfied?
Value/Range Code Value/Range Text
1 Completely satisfied
2 Very satisfied
3 Somewhat satisfied
4 Not very satisfied
5 Not at all satisfied
8 DK
TA150092 "D28A NUMBER OF CHILDREN"
D28a. How many (biological,) adopted, or step-children do you have?
TA150128 "E1 EMPLOYMENT STATUS 1ST MENTION"
E1. Now we have some questions about employment. We would like to know about what you do -
- are you working now, looking for work, keeping house, a student, or what?--1ST MENTION
Value/Range Code Value/Range Text
1 Working now, including military
2 Only temporarily laid off; sick or maternity leave
3 Looking for work, unemployed
5 Disabled, permanently or temporarily
6 Keeping house
7 Student
TA150512 "F1 HOW MUCH EARN LAST YEAR"
F1. We try to understand how people all over the country are getting along financially, so
now I have some questions about earnings and income. How much did you earn altogether
from work in 2014, that is, before anything was deducted for taxes or other things,
including any income from bonuses, overtime, tips, commissions, military pay or any other
source?
Value/Range Code Value/Range Text
0 - 5,000,000 Actual amount
9,999,998 DK
9,999,999 NA; refused
<IP_ADDRESS> FIPS
In preparation for working with these variables, we can setup arrays to take the place of the codebook. The tigris
package will give us the FIPS codes for each state:
install.packages(tigris)
library(tidyverse)
state_fips <- tigris::fips_codes %>%
group_by(state) %>%
summarize(fips = as.numeric(first(state_code)))
fips2state <- array()
fips2state[state_fips$fips] <- state_fips$state
fips2state
## [1] "AL" "AK" NA "AZ" "AR" "CA" NA "CO" "CT" "DE" "DC" "FL" "GA" NA
## [15] "HI" "ID" "IL" "IN" "IA" "KS" "KY" "LA" "ME" "MD" "MA" "MI" "MN" "MS"
## [29] "MO" "MT" "NE" "NV" "NH" "NJ" "NM" "NY" "NC" "ND" "OH" "OK" "OR" "PA"
## [43] NA "RI" "SC" "SD" "TN" "TX" "UT" "VT" "VA" NA "WA" "WV" "WI" "WY"
## [57] NA NA NA "AS" NA NA NA NA NA "GU" NA NA "MP" NA
## [71] NA "PR" NA "UM" NA NA NA "VI"
<IP_ADDRESS> Satisfaction
satisfaction <- array()
satisfaction_levels <- c("Completely satisfied", "Very satisfied", "Somewhat satisfied", "Not very satisfied", "Not at all satisfied", "DK")
satisfaction[c(1, 2, 3, 4, 5, 8)] <- satisfaction_levels
satisfaction
## [1] "Completely satisfied" "Very satisfied" "Somewhat satisfied"
## [4] "Not very satisfied" "Not at all satisfied" NA
## [7] NA "DK"
<IP_ADDRESS> Employment Status
We can also specify the array elements one by one:
employment <- array()
employment[1] <- "Working now, including military"
employment[2] <- "Only temporarily laid off; sick or maternity leave"
employment[3] <- "Looking for work, unemployed"
employment[5] <- "Disabled, permanently or temporarily"
employment[6] <- "Keeping house"
employment[7] <- "Student"
employment
## [1] "Working now, including military"
## [2] "Only temporarily laid off; sick or maternity leave"
## [3] "Looking for work, unemployed"
## [4] NA
## [5] "Disabled, permanently or temporarily"
## [6] "Keeping house"
## [7] "Student"
9.1.2 Preprocessing the SPSS File
If you don’t have them already, open the zip file and move the TA2015.txt
and TA2015.sps
files into the data
folder. For our import to work, We need to find a line that needs to be removed from the top of the sps file. The line we want to remove should look like the following line:
FILE HANDLE PSID / NAME = '[PATH]\TA2015.TXT' LRECL = 2173 .
To find this line we can output the first 20 lines of the TA2015.sps
file:
readLines("data/TA2015.sps", n = 10)
## [1] ""
## [2] "**************************************************************************"
## [3] " Label : Transition to Adulthood Study 2015"
## [4] " Rows : 1641"
## [5] " Columns : 1304"
## [6] " ASCII File Date : July 5, 2017"
## [7] "*************************************************************************."
## [8] ""
## [9] "FILE HANDLE PSID / NAME = '[PATH]\\TA2015.TXT' LRECL = 2173 ."
## [10] "DATA LIST FILE = PSID FIXED /"
Now we know the line to remove is line number 9, we can write a new file to be used in the processing step below.
input <- file("data/TA2015.sps")
output <- file("data/TA2015_clean.sps")
open(input, type = "r")
open(output, open = "w")
writeLines(readLines(input, n = 8), output)
invisible(readLines(input, n = 1))
writeLines(readLines(input), output)
close(input)
close(output)
readLines("data/TA2015_clean.sps", n = 10)
## [1] ""
## [2] "**************************************************************************"
## [3] " Label : Transition to Adulthood Study 2015"
## [4] " Rows : 1641"
## [5] " Columns : 1304"
## [6] " ASCII File Date : July 5, 2017"
## [7] "*************************************************************************."
## [8] ""
## [9] "DATA LIST FILE = PSID FIXED /"
## [10] " TA150001 1 - 1 TA150002 2 - 6 TA150003 7 - 11 "
9.1.3 Importing with the SPSS file using memisc
The memisc
package has useful tools for importing SPSS and Stata files that augment what already exists in base
. Unfortunately, one of its dependencies, MASS
, will mask the select method from dplyr
. To avoid this, instead of loading memisc
with library(memisc)
, we can prefix all memisc
functions with memisc::
.
install.packages("memisc")
ta_importer <- memisc::spss.fixed.file("data/TA2015.txt", columns.file = "data/TA2015_clean.sps", varlab.file = "data/TA2015_clean.sps", to.lower = FALSE)
ta_full <- memisc::as.data.set(ta_importer)
ta_full
##
## Data set with 1641 observations and 1304 variables
##
## TA150001 TA150002 TA150003 TA150004 TA150005 TA150006 TA150007 ...
## 1 1 1 4893 1 37 55 9 ...
## 2 1 2 2967 1 48 57 9 ...
## 3 1 3 6095 5 37 96 9 ...
## 4 1 4 3738 3 8 98 9 ...
## 5 1 5 6741 3 16 104 9 ...
## 6 1 6 4839 1 28 68 9 ...
## 7 1 7 3828 1 48 67 9 ...
## 8 1 8 5640 51 21 88 9 ...
## 9 1 9 5210 52 6 80 9 ...
## 10 1 10 339 3 18 93 9 ...
## 11 1 11 3192 2 26 66 9 ...
## 12 1 12 561 2 26 91 9 ...
## 13 1 13 2500 51 13 100 9 ...
## 14 1 14 5283 2 39 68 9 ...
## 15 1 15 6679 1 24 62 9 ...
## 16 1 16 3286 2 8 67 9 ...
## 17 1 17 3266 2 6 155 9 ...
## 18 1 18 3720 2 48 61 9 ...
## 19 1 19 3714 2 48 82 9 ...
## 20 1 20 6244 1 48 89 9 ...
## 21 1 21 4199 1 13 80 9 ...
## 22 1 22 3962 2 51 86 9 ...
## 23 1 23 2878 1 41 85 9 ...
## 24 1 24 3835 1 37 85 9 ...
## 25 1 25 487 51 13 91 9 ...
## .. ........ ........ ........ ........ ........ ........ ........ ...
## (25 of 1641 observations shown)
9.1.4 Transform Data
Take the arrays we created above to process the file down to the variables we selected.
ta <- ta_full %>%
as.data.frame() %>%
as.tbl() %>%
filter(TA150005 > 0) %>% # get rid of the 1 non-US response
transmute(
family_id = TA150003,
in_institution = TA150004 > 50,
state = fips2state[TA150005],
life_satisfaction = factor(satisfaction[TA150015], levels = satisfaction_levels, ordered = TRUE),
children = TA150092,
employment_status = employment[TA150128],
annual_earnings = TA150512 %>% na_if(9999999) %>% na_if(9999999)
)
ta
## # A tibble: 1,640 x 7
## family_id in_institution state life_satisfaction children
## <dbl> <lgl> <chr> <ord> <dbl>
## 1 4893 FALSE NC Somewhat satisfied 0
## 2 2967 FALSE TX Somewhat satisfied 0
## 3 6095 FALSE NC Somewhat satisfied 0
## 4 3738 FALSE CO Somewhat satisfied 0
## 5 6741 FALSE ID Very satisfied 0
## 6 4839 FALSE MS Completely satisfied 1
## 7 3828 FALSE TX Somewhat satisfied 0
## 8 5640 TRUE KY Completely satisfied 0
## 9 5210 TRUE CA Very satisfied 0
## 10 339 FALSE IN Somewhat satisfied 0
## # ... with 1,630 more rows, and 2 more variables: employment_status <chr>,
## # annual_earnings <dbl>
library(ggplot2)
base_plot <- ggplot(ta, aes(life_satisfaction, annual_earnings)) + scale_y_log10()
base_plot + geom_point()
9.2 Jitter
When many points overlap, using geom_jitter
adjusts the position of each point to minimize overlap.
base_plot + geom_jitter()
See how this compares to using alpha
(i.e., opacity) to see how many points are in a given position:
base_plot + geom_point(alpha = 0.1)
9.3 Rug
Often when there are many points, we want to plot a summary that presents the general shape of the data.
base_plot + geom_violin()
The geom_rug
gives us a rug plot that we can use to highlight where actual observations occured when we create these summary plots.
base_plot + geom_violin() + geom_rug()
Both alpha
and jitter
can be applied to the rug as well.
base_plot + geom_violin() + geom_rug(alpha = 0.1, position = "jitter")
Now we can see that rug did in fact create a line on the x-axis for each observation. We can use the sides
property to only display the rug on the left and right ("lr"
)
base_plot + geom_violin() + geom_rug(alpha = 0.1, position = "jitter", sides = "lr")
9.4 Aesthetics
Aesthetics are the visual properties that define each graph. In ggplot, the aes()
function is used to create a mapping from your data to these visual properties. We most often use aes()
to map our variables to the x
and y
dimension. Above, we used the fact that the first two arguments to aes()
are x
and y
. That is,
aes(x = life_satisfaction, y = annual_earnings)
gives the same result as
aes(life_satisfaction, annual_earnings)
Anytime we want more than two dimensions of our data displayed, it’s useful to map the extra variables to other features of our graph (e.g., size, color, alpha, etc.). Let’s add number of children to our graph assigning children to color. (In ggplot both American and British spellings are supported, so you can use color
or colour
.)
ggplot(ta, aes(life_satisfaction, annual_earnings, color = children)) +
scale_y_log10() +
geom_jitter()
If the children
variable was a factor, more distinct colors would have been chosen. We can see this by coloring by employment_status
instead.
ggplot(ta, aes(life_satisfaction, annual_earnings, color = employment_status)) +
scale_y_log10() +
geom_jitter()
You can emphasize a variable by encoding in more than one visual aesthetic. Let’s map children
to color
, size
, and alpha
.
ggplot(ta, aes(life_satisfaction, annual_earnings, color = children, size = children, alpha = children)) +
scale_y_log10("Annual Earnings", labels = scales::dollar) +
geom_jitter()
9.5 Assignment
Open the codebook (data/TA2015_codebook.pdf
) and search for two new variables to visualize. Create a plot that makes use of both jitter and rug.


|
Drago - Credits and thanks |
||
|   |
Drago is a Go program written with the Delphi programming platform. Fortunately, the Go and the Delphi communities are both very kind. They must be credited and thanked here. |
  |
|
Delphi components |
Thanks to:
|
  |
|
Kombilo |
Thanks a lot to Ulrich Goertz for sharing his database library libkombilo. |
|
|
Stones |
I thank gratefully the following people for giving me permission to use their stone bitmaps or drawing algorithms:
|
|
|
Board texture |
Thanks to JK, A Sweet Dreamer for the permission to use the board texture from his Go program WildCard. The old default one in Drago was becoming outdated and I really like this one. |
|
|
Translations |
Thanks a lot to translators. Having translated two programs, I can really appreciate the work they have done...
|
  |
|
Advertising |
Thanks to Arno and Morten for Sensei's Library, for all the information and resources which can be found there, and for the community adversing service they propose. |
|
|
Banner |
Thanks a lot to Jérôme Choain for his very nice banner for SL. |
|
|
Special thanks |
Thanks to Ulrich Goertz who allowed me to include some of the problem collections available on his uliGo site. Thanks also for his encouragement and advice at the time of the first release. Thanks a lot to all people who have shown interest for Drago by giving feedbacks and suggestions. |
  |
|
Very special thanks |
... and thanks to my daughter Marion who eventually accepted the name Drago: Drago has a bad reputation for the moment (Drago is the French for Draco) but it is not so easy to find a name for Go software! |


Recipe 19.20. Running an Iterator in Another ThreadCredit: Garth Kidd ProblemYou want to run the code of a generator (or any other iterator) in its own separate thread, so that the iterator's code won't block your main thread even if it contains time-consuming operations, such as blocking calls to the operating system. SolutionThis task is best tackled by wrapping a subclass of threading.Thread around the iterator: import sys, threading class SpawnedGenerator(threading.Thread): def _ _init_ _(self, iterable, queueSize=0): threading.Thread._ _init_ _(self) self.iterable = iterable self.queueSize = queueSize def stop(self): "Ask iteration to stop as soon as feasible" self.stopRequested = True def run(self): "Thread.start runs this code in another, new thread" put = self.queue.put try: next = iter(self.iterable).next while True: # report each result, propagate StopIteration put((False, next( )) if self.stopRequested: raise StopIteration except: # report any exception back to main thread and finish put((True, sys.exc_info( ))) def execute(self): "Yield the results that the "other", new thread is obtaining" self.queue = Queue.Queue(self.queueSize) get = self.queue.get self.stopRequested = False self.start( ) # executes self.run( ) in other thread while True: iterationDone, item = get( ) if iterationDone: break yield item # propagate any exception (unless it's just a StopIteration) exc_type, exc_value, traceback = item if not isinstance(exc_type, StopIteration): raise exc_type, exc_value, traceback def _ _iter_ _(self): "Return an iterator for our executed self" return iter(self.execute( )) DiscussionGenerators (and other iterators) are a great way to package the logic that controls an iteration and obtains the next value to feed into a loop's body. The code of a generator (and, equivalently, the code of the next method of another kind of iterator) usually runs in the same thread as the code that's iterating on it. The "calling" code can therefore block, each time around the loop, while waiting for the generator's code to do its job. Sometimes, you want to use a generator (or other kind of iterator) in a "non-blocking" way, which means you need to arrange things so that the generator's body runs in a new, separate thread. This recipe shows a class which supplies exactly this kind of functionality: this recipe's SpawnedGenerator class subclasses threading.Thread and uses Thread's start/run mechanism to ensure the generator's body always executes in a separate thread from that of the calling code. All communication between the two threads occurs through a single instance of the Queue.Queue class (held through a local-variable bound method in each of the communicating methods: the generator named execute that runs in the calling thread and the method named run that runs in a separate thread). The "calling" code may also call method stop on the SpawnedGenerator instance to ask for the iteration to stop as soon as feasible. Optionally, you may also specify a queue size when you instantiate SpawnedGenerator, if you want to limit how far ahead of the calling thread the spawned thread can get. The main use case for this recipe is for wrapping iterators that make blocking calls to the operating system (e.g., walking a directory tree), when you need to use such iterators in an application where the "main" thread cannot be allowed to block for a long time. The typical examples of applications whose main thread must not block are event-driven applications, a description that applies to applications with a GUI, as well as to networking applications built on asynchronous frameworks, such as Twisted or the asyncore module of the Python Standard Library. See AlsoLibrary Reference and Python in a Nutshell docs about modules threading and asyncore; Twisted is at http://www.twistedmatrix.com/; Chapter 9 for general issues about threading; Chapter 11 for general issues about user interfaces; Chapter 13 and Chapter 14 for general issues about network and web programming, including asynchronous approaches to such programs. |