Tufts Music 42 (Spring 2018):
History of Jazz
Eli LaGorga
4/29/2018
Musical Instrument Digital Interface (midi) is a language through which electronic musical instruments and computers communicate. Midi encodes discrete instances of pitch, dynamics, panning, and tempo played by up to thirty-two instruments which can be saved in a compressed format to computer memory. Without an agreed upon communication protocol for electronic instruments to encode their music there would be competing proprietary implementations rendering many instruments non-interoperable. A huge problem when starting a band! music21 is “a toolkit for computer-aided musicology” developed at MIT. It is one of many interpreters between encoded midi files and users looking to manipulate them. TensorFlow is Google’s open source machine learning framework which in tandem with music21 and MIDI can be used to train computers to generate novel jazz duets using probabilistic context-free grammars.
Learning takes place from a single midi file converted into a music21 stream. From the stream it is typically possible to isolate two specific scores; one which represents a tempo keeping percussion part like base chords played by a piano, and another which encodes a soloing artist on any number of instruments. The method attempts to improvise these parts in a unique manner but with representative styles. In order to capture idiomatic gestures of a specific soloist, representative contours are extracted from a music21 score using clustering, and sequencing among contours is done using Markov chains that are encoded into the grammar.
To improve continuity between melodic fragments, abstract melodies are clustered using k-means clustering algorithm. Then statistics that represent temporal position of clusters relative to other clusters in the midi file are used to build a Markov chain. Markov chains are systems with sequences of states, that use conditional probabilities to model the transitions between successive states. Sets of abstract melodies serve as the states in the Markov chain. Given a starting melody, we add the next phrase based on a list of transition probabilities from the initial phrase. To compose new solos, a sequence of clusters from the grammar is generated using the Markov chain, then a representative from each cluster is chosen using the grammar rules specifying the distribution of the representatives.
The problem with this approach is that there are many different chord progressions, even when normalized to a given tonal center, and thus requires an extremely large database. Moreover, this database would need to be manually created, which is a very labor-intensive process. The practical result of these limitations is each song has an independent set of generated grammars which reduces the flexibility of the model making the music less agreeable.


See also the job board hub.
Building a job board app in Talent App Store is simple, and a basic integration requires only 3 APIs, as the job board hub does most of the heavy lifting.
Once your job board app is installed at a tenant, it will appear as a posting destination inside the job board hub.
The hub provides all the UI through which users post jobs to job boards and manage their postings.
The job board hub provides a posting form UI that the user uses to post a specific job in the ATS to a job board (i.e. create a posting). The same job in the ATS can be posted to multiple job boards, or posted multiple times to a single job board (e.g. with slightly different locations each time).
The hub dynamically modifies the posting form so that it contains the fields that your job board app requires for a posting, so your app doesn't need job posting UI of its own - the hub provides it.
Once the user completes the posting form, your app is alerted of the new posting via an API call, so that it can finally upload the posting into your own back end.
This guide steps you through each of the APIs your job board app will use.
The job board hub looks after all of a tenant's installed job boards, and stores details for each board such as its name, the fields it requires on the posting form, how long postings remain on the board for, etc.
So that the hub can learn about these details about your board, your app must publish its details by producing GET /jobBoards/forApp.
The hub calls this API on your app when it is installed at a tenant, and every time a tenant with your app installed is rebooted.
Via this API, you pass back all the details about your job board:
In the example below, the job board has 4 fields on its posting form, arranged into a single group:
The hub tries to present sensible defaults for fields:
When the recruiter submits the posting form, the job board hub will store values for all of the board's fields on the posting object.
This step is optional. A board may have no categories at all.
If your job board categorises its jobs by e.g. location, classification/expertise etc. then it should publish these categories by producing GET /jobBoards/forApp/categories and GET /jobBoards/forApp/categories/byID/{category}/values.
These APIs are called by the hub and the category mapper apps.
The job board hub maintains its own state of all of the tenant's job board postings, i.e. whether they are open or closed, what values were used, the date posted, etc.
Whenever the state of a posting in the hub changes (e.g. a posting reaches its expiry date and is automatically closed), the hub will alert the relevant job board app. The job board app is then responsible for uploading the new state into its own back end.
To play its part, your job board app must produce POST /postings/byID/{id}/tenantDeltaPings to be alerted when its own postings are changed.
How the board does this synchronizing is up to the board. Some boards use bulk upload APIs where the client always sends up all open postings. Others have web services to modify individual postings. Some might use ftp, csv, etc. The board might do it instantly, or every hour.
There are 4 scenarios that will cause a job board app to receive a delta ping alerting of a change to posting state:
This step is optional. Your board might never need any setup (i.e. completely on demand).
The job board hub stores a "setup error message" against each of a tenant's installed job boards.
When that field is non-null, this indicates that the board is broken - i.e. requires some setup.
The job board hub needs this information so that it can display the board's broken-ness in its UI - for example, a user can't create new postings for a board that is broken.
When GET /appStatus is called on your job board app, it should pull its own value for "setup error message" (by calling GET /jobBoards/forApp/status) and use that to light up (or not) the setup required icon on the app itself.
A typical scenario for setting the "setup error message" field would be when your job board app detected bad credentials while calling its own upload APIs. Then your app would set the setup error message via PATCH /jobBoards/forApp/status.
Another way that "setup error message" can be set is by default on new installs of your app.
In other words, if your app is always broken when first installed (because you need the user to click to the setup page and enter credentials, advertiser details, etc.) then you should reflect that by passing back a default setup error message in your response to GET /jobBoards/forApp:
"defaultSetupErrorMessage": "At least one template must be created"
When you do this, your board is effectively marked as broken by default for all new installs. The user sees this in your app's panel, and is guided to your setup page to fix the situation.
This step is optional. Your board might be able to start working with no additional information.
You may need a setup page to capture required information for new installs, e.g. API tokens, advertiser codes, etc.
Your job board app passes back a link to its setup page in its response to GET /jobBoards/forApp/status. This allows the user to click on the link in the store, and reach the setup page.
When the user views the setup page, they should normally see any existing setup problems highlighted.
To do this your job board app should call GET /jobBoards/forApp/status to fetch its own setup error message (e.g "credentials have been denied"). The setup error message can then be displayed at the top of the setup page so that the user knows what needs to be fixed before the board can start working.
Once the user has entered all required data into the setup page, the settings page should update the board's status to say things are good to go by calling PATCH /jobBoards/forApp/status and nulling out the setup error message.
This step is optional. A highly available board may rely on always capturing delta pings.
When the job board app starts up after maintenance, it should pull all of its own open postings from the hub, and use that to call its own upload APIs to synchronise its back end.
This will handle for any activity (new postings, expired postings) that may have happened on the hub while the app was asleep.
This step is optional. Some boards won't provide a preview link.
Some boards will be able to provide a preview link where the recruiter can see the job on the board itself.
When a preview link is available, e.g. when the board's upload APIs are called, the board can update the posting within the hub by calling PATCH /postings/byID/{id}/appDetails.


---
[
---
]
Original Title
Romanized Title
Translated Title
All
Angel
Fairy
Princess
TO DO:
Songs needing covers:
Omoi wa Carnaval
Idolch@ng


{% extends "base_no_auth.html" %} {% load i18n %} {% block head %} {% if sms_registration %} {% endif %} {% endblock %} {% block login_content %}{% if validlink %}
{% trans "Your new password will be send as a text message (SMS) to your phone number." %}
{% trans "The password reset link was invalid, possibly because it has already been used."%} {% trans "Please request a new password reset." %}


SRITHARINI
I am a baby web developer studying in FreeCodeCamp.I love to code!Programming is my hobby and profession.I'd love to learn new things,it excites me a lot.My interests are web development,Andrroid app development,AI,game designing.This is my personal porttfolio and im doing this as my second project in fcc.


Currency fluctuations are factored into existing measurements of productivity, writes Robin Johnson.
The Independent, November 28, 2007, page 18.
Tnere seems to be some confusion among readers of The Independent Financial Review and others about the role and measurement of productivity in the economy. Martin Verry's article (September 12), for example, is based on a misunderstanding of what productivity does and does not measure.
The concept of productivity starts with a simple input/output ratio such as milk solids per cow or output per labour unit in a firm. On an economy-wide basis, output is measured by real gross domestic product in the national income statistics. This is the sum total of all value-added activities in all the firms in an industry - value added is equivalent to some measure of total output of goods produced less materials bought or transferred from other firms.
The measure of real GDP has already taken out all price effects, including those caused by exchange rate fluctuations.
Over time changes in prices are eliminated by isolating the volume of goods involved in such a calculation. The bottom line can be represented by the physical number of people employed to represent total labour input or some physical measure of capital employed in the production process such as the real stock of capital in use at anyone time. When economists talk about multifactor productivity they mean an input output ratio with real value added on the top line and a weighted average of labour and capital input on the bottom line.
The Ministry of Agriculture and Forestry (MAF) publishes productivity statistics for the agricultural production, the agricultural processing, the forestry growing and the forest product processing sectors.
Statistics New Zealand publishes productivity for a large part of the national economy known as the measured sector. This excludes government services and some personal services. These productivity ratios are estimated and published by both organisations.
Now Marty Verry says in his article that the MAF measure of productivity for the wood processing sector is incorrect because it does not include the effects of exchange rate fluctuations - the main item of interest to producers like him. He suggests the data should be zerobased with regard to the exchange rate.
The economists' answer to this is the measure of real GDP has already taken out all price effects, including those caused by exchange rate fluctuations. What remains is a measure of the real added value of the goods produced in a given period.
If Verry wished to extend the analysis in the way he describes an economist could work out a series for value added which showed separately what the nominal value would have been in the national income statistics at certain levels of the exchange rate; say, what they would have been if the exchange rate stayed the same as it was at the beginning of the period concerned.
This would involve economists asking Verry and his colleagues what different production decisions would have been made if such and such was the stream of income they would have received. This is a form of economic modelling altogether more complicated than estimating the productivity ratios from the national income data. Perhaps Verry would be willing to pay for it.
Robin Johnson is a former deputy director of the economics division of the MAF.


Toggle navigation
iCheckIPA
Provisionning/Certificate
Resume
UDID
Raw
Plist
Drag your
.ipa
,
.zip
,
.app
or
.mobileprovision
here
Drag your
.p12
or
.pem
here
Analyse
×
Settings
Cache
Delete cache
Options - Dropzone
Port :
If the port is =< 1024, root or admin permissions are required to run this program.
Dropzone name :
This name will be shown to your friends. (e.g Shawn's Dropzone)


SweetFreeStuff.com
///////////////////////////////////////////
Free Pingdom T-Shirt (Retweet)
Posted: 21 Jul 2015 11:09 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
There is still time to participate in Royal Pingdoms contest! Retweet us
today for a free t-shirt! Free Pingdom T-Shirt
The post Free Pingdom T-Shirt (Retweet) appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Meow Mix Irresistibles Cat Treats Sample
Posted: 21 Jul 2015 09:56 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Upload a video or photo of your most irresistible moment and they will send
you free treats. Free Meow Mix Irresistibles Cat Treats Sample
The post Free Meow Mix Irresistibles Cat Treats Sample appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
BOGO Free Meal at Chipotle for Playing a Game
Posted: 21 Jul 2015 09:22 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Play the “Friend or Faux” game and receive a BOGO Chipotle coupon! BOGO
Free Meal at Chipotle for Playing a Game
The post BOGO Free Meal at Chipotle for Playing a Game appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Yulu Yogurt at Meijer
Posted: 21 Jul 2015 02:00 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Get a Free Yulu yogurt with mPerks! Clip now thru Thu 7/23. Redeem in
stores thru Sat 7/25, while supplies last! http://shout.lt/76f3 Meijer app
users: tap the magnifying glass in the top right, enter “yulu15” tap
“coupons.” Free Yulu Aussie Style Yogurt at Meijer
The post Free Yulu Yogurt at Meijer appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free ORS Shealicious Hair Conditioning Cocktail
Posted: 21 Jul 2015 01:15 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Click on Try it for Free. First 30,000! Free ORS Shealicious Hair
Conditioning Cocktail
The post Free ORS Shealicious Hair Conditioning Cocktail appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Subscription to Better Homes & Gardens
Posted: 20 Jul 2015 11:50 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
The post Free Subscription to Better Homes Gardens appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Two Moms in the Raw Blueberry Burst Nut Bar
Posted: 20 Jul 2015 11:43 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
*Update: All out of free bars now. They still have a coupon available
however. Free Two Moms in the Raw Blueberry Burst Nut Bar
The post Free Two Moms in the Raw Blueberry Burst Nut Bar appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Always Infinity Pads Sample
Posted: 20 Jul 2015 10:00 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Always Infinity Pads Sample
The post Free Always Infinity Pads Sample appeared first on
SweetFreeStuff.com.


warming climate emissions cumulative TCRE historical carbon observational uncertainty forcing non-CO best-estimate effective global -induced ESM ESMs using estimates response .°C Clim. figure budget change {border-style associated radiative mean px;} simulations temperature #ffffff;} human-induced observed estimate natural -only CMIP ERF diagnosed emissions. Earth budgets data feedbacks observations range record uncertainties ensemble air-temperature anthropogenic approximately emission model remaining variability Res. estimated future surface total use used warming, Allen Friedlingstein attributed forced fraction physical possible simulated time-series %/yr Lett. analysis attribution blended carbon-cycle concentration contributions given mitigation models period recent GtC Climate Knutti Matthews Paris aerosol atmospheric compatible dataset distribution experiments high higher important increase likely period. px; supplementary time transient {font-family Change HadCRUT-CW Nat. available based component dioxide emissions, end expected font-size indicates relative shown substantial value ./JCLI-D--. .°C/TtC Chang. GCP Geophys. Jones Meinshausen Millar Observational Sci. University Zickfeld ambitious assessment changes contribution cycle double; effect greater larger lower panel remains taken warming. (see (which ./GL ./nclimate Figure Gillett Historical IPCC-AR Stocker TCRE, Using all-time bars black border-color border-width comparison consistent constant constraints earth electronic extent forcing. fractional impact joint land land-use linear method observationally output present-day ranges results sampled sampling scenario sensitivity shading simulation solid; understanding useful version world {font-style {font-weight (Online (eds (th ./-/// ./s--- Arora Cambridge Cambridge, Contribution Cowtan Data ESM-simulated Environ. Estimating Forster HadCRUT MacDougall Myhre Phys. Press. RCP Rogelj UK: additional all-forcing assessed basis. bold colour.) constrain courier; current d). derived detection em; evolution fifth forcing, gas greenhouse group half impulse inferences intergovernmental large like-for-like limiting lines long-lived long-term material, methane negative net observations. pathways policy pt;} purple range, reduce relationship relatively report science similar smoothed substantially time. typically uncertainty. upper working years


<video width="640" height="360" id="player2" poster="../media/frameaccuracy_logo.jpg" controls="controls" preload="none">
<!-- WebM for Firefox 4 and Opera -->
<source type="video/webm" src="../media/perfect-timecoded.webm" />
<source type="video/mp4" src="../media/perfect-timecoded.mp4" />
<!-- OGG for Firefox 3 -->
<source type="video/ogg" src="../media/perfect-timecoded.ogv" />
<!-- Fallback flash player for no-HTML5 browsers with JavaScript turned off -->
<object width="640" height="360" type="application/x-shockwave-flash" data="../build/flashmediaelement.swf">
<param name="movie" value="../build/flashmediaelement.swf" />
<param name="flashvars" value="controls=true&poster=../media/frameaccuracy_logo.jpg&file=../media/perfect-timecoded.mp4" />
<!-- Image fall back for non-HTML5 browser with JavaScript turned off and no Flash player installed -->
<img src="../media/frameaccuracy_logo.jpg" width="640" height="360" alt="Here we are"
title="No video playback capabilities" />
</object>
</video>
Note: if you are working with local files, you'll need to add your working directory to the Flash Global Security Settings.


Pregnant Lydia Bright was hospitalised after split from baby's dad
Former TOWIE star Lydia Bright, who was left by her boyfriend in the eleventh week of her pregnancy, has shared that she was hospitalised from stress at the time
by Irishmirror.ieLydia Bright has told that she was admitted into hospital in the first trimester of her pregnancy after she split from boyfriend Lee Cronin.
The 29-year-old former TOWIE star discussed how the breakdown of her relationship that left her "heartbroken and lost" resulted in her suffering from severe sickness - which she believes was down to stress - that meant she had to be hospitalised.
The Essex native, who is expecting a little girl, revealed the ordeal occurred in the eleventh week of her pregnancy during a Q and A session with her Instagram followers on Thursday.
Lydia was quizzed by a follower: "What has been the toughest part of your pregnancy so far?"
In response, the single star unveiled how the early stages of her pregnancy were the hardest
The beauty shared: "The beginning was very hard. I'm so strong now but at 11 weeks I was completely heartbroken and lost. I was so worried that people would judge my situation...
"Before my announcement shoot hit the shelves I was in hospital with sickness (probably due to the stress of it all)...
"People are always quick to talk about the negative side of social media and the press, But I truly believe that my strength came from the support I received from strangers."
Lydia and Lee's love story has been turbulent from the moment sparks flew when they first met at a nightclub in Ibiza in July 2017.
They split four months after the pair had first started dating but unable to be apart from one another, they rekindled the flames of their romance.
The exes moved in together in January 2018 and they broke up briefly for three months in January this year.
They confirmed things were back on track in April but Lydia recently confirmed her pregnancy and their split again.
In June, just months before their split, Lydia dished she was "dangerously obsessed in love" with Lee.
Lydia told MailOnline: "With Lee, I was straight away obsessed in love with him. We always say we have a dangerous love.
"We'd be together the whole time and that's made my mind up [he's The One]!
"I’d love to get married! It’s not really for me to decide, that’s all down to him. I would love to get married. I think most girls dream of being married. We dream of our wedding day."
Do you have a story to sell? Get in touch with us at<EMAIL_ADDRESS>or call us direct 0207 29 33033


| I l@ve RuBoard |
13.3 The Root PageLet's start off by implementing a main page for this example. The file shown in Example 13-2 is primarily used to publish links to the Send and View functions' pages. It is coded as a static HTML file, because there is nothing to generate on the fly here. Example 13-2. PP2E\Internet\Cgi-Web\PyMailCgi\pymailcgi.html <TITLE>PyMailCgi Main Page</TITLE>
PyMailCgi

A POP/SMTP Email Interface

Version 1.0, April 2000

   This site implements a simple web-browser interface to POP/SMTP email accounts. Anyone can send email with this interface, but for security reasons, you cannot view email unless you install the scripts with your own email account information, in your own server account directory. PyMailCgi is implemented as a number of Python-coded CGI scripts that run on a server machine (not your local computer), and generate HTML to interact with the client/browser. See the book Programming Python, 2nd Edition for more details.

Actions

View, Reply, Forward, Delete POP mail
Send a new email message by SMTP

Caveats: PyMailCgi 1.0 was initially written during a 2-hour layover at Chicago's O'Hare airport. This release is not nearly as fast or complete as PyMailGui (e.g., each click requires an Internet transaction, there is no save operation, and email is reloaded often). On the other hand, PyMailCgi runs on any web broswer, whether you have Python (and Tk) installed on your machine or not.
Also note that if you use these scripts to read your own email, PyMailCgi does not guarantee security for your account password, so be careful out there. See the notes in the View action page as well as the book for more information on security policies. Also see:

The PyMailGui program in the Email directory, which implements a client-side Python+Tk email GUI
The pymail.py program in the Email directory, which provides a simple command-line email interface
The Python imaplib module which supports the IMAP email protocol instead of POP
The upcoming openSSL support for secure transactions in the new Python 1.6 socket module

   More examples  The file pymailcgi.html is the system's root page and lives in a PyMailCgi subdirectory of my web directory that is dedicated to this application (and helps keep its files separate from other examples). To access this system, point your browser to: If you do, the server will ship back a page like that shown in Figure 13-2. Figure 13-2. PyMailCgi main pageNow, before you click on the View link here expecting to read your own email, I should point out that by default, PyMailCgi allows anybody to send email from this page with the Send link (as we learned earlier, there are no passwords in SMTP). It does not, however, allow arbitrary users on the Web to read their email accounts without typing an explicit and unsafe URL or doing a bit of installation and configuration. This is on purpose, and has to do with security constraints; as we'll see later, I wrote the system such that it never associates your email username and password together without encryption. By default, then, this page is set up to read my (the author's) email account, and requires my POP password to do so. Since you probably can't guess my password (and wouldn't find my email helpful if you could), PyMailCgi is not incredibly useful as installed at this site. To use it to read your email instead, you should install the system's source code on your own server and tweak a mail configuration file that we'll see in a moment. For now, let's proceed by using the system as it is installed on my server, with my POP email account; it works the same way, regardless of which account it accesses. |
| I l@ve RuBoard |


Markdown
Markdown is a simple syntax that allows to do many things:
Titles
emphasis, strong emphasis, links, footnotes1. Images:
Note that this image is featured in the header of the page, due to the double exclamation mark.
Inline code
.
!![featured image](cat.jpg)
![non featured image](dog.png)
You can use inline HTML.
Horizontal rules:
Lists:
- alpha
- beta
- gamma
- delta
Ordered lists:
- Alice
- Bob
- Charlie
- Denis
Tables:
| Header | Cells |
|---|---|
| content 1 | content 2 |
| content 3 | content 4 |
Blockquotes:
Hello
I would like to know how to use markdown.
- I am a footnote! ↑


JavaScript is disabled on your browser.
Skip navigation links
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
SEARCH:
All Classes
All Classes
Interface Summary
Class Summary
Enum Summary
Exception Summary
Class
Description
Account
AccountBanned
AccountBannedController
AccountBannedId
Composite Primary Key for AccountBanned.
AccountController
AccountDTO
AccountEventDTO
AccountEventDTO.Event
AccountEventSerializer
AccountMapper
AccountResource
AccountResourceService
BanMapper
BansDTO
BigNumber
BigInteger wrapper used for the authentication (SRP6 protocol)
CleanupResultDTO
ClientCredentialsDTO
DAOException
Expansion
FlagsHelper
FlagsHelper is nothing more than an enum of flags positions.
FlagUtils
This class must help to manage flags that are using bits inside integer E.g: 2 = 0010, meaning that the second flag is set and all the others are not.
IpBanned
IpBannedController
IpBannedDTO
IpBannedId
IpBannedMapper
Locale
LoggerProducer
MessageDTO
OpenAPIConfig
RegistrationDTO
SecurityLevel
ServerCredentialsDTO
ServiceLivenessCheck
ServiceReadinessCheck
SRPServerController
SRPServer is an helper class to handle SRP6 calculation and hashing methods for WoW client since it deviates from the original SRP6 specification..
WardenActions
WardenController
WardenLog
WardenLogDTO
WardenLogMapper


Equilateral
In geometry, an equilateral triangle is a triangle in which all three sides are equal. In the familiar Euclidean geometry, equilateral triangles are also equiangular; that is, all three internal angles are also congruent to each other and are each 60°.
More..


--- layout: default title: About description: Eva Mikulášová is a painter, based in Bratislava, Slovakia. permalink: /about/ group: about lang: en language: English order: 1 ---
Born in Spišská Nová Ves, Slovakia
2006 – 2008 Academy of Fine Arts and Design, Bratislava, Studio IV, prof. I. Csudai, Department of Painting and Other Media
2004 - 2006 Academy of Fine Arts and Design, Bratislava, Studio of Product Design, prof. F. Burian
2000 - 2006 Department of design, University of technology,Bratislava
1996 - 2000 High school, Gymnázium Školská 7, Spišská Nová Ves
2007 Designskolen Kolding, Denmark
The Altar of today - Today's Altars, Turiec Gallery, Martin
25x25, Gallery of Spish Artists, Spišská Nová Ves
Pictures in pizzeriia Maestro, Aupark, Bratislava
Maľba ako šperk, šperk ako maľba, Medium gallery, Bratislava
Bestseller vol.3, Soda gallery, Bratislava
Actual art, Biuro wystaw artystycznych, Rzeszów
Treffpunkt, Gallery of Spish Artists, Spišská Nová Ves
Master diploma works 2010, Dom umenia, Bratislava
Parallels, Paintings form AFAD Bratislava and the Hungarian University of fine arts Budapest, Barcsay Hall, Budapest
Praha!!!, Ateliery Úhonice, Prague
Small scales II & Entropa, Kressling gallery, Bratislava
VŠVU / VŠUP, Gallery VŠUP, Prague


My adventures with eInk displays. Fantastic tools, but with a twist if you let them running too long...
I use it with my [[eInk Weather station]].
Implementation
Setup
sudo apt-get install python-pip python-dev
sudo apt-get install python-imaging python-pillow
sudo pip install spidev RPi.GPIO numpy
#the libraries from the maker WaveShare
git clone https://github.com/waveshare/e-Paper
Issues with e-paper running too long
So I got the problem twice: make your program work with your screen. Mine are 2.13inch screens from WaveShare. And let the puppy run for 1 month continuously with a full update 3 times an hour. and you end up with that↓
Screen number 1: can't completely erase anymore.
Screen number 2: can't completely erase anymore after 1 month running continuously.
Facts collection:
* Both are 2.13 ePaper Hat from WaveShare for Raspberry Pi, v1 it seems
* Both run on 3.3v
* Both worked perfectly for weeks (powered 24/7) until losing the capacity to clear in a few days
* Both were mounted near vertically in the Weather station
* Both were "sleeped" after each update to avoid that precise problem. However after checking the source code of the epd2in13.py vs the latest version that the code for calling changed. Before it was only self.send_command(DEEP_SLEEP_MODE)
and in the latest it became self.send_command(DEEP_SLEEP_MODE) ; self.send_data(0x01)
... so yeah, could be a problem of using old code?
Solution
Well apparently I'm [[https://github.com/andrei7c4/weatherdisplay|not the only one complaining about the power consumption]] (and time-bomb effect that goes with it I deduce), so solution is like expected to implement in manually. The solution the gentleman propose is a high side (source) PNP, which sounds about right to me too :)
Links
Helpful sources
* [[https://www.waveshare.com/wiki/2.13inch_e-Paper_HAT_(B)]]


Trump adviser Kellyanne Conway says Michael Flynn "enjoys the full confidence of the president" and Press Secretary Sean Spicer says the president is “evaluating the situation” in the wake of allegations that Flynn misled Mike Pence about his phone call with Sergey Kislyak. Hours later, Flynn resigns as National Security Adviser.
Source: New York Times


stock
poppers
Sign In
Login
Don't have an account?
Sign Up Here
Sign Up
Sign In
Email
Username
Password
Sign Up


A bug has been identified in a procedure which
(1) calls as yet undefined procedures,
(2) includes two or more for loops. In that case, the second
(and further) loop incrementation can go awry. The reason is that
there is insufficient space for the loop-local variables on the stack.
The following example is a minimal example:
/*external proc unknown;*/
test();
end;
proc(0) = test();
unknown();
for f (1,6,1);
f;
endfor;
for d (1,6,1);
d;
endfor;
endp;
proc(0)=unknown();
endp;
Until this is fixed in Ox, the problem can be avoided by ensuring that
there are no undeclared functions. In the example above that means:
(1) adding the line
external proc unknown;
at the top, or moving unknown to above test.


# CreateTemplateConfigCommand
Create an StmTemplateConfig by load an XML template and modifying it.

File Reference: stc_testmethodology.xml
## Properties
### TargetTagList: “Target Tag List” (input:string)
List of tags that indicate where in the STC configuration the template will be copied to. If TargetTagList is empty, the target will be assumed to be Project.
- default -
### InputJsonSchema: “Input JSON Schema” (state:string)
JSON schema that will be used to validate the InputJson property’s value.
JSON Schema -
- {
- “required”: [
“baseTemplateFile”
], “type”: “object”, “properties”: {
- “modifyList”: {
- “items”: {
“type”: “object”, “properties”: {
- “stmPropertyModifierList”: {
- “items”: {
“type”: “object”, “properties”: {
- “items”: {
- “className”: {
“type”: “string”, “description”: “Class name of the object type that properties will be modified on.”
}, “propertyName”: {
“type”: “string”, “description”: “Name of the property that an StmPropertyModifier is being attached onto.”
}, “parentTagName”: {
“type”: “string”, “description”: “Name of the tag that tags the object that an StmPropertyModifier will be added or configured on.”
}, “tagName”: {
“type”: “string”, “description”: “Name of the tag that tags objects of type className.”
}, “propertyValueList”: {
“type”: “object”, “description”: “List of property-value pairs that will be modified. This list should contain property names that exist in the StmPropertyModifier’s ModifierInfo.”
}
}
}
}, “required”: [
“className”, “tagName”, “propertyValueList”
], “type”: “array”, “description”: “A list of config StmPropertyModifier operations to add or configure StmPropertyModifiers in the StmTemplateConfig.”
}, “propertyValueList”: {
- “items”: {
“type”: “object”, “properties”: {
- “className”: {
“type”: “string”, “description”: “Class name of the object type that properties will be modified on.”
}, “tagName”: {
“type”: “string”, “description”: “Name of the tag that tags objects of type className.”
}, “propertyValueList”: {
“type”: “object”, “description”: “List of property-value pairs that will be modified.”
}
}
}, “required”: [
“className”, “tagName”, “propertyValueList”
], “type”: “array”, “description”: “A list of modify template operations to change the values of properties on tagged objects.”
}, “relationList”: {
- “items”: {
“type”: “object”, “properties”: {
- “relationType”: {
“type”: “string”, “description”: “The type of relation to add or remove, ie StackedOnEndpoint or UsesIf.”
}, “sourceTag”: {
“type”: “string”, “description”: “Name of the tag that tags an object that is the source of the relation.”
}, “removeRelation”: {
“type”: “boolean”, “description”: “A flag indicating if the relation should be removed if found.”
}, “targetTag”: {
“type”: “string”, “description”: “Name of the tag that tags an object that is the target of the relation.”
}
}
}, “required”: [
“relationType”, “targetTagList”
], “type”: “array”, “description”: “A list of configure relation operations to add or remove relations between elements in the StmTemplateConfig.”
}, “pduModifierList”: {
- “items”: {
“type”: “object”, “properties”: {
- “templateElementTagName”: {
“type”: “string”, “description”: “Name of the tag that tags StreamBlock objects.”
}, “value”: {
“type”: “string”, “description”: “String value for the PDU property.”
}, “offsetReference”: {
“type”: “string”, “description”: “String in the form of . that refers to a particular field in a particular PDU that will be modified.”
}
}
}, “required”: [
“offsetReference”
], “type”: “array”, “description”: “A list of PDU modification operations to change values in a StreamBlock’s FrameConfig.”
}, “mergeList”: {
- “items”: {
“type”: “object”, “properties”: {
- “stmPropertyModifierList”: {
- “items”: {
“type”: “object”, “properties”: {
- “items”: {
- “className”: {
“type”: “string”, “description”: “Class name of the object type that properties will be modified on.”
}, “propertyName”: {
“type”: “string”, “description”: “Name of the property that an StmPropertyModifier is being attached onto.”
}, “parentTagName”: {
“type”: “string”, “description”: “Name of the tag that tags the object that an StmPropertyModifier will be added or configured on.”
}, “tagName”: {
“type”: “string”, “description”: “Name of the tag that tags objects of type className.”
}, “propertyValueList”: {
“type”: “object”, “description”: “List of property-value pairs that will be modified. This list should contain property names that exist in the StmPropertyModifier’s ModifierInfo.”
}
}
}
}, “required”: [
“className”, “tagName”, “propertyValueList”
], “type”: “array”, “description”: “A list of config StmPropertyModifier operations to add or configure StmPropertyModifiers in the StmTemplateConfig.”
}, “propertyValueList”: {
- “items”: {
“type”: “object”, “properties”: {
- “className”: {
“type”: “string”, “description”: “Class name of the object type that properties will be modified on.”
}, “tagName”: {
“type”: “string”, “description”: “Name of the tag that tags objects of type className.”
}, “propertyValueList”: {
“type”: “object”, “description”: “List of property-value pairs that will be modified.”
}
}
}, “required”: [
“className”, “tagName”, “propertyValueList”
], “type”: “array”, “description”: “A list of modify template operations to change the values of properties on tagged objects.”
}, “mergeSourceTag”: {
“type”: “string”, “description”: “The name of the tag in the XML file from which tagged elements will be merged into the StmTemplateConfig.”
}, “mergeSourceTemplateFile”: {
“type”: “string”, “description”: “The path to the source XML file.”
}, “mergeTagPrefix”: {
“type”: “string”, “description”: “A string that will be prefixed to the tags that are merged from the source file to the StmTemplateConfig.”
}, “mergeTargetTag”: {
“type”: “string”, “description”: “The name of the tag in the StmTemplateConfig where elements from the XML file will be merged into.”
}
}
}, “required”: [
“mergeSourceTag”, “mergeSourceTemplateFile”, “mergeTargetTag”
], “type”: “array”, “description”: “A list of merge operations where a XML file will be used as a source of XML to merge into the XML contained in the StmTemplateConfig.”
}, “addObjectList”: {
- “items”: {
“type”: “object”, “properties”: {
- “className”: {
“type”: “string”, “description”: “Class name of the object type that will be added.”
}, “parentTagName”: {
“type”: “string”, “description”: “Name of the tag that tags parent objects for type className.”
}, “tagName”: {
“type”: “string”, “description”: “Name of the tag that tags newly created objects of type className.”
}, “propertyValueList”: {
“type”: “object”, “description”: “List of property-value pairs that will be modified.”
}
}
}, “required”: [
“className”, “parentTagName”, “tagName”
], “type”: “array”, “description”: “A list of objects to add to a template.”
}
}
}, “type”: “array”, “description”: “A list of operations that will be carried out on the template.”
}, “tagPrefix”: {
“type”: “string”, “description”: “String that will be prefixed to all tags loaded and used in this template.”
}, “baseTemplateFile”: {
“type”: “string”, “description”: “Base template file that will be loaded into the StmTemplateConfig. All modifications in the modifyList will be applied to the contents loaded out of this file.”
}
}, “title”: “Schema for InputJson of the spirent.methodology.CreateTemplateConfigCommand.”
}
### AutoExpandTemplate: “Automatically Expand Template” (input:bool)
Expand template into EmulatedDevices, Streamblocks, etc.
- default - true
### StmTemplateMix: “Parent StmTemplateMix object” (input:handle)
Handle of an StmTemplateMix object to use for the parent of the created StmTemplateConfig.
- default -
### StmTemplateConfig: “XML container object (StmTemplateConfig)” (output:handle)
StmTemplateConfig container object
- default -
### InputJson: “JSON Input” (input:string)
JSON string representation of parameters to load and modify template(s) into the StmTemplateConfig.
- default - {“baseTemplateFile”: “IPv4_NoVlan.xml”}
### SrcTagList: “Source Tag List” (input:string)
List of tags that indicate where in the XML template the config will be expanded from
- default -
### CopiesPerParent: “Number of copies to make per Target Tag object” (input:u32)
Number of copies of the template to make per Target Tag object
- default - 1
## JSON Sample
- {
- “here”: “there”
}
## UsedIn * RFC 2544 Throughput Test


Dear {{ user.username }},
Welcome to Flasky!
To confirm your account please click on the following link:
{{ url_for('auth.confirm', token=token, _external=True) }}
Sincerely,
The Flasky Team
Note: replies to this email address are not monitored.


Logo
Link 1
Link 2
Dropdown link
Link 1
Link 2
Link 3
Search
Los Angeles
We had such a great time in LA!
Chicago
Thank you, Chicago!
New York
We love the Big Apple!
Collapsible Group Item #1
Lorem ipsum..
Collapsible Group Item #2
Lorem ipsum..
Collapsible Group Item #3
Lorem ipsum..
Modal Example Form
Open modal
My Icons
Modal Heading
×
Name:
Password:
Copy
Pen
Comment:
Yes
No
Username:
Valid.
Please fill out this field.
Password:
Valid.
Please fill out this field.
I agree on blabla.
Valid.
Check this checkbox to continue.
Submit
Home
Menu 1
Menu 2
Hi
Hello
How are you ?


FSCommand() (attacker can use this when executed from within an embedded Flash object)
onAbort() (when user aborts the loading of an image)
onActivate() (when object is set as the active element)
onAfterPrint() (activates after user prints or previews print job)
onAfterUpdate() (activates on data object after updating data in the source object)
onBeforeActivate() (fires before the object is set as the active element)
onBeforeCopy() (attacker executes the attack string right before a selection is copied to the clipboard - attackers can do this with the execCommand("Copy") function)
onBeforeCut() (attacker executes the attack string right before a selection is cut)
onBeforeDeactivate() (fires right after the activeElement is changed from the current object)
onBeforeEditFocus() (Fires before an object contained in an editable element enters a UI-activated state or when an editable container object is control selected)
onBeforePaste() (user needs to be tricked into pasting or be forced into it using the execCommand("Paste") function)
onBeforePrint() (user would need to be tricked into printing or attacker could use the print() or execCommand("Print") function).
onBeforeUnload() (user would need to be tricked into closing the browser - attacker cannot unload windows unless it was spawned from the parent)
onBeforeUpdate() (activates on data object before updating data in the source object)
onBegin() (the onbegin event fires immediately when the element's timeline begins)
onBlur() (in the case where another popup is loaded and window looses focus)
onBounce() (fires when the behavior property of the marquee object is set to "alternate" and the contents of the marquee reach one side of the window)
onCellChange() (fires when data changes in the data provider)
onChange() (select, text, or TEXTAREA field loses focus and its value has been modified)
onClick() (someone clicks on a form)
onContextMenu() (user would need to right click on attack area)
onControlSelect() (fires when the user is about to make a control selection of the object)
onCopy() (user needs to copy something or it can be exploited using the execCommand("Copy") command)
onCut() (user needs to copy something or it can be exploited using the execCommand("Cut") command)
onDataAvailable() (user would need to change data in an element, or attacker could perform the same function)
onDataSetChanged() (fires when the data set exposed by a data source object changes)
onDataSetComplete() (fires to indicate that all data is available from the data source object)
onDblClick() (user double-clicks a form element or a link)
onDeactivate() (fires when the activeElement is changed from the current object to another object in the parent document)
onDrag() (requires that the user drags an object)
onDragEnd() (requires that the user drags an object)
onDragLeave() (requires that the user drags an object off a valid location)
onDragEnter() (requires that the user drags an object into a valid location)
onDragOver() (requires that the user drags an object into a valid location)
onDragDrop() (user drops an object (e.g. file) onto the browser window)
onDragStart() (occurs when user starts drag operation)
onDrop() (user drops an object (e.g. file) onto the browser window)
onEnd() (the onEnd event fires when the timeline ends.
onError() (loading of a document or image causes an error)
onErrorUpdate() (fires on a databound object when an error occurs while updating the associated data in the data source object)
onFilterChange() (fires when a visual filter completes state change)
onFinish() (attacker can create the exploit when marquee is finished looping)
onFocus() (attacker executes the attack string when the window gets focus)
onFocusIn() (attacker executes the attack string when window gets focus)
onFocusOut() (attacker executes the attack string when window looses focus)
onHashChange() (fires when the fragment identifier part of the document's current address changed)
onHelp() (attacker executes the attack string when users hits F1 while the window is in focus)
onInput() (the text content of an element is changed through the user interface)
onKeyDown() (user depresses a key)
onKeyPress() (user presses or holds down a key)
onKeyUp() (user releases a key)
onLayoutComplete() (user would have to print or print preview)
onLoad() (attacker executes the attack string after the window loads)
onLoseCapture() (can be exploited by the releaseCapture() method)
onMediaComplete() (When a streaming media file is used, this event could fire before the file starts playing)
onMediaError() (User opens a page in the browser that contains a media file, and the event fires when there is a problem)
onMessage() (fire when the document received a message)
onMouseDown() (the attacker would need to get the user to click on an image)
onMouseEnter() (cursor moves over an object or area)
onMouseLeave() (the attacker would need to get the user to mouse over an image or table and then off again)
onMouseMove() (the attacker would need to get the user to mouse over an image or table)
onMouseOut() (the attacker would need to get the user to mouse over an image or table and then off again)
onMouseOver() (cursor moves over an object or area)
onMouseUp() (the attacker would need to get the user to click on an image)
onMouseWheel() (the attacker would need to get the user to use their mouse wheel)
onMove() (user or attacker would move the page)
onMoveEnd() (user or attacker would move the page)
onMoveStart() (user or attacker would move the page)
onOffline() (occurs if the browser is working in online mode and it starts to work offline)
onOnline() (occurs if the browser is working in offline mode and it starts to work online)
onOutOfSync() (interrupt the element's ability to play its media as defined by the timeline)
onPaste() (user would need to paste or attacker could use the execCommand("Paste") function)
onPause() (the onpause event fires on every element that is active when the timeline pauses, including the body element)
onPopState() (fires when user navigated the session history)
onProgress() (attacker would use this as a flash movie was loading)
onPropertyChange() (user or attacker would need to change an element property)
onReadyStateChange() (user or attacker would need to change an element property)
onRedo() (user went forward in undo transaction history)
onRepeat() (the event fires once for each repetition of the timeline, excluding the first full cycle)
onReset() (user or attacker resets a form)
onResize() (user would resize the window; attacker could auto initialize with something like: <SCRIPT>self.resizeTo(500,400);</SCRIPT>)
onResizeEnd() (user would resize the window; attacker could auto initialize with something like: <SCRIPT>self.resizeTo(500,400);</SCRIPT>)
onResizeStart() (user would resize the window; attacker could auto initialize with something like: <SCRIPT>self.resizeTo(500,400);</SCRIPT>)
onResume() (the onresume event fires on every element that becomes active when the timeline resumes, including the body element)
onReverse() (if the element has a repeatCount greater than one, this event fires every time the timeline begins to play backward)
onRowsEnter() (user or attacker would need to change a row in a data source)
onRowExit() (user or attacker would need to change a row in a data source)
onRowDelete() (user or attacker would need to delete a row in a data source)
onRowInserted() (user or attacker would need to insert a row in a data source)
onScroll() (user would need to scroll, or attacker could use the scrollBy() function)
onSeek() (the onreverse event fires when the timeline is set to play in any direction other than forward)
onSelect() (user needs to select some text - attacker could auto initialize with something like: window.document.execCommand("SelectAll");)
onSelectionChange() (user needs to select some text - attacker could auto initialize with something like: window.document.execCommand("SelectAll");)
onSelectStart() (user needs to select some text - attacker could auto initialize with something like: window.document.execCommand("SelectAll");)
onStart() (fires at the beginning of each marquee loop)
onStop() (user would need to press the stop button or leave the webpage)
onStorage() (storage area changed)
onSyncRestored() (user interrupts the element's ability to play its media as defined by the timeline to fire)
onSubmit() (requires attacker or user submits a form)
onTimeError() (user or attacker sets a time property, such as dur, to an invalid value)
onTrackChange() (user or attacker changes track in a playList)
onUndo() (user went backward in undo transaction history)
onUnload() (as the user clicks any link or presses the back button or attacker forces a click)
onURLFlip() (this event fires when an Advanced Streaming Format (ASF) file, played by a HTML+TIME (Timed Interactive Multimedia Extensions) media tag, processes script commands embedded in the ASF file)
seekSegmentTime() (this is a method that locates the specified point on the element's segment time line and begins playing from that point. The segment consists of one repetition of the time line including reverse play using the AUTOREVERSE attribute.)


13. December 2018
Our paper about how to construct an STM is in Review of Scientific Instruments..
08. October 2018
We discovered charge trapping in a high-Tc superconductor! Publication in Nature Physics.
27. September 2018
Our MHz amplifier for STM is published in Review of Scientific Instruments.
16. May 2018
Milan, Koen and Irene talk about superconductivity in Made in Leiden.
4. May 2018
Welcome Ram!
5.-9. March 2018
Irene and Milan are at the March Meeting (Talk Tue 10am, session E45)
27. December 2017
The smart tips are on arXiv! A collaboration with the Gröblacher Lab at TU Delft. Stay tuned.
13. November 2017
New paper published in collaboration with the group of Jan van Ruitenbeek
10. November 2017
Doohee makes the third place at the LION Image Award.
9. October 2017
We contributed to Miguel and Jan’s new paper.
12. August 2017
We got an ERC starting grant.
10. August 2017
Our paper is published in SciPost Physics.
17. - 21. July 2017
Milan wins the Bryan R. Coles prize at SCES 2017, Prague. Koen received the best poster presentation award.
17. - 21. July 2017
Koen, Maarten and Milan will be at SCES 2017, Prague. Come check out our posters on Tuesday&Thursday and talk on Thursday!
18. June 2017
Paper on poor electronic screening published in PRB as Editors’ selection!
15. May 2017
Welcome Doohee!
13. - 17. March 2017
Koen & Irene give talks at the APS March Meeting in New Orleans.
27. January - 3. March 2017
We are looking forward to co-hosting the workshop on unconventional superconductivity at the Lorentz center.
17-18. January 2017
Irene, Koen, Maarten and Milan will be at Physics@Veldhoven 2017. (Talk at PT6.1 and poster at P9.022).
25. November 2016
We are part of a newly granted Vrije Programma on strange metals, together with the groups of Hussey, Golden, vHeumen, Zaanen, Schalm, Stoof and Vandoren, see press release. We also got a Projectruimte.
19. September 2016
Our first paper from Leiden is online at Nature Physics!
12. September 2016
Koen is at Correl16, Julich.
01. July 2016
Milan is at the strongly correlated electron GRC 2016.
24. June 2016
Felix Baumberger is visiting.
17. June 2016
Irene is at SNS2016.
28. April 2016
Our results on the Mott & pseudo gap physics posted on arXiv !
14. May 2016
Ivan Bozovic is visiting.
17. March 2016
Koen, Irene & Vitaly present a poster at Sun Sailing Science.
17. Jan 2016
We discover electronic order and pseudogap in a non-cuprate materal!
01. Jan 2016
Welcome Vitaly!
17. June 2015
Welcome Kees!
17. June 2015
Maarten wins the LION image award! Check out his submission.
17. June 2015
We win a Vidi grant: 800kEUR to invest in science! (Leiden news, FOM news item)
01. Sept 2015
Welcome Koen and Maarten: from Master- to PhD-students
17. June 2015
We got our commercial STM from Unisoku, and we are already busy modifying.
01. Jan 2015
Welcome Irene, Gijsbert & Milan — our lab is officially starting!


Creating Your First Plugin
In this tutorial, you will learn how to create a simple plugin for Ham Cockpit that shows a visual panel with a text input box. The user will be able to change the text in the box, and the changes will be preserved between the sessions. The color of the panel will be configurable in the Plugin Settings dialog.
Prerequisites
- Install Visual Studio Community Edition, make sure that the .NET desktop development component is selected:
Install Git.
Create a folder for your projects. We will assume that the folder name is
C:\MyProjects
.Open this folder in File Explorer, right-click and click on Git Bash Here in the popup menu:
- Type this command in the Git Bash window to clone Ham Cockpit:
git clone https://github.com/VE3NEA/HamCockpit.git
This will clone the HamCockpit repository to this folder:
C:\MyProjects\HamCockpit
The repository contains a .NET solution with the Plugin API assemblies and example plugin projects.
- In the cloned folder, double-click on the solution file,
HamCockpitPlugins.sln
,
to open it in Visual Studio.
Click on Build / Rebuild Solution in the VS menu to verify that the solution builds without errors.
Creating Your Project
- Right-click on the solution in the Solution Explorer, click on Add / New Project in the menu, and select the Windows Forms Control Library. Click on Next.
Choose a name for your project. The name must start with author's ID, such as your Ham Callsign. Assuming that your callsign is
AA0AAA
, and your plugin name isMyPlugin
, the project name should beAA0AAA.HamCockpitPlugins.MyPlugin
Enter the project name in the Project name field of the Configure your new project dialog, and
C:\MyProjects\HamCockpit
in the Location field. Under Framework select ".NET Framework 4.8". Click on Create.Right-click on the References entry of your new project, click on Add Reference / Projects, and tick the checkbox next to
VE3NEA.HamCockpit.PluginAPI.dll
, click on OK.Double-click on Properties / AssemblyInfo.cs in your project, enter your own data in the Company and Copyright fields:
[assembly: AssemblyTitle("AA0AAA.HamCockpitPlugins.MyPlugin")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("AA0AAA Ham Shack")]
[assembly: AssemblyProduct("AA0AAA.HamCockpitPlugins.MyPlugin")]
[assembly: AssemblyCopyright("Copyright © John Smith AA0AAA 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
- Right-Click on the project, click on Properties / Build. Enter
..\Release
in the Output path box for all configurations so that the compiled plugin is created in the folder where Ham Cockpit can find it.
Creating the Plugin Class
Right-click on your project,
click on Add / New Item in the popup menu, select
Visual C# Items / Class. Enter MyPlugin
in the Class name field, click on Add.
This will generate MyPlugin.cs
with the following code:
namespace AA0AAA.HamCockpitPlugins.MyPlugin
{
class MyPlugin
{
}
}
Now let us turn this class into a HamCockpit plugin. To be a plugin, it must
export the IPlugin
interface. Since we want MyPlugin
to have a visual panel, we will
export IVisualPlugin
as well:
[Export(typeof(IPlugin))]
[Export(typeof(IVisualPlugin))]
class MyPlugin : IPlugin, IVisualPlugin
{
}
As soon as we enter this code, Visual Studio underlines the unknown identifiers with a red line. Let us fix this.
Place your cursor on the
Export
word, pressCtrl-.
to invoke the Quick Actions menu, and selectAdd reference to "System.ComponentModel.Composition"
.Press
Ctrl-.
onIPlugin
and selectusing VE3NEA.HamCockpit.PluginAPI
.
This will add two references to the unit:
using System.ComponentModel.Composition;
using VE3NEA.HamCockpit.PluginAPI;
With these references in place, VS recognizes all identifiers in our code, but there is
another problem: the IPlugin
and IVisualPlugin
interfaces are still underlined
because they are declared but not implemented. Let us fix this as well.
Press Ctrl-.
on IPlugin
and select Implement interface
,
do the same for IVisualPlugin
. Now you can rebuild the project and verify
that there are no build errors.
Implementing IPlugin
Quick Actions created the stubs for the interface methods and properties. Let us put some real code in the stubs. We will start with the easy ones:
public string Name => "My Plugin";
public string Author => "AA0AAA";
public bool Enabled { get; set; }
public ToolStrip ToolStrip => null;
public ToolStripItem StatusItem => null;
Name
and Author
simply return the plugin name, as it will appear in the
Ham Cockpit menu, and author's ID. Enabled
is the setting that the user can change
in the
Plugin Settings dialog
by ticking the checkbox next to the plugin. Finally,
ToolStrip
and StatusItem
return null
because our plugin does not need to have
any controls on the toolbar or status bar.
Now the only member of IPlugin
that still needs to be implemented is Settings
.
We will deal with this shortly.
Designing the Panel
When VS created the project, a blank user control was created in the UserControl1.cs
unit.
Press F2 on this unit and rename it to MyPanel.cs. VS will prompt you to rename the
class as well. Click on Yes.
Now we can do some visual stuff. Double-click on MyPanel.cs in Project Explorer to open it in the visual designer. Resize the panel to a smaller size, then click on View / Toolbox in the menu and drag a text box from the Toolbox to your panel:
Click on View / Properties Window in the menu. Select the text box, change its name to MyTextBox
and its Modifiers
property to Internal
so that we can access it from the code.
Implementing IVisualPlugin
The methods of the IVisualPlugin
interface allow the host application to determine
if the plugin can create a new panel, to create panels, and to destroy them. Implementation
of this interface is trivial:
private MyPanel panel;
public bool CanCreatePanel => panel == null;
public UserControl CreatePanel()
{
panel = new MyPanel();
panel.Name = "My Panel";
return panel;
}
public void DestroyPanel(UserControl panel)
{
this.panel = null;
}
CreatePanel
creates an instance of the MyPanel
class and gives it a name that will appear
on the panel's caption bar. A reference to the panel is stored in the panel
field.
DestroyPanel
sets panel
to null
, effectively destroying the panel.
CanCreatePanel
ensures that at most one panel can exist at any given time.
You could allow an unlimited number of panels to be created, as in the
Display Panel Demo example,
or a fixed number of panels.
The user can create visual plugin panels using the View menu. This menu shows all plugins that
implement IVisualPlugin
, those plugins whose CanCreatePanel
returns false are grayed in the menu.
Creating the Settings
class
Ham Cockpit has a built-in mechanism for storing, reloading and editing the plugin settings
in a centralized way. All you have to do to make use of this mechanism is to implement the
Settings class and expose it via IPlugin.Settings
.
Let us create the Settings class. Right-click on the project, click on Add / New Item / Class,
enter Settings
in the Name
field, and click on Add
. Add the following code to the created unit:
using System.ComponentModel;
using System.Drawing;
namespace AA0AAA.HamCockpitPlugins.MyPlugin
{
class Settings
{
[DisplayName("Background Color")]
[Description("The background color of the panel.")]
[DefaultValue(typeof(Color), "Control")]
public Color BackColor { get; set; } = SystemColors.Control;
[Browsable(false)]
public string Text { get; set; }
}
}
In the Settings
class, we simply add properties for all values that we want to be stored
between the program starts. We have added two properties, BackColor
that will store the color of the panel,
and Text
that will store the text entered by the user.
The host application will save and restore both settings defined in this class. By default, it also
allows the user to edit all public properties in Settings
. Since we want only the color to appear
in the
Plugin Settings dialog,
but not the text, we decorate the Text
property with the [Browsable(false)]
attribute.
The Plugin Settings dialog uses the PropertyGrid control for editing the settings of the plugins. There are many ways to customize the appearance of the properties in the grid. Many good tutorials on the subject are available on the Internet. This and this are just two examples.
For the BackColor
property, we add the DisplayName
and Description
attributes that PropertyGrid
will use to display the setting name and description, and theDefaultValue
attribute that
the Reset menu command in the property grid will assign to the setting.
Implementing IPlugin.Settings
Now that we have the Settings
class, we can implement the IPlugin.Settings
property in MyPlugin
:
private Settings settings = new Settings();
public object Settings { get => settings; set => ApplySettings(value); }
private void ApplySettings(object value)
{
settings = value as Settings;
if (panel != null)
{
panel.MyTextBox.Text = settings.Text;
panel.BackColor = settings.BackColor;
}
}
private void TextChangedHandler(object sender, EventArgs e)
{
settings.Text = panel.MyTextBox.Text;
}
The settings object is stored in the private settings
field. The getter of
IPlugin.Settings
simply returns settings
, and the setter assigns a new value
to settings
and applies the settings to the panel, if it exists.
TextChangedHandler
is an event handler that updates the settings when the text
in the edit box changes.
The last thing we need to do is modify the CreatePanel
method to apply the settings
to the newly created panel and subscribe to its TextChanged
event:
public UserControl CreatePanel()
{
panel = new MyPanel();
panel.Name = "My Panel";
//apply current settings
ApplySettings(settings);
//subscribe to the TextChanged event
panel.MyTextBox.TextChanged += TextChangedHandler;
return panel;
}
Finished MyPlugin.cs
The finished MyPlugin.cs
unit looks like this:
using System;
using System.ComponentModel.Composition;
using System.Windows.Forms;
using VE3NEA.HamCockpit.PluginAPI;
namespace AA0AAA.HamCockpitPlugins.MyPlugin
{
[Export(typeof(IPlugin))]
[Export(typeof(IVisualPlugin))]
class MyPlugin : IPlugin, IVisualPlugin
{
private MyPanel panel;
private Settings settings = new Settings();
#region IPlugin
public string Name => "My Plugin";
public string Author => "AA0AAA";
public bool Enabled { get; set; }
public ToolStrip ToolStrip => null;
public ToolStripItem StatusItem => null;
public object Settings { get => settings; set => ApplySettings(value); }
#endregion
#region IVisualPlugin
public bool CanCreatePanel => panel == null;
public UserControl CreatePanel()
{
panel = new MyPanel();
panel.Name = "My Panel";
panel.MyTextBox.TextChanged += TextChangedHandler;
ApplySettings(settings);
return panel;
}
public void DestroyPanel(UserControl panel)
{
this.panel = null;
}
#endregion
private void ApplySettings(object value)
{
settings = value as Settings;
if (panel != null)
{
panel.MyTextBox.Text = settings.Text;
panel.BackColor = settings.BackColor;
}
}
private void TextChangedHandler(object sender, EventArgs e)
{
settings.Text = panel.MyTextBox.Text;
}
}
}
Testing the plugin
Press Ctrl-B to build the project, open the Release
folder
and double-click on HamCockpit.exe.
When the program starts, click on the View menu - and see your plugin listed!
Open My Plugin and play with it.
Resize it, dock it, enter some text in the text box. Close it and open again. Exit the program and restart, see that the text you entered is preserved.
Now open the Plugin Settings dialog, select your plugin and change its background color:
The color is also remembered between the sessions.
Congratulations!
Your first plugin for Ham Cockpit is finished. It has a visual panel, resizable and dockable, it accepts user input, remembers its state when the program is closed and has settings that the user can edit in the Plugin Settings dialog. It's time to start your own plugin project!


In a letter to the zoologist J.Z. Young, British mathematician Alan Turing announced that his theory of embriology could explain, among other things, the connection between leaf arrangements and Fibonacci numbers.
At present I am not working on the problem at all, but on my mathematical theory of embriology [...]. This is yielding to treatment, and it will so far as I can see, give satisfactory explanations of -
[...]
iii) Leaf arrangement, in particular the way the Fibonacci series (0, 1, 1 = 2, 3, 5, 8, 13,.......) comes to be involved.
A plausible explanation of this fact was given by German physicist Helmut Vogel in "A better Way to Construct the Sunflower Head", where he proposed that spiral branches of seeds in a sunflower head are added from the center at an angle of \(137.5^{\circ}\) from the preceding one.
The interactive visualization shows that even small deviations from this value determine different shapes, not always similar to how seeds are arranged in a sunflower. Why \(137.5^{\circ}\)? Vogel postulated that
each new branch fits into the largest still-existing gap between older branches, cutting a constant fraction off that gap.
Let \(\delta = 2z\pi\) be the angle between two branches. We see that \(z\) can't be a rational, otherwise after enough steps we'd have gaps that will never be filled. Let's instead construct a sequence of rationals \(z_n\) converging to the real \(z\).
At the \(n\)-th step we'd have \(z_n = \frac{p_n}{q_n}\), which means, counting from \(0\), that the \(q_n\)-th branch coincides with the \(0\)-th and that we've done \(p_n\) turns around the center.
At the \((n + 1)\)-th step the \(q_n\)-th branch cuts a fraction \(z_{n+1}\) off the gap between branch \(0\) and its neighbor, which was \(\frac{z_n}{p_n} = \frac{1}{q_n}\). Thus the \(q_n\)-th branch lies at \(p_n + \frac{z_{n+1}}{q_n} = q_{n}z_{n + 1}\)turns, therefore \[z_{n + 1} = \frac{p_n}{q_n} + \frac{z_{n+1}}{q_n^2} = \frac{p_n}{q_n}\left(1 - \frac{1}{q_n^2}\right)^{-1} = \frac{p_{n}q_{n}}{q_n^2 - 1}\text{.}\]
But we also have \(z_{n + 1} = \frac{p_{n + 1}}{q_{n + 1}}\), thus we have the equation \[z_{n + 1} = \frac{p_{n + 1}}{q_{n + 1}} = \frac{p_{n}q_{n}}{q_n^2 - 1}\text{.}\] By substituting \(p_n = F_{2m}\) and \(q_n = F_{2m + 2}\), consecutive Fibonacci numbers of even order, the previous equation becomes \[F_{2m + 2}^2 - 1 = F_{2m}F_{2m + 4}\text{,}\] which follows from Cassini's Identity.
Thus, when \(n\rightarrow\infty\), we have that \(z_n\rightarrow \varphi^{-2}\) where \(\varphi = \frac{1 + \sqrt{5}}{2}\), the golden ratio, because it is well known that the ratio of consecutive Fibonacci numbers tends to \(\varphi\). Therefore \[\delta = 2\varphi^{-2}\pi \approx 137.5^{\circ}\text{.}\]


Across: 7,24. Urban wife at 55, Lion player cast into Putnam dike? Lo, Cinderella turning! (6 6) 8,8dn. Player at 50 with mobile edge, zigging and zagging away with every game opening (8 6) 9. Recommended when bottom badly sore with start of disease (8) 10. They have value as determined by sale initially (6) 11,18dn. Player at 70 ruffled Lion manes with extra energy (4 6) 12. At the beginning, I never intended to indicate a logical loop, yet like this... (9) 14. Decoration of former player Judy at 100 in Roland-Garros pushing 3rd to 6th behind next three (7) 16. Still a player at 85, Morgan is a fellow unto himself? (7) 19. Still a player at 80, Paul a cricket institution with creative work turning money in Japan (9) 21. see 23 down 24. see 7 25. Rash's let out, and spreads broadly (8) 26. Rue clean blended blue (8) 27. Dry one out there? (6) Down: 1,3. Player at 35 smiles mischievously, chasing Lion by the end (6 5) 2. It lets people move together and Lion roam freely (8) 3. see 1 4. Tear prune into pieces for delight (9) 5. Somewhat northward of 6, city harassed, only partly from the south (6) 6. Somewhat northward from Sinai lot, an ancient land (8) 8. see 8 across 13. Examples of Lions regularly having unique "cat-ness"? (9) 15. On breaking out of circular Ch'i, Vedas positioned with many other old documents (8) 17. Each Lion's early passing has a new twist, providing openings in big game (8) 18. see 11 across 20. Roam freely with every third cougar getting protection (6) 22. Traitor cut out north country, largely where 6 was (6) 23,21ac. Alaskan yew established, bearing success out of Chicago at 45 (5 4)


Stream vector or tabular data based on the available filters.
Coming soon.
Get the specified feature description, i.e. the equivalent of one record from a tabular or vector dataset.


The dropdown component is an opinionated composition of the “fd-popover” and “fd-menu” components with the
use of a styled
button. It allows users to make one selection from a list. It is more flexible than the normal Select. Generally, it
should
be used when there are between 3 to 10 or more options.
This component is completely composed from other components.
The dropdown can be opened via keyboard by pressing enter or the space bar when focused. Dropdown menu items are not
automatically tab-indexed - see the Menu component documentation for more details.


10 Sep 2019 Marta Paes (@morsapaes)
This has been an exciting, fast-paced year for the Apache Flink community. But with over 10k messages across the mailing lists, 3k Jira tickets and 2k pull requests, it is not easy to keep up with the latest state of the project. Plus everything happening around it. With that in mind, we want to bring back regular community updates to the Flink blog.
The first post in the series takes you on an little detour across the year, to freshen up and make sure you’re all up to date.
The Year (so far) in Flink
Two major versions were released this year: Flink 1.8 and Flink 1.9; paving the way for the goal of making Flink the first framework to seamlessly support stream and batch processing with a single, unified runtime. The contribution of Blink to Apache Flink was key in accelerating the path to this vision and reduced the waiting time for long-pending user requests — such as Hive integration, (better) Python support, the rework of Flink’s Machine Learning library and…fine-grained failure recovery (FLIP-1).
The 1.9 release was the result of the biggest community effort the project has experienced so far, with the number of contributors soaring to 190 (see The Bigger Picture). For a quick overview of the upcoming work for Flink 1.10 (and beyond), have a look at the updated roadmap!
Integration of the Chinese-speaking community
As the number of Chinese-speaking Flink users rapidly grows, the community is working on translating resources and creating dedicated spaces for discussion to invite and include these users in the wider Flink community. Part of the ongoing work is described in FLIP-35 and has resulted in:
- A new user mailing list<EMAIL_ADDRESS>dedicated to Chinese-speakers.
- A Chinese translation of the Apache Flink website and documentation.
- Multiple meetups organized all over China, with the biggest one reaching a whopping number of 500+ participants. Some of these meetups were also organized in collaboration with communities from other projects, like Apache Pulsar and Apache Kafka.
In case you’re interested in knowing more about this work in progress, Robert Metzger and Fabian Hueske will be diving into “Inviting Apache Flink’s Chinese User Community” at the upcoming ApacheCon Europe 2019 (see Upcoming Flink Community Events).
Improving Flink’s Documentation
Besides the translation effort, the community has also been working quite hard on a Flink docs overhaul. The main goals are to:
- Organize and clean-up the structure of the docs;
- Align the content with the overall direction of the project;
- Improve the getting-started material and make the content more accessible to different levels of Flink experience.
Given that there has been some confusion in the past regarding unclear definition of core Flink concepts, one of the first completed efforts was to introduce a Glossary in the docs. To get up to speed with the roadmap for the remainder efforts, you can refer to FLIP-42 and the corresponding umbrella Jira ticket.
Adjusting the Contribution Process and Experience
The guidelines to contribute to Apache Flink have been reworked on the website, in an effort to lower the entry barrier for new contributors and reduce the overall friction in the contribution process. In addition, the Flink community discussed and adopted bylaws to help the community collaborate and coordinate more smoothly.
For code contributors, a Code Style and Quality Guide that captures the expected standards for contributions was also added to the “Contributing” section of the Flink website.
It’s important to stress that contributions are not restricted to code. Non-code contributions such as mailing list support, documentation work or organization of community events are equally as important to the development of the project and highly encouraged.
New Committers and PMC Members
The Apache Flink community has welcomed 5 new Committers and 4 PMC (Project Management Committee) Members in 2019, so far:
New PMC Members
Jincheng Sun, Kete (Kurt) Young, Kostas Kloudas, Thomas Weise
New Committers
Andrey Zagrebin, Hequn, Jiangjie (Becket) Qin, Rong Rong, Zhijiang Wang
Congratulations and thank you for your hardworking commitment to Flink!
The Bigger Picture
Flink continues to push the boundaries of (stream) data processing, and the community is proud to see an ever-increasingly diverse set of contributors, users and technologies join the ecosystem.
In the timeframe of three releases, the project jumped from 112 to 190 contributors, also doubling down on the number of requested changes and improvements. To top it off, the Flink GitHub repository recently reached the milestone of 10k stars, all the way up from the incubation days in 2014.
The activity across the user@ and dev@1 mailing lists shows a healthy heartbeat, and the gradual ramp up of user-zh@ suggests that this was a well-received community effort. Looking at the numbers for the same period in 2018, the dev@ mailing list has seen the biggest surge in activity, with an average growth of 2.5x in the number of messages and distinct users — a great reflection of the hyperactive pace of development of the Flink codebase.
In support of these observations, the report for the financial year of 2019 from the Apache Software Foundation (ASF) features Flink as one of the most thriving open source projects, with mentions for:
- Most Active Visits and Downloads
- Most Active Sources: Visits
- Most Active Sources: Clones
- Top Repositories by Number of Commits
- Top Most Active Apache Mailing Lists (user@ and dev@)
Hats off to our fellows at Apache Beam for an astounding year, too! For more detailed insights, check the full report.
1. Excluding messages from<EMAIL_ADDRESS>Upcoming Events
As the conference and meetup season ramps up again, here are some events to keep an eye out for talks about Flink and opportunities to mingle with the wider stream processing community.
North America
- [Conference] Strata Data Conference 2019, September 23-26, New York, USA
- [Meetup] Apache Flink Bay Area Meetup, September 24, San Francisco, USA
- [Conference] Scale By The Bay 2019, November 13-15, San Francisco, USA
Europe
- [Meetup] Apache Flink London Meetup, September 23, London, UK
- [Conference] Flink Forward Europe 2019, October 7-9, Berlin, Germany
-
The next edition of Flink Forward Europe is around the corner and the program has been announced, featuring 70+ talks as well as panel discussions and interactive “Ask Me Anything” sessions with core Flink committers. If you’re looking to learn more about Flink and share your experience with other community members, there really is no better place than Flink Forward!
-
Note: if you are a committer for any Apache project, you can get a free ticket by registering with your Apache email address and using the discount code: FFEU19-ApacheCommitter.
-
- [Conference] ApacheCon Berlin 2019, October 22-24, Berlin, Germany
- [Conference] Data2Day 2019, October 22-24, Ludwigshafen, Germany
- [Conference] Big Data Tech Warsaw 2020, February 7, Warsaw, Poland
- The Call For Presentations (CFP) is now open.
Asia
- [Conference] Flink Forward Asia 2019, November 28-30, Beijing, China
- The second edition of Flink Forward Asia is also happening later this year, in Beijing, and the CFP is open until September 20.
If you’d like to keep a closer eye on what’s happening in the community, subscribe to the community mailing list to get fine-grained weekly updates, upcoming event announcements and more. Also, please reach out if you’re interested in organizing or being part of Flink events in your area!


Home
About Us
Events
Gallery
Admin
Register Now
Events
Become Feelings
Feelings
become events
Any queries!


YDC2 - AJAX Solr Demos
YDC2 metadata search
Current Selection
Search
(press ESC to close suggestions)
Repository Code
Resource Availability
Institutions
Collections
Authors
Types
Eras


[exercises]
Fill out a function to return the index of modulation/coding scheme selection based on SNR, link margin, etc. here (valid return values are integers in the range 0 through 11):
function callback(freq1,bw1,mcs1) {
return {'freq1':0, 'bw1':0.1, 'mcs1':0};
Select pre-configured strategy: Select pre-configured strategy... Fixed modulation/coding scheme Frequency Hopping
SNR: , Capacity: , Spect. Eff.: Margin: , Actual Rate:
Time Left: , Outages: , Total Bits: