Hisotry.com Staff. (2014). Atomic Bomb. Retrieved March 21, 2016, from http://www.history.co.uk/study-topics/history-of-ww2/atomic-bomb
History.com Staff. (2009). German-Soviet Nonaggression Pact. Retrieved February 19, 2016, from http://www.history.com/topics/world-war-ii/german-soviet-nonaggression-pact
History.com Staff. (2014). Imperial Japan. Retrieved February 20, 2016, from http://www.history.co.uk/study-topics/history-of-ww2/imperial-japan
Powers, D. (2011, February 17). Japan: No Surrender in World War Two. Retrieved February 20, 2016, from http://www.bbc.co.uk/history/worldwars/wwtwo/japan_no_surrender_01.shtml
Ushistory.org Staff. (2016). The Manhattan Project. Retrieved March 04, 2016, from http://www.ushistory.org/us/51f.asp
.
Connant, J. B., & Bush, V. (1944, September 30). Retrieved February 23, 2016, from http://nsarchive.gwu.edu/NSAEBB/NSAEBB162/1.pdf
Dannen, G. (1995, July 30). Truman Tells Stalin, July 24, 1945. Retrieved March 07, 2016, from http://www.dannen.com/decision/potsdam.html
Diary, S. (1945, May 14). Copy from Manuscript Div. Library of Congress [Letter to Harry Truman].
Groves, L. R. (1945, April 23). Atomic Fission Bombs [Letter to Stimson Diary].
Long, D. (1995, October 23). HENRY L. STIMSON. Retrieved March 05, 2016, from http://www.doug-long.com/hstimson.htm
National WWII Museum Staff. (n.d.). BY THE NUMBERS: WORLD-WIDE DEATHS:. Retrieved February 23, 2016, from http://www.nationalww2museum.org/learn/education/for-students/ww2-history/ww2-by-the-numbers/world-wide-deaths.html
Rossenfeld, C. (n.d.). General Leslie Groves (1896 - 1970). Retrieved March 05, 2016, from http://www.atomicarchive.com/Bios/Groves.shtml
Sutherland, R. K. (1945, May 28). Operation Downfall. Retrieved March 07, 2016, from http://www.alternatewars.com/WW2/Downfall/GHQ_USAFP_Strat_Plan_28-MAY-45/GHQ_USAFP_Strat_Plan_28-MAY-45.htm
The Learning Network Staff. (2012, May 07). May 7, 1945 | Nazi Germany Surrenders in World War II. Retrieved March 05, 2016, from http://learning.blogs.nytimes.com/2012/05/07/may-7-1945-nazi-germany-surrenders-in-world-war-ii/?_r=0
Warren, L. (2012, January 17). Hell in the Pacific: Rare World War II photographs show American soldiers' fight for survival in brutal Battle of Saipan. Retrieved February 23, 2016, from http://www.dailymail.co.uk/news/article-2087023/World-War-II-photographs-American-soldiers-fight-survival-brutal-Battle-Saipan.html
.
RT News. (2010, August 6). 'I'd drop atomic bomb on Hiroshima again if needed' - Enola Gay last living member. Retrieved March 05, 2016, from https://www.youtube.com/watch?v=MDaiQ9n5wEM
Tibbets, P. (1987, July 3). Paul Tibbets on Dropping the Atomic Bomb [Interview].
Tibbets, P. (1945, August 14). Colonel Paul Tibbets, pilot of the Enola Gay, describes his mission dropping the...HD Stock Footage [Interview].
> United News. (1945, September 2). JAPANESE SIGN FINAL SURRENDER on USS Missouri [subtitled/HQ]. Retrieved March 06, 2016, from https://www.youtube.com/watch?v=Yh57jkS0Vaw
http://i.dailymail.co.uk/i/pix/2012/01/15/article-2087023-0F73693F00000578-43_964x881.jpg
http://i.dailymail.co.uk/i/pix/2012/01/15/article-2087023-0F73696400000578-836_964x642.jpg
http://media.cleveland.com/marine-week/photo/wwii-us-forces-invade-pacific-a96c9d8f342216c9.jpg
http://www.nationalww2museumimages.org/web-assets/images/dday2-405x248.jpg
http://theaviationist.com/wp-content/uploads/2015/07/Corsair.jpg
http://www.strangehistory.net/blog/wp-content/uploads/2015/07/pacific-war.jpg
.
https://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Little_boy.jpg/300px-Little_boy.jpg
https://upload.wikimedia.org/wikipedia/commons/c/c2/Fa
http://cdn.theatlantic.com/static/infocus/ww2_3/w09_06010153.jpg
https://upload.wikimedia.org/wikipedia/commons/0/04/B-24D's_fly_over_Polesti_during_World_War_II.jpg
http://mediad.publicbroadcasting.net/p/shared/npr/201310/241394081.jpg
http://www.people.com.cn/mediafile/pic/GQ/20150717/71/3267395268078343699.jpg
http://www.celebheights.org/wp-content/uploads/2014/11/Emperor-Hirohito-249x300.jpg
https://745515a37222097b0902-74ef300a2b2b2d9e236c9459912aaf20.ssl.cf2.rackcdn.com/31b0ef4b74de191e0d9a514c83f00d44.jpeg
https://s-media-cache-ak0.pinimg.com/236x/2b/0e/2c/2b0e2c51234ed95b71aa3b7f2d0f059f.jpg
http://media.gettyimages.com/photos/world-war-2-a-red-army-sniper-firing-on-fleeing-german-soldiers-picture-id170972082
http://www.abc.net.au/news/image/6689834-3x2-940x627.jpg
http://www.psywarrior.com/Japbehead3.jpg
https://reconsideringrussia.files.wordpress.com/2015/05/soviet-flag-reichstag-berlin.jpg
https://upload.wikimedia.org/wikipedia/commons/3/33/RIAN_archive_61150_Great_Patriotic_War.jpg
https://antinuclearinfo.files.wordpress.com/2015/01/manhattan-project.gif
http://manhattanprojectvoices.org/sites/default/files/fermi_enrico_e13%20cropped.jpg
http://www.museumsyndicate.com/images/6/56630.jpg
http://www.atomicarchive.com/History/twocities/hiroshima/images/HR01.jpg
http://www.sarahsundin.com/wp-content/uploads/2015/07/Nagasaki.jpg


Source code for sap.appendix.appendix_f
"""
Appendix F: Electric CPSUs
~~~~~~~~~~~~~~~~~~~~~~~~~~
An electric CPSU is a central heating system providing space and domestic water heating.
Primary water heated mainly during low-rate periods to up to 95°C in winter is stored
in a thermal store. If the CPSU volume is less than 270 litres, the resulting high-rate
fraction can lead to a poor SAP rating.
The procedure in this appendix applies for a 10-hour off-peak tariff providing 3 low-rate
periods per day. It is not valid for other tariffs.
"""
import numpy
from ..constants import DAYS_PER_MONTH, SUMMER_MONTHS
[docs]def cpsu_on_peak(system, dwelling):
"""
39m=dwelling.h
45m=hw_energy_content
93m=Tmean
95m=useful gains
98m=Q_required
:param dwelling:
:param system:
"""
Vcs = dwelling.hw_cylinder_volume
Tw = dwelling.water_sys.cpsu_Tw
Cmax = .1456 * Vcs * (Tw - 48)
nm = DAYS_PER_MONTH
Tmin = ((dwelling.h * dwelling.heat_calc_results['Tmean']) - Cmax + (
1000 * dwelling.hw_energy_content / (24 * nm)) -
dwelling.heat_calc_results['useful_gain']) / dwelling.h
Text = dwelling.Texternal_heating
Eonpeak = numpy.where(
Tmin - Text == 0,
0.024 * dwelling.h * nm,
(0.024 * dwelling.h * nm * (Tmin - Text)) / (1 - numpy.exp(-(Tmin - Text))))
F = Eonpeak / (dwelling.hw_energy_content + dwelling.Q_required)
for i in SUMMER_MONTHS:
F[i] = 0
return F
def cpsu_store(dwelling):
if dwelling.get('measured_cylinder_loss'):
temperature_factor = .89
else:
temperature_factor = 1.08
if dwelling.get('has_hw_time_control'):
temperature_factor *= 0.81
# Check airing cupboard
if getattr(dwelling.water_sys, 'cpsu_not_in_airing_cupboard', False) is True:
# !!! Actually this is if cpsu or thermal store not in airing cupboard
temperature_factor *= 1.1
return temperature_factor
def elec_cpsu_store(dwelling):
if dwelling.get('measured_cylinder_loss'):
return 1.09 + 0.012 * (dwelling.water_sys.cpsu_Tw - 85)
else:
return 1


| Flight Date | Flight No | Sector | J Class Bookings |
Y Class Bookings |
Action |
|---|---|---|---|---|---|
| {{overbookedFlight.flightDate}} | {{overbookedFlight.flightNo}} | {{checkflightOD.sector}} | {{overbookedFlight.loadSummary["businessClassCapacity:"]- overbookedFlight.loadSummary.businessClassBookedLoad}} | {{overbookedFlight.loadSummary["economyClassCapacity:"]- overbookedFlight.loadSummary.economyClassBookedLoad}} |


Auth0 SDK for React Single Page Applications (SPA).
Using npm
npm install @auth0/auth0-react
Using yarn
yarn add @auth0/auth0-react
Configure the SDK by wrapping your application in Auth0Provider
:
// src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { Auth0Provider } from '@auth0/auth0-react';
import App from './App';
ReactDOM.render(
<Auth0Provider
domain="YOUR_AUTH0_DOMAIN"
clientId="YOUR_AUTH0_CLIENT_ID"
redirectUri={window.location.origin}
>
<App />
</Auth0Provider>,
document.getElementById('app')
);
Use the useAuth0
hook in your components to access authentication state (isLoading
, isAuthenticated
and user
) and authentication methods (loginWithRedirect
and logout
):
// src/App.js
import React from 'react';
import { useAuth0 } from '@auth0/auth0-react';
function App() {
const {
isLoading,
isAuthenticated,
error,
user,
loginWithRedirect,
logout,
} = useAuth0();
if (isLoading) {
return
Loading...
;
}
if (error) {
return
Oops... {error.message}
;
}
if (isAuthenticated) {
return (

Hello {user.name}{' '}
<button onClick={() => logout({ returnTo: window.location.origin })}>
Log out
</button>

);
} else {
return <button onClick={loginWithRedirect}>Log in</button>;
}
}
export default App;
If you're using TypeScript, you can pass a type parameter to useAuth0
to specify the type of user
:
const { user } = useAuth0<{ name: string }>();
user.name; // is a string
Use the withAuth0
higher order component to add the auth0
property to Class components:
import React, { Component } from 'react';
import { withAuth0 } from '@auth0/auth0-react';
class Profile extends Component {
render() {
// `this.props.auth0` has all the same properties as the `useAuth0` hook
const { user } = this.props.auth0;
return
Hello {user.name}
;
}
}
export default withAuth0(Profile);
Protect a route component using the withAuthenticationRequired
higher order component. Visits to this route when unauthenticated will redirect the user to the login page and back to this page after login:
import React from 'react';
import { withAuthenticationRequired } from '@auth0/auth0-react';
const PrivateRoute = () =>
Private
;
export default withAuthenticationRequired(PrivateRoute, {
// Show a message while the user waits to be redirected to the login page.
onRedirecting: () =>
Redirecting you to the login page...
,
});
Note If you are using a custom router, you will need to supply the Auth0Provider
with a custom onRedirectCallback
method to perform the action that returns the user to the protected page. See examples for react-router, Gatsby and Next.js.
Call a protected API with an Access Token:
import React, { useEffect, useState } from 'react';
import { useAuth0 } from '@auth0/auth0-react';
const Posts = () => {
const { getAccessTokenSilently } = useAuth0();
const [posts, setPosts] = useState(null);
useEffect(() => {
(async () => {
try {
const token = await getAccessTokenSilently({
audience: 'https://api.example.com/',
scope: 'read:posts',
});
const response = await fetch('https://api.example.com/posts', {
headers: {
Authorization: `Bearer ${token}`,
},
});
setPosts(await response.json());
} catch (e) {
console.error(e);
}
})();
}, [getAccessTokenSilently]);
if (!posts) {
return
Loading...
;
}
return (

{posts.map((post, index) => {
return
{post}
;
})}

);
};
export default Posts;
For a more detailed example see how to create a useApi
hook for accessing protected APIs with an access token.
We appreciate feedback and contribution to this repo! Before you get started, please see the following:
For support or to provide feedback, please raise an issue on our issue tracker.
For information on how to solve common problems, check out the Troubleshooting guide
For a rundown of common issues you might encounter when using the SDK, please check out the FAQ.
Please do not report security vulnerabilities on the public GitHub issue tracker. The Responsible Disclosure Program details the procedure for disclosing security issues.
Auth0 helps you to easily:
This project is licensed under the MIT license. See the LICENSE file for more info.


public interface IOperationReport extends IProcessReport
Severity values have the following meaning for an operation report:
IProcessReport.OK
- no problems have been detected for this operationIProcessReport.WARNING
- no problems have been detected for this operation
which will prevent the operation from executing, but there is information
which the user might want to know aboutIProcessReport.ERROR
- problems have been detected for this operation which
will prevent the operation from completingOperation reports are created automatically by the process framework when an operation is advised.
Clients may not implement this interface.
ERROR, OK, WARNING
| Modifier and Type | Method and Description |
|---|---|
java.lang.String[] |
getData()
Returns the string data of this report or
null if no data
has been set. |
int |
getMode()
Returns the mode in which this operation report was generated.
|
AdvisableOperation |
getOperation()
Returns the operation which produced this report or
null
if the operation is not available. |
java.lang.String |
getOperationId()
Returns the identifier of the advisable operation for which this
report was created.
|
IParticipantReport[] |
getParticipantReports()
Returns the collection of advisor reports which this
report contains.
|
ProcessRunnable |
getRunnable()
Returns the runnable which produced this report or
null
if the runnable is not available. |
boolean |
wasRun()
Returns whether or not the associated operation was run.
|
getDescription, getInfos, getName, getNestedReports, getOperationReports, getParentReport, getSeverity, isComplete
java.lang.String getOperationId()
IParticipantReport[] getParticipantReports()
boolean wasRun()
AdvisableOperation getOperation()
null
if the operation is not available. This method will always return
null
for operation reports which have been passed over
the wire.null
ProcessRunnable getRunnable()
null
if the runnable is not available. This method will always return
null
for operation reports which have been passed over
the wire.null
int getMode()
IOperationAdviceManager
.java.lang.String[] getData()
null
if no data
has been set.
Operations do not set the data on operation reports manually. Rather, clients set the report data on their advisable operation and the process framework sets this data on the report automatically.
This support is experimental and may be removed at any time.
null


Before Change
def test_experiment_model_resume(csv_filename):
// Single sequence input, single category output
// Tests saving a model file, loading it to rerun training and predict
input_features = "[{name: utterance, type: sequence, vocab_size: 10," \
" max_len: 10, encoder: rnn, reduce_output: sum}]"
output_features = "[{name: intent, type: category, vocab_size: 2," \
" reduce_input: sum}] "
// Generate test data
rel_path = generate_data(input_features, output_features, csv_filename)
model_definition = model_definition_template.substitute(
input_name=input_features, output_name=output_features
)
exp_dir_name = experiment(yaml.safe_load(model_definition),
data_csv=rel_path)
logging.info("Experiment Directory: {0}".format(exp_dir_name))
experiment(yaml.safe_load(model_definition), data_csv=rel_path,
model_resume_path=exp_dir_name)
full_predict(os.path.join(exp_dir_name, "model"), data_csv=rel_path)
After Change
// Generate test data
rel_path = generate_data(input_features, output_features, csv_filename)
model_definition = {
"input_features": input_features,
"output_features": output_features,
"combiner": {"type": "concat", "fc_size": 14},
"training": {"epochs": 2}
}
exp_dir_name = experiment(model_definition, data_csv=rel_path)
logging.info("Experiment Directory: {0}".format(exp_dir_name))


Switch on the rowsDraggable
flag to make the grid's rows draggable with mouse (or touch).
Specifying dropMode
enables dropping on top of the grid or grid rows.
Supported values for the dropMode
are
Depending on rowsDraggable
and dropMode
configuration,
grid fires events during the different phases of drag and drop sequence.
By default, only one row gets dragged at once. Make the grid rows selectable, for example with the selection column helper, to enable dragging multiple rows at the same time.
The detail.draggedItems
property of the grid-dragstart
event
is an array containing the items in the visible viewport that are dragged.
The detail.dropTargetItem
property of the grid-drop
event
refers to the item of the grid row on which the drop occurred.
The detail.dropLocation
property of the grid-drop
event
indicates the position at which the drop event took place relative to a row. Depending
on the dropMode
value, the drop location can be one of the following:
Hint: Try dragging users from the grid on the left on top of the users of the grid on the right to create a hierarchical structure.
Operating with the drag event text data enables you to process drag and drop between different application windows. The default payload of the drag event is generated from the visible grid columns and items as a line break separated list of tab-separated values.
The detail.data
property of the grid-drop
event
is the payload of the drag and drop operation.
To customize the drag event data, use the detail.setDragData
function of the grid-dragstart
event.
The function takes two parameters:
Note: "text" is the only data type supported by all the browsers the grid currently supports (including IE11).
Note: On multi selection, only the rows in the viewport are included in the drag operation.
Hint: Try dragging the grid's rows to the grid of the same demo but on another browser window.
When rows-draggable
and drop-mode
properties are set, by default, all the grid rows
can be dragged and dropped on top of. This can be controlled per row basis by using dragFilter
and dropFilter
hook functions.
The dragFilter
function receives information about the row as the argument and
should return a boolean value indicating whether dragging of the corresponding row should be enabled.
Respectively, dropFilter
can be used for disabling dropping on top of specific rows.
Hint: Try changing the subordinates of the main level supervisors by dragging. The filters prevent


Flexbox
- src
- layout
- flexbox.scss
Class list
- .start
- .center
- .end
- .between
- .around
- .even
- .cross-start
- .cross-center
- .cross-end
- .cross-baseline
- .cross-stretch
- .order-(value)-(breakpoint)
- .flex-wrap
Flex containers
The classes specified above (except for .order-(value)-(breakpoint)) are to be applied to an element whose display property is set to flex, which becomes the flex container. These classes determine how to place the immediate children (flex items) of the flex container.
The classes without cross- affect items along the main axis, which is by default left to right with no wrapping.
The classes with cross- affect items along the cross axis (perpendicular to the main axis). By default the cross axis would be top to bottom.
Example

<button class="button h1">button</button>
Lorem ipsum dolor.
tag

Flex wrap
Use the .flex-wrap class on a flex container to have the flex items wrap onto new lines if they exceed the remaining width for the current line.
Flex items
The only classes that Sandbox provides for flex items are .order-(value)-(breakpoint). These classes allow the rearrangement of the flex items at specific breakpoints, so long as they are within a flex container.
The values that can be plugged into (value) are: 1, 2, 3, 4.
Plug in whichever breakpoint suffix you want to use into (breakpoint).
Example
1
2
3

More info
For more information on flexbox, check out this article.


{% extends 'base.html' %} {% load staticfiles %} {% block content %}
All Clients are listed below as registered to the system and categorized into riders and drivers.
| Img | User | Phone Number | Status | |
| Anthony Jackson | +88017########### |<EMAIL_ADDRESS>| Active | |
| Rooney Lindsay | +88018########### |<EMAIL_ADDRESS>| Active | |
| Lionel Mcmillan | +88016########### |<EMAIL_ADDRESS>| Inactive | |
| Edan Randall | +88019########### |<EMAIL_ADDRESS>| Waiting |
| Img | User | Phone Number | Status | |
| Anthony joshim | +88019########### |<EMAIL_ADDRESS>| Active | |
| Sokhina Lindsay | +88016########### |<EMAIL_ADDRESS>| Active | |
| Abul Mcmillan | +88017########### |<EMAIL_ADDRESS>| ||
| Edan kanchon | +88018########### |<EMAIL_ADDRESS>| Waiting |
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
JO1004
Ride 01 - From Dhanmondi To Gulshan. By Joldii Car
2:10 pm - 12.06.2014Ride 02 - From Gulshan To Mohakhali. By Joldii Bike
4:20 pm - 10.05.2014Ride 03 - From Mohakhali To Dhanmondi. By Joldii Bike
4:20 pm - 10.05.2014Many desktop publishing packages and web page editors now use Lorem Ipsum as their default tempor incididunt model text.
JO1004
Ride 01 - From Dhanmondi To Gulshan. By Joldii Car
2:10 pm - 12.06.2014Ride 02 - From Gulshan To Mohakhali. By Joldii Bike
4:20 pm - 10.05.2014Ride 03 - From Mohakhali To Dhanmondi. By Joldii Bike
4:20 pm - 10.05.2014Latin professor at Hampden-Sydney College in Virginia, looked embarrassing hidden in the middle.
JO1004
Ride 01 - From Dhanmondi To Gulshan. By Joldii Car
2:10 pm - 12.06.2014Ride 02 - From Gulshan To Mohakhali. By Joldii Bike
4:20 pm - 10.05.2014Ride 03 - From Mohakhali To Dhanmondi. By Joldii Bike
4:20 pm - 10.05.2014Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero,written in 45 BC. This book is a treatise on.
JO1004
Ride 01 - From Dhanmondi To Gulshan. By Joldii Car
2:10 pm - 12.06.2014Ride 02 - From Gulshan To Mohakhali. By Joldii Bike
4:20 pm - 10.05.2014Ride 03 - From Mohakhali To Dhanmondi. By Joldii Bike
4:20 pm - 10.05.2014


Home
Activities
Accomodations
Travel Arrangements
Activities on Gilligans Island
Most fun ever in life
Meet Gilligan
Meet the Skipper
Coconut water sampling
Boating with Marianne


|
Perl Weekly
Issue #54 - 2012-08-06 - WebGUI, Dada Mail, Sqitch releases
latest | archive | by Gabor Szabo
|
|
Hi,
I don't have much to say this week. Let's see what other people wrote:
|
|
|
Announcements
|
Announcing Galileo - A minimal but modern CMS
I think there are lots of Content Management Systems written in Perl, but none of them are really well known. Now that Joel Berger has released his new CMS, I wonder if this can break into the world of high-profile CMSes? Does Joel want to invest the time and energy in the promotion part as well? Does he want to make a business around it?
|
|
50% off O'Reilly Perl Ebooks
I was not sure if I want to promote O'Reilly, after all the money spent on them might be money not spent on Perl Maven books. In the end, I think if you wanted to buy a Perl book from O'Reilly and you can buy it for half the price, then why not? Just note, it is only till August 9, 2012
|
|
Articles
|
Investing in Infrastructure
Some good reasons why a company should contribute back to the Perl ecosystem. Unfortunately, many think 'it will work without us' or feel entitled to all the free code regardless of their action. It seems - to me - the higher up someone on the management ladder - the shorter s/he can see ahead.
|
|
Hash to string race
Sebastien Willing has compared 9 ways of stringification (or serialization or marshalling). See his benchmarks.
|
|
|
|
Releases
|
|
|
|
|
Sqitch v0.80: Now With More You
This isn't just theory any more, David E. Wheeler released a fairly usable version of the Sqitch, the simple database change management system. It was nice following along his posts during the development, and see the usable release of the product. Now comes the hard part. Getting the word out. You could help him in this even more. Try Sqitch and write about it, or share the link to the article.
|
|
Testing
|
|
|
Code
|
On writing a new Perl Debugger (Part 1 - Why?)
Rocky Bernstein has started a new debugger for Perl. This the first part of an already 3-part long series of articles describing not only why he is building a new debugger, but also what can we expect to find in it. I think writing about the debugger as he is developing it can be one of the critical pieces, that can make the new debugger more popular than the previous ones.
|
|
|
|
|
|
Editors and IDEs
|
Perl Editor
This is the second part of the Perl Maven Tutorial. It is fun to see how every time editors are mentioned, the number of comments jump. People really care about their editors. (Maybe I should write about indentation as well :).
|
|
Grants
|
|
|
Cooking Perl with Chef - Grant Report #4
David Golden is back working full time on the grant. He also created a new web site for Perl and Chef and there is a mailing list for the DevOps using Perl. There is even a screencast for Cooking Perl with Chef.
|
|
Polls
|
A Quick Update On The Catalyst Poll
Surely more than 300 of the Perl Weekly readers have some opinion (good or bad) on Catalyst? John Napiorkowski is looking for both current users of Catalyst and people who have not used it yet or already left it for some other framework or even some other language. (Though I guess the last group won't read this newsletter anyway.)
|
|
Perl 6
|
The finished game
After a month of blogging, Carl Masak has finished the game. If you have been waiting it to be finished before you start reading, then it's your turn now!
|
|
|
|
|
|
|
|
Weekly collections
|
|
|
|
|
|
|
Events
I usually list the next 3-4 events here. The list of all the events can be found on the web site. If your Perl event is not listed there, please let me know.
|
|
|
|
|
|
|
You know, you could get the Perl Weekly right in your mailbox. Every Week. Free of charge!
|


Salmon Cookies Global Sales
Add A New Location
Location Information
Location Name
Minimum Customers
Maximum Customers
Average Cookies per Sale
Add New Location


Planetary Climate
Energy Balance
Where?
What?
Big Picture
Energy Sources
Energy Sinks
Insolation: March-May
Longwave: March-May
Annual Mean
Net Radiation
Questions


Splash Pages
{{ splash.unique_id }}
{{ splash.created_at | humanTime }}
{{ splash.debug }}
{{ splash.vsg_host }}:{{ splash.vsg_port}}
Allowed Days
Set the start and end times to 00:00 to allow access all day
Edit values
Set the Timezone to ensure your splash restrictions work correctly.
Splash invalid, please check your settings.


E
- Comparablepublic class BinarySearchTree<E extends java.lang.Comparable<E>>
extends java.lang.Object
implements java.lang.Iterable<E>
Null elements are not allowed and duplicates can have unexpected behavior.
Use the isSelfBalancing()
and setSelfBalancing(boolean)
methods to
make the tree an AVL tree.
| Modifier and Type | Class and Description |
|---|---|
static class |
BinarySearchTree.Direction
Enumeration of the traversal orders.
|
protected class |
BinarySearchTree.Node
Node class for a
BinarySearchTree . |
class |
BinarySearchTree.TreeIterator
Iterator class for looping through the elements in order or in reverse order.
|
| Modifier and Type | Field and Description |
|---|---|
protected BinarySearchTree.Node |
root
The root node of the tree
|
protected boolean |
selfBalancing
Whether to keep the tree balanced or not
|
protected int |
size
The current size of the tree
|
| Constructor and Description |
|---|
BinarySearchTree()
Creates a new unbalanced binary search tree.
|
BinarySearchTree(BinarySearchTree<E> tree)
Copy constructor.
|
BinarySearchTree(BinarySearchTree<E> tree,
boolean selfBalancing)
Copy constructor.
|
BinarySearchTree(boolean selfBalancing)
Creates a new binary search tree.
|
| Modifier and Type | Method and Description |
|---|---|
protected BinarySearchTree.Node |
balance(BinarySearchTree.Node node)
Balances the given node's subtree.
|
protected void |
balanceTree()
Re-balances the entire tree.
|
protected void |
balanceTree(BinarySearchTree.Node node)
Balances the tree recursively to the root starting at the given node.
|
void |
clear()
Empties this tree.
|
protected boolean |
contains(BinarySearchTree.Node node)
Returns true if the given node is contained in this tree.
|
protected BinarySearchTree.Node |
contains(BinarySearchTree.Node node,
E comparable)
Internal recursive method to find an item in the tree.
|
boolean |
contains(E comparable)
Attempts to find the given comparable object within the tree.
|
protected BinarySearchTree.Node |
get(E comparable)
Returns the node that contains the given value or null if the
value is not found.
|
int |
getHeight()
Returns the maximum depth of the tree.
|
protected int |
getHeight(BinarySearchTree.Node node)
Returns the maximum depth of the subtree of the given node.
|
E |
getMaximum()
Returns the maximum value of the tree.
|
protected BinarySearchTree.Node |
getMaximum(BinarySearchTree.Node node)
Returns the maximum value of the subtree of the given node.
|
E |
getMinimum()
Returns the minimum value of the tree.
|
protected BinarySearchTree.Node |
getMinimum(BinarySearchTree.Node node)
Returns the minimum value of the subtree of the given node.
|
E |
getRoot()
Returns the root of the tree.
|
protected BinarySearchTree.Node |
getRootNode()
Returns the root node of this tree.
|
java.util.Iterator<E> |
inOrderIterator()
Returns a new iterator for traversing the tree in order.
|
protected boolean |
insert(BinarySearchTree.Node item)
Inserts the given node into the tree.
|
protected boolean |
insert(BinarySearchTree.Node item,
BinarySearchTree.Node node)
Internal insertion method.
|
boolean |
insert(E comparable)
Inserts the given comparable object into this binary tree.
|
protected boolean |
insertSubtree(BinarySearchTree.Node node)
Inserts the given subtree into this binary tree.
|
protected boolean |
insertSubtree(BinarySearchTree<E> tree)
Inserts the given subtree into this binary tree.
|
boolean |
isEmpty()
Returns true if this tree is empty.
|
boolean |
isSelfBalancing()
Returns true if this tree is self balancing.
|
java.util.Iterator<E> |
iterator()
Returns the in-order (ascending) iterator.
|
protected boolean |
remove(BinarySearchTree.Node node)
Removes the given node from this tree and returns
true if the node existed and was removed.
|
boolean |
remove(E comparable)
Removes the comparable object from the tree returning the node or
null if the comparable object was not found.
|
protected BinarySearchTree.Node |
remove(E comparable,
BinarySearchTree.Node node)
Returns the node removed if the comparable is found, null otherwise.
|
E |
removeMaximum()
Removes the maximum value node from this tree.
|
protected BinarySearchTree.Node |
removeMaximum(BinarySearchTree.Node node)
Removes the maximum value node from the subtree of the given node.
|
E |
removeMinimum()
Removes the minimum value node from this tree.
|
protected BinarySearchTree.Node |
removeMinimum(BinarySearchTree.Node node)
Removes the minimum value node from the subtree of the given node.
|
protected void |
removeNode(BinarySearchTree.Node node)
Internal method to remove the given node from the tree retaining
all the subtree nodes.
|
protected boolean |
removeSubtree(BinarySearchTree.Node node)
Removes the given node and the corresponding subtree from this tree.
|
protected boolean |
removeSubtree(E comparable)
Removes the node containing the given value and the corresponding
subtree from this tree.
|
java.util.Iterator<E> |
reverseOrderIterator()
Returns a new iterator for traversing the tree in reverse order.
|
void |
setSelfBalancing(boolean flag)
Sets whether this tree should self balance.
|
int |
size()
Returns the number of elements in the tree.
|
protected int |
size(BinarySearchTree.Node node)
Returns the number of elements in the subtree.
|
protected BinarySearchTree.Node root
protected int size
protected boolean selfBalancing
public BinarySearchTree()
public BinarySearchTree(boolean selfBalancing)
selfBalancing
- true if the tree should self balancepublic BinarySearchTree(BinarySearchTree<E> tree)
This performs a deep copy of the elements in the tree. The values contained in the tree are shallow copied.
tree
- the tree to copypublic BinarySearchTree(BinarySearchTree<E> tree, boolean selfBalancing)
This performs a deep copy of the elements in the tree. The values contained in the tree are shallow copied.
tree
- the tree to copyselfBalancing
- true if the tree should self balancepublic boolean isSelfBalancing()
public void setSelfBalancing(boolean flag)
If the tree already contains elements the tree is reconstructed and balanced.
flag
- true if the tree should self balancepublic boolean insert(E comparable)
comparable
- the comparable object to insertpublic boolean remove(E comparable)
comparable
- the comparable objectpublic E removeMinimum()
public E removeMaximum()
public E getMinimum()
public E getMaximum()
public boolean contains(E comparable)
comparable
- the comparable object to findpublic E getRoot()
public void clear()
public boolean isEmpty()
public int getHeight()
public int size()
public java.util.Iterator<E> iterator()
public java.util.Iterator<E> inOrderIterator()
public java.util.Iterator<E> reverseOrderIterator()
protected BinarySearchTree.Node getMinimum(BinarySearchTree.Node node)
node
- the subtree root nodeBinarySearchTree.Node
the node found; null if subtree is emptyprotected BinarySearchTree.Node getMaximum(BinarySearchTree.Node node)
node
- the subtree root nodeBinarySearchTree.Node
the node found; null if subtree is emptyprotected BinarySearchTree.Node getRootNode()
BinarySearchTree.Node
protected BinarySearchTree.Node removeMinimum(BinarySearchTree.Node node)
node
- the subtree root nodeBinarySearchTree.Node
the node removedprotected BinarySearchTree.Node removeMaximum(BinarySearchTree.Node node)
node
- the subtree root nodeBinarySearchTree.Node
the node removedprotected int getHeight(BinarySearchTree.Node node)
node
- the root node of the subtreeprotected int size(BinarySearchTree.Node node)
node
- the root node of the subtreeprotected boolean contains(BinarySearchTree.Node node)
node
- the node to findprotected BinarySearchTree.Node get(E comparable)
comparable
- the comparable valueBinarySearchTree.Node
the node containing the given value; null if its not foundprotected boolean insertSubtree(BinarySearchTree.Node node)
This method copies the elements from the given subtree.
node
- the subtree root nodeprotected boolean insertSubtree(BinarySearchTree<E> tree)
This method copies the elements from the given tree.
tree
- the subtreeprotected boolean removeSubtree(E comparable)
comparable
- the comparable to search forprotected boolean removeSubtree(BinarySearchTree.Node node)
node
- the node and subtree to removeprotected boolean insert(BinarySearchTree.Node item)
This method will work for an empty tree.
item
- the new node to insertprotected boolean insert(BinarySearchTree.Node item, BinarySearchTree.Node node)
This method cannot insert into the tree if the given node parameter is null. Use the
insert(Node)
method instead to ensure that the node is inserted.
item
- the node to insertnode
- the subtree root node to start the searchinsert(Node)
protected boolean remove(BinarySearchTree.Node node)
node
- the node to removeprotected BinarySearchTree.Node remove(E comparable, BinarySearchTree.Node node)
comparable
- the comparable object to removenode
- the subtree node to start the searchBinarySearchTree.Node
null if the given comparable was not foundprotected void removeNode(BinarySearchTree.Node node)
This method assumes that the node is contained in this tree.
node
- the node to removeprotected BinarySearchTree.Node contains(BinarySearchTree.Node node, E comparable)
node
- the subtree root nodecomparable
- the comparable to findBinarySearchTree.Node
the node found; null if not foundprotected void balanceTree()
protected void balanceTree(BinarySearchTree.Node node)
node
- the node to begin balancingprotected BinarySearchTree.Node balance(BinarySearchTree.Node node)
node
- the root node of the subtreeBinarySearchTree.Node
the new root


{% extends "layout.html" %} {% from "common/errors.html" import errorsFor %} {% import "common/components/findAddressComponent.html" as findAddressComponent %} {% block two_thirds %}


THE ICE STORM A film review by Andrew Hicks Copyright 1997 by Andrew Hicks
(1997) ***1/2 (out of four)
Christina Ricci saying, "I'll show you mine if you show me yours," _that's_ what more arthouse movies need. THE ICE STORM, adapted from the novel by Rick Moody, is a powerful Ang Lee film that explores the world of empty bitterness and loneliness of two Connecticut families during the sexual revolution of the '70s. As we all know, the American colonial war wasn't the only revolution with a "shot heard 'round the world." I don't know what that last sentence was supposed to mean exactly; just chalk it up to one more vague sexual innuendo from the mouth of Andrew.
Kevin Kline, Mr. Name Above the Title, plays an average husband. He's got a wife (Joan Allen), two kids and a lot of tacky, big-collared shirts. It's the kind of family that ships the teenage son off to boarding school, leaves the teenage daughter at home and heads off to some lame party every night, parties where they speculate about those wild California "key" parties. That's when the men put their car keys in a bowl and the women fish out a random set of keys at the end of the night to see which guy they're going home with.
Kline also happens to be having an affair with the neighbor, Sigourney "Zuul" Weaver. But look out, tables are turning, Allen eventually gets it on with the husband in his car ("Do these seats go back?") and Weaver's son (Elijah Wood) is messing around with Kline's daughter (Ricci), the kind of plot twist you'd find in an X-rated episode of "The Brady Bunch."
Meanwhile, there's Kline's son, the only person who manages to pursue anyone outside the neighbor's family. Home from boarding school for Thanksgiving weekend, he arranges a train trip into New York to see a girl from his school. For once, he's trying to get to a woman before his best friend does, until he shows up at the house and finds the friend already there. This storyline was my personal favorite of the movie, as someone who's had that special "brother" relationship with a lot of girls I've had crushes on.
THE ICE STORM takes its precious time to get started, but once it does, it turns into one hell of a ride. Its circular, orchestrated plot and existential dialogue keep it from being anything raunchy or low-brow. In a movie where people of all ages search for meaning in sex, drugs and alcohol, nothing is glorified or exaggerated. That is the beauty of THE ICE STORM and, having seen it, I can now say with all honesty, "I'll show you mine if you show me yours."
--
Visit the Movie Critic at LARGE website at http://www.missouri.edu/~c667778/movies.html
Serving America for more than 1/25th of a century!
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


Ocean [af12], ocean, in Crystal Sea
Last updated Turn #149
Ocean [af12], ocean, in Crystal Sea
------------------------------------------------------------------------
9: Sirocco Traveller [ja8y], ship, 10 hulls, 1 rowing port, 30 sails,
9: 7% damaged, arrived from Ocean [ae12], owner:
9: Phantasm [n4b], Imperial Empire, duke, with one peasant,
9: two workers, 32 sailors, 15 lt. xbowmen, accompanied by:
9: Elisabeth [hn0y], Pen, with 21 pikemen
9: A storm batters the ship and causes some damage.
10: Sirocco Traveller [ja8y], ship, 10 hulls, 1 rowing port, 30 sails,
10: 8% damaged, departed for Ocean [ag12].
Routes leaving Ocean:
North, to Ocean [ae12], 6 days
East, to Ocean [af13], 6 days
South, to Ocean [ag12], 6 days
West, to Ocean [af11], 6 days
It is raining.


| Main Forum
(New Thread) |
|
Game related discussions.
|
| Welcome to Round 5 |
113 |
McFlaccid |
| DTM GameGuide! |
28 |
KWolf |
| Federal Takedown Part II |
30 |
Septicaemic |
| Major Crimes |
683 |
StillLostMyPug |
| Numbergame |
7263 |
Devil1- |
| Count Down |
5297 |
Devil1- |
| Not allowed to shoot |
352 |
MalfoyReturns |
| Ps4 addiction |
34 |
Tarek123 |
| Looking for someone? |
290 |
Perfect |
| Poker |
358 |
HeistRocka |
| Rank promotions rewards |
26 |
Wilkdog |
| Supporting the game. |
74 |
MalfoyReturns |
| News |
150 |
McFlaccid |
| Suggestions |
592 |
NiborK |
| Laundering |
14 |
Fire |
| Anyone fancy explaining |
9 |
StillLostMyPug |
| Questions & Answers Topic |
489 |
Drdrace |
| Drug Runs |
160 |
Rheasus-II |
| Fight clubs back |
16 |
Elmer-Fudd |
| Need |
1 |
TheBearded |
| Why? |
8 |
MalfoyReturns |
| Goodbye Andy |
3 |
StillLostMyPug |
| Hmmm |
1 |
Lowkey1 |
| Federal Takedown Part II |
1 |
RidsterII |
| So, what's your job? |
56 |
Kismayo |
| Remember when? |
88 |
HeyItsSarge |
| Cards Against Humanity |
5 |
Mushie |
| Dutch Bar |
172 |
Benny |
| What's the going rate |
10 |
Para |
| Poker |
7 |
StillLostMyPug |
|
|
|
|
|


If you installed the component using the RPMs, you must upgrade using RPMs as described in the OSG guides (see Frontend RPM installation, Factory RPM installation). This document refers to the TAR files installation.
General upgrade instructions for a Frontend
These instructions assume that you are only upgrading the Glidein Frontend. If you need to upgrade more components, it may involve additional steps.
- Back up your glideinwms (binaries/source) and frontstage (working directory) areas for the existing installation.
- Download the GlideinWMS tarball and replace the old version with it.
- Make sure you have correct HTCondor in your path. This is important!
- cd frontstage/frontend_Frontend_dir. this is the directory where you have frontend_startup script
- ./frontend_startup upgrade ../instance_v3_0.cfg/frontend.xml
Note that the path names (glideinwms, frontstage, frontend_Frontend_dir, instance_v3_0) may be slightly different in each case based on your configuration.
In case you have done any special configuration to glideinWMS/creation/web_base/condor_vars.lst, you need to
redo them for the existing code base.
Alternatively, you can also try backing up files, untar-ing the new version, then copy the instance directory to the new version. Make the required changes and run create_frontend to reconfigure. Then, follow the post-installation tasks in the manual.
Warning: Check the revision history before doing this. Not all versions are compatible.
General upgrade instructions for a Factory
These instructions assume that you are only upgrading the Glidein Factory. If you need to upgrade more components, it may involve additional steps. Upgrading a factory can be done in two ways:
- Installing the new glideinWMS code in a separate directory, and create a new configuration
tree.
The configuration file (glieinWMS.xml) of the existing configuration tree may be used as a base for the new one; only the glidein_ name needs to be changed. See the configuration page for more defaults. - Overwrite the GlideinWMS installation and run: factory_startup upgrade config.xml.
If getting the code from GIT, git pull origin branch (or master) will update the code.
Running 'upgrade' overwrites all files in the glidein submit directories including rewriting the configuration file. If you use 'reconfig', this will only upgrade the files with factory configuration information so some of the scripts may not get updated.
Which option you choose is really up to you; the second one is easier, but the first one is cleaner and easier to revert back.
Warning: Check the revision history before doing this. Not all versions are compatible. For example, changes to a factory configuration file may not allow you to reuse an old glideinWMS.xml.
Upgrading from v2+ to v3+
We normally don't recommend major version upgrades as there are
significant changes to the configuration files and content in the working
directories.
Starting v3.1, glideinwms provides tools to convert v2.7 config files and
rrds to v3+ equivalent. See below for detailed steps to upgrade factory
and frontend.
prompt$ ./convert_frontend_2to3.sh Usage: convert_frontend_2to3.sh <options> where <options> are: -s <path> : path to top directory glideinWMS source -i <frontend-2.xml> : v2 frontend.xml -o <frontend-3.xml> : v3 frontend.xml prompt$ ./convert_factory_2to3.sh Usage: convert_factory_2to3.sh <options> where <options> are: -s <path> : path to top directory glideinWMS source -i <glideinWMS-2.xml> : v2 glideinWMS.xml -o <glideinWMS-3.xml> : v3 glideinWMS.xml prompt$ ./convert_factory_rrds_2to3.sh Usage: convert_factory_rrds_2to3.sh <options> where <options> are: -c <glideinWMS.xml> : full path to the v3 glideinWMS config file
The upgrade process is not fully automated and involves few steps. NOTE: Please back up your configurations (they can be a reference for any customizations you have done) when reinstalling the services.
################################# # UPGRADING FACTORY v2.7+ to v3+ ################################# # STEP 1: Stop the v2 factory service # STEP 2: Install glideinwms v3+ # STEP 3: Backup and Convert v2 config and rrds to v3 # STEP 4: Run factory_startup with upgrade option # STEP 5: Start the factory service
# GLIDEINWMS from TARBALL/GIT, assuming following # Glideinwms SRC_DIR=/opt/glideinwms # Factory WORK_DIR=/home/factory/glideinsubmit/glidein_v1_0 # Factory CONFIG_DIR=/home/factory/glideinsubmit/glidein_v1_0.cfg prompt$ cd $WORK_DIR prompt$ ./factory_startup stop prompt$ tar xzf -C $SRC_DIR /tmp/glideinwms_v3_1.tgz prompt$ cp $WORK_DIR/glideinWMS.xml $WORK_DIR/glideinWMS-2.xml prompt$ cp $CONFIG_DIR/glideinWMS.xml $CONFIG_DIR/glideinWMS-2.xml prompt$ $SRC_DIR/factory/tools/convert_factory_2to3.sh -i $WORK_DIR/glideinWMS-2.xml -o $WORK_DIR/glideinWMS.xml -s $SRC_DIR prompt$ $SRC_DIR/factory/tools/convert_factory_2to3.sh -i $CONFIG_DIR/glideinWMS-2.xml -o $CONFIG_DIR/glideinWMS.xml -s $SRC_DIR prompt$ $SRC_DIR/factory/tools/convert_factory_rrds_2to3.sh -c $CONFIG_DIR/glideinWMS.xml prompt$ ./factory_startup upgrade prompt$ ./factory_startup start
# GLIDEINWMS from RPM, assuming following # Glideinwms SRC_DIR=/usr/lib/python2.4/site-packages/glideinwms # Factory WORK_DIR=/var/lib/gwms-factory/work-dir # Factory CONFIG_DIR=/etc/gwms-factory prompt$ service gwms-factory stop prompt$ rpm -Uvh <glideinwms rpm> prompt$ cp $WORK_DIR/glideinWMS.xml $WORK_DIR/glideinWMS-2.xml prompt$ cp $CONFIG_DIR/glideinWMS.xml $CONFIG_DIR/glideinWMS-2.xml prompt$ $SRC_DIR/factory/tools/convert_factory_2to3.sh -i $WORK_DIR/glideinWMS-2.xml -o $WORK_DIR/glideinWMS.xml -s $SRC_DIR prompt$ $SRC_DIR/factory/tools/convert_factory_2to3.sh -i $CONFIG_DIR/glideinWMS-2.xml -o $CONFIG_DIR/glideinWMS.xml -s $SRC_DIR prompt$ $SRC_DIR/factory/tools/convert_factory_rrds_2to3.sh -c $CONFIG_DIR/glideinWMS.xml prompt$ service gwms-factory upgrade prompt$ service gwms-factory start
################################## # UPGRADING FRONTEND v2.7+ to v3+ ################################## # STEP 1: Stop the v2 frontend service # STEP 2: Install glideinwms v3+ # STEP 3: Backup and Convert v2 config to v3 # STEP 4: Run frontend_startup with upgrade option # STEP 5: Start the frontend service
# GLIDEINWMS from TARBALL/GIT, assuming following # Glideinwms SRC_DIR=/opt/glideinwms # Frontend WORK_DIR=/home/frontend/frontstage/frontend_myfrontend # Frontend CONFIG_DIR=/home/frontend/frontstage/instance.cfg prompt$ cd $WORK_DIR prompt$ ./frontend_startup stop prompt$ tar xzf -C $SRC_DIR /tmp/glideinwms_v3_1.tgz prompt$ cp $WORK_DIR/frontend.xml $WORK_DIR/frontend-2.xml prompt$ cp $CONFIG_DIR/frontend.xml $CONFIG_DIR/frontend-2.xml prompt$ $SRC_DIR/frontend/tools/convert_frontend_2to3.sh -i $WORK_DIR/frontend-2.xml -o $WORK_DIR/frontend.xml -s $SRC_DIR prompt$ $SRC_DIR/frontend/tools/convert_frontend_2to3.sh -i $CONFIG_DIR/frontend-2.xml -o $CONFIG_DIR/frontend.xml -s $SRC_DIR prompt$ ./frontend_startup upgrade prompt$ ./frontend_startup start
# GLIDEINWMS from RPM, assuming following # Glideinwms SRC_DIR=/usr/lib/python2.4/site-packages/glideinwms # Frontend WORK_DIR=/var/lib/gwms-frontend/vofrontend # Frontend CONFIG_DIR=/etc/gwms-frontend prompt$ service gwms-frontend stop prompt$ rpm -Uvh <glideinwms rpm> prompt$ cp $WORK_DIR/frontend.xml $WORK_DIR/frontend-2.xml prompt$ cp $CONFIG_DIR/frontend.xml $CONFIG_DIR/frontend-2.xml prompt$ $SRC_DIR/frontend/tools/convert_frontend_2to3.sh -i $WORK_DIR/frontend-2.xml -o $WORK_DIR/frontend.xml -s $SRC_DIR prompt$ $SRC_DIR/frontend/tools/convert_frontend_2to3.sh -i $CONFIG_DIR/frontend-2.xml -o $CONFIG_DIR/frontend.xml -s $SRC_DIR prompt$ service gwms-frontend upgrade prompt$ service gwms-frontend start
Upgrading from v1+ to v3+
We do not support upgrading from v1+ to v3+. There are too many changes between these versions and reinstallation of ALL services is required.


Analyses for-loops and reports if a foreach-loop can be used instead.
Foreach constructs are easier to read and allow the use of efficient
iterators
.


To use the sequencer :
This is an hexagonal isomorphic keyboard sequencer inspired by electrogear and Musix Pro.
Depending on the layout selected, each of the three axes corresponds to a different interval.
Each complete layout can be encoded into an unique UIL label, you can learn more in this paper.
Author: Clément Cariou Licence: MIT


| File | Statements | Branches | Functions | Lines | |||||
|---|---|---|---|---|---|---|---|---|---|
| alexa-context.ts | 100% | 21/21 | 100% | 8/8 | 100% | 11/11 | 100% | 21/21 | |
| alexa-session.ts | 100% | 11/11 | 100% | 4/4 | 100% | 6/6 | 100% | 11/11 | |
| alexa.ts | 100% | 108/108 | 95.16% | 59/62 | 100% | 27/27 | 100% | 108/108 | |
| audio-item.ts | 100% | 12/12 | 100% | 0/0 | 100% | 3/3 | 100% | 12/12 | |
| audio-player.ts | 100% | 85/85 | 86.67% | 26/30 | 100% | 22/22 | 100% | 85/85 | |
| intent-schema.ts | 100% | 41/41 | 100% | 12/12 | 100% | 10/10 | 100% | 40/40 | |
| interaction-model.ts | 100% | 35/35 | 100% | 24/24 | 100% | 7/7 | 100% | 34/34 | |
| sample-utterances.ts | 100% | 76/76 | 100% | 14/14 | 100% | 17/17 | 100% | 74/74 | |
| service-request.ts | 98.77% | 80/81 | 97.62% | 41/42 | 100% | 13/13 | 98.77% | 80/81 |


Table of contents
Commands
Moves:
- Enter moves in the format "c# c#" where c is
a
character (a-h) and # is a number (1-8).
- The legacy move command of the form
"move (#,#) ->
(#,#)" is still supported.
Undo:
- Undo moves by clicking "Undo" or typing "undo".
Log:
- Show the log by clicking "Show log" or typing
"log".
Quit:
- Quit by closing the game window or typing
"please
quit".
Change Names:
- Change the player names by clicking
"Change names"
or typing "names".
Help:
- Access this screen by clicking "Help" or typing
"help".
to top
Piece rules
Pawn:
- Can move one or two squares forward
on the first
move.
- Can move only one square forward
after the first
move.
- Can capture diagonally, 1 square away.
- Can become a Queen, Rook, Bishop or Knight
if it
reaches the other end of board.
Rook:
- Can move along a rank or file, by any number
of
empty squares.
Bishop:
- Can move diagonally any number of
empty squares.
- Always stays on the same color squares.
Knight:
- Moves in a capital "L" shape.
- Can jump over any pieces in its way.
- Can only capture pieces at its final destination.
Queen:
- Can move in any direction any number of
empty
spaces.
- Is the most powerful piece on the board.
King:
- Can move one space in any direction.
- The game is over when the king is trapped in
checkmate.
to top
Other
Castling:
- To castle, both the king and the rook
may not have
moved.
- If the spaces between them are clear,
attempt to
move the king to its new position
(two squares to its left
or right).
- If successful, both the king and the rook
will move
to their new spaces.
En Passant
- A pawn can take an opposing pawn that moves
two
squares on its first move if it would have
been able to take
it had it only moved one square.
Who moves first?
- The player with white chess pieces always
moves
first.
to top


rt_sigqueueinfo, rt_tgsigqueueinfo - queue a signal and data
int rt_sigqueueinfo(pid_t tgid, int sig, siginfo_t *info);
int rt_tgsigqueueinfo(pid_t tgid, pid_t tid, int sig,
siginfo_t *info);
Note: There are no glibc wrappers for these system calls;
see NOTES.
The rt_sigqueueinfo() and rt_tgsigqueueinfo() system calls are the
low-level interfaces used to send a signal plus data to a process or thread.
The receiver of the signal can obtain the accompanying data by establishing a
signal handler with the sigaction(2) SA_SIGINFO flag.
These system calls are not intended for direct application use;
they are provided to allow the implementation of sigqueue(3) and
pthread_sigqueue(3).
The rt_sigqueueinfo() system call sends the signal
sig to the thread group with the ID tgid. (The term
"thread group" is synonymous with "process", and
tid corresponds to the traditional UNIX process ID.) The signal will
be delivered to an arbitrary member of the thread group (i.e., one of the
threads that is not currently blocking the signal).
The info argument specifies the data to accompany the
signal. This argument is a pointer to a structure of type siginfo_t,
described in sigaction(2) (and defined by including
<sigaction.h>). The caller should set the following fields in
this structure:
- si_code
- This should be one of the SI_* codes in the Linux kernel source
file include/asm-generic/siginfo.h. If the signal is being sent to
any process other than the caller itself, the following restrictions
apply:
- The code can't be a value greater than or equal to zero. In particular, it
can't be SI_USER, which is used by the kernel to indicate a signal
sent by kill(2), and nor can it be SI_KERNEL, which is used
to indicate a signal generated by the kernel.
- The code can't (since Linux 2.6.39) be SI_TKILL, which is used by
the kernel to indicate a signal sent using tgkill(2).
- si_pid
- This should be set to a process ID, typically the process ID of the
sender.
- si_uid
- This should be set to a user ID, typically the real user ID of the
sender.
- si_value
- This field contains the user data to accompany the signal. For more
information, see the description of the last (union sigval)
argument of sigqueue(3).
Internally, the kernel sets the si_signo field to the value
specified in sig, so that the receiver of the signal can also obtain
the signal number via that field.
The rt_tgsigqueueinfo() system call is like
rt_sigqueueinfo(), but sends the signal and data to the single thread
specified by the combination of tgid, a thread group ID, and
tid, a thread in that thread group.
On success, these system calls return 0. On error, they return -1 and
errno is set to indicate the error.
- EAGAIN
- The limit of signals which may be queued has been reached. (See
signal(7) for further information.)
- EINVAL
- sig, tgid, or tid was invalid.
- EPERM
- The caller does not have permission to send the signal to the target. For
the required permissions, see kill(2).
- EPERM
- tgid specifies a process other than the caller and
info->si_code is invalid.
- ESRCH
- rt_sigqueueinfo(): No thread group matching tgid was
found.
rt_tgsigqueinfo(): No thread matching tgid and
tid was found.
The rt_sigqueueinfo() system call was added to Linux in version 2.2. The
rt_tgsigqueueinfo() system call was added to Linux in version 2.6.31.
These system calls are Linux-specific.
Since these system calls are not intended for application use, there are no
glibc wrapper functions; use syscall(2) in the unlikely case that you
want to call them directly.
As with kill(2), the null signal (0) can be used to check
if the specified process or thread exists.
kill(2), pidfd_send_signal(2), sigaction(2),
sigprocmask(2), tgkill(2), pthread_sigqueue(3),
sigqueue(3), signal(7)
This page is part of release 5.05 of the Linux man-pages project. A
description of the project, information about reporting bugs, and the latest
version of this page, can be found at https://www.kernel.org/doc/man-pages/.


The Score (2001) Robert De Niro, Edward Norton, Angela Bassett, Marlon Brando, Gary Farmer, Paul Soles. Music by Howard Shore. Screenplays by Kario Salem, Lem Dobbs, Scott Marshall Smith. Story by Daniel E. Taylor and Salem. Directed by Frank Oz. 123 minutes. Rated R, 3 stars (out of five stars)
Review by Ed Johnson-Ott, NUVO Newsweekly www.nuvo.net Archive reviews at http://reviews.imdb.com/ReviewsBy?Edward+Johnson-Ott To receive reviews by e-mail at no charge, send subscription requests to<EMAIL_ADDRESS>or e-mail<EMAIL_ADDRESS>with the word "subscribe" in the subject line.
For a film like "The Score," the names Robert De Niro, Edward Norton, Angela Bassett and Marlon Brando are both an asset and a liability. On the plus side, such a stunning cast is a virtual guarantee that, at the very least, the acting in the film will be as good as it gets. The problem is that it's hard to look at that roster and not enter the theater with unrealistically high expectations.
So is "The Score" an instant classic offering some of the most powerful ensemble acting ever? No. The film is a sturdy production of a solid, if unremarkable, caper story. As far as the thespians, this is De Niro and Norton's show. Brando shares a few scenes with the boys, but his is merely a supporting role and Angela Bassett, poor Angela Bassett, barely appears at all. The filmmakers should be ashamed of themselves for hiring an actor of her caliber and wasting her time with a brief, trite part.
De Niro anchors the movie with a fine no-nonsense performance and Norton gets the opportunity to strut his stuff, playing two dynamic characters. De Niro and Norton make a compelling team, with Brando spicing up the proceedings as Max, a quirky fence and financier. The story begins as Max approaches his old friend Nick (De Niro), proposing the theft of a scepter worth many millions of dollars. The royal staff is secured in the Montreal Customs House, but Max has an inside man, Jack (Norton), ready to provide the specs necessary to pull off the robbery.
Nick doesn't want to participate. The caper violates two of his rules: never pull a heist on your home turf and never work with a partner. Besides, his dream is to retire from crime and run his elegant jazz club with Diane (Bassett), the love of his life, at his side, and she will not commit to him until he goes straight. But the temptation of instant financial security proves too strong and Nick agrees to do the proverbial "one last job."
"The Score" looks great. Montreal is a beautiful city with a European feel and director Frank Oz uses the setting well. He also affords Ed Norton another attention grabbing dual role. To scope out the Customs House and win the trust of its employees, Jack takes a janitorial job under the persona of Brian, a mentally retarded young man. Norton is smart enough to make Brian a distinct individual rather than a generic intellectually handicapped person – his Brian is a captivating guy. De Niro neatly counterbalances Norton's flash and fire. Watching him go through the mechanics of the heist held my attention even through the tedious parts because I felt invested in the down-to-earth character. Brando contributes some playful Sydney Greenstreet-meets-Truman Capote moments, and, in her very few minutes onscreen, Bassett adds smoke and substance to the thankless fretful girlfriend role.
I only wish the plot for "The Score" was as strong as its cast. While there's nothing overtly wrong with the story, there's also nothing fresh about it. One has to wonder what, besides the opportunity to work with each other, drew the four actors to such a pedestrian outing. Witnessing De Niro, Norton, Brando and Bassett act in this film is like watching Mark McGwire and Sammy Sosa play softball. You're not sure why they're doing it, but you wouldn't miss the game for anything.
© 2001 Ed Johnson-Ott
========== X-RAMR-ID: 28921 X-Language: en X-RT-ReviewID: 236505 X-RT-TitleID: 1108799 X-RT-SourceID: 591 X-RT-AuthorID: 1099 X-RT-RatingText: 3/5
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


Don Pham
I graduated from the UW with a degree in Comparative History of Ideas and a focus in media theory. I've spent the past decade working in ethnic media, where I managed to shoot and edit over 200 news clips in a language he does not understand. I am grateful for WTIA’s Apprenti program for taking a chance on someone from a non-traditional background.


About me
My projects fetched from Github API
Git
Questions
FreeStyle
About
All questions
Welcome to VCS Trainer.
Continue
Menu
Show Description
Description:
Show Answer
Answer:
Terminal
Next
Hint
All Questions
Add Question
Question:
Answer:
Description
Submit
Save
Terminal
Console
File System
Files
red
- unstaged
green
- staged


typewriter.js
You have entered the realm of typewriter.js!
Many dangers await you.
Hurry! The princess is in the castle!


Phone: Samsung S10e
To replicate: at enter unlock wallet screen, click on "sign in with seed phrase" beneath the login button. Enter seed on next screen and click confirm. For some reason, it asks for a new password creation, enter that and confirm. Read the TOS, click next. Here is gets stuck.
ADB logs:
```09-09 02:20:43.672 22438 19903 E flutter : [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: NoSuchMethodError: The setter 'isFastEncryption=' was called on null.
...


indexOf: Position of first 'is'
lastIndexOf: Position of last 'is'
search: Position of first 'is'
This is sentence one. This is sentence two.


FOOTBALL FOOTBALL FOOTBALL FOOTBALL
Welcome!. Find all you need to know about your favourite team and player.
follow me on youtube two guyz youtube channel
| Name | Team | Nation | age |
|---|---|---|---|
| Cristiano Ronaldo | Juventus | Portugal | 33 |
| Lionel Messi | Barcelona FC | Argentina | 31 |
| Francesco Totti | AS ROMA | Italy | 41 |


20may - 24
Chris Gillespie 5:30 pm - 8:30 pm (24) 35 East 76th St, New York, NY Bemelmans at Carlyle Hotel Phone Number:<PHONE_NUMBER>
20 (Tuesday) 5:30 pm - 24 (Saturday) 8:30 pm
Bemelmans at Carlyle Hotel
35 East 76th St, New York, NY
212-744-1600


These functions are given in endflib.cpp
and defined in
endflib.h
. They offer an interface between an ENDF-6 formatted file
and an ENDF object. ENDFRead functions are to read a particular section in
the ENDF-6 file, which are in the CONT, LIST, TAB1, etc. structure.
ENDFWrite functions are to print the content in the specified object. ENDFPack
functions are to store integer or floating point data array in the ENDF object.
int ENDFSeekHead (ifstream *fp, ENDF *lib, const int mfsearch, const int mtsearch)
Parameters *fp pointer to input stream *lib pointer to ENDF object mfsearch, mtsearch MF/MT numbers to be searched for Return Value 0: when MF/MT is found in the given file -1: not found
Search MF/MT section in an opened ENDF file, and move the file pointer to the first line of that section. Copy MF/MT numbers as well as the MAT number and the first HEAD line of the section into an ENDF object.
int ENDFScanLibrary (string libname, ENDFDict *dict)
Parameters libname ENDF file name to be scanned *dict pointer to ENDFDict object Return Value 0: normal end -1: file cannot be opened -2: too many sections in the ENDF file
Scan the entire ENDF file, and store the MF/MT numbers in the ENDFDict object to make an index of the file structure. The MAT number in the file, as well as the first 3 CONT records at the top part of the file, are also copied into the ENDFDict object.
Record ENDFSplitCONT ()
Parameters none Return Value Record class object
Split a CONT line currently reading in the ENDF file into two floating point data and four integers, and put them into one CONT record.
Record ENDFNextCONT (ifstream *fp)
Parameters *fp ENDF file pointer currently opened Return Value Record class object
Move the file pointer to the next line, and read the line as a CONT record.
Record ENDFReadCONT (ifstream *fp, ENDF **lib) Record ENDFReadLIST (ifstream **fp, ENDF **lib) Record ENDFReadTAB1 (ifstream **fp, ENDF **lib) Record ENDFReadTAB2 (ifstream **fp, ENDF **lib) Record ENDFReadTAB21 (ifstream **fp, ENDF **lib) Record ENDFReadTAB22 (ifstream **fp, ENDF **lib)
Parameters *fp ENDF file pointer currently opened *lib pointer to ENDF class object Return Value Record class object
Read a subsection which is in the CONT/LIST/TAB1/TAB2/TAB21/TAB22
structure, copy the subsection into the ENDF object, then return the
first CONT record (HEAD). In the case of ENDFReadCONT
the
returned value is the CONT record itself. Each time these functions
are called, the section pointer is incremented to prepare for reading
the next subsection.
int ENDFReadArray (ifstream *fp, int m, int n, double *x) int ENDFReadArray (ifstream *fp, int m, int n, int *x)
Parameters *fp ENDF file pointer currently opened m number of lines to be read n number of data points to be read *x one dimensional array for integer or double precision data Return Value number of data points actually stored
Copy numerical data given in a section currently reading in the ENDF file into one-dimensional floting point or integer array. When m is given and n = 0, m-line data are stored in the array. When m=0 and n is given, n-point data are copied. They are exclusive.
Because this function does not check the buffer overrun,
users should test the data size by checkMAXDATA
method
prior to call this function.
void ENDFWriteTPID (ENDFDict *dic)
Parameters *dic pointer to ENDFDict object Return Value none
Print a TPID line stored in the ENDFDict object.
void ENDFWriteHEAD (ENDF *lib)
Parameters *lib pointer to ENDF object Return Value none
Print a HEAD record in the ENDF object in the ENDF-6 format.
void ENDFWriteTEXT (ENDF *lib, string txt)
Parameters *lib pointer to ENDF object txt one line text Return Value none
Print free text. When longer than 66 characters, they are cut.
void ENDFWriteDICT(ENDF *lib, int mf, int mt, int nc, int mod)
Parameters *lib pointer to ENDF object mf/mt MF/MT numbers nc number of lines in the MF/MT section mod revision number of that section Return Value none
Print a line in the dictionary part in the ENDF-6 format, which contains the MF/MT numbers, the number of lines in that section, and revision index.
void ENDFWriteRecord (Record cont)
Parameters cont CONT record Return Value none
Print a CONT record in the ENDF-6 format.
Record ENDFWriteCONT (ENDF *lib) Record ENDFWriteLIST (ENDF *lib) Record ENDFWriteTAB1 (ENDF *lib) Record ENDFWriteTAB2 (ENDF *lib) Record ENDFWriteTAB21 (ENDF *lib) Record ENDFWriteTAB22 (ENDF *lib)
Parameters *lib pointer to ENDF object Return Value Record object (HEAD record)
These functions print CONT, LIST, TAB1, TAB2, TAB21, and TAB22 data
structure in the ENDF-6 format, which are stored in the ENDF object,
and return its HEAD record. The section pointer is incremented,
when ENDFWriteCONT
is called. However other functions do not
increment the pointer, since they always call ENDFWriteCONT
at the beginning.
void ENDFWriteSEND (ENDF *lib)
Parameters *lib pointer to ENDF object Return Value none
Print a FEND record at the bottom. We need the MAT number
since there is no way to get this number. Print NP-points of integer or double precision data in the
ENDF-6 format. The ENDF object is required to print MF/MT/MAT numbers on
the right side. Print MAT/MF/MT numbers after the column 67. When a global option
of Activate or deactivate line number option by providing a boolean argument. Copy one-dimensional or two-dimensional data into an ENDF object where
the current section pointer is pointing, and move
the internal data pointer to the end of each data array. The number of data
to be stored is given by the CONT record in the case of one-dim data. When
the data are two-dimensional, an array of CONT record is given. Instead of providing data arrays to pack the ENDF object, these functions
allow to copy a specific subsection from another ENDF object. The i-th
block in the src ENDF object will be appended to the dst object.
The insertion location is always just after the last block stored in the
destination object. Because there is no way to know what is the structure of i-th block,
one has to choose the appropriate function depending on the src object
structure. Copy all the data in the source ENDF object into the destination ENDF object. Print data structure of given ENDF object. This is for debugging. Print a given MF/MT section in the ENDF-6 file in the original format. Calculate a Y-value at given any X-value by interpolating a set of (x,y) pair data
in the ENDF object. Sometimes the (x,y) set contains a duplicated X-point to allow
a sudden jump in the data, and this prevents interpolation. dupflag tells
Produce a set of X-data which are union of X-data in two ENDF objects.
This is used for doing arithmetic of two sections, such as adding, subtracting,
multiplying two sections. To perform such calculations, the X-axis should
be common to these sections, and this function generates a unified set of the
X-data. After calling this function, Determine two energy boundaries given in the ENDFDict object
- ENDFWriteFEND
void ENDFWriteFEND (int mat)
Parameters
mat
MAT number
Return Value
none
ENDFWrteArray
void ENDFWriteArray (ENDF *lib, int np, double *x)
void ENDFWriteArray (ENDF *lib, int np, int *x)
Parameters
*lib
pointer to ENDF object
np
number of points to be printed
*x
one dimensional array for integer or double precision data
Return Value
none
ENDFPrintRight
void ENDFPrintRight (int mat, int mf, int mt)
Parameters
mat/mf/mt
MAT/MF/MT numbers of the currently printing section.
Return Value
none
LineNumber
is set, line numbers are followed. This variable
can be set by ENDFPrintLineNumber(true)
. ENDFPrintLineNumber
void ENDFPrintLineNumber (bool x)
Parameters
x
boolean to set or unset LineNumber option.
Return Value
none
Data Packing Functions
ENDFPack
void ENDFPackCONT (Record cont, ENDF *lib)
void ENDFPackLIST (Record cont, double *xdat, ENDF *lib)
void ENDFPackTAB1 (Record cont, int *idat, double *xdat, ENDF *lib)
void ENDFPackTAB2 (Record cont, Record *cdat, int *idat, double **xtab, ENDF *lib)
void ENDFPackTAB21 (Record cont, int *idat, Record *cdat,
int **itab, double **xtab, ENDF *lib)
Parameters
cont
CONT record for storing data block
*lib
pointer to ENDF object
*idat, *xdat, *cdat
one-dimensional arrays for integer, double precision number,
and Record object
**itab, **tab
two-dimensional arrays for integer and double
Return Value
none
ENDFPackTAB22
is not available in the current version.ENDFPackCopy
void ENDFPackCopyCONT (ENDF *src, ENDF dst, int idx)
void ENDFPackCopyLIST (ENDF *src, ENDF dst, int idx)
void ENDFPackCopyTAB1 (ENDF *src, ENDF dst, int idx)
void ENDFPackCopyTAB2 (ENDF *src, ENDF dst, int idx)
void ENDFPackCopytAB21 (ENDF *src, ENDF dst, int idx)
Data Object Manipulating Functions
ENDFLibCopy
void ENDFLibCopy (ENDF *libsrc, ENDF *libdst)
Parameters
*libsrc
pointer to source ENDF object
*libdst
pointer to destination ENDF object
Return Value
none
ENDFLibPeek
void ENDFLibPeek (ENDF *lib)
Parameters
*lib
pointer to ENDF object
Return Value
none
ENDFExtract
void ENDFExtract (ifstream *fp, int mf, int mt)
Parameters
*fp
pointer to input stream
mf,mt
MF/MT number
Return Value
ENDFInterpolation
double ENDFInterpolation (ENDF *lib, double x, bool dupflag, const int idx)
Parameters
*lib
pointer to ENDF object that is used as abscissa
x
X-data point where Y-value is calculated
dupflag
flag to control a duplicated point, see text below
Return Value
interpolated Y-value
ENDFInterpolation
which data point (before jump or after jump) should be
taken. When dupflag = true, we take the Y-value before the duplicated point,
and false is to take the value after the duplication. ENDFMergeXdata
int ENDFMergeXdata (ENDF *lib1, ENDF *lib2, double *z)
Parameters
*lib1, *lib2
pointer to two ENDF objects
*z
array of double precision values as output for X-data
Return Value
number of data point
ENDFInterpolation
can be used
to calculate all the Y-values at each X-value given by this function.ENDFMF2bounday
void ENDFMF2boundary (ENDFDict *dict, ENDF *lib)
Parameters
*dict
pointer to ENDFDict object in which outputs will be stored
*lib
pointer to ENDF object to be scanned
Return Value
none
emaxRR
and
emaxUR
by looking into the resonance region of ENDF-6 file.
emaxRR
is the high-side of the resolved resonance region,
and emaxUR
is the highest energy of the unresolved resonance.
[BACK]
[UP]
[NEXT]


Contextual inquiry at local toy stores revealed that customers prefer brick and mortar stores for exploration and online stores for speed and convenience. “I just love when something unexpected jumps out at me,” explained one man; “its so quick and easy to shop online,” said another.
Respect the conventions of online shopping while integrating delightfully surprising elements to provide convenience and encourage exploration on one platform.
User research lead to the initial insight that people go online when they know what they want. Through a process of iterating through multiple low fidelity prototypes and testing them with people, I found that search lead people to their desired product more effectively than browsing.
People go online when they already know what they want to buy. Placing the search bar in the header with the global navigation makes it always available, while giving it visual prominence by extending it across the whole page draws a user’s eyes creating a strong affordance to find what they want and buy it.
A list of toys was sorted using both online and in-person open card sorts. I organized the resulting categories to reduce their number. After several iterations, I settled on an organization based on the toys’ ability to make one imagine, move, or learn. I validated this organization through numerous closed card sorts.
Organizing the toys based on what they make us do asks us to consider what kind of interaction we are looking for, engaging us and creating emotional investment to encourage us to explore further. Not wanting to alienate anyone, however, I coupled this with more conventional categories to maintain accessibility.
I discovered that people prefer physical stores for exploration because they love finding unexpected things on the shelves. Could this experience be brought online? Testing several low fidelity prototypes containing different ways of presenting unexpected products allowed me to hone in on the most delightful and accessible way.
Discovering the unknown brings the thrill of exploration. While efficient, predictable organization and presentation of products in online stores make navigation easy, they preclude any such thrill. Presenting related products respects a necessary convention, while showing unrelated products allows for the delight of finding something unexpected.
The business demanded an online platform without compromising their brand identity. In analyzing the competition I identified a trend of sterile efficiency - companies have made it exceedingly easy for customers to give them money. Interviews and usability tests with low fidelity prototypes uncovered a desire for a more personal approach.
Traditionally, e-commerce platforms are about quantity and price instead of quality and service. Framing the checkout process as a conversation integrates the more intimate feeling of local, family owned business with the advantages of an online platform.


Parse data from VASP output files into a HDF5 file that ENVISIoN can visualise.
If the VASP directory contains data for multiple visualisation types you can parse multiple visualisation types to the same hdf5 file sequentially.


These steps add a bookmark to Mobile Safari that will paste text– a Pastelet bookmark.
NEW: Optimized versions now available for Email/Login or Telephone strings.
Enter the text to paste. Then tap Make Pastelet to reload this page for Step 2.
Tap the add button on the toolbar. Then select Add Bookmark
Take note of the name (or edit it), and then tap Save.
Now edit the bookmark to turn it into a Pastelet. Tap the Bookmarks button in the toolbar.
Navigate to the bookmark you just saved. Do not select the bookmark.
Tap Edit to modify the list and then tap on the bookmark itself.
In the Edit Bookmark panel, tap in the field that begins with “http:
”.
You need to edit the start of the text, so tap and drag all the way to the left.
Place the edit point between the “#
” and the “j
”.
Then tap delete until the edit point is at the start of the line. When done, the bookmark should look like:
When visiting a web page “paste” text by selecting a Pastelet bookmark. Just tap the bookmarks icon.
Then tap on a Pastelet bookmark to “paste” its text into a form field.
A Pastelet for a password is a bad idea. However, it should be fine for other commonly used strings or phrases.
Feedback is welcome. Contact me via<EMAIL_ADDRESS>Copyright © _MmCOPYRIGHT_ Tom King. All rights reserved.
top


A Google Apps Script Hangouts Bot tutorial to get data from an external api (https://numbersapi.com/) and setup a development environment with version control.
Executive Summary
Introduction
Chatbots, or "bots" for short, are computer programs that interact with people in a way that mimics human interaction to some degree. Bots in Hangouts Chat appear as special users marked as BOT. Just like people, bots can participate in chat rooms, and they can respond to direct message. But unlike people, bots only see messages directed to them when a person @mentions them in a chat room, or when a person sends them a direct message.
Introduction summarized from the Hangouts Chat API - Chatbot Concepts. To learn more, visit https://developers.google.com/hangouts/chat/concepts/bots.
Goals of the tutorial
This tutorial has the following goals:
-
Create an Apps Script bot
-
Setup a local development environment
-
Connect the local environment to Github for version control
-
Automatically push local changes to the Google Apps Script project on Google
-
Code the bot to get data from the numbers api
-
Deploy the chat bot for developer testing
Part One: Prerequisites and setup
Prerequisites
This article presumes a basic understanding of the following technologies:
See the provided links per technology to refresh your working knowledge.
-
JavaScript (Watch and Code - Practical JavaScript)
-
git (Pro Git Book)
-
GSuite (G Suite Learning Center)
-
Google Apps Script (Google Apps Script Reference)
This article requires the following:
-
A GSuite account (see G Suite FAQs for more details)
-
Access to the Google Cloud Platform (https://console.cloud.google.com)
Setup
Login to G Suite
-
Navigate to Google Drive
-
Authenticate with your G Suite credentials
Create Google Apps Script File
Build web apps and automate tasks with Google Apps Script. Apps Script is a rapid application development platform that makes it fast and easy to create business applications that integrate with G Suite.
|
Note
|
See Google Apps Script for more information. |
-
Click Hangouts Chat Bot template to create a Google boilerplate template.
-
Click File > Save, name the project 'Numbers', and click OK
-
Open the Code.gs file, and locate the onMessage(event) function
-
Replace this original text:
var name = ""; if (event.space.type == "DM") { name = "You"; } else { name = event.user.displayName; } var message = name + " said \"" + event.message.text + "\"";
-
with the following:
var message = "You just said: \"" + event.message.text + "\"";
-
so that the onMessage(event) function reads as follows:
function onMessage(event) { var message = "You just said: \"" + event.message.text + "\""; return { "text": message }; }
-
-
Save the Numbers project, by executing the shortcut key stroke: Ctrl + s.
Setup Local Environment
-
Open a command line interface
-
Create a new directory on your computer to store your project and navigate into the directory:
mkdir Numbers && cd Numbers
Install clasp and clone project
Develop Apps Script projects locally using clasp (Command Line Apps Script Projects). clasp allows you to check-in your code into source control, collaborate with other developers, and use your favorite tools to develop Apps Script.
|
Note
|
To learn more about clasp, see it’s github repository |
-
Download clasp:
sudo npm i @google/clasp -g
-
Enable the Apps Script API: https://script.google.com/home/usersettings
-
Login to clasp:
clasp login
-
When prompted to login with a new window, Authenticate with your G Suite credentials.
-
Within the Google Apps Script editor, click File > Project properties and copy the Script ID to clipboard.
-
Using clasp, clone the Google Apps Script project with:
clasp clone <script id from clipboard>
Connect Remote Git repository
-
Open a command line interface
-
Navigate to the Numbers directory on your computer
-
Execute the following command:
git init
-
Create an account and/or sign in to github
-
Click on Repositories
-
Click on New to create a new repository
-
Enter a Numbers as the Repository name and click Create repository
-
Copy the first git command, located in the …or push an existing repository from command line, to clipboard.
-
Back in the Numbers directory, execute the copied command:
git remote add origin https://github.com/daubejb/Numbers.git
-
To exclude the .clasp.json file from version control, execute:
echo '.clasp.json' >> ./.gitignore
-
To stage the files, execute:
git add .
-
To commit the files, execute:
git commit -am 'initial commit'
-
To push the files to Github, execute:
git push -u origin master
Push changes to Apps Script Editor
-
Prior to pushing changes to the Google Apps Script project, setup a .claspignore file. This file operates similarly to a .gitignore file. Create a file named, .claspignore with the following contents:
**/** !Code.js !appsscript.json
-
Execute the following command to push local code changes to the Google Apps Script project and editor:
clasp push
Deploy the bot for Development testing
Step one: Get the Deployment ID
-
Open the Numbers file in Google Apps Script
TipTo find the Numbers script in your Google Drive, search for 'type:script' and Drive will display all of your Google Apps Script projects
Or, navigate to https://script.google.com to see all of your projects -
Click on Publish > Deploy from manifest…
-
In the Deployments dialog box, next to Latest Version (HEAD), click Get ID
-
Within the Deployment ID dialog box, copy the value listed for Deployment ID
NoteYou will need this Deployment ID in step two below -
Click Close and then click Close again to dismiss the dialog boxes
TipUse the HEAD deployment for development and simple unit testing. Bots using the HEAD deployment cannot be shared across a domain and require users to have access to your Google Apps Script. NoteSee https://developers.google.com/hangouts/chat/how-tos/manage-releases for more information about Managing releases of your bot
Step two: Configure the Hangouts Chat API on Google Cloud Console
-
In the Script editor, click on Resources > Cloud Platform Project…
-
Within the Cloud Platform project dialog box, click on the Cloud Platform project hyperlink that is associated with the project
NoteThis step will open the Google Cloud Platform, offered by Google, is a suite of cloud computing services that runs on the same infrastructure that Google uses internally for its en-user products, such as Google Search and You Tube. -
Within the Google Cloud Platform, enable the Hangouts Chat API by doing the following:
-
Click on the navigation menu and then click APIs & Services > Library
-
Start typing Hangouts Chat API, and then click on its associated Card
-
Within the API Library overview page, click on ENABLE
-
-
Once the API is enabled, click on Configuration
-
In the Configuration pane, configure the following:
-
Enter 'Numbers' in the Bot Name field
-
Enter 'https://goo.gl/yKKjbw' in the Avatar URL field
-
Enter 'Gets information about numbers' in the Description field
-
Check mark the Bot works in direct messages checkbox withing the Functionality section
-
Select the Apps Script project radio button and paste the Deployment ID from Step One above
-
Select the Specific people and groups in your domain and enter your G Suite email address
-
Click SAVE
-
Step three: Test the setup
-
Navigate to Hangouts Chat
-
Click on Find people, rooms, bots
-
Within the Add bot page, search for Numbers
-
Select the Numbers bot
-
Withing the direct message, type 'Hello Numbers!'
-
If everything is setup correctly, you should see:
Part Two: Write, Lint, and Watch for code changes
Before writing code that retrieves information about numbers from (https://numbersapi.com/), Let’s improve the quality and standardization of the code through linting.
|
Note
|
A linter or lint refers to tools that analyze source code to flag programming errors, bugs, stylistic errors, and suspicious constructs.
To learn more about the history of Linting, see Lint (Software) on wikipedia |
|
Note
|
If not interested in setting up Linting, skip this step. |
Setup ESLint within vsCode
[NOTE] This step assumes the use of Visual Studio Code https://code.visualstudio.com/. Visit this link to download the code editor.
-
Open the Numbers directory in vsCode
-
Within vsCode, click View > Terminal
-
Within Terminal execute the following:
sudo npm init
-
Click enter to advance through the default selections
Notenpm is the package manager for the Node Javascript platform. It puts modules in place so that node can find them, and manages dependency conflicts intelligently.
To learn more about npm see: https://docs.npmjs.com/cli/npm -
Click on Extensions in the Activity Bar
-
In the Extensions panel, search for ESLint
-
Select ESLint provided by Dirk Baeumer
-
Within the Extension: ESLint informational page, click Install
-
Open the Command Palette and select ESLint: Create ESLint Configuration
Tipctrl + shift + p - also opens the Command Palette -
This command launches eslint --init, provide the following answers to the init questions:
-
How would you like to configure ESLint? Answer questions about your style
-
Which version of ECMAScript do you use? ES5
-
Where will your code run? Browser
-
Do you use CommonJS? No
-
Do you use JSX? No
-
What style of indentation do you use? Spaces
-
What quotes do you use for strings? Single
-
What line endings do you use? Unix
-
Do you require semicolons? Yes
-
What format do you want your config file to be in? JSON
-
-
Upon success, the eslint --int will create a local .eslintrc.json file
Resolve ESLint problems with current code base
-
With only the Code.js file open within vsCode, within the panel, click on PROBLEMS to see the current [eslint] problems
Tipctrl + j will toggle visibility of the panel -
There will be approximately three types of lint problems listed, below is the summary and how to fix each type of lint error:
| Problem name | Resolution | Comments |
|---|---|---|
Strings must use single-quote |
Replace all double-quotes(") with single-quotes(') |
This is the project’s developer preference |
Expected indentation of 'x' but found 'y' |
Make all indentations units of '4' |
This is the project’s developer preference |
'functionName' is defined but never used |
Left click on each instance, then click on the yellow light bulb icon and select suppress no-used-vars for this line |
The three boiler-plate functions provided by Google’s quick-start are only called from the chat.google.com application; so, this file 'thinks' they will never be called. |
Setup watching to automatically push changes to Google
clasp provides the ability to have your development environment watch for changes in code and automatically push the changes to Google Apps Script project. And, since the Google Cloud Console Project is setup using the HEAD deployment, the changes will propagate to the live bot.
-
Within Terminal, execute the following:
clasp push --watch
-
When successful, the terminal will show:
Pushing files... --Code.js --appsscript.json Pushed 2 Files
-
Within the Code.js file, make a simple change like adding the word this, within the onMessage function, at the end fo the "You just said this:" string
-
Save the Code.js file
-
Within the chat.google.com application, send the Numbers bot a direct message to see the clasp watch functionality publish the changes to Google and then automatically propagate the changes to the HEAD Deployment of the bot
Part Three: Implement chat logic to call Numbers API trivia
This part implements basic code to call the http://numbersapi.com for the user entered integer and then displays the trivia fact for the number in the Direct Message or Chat Room.
-
With clasp watching changes to your local project, open Code.gs
-
Replace the content of the file with the following
/* eslint-disable no-undef */ /* eslint-disable no-unused-vars */ /** * Responds to a MESSAGE event in Hangouts Chat. * * @param {Object} event the event object from Hangouts Chat */ function onMessage(event) { // Determine if user entered any argument text if (event.message.argumentText) { // Create variable arg to store users entered text // && trim white-space var arg = event.message.argumentText.trim(); // Create Regular Expression for integer var integerRegex = new RegExp(/^\d+$/); // Is the argument text an integer if (integerRegex.test(arg)) { // Create variable to store result off api call var trivia = NumbersApi.getTrivia(arg); // Inject result of API call into chat room or DM // using Simple Text Message format return { text: trivia }; // Argument text is not an integer } else { return { text: getHelpMessage() }; } // User did not enter argument text } else { return { text: getHelpMessage() }; } } var NumbersApi = { getTrivia: function(arg) { // Use Google Apps Script UrlFetchApp.fetch method var response = UrlFetchApp.fetch('http://numbersapi.com/' + arg); // Parse the text of the API response var returnResponse = response.getContentText(); return returnResponse; } }; function getHelpMessage() { return 'Please enter an integer to get it\'s trivia'; } /** * Responds to an ADDED_TO_SPACE event in Hangouts Chat. * * @param {Object} event the event object from Hangouts Chat */ function onAddToSpace(event) { return { text: 'Thank you for adding me, \' + event.user.displayName + \'!' }; } /** * Responds to a REMOVED_FROM_SPACE event in Hangouts Chat. * * @param {Object} event the event object from Hangouts Chat */ function onRemoveFromSpace(event) { // eslint-disable-next-line no-console console.info('Bot removed from ', event.space.name); }
Finally, within the chat.google.com application, send the Numbers bot a direct message containing your favorite integer to retrieve trivia about the number.


Goodbye, Hammer
A lovestory about design ops
Today
Hammer runs the show.
- Our prototype markup and sass are both compiled by Hammer.
- It generates compiled prototypes on-demand for off-team testing / investigation.
- Hammer is straightforward and allowed us hit the ground running.
The Problems
(Not Quite) 99 of Them
- Hammer is outdated and stagnant.
- Hammer is a black box.
- Hammer is limited.
- Hammer is a bad hand-off.
The Solution
Enter Catapult, Assemble, and Camelot
- Catapult - our new prototyping repo, with each product proto being built out by Grunt
- Assemble - a static site generator to handle our templates and data (the Hammer killer)
- Camelot - a separate repo for our stylesheets, pulled in as a dependency
The Return
Winning / Tiger Blood
- Separating out our Sass as an npm package allows engineering to include it as a dependency, instead of merging stylesheet changes manually
- We control our dependencies, libraries, and compilers: no more Sass Stoneage
- Assemble/Handlebars templates allow us to write markup in reusable chunks, making updates and iterations much more sane
- Prototypes can be served anywhere


Do you owe the money claimed?
You could get a County Court Judgment (CCJ) in all cases.
Find out when you could get a CCJ
Admit all of the claim
If you admit all of the claim is fair you can contact the claimant yourself and pay the money. Ask them to let the court know when they have your payment.
The claimant can ask for a County Court Judgment (CCJ) to be made against you if you admit the claim. If they ask for a CCJ to be made you against you then you can apply for a:
- certificate of cancellation if you pay the debt within 28 days
- certificate of satisfaction if you pay the debt after 28 days
Admit part of the claim
If you think the claim is too high you can offer the amount you think you owe as part of your defence. You’ll get the chance to explain why your offer is the amount you believe you owe.
The claimant can ask for a County Court Judgment (CCJ) to be made against you if you part admit the claim. If they ask for a CCJ to be made you against you then you can apply for a:
- certificate of cancellation if you pay the debt within 28 days
- certificate of satisfaction if you pay the debt after 28 days
Reject the claim
If you don't accept you owe the amount of money claimed you can prepare and submit your defence online. You might have to go to a hearing - it can take up to 7 months to get a hearing date.
If you reject the claim and lose your case, you’ll get a County Court Judgment (CCJ) ordering you to pay the full claim amount and any costs. Details of the CCJ will be entered on the Register of Judgments, Orders and Fines for 6 years.


|
Drake
|
Structure used to convert a mixed linear complementarity problem to a pure linear complementarity problem (by solving for free variables).
#include <drake/multibody/constraint/constraint_solver.h>
Public Attributes | |
| Eigen::CompleteOrthogonalDecomposition< MatrixX< T > > | delassus_QTZ |
| Decomposition of the Delassus matrix GM⁻¹Gᵀ, where G is the bilateral constraint matrix and M is the system generalized inertia matrix. More... | |
| std::function< MatrixX< T >const MatrixX< T > &)> | A_solve |
| A function pointer for solving linear systems using MLCP "A" matrix (see Velocity-level-MLCPs). More... | |
| std::function< MatrixX< T >const MatrixX< T > &)> | fast_A_solve |
| A function pointer for solving linear systems using only the upper left block of A⁺ in the MLCP (see Velocity-level-MLCPs), where A⁺ is a singularity-robust pseudo-inverse of A, toward exploiting operations with zero blocks. More... | |
A function pointer for solving linear systems using MLCP "A" matrix (see Velocity-level-MLCPs).
| Eigen::CompleteOrthogonalDecomposition<MatrixX<T> > delassus_QTZ |
Decomposition of the Delassus matrix GM⁻¹Gᵀ, where G is the bilateral constraint matrix and M is the system generalized inertia matrix.
A function pointer for solving linear systems using only the upper left block of A⁺ in the MLCP (see Velocity-level-MLCPs), where A⁺ is a singularity-robust pseudo-inverse of A, toward exploiting operations with zero blocks.
For example:
A⁺ | b | | 0 |
and
A⁺ | B | | 0 |
where b ∈ ℝⁿᵛ
is an arbitrary vector of dimension equal to the generalized velocities and B ∈ ℝⁿᵛˣᵐ
is an arbitrary matrix with row dimension equal to the dimension of the generalized velocities and arbitrary number of columns (denoted m
here).


Hong Kong votes in election seen as referendum on protests
The polls opened on Sunday morning for 452 seats in the city’s 18 district councils.
Voting is under way in Hong Kong elections that have become a barometer of public support for anti-government protests now in their sixth month.
The polls opened on Sunday morning for 452 seats in the city’s 18 district councils.
The councils are largely advisory and have little power. But the election has taken on symbolic importance in the semi-autonomous Chinese territory.
A strong showing by the opposition would show that the public still supports the pro-democracy movement, even as the protests have become increasingly violent.
The ruling camp in Hong Kong and the national government in Beijing hope that the unrest and disruption to daily life will turn voters against the movement.


--- layout: archive permalink: /categories/ title: "Posts by Category" author_profile: true --- {% include base_path %} {% include group-by-array collection=site.posts field="categories" %} Browse by: Category Tags Year
{% for category in group_names %} {% assign posts = group_items[forloop.index0] %}


DA picks City of Joburg's Finance MMC Funzela Ngobeni to replace Mashaba as mayor
by Tshidi MadiaThe DA has announced its chosen City of Joburg mayoral committee member (MMC) Funzela Ngobeni as its candidate to take over from Herman Mashaba, who steps down as executive mayor next week.
The party made the announcement on Tuesday through a statement.
Mashaba stepped down as both mayor and a party member last month following the election of former leader Helen Zille as the party's federal council chairperson. At the time, Mashaba said he would stay on until November 27 to assist with the transition period.
News24 understands newly elected interim leader John Steenhuisen, who was elected on Sunday, met with the caucus on Tuesday morning to communicate the decision taken by the federal executive.
According to the statement released by the party's Gauteng leader John Moodey, Ngobeni has been a long serving councillor, who joined Mashaba's executive in January 2018.
He currently serves as finance MMC.
"The DA has been through a rigorous selection process before appointing him and is confident that should he be elected as the executive mayor of the DA-led city of Johannesburg on 28 November 2019, that he will continue the good work done by outgoing mayor Herman Mashaba," said Moodey.
This is a developing story. More information to follow.