Raw Element Count (Sort by Count)
Raw Element Count (Sort by Class)
Symbol References (Sort by Count)
Symbol References (Sort by Name)
Symbol References (Sort by Type)


Apache FOP
Introduction
Apache FOP (Formatting Objects Processor) is a print formatter driven by XSL formatting objects (XSL-FO) and an output independent formatter. It is a Java application that reads a formatting object (FO) tree and renders the resulting pages to a specified output. Output formats currently supported include PDF, PS, PCL, AFP, XML (area tree representation), Print, AWT and PNG, and to a lesser extent, RTF and TXT. The primary output target is PDF.
A stable release of the latest version of FOP (1.0) is available. It's the third stable release after the large redesign effort and implements a large subset of the XSL-FO Version 1.1 W3C Recommendation.
Support for each of the standard's objects and properties is detailed in FOP Compliance. Download options include a precompiled version, source code, and many example files to get you started. Resources include links to XSL-FO introductions and many other useful references. A checklist for Getting Help will guide you toward maximizing the usefulness of FOP.
FOP is proud to be part of Apache's XML Graphics project.
Demonstration
This image is a demonstration of a real two page document. The XML data on the left is formatted into the two pages on the right. The document contains static areas that appear on every page, an external graphic, a footnote on the first page, and a table that goes across both pages.
FOP uses the standard XSL-FO file format as input, lays the content out into pages, then renders it to the requested output. One great advantage of using XSL-FO as input is that XSL-FO is itself an XML file, which means that it can be conveniently created from a variety of sources. The most common method is to convert semantic XML to XSL-FO, using an XSLT transformation.
FOP Objectives
The goals of the Apache FOP project are to deliver an XSL-FO to PDF formatter that is compliant to at least the Basic conformance level described in the W3C Recommendation from 05 December 2006, and that complies with the November 2001 Portable Document Format Specification (Version 1.4) from Adobe Systems.
Conformance to the XML 1.0 and 1.1 Recommendations, XSLT 1.0 and 2.0 Recommendations and the XML Namespaces Recommendation is understood. Other relevant documents, such as the XPath and XLink Working Drafts, are referenced as necessary. The FOP Project will attempt to use the latest version of evolving specifications.


Project: Contact Plus
Contact Plus is a command-line based contact-managing application used for busy students on campus as well as anyone who needs a contact-managing application. In addition to the management of contacts, this application can be served as a task-managing application as well. The user interacts with this application using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 6 kLoC.
 The alias feature allows you to type a shorter version of the command name.
Quick demo: here
External behavior
Alias of a command has the same effect as its corresponding command word. A list of available alias is as follows:
Commands |
Alias |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
How to use
-
The image below demonstrates the example of using
a
as the alias foradd command
to add a person in your contact pane. -
The image below demonstrates the result of the above alias.
Justification
-
Inevitably the command could be too long for users to memorise. With alias, the need for memorization of each command word is saved. Alias allows users to simply memorize one or two alphabets to perform the feature on the application.
-
Aliases are much shorter than its corresponding command words, therefore it is more efficient to use than to use the command. Alias helps users to use the application efficiently.
-
As aliases improve efficiency and saves users from heavy memorization. It contributes to user-friendliness aspect of this application.
Implementation
Alias Mechanism
Alias in this application is a single alphabet or two alphabets. This purpose of alias is to save the labor of typing the full corresponding command words, therefore it is more efficient and easier to use.
The alias mechanism is implemented in AddressBookParser
, and its main logic can be described by the following activity diagram:
-
AddressBookParser
receives the input argument from users. -
If the input argument is an alias, the corresponding command instance is created and command is processed.
-
If the input argument is a command word, the command instance is created, and the command is processed.
The code snippet is shown as follows:
case AddCommand.COMMAND_WORD: case AddCommand.COMMAND_WORD_ALIAS:
return new AddCommandParser().parse(arguments);
Design Consideration
Aspect: Length of an alias
Alternative 1 (current choice): Use one or two alphabets to represent a command, usually it is the first alphabet of its corresponding command word.
Pros: Easy to memories the alias as it is the first letter of the command word.
Cons: May be confusing when some command requires two alphabets for alias. This is because there will be overlapping alias when two command words have the same first letter.
Alternative 2: Use a fixed length of three alphabets for every alias
Pros: The length for each alias is unformed.
Cons: Three alphabets would be too long for commands like add
.
Aspect: Number of alias created
Alternative 1 (current choice): Alias is only available for frequently used commands or long commands.
Pros: Aliases for commonly used commands can save users' time and perform commands on Contact Plus efficiently. Also, aliases alleviate the labor of memorization of long commands for users.
Cons: Not all commands have aliases. It is possible that when users want to use an alias for a rarely used command, it is not featured in Contact Plus.
Alternative 2: Create aliases for all commands
Pros: For every command, there is an alias associated to it. Users can feel free to use any aliases for any commands.
Cons: It may be confusing for users if there are too many aliases. This is because aliases are short and similar.
Enhancement Added: Locating groups by tag: search + tag name [Since v1.1]
Searching a certain social group? or just search a certain group of persons? search + tag name
can help you achieve this.
Quick demo: here
External behavior
All persons with the same tag given by the user will be displayed on the application.
Command Format: search KEYWORD [MORE_KEYWORDS]
, or sh KEYWORD [MORE_KEYWORDS]
How to use
-
Input the command to search contact of the same tag, e.g. friends.The image below gives you the correct command format:
-
The image below demonstrates the result of the above searching:
---
Examples
Your input |
Result |
|
Returns the contacts with tag "friends", e.g. |
|
Returns the contacts with tag "friends" and "family", e.g. |
|
No match will be returned, |
Justification
One of the property of tagging is that it categorizes contacts in the list, therefore it is intuitive that users would like to search a group of users with the same tag.
Implementation
Search Groups By Tag Mechanism
The main logic for this mechanism lies in the class NameWithTagContainsKeywordsPredicate.java
. This class compares the lists of tags from each person, and compare the list of tag with the set of tags given by users.
This class makes uses of the powerful function from stream. The logic follow can be demonstrated by using the following activity diagram:
In order to provide you another perspective, the following sequence diagram shows you how SearchCommand
interacts with other objects in the Contact Plus application:
The following code snippet shows the main logic in Java code in NameWithTagContainsKeywordsPredicate.java
:
@Override
public boolean test(ReadOnlyPerson person) {
Set<String> tagList = new HashSet<>();
for (Tag tag : person.getTags()) {
tagList.add(tag.getTagName());
}
return keywords.stream()
.anyMatch(tagList::contains);
}
Prerequisites/Dependencies
-
The tag name entered by users must be valid, i.e. exist in Contact Plus for the command to work successfully, else error message will be popped out.
Design Consideration
Aspect: Number of tags allowed to be specified by users.
Alternative 1 (current choice): Allow multiple tags to be entered by users
Pros: Increases the flexibility of this search by tag feature. There would be no restriction on the number of tags to be entered. Users can specify as many valid tags as they want to.
Cons: May not be obvious to users that they can enter multiple tag names.
Alternative 2: Only allow users to search one tag name at a time
Pros: It would be simpler for users to use this command as it is straight forward that they can only uindicate one command.
Cons: Adds limitation to what users can do.
Enhancement Added: AutoCorrect command [Since v1.2]
If you misspelt a command, no worries, Contact Plus will autoCorrect misspelt command whose names start with the command entered from the user.
Application will notify you that the command entered is corrected and perform the corrected commmand.
Quick demo: here
External behavior
Corrects misspelt command whose names start with the command entered from the user.
Application will notify the user that the command entered is corrected and perform the corrected commmand.
Command Format: [misspelt command] + [corresponding arguments needed for the command]
|
Note
|
AutoCorrect is not designed for alias, in other words alias is excluded from autoCorrect. |
How to use
-
The image below demonstrates the usage to autoCorrect "deleet".
-
The image below is the result returned by Contact Plus using the command above.
Examples
Your input |
Result |
|
will match to |
|
will not match to any command, application will display "Unkown command". |
|
will be matched to |
|
will not match to any command, application will display "Unkown command". |
Justification
It is often a problem that to ask users to retype their misspelt words. It would be a great feature if the application can autoCorrect these mistakes and allow users to use the application smoothly.
Implementation
AutoCorrect Mechanism
The AutoCorrect
feature enables misspelt commands entered by users to be autoCorrected by the application,
and perform the correct command. The correction of the misspelt command is based on four types of prediction of the misspelt words, namely, addition of alphabets, deletion
of alphabets, transposing of alphabets and Substitution of alphabets. For the sake of efficiency, the edit distance is limited to 2 (refer to editDistance1
, and checkMisspeltWords
).
The logic flow of AutoCorrect
can be loosely described by the following image:
This is an example of how the misspelt words are predicted by adding one more alphabet:
//Adding any one character (from the alphabet) anywhere in the word.
for (int i = 0; i <= formattedWord.length(); i++) {
for (int j = 0; j < alphabet.length(); j++) {
String newWord = formattedWord.substring(0, i) + alphabet.charAt(j)
+ formattedWord.substring(i, formattedWord.length());
results.add(newWord);
}
}
Auto-Correct is only utilized in AddressBoonParser
class to check each input command, and correct the misspelt command which has an edit distance smaller than or equal to 2.
The following diagram shows the interaction between AutoCorrect
and AddressBookParser
class:
Prerequisites/Dependencies
-
The
COMMAND_WORD
for every available command must be added to thegetCommandPool
method for the command to be auto-corrected. -
AutoCorrect will only work for misspelt words within edit distance of 2.
-
AutoCorrect is based on four types of prediction of misspelt words, namely, addition, deletion, switch, and substitution.
-
Alias will not be autoCorrected as it consists only one or two alphabets.
-
The logic for autoCorrecting commands is implemented in AutoCorrectCommand class.
Design Consideration
Aspect: Implementation of AutoCorrect
Alternative 1 (current choice): Consider edit distance is 2 and the command is predicted based on the first alphabet.
Pros: The speed of searching is improved by implementing matching command by the first alphabet as the first alphabet entered by users is often correct.
Edit distance 2 allows a considerable number of commands to be corrected by the application.
Cons: The prediction by first alphabet limits the autoCorrection on those commands that have first alphabet wrong.
Edit distance 2 does not cover many other misspelt commands.
Alternative 2: Read all the available file from an external file when the application begins.
Pros: It would be easier for developers to maintain the autoCorrect feature as it is easier to update new commands into a file rather than in a method.
Cons: It would not be able to utilise COMMAND_WORD
defined in each command class
as it is a good practice to reused what is already defined and extend its usage (Close to modification and Open to extension Principle).
Enhancement Added: View Yahoo Weather Forecast [Since v1.3]
External behavior
This feature is for you to view weather forecast on Yahoo Weather page.
Accessible from File dropdown list, Weather Forecast menu item.
Quick demo: here
How to use
-
The button Weather Forecast is located as the image shown below.
-
The expected page would be as follows:
Justification
The aim of ou project is to provide a set of comprehensive services for users. Considering their daily needs, it is reasonable to include Yahhoo Weather Forecast and Yahoo News in the application so that users do not have to navigate to the browser again to retireve those information.
Implementation
Yahoo Weather Mechanism
The Yahoo weather information display is aided by the external library "yahoo-weather-java-api:2.0.2". This library queries data from Yahoo Weather API, and the application display the information returned by calling the library functions with
a simple string parser method to format the data return. The formatted data is displayed on the StatusFooterBar
.
The query of weather information is closely related to the location. The location is specified by WOEID, so in this application we take the WOEID of Singapore by default.
private final String woeid = "1062617";
The API method is called, and data returned as follows:
YahooWeatherService service = new YahooWeatherService();
Channel channel = service.getForecast(woeid, DegreeUnit.CELSIUS);
return conditionStringParser(channel.getItem().getCondition().toString());
Yahoo Weather information can be seen from statusFootBar
too, as follows:
Prerequisites/Dependencies
-
This feature has a strong dependency on Yahoo Weather Server. Some exceptions or assertions should be implemented to prevent the failure of the application due to the failure of Yahoo Weather Server.
Enhancement Added: Keyboard shortcuts [Since v1.3]
If the commands are too long for you to type, keyboard shortcuts are designed for you.
Quick demo: here
External behavior
Keyboard shortcuts enables users to quickly get the command words without heavy memorization.
Format: CONTROL + KEY
|
Note
|
The keyborad shortcuts are created only for commands with heavy text input or frequently used commands. |
How to use
Command |
Keyboard shortcut |
|
control + a/A |
|
control + m/M |
|
control + e/E |
|
control + s/S |
|
control + d/D |
|
control + f/F |
|
control + c/C |
Justification
Keyboard shortcuts are implemented with the purpose to allow users to input their command efficiently. Users do not have to memorize the command words if they fnd it is difficult for them to do so.
Implementation
Keyboard Shortcuts Mechanism
The detection of keyboard shortcut is detected in the CommandBox.java
class. In the method handleKeyPress
, multiple key press situations are listed there and to handle the correct key pressed by users.
The code snippet is shown as follows:
// Handles cases where multiple keys are pressed simultaneously
String getAlphabetPressed = keyEvent.getCode().toString();
logger.info(getAlphabetPressed);
if (keyEvent.getCode().isLetterKey() && keyEvent.isControlDown()) {
//keyboard shortcut for input text heavy command
switch (getAlphabetPressed) {
case "A":
keyEvent.consume();
commandTextField.setText(AddCommand.COMMAND_WORD);
break;
case "D":
keyEvent.consume();
commandTextField.setText(DeleteCommand.COMMAND_WORD);
break;
....
//and many other cases
default:
//do nothing
}
}
Design Consideration
Aspect: Implementation of Keyborad shortcuts
Alternative 1 (current choice): Only frequently used commands have its keyboard shortcuts.
Pros: Allow users to complete their input command faster by directly pressing the shortcuts.
Cons: For some commands, users are not allowed to use keyboard shortcuts This is inconvenient.
Alternative 2: Give every command its keyboard shortcuts.
Pros: Users can use shortcut for every command freely.
Cons: It would be confusing to have to memorise many shortcuts.
Aspect: Select keys for keyboard shortcuts
Alternative 1 (current choice): Use control and teh first alphabet for the command shortcut.
Pros: It is very easy for use to memorise the shortcut for the command as we use the first alphabet of the command. Also, we use control which may users are familiar with.
Cons: If users have their personal preference for keyboard shortcuts,they cannot set their favorite keys.
Alternative 2: Use one key for keyboard shortcut for a certain command.
Pros: It may be easy for some users to memorise as it only quires one key for a shortcut.
Cons: Many users may not used to this one-key shortcut as the majority of users are used to use control as part of keyboard shortcut.
Enhancement Added: Edit tasks [Since v1.4]
If you have recorded your task on Contact Plus application, and now you want to make some modification to it, you should use ediitask
.
Quick demo: here
External behavior
To edit your tasks, first you should learn how to list task. Listing tasks is for you to get the index of the task you indent to edit.
Then use "edittask" command with its index to edit the task. The format is as follows:
Format: edittask INDEX d/DESCRIPTION priority/PRIORITY(0/1/2) on DUE DATE(dd/MM/yyyy)
How to use
-
Enter the command, the index of the task, and the details you wish to edit with its prefix. In this example, we wish to edit the priority of the tsk indexed as no.1 in the liast of tasks. The following image shows you the correct command format:
-
The application will give you conformation information displayed. Please refer to the image below for an example:
Example
Your input |
Result |
|
The application will display "Edited task: " + the details of the task you just edited. |
|
The application will display "Edited task: " + the details of the task you just edited. |
|
This command edits the priority and due date for the task indexed no.1. The application will display the confirmation message: "Edited task: " + the details of the task you just edited. |
Justification
It is considerable to allow users to be able oto edit their tasks, and it is a common feature that every task application should have.
Implementation
Edit Task Mechanism
The edit task
is facilitated by EditTaskCommand class. It allows users to edit tasks in the address book with a description, the level of priority as well as the due date. The tasks added will be shown on the stickies in the address book.
The command word for editing a task is edittask
. When users key in the command word, together with valid description, priority and due date, the values will be passed into parseCommand() function in the AddressBookParser class.
The basic logic flow for edittask
is displayed in the following activity diagram:
To provide you another perspective, the interaction of EditTaskCommand
with other objects in Contact Plus Application is displayed in the following sequence diagram:
Prerequisites/Dependencies
-
The
getFilteredTaskList()
method inLogic
class must return a list ofReadOnlyTasks
containing the tasks in the address book. -
The
updateTask()
method in model must be able to accept aReadOnlyTask
as input and delete it from the address book.
Design Consideration
Aspect: Fields to be editable.
Alternative 1 (current choice): Allow priority and due date to be editable but not description. Pros: It is logically clear that only the priority and due date of a task can be edited. Changing the description of the task essentially means to create a new task. Cons: May be not convenient for users who want to edit description of the task as well.
Alternative 2: Only allow users to edit all three fields, description, priority and due date. Pros: This provides larger flexibility for users to edit any part of the given task. Cons: Logically it may not make sense to be able to edit description of the task.
Enhancement Added: Clear tasks [Since v1.4]
If you want to clear all our tasks on Contact Plus application as you have accomplished all of them, you can use cleartask
.
Quick demo: here
External behavior
To clear your task list, "cleartask" is the command to use. The format is as follows:
Format: cleartask
|
Note
|
You can perform command undo , if you accidentally clear your task list.
|
How to use
-
Enter the command "cleartask". Please refer to the image below for an example:
-
Confirmation message will be displayed. Please refer to the image below for an example:
Example
Your input |
Result |
|
"Task list has been cleared." will be displayed on the window |
Justification
It is considerable to allow users to be able to clear their tasks when the stake of the task is too high. clear task
helps users to clear their task panel.
Implementation
Clear Task Mechanism
The clear task
is facilitated by ClearTaskCommand class. It allows users to clear tasks in the address book.
The command word for listing a task is cleartask
. When users key in the command word, the command word cleartask
is passed into AddressBookParser class, and the corresponding ClearTaskCommand
is created and subsequently its function executeUndoableCommand() will clear the tasks from addressbook.xml.
The basic main flow for cleartask
is as follows:
To provide you another perspective, the following sequence diagram of CleaTaskCommand
displays its interaction with the objects in teh Contact Plus application:
Prerequisites/Dependencies
-
The
getFilteredTaskList()
method inLogic
class must return a list ofReadOnlyTasks
containing the tasks in the address book. -
The
deleteTask()
method in model must be able to accept aReadOnlyTask
as input and delete it from the address book.
Reference
Edit-distance
Edit distance is a way of quantifying how dissimilar two strings (e.g., words) are to one another by counting the minimum number of operations required to transform one string into the other.
WOEID
A WOEID (Where On Earth IDentifier) is a unique 32-bit reference identifier, originally defined by GeoPlanet and now assigned by Yahoo!, that identifies any feature on Earth.


Once again, I find myself in the position of asking people to write letters of recommendation. My usual MO for this is to first ask if they are willing to do so. I make it clear that I will provide them with a template letter which they can then modify as they see fit – after all it is their letter, but it is to my benefit. Thus, I want to minimize the hassle for them and ensure that the letter is strong.
In that context, I ran across this awesome post on Quora by Dr. Richard Muller about what he asks students to write up to assist him. The gist of this was his requirement that someone give him an interview:
My first step is to interview the student. I ask to be reminded of every time in the past we had interacted, if at all. Normally I mention these times in my letter; it helped the reader to recognize that the student was active.
Then I ask for any things that the student worried about, bad grades in other courses, for example. We then discussed them, and in my letter I might mention the fact that I was familiar with it (with a D, for example, in another class) and I would describe why (if true) I didn’t think that should be used as a negative. (Typically the student had a good reason.)
I ask the student to write me a page describing what he thinks of himself/herself, and what the student does outside of classwork. That’s based on my experience that those reading my letter often like candidates more if the student was well-rounded and personable.
I thought this was brilliant and plan on using this moving forward.


Unlimited Games. How should Red play 61?
pips Red=149 White=154
(CorrectAnswer= 0/0, ErrorScore= 0)
The double hit, 8/2*/1*, gains very little and just puts a checker out of play.
Similarly Red can’t give up his major asset which is White’s 5-pt by playing 20/13*.
This leaves the simple 23/16 which can do no harm and works well if it isn’t hit. Any other play is a blunder or worse.
Similarly Red can’t give up his major asset which is White’s 5-pt by playing 20/13*.
This leaves the simple 23/16 which can do no harm and works well if it isn’t hit. Any other play is a blunder or worse.
1. Cubeful 2-ply 23/16 Eq.: +0.302 0.579 0.153 0.006 - 0.421 0.081 0.002 2. Cubeful 2-ply 20/13* Eq.: +0.230 (-0.072) 0.564 0.166 0.009 - 0.436 0.118 0.006 3. Cubeful 2-ply 8/2*/1* Eq.: +0.144 (-0.158) 0.524 0.179 0.007 - 0.476 0.104 0.004 4. Cubeful 0-ply 8/1* Eq.: +0.015 (-0.286) 0.493 0.143 0.006 - 0.507 0.107 0.003 5. Cubeful 0-ply 23/22 8/2* Eq.: +0.012 (-0.290) 0.495 0.141 0.007 - 0.505 0.114 0.004


Mum transforms space under stairs into incredible room with ball pit for her son
Mum-of-two Ashleigh used items she already had in the home and buys from Amazon and Poundland to complete the room for just £80
by Luke Matthews, https://www.mirror.co.uk/authors/luke-matthews/A mum has transformed the space under the stairs in her home into a brilliant sensory room for her son using bargain buys from Poundland and Amazon.
Mum-of-two Ashleigh Dunkley cleared out the large cupboard under the stairs used to store junk and turned it into a haven for her three-year-old son CJ complete with LED lights, foam walls, a ball pit and cogs.
Ashleigh saw the positive impact a weekly visit to a sensory room at CJ's developmental nursery was having and started thinking about her own space under the stairs.
Over one weekend the mum set about creating a room designed to help her son develop his senses using light, music and touch, as reported by Tyla .
She gathered items they already had in the home including a lava lamp, chair, cushions, magnetic numbers and a crocodile wall toy, many of which CJ and his brother Hadden, 7, had received as presents.
She bought 30 foam mats for about £10, LED strip lights from Amazon for £13.99 and kid's lights from Poundland to put on the wall.
The ball pit was created using unwanted balls donated from friends and family, with the other bits snapped up on Facebook Marketplace for £30.
Overall, the transformation was completed for around £80.
Ashleigh said the family had previously looked into buying a large sensory board but found out they cost thousands each and says the homemade alternative has been hugely beneficial for CJ.
"My son loves it!" she said. "He gets so excited when it's all lit up.
"It's also very beneficial for when everyday life just gets a bit too much for him. It really settles him. Almost like someones pressed a reset button.


Customize your search by adding or removing filters. A saved search will retain the custom filters.
No records to display.


Hello,
Status: Connecting...
Ahahahaha puny mortal! Its time to D-D-D-D Duel! If you would like to host your own realm and
invite
your
companions copy the code on the left and send it to them. If you would like to join a lobby click
the button on the right and enter the realm code. You may enter a code from your acquaintance here and
join
their lobby as well. If you are playing with multiple people then the majority vote goes. If your vote
is seperate from the majority vote, your opinion does not matter. Teams will be selected at random.
Send the code to other players if you don't want to be lonely, nerd!


Transmogrify 1.2 documentation
You store your original files in either ORIG_BASE_PATH
or ORIG_BASE_PATH/VIRTUAL_HOST/
The basic structure of the file path is:
ORIG_BASE_PATH + REQUESTED_PATH
or if using virtual hosts:
ORIG_BASE_PATH + VIRTUAL_HOST + REQUESTED_PATH
The basic structure of the file path is:
ORIG_BASE_PATH + EXTERNAL_PREFIX + EXTERNAL_URL
or if using virtual hosts:
ORIG_BASE_PATH + VIRTUAL_HOST + EXTERNAL_PREFIX + EXTERNAL_URL
In the case of external images, the file’s entire URL becomes its name, because the file’s entire URL is URL-encoded into the request. This allows the HTTP server front end to look for the file easily.
The setting PATH_ALIASES allows you to set regular expressions to alter incoming URLs.
PATH_ALIASES
is a dictionary of {'<url_regex>': '<sub_regex>'}
. Each request is matched against the keys. The first match is substituted using that key’s value. For example if your images were stored in /home/www/assets/images/
, but the URL was /media/images/
, you would set:
ORIG_BASE_PATH = "/home/www"
PATH_ALIASES = {'/media/':'/assets/'}
so requests for /media/images/sample.jpg
converts into /assets/images/sample.jpg
and when added to /home/www
you get the file.


Pieces and markers can be locked to the board's surface. When an object is locked it is impossible to select it. It's as if the object is part of the original board design.
Objects can be locked while in either Scenario or Game mode.
To use the locking feature first select the objects you wish to lock. Then use the Actions/Lock Objects menu command. The objects will be locked and deselected.
If you need to unlock a piece you would first deactivate the locks with the Actions/Suspend Object Locks menu command. This gives you access to all locked object on the board. Then select the objects you wish to unlock and use the Actions/Lock Objects to unlock them. Finally reactivate the locks with the "Actions/Suspend Object Locks" menu command.
Some possible applications of this feature are:


interface NoteActionObserver
Observer interface for NoteActionManager
onAction |
Called when action request was created abstract fun onAction(note: Note, action: Action): Unit |
NoteManager |
Manages Notes and NoteObservers class NoteManager : NoteObserverManager, NoteActionObserver |


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Packages that use InterruptedException | |
|---|---|
| java.awt | Contains all of the classes for creating user interfaces and for painting graphics and images. |
| java.awt.image | Provides classes for creating and modifying images. |
| java.lang | Provides classes that are fundamental to the design of the Java programming language. |
| java.lang.ref | Provides reference-object classes, which support a limited degree of interaction with the garbage collector. |
| java.util.concurrent | Utility classes commonly useful in concurrent programming. |
| java.util.concurrent.locks | Interfaces and classes providing a framework for locking and waiting for conditions that is distinct from built-in synchronization and monitors. |
| javax.swing | Provides a set of "lightweight" (all-Java language) components that, to the maximum degree possible, work the same on all platforms. |
| Uses of InterruptedException in java.awt |
|---|
| Methods in java.awt that throw InterruptedException | |
|---|---|
AWTEvent |
EventQueue.getNextEvent()
Removes an event from the EventQueue and
returns it. |
static void |
EventQueue.invokeAndWait(Runnable runnable)
Causes runnable to have its run
method called in the dispatch thread of the EventQueue . |
void |
MediaTracker.waitForAll()
Starts loading all images tracked by this media tracker. |
boolean |
MediaTracker.waitForAll(long ms)
Starts loading all images tracked by this media tracker. |
void |
MediaTracker.waitForID(int id)
Starts loading all images tracked by this media tracker with the specified identifier. |
boolean |
MediaTracker.waitForID(int id,
long ms)
Starts loading all images tracked by this media tracker with the specified identifier. |
| Uses of InterruptedException in java.awt.image |
|---|
| Methods in java.awt.image that throw InterruptedException | |
|---|---|
boolean |
PixelGrabber.grabPixels()
Request the Image or ImageProducer to start delivering pixels and wait for all of the pixels in the rectangle of interest to be delivered. |
boolean |
PixelGrabber.grabPixels(long ms)
Request the Image or ImageProducer to start delivering pixels and wait for all of the pixels in the rectangle of interest to be delivered or until the specified timeout has elapsed. |
| Uses of InterruptedException in java.lang |
|---|
| Methods in java.lang that throw InterruptedException | |
|---|---|
void |
Thread.join()
Waits for this thread to die. |
void |
Thread.join(long millis)
Waits at most millis milliseconds for this thread to
die. |
void |
Thread.join(long millis,
int nanos)
Waits at most millis milliseconds plus
nanos nanoseconds for this thread to die. |
static void |
Thread.sleep(long millis)
Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds. |
static void |
Thread.sleep(long millis,
int nanos)
Causes the currently executing thread to sleep (cease execution) for the specified number of milliseconds plus the specified number of nanoseconds. |
void |
Object.wait()
Causes current thread to wait until another thread invokes the Object.notify() method or the
Object.notifyAll() method for this object. |
void |
Object.wait(long timeout)
Causes current thread to wait until either another thread invokes the Object.notify() method or the
Object.notifyAll() method for this object, or a
specified amount of time has elapsed. |
void |
Object.wait(long timeout,
int nanos)
Causes current thread to wait until another thread invokes the Object.notify() method or the
Object.notifyAll() method for this object, or
some other thread interrupts the current thread, or a certain
amount of real time has elapsed. |
abstract int |
Process.waitFor()
causes the current thread to wait, if necessary, until the process represented by this Process object has
terminated. |
| Uses of InterruptedException in java.lang.ref |
|---|
| Methods in java.lang.ref that throw InterruptedException | |
|---|---|
Reference<? extends T> |
ReferenceQueue.remove()
Removes the next reference object in this queue, blocking until one becomes available. |
Reference<? extends T> |
ReferenceQueue.remove(long timeout)
Removes the next reference object in this queue, blocking until either one becomes available or the given timeout period expires. |
| Uses of InterruptedException in java.util.concurrent |
|---|
| Methods in java.util.concurrent that throw InterruptedException | ||
|---|---|---|
void |
Semaphore.acquire()
Acquires a permit from this semaphore, blocking until one is available, or the thread is interrupted . |
|
void |
Semaphore.acquire(int permits)
Acquires the given number of permits from this semaphore, blocking until all are available, or the thread is interrupted . |
|
int |
CyclicBarrier.await()
Waits until all parties have invoked await
on this barrier. |
|
void |
CountDownLatch.await()
Causes the current thread to wait until the latch has counted down to zero, unless the thread is interrupted . |
|
int |
CyclicBarrier.await(long timeout,
TimeUnit unit)
Waits until all parties have invoked await
on this barrier. |
|
boolean |
CountDownLatch.await(long timeout,
TimeUnit unit)
Causes the current thread to wait until the latch has counted down to zero, unless the thread is interrupted ,
or the specified waiting time elapses. |
|
boolean |
ThreadPoolExecutor.awaitTermination(long timeout,
TimeUnit unit)
|
|
boolean |
ExecutorService.awaitTermination(long timeout,
TimeUnit unit)
Blocks until all tasks have completed execution after a shutdown request, or the timeout occurs, or the current thread is interrupted, whichever happens first. |
|
V |
Exchanger.exchange(V x)
Waits for another thread to arrive at this exchange point (unless it is interrupted ),
and then transfers the given object to it, receiving its object
in return. |
|
V |
Exchanger.exchange(V x,
long timeout,
TimeUnit unit)
Waits for another thread to arrive at this exchange point (unless it is interrupted , or the specified waiting
time elapses),
and then transfers the given object to it, receiving its object
in return. |
|
V |
FutureTask.get()
|
|
V |
Future.get()
Waits if necessary for the computation to complete, and then retrieves its result. |
|
V |
FutureTask.get(long timeout,
TimeUnit unit)
|
|
V |
Future.get(long timeout,
TimeUnit unit)
Waits if necessary for at most the given time for the computation to complete, and then retrieves its result, if available. |
|
|
ExecutorService.invokeAll(Collection<Callable<T>> tasks)
Executes the given tasks, returning a list of Futures holding their status and results when all complete. |
|
|
AbstractExecutorService.invokeAll(Collection<Callable<T>> tasks)
|
|
|
ExecutorService.invokeAll(Collection<Callable<T>> tasks,
long timeout,
TimeUnit unit)
Executes the given tasks, returning a list of Futures holding their status and results when all complete or the timeout expires, whichever happens first. |
|
|
AbstractExecutorService.invokeAll(Collection<Callable<T>> tasks,
long timeout,
TimeUnit unit)
|
|
|
ExecutorService.invokeAny(Collection<Callable<T>> tasks)
Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do. |
|
|
AbstractExecutorService.invokeAny(Collection<Callable<T>> tasks)
|
|
|
ExecutorService.invokeAny(Collection<Callable<T>> tasks,
long timeout,
TimeUnit unit)
Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do before the given timeout elapses. |
|
|
AbstractExecutorService.invokeAny(Collection<Callable<T>> tasks,
long timeout,
TimeUnit unit)
|
|
boolean |
SynchronousQueue.offer(E o,
long timeout,
TimeUnit unit)
Inserts the specified element into this queue, waiting if necessary up to the specified wait time for another thread to receive it. |
|
boolean |
LinkedBlockingQueue.offer(E o,
long timeout,
TimeUnit unit)
Inserts the specified element at the tail of this queue, waiting if necessary up to the specified wait time for space to become available. |
|
boolean |
BlockingQueue.offer(E o,
long timeout,
TimeUnit unit)
Inserts the specified element into this queue, waiting if necessary up to the specified wait time for space to become available. |
|
boolean |
ArrayBlockingQueue.offer(E o,
long timeout,
TimeUnit unit)
Inserts the specified element at the tail of this queue, waiting if necessary up to the specified wait time for space to become available. |
|
E |
SynchronousQueue.poll(long timeout,
TimeUnit unit)
Retrieves and removes the head of this queue, waiting if necessary up to the specified wait time, for another thread to insert it. |
|
E |
PriorityBlockingQueue.poll(long timeout,
TimeUnit unit)
|
|
E |
LinkedBlockingQueue.poll(long timeout,
TimeUnit unit)
|
|
Future<V> |
ExecutorCompletionService.poll(long timeout,
TimeUnit unit)
|
|
E |
DelayQueue.poll(long timeout,
TimeUnit unit)
Retrieves and removes the head of this queue, waiting if necessary up to the specified wait time if no elements with an unexpired delay are present on this queue. |
|
Future<V> |
CompletionService.poll(long timeout,
TimeUnit unit)
Retrieves and removes the Future representing the next completed task, waiting if necessary up to the specified wait time if none are yet present. |
|
E |
BlockingQueue.poll(long timeout,
TimeUnit unit)
Retrieves and removes the head of this queue, waiting if necessary up to the specified wait time if no elements are present on this queue. |
|
E |
ArrayBlockingQueue.poll(long timeout,
TimeUnit unit)
|
|
void |
SynchronousQueue.put(E o)
Adds the specified element to this queue, waiting if necessary for another thread to receive it. |
|
void |
LinkedBlockingQueue.put(E o)
Adds the specified element to the tail of this queue, waiting if necessary for space to become available. |
|
void |
BlockingQueue.put(E o)
Adds the specified element to this queue, waiting if necessary for space to become available. |
|
void |
ArrayBlockingQueue.put(E o)
Adds the specified element to the tail of this queue, waiting if necessary for space to become available. |
|
void |
TimeUnit.sleep(long timeout)
Perform a Thread.sleep using this unit. |
|
E |
SynchronousQueue.take()
Retrieves and removes the head of this queue, waiting if necessary for another thread to insert it. |
|
E |
PriorityBlockingQueue.take()
|
|
E |
LinkedBlockingQueue.take()
|
|
Future<V> |
ExecutorCompletionService.take()
|
|
E |
DelayQueue.take()
Retrieves and removes the head of this queue, waiting if no elements with an unexpired delay are present on this queue. |
|
Future<V> |
CompletionService.take()
Retrieves and removes the Future representing the next completed task, waiting if none are yet present. |
|
E |
BlockingQueue.take()
Retrieves and removes the head of this queue, waiting if no elements are present on this queue. |
|
E |
ArrayBlockingQueue.take()
|
|
void |
TimeUnit.timedJoin(Thread thread,
long timeout)
Perform a timed Thread.join using this time unit. |
|
void |
TimeUnit.timedWait(Object obj,
long timeout)
Perform a timed Object.wait using this time unit. |
|
boolean |
Semaphore.tryAcquire(int permits,
long timeout,
TimeUnit unit)
Acquires the given number of permits from this semaphore, if all become available within the given waiting time and the current thread has not been interrupted . |
|
boolean |
Semaphore.tryAcquire(long timeout,
TimeUnit unit)
Acquires a permit from this semaphore, if one becomes available within the given waiting time and the current thread has not been interrupted . |
| Uses of InterruptedException in java.util.concurrent.locks |
|---|
| Methods in java.util.concurrent.locks that throw InterruptedException | |
|---|---|
void |
AbstractQueuedSynchronizer.acquireInterruptibly(int arg)
Acquires in exclusive mode, aborting if interrupted. |
void |
AbstractQueuedSynchronizer.acquireSharedInterruptibly(int arg)
Acquires in shared mode, aborting if interrupted. |
void |
AbstractQueuedSynchronizer.ConditionObject.await()
Implements interruptible condition wait. |
void |
Condition.await()
Causes the current thread to wait until it is signalled or interrupted . |
boolean |
AbstractQueuedSynchronizer.ConditionObject.await(long time,
TimeUnit unit)
Implements timed condition wait. |
boolean |
Condition.await(long time,
TimeUnit unit)
Causes the current thread to wait until it is signalled or interrupted, or the specified waiting time elapses. |
long |
AbstractQueuedSynchronizer.ConditionObject.awaitNanos(long nanosTimeout)
Implements timed condition wait. |
long |
Condition.awaitNanos(long nanosTimeout)
Causes the current thread to wait until it is signalled or interrupted, or the specified waiting time elapses. |
boolean |
AbstractQueuedSynchronizer.ConditionObject.awaitUntil(Date deadline)
Implements absolute timed condition wait. |
boolean |
Condition.awaitUntil(Date deadline)
Causes the current thread to wait until it is signalled or interrupted, or the specified deadline elapses. |
void |
ReentrantReadWriteLock.ReadLock.lockInterruptibly()
Acquires the read lock unless the current thread is interrupted . |
void |
ReentrantReadWriteLock.WriteLock.lockInterruptibly()
Acquires the write lock unless the current thread is interrupted . |
void |
Lock.lockInterruptibly()
Acquires the lock unless the current thread is interrupted . |
void |
ReentrantLock.lockInterruptibly()
Acquires the lock unless the current thread is interrupted . |
boolean |
AbstractQueuedSynchronizer.tryAcquireNanos(int arg,
long nanosTimeout)
Attempts to acquire in exclusive mode, aborting if interrupted, and failing if the given timeout elapses. |
boolean |
AbstractQueuedSynchronizer.tryAcquireSharedNanos(int arg,
long nanosTimeout)
Attempts to acquire in shared mode, aborting if interrupted, and failing if the given timeout elapses. |
boolean |
ReentrantReadWriteLock.ReadLock.tryLock(long timeout,
TimeUnit unit)
Acquires the read lock if the write lock is not held by another thread within the given waiting time and the current thread has not been interrupted . |
boolean |
ReentrantReadWriteLock.WriteLock.tryLock(long timeout,
TimeUnit unit)
Acquires the write lock if it is not held by another thread within the given waiting time and the current thread has not been interrupted . |
boolean |
Lock.tryLock(long time,
TimeUnit unit)
Acquires the lock if it is free within the given waiting time and the current thread has not been interrupted . |
boolean |
ReentrantLock.tryLock(long timeout,
TimeUnit unit)
Acquires the lock if it is not held by another thread within the given waiting time and the current thread has not been interrupted . |
| Uses of InterruptedException in javax.swing |
|---|
| Methods in javax.swing that throw InterruptedException | |
|---|---|
static void |
SwingUtilities.invokeAndWait(Runnable doRun)
Causes doRun.run() to be executed synchronously on the
AWT event dispatching thread. |
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV NEXT | FRAMES NO FRAMES |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


{% extends "layout.html" %} {% block pageTitle %} Inset prompt component – GOV.UK Content Publisher prototype {% endblock %} {% block beforeContent %} {% include "includes/phase-banner.html" %} {{ govukBackLink({ text: "Back", href: "../" }) }} {% endblock %} {% block content %}
A prompt to users represented as inset content.
Default
{{ appInsetPrompt({ title: { text: 'Please meet these requirements before publishing' }, description: { text: 'Document needs a summary before publishing (at least 10 characters)' } }) }}With items passed in as HTML
{%- set descriptionHtml %}Error
{{ appInsetPrompt({ error: true, title: { text: 'There is a problem' }, description: { text: "‘Title here’ was not published" } }) }}List of items array
{{ appInsetPrompt({ title: { text: 'There is a problem' }, items: [{ text: 'Document needs a title before publishing (at least 10 characters)', href: '#' }, { text: 'Document needs a summary before publishing (at least 10 characters)', href: '#' }] }) }}


Anytime is Train Time
Choo Choo Choo Choo
Current Train Schedule
Train Name
Destination
Frequency (min)
Next Arrival
Minutes Away
Add Train
Train Name
Destination
First Train Time (HH:mm - military time)
Frequency (min)
Submit


Comments
-
Greg Hurrell
Thanks for the report. I'll get multiruby set up on this machine so I can do some test compiles against multiple versions of Ruby.
-
Greg Hurrell
I expect that compilation on 1.9 is fixed now by this commit.
While I was at it, I also preemptively applied a fix for compilation on old versions of Ruby like 1.8.5 as well.
Gonna test this presently with a few versions of Ruby, and hopefully will be able to mark as closed shortly.
-
anonymous
Still doesn't compile:
gcc -I. -I/usr/include/ruby-1.9.1/x86_64-linux -I/usr/include/ruby-1.9.1/ruby/backward -I/usr/include/ruby-1.9.1 -I. -DHAVE_RUBY_H -fPIC -march=x86-64 -mtune=generic -O2 -pipe -O2 -g -Wall -Wno-parentheses -fPIC -std=gnu99 -Wall -Wextra -Wno-unused-parameter -o ext.o -c ext.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-linux -I/usr/include/ruby-1.9.1/ruby/backward -I/usr/include/ruby-1.9.1 -I. -DHAVE_RUBY_H -fPIC -march=x86-64 -mtune=generic -O2 -pipe -O2 -g -Wall -Wno-parentheses -fPIC -std=gnu99 -Wall -Wextra -Wno-unused-parameter -o match.o -c match.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-linux -I/usr/include/ruby-1.9.1/ruby/backward -I/usr/include/ruby-1.9.1 -I. -DHAVE_RUBY_H -fPIC -march=x86-64 -mtune=generic -O2 -pipe -O2 -g -Wall -Wno-parentheses -fPIC -std=gnu99 -Wall -Wextra -Wno-unused-parameter -o matcher.o -c matcher.c matcher.c: In function ‘comp’: matcher.c:37: error: ‘struct RFloat’ has no member named ‘value’ matcher.c:38: error: ‘struct RFloat’ has no member named ‘value’ make: *** [matcher.o] Error 1
-
Greg Hurrell
Ok, tested on 1.9.1. The errors you reported above are now fixed, but found a couple others:
matcher.c:37: error: ‘struct RFloat’ has no member named ‘value’ matcher.c:38: error: ‘struct RFloat’ has no member named ‘value’
Will squish those and we'll be good to go.
-
Greg Hurrell
Ok, done. Marking as closed.
-
Greg Hurrell
Status changed:
- From: new
- To: closed
-
Greg Hurrell
The new release is out.
-
Greg Hurrell
Oops, accidentally deleted the following comment:
Still doesn't compile:
gcc -I. -I/usr/include/ruby-1.9.1/x86_64-linux -I/usr/include/ruby-1.9.1/ruby/backward -I/usr/include/ruby-1.9.1 -I. -DHAVE_RUBY_H -fPIC -march=x86-64 -mtune=generic -O2 -pipe -O2 -g -Wall -Wno-parentheses -fPIC -std=gnu99 -Wall -Wextra -Wno-unused-parameter -o ext.o -c ext.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-linux -I/usr/include/ruby-1.9.1/ruby/backward -I/usr/include/ruby-1.9.1 -I. -DHAVE_RUBY_H -fPIC -march=x86-64 -mtune=generic -O2 -pipe -O2 -g -Wall -Wno-parentheses -fPIC -std=gnu99 -Wall -Wextra -Wno-unused-parameter -o match.o -c match.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-linux -I/usr/include/ruby-1.9.1/ruby/backward -I/usr/include/ruby-1.9.1 -I. -DHAVE_RUBY_H -fPIC -march=x86-64 -mtune=generic -O2 -pipe -O2 -g -Wall -Wno-parentheses -fPIC -std=gnu99 -Wall -Wextra -Wno-unused-parameter -o matcher.o -c matcher.c matcher.c: In function ‘comp’: matcher.c:37: error: ‘struct RFloat’ has no member named ‘value’ matcher.c:38: error: ‘struct RFloat’ has no member named ‘value’ make: *** [matcher.o] Error 1
Looks like this is the issue I commented on earlier and fixed prior to the 0.2 release.
Add a comment
Comments are now closed for this issue.


Study
Chen (2017) Cui (2016)
Cui (2017)
Ding (2014) Huang (2015) Huang (2016) Kong (2015) Takahashi (2014) Wan (2016) Yang (2014) Yuan (2016) Zhang (2017) Zhuang (2015)
Overall (|-squared = 66.5%, p = 0.000)
NOTE: Weights are from random effects analysis
0212
OR (95% Cl)
1.59 (0.67, 3.75) 2.29 (1.05, 4.97) 4.51 (1.70, 11.98)
————————— 7.50 (1.47, 38.28)
0.28 (0.09, 0.86) 9.00 (3.94, 20.57) 1.83 (0.75, 4.45) 2.97 (1.28, 6.87) 2.84 (1.29, 6.28)
ft 9.91 (2.09, 46.93)
2.34 (1.09, 5.03) 4.44 (1.81, 10.91) 0.26 (0.02, 3.27) 2.67 (1.66, 4.29)
47.2
Weight
8.78 9.28 8.10 5.02 7.20 8.98 8.62 8.90 9.18 5.30 9.34 8.55 2.75 100.00


Installation¶
Note that pygeostat requires Python 3.6+. Pygeostat will likely require modification to work with any other version of python. Pygeostat is also dependent on the suite of curated python packages provided with the Anaconda Python distribution. It is recommended to install this prior to pygeostat installation.
Python Installation¶
The Anaconda distribution by Continuum Analytics is recommended. If unfamiliar with Python and virtual environments, then accepting the defaults of registering with the system and installing to the path are recommended.
Pygeostat Installation¶
Pygeostat can be installed from python package index (PyPI) repository.
pip install pygeostat
Additional Software (CCG Members)¶
CCG memebers have the option to install CCG/GSLIB software (executable files) to enable pygeostat scripting features. This can be done using the following function. While GSLIB executable files are avilable through a public repository, for CCG software a vlid access token is required to download executables files from a private repository. The access token is avilable for CCG members at CCG knowledge base website.
-
pygeostat.utility.
get_executable
(source='gslib', access_token=None, clean=False)¶ Gets a collection of executable files from a protected repository using an access token. Note that in order to use this function, git needs to be installed on the target computer.
Parameters: - source (str) – gslib or CCG as the source of software.
- access_token (str) – An access token to authorize access to the target private repository for CCG software. Access token is available for CCG members and can be found at CCG knowledge base.
- clean (bool) – Option to clean the executable directory prior to upload the files from the target private repository. Note that choosing this option will delete the existing executable files.
Examples
Installing GSLIB executable files
import pygeostat as gs gs.get_executable(source='GSLIB')
Installing CCG software
import pygeostat as gs gs.get_executable(source='CCG', clean=True)
Using the installed software
# Load example data included in pygeostat data_file = gs.ExampleData('cluster') # Initialize the Program object nscore = gs.Program('nscore', getpar=True) # Run normal score transformation parstr = """ Parameters for NSCORE ********************* START OF PARAMETERS: {datafile} - file with data 3 1 2 3 - number of variables and columns 5 - column for weight, 0 if none 0 - column for category, 0 if none 0 - number of records if known, 0 if unknown -1.0e21 1.0e21 - trimming limits 0 -transform using a reference distribution, 1=yes ../histsmth/histsmth.out -file with reference distribution. 1 2 0 - columns for variable, weight, and category 101 -maximum number of quantiles, 0 for all {outfl} -file for output {trnfl} -file for output transformation table """ pars = dict(datafile=data_file.flname, outfl = 'nscore.out', trnfl = 'nscore.trn') nscore.run(parstr=parstr.format(**pars), liveoutput=True)
Create Virtual Environments¶
Python environments can be used to isolate different projects with different dependencies. The following code snippets can be used to setup a python environment using conda package manager.
- Creat the environment
conda env create -n <environment_name> -f environment.yml
- Activate the environment
conda activate <environment_name>
- Install pygeostat on the new environment that is activate
pip install pygeostat
The nexs step is to launch your favorite IDE for python (e.g. Jupyter).
Using R from Python¶
Consider:
- rpy2 - a Python library providing a low-level interface to R from Python - http://rpy.sourceforge.net/
- Matrix - a R library - https://stat.ethz.ch/R-manual/R-devel/library/base/html/matrix.html
To allow interfacing between Python and R, rpy2 is required. Currently, only the utility gs.nearpd() uses rpy2 which also requires the R library “Matrix” to be installed through R. Installing rpy2 can be temperamental. Use the following installation instructions for rpy2:
- Download the rpy2 wheel file (e.g., rpy2-2.6.0-cp34-none-win_amd64) from: http://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2
- From the command prompt, install the wheel file by using the command
>>> pip install rpy2-2.6.0-cp34-none-win_amd64.whl
- Add the path to the folder containing R.dll to the environment variable PATH (e.g., C:Program FilesRR-3.1.2/bini386)
- Add an environment variable R_HOME pointing to R (e.g., C:Program FilesRR-3.1.2)
- Add an environment variable R_USER that is your windows user name


Iterate over a iterable value
Name |
Required |
Default |
Evaluated |
Type |
Description |
|---|---|---|---|---|---|
| id | false | true | String | id for referencing element. For UI and form tags it will be used as HTML id attribute | |
| status | false | false | true | Boolean | If specified, an instanceof IteratorStatus will be pushed into stack upon each iteration |
| value | false | true | String | the iteratable source to iterate over, else an the object itself will be put into a newly created List |


DATA
DISCOVERY
ENGINE
DISCOVERY
Follow best practices to make your data more findable
Follow best practices to make your data more findable
SCHEMA PLAYGROUND
Build and host your own schema for better interoperability
Build and host your own schema for better interoperability
Discover & Access Dataset Metadata
See what structured metadata can do
Browse Registered Schemas & Metadata
ContinueMETADATA PLUS
A service to transforms non-structured published metadata into Schema.org-standard structured metadata.
Learn MoreMETADATA CRAWLER
A service that harvests biomedical Schema.org-standard structured dataset metadata and makes it available through an API.
Learn MoreGet Involved!
The CD2H project uses the onboarding form to track community interest and engagement in CD2H projects and working groups. You are welcome to participate at any level, whether contributing requirements, code, or just casually following the project as it progresses. Simply check the box indicating you're interested in the 'discovery engine', we will get in touch. Contact us if you have any questions.
Join NowCONNECT
-
Reusable data best practice portal (rdp-portal) - Learn more about our project on GitHub
-
Data Discovery Engine Github - Contribute to the development of this site on GitHub


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import config.AppConfig @import models.request.AuthenticatedRequest @import models.viewmodels.managementtools._ @import views.html.components.input_accessible_auto_complete @import views.html.partials.error_summary @(keywordsTabViewModel: KeywordsTabViewModel, keywordForm: Form[String])(implicit request: AuthenticatedRequest[_], messages: Messages)


<?php namespace CodeIgniter\Config; /** * CodeIgniter * * An open source application development framework for PHP * * This content is released under the MIT License (MIT) * * Copyright (c) 2014-2019 British Columbia Institute of Technology * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * * @package CodeIgniter * @author CodeIgniter Dev Team * @copyright 2014-2019 British Columbia Institute of Technology (https://bcit.ca/) * @license https://opensource.org/licenses/MIT MIT License * @link https://codeigniter.com * @since Version 3.0.0 * @filesource */ /** * Services Configuration file. * * Services are simply other classes/libraries that the system uses * to do its job. This is used by CodeIgniter to allow the core of the * framework to be swapped out easily without affecting the usage within * the rest of your application. * * This is used in place of a Dependency Injection container primarily * due to its simplicity, which allows a better long-term maintenance * of the applications built on top of CodeIgniter. A bonus side-effect * is that IDEs are able to determine what class you are calling * whereas with DI Containers there usually isn't a way for them to do this. * * @see http://blog.ircmaxell.com/2015/11/simple-easy-risk-and-change.html * @see http://www.infoq.com/presentations/Simple-Made-Easy */ class BaseService { /** * Cache for instance of any services that * have been requested as a "shared" instance. * * @var array */ static protected $instances = []; /** * Mock objects for testing which are returned if exist. * * @var array */ static protected $mocks = []; /** * Have we already discovered other Services? * * @var boolean */ static protected $discovered = false; /** * A cache of other service classes we've found. * * @var array */ static protected $services = []; //-------------------------------------------------------------------- /** * Returns a shared instance of any of the class' services. * * $key must be a name matching a service. * * @param string $key * @param array ...$params * * @return mixed */ protected static function getSharedInstance(string $key, ...$params) { // Returns mock if exists if (isset(static::$mocks[$key])) { return static::$mocks[$key]; } if (! isset(static::$instances[$key])) { // Make sure $getShared is false array_push($params, false); static::$instances[$key] = static::$key(...$params); } return static::$instances[$key]; } //-------------------------------------------------------------------- /** * The Autoloader class is the central class that handles our * spl_autoload_register method, and helper methods. * * @param boolean $getShared * * @return \CodeIgniter\Autoloader\Autoloader */ public static function autoloader(bool $getShared = true) { if ($getShared) { if (empty(static::$instances['autoloader'])) { static::$instances['autoloader'] = new \CodeIgniter\Autoloader\Autoloader(); } return static::$instances['autoloader']; } return new \CodeIgniter\Autoloader\Autoloader(); } //-------------------------------------------------------------------- /** * The file locator provides utility methods for looking for non-classes * within namespaced folders, as well as convenience methods for * loading 'helpers', and 'libraries'. * * @param boolean $getShared * * @return \CodeIgniter\Autoloader\FileLocator */ public static function locator(bool $getShared = true) { if ($getShared) { if (empty(static::$instances['locator'])) { static::$instances['locator'] = new \CodeIgniter\Autoloader\FileLocator( static::autoloader() ); } return static::$instances['locator']; } return new \CodeIgniter\Autoloader\FileLocator(static::autoloader()); } //-------------------------------------------------------------------- /** * Provides the ability to perform case-insensitive calling of service * names. * * @param string $name * @param array $arguments * * @return mixed */ public static function __callStatic(string $name, array $arguments) { $name = strtolower($name); if (method_exists(Services::class, $name)) { return Services::$name(...$arguments); } return static::discoverServices($name, $arguments); } //-------------------------------------------------------------------- /** * Reset shared instances and mocks for testing. * * @param boolean $init_autoloader Initializes autoloader instance */ public static function reset(bool $init_autoloader = false) { static::$mocks = []; static::$instances = []; if ($init_autoloader) { static::autoloader()->initialize(new \Config\Autoload(), new \Config\Modules()); } } //-------------------------------------------------------------------- /** * Inject mock object for testing. * * @param string $name * @param $mock */ public static function injectMock(string $name, $mock) { $name = strtolower($name); static::$mocks[$name] = $mock; } //-------------------------------------------------------------------- /** * Will scan all psr4 namespaces registered with system to look * for new Config\Services files. Caches a copy of each one, then * looks for the service method in each, returning an instance of * the service, if available. * * @param string $name * @param array $arguments * * @return mixed */ protected static function discoverServices(string $name, array $arguments) { if (! static::$discovered) { $config = config('Modules'); if ($config->shouldDiscover('services')) { $locator = static::locator(); $files = $locator->search('Config/Services'); if (empty($files)) { return null; } // Get instances of all service classes and cache them locally. foreach ($files as $file) { $classname = $locator->getClassname($file); if (! in_array($classname, ['CodeIgniter\\Config\\Services'])) { static::$services[] = new $classname(); } } } static::$discovered = true; } if (! static::$services) { return null; } // Try to find the desired service method foreach (static::$services as $class) { if (method_exists(get_class($class), $name)) { return $class::$name(...$arguments); } } return null; } }


Scrambled Eggs & Bacon with bread
$1.50
Chicken Chop Wrap
$2.00
Asparagus Steak
$3.50
Beef Steak
$4.00
Curry Rice with Spicy Gravy
$2.50
Sunny Side Up with bread
$0.99
Multi-Decked pancake with sliced strawberry
$2.50
Fried Chicken with Chips
$2.00
Salmon Dish
$3.00


IndirectSelect with extended selection |
IndirectSelect with extended selection (trigger on cell) |
IndirectSelect with simple multi-selection (cannot swipe) |
IndirectSelect with single-selection |
IndirectSelectColumn with extended selection |
IndirectSelectColumn with extended selection (trigger on cell) |
IndirectSelectColumn with simple multi-selection (cannot swipe) |
IndirectSelectColumn with single-selection |


Corrigendum to “An Increased Ratio of Glycated Albumin to HbA1c Is Associated with
the Degree of Liver Fibrosis in Hepatitis B Virus-Positive Patients”
<EMAIL_ADDRESS>2016: ][Licence This is an open access article distributed under the Creative Commons Attribution
License, which permits unrestricted use, distribution, and reproduction in any medium,
provided the original work is properly cited.]
[][][]
In the first sentence of Section 2.1 of “An Increased Ratio of Glycated Albumin to
HbA1c Is Associated with the Degree of Liver Fibrosis in Hepatitis B Virus-Positive
Patients” [
1], we note that the description “between January 2008 and March 2010” should be corrected
to be “between January 2008 and March 2013.”
EnomotoH.AizawaN.NakamuraH.An increased ratio of glycated albumin to HbA1c is associated with the degree of liver
fibrosis in hepatitis B virus-positive patients
Gastroenterology Research and Practice201420146[351396][10.1155/2014/351396][2-s2.0-84896128058]


--- layout: post status: publish published: true title: 3 days till VMworld 2009 author: display_name: iguy login: iguy email<EMAIL_ADDRESS>url: '' author_login: iguy author_email<EMAIL_ADDRESS>wordpress_id: 206 wordpress_url: http://itsjustanotherlayer.com/?p=206 date: !binary |- MjAwOS0wOC0yOCAwMjo1NjoyMCAtMDUwMA== date_gmt: !binary |- MjAwOS0wOC0yOCAwMjo1NjoyMCAtMDUwMA== categories: - VMware tags: - VMware - vmworld comments: [] ---
Woot. 3 days until I hit San Francisco and begin the awesomeness that is VMworld. I've got my schedule packed and for a first I'm getting asked to take a peek of a couple different vendor products from people internal to the company. These folks want to get input on if these products will be useful for our different internal efforts with respect to our virtualization environments and OS environments. (Note.. if you don't catch the mega WOOTness here you should now. VMware is becoming a noticeably important tool at director and above levels.)


@* * Copyright 2021 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import uk.gov.hmrc.helplinefrontend.config.AppConfig @import uk.gov.hmrc.helplinefrontend.views.html.Layout @this(layout: Layout) @(back: Option[String])(implicit request: Request[_], appConfig: AppConfig, messages: Messages) @layout(pageTitle = Some("helpline-frontend")) { @if(back.nonEmpty){ @Messages("back") }
@messages("contact_us.deceased.call_hmrc")
@messages("contact_us.deceased.contact_number.call_advice.p1")
@messages("contact_us.deceased.contact_number.call_advice.p2")
@messages("contact_hours.temp.text2")
@Html(Messages("contact_us.deceased.getHelp", "https://www.gov.uk/dealing-hmrc-additional-needs/overview"))
@Html(Messages("contact_us.deceased.callCharges", "https://www.gov.uk/call-charges"))
}


Table of Contents
PostgreSQL™ is an extensible database system. You can add your own functions to the server, which can then be called from queries, or even add your own data types. As these are facilities unique to PostgreSQL™, we support them from Java, with a set of extension APIs. Some features within the core of the standard driver actually use these extensions to implement Large Objects, etc.
To access some of the extensions, you need to use some extra methods in the
org.postgresql.PGConnection
class. In this case, you would need to cast the
return value of Driver.getConnection()
. For example:
Connection db = Driver.getConnection(url, username, password);
// ...
// later on
Fastpath fp = db.unwrap(org.postgresql.PGConnection.class).getFastpathAPI();


Everton fan favourite Lucas Digne explains how he had to adapt to English football
Lucas Digne has become a key player for Everton.
by Mathew NashLucas Digne has been discussing his life at Everton whilst away on international duty with the French national team.
Everton snapped up the Frenchman from Barcelona last summer in a deal reported by The Guardian to be worth around £18 million.
He has quickly become a fan favourite at Goodison Park and his performances have certainly warranted the affection of the Everton faithful.
He has even recently captained Marco Silva’s side, wearing the armband against West Ham, Brighton and Spurs in the Premier League.
Speaking to Le Parisien, the 26-year-old spoke of how he had to adapt to English football and how he felt having the opportunity to captain the Toffees.
“I had to adapt quickly to the intensity, the physical impacts, playing fast forward and repeating the high-intensity efforts. I crossed a plateau. I am asked to be very offensive. But this involves defensively many duels in one against one because the matches are very open. This is the championship that suits me best.
“There was a list of four captains. I was the fourth so I knew it could happen even if the probability was low. It is a pride to wear this armband. It’s only been a season and a half I’m at the club, so it’s a great sign of confidence.”
TBR’s View
The Frenchman has certainly improved since he initially arrived at Everton. Whilst the offensive side of his game was never in any doubt he often left the team exposed defensively as a consequence during his early days at the club.
However, that is no longer a regular problem for the Everton star, who has certainly improved the defensive aspect of his game.
As for the captaincy, there is no reason why Digne cannot be a candidate for the role long-term with Seamus Coleman recently finding himself out of the team due to a poor run of form.
Have something to tell us about this article?
Let us know


Sync Class
Live data model synchronization.
This class can be attached to Backbone models to synchronize backend data using the
fetch
,
save
, and
destroy
Backbone API methods.
It also provides two-way change based synchronization, updating data on the server as changes are made to the model, and updating the client model as changes are detected on the server.
Communication is Probe based, leveraging the built-in connection, routing, and socket-io functionality. The FileSync probe is provided for file-based model persistence, and others can be written to implement alternate persistence mechanisms.
Item Index
Methods
Methods
_connectClassMonitor
-
method
-
model
-
callback
Connect and send the control message to a Sync probe for this class.
This creates a monitor to a Sync probe with the specified className. The monitor is used to send CRUD control messages for any ID within the class.
Once connected, it sends the specified control message to the probe.
This monitor is used for non-liveSync interactions.
_connectInstanceMonitor
-
method
-
model
-
callback
Connect and send the control message to a liveSync monitor for the model
This creates a monitor to a Sync probe for the model instance, and attaches event listeners onto the monitor and the data model.
Once connected, it sends the specified control message to the probe.
Changes on the server are automatically propagated to the local data model, and local changes to the data model are automatically propagated to the server.
_getMonitorParams
-
[modelId]
Prepare the init parameters for a monitor to a Sync probe
The monitor init params for the class monitor and the liveSync model monitor only differ in the modelId, so this method was broken out to reduce code duplication.
Parameters:
-
[modelId]
String optionalId to the data model. If set, then params will be built for liveSync to a data model with that id. params for the class.
Returns:
_getOpts
-
method
-
model
Prepare the control options
This prepares the control options to include the ID element on a fetch or delete, and the entire model on a create or update.
Parameters:
-
method
EnumOne of the CRUD methods
-
model
Backbone.ModelThe model to prepare the opts from
Returns:
_sync
-
method
-
model
-
[options]
Provide the sync API to a backbone data model
See the Backbone documentation for more information on this method.
Parameters:
-
method
StringA CRUD enumeration of "create", "read", "update", or "delete"
-
model
Backbone.Model or Backbone.CollectionThe model or collection to act upon
-
[options]
Object optionalSuccess and error callbacks, and additional options to pass on to the sync implementation.
-
[liveSync]
optional- Turn on the live update functionality
-
[success]
optional- The method to call on method success
-
[error]
optional- The method to call on method error
-
Sync
-
className
-
[options]
Probe based data synchronization with server-side storage.
This method returns a function conforming to the Backbone
Sync
API, offering
fetch
,
save
, and
destroy
functionality to any Backbone data model.
The returned function can be assigned to the sync
element when defining the
data model:
var BlogEntry = Backbone.Model.extend({
...
sync: Monitor.Sync('BlogEntry'),
...
});
The sync function can also be assigned to any Backbone model after construction:
var myBook = new Book({id:"44329"});
myBook.sync = Monitor.Sync('Book');
myBook.fetch();
In addition to providing the standard fetch
, save
, and destroy
functionality, Sync offers live data synchronization, updating the data model
as changes are detected on the server.
// Turn on live data synchronization
myBook.fetch({liveSync:true});
This fetches the myBook
instance with the contents of the Book class
id 44329
, persists local changes to myBook
, and keeps myBook
up to date with changes detected on the server.
Live data synchronization consumes resources on both the client and server.
To release those resources, make sure to call the clear()
method on
the data model. Otherwise, resources are released when the server connection
is terminated.
// Clear the object, turning off live synchronization
myBook.clear();
See the Backbone documentation for more information about the Backbone.sync functionality.


Hybrid apps with WebXR buttons. source code
To test VR/AR on Desktop browsers, use the WebXR Emulator Extension (Firefox, Chrome). (To enter AR, select "Samsung Galaxy S8+ (AR)" under the "WebXR" tab inside Inspector, reload the page, and click the "START AR" button.)


Nvidia profit, revenue beat on gaming chip demand
Nvidia Corp forecast fourth-quarter revenue below Wall Street estimates on Thursday, hurt by seasonal weakness in demand for its gaming cards used in personal computers and laptops.
REUTERS: Nvidia Corp beat Wall Street estimates for third-quarter revenue and profit on Thursday on higher demand for its gaming chips and predicted strong growth in data centre business, sending shares up 2per cent in extended trading.
Revenue from gaming business, the biggest contributor to sales, fell 6per cent to US$1.66 billion, but beat analysts' estimate of US$1.54 billion, according to FactSet.
The company said seasonal weakness in demand for its gaming cards used in personal computers and laptops would hurt its fourth-quarter performance.
Nvidia expects fourth-quarter revenue of US$2.95 billion, plus or minus 2per cent, while analysts on average were expecting US$3.06 billion, according to IBES data from Refinitiv.
Total revenue in the reported quarter fell 5per cent to US$3.01 billion, but was above expectation of US$2.91 billion.
Excluding items, it earned US$1.78 per share, above estimates of US$1.57.
(Reporting by Munsif Vengattil in Bengaluru; Editing by Arun Koyyur)


ASH WEDNESDAY
ENTRANCE ANTIPHON
You are merciful to all, O Lord, and despise nothing that you have made.
COLLECT
Grant, O Lord, that we may begin with holy fasting this campaign of Christian service, so that, as we take up battle against spiritual evils, we may be armed with weapons of self-restrain. Through our Lord Jesus Christ, your Son, who lives and reigns with you in the unity of the Holy Spirit, one God, for ever and ever.
BLESSING
AND DISTRIBUTION OF ASHES
After
the Homily, the Priest, standing with hands joined, says:
Dear brethren (brothers and sisters), let us humbly ask God our Father that he be pleased to bless with the abundance of his grace these ashes, which we will put on our heads in penitence.
After
a brief prayer in silence, and, with hands extended,
he continues:
O God, who
are moved by acts of humility and respond with forgiveness to works of penance,
lend your merciful ear to our prayers and in your kindness pour out the grace
of your +
blessing on your servants who are marked with these ashes, that, as they follow
the Lenten observances, they may be worthy to come with minds made pure to
celebrate the Paschal Mystery of your Son. Through Christ our
Lord.
R. Amen
He
sprinkles the ashes with holy water, without saying anything. Then the Priest
places ashes on the head of all those present who come
to him, and says to each one:
Repent, and believe in the Gospel.
or
Remember that you are dust, and to dust you shall return.
Meanwhile
the following are sung:
Antiphon 1 Let us change our garments to sackcloth and ashes, let us fast and weep before the Lord, that our God, rich in mercy, might forgive us our sins.

Antiphon
3 Blot
out my transgressions, O Lord.
This may be repeated after each verse of Psalm 51 (Have mercy on me, O God).
RESPONSORY
R. Let us correct
our faults which we have committed in ignorance, let us not be taken unawares
by the day of our death, looking in vain for leisure to repent.
* Hear us, O Lord, and show us your mercy, for we have sinned against you.
V. Help us, O God our
Saviour; for the sake of your name, O Lord, set us free.
*
Hear us, O Lord ...
Another appropriate chant may also be sung.
After
the distribution of ashes, the Priest washes his hands and proceeds to the
Universal Prayer, and continues the Mass in the usual way.
The
CREED is not said.
PRAYER OVER THE OFFERINGS
As we
solemnly offer the annual sacrifice for the beginning of Lent, we entreat you,
O Lord, that through works of penance and charity, we may turn away from
harmful pleasures and, cleansed from our sins, may become worthy to celebrate
devoutly the Passion of your Son. Who lives and reigns for ever and ever.
COMMUNION ANTIPHON
He who ponders the law of the Lord day and night will yield fruit in due season.
PRAYER AFTER COMMUNION
May the
Sacrament we have received sustain us, O Lord, that our Lenten fast may be
pleasing to you and be for us a healing remedy. Through Christ our Lord.
PRAYER
OVER THE PEOPLE
For the dismissal, the Priest stands facing the people and, extending his hands over them, says this prayer:
Pour out a
spirit of compunction, O God, on those who bow before your majesty, and by your
mercy may they merit the rewards you promise to those who do penance. Through Christ our Lord.


Shehbaz meets Nawaz in Jati Umra
by https://www.facebook.com/dunyanewsLAHORE (Dunya News) – President of Pakistan Muslim League Nawaz (PML-N) Shehbaz Sharif on Sunday met his elder brother and former premier Nawaz Sharif to apprise him about the arrangements made for his health abroad.
Sources said that Shehbaz told Nawaz and other members of Sharif family including Maryam Nawaz that all arrangements for the treatment have been made.
Shehbaz Sharif told Nawaz that he will take the responsibility of his treatment. He said LHC gave them relief in its verdict.


aamir husain
Who, me?
Things I've made
University takeaways
Nine-to-fives, etc.
I like photography
Reach out


--- layout: post status: publish published: true title: puppet types and providers author: display_name: neil login: neil email<EMAIL_ADDRESS>url: '' author_login: neil author_email<EMAIL_ADDRESS>wordpress_id: 187 wordpress_url: https://blog.mitese.co.uk/?p=187 date: '2016-11-23 18:12:14 +0000' date_gmt: '2016-11-23 18:12:14 +0000' categories: - Development tags: - puppet - exec - types and providers comments: [] ---
After becoming very inspired following Martin Alfke's "Moving From Exec to Types and Providers" talk at Puppet camp London, I feel the need to share the love that is Types and Providers.
These are the building blocks of Puppet, written in Ruby that give us the Resource types in our classes, such as File or User.
If you don't mind 'fun' language, then Gary's post Fun with Providers here will help explain things better than I can here.
I'm currently working on a scalable and resilient Mongodb replication cluster and have this long bash script triggered by an Exec. This is bad, not only because exec statements are a sign that technical debt is building, but the audit entries from Puppet are sparse.
My team will be working on getting up to speed with types and providers to create a much better Mongodb puppet module experience.
All going well, this code may find its way into the puppetlabs mongodb module.


At Patataj we use only the freshest ingredients sourced from as many local suppliers as possible. You will be pleased to know, however, that certain ingredients come from further afield, namely Thailand.
To create authentic Thai food you need to use authentic Thai herbs and spices, such as holy and sweet basil, lime leaf, lemongrass, galangal, gachai, coriander and of course Thai chilli’s. All these will be found in our kitchen where all our dishes on the following pages are freshly made.
We offer a great range of VEGETARIAN and VEGAN dishes.
If you prefer dishes to be SPICY, MEDIUM or MILD please inform our staff. Please note, due to the way some of our dishes are cooked, there can be a longer wait. We ask for your patience, but as your tastebuds will testify, it’s worth the wait!
14-15 Sutherland Rd
BIGHTON
tel 01273 748 071
Opening hours
MON - SAT : 6pm till 11pm
SUNDAY: CLOSED


Events
Schedule
Sponsors
Team
FAQ
Profile
Manage Teams
Register for Events
Logout
Login/Register
Confirmation
×
Do you want to accept or reject the request?
Event Registration
Select Event
Choose...
Cyberquest
Aerodynamix
Electromania
Genesis
Mechrocosm
Nirmaan
Oligopoly
Powersurge
Rasayans
Robomania
Monopoly
Kreedomania
Gnosiomania
Select Contest
Choose...
Select Team
Choose...
Register


[dscrdeql] <CowboyCrypto- Founder> Still waiting for it to drop below that threshold
[dscrdeql] <Jellysmash> I've never bought doge before...maybe I should look into it
[dscrdeql] <Jellysmash> Just seems a little risky
[dscrdeql] <Jellysmash> But I've heard it goes through theses boom and bust cycles often...so may be worth pursuing
GatewayBOT21-Aug-18 03:02 AM
[dscrdeql] <CowboyCrypto- Founder> I call that move the doge city heist
[dscrdeql] <CowboyCrypto- Founder> Buy below 20 sats and wait
[dscrdeql] <MySoulisNotForSale> doesn't doge have unlimited supply?
[dscrdeql] <Jellysmash> Haha...how long so you normally have to wait?
GatewayBOT21-Aug-18 03:13 AM
[dscrdeql] <CowboyCrypto- Founder> Usually a month or 2
[dscrdeql] <CowboyCrypto- Founder> I hit 3 of em last year
[dscrdeql] <CowboyCrypto- Founder> 200% or better each time
[dscrdeql] <CowboyCrypto- Founder> Ok I gotta go turn wrenches in the morning
[dscrdeql] <CowboyCrypto- Founder> Sleep time
[dscrdeql] <Jellysmash> Ok, chat tomorrow
GatewayBOT21-Aug-18 03:48 AM
[dscrdeql] <MySoulisNotForSale> alrighty then
[dscrdeql] <Podmaster> yeah doge was useful for escaping high fees from excahnges
[dscrdeql] <Podmaster> but otherwise yeah treat with caution
[dscrdeql] <Podmaster> yeah doge has unlmiited supply i think
[dscrdeql] <Adrian >
GatewayBOT21-Aug-18 04:13 AM
[dscrdeql] <AndronicusBass-Founder>
GatewayBOT21-Aug-18 04:27 AM
[dscrdeql] <Podmaster> coffee for doges
[dscrdeql] <Podmaster> does it do anything to the doges?
GatewayBOT21-Aug-18 04:38 AM
[dscrdeql] <Adrian >
GatewayBOT21-Aug-18 05:14 AM
[dscrdeql] <ghøst> Morning!
[dscrdeql] <ghøst> need more coffee
[dscrdeql] <Combat Wom-mod>
[dscrdeql] <Combat Wom-mod> morning
[dscrdeql] <KQweci-Mod> Morning @everyone
[dscrdeql] <KQweci-Mod>
[dscrdeql] <jester21> @KQweci
[dscrdeql] <KQweci-Mod> Hey @jester21 How is it going
[dscrdeql] <jester21>
[dscrdeql] <nervash> morning
[dscrdeql] <Raymart> Hello
[dscrdeql] <KQweci-Mod> Morning @nervash
[dscrdeql] <skyfyre> Hi
[dscrdeql] <Orc-hiD> sup guys
[dscrdeql] <iput_nice>
[dscrdeql] <Combat Wom-mod> @KQweci I don't think you should tag everyone to say good morning lol
[dscrdeql] <Combat Wom-mod> But good morning buddy
[dscrdeql] <Combat Wom-mod>
[dscrdeql] <Podmaster> Morning to you lol
[dscrdeql] <Podmaster> :success:
[dscrdeql] <Jellysmash> @Podmaster nice one
[dscrdeql] <Jellysmash> Victory fist
[dscrdeql] <Combat Wom-mod> Hey pod hey jelly
[dscrdeql] <Jellysmash> Hey @CombatWombat
[dscrdeql] <Jellysmash>
[dscrdeql] <Jellysmash> @Raymart hello
[dscrdeql] <Combat Wom-mod> Thanks I'll take that coffee need a second one lol
[dscrdeql] <Jellysmash> @Orc-hiD how's it going
[dscrdeql] <Jellysmash> I'm at work
[dscrdeql] <Jellysmash> Trying to concentrate
[dscrdeql] <Jellysmash> Haha...not working
[dscrdeql] <Combat Wom-mod> Haha discord at work
[dscrdeql] <Jellysmash> Yea
[dscrdeql] <Combat Wom-mod> Yeah I do that when it's quiet
[dscrdeql] <Jellysmash> Yea, why not
[dscrdeql] <Orc-hiD> hi guys
[dscrdeql] <Mommesh> Good afternoon
[dscrdeql] <Jellysmash> Hey there @Orc-hiD Amd @Mommesh
[dscrdeql] <AndronicusBass-Founder> Allo, allo
[dscrdeql] <Jellysmash> It's my afternoon
[dscrdeql] <Orc-hiD> im just a beginner here @jellysmash
[dscrdeql] <Jellysmash> Cool
[dscrdeql] <Jellysmash> Have you typed in begin?(edited)
[dscrdeql] <AndronicusBass-Founder> haha
[dscrdeql] <Jellysmash> Damn autocorrect
[dscrdeql] <Orc-hiD> yes
[dscrdeql] <Jellysmash> Cool
[dscrdeql] <Jellysmash> Then you vcan get the trains
[dscrdeql] <Jellysmash> Rains
[dscrdeql] <Jellysmash> Lol
[dscrdeql] <Orc-hiD> how to get rains
[dscrdeql] <AndronicusBass-Founder> I think everyone in the world has had run ins with autocorrect, everyone knows what it all means lol Human evolution will be autocorrect speak
[dscrdeql] <Jellysmash> You get them automatically
[dscrdeql] <nille> morning
[dscrdeql] <Jellysmash> You can go to #off-topic and see if someone does a rain
[dscrdeql] <Jellysmash> Hey there @nille
[dscrdeql] <Jellysmash> Seems like the world is waking up
[dscrdeql] <KQweci-Mod>
[dscrdeql] <KQweci-Mod> Sorry I wake everyone up lol
[dscrdeql] <Jellysmash> Lol
[dscrdeql] <Jellysmash> You must have
[dscrdeql] <nille> @Jellysmash hl
[dscrdeql] <KQweci-Mod> Had no idea tagging @ everyone will sent message to everyone on serve
[dscrdeql] <Jellysmash> Good idea
[dscrdeql] <Jellysmash> You called...they came
[dscrdeql] <Tipsy (EQLI)> :tipsy:
[dscrdeql] <KQweci-Mod> Yes
[dscrdeql] <AndronicusBass-Founder> the 'here' tag alerts people only online but its often frowned upon to tag everyone or here if its not important(edited)
[dscrdeql] <AndronicusBass-Founder> many people dont like it in discord world
[dscrdeql] <KQweci-Mod> I agree
[dscrdeql] <AndronicusBass-Founder>
GatewayBOT21-Aug-18 06:02 AM
[dscrdeql] <Combat Wom-mod> have a good day people off to work ill see you all later
[dscrdeql] <Jellysmash> Ok, see you later @CombatWombat


{% extends "base.html" %} {% load staticfiles %} {% load crispy_forms_tags %} {% block title %}{{ block.super }}Home{% endblock %} {% block navbar-left %} {% include "_navbar.html" with active_link="home" %} {% endblock %} {% block navbar-right %} {% if not user.is_authenticated %} Log in Sign up {% else %} {{ block.super }} {% endif %} {% endblock %} {% block splash %}
Glycemic Patterns is an application that recognizes patterns in glucose data collected by blood sugar monitoring devices. Upload your files obtained with your FreeStyle device and download the PDF report to know the patterns of your blood sugar levels.
The main purpose of Glycemic Patterns application is to help physicians and diabetic patient to identify risk situations or disorders in the amount of glucose in the blood. Decide which information do you want to use for the recognition of patterns and if you want to include additional statistics to go deeper in your historical data.
The application generate a decision tree for each condition (Hyperglycemia, severe hyperglycemia and hypoglycemia) and recognize the patterns that are human-readable and presented in a report. It trusts in decision trees for the pattern recognition and they are included in the report so that you can see where the patterns are coming from


React Fundamentals III
Kay Ashaolu
Lets go back to our clock example
- Remember how we executed the tick() function every second
- We used the setInterval function provided by the browser JavaScript engine to execute the function every second
- We forced React to render the element over and over again using the ReactDOM.render function
Tick Function Example
import React from "react";
import ReactDOM from "react-dom";
function tick() {
const element = (

Hello, world!

It is {new Date().toLocaleTimeString()}.

);
ReactDOM.render(element, document.getElementById('root'));
}
setInterval(tick, 1000);
This isn't terribly efficient
- If we had to tell each component when to render, we would run into some problems
- What if one component's data relates to another components data?
- What if we want to have more than one Clock on the page?
- This is why we want to start to encapsulate this clock so that it can be used throughout our application
- Encapsulation method: create a Clock component i.e. a JavaScript class
Clock React Component
import React from "react";
import ReactDOM from "react-dom";
class Clock extends React.Component {
render() {
return (

Hello, world!

It is {this.props.date.toLocaleTimeString()}.

);
}
}
function tick() {
ReactDOM.render(

<Clock date={new Date()} />
<Clock date={new Date()} />

,
document.getElementById('root')
);
}
setInterval(tick, 1000);
Note what is happening
- We moved the render logic of the Clock to its own JavaScript class
- By doing this, we were able to create two clock instances in the tick() function
- We are still using ReactDOM.render to forcibly rerender both Clock instances
Note what is happening
- Even though we do have two "Clock components", they are synchronized
- This is because each Clock is sourcing its date/time info to {this.props.date.toLocaleTimeString()}
- That will be the same for every Clock instance
What if you want more
- What if you wanted to have a clock for a different time zone?
- Then each clock instance would have to have some unique data about itself (e.g. it's current time, its time zone)
- What we would want is that each clock has its own state
Clock Example
import React from "react";
import ReactDOM from "react-dom";
class Clock extends React.Component {
constructor(props) {
super(props);
let clock_date = new Date()
clock_date.setHours(clock_date.getHours() + parseInt(this.props.offset));
this.state = {date: clock_date};
}
render() {
return (

Hello, world!

It is {this.state.date.toLocaleTimeString()} with a {this.props.offset} offset

);
}
}
ReactDOM.render(
(

<Clock offset ="+3"/>
<Clock offset="-3" />

),
document.getElementById('root')
);
Introducing state
- Notice that we have more going on in the constructor
- We are passing a property "offset" that is being used to adjust the current time
- We are saving the current time in each Clock's state: now we have a mutable value tied to each clock
Notice Clock isn't ticking
- We don't have any code that's actually changing the state with key "date"
- Remember that we were using the setInterval function to change the date every second
- What we now want to do is set these intervals to be created by the Clock itself
- Next, we want to utilize React's feature of re-rendering a component when the component's state changes
Lifecycle Methods
- We want to be able to be efficient with the computing resources we use
- If we are done with a resource, freeing up that resource becomes very important, especially if you have several components in the same page
- There are special functions that are executed by React during special times
Lifecycle Methods
- We want to set up a setInterval timer whenever the Clock is fully created and rendered to the DOM for the first time. This is called mounting
- We also want to clear said timer whenever a specfic Clock component is removed from the DOM for any reason. This is called "unmounting"
- componentDidMount() does the first, componentWillUnmount() does the second
Lifecycle Example
import React from "react";
import ReactDOM from "react-dom";
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: this.getCurrentDate()};
}
componentDidMount() {
this.timerID = setInterval(
() => this.tick(),
1000
);
}
componentWillUnmount() {
clearInterval(this.timerID);
}
getCurrentDate() {
let new_date = new Date();
new_date.setHours(new_date.getHours() + parseInt(this.props.offset));
return new_date;
}
Lifecycle Example
tick() {
this.setState({
date: this.getCurrentDate()
});
}
render() {
return (

Hello, world!

It is {this.state.date.toLocaleTimeString()} with a {this.props.offset} offset

);
}
}
ReactDOM.render(
(

<Clock offset ="+3"/>
<Clock offset="-3" />

),
document.getElementById('root')
);
Lifecycle Example
- Note that with a single call to ReactDOM we were able to create Clocks that tick
- This is because we are utilizing the second way to tell React to rerender a component: changing it's state
- We do this in the tick() function
Lifecycle Example
- Note that each clock is creating its own setInterval timer using the componentDidMount() function and clearing the timer with the componentWillUnmount() function
- Note also that it was able to set a class variable to the timerID (i.e. this.timerId)
- Since the id of the timer that's executing the tick function is not important to the rendering of the component, we don't need it in the state
- Try to put only the minimum number of variables in the state since if any of the state variables change it rerenders the component
Lifecycle Example
- Note that in the tick() function, we set the state using the function this.setState() instead of setting the state directly
- This is intentional and good practice: outside of the constructor you should change the state of a component using these functions
- Among other advantages this enables React to know to rerender that component


Tough crowd: Leaders face combative grilling by Question Time audience
The questioners didn’t pull their punches.
The main political party leaders faced a tough grilling from the Question Time audience, with Boris Johnson jeered, while Jeremy Corbyn was accused of having “reckless socialist ideas”.
During the BBC’s Leaders Special, the audience was hostile to all four party leaders, but particularly to the Prime Minister, who was quizzed on trust, the NHS and his controversial work as a journalist.
Mr Johnson was asked: “How important is it for someone in your position of power to always tell the truth?”
He was met with loud groans as he blamed the erosion of trust in politicians on Brexit.
“There is so much groaning here” host Fiona Bruce noted later, before telling the audience to settle down.
One audience member asked Mr Johnson: “Racist rhetoric in this country is completely rife. Will you admit that you have personally contributed to this and say the words ‘I’m sorry’?”
Bruce highlighted articles written by Mr Johnson where he compared Muslim women to letterboxes and said tribal warriors had “watermelon smiles”.
The Prime Minister said he defended his right to speak and parts of his articles had been taken out of context.
He added the article was a liberal defence of women’s right to wear what they wished.
The audience of approximately 150 people had a roughly equal split between Conservative and Labour voters, with smaller groups of SNP and Liberal Democrat voters.
Jeremy Corbyn was quizzed over nationalisation, anti-Semitism, misogyny and freedom of speech.
Asking a question about the Labour policy of nationalising broadband, one audience member said: “Your reckless socialist ideas are genuinely terrifying to me, my family and my friends and I think freedom will completely erode if we let you have the keys to Number 10.”
Someone else asked: “I look at some of the female Labour MPs and the misogyny that is happening in the Labour Party, they have been driven out of the party.”
The questioner referenced a video of former Labour MP Ruth Smeeth being heckled at a Labour Party event before Mr Corbyn was said to happily talk with the heckler.
He continued: “I don’t buy this whole nice old grandpa, I see that video and that tells me all I need to know and I am terrified for my daughters because I see what you did in that video.”
The Labour leader was questioned about his stance on a second Scottish independence referendum.
“Is the UK like the Hotel California? You can check out any time you want but never leave?” an audience member asked.
Jo Swinson was later mocked for declaring she could be prime minister at the start of the General Election campaign.
The Liberal Democrat leader was asked: “Do you regret starting off the campaign by saying you could be PM and do you now agree how ridiculous that sounded?”
“Start with the easy ones,” Ms Swinson replied before adding that the election was not a binary choice between Jeremy Corbyn and Boris Johnson.

An audience member later challenged the Lib Dem leader about her criticism of Mr Corbyn.
He said: “Jeremy Corbyn has been fighting anti-Semitism and racism in all its forms since before you were born, you’ve got some brass neck!”
Nicola Sturgeon was questioned about Scottish independence and the potential of neglecting Scotland’s interest over Brexit.
An audience member asked: “You argue that you’re so against Brexit and so on, but surely your own independence is another form of Brexit?”