--- layout: thingmonk ---
ThingMonk is another unique conference from the team that brought you Monki Gras and Monktoberfest. Now in its fourth year, ThingMonk is the conference that IoT developers and designers, from London and further afield, attend.
ThingMonk will be held on September 13th and 14th 2016 in London. This year we are also running a Day 0 event with a half day of talks in association with the Eclipse Foundation, followed by a pre-event coding workshop (hackathon) running for the afternoon and evening of September 12th. The coding workshop will be the culmination of a series of online events and promotions beginning in June 2016.
The event bridges Web Startup Internet of Things communities with their peers in the Industrial Internet/Machine to Machine to Machine space. We bring elite developers and practitioners together, fostering cross-sector collaboration.
2015 was the year in which the Internet of Things has moved front and center for business. In 2016 business is trying to understand and capitalise on the the opportunities for innovation. ThingMonk is at the very forefront of this movement.
This year’s themes include:
- Data, Analytics and Visualisation: how do we use, present and aggregate IoT data at scale
- Machine Learning and IoT
- Platforms at Scale for IoT
- Time Series and IoT
- Design and IoT: designing for users, their context and scale, a product management revolution
- Industrial IoT/Industry 4.0 - how manufacturing is being reconfigured as software
- Full stack IoT: how connected devices, platforms, services and data come together
- IoT Programming Models
ThingMonk celebrates both hacker culture and industrial design, web and mobile. We’ll look at the “boring” side of logistics, the kind that pays the bills and puts food on the table. From agile to big data to machine to machine comms, continuous deployment to Big Data, developers are currently building the future we’ve dubbed the Internet of Things. The alpha geeks are already making the future.
ThingMonk itself will run as a single track conference over 2 days. We’ll kick off with data and IoT on September 13th, and the conversation will continue with an evening event curated by RedMonk.
ThingMonk 2015 will be a signature event, and experience to remember. We don’t allow pitches, we don’t sell speaking slots, and every talk will be created exclusively for the event, video recorded to scale distribution.
ThingMonk will be fun, informative, but most importantly will bring different communities together, in a high profile developer and practitioner conference. This is a unique opportunity to reach an elite audience of technical resources that transcend traditional developer categories. The Internet of Things will be built by software developers - the people that come to this event - and we’ll have 180 attendees for this years event.
Please contact Juliane Leary to purchase sponsorships or with any questions.
The Unobtainium sponsor will be prominently featured in our official event materials, including slides, large scale banners, online and offline properties, and mentioned during the event introduction and conclusion. The Unobtainium sponsor will be cited as such on our corporate and individual Twitter feeds and your brand will be prominently featured in all conference materials. Oh yeah, we’re also going old school- there will be a booth! This sponsor receives five free seats at the event, and will have the right to post promotional materials at the venue. A five minute slot to discuss ways to engage with the sponsor on the main stage. Logo featuring in sponsor videos.
Sponsors will be mentioned in all of our official event materials, banners etc. They will further be cited as such on our corporate and individual Twitter feeds. You will also receive five seats at the event. Large scale banners. Booth and demo space.
Graphene sponsors will feature on all official event materials, online and offline. They will further be cited as such on our corporate and individual Twitter feeds. You will also receive 3 seats at the event. Display board.
Lithium Ion sponsors mentioned on all materials online and off. Receive 1 ticket. Dedicated tweets pointing to jointly curated materials.
Become the exclusive sponsor of the ThingMonk coding working shop. You will feature in our twitter feeds from June to September. The exclusive sponsor will also be asked to provide access to their IoT platform to ThingMonk attendees to develop custom IoT solutions in the run up to ThingMonk.
It would not be a Redmonk event without combining awesome food and drink. Expect an event which is immersive and IoT themed featuring some of the finest food and best craft drinks that London has to offer. In 2013 we even had a robot bartender.
RedMonk will film all ThingMonk conference talks. These videos will be posted to the RedMonk community (blogs, YouTube, Twitter, Facebook) after the event and available in various RedMonk podcasts. This video series sponsorship will give you an intro piece for use in each video in this series (a 2-5 second still image or pre-roll of up to 30 seconds provided by the sponsor). Sponsor can also provide a link (for example to a specific campaign, your company, or product) for use in each video post on the RedMonk and ThingMonk sites. You will be reaching a savvy developer audience with these videos.
Our catered lunch will be fit for the new foodie London. Help us feed everybody, and you’ll get placement on the serving tables and a public thank you as we head into break. Also feature on other conference materials/banners etc.
At RedMonk we love our coffee and will have some of the best baristas in London serving superb craft coffee over the entire conference. Branded coffee cups
Buy a round of drinks for our evening party.
It’s hard to concentrate on an empty stomach, help get each day off to a great start!
We’re looking forward to a busy day of sessions, whether those be main tent, breakout or hallway in nature. As that kind of thinking’s hungry work, we’ll be making snacks available during the day. Be the snack sponsor and get placement right on the snack table.


Our services are second to none
CUSTOM BED SHEET
CUSTOM PILLOW CASES
CUSTOM TEA MUGS
Start each and every day off right with a cup of pure joy! Our custom mugs are the perfect way to add a personal touch to your morning and make great gifts for family, friends, teachers and coworkers. Browse our many personalized mug options to find unique designs and styles so you can create one-of-a-kind mugs for anyone. Create a coffee mug that includes a personal message, a name, monogram or your favorite photos.


Home
Your Adobe Flash Player is missing or out of date or you do not have Javascript enabled in your browser.
Install the latest Adobe Flash Player.
UCR is a diverse and vibrant community where international knowledge, ideas and skills are infused into all aspects of the university.
To advance UCR’s 2020 mission, International Affairs serves as a catalyst, sparking new projects and accelerating existing international activities. By adding an international dimension to teaching, research and community engagement, UC Riverside will continue to honor its commitment to engaging diverse voices and ideas.
International Affairs works with the entire university to increase research opportunities, enhance scholarship and educational programs, strengthen international experiences, and build collaborative partnerships around the world.
The International Affairs Office (IAO) consists of three core units: International Students, International Scholars, and Study Abroad. International Affairs promotes education abroad programs for students, supports international students and scholars on the UCR campus, and enhances collaborative research opportunities for faculty. These units work collaboratively to expand international opportunities for students, faculty and staff at home and abroad.
Goals for an internationally vibrant UC Riverside (taken from general framework)
- Through research, increase UCR’s role in solving major international issues of our time
- With effective teaching, educate students to be internationally knowledgeable in their disciplines
- Advance our land-grant mission by assisting the City of Riverside, the Inland Empire and the state of California in their strategic international economic partnerships
- By the strengths of its research, teaching and engagement, position UCR as a globally vibrant and influential university
View the full document: General Framework for UCR Strategic International Goals
Biography of Vice Provost Kelechi Kalu
We welcome feedback on the ability of this website to direct visitors to the resources they need.


Russia Declassifies Soviet-Era Document Ordering Creation of First Naval Cruise Missile
P-5 is considered to be "an ancestor" of modern-day Russian cruise missiles - like Kalibr or Biryuza, used by Russia's military against various terrorist groups in the Middle East.
Russian nuclear tech corporation Rosatom has declassified a secret Soviet goverment document ordering the design for the USSR's first cruise missile - P-5 "Pyatyorka" (NATO codename SS-N-3C Shaddock) back in 1955.
The previously classified order, as well as many others, was published by the company ahead of the 75th anniversary of the Russian nuclear industry, which will be celebrated next August.
The Ministry of Medium Machine-Building Industry's order required the experimental design bureau No. 52 (OKB-52, currently known as NPO Mashinostroyeniya) to create 40 guided nuclear missiles and to place them on submarines.
P-5 was launched in 1957, and inducted into service by the Soviet military in 1959, becoming the first sea-based cruise missile in the world. It was capable of сarrying a blasting charge or nuclear charge and could hit deep inside an enemy's heartland.


NEWS.md
prepareTemplate()
: Migrated function to basejump package, and simplifed to copy all files from rmarkdown/shared
directory inside a package. Currently in use by bcbioRNASeq and bcbioSingleCell.This is a maintenance release designed to simplify the package for long-term stability. Here we are moving all of the current S4 method support to basejump for consistency, since the methods apply to SummarizedExperiment
and are not bcbio-workflow specific. We are keeping the package simple by exporting the read*
family of functions here, which are designed to integrate with the bcbio output directories.
flatFiles
, metrics
, plotCorrelationHeatmap
, plotDot
, plotGene
, plotHeatmap
, plotQuantileHeatmap
, plotViolin
.prepareSummarizedExperiment
has been moved to basejump and renamed to makeSummarizedExperiment
, for consistency. The underlying code remains the same.SummarizedExperiment
to list
coercion method to basejump.separatorBar
and updateMsg
to basejump.SummarizedExperiment
method suport to basejump package: gene2symbol
, interestingGroups
, sampleData
, sampleNames
, sanitizeSampleData
, selectSamples
, uniteInterestingGroups
.SummarizedExperiment
to basejump: convertGenesToSymbols
, counts
, gene2symbol
, interestingGroups
, sampleData
, etc.SummarizedExperiment
method support. The documentation for these heatmap functions has been improved (and simplified), showing the supported arguments more clearly.transcriptID
instead of txID
in tx2gene and GRanges metadata defined in rowRanges
slot of object.aes
instead of aes_string
for all internal ggplot2 code, which uses tidyeval (v3.0 update).rse_bcb
and rse_bcb
example data to basejump, for unit testing. These datasets are still available in bcbioBase.assertFormalAnnotationCol
function defunct. No longer using to check annotationCol
argument integration in heatmap functions, since we’re now providing only SummarizedExperiment
method support, instead of matrix method support (which is too complicated and error prone for users).assertFormalInterestingGroups
function to basejump, where the other assert check functions are defined. This helps improve package consistency.bcbio_geom_abline
.-methods.R
as a suffix, as recommended by Bioconductor, in preparation for package submission.minimalSampleData
enables easy creation of a sample metadata data.frame
by simplify specifying the sample names (e.g. “description” in bcbio YAML). This function was added for easy metadata handling for 10X Cell Ranger in the bcbioSingleCell package, but is generally applicable to other bcbio datasets and may be incorporated into bcbioRNASeq in a future update.interestingGroups
handling inside plotHeatmap
family of functions.prepareSummarizedExperiment
if missing transcripts are present. Now the function simply lists the genes that don’t have metadata in rowRanges
.bcbioBase-package.R
file.bcbio_geom_abline
, bcbio_geom_label
, bcbio_geom_label_average
, and bcbio_geom_label_repel
.make.unique
instead of make.names
for convertGenesToSymbols
coercion on SummarizedExperiment objects. We’re using make.names
only when coercing seurat objects (see bcbioSingleCell code).RangedSummarizedExperiment
working example, based on bcbioRNASeq
example dataset.sampleData
now supports clean = TRUE
argument, which will hide columns that contain metrics or other calculations from the user. This is useful when preparing an R Markdown report, where we only want to show relevant metadata (e.g. factor columns). This is enabled by default.metadataBlacklist
to hide specific columns in sample metadata.sampleMetadata
is now deprecated in favor of sampleData
. This function still works but will now warn the user, and should be removed from R Markdown template code.SummarizedExperiment
to list
coercion support, which uses the same code as flatFiles
.readSampleData
no longer requires or recommended fileName
column. Only the description
column is required for demultiplexed data. In the case of multiplexed samples (e.g. inDrops single-cell RNA-seq), then sampleName
, index
and sequence
names are also required. Multiplexed cell ranger data only requires sampleName
and index
, since the index barcode isn’t present in the counts matrix.readYAML
family of functions.readSampleData
: switched to using merge
instead of left_join
internally.inferno
, and the British variant scale_colour_viridis
.plotHeatmap
, plotQuantileHeatmap
: Always attempt to convert genes to symbols for heatmaps.convertGenesToSymbols
now has method support for SummarizedExperiment
.rse_bcb
and rse_dds
.prepareSummarizedExperiment
now supports transgenes with the transgeneNames
argument (e.g. “EGFP”), and FASTA spike-ins with the spikeNames
argument (e.g. “ERCCs”). Additionally, rowRanges
and colData
are no longer required and can be left NULL
, although this isn’t generally recommended.sampleYAML
function code.bcbioBase-package.R
file.globals.R
file.sampleData
generic. Providing method support for SummarizedExperiment
class. This generic provides consistent sample metadata support in both the bcbioRNASeq and bcbioSingleCell packages. For bcbioSingleCell, colData
returns information about the cells, not the samples. For bcbioRNASeq, colData
and sampleData
provide similar information on the samples.uniteInterestingGroups
as a generic. Provides support for adding an interestingGroups
column to a data frame.SummarizedExperiment
method support for gene2symbol
, interestingGroups
generics.prepareSummarizedExperiment
from a generic to a standard function.prepareSummarizedExperiment
now requires rowRanges and supports FASTA spike-ins with isSpike
argument. This helps set up a SingleCellExperiment
object in the bcbioSingleCell package.prepareTemplate
has been converted from a generic to a standard function.readDataVersions
and readProgramVersions
now return an empty tibble if the file is missing. bcbio doesn’t always output these files, so we have changed the behavior from stopping on a missing file to simply warning and returning empty.sampleDirs
function, that informs the user about the names of the sample directories in the bcbio run.readSampleMetadataFile
and sampleYAMLMetadata
.projectDirPattern
to match bcbio project directories (e.g. 2018-01-01_rnaseq
) across packages.rdsToken
in copyToDropbox
to be NULL
instead of NA
.sessioninfo::session_info
instead of devtools::session_info
.BiocCheck
.checkInterestingGroups
since this code is still present on bcbioRNASeq master branch.sampleMetadata<-
assignment generic.assert_formal_interesting_groups
assert checks. Deprecated checkInterestingGroups
.copyToDropbox
function, which enables input of a list of local files and returns Dropbox paths using rdrop2.abort
, inform
, and warn
.prepareSampleMetadata
.assignAndSaveData
, loadData
, loadRemoteData
, saveData
from basejump package.prepareTemplate
function to use internally stored data.


--- layout: post tags: [AutoFixture, Unit Testing] date: 2010-10-08 08:48:07 UTC title: "AutoData Theories with AutoFixture" --- {% include JB/setup %}
AutoFixture 2.0 comes with a new extension for xUnit.net data theories. For those of us using xUnit.net, it can help make our unit tests more succinct and declarative.
AutoFixture's support for xUnit.net is implemented in a separate assembly. AutoFixture itself has no dependency on xUnit.net, and if you use another unit testing framework, you can just ignore the existence of the Ploeh.AutoFixture.Xunit assembly.
Let's go back and revisit the previous test we wrote using AutoFixture and its auto-mocking extension:
[Fact] public void AddWillPipeMapCorrectly() { // Fixture setup var fixture = new Fixture() .Customize(new AutoMoqCustomization()); var basket = fixture.Freeze<Basket>(); var mapMock = fixture.Freeze<Mock<IPizzaMap>>(); var pizza = fixture.CreateAnonymous<PizzaPresenter>(); var sut = fixture.CreateAnonymous<BasketPresenter>(); // Exercise system sut.Add(pizza); // Verify outcome mapMock.Verify(m => m.Pipe(pizza, basket.Add)); // Teardown }
Notice how all of the Fixture Setup phase is only used to create various objects that will be used in the test. First we create the fixture object, and then we use it to create four other objects. That turns out to be a pretty common idiom when using AutoFixture, so it's worthwhile to reduce the clutter if possible.
With xUnit.net's excellent extensibility features, we can. AutoFixture 2.0 now includes the AutoDataAttribute in a separate assembly. AutoDataAttribute derives from xUnit.net's DataAttribute (just like InlineDataAttribute), and while we can use it as is, it becomes really powerful if we combine it with auto-mocking like this:
public class AutoMoqDataAttribute : AutoDataAttribute { public AutoMoqDataAttribute() : base(new Fixture() .Customize(new AutoMoqCustomization())) { } }
This is a custom attribute that combines AutoFixture's two optional extensions for auto-mocking and xUnit.net support. With the AutoMoqDataAttribute in place, we can now rewrite the above test like this:
[Theory, AutoMoqData] public void AddWillPipeMapCorrectly([Frozen]Basket basket, [Frozen]Mock<IPizzaMap> mapMock, PizzaPresenter pizza, BasketPresenter sut) { // Fixture setup // Exercise system sut.Add(pizza); // Verify outcome mapMock.Verify(m => m.Pipe(pizza, basket.Add)); // Teardown }
The AutoDataAttribute simply uses a Fixture object to create the objects declared in the unit tests parameter list. Notice that the test is no longer a [Fact], but rather a [Theory].
The only slightly tricky thing to notice is that when we declare a parameter object, it will automatically map to a call to the CreateAnonymous method for the parameter type. However, when we need to invoke the Freeze method, we can add the [Frozen] attribute in front of the parameter.
The best part about data theories is that they don't prevent us from writing normal unit tests in the same Test Class, and this carries over to the [AutoData] attribute. We can use it when it's possible, but for those more complex tests where we need to interact with a Fixture instance, we can still write a normal [Fact].
Comments
System.InvalidOperationException : No data found for XunitSample.TestClass.TestMethod2
System.InvalidOperationException : No data found for XunitSample.TestClass.TestMethod1
Did I miss something in terms of setup? Sample code here - https://gist.github.com/1920943
Forgive me if I missed this point in your blog, but it seems that the parameter order is critical when injecting objects marked with the [Frozen] attribute into your test, if the SUT is being injected with that frozen object.
I was refactoring my tests to make use of AutoData like you've shown here, and was adding my [Frozen]Mock<IMySutDependency> parameter willy-nilly to the end of the test parameters, *after* the SUT parameter. I was freezing it so that I could verify the same mocked dependency that was injected into the SUT as part of my test, or so I thought...
void MySutTest(MySut sut, [Frozen]Mock<IMySutDependency> frozen)
After a brief episode of confusion and self-loathing, I moved the frozen mocked dependency in front of the SUT in the test parameter list. Skies parted, angels sang, test passed again.
void MySutTest([Frozen]Mock<IMySutDependency> frozen, MySut sut)
Jeff, thank you for your comment. As you have discovered, the order of test parameters matter when you apply those 'hint' attributes, like
[Frozen]
. This is by design, because it enables you to generate one or more unique values of a data type before you freeze it. This could sometimes be important, although it's not something I do a lot. Keep in mind that the [Frozen] attribute wasn't designed exclusively with mocks in mind; it doesn't know anything about mocks - it just freeze a Type.In general, all of those 'hint' attributes apply an ICustomization, and they apply each ICustomization in the order of the arguments to which they are applied. The order of AutoFixture Customizations matter.


Ben Fletcher
Web technology analysis & opinion
With thanks to
colleagues
at the
FT
and countless others in the community
Foobar
Article
This is the first article.
Article
This is the second article.


Flight-Surety Ethereum DAPP
Register Airline
Register Airline
Register Flight
departureTime
Register Flight
Register Insurance
Register Insurance
Withdraw
Withdraw
Submit oracle flight
Submit
Flight List
Refresh


The .divider
class is used to separate links inside the dropdown menu with a thin horizontal line:
The .dropdown-header
class is used to add header inside the dropdown menu:
Add the .dropdown-menu-rightr
class inside

is used to make the dropdown menu display on the right:
Change the .dropdown
class inside

to .dropup
to create a dropup menu:
To improve accessibility for people using screen readers,
you should include the following role
and aria-*
attributes, when create a dropdown menu:


--- layout: post-template title: "Summer" postHeading: "Summer" subHeading: "A poem" tags: depression poetry related: depression date: "06 Jun 2019" image: "/img/Summer/thomas-welch-324451-unsplash.jpg" credit: "Photo by Thomas Welch on Unsplash" ---
A tiny poem
. . .
The sun rises up
Like a black ball of mud
The summer breeze wails
Like gale force winds
The dew fall descends
Like sweat on my brow


| Package | Description |
|---|---|
| IK | |
| IK.floatIK | |
| data | |
| sceneGraph | |
| sceneGraph.math.doubleV | |
| sceneGraph.math.floatV |
| Class and Description |
|---|
| JSONObject
A JSONObject is an unordered collection of name/value pairs.
|
| LoadManager |
| Saveable |
| SaveManager |
| Class and Description |
|---|
| JSONObject
A JSONObject is an unordered collection of name/value pairs.
|
| LoadManager |
| Saveable |
| SaveManager |
| Class and Description |
|---|
| CanLoad
this interface defines objects which can self populate from JSONObjects but don't
need to register themselves with the savestate tracker.
|
| Constants
These are mostly just constants potentially useful for saving and loading JSOn files.
|
| DoubleDict
A simple table class to use a String as a lookup for an double value.
|
| DoubleDict.Entry |
| DoubleList
Helper class for a list of floats.
|
| EWBIKLoader |
| FloatDict
A simple table class to use a String as a lookup for an float value.
|
| FloatDict.Entry |
| FloatList
Helper class for a list of floats.
|
| IntDict
A simple class to use a String as a lookup for an int value.
|
| IntDict.Entry |
| IntList
Helper class for a list of ints.
|
| JSONArray
A JSONArray is an ordered sequence of values.
|
| JSONObject
A JSONObject is an unordered collection of name/value pairs.
|
| LoadManager |
| LongDict
A simple class to use a String as a lookup for an int value.
|
| LongDict.Entry |
| LongList
Helper class for a list of ints.
|
| Saveable |
| SaveManager |
| StringDict
A simple table class to use a String as a lookup for another String value.
|
| StringDict.Entry |
| StringFuncs |
| StringList
Helper class for a list of Strings.
|
| TableRow |
| TypeIdentifier |
| Class and Description |
|---|
| CanLoad
this interface defines objects which can self populate from JSONObjects but don't
need to register themselves with the savestate tracker.
|
| JSONArray
A JSONArray is an ordered sequence of values.
|
| JSONObject
A JSONObject is an unordered collection of name/value pairs.
|
| Class and Description |
|---|
| CanLoad
this interface defines objects which can self populate from JSONObjects but don't
need to register themselves with the savestate tracker.
|
| JSONArray
A JSONArray is an ordered sequence of values.
|
| JSONObject
A JSONObject is an unordered collection of name/value pairs.
|
| LoadManager |
| Saveable |
| SaveManager |
| Class and Description |
|---|
| CanLoad
this interface defines objects which can self populate from JSONObjects but don't
need to register themselves with the savestate tracker.
|
| JSONArray
A JSONArray is an ordered sequence of values.
|
| JSONObject
A JSONObject is an unordered collection of name/value pairs.
|


The entire project is public on GitHub, so you can contribute ideas, tools, and code to the project
Workout Junkie was built using Google's Flutter Framework, using the power of Dart. Flutter allows Workout Junkie to be a fast, lightweight mobile application, with a complex UI and cross platform compatibility.
Workout Junkie will be released on the Google Play Store, for free!


--- layout: post title: "Physics and PhysX" date: 2016-07-03 18:00:00 +1000 author: Cameron Baron ---
It has been a little while since my last post so I will split this one up into two as quite a bit has happened. I will start with my last school assessment, Physics.
This assessment was all about Physics. First we had to create our own physics enviroment with realistic (as possible) collisions, gravity and reactions. Very heavily math based, and plenty of tinkering to make things feel "natural". We also needed to create a physics scene using Nvidia's PhysX system, much more robust and evolved than our own as it is used world wide to make games like Fallout 4, XCOM 2, The Witcher 3 and most of the latest Batman games . The task we were given, was to show and implement a number of demonstrations:
Custom physics was a great place to start, because I could learn the inner workings of what and how things work before playing with PhysX , and it also took up a lot more time so better to get it knocked over first. The biggest issue I encountered with this was the collision system, it was at times difficult to picture or visualise what was happening in code as it got quite indepth. I spent many hours scribbling and editing code to try to get things to behave realistically. In the end it turned out fairly well, there are a few issues that I can't seem to find an easy solution to. Stacking dynamic items causes them to eventually push through each other because of the way the collision detection and response is handled, it only accounts for one collision at a time and responds straight away (this is were PhysX is an advantage, I'll come back to that later)
Once the collisions were as good as I could get, without going overboard, I implemented springs and joints. More math using Hooke's Law (F = -kX) and guesstimation to make things look and feel "natural". This was a lot of fun, the first thing I made with springs was a rope that swung and could be pushed, it was very exciting! The second thing I made was cloth, now this was cool, by just joining a grid of points together with springs, you could make a cloth or fabric like material.
PhysX is a very powerful physics engine, much more so than the physics engine I attempted to create. The most difficult part about PhysX was making sure it was all setup in the project properly. Luckily there is a lot of documentation on Nvidia's own site and many forums dedicated to helping and informing. I found the fluid physics the most fun aspect to play with, and as usual you just have to tweak lots of different parameters to adjust the feel and look of the particles to make the type of fluid you want.
At the moment the project as a whole isn't anything special, this will change over the next coming months as I improve and polish it to something I can be very proud of, only then will I upload some pictures and videos. For now you will just have to use your imagination.


Task Class
The simplest form of a MonkeyBars task. Once started the task executes all
functionality located within the performTask
function block. Set logLevel
to see console logs during task execution.
Constructor
Task
-
attributes
Parameters:
-
attributes
ObjectList of attributes to apply to the task
Example:
var task = new MonkeyBars.Task({
name:"ExampleTask",
performTask:function(){
this.complete();
},
onComplete:function(){
alert(this.name + " is complete!");
}
});
task.start();
Item Index
Methods
Methods
cancel
()
Calling this method cancels the task. However it is up to the instance to handle the canceled state.
Example:
var task = new MonkeyBars.Task({
performTask:function(){
if(true){
this.cancel();
}
}
});
task.start();
cancel
()
Calling this method cancels the task. However it is up to the instance to handle the canceled state.
Example:
var task = new MonkeyBars.Task({
performTask:function(){
if(true){
this.cancel();
}
}
});
task.start();
complete
()
Calling this method says that the tasks execution is now complete.
Example:
var task = new MonkeyBars.Task({
performTask:function(){
this.complete();
}
});
task.start();
complete
()
Calling this method says that the tasks execution is now complete.
Example:
var task = new MonkeyBars.Task({
performTask:function(){
this.complete();
}
});
task.start();
fault
-
error
Calling this method to fault a task. If it is part of a group task this will also call the groups fault method passing the error up to the group.
Parameters:
-
error
StringMessage associated with the cause of the fault.
Example:
var task = new MonkeyBars.Task({
performTask:function(){
var a = "a";
if(a != "b") {
this.fault("a != b");
}
}
});
task.start();
fault
-
error
Calling this method to fault a task. If it is part of a group task this will also call the groups fault method passing the error up to the group.
Parameters:
-
error
StringMessage associated with the cause of the fault.
Example:
var task = new MonkeyBars.Task({
performTask:function(){
var a = "a";
if(a != "b") {
this.fault("a != b");
}
}
});
task.start();
initialize
-
attributes
Initialization functionality
Parameters:
-
attributes
Object
initialize
-
attributes
Initialization functionality
Parameters:
-
attributes
Object
onCancel
()
Convenience method called when the task is canceled.
onCancel
()
Convenience method called when the task is canceled.
onChange
-
state
-
error
This method is called during the execution lifecycle of the task. It is intentionally left blank and is up to the instance to describe it functionality.
Parameters:
-
state
IntegerThe current state of the task
-
error
StringMessage describing error
Example:
var task = new MonkeyBars.Task({
performTask:function(){
this.complete();
},
onChange:function(state,error){
if(state == MonkeyBars.TaskStates.Completed){
alert("complete");
}
}
});
task.start();
onChange
-
state
-
error
This method is called during the execution lifecycle of the task. It is intentionally left blank and is up to the instance to describe it functionality.
Parameters:
-
state
IntegerThe current state of the task
-
error
StringMessage describing error
Example:
var task = new MonkeyBars.Task({
performTask:function(){
this.complete();
},
onChange:function(state,error){
if(state == MonkeyBars.TaskStates.Completed){
alert("complete");
}
}
});
task.start();
onComplete
()
Convenience method called when the task completes.
onComplete
()
Convenience method called when the task completes.
onFault
-
error
Convenience method called when the task faults.
Parameters:
-
error
StringMessage describing error
onFault
-
error
Convenience method called when the task faults.
Parameters:
-
error
StringMessage describing error
onStart
()
Convenience method called when the task starts.
onStart
()
Convenience method called when the task starts.
performTask
()
This method is required for simple tasks and will throw an exception if it is called and not overridden. If you overwrite this method on a task group then you need to make sure that you call the extended/implemented classes original prototype method (see the example below).
Example:
var parallel = new MonkeyBars.ParallelTask({
...
performTask:function(){
// custom functionality
MonkeyBars.ParallelTask.prototype.performTask.call(this);
}
...
})
performTask
()
This method is required for simple tasks and will throw an exception if it is called and not overridden. If you overwrite this method on a task group then you need to make sure that you call the extended/implemented classes original prototype method (see the example below).
Example:
var parallel = new MonkeyBars.ParallelTask({
...
performTask:function(){
// custom functionality
MonkeyBars.ParallelTask.prototype.performTask.call(this);
}
...
})
reset
()
Resets a task to its original state
reset
()
Resets a task to its original state
reset
()
Resets a task to its original state
reset
()
Resets a task to its original state
start
()
Kicks off the execution of the task by calling the tasks performTask
method.
This method can only be run once on a task.
start
()
Kicks off the execution of the task by calling the tasks performTask
method.
This method can only be run once on a task.
Properties
concurrent
Boolean
Whether or not to run the task concurrently through Web Workers
Default: false
concurrent
Boolean
Whether or not to run the task concurrently through Web Workers
Default: false
currentIndex
Integer
The index of the subtasks that have completed execution.
Default: 0
currentIndex
Integer
The index of the subtasks that have completed execution.
Default: 0
data
Object
Task data
Default: undefined
data
Object
Task data
Default: undefined
displayName
String
Display name for task. Used in logging output.
displayName
String
Display name for task. Used in logging output.
logLevel
Integer
The default logging level for tasks
Default: 0
logLevel
Integer
The default logging level for tasks
Default: 0
state
Integer
The current state of the task
Default: 0
state
Integer
The current state of the task
Default: 0
timeout
Integer
Time in milliseconds in which a task will time out and throw a fault
Default: undefined
timeout
Integer
Time in milliseconds in which a task will time out and throw a fault
Default: undefined
type
String
The kind of task
type
String
The kind of task
worker
Object
This object can either be simply a reference to a custom WorkerTask extention's
constructor. Or it can be an object with a constructor key/value pair. If it is the
latter then you also have the option of passing a handler function that will be run
on the onMessage
handler of the Worker itself.
Default: undefined
Example:
var task = new MonkeyBars.Task({
...
worker:{
constructor:CustomWorker,
handler:function(e){
// called when a postMessage is posted from the task
}
},
...
});
var task = new MonkeyBars.Task({
...
worker:CustomWorker,
...
});
worker
Object
This object can either be simply a reference to a custom WorkerTask extention's
constructor. Or it can be an object with a constructor key/value pair. If it is the
latter then you also have the option of passing a handler function that will be run
on the onMessage
handler of the Worker itself.
Default: undefined
Example:
var task = new MonkeyBars.Task({
...
worker:{
constructor:CustomWorker,
handler:function(e){
// called when a postMessage is posted from the task
}
},
...
});
var task = new MonkeyBars.Task({
...
worker:CustomWorker,
...
});


@Beta interface SgfViewAdapter
(source)
If you want to use the SGF
parsing and handling architecture provided by this library but make
your own view with fundamental changes, you can make it implement this interface so that it can be
controlled by the SgfController.
If you only need to make adjustments to the way some components are drawn, consider customizing the provided SgfView. Support for different games can also be achieved by implementing the SgfBoard interface.
A cleaner architecture would be to have a different class than the view implement this adapter, and then have the adapter tell the view what to draw. For ease of standard usage, in this library, the SgfView implements this interface directly.
You can also reuse the GoBoard, GoPieceDrawer, DefaultMarkupDrawer and DefaultInfoTextMaker components used by the SgfView implementation for your own view.
See Also
onReceiveSgfData |
Called by the SgfController to transmit new data for the view to display. abstract fun onReceiveSgfData(data: List<SgfData>): Unit |
registerInputListener |
Registers the listener as SgfInputListener to trigger in response to touch events. abstract fun registerInputListener(listener: SgfInputListener): Unit |
SgfView |
Draws an interactive Board together with undo/redo buttons and additional informational text. It's a
class SgfView : AppCompatTextView, SgfViewAdapter |


Aegisub / Exporting
In addition to the normal "Save" and "Save as" functions, Aegisub also has an "Export" feature, which can transform the entire script through various export filters. This is used for a number of things ranging from framerate conversions over karaoke effect generation to just saving to other formats and/or character sets.
The export dialog
The upper half of the window contains the available filters. Ticking one or more of them will apply them in the order they are listed; use the move up/down buttons to change the order. The lower half contains a brief description of the selected filter.
Some filters have configuration parameters; those that do will extend the window to the right and put any settings controls there.
The dropdown menu at the bottom controls what text encoding will be used for the exported file. May be useful for exporting to legacy programs that do not support Unicode.
When you click the "Export" button, do note that you can choose other formats than ASS to save to. Also note that this will almost always mean that a lot of formatting tags will be stripped.
Filters
The following filters are available in the default installation:
Limit to visible lines
Exports only the lines that are currently visible on the active video frame. Does nothing if you do not have video loaded. Script headers and styles etc. are also exported.
Karaoke template
Filters the script through the automation script "karaoke templater" to generate karaoke effects. See the karaoke templater and automation overview pages for further details.
Transform framerate
In "constant" output mode, recalculates every single timestamp in the script (including ones contained in override tags) to work with a new framerate. Note that this means that the entire script will be "sped up" or "slowed down". Can be used for NTSC->PAL conversions or vice versa.
In "variable" output mode, uses the framerate of the loaded video (or the specified one, if different from the video's) and the loaded timecodes to recalculate every single timestamp in the script so that the exported subtitles can be hardsubbed on the loaded video and still sync up after timecodes are taken into account. Does nothing if you do not have timecodes loaded. See variable framerate video for further details.
Clean tags
Filters the script through the "clean tags" automation script, which tries to clean up the override tag blocks by concatenating adjacent blocks and removing redundant tags (more specifically, the second instance of tags that can only be specified once per line).
Clean script info
Cleans the script headers by removing all lines that are not absolutely essential for proper display of the script. If you're paranoid, you should consider using this for scripts that you plan on distributing in the original form, since Aegisub stores things like the path to the last opened video/audio etc. in the script headers.
Fix styles
Goes through all the lines of the script and checks what style they use; any lines that use a style that isn't available in the current script is replaced with Default.


Susan Granger's commentary on "THE WIZARD OF OZ" (Warner Bros.)
Starting today, the most beloved of all American musicals, recently named the 6th Best Motion Picture of All Time by the American Film Institute, is available on the big screen for the first time in more than 25 years. Made in 1939, this delightful classic now has state-of-the-art technical improvements, including a remastered soundtrack and a digitally restored picture. Judy Garland stars as Dorothy Gale, a Kansas farm-girl whom a tornado blows over the rainbow to a magical land called Oz, where she and her dog Toto take a journey down the Yellow Brick Road to find the fabled Wizard (Frank Morgan). Along the way, they're joined by the Scarecrow (Ray Bolger), the Tin Woodsman (Jack Haley) and the Cowardly Lion (Bert Lahr). But did you know that Deanna Durbin or Shirley Temple were the studio's original casting choices for Dorothy, that Buddy Ebsen played the Tin Woodsman until the silver make-up made him ill, that W.C. Fields refused the role of the Wizard, and that the song "Over the Rainbow" was almost cut from the film? Not only did L. Frank Baum write a charming fantasy but it's also an insightful philosophical commentary on the fears, questions, and desires with which all children grapple. Home is the center of every child's universe - but what if that house was transported elsewhere? What if one's drab, everyday existence were suddenly, inexplicably changed to something dazzling yet quite different? The three characters Dorothy meets on her rite of passage represent the head, the heart, and the soul, as she grasps the concept that things are not always what they seem. The issues raised by "The Wizard of Oz" are dilemmas that intrigue and resonate with the child in all of us - which is why this is the quintessential family film. It's a MUST SEE this weekend.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


--- layout: post title: "My Week in Review" date: 2016-10-09 05:05:00 +0000 tags: image: https://s3.amazonaws.com/audreywatters/2016-10-09-pussy.jpg imagecredits: https://www.flickr.com/photos/cogdog/30202493055/in/dateposted/ ---
Icon credits: The Noun Project


Shanghai is one of the four direct-administered municipalities of the People's Republic of China. Welcome to Shanghai!
请调整浏览器窗口的大小，以查看内容如何响应调整大小。


Viewing simulations
To view simulations provided by the MDsrv, only a link to the session (e.g. provided by a collaborator) and on demand a user and a password is needed. The NGL Viewer requires your browser to support WebGL which is standard in almost all modern web browser. Therefore, there is no need to install anything. If you run into problems, please consult the FAQ.
NGL GUI guide
Loading simulations
Simulations can be loaded in several different ways into the NGL GUI. To load simulations into the NGL viewer, a structure file has to be provided first. Structure and .ngl scripting files can be loaded by drag&drop into the viewer or by browsing through the folders by clicking File --> Import (A, B, C).
Within the structure menu, several trajectories can be imported via Trajectory import for autoloadable trajectories (currently dcd files supported, xtc under development) or Remote trajectory --> Import for deposed trajectories (D, E).
If you want to load a trajectory containing already all atomistic information (e.g. .gro trajectories), select File --> as trajectory (A, B) before loading the file. This flag is set until it is removed. Then load the file as previously described via drag&drop or through the folders.
Simulation settings
The content of the simulation can be specified through the filter selection (e.g. "protein and not #h"). Within the trajectory menu (F), the simulation can be further adjusted (e.g. centering, superposing, removing PBC, step sizes or play options).
More
If you have any questions, found some bugs, or want to report enhancement requests use the Issue Tracker, use the contact formular or write a mail to<EMAIL_ADDRESS>or<EMAIL_ADDRESS>Please give us feedback!


Log in
Go to register
Gender:
Male
Female
Other
Admin:
Register
Go to login
Welcome,
!
View shelters
Search shelters
Log out
Name:
Gender:
Male
Female
Other
All
Any
Children
Families
Families with young children
Families with newborns
Young adults
Adults
Seniors
Veterans
None
Search!
Back
Back
Capacity:
Phone:
Restrictions:
Notes:
Address:
Reserve beds
Back


public class DockerfileBuilder
extends java.lang.Object
To implement the functionality the class stores the commands called and builds a Dockerfile out of them. (similar to StringBuilder)
| Constructor and Description |
|---|
DockerfileBuilder(java.lang.String baseImage,
java.lang.String workingDir,
PluginFileAccess fileAccess)
Create a new instance of the DockerfileBuilder
|
| Modifier and Type | Method and Description |
|---|---|
DockerfileBuilder |
compressRunCommands()
Enables the compression of several run commands to one single run command.
|
DockerfileBuilder |
copyFromCsar(java.lang.String inputPath,
java.lang.String workdirName,
java.lang.String fileName)
Copies a File or directory from the Csar Directory to the Working Directory of the dockerfile builder.
|
DockerfileBuilder |
copyFromWorkingDir(java.lang.String inputPath,
java.lang.String containerPath)
Adds a
COPY command to the dockerfile that
should copy the input path (should be relative to the dockerfile working directory)
to the specified container path |
DockerfileBuilder |
entrypoint(java.lang.String... args)
Adds a
ENTRYPOINT command to the Dockerfile |
DockerfileBuilder |
env(java.lang.String variableName,
java.lang.String value)
Adds a
ENV command to the dockerfile |
DockerfileBuilder |
expose(int port)
Adds a
EXPOSE command for the given port to the dockerfile |
DockerfileBuilder |
run(java.lang.String command)
Adds a
RUN command to the dockerfile. |
java.lang.String |
toString()
Builds the dockerfile to a string
|
DockerfileBuilder |
volume(java.lang.String path)
Adds a
VOLUME command for the given path to the dockerfile |
DockerfileBuilder |
workdir(java.lang.String directory)
Adds a
WORKDIR command for the given path to the dockerfile |
void |
write()
Writes the dockerfile to the path defined in the constructor
|
public DockerfileBuilder(java.lang.String baseImage, java.lang.String workingDir, PluginFileAccess fileAccess)
baseImage
- the "url" to the base image to use in this dockerfileworkingDir
- the working directory (relative to transformation root)fileAccess
- the fileAccess to allow the writing of filespublic DockerfileBuilder copyFromCsar(java.lang.String inputPath, java.lang.String workdirName, java.lang.String fileName) throws java.io.IOException
After that the file gets added to the Container image using the COPY
command.
inputPath
- The relative input path from within the CSAR (can be a file or a directoryworkdirName
- The name of the folder in witch the contents should be storedfileName
- the path at witch the files should be inserted
in the container image (use .
to insert at the working directory)java.io.IOException
- gets thrown if the coping fails (passed through from the
copy
method of the PluginFileAccess)public DockerfileBuilder copyFromWorkingDir(java.lang.String inputPath, java.lang.String containerPath)
COPY
command to the dockerfile that
should copy the input path (should be relative to the dockerfile working directory)
to the specified container pathinputPath
- the input path to copy (relative to dockerfile workingdir)containerPath
- the path within the container (.
for the current directory)public DockerfileBuilder run(java.lang.String command)
RUN
command to the dockerfile. This is considered just like a regular bash script.command
- the command to add to the dockerfilepublic DockerfileBuilder entrypoint(java.lang.String... args)
ENTRYPOINT
command to the Dockerfileargs
- If only one command is given ENTRYPOINT
will
be added to the dockerfile otherwise
ENTRYPOINT ["",""...]
will be added otherwisepublic DockerfileBuilder expose(int port)
EXPOSE
command for the given port to the dockerfileport
- The port to exposepublic DockerfileBuilder volume(java.lang.String path)
VOLUME
command for the given path to the dockerfilepath
- the path at wich the volume should be created within the Container Imagepublic DockerfileBuilder workdir(java.lang.String directory)
WORKDIR
command for the given path to the dockerfiledirectory
- the path at wich the working directory should be set within the Container Imagepublic DockerfileBuilder env(java.lang.String variableName, java.lang.String value)
ENV
command to the dockerfilevariableName
- The name of the environment variablevalue
- the corresponding valuepublic DockerfileBuilder compressRunCommands()
&&
Warning: Using this command does not ensure the same behaviour as two separated run commands. (the current directory ist not reset to the current WorkDir)
public void write() throws java.io.IOException
java.io.IOException
public java.lang.String toString()
toString
in class java.lang.Object


Reference Genes Count: {{ refGene }}
Predicted Genes Count: {{ predGene }}
Exact Match Count: {{ exactMatch }}
5' Only Agreement Match Count: {{ fiveMatch }}
3' Only Agreement Match Count: {{ threeMatch }}
No Overlap Between Reference and Predicted Gene Count: {{ noOverlap }}
GENE COORDINATE COMPARISON TABLE (dashes indicate no overlap)
| GenBank Protein ID | 5' Gene Start | 3' Gene End | Glimmer ORF ID | Predicted 5' Start | 5' Match? | Predicted 3' End | 3' Match? | Consensus |
| {{ item.prot_id }} | {{ item.ref_five }} | {{ item.ref_three }} | {{ item.pred_id }} | {{ item.pred_five }} | {{ item.pred_five_match }} | {{ item.pred_three }} | {{ item.pred_three_match }} | {{ item.overall_match }} |


Umbraco
My involvement with the Umbraco CMS project spans in many ways.
- Posts
- Community
- I am a member of the Umbraco Backoffice Community Team
- My profile page on Our Umbraco
- Twitter - #umbraco tweets by me, (or that mention me)
- I maintain an (unofficial) archive of old Umbraco releases
- I helped start up umBristol - The Bristol Umbraco User Group
- I helped start up CODECABIN - The Umbraco Developer Unconference
- GitHub


WE Love to Design
Lid est laborum dolo rumes fugats untras. Etharums ser quidem rerum facilis dolores nemis omnis fugats vitaes nemo minima rerums unsers sadips amets.
Lid est laborum dolo rumes fugats untras. Etharums ser quidem rerum facilis dolores nemis omnis fugats vitaes nemo minima rerums unsers sadips amets.
We are a team of multi-skilled and curious digital specialists who are always up for a massive challenge forever. We are a team of multi-skilled and curious digital specialists who are always up for a massive challenge forever.
Lid est laborum dolo rumes fugats untras. Etharums ser quidem rerum facilis dolores nemis omnis fugats vitaes nemo minima rerums unsers sadips amets.
Lid est laborum dolo rumes fugats untras. Etharums ser quidem rerum facilis dolores nemis omnis fugats vitaes
nemo minima rerums unsers sadips amets.
Lid est laborum dolo rumes fugats untras. Etharums ser quidem rerum facilis dolores nemis omnis fugats vitaes nemo minima rerums unsers sadips amets.
We are a team of multi-skilled and curious digital specialists who are always up for a challenge and learning as fast as digital is changing. We are a team of multi-skilled and curious digital specialists who are always up for a challenge. Multi-skilled and curious digital specialists.
Get PriceWe are a team of multi-skilled and curious digital specialists who are always up for a challenge and learning as fast as digital is changing. We are a team of multi-skilled and curious digital specialists who are always up for a challenge. Multi-skilled and curious digital specialists.
Get PriceWe are a team of multi-skilled and curious digital specialists who are always up for a challenge and learning as fast as digital is changing. We are a team of multi-skilled and curious digital specialists who are always up for a challenge. Multi-skilled and curious digital specialists.
Get PricePhasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo sem quam pellente. Awesome sliders give you the opportunity to showcase your content.
Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo sem quam pellente. Awesome sliders give you the opportunity to showcase your content.
Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo sem quam pellente. Awesome sliders give you the opportunity to showcase your content.
Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo sem quam pellente. Awesome sliders give you the opportunity to showcase your content.
Fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo sem quam pellente. Awesome sliders give you the opportunity to showcase your content.
Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo sem quam pellente. Awesome sliders give you the opportunity to showcase your content.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut explicabo iusto quaerat


Why a new plug-in?
By default, Eclipse supports OpenOCD via the GDB Hardware Debugging plug-in, which starts OpenOCD not as a separate daemon, but as a pipe end. This is functional, but restricts it even further.
Based on the experience with the J-Link plug-in, we decided to add a separate OpenOCD plug-in, with full configuration pages.
In early 2015, a step further was performed, with the addition of the GNU MCU Eclipse OpenOCD subproject, a new distribution of OpenOCD. In 2019 it was migrated to the xPack project.
Unfortunately SWD support in the current OpenOCD version (0.8.x) is not that great, and we could not yet figure out a way to get the SWO tracing info out of OpenOCD, so currently there is no special tracing window available.
Prerequisites
Before being able to use any JTAG probe with OpenOCD, you must separately install:
- the OpenOCD debugging plug-in
- the GDB debugger (client) application, as part of a GNU toolchain
- the OpenOCD as a GDB server
- any drivers required for the JTAG probe (for example FTDI drivers).
If you did not do it yet, please follow the instructions in the xPack OpenOCD install page and return when completed.
The presence of a GDB as part of a GNU toolchain is mandatory, and it is recommended that the version of the GDB client matches the toolchain. Generally only debugging .elf applications is possible, and these applications must be compiled to include GNU compatible debugging information (like dwarf).
Non-GNU toolchains
Debugging applications generated by non-GNU toolchains (like the obsolete Arm CC), although not completely excluded, is not supported.
How to use the OpenOCD plug-in
Define the OpenOCD folder location
Before starting work with OpenOCD, it is recommended to define the path to the folder where OpenOCD executables are located.
-
in the Eclipse menu, go to (Window →) Preferences → MCU → Global OpenOCD Path (or Workspace OpenOCD Path)
- click the Restore Defaults button
- the plug-in will suggest the default values computed when Eclipse started; if a new version of OpenOCD was installed while Eclipse was active, restart Eclipse and click again the Restore Defaults button
- check the Executable field; it must define the name of the command line OpenOCD executable; in most cases it should be set correctly; if not, edit it to match the correct name;
- check the Folder field; it must point to the actual folder where
the OpenOCD tools were installed on your platform, for example
C:\Users\ilg\AppData\Roaming\xPacks\OpenOCD\<version>\bin
on Windows,/Users/ilg/opt/xPacks/openocd/<version>/bin
on macOS and GNU/Linux - click the OK button
By default, the GDB server is defined as
${openocd_path}/${openocd_executable}
; these two macros are
automatically set by the above preference page; for portability
reasons, it is recommended to define the path to the OpenOCD relative
to this variable in all your debug configurations, to have a single
place to update the path when you want to use another version of
the OpenOCD tools installed in a different location.
Create the debugger configuration
Being a standard debugger, this plug-in also uses the Eclipse standard method of creating debugger configurations for each application. After you successfully build your application, you can create a new debug configuration following these steps:
- select the project (don’t skip it, this is important, see later)
- build it and ensure the executable file is available
- expand the Debug/Release folder and select the new executable file
- in the Eclipse menu, go to Run → Debug Configurations… or select the down arrow at the right of the bug icon
-
double click on the GDB OpenOCD Debugging group, or select it and click the top leftmost New button
- a multi-tab page will be displayed
-
if you started this procedure with the executable file selected, the first tab, named Main, should be already filled in with the project name (for example blink1) and the application file name and location (for example
Debug/blink1.elf
). -
click the second tab, named Debugger, which contains the configuration options required to start the GDB server and the GDB client
- the only field that usually requires attention is the OpenOCD
Setup Other options:, where you should add one or more
configuration scripts; for example, for the STM32F4DISCOVERY
board, the field should read
-f board/stm32f4discovery.cfg
Note: it is mandatory to enter a reference to a configuration script here, otherwise the debug session will not start. Use the OpenOCD documentation for details on how to start OpenOCD for various boards.
- Windows notice: due to a platform specific issue, on Windows it is not possible to disable the Allocate console for OpenOCD
-
click the third tab, named Startup, which contains some specific OpenOCD options used to configure the debug session; defaults are generally enough
- the order of sections/fields reflect the order commands are sent to GDB; for example the above generates:
monitor reset init
monitor halt
...
monitor arm semihosting enable
symbol-file "/.../blink1/Debug/blink1.elf"
load "/.../blink1/Debug/blink1.elf"
tbreak main
monitor reset halt
monitor halt
...
continue
-
select the Common tab, set the Save as: field to Shared file and accept the current project name
-
this will arrange for the debug configuration to be saved in the project, not in the workspace storage
- click the Apply button
- click the Close button
Start a debug session
Before starting a debug session, be sure that:
- the JTAG probe is connected to the computer; if the connection is via USB, use a high speed USB port, preferably directly to the computer, not via hubs which share the bandwidth with other traffic intensive devices, like disks, wi-fi, video cameras, etc.
- the wide JTAG flat cable is connected both to the JTAG probe and to the target device
- the target device is powered on
With all the above steps completed properly, you can start the debug session:
- in the Eclipse menu, go to Run → Debug Configurations…
- if necessary, expand the GDB OpenOCD Debugging group
- select the newly defined configuration
- click the Debug button
Alternatively, for later sessions, you can use the bug specific icon. Do not press it directly, since it will not behave as expected; instead, click the down arrow button:
This will open a new window where you can select the desired debug configuration:
If everything is ok, after a few seconds required to start the server, to allow it to connect to the target, start the gdb client, download the application and start the debugging session, you should see something like this:
Since the first breakpoint was set in the Debugger tab to
main, the execution stopped right at the beginning of the
main()
function, which in this case is a tracing printf()
.
Debug operations
Once the debug session started and execution stopped in the
first breakpoint (by default set at the beginning of the main()
function), you can perform any debug operation you need.
The most common operations are:
- single step over one source instruction (click the Step Over button)
- single step into the next function called (click the Step Into button)
- single step out of the current function (click the Step Return button)
- set breakpoints (click the grey side area at the left of the source lines)
- run (click the Resume button)
- halt a running program (click the Suspend button)
- inspect processor registers (use the Registers view)
- inspect memory (use the Memory view)
For more details please read the Running and debugging projects section in the Eclipse documentation.
View consoles
Each debug process has a dedicated console, to display its standard output and standard error, or to get input for the standard input.
To see the console of any process, select the process in the top left window. For example the gdb client console might look like this:
The semihosting tracing messages are displayed in the same window as the OpenOCD output:
Show console when standard out/error change
This is the default Eclipse behaviour when multiple consoles are active, to automatically switch to the latest updated. In our case, especially when the tracing console is also active, the focus will jump between windows, making things impossible to follow.
This mode can be identified by the status of the buttons on the right side of the Debugging view.
To make the display stable on the desired console, disable both buttons. To switch between consoles, select them either in the top left Debug view, or using the right button, as shown above.
The Restart button
Apparently not a big deal, but quite useful for repeated debug sessions, the Restart button can be used at any time during a debug session, and the result is that a reset is dispatched to the target board via the JTAG/SWD interface and the debug session is restarted.
Note: Due to some bugs in Eclipse, the implementation of this simple button has encountered several problems. Depending on the version you are using, the first time you click this button you might get a message box informing that the button was not enabled. Ignore this message, close the message box and click the button again, this time it’ll be effective.
Using a remote GDB server
If, for any reason, you need to run the GDB server on a remote machine (for example the development board is connected via OpenOCD to a machine in your office, but you are in another location), you can still use the plug-in to run debugging session. For this to work, just disable Start the GDB server locally in the Debugger tab and instead of localhost for the Host name or IP address, enter the name or address where the GDB server can be accessed.
Then you must manually start the OpenOCD process on the remote machine and only then you can start the debugging session.
Troubleshooting
Missing or wrong openocd_path
The most common failure to start a debug session is a missing or incorrec OpenOCD path. Without it, the launching sequence will complain Cannot run program “/openocd”.
Define the openocd_path as instructed above and the session should start properly.
Wrong configuration selection
If the configuration files that you selected in the plug-in does not match the device physically connected, the OpenOCD starts, but remains in a confused state. The session does not start and usually requires to restart Eclipse.
Select the correct device and the session should start properly.
Start OpenOCD manually
If you still fail to configure the plug-in to start OpenOCD automatically, proceed as when using a remote GDB server, i.e. go to the Debugger tab and disable the Start OpenOCD locally, then start it manually in a separate terminal. Tweak the command line options until you get the right behaviour, and then retry the same options with the plug-in.
Quote the entire echo
command
The syntax required by the OpenOCD echo
command is a single
string, in other words both echo and the message must be in the
same string. To achieve this in a shell, the string must be quoted:
-c 'echo "Started by GNU MCU Eclipse"'
Note: this command is used by the plug-in to detect when the GDB server is initialised and ready to receive commands. It is not necessary when starting OpenCOD manually.
Chase for hanged OpenOCD processes
One usual error case is to retry a debug session while a previous OpenOCD is still active (either running or hanged, started by a previous run of the plug-in or manually). In this case the new OpenOCD has no chance to work, and the plug-in will most certainly fail, sometimes even without clear error messages.
Be sure you chase and kill all previous OpenOCD or GDB processes, using the system process inspector, before starting new debug sessions.
Compare with GDB Hardware Debugging
If you still cannot make it work, before filling any support tickets, please try to launch the debug session using the GDB Hardware Debugging plug-in, in the DSF launcher configuration (not the Legacy GDB Hardware Debugging Launcher). If you get the same behaviour, the problem is OpenOCD related (OpenOCD is notorious for subtle bugs), and cannot be fixed in the plug-in.
If the GDB Hardware Debugging plug-in works and the GDB OpenOCD debugging plug-in doesn’t, rerun both of them with the log enabled, on exactly the same executable, and compare the results. If you do not discover the problem, open a support ticket and attach the log files.
No GDB initialisation files loaded
For having a total control of the debugging session, the debugging
plug-ins start the GDB client process with the --nx
option, which
prevents the execution of the commands found in any initialization
file; none of the standard files (system.gdbinit
, ~/.gdbinit
,
./.gdbinit
) are loaded.
To add more commands to the GDB initialisation sequence, use the Commands: field in the GDB Client Setup section.
All commands listed here are passed to the GDB client. By
convention, commands prefixed with mon
will be further passed
from the GDB client to the GDB server, in this case the OpenOCD server.
Semihosting writes are very slow
Yes, unfortunately this is an OpenOCD limitation. Avoid writing
to stderr
, which is excruciatingly slow.
More details
Although the plug-in takes care of most of the configuration options, and provides reasonable defaults for the usual cases, it is recommended to read the OpenOCD manuals, available in the doc folder of your install location.
Comments on the content of this page that might be useful for other readers are welcomed here. For question and general support, please use the project forums.


At the moment, I am taking various courses in computer graphics
to lay the foundations for my future research in this area (see this page
for more details about my coursework). During this process, I have been particularly drawn to physics-based animation, and I hope
to report research-related results in this area soon.
Optical Trapping
Optical trapping is a useful tool for manipulating
microscopic particles and probing the physical interactions of matter. However, early optical trapping techniques
introduced complications for analyzing Brownian particle diffusion in viscous media because they either restricted the
particles’ motion or trapped the particles too close to a surface. To my knowledge, my master's thesis presented the first
realization of two-dimensional, transverse tracking of Brownian microparticles in multiple, surface-isolated traps.
To accomplish this, my graduate advisor, Keith Bonin, and I used an axicon-generated, zeroth-order optical Bessel beam standing wave whose parameters were adjusted
to allow tight axial confinement and loose transverse confinement of microscopic-sized particles in the central maximum
of the Bessel beam (see images below). We chose a Bessel beam because its unique non-diffracting and self-healing properties provided
distinct advantanges over a Gaussian beam. In particular, a Bessel beam standing wave was shown to produce optical
potential wells that are more abundant, uniform, and stable than those of a Gaussian standing wave.
References
C. McKell and K. Bonin. Optical corral using a standing-wave Bessel beam,
Journal of the Optical Society of America B, Vol. 35, No. 8, 1910-1920, July 2018.
[paper]
C. McKell. Confinement and Tracking of Brownian Particles in a Bessel Beam Standing Wave,
Master's Thesis, Wake Forest University, Department of Physics, December 2015.
[paper]


So who wants to buy me Crunchyroll premium?
Anyone? Help a broke student get the next hit of his anime addiction.


gen_server module - Handling gen:calls nicely¶
Example of how to inherit from GenServer:
class MyProcess(GenServer):
def __init__(self, node) -> None:
GenServer.__init__(self, node, accepted_calls=['hello'])
def hello(self):
return self.pid_
-
exception
pyrlang.gen_server.
GenException
(msg, *args, **kwargs)¶ Bases:
Exception
-
class
pyrlang.gen_server.
GenServer
(node_name: str, accepted_calls: typing.Union[list, NoneType] = None)¶ Bases:
pyrlang.process.Process
Inherit from this instead of inheriting from the
Process
to gain the ability to convert incominggen:call
messages into regular Python method calls.-
gen_accepted_calls_
= None¶ List of strings with allowed messages which will be converted into method calls. A incoming call is identified by its first element (which must be atom, binary or string).
-
static
handle_info
(msg)¶ Similar to Erlang/OTP - handler receives all messages which were not recognized by gen message parser.
-
handle_one_inbox_message
(msg)¶ Function contains secret sauce - the
gen:call
parsing logic.
-


class: center, middle, inverse, title-slide # Selection in cross pollinated crops ### Deependra Dhakal ### 2019/04/21 (updated: 2020-09-30) --- class: inverse, center, middle # Introduction --- - Plant species where normal mode of seed set is through a high degree of cross-pollination have characteristic reproductive features and population structure. - Each plant receives a blend of pollen from a large number of individuals each having different genotypes. - Such populations are characterized by a high degree of heterozygosity with tremendous free and potential genetic variation, which is maintained in a steady state by free gene flow among individuals within the populations. --- - Allogamous species (producing seed through cross pollination) or out breeder plants have characters which promote cross pollination which include dichogamy, monoecy, dioecy, heterostyly, heterogamy, self incompatibility and male sterility. - Some important features of out breeders are: 1. They have random mating. In such population, each genotype has equal chance of mating with all other genotypes 2. Individuals are heterozygous and have advantage of heterozygosity 3. Individuals have deleterious recessive gene which are concealed by masking effect of dominant genes. 4. Out breeders are intolerant to inbreeding. They exhibit high degree of inbreeding depression on selfing. 5. Cross pollination permits new gene combinations from different sources. 6. In these species, variability is distributed over entire population. 7. They have wide adaptability and more flexibility to environmental changes due to heterozygosity and heterogenety. - In the development of hybrid varieties, the aim is to identify the most productive heterozygote from the population, which then is produced with the exclusion of other members of the population. --- class: inverse, middle, center # Breeding methods --- - The classification of population improvement is: - according to the unit of selection – either individual plants or family of plants. - according to the populations undergoing selection as either intra-population or inter-population. - In **intra-population** improvement, the end product will be a population or synthetic cultivar, and it may end up elite pure lines for hybrid production. Or, it can also be used for developing mixed genotype cultivars (in self-pollinated crops). Commonly used methods are mass selection, ear-to-row selection and recurrent selection. This consists of both single plant (mass selection) and family based selection (recurrent selection). - **Inter-population** improvement deals with the selection on the basis of the performance of a cross between two populations. The final product will be a hybrid cultivar with heterosis. ---  --- ## Mass selection - It is the simplest, easiest and oldest method of selection where individual plants are selected based on phenotypic performance, and seeds are bulked. - It is effective in maize improvement at the initial stages but its efficacy is poor for improvement of yield. - The selection after pollination does not provide any control over the pollen parent as result of which effective selection is limited only to female parents. - The heritability estimates are reduced by half, since only female parents are used to harvest seed whereas the pollen source is not known after the cross pollination has taken place. - Also, since this selection is solely based on phenotype, heritability of the trait plays a pivotal role in its effectiveness -- mostly effective for additive genes.         --- ## Recurrent selection - In the simplest form, recurrent selection consists of selecting desired individuals within a population prior to mating followed by the intermating of selected individuals. Consequently, both female and male gametes have undergone selection, and genetic progress should be at least 100% faster than for mass selection. - Recurrent selection scheme are variations of modification of progeny selection or ear to row method. - Steps: - Visually selected individuals out of the base population undergo progeny testing - The parents are crossed in all possible combinations and individual families are created for evaluation, - The families are evaluated and a new set of parents are selected, and - The selected parents are inter-mated to produce the population for the next cycle of selection. - The aforesaid cycle is repeated several times (3-5 times). The original cycle is labelled `\(C_0\)` and is called the base population. The subsequent cycles are named as `\(C_1, C_2, C_3, ... C_n\)` --- ## Types of recurrent selection - Simple recurrent selection: Similar to mass selection with 1-2 year per cycle. Does not involve a tester. Phenotypic scores are the basis for selection (aka., Phenotypic recurrent selection). - Recurrent selection for general combining ability (Half sib progeny test procedure): When additive gene effects are more important. - Recurrent selection for specific combining ability: When overdominance gene effects are more important. - Reciprocal recurrent selection: When both gene effects are important. Two heterozygous population are involved, each serving as a tester for the other.         --- .pull-left[ - This method of selection is useful to improve one or more traits so that a new population that is superior to the original population is achieved. - The source material may be random mating populations, synthetic cultivars and single-cross or double-cross plants. - The improved population may be released as a new cultivar or used as a breding material (parent) in other breeding programmes. - This selection ensures improvement of population without reduction in genetic variability. - It is advisable to include as many parent as possible in the initial crossing to increase genetic diversity. - The breeder can decide on the number of generations of inter-mating that is appropriate for a breeding programme. ] .pull-right[

Simple recurrent selection

 ] --- class: inverse, center, middle # Progeny testing  --- ## Half-sib selection with progeny testing - Selections are made based on progeny test performance instead of phenotypic appearance of the parental plants. - Seed from selected half-sibs, which have been pollinated by random pollen from the population (meaning that only the female parent is known and selected, hence the term "half-sib") is grown in unreplicated progeny rows for the purpose of selection. - A part of the seed is planted to determine the yielding ability, or breeding value, for any character of each plant. - The seed from the most productive rows or remnant seed from the outstanding half-sibs is bulked to complete one cycle of selection. ---

Generalized steps of half sib selection scheme

 --- ## Full-sib selection with progeny testing - A number of full-sib families, each produced by making crosses between the two plants from the base population are evaluated in replicated trials. - A part of each full-sib family is saved for recombination. Based on evaluation the remnant seed of selected full-sib families is used to recombine the best families.      ---

Generalized steps of full sib family selection

 --- class: inverse, middle, center # Response to selection --- - Selection entails discriminating among genetic variation to identify and choose a number of individuals to establish the next generation. - This results in differential reproduction of genotypes, i.e. those that are selected have chance to increase their gene frequencies. - Subsequently, the genotypic and phenotypic values of the targeted traits also improve. - By selecting and advancing superior individuals (with high genetic potential) from a mixed population, the breeder aims to change population mean of the trait in a positive way in the next generation. --- ## Response to selection (R) The difference between the mean phenotypic value of the offspring of the selected parents and the whole of the parental generation before selection. - Response to selection is related to heritability by the following equation (**Breeder's equation**): $$ R = \Delta G = h^2 S $$ ## Selection differenatial (S) The selection differential (S) is the mean phenotypic value of the individuals selected as parents expressed as a deviation from the population mean (i.e., from the mean phenotypic value of all the individuals in the parental generation before selection). $$ S = X_s - X_o = i \sigma $$ --- - The genetic advance achieved through selection depends on three factors: 1. The total variation (phenotypic) in the population in which selection will be conducted. 2. Heritability of the target trait. 3. Selection pressure to be imposed by the plant breeder (i.e., the proportion of the population that is selected for the next generation). - For desirable gain from selection - Phenotypic variance should be large and clearly distinguishable - Heritability of the selected phenotype should be high - Selection pressure should be optimal. - In principle, the prediction of response is valid for only one generation of selection. - To predict the response in subsequent generations, heritabilities must be determined in each generation. Heritabilities are expected to change from one generation to the next because, if there is a response, it must be accompanied by change in gene frequencies on which heritability depends. - Also, selection of parents tends to reduce phenotypic variance especially in early generations. ---

Genetic gain or genetic advance from selection indicates the progress plant breeders make from one generation to another based on the selection decisions they make.


KZN Boy (8) Critical After Shooting Himself In The Head
by SG EditorAn eight-year-old boy has shot himself in the head while playing with a gun in KwaZulu-Natal.
The child was rushed to a Durban hospital in a critical condition on Thursday.
The police’s Thembeka Mbele said they were trying to work out how the boy got his hands on the gun.
“The firearm was not found where it was. A case of defeating the ends of justice has been opened for further investigation.”


Release notes: GEE 5.1.1¶
Overview
GEE 5.1.1 is an incremental release of GEE 5.1. It contains several bug fixes in Fusion and GEE Server, and updates to third-party libraries.
Supported Platforms
The Google Earth Enterprise 5.1.1 release is supported on 64-bit versions of the following operating systems:
- Red Hat Enterprise Linux versions 6.0 to 6.5, including the most recent security patches
- CentOS 6.5
- Ubuntu 10.04 and 12.04 LTS
Google Earth Enterprise 5.1.1 is compatible with Google Earth Enterprise Client (EC) version 7.1.4 and Google Earth Plug-in versions 7.0.1 - <IP_ADDRESS>8 for Windows, Mac, and Linux.
Library Updates
| Library | Updated Version |
|---|---|
| GDAL | 1.11.1 (with libcurl support) |
| libjpeg | v8d1 |
| OpenSSL | 0.9.8ze |
| libcurl | 7.39.0 |
| MesaLib | 7.11 |
| NumPy | 1.9.1 |
| OpenLDAP | 2.4.40 |
| mod_wsgi | 3.5 |
| libgeotiff | 1.4.0 |
| PostgreSQL | 8.4.22 |
| PostGIS | 1.5.8 |
| GEOS | 3.4.2 |
| Libxml2 | 2.9.1 |
| Google Maps JS API V3 | 3.19 |
Resolved Issues
| Number | Description | Resolution |
|---|---|---|
| 12239387, 18719211 | Under certain conditions, historical imagery is not displayed correctly. | Fixed. To display historical imagery correctly, take the following steps:
|
| 15212134 | Cuts of 2D maps fail if no polygon is specified. | Fixed in GEE Server. See Create Portable Globes and Maps. |
| 15290004 | When attempting to cancel a cut using the Cutter tool, the Cancel button does not properly kill any running task on GEE Server. | Fixed. The Cutter cancel process now kills any running task on GEE Server. |
| 16981234 | Portable Server fails to run on RHEL 6.4, returning Error Loading python lib libpython2.7.so.1.0 . |
Fixed. See Portable Release Notes. |
| 18476901 | When attempting to publish databases using disconnected publishing, gedisconnectedsend
reports incorrect suffix for bytes. |
Fixed. See Publish databases using disconnected publishing. |
| 18506290 | Serving 2D Database with Mercator on the Fly imagery fails when imagery has no worldwide coverage. | Serving 2D Database with Mercator on the Fly imagery fails when imagery has no worldwide coverage. |
| 18509863 | HTTPS protocol not respected in URL-based search tab. | Fixed. See Create Search tabs. |
| 18572866 | GEE 4.x virtual servers (default_ge , default_map ) are not deleted when upgrading to GEE 5.1.x. |
Fixed. |
| 18668563 | During the installation process, the installer returns java.lang.NullPointerException error. |
Fixed. |
| 18791567 | Building a 2D database without an imagery project crashes gesystemmanager . |
Fixed. See Creating a Map Database. |
| 19003972 | Improve Mercator on the Fly reprojection performance. | Fixed. See Add flat imagery to Mercator map databases. |
| 19020117 | WMS GetCapabilities returns inaccurate bounding box information; transposed coordinates on GetMap 1.3.0 requests. | Fixed. |
| 18980809 | When publishing, the Delete button may not be available for a search service that has been added to a database. | Fixed. |
| 18724718 | Additional support in the UI for new configuration options for search service deployment:
|
Fixed. |
| 18935285 | When new resources have been added, Fusion GUI produces unnecessary gepackgen
tasks during project builds. This occurs when: a new resource is added using the
Fusion GUI, which has previously been created with console tool; the new resource is
created without specifying an acquisition date and also has the same base
resolution as other resources in the existing raster project. |
Fixed. |
| 19286893 | Uncaught TypeError: Cannot read property value of null when publishing 2D databases. |
Fixed. |
| 19276438 | During push, Fusion GUI processes at 100%. | Fixed. |
| 18724718 | Default search tab cannot be hidden, and custom ones are not displayed by default. | Fixed. Modified management of search services deployment for 3D Databases: you can configure a search service to deploy to an EC search tab (services with one search field) or to a Supplemental Search. |
| 11333524 | When pushing a database: improve provision of database push status. | Fixed.
|
| 19412572 | Publishing an updated map at the same target point causes gehttpd to crash
when serving Databases that use Mercator on the Fly, caused by a request to a
non-existent version of imagery layer. Returns a 404 error code. |
Fixed. |
| 19280022 | When using URL-based search tabs, erroneous search requests may occur. | Fixed. |
| 19338090 | Support added for Google Geocoder responses for 2D searches. | Fixed. |
| 5447870 | Segmentation fault when using the geraster2kml tool. |
Fixed. |
| 19709212 | Icon file cannot be read. | Fixed. |
| 20185775 | Missing bundle.hdr file in published database, resulting in blurry imagery in some areas. | Fixed. |


- onImportantUnitGoalChange(GoapState) - Method in class javaGOAP.GoapAgent
-
- onImportantUnitGoalChange(GoapState) - Method in interface javaGOAP.ImportantUnitChangeEventListener
-
This event is needed to change a current goal to a new one, while keeping
the old one on the FSM-Stack for its later execution.
- onImportantUnitStackResetChange() - Method in class javaGOAP.GoapAgent
-
- onImportantUnitStackResetChange() - Method in interface javaGOAP.ImportantUnitChangeEventListener
-
Event emitted by the GoapUnit if the Actions on the FSM-Stack must reset.
- onPlanCreated(Queue<GoapAction>) - Method in class javaGOAP.GoapAgent
-
- onPlanCreated(Queue<GoapAction>) - Method in interface javaGOAP.PlanCreatedEventListener
-
This event is needed to push real action Queues on the FSM-Stack.
- onPlanFailed(Queue<GoapAction>) - Method in interface javaGOAP.FSMPlanEventListener
-
Gets called when a RunActionState on the FSM throws an exception.
- onPlanFailed(Queue<GoapAction>) - Method in class javaGOAP.GoapAgent
-
- onPlanFinished() - Method in interface javaGOAP.FSMPlanEventListener
-
Gets called when a RunActionState on the FSM returns true and therefore
signals that it is finished.
- onPlanFinished() - Method in class javaGOAP.GoapAgent
-
- overwriteOwnProperties(GraphNode) - Method in class javaGOAP.GraphNode
-
Function for inserting existing GraphNodes values into the current one.


Your browser does not support canvas. Please try again with a different browser.
2:
0
0
You've been burned by ACID RAIN!!
Restart
You survived ACID RAIN!!
Restart Level 1
LOADING...
Please wait


Vim: Registers
This is part 10 of a series of tutorial to Vim. You can read Part 9 here.
Two Buckets
I bet you always wanted this. Even if you didn't know it existed, you secretly desired something like this.
Imagine you are editing some text, moving around some lines.  And not just remove, you actually want to shift them somewhere else. Now you need the clipboard space for moving but it is already filled with previous text.
Consider another scenario, you have two distinct lines which you want to paste at different location based on the surrounding lines, that is, sometimes you want to paste line 1 and sometimes line 2.
 Wouldn't it be nice if there were 2 clipboards, 2 buckets, where in you could place two things at once.
Even better: Stack
Vim gives you even better facility: it gives you clipboard as a stack, along with several other general and special purpose buckets. It remembers last 10 items you yanked or deleted. These buckets are called as registers1. There are several categories of them, here we'll see some of them.
Lesson 11
Vim has multiple registers which are used for yanking/deleting/putting stuff into and from.
Registers
Whenever you yank or delete characters you need to specify a register which you
want to put into; similarly while pasting (or putting), you need to specify which
register to get characters from. Registers are specified by prefixing "
. And
the way you specify a register to yank/delete/put from is by prefixing register
before the command. Thus, to yank into register "a
, you'd say "ay<motion command>
.
Named registers "a
to "z
The Stack: registers "0
to "9
But, if you didn't specify any register, like we did till now, Vim will use the
stack formed by registers "0
to "9
. There is a slight difference in stack for
delete and change commands and yank command:
- Stack for yank command starts with register
"0
: If you do not specify a register,"0
will be used for storing yanked content. Previous content of"0
will shift to"1
,"1
to"2
and so on, forming a stack. - Stacks for delete and change command starts with register
"1
. The stack grows"1
to"9
. - It is worth noting that although the stack starts with different register for
yank and delete commands, they share the same stack. So content of delete
command will be shifted by a yank command. But last content of yank command
will not be shifted by a delete command.
- This can be helpful when you want to paste the last yanked text since it will not be disturbed by delete or change command.
If by reading this, you get a feeling that it is convoluted, I suggest you to
see the stack in action for yourself. Yank and delete some text and observe
the state of the stack (and all the registers used) by executing :registers
or :reg
for short.
Default Register
Unnamed register ""
4 acts like a pointer to recently used register. Thus if you
didn't specify a register while yanking, ""
will point to "0
and "1
in
case of delete command.
Black hole Register: "_
This is analogous to Unix's /dev/null
, whatever is written to it is lost.
This can be helpful when you want to delete/change something without disturbing
the stack. For example: "_di{
will delete everything inside {...}
without
storing it in register.
Other Registers
There are several more registers which we haven't looked here. Some of the more interesting ones which you might want to look up would be:
"*
,"+
and"~
which help in pasting content copied from other GUI programs like web browsers and pasting in Vim using put (p
) command."%
: contains name of current file":
: contains recently executed command-line.
Editing Macro
If you remember, in the previous part, we discussed how we can store sequences of
keys in a register as a keyboard macro. If you lookup registers used (by executing
:reg
), you'll see all the macros recorded as text. Not only you can view them
as text, you can edit them too. You can put them (p
), edit the sequence of keys
and yank the macro back into the same or different register.
Let's look at a macro edit in action. Suppose you recorded a macro to append 'w' end of line:
qw
: start recording macro in registerw
A
: append to end of line (goto end of line and switch to insert mode)w
: insert 'w' into buffer<esc>
: go back to normal modej
: go down one lineq
: stop recording
You can see how it works by playing it couple of times using @w
. Now, say instead
of appending 'w' you want to append 'd' or even 'Donald Duck'. To do that we can
edit existing macro rather than recording a new one:
- Paste the macro using
"wp
(paste the content of register"w
) - Edit the key sequences: replace 'w' with 'Donald Duck'
- Yank it back to register
"w
:"wyy
assuming the content was in its own line.- We could have yanked it into another register and then use either of macros to append 'w' or 'Donald Duck'.
Summary
| Command | Comment |
|---|---|
"reg[ydxc] |
You can specify a register by prefixing " and specify register before a yank, delete or change command |
Registers "a to "z |
Named registers |
Registers "0 to "9 |
Stack: yank starts with "0 and delete with "1 |
Register "_ |
Black hole register |
:reg or :registers |
Lists all the registers in use |
A |
Goto end of line and switches to insert mode. Similar to a . Both usually used to append text. |
Footnotes:
:help registers
to read official documentation
Macros are sequence of keys, which can be stored and manipulated as text
You can use upper case characters to append to the registers.
Here the register is "
and the way to access register is by prefixing a "
, hence we access the default register by ""


Functions | |
| template<typename genType> | |
| GLM_FUNC_DECL genType | glm::log (genType const &x, genType const &base) |
<glm/gtx/log_base.hpp> need to be included to use these functionalities.
| GLM_FUNC_QUALIFIER genType glm::log | ( | genType const & | x, | |
| genType const & | base | |||
| ) | [inline] |
Logarithm for any base. From GLM_GTX_log_base.
Definition at line 13 of file log_base.inl.
References glm::log().