12 Factor App
Posted on Wed 25 January 2017 in Learning
What are the 12 Commandments?
In the modern era, software is commonly delivered as a service: called Web Apps, or Software-as-a-Service.
The 12 factor app is a methodology for building software-as-a-service apps that:
- Use declarative formats for setup automation, to minimize time and cost for new developers joining the project
Declarative programming is when you write your code in such a way that it describes what you want to do, and not how you want to do it. It is left up to the compiler to figure out how.
Example: SQL, Prolog.
-
Have a clean contract with the underlying operating system, offering maximum portability between execution environments
-
Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration;
-
Minimize divergence between development and production, enabling continuous deployment for maximum agility;
-
And can scale up without significant changes to tooling, architecture, or development practices.
Codebase
One codebase tracked in revision control, many deploys
A 12FA is always tracked in a version control system, such as Git, Mercurial, or Subversion.
A copy of the revision tracking database is known as a code repository, often shortened to code repo or just repo.
A codebase is any single repo (in a centralized revision control system like Subversion), or any set of repos who share a root commit (in a decentralized revision control system like Git).
There is always a one-to-one correlation between the codebase and the app:
If there are multiple codebase, it's not an app - it's a distributed system.
- Each component in a distributed system is an app, and each can individually comply with twelve-factor.
Multiple apps sharing the same code is a violation of twelve-factor.
- The solution here is to factor shared code into libraries which can be included through the dependency manager.
There is only one code base per app, but there will be many deploys of the app.
A deploy is a running instance of the app.
This is typically a production site, and one or more staging sites.
- Additionally, every developer has a copy of the app running in their local development environment, each of which also qualifies as a deploy.
The code base is the same across all deploys, although different versions may be active in each deploy.
For example, a developer has some commits not yet deployed to staging; staging has some commits not yet deployed to production. But they all share the same code base, thus making them identifiable as different deploys of the same app.
Dependencies
Explicitly declare and isolate dependencies
Most programming languages offer a packaging system for distributing support libraries, such as CPAN for Perl or Rubygems for Ruby. Libraries installed through a packaging system can be installed system-wide (known as "site packages") or scoped into the directory containing the app ( known as "vendoring" or "bundling" ).
A 12FA never relies on implicit existence of system-wide packages.
It declares all dependencies, completely and exactly, via a dependency declaration* manifest.
Furthermore, it uses a dependency isolation tool during execution to ensure that no implicit dependencies "leak in" from the surrounding system.
The full and explicit dependency specification is applied uniformly to both production and development.
For example,
* Bundler for Ruby offers the Gemfile
manifest format for dependency declaration and bundle exec
for dependency isolation.
-
In Python, there are 2 separate tools for these steps -
pip
is used for declaration andvirtualenv
for isolation. -
Even C has
Autoconf
for dependency declaration and static linking can provide isolation.
No matter what the toolchain, dependency declaration and isolation must always be used together - only one or the other is not sufficient to satisfy 12FA.
App Testing and Continuous Integration.
TRAVIS-CI
Travis CI provides a default build environment and a default set of steps for each programming language. You can customize any step in this process in .travis.yml
. Travis CI uses .travis.yml
file in the root of your repository to learn about your project and how you want your builds to be executed. .travis.yml can be very minimalistic or have a lot of customization in it. A few examples of what kind of information your .travis.yml file may have:
What programming language your project uses What commands or scripts you want to be executed before each build (for example, to install or clone your project’s dependencies) What command is used to run your test suite Emails, Campfire and IRC rooms to notify about build failures


Florida man caught on video pulling woman out of Wendy's in possible abduction: police
by Talia KaplanA Florida man was caught on surveillance video pulling a woman out of a Wendy’s restaurant as she pleaded for help, police said Thursday.
Miami-Dade police told Fox News they are investigating the incident as abduction and said it happened at the Wendy's on Southwest 88th Street in Miami on Wednesday evening.
Investigators said a woman “in distress” walked into the restaurant at around 6:15 p.m. and pleaded with restaurant employees to help her as she ran to the bathroom.
The man then walked into the Wendy’s and followed the woman into the bathroom, police said. After the couple came out of the restroom, the woman went behind the counter. Investigators said the suspect walked up to the counter and argued with the woman before going behind the counter as employees were calling the police.
The man then grabbed the woman by the arm, and forced her out of the Wendy’s, police said.
The victim was bracing herself on the door frame, unsuccessfully trying to escape, investigators added.
The man forced her into a black Chrysler 300 and drove away, police told Fox News.
CLICK HERE TO GET THE FOX NEWS APP
Police are asking for the public's help identifying and finding the man or woman and urge anyone with information to call Crime Stoppers at 305-471-TIPS (8477).


CBA postprocessing algorithm that creates smaller models for datasets containing quantitative (numerical) attributes. Article describing QCBA is published in Tomas Kliegr (2017) <arXiv:1711.10166>.
| Version: | 0.3.1 |
| Depends: | R (≥ 2.7.0), arules, rJava (≥ 0.5-0), arc (≥ 1.1.2), methods |
| Suggests: | arulesCBA (≥ 1.1.2), rCBA (≥ 0.3.0) |
| Published: | 2018-01-12 |
| Author: | Tomas Kliegr |
| Maintainer: | Tomas Kliegr <kliegr at gmail.com> |
| BugReports: | https://github.com/kliegr/QCBA/issues |
| License: | AGPL-3 |
| URL: | https://github.com/kliegr/QCBA |
| NeedsCompilation: | no |
| SystemRequirements: | Java (>= 8) |
| Materials: | NEWS |
| CRAN checks: | qCBA results |
| Reference manual: | qCBA.pdf |
| Package source: | qCBA_0.3.1.tar.gz |
| Windows binaries: | r-devel: qCBA_0.3.1.zip, r-release: qCBA_0.3.1.zip, r-oldrel: qCBA_0.3.1.zip |
| OS X binaries: | r-release: qCBA_0.3.1.tgz, r-oldrel: qCBA_0.3.1.tgz |
| Old sources: | qCBA archive |
| Reverse suggests: | arc |
Please use the canonical form https://CRAN.R-project.org/package=qCBA to link to this page.


--- layout: page category: spec title: "Indexed Database API 2.0" ---
| Current Status: | Recommendation (REC) |
|---|---|
| Canonical URI: |
http://www.w3.org/TR/IndexedDB-2
|
| Abstract: | This document defines APIs for a database of records holding simple values and hierarchical objects. Each record consists of a key and some value. Moreover, the database maintains indexes over records it stores. An application developer directly uses an API to locate records either by their key or by using an index. A query language can be layered on this API. An indexed database can be implemented using a persistent B-tree data structure. |
Indexed Database API 2.0Updates:


B-Trees
How your database indexes stuff S01E03
Mateusz Kołaczek
Previously on
How you database indexes stuff:
SSTables (LSM trees)
- database = log of insert/update operations, split into sorted segments
- each segment is supported by an in-memory sparse index (key -> offset in segment file)
- one active segment (in memory BST) - writes go here, older segments used just for reads
- segments are compacted and merged in background
B-Tree
Insert
- Find leaf to add new (key, value) pair
- If not full, insert the key to the leaf. Done
- If full, split block into two, insert middle element into parent (potentially recursing if parent is also full)
Deletion is unfortunately more complicated...
B-Tree
- database split to 4kb blocks, corresponding to filesystem blocks
- internal node = block with sorted list of keys splitting the key range into subranges and pointers to subtrees representing them
- leaf = block with key -> value mapping
- branching factor = max number of children in a node, typically several hundred
Tree height
- Most databases fit into 3 or 4 level deep tree (just 4 disk reads per lookup!)
- With 4kb blocks, branching factor of 500 and 4 levels, up to 256TBs can be stored
Reliability
- In contrast to LSM trees, pages are overwritten
- Multiple writes per operation may be needed (i.e. when splitting nodes)
- Database can die in the middle of such operation
Solution: write-ahead-log (WAL, redo-log).
Concurrency
- Multiple threads reading and writing to the tree
- Latches (lightweight locks) needed to ensure consistency
LSM trees are simpler - one writer thread, immutable segments
Optimizations and variations
- copy-on-write, persistent data structure - useful for snapshot isolation
- keys in internal nodes can be abbreviated, allowing higher branching factor
- try to keep leaf pages sequentially on disk for faster scans
- add pointers between leafs for faster scans
LSM > B-Tree
- writes are sequential = fast IO, especially on magnetic drives
- better compression and no fragmentation - less disk space and bandwidth needed
LSM < B-Tree
- no compaction interfering with ongoing reads and writes
- at high write throughput compaction might not keep up with writes
- number of unmerged segments go up, eating disk space and slowing down reads
- B-Trees allow locking ranges of keys, enabling strong transactional semantics
Performance
Benchmarks inconclusive and sensitive to details of workload, but...
- B-Trees faster for reads (no need to scan all segments)
- LSM Trees faster for writes (sequential IO)
In the real world
Ubiquitous. Almost every SQL database uses them.


m( _ _ )m
We are sorry to say that our server maybe down at this time.
Would you please refresh or try to get the other pages. If it's still show up this message, just contact us.


{{trip.description}}
From
{{trip.startingPrice | currency }} for two
Save 33%
{{trip.startDate | date }} to {{trip.endDate | date }}


the and viral for are that with virus which The RNA DNA genome been has antiviral have viruses into was HIV- this {background different also replication all ligands their both margin most such G-Quadruplex Virus mRNA new {border-style HCV cell from can human px;} viruses, #ffffff;} Gs, Human found regulation role these host cellular highly two (step EBNA its protein sequences through LTR Viral activity characterized could demonstrated latent life more one structures EBV PQSs data almost identified infected replication, synthesis G-Quadruplexes ability genome, involved observed promoter reduction regulatory reported sequence several specific treatment Acids Genome between cells conserved drugs form known located might related research showed still than they transcription were BRACO- Chem. Gs. HBV KSHV These available development during effect fold further high infection interaction not proteins px; region tested therefore three unique vitro while {font-family Antiviral G-mediated HHVs Hepatitis Indeed, Interestingly, Promoter TMPyP Viruses able analysis associated binding cause crucial effective especially family font-size formation including infect lead mechanisms other polymerase possibility presence stabilized studies transcribed very (Fig. Am. G-forming HHV- HSV- Herpes Infect. LTR-III Long Moreover, Most Repeat Terminal after cells, column, complex consequent cycle cycle. diseases, double; dsDNA elements few gene immune induced involvement key leading led ligand mainly majority mechanism nuclear nucleic onset order overall pharmacological possible promising proteins, regions response responsible significant stabilization strongly target targets them thus type virus, would COVID- Considering Elsevier Epstein-Barr Fig. However, Med. PhenDC Structure This With acts affect against agents alternative among and, border-color border-width cells. central chromatin classified compound compounds comprises core coronavirus directly each efficient expression far first folding infections innovative integrated investigation latency. long lytic machinery many may modulation newly only people promote replication. represent representation revealed reverse shown solid; stable strong structural targeting template terms therapy transcription. used virions viruses. will {font-style {font-weight ... After Binding Conserved Core Dis../acsinfecdis.b For HIV HPV Host Kaposi's LANA LTR-IV Molecular Nevertheless, New Protein RNA-dependent Region Retroviruses Simplex Since Structural Such They according activity. addition, additional along antigen antiretroviral approach assembled availability belonging biological bold centre consists copies courier; cytoplasm date, derivative disease diseases. early either em; employment encoding enhanced enriched expressed forms functional genes genomes. genomic global hepatitis herpesvirus humans i.e., identification immunocompromised impair include includes induce information inhibition interesting large levels. ligands, liver low luciferase management multiple necessary needs negative number over past pathogens present primary provide pt;} recent recombination reduced released replicate resource respect resulted selective selectivity serious seven severe share some ssRNA state structure structure, structures, surface synthesized therapies there treatments where which, within


"Jack of all trades" with great passion for Bitcoin, IT Architecture and IT Operations. I have long and wide experience with Linux Servers, Networking, Filesharing and Backup, Distributed systems, Containers, Orchestration and a wide variety of things that are related to IT. I've worked my way up from Support to IT Operations, and are now leading my own software business, which will deliver a platform for sensordata, BigData and AI.
Download my CV - Norwegian versionConsultant for IT Operations on Linux.
We develop automation powered by AI and an open API for RAS (Resirculating Aquaculture System), like Hydroponics or Aquaponics. On top of genereal administration and getting the startup on it's legs, I am the main architect and system operations officer.
I offer services for everyone that want to learn about Bitcoin and the Bitcoin technology. I have held courses, workgroups and given support for groups and single persons. I have been a Bitcoin enthusiast since 2012, and know a lot about the technology and what it can be beneficial for.
Set up routers and documented their network. Consulted on improvements on their infrastructure.
Worked mainly on Linux servers with focus on setup, security, uptime and maintenance. We ran web-services based on Java with MySql databases and vpn-based infrastructure. I also worked on IBM Tivoli for our backup infrastructure, and some internal support.
Managed a small team of IT Supporters for the school, helping the staff and students with any IT problems they had. I also worked on improving their network infrastructure, improving their hardware and buying and setting up new computers every year for the new students.
- Wrote a couple of lines to add direction rolls to a python dice roller. Available through PyPi.
 In the winter, I am an avid kiter and snowboarder. During the warmer months here in Oslo, I enjoy motorcycling and camping.
 I also play role playing games, like D&D, VtM or Starfinder, with my friends every week.


| Class | OpenID::Consumer::CheckIDRequest |
| In: |
lib/openid/consumer/checkid_request.rb
|
| Parent: | Object |
An object that holds the state necessary for generating an OpenID authentication request. This object holds the association with the server and the discovered information with which the request will be made.
It is separate from the consumer because you may wish to add things to the request before sending it on its way to the server. It also has serialization options that let you encode the authentication request as a URL or as a form POST.
| anonymous | [R] | |
| endpoint | [R] | |
| message | [RW] | |
| return_to_args | [RW] |
Users of this library should not create instances of this class. Instances of this class are created by the library when needed.
Add an object that implements the extension interface for adding arguments to an OpenID message to this checkid request.
extension_request: an OpenID::Extension object.
Add an extension argument to this OpenID authentication request. You probably want to use add_extension and the OpenID::Extension interface.
Use caution when adding arguments, because they will be URL-escaped and appended to the redirect URL, which can easily get quite long.
Set whether this request should be made anonymously. If a request is anonymous, the identifier will not be sent in the request. This is only useful if you are making another kind of request with an extension in this request.
Anonymous requests are not allowed when the request is made with OpenID 1.
Get html for a form to submit this request to the IDP.
form_tag_attrs is a hash of attributes to be added to the form tag. ‘accept-charset’ and ‘enctype’ have defaults that can be overridden. If a value is supplied for ‘action’ or ‘method’, it will be replaced.
Produce a OpenID::Message representing this request.
Not specifying a return_to URL means that the user will not be returned to the site issuing the request upon its completion.
If immediate mode is requested, the OpenID provider is to send back a response immediately, useful for behind-the-scenes authentication attempts. Otherwise the OpenID provider may engage the user before providing a response. This is the default case, as the user may need to provide credentials or approve the request before a positive response can be sent.
Get a complete HTML document that autosubmits the request to the IDP with javascript. This method wraps form_markup - see that method‘s documentation for help with the parameters.
Returns a URL with an encoded OpenID request.
The resulting URL is the OpenID provider‘s endpoint URL with parameters appended as query arguments. You should redirect the user agent to this URL.
OpenID 2.0 endpoints also accept POST requests, see ‘send_redirect?’ and ‘form_markup’.
Should this OpenID authentication request be sent as a HTTP redirect or as a POST (form submission)?
This takes the same parameters as redirect_url or form_markup


You opt for a baggier shirt today.
Despite your feminine look, you feel as though the baggy shirt balances out your look so that you don't seem overly femme.
Overall, you feel good about your decisions and you're ready to start the day.


These are the building blocks for every website, thus it is important to write HTML & CSS which is easy to understand and maintain. Using CSS flexbox, grid and front-end libraries like Bootstrap and Materialize correctly will help your website look good and make the code easier to read.
If you need a unique design for your website though, you'll need custom code and fortunately writing clean HTML & CSS is one of my strong skills.
Javascript defines the way a website behaves so it represents an important building block for your website. I usually use the latest Javascript features - ES6 and up - but if needed I can produce Javascript which will run even on Internet Explorer.
I can either use vanilla JS to manipulate the DOM, jQuery or more advanced libraries like React depending on your needs.
React is one of the most popular front-end library for building interactive UIs, thus making it a popular choice when it comes to webapp building. I mainly used React to build my TSXYZ project.
React Router is a free library which helps you to handle client-side routing. The routing on the TSXYZ webapp was done using React Router.
NodeJS is Javascript ran on the server side. It takes care of all back-end logic like loging, apis, routing, etc. Usually NodeJS is used in combination with ExpressJS.
If your website needs to store any kind information then you'll need a database and MongoDB is a noSQL database which is popular to use with NodeJS. I usually pair MongoDB with Mongoose.
Python is a general-purpose language. You can do almost everything with it, from neural networks to websites. If you need a simple script for whatever reason then Python is the best choice. I mainly use it for my non-web projects or web scrapping.
Some of the libraries which I used are P5PY and Pyglet for my Nature of Code project. I aslo have an Youtube series where I mainly use Python.
I can adapt to use new technologies pretty quickly. New framework or library which you want me to use? No problem I can figure out on my own the basics.
One of the best examples is how I learned Python. In around one week I was able to write basic Python code and use it for my projects. While I was by no means an expert at writing good Python code, I knew enough to get things done.
A webapp which aims to help you play a web based game called TrainStation. The webapp was built with the MERN Stack - React on the front-end and NodeJS and MongoDB on the back-end. See it live here or view the source code.
A simple Minecraft mod written in Java - source code. It's main purpose was to add new crops to the game which helped you to grow resources. This was my first big project and it managed to get over 130 000 downloads, see the official page.
The idea behind Random Python Youtube series is to make timelapses of me programming different things in Python like a simple game or cellular automata simulations. You can find the channel here.
I like to learn new things so I have plenty of smaller projects going on like Nature of Code but in Python, Coding Challenges, Little Projects using P5JS or even some C++ and OpenGL.


GO BACK
: nonhomogeneous, zero-based, push, pop, shift, unshift, slice, splice,
copyWithin, fill, reverse, indexOf, lastIndexOf, find, findIndex, findLastIndex, map, filter,
reduce, join, concat, sort
Definitions
- are an ordered, zero-based, collection of
elements
- Every array has a property, which tells you how many elements in the
array
Array Manipulation
- and add and remove elements to the end of an array
(treating the array as a )
- and add and remove elements to the beginning of
an array (treating the array as a )
- adds multiple elements to an array and returns a copy
- gets a subarray from a start index to an optional end index
- (ES6) takes a sequence of elements from an array and copies them,
in place, to a different part of the array
- (ES6) allows you to fill any number of elements with a fixed value
- and reverses and sorts the order of an array
Array Searching
- finds the index of the first element that strictly equals what you
are looking for, finds the last index. If nothing is found, both
functions return
- allows you to pass a function that defines a match
- finds a element and returns the element, instead of the index
- is or if there exists an
element with the search criteria
- is or if all elements
satisfies a certian criteria
Array Operations: map and filter
- transforms the elements in the array (as a copy)
- returns a copy of an array with unwanted elements removed
- transforms an entire array into a single value, takes an
and argument
- and do not invoke the function for
elements that have never been assigned or have been deleted
Code


Pranay V Kalro
Check Schedule
Subject
10cs71
10csl75
Search
{{student.name}}
{{student.usn}}
Contact details
  {{student.phone_no}}

{{student.email}}
Attendance
IA Marks
Internal Assessment 1
{{student.ia1}}/25
Internal Assessment 2
{{student.ia2}}/25
Internal Assessment 3
{{student.ia3}}/25
Internal Assessment 4
{{student.ia4}}/25
Average =
{{student.average}}
/25
Assignments
{{a.assignmentname}}
Submitted on:13/05/2015


Following the footsteps of his father Chef Neil Osama has fallen in love with the art of culinary at the age of five years old. Osama, worked under his father learning each technique and skill needed in a Master Chef. Osama, earned his degree in Hotel Management in 1992. To step away from his father's shadow he has established his own resturaunt The Chef's Table in 1998.
We firmly believe that our kitchen is our home. Like any home each guest should be provided with nothing but the best hospitatlity and service. As our guest we expect you to feel at home in our kitchen. Our families goal is to assure you walk out of our kitchen in bliss and tranquility. Our Chef's will be preparing each dish before you allowing you to experience every attention to detail and design. Due to our unique style in dining, we are only able to cater up to 15 guest at each time. Please reserve 2-3 hours of your time to assure you are able to fulfill the full experience. Our family looks forward in dining with you.
Our Chef's believe each visit should be unique. Therefore, our menu changes on a daily basis. A five course meal will be served along with an optional wine pairing specifically selected by our partnered wine connoisseur to harmoniously match with each spice and flavor. Please inform our reservation host of any food allergies.


The gap property in CSS is a shorthand for row-gap and column-gap, specifying the size of gutters, which is the space between rows and columns within grid, flex, and multi-column layouts.

$gap: (); $gap: map-merge( ( "20px": 20px, "1rem": 1rem, ), $gap );


Home
Theme
About
Based on the TV series Gossip Girl, this app gives users a space to post anonymous journal entries of up to 300 characters and a gif. Users can engage with the content using reactions and comments. This app was created by:
🤠 Chris Westerduin
cwesterduin
😜 Natalie Pang
natbibi
😎 Semhar Tesfu
sem-the-dev


Deleting a User from a Security Role
How to delete a user from a security role using the User Accounts module.
- Navigate to Admin > User Accounts - OR - Go to a User Accounts module.
- Locate the required user using a filter or by performing a search.
- Click the Manage Roles button beside the required user account.
- At Send Notification?, select from the following options:
- Mark the check box to send a notification email to the user informing them that they have been removed from the role. This is the default setting.
- Unmark the check box to delete role access without sending a notification email.
- Click the Delete button beside the role the user is to be deleted from. This displays the message "Are You Sure You Wish To Delete This Item?"
-
- Repeat Steps 5-6 to delete this user from additional roles.


Administration¶
Users, user groups, connections, and active sessions can be administered from within the web interface if the underlying authentication module supports this. The only officially-supported authentication modules supporting this are the database extensions, which are documented in Database authentication.
If you are using the default authentication mechanism, or another authentication extension, this chapter probably does not apply to you, and the management options will not be visible in the Guacamole interface. If, on the other hand, you are using one of the database authentication providers, and you are logged in as a user with sufficient privileges, you will see management sections listed within the settings screen:
Clicking any of these options will take you to a corresponding management section where you can perform administrative tasks.
Managing sessions¶
Clicking “Active Sessions” navigates to the session management screen. The session management screen displays all active sessions and allows system administrators to kill them as needed.
When any user accesses a particular remote desktop connection, a unique session is created and will appear in the list of active sessions in the session management screen. Each active session is displayed in a sortable table, showing the corresponding user’s username, how long the session has been active, the IP address of the machine from which the user is connecting, and the name of the connection being used.
To kill one or more sessions, select the sessions by clicking their checkboxes. Once all desired sessions have been selected, clicking “Kill Sessions” will immediately disconnect those users from the associated connection.
Filtering and sorting¶
The table can be resorted by clicking on the column headers. Clicking any column will resort the table by the values within that column, while clicking a column which is already sorted will toggle between ascending and descending order.
The content of the table can be limited through search terms specified in the “Filter” field. Entering search terms will limit the table to only sessions containing those terms. For example, to list only connections by the user “guacadmin” which have been active since March, 2015, you would enter: “guacadmin 2015-03”. Beware that if a search term needs to contain spaces, it must be enclosed in double quotes to avoid being interpreted as multiple terms.
If you wish to narrow the content of the table to only those connections which originate from a particular block of IP addresses, you can do this by specifying the block in standard CIDR notation, such “<IP_ADDRESS>/8” or “2001:db8:1234::/48”. This will work with both IPv4 and IPv6 addresses.
Connection history¶
Clicking “History” navigates to the connection history screen. The connection history screen displays a table of the most recent connections, including the user that used that connection, the time the connection began, and how long the connection was used.
Filtering and sorting¶
Initially, the connection history table will display only the most recent history records. You can page through these records to see how and when Guacamole has been used.
Just as with the table of active sessions described earlier, the table of history records can be resorted by clicking on the column headers or filtered by entering search terms within the “Filter” field.
The same filtering format applies - a search term containing spaces must be enclosed in double quotes to avoid being interpreted as multiple terms, and only history records which contain each term will be included in the history table. Unlike the table of active sessions, however, the filter will only take effect once you click the “Search” button. This is due to the nature of the connection history, as the number of records may be quite extensive.
User management¶
Clicking “Users” within the list of settings sections will take you to the user management screen. Here you can add new users, edit the properties and privileges of existing users, and view the times that each user last logged in. If you have a large number of users, you can also enter search terms within the “Filter” field to filter the list of users by username.
To add a new user, click the “New User” button. This will take you to a screen where you will be allowed to enter the details of the new user, such as the password and username. Note that, unless you specify otherwise, the new user will have no access to any existing connections, nor any administrative privileges, and you will need to manually set the user’s password before they will be able to log in.
To edit a user, just click on the user you wish to edit. You will be taken to a screen which allows you to change the user’s password, expire their password (such that it must be changed at next login), add or remove administrative permissions, and add or remove read access to specific connections, sharing profiles, or groups. If you are managing a large number of connections or groups and wish to reduce the size of the list displayed, you can do so by specifying search terms within the “Filter” field. Groups will be filtered by name and connections will be filtered by name or protocol.
If you have delete permission on the user, you will also see a “Delete” button. Clicking this button will permanently delete the user. Alternatively, if you only wish to temporarily disable the account, checking “Login disabled” will achieve the same effect while not removing the user entirely. If they attempt to log in, the attempt will be rejected as if their account did not exist at all.
Editing group membership¶
When editing a user, the groups that user is a member of may be modified within the “Groups” section. By default, only groups that the user is already a member of will be displayed. If you have permission to modify the user’s membership within a group, an “X” icon will be available next to that group’s name. Clicking the “X” will remove the user from that group, taking effect after the user is saved.
To add users to a group, the arrow next to the list of groups must be clicked to expand the section and reveal all available groups. Available groups may then be checked/unchecked to modify the user’s membership within those groups:
If you have a large number of available groups, you can also enter search terms within the “Filter” field to filter the list of groups by name.
User group management¶
Clicking “Groups” within the list of settings sections will take you to the user group management screen. Here you can add new groups and edit the properties and privileges of existing groups. If you have a large number of user groups, you can also enter search terms within the “Filter” field to filter the list of groups by name:
To add a new group, click the “New Group” button. This will take you to a screen where you will be allowed to enter the details of the new group, including membership and any permissions that members of the group should have.
To edit a group, just click on the group you wish to edit. You will be taken to a screen which allows you to modify membership, add or remove administrative permissions, and add or remove read access to specific connections, sharing profiles, or connection groups. If you are managing a large number of connections or groups and wish to reduce the size of the list displayed, you can do so by specifying search terms within the “Filter” field. Connection groups will be filtered by name and connections will be filtered by name or protocol.
If you have delete permission on the group, you will also see a “Delete” button. Clicking this button will permanently delete the group. Alternatively, if you only wish to temporarily disable the effects of membership in the group, checking “Disabled” will achieve the same effect while not removing the group entirely.
Group membership of groups¶
Managing the group membership of groups is more complex than that of users, as groups may contain both users and groups, with permissions from parent groups possibly being inherited. Parent groups, member groups, and member users, can all be managed identically to the group memberships of users, with a corresponding section dedicated to each within the user group editor:
Note that it is ultimately up to the extension providing the group to determine how permissions granted to that group are inherited, if at all. The database authentication extension implements full recursive inheritance of group permissions, with permissions granted to a group being granted to all members/descendants of that group, regardless of how deeply those members are nested.
Connections and connection groups¶
Clicking “Connections” within the list of settings sections will take you to the connection management screen. The connection management screen allows administrators to create and edit connections, sharing profiles, and connection groups. If you have a large number of connections, you can also enter search terms within the “Filter” field to filter the list of connections by name or protocol.
To add a new connection or connection group, click the “New Connection” or “New Group” button, or the “New Connection” or “New Group” placeholders which appear when you expand an existing connection group. These options will take you to a screen where you will be allowed to enter the details of the new object, such as its location, parameters, and name. This name should be descriptive, but must also be unique with respect to other objects in the same location.
Once you click “Save”, the new object will be added, but will initially only be usable by administrators and your current user. To grant another user access to the new connection or connection group, you must edit that user or a user group that the user is a member of, checking the box corresponding to the connection or connection group you created.
Editing connections, sharing profiles, and connection groups works identically to editing a user. Click on the object you wish to edit, and you will be taken to screen which allows you to edit it. The screen will display all properties of the object, including its usage history, if applicable.
If you have delete permission on the object, you will also see a “Delete” button. Clicking this button will permanently delete the object being edited.
Connection organization and balancing¶
Connection groups can be either “organizational” or “balancing”. Each group can contain any number of other connections or groups, but the semantics of the group change depending on the type.
An organizational group behaves exactly as a folder or directory in a file system. It simply contains connections and other groups, but provides no other behavior. Clicking on an organizational group within a connection list will expand the group, revealing its contents.
A balancing group behaves as a connection. It dynamically balances load across the connections it contains, choosing the connection with the fewest number of active users. Unlike organizational groups, clicking on a balancing group causes a new connection to be opened. The actual underlying connection used depends on which connection has the least load at the time the group was clicked, and whether session affinity is enabled on that group.
Enabling session affinity for a balancing group ensures that users are consistently routed to the same underlying connections until they log out of Guacamole. The load balancing behavior of the balancing group will apply only for the first time a particular user connects to the group. If your users may lose their desktop state if they are routed to a different underlying connection, this option should be enabled.
Connection sharing¶
The ability to share a connection is governed through the use of “sharing profiles”. If a sharing profile is created for a connection, users with access to both that connection and that sharing profile will be able to share the connection with other users by generating connection sharing links, even if those users do not otherwise have user accounts within Guacamole.
The name of the sharing profile will be presented as an option within the share menu for any users with access, while the level of access granted to users of generated share links will be dictated by the parameters specified for the sharing profile.
Important
The only extension which ships with Guacamole and implements enough of the Guacamole extension API to share its connections is the database authentication extension. If you wish to share connections (or allow your users to share connections), you will need to use the database authentication extension to store those connections.
If you need to use other authentication schemes, keep in mind that the database authentication extension can be used alongside other extensions, with the database handling connection storage and permissions only. Writing your own extension which supports sharing is another alternative, though that may be overly complicated if everything you need is already provided.
Unlike connections and groups, there is no “New Sharing Profile” button. Sharing profiles are created through clicking the “New Sharing Profile” placeholders which appear when connections are expanded. Just as expanding a connection group reveals the connections or groups therein, expanding a connection reveals the sharing profiles associated with that connection. This holds true with both the list of connections in the connection management screen and the list of connections in the user editor.
Creating or editing a sharing profile is virtually identical to creating or editing a connection, with the exception that not all connection parameters are available:


Reports super.tearDown() calls which are not performed inside a finally block.
If there are other method calls in the tearDown() method, which may throw
an exception before the super.tearDown() call, this may lead to inconsistencies and leaks.
New in 15


Shopping Costs
The shopping list was based on the costing of the Otago University Dept. Of Human Nutrition annual survey. When purchasing food packs i.e., chops or fruit check the price per Kg and on bread etc. check weight. Always check weight and price.
Click here to find out more
Lending
There are other lenders available apart from finance companies. You should always try to budget and make ends meet first, but if you must you can try the Salvation Army for:
Benefits
What benefits you maybe entitled to at
Work and Income (Te Hiranga Tangata).
Or use their
calculator
Documents
Other Information
Tools
Please note, these tools are based on other peoples data and may be out of date.
Attributions
Legal Stuff.


Everything we know about Demi-Leigh Nel-Peters' wedding so far
Nikita Coetzee
Johannesburg – While we're not sure exactly when it will happen, we're pretty sure Demi-Leigh Nel-Peters and Tim Tebow will be tying the knot any day now.
The couple got engaged in January and have been pretty tight-lipped about when their big day will be. But we're not entirely out of the loop, both Demi and Tim have spoken about their wedding in interviews and even on their social media pages.
Here's what we know about their wedding so far:
Demi's in charge
In an interview with USA Today, Tim Tebow mentioned that he is leaving all of the planning in the capable hands of his beautiful fiancée.
"I just think it's getting all the people I love and care about together. That will be good enough for me. And then whatever Demi wants. It's perfect. She has ideas and ways to make it really pretty, and she's so excited about it," he said.
Their pics will definitely be on social media
The couple took to Instagram recently to ask fans for help in choosing a hashtag for their big day, which means that we can look forward to seeing those pics all over our Instagram feeds, and we can't wait.
They're taking dance lessons
Demi shared a pic of herself and Tim getting ready for their first dance as Mr and Mrs. "Our first 'first dance' lesson. Getting better…step by step," she captioned the photo.
They've hired SA event planner Zavion Kotze
Event planner and Wedding Bashers star Zavion Kotze will be helping Demi get the wedding of her dreams. Both Zavion and Demi shared the news on their Instagram accounts.
"It's official, I have the honour of designing @demileighnp and @timtebow's wedding – cannot wait. Proudly South African," Zavion wrote.
There will be a few beauty queens on the guestlist
Demi recently attended former Miss USA Sarah Rose Summers' wedding in the US, so it only makes sense that some of her pageant sisters will be joining her on her wedding day as well.
While she did not mention exactly who, Demi told Channel24 during our chat in August that she has extended an invite to a few of her fellow beauty queens.


MENU
Introduction
Getting Started
Menu Options Overview
Common Procedures
Adding PopUps
Removing PopUps
Synchronizing
What's New
Disclaimer/Copyright
Contact & Support
And the Thank you's go to...


{{ block title }}Results{{ endblock }} {{ block content }}
You started with an endowment of {{ C.ENDOWMENT }}, of which you contributed {{ player.contribution }}. Your group contributed {{ group.total_contribution }}, resulting in an individual share of {{ group.individual_share }}. Your profit is therefore {{ player.payoff }}.
{{ next_button }} {{ endblock }}


This document defines the style that ideally should be used for all lobster programs.
There is no such thing as the provably best style for writing code: it all comes down to human preference. But one thing is extremely detrimental to reading code: inconsistent source code formatting. Hence why it is good to have a fixed style.
You are free to pick any style the compiler will accept for your own projects, of course. But if you wish to cooperate with other Lobster programmers, using the style set forth in this document will be helpful. Most code you will find will use this style, so trying to enforce another style may be tricky.
Python, being the language closest in syntax to Lobster, has a well defined style guide, and so do other languages, like Java. C/C++ in particular has failed to establish a clear style, which is a constant source of confusion and disagreement.
Unless noted explicitly in this document, the style to follow is that of the samples in the Lobster documentation and distribution. Let’s look at a typical example:
def qsort(xs, lt):
if xs.length <= 1:
xs
else:
let pivot = xs[0]
let tail = xs.slice(1, -1)
append(append(qsort(tail.filter(): lt(_, pivot), lt), [ pivot ]),
qsort(tail.filter(): not lt(_, pivot), lt))
By default, you should use 4 spaces to indent (same as Python). The compiler will allow you to use tabs (discouraged), and in some cases even a mix (highly discouraged).
The compiler will error on mixed use of tabs and spaces, as that could change what code appears to mean.
In theory, tabs are superior for editing, but in practice, different editors and different methods of displaying code can make tab based code work inconsistently, which is more of a problem for a language with significant indentation like Lobster and Python.
Typical use of whitespace is around any binary operator (in the
example <=
=
), after a ,
and
inside []
when used as vector constructor or definition
(but not when used for indexing, and not inside ()
).
As seen in the append
call, you are encouraged to make
similar code line up using extra spaces. Because the first part of the
append
call ended in a ,
the second line is
not counted as an indentation in the same way as the indentation blocks
above it.
Lobster uses lowercase for almost all indentifiers. If an identifier
consists of multiple words, they are preferably just written
consecutively, though for cases where that becomes unreadable using an
_
to separate them is ok. Do not uses _
to
start or end regular identifiers (see the reference manual about
anonymously declared variables).
Prefer indentation over one liners unless the block is very short,
e.g. if a < 0: 10 else: a - 5
is better in-line than
indented. Avoid the use of ;
generally, if you need
multiple expressions in a block, indentation is superior.
Whenever short forms are available for a particular syntax, prefer to use that, unless readability would suffer.


OCAEditableCollectionViewFlowLayout Class Reference
| Inherits from | UICollectionViewFlowLayout |
| Conforms to | OCAEditableCollectionViewFlowLayoutCellDelegate UIGestureRecognizerDelegate |
| Declared in | OCAEditableCollectionViewFlowLayout.h |
Overview
This class adds the ability to delete and/or re-order the UICollectionViewCells in the layout.
Portions created by: Created by Stan Chang Khin Boon on 1/10/12. https://github.com/lxcid/LXReorderableCollectionViewFlowLayout Copyright © 2012 d–buzz. All rights reserved.
And: MobileTuts+, Akiel Khan http://mobile.tutsplus.com/tutorials/iphone/uicollectionview-layouts/
In your UICollectionViewController subClass:
- (void)awakeFromNib
{
// Allocate our custom collectionView layout
OCAEditableCollectionViewFlowLayout *layout = [[OCAEditableCollectionViewFlowLayout alloc] init];
// ...set some parameters to control its behavior (adjust to fit the needs of your app)
layout.minimumInteritemSpacing = 6;
layout.minimumLineSpacing = 6;
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
layout.sectionInset = UIEdgeInsetsMake(5, 5, 5, 5);
[layout setItemSize: CGSizeMake(50, 50)];
// Set our layout on the collectionView
self.collectionView.collectionViewLayout = layout;
[super awakeFromNib];
}
Tasks
-
scrollingSpeed
property -
scrollingTriggerEdgeInsets
property -
longPressGestureRecognizer
property -
panGestureRecognizer
property -
tapGestureRecognizer
property
Properties
longPressGestureRecognizer
Handles long press recognition.
@property (strong, nonatomic, readonly) UILongPressGestureRecognizer *longPressGestureRecognizer
Discussion
Exposed to allow interaction with other gesture recognizers - for example:
[gestureRecognizer requireGestureRecognizerToFail: layout.longPressGestureRecognizer];
Declared In
OCAEditableCollectionViewFlowLayout.h
panGestureRecognizer
Handles pan recognition.
@property (strong, nonatomic, readonly) UIPanGestureRecognizer *panGestureRecognizer
Discussion
Exposed to allow interaction with other gesture recognizers - for example:
[gestureRecognizer requireGestureRecognizerToFail: layout.panGestureRecognizer];
Declared In
OCAEditableCollectionViewFlowLayout.h
scrollingSpeed
Controls the collection view’s scrolling speed
@property (assign, nonatomic) CGFloat scrollingSpeed
Discussion
Default is 300.0f
Declared In
OCAEditableCollectionViewFlowLayout.h
scrollingTriggerEdgeInsets
The inset to trigger scrolling before the user’s drag actually gets to the extreme edges of the screen
@property (assign, nonatomic) UIEdgeInsets scrollingTriggerEdgeInsets
Discussion
Default is 50.0f, 50.0f, 50.0f, 50.0f,
Declared In
OCAEditableCollectionViewFlowLayout.h
tapGestureRecognizer
Handles tap recognition.
@property (strong, nonatomic, readonly) UITapGestureRecognizer *tapGestureRecognizer
Discussion
Exposed to allow interaction with other gesture recognizers - for example:
[gestureRecognizer requireGestureRecognizerToFail: layout.tapGestureRecognizer];
Declared In
OCAEditableCollectionViewFlowLayout.h


Architectural design
The architectural brick, made of sand, clay and lime, holds an iconic image in our minds as the building block of walls and structures.
However, while we may think they know exactly what a brick is supposed to look like, there is still so much room to explore. There is an endless potential for this one single piece in the kit of parts that form architecture as a creative field. We think of brick as solid, but what if it filtered light? We think brick needs mortar, but what if it worked like Legos and attached to itself independently? We think we know what brick was always meant to be, but what if we didn't? The Branching Truss System will attempt fulfill these aspirations through the exploration and real-life to-scale building of a new type of brick that begins to put our preconceptions to the test and, hopefully, brings up even more questions than the ones we started with.
The form of this new building block was inspired by children's jacks play pieces. Arrayed symmetrical limbs were mirrored to build pairs and trios that can latch together for structurally sound connections. The limbs were hollowed out to allow for strategically placed plantings and different configurations were determined to allow for different degrees of light to pass through based on structural configuration layout and planting location.
Once the concept was determined, the process of investigation went from identifying issues in the design, to solving them in a computational model, to printing the 3D model, to testing the iterations at a smaller thumb-sized scale.
To begin, The virtues of the site were analytically identified and procedurally overlaid on top of each other. These layers were then used to create a series of metrics to guide the design. Every alternative for the metrics was pursued until an ideal was identified. The goal for the site became to create a more public, open and peaceful environment; a necessary haven from a city with unending density and overwhelming history.
Pour plaster block
Leave to dry
3D mill negative shape
Leave to dry
Plug holes at bottom
Fasten molds together tightly
Pour clay into mold
Wrap and leave to dry
Pour out extra clay
Pull out and clean edges
Apply glaze
Kiln dry
Complete!
© 2019 Jeisson Apolo, All Rights Reserved. My work and images may not be printed, re-distributed or modified without permission. Work may not be posted elswewhere without proper credit and captioning.


Embaralha example
"Embaralha" means shuffle in portuguese.
Hover any text in this example to see it working.


Psalms 103:12
As far as the east is from the west, so far hath he removed our transgressions from us.


EXPERT
About Company
Products
Products Training
Dataset-List
Camera
Add Camera
Existing Camera
Help
My Account
Camera Details:
Add Camera


Regenerate
Download
Generative Kandinsky
Open-source algorithm by
@mstringer
Inspired by Wassily Kandinsky’s
Circles in a Circle
, 1923


--- layout: post title: "One Last Song review at Atomic Avenue" --- Atomic Avenue has some nice things to say about One Last Song #1
The future One Last Song paints is bleak, though perhaps not completely unrealistic given the current political climate of the United States, and the interesting artistic choices by creators CJ Hurtt and Shawn Richter, especially in the way of panel layout and scene juxtaposition (they like to cross-cut a lot), really sell the paranoia and general unease that make this book compelling.


Module Owner: Mark Rivers: University of Chicago
This page is the home of modbus.
modbus supports EPICS communication with Programmable Logic Controllers (PLCs) via the Modbus protocol over TCP, serial RTU, and serial ASCII links.
The modbus software provides a layer between standard EPICS asyn device support, and the EPICS asyn TCP/IP or serial port driver.
Please email any comments and bug reports to Mark Rivers who is responsible for coordinating development and releases.
The software can be downloaded from the links in the table below. The software can also be accessed through the github repository.
| Module version | Requires module | Release needed | Required for |
|---|---|---|---|
| 2-11 | EPICS base | 7.0.1 | Base support |
| asyn | 4-33 | Driver support | |
| 2-10, 2-10-1 | EPICS base | 3.15.5 | Base support |
| asyn | 4-32 | Driver support | |
| 2-9 | EPICS base | <IP_ADDRESS> | Base support |
| asyn | 4-30 | Driver support | |
| 2-8 | EPICS base | <IP_ADDRESS> | Base support |
| asyn | 4-28 | Driver support | |
| 2-7 | EPICS base | <IP_ADDRESS> | Base support |
| asyn | 4-23 | Driver support | |
| 2-6 | EPICS base | <IP_ADDRESS> | Base support |
| asyn | 4-22 | Driver support | |
| 2-5 | EPICS base | <IP_ADDRESS> | Base support |
| asyn | 4-21 | Driver support | |
| 2-4 | EPICS base | <IP_ADDRESS> | Base support |
| asyn | 4-19 | Driver support | |
| 2-3 | EPICS base | <IP_ADDRESS> | Base support |
| asyn | 4-17 | Driver support | |
| 2-2 | EPICS base | 3.14.12 | Base support |
| asyn | 4-15 | Driver support | |
| 2-1 | EPICS base | 3.14.11 | Base support |
| asyn | 4-14 | Driver support | |
| 2-0 | EPICS base | 3.14.10 | Base support |
| asyn | 4-12 | Driver support | |
| 1-3 | EPICS base | <IP_ADDRESS> | Base support |
| asyn | 4-10 | Driver support | |
| 1-2 | EPICS base | <IP_ADDRESS> | Base support |
| asyn | 4-8 | Driver support | |
| 1-1 | EPICS base | <IP_ADDRESS> | Base support |
| asyn | 4-8 | Driver support |
After obtaining a copy of the distribution, it must be installed and built for use at your site. These steps only need to be performed once for the site (unless versions of the module running under different releases of EPICS and/or the other required modules are needed).
tar xvzf modbusRX-Y.tgzwhere X-Y is the release.
.../support/modbusRX-Y
This software was originally developed by Mark Rivers, based on an earlier package by Rolf Keitel from Triumf.


§371-3 Legal assistance. The attorney general shall be the legal advisor to the department of labor and industrial relations, and all legal duties involved in the work of the department shall be performed by the department of the attorney general. [L 1953, c 105, §3; RL 1955, §88-5; HRS §371-3]
Cross References
Attorney general, generally, see chapter 28.


I was asked by the Japanese Student Association JSA of UCSD to join their design competition for the next yearly membership card and shirt. These items are symbols of loyalty and pride to the club, and identify the members on outings. Both the winning card and shirt were ones which I designed.
Each card was designed to reflect a different feeling. However, all cards use a traditional Japanese color palette and motif.


When i was a small boy, my father told me
never to recommend a church or a woman
to anyone.And i have found it wise never to
recommend a restaurant either,something
always goes wrong with the cheese ascuffle.
There is something profoundly satisfying
about sharing a meal.Eating together,
breaking bread together, is one of the
oldest and most fundamentally unifying of
human experiences.
There is something
profoundly
satisfying
about sharing a meal.
There is something
profoundly
satisfying
about sharing a meal.
There is something
profoundly
satisfying
about sharing a meal.
There is something
profoundly
satisfying
about sharing a meal.
There is something
profoundly
satisfying
about sharing a meal.
There is something
profoundly
satisfying
about sharing a meal.
There is something profoundly satisfying
about sharing a meal.Eating together,
breaking bread together, is one of the
oldest and most fundamentally unifying of
human experiences.
There is something profoundly satisfying
about sharing a meal.Eating together,
breaking bread together, is one of the
oldest and most fundamentally unifying of
human experiences.


Welcome to KREDO
Wish to learn all that is currently hot in the tech industry? Need help training your students or workforce?
SignUp Today
Looking for some interesting hot topics, here you register NOW!!
{% if session.logged_in == NULL %}
Register
Login
{% endif %}


Hello, I’m Connor.
I’m a product leader and strategist living in Chicago. Currently working as a Principal at Punchkick. Formerly at Apple. I like coffee, Marvel movies, and talking with my hands.
I’m a product leader and strategist living in Chicago. Currently working as a Principal at Punchkick. Formerly at Apple. I like coffee, Marvel movies, and talking with my hands.


Hold Bharat Electronics; target of Rs 118: Prabhudas Lilladher
Prabhudas Lilladher recommended Hold rating on Bharat Electronics with a target price of Rs 118 in its research report dated November 05, 2019.
by Broker ResearchPrabhudas Lilladher's research report on Bharat Electronics
Bharat Electronics Ltd.'s (BEL's) 2QFY20 performance was below our and consensus expectations. Revenue was down 19% YoY mainly due to weak execution during the quarter. 2QFY19 revenue also included EVM/VVPAT revenue of Rs14 bn which was not there in 2QFY20. EBITDA margin dipped 540bps YoY at ~20% on account of higher raw material and employee cost. Hence, PAT for the quarter was down 41% YoY at Rs3.4 bn (PLe Rs4.8 bn). Order inflow during the quarter was down 34%YoY at Rs~71 bn (1HFY20 ~Rs90.7bn, down 37% YoY). Major orders expected during 2HFY20 are for Coastal Surveillance Systems and Smart City. With weak operating performance during 1HFY20, we have cut our earnings estimates by ~9%/8% for FY20E/21E respectively.
Outlook
The stock is currently trading at 16x/14x FY20/21E. We downgrade the stock from Accumulate to 'Hold' with TP of Rs118.
For all recommendations report, click here
Disclaimer: The views and investment tips expressed by investment experts/broking houses/rating agencies on moneycontrol.com are their own, and not that of the website or its management. Moneycontrol.com advises users to check with certified experts before taking any investment decisions.
Special Thursday Expiry on 10th 7th Nov
Early Closure to The Great Diwali Discount. Last Chance to get Moneycontrol PRO for a year @ Rs. 289/- only
Coupon code: DIWALI


#include "../common/mpmc_queue.h"
#include "pool.h"
#include <thread>
#include <atomic>
#include <algorithm>
#include <vector>
#include <type_traits>
Go to the source code of this file.
|
| class | grppi::thread_registry |
| | Thread index table to provide portable natural thread indices. More...
|
| |
| class | grppi::native_thread_manager |
| | RAII class to manage registration/deregistration pairs. This class allows to manage automatic deregistration of threads through the common RAII pattern. The current thread is registered into the registry at construction and deregistered a destruction. More...
|
| |
| class | grppi::parallel_execution_native |
| | Native parallel execution policy. This policy uses ISO C++ threads as implementation building block allowing usage in any ISO C++ compliant platform. More...
|
| |


NU Pep Squad eyes 2nd straight title
by Manila Standard SportsThe National University Pep Squad seeks its second straight title as the UAAP Season 82 Cheerdance Competition gets going on Sunday at the SM Mall of Asia Arena.
NU Pep won five championships in the last six years as the Bustillos-based cheerdancers hope to wow everyone with a performance that coach Ghicka Bernabe said is a tribute to all the Filipinos.
In front of its flag-waving schoolmates, NU Pep Squad is ready to deliver with its Sarimanok-inspired run in the mat.
NU Pep will be the eighth and last performer which was determined in the lottery two months ago, the first since the 2014 edition, where they won back-to-back titles.
“Eight is better than one pagdating sa performance. Somehow nu’ng na-experience namin as first performers before, kahit gaano kami kahanda, I can’t control the emotions of my kids, I can’t control yung scenario,” said NU Pep head coach Ghicka Bernabe.
Last season’s runner-up Far Eastern University Cheering Squad will be the fifth performer, hoping to deliver with a Michael Jackson-inspired run.
Adamson University Pep Squad, which placed third last year, will be at No. 6, seeking to bore fruit its bid to regain the throne it won two years ago.
De La Salle Animo Squad will perform first, followed by University of the East Pep Squad, University of the Philippines Pep Squad and Ateneo Blue Babble Battalion.
University of Santo Tomas Salinggawi Dance Troupe will be the penultimate performer before NU.
Gates open at 12 noon.


Real world examples
VowpalWabbit started its life as a research project, but since then it has evolved into a powerful product ready framework. Many companies have successfully integrated VW into their technology stack including Yahoo, eHarmony, Microsoft and Nanigans.


Finally, we will be able to see our application in the browser.
Save the following code to config.ru
:
require "syro" App = Syro.new do get do res.text "hello, world" end end run(App)
Start the server with the following command:
$ rackup
Now, point your browser to http://localhost:9292
.


(This is different from your slack username. You can find your slack id by entering "slacksoc my id" in a channel with the slacksoc bot)


Make new order
Make new order
×
static order
dynamic order
Next
View orders history
Orders history
×
Serial number
Date
Customer location
Number of stores
Number of items
Items cost
Delivery cost
Total cost
ID
Name
Purchase type
Purchased from
Quantity
Price
Total price
Is purchased from discount
Back
View feedbacks
Feedbacks
×
Customer
Order date
Rating
Feedback
Add new store
Add new store
Select items
×
ID:
Name:
Location X:
Location Y:
Delivery price per kilometer:
ID
Name
Purchase type
Price
Next
Close
Chat
×
Back
Stores
ID
Name
Owner
Number of orders
Total payment for items
Delivery price per kilometer
Total payment for deliveries
Items in this zone
ID
Item name
Purchase types
Number of stores selling this item
Item average cost
Number of times sold
×
ID
Item name
Purchase types
Price
Number of times sold
Serial number
Date
Customer
Number of items
Items cost
Delivery cost
ID
Item name
Purchase types
Quantity
Price
Total price
Is purchased from discount
Back


Search
My Account
Cart
All
Best Sellers
Fruits and vegetables
Beverages
Cereals
Baby Products
Log Out
❮
❯
offers
UPTO 70% OFF | Drinks - Stores
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
view all
UPTO 40% OFF | Fruits and vegetables - Stores
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
view all
UPTO 60% OFF | Body Soaps - Stores
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
Store Name
Pimpri chinchwad region - pune
view all
Shop by Category
Beverages
and Drinks
fruits and
vegetables
baby
products
personal
care
cereals
and grains
view all


{{>navbar}} {{>error_flash}}
This is a collection of quotes by me, Stephen Greco, as recalled and recorded by my friends. Feel free to browse the Twitter feed for the complete collection!
{{quote}}
No quotes found.


This frame set document contains:
The navigation tree
The homepage
But this site will not work properly if your browser cannot show frames


Memo To - Website browsers, fans & clients >From - Jude Wanniski Re - #9 "The Manchurian Candidate"
Continuing with the "movie list," here is number nine of the ten films that most shaped my life. These are not my favorite films. They are the movies I've seen that have had the greatest influence on my thinking, my character, my life. Some are favorites that I enjoy watching over and over again, which you can tell as you read each entry. Try to think of your own experiences with films and how they influenced the course of your life. It makes life more interesting to be aware, as you live it, to know how things such as books and films and magazine articles alter your path in significant ways. Sometime last year the Sunday NYTimes "Arts and Leisure" section had a piece on how difficult it is to think of a movie that may have changed history. The only movie they could think of was a silent film by D.W. Griffith, Birth of a Nation, which had a scene about the KuKluxKlan that the author believes changed national thinking about the KKK. How silly. Each of the ten films listed here changed my history, and if I had not seen them, I would not have helped change history in the ways that I have. Films don't move masses. They move individuals who move masses.
9. "The Manchurian Candidate" (1962) I'd been a lefty in my political tastes from as far back as I could remember. In my first presidential vote, 1960, I cast my ballot for JFK over the hated Richard Nixon. In 1962, I was a reporter for the Las Vegas Review-Journal and had my first disillusionment with "liberals." At the same time, my editor, Robert L. Brown, persuaded me that I was being unjust in my evaluation of Nixon, and my Ox-Bow incident experience forced me to swallow hard and read Nixon's Six Crises. Then, along came The Manchurian Candidate with Frank Sinatra, Laurence Harvey, and Angela Lansbury, about how the COMMUNISTS were able to scheme in ways that could actually capture the American presidency. The movie hit me at a vulnerable moment and may have helped push me toward an eventual vote for Nixon in 1968. Thirty-five years later, I'm skeptical about genuine conspiracy theories that come from the left or the right, although I do appreciate their potential.
-------------------------------------------------------------------- Posted using Reference.COM http://WWW.Reference.COM FREE Usenet and Mailing list archive, directory and clipping service --------------------------------------------------------------------
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


layout: true
Effingham Software Developer Group
@rebelwebdev
--- class: title, middle, center # Docker For Small Applications ## Ryan Condron --- class: center, middle # What is Docker? Docker is a service that each part or service of an application is ran in a container. The only thing we install on the host is docker and everything else is ran in a container. ??? - Often used in microservice environments - great for web apps as they require multiple services to get the app to run --- class: middle # When to use Docker - Applications with Multiple Services - Development - When hosting multiple different types of applications on the same host - Demos ??? - Docker can make app setup easier for end users by offloading setup work to developers --- # Terminology - Registry - where container images are stored - Image - an immutable state of a container (i.e. version) - Container - a app or service build on docker infrastructure --- class: center, middle, title # Docker Setup & Commands --- # Installation - Go To the docker website and follow the instructions to install for your platform - Available on multiple platforms - Windows - Linux - MacOS --- class: middle # Running a container ```sh docker run nginx --name nginx ``` ```sh docker stop nginx ``` --- class: middle # View running containers ```sh docker ps ``` ```sh docker ps -a ``` --- class: middle # Viewing Container Logs ```sh docker logs container_name ``` --- class: middle # Run an One Off Command In a Container ```sh docker exec -it container_name /bin/bash ``` --- class: title, center, middle # Application Setup ??? - Since I am familiar with Ruby on Rails the following examples will follow an example application --- # Prepare Application - You will mostly like need to make changes to application configuration - Think of how your app uses external services (i.e. database, cache, websockets, Background services) - Use Environment Variables with defaults so you are not locked in to only using docker as a deploy method ```ruby redis_host = ENV.fetch('REDIS_HOST') { '<IP_ADDRESS>' } redis_port = ENV.fetch('REDIS_PORT') { '6379' } redis_db = ENV.fetch('REDIS_DB') { '0' } Sidekiq.configure_server do |config| config.redis = { host: redis_host, port: redis_port, db: redis_db } end Sidekiq.configure_client do |config| config.redis = { host: redis_host, port: redis_port, db: redis_db } end ``` --- # Command To Run In the Container - The last line in your Dockerfile should specify the command to run or put the commands in your documentation - Create shell or batch files to run your app or service and make sure they are excutable ```sh #!/bin/bash create_db() { bundle exec rake db:create bundle exec rake db:migrate } run_server() { bundle exec puma -C /app/config/puma.rb } create_db run_server ``` --- # The Dockerfile - builds the service in a container - contains commands such as RUN, ENV, COPY, FROM, WORKDIR - FROM - sets the start container - RUN - runs a command while building the image - COPY - copies files into the container - WORKDIR - the directory for your application - ENV - sets an environment variable --- # The Dockerfile ```Dockerfile # use Ruby as a base image FROM ruby:2.5.0 # install nodejs PPA RUN curl -sL https://deb.nodesource.com/setup_9.x | bash RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list # update & install dependencies RUN apt-get update -qq && apt-get -y install yarn nodejs imagemagick libc6-dev # set APP_PATH Environment Variable ENV APP_PATH /app # create APP_PATH directory RUN mkdir -p $APP_PATH ``` --- # The Dockerfile ```Dockerfile # set working directory to APP_PATH WORKDIR $APP_PATH # Move Gemfiles to WORKDIR COPY Gemfile Gemfile.lock ./ # Install Gems RUN bundle install --without development test --binstubs # Copy Application to Work Dir COPY . . # install nodejs assets RUN yarn install # compile assets RUN bundle exec rake webpacker:compile RAILS_ENV=production ``` --- class: middle, center, title # Docker Compose --- # What is it? - Describes all containers need to run application - Describes volumes for persistent storage - Links Containers to allow networking between them --- # Defining Compose Container ```docker-compose application_web: container_name: web image: nginx:latest restart: always ports: - '443:443' - '80:80' volumes - nginx_conf:/etc/nginx/conf.d - nginx_ssl:/etc/nginx/ssl ``` --- # Defining Volumes - Volumes store persistent data to be mounted in your container or container(s) - Can be mounted in multiple containers at once ```docker-compose volumes: nginx_conf: nginx_ssl: ``` --- class: middle, center, title # Demo Time


Big 5 Personality Factor data collected online
big5
A data frame with 19719 rows and 57 variables:
race
factor. 13 levels.
age
Age in years.
gender
factor. Coded as "Male"
,
"Female"
, "Other"
.
hand
factor. What had do you write with? Coded as
"Left"
, "Right"
, "Both"
.
country
character. Techinal location as ISO country code.
E1
I am the life of the party.
E2
I don't talk a lot.
E3
I feel comfortable around people.
E4
I keep in the background.
E5
I start conversations.
E6
I have little to say.
E7
I talk to a lot of different people at parties.
E8
I don't like to draw attention to myself.
E9
I don't mind being the center of attention.
E10
I am quiet around strangers.
N1
I get stressed out easily.
N2
I am relaxed most of the time.
N3
I worry about things.
N4
I seldom feel blue.
N5
I am easily disturbed.
N6
I get upset easily.
N7
I change my mood a lot.
N8
I have frequent mood swings.
N9
I get irritated easily.
N10
I often feel blue.
A1
I feel little concern for others.
A2
I am interested in people.
A3
I insult people.
A4
I sympathize with others' feelings.
A5
I am not interested in other people's problems.
A6
I have a soft heart.
A7
I am not really interested in others.
A8
I take time out for others.
A9
I feel others' emotions.
A10
I make people feel at ease.
C1
I am always prepared.
C2
I leave my belongings around.
C3
I pay attention to details.
C4
I make a mess of things.
C5
I get chores done right away.
C6
I often forget to put things back in their proper place.
C7
I like order.
C8
I shirk my duties.
C9
I follow a schedule.
C10
I am exacting in my work.
O1
I have a rich vocabulary.
O2
I have difficulty understanding abstract ideas.
O3
I have a vivid imagination.
O4
I am not interested in abstract ideas.
O5
I have excellent ideas.
O6
I do not have a good imagination.
O7
I am quick to understand things.
O8
I use difficult words.
O9
I spend time reflecting on things.
O10
I am full of ideas.
Dataset obtained from the Open-Source Psychometrics Project.
This data was collected (c. 2012) through on interactive online personality test. Participants were informed that their responses would be recorded and used for research at the begining of the test and asked to confirm their consent at the end of the test.
The test consists of fifty items that you rate on how true they are about you on a five point scale where 1=Disagree, 3=Neutral and 5=Agree.
The five scales are Openness to experience, Conscientiousness, Extraversion, Agreeableness, and Neuroticism.
Goldberg, Lewis R. "The development of markers for the Big-Five factor structure."


No one really knows the future, but there are some pretty clear patterns worth exploring. One of them is human nature and Lindy Effect. Powerful things when combined together.
Lindy Effect is a theory that says, in short, that the longer something exists, the more likely it will survive in the future. It’s about things like technology, books in print, old movies that people are still watching.
Shopping with a smartphone sounds like a big, surprising shift in commerce. Right? Actually it’s an effect of a pretty boring process.
We communicate and sell since forever. Once we figured out a phone, we communicate more at a distance and deal with telemarketers. Once we figured out the Internet, we get e-commerce, social media and email. Once many people got email addresses, we use them to communicate and sell on a large scale. And once we know we can do it at low cost or no cost, we overdo it.
Everything that can send signals remotely is used to communicate and do business.
And it’s something that supports our already present thinking patterns.  Good new things are based on old, proven things. When something ignores the past, it dies.
When you see Google Maps, you know immediately that it’s a map. It looks similar to the old ones. It could look different with todays technology, but would it be better? When patterns are familiar, you know what’s going on.
Technology can survive when it’s based on well established patterns.


Greetings! I'm a software developer studying Computer Science at the University of Waterloo.
I'm a collaborative and quick learner who's not afraid of tackling complex and challenging problems.
For additional information about me such as my interests, software and technologies I've learned,
and hobbies that I enjoy, please click
here.


~Welcome~
Fairoza Amira Binti Hamzah
Pink is a favourite, travel is a pleasure and work is a passion!
About me
My Passion
My Happiness
Advice to Postgraduate students: Record of live webinar with Udacity
Link to the slides for the webinar


Serial Device Firmware Upgrade¶
My main aim is to get this working. It has a small footprint, since no need for bluetooth.
I have not(!) been successfull.
west build -b ds_d6 samples/display/cfb – -DOVERLAY_CONFIG=’overlay-serial.conf;overlay-fs.conf’ -DCONFIG_MCUBOOT_SIGNATURE_KEY_FILE=”../bootloader/mcuboot/root-rsa-2048.pem”
Wireless Device Firmware Upgrade¶
Overview¶
In order to perform a FOTA (firmware over the air) update on zephyr you need 2 basic components:
MCUboot (a bootloader)
SMP Server (a bluetooth service)
MCUboot with zephyr¶
west build -b ds_d6 -s ../bootloader/mcuboot/boot/zephyr -d build-mcuboot west flash -d build-mcuboot –runner blackmagicprobe
Some additional configuration is required to build applications for MCUboot.
This is handled internally by the Zephyr configuration system and is wrapped in the CONFIG_BOOTLOADER_MCUBOOT Kconfig variable, which must be enabled in the application’s prj.conf file.
west build -b ds_d6 samples/subsys/console/echo -d build-hello-signed -DCONFIG_MCUBOOT_SIGNATURE_KEY_FILE=”../bootloader/mcuboot/root-rsa-2048.pem” west flash -d build-hello-signed –runner blackmagicprobe
another example with overlays: west build -b ds_d6 samples/subsys/mgmt/mcumgr/smp_svr – -DOVERLAY_CONFIG=’overlay-serial.conf;overlay-fs.conf’
mcumgr -ldebug -t 60 –conntype=serial –connstring=’dev=/dev/ttyACM1,baud=115200’ image list
In order to upgrade to an image (or even boot it, if MCUBOOT_VALIDATE_PRIMARY_SLOT is enabled), the images must be signed.
To make development easier, MCUboot is distributed with some example keys. It is important to stress that these should never be used for production, since the private key is publicly available in this repository. See below on how to make your own signatures.
Images can be signed with the scripts/imgtool.py script. It is best to look at samples/zephyr/Makefile for examples on how to use this.
west flash knows where to put the application (you do not have to specify the address of the slot)


Table of Contents
The NVIDIA Linux driver supports configuring various driver settings on a per-process basis through the use of "application profiles": collections of settings that are only applied if the current process matches attributes detected by the driver when it is loaded into the process. This mechanism allows users to selectively override global driver settings for a particular application without the need to set environment variables on the command line prior to running the application.
Application profiles consist of "rules" and "profiles". A "profile" defines what settings to use, and a "rule" identifies an application and defines what profile should be used with that application.
A rule identifies an application by describing various features of the application; for example, the name of the application binary (e.g. "glxgears") or a shared library loaded into the application (e.g. "libpthread.so.0"). The particular features supported by this NVIDIA Linux implementation are listed below in the "Supported Features" section.
Currently, application profiles are only supported by the NVIDIA Linux GLX implementation, but other NVIDIA driver components may use them in the future.
Application profiles can be configured using the nvidia-settings control panel. To learn more, consult the online help text by clicking the "Help" button under the "Application Profiles" page in nvidia-settings.
Note: if HOME is unset, then any configuration files listed below located under $HOME will not be loaded by the driver.
To enable application profile support globally on a system, edit the file $HOME/.nv/nvidia-application-profile-globals-rc to contain a JSON object with a member "enabled" set to true or false. For example, if this file contains the following string:
{ "enabled" : true }
application profiles will be enabled globally in the driver. If this file does not exist or cannot be read by the parser, application profiles will be enabled by default.
Application profile support in the driver can be toggled for an individual application by using the __GL_APPLICATION_PROFILE environment variable. Setting this to 1 enables application profile support, and setting this to 0 disables application profile support. If this environment variable is set, this overrides any setting specified in $HOME/.nv/nvidia-application-profile-globals-rc.
Additionally, the application profile parser can log debugging information to stderr if the __GL_APPLICATION_PROFILE_LOG environment variable is set to 1. Conversely, setting __GL_APPLICATION_PROFILE_LOG to 0 disables logging of parse information to stderr.
By default, when the driver component ("libGL.so.1" in the case of GLX) is loaded by a process, the driver looks for files in the following search path:
$HOME/.nv/nvidia-application-profiles-rc
$HOME/.nv/nvidia-application-profiles-rc.d
/etc/nvidia/nvidia-application-profiles-rc
/etc/nvidia/nvidia-application-profiles-rc.d
/usr/share/nvidia/nvidia-application-profiles-460.27.04-rc
By convention, the *-rc.d
files
are directories and the *-rc
files
are regular files, but the driver places no restrictions on file
type, and any of the above files can be a directory or regular
file, or a symbolic link which resolves to a directory or regular
file. Files of other types (e.g. character or block devices,
sockets, and named pipes) will be ignored.
If a file in the search path is a directory, the parser will examine all regular files (or symbolic links which resolve to regular files) in that directory in alphanumeric order, as determined by strcoll(3). Files in the directory of other types (e.g. other directories, character or block devices, sockets, and named pipes) will be ignored.
When application profiles are enabled in the driver, the driver configuration is defined by a set of profiles and rules. Profiles are collections of driver settings given as key/value pairs, and rules are mappings between one or more patterns which match against some feature of the process and a profile.
Configuration files are written in a superset of JSON (http://www.json.org/) with the following additional features:
A hash mark ('#') appearing outside of a JSON string denotes a comment, and any text appearing between the hash mark and the end of the line inclusively is ignored.
Integers can be specified in base 8 or 16, in addition to base 10. Numbers beginning with '0' and followed by a digit are interpreted to be octal, and numbers beginning with '0' and followed by 'x' or 'X' are interpreted to be hexadecimal.
Each file consists of a root object with two optional members:
"rules", which contains an array of rules, and
"profiles", which contains an array of profiles.
Each rule is an object with the following members:
"pattern", which contains either a string, a pattern object, or an array of zero or more pattern objects. If a string is given, it is interpreted to be a pattern object with the "feature" member set to "procname" and the "matches" member set to the value of the string. During application detection, the driver determines if each pattern in the rule matches the running process, and only applies the rule if all patterns in the rule match. If an empty array is given, the rule is unconditionally applied.
"profile", which contains either a string, array, or profile. If a string is given, it is interpreted to be the name of some profile in the configuration. If a profile is given, it is implicitly defined as part of the rule. If an array is given, the array is interpreted to be an inline profile with its "settings" member set to the contents of the array.
Each profile is an object with the following members:
"name", a string which names the profile for use in a rule. This member is mandatory if the profile is specified as part of the root object's profiles array, but optional if the profile is defined inline as part of a rule.
"settings", an array of settings which can be given in two different formats:
As an array of keys and values, e.g.
[ "key1", "value1", "key2", 3.14159, "key3", 0xF00D ]
Keys must be specified as strings, while a value may be a string, number, or true/false.
as an array of JSON setting objects.
Each setting object contains the following members:
"k" (or "key"), the key given as a string
"v" (or "value"), the value, given as a string, number, or true/false.
A pattern object may consist of a pattern primitive, or a logical operation on pattern objects. A pattern primitive is an object containing the following members:
"feature", the feature to match the pattern against. Supported features are listed in the "Supported Features" section below.
"matches", the string to match.
A pattern operation is an object containing the following members:
"op", a string describing the logical operation to apply to the subpatterns. Valid values are "and", "or", or "not".
"sub": a pattern object or array of one or more pattern objects, to serve as the operands. Note that the "not" operator expects exactly one object; any other number of objects will cause the pattern to fail to match.
If the pattern is an operation, then the pattern matches if and only if the logical operation applied to the subpatterns is true. For example,
{ "op" : "or", "sub" : [ { "feature" : "procname", "matches" : "foo" }, { "feature" : "procname", "matches" : "bar" } ] }
matches all processes with the name "foo" *or* "bar". Similarly,
{ "op" : "and", "sub" : [ { "feature" : "procname", "matches" : "foo" }, { "feature" : "dso", "matches" : "bar.so" } ] }
matches all processes with the name "foo" that load DSO "bar.so", and
{ "op" : "not", "sub" : { "feature" : "procname", "matches" : "foo" } }
matches a process which is *not* named "foo". Nested operations are possible; for example:
{ "op" : "and", "sub" : [ { "feature" : "dso", "matches" : "foo.so" }, { "op" : "not", "sub" : { "feature" : "procname", "matches" : "bar" } } ] }
matches processes that are *not* named "bar" that load DSO "foo.so".
Note: this definition omits the presence of whitespace or comments, which can be inserted between any pair of symbols.
This is written in an "EBNF-like" grammar based on ISO/IEC 14977, using the following (non-EBNF) extensions:
object(A, B, ...) indicates that each symbol A, B, etc. must appear exactly once in any order, delimited by commas and bracketed by curly braces, unless the given symbol expands to an empty string.
For example, assuming A and B are nonempty symbols:
object(A, B) ;
is equivalent to:
'{', (A, ',', B) | (B, ',', A), '}' ;
Also,
object([A], [B]);
is equivalent to:
'{', [ A | B | (A, ',', B) | (B, ',', A) ], '}' ;
attr(str, A) is shorthand for:
( '"str"' | "'str'" ), ':', A
array(A) is shorthand for:
'[', [ array_A ], ']'
where array_A is defined as:
array_A = (array_A, ',' A) | A
The grammar follows.
config_file = object( [ attr(rules, array(rule)) ] , [ attr(profiles, array(profile)) ] ) ; rule = object(attr(pattern, pattern_object | array(pattern_object)), attr(profile, profile_ref)) ; pattern_object = pattern_op | pattern_primitive ; pattern_op = object(attr(op, string), attr(sub, pattern_object | array(pattern_object))) ; pattern_primitive = object(attr(feature, string), attr(matches, string)) ; profile_ref = string | settings | rule_profile ; profile = object(attr(name, string), attr(settings, (array(setting_kv) | array(setting_obj)))) ; rule_profile = object([ attr(name, string) ], attr(settings, (array(setting_kv) | array(setting_obj)))) ; setting_kv = string ',' value ; setting_obj = object(attr(k,string) | attr(key,string), attr(v,value) | attr(value,value)) ; string = ? any valid json string ? ; value = ? any valid json number ? | 'true' | 'false' | hex_value | oct_value ; hex_value = '0', ('x' | 'x'), hex_digit, { hex_digit } ; oct_value = '0', oct_digit, { oct_digit } ; hex_digit = ? any character in the range [0-9a-fA-F] ? ; oct_digit = ? any character in the range [0-7] ? ;
Profiles may be specified in any order, and rules defined in files earlier in the search path may refer to profiles defined later in the search path.
Rules are prioritized based on the order in which they are defined: each rule has precedence over rules defined after it in the same file, and rules defined in a file have precedence over rules defined in files that come after that file in the search path.
For example, if there are two files A and B, such that A comes before B in the search path, with the following contents:
# File A { "rules" : [ { "pattern" : "foo", "profile" : [ "a", 1 ] }, { "pattern" : "foo", "profile" : [ "a", 0, "b", 2 ] } ] } # File B { "rules" : [ { "pattern" : "foo", "profile" : [ "a", 0, "b", 0, "c", 3 ] } ] }
and the driver is loaded into a process with the name "foo", it will apply the settings "a" = 1, "b" = 2, and "c" = 3.
Settings specified via application profiles have higher precedence than global settings specified in nvidia-settings, but lower precedence than settings specified directly via environment variables.
The following is a sample configuration file which demonstrates the various ways one can specify application profiles and rules for different processes.
{ "rules" : [ # Define a rule with an inline profile, (implicitly) using # feature "procname". { "pattern" : "glxgears", "profile" : [ "GLSyncToVBlank", "1" ] }, # Define a rule with a named profile, (implicitly) using feature # "procname". { "pattern" : "gloss", "profile" : "p0" }, # Define a rule with a named profile, using feature "dso". { "pattern" : { "feature" : "dso", "matches" : "libpthread.so.0" }, "profile" : "p1" }, # Define a rule with a named, inline profile, using feature "true"; # patterns using this feature will always match, and can be used # to write catch-all rules. { "pattern" : { "feature" : "true", "matches" : "" }, "profile" : { "name" : "p2", "settings" : [ "GLSyncToVBlank", 1 ] } }, # Define a rule with multiple patterns. This rule will only be # applied if the current process is named "foo" and has loaded # "bar.so". { "pattern" : [ { "feature" : "procname", "matches" : "foo" }, { "feature" : "dso", "matches" : "bar.so" } ], "profile" : "p1" }, # Define a rule with no patterns. This rule will always be applied. { "pattern" : [], "profile" : "p1" } ], "profiles" : [ # define a profile with settings defined in a key/value array { "name" : "p0", "settings" : [ "GLSyncToVBlank", 0 ] }, # define a profile with settings defined in an array of setting # objects { "name" : "p1", "settings" : [ { "k" : "GLDoom3", "v" : false } ] } ] }
This NVIDIA Linux driver supports detection of the following features:
"true": patterns using this feature will always match, regardless of the contents of the string provided by "matches".
"procname": patterns using this feature compare the string provided by "matches" against the pathname of the current process with the leading directory components removed and match if they are equal.
"commname": patterns using this feature compare the string provided by "matches" against the commandname of the current process, as stored in /proc/self/comm.
"dso": patterns using this feature compare the string provided by "matches" against the list of currently loaded libraries in the current process and match if the string matches one of the entries in the list (with leading directory components removed).
Please note that application detection occurs when the driver component ("libGL.so.1" in the case of GLX) is first loaded by a process, so a pattern using this feature may fail to match if the library specified by the pattern is loaded after the component is loaded. A potential workaround for this on Linux is to set the LD_PRELOAD environment variable (see ld-linux(8)) to include the component, as in the following example:
LD_PRELOAD="libGL.so.1" glxgears
Note this defeats one of the objectives of application detection (namely the need to set environment variables on the command line before running the application), but this may be useful when there is a need to frequently change driver settings for a particular application: one can write a wrapper script to set LD_PRELOAD once, then modify the JSON configuration repeatedly without needing to edit the wrapper script later on.
Also note that the pattern matches against library names as they appear in the maps file of that process (see proc(5)), and not the names of symbolic links to these libraries.
"findfile": patterns using this feature should provide a colon-separated list of filenames in the "matches" argument. At runtime, the driver scans the directory of the process executable and matches the pattern if every file specified in this list is present in the same directory. Please note there is currently no support for matching against files in other paths than the process executable directory.
The list of supported application profile settings and their equivalent environment variable names (if any) is as follows:
"GLFSAAMode" : see __GL_FSAA_MODE
"GLLogMaxAniso" : see __GL_LOG_MAX_ANISO
"GLNoDsoFinalizer" : see __GL_NO_DSO_FINALIZER
"GLSingleThreaded" : see __GL_SINGLE_THREADED
"GLSyncDisplayDevice" : see __GL_SYNC_DISPLAY_DEVICE
"GLSyncToVblank" : see __GL_SYNC_TO_VBLANK
"GLSortFbconfigs" : see __GL_SORT_FBCONFIGS
"GLAllowUnofficialProtocol" : see __GL_ALLOW_UNOFFICIAL_PROTOCOL
"GLSELinuxBooleans" : see __GL_SELINUX_BOOLEANS
"GLShaderDiskCache" : see __GL_SHADER_DISK_CACHE
"GLShaderDiskCachePath" : see __GL_SHADER_DISK_CACHE_PATH
"GLYield" : see __GL_YIELD
"GLThreadedOptimizations" : see __GL_THREADED_OPTIMIZATIONS
"GLDoom3" : see __GL_DOOM3
"GLExtensionStringVersion" : see __GL_ExtensionStringVersion
"GLConformantBlitFramebufferScissor" : see __GL_ConformantBlitFramebufferScissor
"GLAllowFXAAUsage" : see __GL_ALLOW_FXAA_USAGE
"GLVRRAllowed" : see __GL_VRR_ALLOWED
"GLWriteTextSection" : see __GL_WRITE_TEXT_SECTION
"GLIgnoreGLSLExtReqs" : see __GL_IGNORE_GLSL_EXT_REQS
"EGLVisibleDGPUDevices"
On a multi-device system, this option can be used to make EGL ignore certain devices. This setting takes a 32-bit mask encoding a whitelist of visible devices. The bit position matches the minor number of the device to make visible.
For instance, the profile
{ "rules" : [ { "pattern" : [], "profile" : [ "EGLVisibleDGPUDevices", 0x00000002 ] } ] }
would only make the device with minor number 1 visible (i.e. /dev/nvidia1).
"EGLVisibleTegraDevices" : Same semantics as EGLVisibleDGPUDevices
"GLShowGraphicsOSD" : see __GL_SHOW_GRAPHICS_OSD
"GLSharpenEnable" : see __GL_SHARPEN_ENABLE
"GLSharpenValue" : see __GL_SHARPEN_VALUE
"GLSharpenIgnoreFilmGrain" : see __GL_SHARPEN_IGNORE_FILM_GRAIN