| Identifier | {{facet.name}} ({{facet.unit_label}}) |
|---|---|
| {{row['id']}} | {{row[facet.field]}} |
This faceted browser is configured to help you find instances of {{title}} in the knowledge graph. The search boxes (facets) on the left help you narrow your search by letting you select different kinds of properties and attributes of the things you are looking for.
Some facet selections have addititional options. For instance, a numeric property will offer a range slider to let you narrow the selections. Some non-numeric properties can be selected on or added as a property itself to be displayed. These facets have as their first option a "All" entry. Selecting this will add the facet itself as data that can be shown in the chart and table views.
As you select facets, the selection will automatically update.
Your selected instances can be viewed in a number of ways:
as a list (
The list view is fairly simple. It shows a set of "infoboxes" for each of the instances selected. You can visit the page of the instance by clicking on its title.
The table view shows the selected properties of the instances.
The chart view lets you plot the selected properties using a number of different visualization strategies. Selected properties can be used as variables to plot on the x or y axis, or be set as a size or color variable, depending on the strategy you select. X and Y axes can be configured for linear or logarithmic scales.
Visual strategies include:
A type of plot or mathematical diagram using Cartesian coordinates to display values for typically two variables for a set of data. Select quantitative values for X and Y axes, and any value for size or color.
Displays: X axis, Y axis, Size, Color
a graphical display of data using bars of different heights. In a histogram, each bar groups numbers into ranges. Taller bars show that more data falls in that range. A histogram displays the shape and spread of continuous sample data. Select a quantitative value for the X or Y axis.
Displays: X axis or Y axis
A chart or graph that presents categorical data with rectangular bars with heights or lengths proportional to the values that they represent. The bars can be plotted vertically or horizontally. Select a quantitative value for the X or Y axis, and a label value for the other axis. Color may also be selected.
Displays: X axis, Y axis, Color
A method for graphically depicting groups of numerical data through their quartiles. Box plots have lines extending vertically from the boxes (whiskers) indicating variability outside the upper and lower quartiles. Outliers are plotted as individual points. Select a quantitative value for the X or Y axis, and a label value for the other axis. Color may also be selected.
Displays: X axis, Y axis, Color
A a graphical representation of data where the individual values contained in a matrix are represented as colors. Select label values for X and Y axes, and a quantitative value for color.
Displays: X axis, Y axis, Color
A two-dimensional histogram where color indicates the number of instances that intersect a set of bins in two dimensions. Select quantitative values for X and Y axes.
Displays: X axis, Y axis
Similar to a box plot, a strip plot can show the density of distributions across categories. Instead of summarizing with a single box, each instance is given a small rectangle along a quantitative axis. Select a label values for the X or Y axis, a label value for the other, and any value for color.
Displays: X axis, Y axis, Color
A type of chart which displays information as a series of data points called 'markers' connected by straight line segments. Select quantitative values for X and Y axes, and any value for size or color.
Displays: X axis, Y axis, Size, Color


News story
New sports funding programme for schools in England.
Primary school sport is set to be transformed thanks to a £150 million a year boost that will improve coaching for the youngest pupils and inspire the Olympic and Paralympic stars of the future, the Prime Minister has announced .
The new sports funding aims to improve the quality of provision by providing:
A lump sum for each school, with a per-pupil top-up. A typical primary school with 250 primary aged pupils would receive £9,250 per year
‘Ring-fenced’ funding that’s only to be spent on sport which will go directly into the hands of heads and teachers
A greater role for Britain’s best sporting and voluntary organisations, including National Governing Bodies who will increase the specialist coaching and skills development on offer for primary schools
Tougher assessment of sport provision via Ofsted to ensure the funding is bringing the maximum benefit for all pupils, with schools held to account for how they spend the money
Sport England investing £1.5 million a year of lottery funding through the County Sport partnerships to help Primary Schools link up with local sports coaches, clubs and sports governing bodies
Teacher training to produce a cadre of primary teachers with a particular specialism in PE, developed in conjunction with sports bodies
Prime Minister David Cameron said:
The Olympic and Paralympic Games marked an incredible year for this country and I will always be proud that we showed the world what Britain can do. I want to ensure the Games count for the future too and that means capitalising on the inspiration young people took from what they saw during those summer months.
With this new approach to sport, we can create a culture in our schools that encourages all children to be active and enjoy sport, and helps foster the aspirations of future Olympians and Paralympians. Whether that is the future Jessica Ennis, Ellie Simmonds or Mo Farah, or someone who will simply learn to love sport and exercise for a lifetime, this investment will benefit a whole generation of children for many years to come.
The new support for primary school is funded by the Department for Education , Department of Health and Department for Culture, Media and Sport.
Secretary of State for Culture, Media and Sport Maria Miller said:
This funding will give primary school children fantastic sport, and is the final piece in the 2012 sports legacy jigsaw. It complements our £1 billion youth and community sport strategy that is increasing opportunities for secondary school children to play more sport. I am very pleased that sports’ governing bodies are backing this move, which will help create a in this country where people play sport for life.
The announcement was welcomed by sports and education groups, and leading figures in the world of sport including Mo Farah CBE and Jess Ennis CBE. Read responses to the announcement in the full press notice .
Hugh Robertson blogs: A school sport investment to be proud of
What we do: Creating a lasting legacy from the 2012 Olympic and Paralympic Games
Published: 16 March 2013


Access
enum Access
List of supported access options for configuring Keychain.
-
The data in the keychain item can always be accessed regardless of whether the device is locked.
Declaration
Swift
case always
-
The data in the keychain item can always be accessed regardless of whether the device is locked.
Declaration
Swift
case alwaysThisDeviceOnly
-
The data in the keychain item cannot be accessed after a restart until the device has been unlocked once by the user.
Declaration
Swift
case afterFirstUnlock
-
The data in the keychain item cannot be accessed after a restart until the device has been unlocked once by the user.
Declaration
Swift
case afterFirstUnlockThisDeviceOnly
-
The data in the keychain can only be accessed when the device is unlocked. Only available if a passcode is set on the device.
Declaration
Swift
case whenPasscodeSetThisDeviceOnly
-
The data in the keychain item can be accessed only while the device is unlocked by the user.
Declaration
Swift
case whenUnlocked
-
The data in the keychain item can be accessed only while the device is unlocked by the user.
Declaration
Swift
case whenUnlockedThisDeviceOnly
-
Returns
self
as thekSec...
attribute.Declaration
Swift
var attribute: CFString { get }


BitTrade
Home
(current)
Order
Login
Registrer
USD:
Bitcoin:
Logout
Success
Trade:
Buy Bitcoin
Amount:
Price(USD):
Place Buy Order
Sell Bitcoin
Amount of Bitcoin:
Price(USD):
Place Sell Order
User Transactions:
Buy/Sell
Bitcoin Price
Amount
Date of Transaction
Column content
Reminding Amount
Total Amount
Buying Price
Date
Column content
Remove
Reminding Amount
Total Amount
Selling Price
Date
Buying
Column content
Remove


Oregon officials enlist public’s help in finding who killed protected bald eagle
by Amanda WoodsA protected bald eagle was gunned down in Oregon earlier this month — and officials are offering a $2,500 reward for help identifying whoever is responsible.
Acting on a tip, fish and wildlife troopers from the Oregon State Police found the bird’s carcass lying face down in Lower Cow Creek, within Douglas County in the southwest part of the state, on Nov. 7 around 9 a.m., officials said in a statement.
Investigators determined that the national bird had been fatally shot with a firearm — and was dead for up to two days before someone reported it, police said.
Now the US Fish and Wildlife Service is offering a reward up to $2,500 for any information leading to a criminal conviction for the shooting of the iconic bird of prey.
The bald eagle is protected under the Bald and Golden Eagle Protection Act and the Migratory Bird Treaty Act.
As of 2007, the bald eagle is no longer considered endangered, but it is still protected under federal law.
Anyone who kills a bald eagle, or possesses the bird or its parts, is in violation of both acts — punishable by up to a year behind bars and a potential fine of $100,000.
The bald eagle is indigenous only to North America and was selected as the national bird of the US in 1782.


|
Read this newsletter from your browser
[the cutting edge ]
G'day Developers!
Video: FireBootCamp Week 1 Sydney - Up and Running
I'm delighted to bring you an update from week 1 of our first ever FireBootCamp, SSW’s 9
week intensive course focused on software development methodologies based
on building modern web applications with ASP.NET MVC.
The first week has just ended and, as the above video shows, the students are on fire!
It’s always exciting to be a part of something new, and this boot camp is no exception.
My highlights from the first week included the reactions from our students
when showed their allocated projects, and seeing the beginnings of what I’m sure will be
a very rewarding relationship between the boot campers and FireBootCamp
mentor/trainer Adam Stephensen. He, the boot campers and I have had some interesting
conversations, and I’ve loved introducing the guys to the fundamentals of Scrum.
The first of many guest speakers, Andrew Coates of Microsoft Australia, came in and wowed
the students with his presentation on Microsoft Azure, setting them in
good stead to get working on the projects that they will have finished by the end of the
course.
What's next? Each week the students will be learning the technologies required to build
an enterprise application using ASP .NET MVC5 using technologies like:
- Twitter Bootstrap
- Angular
- Team Foundation Server
- Git
- Microsoft Azure Websites
- HTML 5
- JQuery
- Entity Framework
- and many more
Watch the video, get to know the students and follow their progress as we release future
videos to the FireBootCamp blog, then come
to the
FireBootCamp Gala Day - book your ticket
now.
The Gala day will be a great opportunity to watch the FireBootCampers' presentations,
speak with them in an informal setting, book appointments for interviews, and enjoy a
scrumptious morning tea on us.
-Adam Cogan, SSW
Got a comment for Adam?
Email Adam Cogan
Comment
Adam Cogan's blog
Tweet @adamcogan
|
Scott Hanselman on Windows Azure and Visual Studio 2013
In a special presentation at the Sydney .Net Users Group, Scott Hanselman talked
openly and candidly about all things Microsoft, specifically on Windows Azure
and Visual Studio 2013.
You also see Hanselman dig into the open source SDKs of Windows Azure and discuss the
future of Open Source. You’ll see him access Azure from the command line
and deploy and redeploy with Git.
Scott will fire up Linux VMs, setup Mongo and run node.js apps in the cloud. His
presentations will also look at things
like SendGrid and New Relic. The future of the cloud is open and it’s a hybrid. Scott
also discusses ways to penny pinch in the cloud and how our mindset needs to
change if the cloud is to save us money.
Scott takes a funny, interactive and entertaining approach to presenting in this video.
It’s a great watch for anyone who’s into Microsoft technologies and wants
to hear from someone who has deep and thoughtful insights in the future of Microsoft and
the development world.
Watch
more videos on SSW TV
|
Become a World Class Developer in just 9 weeks with FireBootCamp!
Special Intensive Course
Sydney, Brisbane, Melbourne, San Francisco
Cost: $6,000 + GST
The FireBootCamp program is an intensive, full-time, 9-week program. Participants learn,
work and code together for 10-12 hours per day, 5 days
a week. There are exercise and food breaks, but for the main the program is continual
hands-on learning.
The program focuses on real world skills including Agile software development practices,
enterprise architecture, application life cycle,
end-to-end testing and user interface design. The technology stack covers .NET MVC,
TypeScript, JavaScript & jQuery and uses Microsoft Visual Studio 2013.
Scheduled Boot Camps:
Sydney BootCamp #1
20th JAN 2014 – 21st MAR 2014 |
Brisbane BootCamp #1
7th APR 2014 – 6th JUN 2014
|
San Francisco BootCamp #1
23rd JUN 2014 – 22nd AUG 2014 |
Sydney BootCamp #2
23rd JUN 2014 – 22nd AUG 2014
|
Melbourne BootCamp #1
8th SEP 2014 – 7th NOV 2014
|
Find
out more and Register
|
There's Still Time to Sign Up for the 3 Day Scrum Training!
Intensive Professional Scrum Developer Course
|
|
Brisbane, Melbourne, Sydney, Perth, Canberra, Adelaide
Cost: $2,995 + GST
|
Professional Scrum Developer courses teach students how to work in a team - using modern
software engineering practices - to develop
an increment of potentially releasable functionality using a specific technology
platform.
Classes are exercise-driven, with students working in self-organizing teams to develop
"done" increments from Product Backlog items.
Course at a Glance:
This 3-day Professional Scrum Developer .NET course is a mix of lecture, demonstration,
group discussion, simulation, and hands-on
software development. The bulk of the course will be spent working as a team on a case
study application delivering increments of new
functionality in mini-sprints. Here is the course at a glance:
Note: Scrum fundamentals are not covered in this 3-day course. If you are not
experienced with Scrum fundamentals, the
5
day course is still available on site by appointment.
Canberra
10 MAR 2014 |
|
Melbourne
7 APR 2014 |
|
Brisbane
16 JUNE 2014 |
|
Perth
23 JUNE 2014 |
|
Sydney
25 AUG 2014 |
|
Find
out more and Register
|
Sydney .NET User Group
The best place to learn .NET for free in Sydney
|
|
Sydney
.NET User Group
Wednesday 19th February 2014
6:00pm - 8:00pm
SSW Office
Gateway Court, Suite 13
81-91 Military Road, Neutral Bay NSW 2089
|
"No Estimates - Stop lying to yourself and your customers, and stop estimating" –
Gerard Beckerleg
After his hugely successful session last year (the video received more than
25,000 views on YouTube) Gerard Beckerleg is back to take on one of the most
divisive topics in software: estimation.
Gerard Beckerleg will take a dive into the depths of this controversial topic and extract
the most interesting ideas and raise some very
difficult questions about the big white elephant in the room that is Software
Estimation.
After examining the pros and cons of estimation Gerard will lay the blueprint for a
better way to help you and your clients get what they are really looking for.
About the presenter:
Scrum guru Gerard Beckerleg has been a Solution Architect at SSW in Sydney since 2011.
Although he specialises in Web applications, Gerard has extensive experience
in Microsoft.NET and loves working with C#, MVC, SQL Server, Umbraco, Kendo UI and
SharePoint. He also lists Scrum and Agile practices as a passion. Using these
skills and frameworks, Gerard has brought to life a raft of successful projects, such as
Toll, Sydney Airports, McDonalds, Event Cinemas, and National Australia
Day Council.
An established and confident speaker and trainer, Gerard has delivered numerous courses
including SharePoint 2013 and .NET MVC at the University of Technology
in Sydney, and is also a regular speaker at the Sydney and Canberra .NET User Groups.
To see more details and RSVP, please visit
our Facebook .NET Group,
our LinkedIn
.NET Group
or our Meetup
Group.
|
Can't make it to the Sydney .NET User Group?
Watch the Live stream!
|
|
Tune in from anywhere!
Sydney .NET User Group Live
6PM AEDT (UTC+11)
The team at SSWTV are now streaming our User Group sessions live. Each
session will also be published on the SSWTV site after the event so you can
review what was said in the sessions.
|
|
Then join us at the NerdDinner
Where nerds meet and eat
SSW and Telerik invite you to join us for pizza at The Oaks. A fantastic opportunity for
networking with peers and sharing thoughts after the Sydney .NET User Group
presentation.
Sydney .Net User Group and NerdDinner proudly sponsored by:
|
Canberra .NET User Group
The best place to learn .NET for free in Canberra
|
|
Canberra
.NET User Group
Monday 17th February 2014
6:00pm - 8:00pm
Microsoft Canberra Branch
Level 4, 6 National Circuit
Barton, Australia
|
"No Estimates - Stop lying to yourself and your customers, and stop estimating" –
Gerard Beckerleg
After his hugely successful session last year (the video received more than
25,000 views on YouTube) Gerard Beckerleg is back to take on one of the most
divisive topics in software: estimation.
Gerard Beckerleg will take a dive into the depths of this controversial topic and extract
the most interesting ideas and raise some very
difficult questions about the big white elephant in the room that is Software
Estimation.
After examining the pros and cons of estimation Gerard will lay the blueprint for a
better way to help you and your clients get what they are really looking for.
About the presenter:
Scrum guru Gerard Beckerleg has been a Solution Architect at SSW in Sydney since 2011.
Although he specialises in Web applications, Gerard has extensive experience
in Microsoft.NET and loves working with C#, MVC, SQL Server, Umbraco, Kendo UI and
SharePoint. He also lists Scrum and Agile practices as a passion. Using these
skills and frameworks, Gerard has brought to life a raft of successful projects, such as
Toll, Sydney Airports, McDonalds, Event Cinemas, and National Australia
Day Council.
An established and confident speaker and trainer, Gerard has delivered numerous courses
including SharePoint 2013 and .NET MVC at the University of Technology
in Sydney, and is also a regular speaker at the Sydney and Canberra .NET User Groups.
To see more details and RSVP, please visit
our Facebook .NET Group,
our LinkedIn
.NET Group or
our Meetup
Group.
Canberra .Net User Group proudly sponsored by:
>
|
Advertise with SSW
If you would like to advertise your product or service with SSW or would like to
find out more about various advertising opportunities, please email your enquiry
to<EMAIL_ADDRESS>or call: +61
2 9953 3000.
|
|
February 2014
|
Employment
ASP.NET MVC, Software Developer
SSW is looking for an enthusiastic .NET MVC (and some ASP.NET Web Forms) developer. Our
ideal candidate will have strong skills designing and
implementing ASP.NET MVC and Web Forms applications using C#, a good understanding of
XML, HTML5, CSS3, JavaScript and a working knowledge of Agile software
development methodologies (preferably Scrum).
Read
more and APPLY NOW...
SharePoint 2013 Developer
Are you looking to establish a career working with the latest software technology for a
large range of great organisations?
SSW has been the leading Microsoft technology company in Sydney for 21 years. We require
an enthusiastic SharePoint developer to start ASAP.
Read
more and APPLY NOW...
|
|


5.8 Description of Circular
Lists
The circular list is another form
of linked list that provides additional flexibility in
traversing elements. A circular list may be singly-linked or
doubly-linked, but its distinguishing
feature is that it has no tail. In a circular list, the next pointer of the last element
points back to its first element rather than to NULL. In the
case of a doubly-linked circular list, the prev pointer of the first element is
set to point to the last element as well.
Whether dealing with a singly-linked or
doubly-linked circular list, we never need to worry about
reaching an element from which we can traverse no further as
we move from element to element. Instead, the traversal simply
continues back to the first element, or, in the case of a
doubly-linked circular list, back to the last element.
Traversing a list in this manner produces a circular pattern
(see Figure
5.7), hence its name.
The circular list presented in the following
sections is a singly-linked circular list. Therefore, we are
concerned only with maintaining a link from the last element
back to the first element. In practice, whether to make use of
a singly-linked circular list or one that is doubly-linked
depends on the same reasoning presented earlier for choosing
between singly-linked and doubly-linked lists that are not
circular.
|


varImp: RF Variable Importance for Arbitrary Measures
Computes the random forest variable importance (VIMP) for the conditional inference random forest (cforest) of the 'party' package. Includes a function (varImp) that computes the VIMP for arbitrary measures from the 'measures' package. For calculating the VIMP regarding the measures accuracy and AUC two extra functions exist (varImpACC and varImpAUC).
| Version: |
0.2 |
| Depends: |
R (≥ 3.0.0), measures, party, stats |
| Suggests: |
testthat |
| Published: |
2018-08-06 |
| Author: |
Philipp Probst [aut, cre],
Silke Janitza [ctb] |
| Maintainer: |
Philipp Probst <philipp_probst at gmx.de> |
| License: |
GPL-3 |
| NeedsCompilation: |
no |
| Materials: |
README |
| CRAN checks: |
varImp results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=varImp
to link to this page.


Hi guys.
I'm glad the OEM Gateway was included in the SD Card.
I see people on the forum using it. Means it is useful (I mean not only the gateway but the fact that it is offered as pre-configured).
How can I know which revision of the OEM Gateway is included, in case I need to answer a question from someone using it ?
How are the updates managed ? Is the gateway directory setup with git ready to pull updates ?
Please note that until asked otherwise I work in master branch, so I can break anything anytime. For instance, the recent commit introducing the sending period uses a bulk mode that does not work (anymore ?) and the gateway is broken. Until fixed (see here), it is advised to stick to former revision.
If users are expected to pull from master, I should use dev branches, merges in master, tagged releases perhaps. It is a bit heavier.
Re: Ready-to-go SD card with OEM Gateway: which release process ?
Hello Jerome, yes Glyn and I should have been a bit more communicative with you about our plans. When we created the first image we just did a git clone straight from https://github.com/Jerome-github/oem_gateway, we then tested its normal posting operation but we didnt really test the buffering extensively.
Glyn has recently made another image that fixes the ram issue with the new raspberrypi's. I will find out what commit version the current gateway sd cards are upto. Either one of us will test it before it goes out on SD cards and I wouldn't worry about breaking it at anytime and fully understand that the stability will change all the time.
I want to help with getting the bulk uploads to work so Il try and get involved with your thread.
Re: Ready-to-go SD card with OEM Gateway: which release process ?
Awesome guys, I'd love to help out, unfortunately I can't code so I am more than willing to test.
Re: Ready-to-go SD card with OEM Gateway: which release process ?
Hi Jerome,
Thanks a lot for your good work making the gateway, it does work very well. D
The new / current gateway image (22Oct) uses the older version of the gateway before the fix you mention.  We would be keen to get a blog post up with info together with upgrade instructions. We we would love this to come direct from you. Would you like to write a guest blog post? This would ensure you receive full credit for your work.
We will make sure the new version containing the fix is included in the new ready-to-go SD card image.
id you notice our chance of putting oemgateway.conf in the FAT / boot partition of the SD card to allow windows users to easily edit. Taking this a step further to maker setup even easier it would be great to have a simple web GUI running on a lightweight web-server on the Pi to enable users to configure the gateway settings from their web browser. I wonder it it would be possible to run a web-server from a read-only file system? Mmm I'll look into this.
Keep up the good work.
Re: Ready-to-go SD card with OEM Gateway: which release process ?
Hi.
My point is that software is never finished, so users may want or need to update the software on the Pi. This means regular
ipe-rw
aptitude full-upgrade
ipe-ro
but also updates of OEM software (until it is packaged in the distribution...)
It's nice that you used git so that the user just has to git pull. But this means that each time the latest master is broken (like it is right now), the possibility exists that users will pull latest changes and break their installation. This advocates for dev branches.
Another issue could be configuration modification. I may add parameters anytime, or change filenames, or anything. (I recently renamed the main script by removing trailing .py, which breaks automatic startup if the init file is not changed accordingly)
Regarding the bulk send, I don't see what there could be to write about. From the user's point of view, it is transparent, except for a newly added parameter : sending period in seconds. The only issue is that is does not work for the moment... Or perhaps I don't understand what you're talking about. The idea was to avoid a call to the server every few seconds, as it sometimes takes time to answer.
Just to make sure everything is clear, the commit I'm referring to in my first post is not a fix but a breaker, so please don't include it until it is fixed.
I already thought a config GUI could be neat. It could also be a multiplatform software (Qt ? command line ?) interacting with the Pi. Or any web assistant running on emoncms.org, providing a content to copy on the SD card before using it in the Pi. Anyway, the configuration should be self-explanatory. If it is not, then this needs to be improved. Then, a few examples could do the trick, and the rest is fine-tuning that could be done easily in the text file. i didn't dig any further. Seemed too much trouble for the benefit.
Note that the config file format may have to be changed if moving to Python 3 some day, as the library I used is an external lib that makes the usage of the config file quite practical, but it has not been ported to Python 3, and it's kind of orphaned. See here: https://github.com/Jerome-github/oem_gateway/issues/7
Re: Ready-to-go SD card with OEM Gateway: which release process ?
Hey Jerome,
With the good work you have done so far and hopefully in the future I think the Ready-To-Go-SD card is here to stay and why shouldn't it be, with regards to updates the to code, well anyone who is using it and updating it from github should have the insight to read the README, and this file should contain any important information about the update that could potentially be a problem like the init script.
As for a dev branch, well if it's not to much hassle then probably that would be a good idea too.
Never the less good work is being done here.
Re: Ready-to-go SD card with OEM Gateway: which release process ?
Apparently, the default value for the emonGLCD "sendtimeinterval" parameter is not 0.
This leads to issues with the RFM2Pi rev1.
I think this should be set to 0 by default.
I can add a note in the config file to suggest RFM2Pi rev2 owners that use an emonGLCD to set it to something else.
Re: Ready-to-go SD card with OEM Gateway: which release process ?
Perhaps would it be nice to publish a repo with the modifications you made for the card, so that we'd see what modifications you made and more importantly, we'd have a bug tracker for it.
Or we could use OEM Gateway's git repo for the bugtracking. Or a dummy repo on emoncms' Github account, with a few textfiles describing the content of the SD Card and the modifications.
Re: Ready-to-go SD card with OEM Gateway: which release process ?
Good point about GLCD sendtimeinterval being set to a default of 0, will change that in the ready-to-go image.
Re: Ready-to-go SD card with OEM Gateway: which release process ?
I've added a note about the rfm12pi v1 to the ready to go image guide here: http://emoncms.org/site/docs/raspberrypigateway
Re: Ready-to-go SD card with OEM Gateway: which release process ?
This rock solid gateway is really good, having experienced sd card failure.
now after starting to run rock solid gateway it looks like all the temperature nodes (2x funky sensors + emonglcd temp etc.) which are a bit further away drop out. These usually also update after a minute or so unlike other sensors which update several times in a minute. Due to 4 other nodes with some 3-7 sensors on each these less frequently sending sensors do have collisions and update at around 2minute intervals.
Is there a parameter which would extend the "keep alive" time or enable a regular search of sensors ?
Re: Ready-to-go SD card with OEM Gateway: which release process ?
I don't understand your problem. To avoid collisions, maybe you can use reporting periods that are "prime".
I don't know what we can do from the emonBase to avoid collisions.
What mechanism are you refering to when you mention "keep alive time" or "search of sensors" ?
Re: Ready-to-go SD card with OEM Gateway: which release process ?
I have some 20+ sensors, those seem to drop out one by one starting from those which are least frequently used.
Did not have this problem with previous gateway firmware, the hardware is the same now.
Now rebooting (cron) once an hour to keep all sensors transmitting data.
My guess there is somekind of timer to drop sensors (keepalive) or alternatively there is a memory leak (??) causing the drop of sensors. Collisions is not a problem as such, it is this drop of sensor, particularly those which are less frequently updated and which are also more remote ones (physically).
hope this clarifies a bit whats the symptom..
Re: Ready-to-go SD card with OEM Gateway: which release process ?
OK my guess is with so many sensors, the gateway buffers data from the sensors faster than it can send it to the server.
You could activate the logs to check that.
This could be improved with bulk sending (ability to send several datasets in the same URL post) but this won't be implemented tomorrow.
In the meantime, perhaps can you try to lower the frequency for some sensors and see if it gets better.
There is no keep alive tome or anything, and sensors should never get lost.
Again, if you activate the logs (needs read-write mode, see help about this on the ready-made SD card help page), they will tell you a lot about what happens.
Re: Ready-to-go SD card with OEM Gateway: which release process ?
Makes sense - how is the buffer organized fifo or round robin ?, i.e. Based on what would it drop data ?
i need some pointers on how to activate logging as only installed the sd-card image and have not really looked into contents - unless you mean logging the output of the program itself (>/...).
Re: Ready-to-go SD card with OEM Gateway: which release process ?
Currently, the buffering feature is minimalist. It is FIFO. It could be improved. I think it makes sense to dimension it so as not to trash any data when a reasonably long outage occurs. Current setting is probably conservative, to avoid memory consumption. A lot here is still to be defined.
For the logging, I'm referring to this page: http://emoncms.org/site/docs/raspberrypigateway
Re: Ready-to-go SD card with OEM Gateway: which release process ?
Havent had time to do logging for the issue described above, but found a new "behaviour".
The emonGlcd seems to be hanging regularly after putting rock solid gateway in use - thish hang up looks like happening regularly at 0:00 hours. Could it he possible that the time message to emonglcd is improperly formatted like it used to be the case with nanode rf.
Maybe something that helps for next release...
Re: Ready-to-go SD card with OEM Gateway: which release process ?
I can't compare to the nanode.
The time is sent here:
https://github.com/Jerome-github/oem_gateway/blob/master/oemgatewayliste...
copied from the php script there:
https://github.com/emoncms/raspberrypi/blob/master/raspberrypi_run.php#L313
No one complained about the php script, as far as I know.
If you have a github account, you may want to file a bug for this with as many details as possible, otherwise I'll probably forget about it. If you don't, tell me, and I'll do it.


Preparation time
30 mins to 1 hour
Cooking time
1 to 2 hours
Serves
Serves 24-30
If you want a dessert for a large party, then look no further. This pretty triple cheesecake can be made in advance and decorated on the day.
For this recipe you will need 1 x 23cm/9in, 1 x 18cm/7in and 1 x 13cm/5in springform cake tins, a piping bag fitted with a medium star nozzle and six cake dowels.
Preheat the oven to 170C/150C Fan/Gas 3. Grease and line the base and sides of a 13cm/5in, a 18cm/7in and a 23cm/9in deep, loose-bottom cake tin with non-stick baking paper.
Melt the butter and chocolate in a saucepan over a low heat. Stir in the crushed biscuits and divide between the 3 tins. Press evenly over the base of the tins and chill in the fridge while you make the filling. (Make sure the base covers right to the edge, or the topping could leak through the join on the loose bottom.)
For the filling, break the white chocolate into a bowl and melt very gently over a pan of hot water (do not allow the chocolate to become too hot), stir occasionally with a spoon until runny and smooth.
Beat the cream cheese and eggs together in a large bowl until smooth, add the soured cream and vanilla and whisk again until completely smooth with no lumps. Stir in the melted chocolate and mix together.
Divide half of the mixture between the 3 chilled bases. Scatter the raspberries over the mixture in each tin and cover with the remaining mixture, spreading evenly.
Bake in the preheated oven for 30-35 minutes for the 13cm/5in cheesecake, 35-40 minutes for the 18cm/7in cheesecake and 40-45 minutes for the 23cm/9in, until they are just firm around the edge and just set in the middle. Remove from the oven, and then leave to cool at room temperature before transferring to the fridge to chill.
For the decoration, pulse 50g/1¾oz of the raspberries with the icing sugar in a food processor to make a purée. Pass through a sieve and discard the seeds.
Turn the cheesecakes out of their tins and place the 23cm/9in cheesecake on a serving plate. Place the 18cm/7in and 13cm/5in cheesecakes on 3mm-thick cake boards. Cut a cake dowel or an invisible cake pillar to the same height as the largest cheesecake. Press down into the middle of the cheesecake and place the 18cm/7in cheesecake on top. Repeat the process with the 18cm/7in cheesecake and place the 13cm/5in cheesecake on top. The dowel or invisible pillar helps to support the cheesecakes and prevents the lower layers from being crushed.
Whip the cream until soft peaks form when the whisk is removed. Spoon into a piping bag fitted with a medium star nozzle. Pipe rosettes of cream close together around the top edge of all 3 cheesecakes and top each rosette of cream with a raspberry. Pour the raspberry coulis on to the top tier - the piped cream should prevent it from dripping down the sides.
To make white chocolate curls, place the chocolate bar on its side and drag the blade of a long sharp knife at a slight angle towards you (for easier, but shorter, curls use a vegetable peeler). Arrange the curls over the top tier.
You need JavaScript to view this clip.
Melting chocolate


The Best of Fighting Talk has appeared in 0 episodes between 10000-0. Note that these appearances may be for more than one person if multiple people have the same name.


Usability means users can easily access and understand the controls of webpages without any confusion. For e.g: For Submit or Save button, we can use green color. For Cancel button use "red" color.
Scanning = Users are not intereseted to read all the contents of the webpage.Focus on the main contents rather than other things. Satisficing, And Muddling = Satisfy the user by fullfill the requirement of webpage.
Make webpages effectively and efficiently. User wants to read important informations only. Focus on the main point.
Create that webpage which has a specific meaning of dropdown and button. User doesn't like to read all the contents or click many times. Be specific for your actions.
Write easy and informative contents of the webpage, so that users can easily understand what we try to explain. Your contents must have useful information.
Use navigation in your webpage. By using navigation, we can easily move forward or backword to the webpages. Use "Link" if you directly want to move the another page.
Home page is one of the import thing in a website. Our home page should be designed in such a way that every item is placed in orderly manner which will be easy to check for a visitor. Two things which will explains about our website. One is tagline which will be placed under the logo of the web site. It describes about our web site. The welcome blurb which is displayed in the promotional section.
Every person in the designing team feel that usability testing is waste of time and they try to spend most of the time on one issue over and over. They feel that what every they like on a web site will be liked by everyone which is a false myth. It’s better to hire set of people to do usability testing.
The author says usability testing once a month is sufficient. It is not necessary that user must belong to the target group. If novice user is facing a problem the actual user will surely face the same problem. On the day of the test, help the user to understand the task and conduct test. Ask questions regarding the test and pay them.
Mobile websites are not so different from the desktop websites. The only difference is that the users scan the mobile sites much faster. The mobile device has less space compared to the desktop, so adjusting every elements which were visible on the desktop site is not possible most of the times. Developers these days generally use mobile first approach, i.e. element extra information for the mobile site. Mobile sites can be as deep as the desktop sites, it all depends on the developer. Some things to keep in mind is that there are no cursors in mobile so effects on hover for tool-tip and such cant be visible in the mobile. A developer has to carefully replace those functions.
As per author every website should be clear and self-explanatory so that our user will be able to understand the content in our website. Following things should be kept in mind while designing the web site We shouldn’t keep the information hidden from the user. We should as the user about the information which is not needed at all. When the site is not organized.
It's good to make every website accessible so that it makes millions of people's life easier. For instance, visually impared users, screen reader option to read the text which is displayed on the screen. so it's good to incooperate this type of changes in our website.
Author gives us a clear idea how we can convince our supervisior to conduct visability testing. It's good to show the benefits and importance of usability testing by conductiong demo to supervisor.
Usability testing is watching people use the product you have built in order to: Make it easier for them to use Proving it is easier to use This is different from a quantitative test, where you try to measure things like success rate and checking how much time people finish a task you give them to do. Do-it-yourself usability tests are for sure qualitative. Here the purpose isn't just to prove anything but to get insights on how to improve your site.
Go to www.rocketsurgerymadeeasy.com and watch the “Demo Test” file. At the end of the video, author asks us to list three usability problems which we think needs immediate fixing.
Here the author has devised a plan for us to use which will actually give good results. Author suggests to test every month and do a testing for half a day. Author prefers to do monthly test and on the day of the test, he suggests to do testing half a day. This is different from the big honking. Big Honking test demands preparation of weeks and participants from the target audience. While morning test suggested by author takes half a day to complete the test.
If the project is to redesign an existing site one should first test the current version of it. Author suggests to test the competition’s site to find out mistakes in them or any other site having the same feature or functionality one is thinking to implement. A initial rough diagram of website’s design can be shown to participants and their viewpoint can be asked. A wireframe can also be shown to participants with rough sketch to know the viewpoint. After wireframes the participants can be asked to share their point of view.
For the initial test, people not belonging to target audience can be recruited. Three participants for each test are enough because they will face same problems A screening can be conducted if a large pool of participants are available. While screening participants are informed what to expect from usability test, they should also be informed how they will be compensated for their time. Substitute participants must be recruited as they can be required at the end.
List the task which must be tested. Prioritize the tasks. Create a brief description of each task termed as scenarios. Scenarios make it easy for the participants to understand the task. Participants should be not be allowed to use a search engine or any other site. A test of one scenario must be conducted to find out if there is any issue with the test setup. Scenarios should be printed for participants and facilitator.
Make arrangements for test like booking the room for test and observation, advertising for participants etc. Two weeks before the test date ask the stakeholders to check the task list and arrange goodies for participants. Screen participants and inform them about the test date and time. One week before test inform participants about the test room location and directions. Install screen sharing softwares. One day before test take confirmation from participant if they are attending the test. Conduct a pilot test. On the day of test, check the installed softwares before the test and then conduct the test.
Facilitator is one who conducts the test and observers the participants while testing. The test room must have screen recording and sharing software, a system to test the website, a microphone to record participant’s voice and a speaker phone. A facilitator must communicate with participants in short interval of times and must be neutral while communicating. A facilitator must make sure that the participant is not annoyed and frustrated by them.
Convince the stakeholders and other people related to project to attend the usability testing. Prepare observation room by being sure there is computer with internet access, projector which displays screen of participant, speaker and speakerphone. Ask the observers to observe the test and make notes. Each observer should write three serious problems encountered by them and ask facilitator to ask questions to the participant if they have any.
Start debriefing session by asking everyone to list three problems they thought are serious. List all the problems mentioned by members in debriefing session. List the top ten serious problems which must be corrected. Sort them in descending order of according to their seriousness. Bring the members back on track if discussion is diverted on some other topic.
Problems should be fixed by making adjustments on the design rather than starting from the scratch. Some elements can be removed from the websites to improve the usability instead of adding something on the website to solve a problem.
A user can be distracted if there are too many elements in home page and be confused and can go to wrong directions to find the information. To make sure user navigates to right place, home page should be tested in every session.
Conducting test remotely is good idea, participant can connect remotely through VOIP and should share the screen. Remote test has some advantages like no travel is required, participant can be easily recruited and it will produce the same result. One main disadvantage of remote testing is that approx 20% content is lost when participant and facilitator are not present in same room.


Beta This is a test version of the layout of this page. Take the survey to help us improve it
Guidance
Contact details of project leads for 2016 to 2017.
Eleven projects have received funding of up to £30,000 to carry out collaborative research projects into efficient and effective approaches which reduce unnecessary workload.
The research projects will build on the principles and recommendations from 3 independent reports into workload .
Lead schools will be working with professional researchers and their school partners to investigate current practices and develop long-term solutions to better manage teacher workload.
We expect projects to be completed by the end of the summer term 2017 and findings from the research to be published in spring 2018.
This information is for:


layout: true class: animated fadeIn middle numbers .footnote[ `IPS-DEV` - N. Dubray - ENSIIE - 2022 - [:book:](../index.html) ] --- # `git` - Advanced techniques .row[ .column.w80[ ## Branches, remotes and subprojects * `push --set-upstream` - [create] and link branch to remote branch. * `fast-forward` - Automatic transparent merging. * `submodule` - Share code between projects. * `merge -s` - Merging priorities. ## Debugging / cleaning * `bisect` - Go bug hunting ! * `blame` / `annotate` / `log` - Who wrote that ? When ? * `cherry-pick` - Apply a commit from a different branch. * `grep` - Find a pattern in a project. * `stash` - "Pause" your work. * `clean` - Clean your project. ## Extract from project * `format-patch` / `apply` / `am` - Use patches. * `archive` / `fetch --depth` / `clone --depth` - Do not use full history. ## Modify history :warning: * `commit --amend` - Change the last commit. * `push --force` - Replace remote's history. * `reset` / `revert` - Undo some changes. * `rebase` / `rebase -i` / `merge --squash` - Move and squash commits. ] .column.w20.middle[ ![](images/git_logo.png) ] ] --- # Upstream branches / local branches .hcenter.w70[ ![](images/branches.png) ] .hcenter[ [source](https://devconnected.com/how-to-set-upstream-branch-on-git/) ] ## How are they useful ? :arrow_right: Know if you are ahead of upstream branches. :arrow_right: Merge with upstream branches even when being offline. :arrow_right: Use `git push`, `git fetch` and/or `git pull` without arguments. --- # Remotes ## Unofficial definition of a remote **A remote is a nickname for an upstream repository.** :arrow_right: The special remote `origin` is automatically created when cloning. ## List remotes * `git remote`: list defined remotes. * `git remote -v`: list defined remotes for fetching and pushing. * `git remote show REMOTE`: print detailed information on REMOTE. * See also `[remote "xxx"]` in `.git/config`. ```text *$ git clone main local_dev Cloning into 'local_dev'... done. *$ cd local_dev/ && cat .git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = /home/dubrayn/temp/git/main fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master *$ git remote origin *$ git remote -v origin /home/dubrayn/temp/git/main (fetch) origin /home/dubrayn/temp/git/main (push) ``` :arrow_right: `git remote add remote2 /some/path/toto.git`: add remote to project. --- # Local branches ## Unofficial definition of a branch **A branch is a name for a commit and its ancestors.** :arrow_right: Branches are light objects, do not refrain from using them. ## Two types of local branches * **non-tracking branches**, seen by `git branch` (often miscalled "local branches"), * **remote tracking branches**, seen by `git branch -r`. ## Remote tracking branches :arrow_right: A **remote tracking branch** is a **local branch** connected to a **remote branch**. * Format for a remote tracking branch: `remote/branch`. * Operations on remote tracking branches: * `git fetch remote`: update. * `git merge remote/branch`: merge from. * `git checkout --track -b localbranch remote/branch`: create new remote tracking branch. * `git branch -vv`: show branch remote tracking information (if any). --- # Local branches - example ```text *$ git branch * master *$ git branch -r origin/HEAD -> origin/master origin/master origin/newbranch *$ git fetch origin *$ git merge origin/newbranch Already up to date. *$ git checkout --track -b newbranch origin/newbranch Branch 'newbranch' set up to track remote branch 'newbranch' from 'origin'.  --- # Remote tracking branches and upstream branches ## Remove branches * `git branch -r -d somebranch`: remove a remote tracking branch. * `git push origin --delete somebranch`: remove an upstream branch. ## Link / unlink branches * `git push --set-upstream origin HEAD`: * create upstream branch (if needed), * create remote tracking branch, * link upstream branch and remote tracking branch, * link remote tracking branch to current branch ("set upstream branch for current branch"). * `git branch -u origin/master`: link existing remote tracking branch and current branch. * `git branch --unset-upstream`: unlink remote tracking branch and current branch. :arrow_right: It is also possible to edit `.git/config`. ```text *$ cat .git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = /home/dubrayn/temp/git/main fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [branch "newbranch"] remote = origin merge = refs/heads/newbranch ``` --- # `fast-forward` - Automatic transparent merging :arrow_right: If you merge branch `blue` into branch `green` that has not been modified since the creation of branch `blue`, `git` uses a `fast-forward` method: it **does not create a commit** for the merge operation. .row.hcenter.w80[ .column.w30.middle[ .hcenter[ ## fast-forward ] ] .column.w5.middle[## :arrow_left:] .column.w30.middle[ .hcenter[ ## local ] ] .column.w5.middle[## :arrow_right:] .column.w30.middle[ .hcenter[ ## no fast-forward ] ] ] .row.hcenter.w80[ .column.w30[
] .column.w5.middle[] .column.w30[
] .column.w5.middle[] .column.w30[
] ] :warning: It can be hard to "revert" a merge with the automatic fast-forward (where did the merge happen ?). :arrow_right: To disable fast-forward: `git merge --no-ff`, `git pull --no-ff`. :arrow_right: To **globally** disable fast-forward: ```text $ git config --global merge.commit no $ git config --global merge.ff no ``` --- # `submodule` - Share code between projects .noflex[ .rightf.shadow.w20[ ![](images/inception.jpg) ] ## Possible reasons: * Avoid code duplication. * Develop two projects simultaneously. * Split a big project into smaller ones. :+: The origin of the subproject is kept: easy to push to, semi-easy to pull from. :warning: `git clone` will not clone the subproject: hard for noobs. ```text *$ git submodule add https://github.com/dubrayn/superlib lib/superlib Cloning into ‘lib/superlib’… remote: Counting objects: 17, done. remote: Compressing objects: 100% (16/16), done. remote: Total 17 (delta 0), reused 17 (delta 0) Unpacking objects: 100% (17/17), done. Checking connectivity... done. *$ git status On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD
..." to unstage) new file: .gitmodules new file: lib/superlib *$ cat .gitmodules [submodule “lib/superlib”] path = lib/superlib url = https://github.com/dubrayn/superlib ``` :arrow_right: cloning with subprojects: `git clone --recursive`. :arrow_right: updating subprojects: `git submodule update`. :arrow_right: see also [git subtree](https://www.atlassian.com/git/tutorials/git-subtree), [git-subrepo](https://github.com/ingydotnet/git-subrepo#readme)... ] --- # `merge -s` - Merging priorities :arrow_right: Sometimes, when a merge conflict occurs, the solution is to keep one version and discard the other. :arrow_right: This can be done with `git merge -s ours`. This option tells `git merge` to keep the original file in case of a merge conflict. ```text *$ git branch * master *$ ls index.html titi *$ cat titi plop3 *$ git checkout -b newbranch Switched to a new branch 'newbranch' *$ echo "newcontent" > titi *$ git commit -a -m "modified titi" [newbranch 1e07ac9] modified titi 1 file changed, 1 insertion(+), 1 deletion(-) *$ git checkout master Switched to branch 'master' *$ git merge newbranch -s ours Merge made by the 'ours' strategy. *$ cat titi plop3 ``` --- # `bisect` - Go bug hunting ! ## Context * A bug has been found in `HEAD`. * This bug was not present in a commit from 6 months ago. :arrow_right: How to **quickly** find **which commit** introduced the bug in the project ? ## {binary-search, interval halving, dichotomy} method :arrow_right: Use `git bisect` to perform a binary search on the history of a project. * `git bisect start`: start the bisection * `git bisect bad`: bad case (HEAD by default) * `git bisect good`: declare that this commit is OK * `git bisect skip`: declare that this commit is untestable * `git bisect reset`: stop the bisection :arrow_right: You can use `old` and `new` instead of `bad` and `good`, or custom terms: ```text $ git bisect start --term-new fast --term-old slow ``` --- # `bisect` - Go bug hunting ! ```text *$ git bisect start *$ git bisect bad *$ git bisect good v3.1415 Bisecting: 671 revisions left to test after this (roughly 10 steps) [e50fe06300edb7f0b1e8ad5a86a0d0db89cc0d92] Removed all fortran code. *$ # do some tests on this commit to check if it is good or bad *$ git bisect good Bisecting: 332 revisions left to test after this (roughly 9 steps) [1e07ac9292f0a1eefd075e7418f28a0766419d86] Removed all C++ code. *$ # do some tests on this commit to check if it is good or bad *$ git bisect bad Bisecting: 160 revisions left to test after this (roughly 8 steps) [55eb83725a6d18dea12b6077eadfceab7905dd49] Removed all Ruby code. ... repeat until the final commit is the first occurence of bad ... 383bee0ea12f59344a3a3d0fe4e868640bc61458 is the first bad commit commit 383bee0ea12f59344a3a3d0fe4e868640bc61458 Author: Sheldon Cooper
Date: Sat Feb 15 02:19:22 2014 +0100 I'm soooo drunk !!! :105 105 07d7c5f061bdc367bffd23d1aaec68174e494e7c dba4fde39caf3c027b48749e5da7fa68 M flux_capacitor.py ``` .hcenter.shadow.w30[ ![](images/sheldon.jpg) ] --- # `blame` / `annotate` / `log` - Who wrote that ? When ? ## Context * You have found **an atrocity** at a given line of a given file in a project you are using. * You now need to find out **who** wrote this line, **when**, and **why**, to **blame** someone. ## `git blame` ! * `git blame`: show options. * `git blame FILE`: view content of file annotated with last author of each line. * `git blame -L start,stop FILE`: process only line range of FILE. * `git annotate`: uses a different output format than `git blame`. Used by old scripts. ## When was a line added in a given file ? * `git log -Spattern FILE`: view commits who introduced this pattern in FILE. * `git log -Gregexp FILE`: use a regular expression instead. --- # `blame` - Example :arrow_right: Taken from [this tutorial](https://www.atlassian.com/git/tutorials/inspecting-a-repository/git-blame). ```text *$ git blame README.md 82496ea3 (kevzettler 2018-02-28 13:37:02 -0800 1) # Git Blame example 82496ea3 (kevzettler 2018-02-28 13:37:02 -0800 2) 89feb84d (Albert So 2018-03-01 00:54:03 +0000 3) This repository is an example of a project with multiple contributors making commits. 82496ea3 (kevzettler 2018-02-28 13:37:02 -0800 4) 82496ea3 (kevzettler 2018-02-28 13:37:02 -0800 5) The repo use used elsewhere to demonstrate `git blame` 82496ea3 (kevzettler 2018-02-28 13:37:02 -0800 6) 89feb84d (Albert So 2018-03-01 00:54:03 +0000 7) Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod TEMPOR incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum 89feb84d (Albert So 2018-03-01 00:54:03 +0000 8) eb06faed (Juni Mukherjee 2018-03-01 19:53:23 +0000 9) Annotates each line in the given file with information from the revision which last modified the line. Optionally, start annotating from the given revision. eb06faed (Juni Mukherjee 2018-03-01 19:53:23 +0000 10) 548dabed (Juni Mukherjee 2018-03-01 19:55:15 +0000 11) Creating a line to support documentation needs for git blame. 548dabed (Juni Mukherjee 2018-03-01 19:55:15 +0000 12) 548dabed (Juni Mukherjee 2018-03-01 19:55:15 +0000 13) Also, it is important to have a few of these commits to clearly reflect the who, the what and the when. This will help Kev get good screenshots when he runs the git blame on this README. ``` --- # `blame` - Apparel .hcenter.shadow.w50[ ![](images/shirt.jpg) ] .hcenter[ [link to the shop](https://www.redbubble.com/people/spacelake/works/24756596-git-blame-ruining-friendships-since-2005?p=t-shirt) ] .hcenter[ :arrow_right: A study has shown that in 99.2% of the cases, the person to blame is **YOU**. ] --- # `cherry-pick` - Apply a commit from a different branch .hcenter.shadow.w30[ ![](images/cherry.jpg) ] ## Context * A bug has been found and fixed in a specific commit in branch `coffeeMachineHack`. * You want to incorporate the fix in `master`, but You do not want to merge the whole branch. ## `git cherry-pick` :arrow_right: The commit belongs to another branch. * `git cherry-pick d42c389e`: applies commit `d42c389e` to the current `HEAD`. ## `git cherry` :arrow_right: Has my commit been cherry-picked ? * `git cherry`: allows to view if commits have been cherry-picked (see `man git-cherry`). --- # `grep` - Find a pattern in a project :arrow_right: Find occurences of patterns in project files. ## Useful options * `git grep some_pattern`: standard pattern search. * `git grep --color -n -P some_pattern`: use line numbers, colored output and regexp. * `--no-index`: search in untracked files too. * `-i`: ignore case. * `-I`: do not match binary files. * `-w`: word only. * `-v`: invert match. ```text *$ git grep png IPS-DEV/armadillo.html:.hcenter.w30[![](images/armadillo_logo.png)] IPS-DEV/armadillo.html:.rightf.animated.fadeInRight.wait1s.shadow.w25[![](images/conrad_sanderson.png)] IPS-DEV/astyle.html:.hcenter.w90[![](images/xkcd_code_quality.png)] IPS-DEV/cxxtest.html:.hcenter.shadow.w50[![](images/unit_tests_excuses.png)] IPS-DEV/cxxtest.html:.shadow[![](images/unit_tests_cartoon.png)] IPS-DEV/cxxtest.html:.shadow[![](images/dog.png)] IPS-DEV/cxxtest.html:.shadow[![](images/xkcd_derivative.png)] IPS-DEV/doxygen.html:.hcenter.w30[![](images/doxygen_logo.png)] IPS-DEV/doxygen.html:.shadow.hcenter.w90[![](images/doxygen_example.png)] IPS-DEV/doxygen.html:.shadow.hcenter.w100[![](images/doxywizard.png)] IPS-DEV/git.html:.hcenter.w15[![](images/git_logo.png)] IPS-DEV/git.html:.hcenter.w90.shadow[![](images/gitk_00.png)] IPS-DEV/git.html:.hcenter.w90.shadow[![](images/gitg.png)] IPS-DEV/git.html:.hcenter.w50[![](images/git_logo.png)] Binary file IPS-DEV/images/xkcd_code_quality.png matches IPS-DEV/intro.html:.hcenter.w20[![](images/github-octocat.png)] IPS-DEV/intro.html:.hcenter.shadow.w50[![](images/density.png)] IPS-DEV/intro.html: ![](images/wikipedia_logo.png) IPS-DEV/intro.html:.shadow[![](images/code.png)] ... ``` --- # `stash` - "Pause" your work ## Context * You are working on a feature. * Your boss asks You to fix an urgent bug. * You do not want to commit your WIP now. * You do not want to loose your WIP. ## `git stash` to the rescue ! :arrow_right: `git stash` saves your uncommitted changes (staged and unstaged). * `git stash`: save (stash) your work. * `git stash pop`: restore (un-stash) your stashed work. * `git stash -u`: stash also un-tracked files. * `git stash -a`: stash also ignored files. * `git stash list`: list stashed works. * `git stash save "message"`: stash with a message. * `git stash pop stash@{1}`: restore a specific stashed work. * `git stash show -p`: view stash diff with HEAD. * `git stash -p`: perform a partial stash (interactive). * `git stash branch newbranch stash@{2}`: create branch from stashed work. * `git stash drop stash@{1}`: remove stashed work. --- # `clean` - Clean your project ## Context * You started working on a new idea. * This idea turns out to be a bad idea. * You want your project to come back to a "clean state". :arrow_right: `git clean` recursively remove files that are not under version control, starting from current directory. * `clean -x`: remove ignored files. * `clean -d`: remove untracked directories. * `clean -n`: show what would be removed, but do not remove anything. * `clean -i`: interactive use, ask for directions. * `clean -f`: **force flag**, needed to remove untracked files / directories. ```text *$ git status On branch master Your branch is up to date with 'origin/master'. Untracked files: (use "git add
..." to include in what will be committed) titi toto/ nothing added to commit but untracked files present (use "git add" to track) *$ git clean -x -d fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean *$ git clean -x -d -i Would remove the following items: titi toto/ *** Commands *** 1: clean 2: filter by pattern 3: select by numbers 4: ask each 5: quit 6: help What now> 1 Removing titi Removing toto/ ``` --- # `format-patch` + `apply` / `am` - Use patches ## Context * You have developed a feature during your holidays for one of your work projects. * The repository for the project is on a private network. * You have to send your feature to a coworker. * You do not want to copy the whole repository (too big). * You do not want to copy a snapshot of your feature (still too big). * You do not want to loose commit informations related to your work. ## Use a patch * `git format-patch master --stdout > my_super_patch.patch`: create a patch for the current branch (forked from master). * `git apply --stat my_super_patch.patch`: check the patch. * `git apply --check my_super_patch.patch`: test the patch. * `git am --signoff < my_super_patch.patch`: apply the patch (with signoff). * `git apply my_super_patch.patch`: apply the patch (no signoff). --- # `--depth` / `archive` - Do not use full history ## Context * You only want the few last commits of a project, to fix a bug for example. * You do not need the full history. ## `--depth` can help You * `git fetch --depth 3` / `git clone --depth 3`: get last 3 commits only. :warning: The obtained project cannot be fetched, cloned or pushed to. ## `git archive` can get only a specific commit * `git archive master | gzip > latest.tgz`: get a snapshot (no history, no `.git`). * `git archive master | bzip2 > latest.tar.bz2`: the same with a different compression. --- # :warning: WARNING :warning: The following commands can **modify the history** of a project. :warning: Use them only for local projects. If your project has been cloned somewhere, do not use them. --- # `commit --amend` - Change the last commit ## Possible reasons: * You have made a mistake in the last commit message.  ## Variant: `git push --force-with-lease` :arrow_right: Check that remote and local are in sync before pushing with `--force`. :warning: if someone did a `git fetch` without `git merge`, a branch can be overwritten (cf. [this example](https://blog.developer.atlassian.com/force-with-lease/)). --- # `reset` - Undo some changes ## Possible reasons * Your local project history is a mess, * You want to "unstage" some files, * You want to give up an idea... ## `git reset` resets `HEAD` * `git reset --soft`: reset `HEAD`. * `git reset --mixed`: reset `HEAD` and the staging index. * `git reset --hard`: reset `HEAD`, the staging index and the working directory. * `git reset` = `git reset --mixed HEAD`: default behavior. --- # `revert` - Undo some commits ## Possible reasons * You want to fix a bug introduced by a single commit. * You do not want to remove the commit (and change the history). ## Use `git revert` * `git revert COMMIT`: create a commit to "cancel" another one. * `-n` or `--no-commit`: modify, stage but does not commit. :arrow_right: far better than `git reset`, since it does not modify the history of the project. :arrow_right: See this nice [example](https://www.atlassian.com/git/tutorials/undoing-changes/git-revert). --- # `rebase` - Move branches around .row[ .column.w40.middle[ :arrow_right: "Attach" a branch to **another commit**. ## Possible reasons: * You want to obtain a nice linear history (easier use of `git bisect`). * You are not afraid of using `rebase`. * `git rebase master`: change parent of branch to another commit. :arrow_right: obtain a nice linear history ] .column.w25.middle[
] .column.w5.middle[ :arrow_right: ] .column.w25.middle[
] ] --- # `rebase -i` - Modify existing commits ## Context * You contribute to a project by fork + pull request. * Your pull request is denied with comment "squash your commits first". ## Use `git rebase -i` to squash your commits * `-i` lets the user edit a list of the commits and decide what to do for every one of them (split, group...). :arrow_right: See also `git merge --squash` to merge a full branch as a single commit. --- # `git` possible workflow .hcenter.w80[ ![](images/workflow_git.png) ] .hcenter[ [source](https://backlog.com/git-tutorial/branching-workflows/) ] --- # `GitLab`'s `CI/CD` ## Definitions :arrow_right: `CI`: Continuous Integration: **build** and **test** for each commit. :arrow_right: `CD`: Continuous Delivery: **build** and **test** a **deployment-ready version** (manual deployment). :arrow_right: `CD`: Continuous Deployment: **build**, **test** and **publish** a **deployment-ready version**. ## `GitLab` ? :arrow_right: GitLab `CI/CD`: Some or all of the above. At least a **runner** with the same **major.minor** version as the `GitLab` instance is needed. The **runner(s)** will **build**, **test* and/or **publish** the project. The actions to be done (and their dependencies) are described in the file `.gitlab-ci.yml`. Some level of parallelism can be reached by using **stages**. --- # `GitLab`'s `CI/CD` ## .hcenter[[.gitlab-ci.yml]] .row[ .column.w45[ ```yml stages: - stage0 - stage1 - stage2 - stage3 msgpack: stage: stage0 script: "make -j$(nproc) msgpack" artifacts: paths: - misc/deps/msgpack-c/ googletest: stage: stage0 script: "make -j$(nproc) gtest" artifacts: paths: - misc/deps/googletest/ compilation: stage: stage1 script: "make -j$(nproc) -C src ../bin/hfb3" artifacts: paths: - lib/libhfb3.a - bin/hfb3 needs: - job: msgpack artifacts: true documentation: stage: stage0 script: "make doc" ``` ] .column.w45[ ```yml python: stage: stage2 script: "make -j$(nproc) -C misc/python build" needs: - job: compilation artifacts: true - job: msgpack artifacts: true compiltests: stage: stage2 script: "make -j$(nproc) -Cmisc/tests target" needs: - job: compilation artifacts: true - job: googletest artifacts: true artifacts: paths: - bin/tests tests: stage: stage3 script: "gtest-parallel -w$(nproc) bin/tests" needs: - job: compiltests artifacts: true pytests: stage: stage3 script: "cd misc/python; pytest" needs: - job: python artifacts: true ``` ] ] --- # `GitLab`'s `CI/CD` ## .hcenter[On-going `CI/CD`.] .hcenter[![](images/gitlab_ci0.png)] --- # `GitLab`'s `CI/CD` ## .hcenter[On-going `CI/CD`.] .hcenter[![](images/gitlab_ci1.png)] --- # `GitLab`'s `CI/CD` ## .hcenter[Finished `CI/CD` (failed).] .hcenter[![](images/gitlab_ci2.png)] --- # To conclude... ## Links * [https://longair.net/blog/2009/04/16/git-fetch-and-merge/ ](https://longair.net/blog/2009/04/16/git-fetch-and-merge/) * [https://devconnected.com/how-to-set-upstream-branch-on-git/ ](https://devconnected.com/how-to-set-upstream-branch-on-git/) * [https://www.atlassian.com/git/tutorials/saving-changes/git-stash ](https://www.atlassian.com/git/tutorials/saving-changes/git-stash) * [https://backlog.com/git-tutorial/branching-workflows/ ](https://backlog.com/git-tutorial/branching-workflows/) * [https://coderefinery.github.io/git-branch-design/01-rebase/ ](https://coderefinery.github.io/git-branch-design/01-rebase/) * [https://www.atlassian.com/git/tutorials/inspecting-a-repository/git-blame ](https://www.atlassian.com/git/tutorials/inspecting-a-repository/git-blame) ## See also: * [the benefits of a `pull request` workflow](https://www.madetech.com/blog/deployment-by-pull-requests) * a nice CLI frontend to `git`: [`tig`](https://github.com/jonas/tig)


|
| | Spinner (int x, int y, int w=90) |
| | Construct a new Spinner object. Value is initialized to 0. More...
|
| |
| bool | handleEvent (InputEvent *e) |
| | Attempt to handle given event. More...
|
| |
| void | update (unsigned int dt) |
| | Updates spinner container. Updates textures and values as necessary. More...
|
| |
|
void | setActive () |
| | Set the spinner as active (focused)
|
| |
|
void | setInactive () |
| | Set the spinner as inactive (un-focused)
|
| |
| bool | wrapAround () |
| | Get whether to wrap around value if is overflowed/underflowed. More...
|
| |
| void | setWrapAround (bool b) |
| | Set whether to wrap around value if is overflowed/underflowed. More...
|
| |
| unsigned int | digits () |
| | Get current value padding (number of zeros to pad value with) More...
|
| |
| void | setDigits (unsigned int p) |
| | Set current value padding (number of zeros to pad value with) More...
|
| |
| void | setLabel (std::string s) |
| | Set the current label string. More...
|
| |
| std::string | label () |
| | Get the current label string. More...
|
| |
| int | changeAmount () |
| | Get the step size to change value by. More...
|
| |
| void | setChangeAmount (int a) |
| | Set the step size to change value by. More...
|
| |
| int | value () |
| | Get the spinner value. More...
|
| |
| void | setValue (int v) |
| | Set the spinner value. More...
|
| |
| int | min () |
| | Get the minimum value. More...
|
| |
| void | setMin (int m) |
| | Set the minimum value. More...
|
| |
| int | max () |
| | Get the maximum value. More...
|
| |
| void | setMax (int m) |
| | Set the maximum value. More...
|
| |
| Colour | getArrowColour () |
| | Get the arrow colour. More...
|
| |
| void | setArrowColour (Colour c) |
| | Set the arrow colour. More...
|
| |
| Colour | getHighlightColour () |
| | Get the highlight colour. More...
|
| |
| void | setHighlightColour (Colour c) |
| | Set the highlight colour. More...
|
| |
| Colour | getTextColour () |
| | Get the text colour. More...
|
| |
| void | setTextColour (Colour c) |
| | Set the text colour. More...
|
| |
| | Container (int x=0, int y=0, int w=100, int h=100) |
| | Construct a new Container object. More...
|
| |
| void | addElement (Element *e) |
| | Adds new element a child. More...
|
| |
| bool | removeElement (Element *e) |
| | Attempt to delete given child element. More...
|
| |
|
void | removeAllElements () |
| | Deletes all children elements.
|
| |
| bool | returnElement (Element *e) |
| | Attempt to remove the given child element. More...
|
| |
|
void | returnAllElements () |
| | Removes (but does not delete) all children elements.
|
| |
| | Element (int x=0, int y=0, int w=100, int h=100) |
| | Construct a new Element object. More...
|
| |
| int | x () |
| | Returns x-coordinate of element. More...
|
| |
| int | y () |
| | Returns y-coordinate of element. More...
|
| |
| int | w () |
| | Returns width of element. More...
|
| |
| int | h () |
| | Returns height of element. More...
|
| |
| virtual void | setX (int x) |
| | Set x-coordinate of element. More...
|
| |
| virtual void | setY (int y) |
| | Set y-coordinate of element. More...
|
| |
| virtual void | setW (int w) |
| | Set width of element. More...
|
| |
| virtual void | setH (int h) |
| | Set height of element. More...
|
| |
| virtual void | setXY (int x, int y) |
| | Set co-ordinates of element. More...
|
| |
| virtual void | setWH (int w, int h) |
| | Set size of element. More...
|
| |
| virtual void | setXYWH (int x, int y, int w, int h) |
| | Setter size and co-ordinates of element. More...
|
| |
| Element * | parent () |
| | Returns the parent element of this element. More...
|
| |
| void | setParent (Element *p) |
| | Set the parent element of this element. More...
|
| |
| bool | isVisible () |
| | Check if current element is visible on-screen. More...
|
| |
| bool | hidden () |
| | Check if current element is hidden. More...
|
| |
| void | setHidden (bool b) |
| | Set whether element is hidden or not. More...
|
| |
| bool | selected () |
| | Check if current element is selected. More...
|
| |
| virtual void | setSelected (bool b) |
| | Set whether element is selected or not. More...
|
| |
| bool | selectable () |
| | Check if current element is selectable. More...
|
| |
| void | setSelectable (bool b) |
| | Set whether element is selectable or not. More...
|
| |
| bool | touchable () |
| | Check if current element is touch responsive. More...
|
| |
| void | setTouchable (bool b) |
| | Set whether element is touch responsive or not. More...
|
| |
| bool | highlighted () |
| | Check if current element is highlighted. More...
|
| |
| void | setHighlighted (bool b) |
| | Set whether element is highlighted or not. More...
|
| |
| bool | hasHighlighted () |
| | Check if current element has highlighted children element. More...
|
| |
| void | setHasHighlighted (bool b) |
| | Set whether element has highlighted children element or not. More...
|
| |
| bool | hasSelectable () |
| | Check if current element has selectable children element. More...
|
| |
| void | setHasSelectable (bool b) |
| | Set whether element has selectable children element or not. More...
|
| |
| bool | hasSelected () |
| | Check if current element has selected children element. More...
|
| |
| void | setHasSelected (bool b) |
| | Set whether element has selected children element or not. More...
|
| |
| void | setFocused (Element *e) |
| | Sets current element as unfocused and instead focuses a sub-element. More...
|
| |
| void | setFocussed (Element *e) |
| | Sets current element as unfocused and instead focuses a sub-element. More...
|
| |
| Element * | focused () |
| | Returns the currently focused element. More...
|
| |
| Element * | focussed () |
| | Returns the currently focused element. More...
|
| |
| std::function< void()> | onPressFunc () |
| | Returns function invoked when the element is pressed. More...
|
| |
| void | onPress (std::function< void()> f) |
| | Sets the function to invoked when the element is pressed. More...
|
| |
|
virtual void | render () |
| | Render child elements + highlights.
|
| |
| virtual Drawable * | renderHighlightBG () |
| | Renders the highlight background. More...
|
| |
| virtual Drawable * | renderHighlight () |
| | Renders the highlight border. More...
|
| |
| virtual Drawable * | renderSelection () |
| | Renders the selection overlay. More...
|
| |
|
virtual | ~Element () |
| | Destroy the Element object.
|
| |
A Spinner contains a number which can be increased/decreased by pressing the associated up/down buttons or the dpad.
- Note
- This element has a default height and should not be changed!


Background
Getting software released to users is often a painful, risky, and time-consuming process.
Through reliable, low-risk releases, Continuous Delivery makes it possible to continuously adapt software in line with user feedback, shifts in the market and changes to business strategy. Test, support, development and operations work together as one delivery team to automate and streamline the build, test and release process.
During the seminar we will first introduce the aspects of continuous delivery, including continuous testing, integration and deployment. Then we will present the continuous inspections tools with a set of approaches to continuously assess the product quality, with the goal of preserving the software maintainability while releasing new features.
The workshop is aimed at demonstrating and disseminating the power of DevOps in the cloud, for the purpose of increasing software maintainability and improve the development process quality.
During the seminar we will will provide to software practitioners information on how to start using DevOps and how the University of Bolzano can support them in the process of adopting DevOps.
Event Schedule
15 December, 2017
-
17.00
Introduction and greeting from the Dean of the Faculty
-
17.15
Introduction to Microservices: advantages, disadvantages and migration patterns.
Davide Taibi - Free University of BolzanoMicroservices have been getting more and more popular in recent years, and several companies are migrating monolithic applications to microservices. Many companies are still hesitant to migrate because they consider microservice as a hype or because they are not aware of the migration process and the benefits and issues related to migration. In this talk, I will introduce microservices and the main migration processes adopted by practitioners, together with the common motivations and issues that commonly take place during migrations.
-
17.45
Testing and Quality Assurance in the Era of Continuous Development in the Cloud
Michael Felderer - University of Innsbruck - Download PresentationContinuous software development in the cloud poses new challenges and opportunities for software testing and quality assurance. This talk discusses the role of selected traditional testing and quality assurance approaches like manual and automated system testing and new approaches like live experimentation as well as their integration to master new challenges of continuous development in the cloud.
-
18.00
Breaking the Monolith
Christoph Piock-Ellena - systems GmbH - Download PresentationWe created a product as a service to enable our customers to create and send digital invoices to the public administration, for digital conservation of documents and to manage the work-safety process. Our solution turned out to be a big monolith that was hard do maintain and hard to evolve. For this reason we decide to split our monolith in smaller pieces. During the talk we explore the challenges that we this kind of migration can have.
-
18.15
Autonomy through DevOps and PaaS
Nils Wloka - CodeCentricWhen confronted with the challenge of creating and building a product development and prototyping team optimized for lean cycle times, we quickly discovered autonomy as an important underlying principle. During the talk, I'm going to present a number of examples that show how leveraging a DevOps mentality and PaaS / SaaS offerings helped us achieve our goals and ultimately transformed our understanding about how to delivery software products.
-
19.00
One-click start a DevOps project into the cloud with feature branches
Robert Hostlowsky - CodecentricAt our client, one of the largest manufacturers for sports goods in Germany, we established a new "Devops foundation" for enabling DevOps Model and Practices. I will also demonstrate, how a DevOps Team can start from scratch and get a node.js or springboot app deployed to the cloud (kubernetes or aws) in 10 minutes. Every feature can be developed and deployed in parallel! The CICD pipeline is under full control of the team!
-
19.45
Coffee Break
-
20.30
Migrating a monolithic application to microservices: a case study
Alex Lanz - Raiffeisen Online GmbH - Download PresentationLike many other companies, we have a monolithic legacy system that is hard to maintain and update. Over the years, new features were added continuously, but the old code has never really been updated. Several attempts were made to modernize the application, but all of them failed. Our current approach using microservices works. I will show you how we are modernizing our monolith application. Within this journey, we collected many experiences, best practices and considerations that we want to share.
-
20.45
Going server-less: migrating IDM's big data platform to RDS and Elastic Beanstalk
Chris Mair - IDM Südtirol / 1006.org - Download PresentationGoing server-less: migrating IDM's big data platform to RDS and Elastic Beanstalk
-
21.15
Wrap-Up
-
21.25 - 22.15
Networking
Speakers
-
Davide Taibi.
Davide Taibi is an assistant professor of Software Engineering at the Free University of Bozen-Bolzano. His research activities are focused on software quality and cloud migration, supporting SMEs and micro-enterprises in migrating to cloud native architectures and reducing project failures due to project maintainability issues. Formerly, he worked at the Technical University of Kaiserslautern (Germany), Fraunhofer IESE – Kaiserslautern (Germany) and University of Insubria (Italy) where he has researched for more than 8 years. From February 2018 he will be tenured Assistant Professor at the University of Tampere (Finland)
-
Nils Wloka.
Nils Wloka is a passionate programmer with almost two decades of experience in designing and realizing software solutions of all sizes. In his current role, he is responsible for the codecentric Digitization Labs and supports customers in the early phases of product discovery and development.
-
Robert Hostlowsky.
In the last 19 years Robert collected experiences and insights in different roles into software development. Currently he is working at codecentric AG as an enabler and technical coach for DevOps practices for our customers. He also loves web technologies and how it improves the usability and speed of the development process. He is focusing on the optimisation of the development cycle: The core of every continuous delivery.
-
Christoph Piock-Ellena
Christoph Piock-Ellena is Software Architect and Development Lead at systems Gmbh, a software company that creates products as a service for business and IOT solutions. He worked in the last 15 years designing and creating innovative software solutions in different roles. Moreover, Christoph is also one of the organizers of Software Craftsmanship South Tyrol.
-
Alex Lanz
Alex Lanz is a Software Developer and Architect at Raiffeisen Online GmbH, an internet service provider based in South Tyrol. Previously, he made his master degree in computer science at the University of Innsbruck. He is passionate about designing software and creating environments where developers are able to work efficient and with happiness.
-
Michael Felderer
Michael Felderer is an associate professor in software engineering at the Department of Computer Science at the University of Innsbruck, Austria and a guest professor at the Blekinge Institute of Technology, Sweden. He holds a PhD and a habilitation degree in computer science. His research interests include software testing and quality, software processes, software analytics, requirements engineering, empirical software engineering, security engineering, and improving industry-academia collaboration. He works in close collaboration with industry and transfers his research results into practice as a consultant and speaker on industrial conferences.
-
Chris Mair
Chris Mair is a freelancer working as software developer and trainer. His somewhat broad range of interest include everything that is cool from low-level C programming to modern web development. Chris is a member of the Linux, Postgres, Java and other Open Source comunities.
VENUE
Free University of Bozen-Bolzano
Universitätsplatz 1 - piazza Università 1
Bozen-Bolzano - 39100
Italy
Room C2.06 (second floor, C building)
www.unibz.it
Tickets
The registration to this workshop is free of charge, following the link below:
Poster
The official poster can be downloaded as a pdf file:
Organising Committee
Davide Taibi
Assistant Professor
Free University of Bozen-Bolzano
Claus Pahl
Associate Professor
Free University of Bozen-Bolzano


My focus lies on Frontend Development for Web2 and Web3 applications.
I am currently working with HTML5, CSS, JavaScript, ReactJS and Solidity, building Websites and Web3 Applications.
Have a look!Creating React Apps, API Communication, Class-based and functional components
Solidity Basics, Data Location, Visibility, Arrays & Structs, Mappings, Error Handling, Inheritance, Events, External Calls
Truffle Development, Truffle Migrations, Testnet Deployment, Truffle Unit Tests, Ethereum Oracles, Ethereum Dapps, Metamask Integration
Programming Mindset, Javascript Basics, Types, Functions, Loops, Data Structures, Web Development, NodeJS Basics
Truffle, Ganache, ERC721, MetaMask, Dapp Frontend Development, Web3.js Coding, NFT Marketplace Development, Token Migration & Creation, HTML, JS & CSS
Money as a concept, History of currency, Gold as currency, Gold-backed currency, Fiat money, Government money, Central banking and reserve currencies, Bitoin as money, The value of bitcoin as the standard
Basics, Account Model, Smart Contracts, EVM, Token Standards, Decentralized Apps, Ethereum Consensus
Blockchain Basics, Bitcoin Basics, Bitcoin Mining, Forks, UTXO Model, Cryptography, Consensus Algorhithms, Segwit
DApps, Metamask, DeFi Financial Stack, MakerDAO, Compound, Stablecoins, Decentralized Money Markets, DeFi Risk Analysis, Decantralized Insurance
Or phone: +43<PHONE_NUMBER>
Thomas Ender
An der oberen alten Donau 3 - 9
1210 Vienna, Austria


Choose some Fiction writing to work on
These are current Writing Prompts from Reddit's 'writingprompts' subreddit. In 'Easy' version, you can see where the errors are. In the 'Regular' version, there will be no placeholders to show where the articles have been deleted


Terms and Conditions
Regarding to ethical handling of personal data:
CityMenu uses and applies a responsible use of personal data. All information used inside this application is merely to fulfill
the information needed to show all the features of the app, such as the reviews, favorite restaurants and so on. CityMenu will not use your
data for neither commercial nor legal purposes.  Many times they end up eating anything, or frequenting the same places over and over, due to lack of other options.
Audience
Our audience consists mainly of young adults from 18-30 years of age, who want to quickly decide on a recommended place, where they are guaranteed service, quality, taste, and/or budget, depending on their particular needs.
Solution
CityMenu is an app which gives recommendations based on user reviews and a analysis of the
most popular restaurants in the city. With an intuitive design, the user is able to easily find what and where to eat in a short period of time.
Impact
We expect our clients will be satisfied with our application, making it their default go-to app when uncertain about food acommodations. The quick decision time will help users spend less time choosing where to eat, and more time to do whatever else they need or want to do.
The app provides geolocalization services, so you can find the food service you want in no time at all!
Our search engine enables you to find the best option based on distance, ratings, times, and other filters, making your decision easy and enjoyable.
If you do not know what to search for, don't worry! The app can provide suggestions based on your location and user ratings, so when you don't have any idea of what to eat, we can give you one!
In some cases, restaurants accept reservations. So if that is the case, you can reserve right from the app. If that is not the case, a phone call is easy to make.
So now you know what to eat, but you need to get there. Luckily, CityMenu takes you there in
no time. Just start the navigation service and follow the instructions to arrive at the restaurant.
Last but not least, when you finish your meal you will get a notification reminding you to rate your experience at the restaurant. That way the community grows bigger and bigger!


Coach Names Bafana Core – ‘The Five Top Players’
by Mazola MolefeMolefi Ntseki says he relied on Bafana Bafana’s overseas-based contingent to carry the national team in their win over Sudan at the weekend.
Click the gallery above to see Ntseki's key men
While the scoreline did not reflect the number of chances created, the coach singled out Kamohelo Mokotjo, Lebo Phiri, Percy Tau and Thulani Serero having given them strict instruction to lift the performance of the team.
Read: Hunt: We Are Going To Get Hurt In January
Striker Lebo Mothiba was another player expected to carry the goalscoring threat, but struggled throughout the match – perhaps a reflection of his current club form.
Bafana managed a narrow 1-0 win to register their first three points in their 2021 Africa Cup of Nations qualifiers having lost 2-0 to Ghana in the opening round.
“We had five of our international players starting the match and the instructions were very clear: give us that international experience in the structure. I think they did very well, especially the four attacking players, except for Lebo (Mothiba), who struggled. It was difficult for him because there was no support. But we tried to correct that at halftime,” said Ntseki.
Phiri was the goalscorer and the coach explained his role.
“You look at how Phiri scored, we said he is playing as a striker every time we play the ball forward. It think offensively those are the players who helped us going forward. These are the five top players,” the Bafana mentor added.
Read: Ntseki's Concern - 'Obvious Choices' In Bafana Squad
Post Selfie’s On Soccer Laduma’s Social Media App & Earn Airtime and more! Download Now


An attribute represents a printing feature that a print service can provide. For each attribute, a print service either does or does not support the attribute. For each possible value of a supported attribute, a print service either does or does not support the value.
The API requires every print service to support certain attributes; other attributes are optional and the service can choose whether or not to support them. Each attribute has a set of values that it accepts. The API requires every print service to support certain values for certain attributes; other attribute values are optional and the service can choose whether or not to support them. These support requirements are recorded in the documentation for each attribute class.
Package javax.print.attribute.standard contains standard printing attributes and standard printing attribute values that are widely used in the printing domain. A print service vendor can provide new vendor-specific printing attributes in addition to the standard ones. A vendor can also provide vendor-specific extensions (subclasses) of the standard printing attributes -- for example, to provide additional vendor-specific values for an existing standard attribute. Of course, if a vendor wants clients to be able to use any added or extended attributes, the vendor must publish the new attribute classes.
Many of the standard attribute classes extend one of the abstract syntax classes of the javax.print.attribute package. These abstract syntax classes each represent a different type. The EnumSyntax class, for example, represents a type-safe enumeration. The abstract syntax class provides a wrapper for the attribute value.
If an attribute class extends EnumSyntax
, and the value of the
attribute is an IPP-compatible value, the attribute's toString
method returns the IPP string representation of the attribute value, such as
"processing-stopped" for the
JobState attribute. However, because the
EnumSyntax
class is extensible, vendors can define their own
attribute values. If an attribute uses the EnumSyntax
class
and is set to one of these vendor-defined values then the toString
method will not return the IPP string representation of the value.
A printing client application will typically not need to use all the printing attribute classes in package javax.print.attribute.standard, just the ones that pertain to the application.
The attribute classes in package javax.print.attribute.standard are based on the Internet Printing Protocol (IPP) attributes as defined in the Internet RFC document, RFC 2911 Internet Printing Protocol/1.1: Model and Semantics dated September 2000. See RFC 2911 for more information. The descriptive text for each attribute class was taken largely from the above documents. The above authors' contribution to the API is gratefully acknowledged.
Some attributes are doc attributes but not print request attributes and may only be specified at the doc level. Some attributes are print request attributes but not doc attributes and may only be specified at the Print Request level. Some attributes are both doc attributes and print request attributes and may be specified either at the doc level or at the Print Request level.
When specified at the doc level, an attribute applies just to that one doc. When specified at the Print Request level, an attribute applies to the whole job, including all the docs in the job. However, an attribute specified at the doc level overrides an attribute in the same category specified at the Print Request level.
Some attributes are both print request attributes and print job attributes; a client may include such attributes in a Print Request to specify characteristics for the ensuing Print Job, and those attributes then also appear in the Print Job's attribute set. Some attributes are print job attributes but not print request attributes; the print service itself adds these attributes to the Print Job's attribute set.
Please note: In the javax.print APIs, a null reference parameter to methods is incorrect unless explicitly documented on the method as having a meaningful interpretation. Usage to the contrary is incorrect coding and may result in a run time exception either immediately or at some later time. IllegalArgumentException and NullPointerException are examples of typical and acceptable run time exceptions for such cases.
@since 1.4


I'm Leonard, this is just for portfolio purpose to be submitted for symph, I did all these this below just for fun while learning and applying what i've learnd. It doesn't really have any real impact on anyone nor to Symph but it's fun for me.
I have a strong belief about the Importance of fundamentals. I love learning, I love winning, I love my family, my daughter and my wife. And I'm greedy for life lol
mvc using node, express, mongodb, stripe, and ejs. added mysql + sequelize in models if you wanna use rdbms instead of nosql. only used file-system method for the images so it won't persist in prod deployment but you can experiment and have fun in the development
Simple csr/spa with client-side routing using react router. React+firebase with crud.
Just another react app with component cards i usually use. Just normal react+firebase where you can add to cart and make orders. See in console.log for data-output of the orders.
Using TypeScript and the OOP classes, concept of inheritance and composition did events mapping design-patterns concept to pair up keys with events. Recreated some of the functions of backbonejs.
Free leafletjs openstreet map api for fun while learning. Allow access to map in browser to see. Click anywhere.
Just used an api for it, it's cool, the design i just stole from someone else. But still cool.
React+Node+mongodb. Same as the e-commerce one but I used websockets and tried graphql.
Actually the first ReactJS i ever wrote. I was amazed at how responsive it is by that time.
leonard@symph.co


Best Visualization/data analysis
Overstellar with Biologg
Motivation: "By using existing needs and data from government agencies, adding engaging interfaces
with gamification, taking it to the next level. Collecting information literally from the grassroots
and aggregating to scientists and decision makers. With an innovative mindset and digital competence
but also a strong focus on the relevant technologies - the nature itself is in 3D after all."
Daniel Eriksson Anna-Karin Bergkvist Sini Tinfors
Read more about the solution at
https://devpost.com/software/biologg
Best use of deep tech
None with Resilient distributed crisis information
Motivation: “In the jury we have today seen a lot of different teams present different solutions
on how to react in a crisis situation. The challenge is this; when crisis strikes the first thing
that goes down is usually the networks. So for our Deep tech prize we have decided to focus on the
team behind resilient distributed crisis information, that focus on infrastructure and standing the
frictions of infrastructure."
Johan Dahlberg Robin Audeer Steinar Sturlaugsson
Read more about the solution at
https://devpost.com/software/resilient-distributed-crisis-information
Best benefit for the public
Division by Zero with Location rank
Motivation: “There is a lot of ongoing debate in the world about the future of jobs. We stand before a divided,
unsure and ever changing employment market. With this as backdrop, the winners of the Benefit for
the Public Award want to make available a platform to nurture entrepreneurship and make it more possible
to pursue and monetize everyone’s own personal dream.”
Ludvig Persson Rafal Paliwoda Anton Fenske
Read more about the solution at
https://devpost.com/software/locateme-dj81wu
Participants choice award
Delta with the solution Delta
Alexander Tuoma Jonas Valfridsson Karl-Oskar Rikås Emelie Lou-Lou Pei Isak Lindhé Jesper Fridedors
Read more about the solution at
https://devpost.com/software/delta-4c7pkn


{%extends "globus-portal-framework/v2/base.html"%} {% load static is_active %} {%block headextras%} {% endblock %} {% block breadcrumb_items %}
Here is a good place to talk about your project. More to come!
Globus Search is a service which allows users to store data with visibility controls based on Globus Identities and Groups. Data may be public, or only visible to certain sets of users. The primary features of the service are APIs for storing and managing data, and visibility-filtered query APIs.