The Lions Command Structure are here to help all our players both in and out of character to enjoy the world of Curious Pastimes (CP). Out Of Character (OOC), here are some of the things Lions Command are responsible for:
- Getting the faction kit (tents, gate, banner walls, tankards, etc) to and from the events.
- Setting up and taking down the Lions camp.
- Liaising with the CP Game Team (refs, monsters, world plot) and CP Event Team (OOC logistics, safety and campsite liaisons).
- Refereeing the game and answering player questions in the Lions camp (ably assisted by our excellent Lions Faction Refs).
- Administering faction funds.
- Arranging banquet and faction events.
- Herding cats.
- Ensuring the Lions camp and player experience is as excellent as possible!
In Character (IC), Lions Command are the leaders of the land of Albion and the commanders of that nation's armies and can help with any important issues. The current Lions Command set up is as follows:
-
OOC: Dave 'FNG' McKenna
IC: High King Rudraigh Penhaligon, Hier Thegn of Caer Culhaven.
Has there been a time at CP before Dave was there? Well not really as he had been a player for almost 3 whole main events before joining the ref crew, from there to command team in the Algaia, then retiring to play in the Lions. Unable to stay away from helping run the game he has come back to the fold. Shy, quiet and understated - these are words that Dave has heard said about others but rarely about himself and his mandate is to bring law, chaos and most importantly GAMES to Albion.
Rudraigh came second in the most curmudgeonly person in Cornwall competition. Rumour has it he threw the competition, so he could passively aggressively complain about not winning. He was given his Excalibur by Genevieve on the Isle of Anwyn in the spring of 1018.
-
OOC: Lucy 'Judge Dredd' DeGraft-Johnson
IC: Ser Teagan Patrixbourne, Champion of the Gods of Law
Lucy has been playing at CP almost since its inception as a game system in 1998 in various guises and has been an absolute staple of the Lions for as long as can be remembered. She has been a dedicated member of the referee team for the faction for three years and has been writing and running lots of the excellent plot that the faction has been enjoying during her tenure. Beware though, or she'll send druids after you...
A veteran of the war in Deira, and of the events surrounding the burning of the bridge at Preston that shaped the Lance, Teagan now serves the Gods of Law above all else. Many who knew Teagan before she took on the mantle of the Gods, would tell you how different she is from the spirited and fun-loving person who joined the warhost so many years ago. She is now known more for her judgemental stare and loyalty to the Gods, than for her laugh and inappropriate humour. If you know where to look, however, the same spirit still burns and despite her less approachable demeanour, many find comfort, reassurance and wisdom when they seek out her counsel.
-
OOC: Tom 'That Algaia Guy' Hallsmith
IC: TBC
Tom has been involved with CP in one form or another for around sixteen years; In that time he's been a player, a member of game team and a member of faction command in the Algaia.
TBC
Faction Referees
The Command Team couldn’t run the faction without help and support and for that we have an excellent crew of “faction refs” who assist by:
- Running faction monster slots.
- Contributing to plot ideas.
- Refereeing the game and answering player questions in the Lions camp.
- Generally pitching in whenever Faction Command need help.
Our current Faction Referees are:
- Chloe Bradford
- Jonathan Gregory
- Mark Holmes
- Rob Jones
- Sam Merry
- Karmen Trice


{{state.app_info.Patientname}} | {{state.app_info.age}} | {{state.app_info.incidentsname_c}} | {{state.app_info.DateAndTime}}.
Past Reports
Notes
Risks
EMR
Invite
View Summary
End Consultation
{{menu.label}}
{{menu.label}}
{{menu.label}}
{{sub_menu.label}}
{{menu.label}}
{{question.label[0]}}
{{question.label[0]}}
{{answer.label[0]}}
{{question.label[0]}}
{{question.label[0]}}
{{answer.label[0]}}
{{question.label[0]}}
{{question.label[0]}}
{{answer.label[0]}}
{{question.label[0]}}
{{question.label[0]}}
{{answer.label[0]}}
Main Complaint
Show to patient
{{state.text_complaint}}
Vital Signs
Show to patient
Symptomatic Review
Show to patient
Examination
Show to patient
Diagnosis
Show to patient
Investigation
Medicine
Follow-up
Show to patient
{{state.text_followup}}


Post-parsing
Chmod.php
Connection.php
Directory.php
Exception.php
ExceptionCodes.php
File.php
Item.php
Session.php
Autoload.php
Warnings:
Warning on line 11 - no @package tag was used in a DocBlock for file D:\Git\Home\cFTP\lib\cFTP\Autoload.php
Warning on line 12 - no @package tag was used in a DocBlock for class cFTP_Autoloader
Chmod.php
Warnings:
Warning on line 11 - no @package tag was used in a DocBlock for file D:\Git\Home\cFTP\lib\cFTP\Chmod.php
Warning on line 12 - no @package tag was used in a DocBlock for class cFTP_Chmod
Connection.php
Warnings:
Warning on line 13 - no @package tag was used in a DocBlock for class cFTP_Connection
Warning on line 194 - File "D:\Git\Home\cFTP\lib\cFTP\Connection.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Directory.php
Warnings:
Warning on line 11 - no @package tag was used in a DocBlock for file D:\Git\Home\cFTP\lib\cFTP\Directory.php
Warning on line 12 - no @package tag was used in a DocBlock for class cFTP_Directory
Exception.php
Warnings:
Warning on line 12 - no @package tag was used in a DocBlock for class cFTP_Exception
Warning on line 12 - no @package tag was used in a DocBlock for file D:\Git\Home\cFTP\lib\cFTP\Exception.php
ExceptionCodes.php
Warnings:
Warning on line 12 - no @package tag was used in a DocBlock for file D:\Git\Home\cFTP\lib\cFTP\ExceptionCodes.php
Warning on line 13 - no @package tag was used in a DocBlock for class cFTP_ExceptionCodes
File.php
Warnings:
Warning on line 11 - no @package tag was used in a DocBlock for file D:\Git\Home\cFTP\lib\cFTP\File.php
Warning on line 12 - no @package tag was used in a DocBlock for class cFTP_File
Item.php
Warnings:
Warning on line 11 - no @package tag was used in a DocBlock for file D:\Git\Home\cFTP\lib\cFTP\Item.php
Warning on line 12 - no @package tag was used in a DocBlock for class cFTP_Item
Session.php
Warnings:
Warning on line 11 - no @package tag was used in a DocBlock for file D:\Git\Home\cFTP\lib\cFTP\Session.php
Warning on line 12 - no @package tag was used in a DocBlock for class cFTP_Session
|
|


A
B
^
V
>
<
START
SELECT
LOAD GAME
SELECT
Upload Savegame
PAUSE
RESET
Download Savegame
Screenshot
Pixelated
Sound
Debugger


{% extends "pathways/snippets/question.html" %} {% load i18n %} {% load static %} {% block question %}
{% blocktrans %} Although we couldn't find an existing application with the information you provided, submitting a new application only takes about 5 minutes. {% endblocktrans %}
{% include 'pathways/snippets/already-submit-reveal.html' %}


There's a lot of buz about Playframework
Let's find out why
Play is a "high-velocity" web framework that is asynchronous and developer-friendly.
SBT is the build tool of scala. It comes built-in with Playframework, but if you want to run the code samples at www.github/ambantis/hello2Akka, then download it at:
Playframework comes as a single zip file that runs on all platforms. it at:
All About Monica and Ryan
Monica and Ryan have a joint checking account. This is what it looks like:
public class BankAccount {
private int balance;
public BankAccount() {
balance = 100;
}
public void withdraw(int amount) {
balance -= amount;
}
public int getBalance() {
return balance;
}
}
Monica and Ryan are constantly causing their account to be overdrawn, because even though they check the balance before making a withdrawal, they are threads accessing a state at the same time.
Go ahead and try it at the command line. If you have sbt installed, then at the command line run RyanAndMonicaJob
% sbt "runMain threads.RyanAndMonicaJob"
And here's the output you might get:
Monica says, 'I found something ...'
Monica is going to sleep
Sorry, not enough for Ryan
Sorry, not enough for Ryan
Sorry, not enough for Ryan
Sorry, not enough for Ryan
Sorry, not enough for Ryan
Monica has woken up.
Monica completes the withdrawal
Overdrawn!
There's ways to deal with concurrency in thread-based systems, but all of them are complicated.
Wouldn't it be great if the developer could spend more time creating new features and enhancing the user experience rather than dealing with concurrency?
With Akka, Monica and Ryan aren't threads, they're actors. Actors can't access state of other actors, all they can do is pass messages to other actors. The messages contain immutable data structures (cannot be changed).
There is no shared state, so there is no need for locks, synchronization, and no concurrency bugs to track down.
Here's the list of messages the Akka bank will accept:
object BankAccount {
case class Withdraw(amount: Int)
object Balance
object ChaChing
object NSF
}
Only the BankAccount object can alter state. Other actors can send messages requesting that state be changed, but the bank processes those messages, not Monica and Rynan
Go ahead and try it at the command line. If you have sbt installed, then at the command line run the actor demo:
% sbt "runMain actordemo.Boot"
And here's the output you might get:
Ryan says, 'It costs 1 dollar?!?, I'll buy it, but first I'll rest'
Bank says, 'Ryan asks to withdraw 1'
Bank says, 'The shoppers have a zero balance, time to go back to work.'
Play! only runs on a handful of threads.
Play! doesn't use thread-pools. If your web server has three cores, then Play! uses three threads for the application.
It's that simple!
If Play! only uses a couple of threads, wouldn't blocking I/O bring the server to it's knees?
When Play encounters an expensive computation or I/O, it places the future results of that computation or I/O in a socket and keeps on going. When the future has a value, then there is a callback to redeem the promise of a future value for a real value.
In the code snippet below,
object Boot extends App {
val fiveHundred = 500
implicit val timeout = Timeout(5 seconds)
println("this is before the expensive computation")
val futureResult: Future[(Int, Double)] = future {
getNaturalNumbersWith(divisors = fiveHundred)
}
futureResult.map { x =>
println(s"first triangle # with $fiveHundred divisors = " +
s"${x._1} with a time of ${x._2} secs")
}
println("this is after the expensive computation")
}
we have a println statement before and after the expensive computation.
If you run it from the command line:
% sbt "runMain futuredemo.Boot
You'll see output something like this:
this is before the expensive computation
this is after the expensive computation
[success] Total time: 0 s, completed Sep 25, 2013 12:18:24 AM
> first triangle # with 500 divisors = 76576500 with a time of 0.99 secs
The result occurs after the program finishes running!
In a Play! controller, the web page results will not display until all the I/O is completed. So, from the perspective of the client, the application is synchronous, but application resources are never tied up waiting for I/O.
Be sure to check out the source code at https://www.github.com/ambantis/hello2akka


HTML & CSS
Hyper Text Markup Language, Cascading Style Sheets, not immediately decipherable from the get go but relatively simple to understand.
Here's how I described the difference to a friend the other day:
Imagine you make a chair. You start with a block of something to sit on. You give it four legs. You want a backrest as it's not a stool. HTML creates these elements of an object (website) with none of the details. It's the raw shape or form of something.
CSS then comes along and transforms the chair (website). It gives the chair size, material, thickness, colour.
Bonus: Javascript gives the chair it's functionality. Does the chair fold closed? Does it stack? Can it be moved?
Control flow
What is control flow?
Control flow is quite simply the order in which code is read, generally, from top to bottom in sequence.
Loops are when code will repeat a certain section of code until a certain criteria is met.
It's comparable to following a recipe, or baking a cake. You follow the instructions step by step but instead of a recipe saying:
- Sift Flour
- Crack egg into bowl
- Crack egg into bowl
- Crack egg into bowl
- Crack egg into bowl
- Melt butter
A loop would denote multiple steps differently:
- Sift Flour
- For each egg you're using, crack it into bowl
- Melt Butter
Loops ultimately save time, have less room for error, are more accepting of change and convey information cleanly and concisely.
The DOM
The DOM, or 'Document Object Model' is a singular object that is created as a sort of map of a website's elements. The DOM assists in Javascript's ability to manipulate HTML & CSS on a website.
The ways you can interact with the DOM are virtually endless. Elements of a website that are visible and presented on the screen can be manipulated, hidden or shown. Their attributes can be altered, giving them different visual characteristics - perhaps to alert an user of something particular like a warning.
Arrays & Objects
Arrays and objects have similarities (Arrays are objects!!) but the situations in which we would use them and the ways in which we interact with them are different.
Arrays are akin to lists. You can store all sorts of things within an array. This 'list' has an 'index', a means of accessing each individual entry. Entries can be removed, altered, added with various commands.
Objects can also store pieces of data but in the form of a 'key/value' pairing. The key esentially being a name or description of the value.
Functions
Functions are here to make our lives far simpler. They're executable snippets of code that.. do things. Things that we tell them to do.
Functions are essentially commands. If a function relies on information it does not start with then we can give the hungry l'il function 'arguments'.
They're able to be reused so they speed up our ability write an application/website. This also makes our code cleaner.


io.gearpump.streaming.kafka.lib
default grouper groups TopicAndPartitions among StreamProducers by partitions
e.g. given 2 topics (topicA with 2 partitions and topicB with 3 partitions) and 2 streamProducers (streamProducer0 and streamProducer1)
streamProducer0 gets (topicA, partition1), (topicB, partition1) and (topicA, partition3) streamProducer1 gets (topicA, partition2), (topicB, partition2)
this class dispatches kafka kafka.common.TopicAndPartition to gearpump tasks
default grouper groups TopicAndPartitions among StreamProducers by partitions
e.g. given 2 topics (topicA with 2 partitions and topicB with 3 partitions) and 2 streamProducers (streamProducer0 and streamProducer1)
streamProducer0 gets (topicA, partition1), (topicB, partition1) and (topicA, partition3) streamProducer1 gets (topicA, partition2), (topicB, partition2)


ON going Available contest
| # | Contest Name | Contest Descrition | Contest Ends | Enroll | |
|---|---|---|---|---|---|
| 1 | Andrew Mike | Developing a Java programme | Date | Link | |
| 1 | Andrew Mike | Developing a Java programme | Date | Link | |
| 1 | Andrew Mike | Developing a Java programme | Date | Link | |
| 1 | Andrew Mike | Developing a Java programme | Date | Link | |
| 1 | Andrew Mike | Developing a Java programme | Date | Link |


| Body Part |
Sever |
Blunt |
Shot |
Fire |
Water |
Thunder |
Ice |
Dragon |
Stun |
| Head |
70 |
70 |
55 |
20 |
10 |
10 |
10 |
20 |
100 |
| Head (Wounded) |
80 |
80 |
60 |
20 |
10 |
10 |
10 |
20 |
100 |
| Head (Critical State) |
80 |
100 |
60 |
15 |
30 |
30 |
30 |
15 |
100 |
| Neck |
30 |
30 |
25 |
15 |
10 |
10 |
10 |
15 |
0 |
| Neck (Critical State) |
50 |
50 |
30 |
15 |
30 |
30 |
30 |
15 |
0 |
| Body |
25 |
25 |
25 |
15 |
10 |
10 |
10 |
15 |
0 |
| Body (Critical State) |
60 |
60 |
40 |
15 |
30 |
30 |
30 |
15 |
0 |
| Chest |
60 |
60 |
30 |
20 |
10 |
10 |
10 |
20 |
0 |
| Chest (Critical State) |
100 |
80 |
70 |
15 |
30 |
30 |
30 |
15 |
0 |
| Forelegs |
50 |
50 |
45 |
20 |
10 |
10 |
10 |
20 |
0 |
| Forelegs (Wounded) |
60 |
60 |
50 |
20 |
10 |
10 |
10 |
20 |
0 |
| Forelegs (Critical State) |
70 |
90 |
60 |
15 |
30 |
30 |
30 |
15 |
0 |
| Hindlegs |
22 |
22 |
15 |
10 |
5 |
5 |
5 |
10 |
0 |
| Hindlegs (Critical State) |
50 |
50 |
40 |
10 |
20 |
20 |
20 |
10 |
0 |
| Wings |
50 |
50 |
30 |
15 |
10 |
10 |
10 |
15 |
0 |
| Wings (Wounded) |
60 |
60 |
40 |
15 |
10 |
10 |
10 |
15 |
0 |
| Wings (Critical State) |
100 |
80 |
50 |
15 |
30 |
30 |
30 |
15 |
0 |
| Tail |
25 |
25 |
15 |
10 |
5 |
5 |
5 |
10 |
0 |
| Tail (Critical State) |
50 |
50 |
30 |
10 |
20 |
20 |
20 |
10 |
0 |
| Tail Tip |
70 |
70 |
45 |
20 |
10 |
10 |
10 |
20 |
0 |
| Tail Tip (Critical State) |
90 |
90 |
60 |
15 |
30 |
30 |
30 |
15 |
0 |


select_precision(n) 1.0 "flibs"
select_precision - Select the precision for real variables
TABLE OF CONTENTS
DESCRIPTION
COPYRIGHT
The auxiliary select_precision module defines three parameters
by which you can select the precision for real variables and constants:
-
sp - Single precision
-
dp - Double precision (the real kind whose precision is larger
than that of single precision)
-
wp - Working precision. If you consistently use wp as the
kind for your real variables and constants, then switching between
single and double precision is merely a matter of setting wp to
either sp or dp in this module and recompiling.
Note: One of the pitfalls in using double precision is that
literal constants, such as 1.2345678901234567890 are not
automatically interpreted as double precision. You need to specify the
kind explicitly: 1.2345678901234567890_wp will define the
constant in the working precision.
Copyright © 2008 Arjen Markus <arjenmarkus@sourceforge.net>


AMAZING PEOPLE ARE MAKING AMAZING DESIGNS IN A FUN ENVIRONMENT
When you work with us, you are part of the team of committed collaborators.
All aspects of our software development process are intergrated, iterative and agile.
Our approach unifies design,development and
product management to create exceptional products.
We start each project by understanding your business goals,
the user's needs and the product requirements.
Then we help translate them into effective and elegant solutions.
Before we sign a contract or write a line of code our team will spend the necessary
time needed to understand your product vision.
The outcome of this scoping session is a proposal or high-level statement of work.
based on your requirements, we can provide a complete offering or just the pieces
you need.
Our design practise offers a full range of services including branding strategy.interaction and visual design ad user experience testing.Throughout your project, our designers create and implement visual designs and workflows,solicit user feedback, and work with you to make sure what gets built is what is needed.
All engineers are fluent in the latest enterprise, mobile and web development technologies.They collaborate with your team to write,test and improve code on a daily basis,using proven practises such as test-driven development and pair programming.
Planning and development is iterative.because we are constantly coding and testing,the products we build are always ready to go live.This iterative process allows for changes as business requirements evolve.


{% extends 'base.html' %} {% block content %}
get counties
get constituencies
get governors
get deputy governors
get senators
get Women Reps
Thanks for choosing the ugatuzi API to build Knowledge into your app or website. We know that getting started with a new API can be challenging, so we’ve created a step-by-step guide that walks you through how to create a Ugatuzi Developer account, make your first API call and more.
If you are an existing Ugatuzi user, you will be able to use your own account to register. If not, you will have to either Sign Up for Ugatuzi .
On the next page, choose a name for your app and enter the URL where it will be hosted.
image required
Once you’ve created your app, make note of your client ID and secret key, as we will need this in the next step. Please note the key below has been generated for this guide and will not be usable in an application.
Our API is available for everyone to use. A UGatuzi user account is required to request an API key. Professional users are approved on a per application basis.
To view all the methods available, you should head over to ugatuzi. Everything outlined on this page is simply a high level overview to help you understand what is available.
There are 3 ways to search for and find movies, TV shows and people on TMDb. They're outlined below.
/County
- Text based County is the most common way. You provide a query string and we provide the closest match. County search by text takes into account all original, translated, alternative names and titles.
/counstituency
- Sometimes it useful to search for constituencies based on filters or definable values like id and county codes, certifications or elecction date. The discover method make this easy.
/senetor
- The last but still very useful way to find data is with existing external IDs. For example, if you know the County Women Rep ,Senetors or MCAs, you can plug that value into this method and we'll return anything that matches. This can be very useful
when you have an existing tool and are adding our service to the mix.
Our discover methods can be very powerful tools when you're looking for specific data. Below are some examples to showcase some of the powerful things you can do.
URL: /county/governor
As outlined in the getting started guide, the basics to getting a user authenticated look like this:
The first step as a developer is to request a new token. This is a temporary token that is required to ask the user for permission to access their account. This token will auto expire after 60 minutes if it's not used.
With a request token in hand, forward your user to the following URL:
http://<IP_ADDRESS>:5000/authenticate/{REQUEST_TOKEN}
Once the user has approved your request token, they will either be redirected to the URL you specified in the redirect_to parameter or to the
/authenticate/allow
path on Ugatuzi. If they aren't redirected to a custom URL, the page will also have a Authentication-Callback header. This header contains the API call for step #3. You can either manually generate it or simply use the one we return.
By calling the
new session method
with the request token that has been approved by the user in step 2, we will return a new session_id. This is the session that can now be used to write user data. You should treat this key like a password and keep it secret.
A guest session can be used to rate movies without having a registered TMDb user account. For more information about how to create a guest session see here.


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.xml.serializer.ToHTMLStream.Trie
static class ToHTMLStream.Trie
| Nested Class Summary | |
|---|---|
private static class |
ToHTMLStream.Trie.Node
The node representation for the trie. |
| Field Summary | |
|---|---|
static int |
ALPHA_SIZE
Size of the m_nextChar array. |
private char[] |
m_charBuffer
helper buffer to convert Strings to char arrays |
private boolean |
m_lowerCaseOnly
true if the search for an object is lower case only with the key |
(package private) ToHTMLStream.Trie.Node |
m_Root
The root node of the tree. |
| Constructor Summary | |
|---|---|
ToHTMLStream.Trie()
Construct the trie that has a case insensitive search. |
|
ToHTMLStream.Trie(boolean lowerCaseOnly)
Construct the trie given the desired case sensitivity with the key. |
|
ToHTMLStream.Trie(ToHTMLStream.Trie existingTrie)
Construct the trie from another Trie. |
| Method Summary | |
|---|---|
java.lang.Object |
get(java.lang.String key)
Get an object that matches the key. |
java.lang.Object |
get2(java.lang.String key)
Get an object that matches the key. |
int |
getLongestKeyLength()
Get the length of the longest key used in the table. |
java.lang.Object |
put(java.lang.String key,
java.lang.Object value)
Put an object into the trie for lookup. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int ALPHA_SIZE
final ToHTMLStream.Trie.Node m_Root
private char[] m_charBuffer
private final boolean m_lowerCaseOnly
| Constructor Detail |
|---|
public ToHTMLStream.Trie()
public ToHTMLStream.Trie(boolean lowerCaseOnly)
lowerCaseOnly
- true if the search keys are to be loser case only,
not case insensitive.public ToHTMLStream.Trie(ToHTMLStream.Trie existingTrie)
existingTrie
- the Trie that this one is a copy of.| Method Detail |
|---|
public java.lang.Object put(java.lang.String key, java.lang.Object value)
key
- must be a 7-bit ASCII stringvalue
- any java object.
public java.lang.Object get(java.lang.String key)
key
- must be a 7-bit ASCII string
public java.lang.Object get2(java.lang.String key)
key
- must be a 7-bit ASCII string
public int getLongestKeyLength()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


2. SIMP 5.2.1-0¶
Contents
This release is known to work with:
- RHEL 7.2 x86_64
- CentOS 7.0 1511 x86_64
This update is backwards-compatible for the SIMP 5.2 releases.
2.1. SIMP 6 is Coming¶
Due to Puppet 3.X going EOL in December of 2016, the SIMP stack will be releasing SIMP 6 as the next major release. Among major changes:
- SIMP 6 will use Puppet 4, which is distributed as a single RPM by the Puppet all-in-one (AIO) installer.
- Starting with 6.0.0, the SIMP numbering scheme will follow Semantic Versioning 2.0.0.
- 6.0.0 and will support all operating systems under that numbering scheme henceforth.
2.2. Manual Changes Required for Pre-5.1.0 Upgrades¶
Note
This only affects you if you did not have a separate partition for /tmp
!
- There were issues in the
secure_mountpoints
class that caused/tmp
and/var/tmp
to be mounted against the root filesystem. While the new code addresses this, it cannot determine if your system has been modified incorrectly in the past. - To fix the issue, you need to do the following:
- Unmount
/var/tmp
(may take multiple unmounts) - Unmount
/tmp
(may take multiple unmounts) - Remove the
'bind'
entries for/tmp
and/var/tmp
from/etc/fstab
- Run
puppet
with the new code in place
- Unmount
2.2.1. SSSD¶
Warning
SSSD enforces password strength at login time! This means that, should you have old passwords that do not meet the present password policy on the host, you will not be able to authenticate with your old password!
2.3. Deprecations¶
- The
simp-sysctl
module will be deprecated in the6.0.0
release of SIMP. Current users should migrate to using theaugeasproviders_sysctl
module provided with SIMP going forward.
2.4. Breaking Changes¶
- There were no breaking changes in this release.
2.6. Upgrade Guidance¶
Detailed upgrade guidance can be found in the ug-howto-upgrade-simp portion of the SIMP User Guide.
Warning
You must have at least 2.4GB of free RAM on your system to upgrade to this release.
Note
Upgrading from releases older than 5.0 is not supported.
2.7. Security Announcements¶
2.7.1. CVEs Addressed¶
- CVE-2016-5195
- Dirty COW - A privilege escalation vulnerability in the Linux Kernel
2.8. RPM Updates¶
| Package | Old Version | New Version |
|---|---|---|
| pupmod-cristifalcas-journald | N/A | 0.2.2-2016 |
| pupmod-elasticsearch-logstash | 0.6.4-2016 | 0.6.5-2016 |
| pupmod-simp-acpid | 0.0.2-2016 | 0.0.3-2016 |
| pupmod-simp-activemq | 3.0.0-2016 | 3.0.1-2016 |
| pupmod-simp-aide | 4.1.1-2016 | 4.1.2-2016 |
| pupmod-simp-apache | 4.1.5-2016 | 4.1.7-2016 |
| pupmod-simp-auditd | 5.0.4-2016 | 5.1.1-2016 |
| pupmod-simp-autofs | 4.1.2-2016 | 4.1.4-2016 |
| pupmod-simp-clamav | 4.1.1-2016 | 4.1.2-2016 |
| pupmod-simp-compliance_markup | 1.0.0-0 | 1.0.2-2016 |
| pupmod-simp-dhcp | 4.1.1-2016 | 4.1.2-2016 |
| pupmod-simp-dirtycow | N/A | 1.0.1-2016 |
| pupmod-simp-foreman | 0.2.0-2016 | 0.2.2-2016 |
| pupmod-simp-freeradius | 5.0.2-2016 | 5.0.3-2016 |
| pupmod-simp-ganglia | 5.0.0-2016 | 5.0.1-2016 |
| pupmod-simp-haveged | 0.3.1-2016 | 0.3.2-2016 |
| pupmod-simp-iptables | 4.1.4-2016 | 4.1.5-2016 |
| pupmod-simp-jenkins | 4.1.0-2016 | 4.1.1-2016 |
| pupmod-simp-krb5 | 5.0.6-2016 | 5.0.8-2016 |
| pupmod-simp-libreswan | 0.1.0-2016 | 0.1.2-2016 |
| pupmod-simp-libvirt | 4.1.1-2016 | 4.1.2-2016 |
| pupmod-simp-logrotate | 4.1.0-2016 | 4.1.1-2016 |
| pupmod-simp-mcafee | 4.1.1-2016 | 4.1.2-2016 |
| pupmod-simp-mcollective | 2.3.2-2016 | 2.4.0-2016 |
| pupmod-simp-mozilla | 4.1.1-2016 | 4.1.2-2016 |
| pupmod-simp-named | 4.3.1-2016 | 4.3.3-2016 |
| pupmod-simp-network | 4.1.1-2016 | 4.1.3-2016 |
| pupmod-simp-nfs | 4.5.2-2016 | 4.5.3-2016 |
| pupmod-simp-nscd | 5.0.1-2016 | 5.0.2-2016 |
| pupmod-simp-ntpd | 4.1.0-2016 | 4.1.1-2016 |
| pupmod-simp-oddjob | 1.0.0-2016 | 1.0.1-2016 |
| pupmod-simp-openldap | 4.1.8-2016 | 4.1.9-2016 |
| pupmod-simp-openscap | 4.2.1-2016 | 4.2.2-2016 |
| pupmod-simp-pam | 4.2.5-2016 | 4.2.6-2016 |
| pupmod-simp-pki | 4.2.3-2016 | 4.2.5-2016 |
| pupmod-simp-polkit | 4.1.0-2016 | 4.1.1-2016 |
| pupmod-simp-postfix | 4.1.3-2016 | 4.1.5-2016 |
| pupmod-simp-postgresql | 4.1.0-2016 | 4.1.2-2016 |
| pupmod-simp-pupmod | 6.0.5-2016 | 6.0.9-2016 |
| pupmod-simp-rsync | 4.2.2-2016 | 4.2.3-2016 |
| pupmod-simp-rsyslog | 5.1.0-2016 | 5.1.2-2016 |
| pupmod-simp-selinux | 1.0.3-2016 | 1.0.4-2016 |
| pupmod-simp-simp | 1.2.7-2016 | 1.2.10-2016 |
| pupmod-simp-simp_elasticsearch | 3.0.1-2016 | 3.0.3-2016 |
| pupmod-simp-simp_grafana | 0.1.0-2016 | 0.1.1-2016 |
| pupmod-simp-simpcat | 5.0.1-2016 | 5.0.2-2016 |
| pupmod-simp-simplib | 1.3.1-2016 | 1.3.4-2016 |
| pupmod-simp-site | 2.0.1-2016 | 2.0.2-2016 |
| pupmod-simp-snmpd | 4.1.0-2016 | 4.1.1-2016 |
| pupmod-simp-ssh | 4.1.10-2016 | 4.1.13-2016 |
| pupmod-simp-sssd | 4.1.3-2016 | 4.1.4-2016 |
| pupmod-simp-stunnel | 4.2.7-2016 | 4.2.9-2016 |
| pupmod-simp-sudo | 4.1.2-2016 | 4.1.3-2016 |
| pupmod-simp-sudosh | 4.1.1-2016 | 4.1.2-2016 |
| pupmod-simp-svckill | 1.1.3-2016 | 1.1.4-2016 |
| pupmod-simp-sysctl | 4.2.0-2016 | 4.2.1-2016 |
| pupmod-simp-tcpwrappers | 4.1.0-2016 | 4.1.1-2016 |
| pupmod-simp-tftpboot | 4.1.2-2016 | 4.1.3-2016 |
| pupmod-simp-tpm | 0.1.0-2016 | 0.2.0-2016 |
| pupmod-simp-upstart | 4.1.2-2016 | 4.1.3-2016 |
| pupmod-simp-vnc | 4.1.0-2016 | 4.1.1-2016 |
| pupmod-simp-vsftpd | 5.0.4-2016 | 5.0.7-2016 |
| pupmod-simp-windowmanager | 4.1.2-2016 | 4.1.3-2016 |
| pupmod-simp-xinetd | 2.1.0-2016 | 2.1.1-2016 |
| pupmod-simp-xwindows | 4.1.1-2016 | 4.1.2-2016 |
| rubygem-simp-cli | 1.0.20-0.el7 | 1.0.20-0.el7.centos |
| rubygem-simp-cli-doc | 1.0.20-0.el7 | 1.0.20-0.el7.centos |
| simp | 5.2.0-0 | 5.2.1-0 |
| simp-bootstrap | 5.3.2-0 | 5.3.4-0 |
| simp-doc | 5.2.0-0 | N/A |
| simp-gpgkeys | 2.0.0-3.el7 | 2.0.0-3.el7.centos |
| simp-rsync | 5.1.0-3.el7 | 5.1.0-3.el7.centos |
| simp-rsync-clamav | 5.1.0-3.el7 | 5.1.0-3.el7.centos |
| simp-utils | 5.0.1-1 | 5.0.1-2 |
2.10. Fixed Bugs¶
2.10.1. pupmod-simp-auditd¶
- Updated to use a specific configuration parameter instead of the presence of configured syslog servers to determine whether or not to enable log forwarding
2.10.2. pupmod-simp-autofs¶
- Updated the
::autofs::map::entry
and::autofs::map::master
code to work safely with thesimp cat
module as well as properly ensuring that theautofs
service is restarted when the content of one of the map files is changed.
2.10.3. pupmod-simp-ganglia¶
- Fixed an invalid
concat
dependency for the$auth_user_file
2.10.5. pupmod-simp-network¶
- Updated to fix issues with Puppet 4
2.10.6. pupmod-simp-nfs¶
- Changed the permissions on
/etc/exports
to644
which was validated to meet existing security requirements- Vagrant was dying if it could not read this file as a regular user
2.10.7. pupmod-simp-openldap¶
- Multiple URIs in Hiera entries were not written into
ldap.conf
- The
DEREF
configuration value inldap.conf
was not populated correctly
2.10.8. pupmod-simp-pupmod¶
- Properly redirect
STDERR
inpuppetagent_cron.erb
- Fully expanded the
pupmod::ssldir
parameter so that$vardir
no longer causes issues when showing up in anauditd
configuration file - Corrected an issue where the
gem-home
parameter inpuppetserver.conf
was malformed
2.10.9. pupmod-simp-rsyslog¶
- Enabled forwarding of
journald
messages to syslog since EL 7.2 disabled this by default - Fixed an issue where rules that were no longer managed by the module were not correctly purged
2.10.10. pupmod-simp-simp¶
- Ensure that the
netlabel_tools
package is installed for thenetlabel
service - Added the Elasticsearch and Grafana GPG keys to the YUM configuration
2.10.11. pupmod-simp-simplib¶
- Fixed the
validate_net_list()
function when using regex strings against IPv6 addresses - Added support for
nss-myhostname
which fixes issues with hostname lookups on EL 7+ systems - Added a
puppet_settings
Fact that returns a Hash of all settings on the Puppet client system - Fix issues with calls to the
Service['named']
resource
2.10.12. simp-bootstrap¶
- Changed
trusted['clientcert']
totrusted['certname']
inhiera.yaml
2.10.13. simp-cli¶
- Ensure that
STDERR
is properly discarded during shell redirects
2.10.14. simp-core¶
- Ensured that
unpack_dvd
andmigrate_to_environments
properly squashed STDERR - Corrected the
pupmod-simp-mcollective
version that was being built
2.10.16. DVD¶
- Removed the first call to
fips=1
from the kickstart file since it was causing issues with some systems
2.11. New Features¶
2.11.1. pupmod-cristifalcas-journald¶
- Added an upstream
journald
management module since EL7 needs tweaking to the journal on many systems.
2.11.2. pupmod-simp-auditd¶
- Added the syslog
priority
andfacility
options toauditd::config::audisp::syslog
2.11.3. pupmod-simp-dirtycow¶
- Adds a notification message if your system is affected by the Dirty COW CVE
- Will not attempt to automatically upgrade your kernel!
2.11.4. pupmod-simp-rsyslog¶
- Enabled forwarding of
journald
logs to syslog
2.11.5. pupmod-simp-simplib¶
- Added a
puppet_settings
Fact that returns a Hash of all settings on the Puppet client system
2.11.6. pupmod-simp-tpm¶
2.11.7. simp-bootstrap¶
- Mapped NIST 800-171 and ISO/IEC 27001 into the SIMP compliance_map baseline
2.11.8. simp-doc¶
- Added TPM management documentation
- Updated the ELG stack documentation
- Another set of usability updates to the documentation, mostly around building the system from scratch
2.12. Known Bugs¶
- If you are running libvirtd, when
svckill
runs it will always attempt to kill dnsmasq unless you are deliberately trying to run the dnsmasq service. This does not actually kill the service but is, instead, an error of the startup script and causes no damage to your system.


Library: Numerics
Function
A generalized numeric operation that outputs a sequence of the differences between each adjacent pair of elements in a range
#include <numeric> namespace std { template <class InputIterator, class OutputIterator> OutputIterator adjacent_difference(InputIterator start, InputIterator finish, OutputIterator result); template <class InputIterator, class OutputIterator, class BinaryOperation> OutputIterator adjacent_difference(InputIterator start, InputIterator finish, OutputIterator result, BinaryOperation bin_op); }
adjacent_difference() fills a sequence with the differences between successive elements in a container. The result is a sequence in which the first element is equal to the first element of the sequence being processed, and the remaining elements are equal to the calculated differences between adjacent elements. For instance, applying adjacent_difference() to {1,2,3,5} produces a result of {1,1,1,2}.
By default, subtraction is used to compute the difference, but you can supply any binary operator. The binary operator is then applied to adjacent elements. For example, by supplying the plus (+) operator, the result of applying adjacent_difference() to {1,2,3,5} is the sequence {1,3,5,8}.
This algorithm performs exactly (finish-start) - 1 applications of the default operation (-) or binary_op.
// // adj_diff.cpp // #include <numeric> // for adjacent_difference #include <vector> // for vector #include <iostream> // for cout #include <functional> // for multiplies int main () { // Typedefs for convenience. typedef std::vector<long, std::allocator<long> > Vector; typedef std::ostream_iterator <Vector::value_type, char, std::char_traits<char> > os_iter; // Initialize a Vector of ints from an array. const Vector::value_type arr [] = { 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 }; Vector v (arr + 0, arr + sizeof arr / sizeof *arr); // Two vectors initialized to all zeros // for storing results. Vector diffs (v.size ()), prods (v.size ()); // Calculate difference(s) using // default operator (minus). std::adjacent_difference (v.begin (), v.end (), diffs.begin ()); // Calculate difference (s) using the times operator. std::adjacent_difference (v.begin (), v.end (), prods.begin (), std::multiplies<Vector::value_type> ()); // Create an ostream_iterator object (for convenience). os_iter osit (std::cout, " "); // Output the results. std::cout << "For the vector: " << std::endl << " "; std::copy (v.begin (), v.end (), osit); std::cout << std::endl << std::endl; std::cout << "The differences between adjacent elements" << " are: " << std::endl << " "; std::copy (diffs.begin (), diffs.end (), osit); std::cout << std::endl << std::endl; std::cout << "The products of adjacent elements are: " << std::endl << " "; std::copy (prods.begin (), prods.end (), osit); std::cout << std::endl; return 0; } Program Output: For the vector: 1 1 2 3 5 8 13 21 34 55 The differences between adjacent elements are: 1 0 1 1 2 3 5 8 13 21 The products of adjacent elements are: 1 1 2 6 15 40 104<PHONE_NUMBER>
ISO/IEC 14882:1998 -- International Standard for Information Systems -- Programming Language C++, Section 26.4.4


{% extends "annotate_base.html" %} {% load fontawesome %} {% load staticfiles %} {% fontawesome_stylesheet %} {% block scripts %} {% endblock %} {% block content %}
You will be requested to share
If you choose to use your Instagram posts,
Your Instagram account and post information will be encrypted and saved to protect your privacy.
You will be requested to upload five pictures that you took. Please share photos that people would like to share on their social media.
Please choose this option
Note that you should use photos that


JamesCFP ☕
Stuff
Where I learn!
About
Google
This is a random section.
Eventually I'll have content!


Google Code offered in: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
At this point, you've created the components of the StockWatcher project and reviewed its functional requirements and UI design. In this section, you'll build the user interface out of GWT widgets and panels.
GWT shields you from worrying too much about cross-browser incompatibilities. If you construct the interface with GWT widgets and composites, your application will work on the most recent versions of Chrome, Firefox, Internet Explorer, Opera, and Safari. However, DHTML user interfaces remain remarkably quirky; therefore, you still must test your applications thoroughly on every browser.
First, look at the Widget Gallery and select the GWT widget for each UI element.
In the Widget Gallery the widgets have a default style and so they don't look exactly as they will in the final implementation of StockWatcher. Don't worry about that now. First you'll focus on getting the widgets working. Later, you will change their appearance with CSS. This will be covered in the Applying Syles section.
GWT provides a special table widget called a FlexTable. The FlexTable widget creates cells on demand. This is just what you need for the table containing the stock data because you don't know how many stocks the user will add. A table implemented with the FlexTable widget will expand or collapse as the user adds or removes stocks.
Whenever possible, GWT defers to browsers' native user interface elements. For instance, a Button widget becomes a true HTML <button> rather than a synthetic button-like widget that's built, for example, from a
. This means that GWT buttons render appropriately in different browsers and on different client operating systems. The benefit of using native browser controls is that they are fast, accessible, and most familiar to users. Also, they can be styled with CSS.
GWT provides several widgets to create fields that users can type in:
StockWatcher users will type in a stock code which is single line of text; therefore, implement a TextBox widget.
In contrast with the Button widget, the Label widget does not map to the HTML  element, used in HTML forms. Instead it maps to a
 element that contains arbitrary text that is not interpreted as HTML. As a
 element, it is a block-level element rather than an inline element.

Last update : Oct 1, 2008 1:31:48 PM

If you're interested in taking a peek at the API reference for the GWT widgets you'll use to build the StockWatcher interface, click on the links in the table below.
| UI element | GWT implementation |
|---|---|
| a table to hold the stock data | FlexTable widget |
| two buttons, one to add stocks and one to remove them | Button widget |
| an input box to enter the stock code | TextBox widget |
| a timestamp to show the time and date of the last refresh | Label widget |
| a logo | image file referenced from HTML host page |
| a header | static HTML in HTML host page |
| colors to indicate whether the change in price was positive or negative | dynamic CSS |
In Depth: If you don't find a widget that meets the functional requirements of your application, you can create your own. For details on creating composite widgets or widgets from scratch using Java or JavaScript, see the Developer's Guide, Creating Custom Widgets.
Now that you know what widgets you'll use, you'll decide how to lay them out using GWT panels. GWT provides several types of panels to manage the layout. Panels can be nested within other panels. This is analogous to laying out your web page in HTML using nested div elements or tables. For StockWatcher, you'll use a horizontal panel nested within a vertical panel.
The two elements used to add a stock—the input box for typing in a new stock symbol and the Add button—are closely related functionally and you want keep them together visually. To lay them out side-by-side, you'll put the TextBox widget and a Button widget in a horizontal panel. In the Java code, you'll create a new instance of HorizontalPanel and name it addPanel.
You want to lay out the remaining elements vertically:
You'll do this with a vertical panel. In the Java code, you'll create a new instance of VerticalPanel and name it mainPanel.
There is one more panel you need that is not visible in the user interface: a Root panel. A Root panel is the container for the dynamic elements of your application. It is at the top of any GWT user interface hierarchy. There are two ways you can use a Root panel, either to generate the entire body of the page or to generate specific elements embedded in the body.
The Root panel works by wrapping an element in the HTML host page. By default (that is, if you don't add any placeholders in the host page) the Root panel wraps the body element. However, you can wrap any element if you name it and then, when you call the Root panel, pass the name as a parameter. You'll see how this works in the next two sections when you do it for StockWatcher.
RootPanel.get() // Default. Wraps the HTML body element. RootPanel.get("stockList") // Wraps any HTML element with an id of "stockList"
A host page can contain multiple Root panels. For example, if you're embedding multiple GWT widgets or panels into a host page, each one can be implemented independently of the others, wrapped in its own Root panel.
To get the StockWatcher application to run in the browser, you need to embed it in an HTML file, the HTML host page. The host page for the StockWatcher project, StockWatcher.html, was generated by webAppCreator. For the starter application, StockWatcher.html had an empty body element. As a result, the Root panel wrapped the entire body element. Everything displayed in the browser was dynamic, built with GWT. If your application had no static elements, you don't need to edit the HTML host page at all.
However, for StockWatcher you will use some static HTML text and an image in addition to the dynamic elements. You will embed the GWT application in the browser page using a placeholder, a
 element named stockList. This implementation strategy is especially useful for embedding GWT into an existing application.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link type="text/css" rel="stylesheet" href="StockWatcher.css"> <title>StockWatcher</title>
StockWatcher

 Your web browser must have JavaScript enabled in order for this application to display correctly.

Web Application Starter Project

 Please enter your name:

Note: HTML comments have been omitted for brevity.
Next you will construct the user interface from GWT widgets and panels.
Most of the UI is displayed as soon as StockWatcher starts up. So you'll implement them in the onModuleLoad method. In this section, you will:
You can follow this section of the tutorial step-by-step, or you can cut and paste the entire block of code from the Summary at the end.
package com.google.gwt.sample.stockwatcher.client;
public class StockWatcher implements EntryPoint {
private VerticalPanel mainPanel = new VerticalPanel();
private FlexTable stocksFlexTable = new FlexTable();
private HorizontalPanel addPanel = new HorizontalPanel();
private TextBox newSymbolTextBox = new TextBox();
private Button addStockButton = new Button("Add");
private Label lastUpdatedLabel = new Label();
/**
* Entry point method.
*/
public void onModuleLoad() {
// TODO Create table for stock data.
// TODO Assemble Add Stock panel.
// TODO Assemble Main panel.
// TODO Associate the Main panel with the HTML host page.
// TODO Move cursor focus to the input box.
}
}
package com.google.gwt.sample.stockwatcher.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
public class StockWatcher implements EntryPoint {
private VerticalPanel mainPanel = new VerticalPanel();
private FlexTable stocksFlexTable = new FlexTable();
private HorizontalPanel addPanel = new HorizontalPanel();
private TextBox newSymbolTextBox = new TextBox();
private Button addStockButton = new Button("Add");
private Label lastUpdatedLabel = new Label();
/**
* Entry point method.
*/
public void onModuleLoad() {
// TODO Create table for stock data.
// TODO Assemble Add Stock panel.
// TODO Assemble Main panel.
// TODO Associate the Main panel with the HTML host page.
// TODO Move cursor focus to the input box.
}
}
Implement the table that will hold the stock data. Set up the header row that displays when the user launches StockWatcher. To do this, use the setText method to create labels in the heading of each column: Symbol, Price, Change, Remove.
package com.google.gwt.sample.stockwatcher.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; public class StockWatcher implements EntryPoint { private VerticalPanel mainPanel = new VerticalPanel(); private FlexTable stocksFlexTable = new FlexTable(); private HorizontalPanel addPanel = new HorizontalPanel(); private TextBox newSymbolTextBox = new TextBox(); private Button addStockButton = new Button("Add"); private Label lastUpdatedLabel = new Label(); /** * Entry point method. */ public void onModuleLoad() { // Create table for stock data. stocksFlexTable.setText(0, 0, "Symbol"); stocksFlexTable.setText(0, 1, "Price"); stocksFlexTable.setText(0, 2, "Change"); stocksFlexTable.setText(0, 3, "Remove"); // TODO Assemble Add Stock panel. // TODO Assemble Main panel. // TODO Associate the Main panel with the HTML host page. // TODO Move cursor focus to the input box. } }
To lay out the widgets, you'll assemble two panels, the Add Stock panel and the Main panel. First assemble the Add Stock panel, a horizontal panel that wraps the input box and the Add button. Then assemble the Main panel, a vertical panel that specifies the layout of the stock list table, the Add Stock panel, and the timestamp.
package com.google.gwt.sample.stockwatcher.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; public class StockWatcher implements EntryPoint { private VerticalPanel mainPanel = new VerticalPanel(); private FlexTable stocksFlexTable = new FlexTable(); private HorizontalPanel addPanel = new HorizontalPanel(); private TextBox newSymbolTextBox = new TextBox(); private Button addStockButton = new Button("Add"); private Label lastUpdatedLabel = new Label(); /** * Entry point method. */ public void onModuleLoad() { // Create table for stock data. stocksFlexTable.setText(0, 0, "Symbol"); stocksFlexTable.setText(0, 1, "Price"); stocksFlexTable.setText(0, 2, "Change"); stocksFlexTable.setText(0, 3, "Remove"); // Assemble Add Stock panel. addPanel.add(newSymbolTextBox); addPanel.add(addStockButton); // Assemble Main panel. mainPanel.add(stocksFlexTable); mainPanel.add(addPanel); mainPanel.add(lastUpdatedLabel); // TODO Associate the Main panel with the HTML host page. // TODO Move cursor focus to the input box. } }
In order for any GWT widget or panel to be embedded in the HTML host page, it must be contained within a Root panel. Associate the Root panel with Vertical panel, mainPanel. The Root panel wraps the HTML element in StockWatcher's host page that has an id of "stocklist". In this case, it is a
 element.
package com.google.gwt.sample.stockwatcher.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; public class StockWatcher implements EntryPoint { private VerticalPanel mainPanel = new VerticalPanel(); private FlexTable stocksFlexTable = new FlexTable(); private HorizontalPanel addPanel = new HorizontalPanel(); private TextBox newSymbolTextBox = new TextBox(); private Button addStockButton = new Button("Add"); private Label lastUpdatedLabel = new Label(); /** * Entry point method. */ public void onModuleLoad() { // Create table for stock data. stocksFlexTable.setText(0, 0, "Symbol"); stocksFlexTable.setText(0, 1, "Price"); stocksFlexTable.setText(0, 2, "Change"); stocksFlexTable.setText(0, 3, "Remove"); // Assemble Add Stock panel. addPanel.add(newSymbolTextBox); addPanel.add(addStockButton); // Assemble Main panel. mainPanel.add(stocksFlexTable); mainPanel.add(addPanel); mainPanel.add(lastUpdatedLabel); // Associate the Main panel with the HTML host page. RootPanel.get("stockList").add(mainPanel); // TODO Move cursor focus to the input box. } }
import com.google.gwt.user.client.ui.RootPanel;
Finally, move the cursor focus to the input box so, when StockWatcher loads, the user can begin adding stocks.
package com.google.gwt.sample.stockwatcher.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; public class StockWatcher implements EntryPoint { private VerticalPanel mainPanel = new VerticalPanel(); private FlexTable stocksFlexTable = new FlexTable(); private HorizontalPanel addPanel = new HorizontalPanel(); private TextBox newSymbolTextBox = new TextBox(); private Button addStockButton = new Button("Add"); private Label lastUpdatedLabel = new Label(); /** * Entry point method. */ public void onModuleLoad() { // Create table for stock data. stocksFlexTable.setText(0, 0, "Symbol"); stocksFlexTable.setText(0, 1, "Price"); stocksFlexTable.setText(0, 2, "Change"); stocksFlexTable.setText(0, 3, "Remove"); // Assemble Add Stock panel. addPanel.add(newSymbolTextBox); addPanel.add(addStockButton); // Assemble Main panel. mainPanel.add(stocksFlexTable); mainPanel.add(addPanel); mainPanel.add(lastUpdatedLabel); // Associate the Main panel with the HTML host page. RootPanel.get("stockList").add(mainPanel); // Move cursor focus to the input box. newSymbolTextBox.setFocus(true); } }
Here's what you've done to this point.
package com.google.gwt.sample.stockwatcher.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; public class StockWatcher implements EntryPoint { private VerticalPanel mainPanel = new VerticalPanel(); private FlexTable stocksFlexTable = new FlexTable(); private HorizontalPanel addPanel = new HorizontalPanel(); private TextBox newSymbolTextBox = new TextBox(); private Button addStockButton = new Button("Add"); private Label lastUpdatedLabel = new Label(); /** * Entry point method. */ public void onModuleLoad() { // Create table for stock data. stocksFlexTable.setText(0, 0, "Symbol"); stocksFlexTable.setText(0, 1, "Price"); stocksFlexTable.setText(0, 2, "Change"); stocksFlexTable.setText(0, 3, "Remove"); // Assemble Add Stock panel. addPanel.add(newSymbolTextBox); addPanel.add(addStockButton); // Assemble Main panel. mainPanel.add(stocksFlexTable); mainPanel.add(addPanel); mainPanel.add(lastUpdatedLabel); // Associate the Main panel with the HTML host page. RootPanel.get("stockList").add(mainPanel); // Move cursor focus to the input box. newSymbolTextBox.setFocus(true); } }
One benefit of using GWT in your AJAX application development is that you can see the effects of your code changes as soon as you refresh the browser running development mode. So that you can see your changes whether you are developing or debugging, in Eclipse, run StockWatcher in debug mode. Then you'll be able to switch between Java and Debug perspectives without having to relaunch StockWatcher.
StockWatcher.java
Run > Debug As > Web Application
ant devmode
You do not always need to relaunch your application in development mode after modifying your source code. Instead, just click the browser's Refresh button after saving your changes, and the code server will automatically recompile your application and open the new version.
Best Practices: You may notice that your changes take effect sometimes even if you do not refresh development mode. This behavior is a result of the way development mode interacts with the compiled code, but it is not always reliable. Specifically, it happens only when you make minor changes to existing functions. To ensure your changes are included, make it a habit to always refresh the browser after making changes.
At this point you've built the basic UI components of StockWatcher by implementing GWT widgets and panels. The widgets don't respond to any input yet.
Now you're ready to code event handling on the client. You'll wire up the widgets to listen for events and write the code that responds to those events.


title = "Page not found (404)" url = "/404" layout = "default" hidden = "0" robot_index = "index" robot_follow = "follow" child_of = "mey_no_parent" hide_crumb = "0" remove_crumb_trail = "0" crumb_disabled = "0" ==
{{ 'We\'re very sorry, but the page you requested :start cannot be found:end here.'|_({start: '', end: ''}) }}
{{ 'Try returning to where you started with this compass.'|_ }}
{{ 'Error code: :error_code'|_({ error_code: 404 }) }}


This example shows the accessibility features of Telerik TabStrip for ASP.NET MVC.
With Url(...) method you can post selected index to the server. Then you need to set selected index to SelectedIndex(...) method.
Telerik TabStrip for ASP.NET MVC is level A accessible (in compliance with the W3C Web Accessibility Guidelines 2.0).


Feb 03, 2020
Product Service System Poster: YouTube
A poster describing how YouTube's PSS has changed with Premium.
This is an archived page. Find recent projects
on my website


Record-breaking year at Les Landes
JERSEY Race Club broke all sorts of records in what turned out to be a stellar year, although financial concerns still remain with regards to attracting sponsorship to prop up one of the Island’s top spectator sports.
Modern day records were set in the 2019 season for the amount of overall runners, runners per meet and runners per race, with profit taken from tote betting rising by 39.5%.
President Mark Johnson will present his report at the Race Club’s AGM next month and the majority of the news is good news. However, he said sponsorship is still a problem – something that has also struck the UK racing industry.
He explained: ‘It has been great, the tote money has been great, profit was £25,400, with £17,000 on Ladies Day being our biggest tote turnover ever.
‘There were 316 runners last year, with the previous high being 295 in 2016.
‘It has been really positive, we have had a good year and there is a feel-good factor back around racing in Jersey.
‘But to balance that out we still have concerns over sponsorship but it isn’t just us, it is in the UK too.
‘Six races went un-sponsored last year, four were only partly sponsored and that gave us a shortfall of £23,750, which nullifies the tote money in one hit.
‘It is a struggle so we want people to get the word out, but it is tough and that is shown in the UK.’
JRC was getting around 2,000 spectators to meets last season, with visitor and tourist numbers coming to Les Landes both up.
Over 30 jockeys rode on the cards and it was helped by a feature being screened in Jersey and on ITV Racing’s main programme.
Jersey has also garnered praise from top riders following extensive work to put in new hurdles.
Johnson added: ‘We had Sam Twiston-Davies over and Brian Hughes who said the hurdles were among the best they had raced over.
‘A total of 56 runners contested the nine hurdle races, with no horses falling and no horses unseating riders.
‘There was a real positive vibe at the racecourse and it was great to hear people talk positively about going racing at Les Landes around the Island, in the UK, and on the plans in between.’
Prize money for four big races in 2020 – which will again feature nine meetings, including a Liberation 75 event – will increase to £4,000, up from £3,500.


Are you sure you want to transfer the ownership of {{transferModal.organization.name}} to {{transferModal.transferTo.name}}?
This action can't be undone by yourself.


Current IT professional as a Help Desk Analyst. I Have been in the IT/Development industry for 5 years. My specializations are in site optimization and customization as well as software development using .Net Framework and Angular.. I live in the philadelphia Metro area, near West Chester and King Of Prussia. Graduate from Community College with a degree ephasis on Development. Conatct me to learn more or for a quote.


Dear {{ user.username }},
Attached is the archive of your posts that you requested.
Sincerely,
The ShayBlog Team


[viewBag] title = "Child Two" url = "/subpages/child-two" layout = "withSidebar" is_hidden = 0 navigation_hidden = 0 ==
This is a sample child page for the Parent page item SubPages.
The sidebar menu is automatically generated when creating a menu item with the same name as the parent page.
Since this page is called 'SubPages' we create a Menu item named "SubPages" as well.
Then set the menu item type to a StaticPage, and ensure "Allow nested items" and "Replace this item with its generated children" are selected.
The Sidebar Menu should then be automatically generated when visiting any of the child pages.


The Responsive Caption
This is the product that you all have been waiting for!
Customize this slider with just a little HTML and CSS to your very needs. Give each slider some captions to transport your message.
All in all it works on every browser (including IE6 / 7 / 8) and on iOS and Android devices!
SUPPORTS ANIMATED CAPTIONS, VIDEO & IFRAME, SINGLE PAGE MULTI-USE
GORGEOUS ANIMATED TIMERS WITH HIGH CUSTOMIZABLE OPTIONS


General Election: Lib Dems promise a £35bn NHS boost - by raising taxes a penny
The added tax will deliver £7 billion a year says health spokeswoman Luciana Berger - and the Liberal Democrats will spend it all on the NHS and social care, should they get into power
by Mirror.co.ukLiberal Democrats say they will hand the NHS a £35 billion boost by raising income tax a penny.
The income tax increase would deliver £7 billion a year and be ring-fenced for use in the health service and social care, the party said.
The money, delivered over five years, would complement party plans for a £10 billion capital fund to upgrade equipment, ambulances, hospitals and other NHS buildings, the party's health spokeswoman Luciana Berger said.
Ms Berger pledged to tackle staffing shortages in the NHS by retaining free movement of labour, reinstating nursing bursaries and setting up a national workforce strategy to match training places to future needs.
The party also said it would end the current shortfall of GPs by 2025, if they gain power.
Ms Berger said: "The NHS is struggling to cope with severe staff shortages, chronic underfunding and crumbling hospital buildings.
"All of these problems would be made much worse by a Tory or Labour Brexit that would end free movement and make it harder to attract nurses and doctors from the EU.
"The Liberal Democrats will build a brighter future by stopping Brexit, and we will put a penny on income tax to raise an extra £35 billion for the NHS and social care.
"We are the only party with a credible plan to protect the NHS, by tackling the staffing crisis, investing in mental health services, social care, public health and and making our NHS buildings fit for the 21st century."
The 1p rise would apply to the basic, higher and additional rates of income tax, the party said.
Of the £35 billion, £32.2 billion would be spent in England, £1.8 billion in Wales and £1 billion in Northern Ireland.
The measure would not apply to Scotland as income tax policy is devolved.


~/$ mkdir workshop
~/$ cd workshop/
~/workshop$
~/workshop$ composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [joomla/workshop]:
Description []:
Author [joomlax<EMAIL_ADDRESS>n to skip]:
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []:
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
Search for a package: joomla-projects/jorobo
Enter the version constraint to require (or leave blank to use the latest version):
Using version ^0.7.0 for joomla-projects/jorobo
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]?
Search for a package:
{
"name": "joomla/workshop",
"require": {
"joomla-projects/jorobo": "^0.7.0"
},
"authors": [
{
"name": "joomlax",
"email"<EMAIL_ADDRESS>}
]
}
Do you confirm generation [yes]?
~/workshop$
~/workshop$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 30 installs, 0 updates, 0 removals
- Installing joomla/uri (1.1.1): Loading from cache
- Installing ircmaxell/password-compat (v1.0.4): Loading from cache
- Installing symfony/polyfill-php55 (v1.6.0): Loading from cache
- Installing joomla/string (1.4.1): Loading from cache
- Installing joomla/utilities (1.4.1): Loading from cache
- Installing joomla/compat (1.2.0): Loading from cache
- Installing joomla/registry (1.5.2): Loading from cache
- Installing composer/ca-bundle (1.0.8): Loading from cache
- Installing joomla/http (1.3.0): Loading from cache
- Installing joomla/github (1.5.3): Loading from cache
- Installing symfony/process (v3.3.10): Loading from cache
- Installing symfony/finder (v3.3.10): Loading from cache
- Installing symfony/filesystem (v3.3.10): Loading from cache
- Installing symfony/event-dispatcher (v3.3.10): Loading from cache
- Installing psr/log (1.0.2): Loading from cache
- Installing symfony/debug (v3.3.10): Loading from cache
- Installing symfony/polyfill-mbstring (v1.6.0): Loading from cache
- Installing symfony/console (v3.3.10): Loading from cache
- Installing psr/container (1.0.0): Loading from cache
- Installing container-interop/container-interop (1.2.0): Loading from cache
- Installing league/container (2.4.1): Loading from cache
- Installing consolidation/output-formatters (3.1.12): Loading from cache
- Installing consolidation/log (1.0.3): Loading from cache
- Installing symfony/yaml (v3.3.10): Loading from cache
- Installing dflydev/dot-access-data (v1.1.0): Loading from cache
- Installing grasmash/yaml-expander (1.2.0): Loading from cache
- Installing consolidation/config (1.0.6): Loading from cache
- Installing consolidation/annotated-command (2.8.1): Loading from cache
- Installing consolidation/robo (1.1.4): Loading from cache
- Installing joomla-projects/jorobo (0.7.0): Loading from cache
symfony/event-dispatcher suggests installing symfony/dependency-injection ()
symfony/event-dispatcher suggests installing symfony/http-kernel ()
consolidation/robo suggests installing pear/archive_tar (Allows tar archives to be created and extracted in taskPack and taskExtract, respectively.)
consolidation/robo suggests installing henrikbjorn/lurker (For monitoring filesystem changes in taskWatch)
consolidation/robo suggests installing patchwork/jsqueeze (For minifying JS files in taskMinify)
consolidation/robo suggests installing natxet/CssMin (For minifying CSS files in taskMinify)
Writing lock file
Generating autoload files
~/workshop$ ls
composer.json composer.lock vendor
~/workshop$
~/workshop$ mkdir source
~/workshop$ cd source
~/workshop/source$ mkdir administrator
~/workshop/source$ mkdir administrator/components
~/workshop/source$ mkdir administrator/language
~/workshop/source$ mkdir administrator/language/en-GB
~/workshop/source$ mkdir administrator/components/com_workshop
~/workshop/source$ mkdir administrator/components/com_workshop/sql
~/workshop/source$ mkdir administrator/components/com_workshop/sql/install
~/workshop/source$ mkdir administrator/components/com_workshop/sql/install/mysql
~/workshop/source$ mkdir administrator/components/com_workshop/sql/updates
~/workshop/source$ mkdir administrator/components/com_workshop/sql/updates/mysql
~/workshop/source$ mkdir components
~/workshop/source$ mkdir components/com_workshop
~/workshop/source$ mkdir language
~/workshop/source$ mkdir language/en-GB
~/workshop/source$ mkdir media
~/workshop/source$ mkdir media/com_workshop
~/workshop/source$
source/administrator/components/com_workshop/workshop.xml
<?xml version="1.0" encoding="utf-8" ?>
<extension type="component" version="3.5" method="upgrade">
<name>COM_WORKSHOP</name>
<creationDate>##DATE##</creationDate>
<author>[AUTHOR]</author>
<authorEmail>[AUTHOR_EMAIL]</authorEmail>
<authorUrl>[AUTHOR_URL]</authorUrl>
<copyright>(C) ##YEAR## - [COPYRIGHT]</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<version>##VERSION##</version>
<description>COM_WORKSHOP_XML_DESCRIPTION</description>
<scriptfile>script.php</scriptfile>
<!-- Runs on install -->
<install>
<sql>
<file driver="mysql" charset="utf8">sql/install/mysql/install.mysql.sql</file>
</sql>
</install>
<!-- Runs on uninstall -->
<uninstall>
<sql>
<file driver="mysql" charset="utf8">sql/install/mysql/uninstall.mysql.sql</file>
</sql>
</uninstall>
<!-- Runs on update -->
<update>
<schemas>
<schemapath type="mysql">sql/updates/mysql</schemapath>
</schemas>
</update>
<!-- Front-end files -->
<files folder="components/com_workshop">
##FRONTEND_COMPONENT_FILES##
</files>
<languages folder="language">
##FRONTEND_LANGUAGE_FILES##
</languages>
<!-- Back-end files -->
<administration>
<!-- Menu entries -->
<menu view="workshop">COM_WORKSHOP</menu>
<submenu>
<!--
Note that all & must be escaped to & for the file to be valid
XML and be parsed by the installer
-->
<menu link="option=com_workshop">COM_WORKSHOP</menu>
</submenu>
<!-- Core files -->
<files folder="administrator/components/com_workshop">
##BACKEND_COMPONENT_FILES##
</files>
<languages folder="administrator/language">
##BACKEND_LANGUAGE_FILES##
</languages>
</administration>
<!-- Update servers -->
<updateservers>
<server type="extension" priority="1" name="[PROJECT_NAME]">https://www.example.com/workshop.xml</server>
</updateservers>
</extension>
source/administrator/components/com_workshop/skript.php
<?php
defined('_JEXEC') or die;
/**
* Workshop script file.
*
* @package A package name
* @since 1.0
*/
class Com_WorkshopInstallerScript
{
/**
* Constructor
*
* @param JAdapterInstance $adapter The object responsible for running this script
*/
public function __construct(JAdapterInstance $adapter) {}
/**
* Called before any type of action
*
* @param string $route Which action is happening (install|uninstall|discover_install|update)
* @param JAdapterInstance $adapter The object responsible for running this script
*
* @return boolean True on success
*/
public function preflight($route, JAdapterInstance $adapter) {}
/**
* Called after any type of action
*
* @param string $route Which action is happening (install|uninstall|discover_install|update)
* @param JAdapterInstance $adapter The object responsible for running this script
*
* @return boolean True on success
*/
public function postflight($route, JAdapterInstance $adapter) {}
/**
* Called on installation
*
* @param JAdapterInstance $adapter The object responsible for running this script
*
* @return boolean True on success
*/
public function install(JAdapterInstance $adapter) {}
/**
* Called on update
*
* @param JAdapterInstance $adapter The object responsible for running this script
*
* @return boolean True on success
*/
public function update(JAdapterInstance $adapter) {}
/**
* Called on uninstallation
*
* @param JAdapterInstance $adapter The object responsible for running this script
*/
public function uninstall(JAdapterInstance $adapter) {}
}
source/administrator/components/com_workshop/sql/install/mysql/install.mysql.sql
CREATE TABLE IF NOT EXISTS `#__workshop` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`catid` int(11) NOT NULL DEFAULT 0,
`title` varchar(250) NOT NULL DEFAULT '',
`alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '',
`description` text NOT NULL,
`hits` int(11) NOT NULL DEFAULT 0,
`state` tinyint(1) NOT NULL DEFAULT 0,
`checked_out` int(11) NOT NULL DEFAULT 0,
`checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`ordering` int(11) NOT NULL DEFAULT 0,
`access` int(11) NOT NULL DEFAULT 1,
`params` text NOT NULL,
`language` char(7) NOT NULL DEFAULT '',
`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`created_by` int(10) unsigned NOT NULL DEFAULT 0,
`created_by_alias` varchar(255) NOT NULL DEFAULT '',
`modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified_by` int(10) unsigned NOT NULL DEFAULT 0,
`metakey` text NOT NULL,
`metadesc` text NOT NULL,
`metadata` text NOT NULL,
`featured` tinyint(3) unsigned NOT NULL DEFAULT 0 COMMENT 'Set if link is featured.',
`xreference` varchar(50) NOT NULL COMMENT 'A reference to enable linkages to external data sets.',
`publish_up` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`publish_down` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`version` int(10) unsigned NOT NULL DEFAULT 1,
`images` text NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_state` (`state`),
KEY `idx_catid` (`catid`),
KEY `idx_createdby` (`created_by`),
KEY `idx_featured_catid` (`featured`,`catid`),
KEY `idx_language` (`language`),
KEY `idx_xreference` (`xreference`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
source/administrator/components/com_workshop/sql/install/mysql/uninstall.mysql.sql
DROP TABLE IF EXISTS `#__workshop`;
source/administrator/components/com_workshop/sql/updates/mysql/1.0.0.sql
# Example for update ...
ALTER TABLE `#__workshop` ENGINE=InnoDB;
source/administrator/components/com_workshop/workshop.php
<?php
defined('_JEXEC') or die;
echo "This simple task works. Now we can go on with complicated tasks.";
source/administrator/language/en-GB/en-GB.com_workshop.ini
;
; [PROJECT_NAME] language file
;
COM_WORKSHOP="[PROJECT_NAME]"
COM_WORKSHOP_CONFIGURATION="[PROJECT_NAME] Options"
source/administrator/language/en-GB/en-GB.com_workshop.sys.ini
;
; [PROJECT_NAME] language file
;
COM_WORKSHOP="[PROJECT_NAME]"
COM_WORKSHOP_XML_DESCRIPTION="[PROJECT_NAME]"
source/components/com_workshop/workshop.php
<?php
defined('_JEXEC') or die;
echo "Great! The front end also works.";
Copy jorobo.ini and RoboFile.php
~/workshop$ cp vendor/joomla-projects/jorobo/jorobo.ini .
~/workshop$ cp vendor/joomla-projects/jorobo/jorobo.dist.ini ./
~/workshop$ cp vendor/joomla-projects/jorobo/RoboFile.php .
~/workshop$ ls
composer.json composer.lock jorobo.ini jorobo.dist.ini RoboFile.php source vendor
~/workshop$
Add jorobo.ini
to .gitignore
Edit jorobo.ini
extension = workshop
version = 0.0.1
source = source
target = zip
[github]
remote = origin
branch = develop
token =
owner = joomla-projects
repository = weblinks
changelog_source = commits
[ftp]
host =
port = 21
user =
password =
ssl = false
target = /
[header]
files = php,js
exclude =
text = "
/**
* @package [PACKAGE_NAME]
*
* @author [AUTHOR] <[AUTHOR_EMAIL]>
* @copyright Copyright (C) ##YEAR## [COPYRIGHT]
* @license GNU General Public License version 2 or later; see LICENSE.txt
* @link [AUTHOR_URL]
*/
"
vendor/bin/robo map (todo do not uninstall)
~/workshop$ vendor/bin/robo map /var/www/html/weblinks/tests/joomla
[Filesystem\FilesystemStack] symlink ["/workshop/source/media/com_workshop","/var/www/html/joomla/media/com_workshop"]
[Filesystem\FilesystemStack] symlink ["/workshop/source/components/com_workshop","/var/www/html/joomla/components/com_workshop"]
[Filesystem\FilesystemStack] symlink ["/workshop/source/modules/mod_workshop","/var/www/html/joomla/modules/mod_workshop"]
[Filesystem\FilesystemStack] symlink ["/workshop/source/administrator/components/com_workshop","/var/www/html/joomla/administrator/components/com_workshop"]
[Filesystem\FilesystemStack] symlink ["/workshop/source/plugins/content/workshop","/var/www/html/joomla/plugins/content/workshop"]
~/workshop$
Joomla! Discover
http://localhost/joomla/administrator/index.php?option=com_installer&view=discover
Backend
http://localhost/joomla/administrator/index.php?option=com_workshop
Frontend
http://localhost/joomla/index.php?option=com_workshop
Database
http://localhost/joomla/index.php?option=com_workshop
You've already used vendor/bin/robo map
~/workshop$ vendor/bin/robo header
~/workshop$
This is magical! Now each file in your project has the header that you entered in jorobo.ini.
~/workshop$ vendor/bin/robo build
[Filesystem\CleanDir] Cleaned /workshop/dist/workshop-0.0.1
[Filesystem\FilesystemStack] mkdir ["/workshop/dist/workshop-0.0.1/administrator/components/com_workshop"]
[Filesystem\FilesystemStack] mkdir ["/workshop/dist/workshop-0.0.1/components/com_workshop"]
[Filesystem\FilesystemStack] _copy ["/workshop/source/administrator/components/com_workshop/script.php","/workshop/dist/workshop-0.0.1/administrator/components/com_workshop/script.php"]
[Filesystem\FilesystemStack] _copy ["/workshop/source/administrator/components/com_workshop/workshop.xml","/workshop/dist/workshop-0.0.1/administrator/components/com_workshop/workshop.xml"]
[Filesystem\FilesystemStack] _copy ["/workshop/source/administrator/components/com_workshop/workshop.php","/workshop/dist/workshop-0.0.1/administrator/components/com_workshop/workshop.php"]
[Filesystem\FilesystemStack] _copy ["/workshop/source/components/com_workshop/workshop.php","/workshop/dist/workshop-0.0.1/components/com_workshop/workshop.php"]
[Filesystem\FilesystemStack] mkdir ["/workshop/dist/workshop-0.0.1/media/com_workshop"]
[Filesystem\FilesystemStack] mkdir ["/workshop/dist/workshop-0.0.1/administrator/language"]
[Filesystem\FilesystemStack] mkdir ["/workshop/dist/workshop-0.0.1/administrator/language/en-GB"]
[Filesystem\FilesystemStack] _copy ["/workshop/source/administrator/language/en-GB/en-GB.com_workshop.ini","/workshop/dist/workshop-0.0.1/administrator/language/en-GB/en-GB.com_workshop.ini"]
[Filesystem\FilesystemStack] _copy ["/workshop/source/administrator/language/en-GB/en-GB.com_workshop.sys.ini","/workshop/dist/workshop-0.0.1/administrator/language/en-GB/en-GB.com_workshop.sys.ini"]
[File\Replace] /workshop/dist/workshop-0.0.1/administrator/components/com_workshop/workshop.xml updated. 3 items replaced
[File\Replace] /workshop/dist/workshop-0.0.1/administrator/components/com_workshop/script.php unchanged. 0 items replaced
[File\Replace] /workshop/dist/workshop-0.0.1/administrator/components/com_workshop/workshop.xml updated. 1 items replaced
[File\Replace] /workshop/dist/workshop-0.0.1/administrator/components/com_workshop/workshop.xml updated. 1 items replaced
[File\Replace] /workshop/dist/workshop-0.0.1/administrator/components/com_workshop/workshop.xml updated. 1 items replaced
[File\Replace] /workshop/dist/workshop-0.0.1/administrator/components/com_workshop/workshop.xml updated. 1 items replaced
[File\Replace] /workshop/dist/workshop-0.0.1/administrator/components/com_workshop/workshop.xml unchanged. 0 items replaced
[Filesystem\FilesystemStack] _copy ["/workshop/dist/workshop-0.0.1/administrator/components/com_workshop/workshop.xml","/workshop/dist/workshop-0.0.1/workshop.xml"]
[Filesystem\FilesystemStack] _copy ["/workshop/dist/workshop-0.0.1/administrator/components/com_workshop/script.php","/workshop/dist/workshop-0.0.1/script.php"]
[Filesystem\FilesystemStack] _copy ["/workshop/dist/workshop-0.0.1/administrator/components/com_workshop/script.php","/workshop/dist/workshop-0.0.1/script.php"]
[File\Replace] /workshop/dist/workshop-0.0.1/script.php unchanged. 0 items replaced
[File\Replace] /workshop/dist/workshop-0.0.1/components/com_workshop/workshop.php unchanged. 0 items replaced
[File\Replace] /workshop/dist/workshop-0.0.1/administrator/components/com_workshop/script.php unchanged. 0 items replaced
[File\Replace] /workshop/dist/workshop-0.0.1/administrator/components/com_workshop/workshop.php unchanged. 0 items replaced
[Filesystem\FilesystemStack] symlink ["/workshop/dist/workshop-0.0.1","/workshop/dist/current"]
~/workshop$
Look at your work directory! Here you will find a subfolder called dist and in this is among other things an installable zip file.
By the way: The command
vendor/bin/robo build --dev
~/workshop$ vendor/bin/robo bump
~/workshop$
Now the string __DEPLOY_VERSION__ is exchanged in each file with the version number you entered in the file jorobo.ini.
File
~/workshop$ mkdir source
~/workshop$ cd source
~/workshop/source$ mkdir modules
~/workshop/source$ mkdir modules/mod_workshop
~/workshop/source$
File
~/workshop$ mkdir source
~/workshop$ cd source
~/workshop/source$ mkdir plugins
~/workshop/source$ mkdir plugin/content
~/workshop/source$ mkdir plugin/content/workshop
~/workshop/source$
File
~/workshop$ mkdir source
~/workshop$ cd source
~/workshop/source$ mkdir administrator/manifest
~/workshop/source$ mkdir administrator/manifest/packages
~/workshop/source$
File
~/workshop$ mkdir source


*** User 2017-05-02 17:29:36.411 ***
17:29:36.411 [info] Disabling blocking sync...
*** User 2017-05-02 17:29:36.416 ***
17:29:36.416 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-1@MacBook-Pro-de-Anne-France'
*** User 2017-05-02 17:29:37.941 ***
17:29:37.941 [info] Enabling membership...
*** User 2017-05-02 17:29:37.942 ***
17:29:37.942 [info] Disabling blocking sync...
*** User 2017-05-02 17:29:37.946 ***
17:29:37.946 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-2@MacBook-Pro-de-Anne-France'
*** User 2017-05-02 17:29:39.414 ***
17:29:39.414 [info] Enabling membership...
*** User 2017-05-02 17:29:39.416 ***
17:29:39.416 [info] Disabling blocking sync...
*** User 2017-05-02 17:29:39.420 ***
17:29:39.420 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-3@MacBook-Pro-de-Anne-France'
*** User 2017-05-02 17:29:39.633 ***
Joining node: 'node-3@MacBook-Pro-de-Anne-France' to 'runner@MacBook-Pro-de-Anne-France' at port 55224
*** User 2017-05-02 17:29:39.634 ***
Joining issued: 'node-3@MacBook-Pro-de-Anne-France' to 'runner@MacBook-Pro-de-Anne-France' at port 55224
*** User 2017-05-02 17:29:39.634 ***
Joining node: 'node-2@MacBook-Pro-de-Anne-France' to 'runner@MacBook-Pro-de-Anne-France' at port 55208
*** User 2017-05-02 17:29:39.634 ***
Joining issued: 'node-2@MacBook-Pro-de-Anne-France' to 'runner@MacBook-Pro-de-Anne-France' at port 55208
*** User 2017-05-02 17:29:39.635 ***
Joining node: 'node-1@MacBook-Pro-de-Anne-France' to 'runner@MacBook-Pro-de-Anne-France' at port 55195
*** User 2017-05-02 17:29:39.635 ***
Joining issued: 'node-1@MacBook-Pro-de-Anne-France' to 'runner@MacBook-Pro-de-Anne-France' at port 55195
*** User 2017-05-02 17:29:39.697 ***
Waiting for join to complete with manager: partisan_default_peer_service_manager
*** User 2017-05-02 17:29:39.698 ***
Finished.
*** CT 2017-05-02 17:29:39.699 *** COVER INFO
Adding nodes to cover test: ['runner@MacBook-Pro-de-Anne-France']
*** CT 2017-05-02 17:29:39.708 *** COVER INFO
Successfully added nodes to cover test: []
*** User 2017-05-02 17:29:39.743 ***
Tokens: [{select,1,select},
{var,1,title},
{',',1},
{var,1,rating},
{from,1,from},
{var,1,classics},
{where,1,where},
{var,1,year},
{comparator,1,'=>'},
{integer,1,1960},
{intersection,1,'and'},
{var,1,year},
{comparator,1,'<='},
{integer,1,1965}]
*** User 2017-05-02 17:29:39.743 ***
Parse Tree: {query,
{select,[title,rating]},
{from,classics},
{where,
{intersection,
{predicate,{var,year},'=>',1960},
{predicate,{var,year},'<=',1965}}}}
*** User 2017-05-02 17:29:39.845 ***
Tokens: [{select,1,select},
{var,1,title},
{from,1,from},
{var,1,filtered},
{where,1,where},
{var,1,rating},
{comparator,1,'=>'},
{integer,1,80}]
*** User 2017-05-02 17:29:39.845 ***
Parse Tree: {query,{select,[title]},
{from,filtered},
{where,{predicate,{var,rating},'=>',80}}}
*** User 2017-05-02 17:29:39.947 ***
Case finished: sql_combined_view_test
*** User 2017-05-02 17:29:46.990 ***
17:29:46.990 [info] Application lasp exited with reason: stopped
*** User 2017-05-02 17:29:46.991 ***
17:29:46.991 [info] Application partisan exited with reason: stopped
=== Ended at 2017-05-02 17:29:47
=== successfully completed test case
=== Returned value: ok
Test run history
| Top level test index


| Directory | Changes | Lines of Code | Lines per Change |
|---|---|---|---|
| Totals | 23 (100.0%) | 2 (100.0%) | 0.0 |
| www/ | 5 (21.7%) | 2 (100.0%) | 0.4 |
| src/Utils/MiscUI/ | 2 (8.7%) | 0 (0.0%) | 0.0 |
| contrib/diff-scripts/ | 8 (34.8%) | 0 (0.0%) | 0.0 |
| contrib/choco/ | 6 (26.1%) | 0 (0.0%) | 0.0 |
| contrib/ | 2 (8.7%) | 0 (0.0%) | 0.0 |
www: update dependencies.
0 lines of code changed in 4 files:
Variable cannot be less than zero so don't check about that.
0 lines of code changed in 2 files:
Remove trailing whitespace.
0 lines of code changed in 6 files:
diff scripts: minor lint tweaks.
0 lines of code changed in 8 files:
www: update dependencies.
2 lines of code changed in 1 file:
Update coverity.
0 lines of code changed in 2 files:


--- layout: post title: Exchange Tests categories: [] tags: [] status: publish type: post published: true meta: _publicize_pending: '1' original_post_id: '83' _wp_old_slug: '83' _elasticsearch_indexed_on: '2012-11-19 12:09:33' ---
Get-TransportServer | Test-SmtpConnectivity -MonitoringContext:$true


encoding: utf-8
The field names of any optional-field MUST NOT be identical to any field name specified elsewhere in this standard.
optional-field = field-name “:” unstructured CRLF
Required Files
- mail/fields/unstructured_field
Classes and Modules
- MODULE Mail


new Provider(opts, schema)
Constructor for the data provider base class. This class cannot be used directly.
Options
connStr
{String}, connection string.
Parameters:
| Name | Type | Argument | Description |
|---|---|---|---|
opts |
object | Additional options. The only required option is |
|
schema |
object |
<optional> |
Defines the database schema such as fields, indexes, types and structure. |
- Source:
Methods
-
<protected> _do()
-
- Source:
-
<virtual> _get()
-
- Source:
-
<protected> _getId()
-
- Source:
-
<protected> _getIdKey()
-
- Source:
-
<virtual> _insert()
-
- Source:
-
<virtual> _select()
-
- Source:
-
<protected> _setId()
-
- Source:
-
<virtual> _update()
-
- Source:
-
<virtual> _upsert()
-
- Source:
-
delete(context, item|identity, callback) → {null}
-
Removes the specified item from the data collection. If an item with the specified identity is not found an error is returned.
Parameters:
Name Type Argument Description context
Object <optional>
provides context for the current execution. Usually this is information about the user making the call. Although this parameter is optional, it might be required by some interceptors, such as authorization.
item|identity
Object | String | Number the item or the identity of an item to be deleted.
callback
Provider~actionCallback The callback that handles the result of this action.
- Source:
Returns:
- Type
- null
-
dispose(callback) → {null}
-
Releases its database connection, clears current state and any cached data.
This is utility method intended mainly for data provider implementers.
Parameters:
Name Type Description callback
function Optional callback that will be called when the provider is disposed.
- Source:
Returns:
- Type
- null
-
get(context, item|identity, callback) → {null}
-
Retrieves the specified item from the data collection. If an item with the specified identity is not found an error is returned.
Parameters:
Name Type Argument Description context
Object <optional>
provides context for the current execution. Usually this is information about the user making the call. Although this parameter is optional, it might be required by some interceptors, such as authorization.
item|identity
Object | String | Number the item or the identity of an item to be retrieved.
callback
Provider~actionCallback The callback that handles the result of this action.
- Source:
Returns:
- Type
- null
-
handleError(err, callback) → {null}
-
Creates new error object with the specified error message or error code.
This is utility method intended mainly for data provider implementers.
Parameters:
Name Type Argument Description err
string | Error This argument should be either error message, EntreeJS error code or error object.
callback
function <optional>
Error handler. If omitted the error will be thrown immediately.
- Source:
Returns:
- Type
- null
-
init(callback) → {null}
-
This is utility method intended mainly for data provider implementers.
Parameters:
Name Type Description callback
function Optional callback that will be called when the provider is initialized.
- Source:
Returns:
- Type
- null
-
insert(context, items, callback) → {null}
-
Inserts new item in the data collecton. If an item with the same identity is already present in the data collection, the operation is aborted and an error is returned.
Parameters:
Name Type Argument Description context
object <optional>
Provides context for the current execution. Usually this is information about the user making the call. Although this parameter is optional, it might be required by some interceptors, such as authorization.
items
object | Array.<object> An item or an array of items to be inserted in the data store.
callback
Provider~actionCallback The callback that handles the result of this action.
- Source:
Returns:
- Type
- null
-
select(context, query, options, callback) → {null|Cursor}
-
Selects items in the data collection and returns a Cursor to the selected items.
This method can return a Cursor either directly or with a callback. In most cases a cursor is created and returned synchronously, but some interceptors like module:cache require a callback. If you plan to use asynchronous interceptors you have to use the callback form.
Select uses MongoDB query syntax. All Entree data providers should support the full specification.
Options
skip
{Number}, the number of items to skip.limit
{Number}, limit the number of returned items.sort
{Object}, set to sort the documents coming back from the query.
Parameters:
Name Type Argument Description context
object <optional>
Provides context for the current execution.
query
object <optional>
Specifies selection criteria. To return all items in a collection, omit this parameter or pass an empty object.
options
object <optional>
Additional options for the cursor.
callback
function <optional>
Optional callback function that will be called when the Cursor is constructed.
- Source:
Returns:
- The method returns null if a callback is provided otherwise it returns a Cursor.
- Type
- null | Cursor
Example
// Select at most 10 teenagers starting from the 21th that matches the criteria: entree.users.select({ age: { $gte: 13, $lte: 19 }}) .skip(20) .limit(10) .sort({ age: 1 }) .each(function (err, user)) { if (err) { return console.log(err); } console.log(JSON.stringify(user)); }); // Do the same but with a callback - the recommended way if interceptors are used on the select method: entree.users.select({ age: { $gte: 13, $lte: 19 }}, function (err, cursor) { if (err) { return console.log(err); } cursor .skip(20) .limit(10) .sort({ age: 1 }) .each(function (err, user) { if (err) { return console.log(err); } console.log(JSON.stringify(user)); }); }); // Again the same but limitations set as options: entree.users.select({ age: { $gte: 13, $lte: 19 }}, { skip: 20, limit: 10, sort: { age: 1 }}, function (err, cursor) { if (err) { return console.log(err); } cursor.each(function (err, user) { if (err) { return console.log(err); } onsole.log(JSON.stringify(user)); }); }); // Get the total number of all users in the collection: entree.users.select(function (err, currsor) { cursor.count(err, count) { if (err) { return console.log(err); } console.log(count); }); });
-
selectOne(context, query, options, callback) → {null}
-
This method is the same as
select
, but instead of cursor it returns the first item that matches the select and sort criteria. If there is no match, null is returned.Parameters:
Name Type Argument Description context
object <optional>
Provides context for the current execution.
query
object <optional>
Specifies selection criteria.
options
object <optional>
Additional options for the cursor.
callback
Provider~actionCallback The callback that handles the result of this action.
- Source:
Returns:
- Type
- null
-
update(context, item, callback) → {null}
-
Updates the specified item with the provided fields. If an item with the specified identity could not be found an error is returned.
Parameters:
Name Type Argument Description context
Object <optional>
provides context for the current execution. Usually this is information about the user making the call. Although this parameter is optional, it might be required by some interceptors, such as authorization.
item
Object the item to be updated.
callback
Provider~actionCallback The callback that handles the result of this action.
- Source:
Returns:
- Type
- null
-
upsert(context, item, callback) → {null}
-
Inserts new item in the data collection if the item is not present, otherwise updates it.
Parameters:
Name Type Argument Description context
Object <optional>
provides context for the current execution. Usually this is information about the user making the call. Although this parameter is optional, it might be required by some interceptors, such as authorization.
item
Object the item to be added or updated.
callback
Provider~actionCallback The callback that handles the result of this action.
- Source:
Returns:
- Type
- null
-
use(fn) → {null}
-
Adds an interception module to this provider instance. See Interceptors tutorial for more details.
Parameters:
Name Type Description fn
function The function that handles the interception.
- Source:
Returns:
- Type
- null
Type Definitions
-
actionCallback(err, res)
-
This callback will be called after executing the method. The first parameter will contain an error object if an error occurred during execution, while the second parameter will contain the result from the execution if it was successful.
For insert, upsert and update operations the result should be an object containing the same set of fields that were originally passed plus any fields that were automatically updated, such as timestamps or identity fields.
NOTE: the returned result on insert, update and delete may differ slightly for the different providers, but if no error is returned the operation is considered successful.
Parameters:
Name Type Description err
object the error object upon unsuccessful execution.
res
object the result object upon successful execution.
- Source:


Actuators
Actuator List
Auditing
Beans
Caches
Conditions
Config Props
Env
Health
Heap Dump
HTTP Tracing
Info
Loggers
Log File
Mappings
Metrics
Scheduled Tasks
Thread Dump
Templated Actuators
App logs
Hikari Connections Metrics
Database Health
POST Actuators
Shutdown
Custom
Custom Endpoint
Custom Health Indicator