|
|
def | __init__ |
| |
|
def | name |
| |
|
def | set_name |
| |
|
def | clear_name |
| |
|
def | has_name |
| |
|
def | type |
| |
|
def | mutable_type |
| |
|
def | clear_type |
| |
|
def | has_type |
| |
|
def | params |
| |
|
def | mutable_params |
| |
|
def | clear_params |
| |
|
def | has_params |
| |
|
def | MergeFrom |
| |
|
def | Equals |
| |
|
def | IsInitialized |
| |
|
def | ByteSize |
| |
|
def | ByteSizePartial |
| |
|
def | Clear |
| |
|
def | OutputUnchecked |
| |
|
def | OutputPartial |
| |
|
def | TryMerge |
| |
|
def | __str__ |
| |
|
|
| type_ |
| |
|
| lazy_init_lock_ |
| |
|
| has_name_ |
| |
|
| name_ |
| |
|
| has_type_ |
| |
|
| has_params_ |
| |
|
|
int | has_name_ = 0 |
| |
|
string | name_ = "" |
| |
|
int | has_type_ = 0 |
| |
|
int | has_params_ = 0 |
| |
|
| params_ = None |
| |
|
int | kname = 1 |
| |
|
int | ktype = 2 |
| |
|
int | kparams = 3 |
| |
The documentation for this class was generated from the following file:
- code/googleappengine-read-only/python/google/appengine/api/search/search_service_pb.py


The Passive Deal
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Please Pick Your Product!
iPhones
iphone 7 Plus
64
256
518
iphone 7 Plus
64
256
518
iphone 7 Plus
64
256
518


Name: {{name}}
Age: {{age}}
Company: {{company}}
Account balance: {{balance}}
{{#address}} Address: {{#mailing}}{{block}} {{street}}, {{city}}, {{state}} {{zip}}{{/mailing}} {{/address}}
Email: {{email}}
Phone: {{#phone}}{{cell}} (cell) {{home}} (home) {{work}} (work){{/phone}}


> > > > >
This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.
Learn more


|
KPN Things Device SDK
|
Data Structures | |
| class | HttpFirmwareDownload |
Functions | |
| size_t | httpPost (char buffer[], int bufferSize, const char key[], const char host[], const char path[], SenMLBasePack &body) |
| int | getHttpBodyStart (const char response[], int responseLength) |
| int | strstr_n (const char data[], int dataLength, const char needle[], int needleLength) |
| int ThingsML::getHttpBodyStart | ( | const char | response[], |
| int | responseLength | ||
| ) |
Finds where the http headers end and the body begins. Will return the beginning if the end of the http headers could not be found.
| size_t ThingsML::httpPost | ( | char | buffer[], |
| int | bufferSize, | ||
| const char | key[], | ||
| const char | host[], | ||
| const char | path[], | ||
| SenMLBasePack & | body | ||
| ) |
Generates a complete http POST request ready to be sent over an tcp socket.
| buffer | output buffer |
| bufferSize | the size of the output buffer |
| key | the secret as configured for the device |
| host | the http host for the http Host: header |
| path | the http path for the http start |
| int ThingsML::strstr_n | ( | const char | data[], |
| int | dataLength, | ||
| const char | needle[], | ||
| int | needleLength | ||
| ) |
Fixed length strstr implementation
| data | the data to search |
| dataLength | the length of data |
| needle | the needle to search for |
| needleLength | the length of the needle |


You wake up in an alley on MLK. Your pockets are empty. There is a dumpster to your left. What would you like to do?


Thank you for participating in this study!
Please make sure to click the button below to submit the HIT.
{% if live %}
{% else %}
{% endif %}


Coding style
Declarative vs Imperative
Imperative programming
When you tell the computer what to do and exactly how to do it
Declarative programming
When you tell the computer what to do
Scala supports both ways, but favours declarative
Coding style
Declarative vs Imperative
Imperative example
case class Client(name: String, accounts:List[Int])
val clients = List(
Client("Eric", List(1000, 400, 50)),
Client("Michel", List(-10, 10, 0)),
Client("Roger", List(0, 0, 0))
)
var clientsWithZeroBalance = List[Client]()
for(client <- clients){
var sum = 0
for(account <- client.accounts) {
sum += account
}
if(sum == 0){
clientsWithZeroBalance = client :: clientsWithZeroBalance
}
}
println(clientsWithZeroBalance.mkString("\n"))
Coding style
Declarative vs Imperative
Declarative example
case class Client(name: String, accounts:List[Int])
val clients = List(
Client("Eric", List(1000, 400, 50)),
Client("Michel", List(-10, 10, 0)),
Client("Roger", List(0, 0, 0))
)
val clientsWithZeroBalance = for(
client <- clients
if client.accounts.sum == 0
) yield client
println(clientsWithZeroBalance.mkString("\n"))
Coding style
Declarative vs Imperative
Functional example (Sneak peak)
case class Client(name: String, accounts:List[Int])
val clients = List(
Client("Eric", List(1000, 400, 50)),
Client("Michel", List(-10, 10, 0)),
Client("Roger", List(0, 0, 0))
)
val clientsWithZeroBalance = clients.filter(_.accounts.sum == 0)
println(clientsWithZeroBalance.mkString("\n"))
Coding style
Immutable vs mutable
Mutable
Mutable objects can change after their creation
Immutable
Immutable objects can't be changed after their creation
Scala supports both ways, but favours immutable
Function
Types
First-class functions = functions are objects
Anonymous Functions = unstored/one-time functions
Higher-Order Functions = Functions that take functions as input
Closures
Pure functions
Theory
Always return a value
No side effects
Deterministic = Input A will always produce output B
Easy to test and reuse
Always write pure functions if possible
Function
Basics
Let's code
Function
Basics
val names = List("Adam", "Stellan", "Emma", "Li")
//Defines a function and stores it in value countLength, the
//type String => Int is actually not needed as it can be inferred
val countLength: String => Int = (input: String) => input.length()
//Goes through the list and applies the function on each element
//creating a new list
val nameLength = for(name <- names) yield countLength(name)
//You can do the same using the collection method map in scala
val nameLength = names.map(countLength)
//defines a method that does the same as the previously declared
//function
def countLength(input: String) = input.length()
//countLength method get converted to a function at compile time,
//if it is used as a function
val nameLength = names.map(countLength)
//map using anonymous function with wildcard syntax '_'
val nameLength = names.map(_.length())
//map using anonymous function using syntax with type inferred
val nameLength = names.map( name => name.length())
Function
Basics
Syntax for a one parameter function type is e.g. String => Int
A method can be used as a function
Function types can also be inferred
Higher-Order Functions
Function that take one or more functions as input parameters or a function that give a function as output.
Easier to re-use code by using functions as building blocks
Higher-Order Functions
//higher-order function that filters Strings, how they are filtered
//is decided by the predicate function input
val filter = (predicate: String => Boolean, strings: List[String]) => {
for (
string <- strings
if predicate(string)
) yield string
}
//function of type String => Boolean
val notEmptyString = (str:String) => !str.isEmpty
val words = List("Hi", "", "there")
val realWords = filter(notEmptyString, words)
//realWords = List(”Hi”, ”There”)
Closures
A function which can access non-local variables from the scope where the function was declared.
Anonymous inner classes are the closest thing Java has to a closure
Closures
Java example
class BooleanWrap{
public boolean bool = false;
}
final BooleanWrap pushed = new BooleanWrap();
JButton button = new JButton("Push Me");
button.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
pushed.bool = true;
}
});
button.doClick();
// pushed.bool has the value true
Closures
Scala example
var pushed = false
val button = new JButton("Push Me")
button.addActionListener( ae: ActionEvent => pushed = true)
button.doClick()
//pushed has the value true
Collections
Basics
Let's code
Collections
Basics
import collection.mutable.ListBuffer
val names = ListBuffer("Olof")
names += "Anna" //append
println(names.mkString(", ")) //prints Olof, Anna
var names = List("Olof") //immutable
"Anna" :: names //prepend
//names = List("Olof").. you must store the new list
names = "Anna" :: names //prepend and store in variable
//names = List("Anna", "Olof")
var names = Vector("Olof") //immutable
names = "Anna" +: names //append
//names = Vector("Anna", "Olof")
var names = Vector("Olof") //immutable
names = names :+ "Anna" //prepend
//names = Vector("Olof", "Anna")
Collections
Basics
val numbers = List.range(1,10) //list of numbers 1 to 10
val sameNumbers = 1 until 10 //range of numbers 1 to 10
val sumOfBoth = numbers.sum + sameNumbers.sum //45 + 45 = 90
val numbers = List(1,4,2,3,10,9)
val count = numbers.count(_ > 5) // 2 elements are bigger than 5
val sorted = numbers.sorted // List(1,2,3,4,9,10)
case class Person(name: String, age: Int)
val persons = List(
Person("John Taylor", 40),
Person("Anne Edwards", 50),
Person("Pete Smith", 9)
)
val aboveTen = persons.filter(_.age > 10)
val (aboveTen, tenAndBelow) = persons.partition(_.age > 10)
val names = persons.map(_.name)
Collections
Basics
import collection.GenSeq
case class Worker(workInMs: Long) { //class for simulating work
def work() = {
Thread.sleep(workInMs)
"Done!"
}
}
//method for measuring the time of the execution
def measureTime(workers: List[Worker])
(work: GenSeq[Worker] => GenSeq[String]) = {
val start = System.currentTimeMillis()
work(workers)
val stop = System.currentTimeMillis()
stop - start
}
val workers = List.fill(100)(Worker(100)) //create 100 Workers
val sequentialTime = measureTime(workers){
_.map(_.work())
}
val parallelTime = measureTime(workers){
_.par.map(_.work())
}
Collections
Basics
Both mutable and immutable collections exist
Immutable collections are default
Both parallel and non-parallel collections exist
Non-parallel collections are default
Rich collection api
Know your collection types, or pay the price
If lazy, use Vector
Pattern Matching
Examples in the REPL
Pattern Matching
Value pattern matching
//Like Java switch statement
def reply(input: String) = input match {
case "Hello" => "Hi there!"
case "Goodbye" => "See ya!"
case _ => "Say what?"
}
println(reply("Goodbye")) //prints 'See ya!'
Pattern Matching
Variable/Value pattern matching
def whichMedal(position: Int) = position match {
case 1 => "Gold"
case 2 => "Silver"
case 3 => "Bronze"
case loserPos => "You don't get medals for position " + loserPos
}
print(whichMedal(4)) //prints 'You don't get medals for position 4'
Pattern Matching
Type pattern matching
trait HasWater
case class Human extends HasWater
case class Cucumber extends HasWater
//match on types
def waterAmount(hasWater: HasWater) = hasWater match {
case Human => 0.65
case Cucumber => 0.96
case _ => throw new Exception("Don't know..")
}
println(waterAmount(new Human)) //prints '0.65'
Pattern Matching
Deconstruction pattern matching
case class Person(firstName: String, lastName: String, age: Int)
val persons = List(
Person("Johan", "Sjöberg", 33),
Person("Henrik", "Andersson", 32),
Person("Anna", "Palm", 15)
)
//matcher is a function of type Person => String
val matcher = (person: Person) => person match {
case p@Person("Johan", "Sjöberg", 33) => {
p.firstName + " is " + p.age + " years young."
}
case Person(fname, _, age) if age < 18 => {
fname + " is " + age + " years young."
}
case Person(fname, _, age) => {
fname + " is " + age + " years old."
}
}
//transform all persons to a list of strings
val output = persons.map(matcher).mkString("\n")
print(output)
Pattern Matching
Match by values (Java-like Switch)
Match by variables
Match using types
Match by deconstructing objects
Bind a match to a variable using @


Hello! It's The Augmented Face Recognition WEB view
Choose image
Gallery mode
Previous
Next
Previous
Next


The DOM defines a set of methods that allow you to create new elements and add them to a web page.
We're going to use three methods: createElement, createTextNode, and appendChild


The IAD Guide
From its inception, the Canadian Museum of Human Rights (CMHR) was conceived as a space that would be welcoming to the most diverse of audiences. Our goal was to ensure that any member of the public, regardless of age, background or ability, could fully experience all aspects of the Museum.
We have achieved that goal by recognizing that this pursuit will never be finished. Instead of reaching a conclusion, we have instead put into practice a system of iterative evolution and progression. Throughout this process we have fostered a culture of change and understanding.
As our starting point, we have based our work on the Smithsonian guidelines for inclusive and accessible design as well as the guidelines for the Science Museum in London and the Musée de la civilization. We also adhere to the World Wide Web Consortium’s (W3C) web-based accessibility standards and the most stringent criteria under both the provincial and national building codes.
Broadly, inclusiveness has been the CMHR’s methodology, and accessibility has been the outcome. We have achieved this not only with cutting-edge technology, but through nation-wide input from members of the disability community, a partnership between the Museum’s Inclusive Design Advisory Council and the Council of Canadians with Disabilities, and the pioneering Canadian research undertaken by institutions such as the Ontario College of Art and Design University Inclusive Design Research Centre. In addition, the CMHR has created a national testing group to ensure that accessibility standards are met and continue to be maintained.
The CMHR building, as well as its exhibitions, programs and operations have been inclusively designed from the outset, making both our building and its content available in a seamless manner for all our visitors. The CMHR stands as one of the most accessible museums in the world. This guide describes the specifics of how the CMHR has met or exceeded standards for inclusive design.
Purpose
Our goal is to share this information with other institutions and the general public for the benefit of all. Some may use this guide to interpret and apply our accessibility and inclusivity standards in their own ways; others may favour different approaches. We hope that others will share their efforts with us so that we may, in turn, learn from them. In this way the iterative cycle of evolution in consideration, approach, design, solution building, and best-practice/standards can continue.
Guiding Terms
The CMHR acknowledges the fundamental role that the principle of universal design has played in decision-making regarding all aspects of the visitor experience, from the building’s design to exhibition development, education and programming, digital media, our website, and marketing and promotional materials.
The term “universal design” was devised by Ronald L. Mace (1941-98), a fellow of the American Institute of Architects. Mace’s concept proposed that products and environments should be designed “to be usable by all people, to the greatest extent possible, without the need for adaptation or specialized design.” The intent of universal design is to simplify life for everyone by making products, communications and the built environment more usable by as many people as possible at little or no extra cost. In other words, universal design benefits people of all ages and abilities.
“Universal design,” “accessible design” and “inclusive design” are often used interchangeably and may be considered synonyms. However, the CMHR has interpreted inclusive design to have a wider umbrella, embracing diversity in social and economic circumstances while encompassing the universal design ethos. For this reason, this guide uses the term “inclusive design” as a methodology to ensure the Museum meets or exceeds the changing field of accessibility standards. INCLUDE LINK TO INCLUSIVE DESIGN POLICY when created.


The role of the network layer is to move packets from a sending host to a receiving host.
NAT is a method of remapping one IP address space into another by modifying network address information in the IP datagram packet headers wile they are in transit across a traffic routing device. NAT is essentailly the virtualization of IP addresses. NAT adds secuirty and decreases the number of IP address an organization/household needs.
The NAT table is the heart of the whole NAT operation. This takes place inside of the router or any NAT-enabled device. The translation table is created to help the router determine what to do with all incoming packets on all of its interfaces.
IPv4 uses 32 bits for its Internet addresses. That means it can support 2^32 IP addresses in total around 4.28 billion. Thats awesome right? Not really. Unforunately all 4.28 billion IP addresses have been assigned.
So what do we do?
IPv6 utilizes 128-bit Internet addresses. Therefore, it can support 2^128 Internet addresses - 340,282,366,920,938,000,000,000,000,000,000,000,000 of them to be exact. So that is pretty awesome.
Dual Stack Routers. A router can be installed with both IPv4 and IPv6 addresses configured on its interfaces pointing to the network of relevant IP scheme.
NAT Protocol Translation. This is another important method of transition to IPv6 by means of a NAT-PT (Network Address Translation - Protocol Translation) enabled device. With the help of a NAT-PT device, actual can take place happens between IPv4 and IPv6 packets and vice versa. A host with IPv4 address sends a request to an IPv6 enabled server on Internet that does not understand IPv4 address. In this scenario, the NAT-PT device can help them communicate. When the IPv4 host sends a request packet to the IPv6 server, the NAT-PT device/router strips down the IPv4 packet, removes IPv4 header, and adds IPv6 header and passes it through the Internet. When a response from the IPv6 server comes for the IPv4 host, the router does vice versa.
Credits: https://www.tutorialspoint.com/ipv6/ipv6_ipv4_to_ipv6.htm


{% if participanting_events %}
| In Forum | Title | Participants | Created By | Start On |
| {{event.topic.forum.name}} | {{event.topic.title}} | {{event.participants.all|length}}/{{event.max_participants}} | {{event.topic.user.username}} | {{ event.time_period.start|date:"M. d, Y" }}, {{ event.time_period.start|time:"H:i" }} |
User has not participated in any events.
{% endif %}


our sponsors The 3D Web Fest is made possible through the generous support of our sponsors. Platinium sponsors Gold sponsors Community sponsors


Pacific Trails Resort
Home
Yurts
Activities
Reservations
Reservations at Pacific Trails
Contact Us Today!
First Name:
Last Name:
E-mail:
Phone:
Comments:
Pacific trails Resort
12010 Pacific Trails Road
Zephyr, CA 95555
888-555-5555


Constructor
new Service(event, context, callback)
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
event |
object | the event passed in from the lambda function | |
context |
object | the context passed in from the lambda function | |
callback |
function | null | the callback function passed in from lambda |
- Source:
Requires:
- module:lodash
- module:winston
Requires
- module:lodash
- module:winston
Members
body
returns the body from the event object.
- Source:
headers
returns the headers from event object.
- Source:
httpMethod
returns the httpMethod from the event object.
- Source:
pathParams
returns the pathParameters from the event object.
- Source:
queryString
returns the query string key value pairs from the event object.
- Source:
Methods
error(error, status)
fires off the callback function with the intention of a failure message back to client.
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
error |
object | the error to return the client. defaults to {}. | |
status |
number | 500 | the status code for the response. defaults to 500. |
- Source:
proxy(data, code) → {Object}
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
data |
object | the object to return the client. defaults to {}. | |
code |
number | 200 | the status code for the response. defaults to 200. |
- Source:
Returns:
- Type
- Object
success(data, status)
fires off the callback function with the intention of a successfully message back to client.
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
data |
object | the object to return the client. defaults to {}. | |
status |
number | 200 | the status code for the response. defaults to 200. |
- Source:


Google Data APIs provide programmatic interface to some of Google’s online services. The Google data Protocol is based upon the Atom Publishing Protocol and allows client applications to retrieve data matching queries, post data, update data and delete data using standard HTTP and the Atom syndication formation. The ZendGData component is a PHP 5 interface for accessing Google Data from PHP. The ZendGData component also supports accessing other services implementing the Atom Publishing Protocol.
See http://code.google.com/apis/gdata/ for more information about Google Data API.
The services that are accessible by ZendGData include the following:
- Google Calendar is a popular online calendar application.
- Google Spreadsheets provides an online collaborative spreadsheets tool which can be used as a simple data store for your applications.
- Google Documents List provides an online list of all spreadsheets, word processing documents, and presentations stored in a Google account.
- Google Provisioning provides the ability to create, retrieve, update, and delete user accounts, nicknames, groups, and email lists on a Google Apps hosted domain.
- YouTube provides the ability to search and retrieve videos, comments, favorites, subscriptions, user profiles and more.
- Picasa Web Albums provides an online photo sharing application.
- Google Analytics is a visitor statistics application.
- Google Blogger is a popular Internet provider of “push-button publishing” and syndication.
- Google CodeSearch allows you to search public source code from many projects.
- Google Notebook allows you to view public Notebook content.
Note
Unsupported services
ZendGData does not provide an interface to any other Google service, such as Search, Gmail, Translation, or Maps. Only services that support the Google Data API are supported.
ZendGData is composed of several types of classes:
- Service classes - inheriting from ZendGData\App. These also include other classes such as ZendGData, ZendGData\Spreadsheets, etc. These classes enable interacting with APP or GData services and provide the ability to retrieve feeds, retrieve entries, post entries, update entries and delete entries.
- Query classes - inheriting from ZendGData\Query. These also include other classes for specific services, such as ZendGData\Spreadsheets\ListQuery and ZendGData\Spreadsheets\CellQuery. Query classes provide methods used to construct a query for data to be retrieved from GData services. Methods include getters and setters like setUpdatedMin(), setStartIndex(), and getPublishedMin(). The query classes also have a method to generate a URL representing the constructed query –getQueryUrl(). Alternatively, the query string component of the URL can be retrieved used the getQueryString() method.
- Feed classes - inheriting from ZendGData\App\Feed. These also include other classes such as ZendGData\Feed, ZendGData\Spreadsheets\SpreadsheetFeed, and ZendGData\Spreadsheets\ListFeed. These classes represent feeds of entries retrieved from services. They are primarily used to retrieve data returned from services.
- Entry classes - inheriting from ZendGData\App\Entry. These also include other classes such as ZendGData\Entry, and ZendGData\Spreadsheets\ListEntry. These classes represent entries retrieved from services or used for constructing data to send to services. In addition to being able to set the properties of an entry (such as the spreadsheet cell value), you can use an entry object to send update or delete requests to a service. For example, you can call $entry->save() to save changes made to an entry back to service from which the entry initiated, or $entry->delete() to delete an entry from the server.
- Other Data model classes - inheriting from ZendGData\App\Extension. These include classes such as ZendGData\App\Extension\Title (representing the atom:title XML element), ZendGData\Extension\When (representing the gd:when XML element used by the GData Event “Kind”), and ZendGData\Extension\Cell (representing the gs:cell XML element used by Google Spreadsheets). These classes are used purely to store the data retrieved back from services and for constructing data to be sent to services. These include getters and setters such as setText() to set the child text node of an element, getText() to retrieve the text node of an element, getStartTime() to retrieve the start time attribute of a When element, and other similar methods. The data model classes also include methods such as getDOM() to retrieve a DOM representation of the element and all children and transferFromDOM() to construct a data model representation of a DOM tree.
Google data services are based upon the Atom Publishing Protocol (APP) and the Atom syndication format. To interact with APP or Google services using the ZendGData component, you need to use the service classes such as ZendGData\App, ZendGData, ZendGData\Spreadsheets, etc. These service classes provide methods to retrieve data from services as feeds, insert new entries into feeds, update entries, and delete entries.
Note: A full example of working with ZendGData is available in the demos/Zend/Gdata directory. This example is runnable from the command-line, but the methods contained within are easily portable to a web application.
The Zend Framework naming standards require that all classes be named based upon the directory structure in which they are located. For instance, extensions related to Spreadsheets are stored in: Zend/Gdata/Spreadsheets/Extension/... and, as a result of this, are named ZendGData\Spreadsheets\Extension\.... This causes a lot of typing if you’re trying to construct a new instance of a spreadsheet cell element!
We’ve implemented a magic factory method in all service classes (such as ZendGData\App, ZendGData, ZendGData\Spreadsheets) that should make constructing new instances of data model, query and other classes much easier. This magic factory is implemented by using the magic __call() method to intercept all attempts to call $service->newXXX(arg1, arg2, ...). Based off the value of XXX, a search is performed in all registered ‘packages’ for the desired class. Here’s some examples:
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ss = new ZendGData\Spreadsheets();
// creates a ZendGData\App\Spreadsheets\CellEntry
$entry = $ss->newCellEntry();
// creates a ZendGData\App\Spreadsheets\Extension\Cell
$cell = $ss->newCell();
$cell->setText('My cell value');
$cell->setRow('1');
$cell->setColumn('3');
$entry->cell = $cell;
// ... $entry can then be used to send an update to a Google Spreadsheet
|
Each service class in the inheritance tree is responsible for registering the appropriate ‘packages’ (directories) which are to be searched when calling the magic factory method.
Most Google Data services require client applications to authenticate against the Google server before accessing private data, or saving or deleting data. There are two implementations of authentication for Google Data: AuthSub and ClientLogin. ZendGData offers class interfaces for both of these methods.
Most other types of queries against Google Data services do not require authentication.
ZendGData makes use of ZendHttpClient to send requests to google.com and fetch results. The response to most Google Data requests is returned as a subclass of the ZendGData\App\Feed or ZendGData\App\Entry classes.
ZendGData assumes your PHP application is running on a host that has a direct connection to the Internet. The ZendGData client operates by contacting Google Data servers.
Create a new object of class ZendGData\App, ZendGData, or one of the subclasses available that offer helper methods for service-specific behavior.
The single optional parameter to the ZendGData\App constructor is an instance of ZendHttpClient. If you don’t pass this parameter, ZendGData creates a default Zend\Http\Client object, which will not have associated credentials to access private feeds. Specifying the Zend\Http\Client object also allows you to pass configuration options to that client object.
1 2 3 4 | $client = new Zend\Http\Client();
$client->setConfig( ...options... );
$gdata = new ZendGData\Gdata($client);
|
Beginning with Zend Framework 1.7, support has been added for protocol versioning. This allows the client and server to support new features while maintaining backwards compatibility. While most services will manage this for you, if you create a ZendGData instance directly (as opposed to one of its subclasses), you may need to specify the desired protocol version to access certain server functionality.
1 2 3 4 5 6 | $client = new Zend\Http\Client();
$client->setConfig( ...options... );
$gdata = new ZendGData\Gdata($client);
$gdata->setMajorProtocolVersion(2);
$gdata->setMinorProtocolVersion(null);
|
Also see the sections on authentication for methods to create an authenticated Zend\Http\Client object.
You can specify parameters to customize queries with ZendGData. Query parameters are specified using subclasses of ZendGData\Query. The ZendGData\Query class includes methods to set all query parameters used throughout GData services. Individual services, such as Spreadsheets, also provide query classes to defined parameters which are custom to the particular service and feeds. Spreadsheets includes a CellQuery class to query the Cell Feed and a ListQuery class to query the List Feed, as different query parameters are applicable to each of those feed types. The GData-wide parameters are described below.
The q parameter specifies a full-text query. The value of the parameter is a string.
Set this parameter with the setQuery() function.
The alt parameter specifies the feed type. The value of the parameter can be atom, rss, json, or json-in-script. If you don’t specify this parameter, the default feed type is atom. NOTE: Only the output of the atom feed format can be processed using ZendGData. The Zend\Http\Client could be used to retrieve feeds in other formats, using query URLs generated by the ZendGData\Query class and its subclasses.
Set this parameter with the setAlt() function.
The maxResults parameter limits the number of entries in the feed. The value of the parameter is an integer. The number of entries returned in the feed will not exceed this value.
Set this parameter with the setMaxResults() function.
The startIndex parameter specifies the ordinal number of the first entry returned in the feed. Entries before this number are skipped.
Set this parameter with the setStartIndex() function.
The updatedMin and updatedMax parameters specify bounds on the entry date. If you specify a value for updatedMin, no entries that were updated earlier than the date you specify are included in the feed. Likewise no entries updated after the date specified by updatedMax are included.
You can use numeric timestamps, or a variety of date/time string representations as the value for these parameters.
Set this parameter with the setUpdatedMin() and setUpdatedMax() functions.
There is a get*() function for each set*() function.
1 2 3 | $query = new ZendGData\Query();
$query->setMaxResults(10);
echo $query->getMaxResults(); // returns 10
|
The ZendGData class also implements “magic” getter and setter methods, so you can use the name of the parameter as a virtual member of the class.
1 2 3 | $query = new ZendGData\Query();
$query->maxResults = 10;
echo $query->maxResults; // returns 10
|
You can clear all parameters with the resetParameters() function. This is useful to do if you reuse a ZendGData object for multiple queries.
1 2 3 4 5 6 | $query = new ZendGData\Query();
$query->maxResults = 10;
// ...get feed...
$query->resetParameters(); // clears all parameters
// ...get a different feed...
|
Use the getFeed() function to retrieve a feed from a specified URI. This function returns an instance of class specified as the second argument to getFeed, which defaults to ZendGData\Feed.
1 2 3 4 5 | $gdata = new ZendGData\Gdata();
$query = new ZendGData\Query(
'http://www.blogger.com/feeds/blogID/posts/default');
$query->setMaxResults(10);
$feed = $gdata->getFeed($query);
|
See later sections for special functions in each helper class for Google Data services. These functions help you to get feeds from the URI that is appropriate for the respective service.
When retrieving a feed that contains a large number of entries, the feed may be broken up into many smaller “pages” of feeds. When this occurs, each page will contain a link to the next page in the series. This link can be accessed by calling getLink('next'). The following example shows how to retrieve the next page of a feed:
1 2 3 4 5 6 7 8 | function getNextPage($feed) {
$nextURL = $feed->getLink('next');
if ($nextURL !== null) {
return $gdata->getFeed($nextURL);
} else {
return null;
}
}
|
If you would prefer not to work with pages in your application, pass the first page of the feed into ZendGData\App::retrieveAllEntriesForFeed(), which will consolidate all entries from each page into a single feed. This example shows how to use this function:
1 2 3 4 | $gdata = new ZendGData\Gdata();
$query = new ZendGData\Query(
'http://www.blogger.com/feeds/blogID/posts/default');
$feed = $gdata->retrieveAllEntriesForFeed($gdata->getFeed($query));
|
Keep in mind when calling this function that it may take a long time to complete on large feeds. You may need to increase PHP‘s execution time limit by calling set_time_limit().
After retrieving a feed, you can read the data from the feed or the entries contained in the feed using either the accessors defined in each of the data model classes or the magic accessors. Here’s an example:
1 2 3 4 5 6 7 8 9 10 11 12 | $client = ZendGData\ClientLogin::getHttpClient($user, $pass, $service);
$gdata = new ZendGData\Gdata($client);
$query = new ZendGData\Query(
'http://www.blogger.com/feeds/blogID/posts/default');
$query->setMaxResults(10);
$feed = $gdata->getFeed($query);
foreach ($feed as $entry) {
// using the magic accessor
echo 'Title: ' . $entry->title->text;
// using the defined accessors
echo 'Content: ' . $entry->getContent()->getText();
}
|
After retrieving an entry, you can update that entry and save changes back to the server. Here’s an example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $client = ZendGData\ClientLogin::getHttpClient($user, $pass, $service);
$gdata = new ZendGData\Gdata($client);
$query = new ZendGData\Query(
'http://www.blogger.com/feeds/blogID/posts/default');
$query->setMaxResults(10);
$feed = $gdata->getFeed($query);
foreach ($feed as $entry) {
// update the title to append 'NEW'
echo 'Old Title: ' . $entry->title->text;
$entry->title->text = $entry->title->text . ' NEW';
// update the entry on the server
$newEntry = $entry->save();
echo 'New Title: ' . $newEntry->title->text;
}
|
The ZendGData object has a function insertEntry() with which you can upload data to save new entries to Google Data services.
You can use the data model classes for each service to construct the appropriate entry to post to Google’s services. The insertEntry() function will accept a child of ZendGData\App\Entry as data to post to the service. The method returns a child of ZendGData\App\Entry which represents the state of the entry as it was returned from the server.
Alternatively, you could construct the XML structure for an entry as a string and pass the string to the insertEntry() function.
1 2 3 4 5 6 7 8 9 10 11 12 13 | $gdata = new ZendGData\Gdata($authenticatedHttpClient);
$entry = $gdata->newEntry();
$entry->title = $gdata->newTitle('Playing football at the park');
$content =
$gdata->newContent('We will visit the park and play football');
$content->setType('text');
$entry->content = $content;
$entryResult = $gdata->insertEntry($entry,
'http://www.blogger.com/feeds/blogID/posts/default');
echo 'The <id> of the resulting entry is: ' . $entryResult->id->text;
|
To post entries, you must be using an authenticated Zend\Http\Client that you created using the ZendGData\AuthSub or ZendGData\ClientLogin classes.
Option 1: The ZendGData object has a function delete() with which you can delete entries from Google Data services. Pass the edit URL value from a feed entry to the delete() method.
Option 2: Alternatively, you can call $entry->delete() on an entry retrieved from a Google service.
1 2 3 4 5 6 7 8 9 10 11 | $gdata = new ZendGData\Gdata($authenticatedHttpClient);
// a Google Data feed
$feedUri = ...;
$feed = $gdata->getFeed($feedUri);
foreach ($feed as $feedEntry) {
// Option 1 - delete the entry directly
$feedEntry->delete();
// Option 2 - delete the entry by passing the edit URL to
// $gdata->delete()
// $gdata->delete($feedEntry->getEditLink()->href);
}
|
To delete entries, you must be using an authenticated Zend\Http\Client that you created using the ZendGData\AuthSub or ZendGData\ClientLogin classes.
The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.


Hello, I'm Arshad. I Like designing and creating stuff for all
domains whether it is Mobile, Web, Desktop. My Goal is to make
efficient, clean Applications that give an easy and perfect
experience.
Cerificates And Achievements:
QQI Level 5 Certificate in software Development
08/2018 - 08/2019
With Distinction
Software Development, Web Development, Algorithms, Software
Architecture
Interests:
I like to Read books, Write Computer Programs and learn new Skills.


Aos.js library allows you to add and trigger animations as you scroll up and down a page
The best part is no many lines of codes are required to make this happen!
data-aos attribute will be added to the element we want to animate
fade, fade-up, fade-down, fade-left, fade-right, fade-up-right, fade-up-left, fade-down-right
flip-up, flip-down, flip-left,flip-right
slide-up, slide-down, slide-left, slide-right
zoom-in ,zoom-in-up, zoom-in-down, zoom-in-left, zoom-in-right, zoom-out, zoom-out-up, zoom-out-down, zoom-out-left, zoom-out-right
thats all wee need to know...
... to start using ...
Aos.js in our projects.


climate change conservation management protected adaptation participants benefits Conservation knowledge areas governance process ecological new social transitions research Futures transformation {border-style Future-Proofing partners values existing managers planning px;} understanding #ffffff;} change. need political activities changes workshop Participants Research WWF institutional shared team Environmental Phase approach different project Climate Colombia impacts processes ecosystems incremental learning pilot practitioners scientific support thinking Change Dialogue National Transition area future-oriented local questions technical PA-BAT biodiversity concepts conservation. decision-making explore important including information policy role strategies work Hoffmann Luc based change, change? current develop development final ideas include included opportunities options practices previous range rules synthesis tools understand ways ./s--- Kerkhoff PNN Pelling Pilot Protected Table academic context enable focused future identified implementation key px; resilience science society species van {font-family (), Dunlop Management Wyborn adaptation, challenges changing core developed developing discussion diverse ecosystem environmental focus font-size interests interviews people possible potential resources series specific staff stakeholders transformative values, way Adaptation Ecology Facilitated Managing Society [], actions adaptive areas. benefits, change: civil communities complex conceptual considered double; enabled features global identify implications issue larger lessons maintain management. noted ongoing practical process, provide report services site social, study used value water workshops Colombia, Dialogue, Feedback Knowledge Lessons Test VRK accumulate action activities, applied approaches article benefits. border-color border-width broader challenging co-production cognitive consider create creating decisions dialogue difficult directly emerged engage evolutionary example, experience foundations frameworks goal goals identifying knowledge, landscape methods national natural phase practice prepare process. provided question science, solid; sought state sustainable tool useful working {font-style {font-weight ./ES-- ./j.gloenvcha... Amazon Ambio Ansell Australian Biodiversity Dudley Fig. Global PABAT Park Participant Review Science Scientific Stolton Values WWF-C West able academics achieve activities. advisers anticipate areas, arrangements array assessment attributes barriers basis biophysical bold capacity challenge co-design conservation" conservation, context. conversation courier; critical cultural days despite development. did ecosystems, em; enabling examining feedback governance, grid.. group help idea informed institutions learned learning. main mapping order outcomes partner pathway piloting plans policy, presented propositions pt;} recognise recognised recognising recognition regarded relate relevant represented requires shift significant small suggests summarise summarised supporting targets traditional transformation. worked


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 1
Preheat oven to 200C/400F/Gas 6.
Butter a small ovenproof dish and place the haddock fillet into it.
Cover the top of the fish with the sliced mushrooms, then pour over the wine and hot vegetable stock. Transfer the dish to the oven and cook for eight minutes, or until cooked through.
Remove the dish from the oven and pour the juices from the cooked fish into a saucepan, then loosely cover the fish with aluminium foil to keep warm.
Bring the juices to the boil in the saucepan and cook over a high heat for two minutes, or until slightly reduced. Reduce the heat slightly, then add the 50g/1¾oz butter, dill and lemon juice to the pan and simmer for one minute. Add the cream and cook for another minute.
To serve, place the haddock onto a serving plate and pour over the sauce.


Pick a light mode, change any settings and hit send!
Light mode:
Made by @CodeFoodPixels
Read the post about making the jumper
View source on GitHub


Interface: Random
interface Random
Interface for generating 16-bit and 32-bit random numbers.
- Author:
-
Barbara Hohlt
- Date:
-
March 1 2005
Commands
command uint16_t rand16()
command uint32_t rand32()
Commands - Details
rand16
command uint16_t rand16()
- Returns:
-
Returns low 16 bits of the pseudorandom number.
rand32
command uint32_t rand32()
- Returns:
-
Returns the 32-bit pseudorandom number.


WITNESS LIST Finance Committee (Subcommittee on Drought Response Advisory Committee Rpt.) March 2, 1999-9:00A Drought Response Advisory Cmte Rpt On: Albert, William E. (Self), Hutto Avant, Bob (Texas Food and Fibers Commission), Austin Bennett, Richard (Tony) (Texas Forest Products Council), Diboll Bohls, Randall (Williamson County Steering Committee), city not given Brittin, Carolyn (Texas Water Development Board), Austin Buckley, Robert G. (Texas State Soil & Water Conservation Board), Temple Carlson, Billy (Farmers/Ranchers/Agri-Business), city not given Carter, Charles (Independent Cattlemen's Association of Texas), Austin Combs, Susan (Texas Department of Agriculture), Austin Heller, Paul (Rio Queen Citrus, Inc./Texas Citrus Mutual), Mission Hofmann, John (Texas Natural Resource Conservation Commission), Austin Hubert, Martin (Texas Department of Agriculture), Austin Kubecka, Bill (Texas Grain Sorghum), Palacio Loeffler, Cindy (Texas Parks & Wildlife Department), Austin Lundgren, Robert (Self/Farmers), Elgin Miller, Travis, D. (Texas Agricultural Extension Service), College Station Millwee, Tom (TX Dept. of Public Safety/Governor's Div. of Emergency Mgmt.), Austin Pedersen, Craig (Texas Water Development Board), Austin Powers, Bill (Texas Farm Bureau), Austin Schernik, Doug (Williamson County), Taylor Verett, Steve (Cotton Producers), Lubbock Registering, but not testifying: On: Barron, Edwin H. (Texas Forest Service), College Station Boggus, Tom G. (Texas Forest Service), College Station Burkett, Jack (Independent Bankers Association of Texas), Austin Cooke, Dr. Jerry L. (Texas Parks & Wildlife Department - Upland Wildlife Ecology), Austin Dugas, Bill (Texas Agricultural Extension Service), College Station Durocker, Philip (Texas Parks & Wildlife Department), Austin George, Ron (Texas Parks & Wildlife Department), Austin Gwinn, Cris (Self), Taylor Harris, B.L. (Texas Agricultural Extension Service), College Station Hufford, Ron (Texas Forestry Association), Lufkin Moore, James (Texas State Soil & Water Conservation Board), Temple Shively, Dale (Texas Parks & Wildlife Department), Austin Thuss, Michael (The San Antonio Water System), Austin State's Risk of Wildfire On: Hull, James B. (Texas Forest Service), College Station Young, Bobby (Texas Forest Service), Lufkin


Hellboy's David Harbour Jokes About Film's Box Office Flop
by Sundi RoseDavid Harbour, who starred in Neil Marshall's Hellboy reboot, isn't afraid to take shots at the film's poor box office performance.
Harbour granted Architectural Digest a tour of his home and stopped to discuss his poster for the live-action Masters of the Universe film starring Dolph Lundgren and Frank Langella, referring to it as "one of his most prized possessions. It has Frank Langella in a ton of prosthetics as Skeletor. I heard him interviewed where he considers it one of his greatest roles of all time and I just like the fact that a really great actor that I admire could do a film in full prosthetics that wasn't received very well."
In June, Harbour confirmed there were no plans for a sequel to the Hellboy reboot, saying, "There's a lot of people who reach out to me who really loved it and really enjoyed the new take, and were just happy to see him back on the screen, but I know in the culture at large, I don't think it was very well received."
Harbour's next big-screen outing is Marvel Studios' Black Widow. Directed by Cate Shortland, the film also stars Scarlett Johansson, Florence Pugh, O-T Fagbenle and Rachel Weisz and arrives in theaters on May 1, 2020.
https://schema.orgBreadcrumbListListItem1Homehttps://www.cbr.com/ListItem2Movieshttps://www.cbr.com/category/movies/ListItem3Movie Newshttps://www.cbr.com/category/movies/news-movies/ListItem4Hellboy's David Harbour Jokes About Film's Box Office Flophttps://www.cbr.com/hellboy-david-harbour-box-office-flop-joke/


CODE OF CONDUCT
CODE OF CONDUCT
POLICY STATEMENT
The London Squash and Fitness Club (the “Club”) is dedicated to providing its members, staff, guests and visitors with an environment in which they will be treated civilly and with respect. This Code of Conduct sets out the expected behaviors of all Club members, staff, guests and visitors.
Individuals are encouraged to report any alleged incidents of prohibited conduct, whether they feel that it is directed toward them or someone else. Club management will investigate and deal with all concerns, complaints, or incidents in a fair and timely manner while respecting the complainant’s privacy to the extent possible.
When visiting other squash clubs or participating in Club related activity, members of the London Squash & Fitness Club are expect to uphold the standards of conduct outlined in this Code.
EXPECTED BEHAVIORS
The expected behaviors of all members, staff, guests and visitors of the London Squash and Fitness Club include, but are not limited to, the following:
To conduct oneself civilly and professionally.
To treat others with courtesy, respect, and dignity.
To exhibit sportsmanship and fairness both on and off court.
To take care in ensuring that the Club’s facilities are used responsibly and not damaged..
When participating in events at other squash clubs, to comply with their rules and regulations.
PROHIBITED CONDUCT
Behaviors which may be contrary to this Code include, but are not limited to the following:
Behavior that demeans, ridicules, or embarrasses a member, employee, guest, or visitor. This includes comments, gestures, and jokes with may adversely impact the individual’s enjoyment of the Club.
Bullying, mistreatment, intimidation or teasing which creates an uncomfortable environment. Verbal abuse, belittling, or excessive profanity.,
Consumption of personal alcohol on the premises.
Theft of any kind.
Reprisal or retaliation against anyone who invokes this Code.
Harassment, sexual harassment, or discrimination of any kind.


Currently seeking a position as a Software Tester in a professional organization. Have been caregiving for a family member since the end of my last contract. Since that is taken care of now ready to get back. Looking for a mid level position in manual or automation testing. Experienced with mainframe application and web application testing.
Developed Test Automation Frameworks and Test Scripts for mainframe terminal applications. Performed functional regression testing using HP UFT and used HP ALM for Test Management. Updated functional regression scripts after each release cycle and was responsible for maintaining repositories. Used VBScript to write Test Scripts for automation using Object Oriented Descriptive Programming Automated Test execution to uncover identify and document software issues for complex web applications. Prepared Test Data for UAT and SI. Actively engaged in development of Test Plans, Strategies and PID. Responsible for Test Result reporting and review of Coverage, Mitigation and Exit Reports. Demonstrated methodical and detail oriented approach to all assignments while adhering to compressed timelines Procurement of certification from HP for UFT Essentials training course and various compliance trainings.
Performed User Acceptance testing on multiple web applications using manual testing methods. Created and executed Test Cases based on business and functional requirements. Identified, validated and verified software issues through detailed documentation and regular communication with project teams. Used Quality Center to manage test cases and log defects using Bugzilla. Participated in Test Plan and Test Script walkthroughs. Escalated Project Risks to Team Leads, Business Partners, Dev Partners, Testing Partners and Management. Cross trained with the automation team and worked with Selenium IDE and WebDriver. Worked collaboratively with development teams and business groups to complete comprehensive testing on major releases.
Certification Number: ECC43698256077
Certification Number: ECC17929444435
Certification Number: ITB-CTFL-0076651
Apart from mainframe and web application testing I am also interested in mobile aplication testing and development.I also do enjoy web designing in my free time which helps me to keep up with the latest technolgy in the front-end web development world. Academically I am currently working towards becoming a Licensed Penetratrion Tester (LPT) or a Cybersecurity Analyst.


Math Matrix
Wrong!
- Choose numbers that are either horizontally, vertically, or diagonally related together.
- In between the numbers, utilize the operation blocks to put either +, -, *, /, or =.
- When you have a equation, hit the check answer box, or press enter while focused in an operation
block.


Eng.Ibrahim Khdairat
Hello,,
To go to Guess Game click on " Guess Game " on the links or
Click Here
About Me
Education
Experince
Guess Game
Contact Me
There Is a List of My Best 10 Movies
The Black List
Game Of Thrones
Hannibal
Dark
Prison Break
Breaking Bad
Death Note (Anime)
La casa de paple
Rush Hour
The In-visable Guest


You will receive an email shortly. As soon as you confirm it we will redirect you to the confirmation page and you will start receiving emails for you currency {{vm.user.currency}}


|
White
America
(Eminem) |
|
(Prelude)
America! We love you! How many people are proud to be citizens of this beautiful country of ours? The stripes and the stars for the rights that men have died for to protect The women and men who have broke their necks for the freedom of speech the United States government has sworn to uphold. (Yo I want everybody to listen to the words of this song) or so we're told... Verse 1 I never would've dreamed in a million years I'd see, so many motherfuckin' people who feel like me who share the same views and the same exact beliefs, it's like a fuckin' army marchin' in back of me So many lives I touch, so much anger aimed in no particular direction, just sprays and sprays and straight through your radio waves it plays and plays, till it stays stuck in your head for days and days who woulda thought, standing in this mirror bleachin' my hair, with some peroxide, reachin for a t-shirt to wear that I would catapult to the forefront of rap like this?  Chorus X2 White America! I could be one of your kids White America! Little Eric looks just like this White America!        I'm just kiddin' America, you know I love you... |


- Home
- About Us
- Contact Us
- Fund Projects
- Team
To make tax payment seamless and accountable.
TaxIt.NG is a financial non-governmental organisation built by a team of young interns and change agents to solve the persisting problem of tax collection and poor accountable utilisation of tax revenue to create social development and benefits to taxpayers in Nigeria,where there's a continuum between how citizens can assess the government's performance and their resolve to continue paying taxes towards these visible performance improvements.
Taxpayers feel cheated, neglected, and even worst still suffers multiple taxation due to lack of proper documentation and corruption. In the 21st century businesses are changing, as business are now driven by data and technology. Our goal at TaxIt.NG is to make tax payment seamless and transparent using technology to create transparent channel through which citizens can hold their government accountable, have the capacity to choose what projects their taxes should go into and effectively track their preferred project's progress to drive the change we need and deserve in Nigeria.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi dolorum facilis harum hic, laudantium sunt, earum deleniti, tempora ex quae quos. Praesentium, ab nemo consequuntur possimus ullam itaque ipsam quam aliquam nisi consequatur perferendis rerum illum minima repudiandae harum illo eveniet vitae, quis nihil dicta sed! Dolorum excepturi illum neque incidunt ut eaque beatae voluptatum porro rerum cum pariatur id tenetur vero magnam, qui magni. Laboriosam voluptatem veniam hic, ipsam sint vero quae harum quas unde odit perspiciatis error distinctio reprehenderit! Placeat cupiditate corrupti in facere pariatur modi ab accusan!


Configuring Search Admin Word Length
How to set the maximum and minimum words length to be included in searches by configuring the Host Setting.
- Navigate to Host > Host Settings.
- Select the Advanced Settings tab.
- Expand the Search section.
- In the Minimum Word Length text box, enter the minimum length word to search for as a numeric value. Words that are shorter than this value will be ignored during searches. The default setting is 3.
- In the Maximum Word Length text box, enter the maximum length of words that will be searched for as a numeric value. Words that are longer than this value will be ignored during searches. The default setting is 255.
-
Click the Update button.


Introduction to Websites
Introduction to Websites
This course aims to help start you on your way to creating your own website by giving you the tools to navigate the world of online tutorials and web development.
This course will cover
- Collaborative development practices
- Web page design with HTML
- Web page styling with CSS
- Functional programming with Javascript
- Setting up and hosting a website with a domain
Students
Instructors
Useful Links
Stack Overflow
Forum for questions about all aspects of software development
This Repository
Source for code relating to this website
UNIX commands
A list of useful UNIX commands
UNIX to Windows
A list of command conversions between UNIX and Windows
Git Commands
A list of useful commands for Git interactions
W3 Schools HTML
Reference for HTML tags


Inside Sundowns: 10 Images Of Smiles & Laughs
by Soccer LadumaMamelodi Sundowns are underway with preparations for an important cup clash this weekend, with a spot in the final of the competition up for grabs.
Click through the gallery to view the Brazilians with smiles and laughs in their training session this week
The Brazilians will lock horns with Golden Arrows in the semi-finals of the Telkom Knockout competition on Saturday afternoon, this off the back of a 3-2 league loss to the same side in their most recent Absa Premiership encounter.
Read more: How Middendorp Should Approach Semi-Final
In what is deemed as a game of vengeance, Sundowns are aware of the importance in adding more domestic silverware to their cabinet.
While the club has won back-to-back league titles, it has been three seasons since they last won a South African cup competition.
A spot in the final means that they will either come up against their nemesis, Kaizer Chiefs, or Maritzburg United, with the two sides set to lock horns the day after.
Arrows will play hosts to Sundowns at the Sugar Ray Xulu Stadium on Saturday, November 23 and it remains to be seen whether Head Coach Pitso Mosimane’s side will send Steve Komphela and his troops out of the competition in their own backyard.


I read on Twitter one day that fewer than 1% of American nuns are under the age of 40. This dilemma made me curious. How does someone become a nun anyway? I decided to find out more.
I watched a documentary about "nun runs," where young women travel across the U.S. and tour convents like high school kids visiting colleges. A few years later, our newsroom was hosting a creative pitching session, and I threw out the idea that we could join a nun run. The editors were intrigued, so I tracked down a handful of young nuns in New Jersey and interviewed them.
Unlike interviews for news stories, these conversations were long and winding. I wasn't looking for a specific angle. I just hung out with the nuns at their convents or monasteries to find out more about their lives. I built common ground with them and slowly gained their trust.
I returned to the newsroom with a few motifs in mind. I was assigned a co-writer, Amanda, to help cover more ground and give the story another perspective. We were two young women interviewing other young women and I think some of that natural dialogue comes through in the story. We wrote several drafts before landing on the final version, and I asked if I could personally design the article.
I knew what image I wanted for the cover and I worked closely with photographer Patti until we landed on the perfect shot. I did this project before I knew how to code, so I googled a few CSS tricks and made the graphic assets in Illustrator. I went through a few dozen design options before deciding on the branding and flow of the story. This project taught me how to ask the right questions about stakeholders' goals and how to iterate and refine a design concept.
The story was well-received by our audience. WNYC invited Amanda and me to speak on air about the reporting process. The society for features journalism awarded the article second place in its diversity in the digital features category. It also landed me a spot at the Michael Cromartie Faith Angle Forum in Washington D.C.
I stay connected with some of the nuns. Recently,
I asked one for her advice on social distancing, and I've considered one day writing a book about their lives.


FizzBuzz is a common coding exercise that is well known as a coding question asked in interviews that is designed to filter out candidates.
Let's try a modified version of FizzBuzz with If/Else and see if we can do it:
Generate a random number between 0 and 5. If the result is divisible by 3 alert "fizz". If the number is divisible by 5, alert "buzz", otherwise print the number to the console.


{%extends "master.html"%} {%block title%}Spam Rules{%endblock%} {%block header%}Spam Rules{%endblock%} {%block headextra%} {%endblock%} {%block content%}
| Pattern type [?] | Expression | Type [?] | ||
|---|---|---|---|---|
Copy text here from the chat to test out the spam rules, before saving them!


Is a website concerning an island resort which you can be able to book for a room and also make travel arrangements
Juja Ads is a site for advertisement of goods,services and also restaraunts and lodges


GtkCanvas Class Reference
#include <gtk-canvas.h>
List of all members.
Constructor & Destructor Documentation
| GtkCanvas::GtkCanvas |
( |
Gdk::Color |
bc = Gdk::Color("White") |
) |
|
Member Function Documentation
| void GtkCanvas::setBackColor |
( |
Gdk::Color |
bc |
) |
|
| bool GtkCanvas::onExposeEvent |
( |
GdkEventExpose * |
event |
) |
[protected] |
Member Data Documentation
The documentation for this class was generated from the following files:
- /personal/workspace/projects/opengrafik/src/canvas/gtk-canvas.h
- /personal/workspace/projects/opengrafik/src/canvas/gtk-canvas.cc


#groups
to JSON
format fileFeedItem
to file in JSON
format (each item is stored in a separate file, that is, 10 items 10
files)#buildDate
of Feed
#description
of Feed
#groupDescription
of
FeedGroup
#description
of
FeedItem
#publicationDate
of
FeedItem
#groupTitle
of
FeedGroup
#url


|
|||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Classes in net.java.dev.designgridlayout used by net.java.dev.designgridlayout | |
|---|---|
| DesignGridLayout
Swing LayoutManager that implements "Canonical Grids" as used by graphic artists to design magazines, posters, forms... |
|
| IBarRow
Any row created by DesignGridLayout.row().bar() implements this
interface. |
|
| IGridRow
Any row created by DesignGridLayout.row().grid() implements this
interface. |
|
| IHideable
Any row created by DesignGridLayout implements this minimal
interface. |
|
| INonGridRow
Any row created by one of DesignGridLayout.row().left() ,
DesignGridLayout.row().center() or DesignGridLayout.row().right()
implements this interface. |
|
| IRow
Any row created by DesignGridLayout implements this minimal
interface. |
|
| IRowCreator
Interface returned by row() in order to specify the
type of row to be actually added to the current layout (grid, centered, left-
or right-aligned). |
|
| ISpannableGridRow
Rows created by DesignGridLayout.row().grid() and
DesignGridLayout.row().grid(JLabel) implement this interface. |
|
| ISubGridStarter
This interface is used to start a new canonical grid row (when called from row() ), or to start a new canonical sub-grid in the
current grid row (when called from IGridRow ). |
|
| LabelAlignment
Defines how components located in a sub-grid label column can be aligned inside this column. |
|
| RowGroup
This class is used to group several rows from a layout, in order to show or hide them all in a single call. |
|
| Tag
Tag that can be assigned to a JComponent (normally a JButton ) so
that DesignGridLayout know where to locate it in an IBarRow , based on the
UI guidelines for the current platform. |
|
|||||||||
| PREV NEXT | FRAMES NO FRAMES |


Components
The Video.js player is built on top of a simple, custom UI components architecture. The player class and all control classes inherit from the Component
class, or a subclass of Component
.
videojs.registerComponent('Control', videojs.extends(Component));
videojs.registerComponent('Button', videojs.extends(videojs.getComponent('Control')));
videojs.registerComponent('PlayToggle', videojs.extends(videojs.getComponent('Button')));
The UI component architecture makes it easier to add child components to a parent component and build up an entire user interface, like the controls for the Video.js player.
// Adding a new control to the player
myPlayer.addChild('BigPlayButton');
Every component has an associated DOM element, and when you add a child component, it inserts the element of that child into the element of the parent.
myPlayer.addChild('BigPlayButton');
Results in:

The actual default component structure of the Video.js player looks something like this:
Player
PosterImage
TextTrackDisplay
LoadingSpinner
BigPlayButton
ControlBar
PlayToggle
VolumeMenuButton
CurrentTimeDisplay (Hidden by default)
TimeDivider (Hidden by default)
DurationDisplay (Hidden by default)
ProgressControl
SeekBar
LoadProgressBar
MouseTimeDisplay
PlayProgressBar
LiveDisplay (Hidden by default)
RemainingTimeDisplay
CustomControlsSpacer (No UI)
ChaptersButton (Hidden by default)
SubtitlesButton (Hidden by default)
CaptionsButton (Hidden by default)
PictureInPictureToggle
FullscreenToggle
ErrorDisplay
TextTrackSettings
Progress Control
The progress control is made up of the SeekBar. The seekbar contains the load progress bar and the play progress bar. In addition, it contains the Mouse Time Display which is used to display the time tooltip that follows the mouse cursor. The play progress bar also has a time tooltip that show the current time.
By default, the progress control is sandwiched between the volume menu button and
the remaining time display inside the control bar, but in some cases, a skin would
want to move the progress control above the control bar and have it span the full
width of the player, in those cases, it is less than ideal to have the tooltips
get cut off or leave the bounds of the player. This can be prevented by setting the
keepTooltipsInside
option on the progress control. This also makes the tooltips use
a real element instead of pseudo elements so targeting them with css will be different.
let player = videojs('myplayer', {
controlBar: {
progressControl: {
keepTooltipsInside: true
}
}
});


Gradually change the background-color from red to blue:
Note: CSS Animations do not work in Internet Explorer 9 and earlier versions.


Lighter is a lightweight Node.js framework for web applications and APIs.
Isomorphic JavaScript
When used for web applications, Lighter will render views either on the server or the
client. This functionality will allow Lighter to optimize for low latency. The first
request to your web app renders HTML and returns it to the browser, then views are
lazy-loaded into the client so that subsequent requests only need to return JSON that
the client can render using its cached views.
Auto-routing
Lighter is influenced by the PHP framework CodeIgniter, in that by default, controllers
and their methods will automagically get added to the router based on their names and
where they are found under the controllers directory. This means you don't have to
write a ton of routing code, and you know where to find a controller method if you
know its URL, and vice versa.
Performance
Lighter's default router is extremely simple so that it can respond faster than other
frameworks such as Express, Restify and Meteor. The caveat is that dynamic paths are
not supported by default, so you would need to do /blog/article?id=1 rather than
/blog/article/1. It's a small price to pay for amazing server throughput.
Building APIs
Lighter's simplicity makes it great for APIs, and we'll be adding functionality to
auto-generate API documentation.
Getting started
To use lighter, first you must install it.
npm i lighter
Using lighter is as simple as creating a lighter directory structure (as seen below)
and then creating an app.js that requires lighter.
var lighter = require('lighter');
Then you can run your app with Node.
node app
Soon, this setup process will be replaced with a CLI that will go something like:
sudo npm i -g lighter
lighter new myapp
cd myapp
node app
Directory structure
Assets loaded with Chug
Lighter uses Chug to cache its static assets, and each type of asset comes from an
assigned directory. Chug also loads models views and controllers. Changes inside
those directories will trigger reloads of the items that have been changed.
If you want to load assets from other directories (such as node_modules/), you can
add to the list of locations using an API method like addPublics, addScripts,
addStyles or addViews.
Controllers
Here's a sample controller that you could save into
/controllers/ContactController.js:
var Controller = require('lighter/lib/Controller');
module.exports = Controller.extend({
index: function GET(request, response) {
response.writeHead(200, {'content-type': 'text/html'});
response.end('TODO: Show contact info and a form.');
},
send: function POST(request, response) {
response.writeHead(200, {'content-type': 'text/html'});
response.end('TODO: Thank the user for contacting us.');
}
});
To see the contact us form, you would visit /contact, and the form you submit
would post to /contact/send. Once we have models, we can do more interesting
things here.
Models
Models are coming soon...
Views
Views are rendered by name from response.view.
The following would render a template that is stored at /views/hello.ltl with a
context indicating who to say hello to.
function GET(request, response) {
response.view('hello', {who: 'World'});
}
API
lighter.addControllers(Array|string location)
The location argument can be a single location or an array of locations. Lighter
adds this location to the array of controller locations to be chugged.
lighter.addPublics(Array|string location)
The location argument can be a single location or an array of locations. Lighter
adds this location to the array of public file locations to be chugged.
lighter.addScripts(Array|string location)
The location argument can be a single location or an array of locations. Lighter
adds this location to the array of script file locations to be chugged.
lighter.addStyles(Array|string location)
The location argument can be a single location or an array of locations. Lighter
adds this location to the array of style file locations to be chugged.
lighter.addViews(Array|string location)
The location argument can be a single location or an array of locations. Lighter
adds this location to the array of view file locations to be chugged.
lighter.setApp(Object app)
If you would like to use Express (or another framework that exposes
app.get(path, callback) etc., to do your routing, you can set Lighter to do this.
lighter.setLogger(Object logger)
Set an alternative logger that exposes logger.log(message).
lighter.setHttpPort(port)
Set the port that you would like Lighter to use for HTTP.
lighter.setHttpsPort(port)
Set the port that you would like Lighter to use for HTTPS.
lighter.setAsciiArt(art)
Set an array of lines that you would like to be displayed upon startup.
Object lighter.chug
A reference to the Chug module that Lighter uses.
Object lighter.beams
A reference to the Beams module that Lighter uses.
Object lighter.colors
A reference to the Colors module that Lighter uses.
Object lighter.app
A reference to the Express-like app that's been set via lighter.setApp(app).
Object lighter.logger
A reference to the logger that's been set via lighter.setLogger(logger).
Array|Object lighter.publics
The files that have been added via lighter.setPublic(location) or
found in the publics/ directory.
Array|Object lighter.scripts
The scripts that have been added via lighter.setPublic(location) or
found in the scripts/ directory.
Array|Object lighter.styles
The stylesheets that have been added via lighter.setPublic(location) or
found in the styles/ directory.
Array|Object lighter.views
The views that have been added via lighter.setPublic(location) or
found in the views/ directory.
Array|Object lighter.controllers
The controllers that have been found in the controllers/ directory.
Array|Object lighter.models
The models that have been found in the models/ directory.
lighter.env
The environment string that comes from process.env.NODE_ENV. Expected values
are dev, test, stage, canary or prod.
Lighter
Lighter is a lightweight Node.js framework for web applications and APIs.
Isomorphic JavaScript
When used for web applications, Lighter will render views either on the server or the client. This functionality will allow Lighter to optimize for low latency. The first request to your web app renders HTML and returns it to the browser, then views are lazy-loaded into the client so that subsequent requests only need to return JSON that the client can render using its cached views.
Auto-routing
Lighter is influenced by the PHP framework CodeIgniter, in that by default, controllers and their methods will automagically get added to the router based on their names and where they are found under the controllers directory. This means you don't have to write a ton of routing code, and you know where to find a controller method if you know its URL, and vice versa.
Performance
Lighter's default router is extremely simple so that it can respond faster than other frameworks such as Express, Restify and Meteor. The caveat is that dynamic paths are not supported by default, so you would need to do
/blog/article?id=1
rather than/blog/article/1
. It's a small price to pay for amazing server throughput.Building APIs
Lighter's simplicity makes it great for APIs, and we'll be adding functionality to auto-generate API documentation.
Getting started
To use lighter, first you must install it.
Using lighter is as simple as creating a lighter directory structure (as seen below) and then creating an
app.js
that requires lighter.Then you can run your app with Node.
Soon, this setup process will be replaced with a CLI that will go something like:
Directory structure
Assets loaded with Chug
Lighter uses Chug to cache its static assets, and each type of asset comes from an assigned directory. Chug also loads models views and controllers. Changes inside those directories will trigger reloads of the items that have been changed.
If you want to load assets from other directories (such as node_modules/), you can add to the list of locations using an API method like
addPublics
,addScripts
,addStyles
oraddViews
.Controllers
Here's a sample controller that you could save into
/controllers/ContactController.js
:To see the contact us form, you would visit
/contact
, and the form you submit would post to/contact/send
. Once we have models, we can do more interesting things here.Models
Models are coming soon...
Views
Views are rendered by name from
response.view
.The following would render a template that is stored at
/views/hello.ltl
with a context indicating who to say hello to.API
lighter.addControllers(Array|string location)
The
location
argument can be a single location or an array of locations. Lighter adds this location to the array of controller locations to be chugged.lighter.addPublics(Array|string location)
The
location
argument can be a single location or an array of locations. Lighter adds this location to the array of public file locations to be chugged.lighter.addScripts(Array|string location)
The
location
argument can be a single location or an array of locations. Lighter adds this location to the array of script file locations to be chugged.lighter.addStyles(Array|string location)
The
location
argument can be a single location or an array of locations. Lighter adds this location to the array of style file locations to be chugged.lighter.addViews(Array|string location)
The
location
argument can be a single location or an array of locations. Lighter adds this location to the array of view file locations to be chugged.lighter.setApp(Object app)
If you would like to use Express (or another framework that exposes
app.get(path, callback)
etc., to do your routing, you can set Lighter to do this.lighter.setLogger(Object logger)
Set an alternative logger that exposes
logger.log(message)
.lighter.setHttpPort(port)
Set the port that you would like Lighter to use for HTTP.
lighter.setHttpsPort(port)
Set the port that you would like Lighter to use for HTTPS.
lighter.setAsciiArt(art)
Set an array of lines that you would like to be displayed upon startup.
Object lighter.chug
A reference to the Chug module that Lighter uses.
Object lighter.beams
A reference to the Beams module that Lighter uses.
Object lighter.colors
A reference to the Colors module that Lighter uses.
Object lighter.app
A reference to the Express-like app that's been set via
lighter.setApp(app)
.Object lighter.logger
A reference to the logger that's been set via
lighter.setLogger(logger)
.Array|Object lighter.publics
The files that have been added via
lighter.setPublic(location)
or found in thepublics/
directory.Array|Object lighter.scripts
The scripts that have been added via
lighter.setPublic(location)
or found in thescripts/
directory.Array|Object lighter.styles
The stylesheets that have been added via
lighter.setPublic(location)
or found in thestyles/
directory.Array|Object lighter.views
The views that have been added via
lighter.setPublic(location)
or found in theviews/
directory.Array|Object lighter.controllers
The controllers that have been found in the
controllers/
directory.Array|Object lighter.models
The models that have been found in the
models/
directory.lighter.env
The environment string that comes from process.env.NODE_ENV. Expected values are
dev
,test
,stage
,canary
orprod
.


| Annotation Type |
Description |
|
ASTTest
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
AnnotationCollector
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
AutoClone
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
AutoExternalize
|
Class annotation used to assist in the creation of Externalizable classes.
|
|
BaseScript
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
Canonical
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
CompileDynamic
|
An annotation which is just a shortcut for @CompileStatic(TypeCheckingMode.SKIP).
|
|
CompileStatic
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
ConditionalInterrupt
|
Allows "interrupt-safe" executions of scripts by adding a custom check for interruption
into loops (for, while, ...) and at the start of closures and methods. |
|
EqualsAndHashCode
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
ExternalizeMethods
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
ExternalizeVerifier
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
Field
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
Immutable
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
IndexedProperty
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
InheritConstructors
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
Memoized
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
NotYetImplemented
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
PackageScope
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
SelfType
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
Sortable
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
SourceURI
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
Synchronized
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
TailRecursive
|
Class annotation used to transform method with tail recursive calls into iterative methods automagically
since the JVM cannot do this itself. |
|
ThreadInterrupt
|
Allows "interrupt-safe" executions of scripts by adding Thread.currentThread().isInterrupted()
checks into loops (for, while) and at the start of closures and methods. |
|
TimedInterrupt
|
Allows safe timed executions of scripts by adding elapsed time checks into loops (for, while)
and at the start of closures and methods and throwing an exception if a timeout occurs. |
|
ToString
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
Trait
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
TupleConstructor
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
TypeChecked
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
TypeChecked.TypeCheckingInfo
|
This annotation is added by- TypeChecked:
- on methods which have type checking turned on.
|
|
WithReadLock
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |
|
WithWriteLock
|
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. |


| Interface | Description |
|---|---|
| ConfigurationLoader<T extends AbstractEnvironment> |
For loading a configuration into an environment.
|
| Converter<V extends Identifiable> |
Created by Jeff Gaynor
on 7/3/18 at 5:47 PM |
| DebugConstants |
Created by Jeff Gaynor
on 10/23/20 at 3:41 PM |
| LoggingConfigurationTags |
Tags that are used in the logging XML element in a configuration file.
|
| StatusValue |
Created by Jeff Gaynor
on 8/16/21 at 11:42 AM |
| Class | Description |
|---|---|
| AbstractEnvironment |
Basic environment.
|
| BasicIdentifier |
Simple implementation of an identifier.
|
| BeanUtils |
Utilities for beans.
|
| Benchmarker |
Simple bechmarking object.
|
| BitSetUtil |
A utility for certain operations on
BitSet . |
| DateUtils |
General Date utilities.
|
| DebugUtil |
Utilities for centralizing some common debugging commands.
|
| DoubleHashMap<K,V> |
A hashmap with two way lookup.
|
| FileUtil |
Created by Jeff Gaynor
on 1/26/21 at 7:10 AM |
| HostUtil |
Created by Jeff Gaynor
on 10/22/13 at 11:48 AM |
| IdentifiableImpl |
Simple implementation of the
Identifiable interface. |
| IdentifiableProviderImpl<V extends Identifiable> |
Use this to create various identifiable things, i.e., objects that have globally unique
ids.
|
| IdentifierProvider<V extends Identifier> |
Creates Identifiers for use by
Identifiable objects. |
| Identifiers |
Utilities for Identifiers, such as creating unique identifiers.
|
| IP2<V extends Identifier> |
Created by Jeff Gaynor
on 11/29/20 at 7:41 AM |
| Iso8601 |
Note: This is taken from the old defunct Tupelo project at the NCSA.
|
| LoggerProvider |
Provides a logging facade.
|
| LoggingConfigLoader<T extends AbstractEnvironment> |
Created by Jeff Gaynor
on 6/18/12 at 2:13 PM |
| MapUtilities |
Utilities for dealing with maps.
|
| MapUtilities.MapEntry | |
| MetaDebugUtil |
Created by Jeff Gaynor
on 10/23/20 at 2:54 PM |
| More |
A class the more or less emulates UNIX's more command.
|
| MyLoggingFacade |
A simple front for logging.
|
| Pacer |
Created by Jeff Gaynor
on 3/26/20 at 10:36 AM |
| Pool<T> |
A pool of items, that is to say, a managed list that keeps valid items
on it and can create or destroy them as needed.
|
| PoolEntryWrapper<T> |
Created by Jeff Gaynor
on 4/21/21 at 10:31 AM |
| QueuePopulationThread<E> |
A thread for populating a
QueueWithSpare . |
| QueueWithSpare<E> |
A Queue with a "spare tire".
|
| StringUtils |
Created by Jeff Gaynor
on 4/23/20 at 6:34 AM |
| TokenUtil |
Utility to do base 64 or base 32 encoding of strings.
|
| Exception | Description |
|---|---|
| PoolException |
Exception thrown by the
Pool class under certain conditions. |
Copyright © 2022. All rights reserved.


The program uses the local pitch class histogram to trace the evolution of the key in a midi music file. It is based on the Krumhansl-Kessler algorithm. The output is a color coded strip representing the music file, where the colors are based on Craig Sapp's scheme published in his thesis and applied in his humdrum application called mkeyscape. The program runs on all platforms, (Windows, Linux and OS); however, the system requires the Tcl/Tk 8.5 or higher to be present. It also requires external executables midi2abc, midicopy which are part of the abcMIDI package. A midiplayer is also useful.
Here is an example of the user interface using a sample file from the published Pop-song dataset by Ziyu Wang and many others. The top strip shows the local key in blocks of 8 beats, for the give midi file. The key is mainly F# major but switches to Bb minor occasionally. Clicking on one of the color coded blocks in the upper strip, produces the histogram shown below.
Right clicking on one of the color coded blocks, will animate a sequence of Tonnetz diagrams for the notes in that time interval. (T. Bergstrom, K. Karahalios and J. C. Hart, (2007) Isochords: Visualizing Structure in Music). The Tonnetz diagram lays out the notes that are harmonically close. Thus neighbouring notes are a fifth or a third apart. A triad of notes forms a compact triangle.
To reduce the clutter in an individual diagram, the time interval corresponding to the block is segmented into units corresponding to the size of a sixteenth note. The program cycles through each of the units displaying the active notes. Notes that just turned on, are shown in purple. If the notes extend into adjacent units they are displayed in red.
The speed of the animation is determined by the millisecond value in the spinbox. This value determines how long the program dwells in each of the 1/16 note time units.
Computational Methods for the Analysis of Musical Structure. Craig Sapp. https://stacks.stanford.edu/file/druid:br237mp4161/dissertation-submitted-augmented.pdf
POP909: A Pop-song Dataset for Music Arrangement Generation. Ziyu Wang et. al. https://arxiv.org/abs/2008.07142
Cognitive Foundations of Musical Pitch. Carol Krumhansl. Oxford Psychology Series, No 17, pages 81-96.


--- title: About ---
I'm Stephen Benjamin and welcome to my food blog. Each week I try out a new recipe and post it here to share it with the world. If you enjoy any of the recipes I post feel free to leave a comment.