/* This file is part of Ext JS 4 Copyright (c) 2011 Sencha Inc Contact: http://www.sencha.com/contact Commercial Usage Licensees holding valid commercial licenses may use this file in accordance with the Commercial Software License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Sencha. If you are unsure which license is appropriate for your use, please contact the sales department at http://www.sencha.com/contact. */ /** * @docauthor Robert Dougan<EMAIL_ADDRESS>* * This class creates a multiline text field, which can be used as a direct replacement for traditional * textarea fields. In addition, it supports automatically {@link #grow growing} the height of the textarea to * fit its content. * * All of the configuration options from {@link Ext.form.field.Text} can be used on TextArea. * * Example usage: * * @example * Ext.create('Ext.form.FormPanel', { * title : 'Sample TextArea', * width : 400, * bodyPadding: 10, * renderTo : Ext.getBody(), * items: [{ * xtype : 'textareafield', * grow : true, * name : 'message', * fieldLabel: 'Message', * anchor : '100%' * }] * }); * * Some other useful configuration options when using {@link #grow} are {@link #growMin} and {@link #growMax}. * These allow you to set the minimum and maximum grow heights for the textarea. */ Ext.define('Ext.form.field.TextArea', { extend:'Ext.form.field.Text', alias: ['widget.textareafield', 'widget.textarea'], alternateClassName: 'Ext.form.TextArea', requires: ['Ext.XTemplate', 'Ext.layout.component.field.TextArea'], fieldSubTpl: [ '<textarea id="{id}" ', '<tpl if="name">name="{name}" </tpl>', '<tpl if="rows">rows="{rows}" </tpl>', '<tpl if="cols">cols="{cols}" </tpl>', '<tpl if="tabIdx">tabIndex="{tabIdx}" </tpl>', 'class="{fieldCls} {typeCls}" ', 'autocomplete="off">', '</textarea>', { compiled: true, disableFormats: true } ], /** * @cfg {Number} growMin * The minimum height to allow when {@link #grow}=true */ growMin: 60, /** * @cfg {Number} growMax * The maximum height to allow when {@link #grow}=true */ growMax: 1000, /** * @cfg {String} growAppend * A string that will be appended to the field's current value for the purposes of calculating the target field * size. Only used when the {@link #grow} config is true. Defaults to a newline for TextArea to ensure there is * always a space below the current line. */ growAppend: '\n-', /** * @cfg {Number} cols * An initial value for the 'cols' attribute on the textarea element. This is only used if the component has no * configured {@link #width} and is not given a width by its container's layout. */ cols: 20, /** * @cfg {Number} cols * An initial value for the 'cols' attribute on the textarea element. This is only used if the component has no * configured {@link #width} and is not given a width by its container's layout. */ rows: 4, /** * @cfg {Boolean} enterIsSpecial * True if you want the enter key to be classed as a special key. Special keys are generally navigation keys * (arrows, space, enter). Setting the config property to true would mean that you could not insert returns into the * textarea. */ enterIsSpecial: false, /** * @cfg {Boolean} preventScrollbars * true to prevent scrollbars from appearing regardless of how much text is in the field. This option is only * relevant when {@link #grow} is true. Equivalent to setting overflow: hidden. */ preventScrollbars: false, // private componentLayout: 'textareafield', // private onRender: function(ct, position) { var me = this; Ext.applyIf(me.subTplData, { cols: me.cols, rows: me.rows }); me.callParent(arguments); }, // private afterRender: function(){ var me = this; me.callParent(arguments); if (me.grow) { if (me.preventScrollbars) { me.inputEl.setStyle('overflow', 'hidden'); } me.inputEl.setHeight(me.growMin); } }, // private fireKey: function(e) { if (e.isSpecialKey() && (this.enterIsSpecial || (e.getKey() !== e.ENTER || e.hasModifier()))) { this.fireEvent('specialkey', this, e); } }, /** * Automatically grows the field to accomodate the height of the text up to the maximum field height allowed. This * only takes effect if {@link #grow} = true, and fires the {@link #autosize} event if the height changes. */ autoSize: function() { var me = this, height; if (me.grow && me.rendered) { me.doComponentLayout(); height = me.inputEl.getHeight(); if (height !== me.lastInputHeight) { me.fireEvent('autosize', height); me.lastInputHeight = height; } } }, // private initAria: function() { this.callParent(arguments); this.getActionEl().dom.setAttribute('aria-multiline', true); }, /** * To get the natural width of the textarea element, we do a simple calculation based on the 'cols' config. * We use hard-coded numbers to approximate what browsers do natively, to avoid having to read any styles which * would hurt performance. Overrides Labelable method. * @protected */ getBodyNaturalWidth: function() { return Math.round(this.cols * 6.5) + 20; } });


Service Metadata
You can explore the contents of the tile server using:
- an HTML web interface for humans; and
- a JSON API for computers.
The JSON API is useful for clients that auto-configure based on the service metadata. In fact, the HTML web interface is an example of such an auto-configuring interface: it reads the JSON and uses that to set up the web map visualization and interface elements.
Web Interface
After start-up, you can connect to the server and explore the published tables and functions in the database via a web interface at:
- http://localhost:7800
Click the “preview” link of any of the layer entries to see a web map view of the layer. The “json” link provides a direct link to the JSON metadata for that layer.
Layers List
A top-level list of layers is available in JSON at:
- http://localhost:7800/index.json
The index JSON just returns the minimum information about each layer.
{
"public.ne_50m_admin_0_countries" : {
"name" : "ne_50m_admin_0_countries",
"schema" : "public",
"type" : "table",
"id" : "public.ne_50m_admin_0_countries",
"description" : "Natural Earth country data",
"detailurl" : "http://localhost:7800/public.ne_50m_admin_0_countries.json"
}
}
- The
detailurl
provides more detailed metadata for table and function layers. - The
detailurl
provides more detailed metadata for table and function layers. - The
description
field is read from thecomment
value of the table. To set a comment on a table, use theCOMMENT
command.COMMENT ON TABLE ne_50m_admin_0_countries IS 'This is my comment';


[1]
great picture if its anything like a little awkward and AV digitizing.
[2]
great picture if its anything like a HEADPHONE JACK manual control i find no cons to speak of.


@Inherited
@Retention(value=RUNTIME)
@Documented
@Target(value={METHOD,TYPE})
public @interface CircuitBreaker
A circuit breaker aims to prevent further damage by not executing functionality that is doomed to fail. After a failure situation has been detected, circuit breakers prevent methods from being executed and instead throw exceptions immediately. After a certain delay or wait time, the functionality is attempted to be executed again.
A circuit breaker can be in one of the following states:
requestVolumeThreshold
and failureRatio
parameters may be configured in order to specify
the conditions under which the breaker will transition the circuit to open. If the failure conditions are met, the circuit
will be opened.
successThreshold
parameter allows the
configuration of the number of trial executions that must succeed before the circuit can be closed. After the specified
number of successful executions, the circuit will be closed. If a failure occurs before the successThreshold is reached
the circuit will transition to open.
When a method returns a result, the following rules are applied to determine whether the result is a success or a failure:
Throwable
, it is considered a success
skipOn()
parameter, it is considered a success
failOn()
parameter, it is considered a failure
Throwable
which is not an Error
or Exception
, non-portable behavior results.failOn()
,
skipOn()
,
delay()
,
delayUnit()
,
requestVolumeThreshold()
,
failureRatio()
,
successThreshold()
| Modifier and Type | Optional Element and Description |
|---|---|
long |
delay
The delay after which an open circuit will transitions to half-open state.
|
java.time.temporal.ChronoUnit |
delayUnit
The unit of the delay after which an open circuit will transitions to half-open state.
|
java.lang.Class<? extends java.lang.Throwable>[] |
failOn
The list of exception types which should be considered failures.
|
double |
failureRatio
The ratio of failures within the rolling window that will trip the circuit to open.
|
int |
requestVolumeThreshold
The number of consecutive requests in a rolling window.
|
java.lang.Class<? extends java.lang.Throwable>[] |
skipOn
The list of exception types which should not be considered failures.
|
int |
successThreshold
The number of successful executions, before a half-open circuit is closed again.
|
public abstract java.lang.Class<? extends java.lang.Throwable>[] failOn
Note that if a method throws a Throwable
which is not an Error
or Exception
, non-portable behavior
results.
public abstract java.lang.Class<? extends java.lang.Throwable>[] skipOn
This list takes priority over the types listed in failOn()
.
Note that if a method throws a Throwable
which is not an Error
or Exception
, non-portable behavior results.
public abstract long delay
The amount of delay is taken from this delay value and the delayUnit
, and defaults to five seconds. The
value must be greater than or equal to 0
. 0
means no delay.
public abstract java.time.temporal.ChronoUnit delayUnit
delay()
public abstract int requestVolumeThreshold
The circuit breaker will trip if the number of failures exceed the failureRatio
within the rolling window
of consecutive requests. The value must be greater than or equal to 1
.
public abstract double failureRatio
The circuit breaker will trip if the number of failures exceed the failureRatio
within the rolling window
of consecutive requests. For example, if the requestVolumeThreshold
is 20
and failureRatio
is .50
, ten or more failures in 20 consecutive requests will trigger the circuit to open. The value must
be between 0
and 1
inclusive.
public abstract int successThreshold
A half-open circuit will be closed once successThreshold
executions were made without failures.
If a failure occurs while in half-open state the circuit is immediately opened again. The value must be greater
than or equal to 1
.


--- layout: default title: MuseScore Downloader description: Download MuseScore downloads without login, and free. ---
Due to the changes made on the MuseScore side, this tool is now not working and has been deprecated.
Please use other services to download from MuseScore. As a recommendation, check out dl-librescore or app-librescore.


|
inputEx is an open-source javascript framework to build fields and forms for web applications using the YUI library. AboutAll the fields and forms are configured using JSON or created in Javascript. It provides a very efficient abstraction for building interactive web applications. Disclaimer: It is not an unobtrusive library, but has much more to see! For detailed informations, have a look at our complete documentation. It is built on top of the YUI library (2.8.0r4) and supports all major browsers. Please report your specific browser issues in the forum. Developer Tools
|
Download inputex 0.6.0 inputEx is released under the MIT License. Clone from GitHub: git clone git://github.com/neyric/inputex.git DocumentationHere are some starting points for our documentation :
Most of the documentation on fields options is in the examples below : |
Community |
|
inputEx is released under the MIT license.


Poached pears with ricotta and hazelnuts recipe
by Angela HartnettThis poached pear dessert makes an elegant dinner party pudding. It's simple to make and only takes about half an hour to whip up.
Prep time: 15 minutes | Cooking time: 15 minutes
SERVES
Five
INGREDIENTS
For the stock syrup:
- 500ml water
- 300g caster sugar
- Juice of ½ lemon
- 1 wide strip lemon zest
- 1 wide strip orange zest
- 1 star anise
- 2.5cm piece fresh ginger, peeled
For the pears:
- 5 William or conference pears
- 400g ricotta (I use Westcombe’s, made in Somerset)
- 175g mascarpone
- 100g icing sugar
- Grated zest of ½ lemon
- 50g toasted hazelnuts, skins rubbed off, roughly chopped
METHOD
- Put all the ingredients for the stock syrup into a saucepan and bring to the boil.
- Reduce to a simmer and stir until the sugar has dissolved. Remove from the heat and allow to infuse while it cools. This can be kept in the fridge until you need it.
- Peel and carefully core each pear, leaving them whole and ideally with the stalks on. Lay them in a pan, along with the stock syrup.
- Cover with a circle of parchment paper and sit a plate (smaller than the circumference of the pan) on top – this keeps the pears in the syrup while they cook.
- Bring to the boil then turn down to a simmer and cook for 10 minutes, or a little less if the pears are really ripe – check them with the tip of a knife. Remove from the heat and allow to cool in the syrup.
- Beat the ricotta a little just to loosen, then mix in the mascarpone and icing sugar, beating to a smooth silky texture. Mix in the lemon zest.
- To serve, spread the ricotta on five plates. Sit a pear in each one, with a touch of the cooking liquid. Finish with the chopped hazelnuts.


Enter one or more keywords to search for using the Zoom Search Engine. Note that '*' and '?' wildcards are supported.


I am Arnold Labastilla, WEB DEVELOPER. I create competitive websites, and analyze web systems based on your requirements.


--- layout: page title: Grade 6-12 ---
We exist to encourage and partner with the parents of Jr./Sr. High students to help guide kids through their spiritual journey. Our desire is to see students empowered with the message of the gospel so that they find their identity and security in Christ alone. We meet every Wednesday night to build up and encourage one another with a biblical message so our students can stand firm in their faith and be leaders on our campuses and in our neighborhoods and…. just because its fun!!! On Sunday mornings the Jr. High & Sr. High students attend church with their parents.
{% include header.html level='2' banner=true children='We meet every Wednesday!' %} {% for group in site.data.smallGroups.youth %}{{ group.time }}- {{ group.people }}- {{ group.address}}
{% endfor %}Grab your friends and meet us next Wednesday as we continue learning who Jesus really was and is-and how this changes everything. Join in with students your age for crazy games and encouraging Bible study!
{% include events.html title="Events" category="grades-6-12" %} {% include header.html level='2' banner=true children='Youth Leaders' %}Keely Williams - Youth Director
Small Group Leaders - Kelly McGee, Rebecca Harris, and Rachael Coleman
{% include header.html level='2' banner=true children='Photos' %} {% include flickr.html albumId='72157652789307104' coverImage='https://c1.staticflickr.com/5/4185/34566550455_64630617dc_z.jpg' %}


This was my website for 10 years. It served as a testing ground for most ideas that I ended up using (or not) in my other web-based projects. The name is a paraphrase of The Lord of the Rings, of course.


mcsm contains a collection of functions that allows the reenactment of the R programs used in the book EnteR Monte Carlo Methods without further programming. Programs being available as well, they can be modified by the user to conduct one's own simulations.
| Version: | 1.0 |
| Depends: | stats, MASS, coda |
| Published: | 2009-04-28 |
| Author: | Christian P. Robert, Universite Paris Dauphine |
| Maintainer: | Christian P. Robert <xian at ceremade.dauphine.fr> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | no |
| CRAN checks: | mcsm results |
| Reference manual: | mcsm.pdf |
| Package source: | mcsm_1.0.tar.gz |
| Windows binaries: | r-devel: mcsm_1.0.zip, r-release: mcsm_1.0.zip, r-oldrel: mcsm_1.0.zip |
| OS X binaries: | r-release: mcsm_1.0.tgz, r-oldrel: mcsm_1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=mcsm to link to this page.


The World Wide Web
The world wide web is the world’s largest network. It consists of about 30 billion webpages, which are all based on HTML (= hypertext markup language). These pages are stored on servers all over the world, which connect to the world wide web through HTTP. The world wide web can be accessed by end users through internet browsers on their PC.
HTML
HTML is based on several key elements:
- Text content = what you see
- Markup = what it looks like
The markup is based on tags, which always come in pairs, an opening tag and a closing tag (except for void tags, which come alone)
=> They always use the same structure: < name > content< /name >
- References to other documents (e.g. images, videos, etc ...)
- Links to other pages
keywords
Attributes always equal a value and enrich tags
Anchor tags create links => < a href=”www.udacity.com”>content
Image Tag < img src=”url” alt=”text” >
=> alt=”text” is displayed when image doesn’t load
img src=”url” links to the image location
VOID Tag = tags without a closing tag
Whitespace < br > stands for break (=void tag) => enter it to jump to another line, two < br > breaks signifies two line breaks
Paragraph no void tag - < p > content < /p >
Inline tagse.g. < br > tag => just text (other ex. < b > < em > < img >< span >)
Block tags e.g. < p >< /p > =>creates a real block


{% extends "base.html" %} {% block title %}
Medieval catalogues > SECULAR INSTITUTIONS: Secular Colleges > Eton College
{% endif %}
All data was derived from the List of Identifications by Professor Richard Sharpe.
{% if not printing %}
A key to codes used in the List is available (opens in new tab).{% endif %}


new MediaModule(domElement)
Handles the display of media
Parameters:
| Name | Type | Description |
|---|---|---|
domElement |
domElement | The container of the module |
- Source:
Methods
addMedia(media)
Adds a media to the list of Media the module can display
Parameters:
| Name | Type | Description |
|---|---|---|
media |
Media | The Media to be displayed later |
- Source:
availableCommands() → {string}
Is used by the ScenarioPlayer to register the commands this module can handle
- Source:
Returns:
[] - An array of the supported commands
- Type
- string
clear()
Clears the media module
- Source:
hide()
Removes the module's node from the dom
- Source:
isLoaded() → {bool}
Returns true if the module has finished loading, false otherwise
- Source:
Returns:
- The state of the module
- Type
- bool
load(caller, caller)
Loads the MediaModule
Parameters:
| Name | Type | Description |
|---|---|---|
caller |
object | The caller of the method. |
caller |
function | The callback that will be called when loaded. |
- Source:
performCommand()
Is used by the ScenarioPlayer to execute the commands
- Source:
setMedia(media)
Sets the currently displayed Media
Parameters:
| Name | Type | Description |
|---|---|---|
media |
Media | The media to be displayed |
- Source:
show()
Inserts the module's node into the dom
- Source:


Contents
This is a design document detailing the proposed changes to the upgrade process, in order to allow it to be more automatic.
Ganeti requires to run the same version of Ganeti to be run on all nodes of a cluster and this requirement is unlikely to go away in the foreseeable future. Also, the configuration may change between minor versions (and in the past has proven to do so). This requires a quite involved manual upgrade process of draining the queue, stopping ganeti, changing the binaries, upgrading the configuration, starting ganeti, distributing the configuration, and undraining the queue.
While we will not remove the requirement of the same Ganeti version running on all nodes, the transition from one version to the other will be made more automatic. It will be possible to install new binaries ahead of time, and the actual switch between versions will be a single command.
While changing the file layout anyway, we install the python code, which is architecture independent, under ${prefix}/share, in a way that properly separates the Ganeti libraries of the various versions.
Currently, Ganeti installs to ${PREFIX}/bin, ${PREFIX}/sbin, and so on, as well as to ${pythondir}/ganeti.
These paths will be changed in the following way.
The set of links for ganeti binaries might change between the versions. However, as the file structure under ${libdir}/ganeti/${VERSION} reflects that of /, two links of differnt versions will never conflict. Similarly, the symbolic links for the python executables will never conflict, as they always point to a file with the same basename directly under ${PREFIX}/share/ganeti/default. Therefore, each version will make sure that enough symbolic links are present in ${PREFIX}/bin, ${PREFIX}/sbin and so on, even though some might be dangling, if a differnt version of ganeti is currently active.
The extra indirection through ${sysconfdir} allows installations that choose to have ${sysconfdir} and ${localstatedir} outside ${PREFIX} to mount ${PREFIX} read-only. The latter is important for systems that choose /usr as ${PREFIX} and are following the Filesystem Hierarchy Standard. For example, choosing /usr as ${PREFIX} and /etc as ${sysconfdir}, the layout for version 2.10 will look as follows.
/
|
+-- etc
| |
| +-- ganeti
| |
| +-- lib -> /usr/lib/ganeti/2.10
| |
| +-- share -> /usr/share/ganeti/2.10
+-- usr
|
+-- bin
| |
| +-- harep -> /usr/lib/ganeti/default/usr/bin/harep
| |
| ...
|
+-- sbin
| |
| +-- gnt-cluster -> /usr/share/ganeti/default/gnt-cluster
| |
| ...
|
+-- ...
|
+-- lib
| |
| +-- ganeti
| |
| +-- default -> /etc/ganeti/lib
| |
| +-- 2.10
| |
| +-- usr
| |
| +-- bin
| | |
| | +-- htools
| | |
| | +-- harep -> htools
| | |
| | ...
| ...
|
+-- share
|
+-- ganeti
|
+-- default -> /etc/ganeti/share
|
+-- 2.10
|
+ -- gnt-cluster
|
+ -- gnt-node
|
+ -- ...
|
+ -- ganeti
|
+-- backend.py
|
+-- ...
|
+-- cmdlib
| |
| ...
...
The actual upgrade process will be done by a new command upgrade to gnt-cluster. If called with the option --to which take precisely one argument, the version to upgrade (or downgrade) to, given as full string with major, minor, suffix, and suffix. To be compatible with current configuration upgrade and downgrade procedures, the new version must be of the same major version and either an equal or higher minor version, or precisely the previous minor version.
When executed, gnt-cluster upgrade --to=<version> will perform the following actions.
During the upgrade procedure, the only ganeti process still running is the one instance of gnt-cluster upgrade. This process is also responsible for eventually removing the queue drain. Therefore, we have to provide means to resume this process, if it dies unintentionally. The process itself will handle SIGTERM gracefully by either undoing all changes done so far, or by ignoring the signal all together and continuing to the end; the choice between these behaviors depends on whether change of the configuration has already started (in which case it goes through to the end), or not (in which case the actions done so far are rolled back).
To achieve this, gnt-cluster upgrade will support a --resume option. It is recommended to have gnt-cluster upgrade --resume as an at-reboot task in the crontab. The gnt-cluster upgrade --resume comand first verifies that it is running on the master node, using the same requirement as for starting the master daemon, i.e., confirmed by a majority of all nodes. If it is not the master node, it will remove any possibly existing intend-to-upgrade file and exit. If it is running on the master node, it will check for the existence of an intend-to-upgrade file. If no such file is found, it will simply exit. If found, it will resume at the appropriate stage.
Since gnt-cluster upgrade drains the queue and undrains it later, so any information about a previous drain gets lost. This problem will disappear, once Filtering of jobs for the Ganeti job queue is implemented, as then the undrain will then be restricted to filters by gnt-upgrade.
Since for upgrades we only pause jobs and do not fully drain the queue, we need to be able to transform the job queue into a queue for the new version. The preferred way to obtain this is to keep the serialization format backwards compatible, i.e., only adding new opcodes and new optional fields.
However, even with soft drain, no job is running at the moment cfgupgrade is running. So, if we change the queue representation, including the representation of individual opcodes in any way, cfgupgrade will also modify the queue accordingly. In a jobs-as-processes world, pausing a job will be implemented in such a way that the corresponding process stops after finishing the current opcode, and a new process is created if and when the job is unpaused again.


Swedes work the most, Italians the fewest years
by EUobserverAccording to a Eurostat study, Swedes of 15 years old will have an average working life of 41.9 years, the longest of all European Union countries. Young Italians will have to work 31.8 years, or more than 10 years less. The Netherlands closely followed Sweden, but in Iceland, not an EU country, 15-year olds face a future working life of 46 years. In Turkey that will be only 29 years.


# -*- coding: utf-8 -*-
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import time
from googleapiclient.discovery import build
from airflow import AirflowException
from airflow.contrib.hooks.gcp_api_base_hook import GoogleCloudBaseHook
# Number of retries - used by googleapiclient method calls to perform retries
# For requests that are "retriable"
NUM_RETRIES = 5
# Time to sleep between active checks of the operation results
TIME_TO_SLEEP_IN_SECONDS = 1
class CloudSqlOperationStatus:
PENDING = "PENDING"
RUNNING = "RUNNING"
DONE = "DONE"
UNKNOWN = "UNKNOWN"
# noinspection PyAbstractClass
[docs]class CloudSqlHook(GoogleCloudBaseHook):
"""
Hook for Google Cloud SQL APIs.
"""
_conn = None
def __init__(self,
api_version,
gcp_conn_id='google_cloud_default',
delegate_to=None):
super(CloudSqlHook, self).__init__(gcp_conn_id, delegate_to)
self.api_version = api_version
[docs] def get_conn(self):
"""
Retrieves connection to Cloud SQL.
:return: Google Cloud SQL services object.
:rtype: dict
"""
if not self._conn:
http_authorized = self._authorize()
self._conn = build('sqladmin', self.api_version,
http=http_authorized, cache_discovery=False)
return self._conn
[docs] def get_instance(self, project_id, instance):
"""
Retrieves a resource containing information about a Cloud SQL instance.
:param project_id: Project ID of the project that contains the instance.
:type project_id: str
:param instance: Database instance ID. This does not include the project ID.
:type instance: str
:return: A Cloud SQL instance resource.
:rtype: dict
"""
return self.get_conn().instances().get(
project=project_id,
instance=instance
).execute(num_retries=NUM_RETRIES)
[docs] def create_instance(self, project_id, body):
"""
Creates a new Cloud SQL instance.
:param project_id: Project ID of the project to which the newly created
Cloud SQL instances should belong.
:type project_id: str
:param body: Body required by the Cloud SQL insert API, as described in
https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/insert#request-body
:type body: dict
:return: True if the operation succeeded, raises an error otherwise
:rtype: bool
"""
response = self.get_conn().instances().insert(
project=project_id,
body=body
).execute(num_retries=NUM_RETRIES)
operation_name = response["name"]
return self._wait_for_operation_to_complete(project_id, operation_name)
[docs] def patch_instance(self, project_id, body, instance):
"""
Updates settings of a Cloud SQL instance.
Caution: This is not a partial update, so you must include values for
all the settings that you want to retain.
:param project_id: Project ID of the project that contains the instance.
:type project_id: str
:param body: Body required by the Cloud SQL patch API, as described in
https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/patch#request-body
:type body: dict
:param instance: Cloud SQL instance ID. This does not include the project ID.
:type instance: str
:return: True if the operation succeeded, raises an error otherwise
:rtype: bool
"""
response = self.get_conn().instances().patch(
project=project_id,
instance=instance,
body=body
).execute(num_retries=NUM_RETRIES)
operation_name = response["name"]
return self._wait_for_operation_to_complete(project_id, operation_name)
[docs] def delete_instance(self, project_id, instance):
"""
Deletes a Cloud SQL instance.
:param project_id: Project ID of the project that contains the instance.
:type project_id: str
:param instance: Cloud SQL instance ID. This does not include the project ID.
:type instance: str
:return: True if the operation succeeded, raises an error otherwise
:rtype: bool
"""
response = self.get_conn().instances().delete(
project=project_id,
instance=instance,
).execute(num_retries=NUM_RETRIES)
operation_name = response["name"]
return self._wait_for_operation_to_complete(project_id, operation_name)
[docs] def get_database(self, project_id, instance, database):
"""
Retrieves a database resource from a Cloud SQL instance.
:param project_id: Project ID of the project that contains the instance.
:type project_id: str
:param instance: Database instance ID. This does not include the project ID.
:type instance: str
:param database: Name of the database in the instance.
:type database: str
:return: A Cloud SQL database resource, as described in
https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases#resource
:rtype: dict
"""
return self.get_conn().databases().get(
project=project_id,
instance=instance,
database=database
).execute(num_retries=NUM_RETRIES)
[docs] def create_database(self, project, instance, body):
"""
Creates a new database inside a Cloud SQL instance.
:param project: Project ID of the project that contains the instance.
:type project: str
:param instance: Database instance ID. This does not include the project ID.
:type instance: str
:param body: The request body, as described in
https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases/insert#request-body
:type body: dict
:return: True if the operation succeeded, raises an error otherwise
:rtype: bool
"""
response = self.get_conn().databases().insert(
project=project,
instance=instance,
body=body
).execute(num_retries=NUM_RETRIES)
operation_name = response["name"]
return self._wait_for_operation_to_complete(project, operation_name)
[docs] def patch_database(self, project, instance, database, body):
"""
Updates a database resource inside a Cloud SQL instance.
This method supports patch semantics.
See: https://cloud.google.com/sql/docs/mysql/admin-api/how-tos/performance#patch
:param project: Project ID of the project that contains the instance.
:type project: str
:param instance: Database instance ID. This does not include the project ID.
:type instance: str
:param database: Name of the database to be updated in the instance.
:type database: str
:param body: The request body, as described in
https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases/insert#request-body
:type body: dict
:return: True if the operation succeeded, raises an error otherwise
:rtype: bool
"""
response = self.get_conn().databases().patch(
project=project,
instance=instance,
database=database,
body=body
).execute(num_retries=NUM_RETRIES)
operation_name = response["name"]
return self._wait_for_operation_to_complete(project, operation_name)
[docs] def delete_database(self, project, instance, database):
"""
Deletes a database from a Cloud SQL instance.
:param project: Project ID of the project that contains the instance.
:type project: str
:param instance: Database instance ID. This does not include the project ID.
:type instance: str
:param database: Name of the database to be deleted in the instance.
:type database: str
:return: True if the operation succeeded, raises an error otherwise
:rtype: bool
"""
response = self.get_conn().databases().delete(
project=project,
instance=instance,
database=database
).execute(num_retries=NUM_RETRIES)
operation_name = response["name"]
return self._wait_for_operation_to_complete(project, operation_name)
def _wait_for_operation_to_complete(self, project_id, operation_name):
"""
Waits for the named operation to complete - checks status of the
asynchronous call.
:param project_id: Project ID of the project that contains the instance.
:type project_id: str
:param operation_name: name of the operation
:type operation_name: str
:return: response returned by the operation
:rtype: dict
"""
service = self.get_conn()
while True:
operation_response = service.operations().get(
project=project_id,
operation=operation_name,
).execute(num_retries=NUM_RETRIES)
if operation_response.get("status") == CloudSqlOperationStatus.DONE:
error = operation_response.get("error")
if error:
# Extracting the errors list as string and trimming square braces
error_msg = str(error.get("errors"))[1:-1]
raise AirflowException(error_msg)
# No meaningful info to return from the response in case of success
return True
time.sleep(TIME_TO_SLEEP_IN_SECONDS)


I recently showed my students an image-art project that I had worked on using D3.js, and on of them asked,
Can you do that with R?
So, I figured it was worth a try. This tutorial walks through the R code necessary to use random sampling to generate data art from image files in R. Read on, or check out the code on GitHub.
In order to do image manipulation in R, you’ll (of course), need to load an image into your environment. I found that the imagr
package was well suited for this type of loading (and other types of image processing – see the documentation for more information):
# Load an image into R (make sure your working directory is set!)
# Packages (for the entire project)
library(imager) # image loading and processing
library(dplyr) # data manipulation
library(ggplot2) # data visualization
library(tidyr) # data wrangling
library(ggvoronoi) # visualization
# Load an image into R
img <- load.image(file = "imgs/spain-graffiti-cropped.jpg")
# Print the image object out
print(img)
## Image. Width: 936 pix Height: 914 pix Depth: 1 Colour channels: 3
To view the image itself, you can use the plot()
function (this image was downloaded from pixabay):
# View the image
plot(img)
In order to manipulate this image in a data-driven way, we’ll need to represent it as a data frame. Luckily, we can do this using the as.data.frame()
method to accomplish this:
# Represent the image as a data frame
img_df <- as.data.frame(img)
# Show a table of the first 10 rows of the data frame
img_df %>%
arrange(x, y, cc) %>% # sort by columns for viewing
filter(row_number() < 10) %>% # Select top 10 columns
kable("html") %>% # Display table in R Markdown
kable_styling(full_width = F) # Don't take up full width
| x | y | cc | value |
|---|---|---|---|
| 1 | 1 | 1 | 0.3803922 |
| 1 | 1 | 2 | 0.1450980 |
| 1 | 1 | 3 | 0.0431373 |
| 1 | 2 | 1 | 0.3607843 |
| 1 | 2 | 2 | 0.1254902 |
| 1 | 2 | 3 | 0.0235294 |
| 1 | 3 | 1 | 0.3803922 |
| 1 | 3 | 2 | 0.1450980 |
| 1 | 3 | 3 | 0.0431373 |
These four columns describe how to draw the image:
x
: The horizontal position of a point (pixel) of the imagey
: The vertical position of a point (pixel) of the imagecc
: The color channel being represented: 1 (red), 2 (green), 3 (blue)value
: The value of the color channel, on a scale from 0 to 1.Thus, the first three rows describe the color of the point in the top left corner of the image. Using the rbg
function, this color is rgb(0.788, 0.537, 0.294)
, which is this color.
In order to draw the image more easily using familiar graphing packages (such as ggplot2
), we’ll need to reshape this data frame so that each row represents a single pixel. This can be done using the helpful spread()
function from the tidyr
package:
# Add more expressive labels to the colors
img_df <- img_df %>%
mutate(channel = case_when(
cc == 1 ~ "Red",
cc == 2 ~ "Green",
cc == 3 ~ "Blue"
))
# Reshape the data frame so that each row is a point
img_wide <- img_df %>%
select(x, y, channel, value) %>%
spread(key = channel, value = value) %>%
mutate(
color = rgb(Red, Green, Blue)
)
Using the rgb()
function above, we’re able to compute the color
for each point by combining the specified amounts of Red
, Green
, and Blue
(resulting in this data frame):
| x | y | Blue | Green | Red | color |
|---|---|---|---|---|---|
| 1 | 1 | 0.0431373 | 0.1450980 | 0.3803922 | #61250B |
| 1 | 2 | 0.0235294 | 0.1254902 | 0.3607843 | #5C2006 |
| 1 | 3 | 0.0431373 | 0.1450980 | 0.3803922 | #61250B |
| 1 | 4 | 0.0509804 | 0.1450980 | 0.3803922 | #61250D |
| 1 | 5 | 0.0470588 | 0.1411765 | 0.3686275 | #5E240C |
| 1 | 6 | 0.0705882 | 0.1568627 | 0.3843137 | #622812 |
| 1 | 7 | 0.0588235 | 0.1490196 | 0.3686275 | #5E260F |
| 1 | 8 | 0.0352941 | 0.1294118 | 0.3411765 | #572109 |
| 1 | 9 | 0.0431373 | 0.1294118 | 0.3333333 | #55210B |
ggplot2
RenderingNow that we have a single row for each point, we should be able to re-create the image using ggplot2
:
# Plot points at each sampled location
ggplot(img_wide) +
geom_point(mapping = aes(x = x, y = y, color = color)) +
scale_color_identity() # use the actual value in the `color` column
Using a few plotting options, we can remove the axes and orient the image properly:
ggplot(img_wide) +
geom_point(mapping = aes(x = x, y = y, color = color)) +
scale_color_identity() + # use the actual value in the `color` column
scale_y_reverse() + # Orient the image properly (it's upside down!)
theme_void() # Remove axes, background
Now, if we want to begin using randomness to create an abstract or artistic(?) representation of the image, we’ll have to sample only specific rows of the data:
# Take a sample of rows from the data frame
sample_size <- 2000
img_sample <- img_wide[sample(nrow(img_wide), sample_size), ]
# Plot only the sampled points
ggplot(img_sample) +
geom_point(mapping = aes(x = x, y = y, color = color)) +
scale_color_identity() + # use the actual value in the `color` column
scale_y_reverse() + # Orient the image properly (it's upside down!)
theme_void() # Remove axes, background
We can add another dimension of randomness by distorting the size using a randomly drawn value:
# Create random weights for point size
img_sample$size <- runif(sample_size)
# Plot only the sampled points
ggplot(img_sample) +
geom_point(mapping = aes(x = x, y = y, color = color, size = size)) +
guides(size = FALSE) + # don't show the legend
scale_color_identity() + # use the actual value in the `color` column
scale_y_reverse() + # Orient the image properly (it's upside down!)
theme_void() # Remove axes, background
Alternatively, you could use an element of the data (such as the amount of Blue
in each point) to determine the size:
# Use the amount of blue present in each point to determine the size
ggplot(img_sample) +
geom_point(mapping = aes(x = x, y = y, color = color, size = Blue)) +
guides(size = FALSE) + # don't show the legend
scale_color_identity() + # use the actual value in the `color` column
scale_y_reverse() + # Orient the image properly (it's upside down!)
theme_void() # Remove axes, background
A Voronoi Diagram is “a partitioning of a plane into regions based on distance to points in a specific subset of the plane” (Wikipedia). In other words, each area on the plane is determined by the nearest point. We can use this method (specifically, the ggvoronoi
package) to represent the same image as a series of areas:
# Create a Voronoi Diagram of the sampled points
ggplot(img_sample) +
geom_voronoi(mapping = aes(x = x, y = y, fill = color)) +
scale_fill_identity() +
scale_y_reverse() +
theme_void()
To amplify patterns at edges of objects in the image, we can use the cannyEdges
function to detect edges in the image:
# Detect edges in the image
edges <- cannyEdges(img)
## Warning in cannyEdges(img): Running Canny detector on luminance channel
# Display the edges
plot(edges)
We can then again leverage a data frame representation of the image (in this case, the edges) to sample the image more heavily in these contrast areas. In order to do so, we’ll need to extract the data as a data frame and join it to our image data:
# Convert the edge image to a data frame for manipulation
edges_df <- edges %>%
as.data.frame() %>%
select(x, y) %>% # only select columns of interest
distinct(x, y) %>% # remove duplicates
mutate(edge = 1) # indicate that these observations represent an edge
Once we have this representation of the data, we can use it to weight the sampling of points in the image:
# Join on the edges data
img_wide <- img_wide %>%
left_join(edges_df)
# Apply a low weight to the non-edge points
img_wide$edge[is.na(img_wide$edge)] <- .05
# Re-sample from the image, applying a higher probability to the edge points
img_edge_sample <- img_wide[sample(nrow(img_wide), sample_size, prob = img_wide$edge), ]
Using these re-sampled edges, we can create more intensified images:
# Re-create the voronoi diagram with the re-sampled data
ggplot(img_edge_sample) +
geom_voronoi(mapping = aes(x = x, y = y, fill = color)) +
scale_fill_identity() +
guides(fill = FALSE) +
scale_y_reverse() +
theme_void() # Remove axes, background
# Re-create the scatter plot with the re-sampled data (add random sizing of circles)
ggplot(img_edge_sample) +
geom_point(mapping = aes(x = x, y = y, color = color, size = edge * runif(sample_size))) +
guides(fill = FALSE, size= FALSE) +
scale_color_identity() +
scale_y_reverse() +
theme_void() # Remove axes, background
This explanation was built by Michael Freeman, a faculty member at the University of Washington Information School.
If you like this explanation (and are excited about learning R
code) check out my new book, Programming Skills for Data Science.


Jack Porter is a senior film major at Columbia College Chicago. He is currently finishing his undergraduate degree and will be pursuing a graduate degree in screenwriting in fall 2019. He has a love of cult cinema; the weirder the better. His love for storytelling is only matched by his love of film criticism. He is particularly interested in the prevalence of genre filmmaking in modern cinema.


Appendix A. Emacs Variables
This appendix lists some Emacs variables. We chose them for their
general usefulness and for their applicability to subjects in this
book.
The variables below are grouped by category, and their default values
are shown (where practical to do so). For more details on specific
variables, see the chapters referred to at the beginning of each
table. For
information on variables used in
programming language modes, see Chapter 9.
Table A-1. Backups, auto-save, and versioning (Chapter 2, Chapter 12)|
Variable
|
Default
|
Description
|
|---|
|
make-backup-files
|
t
|
If t, create a backup version of the
current file before saving it for the first time.
| |
backup-by-copying
|
nil
|
If t, create backup files by
copying rather than
renaming the file being saved to a backup
version. The default is renaming, which is more efficient. Copying
can yield different results, especially when you're
editing files owned by another user, and in operating systems that
allow "hard links" to files
(alternate names that are associated with the physical file). There
are a raft of variables that can tweak this behavior based on
context; check the online help for make-backup-files for the details.
| |
version-control
|
nil
|
If t, create numbered versions of
files as backups (with names of the form
filename~N~). If nil, only do this for files that have numbered
versions already. If 'never (note
the leading single quote), never make numbered versions.
| |
kept-new-versions
|
2
|
Number of latest versions of a file to keep when a new numbered
backup is made.
| |
kept-old-versions
|
2
|
Number of oldest versions of a file to keep when a new numbered
backup is made.
| |
delete-old-versions
|
nil
|
If t, delete excess versions (not
those kept according to the above variables) without asking for
confirmation first. If nil, ask for
confirmation first. If any other value, don't delete
excess versions.
| |
auto-save-default
|
t
|
If t, do auto-saving of every file
visited.
| |
auto-save-visited-file-name
|
nil
|
If t, auto-save to the file being
visited rather than to a special auto-save file.
| |
auto-save-interval
|
300
|
Number of keystrokes between auto-saving; if 0, turn off auto-saving.
| |
auto-save-timeout
|
30
|
Length of time of inactivity after which Emacs auto-saves. If
nil or 0, turn off this feature.
| |
delete-auto-save-files
|
t
|
Non-nil means delete auto-save files
whenever the "real" file is saved.
| |
buffer-offer-save
|
nil
|
Non-nil means offer to save the
current buffer when exiting Emacs, even if the buffer is not a file.
| |
vc-handled-backends
|
(RCS CVS SVN SCCS Arch MCVS)
|
Version control systems used with the vc package. The order in which they appear in
this list controls the order in which they will be attempted when
working with a new file.
| |
vc-display-status
|
t
|
If non-nil, display the version
number and the locked state in the mode line.
| |
vc-keep-workfiles
|
t
|
If non-nil, do not delete work files
after you register changes with the version control system.
| |
vc-mistrust-permissions
|
nil
|
If non-nil, do not assume that a
file's owner ID and permission flags reflect version
control system's idea of file's
ownership and permission; get this information directly from version
control system.
| |
vc-suppress-confirm
|
nil
|
If non-nil, do not ask for
confirmation before performing version control actions.
| |
vc-initial-comment
|
nil
|
If non-nil, prompt for an initial
comment when registering a file with version control system.
| |
vc-make-backup-files
|
nil
|
If non-nil, make standard Emacs
backups of files registered with version control.
| |
diff-switches
|
-c
|
Command-line switches used to control the format of change reports by
VC as well as diff.el.
|
Table A-2. Searching and replacing (Chapter 3)|
Variable
|
Default
|
Description
|
|---|
|
case-fold-search
|
t
|
If non-nil, treat upper- and
lowercase letters as the same when searching.
| |
case-replace
|
t
|
If non-nil, preserve the original
case of letters when doing replaces (even if case-fold-search is on).
| |
search-upper-case
|
'not-yanks
|
If non-nil, uppercase letters in
search strings defeat case-fold-search (i.e., force search to be
case-sensitive). The symbol 'not-yanks means convert uppercase letters in
yanked text to lowercase.
| |
search-exit-option
|
t
|
If non-nil, any control character
other than those defined in incremental search (Del, C-j,
C-q, C-r, C-s,
C-w, C-y) exits search.
| |
search-highlight
|
t
|
If non-nil, highlight partial search
matches.
| |
query-replace-highlight
|
t
|
If non-nil, highlight matches in
query-replace mode.
|
|
Variable
|
Default
|
Description
|
|---|
|
next-screen-context-lines
|
2
|
Retain this many lines when scrolling forward or backward by
C-v or M-v.
| |
scroll-step
|
0
|
When moving the cursor vertically out of the current window, scroll
this many lines forward or backward. If 0, scroll enough lines to
place the cursor at the center of the window after scrolling.
| |
hscroll-step
|
0
|
When moving the cursor horizontally out of the current window, scroll
this many columns left or right. If 0, scroll enough lines to place
the cursor at the center of the window after scrolling.
| |
tab-width
|
8
|
Width of tab stops; when set, it becomes local to the current buffer.
| |
left-margin
|
0
|
Number of columns to indent when typing C-j in fundamental mode and text mode.
| |
standard-indent
|
4
|
The number of columns to indent when using commands that increase or
decrease margins.
| |
truncate-lines
|
nil
|
If non-nil, do not wrap long lines;
instead, truncate them and use arrows to show that the line continues
off-screen. (Nongraphical versions of Emacs use $ instead to show where the line extends.)
| |
truncate-partial-width-windows
|
t
|
If non-nil, truncate long lines (as
above) in all windows that are not the full width of the display.
| |
window-min-height
|
4
|
Minimum allowable height of windows (in lines).
| |
window-min-width
|
10
|
Minimum allowable width of vertically split windows (in columns).
| |
ctl-arrow
|
t
|
Non-nil means display control
characters using ^X, where
X is the letter being
"controlled." Otherwise, use octal
(base 8) ASCII notation for display—for example, C-h appears as \010 in octal.
| |
display-time-day-and-date
|
nil
|
If non-nil, M-x display-time Enter will also show the day
and date.
| |
line-number-mode
|
t
|
If non-nil, display the line number
on the mode line.
| |
line-number-display-limit
|
nil
|
Maximum size of buffer (in characters) for which line numbers should
be displayed. A value of nil means
no limit.
| |
column-number-mode
|
nil
|
If non-nil, display the column
number on the mode line.
| |
visible-bell
|
nil
|
If non-nil,
"flash" the screen instead of
beeping when necessary.
| |
track-eol
|
nil
|
If non-nil, whenever the cursor is
at the end of the line, "stick" to
the end of the line when moving the cursor up or down; otherwise,
stay in the column where the cursor is.
| |
blink-matching-paren
|
t
|
If non-nil, blink matching open
parenthesis-type character when a corresponding close parenthesis is
typed.
| |
blink-matching-paren-distance
|
25600
|
Maximum number of characters to search through to find a matching
open parenthesis character when a close parenthesis is typed.
| |
blink-matching-delay
|
1
|
Number of seconds to pause when blinking a matching parenthesis.
| |
echo-keystrokes
|
1
|
Echo prefixes for unfinished commands (e.g., C-) in minibuffer after user pauses for this
many seconds; 0 means don't do echoing at all.
| |
insert-default-directory
|
t
|
If non-nil, insert the current
directory in the minibuffer when asking for a filename.
| |
highlight-nonselected-windows
|
nil
|
If non-nil, highlight regions in
windows other than the one currently selected; applies to GUI
displays and others that support highlighting.
| |
mouse-scroll-delay
|
0.25
|
Delay, in seconds, between screen scrolls when mouse is clicked and
dragged from inside a window to beyond its borders. 0 means scroll as
fast as possible.
| |
mouse-scroll-min-lines
|
1
|
Scroll at least this many lines when mouse is clicked and dragged up
or down beyond a window.
|
|
Variable
|
Default
|
Description
|
|---|
|
major-mode
|
fundamental-mode
|
Default mode for new buffers, unless set by virtue of the filename;
when setting this variable, remember to precede the mode name with a
single quote (the value is a symbol).
| |
default-major-mode
|
fundamental-mode
|
The major mode for new buffers.
| |
auto-mode-alist
|
(see Chapter 10)
|
List of associations between filenames and major modes.
| |
interpreter-mode-alist
|
(see Chapter 9)
|
A list similar to auto-mode-alist,
but for interpreted languages like Perl and Python.
| |
indent-tabs-mode
|
t
|
If non-nil, allow the use of tab
characters (as well as spaces) when indenting with C-j. This can really drive other developers
mad, so you should probably disable this if you are working on a
team.
| |
dired-kept-versions
|
2
|
When cleaning a directory in Dired, keep this many versions of files.
| |
dired-garbage-files-regexp
|
"\\.\\(?:aux\\|bak\\|dvi\\|log\\|orig\\|rej\\|toc\\)\\'"
|
Defines what file types are marked when selecting garbage files in
Dired.
| |
dired-listing-switches
|
"-al"
|
Options passed to the ls command for
generating dired listings; should
contain at least "-l".
| |
dired-view-command-alist
|
(see Chapter 10)
|
Defines helper applications for Dired to invoke when opening certain
types of files.
| |
shell-file-name
|
varies
|
Filename of shell to run with functions that use one, such as
list-directory, dired, and compile; taken from value of the Unix
environment variable SHELL.
| |
load-path
| |
List of directories to search for Lisp packages to load (see Chapter 11); often set to lisp
subdirectory of directory where Emacs source code is installed on
your system.
| |
lpr-switches
|
nil
|
Defines command-line options to pass to lpr
| |
calendar-week-start-day
|
0
|
Day defined as first day of the week. 0 is Sunday, 1 is Monday and so
on.
| |
picture-tab-characters
|
"!-~"
|
Characters interpreted as tab stops in picture mode if they appear on
a line of their own.
|
|
Variable
|
Default
|
Description
|
|---|
|
sentence-end
|
(see Chapter 13)
|
Regular expression that matches ends of sentences.
| |
sentence-end-double-space
|
t
|
If non-nil, do not treat single
spaces after periods as ends of sentences.
| |
paragraph-separate
|
"[ \t\f]*$"
|
Regular expression that matches beginnings of lines that separate
paragraphs.
| |
paragraph-start
|
"\f\\|[ \t]*$"
|
Regular expression that matches beginnings of lines that start or
separate paragraphs.
| |
page-delimiter
|
"^\f"
|
Regular expression that matches page breaks.
| |
tex-default-mode
|
'latex-mode
|
Mode to invoke when creating a file that could be either TEX or LATEX.
| |
tex-run-command
|
"tex"
|
Character string used as a command to run in a subprocess on a file
in mode.
| |
latex-run-command
|
"latex"
|
String used as a command to run LATEX in a subprocess.
| |
slitex-run-command
|
"slitex"
|
String used as a command to run SliTEX in a subprocess.
| |
tex-dvi-print-command
|
"lpr -d"
|
Character string used as a command to print a file in tex mode with
C-c C-p.
| |
tex-alt-dvi-print-command
|
"lpr -d"
|
Command to direct .dvi files to a secondary
printer.
| |
tex-dvi-view-command
|
(if (eq window-system 'x) "xdvi" "dvi2tty * |
cat -s")
|
Character string used as command to view a .dvi
output file with C-c C-v; this
expression yields xdvi on X Window systems, and
a terminal-based alternative on others. This will only work if a
Unix-like operating environment is present (such as Mac OS X, or
Cygwin under Windows).
| |
tex-offer-save
|
t
|
If non-nil, offer to save any
unsaved buffers before running TEX.
| |
tex-show-queue-command
|
"lpq"
|
Character string used as command to show the print queue with
C-c C-q in Tex mode.
| |
tex-directory
|
"."
|
Directory for TEX to put temporary files in; default is the current
directory.
| |
outline-regexp
|
"[*\f]+"
|
Regular expression that matches heading lines in outline mode.
| |
outline-heading-end-regexp
|
"\n"
|
Regular expression that matches ends of heading lines in outline mode.
| |
selective-display-ellipses
|
t
|
If t, display "..." in place of
hidden text in outline mode; otherwise don't display
anything.
|
Table A-6. Programming (Chapter 9)|
Variable
|
Default
|
Description
|
|---|
|
compile-command
|
"make -k"
|
Default compilation command to use when compiling files via Emacs
language modes. For example, to set ant as the default compilation
tool, set this to "ant -emacs".
| |
compilation-error-regexp-alist
|
(very long regular expression)
|
Regular expression designed to match error messages from all the
compilers supported by Emacs.
| |
comment-column
|
32
|
The column at which Emacs should insert comments. If code reaches
this column, inserts comment one space beyond code.
| |
comment-multi-line
|
nil
|
If t, continue comment on the next
line. If nil, start a new comment on
the next line.
| |
c-style-alist
|
(see Chapter 9)
|
The code indentation style to use. Many are available; see Chapter 9.
| |
debug-on-error
|
nil
|
If non-nil, emacs will go into debug
mode when an error occurs in evaluating Lisp code. This can be handy
when you're trying out a new function, but you
probably want to read the debugger's help first to
learn your way around.
| |
c-macro-preprocessor
|
"/lib/cpp -C"
|
Defines which command is used to invoke C preprocessor when you type
C-c C-e.
| |
stack-trace-on-error
|
nil
|
If non-nil, Emacs displays a stack
trace when an error occurs in evaluating Lisp code. This is useful in
similar situations as debug-on-error
and might give you enough information without having to learn the
debugger interface.
|
Table A-7. Completion (Chapter 14)|
Variable
|
Default
|
Description
|
|---|
|
completion-auto-help
|
t
|
If non-nil, provide help if a
completion (via Tab or Enter in minibuffer) is invalid or ambiguous.
| |
completion-ignored-extensions
|
(see Chapter 14)
|
List of filename suffixes Emacs ignores when completing filenames
(for example, ~).
| |
completion-ignore-case
|
nil
|
If non-nil, ignore case distinctions
when doing completion.
|
Table A-8. Miscellaneous|
Variable
|
Default
|
Description
|
|---|
|
kill-ring-max
|
60
|
Keep n pieces of deleted text in the kill ring
before deleting oldest kills.
| |
require-final-newline
|
nil
|
If a file being saved is missing a final newline: nil means don't add one;
t means add one automatically;
otherwise ask whether to add a newline.
| |
next-line-add-newlines
|
nil
|
If non-nil, next-line (C-n or down arrow) inserts newlines when at
the end of the buffer, rather than signaling an error.
| |
undo-limit, undo-strong-limit
|
20000, 30000
|
These two variables jointly control how much space Emacs is willing
to allocate to supporting the undo
command. If you ever find yourself wanting to undo more than past
what Emacs remembers, you might want to investigate increasing these
limits; with today's memory sizes they can probably
comfortably be much larger.
| |
mac-command-key-is-meta
|
t
|
If t, the Mac Command key is used for Meta; if nil,
the Option key is Meta instead.
|
|


Earlier this year I moved my little sister from Nashville to LA. On our drive west, we stopped at the Grand Canyon. It was late February and we had been battling the snow since Oklahoma. When we arrived at the Grand Canyon around 9am in the morning, we excitedly went to the first lookout and were met with this view.
The canyon was filled with clouds and snow. You could only make out small areas right below where you were standing. Was the Grand Canyon even there? We spent some time at the visitor center hoping for the clouds to clear. No luck. In fact, watching the video about the Grand Canyon increased our disappointment. This was to be the highlight of our drive and it looked like it was going to turn into a bust. So we went and had lunch. When we came back out, we were in a different place. The clouds had started to clear and before us was a new beauty, a new day.
The altMBA experience is like this too. You come in cloudy. You don’t know what to expect…who you’ll meet…what you’ll learn. All you know is that you are to “trust the process” and you are ready for change. Except instead of waiting and hoping the clouds will clear, you work. You work hard! You write more than you’ve ever written.  You learn to engage others in conversations that push each other forward. You re-discover that there’s power in working with a group of people who share a common goal.
My biggest take aways? Change is possible. Show your work! Be vulnerable. Open yourself up to feedback. Push yourself and those around you to do better.
 “Give it to Mandy, she’ll get it done.” I am no longer just a doer. I am a creator. An idea maker. An encourager. A catalyst for change. I am a ruckus maker.With this renewed confidence in myself, I’m am glad to say that the clouds are lifting and the forecast calls for sunny skies!


16. First Dapp Revisited
First Dapp Revisited
Here we'll look back at the smart contract you created earlier in the lesson. Using the new tools you've learned, we can supercharge this and bring it one step closer to becoming a full dapp.
Objectives
Our goal is to help you do the following things.
- Deploy your smart contract to your local blockchain and web3
- Log information about your contract to the DOM of a simple website using HTML and JavaScript.
1. Deploy to Your Local Blockchain
Connecting the tools you've learned so far is a big part of creating dapps. In the next video, I'll show you how deploy a contract from remix that connects to ganache and your code editor using web3.
16-Deploy-To-Your-Local-Blockchain
Smart Contract code
Here is the code from the smart contract we're using in the video above.
pragma solidity ^0.4.24;
contract Message {
string myMessage;
function setMessage(string x) public {
myMessage = x;
}
function getMessage() public view returns (string) {
return myMessage;
}
}
2. Push Smart Contract Data to a Website
Creating front ends for your application is a great way to your ideas into the hands of your users. Before getting there, you'll first need to see a few of the techniques used to read data into the console of a website. In this video I'll show you one way to do that.
16.2-Smart-Contract-To-A-Website
Video Code
Below is the code from index.html shown in the previous video.
<!DOCTYPE html>

<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Deploy a Remix Contract</title>
<link rel="stylesheet" type="text/css" href="main.css">

Deploy a Remix Contract

First Dapp Revisited
Throughout this concept you brought back your original dapp, connected it to some of the tools you learned throughout the lesson, and even got your first data read to the DOM of a simple website.
Objectives
Skill Tracker
Task Description:
Track the objectives you've feel you've gained the skills to complete.
Task Feedback:
Congratulations on gaining new skills!


Ph.D. Chemical Engineering, The University of Texas at Austin, 2012
M.S.E. Chemical Engineering, The University of Texas at Austin, 2010
B.S. Chemical Engineering, The Pennsylvania State University, 2007
Publications via Google Scholar
Orcid
ResearcherID
Prospective graduate students interested in joining the group should indicate their interest when applying for admission to the Department of Chemical Engineering at U.Va.
Undergraduate students interested in research opportunities should contact Prof. Geise directly to discuss possible projects and conditions for joining the group.


Announcements
Upcoming Events
Featured Videos
We are what we repeatedly do. Excellence, then, is not an act but a habit.
The expert in anything was once the beginner.
Success is the sum of small efforts, repeated day in and day out.
In a world where you can be anything, be kind.
You don't have to be great to start, but you have to start in order to be great.
The secret of success is to do the common things uncommonly well.


A week before I was going to try it, I picked up 8 packets of morning glory seeds from a local grocery store. I got 5 packets of Heavenly Blues, two Flying Saucers, and one Pearly Gates. When I got home, I emptied all the seeds into a wire strainer and rinsed them repeatedly with dishsoap and water. I spread them out on a paper towel and let them dry. That night I ground the seeds up in a coffee mill and dumped the pulp into a mason jar. I then added enough Naphtha (Zippo lighter fluid is a good source) to submerge the pulp and screwed on the lid. I let this soak for two days, shaking every now and then.
On the third day, I poured the mixture through a Bunn coffee filter. Bunn filters work by gravity alone unlike some other coffee filters that require steam pressure from the coffee pot. After I squeezed out all the naphtha that I could, I flattened the filter and spread the pulp out on it to let it dry. Three days later I was left with a fine grayish powder, and the petroleum smell had disapated. I then dumped the pulp back into the mason jar (after I cleaned it out), and this time covered it with about four shots of 151 rum. I let this sit for a day, again shaking occasionally, and then poured this mixture through another filter. The resulting rum mixture I saved.
The next night was a Friday, so I took my magic rum mix over to a friends house. Like me, nobody there had any experience with morning glory and were a little weary, so I decided to be the lone guinea pig. I first mixed up a small shot into a rum and coke and drank it down. I waited about half an hour, then drank another slightly larger shot in orange juice. We all sat down to watch movies. The effects came on slow and were minimal. After about an hour I felt tired and dreamy, almost like a marijuana high except my thoughts were clearer. I waited a couple of hours, afraid of having a bad trip, then drank another shot in coke.
At that point, I was afraid that the chemistry that I was so careful with had removed all the good stuff along with the bad stuff.  So, I considered it a waste of about $15 in seeds and asked my friend for a ride home. I think I was clear enough that I could have driven, but I didn't want to risk it. On the short drive to my apartment, I got terrible cotton mouth. I also started feeling really tired. Visuals were still very limited, so much so that I wasn't sure if it was placebo effect or not. Then I noticed that I had lost some depth perception. Climbing the stairway up to my apartment, I realized that I had lost my sense of balance. It was like I was drunk, but clear enough in the head to be frustrated at my stumbling. I party pretty hard and I'm a big guy, so the amount of rum that I had would normally be barely enough to give me a buzz.
After I got to my apartment, things get really hazy. The few memory fragments I have are so jumbled that I'm not really sure what happened.  My folded socks were out of the drawer and strewn all over my living room. Everything on my cluttered desk was now all over the floor. I was sleeping only under a blanket, my sheets were hanging up on the bathroom door. My bedroom floor was wet and my bathroom floor was green, I later found out to be spilled mouthwash. I later found the empty mouthwash bottle in my microwave. I saw blood on my bed and found a large gash running across my thigh. The water glass that I always keep near my bed had a mysterious green bottle cap in it. It took me a week to find out that it was to my rice wine vinegar. Apparently I opened a new bottle, drank or poured out some of it or who knows what, and put the cap in my glass.
All this was at least tolerable, comparable to a very heavy night of drinking. That isn't why I'll never do this again. When I woke up, I realized that I couldn't read my watch. No matter how hard I tried, I couldn't focus my eyes. It was one of the scariest moments of my life. I was effectively blind to things at close distance. I could make out blurry images, but I couldn't even see well enough to make breakfast. Strangely, if I looked out the window in the distance, everything was clear. This wore off gradually over three days.
So, for three days I couldn't read and I certainly couldn't drive. Over that time, I recovered a few memories from that night. I remember tripping and falling over my dog's wire kennel, which must have been where the cut on my leg came from. I also remember sitting in on the bathroom floor in the fetal position crying because I heard angelic music. I'm pretty sure that while I was on the floor I wasn't getting visuals, but I was very dilusional. I remember thinking that I was close to death and the music was trying to bring me in. I have a feeling a neighbor was playing music but my mind made up the rest. In any case, blindness and blackouts are not my idea of fun and I'll never do morning glory again.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


|
JibeUnityPlugin
Jibe API Unity
|
Base interface, implemented by all connection classes in jibe.sdk.client.simple. More...
Public Member Functions | |
| bool | canProcessIntent (AndroidJavaObject intent) |
| Checks whether a given intent matches this type of simple connection. | |
| string | getRemoteUserDisplayName () |
| Returns the display name (if available) of the remote user. | |
| string | getRemoteUserId () |
| Returns the userId (phone number/SIP URI) of the remote user. | |
| long | getSessionId () |
| Returns the ID of the SIP session underpinning the connection, for use with the low-level APIs. | |
| string | getState () |
| Returns the state of the current connection as defined in SimpleConnectionState. | |
| bool | isStarted () |
| Checks whether the connection has been established successfully, end-to-end, in which case all signaling has been set up, and media data is ready to flow. | |
| void | monitor (AndroidJavaObject intent) |
| Monitor an incoming connection. | |
| void | reject (AndroidJavaObject intent) |
| Rejects an incoming connection. | |
| void | setAutoAccept (bool autoAccept) |
| Specify whether incoming connections should be automatically accepted. | |
| void | start (AndroidJavaObject intent) |
| Starts connection from an intent and returns immediately. | |
| void | start (string receiverUserId) |
| Opens a SIP-session-based connection to a remote user. | |
| void | stop () |
| Closes the connection and all of the resources that it uses. | |
| Public Member Functions inherited from SimpleApi | |
| void | dispose () |
| Releases all resources allocated for this object. | |
| bool | isDisposed () |
| Checks whether the connection has been disposed and can no longer be used. | |
| bool | isInitialized () |
| Checks whether the SimpleApi class is ready to be used (i.e. | |
Base interface, implemented by all connection classes in jibe.sdk.client.simple.
*.
| bool SimpleConnection.canProcessIntent | ( | AndroidJavaObject | intent | ) |
Checks whether a given intent matches this type of simple connection.
Can be used to update the application UI upon valid incoming intents prior to calling start(Intent) or reject(Intent)
| incomingIntent | - |
| string SimpleConnection.getRemoteUserDisplayName | ( | ) |
Returns the display name (if available) of the remote user.
| string SimpleConnection.getRemoteUserId | ( | ) |
Returns the userId (phone number/SIP URI) of the remote user.
| long SimpleConnection.getSessionId | ( | ) |
Returns the ID of the SIP session underpinning the connection, for use with the low-level APIs.
| bool SimpleConnection.isStarted | ( | ) |
Checks whether the connection has been established successfully, end-to-end, in which case all signaling has been set up, and media data is ready to flow.
| void SimpleConnection.monitor | ( | AndroidJavaObject | intent | ) |
Monitor an incoming connection.
The listener will receive events for this connection without making changes to its state.
| incomingIntent | - Intent which was thrown to notify the client about the incoming connection request. |
| void SimpleConnection.reject | ( | AndroidJavaObject | intent | ) |
Rejects an incoming connection.
incomingIntent - Intent which was thrown to notify the client about the incoming connection request.
| void SimpleConnection.setAutoAccept | ( | bool | autoAccept | ) |
Specify whether incoming connections should be automatically accepted.
Note that incoming calls will only be auto-accepted if there isn't already another call in progress.
The application's ID needs to be set, via UnityJibeProperties.setAppToAppIdentifier(String, String) , before enabling the auto-accept feature.
| autoAccept | - Set to true, in order to automatically accept incoming connections. |
| void SimpleConnection.start | ( | AndroidJavaObject | intent | ) |
Starts connection from an intent and returns immediately.
Sender side intent (user selects "challenge" inside Jibe Arena): jibe.sdk.client.JibeIntents.ACTION_ARENA_CHALLENGE Receiver side intent: depending on the type of SimpleConnection being used such as: jibe.sdk.client.JibeIntents.ACTION_INCOMING_DATASESSION jibe.sdk.client.JibeIntents.ACTION_INCOMING_CALL jibe.sdk.client.JibeIntents.ACTION_INCOMING_FILETRANSFER If you want to start a connection directly with a phone number or SIP URI on the sender side, see start(String) SimpleConnectionStateListener has to be used, to detect when the connection has been started, or if the connection request fails.
| intent | - Intent with which to start the connection |
| void SimpleConnection.start | ( | string | receiverUserId | ) |
Opens a SIP-session-based connection to a remote user.
Returns immediately. SimpleConnectionStateListener has to be used, to detect when the connection has been started, or if the connection request fails.
| receiverUserId | - The phone number/SIP URI of user you are trying to connect (e.g. +491235678 or<PHONE_NUMBER>) |


Luxurious seven-bedroom farmhouse, Bryn Hall Farm 22 Nov 2019, 16:27 by Rachel Sutherland This luxurious seven-bedroom farmhouse in the heart of the Derbyshire Dales is up for sale on Zoopla and is accepting offers over £2,250,000. Pictured is the principle lounge, downstairs(Image: © 2016 attilio fiumarella) This fully quipped gym comes with the property(Image: Fine & Country/ © 2016 attilio fiumarella) Imagine sitting out on the terrace in the summer(Image: Fine & Country/ © 2016 attilio fiumarella) Views of the Derbyshire Dales from the luxurious seven-bedroom farmhouse(Image: Fine & Country / © 2016 attilio fiumarella) One of the seven spacious bedrooms in the farmhouse(Image: Fine & Country/© 2016 attilio fiumarella) The property has its very own sauna(Image: Fine & Country/© 2016 attilio fiumarella) There are lots of parking spots in the farmhouse(Image: © 2016 attilio fiumarella) Fancy a game of pool?(Image: Fine & Country/© 2016 attilio fiumarella) The impressive Master bedroom(Image: Fine & Country/© 2016 attilio fiumarella) The German fitted breakfast kitchen and dining area with Silestone Quartz floors and work surfaces(Image: Fine & Country/© 2016 attilio fiumarella) This luxurious seven-bedroom farmhouse in the heart of the Derbyshire Dales is up for sale on Zoopla and is accepting offers over £2,250,000(Image: © 2016 attilio fiumarella) One of the10 bathrooms(Image: Fine & Country/© 2016 attilio fiumarella) Take a dip in this beautiful Jacuzzi(Image: Fine & Country/© 2016 attilio fiumarella) This luxurious seven-bedroom farmhouse in the heart of the Derbyshire Dales is up for sale on Zoopla and is accepting offers over £2,250,000(Image: Fine & Country/© 2016 attilio fiumarella) The property's second lounge with French doors out on to a separate rear terrace(Image: © 2016 attilio fiumarella) The tennis court(Image: Fine & Country/© 2016 attilio fiumarella) The farmhouse is built with local stone and brick(Image: Fine & Country /© 2016 attilio fiumarella) This luxurious seven-bedroom farmhouse is situated in the heart of the Derbyshire Dales(Image: Fine & Country/© 2016 attilio fiumarella) The exterior of the garage(Image: Fine & Country/© 2016 attilio fiumarella)


XYZ.Co
(CGI Web UI)
Network
System
Troubleshooting
CGI Web UI
Change Admin Password
User Name:
admin
New Password:
#$=newpasswd#$;
Convert Password:
#$=confirmpasswd#$;
Password must be at least 6 characters which includes 1 number and 1 lower case and 1 upper case letter..
System
Password
Date Time


‘BPCL sale against national interest’
Chennithala flays Union disinvestment policy
by Special CorrespondentLeader of the Opposition Ramesh Chennithala has said that the Modi government is selling out the public sector units to the corporates and all the financial packages declared by Union Finance Minister Nirmala Sitaraman are for the big corporates.
Address a protest rally near the BPCL at Ambalamugal here Monday, Mr. Chennithala, who led the ‘long march’ against divestment of the PSU, said that all the people of the country are against the disinvestment policy of the Centre.
BPCL is one of the top profit-making companies of the government which has assets worth ₹7.5 lakh crore. The government has given a sale price tag of ₹56,000 crore for the company.
Earlier too, under the Vajpayee government, there was a move to divest BPCL shares, which the workers and the Opposition parties had stalled in Parliament and had approached the courts too, he pointed out.


Hidden jewel of sierra nevada valley
Yes, this lovely cottage – Doe Cabin nestled on top of the Sierra Nevada mountains offers excitement for all. Aptly named “Doe Cabin”, Does and Bucks are permanent guests at the greenery around the cabin. Located far away from the busy world, Doe Cabin is a haven for the ones looking for a place settled cozily in nature’s lap.
There's nothing better on a rainy day than to soak in a bubble bath
After all the trekking and hiking, nothing is more warm and welcoming than the cozily furnished Doe Cabin. The cottage has cozy bedrooms.
This kitchen is seasoned with Love
A modern and fully stocked kitchen with all the modern amenities to cook your favourite meal. The patio offers serene views of the Sierra Nevada. After a tired day, have a moonlight dinner on the patio gazing at the stars, just listening to nature. What can be more romantic than a moonlight dinner with stars twinkling on a clear sky.


Sidebar¶
Sidebar
component creates a new sidebar on the left panel in INK editor. It takes a title and icon and creates sidebar accordingly.
Example¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import INKAPI from './inkapi.js'
INKAPI.ready(async () => {
const UI = INKAPI.ui;
const sidebarObj = await UI.create({
type: "Sidebar",
sidebarTitle: "Personal Sidebar",
icon: "./sample.svg",
children: [],
});
console.log(sidebarObj);
});
|
Options¶
Name |
Type |
Description |
|---|---|---|
id? |
|
You can assign a unique id to the component. It will be helpful for listening to events and removing component in future. If |
type |
|
This field should be passed |
sidebarTitle |
|
This will set the title for your sidebar which will be displayed on top of your sidebar content and as a tooltip on the sidebar expand button. |
icon |
|
You can pass your icon source url (relative to the assets folder in your plugin src directory) here. This will set custom icon for the sidebar expand button. It is recommended to use black filled svg. |
layout? |
|
This will create grid like structure for your Sidebar content. you can specify number of columns and rows for the layout. Each children can position themselves using styles field. |
children? |
|
This field takes an array of child component’s JSON, which are to be created in Sidebar content. |