Me Myself I Directed by: Pip Karmel Starring: Rachel Griffiths, David Roberts, Sandy Winton, Yael Stone, Shaun Loseby, Trent Sullivan Running time: 104 minutes My rating (5 star scale): ****1/2
Pamela Drury (Griffiths) is a successful career woman. She is an award winning journalist. But years earlier, she turned down a marriage proposal from her high school sweetheart, Robert Dickson. But a magical moment changes all that. Pamela suddenly finds herself in an alternate universe where she said yes.
But there is a big difference between the dream of a marriage and the reality. Pamela finds herself saddled with 3 children: a boy who calls her dumbhead, a girl who asks questions like 'if you haven't had your period yet do you need to use condoms', and a small boy who can't go to the bathroom by himself. She has a husband who is often away on business and is up much of the night reading for work.
She overcomes these initial difficulties. But she learns that the perfect marriage and the perfect life really weren't that perfect. And things really come to a head when she discovers what has happened to her career.
This is a film about the danger of getting what you wish for. It's a serious theme but a lighthearted movie. The depictions of the reality of married life are dead on. The humour arises naturally from the subject matter and Griffiths does a great job in both her roles.
This film fell short of 5 stars because I didn't find myself making an emotional connection to any of the characters. Possibly married people might find it easier to make that connection. But regardless of your spousal status, you definitely should see this film. Well worth theatre prices.
-- Allan Jenoff Check out my web page at http://www3.sympatico.ca/jenoff/
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


DBC week 3: Technical blog
Absolute, Relative, Fixed and Static Positioning: How do they differ?
Established on Dec. 18, 2015
CSS Positioning is not hard but some of its concepts were abstract and mostly misused. After reading articles about CSS positioning, I would like to share the difference of the four positioning values of CSS positioning.
Static: Every single page element is positioned in static
by default. It means the element will flow into the page as it normally would.
Relative: What it actually means is "relative to itself". If one set position: relative;
but no other position attributes (top, bottom, left, right) it will show no effect on its positioning at all. It will be exactly as it would be as setting to static
. One more thing should be mentioned is Relative
also limits the scope of absolutely positioned child elements.
Absolute: Similar to Relative
, you want to use position attributes (top, bottom, left, right) to set the location on the page. The element that positioned as absolute
will be positioned relatively to its parent which was positioned relatively or absolutely. If no such parent was positioned before it, it will trace all the way back to the < html >
element. Meaning it will be positioned relative to the page itself. Absolutely positioned elements are removed from the flow of the page.
Fixed: A fixed position element is positioned relative to the viewport, or the browser window itself. The viewport doesn't change when the window is scrolled, so a fixed positioned element will always stay at the same position.


In this project, we're going to build a button that counts how many times it's been clicked.
1) From the Text Elements menu, drag a heading to the page. Change the text to give your project a name.
2) From the Layout menu, drag "arrange sub-elements" into the page to center everything.
3) From the Input Elements menu, drag a button element onto the page. Click on it and see what happens.
4) Change the "arrange sub-elements" blocks to "top to bottom".
5) In the Variable menu, create a variable called "clicks". Set clicks to 0 in your page.
6) From the variable menu, drag the clicks variable in to replace the button's text.
7) Instead of printing a message, make the clicks variable go up by one when the button is clicked.
8) Add more text into the button to make it say the full sentance, "I have been clicked X times", where X is the value of counts. (You may need horizontal spacers from the Container Elements menu.)
9) From the Layout menu, drag the background color block inside of the button.
10) Drag "test if true if false" in Logic to the background color block in the button. If the number of clicks is even, then the background should be green, and if the number of clicks is odd then the background color should be red.


 We will check and confirm your dealer license number and company ABN after you apply. This information is essential and if you don't provide it unfortunately we will need to reject your application.
Any dealer who receives three complaints from vehicle sellers or who has failed to comply with our terms and conditions will be barred from using our service.
It is currently available in NSW but we are planning to extend the service throughout Australia.
IMDEALER's auction system is based on a blind or ‘sealed bid’ auction model where bidders simultaneously submit bids to the auctioneer without the knowledge of the amount bid by other participants.
Auctions are open for
48 hours. In our auction, the car seller declares the winner. Usually, the highest bidder will have the best chance of winning but remember that reviews can also play an important part.
The successful bid price will
be the purchase price. You must bid the exact price you want to pay.
After the auction closes the car seller will declare which participant is the winner. We will contact the winner and provide a detailed guide
about what to do next. The winner then has only to collect the car and finalise the deal.
Under this system you cannot modify your bid price. However, in the case of a simple mistake we will consider a change to bid price. Contact us at<EMAIL_ADDRESS>with the plate number, your name, dealer license and the bid price you intended in that case.
When you are the successful dealer in an auction we will send you an email providing detailed information about the commission payment.
IMDEALER provides detailed information about each car including history, damaged parts and at least 5 photos including both interior and exterior. Your bid is based on this information. If, on purchase, you find that the information is lacking or inaccurate then you may make reasonable adjustment to the price. However, take care when adjusting the price as car sellers can leave negative reviews if you adjust the price excessively.
You have to go and collect the car within a week unless you negotiate another mutually agreeable time with the seller. We recommend that you make sure of the location before bidding.
No. We don't have a monthly fee or other periodic fee. We only have a commission when the deal is done.


Our amazing Chatbot is the most amazing because we use state of the art hard coded rule based responses!
The best thing about our chatbot is, that it has become selfaware.
The best thing about our chatbot is, that it has become selfaware.
The best thing about our chatbot is, that it has become selfaware.
The best thing about our chatbot is, that it has become selfaware.
The best thing about our chatbot is, that it has become selfaware.
The best thing about our chatbot is, that it has become selfaware.
The best thing about our chatbot is, that it has become selfaware.
The best thing about our chatbot is, that it has become selfaware.
The best thing about our chatbot is, that it has become selfaware.
The best thing about our chatbot is, that it has become selfaware.


This post is going to be about using simple object collectors to get a list of virtual machines on a given host. Now, there are a couple of ways to do this, namely using traversal objects, but for this post, we are going to keep it simple. We will get to the TraversalSpec object in some later posts, so we will revamp this code at that time. For now, I am going to focus on creating simple collector objects so we can us them as building blocks.
Disclaimer: I know there are some flaws in the code below, mainly traversing multiple folders, etc. Please remember this is base code to help get an understanding of the VMWare SDK and its methods not a comprehensive programming example :)
So the first thing to understand about the ESX infrastructure is the hierarchy. Lets check out the picture below.
As you can see, the ESX Server structure is as follows
rootFolder (Everything is a child of this object)
------ Datacenter
------------ Folder
--------------------- VirtualMachine
Given the following structure and the previous comment about making “simple” collectors, we will create three methods each returning a ManagedReferenceObject (this is a VMWare object that you can learn about more in the SDK).
The first method will return the Datacenter object, by passing into the method the main rootFolder.
The second method will return a vmFolder by passing into the method a Datacenter object.
The third method will return a array of virtual machines by passing into the method a vmFolder object.
We also have a helper method that will return some specific properties given a virtual machine object.
So, with that lets get started.
Here is the first method. This method returned the root datacenter object.
public ManagedObjectReference GetVMRootDataCenter( ManagedObjectReference RootFolder )
{
ManagedObjectReference _returnObject = null;
PropertySpec[] _ps = new PropertySpec[] { new PropertySpec() };
_ps[0].type = "Folder";
_ps[0].pathSet = new string[] { "childEntity" };
ObjectSpec[] _os = new ObjectSpec[] { new ObjectSpec() };
_os[0].obj = RootFolder;
_os[0].skip = false;
PropertyFilterSpec[] _pfs = new PropertyFilterSpec[] { new PropertyFilterSpec() };
_pfs[0].propSet = _ps;
_pfs[0].objectSet = _os;
ObjectContent[] _rootFoldersObjectContent = this._vmService.RetrieveProperties(this._vmServiceContent.propertyCollector, _pfs);
foreach (ObjectContent _rootFolder in _rootFoldersObjectContent)
{
Array _objectsReturned = (Array)_rootFolder.propSet[0].val;
_returnObject = (ManagedObjectReference)_objectsReturned.GetValue(0);
}
return _returnObject;
}
Here is the second method. This method returns a vmFolder given a Datacenter object.
public ManagedObjectReference GetVMFolder( ManagedObjectReference ParentObject )
{
ManagedObjectReference _returnedObject = null;
PropertySpec[] _dataCenterPropertySpec = new PropertySpec[] { new PropertySpec() };
_dataCenterPropertySpec[0].type = "Datacenter";
_dataCenterPropertySpec[0].pathSet = new string[] { "vmFolder" }; //Return the vmFolder objects
ObjectSpec[] _dataCenterObjectSpec = new ObjectSpec[] { new ObjectSpec() };
_dataCenterObjectSpec[0].obj = ParentObject;
_dataCenterObjectSpec[0].skip = false;
PropertyFilterSpec[] _dataCenterToFolderPFS = new PropertyFilterSpec[] { new PropertyFilterSpec() };
_dataCenterToFolderPFS[0].propSet = _dataCenterPropertySpec;
_dataCenterToFolderPFS[0].objectSet = _dataCenterObjectSpec;
ObjectContent[] _vmFoldersObjectContent = this._vmService.RetrieveProperties(this._vmServiceContent.propertyCollector, _dataCenterToFolderPFS);
foreach (ObjectContent _vmFolder in _vmFoldersObjectContent)
{
_returnedObject = (ManagedObjectReference)_vmFolder.propSet[0].val;
}
return _returnedObject;
}
Here is the third method. This method returns a array of virtual machines given a vmFolder object.
public ManagedObjectReference[] GetVMChildEntities(ManagedObjectReference ParentFolder)
{
ManagedObjectReference[] _a = null ;
PropertySpec[] _dataCenterPropertySpec = new PropertySpec[] { new PropertySpec() };
_dataCenterPropertySpec[0].type = "Folder";
_dataCenterPropertySpec[0].pathSet = new string[] { "childEntity","name" }; //Return the vmFolder objects
ObjectSpec[] _dataCenterObjectSpec = new ObjectSpec[] { new ObjectSpec() };
_dataCenterObjectSpec[0].obj = ParentFolder;
_dataCenterObjectSpec[0].skip = false;
PropertyFilterSpec[] _dataCenterToFolderPFS = new PropertyFilterSpec[] { new PropertyFilterSpec() };
_dataCenterToFolderPFS[0].propSet = _dataCenterPropertySpec;
_dataCenterToFolderPFS[0].objectSet = _dataCenterObjectSpec;
ObjectContent[] _vmFoldersObjectContent = this._vmService.RetrieveProperties(this._vmServiceContent.propertyCollector, _dataCenterToFolderPFS);
foreach (ObjectContent _vmFolder in _vmFoldersObjectContent)
{
Array _childEntities = (Array)_vmFolder.propSet[0].val;
_a = new ManagedObjectReference[_childEntities.Length];
for (int i = 0; i < _childEntities.Length; i++)
{
_a[i] = (ManagedObjectReference)_childEntities.GetValue(i);
}
}
return _a;
}
So, from those method we will be able to traverse the folder structure and return a list of virtual machines configured on a given ESX Server.
The last method we need is a help method, that will return some properties on a given virtual machine. That is list below.
public System.Collections.Hashtable GetVMWareVirtualMachineProperties( ManagedObjectReference ObjectToRetrieve )
{
PropertySpec[] _childEntitySpecs = new PropertySpec[] { new PropertySpec() };
_childEntitySpecs[0].type = "VirtualMachine";
_childEntitySpecs[0].pathSet = new string[] { "name","runtime.powerState" };
ObjectSpec[] _childEntityObjects = new ObjectSpec[] { new ObjectSpec() };
_childEntityObjects[0].obj = ObjectToRetrieve;
_childEntityObjects[0].skip = false;
PropertyFilterSpec[] _pfs = new PropertyFilterSpec[] { new PropertyFilterSpec() };
_pfs[0].objectSet = _childEntityObjects;
_pfs[0].propSet = _childEntitySpecs;
ObjectContent[] _childEntityProps = this._vmService.RetrieveProperties(this._vmServiceContent.propertyCollector, _pfs);
System.Collections.Hashtable _allProps = new System.Collections.Hashtable();
foreach (DynamicProperty _prop in _childEntityProps[0].propSet)
{
_allProps.Add(_prop.name, _prop.val);
}
return _allProps;
}
So now we have all the required methods for traversing the folder structure. Lets put it together by logging into the ESX server and calling the methods we have defined about
Before going on, lets add the following as global vars in our project.
private VimService _vmService = null;
private ServiceContent _vmServiceContent = null;
UserSession _vmLoginSession = null;
And here is the login code. You can also view the article on logging into the web service by clicking here.
this._vmService = new VimService();
_vmService.Url = @"https:///sdk";
_vmService.CookieContainer = new System.Net.CookieContainer();
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCerts();
ManagedObjectReference _object = new ManagedObjectReference();
_object.type = "ServiceInstance";
_object.Value = "ServiceInstance";
this._vmServiceContent = this._vmService.RetrieveServiceContent(_object);
this._vmLoginSession = _vmService.Login(_vmServiceContent.sessionManager, "", "", null);</pre>
Once this is done, we can add the code to actually call our method and return the requested information
ManagedObjectReference _rootDataCenter = this.GetVMRootDataCenter(this._vmServiceContent.rootFolder);
ManagedObjectReference _vmFolder = this.GetVMFolder(_rootDataCenter);
foreach (ManagedObjectReference _vm in this.GetVMChildEntities(_vmFolder))
{
System.Collections.Hashtable _props = this.GetVMWareVirtualMachineProperties(_vm);
Console.WriteLine("{0}:{1},_props["name"].ToString(), _props["runtime.powerState"].ToString());
}
Ok, thats it, if you run the code you should see a list of your virtual machines along with the power status of each one of them.
Look for more howto’s soon. Hopes this help.


This port is located at about the midway point in Colombia's Pacific coast. It has the reputaion of being one of the most violent cities in the country.
SV Sarana have some information provided by the Colombian Navy in their documention: http://www.svsarana.com/free_guides.php#COL
Position 03° 45'N, 77° 15'W.
Although this is a Port of Entry, it is not the best place for yachts, except in an emergency.
Full details on the formalities required for clearing into and out of Colombia can be found at Colombia Formalities.
For a list of agents see Clearance Agents.
Remember, an agent is required to clear into and out of Colombia, so no attempt at contacting the Port Captain should be made, except through your nominated clearing agent (Agencia Maritima) on arrival.
Great care needs to be taken in this bay due to the number of logs and other debris washed into it from the surrounding rivers.
The port should not be approached at night as the large number of un-marked fishing nets are impossible to see in the dark.
There are several marinas here, mainly for sports boats.
Last updated April 2015.


| goog.gears.MultipartFormData |
|
addBlob(name, fileName, blob)
⇒
Adds a Gears blob as a file to the multipart.
Arguments:
Returns:
The form builder itself.
|
code » | ||||
|
addFile(name, gearsFile)
⇒
Adds a Gears file to the multipart.
Arguments:
Returns:
The form builder itself.
|
code » | ||||
|
addText(name, value)
⇒
Adds some text to the multipart.
Arguments:
Returns:
The form builder itself.
|
code » | ||||
|
assertNoBoundary_(v)
Asserts that the value does not contain the boundary.
Arguments:
|
code » | ||||
|
assertNotClosed_()
Asserts that we do not try to add any more data to a closed multipart form
builder.
|
code » | ||||
|
getAsBlob()
⇒
GearsBlob
No description.
Returns:
GearsBlob
The blob to use in the send method of the GearsHttpRequest.
|
code » | ||||
|
getContentType()
⇒
The content type to set on the GearsHttpRequest.
var builder = new MultipartFormData;
...
ghr.setRequestHeader('Content-Type', builder.getContentType());
ghr.send(builder.getAsBlob());
Returns:
The content type string to be used when posting this with a GearsHttpRequest.
|
code » |


Game 1: Milwaukee Bucks at New York Knicks
My Pick:
Milwaukee Bucks
Why I'm Rolling with them:
The Bucks are the second seed in the East, and have been doing incredibly well. The Knicks have been struggling, and they also don't have anyone to guard any of the big 3 of the Bucks. Even beyond that, having Kanter to go up against Lopez will be a disaster. He's incredibly slow on the perimeter, and will struggle against the three point shooting Lopez provides. Milwaukee takes it, 120-109.
Game 2: Golden State Warriors at Detroit Pistons
My Pick:
Golden State Warriors
Why I'm Rolling with them:
Detroit played well last night, but the Warriors have looked fairly good lately, a close loss to Toronto a disappointing end to a mini win streak. However, the Pistons are a tough team as well, demolishing the Bulls by 19 last night. Their main issue lies in that they have no one to defend Durant OR Thompson, which will be a rude awakening when the Warriors come out of the gates strong, and win this one 117-112.
Game 3: Brooklyn Nets at Washington Wizards
My Pick:
Washington Wizards
Why I'm Rolling with them:
This game I was originally going to say Nets. I think they're the better team, as we saw when they gave a very good Memphis team all they could handle. But there's the issue, they played a game that went to double OT yesterday and now have to be in Washington tonight. That's got to take a toll, and it may be enough for Beal and Wall to be able to take this game over, even without Dwight on the boards against Allen. Wizards win 105-98.
Game 4: Toronto Raptors at Cleveland Cavaliers
My Pick:
Toronto Raptors
Why I'm Rolling with them:
The Raptors recently played an incredibly close game against the Warriors on Thursday, and after failing to close out in the 4th they came through in overtime. This Cav's team got blown out by the Celtics yesterday and I don't imagine much will change tonight. Toronto should have an easy time against this weaker, tired, Cleveland squad. If they win by less than 10 I would be shocked, Raptors 118-102.
Game 5: Chicago Bulls at Houston Rockets
My Pick:
Houston Rockets
Why I'm Rolling with them:
The Rockets absolutely demolished the Spurs yesterday, and are facing a far weaker Bulls team who lost to Detroit last night. Both teams are on back to backs so that's not an issue for either team, and I have more faith in Harden and Paul than I do in Carter JR and LaVine. Houston should be able to continue their winning ways tonight, taking this one 113-99.
Game 6: Boston Celtics at Minnesota Timberwolves
My Pick:
Minnesota Timberwolves
Why I'm Rolling with them:
This is a hard one for me to judge, but I really like what Covington has brought to this Minnesota team. Since the trade, they've been 4th in defensive rating and have looked very sharp, absolutely destroying the Spurs. KAT is a matchup nightmare for the Celtics, who don't have anyone to deal with him. The Timberwolves win this one 119-114 despite a 30 point performance from Irving.
Game 7: Indiana Pacers at Sacramento Kings
My Pick:
Sacramento Kings
Why I'm Rolling with them:
The Sacramento Kings lost a close game yesterday to the Jazz, but they should be able to turn it around tonight against the Pacers. No one on Indiana is fast enough to keep up with Fox, and the three-point shooting of the Kings should prove tricky for Indiana to handle. The advantage of Sabonis coming off of the bench should be at least partially offset by Bagley, who has been playing incredibly well in his own right. Sacramento wins a close one, 116-113.


SafeGraphR is an R package designed to make it easy to read in and process data from SafeGraph, including data that comes through the Placekey consortium or the catalog. You may want to consult the Quick Start Guide, the Awesome SafeGraph Data Science List, the Normalization Best Practices, and especially the SafeGraph Docs.
You can install SafeGraphR directly from GitHub.
# if necessary
# install.packages('remotes')
remotes::install_github('SafeGraphInc/SafeGraphR')
The other pages on this site will walk you through how you can use SafeGraphR to work with the data.
SafeGraphR is currently in beta. All of its functions work, but of course there may be bugs remaining. The code has also not been checked with every possible combination of options that you could pick. Lastly, the SafeGraph data itself changes format on occasion, which may break some SafeGraphR functionality.
If you run into an issue or bug in the code, please raise an Issue on the SafeGraphR Github Issues page.
If you’re just having trouble getting things to work, you can find help at the Placekey Community Slack Channel in the r-troubleshooting room.
Below is a list of what’s in the package with a brief description.
read_core()
: Read in a Core Places file, which you can then merge with patterns or other data to add information about each location. There is also the older link_poi_naics()
which does the same thing but can only be used to create a link between POIs and NAICS codes.
read_distancing()
: Given a list of dates, reads in and aggregates SafeGraph social-distancing v2 files.
read_many_csvs()
: Reads a bunch of CSVs in the same folder and row-binds them all together. Useful for stuff like normalization data.
read_many_patterns()
and read_patterns()
: Reads a bunch of (or one, respectively) monthly or weekly patterns .csv.gz
files all in the same folder, does appropriate processing, and row-binds the results together.
read_many_shop()
and read_shop()
: Reads a bunch of (or one, respectively) .zip
files in the format they come in from the shop and combines the data sets inside the zip across zip-files appropriately.
safegraph_aws()
: A thin wrapper for aws.s3::s3sync()
that downloads data from the SafeGraph AWS buckets.
expand_cat_json()
and expand_integer_json()
: Take SafeGraph data with a column of categorical (named) or numeric (unnamed) JSON data and expand that column, pivot the data to long format, and then aggregate to the desired level.
expand_open_hours()
: Expand the open_hours
variable into something easy to use!
fips_from_cbg()
: Take a census block group identifier and extract the state and/or county FIPS codes.
rbind_by_list_pos()
: Take a list of lists of data.table
s and row-binds them by their position in the sub-list. For example, rbind_by_list_pos(list(A,B),list(C,D))
would return list(rbind(A,C),rbind(B,D))
. Can be used after read_
functions, which in some cases return a list of data.table
s for each file they read.
hb_shrink()
: Perform hierarchical Bayesian shrinkage on the CBG-to-county or county-to-state level.
ma()
: Calculates a (by default) seven day moving average on pre-sorted data with no gaps.
sample_size_adjust()
: Adjusts data for differences in sampling rates across geographic locations.
scale_to_date()
: Adjusts data to be relative to a specific date.
scale_yoy()
: Adjusts data to be relative to the same date the previous year.
cbg_pop
: Population data from the easy census file.
county_pop
: Population aggregated to the county level.
fips_to_names
: Data set linking state and county FIPS codes to state and county names, for merging in and labeling.
naics_codes
: Data set linking NAICS codes to NAICS code titles, for merging in and labeling (or just knowing what you’re looking at).


Roasted golden beets have a natural sweetness that requires no dressing. They are light and refreshing yet have a heartiness that make them feel like an entree.
Preheat oven to 400°F
Drizzle beets with a few drops of oil. Wrap the beets in foil.
Cook for 80 mins. Remove from oven and let cool completely
Peel outer skin and slice beets.
Arrange over your favorite greens. In my case I used radish microgreens and a mix of adzuki, lentil, and pea sprouts.
A plate with golden beets atop greens, A golden beet, prior to cooking


We want to make the EKO Interactive as easy to use as possible! By removing the barrier of knowing how to code, you can create amazing games with a click of a button!
The EKO Interactive platform provides a variety of level creation tools that are able to cater to all subjects and content needs.
Students are able to access the EKO Interactive platform anywhere. That means you can create games for them to play for homework! Who would say no to that?
Co-Founder & CEO
Co-Founder & CTO
The EKO Interactive team believes gamification will be the next big movement in Edtech. Our team aims to create the best gamified education platform and help teachers around the world integrate gamification into their classrooms.


--- title: SimplyStats Thanksgiving Puzzle author: Jonathan Carroll date: 2015-11-26 09:39:33 slug: simplystats-thanksgiving-puzzle categories: [R] tags: [rstats] type: '' subtitle: '' image: '' ---
I owe a lot to Jeff Leek and Roger Peng for their great Coursera courses, in which I learned to program in R.
I owe a lot to Jeff Leek and Roger Peng for their great Coursera courses, in which I learned to program in R.
They (along with Rafa Irizarry) run the Simply Statistics blog, which I highly reccomend. They posted a Thanksgiving puzzle in which a data.frame needs to be converted from one form to another, spelling out ‘thanksgiving’.
http://simplystatistics.org/2015/11/25/a-thanksgiving-dplyr-rubiks-cube-puzzle-for-you/
The puzzle: convert this
into this
My solution, which uses Rubik’s Cube rotations of rows and columns (and dplyr of course):
Suggestions on how I could have done this differently (or automated solutions) most welcome!


Dave knows human languages
Dave is learning computer languages
Follow along!
So, I had a lot more practice with Ruby, and Ruby is just so intuitive and pretty. As a result it took me a while get the syntax right with Javascript (by "a while," I mean "still trying to get it right"). And the JS syntax for nested data structures and objects just makes my head melt. I'm glad I'm doing this, I was complaining to a pair this morning that I have yet to find a really good explanation of it, so I might have to create it myself.
I learn and remember by working backwards from examples to principles, so that is what we will be doing here (it's my cheat sheet, I can do what I want...)
So, without further ado...
BASIC SYNTAX
for (var i =1; i <= 10; i ++ ){
console.log(i)
}
"i" is the counter, it increments by 1, stopping when equal to 10. Don't forget to include "var" to declare i, unless it has already been declared. This code will print 1 to 10.
CAUTION: use the syntax FOR X IN Y to loop over the keys of the object Y, DO NOT try to use like Ruby FOR X IN Y.
var i = 1
while (i <=10){
console.log(i);
i++
}
This code also counts to 10.
Here is a very basic IF statement, with an optional ELSE. These can be chained by adding ELSE IF plus a block of code.
var x = 3
if (x % 2 === 0 ){
console.log("it's even!")
} else {
console.log("it's odd!")
}
If we abstract this we get:
if(condition) {
do this block of code
}
OBJECTS
I was just starting to get Objects in Ruby and we switched to Javascript, where an "object" is a weird hybrid of a ruby hash and ruby object. On top of that, there are two different ways to access the values in JS nested data structures.
So we'll start with a tiny object, which we'll "borrow" from a recent homework assignment.
var votes = {
"Alex": { president: "Bob", vicePresident: "Devin", secretary: "Gail", treasurer: "Kerry" },
"Bob": { president: "Mary", vicePresident: "Hermann", secretary: "Fred", treasurer: "Ivy" },
"Cindy": { president: "Cindy", vicePresident: "Hermann", secretary: "Bob", treasurer: "Bob" }
}
We can have all sort of fun with this object. If we want to print out just the NAMES of the NAME: VALUE pairs, we can use this code:
for (var vote in votes){
console.log(vote)
}
This will yield the following:
Alex
Bob
Cindy
if we want just the VALUES, we can try this:
for (var vote in votes){
console.log(votes[vote])
}
This will yield:
{ president: 'Bob',
vicePresident: 'Devin',
secretary: 'Gail',
treasurer: 'Kerry' }
{ president: 'Mary',
vicePresident: 'Hermann',
secretary: 'Fred',
treasurer: 'Ivy' }
{ president: 'Cindy',
vicePresident: 'Hermann',
secretary: 'Bob',
treasurer: 'Bob' }
Note that VOTE is in brackets, but is NOT in quotes. That is because it is a variable. Names must be in quotes, variables must not be in quotes. Dot notation can be used only for established names, so while the first expression below will yield UNDEFINED, the second and third will work. We can use dot or bracket notation because Alex is an established name.
console.log(votes.vote) => undefined
console.log(votes.Alex)
OR console.log(votes["Alex"])=>
{ president: 'Bob',
vicePresident: 'Devin',
secretary: 'Gail',
treasurer: 'Kerry' }
Are we having fun yet? I'm not sure this is fun, but it is definitely helping me remember stuff, I'm already looking forward to using it.
Now let's say we want to access Alex's vote for Treasurer. We would use ANY of the expressions below:
console.log(votes.Alex.treasurer)
console.log(votes["Alex"].treasurer)
console.log(votes.Alex["treasurer"])
console.log(votes["Alex"]["treasurer"]) => Kerry
That said, just because we CAN use any of the above expressions, doesn't mean we SHOULD. It is best practice to use either dot or bracket consistently as much as possible.


The ultimate list of greatest opening lines in movie history, from Goodfellas to Bridesmaids
'As far back as I can remember, I always wanted to be a gangster'
by Jacob Stolworthy“As far back as I can remember, I always wanted to be a gangster.”
“People are always asking me if I know Tyler Durden.”
”Rosebud.“
You may not have seen the films these opening lines are in, but chances are you’ve heard them many times before, so ingrained are they in cinematic lore.
Below is a list of the films that have the greatest opening lines in cinema history.
Click through the gallery to see what we included.
Other galleries you might like:
21 actors who took their roles so seriously it out of hand
37 best film twists of all time


Money Play. How should Red play 65?
pips Red=128 White=84
(CorrectAnswer= 0/0, ErrorScore= 0)
The key here is not to give up the 23-pt in order to maintain pressure on the White checkers on his 11-pt.
Red’s plan should be to play a well-timed 2-pt game. The problem with giving up the 23-pt with 23/12 is that triples Red’s gammon losses! It does win a few more games but they don’t compensate for the gammon losses.
At DMP 23/12 would be correct but not in this money game. Either 18/12, 18/13 or 18/7 is OK with virtually nothing between them.
Red’s plan should be to play a well-timed 2-pt game. The problem with giving up the 23-pt with 23/12 is that triples Red’s gammon losses! It does win a few more games but they don’t compensate for the gammon losses.
At DMP 23/12 would be correct but not in this money game. Either 18/12, 18/13 or 18/7 is OK with virtually nothing between them.
1. Cubeful 2-ply 18/13 18/12 Eq.: -0.545 0.220 0.011 0.000 - 0.780 0.069 0.001 2. Cubeful 2-ply 18/7 Eq.: -0.562 (-0.017) 0.240 0.020 0.000 - 0.760 0.141 0.004 3. Cubeful 2-ply 18/12 8/3 Eq.: -0.586 (-0.041) 0.233 0.018 0.000 - 0.767 0.146 0.004 4. Cubeful 2-ply 18/13 8/2 Eq.: -0.593 (-0.048) 0.235 0.019 0.000 - 0.765 0.157 0.005 5. Cubeful 2-ply 23/12 Eq.: -0.667 (-0.123) 0.221 0.027 0.001 - 0.779 0.210 0.002


--- layout: default ---
Hi, I'm Derek Eder. I'm an entrepreneur, developer and one of the leaders of the civic technology community in Chicago. During the day, I run DataMade, a civic technology company. We build open source technology using data to empower journalists, researchers, governments and advocacy organizations.
I am Co-Founder and President Emeritus of Chi Hack Night, Chicago's weekly event to build, share, and learn about civic technology. Read my full bio »
Published on {{ post.date | date: "%b %-d, %Y" }}
{{ post.description }}
{{post.description | markdownify}}


MingT,
de RichterR,
ShenS,
CaillolS
2016Fighting global warming by greenhouse gas removal: destroying atmospheric nitrous
oxide thanks to synergies between two breakthrough technologies
.
Environ. Sci. Pollut. Res.
23,
6119–
6138. (
10.1007/s11356-016-6103-9).


Note: For this overview of project (git assignment), no need to
enter any credentials. Just click login button to go to
passenger dashboard.
Don't have an account? Sign up now.


Here's a coffee mug at the Silk City Diner in Philadelphia. It's an experiment to get more comfortable with shadow mapping in Three.js and play a little bit with narrative. The dialog was written by myself and Jule Maurer of Maurer Welding.
Silk City Diner, Philadelphia
Monday, March 2, 2002, 9:18am


In a 2014 report, the Consumer Financial Protection Bureau (CFPB) found that the median payday loan sequence is repaid after one month [<IP_ADDRESS>]. So in our scenario above, there are 3 possibilities - 20% of the time, the lender loses everything; 26% of the time, they get back the loan, plus the interest and late fees; and 54% of the time they get their loan back plus interest.
in-context


Dissolve In Sepia is the alias of Brazilian composer and producer Ramon Fassina. Get to know the artist behind the work. Read on →
Dissolve In Sepia is the alias of Brazilian composer and producer Ramon Fassina. Get to know the artist behind the work. Read on →


Using Java & Spring Cloud Streams (SCS) to create Event-Driven Applications with PubSub+
The purpose of this codelab is to introduce java developers to creating event-driven applications with Spring Cloud Streams and PubSub+
"Spring Cloud Stream is a framework for building highly scalable event-driven microservices connected with shared messaging systems."
It is based on Spring Boot, Spring Cloud, Spring Integration and Spring Messaging
Developer IDE & Code Access
IDE Setup
The recommended IDE for the workshop is Spring Tools Suite (STS) Download Here. STS comes with some niceties, such as autodeploy, when used with spring-boot-devtools. Participants can of course use another IDE if preferred. It is also recommended that you begin the workshop with an empty STS workspace to avoid any unforeseen issues with existing projects/configurations/code.
Use the latest JDK 1.8 (ensure your PATH & JAVA_HOME are updated as needed)
If using STS/Eclipse ensure your JDK 1.8 is thei default "Installed JRE" by choosing "Windows" -> "Preferences" -> "Java" -> "Installed JREs"
If the correct JDK does not already have a checkmark next to it then click the "Add" button, choose "Standard VM", click "Next", navigate to your JDK -> Click "Finish". Then click the checkbox next to the added JRE and click "Apply and close"
Import the projects into STS In STS, use the File -> Import -> Maven -> Existing Maven Projects -> Click Next -> Click Browse and Navigate to the git repo you cloned in the previous step -> Select all the pom files and click Finish.
After importing everything you should see the following projects in STS:
01-scs-workshop-common
02-scs-source-tweets
03-scs-sink-analytics
04-scs-sink-tweetboard
05-scs-processor-feature
06-scs-processor-dynamicfeature
07-scs-sink-bossideas
08-scs-processor-yelling
09-scs-processor-positive
10-spring-boot-mqttwebapp
The workshop uses a common data model which contains the Tweet object which is processed by the SCS services. You will need to prepare the shared artifact for use across the projects.
Throughout this workshop we have two options when building & running our Spring Boot microservices:
1) via the Spring Tool Suite IDE or
2) via maven (mvn) on the command line.
If you prefer option 1 then in the 01-scs-workshop-common project, run a Maven build and install it to the local repository.
If you prefer option 2 then navigate to the 01-scs-workshop-common directory and perform a maven install of the project.
$ cd ~/git/solace-workshop-scs/01-scs-workshop-common/
$ mvn clean install
Create and/or Verify access to a Solace PubSub+ Service
PubSub+ Service in Solace Cloud
If you want to stand up your Solace PubSub+ Service in Solace Cloud go ahead and login or signup at the Cloud Signup Page. Note that a free tier is available and will work for this workshop.
Capture the Solace Messaging connect info to be used by the Spring Cloud Streams binder throughout this workshop
Login to Solace Cloud -> Choose your messaging service -> Click the Connect tab
Click on the Solace Messaging Option
Under Connection Details capture the Username, Password, Message VPN, and SMF Host for use throughout the workshop.
Local Solace PubSub+ Instance
When developing your application, you may want to test using a local instance of the Solace PubSub+ Event Broker. Refer to the Solace Docker Getting Started Guide to get you up and running quickly with a broker instance running in Docker. You may skip this step if you decide to use a broker running elsewhere, such as in Solace Cloud.
Capture the Solace Messaging connect info to be used by the Spring Cloud Streams binder throughout this workshop
If you just deployed a docker container using the instructions linked above then the values will be as follows:
Username & Password are ‘admin',
Message VPN is ‘default',
and SMF Host is ‘tcp://localhost:55555'
Other Solace PubSub+ Service Instance
If using another PubSub+ Service Instance either get the connection information from your administrator or if you have management access it can be retrieved from the PubSub+ manager.
You will need the SMF Host, Username, Password, and Message VPN to connect to.
Multiple Codelabers
If more than one person is doing this codelab using a shared PubSub+ instance you'll need to replace ATTENDEE with a unique identifier to not receive duplicate events. As we walk through the codelab there are reminders to do so, but if you prefer to knock that out in the beginning here are a few quick commands to help you do that if running on Mac/Linux.
BE SURE TO REPLACE UNIQUE_NAME WITH A UNIQUE IDENTIFIER FOR YOURSELF!
cd /path/to/solace-workshop-scs
find . -name application.yml -exec sed -i '' 's/ATTENDEE/UNIQUE_NAME/g' {} \;
find . -name ScSProcessorFeaturesDynamic.java -exec sed -i '' 's/ATTENDEE/UNIQUE_NAME/g' {} \;
Application Architecture
At the end of this section we will have created the apps below! The Source will send out tweets that will be received by the marketing Sink.
Creating a Source
Before our company can do anything with the tweets we have to start to receive an incoming stream of them. Let's get started! Please navigate to the "02-scs-source-tweets" project in your IDE.
Learn the Project Structure
Before we take a look at the code, let's take a quick look at the structure of a Spring Cloud Streams project.
As a java developer you'll probably see a familiar project setup. You have your main application under src/main/java and unit tests under src/test/java.
Next go ahead and open up the pom.xml file in your "02-scs-source-tweets" project and search for "binder"; you should have a dependency for either "spring-cloud-starter-stream-solace" or "spring-cloud-stream-binder-solace" which is what is going to allow SCS to connect to Solace PubSub+. "spring-cloud-starter-stream-solace" includes the "spring-cloud-stream-binder-solace" dependency which is why you could have either one. It is recommended to start with the starter.
Note that the "spring-cloud-stream-reactive" dependency is only required for reactive streams support, but we will also discuss the use of "Spring Cloud Functions" as an alternative in a later section.
Let's take a look at a simple sample implementation in the image below. You can see that the enrichLogMessage method is associated with both an INPUT and OUTPUT channel. In a future section we will create an application following a similar pattern, but notice that if you look at the ScsSourceTweets.java class in your "02-scs-source-tweets" project you will see something a bit different. We are using an @InboundChannelAdapter annotation in order to create our fake tweets at a fixed rate.
One last thing to look at and then we'll run your first source! Go ahead and open your application.yml file. This file holds the bindings that tells the SCS binder how to connect your input/output channels to the specified middleware at runtime.
Run our 02-scs-source-tweets app
First open the application.yml file and update the host, msgVpn, clientUsername & clientPassword to match your PubSub+ environment. When obtaining the connect info note that the SCS solace binder uses the Solace Java API with the SMF protocol. (Keep this connection info handy as you'll need it several more times throughout this lab!)
If using STS, start the app by right clicking on the project and choosing "Run As" -> "Spring Boot App"
If not using STS, open a cli and navigate to the project's directory and then run
$ mvn clean install
$ mvn spring-boot:run
Whichever way you started the app you should see the app start, connect and begin to send tweets by looking at the console.
To do this we will create a sink app. Recall that a sink app binds to an INPUT channel.
Creating a Sink
Open the "03-scs-sink-analytics" project
Take a look at the code in the ScsSinkAnalytics.java class; you'll notice we have a very simple class with only a few methods. As we saw earlier, the @StreamListener attribute identifies which channel our sink method will receive events from. Also notice that the sink method is expecting a POJO tweet parameter of type Tweet
Now update the application.yml file for the "03-scs-sink-analytics" project with the same info that you used when creating the source app.
While updating this file also replace the ATTENDEE group with your unique name
Time to test it out! Run the "03-scs-sink-analytics" app the same way you started "02-scs-source-tweets"
Now that your sink is started you should see it logging the tweets as they come in!
Developer - Woohoo! We've created our first SCS source and sink applications and the marketing department is now getting the stream of tweets as they requested! Time to give our boss the good news.
Application Architecture
At the end of this section we will have added the Factory Tweet Board Sink.
Creating the Tweet Board Sink
We obviously don't have a giant LED board that we can use so we're going to settle for logging the tweets as they come in.
Open the "04-scs-sink-tweetboard" project
Open the ScsSinkTweetBoard.java class
Add the @EnableBinding(Sink.class) annotation to label the app as a Sink
Add a "sink" method that takes in a "Tweet" POJO from the INPUT channel and logs that it was received.
Update the application.yml file, verify that there is indeed a destination configured for the input channel, replace ATTENDEE with your unique name (e.g: TWEETS.Q.BOARD.Marc). Note that by not specifying a group we are using the "Publish-Subscribe" messaging model.
Update the host, msgVpn, clientUsername, clientPassword in the application.yml file.
Run the Tweet Board
At this point we have created our "04-scs-sink-tweetboard" application and it's ready for action!
If using STS run by right clicking on the project, choosing Run As, Spring Boot App
If not using STS open a cli and navigate to the 04-scs-sink-tweetboard project and then run
$ mvn clean install
$ mvn spring-boot:run
At this point you should see the app starting up. If all goes correctly you should see a log entry that says the application started in X seconds.
So far in this workshop we have created source or sink applications. In this section we will create our first processor.
Application Architecture
In order to meet our new goal we will add the Features processor and a new Sink as seen below.
Create the Feature Processor
Processor with a Custom Binding Interface
Open the "05-scs-processor-feature" project
Note that we have the same project setup as the source and sink apps from the previous section and the pom file doesn't have any extra dependencies to create a Processor.
Now open the ScsProcessorFeatures.java class.
Note that our @EnableBinding Annotation is specifying the ProcessorOneInTwoOutBinding class; this is because we have specified a custom interface to have 2 output channels (one for tweets with features, and one for all other tweets)
Note that in the application.yml file the bindings that are listed include input, outputFeature, and outputNoFeature as defined in our custom bindings interface.
Update the ATTENDEE to be your unique name each time it occurs in the application.yml file.
Update the host, msgVpn, clientUsername, clientPassword in the application.yml file so we can connect to the PubSub+ service
Run the app in the same manner that you've been running the others.
Processor using Dynamic Destinations
Since this microservice will duplicate the work that "05-scs-processor-feature" one is already doing let's go ahead and stop the previous microservice we deployed.
If using Spring Tool Suite, go ahead and hit the red stop button.
If running from the cli use ctrl-c to kill the process
Let's create a second feature processor that makes use of dynamic destinations.
Open the "06-scs-processor-dynamicfeature" project
Open the ScsProcessorFeaturesDynamic.java class
You'll notice that the @EnableBinding annotation defines the app as a "Sink" app. This is because we only bind the INPUT channel at startup and then at runtime we are using a BinderAwareChannelResolver (which is registered automatically by the @EnableBinding annotation) to dynamically create output channels.
Update the topicStart variable to replace ATTENDEE with your unique name
Review the handle method to see an example of how to specify dynamic destinations
Open the application.yml file and change ATTENDEE to your username & add your PubSub+ connection details
Start the application
Create the Feature Sink for the Boss
Open the "07-scs-sink-bossideas" project
Open the ScsSinkBossideas.java class
Add the @EnableBinding(Sink.class) annotation to label the app as a Sink
Add a "sink" method that takes in a "Tweet" POJO from the INPUT channel and logs that it was received.
Update the application.yml file and verify that there is indeed a destination & group configured for the input channel. Note that by specifying a group we are now using the consumer group model. Since this application will likely do further processing in the future we want to provide the option of scaling up to keep up with the number of events that come in. Replace ATTENDEE with your unique name in BOTH spots
At this point we have created our "07-scs-sink-bossideas" application and it needs to be run. Time to see if you've been paying attention!
Run the app in the same manner that you've been using
Update the Tweet Board Subscription
Note that our processor that we created earlier in this lab publishes to multiple topics essentially splitting our feed into two. Due to our new requirements to not show new features on the twitter board we need to update that sink appropriately.
Navigate to your "04-scs-sink-tweetboard" project
Open your application.yml file
Update the queueAdditionalSubscriptions property to listen on ATTENDEE/tweets/stream/nofeatures replacing ATTENDEE with your unique name
Save the file
If you're running the app within the IDE it will automatically restart the updated application, if you're running it from the cli go ahead and do a mvn clean install followed by a mvn spring-boot:run to restart the app.
Application Architecture
We're going to add a "No Yelling" processor in our event driven architecture in order to meet this new need.
Creating a SCS Processor using Spring Cloud Functions
Navigate to your "08-scs-processor-yelling" project
Open your pom.xml file and note that it was not necessary to include Spring Cloud Function as a dependency. It's included as a dependency of the "spring-cloud-steam" artifact.
Open the ScsProcessorYelling.java class.
Add the @EnableBinding(Processor.class) annotation to the ScsProcessorYelling class to label it as a processor.
Since we are creating a SCS Processor using Spring Cloud Function we will want to create a java.util.function.Function bean; to do this add a changeCase function that takes in a Flux<Tweet> and outputs a Flux<Tweet>. Code the function so that it changes the text in incoming flux tweets tweet to all lowercase. An example implementation would look like this:
After creating the function we now need to tell SCS add the spring.cloud.stream.function.definition argument to the SpringApplication.run command in the main method as seen below. This specifies which functional bean to bind to the external destination(s) exposed by the bindings.
At this point we've created our reactive function, registered it as a bean, and told spring cloud stream what function to bind to the available bindings! So let's run it and see if it works...
Running the Processor
Open the application.yml file and change ATTENDEE to your unique name
Now that we've seen how to create a SCS app using Spring Cloud Functions go ahead and run it.
After it's running you should start to see the BEFORE and AFTER log entries scrolling across the console where the AFTER log entries do not contain any uppercase letters in the text field.
Application Architecture
A processor will be added to our architecture in order to convert negative words to positive ones.
Create the Processor
Let's get started and hopefully have a bit of fun!
Open the "09-scs-processor-positive" project
Open the application.yml file and change all 3ATTENDEE placeholders with your name (in the input group, output destination & queueAdditionalSubscriptions)
Find & Open the ScsProcessorPositive.java class. At this point we know how to create and run a processor so we'll do something a bit different. At the top of the class you'll see that the negToPosMap object is being initialized in a static method. This Map holds the key for changing our negative tweets to positive ones. Go ahead and fill in some positive words for each negative one in the map. Remember that you can find the canned tweets in the canned_tweets.txt file under the "02-scs-source-tweets" project if you need some more context :)
After filling in your "positive" words go ahead and start the app
Update the Tweet Board Subscription
Navigate to your "04-scs-sink-tweetboard" project
Open your application.yml file
Update the queueAdditionalSubscriptions property to listen on ATTENDEE/tweets/stream/nofeatures/noyelling/positive replacing ATTENDEE with your name
Save the file
If you're running the app within the IDE it will automatically restart the updated application, if you're running it from the cli go ahead and do a mvn clean install followed by a mvn spring-boot:run to restart the app.
Application Architecture
To meet this new requirement we are going to add the MQTT Web App shown in the diagram below:
Obtain PubSub+ Connection Info for MQTT over Websockets
IF PARTICIPATING IN AN INSTRUCTOR LED WORKSHOP THE INSTRUCTOR WILL PERFORM THIS SECTION. YOU ARE WELCOME TO RUN LOCALLY IF YOU WOULD LIKE
If using Solace Cloud then login to Solace Cloud
Navigate to your service & choose the Connect tab
View by Protocol and Click MQTT
The Connection Details section displays the information that you'll need to connect.
You'll need the username, password, and WebSocket MQTT Host in the next step.
If using PubSub+ Software or Hardware navigate to the PubSub+ Manager
To connect using HTTP, enter: http://<pubsubplus-address>:8080 (port 80 for an appliance).
To connect using HTTPS, enter: https://<pubsubplus-address>:943 (port 443 for an appliance).
Once logged in choose your Message VPN and choose Services on the upper menu.
Scroll down to find the MQTT section, ensure WebSocket Enabled is toggled to the on position, and capture the port number.
You will use this port with the same client-username, client-password & host you're been using for previous steps.
Create the Web App
IF PARTICIPATING IN AN INSTRUCTOR LED WORKSHOP THE INSTRUCTOR WILL PERFORM THIS SECTION. YOU ARE WELCOME TO RUN LOCALLY IF YOU WOULD LIKE
Since we're Spring experts let's go ahead and whip up a quick Spring Boot app that uses JavaScript and the open source MQTT Paho library to connect to PubSub+ and receive the stream of tweets.
Open the "10-spring-boot-mqttwebapp" project
Check out the pom.xml file and notice that there is nothing spring-cloud-streams related; only spring boot!
Then open up the mqttListener.html to see how simple it was to connect & receive events using MQTT Paho.
In mqttListener.html update the host/port/username/credentials to connect to PubSub+ (Search for "UPDATE" to find where the updates need to be made) using the information found in the previous subsection.
Lastly look at the MqttWebApp.java class. You'll see that we just have a simple RestController that is smart enough to make the files in src/main/resources/static available for HTTP access.
Now that we've taken a look at how the app works go ahead and run it.
Once started navigate to http://<hostname/mqttListener.html to see the incoming tweets! You can lookup your route in the apps manager or by using the command below:
Review
Continued learning topics:
This course was just an introduction to Spring Cloud Streams, but we've included some resources below if you're interested in learning more about it or some of the features that complement it! Happy Learning :)


It seems like JavaScript is disabled on your browser, enable it to keep the conversation going.
The new kind of social network


Welcome to Hell!
This is the end of the road.
How could we have hoped to accomplish this mission.
Suicidal at best, psychotic at worst. The upper CSS
has been torment, the lower a disaster. We are barely into the basics.
Yet for all of this, the companies pride shall not falter.
Into the breach? Indeed we say.


All of the methods return the Series object to enable the chaining of configuration options
Alternatively, you can build an associative array, using the method names as keys, and pass the array into the Series's constructor


EASTER 6 SUNDAY
Entrance Antiphon
Proclaim a joyful sound and let it be heard; proclaim to the ends of the earth: the Lord has freed his people, alleluia.
Collect
Grant, almighty God, that we may celebrate with heartfelt devotion these days of joy, which we keep in honour of the risen Lord, and that what we relive in remembrance we may always hold to in what we do. Through our Lord . . .
FIRST READING Acts 8:5-8.14-17
A reading from the Acts of the Apostles
In those days: Philip went down to a city of
The word of the Lord.
RESPONSORIAL PSALM Psalm 66:1-3a.4-5.6-7a.16 and 20 (R. 1)
R. Cry out with joy to God, all the earth.
Or Alleluia!
Cry out with joy to God, all the earth; O sing to the glory of his name. O render
him glorious praise. Say to God, “How awesome your deeds!”
R. Cry out with joy to God, all the earth.
 Come and see the
works of God: awesome his deeds among the children of men.
R. Cry out with joy to God, all the earth.
He turned the sea into dry land; they passed
through the river on foot. Let our joy, then, be in him; he rules for ever by
his might.
R. Cry out with joy to God, all the earth.
Come and hear, all who
fear God; I will tell what he did for my soul. Blest be God, who did not reject
my prayer, nor withhold from me his merciful love.
R. Cry out with joy to God, all the earth.
SECOND READING 1 Peter 3:15-18
A reading from the first Letter of Saint Peter
Beloved: In your hearts reverence Christ as Lord. Always
be prepared to make a defence to any one who calls you to account for the hope
that is in you, yet do it with gentleness and reverence; and keep your
conscience clear, so that, when you are abused, those who revile your good
behaviour in Christ may be put to shame. For it is better to suffer for doing
right, if that should be God's will, than for doing wrong. For Christ also died
for sins once for all, the righteous for the unrighteous, that he might bring
us to God, being put to death in the flesh but made alive in the Spirit.
The word of the Lord.
ALLELUIA John 14:23
R. Alleluia. If a man loves me, he will keep my words, says the Lord; and my Father will love him, and we will come to him. R. Alleluia.
GOSPEL John 14:15-21
A reading from the holy Gospel according to John
At that time: Jesus said to his disciples, "If you love me, you will keep my commandments. And I will ask the Father, and he will give you another Counsellor, to be with you for ever, even the Spirit of truth, whom the world cannot receive, because it neither sees him nor knows him; you know him, for he dwells with you, and will be in you. "I will not leave you desolate; I will come to you. Yet a little while, and the world will see me no more, but you will see me; because I live, you will live also. In that day you will know that I am in my Father, and you in me, and I in you. He who has my commandments and keeps them, he it is who loves me; and he who loves me will be loved by my Father, and I will love him and manifest myself to him."
The Gospel of the Lord.
FIRST READING Acts 10:25-26.34-35.44-48
A reading from the Acts of the Apostles
When Peter entered, Cornelius met him and fell down
at his feet and worshiped him. But Peter lifted him up, saying, "Stand up;
I too am a man." And Peter opened his mouth and said: "Truly I
perceive that God shows no partiality, but in every nation any one who fears
him and does what is right is acceptable to him. While Peter was still saying
this, the Holy Spirit fell on all who heard the word. And the believers from
among the circumcised who came with Peter were amazed, because the gift of the
Holy Spirit had been poured out even on the Gentiles. For
they heard them speaking in tongues and extolling God. Then Peter
declared, "Can any one forbid water for baptizing these people who have
received the Holy Spirit just as we have?" And he commanded them to be
baptized in the name of Jesus Christ. Then they asked him to remain for some
days.
The word of the Lord.
RESPONSORIAL PSALM Psalm 98:1.2-3ab.3cd-4 (R. cf. 2)
R. The Lord has shown his deliverance to the nations.
Or Alleluia!
O sing a new song to the
LORD, for he has worked wonders. His right hand and his holy arm have brought
salvation.
R. The Lord has shown his deliverance to the nations.
The LORD has made known his salvation, has shown
his deliverance to the nations. He has remembered his merciful love and his
truth for the house of
R. The Lord has shown his deliverance to the nations.
All the ends of the earth have seen the salvation
of our God. Shout to the LORD, all the earth; break forth into joyous song, and
sing out your praise.
R. The Lord has shown his deliverance to the nations.
SECOND READING 1 John 4:7-10
A reading from the first Letter of Saint John
Beloved, let us love one another; for love is of
God, and he who loves is born of God and knows God. He who does not love does
not know God; for God is love. In this the love of God was made manifest among
us, that God sent his only Son into the world, so that we might live through
him. In this is love, not that we loved God but that he loved us and sent his
Son to be the expiation for our sins.
The word of the Lord.
ALLELUIA John 14:23
R. Alleluia. If a man loves me, he will keep my word, says the Lord; and my Father will love him, and we will come to him. R. Alleluia.
GOSPEL John 15:9-17
A reading from the holy Gospel according to John
At that time: Jesus said to his disciples, “As the
Father has loved me, so have I loved you; abide in my love. If you keep my commandments,
you will abide in my love, just as I have kept my Father's commandments and
abide in his love. These things I have spoken to you, that my joy may be in
you, and that your joy may be full. "This is my commandment, that you love
one another as I have loved you. Greater love has no man than this, that a man lay down his life for his friends. You are
my friends if you do what I command you. No longer do I call you servants, for
the servant does not know what his master is doing; but I have called you
friends, for all that I have heard from my Father I have made known to you. You
did not choose me, but I chose you and appointed you that you should go and
bear fruit and that your fruit should abide; so that whatever you ask the
Father in my name, he may give it to you. This I command you, to love one
another.”
The Gospel of the Lord.
FIRST READING Acts 15:1-2.22-29
A reading from the Acts of the Apostles
In those days: Some men came down from
The word of the Lord.
RESPONSORIAL PSALM Psalm 67:2-3.5.6 and 8 (R. 4)
R.
Or Alleluia!
O God, be gracious and bless us and let your face
shed its light upon us. So will your ways be known upon earth and all nations
learn your salvation.
R.
Let the nations be glad and shout for joy, with
uprightness you rule the peoples; you guide the nations on earth.
R.
 May God still give us his blessing that all the ends of the
earth may revere him.
R.
SECOND READING Revelation 21:10-14.22-23
A reading from the Book of Revelation
In the Spirit the angel carried me away to a great,
high mountain, and showed me the holy city
The word of the Lord.
ALLELUIA John 14:23
R. Alleluia. If a man loves me, he will keep my word, says the Lord; and my Father will love him, and we will come to him. R. Alleluia.
GOSPEL John 14:23-29
A reading from the holy Gospel according to John
At that time: Jesus said to his disciples, "If a man loves me, he will keep my word, and my Father will love him, and we will come to him and make our home with him. He who does not love me does not keep my words; and the word which you hear is not mine but the Father's who sent me. "These things I have spoken to you, while I am still with you. But the Counsellor, the Holy Spirit, whom the Father will send in my name, he will teach you all things, and bring to your remembrance all that I have said to you.  Let not your hearts be troubled, neither let them be afraid.  If you loved me, you would have rejoiced, because I go to the Father; for the Father is greater than I. And now I have told you before it takes place, so that when it does take place, you may believe.
The Gospel of the Lord.
Prayer over the Offerings
May our prayers rise up to you, O Lord, together with the sacrificial offerings, so that, purified by your graciousness, we may be conformed to the mysteries of your mighty love. Through Christ our Lord.
Communion Antiphon
If you love me, keep my commandments, says the Lord, and I will ask the Father and he will send you another Paraclete, to abide with you for ever, alleluia.
Prayer after Communion
Almighty ever-living God, who restore us to eternal life in the Resurrection of Christ, increase in us, we pray, the fruits of this paschal Sacrament and pour into our hearts the strength of this saving food. Through Christ our Lord.


@(rowId: String, question: String, answer: Boolean, link: Option[String] = None, displayLink: Boolean = true)(implicit messages: Messages) @if(link.isDefined && displayLink) {


{% extends "splunkdj:base_with_app_bar.html" %} {% load splunkmvc %} {% block title %}Time Ranges - Web Framework Toolkit{% endblock title %} {% block css %} {% endblock css %} {% block content %}
Using a time range is a common way to control the time bounds of a search. This example shows you can can easily set up a TimeRange view using simple Django template tags—no need for custom code.
Multiple time ranges can be used simultanenously on the page, controlling different searches (or even the same search).


CEPACOL ANTIBACTERIAL- cetylpyridinium chloride liquid
Reckitt Benckiser LLC
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
Active ingredient
Cetylpyridinium chloride 0.05%
Purpose
Antigingivitis/Antiplaque
Uses
helps prevent and reduce plaque that leads to:
- gingivitis, an early form of gum disease
- bleeding gums
Warnings
Stop use and ask a dentist if
- gingivitis, bleeding, or redness persists for more than 2 weeks
- you have painful or swollen gums, pus from the gum line, loose teeth, or increasing spacing between the teeth. These may be signs or symptoms of periodontitis, a serious form of gum disease.
Keep out of the reach of children under 6 years of age. If more than used for rinsing is accidentally swallowed, get medical help or contact a Poison Control Center right away.
Directions
- adults and children 12 years of age and older: vigorously swish 20 milliliters of rinse between your teeth twice a day for 30 seconds and then spit out. Do not swallow the rinse
- children 6 years to under 12 years of age: supervise use
- children under 6 years of age: do not use.
Other Information
- this rinse is not intended to replace brushing or flossing
- store at room temperature 20-25°C (68-77°F)
- protect from humidity
Inactive ingredients
purified water, alcohol 14% v/v, glycerin, sodium phosphate dibasic, eucalyptus oil, polysorbate 80, methyl salicylate, cinnamon oil, peppermint oil, saccharin sodium, sodium phosphate monobasic anhydrous, menthol, edetate disodium, FD&C Yellow #5
Questions?
1-888-963-3382 You may also report side effects to this phone number.
Dist. by: Reckitt Benckiser
Parsippany, NJ 07054-0224
PRINCIPAL DISPLAY PANEL - 710 mL Bottle Label
NDC 63824-790-80
Cēpacol®
ANTIBACTERIAL*
MULTI-PROTECTION MOUTHWASH
CPC–Antigingivitis/Antiplaque Oral Rinse
*Kills Germs That Cause Bad Breath
- Reduces Plaque
- Freshens Breath
#1 BRAND IN HOSPITALS
TO OPEN: Squeeze both raised finger pads
on cap and continue to squeeze while turning.
TO CLOSE: Turn cap until it locks completely.
24 FL. OZ. (710 mL)
0336220
062111


Freed Ex-President Tells Crowd Brazil’s Left Can Win in 2022
by ASSOCIATED PRESSBy MARIO LOBÃO and DIANE JEANTET Associated Press
SAO BERNARDO DO CAMPO, Brazil (AP) — Freed from his cell, former President Luiz Inácio Lula da Silva told thousands of jubilant supporters Saturday that the left can take back Brazil’s presidency in the 2022 election.
Dressed in a black blazer and T-shirt, da Silva spoke from a stage outside the union near Sao Paulo that he once led and that served as the base for his political career. The crowd of red-clad supporters cheered and waved flags.
“We are going to do a lot of fighting. Fighting is not one day on, then three months off, then back. Fighting is every day,” said da Silva, a 74-year-old who promised to bring the energy of a 30-year-old to the streets.
In his 45-minute speech, he spoke briefly of conservative President Jair Bolsonaro, who won the 2018 election after da Silva’s corruption conviction barred him from running. Da Silva said Brazilians must accept the results of the democratic election and work to defeat the “ultra-right” in 2022.
He also called for solidarity with fellow South American countries and lambasted U.S. President Donald Trump, saying his border wall plan is unacceptable and aimed at keeping out poor people.
“Trump should resolve Americans’ problems and not bother Latin Americans. He wasn’t elected to be the world’s sheriff,” said da Silva, who in a Twitter post Friday backed U.S. Sen. Bernie Sanders’ presidential campaign.
Brazil’s Supreme Court on Thursday ruled that a person can be jailed only after all appeals to higher courts have been exhausted. Da Silva was released the next day, after 19 months imprisonment.
He is still appealing his conviction related to the alleged purchase of a beachfront apartment and remains entangled in other cases. He was also convicted by a lower court judge in a case involving ownership of a farmhouse in Atibaia, outside Sao Paulo.
If he loses his appeals in either conviction, he could be locked up again.
Da Silva has denied any wrongdoing and accused prosecutors and Sergio Moro, then a judge and now justice minister, of manipulating the case against him.
Moro said on Twitter earlier that the Supreme Court’s decision should be respected, but Congress could alter the constitution to change when convicted criminals start serving their sentences.
Some Brazilian groups organized demonstrations in dozens of cities in support of the Bolsonaro administration, but turnout was low.
The president’s son, Eduardo Bolsonaro, said on Twitter that da Silva’s release will prompt people to set aside differences and unite against the Workers’ Party, a sentiment that helped carry his father to the presidency.
Jair Bolsonaro had refrained from commenting on da Silva, but when asked by journalists about the case Saturday, the president responded: “He is free, but he still has all his crimes on his back.”
Da Silva said he had a message for his opponents in power: “I want to say to them: I’m back.”
Copyright © 2019 courthousenews.com


Navigator
To kitchen
To main page (for authorized)
Go Back
Product name
Product price
Product quantity
Action
Remove
Complete bill
Reset bill
Ready to Leave?
×
Select "Logout" below if you are ready to end your current session.


Test different color schemes with Plottable plots!
Locally change default plottable colors in plottable.css
Enter a number of series to render in SVGs of specified width and height
Control what plots to hide/show using the sidebar


*TStp1
*TStp2
- (64-bit version only) Global variables holding (possibly empty)
prg
bodies, which will be executed when a SIGTSTP signal
(*TStp1
) or a SIGCONT signal (*TStp2
) is sent to the
current process. See also alarm
,
sigio
, *Hup
, and *Sig[12]
.
: (de *TStp1 (msg 'SIGTSTP))
-> *TStp1
*Tmp
- A global variable holding the temporary directory name created with
tmp
. See also *Bye
.
: *Bye
-> ((saveHistory) (and *Tmp (call 'rm "-r" *Tmp)))
: (tmp "foo" 123)
-> "/home/app/.pil/tmp/27140/foo123"
: *Tmp
-> "/home/app/.pil/tmp/27140/"
+Time
- Class for clock time values (as calculated by
time
), a subclass of +Number
. See also Database.
(rel tim (+Time)) # Time of the day
T
- A global constant, evaluating to itself.
T
is commonly returned
as the boolean value "true" (though any non-NIL
values could be
used). It represents the absolute maximum, as it is larger than any other
object. As a property key, it is used to store Pilog clauses, and inside Pilog clauses it is the
cut operator. See also NIL
and
and Comparing.
: T
-> T
: (= 123 123)
-> T
: (get 'not T)
-> ((@P (1 (-> @P)) T (fail)) (@P))
This
- Holds the current object during method execution (see OO Concepts), or inside the body of a
with
statement. As it is a normal symbol,
however, it can be used in normal bindings anywhere. See also isa
, :
,
=:
, ::
and var:
.
: (with 'X (println 'This 'is This))
This is X
-> X
: (put 'X 'a 1)
-> 1
: (put 'X 'b 2)
-> 2
: (put 'Y 'a 111)
-> 111
: (put 'Y 'b 222)
-> 222
: (mapcar '((This) (cons (: a) (: b))) '(X Y))
-> ((1 . 2) (111 . 222))
(t . prg) -> T
- Executes
prg
, and returns T
. See also nil
, prog
, prog1
and prog2
.
: (t (println 'OK))
OK
-> T
(tab 'lst 'any ..) -> NIL
- Print all
any
arguments in a tabular format. lst
should be a list of numbers, specifying the field width for each argument. All
items in a column will be left-aligned for negative numbers, otherwise
right-aligned. See also align
,
center
and wrap
.
: (let Fmt (-3 14 14)
(tab Fmt "Key" "Rand 1" "Rand 2")
(tab Fmt "---" "------" "------")
(for C '(A B C D E F)
(tab Fmt C (rand) (rand)) ) )
Key Rand 1 Rand 2
--- ------ ------
A 0<PHONE_NUMBER>
B -1062105905 -877267386
C -956092119 812669700
D 553475508 -1702133896
E<PHONE_NUMBER> -1417066392
F<PHONE_NUMBER> -1999783937
-> NIL
(tail 'cnt|lst 'lst) -> lst
- Returns the last
cnt
elements of lst
. If
cnt
is negative, it is added to the length of lst
. If
the first argument is a lst
, tail
is a predicate
function returning that argument list if it is equal
to the tail of
the second argument, and NIL
otherwise. (tail -2 Lst)
is equivalent to (nth Lst 3)
. See also offset
, head
, last
and stem
.
: (tail 3 '(a b c d e f))
-> (d e f)
: (tail -2 '(a b c d e f))
-> (c d e f)
: (tail 0 '(a b c d e f))
-> NIL
: (tail 10 '(a b c d e f))
-> (a b c d e f)
: (tail '(d e f) '(a b c d e f))
-> (d e f)
(task 'num ['num] [sym 'any ..] [. prg]) -> lst
- A front-end to the
*Run
global. If
called with only a single num
argument, the corresponding entry is
removed from the value of *Run
. Otherwise, a new entry is created.
If an entry with that key already exists, an error is issued. For negative
numbers, a second number must be supplied. If sym
/any
arguments are given, a job
environment
is built for the *Run
entry. See also tasks
, forked
and timeout
.
: (task -10000 5000 N 0 (msg (inc 'N))) # Install task
-> (-10000 5000 (job '((N . 0)) (msg (inc 'N)))) # for every 10 seconds
: 1 # ... after 5 seconds
2 # ... after 10 seconds
3 # ... after 10 seconds
(task -10000) # remove again
-> NIL
: (task (port T 4444) (eval (udp @))) # Receive RPC via UDP
-> (3 (eval (udp @)))
# Another session (on the same machine)
: (udp "localhost" 4444 '(println *Pid)) # Send RPC message
-> (println *Pid)
(tasks . prg)
- Runs a
task
with variable event
specification in a single *Run
entry.
The task body prg
should return either a positive number (a file
descriptor) or a negative number (a timeout value) to be used in the next
iteration. The first value must be a timeout. A value of NIL
removes the task. Uses -2
as implicit key. See also forked
and timeout
.
(tasks # Three iterations with varying timeout
(let X (pop '(((-1000 . a) (-4000 . b) (-1000 . c))))
(msg (cdr X))
(car X) ) )
(tasks
(co 'echoes # Coroutine
(use S
(loop # Loop infinitely
(yield -4000) # First wait 4 seconds
(msg 'OK)
(yield # Then wait for remote data
(setq S
(pipe (exec "sh" "-c" "sleep 2; echo 7")) ) )
(msg (in S (read)))
(close S) ) ) ) )
(telStr 'sym) -> sym
- Formats a telephone number according to the current
locale
. If the string head matches the local
country code, it is replaced with the national trunk prefix, otherwise
+
is prepended. See also expTel
, datStr
, money
and format
.
: (telStr "49 1234 5678-0")
-> "+49 1234 5678-0"
: (locale "DE" "de")
-> NIL
: (telStr "49 1234 5678-0")
-> "01234 5678-0"
(tell ['cnt] 'sym ['any ..]) -> any
- Family IPC: Send an executable list
(sym any ..)
to all family
members (i.e. all children of the current process, and all other children of the
parent process, see fork
) for
automatic execution. When the cnt
argument is given and non-zero,
it should be the PID of such a process, and the list will be sent only to that
process. When called without arguments, no message is actually sent, and the
parent process may grant sync
to the
next waiting process. tell
is also used internally by commit
to notify about database changes. When
called explicitly, the size of the message is limited to the POSIX constant
PIPE_BUF. See also kids
, detach
and hear
.
: (call 'ps "x") # Show processes
PID TTY STAT TIME COMMAND
..
1321 pts/0 S 0:00 /usr/bin/picolisp .. # Parent process
1324 pts/0 S 0:01 /usr/bin/picolisp .. # First child
1325 pts/0 S 0:01 /usr/bin/picolisp .. # Second child
1326 pts/0 R 0:00 ps x
-> T
: *Pid # We are the second child
-> 1325
: (tell 'println '*Pid) # Ask all others to print their Pid's
1324
-> *Pid
(test 'any . prg)
- Executes
prg
, and issues an error
if the result does not match
the any
argument. See also
assert
.
: (test 12 (* 3 4))
-> NIL
: (test 12 (+ 3 4))
((+ 3 4))
12 -- 'test' failed
?
(text 'any1 'any ..) -> sym
- Builds a new transient symbol (string) from the string representation of
any1
, by replacing all occurrences of an at-mark "@
",
followed by one of the letters "1
" through "9
", and
"A
" through "Z
", with the corresponding
any
argument. In this context "@A
" refers to the 10th
argument. A literal at-mark in the text can be represented by two successive
at-marks. See also pack
and glue
.
: (text "abc @1 def @2" 'XYZ 123)
-> "abc XYZ def 123"
: (text "a@@bc.@1" "de")
-><EMAIL_ADDRESS>(throw 'sym 'any)
- Non-local jump into a previous
catch
environment with the jump label
sym
(or T
as a catch-all). Any pending finally
expressions are executed, local
symbol bindings are restored, open files are closed and internal data structures
are reset appropriately, as the environment was at the time when the
corresponding catch
was called. Then any
is returned
from that catch
. See also quit
.
: (de foo (N)
(println N)
(throw 'OK) )
-> foo
: (let N 1 (catch 'OK (foo 7)) (println N))
7
1
-> 1
(tick (cnt1 . cnt2) . prg) -> any
- Executes
prg
, then (destructively) adds the number of elapsed
user ticks to the cnt1
parameter, and the number of elapsed system
ticks to the cnt2
parameter. Thus, cnt1
and
cnt2
will finally contain the total number of user and system time
ticks spent in prg
and all functions called (this works also for
recursive functions). For execution profiling, tick
is usually
inserted into words with prof
, and removed with
unprof
. See also usec
.
: (de foo () # Define function with empty loop
(tick (0 . 0) (do 100000000)) )
-> foo
: (foo) # Execute it
-> NIL
: (pp 'foo)
(de foo NIL
(tick (97 . 0) (do 100000000)) ) # 'tick' incremented 'cnt1' by 97
-> foo
(till 'any ['flg]) -> lst|sym
- Reads from the current input channel till a character contained in
any
is found (or until end of file if any
is
NIL
). If flg
is NIL
, a list of
single-character transient symbols is returned. Otherwise, a single string is
returned. See also from
and line
.
: (till ":")
abc:def
-> ("a" "b" "c")
: (till ":" T)
abc:def
-> "abc"
(tim$ 'tim ['flg]) -> sym
- Formats a
time
tim
.
If flg
is NIL
, the format is HH:MM, otherwise it is
HH:MM:SS. See also $tim
and dat$
.
: (tim$ (time))
-> "10:57"
: (tim$ (time) T)
-> "10:57:56"
(time ['T]) -> tim
(time 'tim) -> (h m s)
(time 'h 'm ['s]) -> tim | NIL
(time '(h m [s])) -> tim | NIL
- Calculates the time of day, represented as the number of seconds since
midnight. When called without arguments, the current local time is returned.
When called with a
T
argument, the time of the last call to
date
is returned. When called with a
single number tim
, it is taken as a time value and a list with the
corresponding hour, minute and second is returned. When called with two or three
numbers (or a list of two or three numbers) for the hour, minute (and optionally
the second), the corresponding time value is returned (or NIL
if
they do not represent a legal time). See also date
, stamp
, usec
, tim$
and $tim
.
: (time) # Now
-> 32334
: (time 32334) # Now
-> (8 58 54)
: (time 12 70) # Illegal time
-> NIL
(timeout ['num])
- Sets or refreshes a timeout value in the
*Run
global, so that the current process
executes bye
after the given period. If
called without arguments, the timeout is removed. Uses -1
as
implicit key. See also task
.
: (timeout 3600000) # Timeout after one hour
-> (-1 3600000 (bye))
: *Run # Look after a few seconds
-> ((-1 3574516 (bye)))
(tmp ['any ..]) -> sym
- Returns the path name to the
pack
ed any
arguments in a
process-local temporary directory. The directory name consists of the path to
".pil/tmp/" in the user's home directory, followed by the current process ID
*Pid
. This directory is automatically
created if necessary, and removed upon termination of the process (bye
). See also pil
, *Tmp
and *Bye
.
: *Pid
-> 27140
: (tmp "foo" 123)
-> "/home/app/.pil/tmp/27140/foo123"
: (out (tmp "foo" 123) (println 'OK))
-> OK
: (dir (tmp))
-> ("foo123")
: (in (tmp "foo" 123) (read))
-> OK
tolr/3
- Pilog predicate that succeeds if the first
argument, after
fold
ing it to a
canonical form, is either a substring or a +Sn
soundex match of the result of
applying the get
algorithm to the
following arguments. Typically used as filter predicate in select/3
database queries. See also
isa/2
, same/3
, bool/3
, range/3
, head/3
, fold/3
and part/3
.
: (?
@Nr (1 . 5)
@Nm "Sven"
(select (@CuSu)
((nr +CuSu @Nr) (nm +CuSu @Nm))
(range @Nr @CuSu nr)
(tolr @Nm @CuSu nm) )
(val @Name @CuSu nm) )
@Nr=(1 . 5) @Nm="Sven" @CuSu={2-2} @Name="Seven Oaks Ltd."
(touch 'sym) -> sym
- When
sym
is an external symbol, it is marked as "modified" so
that upon a later commit
it will be
written to the database file. An explicit call of touch
is only
necessary when the value or properties of sym
are indirectly
modified.
: (get '{2} 'lst)
-> (1 2 3 4 5)
: (set (cdr (get (touch '{2}) 'lst)) 999) # Only read-access, need 'touch'
-> 999
: (get '{2} 'lst) # Modified second list element
-> (1 999 3 4 5)
(trace 'sym) -> sym
(trace 'sym 'cls) -> sym
(trace '(sym . cls)) -> sym
- (Debug mode only) Inserts a
$
trace
function call at the beginning of the function or method body of
sym
, so that trace information will be printed before and after
execution. Can only be used with EXPRs and SUBRs. Built-in functions (SUBRs) are
automatically converted to Lisp expressions (see expr
). See also *Dbg
, traceAll
and untrace
, debug
and lint
.
: (trace '+)
-> +
: (+ 3 4)
+ : 3 4
+ = 7
-> 7
(traceAll ['lst]) -> sym
- (Debug mode only) Traces all Lisp level functions by inserting a
$
function call at the beginning. lst
may contain symbols which are to be excluded from that process. In addition, all
symbols in the global variable *NoTrace
are excluded. See also
trace
, untrace
and *Dbg
.
: (traceAll) # Trace all Lisp level functions
-> balance
(trail ['flg]) -> lst
- (64-bit version only) Returns a stack backtrace for the current point of
program execution. The list elements are either list expressions (denoting
function or method calls), or symbols followed by their corresponding values. If
flg
is NIL
, the symbols and their values are omitted,
and only the expressions are returned. See also bt
, up
and env
.
: (de f (A B)
(g (inc A) (dec B)) )
-> f
: (de g (X Y)
(trail T) )
-> g
: (f 3 4)
-> ((f 3 4) A 3 B 4 (g (inc A) (dec B)) X 4 Y 3)
(tree 'sym 'cls ['hook]) -> tree
- Returns a data structure specifying a database index tree.
sym
and cls
determine the relation, with an optional hook
object. See also root
, fetch
, store
, count
, leaf
, minKey
, maxKey
, init
, step
, scan
, iter
, prune
, zapTree
and chkTree
.
: (tree 'nm '+Item)
-> (nm . +Item)
(trim 'lst) -> lst
- Returns a copy of
lst
with all trailing whitespace characters
or NIL
elements removed. See also clip
.
: (trim (1 NIL 2 NIL NIL))
-> (1 NIL 2)
: (trim '(a b " " " "))
-> (a b)
true/0
- Pilog predicate that always succeeds. See also
fail/0
and repeat/0
.
: (? (true))
-> T
(try 'msg 'obj ['any ..]) -> any
- Tries to send the message
msg
to the object obj
,
optionally with arguments any
. If obj
is not an
object, or if the message cannot be located in obj
, in its classes
or superclasses, NIL
is returned. See also OO Concepts, send
, method
, meth
, super
and extra
.
: (try 'msg> 123)
-> NIL
: (try 'html> 'a)
-> NIL
(type 'any) -> lst
- Return the type (list of classes) of the object
sym
. See also
OO Concepts, isa
, class
, new
and object
.
: (type '{1A;3})
(+Address)
: (type '+DnButton)
-> (+Tiny +Rid +JS +Able +Button)
(tzo) -> cnt
- Return the time zone offset, i.e. the number of seconds east of Coordinated
Universal Time (UTC). Supported only on Linux. See also
date
and time
.
: (tzo)
-> 3600


R6Maps.com is a quick reference tool for players to learn the ins and outs of Rainbow Six Siege maps. You can use it on many devices (computer, tablet or phone) and several languages are available. With tons of details like objectives, room names and camera locations, you'll have the map knowledge needed to successfully siege!


{{ define "main" }}
I'm a programmer and founder based in San Francisco.
Currently, I'm spending my days as CTO of Outline, a platform that helps companies understand and engage with their customer communities. About • Now • Contact


{% if token %}
Congratulations! you have successfully authenticated and your token is: {{token}}
{% else %}
Something went wrong :(
{% endif %}


--- layout: post title: Free Windows images! date: 2014-09-04 22:58:30.000000000 +01:00 type: post parent_id: '0' published: true password: '' status: publish categories: [] tags: [] meta: _edit_last: '1' _wpas_done_all: '1' author: Noel permalink: "/free-windows-images/" ---
I had no idea this existed until I took an assignment on Coursera. The work required a Windows-only application but suggested using the free Windows images legally distributed by MS themselves. The image works for three months without limitations but even after you could just remake the image from the zip files rather than put up with the hour time limit imposed on the image's uptime.
Follow the link here and download the version you want


Thank you for downloading and trying out Noogie! This generator was created to help developers build Angular applications using a component-based approach.
Be sure to find us on npm and star us on github! Additional details can also be found on the Noogie Blog.
You are looking at the {{helloWorld.componentName}} root component bundle. All components & directives are scaffolded into the app/components directory.


bricklink-api
Node package for connecting to Bricklink's API.
npm install --save bricklink-api
Basic Usage
Initialize a client with your OAuth credentials as supplied at the following:
https://www.bricklink.com/v2/api/register_consumer.page
You are required to have a Bricklink account and register your IP address from which your application will be using the API.
var api = require('bricklink-api');
var Client = api.Client,
ItemType = api.ItemType;
var bricklink = new Client({
"consumer_key": "<ConsumerKey>",
"consumer_secret": "<ConsumerSecret>",
"token": "<TokenValue>",
"token_secret": "<TokenSecret>"
});
bricklink.getCatalogItem(ItemType.Part, '3001')
.then(function(part){
console.log(part);
});
\\ Alternate Usage:
var CatalogItem = api.CatalogItem;
var req = CatalogItem.get(ItemType.Part, '3001');
bricklink.send(req)
.then(function(part){
console.log(part);
});
ES6 Support
Read basic usage.
import {Client, ItemType, CatalogItem} from 'bricklink-api';
const bricklink = new Client({
"consumer_key": "<ConsumerKey>",
"consumer_secret": "<ConsumerSecret>",
"token": "<TokenValue>",
"token_secret": "<TokenSecret>"
});
bricklink.getCatalogItem(ItemType.Part, '3001')
.then(part => console.log(part));
\\ Alternate Usage:
let req = CatalogItem.get(ItemType.Part, '3001');
bricklink.send(req)
.then(part => console.log(part));
Proxy Support
Due to the IP restriction you may need to use a proxy in a cloud hosted environment where IP addresses are not always reserved.
First you will need to have an https capable proxy agent.
npm install -S https-proxy-agent
Then you will need to pass in a created agent in the agent
parameter of the
client configuration options.
import HttpsProxyAgent from 'https-proxy-agent';
import {Client} from 'bricklink-api';
const proxy = new HttpsProxyAgent('http://<IP_ADDRESS>:8080');
const bricklink = new Client({
"agent": proxy,
"consumer_key": "<ConsumerKey>",
"consumer_secret": "<ConsumerSecret>",
"token": "<TokenValue>",
"token_secret": "<TokenSecret>"
});
Documentation
Full API documentation is available at:
https://ryansh100.github.io/bricklink-api
Changelog
- 2017/04/03: Update to make more intuitive imports.


Guidance
Types of apprenticeships that you can apply for in the construction building sector.
Construction building craft occupations have a traditional role in supplying a qualified workforce to small and medium companies.
During the intermediate level apprenticeship you will be working on a construction site or in domestic and commercial premises as a painter, renewing the maintenance of many things such as wood products and plumbing, bricklaying, resurfacing masonry structures such as renders, site carpentry and joining tasks.
For example; as a painter you will be preparing background surfaces for painting and applying paint by brush and roller. Where as working as a craft mason, you will be setting out and erecting masonry structures, and placing and finishing concrete and render surfaces.
On the advanced level apprenticeship you will be responsible for carrying out complex building work, working in a joiners shop using drawings to produce complex wood products.
For example; as a bricklayer you will be setting out structures and carrying out complex building work to given specifications. However as a site carpenter you will be working on a construction site or in domestic and commercial premises to given specifications carrying out first and second fixing, erecting complex structural carcassing components such as trussed rafter roofs and traditional cut roofs.
Intermediate level apprenticeship
Advanced level apprenticeship
Published: 12 April 2012


{% extends "base.html" %}
{% block body_class %}index{% endblock %}
{% block content %}
{{ render_markdown(
"""
# 2023-07-19 update
## New version of derived data products
### User-Facing Changes
#### Data Content
- The new data now includes all group sessions. In the previous version, the
following experiments were excluded:
- `exp_2022_12_05_12`
- `exp_2023_01_31_14`
- `exp_2023_02_10_10`
- Additional raw channels of fNIRS have been incorporated into the new data.
- Reports detailing the filtering process of EEG and fNIRS have been added to the new data.
#### Data Format
- The label `nirs` has been replaced with `fnirs` in the new data.
- Instead of splitting the report into separate files per task as in the old
data, the new data compiles the report of the entire process into a single file
named `log.txt`.
- The new data provides CSV files that contain the filtered signals and the synchronized signals of EEG and fNIRS for each experiment.
- The NaN values previously found in the signal columns at the start and end of each task in the old data have been removed in the new data.
- The `experiment_id` column previously found in each CSV file in the old data has been removed in the new data.
### Changes Under the Hood
The following changes to the signal processing pipeline were made:
- The old process grouped the EEG and fNIRS signals for each task before synchronization and resampling. The new process first synchronizes and resamples the signals throughout the experiments before grouping them for task data synchronization. This results in different time series for synchronization and resampling, leading to different synchronized signal values between the old and new data.
- The new process linearly interpolates the EEG and fNIRS signals to their recorded frequencies, ensuring regular intervals before filtering.
- The new data filters the fNIRS using a Butterworth filter at order 4, compared to order 5 in the old process.
- Instead of applying a lowpass FIR filter at frequency 55 to avoid aliasing before downsampling (as in the old process), the new process applies a Chebychev type I filter at order 8.
- The new process replaces the previous method of resampling the EEG and fNIRS signals to the desired frequency using linear interpolation. It now uses a fast Fourier transform-based resampling method to achieve the target frequency.
## Data products document
- Added ['Data Products'
document](http://ivilab.cs.arizona.edu/data/tomcat/data_products.pdf), which
contains documentation about both raw (uncleaned) data that is accessible only to lab
members and [derived data products](/derived-data-products) that we have disseminated publicly.
The documentation of the raw data is mainly for internal use, while the
documentation of the derived data products is intended for public consumption.
- Note that documentation for the *cleaned* raw data in the form of the SQLite
database is available as structured metadata in JSON form here:
https://tomcat.ivilab.org/-/metadata.json. This JSON object contains
descriptions for the tables and columns in the database. These descriptions are
also surfaced via the Datasette web interface.
""")
}}
{% endblock %}


'Knocking for him' - Aston Villa receive Jack Grealish transfer plea
Latest Aston Villa transfer news includes former striker urging AVFC to hold onto Grealish
by Shane Ireland, https://www.facebook.com/ShaneIrelandJournalistAston Villa have been urged to turn down any advances for Jack Grealish and build the team around him.
Grealish, 24, has been in inspired form this season after helping his boyhood club achieve promotion back to the Premier League.
His injury has coincided with Villa’s struggles in recent weeks – Dean Smith’s side losing three Premier League games on the spin including the defeat at Manchester City when Grealish hobbled off.
And Emile Heskey says his former club must to do everything they can to hold onto their talisman when suitors come knocking.
"It's amazing how far he's come, when I was at Villa he was 15 and getting a run in training with the senior team," Heskey told Tribal Football.
"As a young lad he was running rings around us and making us look silly, we could see the potential even back then. Makes you wonder who else the clubs are producing these days and how many come from the youth teams, especially in your top four clubs.
"They'll do alright if they can keep a hold of him, but just as importantly develop players or recruit the right kind of squad around him. He's such an important part to that Villa line up, and it wouldn't surprise me if another club comes knocking for him."
Aston Villa latest
This is your round up of all things Villa; the one-stop shop that will keep you updated on the latest goings on at the club and beyond.
Transfers, injuries, match-days and managers, we’ve got you covered.
We’ll be bringing the very latest on the Villains throughout the week and around the clock.
Make sure you keep yourself updated with our handy daily catch up...
Must reads...
- Dean Smith fires Aston Villa transfer warning to Man United
- The injury update Aston Villa fans have been waiting for
- Aston Villa boss issues blunt Steve Bruce warning
- Club make decision on Villa target ahead of January
For all your latest AVFC news, opinion, analysis and transfer gossip, click here
You can follow our Villa reporter Ashley Preece on Twitter, and his email address is<EMAIL_ADDRESS>Villa are sat one place above the relegation zone ahead of Monday's clash against Newcastle United but Heskey thinks things will soon turn around.
"They've got massive potential, easily," Heskey said. “The club has such a huge history and a wonderful stadium but the important part is they don't throw a whole load of money in order to do that.
"They've got the right idea in building a strong foundation, the rest of it will follow such as revenue, player development and retention, and the on field success as a result of all these things."


--- layout: post title: How to set up a chroot environment for testing date: 2013-02-14 summary: Recently I have suffered a total system destruction in one of my computers. It happened while I was testing a software that I am developing, due to a simple bug. It helped me realize my lack of caution while testing unstable things, and I learned that it is always better to do the testing inside a chroot environment. Chroot’s provide isolation from the rest of the operating system, so that in case of severe errors damage can be mitigated. tags: [Ubuntu, chroot] ---
Recently I have suffered a total system destruction in one of my computers. It happened while I was testing a software that I am developing, due to a simple bug. It helped me realize my lack of caution while testing unstable things, and I learned that it is always better to do the testing inside a chroot environment. Chroot’s provide isolation from the rest of the operating system, so that in case of severe errors damage can be mitigated.
Here are the steps that I took for installing a chroot environment for testing.
sudo apt-get install debootstrap dchroot
[precise] description=Ubuntu Precise LTS location=/var/chroot/btranslator priority=3 users=ubuntu groups=sbuild root-groups=root
debootstrap --variant=minbase --arch=amd64 precise \ /var/chroot/btranslator http://mirror.rackspace.com/ubuntu/ cp /etc/resolv.conf /var/chroot/btranslator/etc/resolv.conf cp /etc/apt/sources.list /var/chroot/btranslator/etc/apt/ mount -o bind /proc /var/chroot/btranslator/proc chroot /var/chroot/btranslator/ apt-get install ubuntu-minimal apt-get update apt-get upgrade apt-get install language-pack-en-base apt-get install vim aptitude
apt-get install aptitude tasksel tasksel install lamp-server
CHROOT=/var/chroot/btranslator case "$1" in start) service apache2 stop service mysql stop mount -o bind /proc $CHROOT/proc mount -o bind /dev $CHROOT/dev mount -o bind /sys $CHROOT/sys mount -o bind /dev/pts $CHROOT/dev/pts chroot $CHROOT/ service mysql start chroot $CHROOT/ service apache2 start ;; stop) chroot $CHROOT/ service apache2 stop chroot $CHROOT/ service mysql stop umount $CHROOT/dev/pts umount $CHROOT/sys umount $CHROOT/dev umount $CHROOT/proc service mysql start service apache2 start ;; esac
chmod +x /etc/init.d/chroot-btranslator update-rc.d chroot-btranslator defaults service chroot-btranslator start
Referencies: