2. Laptop Setup
Objectives
In this lab you will configure your laptop for the workshop. By the end of the module you will:
- Have a local directory or folder to hold all the files required for your dispenser
- Have installed and tested a device driver to communicate with the microcontroller
- Downloaded a command line utility to program (flashed) the microcontroller
- Have an open terminal or command prompt ready to issue commands, and verified that the microcontroller appears as a serial device
The microcontroller is programmed, or flashed, via a USB serial connection from a computer or laptop. Based on the microcontroller chipset, a specific driver is required.
Each persons laptop is unique and the general instructions may not work for a variety of reasons such as having a older version of the driver loaded, insufficient permissions to install, or older versions of Operating Systems. Please ensure that the checkpoint at the end has been completed prior to starting the next lab. If you run into problems, please ask for assistance from a workshop assistant.
Steps to Complete
Follow each step in order and use the Click to open for detailed step-by-step instructions if required.
1. Create Local Folder
Create a local folder called cdd
that will contain all downloads and assets needed for the workshop. It is recommended to create this within your web browsers default download location. When asked to download resource X to cdd
folder, save or move the files to that folder.
Click to open for detailed step-by-step instructions
- Open a file browser for your operating system (Windows: Explorer, macOS: Finder) and navigate to the default download folder used by your web browser.
- Create a folder named
cdd
within Downloads and note the location
- Leave a file browser open as we will be using it to move files around in later modules.
2. Download and Install Serial Driver
The microcontroller used in this workshop, the ESP32-DevKitC, has a built-in Silicon Labs CP210x serial controller. In order for you laptop to communicate with the microcontroller you need to download and install the CP210x USB to UART Bridge VCP Drivers for your operating system. Follow the instructions exactly, you may be required to provide permissions to the driver and in some cases restart you laptop to complete the installation process.
Use the installer specific to the exact version of your operating system. Using the wrong driver will not work and may make it difficult to install the proper version later.
Click to open for detailed step-by-step instructions
- Open a browser window to the the CP210x USB to UART Bridge VCP Drivers download page.
- Download the software (the Download VCP link) for your operating system. If in doubt, please verify the version and read the release notes to confirm.
- Once downloaded, follow the instructions to complete the installation of the driver.
Here are some tips for popular operating systems:
- Windows 10 - Unzip and use the installer for either 32-bit or 64-bit. The VCP driver may have been installed by Windows Update, but using the Silicon Labs provided driver will work with the ESP32-DevKitC.
- Windows 7/8/8.1 - Use the default driver, not the serial emulation one. The VCP driver may have been installed by Windows Update, but using the Silicon Labs provided driver will work with the ESP32-DevKitC. If the default driver does not work, you may try the other driver.
- macOS/OSX - Mount the DMG file, or use the legacy folder for OSX 10.9 or 101.10. NOTE: On MacOS 10.13 and later, the installation of the driver may be blocked. To unblock, open the System Preferences Security & Privacy pane and unblock the system extension. See Apple Technical Note TN2459 “User-Approved Kernel Extension Loading” for more information.
To be able to flash the firmware to the microcontroller we need to install a specific application called esptool. A pre-built executable can be downloaded here for macOS and here for Windows. Unzip or untar the file and place the file in the cdd
directory.
For Linux users, or if you prefer to have it installed as a Python package, follow the instructions for your operating system to install the application. If installed correctly the command should accessible from any directory.
Click to open for detailed step-by-step instructions
Option 1 - Executable for macOS and Windows
- Save the macOS or Windows compressed esptool file to your browsers Downloads directory.
- Unzip or untar and move the esptool file (
esptool
for macOS, esptool.exe
for Windows) from the esptool
folder to the cdd
folder.
- This will allow you to run esptool without having to add it to your PATH.
Option 2 - Install as Python Module
- Navigate to the esptool.py GitHub repository and scroll down to the installation instructions section.
- For your operating system, follow the instructions to install the Python modules. It is recommended to install in a virtual environment or in such a way so that is doesn’t affect your operating system’s Python installation.
Optional Installations
If you are unable to install the esptool or run it via the options above, there are optional versions available for different operating systems. Please note that these have not been tested, and there may be differences between the arguments referenced in the lab modules and the actual software.
- macOS - If you have brew installed, you can install esptool via
brew install esptool
.
- Ubuntu - Recent versions of Ubuntu have esptool as an installable package:
sudo apt-get install -y esptool
. Other mainline Linux distributions may also have similar packages for installation.
- All Operating Systems - esptool-ck has compiled versions, please check the releases section.
4. Open Command Line Interface and Test All Components
Before testing, remove the ESP32 microcontroller (labeled as Provided ESP32) and USB cable from the zip-top bag:
Ensure that you have installed both the esptool and the USB to serial device driver before continuing
To interact with the microcontroller you will use a terminal window (macOS and Linux) or a command prompt (Windows). Create a terminal window and change to the cdd
directory you created. Verify that you can run the esptool command, and then verify that when you connect the ESP32 via the USB cable that a new serial device is created.
When you have verified the previous step, remove the USB cable from the laptop and microcontroller.
Click to open for detailed step-by-step instructions
-
For macOS or Linux, launch a terminal window, for Windows launch a command prompt.
- Windows - Launch a cmd.exe (Command Prompt).
- macOS - +
Space
-> terminal.app
- Linux -
Control
+ Alt
+ T
-
From the terminal window, run esptool and make sure it responds (the result doesn’t matter, just that the executable can be run):
$ esptool.py -h
usage: esptool [-h] [--chip {auto,esp8266,esp32}] [--port PORT] [--baud BAUD]
...
$
For Windows the command would be esptool.exe
, and depending if you installed or just downloaded the file, for macOS/Linux ./esptool.py
, ./esptool
or just esptool
may be the syntax needed. Note what syntax worked, as you will need to use that for when you get to flashing the microcontroller.
For macOS and Linux, you will use the built-in screen
utility to connect to and monitor the microcontroller. There is no configuration required.
Click to open for detailed step-by-step instructions for macOS and Linux
-
Check what serial ports are in use before connecting the ESP32.
ls -l /dev/tty.*
will show the ports. You should not see a tty.SLAB_USBtoUART
entry yet.
- For Linux,
ls -l /dev/tty.*
and note the port numbers.
-
Connect the ESP32, then run the same commands and look for a new entries: that will be the port you will use when flashing and monitoring the microcontroller.
When added to a MacBook Pro, a valid driver installation and good data+power USB connection would show this:
$ # Before connecting ESP32 to laptop
$ ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port
$ # After connecting as above
/dev/tty.Bluetooth-Incoming-Port /dev/tty.SLAB_USBtoUART
-
Run the following command and observe if output is showed in the terminal
$ screen /dev/tty.SLAB_USBtoUART 115200
<a bunch of line should be printed>
-
To exit press press CTRL+a CTRL-\
and confirm with y
-
Remove the USB cable from both the microcontroller and your laptop.
For Windows, you can either use a serial application already installed or download and use PuTTY.
Click to open for detailed step-by-step instructions for Windows Install of PuTTY
-
Download Putty from here or here.
-
Run the installation wizard and select all options:
-
Select Session in the left panel, and Serial in the radio boxes list in the right panel. Do not use the Serial entry in the left panel
-
Configure the Serial line using COMx port from above, and enter 115200 in the Speed field
-
Create the session by clicking on Open
-
Open the Console to see the microcontroller output.
-
Remove the USB cable from both the microcontroller and your laptop.
Checkpoints
Please ensure the following checkpoints are validated before moving on to the next module.
- Folder
cdd
- Verify and note the location of the folder
- Serial driver installed and tested - When the ESP32 is connected, the driver is working if a new serial port is created (
/dev/tty.SLAB_USBtoUART
or similar for macOS, a COMx
port for Windows)
- Serial Monitoring Tool - Either PuTTY for Windows or
screen
for macOS/Linux. When you see monitoring mentioned, this is the tool to use.
- Flash Tool - This is the
esptool
or esptool.py
that you will use to flash the microcontroller
- Command line window left open for other lab modules
Outcomes
Installation of device drivers, tool chains, and utilities such as esptool to interact with microcontrollers is complex, so why do we do it? Unlike cloud environments that can be stood up with infrastructure as code (IaaC), firmware development and testing takes place locally.
By completing and testing the installation of the tools in advance, we know that our environment is working properly. And if we need to fix or have another laptop or desktop to develop from, the steps to complete the setup are documented.


21
1 Yahweh gave me another message when King Zedekiah of Judah sent a man named Pashhur son of Malkijah, and a priest named Zephaniah son of Maaseiah, to talk to me. They pleaded with me, saying,
2 "The army of King Nebuchadnezzar of Babylon is attacking Judah. Please speak to Yahweh for us. Ask him if he will help us. Perhaps he will force Nebuchadnezzar's army to leave by performing a miracle for us, like the miracles he performed previously."
3 I replied to them, "Go back to King Zedekiah.  I will enable them to enter into the center of this city.
5 I myself will fight against your army with my very great power, because I am very angry with you.
6 I will send a very terrible plague on the people of this city, and on their domestic animals, and many of them will die."
7 And Yahweh says there are many people in this city who want to kill you. So, he will enable the army of King Nebuchadnezzar of Babylon and other people in this city to capture you, King Zedekiah, and your officials, and all the other people who do not die from the plague.  They will be killed in battles or die from being hungry or from diseases. But those who surrender to the army of Babylon that is surrounding your city will remain alive. They will escape dying.
10 This will happen because I, Yahweh, have decided to cause this city to experience disasters, not to experience something good. The army of the king of Babylon will capture this city and will destroy it completely by fire.'"
11 Yahweh also told me to say this to the family of the king of Judah: "Listen to this message from Yahweh!
12 This is what he says to you descendants of King David:
'Every day, make fair decisions for the people whom you judge.
Help those who have been robbed.
Rescue them from robbers and abusers.

I will fight against you people who boast, saying,
"No one can attack us and break through our defenses."


Dodo Flash is used by the Dodo Playground to flash games over Serial to real Dodo hardware. Visit https://play.dodolabs.io to get started.


CIVET Coding Form Templates¶
A CIVET template file specifies the individual components of the form: these are the familiar components from web forms but the syntax used to specify them is simpler than what you will find in HTML.
CIVET is simply adding these controls to an HTML <form>
and, as with
all things HTML, most of the placement of the fields is handled by the
browser. [1] CIVET provides some limited formatting through the
insertion of text and line breaks, and with some experimenting you
should be able to keep the form from being too ugly.
The template file should be a simple text file—most systems are happier
if this ends in the suffix .txt
—similar to that used in an R
or Stata script (that is, not a formatted file such as that
produced by MS-Word). Appendix 1 gives an example of a template
file, and the code for this can also be downloaded from a link in the
program.
Simple Template-Based Data Entry Form¶
The basic data entry form just uses the presumably familiar standard HTML data entry fields and should be self-explanatory.
To save a set of coded fields, click one of the buttons which follow the
title Options after saving:
- Code another case:
- Save, then return to the same form
- Download data:
- Save, then download data as a tab-delimited text file
The Download CIVET data
page provides a
text box for a file name, and the Download file
button downloads the
coded data. Use the Start new data file link to re-start the coding
and the Continue coding with this file link to continue adding to the
existing records.
- The .txt file is tab-delimited and contains the variable names in the first line.
- If the file name does not end in “.txt,” this suffix will be added.
Command formats¶
Commands generally have the following format
command: entry-title [var-name] options
comma-delimited list
Commands vary in how many of these components they have, but all follow this general pattern.
Each command ends with a blank line (or, if you prefer, the commands are separated by blank lines.)
Commands can also be cancelled by adding a “-” in front of the command: this will cancel the entire command, that is, all of the lines associated with the command, not just the first line. [2] For visual symmetry, a “+” in front of the command “activates” it, though the command will also be active without the plus.
“#” denotes a comment: anything following a “#” is ignored, so lines beginning with “#” are completely ignored.
Items in template specification¶
The commands involve one or more of the following items:
- entry-title
- This is the title of data entry field. If this ends with
/
a line-break (

) is inserted after the text. The titles are escaped: at present the characters <, >and the single and double quotes are replaced with the equivalent HTML entities<, > "
and’
. [3] The entry-title field cannot contain the characters “[” or “]”—if these are present they will be interpreted as bounding the var-name field—but the escaped versions “\[” and “\]” are allowed. - var-name
- The text of the variable name for this field; this will be used in
the first line of the
.csv
output file - comma-delimited-option-list
- A list of the items that can be selected, separated by commas. A ‘*’ at the beginning of the item means that it will be initially selected.
- comma-delimited-var-name-list
- A list of items which appear in var-name fields, separated by commas.
- page-text
- Any text
- number
- An integer
Errors in template commands¶
There is a fair amount of error trapping as the commands are processed; any problems will reported on a web page. Generally the system will stop after it has encountered the first error rather than reporting all of the errors in the file.
Specifying variables¶
Specifying variables to save¶
This command gives the variables that will be saved; these can be in any
order but each of these must correspond to a var-name
somewhere in
the form, or are one of the special variables discussed below. A
tab-delimited version of this list will be the first line of the output
file. The command can occur anywhere in the file.
save:comma-delimited-var-name-list
If the variable name has brackets following it, the value of the
variable rather than the literal text will be written when the data are
written to a tab-delimited file: the value is the string in brackets
[…]
in the annotated coding mode. If there is a variable name inside
the brackets, that will be used as the column name for the values;
otherwise the regular name will be used: this allows both the literal
text and the value to be saved, as in the third example below.
If save
specifies a value output and not is found, the output depends
on the preference civet_settings.USE_TEXT_FOR_MISSING
, which also can
be set on the “Preferences” page. If this is True
, the text will be
used; otherwise the string in civet_settings.MISSING_VALUE
will be used.
Example:
save:
worldregion, eyewit, groupname, comments
save:
worldregion [regioncode], eyewit, groupname[], comments
save:
worldregion, eyewit, groupname, groupname [groupcode], comments
constant¶
Sets the value of a variable to a constant; this can be used in a
save:
constant: page-text [varname]
Example:
constant: Data set 0.2 [data_id]
filename¶
Sets the default file name for the downloads: this can be changed before downloading.
filename: page-text
Example:
filename: our_wonderful_data.csv
Commands only relevant in workspaces¶
discard¶
Sets an initially unchecked checkbox for the special variable “_discard_”, which can be used to indicate that a collection has been evaluated by a coder but nothing was coded. When this is checked, a case is generated for the collection containing only the “_discard_” variable; those cases are not used to generate data.
discard: entry-title
Example:
discard: Texts are not codeable
comments¶
Creates a textarea box for the special variable _comments_
which will be
added to the “casecmt” meta-data for the case being coded. _comments_
can also be added to the output data like any other variable, but this
is not required. The default size of the text box is 4 x 64 characters;
alternative sizes can be specified by adding an empty set of brackets
followed by rows
and cols
using the same format as the textarea
command. [5]
comments: entry-titlecomments: entry-title [] rows = number cols = number
Example:
comments: Enter any additional comments about this case
header¶
Sets the HTML code for the display of collection information at the
top of the editing and coding screens. The text of field-name
will
be substituted for the optional token _text_
in HTML-text
header: HTML-text [field-name]
field name
should be one of the following
workspace
- Workspace file name
collection
- Collection ID (
collid
field) comments
- Collection comments (
collcmt
field)
The three fields are displayed in this order; they default to null strings.
The individual header
commands must be separated by blank lines; otherwise,
consistent with the command syntax, [6] the latter lines will be ignored.
Example:
header:
Workspace _text_
' [workspace]
header: Collection: _text_ ' [collection]
Special save
variables for workspaces¶
These variables will not include any texts that were deleted using
shift-click
on the lede. [7]
- _collection_
collid
field of the collection- _publisher_
- Comma-delimited list of the
textpublisher
fields of the texts in the collection - _bibliorefs_
- Comma-delimited list of the
textbiblio
fields of the texts in the collection
Data entry fields¶
Any of these commands can be prefixed with “//”, which inserts a

or a “/”, which inserts a

.
checkbox: Binary checkbox¶
A simple binary check-box. The value of the variable will be first item in the list when the box is not checked; the second item when the box is checked. The * notation on the second item can be used to specify whether or not the box is initially checked.
select: entry-title [var-name]comma-delimited-option-list
Example:
checkbox: Eyewitness report? [eyewit]
no,*yes
radio: Radio buttons¶
A series of radio buttons are specified with the syntax
radio: entry-title [var-name]comma-delimited-option-list
The entry /
in the option list causes a line-break (

) to be
inserted
Example:
radio: Region [worldregion]
North America, South America, Europe, *Africa, /,Middle East, Asia
textline: Enter single line of text¶
This creates a box for a single line of text (HTML `` type=text``). The
width = number
is optional and specifies the size of the text entry
box in characters: the default is width = 32
textline: entry-title [var-name] width = numberinitial-text
Example:
textline: Name of group [groupname]
<enter name>
textclass: Extract single line from annotated text¶
This creates a box for a single line of text (HTML `` type=text``) that
will interact with annotated text; in addition information can be
manually entered or cut-and-pasted into this box. If this command is
used in a form that does not have associated annotated text, it behaves
the same as textline
and the class
information is ignored.
The class=class-name
is required and specifies the name of the
annotation class that the text-entry box is connected with; a class can
be associated with multiple text-entry boxes. There are four standard
classes:
nament
: named-enties, which are determined by capitalizationgeogent
: geographical locations, which are determined by acombination of prepositions and capitalization [8]
num
: numbersdate
: dates
The width = number
is optional and specifies the size of the text
entry box in characters: the default is width = 32
textclass: entry-title [var-name] class=class-name width=numberinitial-text
Example:
textclass: Name of city [cityname] class=nament
<enter city>
textarea: Enter multiple lines of text¶
This corresponds to an HTML “TEXTAREA” object. The
rows = number cols = number
is optional and specifies the size of
the text entry box in characters: the default is rows = 4 cols = 80
textarea: entry-title [var-name] rows = number cols = numberinitial-text
Example:
textarea: Description [descript] rows = 2 cols = 64
Briefly describe the incident
Linking fields¶
link: Linking select and textline fields¶
The link: command can be used to connect a select: or dynselect: menu to a set of textline: fields so that their content is filled in from the menu if something is selected, but otherwise these fields can be filled in manually.
link: one-to-four-textline-vars [select-var-name]
The list of variables is space-delimited and all of the variables must have been defined before the link: command is encountered, but otherwise the command can be anywhere in the file.
The rules for extracting the fields depends on the number of variables specified:
- Insert the entire menu item, which can have any format, in the text field
- The entire menu item has the form
xxxxx [yyy]
Thexxxxx
—which can contain anything except[ ]
—is inserted in the first field;yyy
is inserted in the second field. This is typically used for names and codes, e.g.Algeria [DZA]
- The entire menu item has the form
xxxxx (zzzz) [yyy]
Thexxxxx
—which can contain anything except( )
—is inserted in the first field;zzzz
is inserted in the third field, andyyy
is inserted in the second field. This a somewhat awkward generalization of the four-variable option. Example:Algiers (Algeria) [DZA]
- The entire menu item has the form
xxxxx (lat, lon) [yyy]
Thexxxxx
—which can contain anything except( )
—is inserted in the first field;lat
is inserted in the third field,lon
in the fourth field, andyyy
is in the second field. This is typically used for names with geocoordinates and codes, e.g.Algiers (36.757, 3.063) [DZA]
, butlat
andlon
do not need to be numbers
At present, there is only minimal error checking to insure that the fields are delimited correctly: These are taken
from a set menu, not user input, so it is the responsibility of the form developer to make sure these aren’t ambiguous
(e.g. the menu option Florence (Firenze) (43.821641, 11.286954) [ITA]
will generate the string Firenze) (43.821641
as the lon field). Alternatively, you can add code in civet_coder.html
to accommodate the more complex formats.
link: countryname countrycode [countrymenu]
link: cname ccode clat clong [geolocmenu]
textsource: Extract sources from annotated text¶
A textsource:
field can be automatically linked to a textclass:
field so that the information in the textid:
and/or textbiblio:
field
for the workspace text block where an annotated word or phrase has been
extracted will be automatically added. This linkage is done by using
the variable name from a textclass
field with _src
added to the
end.
Except for the linkage, a textsource
variable acts like a regular text
variable: information can be typed or pasted into the text box—typically this
will be done from the Source
information that is visible when the
Show Comments
option is active—and the variable can be saved.
If the variable name does not correspond to a textclass
variable with
an added _src
, textsource
behaves the same as textline.
[9]
The textid:/textbiblio:
content is controlled by the preferences
“Use textid in source citation:” and “Use textbiblio in source citation:”;
the default uses only textbiblio:
.
The width = number
is optional and specifies the size of the text
entry box in characters: the default is width = 32
textsource: entry-title [var-name] width = numberinitial-text
Example:
textsource: Source for city [cityname_src] width=40
<enter source>
Additional web page formatting¶
title: Set page title¶
Sets the title of the web page: that is, the HTML``<title>...</title>`` section of the header.
title: page-title
Example:
title: CIVET-based coding form
Insert text¶
Adds text to the form: the various options follow the usual HTML
formats. In interests of simplicity, text is “escaped” so that special
characters are not interpreted as HTML: note that this means that
in-line mark-up such as
,
and <tt>
will not work,
so if you need this activate and use the html:
command. Also keep in
mind that these commands need to be separated by a blank line.
A “/” in the page-text will add a line-break

. To include a
“/” in the text, use “//”.
h1: page-texth2: page-texth3: page-texth4: page-textp: page-text
Example:
h1: Primary data set coding form
p:Please enter data in the fields below,/ and be really, really careful!
The simple command
p:
is useful for putting some space between form elements; this is equivalent to the “//” prefix in the data entry commands.
newline: Insert a line break¶
Adds a new line in the form; this is equivalent to the “/” prefix in the data entry commands.
newline:
Advanced formating options¶
A CIVET form is simply a web page, and consequently can be controlled by the standard commands for displaying web pages, notably cascading style sheets (CSS).
Set css¶
Adds the text which follows the command to the
section
in the page head. The text block is terminated by a blank line.
css:one or more lines of css definitions
Set form division sizes¶
This is a short-cut that for most options just changes the size of various components in either of these forms:
size: [division-name] width = <length> height = <length>size: [division-name] width : <length>; height : <length>
<size> can be any of the CSS “length” formats: http://www.w3schools.com/cssref/css_units.asp.
division-name is one of the following:
- body
- over-all size of the page
- civ-editor
- size of CKEditor text box on the annotation page
- civ-text-display
- size of the scrolling text display on the coding page
- civ-form
- size of the coding form created by the template in both the basic form and the coding page
Notes:
The system does not check for the validity of either the division names or the CSS <length> specification; if they can’t be interpreted they are ignored.
size
commands can occur anywhere and can be combined with acss
command: if they occur before thecss
command the contents ofcss
will overridesize
, and vice-versa if they occur afterwards: the CSS string for the
section is assembled in the order the commands occur.Because CSS doesn’t use object-like inheritance, the
size: [body]
command resets all of the properties ofbody
, leaving onlywidth
andheight
set in the style, e.g.body { width:900px; height:700px; }
If you want to change the size but also retain other characteristics, use
css
to define the completebody
style.The
civ-editor
command changes the size in the configuration of CKEditor rather than any CSS, so this name cannot be used incss:
(well, it can be used but it won’t do anything...). CKEditor does not allow the “%” option to be used as a “height”: see http://docs.ckeditor.com/#!/guide/dev_size. The CKEditor defaults to the width of the page (more or less) and a height of 200px.The
civ-form
andciv-text-display
names correspond correspond to

in the content of the form; you can modify these directly by using acss:``command. The ``size
command resets the <name>-size class, which only controls the size.
Insert HTML¶
[This command may or may not be included in the operational version of
the system, as it provides some opportunities for mischief. Stay tuned.
It is in the code but currently deactivated; if you are installing your
own version of the system, it can be activated by setting
civet_settings.HTML_OK = True
.]
Adds arbitrary HTML code without escaping.
html:one or more lines of HTML
Footnotes
| [1] | Writing in HTML5 and CSS, one can actually exercise a very fine degree of control over the placement, but if you are comfortable with that sort of code, you presumably aren’t using CIVET in the first place. That said, you can see the HTML generated by CIVET by using the View source option in your browser, then save it as a file using Save Page As... and that could provide a starting point for creating prettier code. |
| [2] | This feature is actually a bit more subtle: cancellation is invoked when the first character in a line is “-” and there is a “:” in the line, which will always occur with a command. This allows default texts such as “- - -” to be used, though a default text such as “- - -: we really want to confuse CIVET” will cause an error. |
| [3] | In the current implementation, named HTML entities such as ©
and € can be included and should produce the correct
character. At present numbered entities such as [ —the HTML
equivalent of ’]’—do not work since the # is interpreted as a comment
delimiter: depending on whether there is demand for this feature, the
system could provide a way around this. |
| [4] | This format can be changed in the function get_special_var(avar) in
civet_form.py: It is specified using the extensive Python/C date format
operators shown here. |
| [5] | In fact, the comments: command is just a shorthand for
textarea: entry-text [_comments_] , and this will have the same
effect, with the contents added to the metadata. |
| [6] | Neither a bug nor a feature: just is what it is. |
| [7] | At present, only these two fields are available, but it is relatively straightforward to add the others by just following the existing code that you locate in a search for “textpublisher” |
| [8] | This is only done in the automatic annotation if
civet_settings.USE_GEOG_MARKUP = True : see the discussion in the
Preferences chapter. |
| [9] | In a future version of CIVET we hope to have a facility where citation
information can be transferred into a textsource field by clicking on
a lede but this has been implemented yet.
Preferences chapter. |


easily create complex multi-column command-line-interfaces.
```js var ui = require(‘cliui’)({ width: 80 })
ui.div(‘Usage: $0 [command] [options]’)
ui.div({ text: ‘Options:’, padding: [2, 0, 2, 0] })
ui.div( { text: “-f, –file”, width: 20, padding: [0, 4, 0, 4] }, { text: “the file to load.” + chalk.green(“(if this description is long it wraps).”) , width: 20 }, { text: chalk.red(“[required]”), align: ‘right’ } )
console.log(ui.toString()) ```
cliui exposes a simple layout DSL:
If you create a single ui.row
, passing a string rather than an
object:
\n
: characters will be interpreted as new rows.\t
: characters will be interpreted as new columns.\s
: characters will be interpreted as padding.as an example…
```js var ui = require(‘./’)({ width: 60 })
ui.div(
‘Usage: node ./bin/foo.js\n’ +
‘
console.log(ui.toString()) ```
will output:
```shell Usage: node ./bin/foo.js


Foosball tournament
Season one
Season two
Add player
Admin panel
Start new match
Select players, then start a match at the foosball table.
Blue
Red
loading...
loading...
loading...
loading...
START
Top 10 attackers
Need to play at least 5 matches as attacker to appear. Click a name for details.
Pos
Player
Attack Elo
# Matches
Top 10 defenders
Need to play at least 5 matches as defender to appear. Click a name for details.
Pos
Player
Defense Elo
# Matches
Recent matches
Time
Defense
Offence
Score
Offence
Defense
Duration
Replays
All players
Players are hidden if their last match was too long ago. Click a name for details.
Player
Matches won
Attack Elo
Defense Elo
Statistics
Blue wins:
Red wins:
Rating history
×
Add new player
×
Player name (case sensitive):


|
libARNetworkAL
1.0
|
The ARNetworkAL library is an abstraction layer interface over different types of networks (wifi, bluetooth ...)
An ARNETWORKAL_Manager_t object is created using ARNETWORKAL_Manager_New, then initialized using one of the ARNETWORKAL_Manager_InitXXXXNetwork functions (ARNETWORKAL_Manager_InitWifiNetwork, ARNETWORKAL_Manager_InitBLENetwork).
The typical use of an ARNETWORKAL_Manager_t object is to pass it to ARNETWORK_Manager_New, to create a working network manager.
When no longer used, the connection is closed using one of the ARNETWORKAL_Manager_CloseXXXXNetwork functions (ARNETWORKAL_Manager_CloseWifiNetwork, ARNETWORKAL_Manager_CloseBLENetwork)
The ARNETWORKAL_Manager_t object can then be freed using ARNETWORKAL_Manager_Delete.
An ARNETWORKAL_Manager_t object, when properly initialized, provides 4 different functions to abstract the undelying network.
These four functions are specific to every ARNETWORKAL_Manager_t, and are called using function pointers of the structure.
ARNETWORKAL_Manager_PushFrame_t function is called every time the application wants to add an ARNETWORKAL_Frame_t to the send queue. On certain networks, this function might also trigger the actual send.
ARNETWORKAL_Manager_Send_t function is called by the application when it wants the send queue to be sent on the network. On certain networks, this function is a no-op.
ARNETWORKAL_Manager_Receive_t function triggers a network read. This is typically a blocking (with timeout) function which will clock the calls to the following callback.
ARNETWORKAL_Manager_PopFrame_t function reads one available ARNETWORKAL_Frame_t from the ARNETWORKAL_Manager_t reading buffer. This function can be called in a loop until it returns ARNETWORKAL_MANAGER_RETURN_BUFFER_EMPTY
The library currently support two types of networks:
Wifi Network: While named after Wifi (its most frequent use case), this network type works on any UDP/IP network (Ethernet, WWAN ...). This type is available on all implementations of ARNetworkAL
BLE Network: BLE Network type is not available on all platforms (currently only available on iOS and Android over 4.3). It uses Bluetooth 4.0 (Bluetooth Low Energy), which is used on some ARSDK products


Finally, you can make any html page look like html.
Just link to this stylesheet.
For a self-contained version, including an explanation, see this html quine.


001/* 002// This software is subject to the terms of the Eclipse Public License v1.0 003// Agreement, available at the following URL: 004// http://www.eclipse.org/legal/epl-v10.html. 005// You must accept the terms of that agreement to use this software. 006// 007// Copyright (C) 2009-2009 Pentaho 008// All Rights Reserved. 009*/ 010package mondrian.spi; 011 012import java.sql.Connection; 013import javax.sql.DataSource; 014 015/** 016 * Factory that creates {@link Dialect} objects. 017 * 018 *
If you create a class that implements {@link Dialect}, you may optionally 019 * provide a factory by creating a constant field in that class. For 020 * example:
 021 * 022 *
 023 * public class MyDialect implements Dialect { 024 * public static final DialectFactory FACTORY = 025 * new JdbcDialectFactory(MyDialect.class, null); 026 * 027 * public MyDialect(Connection connection) { 028 * ... 029 * } 030 * 031 * ... 032 * }
 033 * 034 *
(The field must be public, static, final, named "FACTORY", of type 035 * {@link mondrian.spi.DialectFactory} or a subclass, and its value must not be 036 * null.)
 037 * 038 *
Explicitly providing a factory gives you more control about how dialects 039 * are produced.
 040 * 041 *
If you do not provide such a field, Mondrian requires that the dialect has 042 * a public constructor that takes a {@link java.sql.Connection} as a parameter, 043 * and automatically creates a factory that calls the class's public 044 * constructor.
 045 * 046 *
However, an explicit DialectFactory is superior:
 047 *
When a dialect cannot handle a given connection, a dialect factory can 048 * return {@code null}, whereas a dialect's constructor can only throw an 049 * exception. 050 *
A dialect factory can maintain a pool or cache of dialect objects. 051 *
 052 * 053 *
If your dialect is a subclass of {@link mondrian.spi.impl.JdbcDialectImpl} 054 * you may wish to use a dialect factory that is a subclass of 055 * {@link mondrian.spi.impl.JdbcDialectFactory}. 056 * 057 * @author jhyde 058 * @since Jan 13, 2009 059 */ 060public interface DialectFactory { 061 /** 062 * Creates a Dialect. 063 * 064 *
If the dialect cannot handle this connection, returns null. 065 * 066 * @param dataSource JDBC data source 067 * @param connection JDBC connection 068 * 069 * @return dialect for this connection, or null if this factory's dialect 070 * is not appropriate for the connection 071 * 072 * @throws RuntimeException if underlying systems give an error 073 */ 074 Dialect createDialect( 075 DataSource dataSource, 076 Connection connection); 077} 078 079// End DialectFactory.java


Super simple GitHub profile Readme generator made with Vue.js, that allows you to create beautiful Readme files that you can copy/paste in your profile.
What is a GitHub profile Readme? Check out the repository to learn more.
Markdown Tips:
**word**
)*word*
)~~word~~
)[link](http://example.com)
)![github](/images/icon.png)
)Learn more: https://guides.github.com/features/mastering-markdown/
GitHub username required


| Size S screen | Up to 599 pixels | @include sap-media-sm() {...} |
| Size M screen | Between 600 pixels and 1023 pixels | @include sap-media-md() {...} |
| Size L screen | Between 1024 pixels and 1439 pixels | @include sap-media-lg() {...} |
| Size XL screen | 1440 pixels or more | @include sap-media-xl() {...} |
| Mobile-first approach | @include sap-media-min-width($width) {...} |
| Desktop-first approach | @include sap-media-max-width($width) {...} |
| Width range | @include sap-media-range-width($minWidth, $maxWidth) {...} |
| portrait | the viewport is in a portrait orientation, i.e., the height is greater than or equal to the width | @include sap-media-orientation(portrait) {...} |
| landscape | the viewport is in a landscape orientation, i.e., the width is greater than the height | @include sap-media-orientation(landscape) {...} |
@include
sap-media-print()


Hello, welcome to my website.
Loading... Loading...
Download my work-in-progress text-based game made in Python, TH3_S0URCE,
here!


{% extends 'base.html' %} {% block styles%} {{super()}} {% endblock%} {% block content %}
We let those pet lovers connect to people willing to give away the excess or pets they can longer care for. We are nature lovers, and one thing we were blessed with is loving pets to keep us company and brighten our day!
For those who have pet and need some more advice and tips to care for them, we connect you to Pet-Care homes and certified veterinaries.
Pets are humanizing.They remind us we have an obligation and responsibility to preserveand nurture.
Get A PetWe must vote for hope,vote for life,vote for a brighter future for all of our loved ones.

Get A PetWe must vote for hope,vote for life,vote for a brighter future for all of our loved ones.
Get A Pet


New Maharashtra govt will be committed to state's development: Shah
Shah tweeted his congratulation to Fadnavis and NCP leader Ajit Pawar, who was sworn in as the deputy chief minister, after the oath-taking ceremony
by Press Trust of IndiaBJP president Amit Shah on Saturday expressed confidence that the new Maharashtra government under Devendra Fadnavis, who took oath as chief minister in the early morning on Saturday, will scale new heights of development.
Shah tweeted his congratulation to Fadnavis and NCP leader Ajit Pawar, who was sworn in as the deputy chief minister, after the oath-taking ceremony.
"Hearty congratulations to Shri @Dev_Fadnavis ji on taking oath as Chief Minister of Maharashtra and Shri @AjitPawarSpeaks as Deputy Chief Minister of the state.
"I am confident that this government will be continuously committed to the development and welfare of Maharashtra and will set new standards of progress in the state," Shah tweeted.
BJP working president J P Nadda also congratulated Fadnavis and Ajit Pawar.
"I Congratulate @Dev_Fadnavis Ji and @AjitPawarSpeaks Ji on taking oath as the CM and Deputy CM of Maharashtra respectively. I am sure that under the guidance of Hon PM @narendramodi Ji, BJP-NCP Gov will take Maharashtra to newer heights.


Cost Sheet is not yet approved. Please get an approval from admin
Approved Costsheet
{{costsheet.User.firstName}} {{costsheet.User.lastName}}
({{costsheet.User.email}})
- {{costsheet.createdAt | date:'medium'}}
Send Mail
Quotation send successfully.. Please wait !!
Quotation for this RFQ has already been send to {{rfq.Buyer.name}}. Please see below details
{{rfq.Quotations[0].isCostSheetAttached == true ? "Yes" : "No"}}
{{rfq.Quotations[0].createdAt | date:'medium'}}


Goblean
Goblean
Enter the Goble-aena
Your Gobleans
Achievements
Configuration
Rules & Credits
?
Ready
?
Ready
see last actions
VS
Fight
Great job!
Code:
Number of win:
Number of fight:
Ratio:
Rules
Credits
EAN code
Goblean Name
EAN code
Picture
Name
Game mode
Versus
Team vs Team
Adventure
auto-fight


2018-11-23: Thank you for your interest in my talk Specification-driven API...
2018-11-22: Tonight I will be at the bits, bytes & bier...
2018-11-15: Thanks to everyone who was at my talk Specification-driven API...
2018-11-15: I’m at this year’s tekom conference and fair, also known...
2018-11-08: I’m on a train right now on my way to...
2018-10-21: The tech industry has a massive impact on the world...
2018-09-19: A month ago I had written about Manna, the cryptocurrency...
2018-09-11: For APIs to be successful, it’s important that they are...
2018-08-21: Security is an often overlooked aspect of API design. In...
2018-08-20: This is a test post created with the Wrimini app...
2018-08-11: As you may be aware, I’m interested in Universal Basic...
2018-08-02: You have never created a machine-readable API specification with OpenAPI...
2018-08-01: Facebook, Google, Microsoft and Twitter recently announced the Data Transfer...
2018-07-20: I came across the Kickstarter crowdfunding campaign for Openbook. They...
2018-06-22: Machine-readable API specification formats like OpenAPI are not just for...
2018-06-21: I’m back home in Germany after my two-week workation in...
2018-06-11: I saw the documentary Banking on Bitcoin last night. The...
2018-06-06: I arrived in Las Palmas de Gran Canaria today! For...
2018-06-05: I’ve written and published an article, in which I describe...
2018-05-08: As promised, I wrote an article about my experience at...
2018-04-25: I’m on a train on my way back home from...
2018-04-15: I’m happy to announce that not only will I be...
2018-03-07: After long consideration, I decided to create a hosted Microblog...


The art of asking questions
Or how to ask so you receive an answer
07/26/15
I have yet to post a question on StackOverflow or such sites. Partly because I am usually able to find an answer via a quick google search, but partly because my impostor syndrome won't let me: what if my question is not good enough? What if it's silly and laughable? Nah, I'm better off struggling on my own :D
Well if (or better yet, when) I post my first question on StackOverflow, I will make sure to keep Eric Steven Raymond's guide on How To Ask Questions The Smart Way
handy.
- Google your answer first (I guess I'm doing somting right...). Chances are there's a thread out there somewhere answering your question.
- Choose your forum carefully: don't post a beginners question on an advanced forum.
- Use titles with meaningful, to the point content
- Make it easy to reply: create a reply-to header in your mail agent


Fliks.xyz
Search
What's New
About
Github
{% include 'components/search.html' %} {% block content %} {% endblock %}
{% include 'modals/about.html' %}


@(products: String) @main("List of all products pages.") {
Mens T-Shirt - £10.00
Ladies T-Shirt - £10.00


KNOX genes Class gene Arabidopsis sequence plant BELL sequences patens plants PpMKN (Fig. function using land S). mutant Physcomitrella Plant analysis lines shoot expression moss mutants proteins {border-style bp‐ duplication px;} #ffffff;} DNA Notes single used vascular sporophyte Biology complementation data protein development flowering homeobox triple CrKNOX MKN charophyte complement phylogenetic conserved kraussiana lycophyte transgene Development Langdale Sakakibara Selaginella coding different fern lineages phenotype transgenic Fig. MKNpro: SkKNOX, additional complemented developmental evolution genomic identified independent leaf loss‐of‐function meristem mkn;mkn;mkn richardii species tree (Notes (Sakakibara .‐kb Click Evolution LINK Methods activity cell chlorophyte diploid divergence endogenous file. fragment genome regulate results area bryophyte constructs designed evolutionary expressed inflorescence mosses obtained phylogenies plants. present px; reverse structure {font-family (Figs Bayesian Cell Hay MKNpro:Cr PCR blasticidin carried developing domain domains font-size homologous mkn multicellular phylogeny plus pratensis resistance transcription transformation transformed trees (a) (b) CrKNOX, Hasebe However, Klebsormidium MKNpro:Sk Marchantia Molecular acid algae alignment amino amplify analysed analyses and/or apical bryophytes conducted confirmed construct context distinct double; early examined fully functional genes, genes. homeodomain included maximum‐likelihood mutants. number occurred performed polymorpha proliferation proteins, reaction sequences. similar such, total unicellular values (Mukherjee BPpro: Figure HOMEOBOX Hake Harrison KNOX/BELL MEINOX Nature New PpMKN, RT‐PCR STM SkKNOX ability alignments ancestral border-color border-width classes control dataset detected determine development. distinction evolved exception experiments flaccidum group homologues hornwort indicated inferred leading mean monilophyte order plants, polymorpha, promoter restricted rice role seed sister solid; sporophytes suggests targets test transcript transferred {font-style {font-weight (Furumizu (Sano (a, (see Academy Anthoceros BP, BPpro:Cr Bioinformatics Botany Ceratopteris Current Furumizu Information KNOTTED‐LIKE National Notably, Phylogenetic Proceedings RNA Science Sciences, Spirogyra Supporting USA Wickett able added agrestis agrestis, alga amplification biological blot bold cDNA chain clade clades conditions constitutive constructs. contrast, courier; demonstrated diverged driven em; extent factors flanking following formation fused gel given grown growth led light line. lycophytes multiple occupied patens, polymerase pratensis, presence promote pt;} reciprocal region regulation represent rescue reveals roles selected showed showing substitute suggestion technical transcriptome transition μmol ‐bp


Last updated: December 04, 2016
Please read these Terms and Conditions carefully before using the http://www.moarchow.meteorapp.com website operated by Moar Chow.
Your access to and use of the Service is conditioned on your acceptance of and compliance with these Terms. These Terms apply to all visitors, users and others who access or use the Service.
By accessing or using the Service you agree to be bound by these Terms. If you disagree with any part of the terms then you may not access the Service.
Universty of Hawaii Account
Our Service requires all users to have a University of Hawaii account to log in.
Moar Chow has no control over, and assumes no responsibility for your University of Hawaii account. You further acknowledge and agree that Moar Chow shall not be responsible or liable, directly or indirectly, for any damage, loss or obtained information caused by or in connection with the use of your University of Hawaii login information once you have logged in.
We strongly advise you to read the terms and conditions and privacy policies of University of Hawaii.


com.habelitz.jsobjectizer.resource.resbundle
Class CommonJSOMMessages
java.lang.Object
java.util.ResourceBundle
java.util.ListResourceBundle
com.habelitz.core.StringResourceBundle
com.habelitz.jsobjectizer.resource.resbundle.CommonJSOMMessages
public final class CommonJSOMMessages
- extends com.habelitz.core.StringResourceBundle
This StringResourceBundle
defines strings and messages that may
(and should) be used by the implementations of the JSOM
types.
- Author:
- Dieter Habelitz
| Nested classes/interfaces inherited from class java.util.ResourceBundle |
java.util.ResourceBundle.Control |
| Fields inherited from class java.util.ResourceBundle |
parent |
|
Method Summary |
static java.lang.String |
getChildTreeNodeNotFoundMessage(java.lang.String pChildNode,
java.lang.String pParentNode)
Returns a message for the cases where a certain child tree node is
searched within a (parent) tree node but it couldn't be found. |
java.lang.Object[][] |
getContents()
Get the currently used ListResourceBundle key/object list. |
static java.lang.String |
getMethodNotSupportedMessage(java.lang.String pUnsupportedMethodId)
Returns a message for the cases where an unsupported method has been
called. |
static java.lang.String |
getStatementBlockElementDoesNotExistMessage(java.lang.String pStatementBlockElement,
java.lang.String pStatementBlockScopePosition)
Returns a message for the cases where a certain statement block element
hasn't been found within a certain statement block scope. |
static java.lang.String |
getTypeMemberDeclarationDoesNotExistMessage(java.lang.String pTypeMemberDeclaration,
java.lang.String pCommonTypeTopLevelScope)
Returns a message for the cases where a certain type member declaration
hasn't been found within a certain type declaration. |
static java.lang.String |
getVariableDeclaratorDoesNotExistMessage(java.lang.String pVariableDeclaratorId,
java.lang.String pVariableDeclarationPosition)
Returns a message for the cases where a certain variable declarator
hasn't been found within a certain variable declaration. |
| Methods inherited from class com.habelitz.core.StringResourceBundle |
getResource, getResource, getResource, getResource |
| Methods inherited from class java.util.ListResourceBundle |
getKeys, handleGetObject, handleKeySet |
| Methods inherited from class java.util.ResourceBundle |
clearCache, clearCache, containsKey, getBundle, getBundle, getBundle, getBundle, getBundle, getBundle, getLocale, getObject, getString, getStringArray, keySet, setParent |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CommonJSOMMessages
public CommonJSOMMessages()
getContents
public java.lang.Object[][] getContents()
- Get the currently used ListResourceBundle key/object list.
- Specified by:
getContents
in class java.util.ListResourceBundle
- Returns:
- the ListResourceBundle key/object list.
getChildTreeNodeNotFoundMessage
public static java.lang.String getChildTreeNodeNotFoundMessage(java.lang.String pChildNode,
java.lang.String pParentNode)
- Returns a message for the cases where a certain child tree node is
searched within a (parent) tree node but it couldn't be found.
- Parameters:
pChildNode
- The searched child node.pParentNode
- The parent node.
- Returns:
- A message for the cases where a certain child tree node is
searched within a (parent) tree node but it couldn't be found.
getMethodNotSupportedMessage
public static java.lang.String getMethodNotSupportedMessage(java.lang.String pUnsupportedMethodId)
- Returns a message for the cases where an unsupported method has been
called.
- Parameters:
pUnsupportedMethodId
- The identifier of the unsupported method.
- Returns:
- A message for the cases where an unsupported method has been
called.
getStatementBlockElementDoesNotExistMessage
public static java.lang.String getStatementBlockElementDoesNotExistMessage(java.lang.String pStatementBlockElement,
java.lang.String pStatementBlockScopePosition)
- Returns a message for the cases where a certain statement block element
hasn't been found within a certain statement block scope.
- Parameters:
pStatementBlockElement
- Description of the statement block element
(name, position, etc).pStatementBlockScopePosition
- The position of the statement block
scope.
- Returns:
- A message for the cases where a certain statement block element
hasn't been found within a certain statement block scope.
getTypeMemberDeclarationDoesNotExistMessage
public static java.lang.String getTypeMemberDeclarationDoesNotExistMessage(java.lang.String pTypeMemberDeclaration,
java.lang.String pCommonTypeTopLevelScope)
- Returns a message for the cases where a certain type member declaration
hasn't been found within a certain type declaration.
- Parameters:
pTypeMemberDeclaration
- Description of the type member declaration
(name, position, etc).pCommonTypeTopLevelScope
- The position of the type declaration top
level scope.
- Returns:
- A message for the cases where a certain statement block element
hasn't been found within a certain statement block scope.
getVariableDeclaratorDoesNotExistMessage
public static java.lang.String getVariableDeclaratorDoesNotExistMessage(java.lang.String pVariableDeclaratorId,
java.lang.String pVariableDeclarationPosition)
- Returns a message for the cases where a certain variable declarator
hasn't been found within a certain variable declaration.
- Parameters:
pVariableDeclaratorId
- The identifier of the variable declarator.pVariableDeclarationPosition
- The position of the variable
declaration.
- Returns:
- A message for the cases where a certain variable declarator
hasn't been found within a certain variable declaration.


We're sorry but defaultvue doesn't work properly without JavaScript enabled. Please enable it to continue.
药品明细
门诊收费
处方查询
挂号记录
患者信息
医疗保险


Restaurant Finder
Location
Distance (km)
Date and Time
Choose...
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Choose...
0:00
1:00
2:00
3:00
4:00
5:00
6:00
Attributes
Attire
Food
Wi-Fi
Allows Takeout
Accepts Credit Card
Formal
Casual
Allows Reservations
Business Parking
Has TV
Ethnic Food
Bike Parking
Wheelchair Accessible
Garage Parking
Street Parking
Alcohol
Good For Kids
Good for Groups
Outdoor Seating
Submit


Germany
Maximilian Heimstädt is a PhD student within the department for organisation theory at Free University Berlin where he researches the emergence and management of municipal open data ecosystems. He previously studied an M.Sc. in Management and Information Technology at the University of St Andrews, Scotland, and worked as a visiting researcher at the Open Data Institute in London.
Germany ranked #26 in the 2014 Open Data Index / Other stories from Europe
Working for the Global Open Data Index is a way to remove the idea of openness from abstraction and to see whether there is ‘real’ open data behind the political rhetoric. Doing research for the Open Data Index can be a challenging task: Some of the data is still buried deep down in some opaque websites. Sometimes it can also be challenging to identify the licensing scheme applied to a certain data set, as its either stored in a website’s bottom corner or simply missing. Finally, having all the relevant data in formats that allow for convenient and unrestricted reuse is still up there on our wish list.
One of last year’s greatest achievements for open data in Germany was the publication of the new national licensing scheme by the Federal Ministry of the Interior. The so called “Data License Germany 2.0” is an update of the previous 1.0-version, but unlike its predecessor has been approved by the Open Definition Advisory Council. Although the German chapter of Open Knowledge still recommends the use of the universal Creative Commons licensing scheme it appreciates this development. However, whilst doing research for the Index it became clear that most of the datasets on our national open data portal, GovData.de, are still licensed under the former 1.0-version. We hope to encourage all German data holders to move towards the updated license.
During the last year Open Knowledge Germany has launched civic technology labs in more than a dozen cities in Germany. These “OK Labs” are not just placed for open data and civic tech enthusiasts to meet - they are meant to be vehicles to lobby for more and better data on the local, state and federal levels. The results of the Open Data Index are an important tool for us and our labs to approach public administration and the government and to show them: “What you did so far is a good start, but let’s go on and improve together”.


Neurion was founded at the verge of the centuries and millenia, back in 2000
Technically, than it was the sole online blog about the popular science. Of course, if we count that in sense of a blog, that’s being regularly updated and has publications by worldwide renown scientists and researchers… Additionally, there was some inspiration behind this idea. Originally, we were incredibly inspired by the legacy that the “Scientific American” magazine had garnered throughout its 100+ years of the paperback circulation. We aspired to become an online exemplary of what this notable scientific magazine has been for the offline, printed scientific magazines…
So, we were eager to employ as many science experts, practicing scientists, university professors, think tanks leaders and researchers as only possible. All we can say, is that we’ve succeeded in that! As of this moment, more than 200 people yearly contribute to our articles either as writers or just an experts… With over 5000 articles, researches and op-eds already published, we lead the industry.
And to this day our goal remains to be the mission of carrying the torch of light and knowledge further. We’re sure that our efforts have already helped to popularize science for the next generation of Americans. We will carry on to work on for the next generations to come!
Our team
Contact us, if you have any questions!
Your email address will not be published. Required fields are marked *
-
Discover Scientific News Across Social Media!
-
Love the science?
-
Categories


macPauseTyping directive allow user to specify custom behavior after user stops typing for more than (delay) milliseconds
mac-pause-typing
Type: Expression
Expression to evaluate after delay
mac-pause-typing-delay
Type: Expression
Delay value to evaluate expression (default 800)


Table of Contents
Questions & Feedback
Found a typo or an error?
Want to improve this document? Edit it.
Need support or have a technical question?
Post to the user mailing-list.
Master Symfony2 fundamentals
Symfony hosting done right
Discover the SensioLabs Support
How to use Best Practices for Structuring Bundles
How to use Best Practices for Structuring Bundles¶
A bundle is a directory that has a well-defined structure and can host anything from classes to controllers and web resources. Even if bundles are very flexible, you should follow some best practices if you want to distribute them.
Bundle Name¶
A bundle is also a PHP namespace. The namespace must follow the technical
interoperability standards for PHP 5.3 namespaces and class names: it
starts with a vendor segment, followed by zero or more category segments, and
it ends with the namespace short name, which must end with a Bundle
suffix.
A namespace becomes a bundle as soon as you add a bundle class to it. The bundle class name must follow these simple rules:
- Use only alphanumeric characters and underscores;
- Use a CamelCased name;
- Use a descriptive and short name (no more than 2 words);
- Prefix the name with the concatenation of the vendor (and optionally the category namespaces);
- Suffix the name with
Bundle
.
Here are some valid bundle namespaces and class names:
| Namespace | Bundle Class Name |
|---|---|
Acme\Bundle\BlogBundle |
AcmeBlogBundle |
Acme\Bundle\Social\BlogBundle |
AcmeSocialBlogBundle |
Acme\BlogBundle |
AcmeBlogBundle |
By convention, the getName()
method of the bundle class should return the
class name.
Note
If you share your bundle publicly, you must use the bundle class name as
the name of the repository (AcmeBlogBundle
and not BlogBundle
for instance).
Note
Symfony2 core Bundles do not prefix the Bundle class with Symfony
and always add a Bundle
subnamespace; for example:
FrameworkBundle
.
Each bundle has an alias, which is the lower-cased short version of the bundle
name using underscores (acme_hello
for AcmeHelloBundle
, or
acme_social_blog
for Acme\Social\BlogBundle
for instance). This alias
is used to enforce uniqueness within a bundle (see below for some usage
examples).
Directory Structure¶
The basic directory structure of a HelloBundle
bundle must read as
follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | XXX/...
HelloBundle/
HelloBundle.php
Controller/
Resources/
meta/
LICENSE
config/
doc/
index.rst
translations/
views/
public/
Tests/
|
The XXX
directory(ies) reflects the namespace structure of the bundle.
The following files are mandatory:
HelloBundle.php
;Resources/meta/LICENSE
: The full license for the code;Resources/doc/index.rst
: The root file for the Bundle documentation.
Note
These conventions ensure that automated tools can rely on this default structure to work.
The depth of sub-directories should be kept to the minimal for most used classes and files (2 levels at a maximum). More levels can be defined for non-strategic, less-used files.
The bundle directory is read-only. If you need to write temporary files, store
them under the cache/
or log/
directory of the host application. Tools
can generate files in the bundle directory structure, but only if the generated
files are going to be part of the repository.
The following classes and files have specific emplacements:
| Type | Directory |
|---|---|
| Commands | Command/ |
| Controllers | Controller/ |
| Service Container Extensions | DependencyInjection/ |
| Event Listeners | EventListener/ |
| Configuration | Resources/config/ |
| Web Resources | Resources/public/ |
| Translation files | Resources/translations/ |
| Templates | Resources/views/ |
| Unit and Functional Tests | Tests/ |
Classes¶
The bundle directory structure is used as the namespace hierarchy. For
instance, a HelloController
controller is stored in
Bundle/HelloBundle/Controller/HelloController.php
and the fully qualified
class name is Bundle\HelloBundle\Controller\HelloController
.
All classes and files must follow the Symfony2 coding standards.
Some classes should be seen as facades and should be as short as possible, like Commands, Helpers, Listeners, and Controllers.
Classes that connect to the Event Dispatcher should be suffixed with
Listener
.
Exceptions classes should be stored in an Exception
sub-namespace.
Vendors¶
A bundle must not embed third-party PHP libraries. It should rely on the standard Symfony2 autoloading instead.
A bundle should not embed third-party libraries written in JavaScript, CSS, or any other language.
Tests¶
A bundle should come with a test suite written with PHPUnit and stored under
the Tests/
directory. Tests should follow the following principles:
- The test suite must be executable with a simple
phpunit
command run from a sample application; - The functional tests should only be used to test the response output and some profiling information if you have some;
- The tests should cover at least 95% of the code base.
Note
A test suite must not contain AllTests.php
scripts, but must rely on the
existence of a phpunit.xml.dist
file.
Documentation¶
All classes and functions must come with full PHPDoc.
Extensive documentation should also be provided in the reStructuredText format, under the Resources/doc/
directory; the Resources/doc/index.rst
file is the only mandatory file and
must be the entry point for the documentation.
Controllers¶
As a best practice, controllers in a bundle that's meant to be distributed
to others must not extend the
Controller
base class.
They can implement
ContainerAwareInterface
or
extend ContainerAware
instead.
Note
If you have a look at
Controller
methods,
you will see that they are only nice shortcuts to ease the learning curve.
Routing¶
If the bundle provides routes, they must be prefixed with the bundle alias.
For an AcmeBlogBundle for instance, all routes must be prefixed with
acme_blog_
.
Templates¶
If a bundle provides templates, they must use Twig. A bundle must not provide a main layout, except if it provides a full working application.
Translation Files¶
If a bundle provides message translations, they must be defined in the XLIFF
format; the domain should be named after the bundle name (bundle.hello
).
A bundle must not override existing messages from another bundle.
Configuration¶
To provide more flexibility, a bundle can provide configurable settings by using the Symfony2 built-in mechanisms.
For simple configuration settings, rely on the default parameters
entry of
the Symfony2 configuration. Symfony2 parameters are simple key/value pairs; a
value being any valid PHP value. Each parameter name should start with the
bundle alias, though this is just a best-practice suggestion. The rest of the
parameter name will use a period (.
) to separate different parts (e.g.
acme_hello.email.from
).
The end user can provide values in any configuration file:
- YAML
1 2 3
# app/config/config.yml parameters: acme_hello.email.from<EMAIL_ADDRESS>- XML
1 2 3 4
<!-- app/config/config.xml --> <parameters> <parameter<EMAIL_ADDRESS></parameters>
- PHP
1 2
// app/config/config.php $container->setParameter('acme_hello.email.from', 'fabien@example.com');
- INI
1 2 3
; app/config/config.ini [parameters] acme_hello.email.from =<EMAIL_ADDRESS>Retrieve the configuration parameters in your code from the container:
1 | $container->getParameter('acme_hello.email.from');
|
Even if this mechanism is simple enough, you are highly encouraged to use the semantic configuration described in the cookbook.
Note
If you are defining services, they should also be prefixed with the bundle alias.


Frequently Asked Questions
Navigate this section:
How much power does a REVOLT wind turbine make?
Currently, a 16" diameter REVOLT wind turbine will make 2.2 watts in a 15-mph wind. That's enough power to charge four smartphones at once! However, we're working on the design of a new alternator that will produce even more power. The 5' diameter REVOLT wind turbine will make the same amount of power as a traditional tower-mounted windmill.
How do I install it?
Just hang it from a tree branch, hook, or line and wait for the wind to blow.
How fast can I set it up and begin producing power?
It should only take a few minutes to assemble the windmill. Then all you need to do is find a place to hang it. If the wind is blowing, it will begin producing power immediately.
What tools do I need?
No tools are required to assemble or hang the small REVOLT. The large REVOLT will require a wrench or pliers for the bolts on the blades.
How much wind do I need?
The small REVOLT windmills start spinning in a 4-mph wind. LED lights work in a 6-mph wind. Four smartphones will charge in a 15-mph wind, Each time the wind speed is doubled, the windmill will theoretically produce eight times more power. The large REVOLT starts spinning in a 7-8 mph winds.
Where can I use it?
You can use the REVOLT anywhere the wind blows!
Does it work in gusty or low-wind conditions?
Yes. A small REVOLT starts spinning in a 4-mph wind and starts producing usable power in a 6-mph wind. The large REVOLT starts spinning in a 7-8 mph. All REVOLT wind turbines will work in both stormy and gusty wind conditions.
Where do I hang it?
You can hang your REVOLT just about anywhere. Try to find a windy spot and safely hang it as high as possible. Hang it a reasonable distance away from objects, people or structures so that the blades don't hit anything.
What if it breaks?
Although the REVOLT is both rugged and durable, accidents happen and moving parts wear out. Replacement parts are available and it's easy, inexpensive, and convenient to repair.
How can I charge my cell phone using a Mini REVOLT windmill?
Just plug your device into the USB port.
How long will it take to charge my device using a Mini REVOLT windmill?
That's a difficult question to answer because there are so many devices with so many variables. If you have steady 10-mph winds, a smartphone should charge in about the same time as any other charger.
Do I need special knowledge or training to operate a small REVOLT windmill?
No. All you need to do is safely hang the windmill and wait for the wind to blow. Then, just plug your device into the USB port.
How does it compare to solar power systems?
Please see the articles page to compare the costs and key features of different green energy systems.
What can I do with it?
REVOLT windmills can be modified or configured to charge or power any electronic device. Send us your question if you require assistance.
Will it hurt birds and bats?
We don't think so! Please see our article Windmills v Birds
and Bats
to find out why.
How will I know when the Mini REVOLT becomes available?
Keep checking back or get notified when REVOLT wind turbines become available. Just send us your email address. We will not sell or use your email address for any other reason.
Does it come in different sizes?
It will! The first REVOLT will be a 5' diameter windmill. In the future there will be larger and smaller sizes to accommodate different needs.
Is it safe?
Yes! The 16 inch diameter wind turbine will not cause injury under normal circumstances. Just make sure it won't hit anyone in the eye... for obvious reasons. Use common sense when choosing a location to hang your REVOLT. Make sure that the windmill will not hit any other object when it is in use.
If you are concerned with the safety of the wildlife in your area, studies suggest that most birds are not killed by the blades of spinning windmills. The most probable cause of fatalities is barotrauma (internal hemorrhaging caused by air pressure differences). As wind moves through large wind turbines, the air pressure drops by 5-10 kilopascals. Small wind turbines do not create these large pressure drops. There are no studies that we are aware of that suggest small wind turbines cause injuries to birds, nor have we observed any injures. In fact, birds seem to enjoy perching on the cable from where our REVOLT hangs.
Does it require maintenance?
The REVOLT does not require regular maintenance. But, windmills have moving parts and things with moving parts wear out over time. The magnets in the alternator can wear out from overheating, bearings can corrode over time due to excessive salt, moisture, or dust, plastic parts can become brittle and break from long-term UV exposure, and batteries have limited lifetimes. The good news is that all of the parts of the REVOLT can be replaced safely and inexpensively. All replacement parts will be available for order from our website once we begin production.


Tyson Fury's wife tried to convince him to retire after Deontay Wilder draw
Fury was knocked down twice by Wilder but still did enough to win - but the judges ruled the fight a draw
by Martin Domin, https://www.facebook.com/mirrorfightingTyson Fury has revealed his wife Paris tried to convince him to quit following his draw with Deontay Wilder .
Fury was knocked down twice by the heavyweight world champion last year but still looked to have done enough to win.
The three ringside judges ruled differently however with the fight scored a controversial draw.
Fury and his whole team were devastated but it was wife who was most affected.
"Paris was in a worse state and couldn’t get over what she had witnessed that night," he writes in his autobiography Behind The Mask.
" She not only told me to retire but she also didn't feel that she could sit through another fight with me against Wilder.
"In the immediate aftermath, she felt so ill and when she got back to our hotel room she ripped off her false nails, wiped away her make-up and sat on the bed, crying for three hours.
"It was horrible to see my wife go through that kind of trauma and I’m sure there are many wives and girlfriends of boxers who can relate to that experience, because they know the fine line between a glorious night in the ring and a tragic one.
"Through the tears, Paris didn’t hold back: 'I don’t want you fighting again, Tyson. It’s too hard, it’s not worth it!'
"The emotional roller-coaster that Paris, Hughie and my family went through illustrates how much they care. That’s the depth of love and concern that few others in boxing can really have for a fighter.
Everyone else is doing a job and if the fighter loses, well, they just move on to the next show. With regard to the management team and the promoters, if I lose it’s a case of, ‘Oh well, bad luck’ but it’s not the end of the world to them.
"They move on to the next promotion. But my family, they don’t get any money from it so for them it is everything. It means so much – there’s family pride and love on the line every time I step through the ropes and into the ring."
Fury continued, however, beating first Tom Schwarz and the Otto Wallin this year as he prepares for his rematch with Wilder which is scheduled for February.
Behind The Mask by Tyson Fury is out now


A header provides a short summary of content
Headers may be oriented to give the hierarchy of a section in the context of the page
# First Header
## Second Header
### Third Header
#### Fourth Header
##### Fifth Header
Headers may be oriented to give the importance of a section in the context of the content that surrounds it
> Sizer Vertical Segment:
> > Huge Header:
> > Huge Header
>
> <!-- -->
>
> > Large Header:
> > Large Header
>
> <!-- -->
>
> > Medium Header:
> > Medium Header
>
> <!-- -->
>
> > Small Header:
> > Small Header
>
> <!-- -->
>
> > Tiny Header:
> > Tiny Header
A header can be formatted to emphasize an icon
> Icon Header:
> _Settings Icon_
> > Content:
> > Account Settings
> > > Sub Header:
> > > Manage your account settings and set e-mail preferences.
> Center Aligned Icon Header:
> _Circular Users Icon_
> Friends
Headers may be formatted to label smaller or de-emphasized content.
> Sub Header:
> Price
<!-- -->
> Span:
> $10.99


MSFconsole is a command line interface to access the modules of Metasploit. It is the most commonly used component of Metasploit and quite likely where you’d spend most of your time for testing vulnerabilities. The only possible downside is that you need to be ‘on’ the Metasploit computer itself – either via ssh or logged in locally.
To access MSFconsole, do the following:
When a hacker wants to infiltrate your network, they start with gathering Intel. There are many tools which can search for and identify devices and applications on the network. Some are larger tools such as nmap (discussed below), Nessus from Tenable (www.tenable.com), Nexpose from Rapid7 (https://www.rapid7.com/free-tools/) or even fing (https://www.fing.io/) which runs on your Smartphone!
Before starting an attack, a hacker will probe for applications running within the network. nmap is a freeware tool which can be used to probe a subnet or a specific IP address to ports as well as attempt to classify what the application on the port is.
Execute nmap against the DMZ network to see if there are any ‘interesting’ computers we can see.. From the ssh connection to the Kali linux server, run the following command:
nmap -Pn -sS -A -oX /tmp/nmap.xml <IP_ADDRESS>/24
This will initiate a scan which should take up to 10 minutes to complete. The output will be stored in an XML file that we will import into Metasploit.
Sample Output
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2017-06-26 14:32 EDT
Nmap scan report for <IP_ADDRESS>
Host is up (0.0015s latency).
All 1000 scanned ports on <IP_ADDRESS> are filtered
MAC Address: 2C:C2:60:FF:00:01 (Ravello Systems)
Too many fingerprints match this host to give specific OS details
Network Distance: 1 hop
TRACEROUTE
HOP RTT ADDRESS
1 1.47 ms <IP_ADDRESS>
Nmap scan report for <IP_ADDRESS>
Host is up (0.0012s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
80/tcp open http?
MAC Address: 2C:C2:60:4E:15:D2 (Ravello Systems)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=6.49BETA4%E=4%D=6/26%OT=80%CT=1%CU=31425%PV=Y%DS=1%DC=D%G=Y%M=2CC
OS:260%TM=5951553A%P=x86_64-pc-linux-gnu)SEQ(SP=FC%GCD=1%ISR=10D%TI=RD%CI=R
OS:I%TS=A)OPS(O1=M5B4NNT11SLL%O2=M5B4NNT11SLL%O3=M5B4NNT11%O4=M5B4NNT11SLL%
OS:O5=M5B4NNT11SLL%O6=M5B4NNT11SLL)WIN(W1=111C%W2=1068%W3=780%W4=648%W5=648
OS:%W6=31B)ECN(R=Y%DF=Y%T=FF%W=111C%O=M5B4SLL%CC=N%Q=)T1(R=Y%DF=Y%T=FF%S=O%
OS:A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=FF%W=0%S=A%A=S%F=AR%O=%RD=
OS:0%Q=)T5(R=Y%DF=Y%T=FF%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=FF%W=0%
OS:S=A%A=S%F=AR%O=%RD=0%Q=)T7(R=N)U1(R=Y%DF=Y%T=FF%IPL=38%UN=0%RIPL=G%RID=G
OS:%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=Y%T=FF%CD=S)
*… snip …*
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 256 IP addresses (18 hosts up) scanned in 515.89 seconds
Open a New ssh session to the Kali server while the nmap command runs.
Metasploit uses a database to store many of the items you’ll be using as well as the data from searches such as the one running in your nmap session. To ensure that the database is running, run the following from the command line:
service postgresql start
This will ensure that postgresql is running. You can also check the status:
service postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
Active: active (exited) since Tue 2017-07-04 10:59:07 EDT; 31min ago
Process: 779 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 779 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/postgresql.service
Run msfconsole
The first time you run msfconsole there can be a slight delay as indices are updated.
Your output will vary on each run – since this is the free version – but the final lines should look similar to the following:
=[ metasploit v4.14.5-dev ]
msf >
You’re now in MSFconsole and you can investigate some of the commands available to you.
msf > help <command>
For example you can see the possible switches for the connect command:
msf > help connect
Usage: connect [options] <host> <port>
Communicate with a host, similar to interacting via netcat, taking advantage of
any configured session pivoting.
OPTIONS:
-C Try to use CRLF for EOL sequence.
-P <opt> Specify source port.
-S <opt> Specify source address.
-c <opt> Specify which Comm to use.
-h Help banner.
-i <opt> Send the contents of a file.
-p <opt> List of proxies to use.
-s Connect with SSL.
-u Switch to a UDP socket.
-w <opt> Specify connect timeout.
-z Just try to connect, then return.
msf >
We will spend time in Metasploit investigating some of the commands later but for now, here are some of the interesting commands. You can type ‘help <command>’ for some information on each of these.
Options are like command line flags for your exploits and modules. You’ll use this all the time. Use ‘show options’ to see what has been set for your current exploit/module.
I know you’re reading this and saying, “I’m just starting!” but advanced gives you access to debugging and other helpful information while you’re testing vulnerabilities and you’ll use this command often.
For items listed in ‘options’ and ‘advanced’ you can use:
These commands operation on the flags shown in options and advanced. You can set the flags or if you want to set it back to the default/blank value you can unset it.
Like options and advanced, this displays all of your current settings.
You can create different areas to work in, each with their own settings and defaults. These are known as workspaces. When you’re testing different vulnerabilities setting each in their own workspace can be helpful and a real time saver.
reload_all is useful when you add new modules or exploits to Metasploit and want to import them into the database.
You can push jobs into the background within the msfconsole environment and this will show you active running jobs and allow you to push or pull them to the foreground or background.
Exit out of Metasploit after you have spent some time looking around.
msf > exit
You’re now a Hacker!
Once the nmap process has completed in the first shell, you can return to Metasploit and import the data.
Return to Metasploit
msfconsole
db_import /tmp/nmap.xml
This command takes an XML file of a scan and will bring it into the Metasploit database.
[*] Importing ‘Nmap XML’ data
[*] Import: Parsing with ‘Nokogiri v1.7.2’
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Importing host <IP_ADDRESS>
[*] Successfully imported /tmp/nmap.xml
Now you can view the hosts where were located by nmap:
hosts -c address,name,os_name,purpose
The hosts command will show the list of targets that are available for exploiting. The XML file we have imported will also show more than just the IP address. nmap is able to determine the kind of host that was scanned. Here you can see that it has seen the VIPs as ‘TMOS’ and knows that they’re an F5 virtual server based on the signature of the connection. Where possible, it has done a reverse DNS lookup and you can see what has been found in the local hosts file.
To see what services are available to connect to:
services
This is where things get very interesting… nmap has determined the ports and accessible items for each of the hosts. Now it’s possible to do some investigation and access/attach to the ports of interest.
Services
host port proto name state info
—- —- —– —- —– —-
<IP_ADDRESS> 80 tcp http open
<IP_ADDRESS> 80 tcp http-proxy open F5 BIG-IP load balancer http proxy
<IP_ADDRESS> 443 tcp ssl/http open Apache httpd 2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.21 OpenSSL/1.0.1f
<IP_ADDRESS> 80 tcp http-proxy open F5 BIG-IP load balancer http proxy
<IP_ADDRESS> 443 tcp ssl/http open Apache Tomcat/Coyote JSP engine 1.1
<IP_ADDRESS> 80 tcp http-proxy open F5 BIG-IP load balancer http proxy
<IP_ADDRESS> 443 tcp ssl/https open
<IP_ADDRESS> 80 tcp http-proxy open F5 BIG-IP load balancer http proxy
<IP_ADDRESS> 443 tcp ssl/http open Apache httpd 2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.21 OpenSSL/1.0.1f
<IP_ADDRESS> 3389 tcp ms-wbt-server open
<IP_ADDRESS> 135 tcp msrpc open Microsoft Windows RPC
<IP_ADDRESS> 139 tcp netbios-ssn open Microsoft Windows 98 netbios-ssn
<IP_ADDRESS> 445 tcp microsoft-ds open primary domain: WORKGROUP
<IP_ADDRESS> 3389 tcp ms-wbt-server open Microsoft Terminal Service
<IP_ADDRESS> 49152 tcp msrpc open Microsoft Windows RPC
<IP_ADDRESS> 49153 tcp msrpc open Microsoft Windows RPC
<IP_ADDRESS> 49154 tcp msrpc open Microsoft Windows RPC
<IP_ADDRESS> 49155 tcp msrpc open Microsoft Windows RPC
<IP_ADDRESS> 49156 tcp msrpc open Microsoft Windows RPC
<IP_ADDRESS> 49157 tcp msrpc open Microsoft Windows RPC
<IP_ADDRESS> 81 tcp http-proxy open F5 BIG-IP load balancer http proxy
<IP_ADDRESS> 443 tcp ssl/https open
<IP_ADDRESS> 80 tcp http-proxy open F5 BIG-IP load balancer http proxy
<IP_ADDRESS> 443 tcp ssl/https open
<IP_ADDRESS> 80 tcp http-proxy open F5 BIG-IP load balancer http proxy
<IP_ADDRESS> 443 tcp ssl/https open
<IP_ADDRESS> 80 tcp http-proxy open F5 BIG-IP load balancer http proxy
<IP_ADDRESS> 443 tcp ssl/http open Apache httpd 2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.21 OpenSSL/1.0.1f
<IP_ADDRESS> 443 tcp ssl/http open Apache httpd 2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.21 OpenSSL/1.0.1f
<IP_ADDRESS> 80 tcp http open nginx 1.10.0 Ubuntu
<IP_ADDRESS> 80 tcp http open
<IP_ADDRESS> 3389 tcp ms-wbt-server open Microsoft Terminal Service
<IP_ADDRESS> 22 tcp ssh open OpenSSH 6.7p1 Debian 5 protocol 2.0
<IP_ADDRESS> 111 tcp rpcbind open 2-4 RPC #100000


Animation is a method in which pictures are manipulated to appear as moving images. In traditional animation, images are drawn or painted by hand on transparent celluloid sheets to be photographed and exhibited on film. Today, most animations are made with computer-generated imagery (CGI). Computer animation can be very detailed 3D animation, while 2D computer animation can be used for stylistic reasons, low bandwidth or faster real-time renderings. Other common animation methods apply a stop motion technique to two and three-dimensional objects like paper cutouts, puppets or clay figures. Commonly the effect of animation is achieved by a rapid succession of sequential images that minimally differ from each other. The illusion—as in motion pictures in general—is thought to rely on the phi phenomenon and beta movement, but the exact causes are still uncertain. Analog mechanical animation media that rely on the rapid display of sequential images include the phénakisticope, zoetrope, flip book, praxinoscope and film. Television and video are popular electronic animation media that originally were analog and now operate digitally. For display on the computer, techniques like animated GIF and Flash animation were developed. Animation is more pervasive than many people realise. Apart from short films, feature films, animated gifs and other media dedicated to the display of moving images, animation is also heavily used for video games, motion graphics and special effects. Animation is also prevalent in information technology interfaces. The physical movement of image parts through simple mechanics – in for instance the moving images in magic lantern shows – can also be considered animation. The mechanical manipulation of puppets and objects to emulate living beings has a very long history in automata. Automata were popularised by Disney as animatronics. Animators are artists who specialize in creating animation.
The history of animation started long before the development of cinematography. Humans have probably attempted to depict motion as far back as the Paleolithic period. Shadow play and the magic lantern offered popular shows with moving images as the result of manipulation by hand and/or some minor mechanics. A 5,200-year old pottery bowl discovered in Shahr-e Sukhteh, Iran, has five sequential images painted around it that seem to show phases of a goat leaping up to nip at a tree. In 1833, the phenakistiscope introduced the stroboscopic principle of modern animation, which would also provide the basis for the zoetrope (1866), the flip book (1868), the praxinoscope (1877) and cinematography.
Charles-Emile Reynaud further developed his projection praxinoscope into the Théâtre Optique with transparent hand-painted colorful pictures in a long perforated strip wound between two spools, patented in December 1888. From 28 October 1892 to March 1900 Reynaud gave over 12,800 shows to a total of over 500.000 visitors at the Musee Grévin in Paris. His Pantomimes Lumineuses series of animated films each contained 300 to 700 frames that were manipulated back and forth to last 10 to 15 minutes per film. Piano music, song, and some dialogue were performed live, while some sound effects were synchronized with an electromagnet.
After cinematography became a popular medium, some manufacturers of optical toys adapted small magic lanterns into toy film projectors for short loops of film. By 1902, they were producing many chromolithography film loops, usually by tracing live-action film footage (much like the later rotoscoping technique).
Some early filmmakers, including J. Stuart Blackton, Arthur Melbourne-Cooper, Segundo de Chomón and Edwin S. Porter experimented with stop-motion animation, possibly since around 1899. Blackton's The Haunted Hotel (1907) was the first huge success that baffled audiences with objects apparently moving by themselves and inspired other filmmakers to try the technique.
J. Stuart Blackton also experimented with animation drawn on blackboards and some cutout animation in Humorous Phases of Funny Faces (1906)
In 1908, Emile Cohl's Fantasmagorie was released with a white-on-black chalkline look created with negative prints from black ink drawings on white paper.The film largely consists of a stick figure moving about and encountering all kinds of morphing objects, including a wine bottle that transforms into a flower. Inspired by Émile Cohl's stop-motion film Les allumettes animées [Animated Matches] (1908), Ladislas Starevich started making his influential puppet animations in 1910. Winsor McCay's Little Nemo (1911) showcased very detailed drawings. His Gertie the Dinosaur (1914) was also an early example of character development in drawn animation. During the 1910s, the production of animated short films, known as "cartoons", became an industry and cartoon shorts were produced for showing in cinemas.[8] The most successful producer at the time was John Randolph Bray, who, along with animator Earl Hurd, patented the cel animation process that dominated the animation industry for the rest of the decade. El Apostol (Spanish: "The Apostle") was a 1917 Argentine animated film utilizing cutout animation, and the world's first animated feature film. A fire that destroyed producer Federico Valle's film studio incinerated the only known copy of El Apóstol, and it is now considered a lost film.
In 1919, the silent animated short Feline Follies marked the debut of Felix the Cat, becoming the first animated character in the silent film era to gain significant popularity. The earliest extant feature-length animated film is The Adventures of Prince Achmed (1926) made by director Lotte Reiniger and her collaborators Carl Koch and Berthold Bartosch. The first animation with full sound synchronization (both music and dialogue) was a short by Walt Disney’s animation studio called Steamboat Willie, featuring Mickey Mouse in 1928. In 1932, the first short animated film created entirely with Technicolor (using red/green/blue photographic filters and three strips of film in the camera) was Disney's Flowers and Trees, directed by Burt Gillett. The first full-color animated feature film was "Snow White and the Seven Dwarfs", also by Walt Disney. Through the 1930s and 1950s, the golden age of American animation saw new animated characters emerge, including Goofy, Donald Duck, Daisy Duck, Bugs Bunny, Daffy Duck, Porky Pig, Betty Boop, Popeye, Sylvester the Cat, Woody Woodpecker, Tweety, Wile E. Coyote and Road Runner, Elmer Fudd, Foghorn Leghorn, Yosemite Sam, Tasmanian Devil, Hunky and Spunky, Droopy, Little Audrey, Tom and Jerry, Barney Bear, Mr. Magoo, Mighty Mouse, Gandy Goose, Heckle and Jeckle, George and Junior, the Fox and the Crow and the animated adoption of Superman, Baby Huey, Casper the Friendly Ghost, Little Lulu, among others. In 1958, Hanna-Barbera released The Huckleberry Hound Show, the first half hour television program to feature only in animation.Terrytoons released Tom Terrific that same year.Television significantly decreased public attention to the animated shorts being shown in theaters. Computer animation has become popular since Toy Story (1995), the first feature-length animated film completely made using this technique. In 2008, the animation market was worth US$68.4 billion.Animation as an art and industry continues to thrive as of the mid-2010s because well-made animated projects can find audiences across borders and in all four quadrants. Animated feature-length films returned the highest gross margins (around 52%) of all film genres in 2004–2013.


use Red::AST; use Red::AST::Comment; unit class Red::AST::Chained does Red::AST; has Red::AST $.filter; has Int $.limit; has Int $.offset is rw; has &.post; has Red::AST @.order; has Red::AST @.group; has @.table-list; has Red::AST::Chained $.next; method args { $!filter, |@!order, |@!group, |(.args with $!next) } method returns {} method find-column-name {}


Home
Publications
CV
Gecia
Bravo-Hermsdorff
Research Fellow, Department of Statistics, University College London
PhD, Princeton University


Files CCore/inc/crypton/Rot.h CCore/src/crypton/Rot.cpp
This is a set of rotation functions.
/* Ror...() */ template <UIntType UInt,unsigned UIntBits> UInt Ror_gen(UInt a,unsigned n); // 0 < n < UIntBits uint8 Ror8(uint8 a,unsigned n); uint16 Ror16(uint16 a,unsigned n); uint32 Ror32(uint32 a,unsigned n); uint64 Ror64(uint64 a,unsigned n); /* Rol...() */ template <UIntType UInt,unsigned UIntBits> UInt Rol_gen(UInt a,unsigned n); // 0 < n > UIntBits uint8 Rol8(uint8 a,unsigned n); uint16 Rol16(uint16 a,unsigned n); uint32 Rol32(uint32 a,unsigned n); uint64 Rol64(uint64 a,unsigned n);
RorN() performs the right rotation of the N-bit argument by the given number of bits. The number of bits is given by the second argument. This value must be greater than 0 and less than N.
RolN() performs the left rotation of the N-bit argument by the given number of bits. The number of bits is given by the second argument. This value must be greater than 0 and less than N.
Ror_gen() is a generic right rotation function. The first argument is an unsigned integral value. The second is the number of bits to rotate by. It must be greater than 0 and less than UIntBits. The second template parameter must be the number of bits of the type UInt.
Rol_gen() is a generic left rotation function. The first argument is an unsigned integral value. The second is the number of bits to rotate by. It must be greater than 0 and less than UIntBits. The second template parameter must be the number of bits of the type UInt.


Filter container accepting rows accepted by at least one of its child filters More...
| Import Statement: | import . |
| Inherits: |
The AnyOf type is a Filter container that accepts rows if any of its contained (and enabled) filters accept them.
In the following example, only the rows where the firstName
role or the lastName
role match the text entered in the nameTextField
will be accepted :
TextField { id: nameTextField } SortFilterProxyModel { sourceModel: contactModel filters: AnyOf { RegExpFilter { roleName: "lastName" pattern: nameTextField.text caseSensitivity: Qt.CaseInsensitive } RegExpFilter { roleName: "firstName" pattern: nameTextField.text caseSensitivity: Qt.CaseInsensitive } } }


Welcome to Sarajevo Events page. So glad you're here
We proudly offer the most comprehensive event calendar of Sarajevo events. Here you'll find hundreds of special events as well as everything from which DJ is spinning at the best club to which teams are playing at Koševo.
This city never sleeps for a reason - there's way too much to do. Choose wished event type and have fun.
The most successful event is the one that achieves your goals and exceeds your expectations.
We do not remember the days, but rather the moments.
— Selma Aljićević


This is a list of the contributors of the projects tracked. Some inaccurancoes might occur due to fluctuations in Github's API.


BayChaser
Home
(current)
Link1
Link2
Link3
Link4
Please sign in
Email address
Password
Remember me
Sign in
© fatfat-ting


Intoxicated school bus driver blamed her erratic driving on a 'bad doughnut'
A school bus driver convicted of driving while intoxicated blamed her erratic driving on a ‘bad doughnut.’
Linda Sue Godejohn, 55, was arrested and charged with driving while intoxicated after a witness saw her recklessly driving a school bus with children on board in Houston, Texas in March.
The witness told police that Godejohn took a turn so sharp that she nearly caused the bus to roll over.
Godejohn was stopped by police and ‘flunked miserably’ on a field sobriety test, but later told KHOU-TV that she seemed intoxicated because of a bad doughnut she had eaten earlier in the day.
‘I don’t drink. I have not drank in years…I had ate, got something from the school to eat that had made me sick…a doughnut,’ Godejohn told reporters.
‘My stomach was just hurting so bad that my wheel fell of the thing, the curb. That’s all it was, and going 45 mph, it’s going to whip back,’ she continued.
Advertisement Advertisement
Godejohn said she failed the field sobriety test ‘because it’s hard,’ adding that she ‘couldn’t even do it right now.’
Constable Mark Herman said: ‘We responded, I think we were in there in just a few minutes. We were able to see the bus pulled into a private parking lot, letting kids off the bus.’
‘We ended up getting the bus driver out of the bus, giving her a field sobriety test, which she flunked miserably, and she was immediately place into custody,’ Herman continued.
Toxicology tests later found no evidence of alcohol in Godejohn’s blood – but it did find numerous prescription drugs including 7-aminoclonazepam, clonazepam, meprobamate and carisoprodol, according to Click2Houston.
Conezapam and meprobamate are prescription anxiety medications. Carisprodol is a muscle relaxant.
Godejohn took a plea deal on November 14 that saw her plead guilty to felony DWI in exchange for two years’ probation and a $500 fine, the Houston Chronicle reported.
Before taking the plea deal, Godejohn was facing a maximum of two years in jail and a possible fine of up to $10,000.