This is required because the internal structure of arrays has been made more efficient. Even when your DLL does not use arrays, a recompile is required.
Of course, .oxo files which are part of this release need not be recompiled.
Note that you can see local variables when using the debugger to trace into .oxo files only if they have been compiled with debugging on (whic leads to slower code).
vecindex() now returns an empty matrix if no matches are found. It used to return -1 in that case.
has been renamed to diffpow()


My Name is Dominik Schiener, currently living in Südtirol, Italy. These days I’m mostly working on personal research projects around Collective Intelligence and the Blockchain. This includes projects and research focused on Decentralized, Self-regulating Communities; Decentralized Identity; Blockchain-based Voting and eGovernance Solutions powered by the Blockchain/Smart Contracts.
I’m very interested in new P2P technologies that not only make our lives more efficient through trustless automation, but also more transparent. I very much believe that these technologies are the next step in eradicating barriers and making our World flatter and achieving one of the most important goals (at least for me): which is the full empowerment of the individual.
If you want to reach out to me, here is my Twitter, my Github and my Linkedin profile.
PublicVotes: Ethereum-based voting platform that is fully transparent and enables voters to publicly verify the outcome of the vote. More than 3000 votes have been cast through the application since it went live.
DecentralWiki: Very simple Proof of Concept of a Decentralized Wikipedia powered by IPFS. It dynamically stores the summary of Wikipedia pages on IPFS by first extracting the information through the Wikimedia API.
Identity on Bitcoin: Simple Prototype of Identity on the Bitcoin Blockchain. It uses a fingerprint sensor and Raspberry Pi so that a user can register a new identity. With the characteristics of the fingerprint (stored as bitmap) we generate a sha256
hash, which is the private key of the Bitcoin wallet. The identity meta-information is then hashed and stored on the Bitcoin Blockchain via an OP_RETURN
transaction. The identity owner can easily access this in the future by scanning the finger again.


{% extends "base.html" %} {% block title %}Documentation{% endblock %} {% block content_title %}Documentation{% endblock %} {% block content %}
Looks like, the docs haven't built yet. To build the docs follow next instructions:
$ cd {{ dirname }}
$ make -C docs html
After all done, refresh this page!
{% endblock %}


NYPD officer runs NYC marathon after debilitating car crash injury
by WABCNEW YORK (WABC) -- NYPD officer Monica Chong is a proud member of New York City's Finest -- and a fierce runner.
Her life has beautiful balance now, working as a police officer and working out, but seven years ago, Officer Chong was terribly injured in a car accident.
"I woke up at the hospital. I had broken limbs. My arm was broken. My leg were broken, and the doctor told me that I wouldn't be walking for six months. At the time, I had just graduated from the police academy," she said.
It was 2012, officer Chong was 23, and suddenly facing an uncertain future.
"Having just graduated and having them tell you that you're probably not going to be able to continue with your job ... they told me to start thinking about different career options," she said.
Yet her body -- and her will -- had other plans. Fighting back after many months, Chong ran against the odds, and last year, trained for and finished the TCS New York City Marathon.
She called the experience "life-affirming" and can't wait to run again this year.


Data
These options allow you to either export references into a BibTex file, or import from a BibTex file.


A-level-maths (v0.2) (pdf) A-level-mechanics (v0.1) (pdf) A-level-statistics (v0.1) (pdf)
Greetings A-Level candidates!
These notes and worked examples have been collected to aid you in your preparation for A-level exams. These notes are a work in progress and the maintainer welcomes feedback by email at<EMAIL_ADDRESS>The full LaTex code for recompiling these documents will eventually be placed on github under Creative Commons Licence to aid educators who want to control their own collections of notes.


since few days the graphs in my main soldier page (after the "completion level") doesn´t working more.
Its now non-existent.
BrainFooLong
Administrator
Hi, have you enabled the option "BF4stats.com Stats" for that?
I can't reproduce that.
Post edited 1 x times, last by
RCEKH
Topicstarter
RCEKH
yes its enabled.
it was working before, just in last days not.
I use Chrome.
now i see also, that in bf4stats.com my chrome doesn´t display the datas. There its give error "failure rendering ...."
This error doesn´t come with ie.
Perhaps any problem with chrome.
BrainFooLong
Administrator
Well, if you have problems on bf4stats.com also than you should go to there forums:
http://forum.p-stats.com/
Topicstarter
RCEKH
ok, now i have found that one plugin disturb this. If i have deactivated most, so its working.
Sry for the disturb and thank you for your help.
You can close this thread
BrainFooLong
Administrator
Can you say us which plugin makes this error?
Topicstarter
RCEKH
i have test it now, it was "okayfreedom"
https://www.okayfreedom.com/
Perhaps, the plugin have update himself and so its not more working together with BetterBattlelog and BFStats.


Indeed, I believe that virtually every important aspect
of programming arises somewhere in the context of sorting or
searching! (Donald Knuth, The Art of Computer
Programming, Volume 3, "Sorting and Searching")
Standard order of terms
The standard order of terms imposes the
following order on
Prolog terms:
variables ≺ numbers ≺ atoms ≺ compound terms
It is subject to the following additional rules:
Numbers are compared by value.
All floating point numbers precede all integers.
Atoms are compared alphabetically.
Compound terms are first sorted by their arity, then
alphabetically by their functor name, and finally recursively
by their arguments, leftmost argument first.
To compare arbitrary terms according to the standard order,
use the
predicates (@<)/2, (@=<)/2, compare/3
and others. A major drawback of these predicates is that they are
not true relations. For example:
?- a @< b.
true.
Yet the more general query fails:
?- a @< X.
false.
This violates properties we expect
from pure predicates and
prevents declarative debugging.
Therefore, it is good practice to use dedicated comparison
predicates with more declarative properties for specific domains.
For example, in the case of integers, use the
CLP(FD) constraints(#<)/2, (#=<)/2
and zcompare/3 instead, in addition to other relations
that are provided by your Prolog system.
Sorting Prolog terms
The ISO predicates sort/2 and keysort/2 are the
most important predicates for sorting arbitrary
Prolog terms. Both predicates refer to
the standard order of terms. In
particular:
sort(Ls0, Ls) is true iff the
listLs holds the elements
of the list Ls0, sorted according to the
standard order of terms. Ls contains
no duplicates.
keysort(Pairs0,
Pairs): Pairs0 and Pairs are lists
of Key-Valuepairs. True
iff Pairs0 sorted by Key according to the
standard order of terms is Pairs, where
duplicates are retained, and the order of multiple
elements with the same key is also retained. A
sorting algorithm where the relative positions of
equal elements are retained is called stable.
keysort/2 in particular is much more useful than it may
look at first. For example, let us sort the following lists
by their lengths:
To solve this task, let us first define a relation between a
single list and a pair of the
form Length-List, which is simply infix notation for the
Prolog term -(Length, List). We define this relation
by using the
predicate list_length/2 that we
defined earlier:
list_pair(Ls, L-Ls) :-
list_length(Ls, L).
Using maplist/3, we
can lift this relation to lists of lists and pairs:
Thus, to obtain a list Ls with minimum length, we
can simply write Pairs = [_-Ls|_]. To obtain a list
with maximum length, we have the following options: Either
we define the relation between a list and its last
element, or we modify list_pair/2 to use
the negated length as the key of
each pair, and again take the first element of the
keysorted list. Negating the length ensures that a list
with maximum length appears as part of the first pair.
In general, by constructing pairs with
suitable keys, you can delegate sorting
to keysort/2 in a way that suits your application.
Implementing sorting algorithms in Prolog
Sometimes, you want to implement your own version of a
sorting algorithm
in Prolog.
Prolog implementations of the following sorting algorithms are
available
in sorting.pl:
bubble sort
quicksort
merge sort.
A few benchmarks and comments are also included.
In particular, consider how naturally quicksort can be
described in Prolog with a DCG:
This definition assumes the existence of partition/4,
relating a list Ls to its elements that are,
respectively, smaller and greater than
the pivot elementL.
In general, it is often better to simply use the built-in
predicates sort/2 and keysort/2 for sorting.
Searching with Prolog
There is an intimate connection between Prolog
and searching. First, Prolog's execution strategy is
already a form of search. It is called depth-first
search with chronological backtracking and can be regarded as
a special case of resolution. Prolog is eminently
well-suited for solving search tasks already due to this efficient
built-in implementation of backtracking. Second, other search
strategies can be readily implemented on top of the
built-in strategy. For example, it is easy to
obtain iterative deepening by restricting some aspects
of the search.
Many Prolog programs search for something, such
as proofs and counterexamples, or
solutions of optimization tasks
or logic puzzles. Still, it is often
better to think about these programs as—first and
foremost—describing the desired properties of a
solution. This leads to a more declarative view that lets you use
these programs also in other directions.
For example, suppose we want to find the minimum of a list
of integers. This is an imperative
view that expresses only one aspect of the following
more general task: Let us describe the relation
between a list of integers and its minimum. In Prolog, we can
define this relation as:
?- list_minimum([3,1,2], M).
M = 1.
?- list_minimum([A,B], 0).
A in 0..sup,
0#=min(B, A),
B in 0..sup.
Thus, when working on search tasks, do not get carried away with
an imperative view. Instead, focus on a clear general
description of all relations you want to define.
In some cases, searching naively is not efficient enough.
Not in Prolog and also not in other languages. Here is
an example: Let us consider
the complete graph of
order n, which is abbreviated
as Kn. Its adjacency list can
be defined as:
Let us now solve the following task: Which nodes are reachable
from a particular node, in a reflexive and transitive way?
Or slightly more generally, what is the reflexive transitive
closure of a set of nodes? In Prolog, we can write this as:
The major drawback of this approach is that it doesn't scale
well. In particular, we have:
?- list_length(_, N), portray_clause(N),
k_n(N, Adjs),
time(setof(To, reachable(Adjs, [], 1, To), Tos)),
false.
...
6.
% 110,079 inferences, 0.012 CPU in 0.012 seconds (98% CPU, 9334266 Lips)
7.
% 914,953 inferences, 0.093 CPU in 0.098 seconds (95% CPU, 9816460 Lips)
8.
% 8,446,107 inferences, 0.823 CPU in 0.837 seconds (98% CPU, 10265329 Lips)
9.
% 85,982,043 inferences, 8.086 CPU in 8.135 seconds (99% CPU, 10633230 Lips)
This is because the number of paths in this graph
increases super-exponentially in the number
of nodes, and the naive solution
traverses all paths. This approach quickly becomes too
slow, no matter which language you use to implement it.
In this concrete case, we can solve the task in a much more
efficient way. For example, we can use Warshall's algorithm for
computing the transitive closure, with code similar to:
Note how sort/2 is used to remove
duplicates from a list, and to obtain a canonical
representation of the set of nodes that have already
been found.
Sample query:
This is clearly much more efficient. By implementing intelligent
strategies, you can obtain elegant and efficient
Prolog solutions for many search tasks.
Pruning the search
Let us consider the special case of sorting a list
of integers without duplicates. In Prolog, we can implement
this as a relation between two lists. Let us call the
relation integers_ascending/2, to make clear that it can
ideally not only be used to sort, but also to check
and generate solutions. Declaratively, the conditions that
must hold for integers_ascending(Is0, Is) are:
Is0 contains no duplicates
Is is a permutation of Is0
the elements of Is are in ascending order.
We start with part (3), by defining what we mean by a list
of ascending integers:
ascending([]).
ascending([I|Is]) :-
foldl(ascending_, Is, I, _).
ascending_(I, Prev, I) :- Prev #< I.
For (2), we assume the availability of a
predicate permutation/2, relating a list to all its
permutations on backtracking. Implementing it is left as an
exercise.
Using these building blocks, we are ready to
define integers_ascending/2:
This predicate implements a very naive sorting method
called permutation sort: Operationally,
it generates a permutation, and succeeds iff the
elements of the permutation are in ascending order. This
approach is called generate and test. It works well
for small examples, such as:
?- integers_ascending([3,1,2], Is).
Is = [1, 2, 3] ;
false.
However, this method is extremely inefficient for longer
lists: A list of length N has N! permutations, and so
the worst-case running time increases super-exponentially
in the length of the list. For example:
?- time(integers_ascending([10,9,8,7,6,5,4,3,2,1], Ls)).
% 64,398,640 inferences, 9.928 CPU in 9.994 seconds (99% CPU, 6486524 Lips)
Ls = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] .
We can massively improve the running time by reordering the
goals:
?- time(integers_ascending([10,9,8,7,6,5,4,3,2,1], Ls)).
% 168,432 inferences, 0.025 CPU in 0.026 seconds (98% CPU, 6699761 Lips)
Ls = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] .
By first stating the requirement that the list elements be
in ascending order, the subsequent search for permutations
is automatically
pruned as soon as the system can deduce that any
partially completed permutation can no longer lead to a
full solution because it violates the posted constraints.
Note that even though combining search with early pruning can lead
to tremendous performance improvements over generating all
possibilities, dedicated algorithms that are carefully tailored to
the task at hand are typically even more efficient. For
example, in the concrete case of sorting a list of integers, you
can simply use sort/2 for a
solution with asymptotically optimal performance for a
comparison-based search. On the other hand, the price of
using a specialized algorithm is often generality. For
example, in the following case, sort/2 omits one of the
two possible solutions:
?- sort([X,Y], [1,2]).
X = 1,
Y = 2.
In contrast, integers_ascending/2 yields all solutions:
?- integers_ascending([X,Y], [1,2]).
X = 1,
Y = 2 ;
X = 2,
Y = 1 ;
false.
Ceteris paribus, it is good practice to keep your
programs as general as you can.


A new skin for tribal.be
May 24 2007, 11:35 AM
Need your help one more time guys;
TRIBAL.be is getting old. Almost 5 years that the site holds the same blue skin. I recently removed the full width style and added some ajax features (the thumbs up, thumbs down), but it definitely needs much more.
Sebastien (from dynasite.be) is working on.
Here is the mockup he made. What do you think about? (full image here)


Class HS.Controller.PubSub
PubSub
Defined in: controller.js.
| Constructor Attributes | Constructor Name and Description |
|---|---|
|
Global implementation of PubSub methods used to synchronize states and execute the actions based on events.
|
| Field Attributes | Field Name and Description |
|---|---|
| <inner> <static> |
HS.Controller.PubSub.channels
An object containing string: object pairs based on channel names and their respective data.
|
| <inner> <static> |
HS.Controller.PubSub.channelsList
An array containing the names of all the channels create and sub-channel byproducts
|
| Method Attributes | Method Name and Description |
|---|---|
| <inner> <static> |
HS.Controller.PubSub.$statics.async(fn, data)
this function is used to execute a function asynchronously via setTimeout 0
|
| <inner> <static> |
HS.Controller.PubSub.$statics.hasSubscribers(channel)
this function is used determine if a pubsub channel has subscribers at this time.
|
| <inner> <static> |
HS.Controller.PubSub.createChannel(channel)
creates a new channel as well as any sub-channels
|
| <inner> <static> |
HS.Controller.PubSub.deliver(channel, data)
executes the channels subscribers callbacks with a new set of data but
does not execute the sub-channels
|
| <inner> <static> |
HS.Controller.PubSub.publish(channel, data)
executes the channels subscribers callbacks with a new set of data but
does execute the sub-channels which is how it differs from deliver which is
focused on a single channel
|
| <inner> <static> |
HS.Controller.PubSub.subscribe(channel, cb)
subscribes to and potentially creates a channel while doing so.
|
| <inner> <static> |
HS.Controller.PubSub.unsubscribe(channel, id)
subscribes to and potentially creates a channel while doing so.
|
Class Detail
HS.Controller.PubSub()
Global implementation of PubSub methods used to synchronize states and execute the actions based on events.
- Requires:
- HS.Utils.Controller
- Class
- HS.Classes.Channels
Field Detail
{Function}
async
<inner> <static>
HS.Controller.PubSub.channels
An object containing string: object pairs based on channel names and their respective data.
{Object}
channels
<inner> <static>
HS.Controller.PubSub.channelsList
An array containing the names of all the channels create and sub-channel byproducts
{String[]}
channelsList
{Function}
hasSubscribers
Method Detail
<inner> <static>
HS.Controller.PubSub.$statics.async(fn, data)
this function is used to execute a function asynchronously via setTimeout 0
HS.Controller.PubSub.async(function() { console.log('doing stuff here'); });
- Parameters:
- {Function} fn
- Required - the function to be executed by the setTimeout
- {Object} data
- Optional - the data for fn if it is needed
<inner> <static>
HS.Controller.PubSub.$statics.hasSubscribers(channel)
this function is used determine if a pubsub channel has subscribers at this time.
var IsEscapeSubscribed = HS.Controller.PubSub.hasSubscribers("User:Keyboard:Keydown:EscapeKey");
- Parameters:
- {Function} channel
- Required - the name of the channel to get subscriber info from
<inner> <static>
{HS.Controller.PubSub}
HS.Controller.PubSub.createChannel(channel)
creates a new channel as well as any sub-channels
HS.Controller.PubSub.createChannel("User:Event:Hover:Title") .createChannel("User:Event:Click:Plugin")
- Parameters:
- {String} channel
- The name of the channel
- Returns:
- {HS.Controller.PubSub} Returns itself so methods can be chained
- Requires:
- HS.Classes.Channel
<inner> <static>
{HS.Controller.PubSub}
HS.Controller.PubSub.deliver(channel, data)
executes the channels subscribers callbacks with a new set of data but
does not execute the sub-channels
HS.Controller.PubSub.deliver("User:Event:Click", { scores: [6,5,97,32,68,43,58,64,98,86], IsActive: false })
- Parameters:
- {String} channel
- The name of the channel
- {Object} data
- used to execute a callback for this channel
- Returns:
- {HS.Controller.PubSub} Returns itself so methods can be chained
<inner> <static>
{HS.Controller.PubSub}
HS.Controller.PubSub.publish(channel, data)
executes the channels subscribers callbacks with a new set of data but
does execute the sub-channels which is how it differs from deliver which is
focused on a single channel
HS.Controller.PubSub.deliver("User:Event:Click", { scores: [6,5,97,32,68,43,58,64,98,86], IsActive: false })
- Parameters:
- {String} channel
- The name of the channel
- {Object} data
- used to execute a callback for this channel
- Returns:
- {HS.Controller.PubSub} Returns itself so methods can be chained
<inner> <static>
{Number|Null}
HS.Controller.PubSub.subscribe(channel, cb)
subscribes to and potentially creates a channel while doing so. The callback will be executes when
the channel is published or delivered to
HS.Controller.PubSub.subscribe("User:Event:Click", callbackFunction)
- Parameters:
- {String} channel
- The name of the channel
- {Function} cb
- Callback function executed when the channel is published to.
- Returns:
- {Number|Null} Returns the subscription's id so it can be un-subscribed using this number in the future.
- Requires:
- HS.Utils.Controller.asteriskEnd
<inner> <static>
{HS.Controller.PubSub}
HS.Controller.PubSub.unsubscribe(channel, id)
subscribes to and potentially creates a channel while doing so. The callback will be executes when
the channel is published or delivered to
HS.Controller.PubSub.unsubscribe("User:Event:Click", channelId)
- Parameters:
- {String} channel
- The name of the channel
- {Number} id
- The id of the subscribed function to help find it in the subscribers array..
- Returns:
- {HS.Controller.PubSub} Returns itself so methods can be chained


Maunga Club is one of the best rated Chalet services, in Southern New Zealand, We have been running since 19XX, and provide customers with wonderful experience, that leave our customers satisfied.
To find out more information about our chalets, You can click here.
For more information about booking for membership, click here.


Posts about “Websites”
I’ve been taking a long break from blogging, but have been swamped with other projects and personal stuff. But I thought I’d take this opportunity for a cool retrospective trip through the interwebs. Now, you may know that Yahoo’s Geocities is closing this October. Well, I’ve managed to save my oldest website from imminent oblivion through the painstaking process of re-coding each html file, capturing all the other files through a Firefox plug-in, and giving it a new home on this server.
So the economy is caught in a perpetual flush cycle and the government is crumbling under the pressure of imminent deficits. You’re waiting for HR to ask you to stop by so they can talk about “restructuring”. You’re wondering if you can even afford to drive to the mall this holiday season, let alone buy mounds of stuff there. Well, no worries. Here are some resources for thrifty Canadians with the most meagre of budgets, because let’s face it - right now it’s cool to be cheap.
If you want to see how a movie fared with the critics before you shell out your hard-earned bucks, check out rotten tomatoes. This popular website has recently been redesigned and has now gone into beta testing.
The new design isn’t bad, but then again, I didn’t have a problem with the old one either. I guess they were trying to go with a more community-based, web 2.0 format. The layout is still a bit cluttered, but looks lighter.


MIICD: Multiple Imputation for Interval Censored Data
Implements multiple imputation for proportional hazards regression
with interval censored data or proportional sub-distribution hazards
regression for interval censored competing risks data. The main functions
allow to estimate survival function, cumulative incidence function, Cox
and Fine & Gray regression coefficients and associated variance-covariance
matrix. 'MIICD' functions call 'Surv', 'survfit' and 'coxph' from the
'survival' package, 'crprep' from the 'mstate' package, and 'mvrnorm' from
the 'MASS' package.
| Version: |
2.4 |
| Depends: |
R (≥ 2.13.0) |
| Imports: |
survival, MASS, mstate |
| Published: |
2017-05-27 |
| Author: |
Marc Delord [aut, cre] |
| Maintainer: |
Marc Delord <mdelord at gmail.com> |
| License: |
GPL-3 |
| NeedsCompilation: |
no |
| In views: |
Survival |
| CRAN checks: |
MIICD results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=MIICD
to link to this page.


Quickstart
As a quick demonstration of the framework let's test the React variant of TodoMVC project. Of course other testing other frameworks is possible, you can try it by yourself!
Install packages
In order to install Kakunin you have to make sure that you have installed:
node.js - v7.8.0 min JDK Chrome
-
Create directory for your project and enter it
bash $mkdir my_project cd my_project
-
Initialize JavaScript project
bash npm init
-
Install dependencies
bash npm install cross-env protractor webdriver-manager kakunin --save
-
Inside
package.json
file add new script inscripts
section:json "kakunin": "cross-env NODE_ENV=prod kakunin"
Configure Kakunin
-
Run initialization command
bash npm run kakunin init
-
answer literally few questions:
What kind of application would you like to test?
:otherWeb
What is base url? [http://localhost:3000]
:http://todomvc.com
What kind of email service would you like to use?
:none
And you're set! Now let's write some test!
Test the app
- Create a page object that will contain instructions on how to locate elements in the projects.
Create a file
pages/main.js
:
const { BasePage } = require('kakunin'); class MainPage extends BasePage { constructor() { super(); // define the main url for the page this.url = '/examples/react/#/'; // whole form tag this.addTodoForm = $('.todoapp'); // input field this.todoInput = $('input.new-todo'); // list of currently added todos this.todos = $$('.todo-list .view'); this.todoLabel = by.css('label'); // first todo item in a list this.firstTodoItem = this.todos.get(0); } } module.exports = MainPage;
Now that we have prepared the locators, we can start writing our test. Let's test adding new todo item.
Create a file named: features/adding_todo.feature
with the following contents:
Feature: Scenario: Adding todo Given I visit the "main" page And I wait for "visibilityOf" of the "addTodoForm" element And the "addTodoForm" element is visible When I fill the "addTodoForm" form with: | todoInput | My new todo | And I press the "enter" key Then there are "equal 1" "todos" elements
And that's it! All you have to do now is to run the test and watch the magic happens ;)
npm run kakunin
The tests may run quite fast so you might not been able to see that it really works as expected. To check if the todo items has been really added to the list, let's use a simple hack - let's pause the running test right after the todo has been added.
To do that, let's upgrade our Scenario. Update the file:
Feature: Scenario: Adding todo Given I visit the "main" page And I wait for "visibilityOf" of the "addTodoForm" element And the "addTodoForm" element is visible When I fill the "addTodoForm" form with: | todoInput | My new todo | And I wait for "1" seconds And I press the "enter" key When I fill the "addTodoForm" form with: | todoInput | Another todo item! | And I wait for "1" seconds And I press the "enter" key Then there are "equal 2" "todos" elements Then I wait for "5" seconds
As you can see, we've added 1 new step that waits for a second before
"pressing" the enter
key. We've also added a second todo item with
a short pause at the end of the test so you can see the changes.
If you want to see what can we do more with the TodoMVC project, take a look
at the example
dir, where you'll find a complete set of test for the project.


Words are, in my not-so-humble opinion, our most inexhaustible source of magic. Capable of both inflicting injury, and remedying it.
- Albus Dumbledore, from J.K. Rowling's Harry Potter and the Deathly Hallows
Welcome to the draft of the third chapter of my journey to write a short book on data structures and algorithms that are not widely known outside of academic circles. We have previously covered KHyperLogLog and Odd Sketches. As always, I'm looking forward to your feedback , which is greatly appreciated.
In this chapter, we will be discussing GADDAG, a data structure that efficiently generates moves in Scrabble.
Throughout history, humans have always been captivated by board games. One of the earliest discovered games is the Egyptian board game, Senet, dating back to around 3500 BCE. The game featured a board of thirty squares, arranged into three parallel rows with ten squares each, with pieces (known as draughtsmen) being moved across the board. Although the exact rules of the game are still a mystery, it is believed that the objective was to reach the edge of the board first, and accomplishing this may have had some significance towards the afterlife. Pieces were moved based on the throw of sticks or bones. According to a 1980 article by Peter A. Piccione:
This research demonstrates that the stratagems of the game reflect nothing less than the stratagems of the gods, and that senet, when properly understood, can reveal essential Egyptian religious beliefs about the afterlife. At the most, the game indicates that ancient Egyptians believed they could join the god of the rising sun, Re-Horakhty, in a mystical union even before they died. At the least, senet shows that, while still living, Egyptians felt they could actively influence the inevitable afterlife judgment of their souls - a belief that was not widely recognized by Egyptologists.
Senet was originally strictly a pastime with no religious significance. As the Egyptian religion evolved and fascination with the netherworld increased - reflected in such ancient works as the Book of Gates, Book of What is in the Netherworld, and portions of the Book of the Dead - the Egyptians superimposed their beliefs onto the gameboard and specific moves of senet. By the end of the Eighteenth Dynasty in 1293 BC, the senet board had been transformed into a simulation of the netherworld, with its squares depicting major divinities and events in the afterlife.
Perhaps equally fascinating is our desire to become the absolute best at these board games. A remarkable example of this is the 1984 chess world championship between Garry Kasparov and Anatoly Karpov. Karpov was the reigning world champion going into the tournament and the rules stated that the first player to win six games would be crowned the champion (draws were not counted). The match was fiercely fought over five months, and a total of 48 games were played. However, neither player won the required six games to claim the title. It was eventually halted without a winner, with a follow-up scheduled five months later.
In recent history, our hunger to understand board games has prompted us to explore the use of computers to dominate them. This drive partly arises from our desire to uncover game secrets and expand our thinking into new dimensions. An intriguing anecdote, which is somewhat antithetical in this context, involves yet another chess world championship match between Garry Kasparov and Vladimir Kramnik in 2000. As chess engines gained in prominence, they began to reveal innovative lines employed by grandmasters, but there were still many openings that remained a mystery to these engines. One such enigma was the Berlin Defense, a variation of the centuries-old Ruy Lopez that had been largely forgotten. However, Kramnik utilized the defense to draw against Kasparov with the black pieces, as it was widely believed that computer engines struggled to understand this opening at the time. This technique propelled Kramnik to victory, as he went on to be crowned the new world champion. Later on, computer engines developed incredible defensive resources using the Berlin Defense, and it is now widely used among top-level chess players.
But in this chapter, we are not going to talk about Senet or Chess. Instead, we will discuss Scrabble. In particular, we will explore two fascinating data structures called DAWG and GADDAG that helped pave the way for computer domination in the world of Scrabble playing.
Alfred Butts, the creator of Scrabble, spent much of his later life in seclusion; however, his inspiration behind the game's creation was fascinatingly shared in a 1953 article in Life magazine:
Scrabble is not, in fact, new. It has been swimming around in the brain of a mild, bespectacled, New York architect named Alfred Butts for about 20 years. Early in the Depression, Butts found himself temporarily unemployed. Casting about for some means of making a living, he decided to invent a game. He disliked dice games, which are almost entirely luck, and felt that all-skill games, like chess, were too highbrow for the general market. A game which was half luck and half skill, he thought, would be about right. He had always enjoyed anagrams and crossword puzzles and so set out to combine these games within the luck-skill formula. After two or three years of experiment he developed the thing that is now Scrabble, although he never found a satisfactory name and referred to it simply as “it”.
In 1988, Andrew Appel and Guy Jacobson presented an intriguing algorithm for rapidly generating Scrabble moves. But before we delve into the nitty-gritty of the algorithm, let's first take a step back and truly understand the problem we're attempting to solve here.
Specifically, our focus is on generating moves in Scrabble. This means that given a turn, we aim to identify viable moves that a player can make using the letters both on their rack and on the game board.
Throughout this chapter, we will be using the term anchor squares. An anchor square refers to any square on the board onto which letters can be hooked to create new words. It's easy to identify the anchor squares by finding the empty squares that are adjacent (vertically or horizontally) to filled squares. Figure 3 provides a visualization of this concept.
To determine possible valid moves, it is crucial to maintain a data structure that searches through parts of a lexicon in order to gather valid moves. But what would this data structure look like?
A potential solution would be to use a trie. A trie is a tree-like data structure that can be used to test whether a particular string is present in the set of strings. The root node represents an empty string, and each node represents a possible continuation of the string. For instance, a trie that represents the entire English lexicon would have 26 nodes (for the letters A to Z) as children to the root node, and it would further branch out from there. A visualization of a trie for a subset of the English lexicon is shown in the figure 4.
Tries are simple to build, as one can easily insert new strings repeatedly. They are also fast to search, but they consume a lot of space. This can be easily visualized by considering the number of repetitions that occur in a trie when words ending with -s, -ed, or -ing are encountered.
When Appel and Jacobson experimented with tries, they discovered that a 94,240-word lexicon could be represented by a 117,150-node trie with 179,618 edges. To improve this naive solution, they suggested using a Directed Acyclic Word Graph (DAWG). A DAWG is a finite state machine where the nodes represent its states, the edges show the transition, and the terminal nodes represent the accepted states - or in our case, the words within a lexicon. However, it's worth noting that there can be multiple finite state machines derived from a lexicon. Therefore, DAWG is the minimized finite state machine, ensuring that all equivalent sub-tries merge - for example, words that end with -s, -ed, or -ing. A visual depiction of this structure with the same lexicon is shown in the figure 5.
Using DAWG, Appel, and Jacobson reduced the 117,150-node trie to 19,853 nodes.
But how do we parse a DAWG? To begin, let's define the concept of a left part of a word. This refers to the segment of a word that starts from the left of the anchor square. It can include letters from either the rack or the board, but not both simultaneously. Similarly, a right part of a word consists of a segment including and to the right of the anchor square. With this in mind, we can use a two-part strategy:
The way vertical words are treated is by considering them as horizontal words with the board transposed.
Here is a recursive algorithm to compute the left parts.
To generate all the moves from the \(AnchorSquare\), a LeftPart(" ", root node \(N\), \(Limit\)) call can be made, where \(Limit\) is the number of non-anchor squares to the left of the \(AnchorSquare\).
The right parts can then be computed as follows:
Here's a visual of parsing a DAWG from an \(AnchorSquare\). As you can see, in the case of two squares, we ultimately find two valid words: "terrain" and "terrains". "ter-" serves as the prefix and "-s" the suffix for the latter.
One of the major pain points of DAWG is the unconstrained generation of prefixes. As the words are only generated from left to right, the part that focuses on the calculation of prefixes is crucial. However, there may be scenarios where prefixes cannot be completed with any remaining tiles in the rack, or where prefixes cannot be completed using the letters on the board that the algorithm must go through. By using the above approach, we can see that a considerable amount of backtracking would be necessary for such situations.
So, how can we improve on this limitation? Approximately five years after DAWG, Steven Gordon published a paper introducing GADDAG, a data structure that avoids the non-deterministic prefix generation method used by DAWG. Gordon's approach creates bidirectional paths for every word starting at each letter. While Gordon's approach remains non-deterministic, it is more deterministic than Appel and Jacobson's approach. In the following section, we will explore this data structure.
The key idea in GADDAG that enables bidirectional paths is the fact that a language such as \[L = \{REV(x)\diamond y \;|\; xy \text{ is a word and } x \text{ is not empty}\}\] can be used to avoid non-deterministic prefix generation. Here, \(REV(x)\) is the reverse string of \(x\) and \(\diamond\) is a delimiter. So, what does this mean for the language \(L\) and how does it make GADDAG bidirectional?
The first part (\(REV(x)\)) is the reverse of the directed acyclic graph for prefixes, and the second part (\(y\)) is the directed acyclic graph for suffixes. Reversing the prefixes allows us to iterate over them one at a time, just as we will be doing with suffixes. For the prefixes, we move away from the anchor squares. Once we find a valid prefix, we can continue the iteration to find a valid suffix for the current prefix.
The prefixes must not be empty, as this guarantees that the first letter of the prefix in reverse will be placed directly on the anchor square.
Here is an example of how an un-minimized GADDAG would look, where we only have one word "rain" in the lexicon. This visualization will also demonstrate the various ways we can play "rain" on the word "air" using this un-minimized GADDAG.
As you can see, each word in the lexicon is created by placing letters leftwards from the anchor square until a \(\diamond\) is observed. Then, letters are placed to the right of the anchor square until an acceptable word is formed. The paths are explored using a depth-first search approach, backtracking when necessary due to letter availability on the rack or board limitations.
However, as one might notice, an un-minimized GADDAG generates more edges than an un-minimized DAWG. To make it space-efficient, we can optimize it by allowing arcs to connect letters that if encountered next, can form a word. Applying this partial minimization technique would have the following effect on the above GADDAG:
Furthermore, here's a minimized GADDAG for a much larger lexicon consisting of five words.
To generate valid moves from an anchor square using a GADDAG, the following backtracking, recursive algorithm can be used.
The Gen function takes the position (\(pos\)) on the board where the move should start, the current word being formed (\(word\)), the letters remaining in the rack (\(rack\)), and the current arc (\(arc\)) being followed as inputs. When initially starting at the anchor square, Gen\((0, Null, Rack, Init)\) is called, where the arc is to the initial state of GADDAG \(Init\).
The algorithm first checks if a letter exists at the current square. If it does, it follows the arc corresponding to that letter (\(newArc\)) and calls itself recursively with the new position.
If there is no letter at the current square, it loops over all the letters in the rack and checks if they can be played on the current square (i.e. if there exists a potential arc). If there is, it follows the arc corresponding to that letter (\(newArc\)) and calls itself recursively with this new position.
When the algorithm finds that the current word is a valid word in the lexicon and that there is no letter immediately preceding/succedding it on the board, the word is added to the list of possible moves.
Throughout, GoOn checks if the new arc can be traversed further and if there is room to the left or right to continue forming the word. If there is, the algorithm follows the new arc and calls itself recursively with the new position.
The Figure 10 shows a step-by-step process of how the GADDAG from Figure 9 can be used to generate moves from a particular anchor square.
In his performance analysis, Gordon shows how GADDAGs can generate moves twice as fast as DAWGs. However, they can take up to five times as much memory for a typical-sized lexicon. We won't be delving into these analyses, but we encourage curious readers to read his paper.


Lay Trap
Drops a mechanical bolt trap that will trip when enemies draw near and rapidly fire out deadly bolts.
^a${value} Second(s) Recharge
12
${value} Energy Cost
25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63
${value}m Radius
1
Launches ${value} Projectile(s)
1
${value} Summon Limit
3
Life Time ${value} Seconds
30
MaxLevel
16
UltimateLevel
20


Doctor: {{consultantsName[admissionInfo.consultant]}}
Ward: {{admissionInfo.ward}}
Section: {{admissionInfo.section}}
Date: {{admissionInfo.admissionDate}}
Admitted By: {{consultantsName[admissionInfo.admissionProcessedBy]}}
Bed: {{admissionInfo.bed}}
Date: {{admissionInfo.admissionProcessedDate}}
| Bed | Bed Status | |
|---|---|---|
| {{bed.BedName}} | Unoccupied |


FROM DUSK TILL DAWN A film review by John Robertson Copyright 1996 John Robertson
Directed by: Robert Rodriguez Screenplay by: Quentin Tarantino Starring: George Clooney, Quentin Tarantino, Harvey Keitel, Juliette Lewis, Cheech Marin
Perfect Person Rating*: The Perfect Person for this film is Joe Bob Briggs. Although I haven't heard what Joe Bob thinks of this movie, my guess would be that he likes it, a lot. See the review below for more information.
Joe Bob Briggs is a fictional persona who writes movie reviews and books. Though it may surprise some, much of what I learned about reviewing comes from him. To Joe Bob, the most important things in a movie are, roughly, 'What's the body count?', 'How many breasts do you see?', 'Do heads roll?' and 'Can any person in this movie die at any moment?'. Though Joe Bob traditionally rates drive-in movies, I have a feeling that he would really, really like this movie.
>From Dusk Till Dawn is thought by many to be the next Quentin Tarantino film, when in fact, it's really the next Paul Rodriguez film. Appropriately, expect style over substance, even though there is a great deal of substance in this film. One thing that is central to this film that I would expect from neither Rodriguez nor Tarantino is the huge plot and tone shift that the film makes approximately two thirds of the way through.
The film begins in a typically Tarantino way, with clever dialog that you wish would make up the whole movie. In this case, it's a Texas ranger talking with a clerk in a liquor store. The ranger is so gritty, and his speech is so interesting, you wish the movie was about him, but as you might suspect, this ranger is not going to be in the movie long. The film is really about Seth and Richie Gecko, played by George Clooney and Quentin Tarantino, two men hiding in the back of the liquor store with hostages, waiting for the ranger to leave. Seth is tattooed, tough and cool, while Richie is clever, brutal, and a psychopath. Thanks to Richie's dementia, the ranger and the clerk meet sudden, violent, and in one case, very spectacular deaths. Scene one ends, the rock music starts, and the opening credits roll. Up until this point, the movie is as good as either Tarantino or Rodriguez have ever done.
Seth and Richie are headed to Mexico with a hostage in their trunk, after Richie broke Seth out of prison and the two of them held up a bank. Along the way, they kidnap the family and motor home of a preacher, played by Harvey Keitel, who has abandoned his faith. Using the RV and the preacher's family as cover, Seth and Richie make it to Mexico, where they are scheduled to rendezvous with a local crime boss who will take them in and help them launder their money. The meeting is scheduled to happen at a bar called the Titty Twister, and it's here that things soon get out of hand.
Outside the bar is Cheech Marin, playing a barker of sorts, trying to attract bikers and truckers to the bar. Marin actually plays three roles in this film, but this one is the most memorable, mostly because his chant uses the word "pussy" more times that anyone would think is possible.
 After some scene building, the main attraction, a dancer who is called the queen of evil appears and dances for Richie. Soon, Richie's psychoses and some extra attention from the locals lead to a deadly fight between Seth, Richie and the bouncers. After the fight, Richie is bleeding profusely from his hand, and this mesmerizes the dancer. At this point, the movie takes the aforementioned plot and tone shift that had my jaw dropping to the floor.
Before describing what happens next, I should say that I have never seen a movie make a "left turn" like this. If you can imagine an Ingmar Bergman film suddenly turning into a Zucker brothers' Naked Gun movie two thirds through, you can maybe imagine the change in tone.
The dancer, enthralled with the blood dripping from Richie's wound, can take no more, and morphs into a bat-like vampire, attacking Richie. This signals feeding time to the many other vampires in the room, and soon you have a supernatural barfight of epic proportions underway. Camp, kitsch and non-sequiters rule the film suddenly, as the movie turns into a monster movie extraordinaire. If you've seen Evil Dead, or Dead Alive, you're about ready for the type and tempo of the action that ensues, but if you're not prepared, you'll be shocked. There are more deaths per minute than a Rambo movie suddenly, and it's all done with very impressive effects.
 Shaking my head, I left the theatre awed and puzzled by what I'd seen.
This movie isn't for everyone, clearly, and so the "Perfect Person Rating" is pretty important here. Obviously, someone who likes their movies visceral, with lots of violence, nudity, and gore will love this movie, particularly the latter half. There is more here though, both in things to attract people to the movie and in things to warn about. The acting of all characters, but particularly Clooney and, surprisingly, Tarantino, is very impressive. Only Keitel and Juliette Lewis seem stiff, and it's easy to understand. As mentioned before, the special effects are very good, as is the score and the screenplay, which is the main strength of the first half of the movie. The main reason that someone wouldn't like this movie is the abrupt tone change when the vampires make their presence known. Throughout the latter half of the movie, I kept thinking to myself that this movie was violating some unwritten rule that a movie should put itself into a category and stay there. Some people might appreciate the daring it took to make a movie like this, but others will probably just be unpleasantly confused.
--------------------------------------------------------------------- Copyright 1996 by John Robertson. Retransmit freely if unedited. My opinions are solely my own, and in no way reflect those of my employer.
* Perfect Person Rating: The Perfect Person Rating is an attempt to give the reader a new way of understanding my rating. Rather than give a film a score, either overall, or on several attributes, the Perfect Person Rating tries to identify the type of person would enjoy this movie the most. Since a reviewer is by nature someone with a great deal of experience in what they are reviewing, their experience may not be the same as someone who is less informed, less jaded, or more attuned to the subject. Hopefully the Perfect Person Rating will go further toward eliminating reviewer bias than a simple rating scale. Comments are appreciated.
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


You need to provide a list of stop words, then it will be removed from your document.
The list of stop words must be placed in a text file, each word in a line. Stop word can also be regular expression, but it must not contain space.
rp koq nih http://.* #.*
harga cabai Rp 15.000,00 harga cabai rp 15.000,00 bbm koq naik, warga sedih #edisicurhat telah blokir website http://www.lucu.com
harga cabai Rp 15.000,00 harga cabai 15.000,00 bbm naik, warga sedih telah blokir website


Under the Children Act 1989, a child is looked-after by a local authority if he or she falls into one of the following:
When a pupil is not allowed to attend (or is excluded from) a school for the duration of the school's lunchtime period.
A pupil is excluded in this way when their lunchtime behaviour has been disruptive.


c:\gdg\algiers>
CS TRACKS ARE HERE
we will learn how to control data that powers everything we do
craft high quality native experiences on iOs and Android
build applications that live on the web, mobile, or the desktop


Non-Functional Requirements
The website must not put at risk the user while browsing or downloading the information;
The system shall always provide a safe environment which ensures that the downloaded content is
virus and malware free;
The web application shall be a safe environment regarding data veracity;
Each part of the project will be tested as well as each of the components;
The project is divided into several layers and components, due to this the maintainability will be
high;
The system shall be scalable, with the ability of extending to countries or areas that currently do
not have service.


Software Engineer, Samsung R&D
Bangalore, India
Finisar, Malaysia
MS, University of Michigan
Robocon is the biggest international robotics competition in Asia- Pacific region. Major Asian countries like China, Japan, India, Pakistan and Vietnam participate in the contest to show their technological supermacy. The magnitude of the competition can be judged from the fact that only one team from a country is allowed to participate, with the host being allowed to field two teams. In the competition robots compete to complete a task within a set period of time. The contest aims to create friendship among young people with similar interests who will lead their countries in the 21st century, as well as help advance engineering and broadcasting technologies in the region.
In India, it is telecasted by Doordarshan which is also one of its members. It might just be a competition for the organizers and other people,but for us,it is the platform for gaining technical skills.
Robocon at IIT Roorkee started in summer of 2008 when our far sighted seniors took a decision to combat against the best in the world. Our first step matched our reputation of being at IIT and we became the "BEST DEBUT TEAM" performing really well in the national level of Robocon 2009 which further motivated us to carry on with our dream projects. Since then we never looked back and our hardwork and our vision to achieve something we carried on and we achieved 9th position in year 2011 among all 58 teams. All this seemed to be normal, until in the year 2014 our team performed extremely well, achieving the 5th position among 89 teams and winning the best aesthetics award. Last year our team secured rank 18 among 98 teams.
This year, according to Robocon 2016 problem statement, we have to make an eco bot that doesn't possess any driving actuator, and a hybrid bot that will provide the driving force to the eco bot. Our team of 30 enthusiastic members have been diligently working on the problem statement. We hope to perform better than last year.
The game of ABU Robocon 2016 is designed in order to create the awareness of efficient energy consumption and clean and renewable energy utilization. Each team has to build two robots; Eco Robot and Hybrid Robot. Eco Robot doesn’t have an actuator to drive. It receives the driving energy from Hybrid Robot. Eco Robot has to use only one steering actuator to control its direction, to track the path containing Slopes and Hills, River, and Down Hill. Besides providing driving energy to Eco Robot, Hybrid Robot has to take Wind Turbine Propeller from Eco Robot and climb up Wind Turbine Pole in order to assemble Wind Turbine.


public final class Streams
extends java.lang.Object
| Constructor and Description |
|---|
Streams() |
| Modifier and Type | Method and Description |
|---|---|
static void |
drain(java.io.InputStream inStr)
Read stream till EOF is encountered.
|
static void |
pipeAll(java.io.InputStream inStr,
java.io.OutputStream outStr)
Write the full contents of inStr to the destination stream outStr.
|
static long |
pipeAllLimited(java.io.InputStream inStr,
long limit,
java.io.OutputStream outStr)
Write up to limit bytes of data from inStr to the destination stream outStr.
|
static byte[] |
readAll(java.io.InputStream inStr)
Read stream fully, returning contents in a byte array.
|
static byte[] |
readAllLimited(java.io.InputStream inStr,
int limit)
Read from inStr up to a maximum number of bytes, throwing an exception if more the maximum amount
of requested data is available.
|
static int |
readFully(java.io.InputStream inStr,
byte[] buf)
Fully read in buf's length in data, or up to EOF, whichever occurs first,
|
static int |
readFully(java.io.InputStream inStr,
byte[] buf,
int off,
int len)
Fully read in len's bytes of data into buf, or up to EOF, whichever occurs first,
|
static void |
writeBufTo(java.io.ByteArrayOutputStream buf,
java.io.OutputStream output) |
public static void drain(java.io.InputStream inStr) throws java.io.IOException
inStr
- stream to be emptied.java.io.IOException
- in case of underlying IOException.public static byte[] readAll(java.io.InputStream inStr) throws java.io.IOException
inStr
- stream to be read.java.io.IOException
- in case of underlying IOException.public static byte[] readAllLimited(java.io.InputStream inStr, int limit) throws java.io.IOException
inStr
- stream to be read.limit
- maximum number of bytes that can be read.java.io.IOException
- in case of underlying IOException, or if limit is reached on inStr still has data in it.public static int readFully(java.io.InputStream inStr, byte[] buf) throws java.io.IOException
inStr
- the stream to be read.buf
- the buffer to be read into.java.io.IOException
- in case of underlying IOException.public static int readFully(java.io.InputStream inStr, byte[] buf, int off, int len) throws java.io.IOException
inStr
- the stream to be read.buf
- the buffer to be read into.off
- offset into buf to start putting bytes into.len
- the number of bytes to be read.java.io.IOException
- in case of underlying IOException.public static void pipeAll(java.io.InputStream inStr, java.io.OutputStream outStr) throws java.io.IOException
inStr
- source input stream.outStr
- destination output stream.java.io.IOException
- in case of underlying IOException.public static long pipeAllLimited(java.io.InputStream inStr, long limit, java.io.OutputStream outStr) throws java.io.IOException
inStr
- source input stream.limit
- the maximum number of bytes allowed to be read.outStr
- destination output stream.java.io.IOException
- in case of underlying IOException, or if limit is reached on inStr still has data in it.public static void writeBufTo(java.io.ByteArrayOutputStream buf, java.io.OutputStream output) throws java.io.IOException
java.io.IOException


Exams
The Midterm Exams
Will take place on Carmen
ALL Sections, Date/Time: Date TBA, 7:00 pm EST
The Final Exam
Will take place on Carmen
If you cannot attend the final you must make arrangements with me immediately!
ALL Sections: Date/Time: Date TBA, 7:00 pm EST
Lecturer (Anna)
My calendar is always current. If my office hours don't work for you, or if you want to be sure you have time to meet with me if other students might be there,
then select a time on my calendar and email me to set up an appointment. I'll send you a special Zoom link for the meeting, by email. If you give me at least 24 hours notice I can usually make whatever time you select.
Annatala Wolf
Phone:<PHONE_NUMBER>


Your first CI/CD workflow with Tekton
{{ partial "head.html" . }}
get started
on Tekton and learn all the basics.
Your first CI/CD workflow with Tekton
build a great CI/CD workflow
using Tekton tasks and pipelines.
Basic building block: Tekton tasks
Connecting blocks: Tekton pipelines
Running Tekton Tasks and Pipelines
Advanced CI/CD patterns with Tekton
control and visualize
every step of the CI/CD workflow.
Monitor with Tekton dashboard
Control with Tekton CLI tools
connect to services
you love and use everyday.
Connect to GitHub repositories
Connect to KNative platform
Connect to Jenkins/Jenkins X
Connect to Anthos platform
Connect to any app with events
read about concepts and principles
of CI/CD systems.


In backtests you can set your starting capital using the SetCash(decimal cash)
self.SetCash(decimal cash)
this.SetCash(decimal cash)
method. In live trading this is ignored and your brokerage cash is used instead. In paper trading we set the cash to a fictional $100,000 USD.


Here are the classes, structs, unions and interfaces with brief descriptions:
| Ccompare_edge | A struct that provides the comparison of edge objects. It allows sorting of edges for priority queues. The sorting follows three rules: First, edges are sorted by ascending cost. Edges with the same cost are sorted preferring horizontal/vertical edges. Edges with same cost and orientation are sorted ascending by index position, i.e., first bottom to top, then left to right |
| Cedge | A class for representing undirected edges |
| Chash_edge | A struct that provides the hash function of edge objects |
| Cmst_path | An class to compute the coverage path based on a minimum-spanning-tree (MST) |
| Cspanning_tree | A class that generates a minimum-spanning-tree (MST) graph for a given grid map |


Hot Ads
Vacumm Respiratory Aid
Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
By: George Gbenle
Location: Quebec, Canada
$450
Purchase Details
Featured Products
Surgical Equipment
Agva Hospital Ventilator
New
Shipped from abroad
$9580
Agva Advanced Homecare
New
Shipped from abroad
$9580
Low cost ventilator
New
Shipped from abroad
$9580
Hospital Ventilator
New
Shipped from abroad
$9580
Home care products
Agva Advanced Homecare
New
Shipped from abroad
$9580
Advanced Homecare
New
Shipped from abroad
$9580
Hospital Ventilator
New
Shipped from abroad
$9580
Low cost ventilator
New
Shipped from abroad
$9580
First Aid products
Agva Advanced Homecare
New
Shipped from abroad
$9580
Ventilator
New
Shipped from abroad
$9580
Surgical Equipment
New
Shipped from abroad
$9580
Ventilator
New
Shipped from abroad
$9580
Pharmaceuticals
Agva Advanced Homecare
New
Shipped from abroad
$9580
Hospital Ventilator
New
Shipped from abroad
$9580
Homecare
New
Shipped from abroad
$9580
Agva Advanced Homecarer
New
Shipped from abroad
$9580
Intensive Care
Hospital Ventilator
New
Shipped from abroad
$9580
Low cost ventilator
New
Shipped from abroad
$9580
Low cost ventilator
New
Shipped from abroad
$9580
Low cost ventilator
New
Shipped from abroad
$9580
COVID 19 Products


<< Previous Session
|
Next Session >>
Assessment - Lecture Quiz
Lecture 7: Efficient Markets
1
.
What was the main point of the paper by Goetzmann, Ibbotson, Spiegel, and Welch with respect to the Sharpe-ratio?
Points = 2.0
The Sharpe-ratio represents the best performance measure to evaluate the Yale portfolio.
David Swensen's investment performance has been due to luck, and not skill.
Patterns like Head and Shoulders create a spuriously low Sharpe-ratio that needs to be controlled in order to objectively measure investment performance.
They found the optimal strategy for someone, who wants to fool investors and create a spuriously high Sharpe-ratio, casting doubt on the use of the Sharpe-ration to measure investment performance.
2
.
Which of the following is a characterization of the Efficient Markets Hypothesis?
Points = 2.0
Markets efficiently incorporate all public information, which consequently renders beating the market impossible.
The stock market in the U.S. outperforms every other stock market in the world.
Stocks earn a higher return than bonds, because they are riskier investments.
The Efficient Markets Corporation should be included in the S&P500 index.
3
.
Which person has not participated in the intellectual development of the Efficient Markets Hypothesis?
Points = 2.0
Eugene Fama.
Nassim Taleb.
Charles Conant.
George Gibson.
4
.
What is the Head and Shoulders pattern?
Points = 2.0
A frequent pattern in the academic publication process.
A synonym for a Random Walk process.
A pattern from the technical analysis of stock prices predicting a sharp price downturn, which does however not prove to be a powerful, short-run opportunity.
It is the pattern that is the core of the most profitable stock market investment strategy, which has consistently outperformed every other investment strategy during the past 50 years.
5
.
If there are profit opportunities in the stock market, but they take a long time to realize, which stochastic process most closely reflects this behavior?
Points = 2.0
A Random Walk.
An AR-1 process, as defined in class, with ρ close to 0.
An AR-1 process, as defined in class, with ρ equal to 0.5.
An AR-1 process, as defined in class, with ρ close to 1.
Status
Submit
Close


Transactions (
)
-
Find
Transactional Id
Producer Id (Epoch)
Timeout (ms)
State
Partitions
Start Date
Update Date
Success RPM
Fail RPM


Overview¶
For a list of currently installed commands, simply run the following command to list them.
.help
To get more detailed information on a command, just do a help on the command.
.help command
Hiding a Command¶
It is possible to hide the execution of a command in a script, by using .@
prefix. For example, the following command can be used to hide the actual
user, password, and the database URL in the output.
.@open -u root mysql://localhost/vagrant
It should be noted that by default, commands in ~/.jqrc
is not echoed.
So it is not necessary to use .@
prefix there.
Character Set¶
A number of commands such as .run
, .exec
etc have options to specify
the character set of the input file.
Supported character sets by Java can be seen at https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html .
If the character set is not specified, an attempt to detect BOM is made. If BOM is not present, then the default character set is used.


evse(1) Qualcomm Atheros Open Powerline Toolkit evse(1) NAME evse - Qualcomm Atheros Electric Vehicle Supply Equipment Emulator SYNOPSIS evse [options] DESCRIPTION Emulate the EVSE part of the HomePlug AV Signal Level Attentuation Characterization (SLAC) protocol where a PEV is a "Plug-in Electric Vehicle" and an EVSE is an "Electric Vehicle Supply Equipment" or charging station. This program remains active until terminated by the user. It waits for some PEV-HLE on the powerline network to attempt to connect in order to charge a virtual vehicle then services the PEV-HLE until the PEV-HLE elects to connect, elects not to connect or abandons the attempt. See the HomePlug Green PHY Specification Release Version 1.1 for more information on this proto‐ col. Signal Level Attenuation Characterization (SLAC) enables a station to measure the signal level of its transmission at other stations in the network. It is designed for automotive applications where there are multiple plug-in vehicle (PEVs) and electric vehicle supply equipment (EVSE) on the network. The PEV signal level is measured at multiple EVSEs to determine which EVSE the PEV is actually plugged into. The process leading to this determination is called "Green PHY PEV-EVSE Association" (GreenPPEA). This program is part of the Qualcomm Atheros Powerline Toolkit. See the plc man page for an overview and installation instructions. OPTIONS -c Print the EVSE-HLE configuration profile on stdout. The configuration profile specifies program defaults in a format that you, as a user, can edit and save. Use options -p and -s to read named profiles and sections. -d Print the contents of the EVSE-HLE session variable on stdout. The session variable is an program data structure that stores information passed between the PEV-HLE and EVSE-HLE during SLAC association. This option is used to inspect and veriify information relevant to the process. If the program was compiled with variable SLAC_DEBUG defined then this option also prints MME message fields before mes‐ sages are sent or after they are received. Interested parties can follow along in the source code. -i Select the host Ethernet interface. All requests are sent via this host interface and only reponses received via this host interface are recognized. The default interface is eth1 because most people use eth0 as their principle network connection; however, if environment string "PLC" is defined then it takes precedence over the default interface. This option then takes precedence over either default. -p profile The EVSE-HLE configuration profile name. The program will supply default values for missing profile elements. See the example profile shown below. The default profile is "evse.ini". -q Enter quiet mode. Progress messages are suppressed. -s section The configuration profile section name. The program will supply default values for missing configuration profile elements. See the example profile shown below. The default section name is "default". -v Enter verbose mode. All Etherenet frames sent or received by the program are displayed on stdout. -?, --help Print program help summary on stdout. This option takes precedence over other options on the command line. -!, --version Print program version information on stdout. This option takes precedence over other options on the command line. Use this option when sending screen dumps to Atheros Technical Support so that they know exactly which version of the Linux Toolkit you are using. PROFILE The default configuration profile for this program is "evse.ini". The default profile section is "default". Users may create addition profiles and reference them with option -p or add additional sections to an existing profiles and refer‐ ence them with option -s. Time to Sound The time in 100 millisecond increments for all msounds to arrive at the msound target. The msound target may pro‐ ceed with attenuation characterization computations should all msounds fail to arrive within this period. This value is read but not used by program pev or program evse. This value is the same as CM_SLAC_PARAM.CNF.TIME_OUT. The default value is 10 which represents 1000 milliseconds. Number of Sounds The total number of msounds that will be sent to the msound target. All msounds must arrive within the allotted time or they will be lost. This value is the same as CM_SLAC_PARAM.CNF.NUM_SOUNDS. The default is 8. Response Type Controls whether the msound recipient sends signal attenuation characteristic profile data to the EVSE-HLE or another station. The only response specified at this time is the EVSE-HLE. The default value is 0. Any other value is ignored. Station Identifier Vehicle identification. The 17-byte Vehicle Identification Number to be placed in CM_MNBC_SOUND.IND.SenderID. This value is not used but is can be changed here so that the field is easy to spot within network message traces. Network Membership Key The 16-byte Network Memberhip Key (NMK) for the PEV-PLC device. This program uses CM_SET_KEY to sets the EVSE-PLC NMK to this value after disconnecting. The default value is the key for Network Password "HomePlugAV0123". Network Identifier The 7-byte Network Identifier (NID) for the PEV-PLC device. This program uses CM_SET_KEY to sets the EVSE-PLC NID to this value after disconnecting. The default value is the same as that for Network Password "HomePlugAV0123". REFERENCES See the Qualcomm Atheros AR7420, QCA6410 IEEE 1901, HomePlug AV and QCA7000 HomePlug Green PHY PLC Chipset Programmer's Guide or the HomePlug Green PHY Specification Release Version 1.1 for more information on this protocol. REFERENCES See the Qualcomm Atheros AR7420, QCA6410 IEEE 1901, HomePlug AV and QCA7000 HomePlug Green PHY PLC Chipset Programmer'sw Guide or the HomePlug Green PHY Specification Release Version 1.1 for more information on this protocol. EXAMPLES The following example starts a EVSE session on interface eth0 and wait up to 2000 milliseconds (or 2 seconds) for the PEV to respond during any given exchange. # evse -ieth0 -w2000 The default EVSE-HLE configuration profile, "evse.ini", looks something like this but it can be changed using a normal text editor. Use option -P to produce a template profile, if one is needed. # file: evse.ini # ==================================================================== # EVSE-HLE initiaization; # -------------------------------------------------------------------- [default] time to sound = 10 number of sounds = 8 response type = 0 station identifier = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB network membership key = B59319D7E8157BA001B018669CCEE30D network identifier = 026BCBA5354E08 SEE ALSO plc(1), pev(1) CREDITS Charles Maier<EMAIL_ADDRESS>open-plc-utils-0.0.3 Mar 2014 evse(1)


glow.ui.Carousel
Carousel with titles and page nav
- Below should be a carousel showing 3 items, with one image partially visible behind the next (right) button.
- Clicking the left and right arrows should move the carousel one step at a time
- The next/previous buttons should be disabled when at the end/start of the carousel
- Page naviagation should be shown below the last item in the carousel
- Clicking the page naviagtion should move the carousel to that page
- The page navigation block representing the active page should be a darker grey than the others.
-
Leonardo
-
Michelangelo
-
Donatello
-
Raphael
-
Master Splinter
-
Shredder
-
April O'Neil
-
Krang
-
Technodrome
Carousel with looping
- Below should be a carousel showing 4 items, with one image partially visible behind the next (right) button.
- Clicking the left and right arrows should move the carousel one step at a time
- The carousel should loop from the last item back to the first
- Page naviagation should be shown below carousel, centred
- Clicking the page naviagtion should move the carousel to that page
- The page navigation block representing the active page should be a darker grey than the others.
-
Leonardo
-
Michelangelo
-
Donatello
-
Raphael
-
Master Splinter
-
Shredder
-
April O'Neil
-
Krang
-
Technodrome
Carousel with paging
- Below should be a carousel showing 4 items, with one image partially visible behind the next (right) button.
- Clicking the left and right arrows should move the carousel 4 items at a time
- The final page should contain 1 item only
- The carousel should loop from the last item back to the first


More pain for German car industry as Daimler axes 10,000 jobs
by Michelle FitzpatrickLuxury automaker Daimler said Friday it would scrap at least 10,000 jobs worldwide, the latest in a wave of layoffs to hit the stuttering German car industry as it battles with a costly switch to electric.
The Mercedes-Benz maker said it wanted to save 1.4 billion euros ($1.5 billion) in staff costs by the end of 2022 as it joins rivals in investing huge sums in the greener, smarter cars of the future.
"The total number worldwide will be in the five-digits," Daimler personnel chief Wilfried Porth said in a conference call about the job cull.
He declined to give a more detailed breakdown.
The group said in an earlier statement that "thousands" of jobs would be axed by the end of 2022, after clinching a deal with labour representatives.
The cull includes slashing management jobs "by 10 percent", Daimler said, reportedly amounting to some 1,100 positions around the world.
"The automotive industry is in the middle of the biggest transformation in its history," Daimler said.
"The development towards CO2-neutral mobility requires large investments," it added.
Along with other manufacturers, Daimler is scrambling to get ready for tough new EU emission rules taking effect next year, forcing it to accelerate the costly shift to zero-emissions electric cars and plug-in hybrids.
The group, which employs 304,000 people globally, said the job cuts would be achieved through natural turnover, early retirement schemes and severance packages.
Fewer parts needed
Daimler's announcement comes as the mighty German car industry is buffeted by trade tensions, weaker Chinese demand and a darkening economic outlook.
Other major car companies have in recent months already unveiled plans to cut some 30,000 jobs in the sector over the next years.
Germany's Audi said it wants to axe 9,500 jobs, followed by more than 5,000 at Volkswagen, some 5,500 at car parts supplier Continental, while Bosch aims to cut more than 2,000 roles.
US car giant Ford plans to scrap some 5,000 jobs in Germany alone.
Electric engines require fewer parts and are less complicated to assemble than internal combustion engines, needing fewer hands.
But auto bosses have said thousands of new, hi-tech jobs will also be created in the electric era to make cars more autonomous and connected.
German automotive expert Ferdinand Dudenhoeffer has said he believes the German car sector—which currently employs 800,000 people—will shed 250,000 jobs over the next decade.
A total of 125,000 new ones will be created, he predicted.
Daimler returned to profit in the third quarter and said it was expecting 2019 revenues to be "slightly above" last year's, while operating profit would be "significantly below" the 11.1 billion euros in 2018.
Adding to Daimler's woes this year were expensive recalls linked to faulty Takata airbags and to diesel cars allegedly fitted with software to dupe emissions tests.
While the company has staunchly denied cheating, it nevertheless agreed to pay an 870-million-euro fine in Germany for having sold vehicles that did not conform with legal emissions limits.


Using with Video.js player
Using with JW Player
Using with Flowplayer
Using with Mediaelement Multitrack
Fonts map example
Railgun OP example
Using with pure HTML5 video
Aspect ratio (test)


JavaScript Practice Problems - W3Resource - Basic
Problem 6
Write a program to determine whether a given year is a leap year in the Gregorian calendar
Solution Output


Choose some already ripe (yellow with brown spots) for immediate use. Pick bananas that are still slightly but not overly green to use later. Look for bananas that are bright in color, full and plump, avoiding those with bruises. Depressed, moist, and dark areas on the skin usually signal the fruit inside is bruised.
Bananas are great pre-workout snacks because they are loaded with potassium that aids in maintaining nerve and muscle function during work outs.
Peeled bananas should be eaten immediately; exposure to the air will cause discoloration. Bananas can be frozen whole, but the texture will be softer when thawed.
Banana skins that are already old can float in potable water while over-ripe bananas will float whether they’re either peeled or unpeeled.
Cooler temperatures also slow down the chemical ripening process. Once bananas are ripe to your likening, store them in the fridge. It's OK if the peel turns brown, or even black.
Choosing the perfect bananas is no longer a hard task.
Read More


{% include "accounts/snippets/faculty-tools-section.html" %}
{% include "accounts/snippets/unpublished-articles-section.html" %}
{% url 'accounts:documents' author as tab_url %}
{% include "accounts/snippets/published-articles-section.html" with page_url=tab_url %}
{% comment %}
TODO: pagination! (probably shared?)
{% endcomment %}


SHARKS' TREASURE (director/writer: Cornel Wilde; cinematographer: Jack Atcheler; editor: Byron Brandt; cast: Cornel Wilde (Jim Carnahan), Yaphet Kotto (Ben Flynn), John Neilson (Ron Walker), David Canary (Larry Hicks), Cliff Osmond (Lobo), David Gilliam (Juanito), Caesar Cordova (Pablo), Gene Borkhan (Kook), Dale Ishimoto (Ishi); Runtime: 95; United Artists; 1975)
Reviewed by Dennis Schwartz
One film critic, Tom Milne, aptly said that Cornel Wilde maintains his reputation in this film for making the most likable bad movies around. Sharks' Treasure is an action-packed nonsense thriller that is very entertaining. In this oddity film, Wilde is the producer, writer, director, and star. He could have used someone else to give him some help with the plot and he could have worked more with the supporting cast to make their roles more plausible and meaty. Everyone seemed like a cartoon character, as there was no attempt made at character development or for the storyline to make too much sense.
The film feels like it's stuck in a strange space-warp, as the all-male treasure hunters are out at sea and are pretty close to going insane. The four treasure hunters who seek buried gold in the Caribbean's shark infested waters are: the skipper Jim Carnahan (Cornel Wilde), the one who dives amidst the sharks Ben Flynn (Yaphet Kotto), a young man that the skipper favors but keeps calling to his displeasure kid--whose real name is Ron (Neilson), and another diver named Larry Hicks (David Canary).
In some of the most colorful scenes, they must battle the sharks to get to the sunken treasure. They also squabble amongst themselves, hear the skipper lecture them on the evils of tobacco and liquor, and have to put up with the the 60-year-old skipper boasting how fit he is as he tries to impress them by doing one-handed push-ups on deck while impressing upon them the importance of keeping fit.
Their happiness over their new wealth is short-lived, as they are overtaken by a band of desperadoes. These hombres are bad dudes, bad actors, and bad punsters.  He keeps a pretty-boy gringo, Juanito (Osmond), around as his trophy lover. The five felons have escaped from prison and now plan to steal the treasure and the boat, and kill their captives, but emotions run high on the boat and a life-and-death struggle takes place. This all seems bizarre and hardly real, but it's full of emotion and the action is a hoot to behold. It's a film that has to be seen to be treasured for what it brings up from such a slight story.
REVIEWED ON 10/6/2001 GRADE: C +
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
========== X-RAMR-ID: 29779 X-Language: en X-RT-ReviewID: 254147 X-RT-TitleID: 10000827 X-RT-SourceID: 873 X-RT-AuthorID: 1315 X-RT-RatingText: C+
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


These articles are part of exploration that started in late 2015 and early 2016. It was a confusing time: autonomous vehicles and Boston Dynamics were frequently in the news and OpenAI was just formed to make sure that the “march towards AGI was safe.” UBI was actively being discussed by Sam Altman and Ray Kurzweil was promoting 10x / exponential thinking. At the same time, economists like Robert Gordon were arguing that we were actually living in a time of low progress.
I tried to develop my own perspective on what was happening, with key conclusions presented at this link. Greater detail supporting other conclusions can be found in Part II and Part III.
Innovation is not improving quality of life as quickly as experienced in prior generations.
Digitization has had a profound effect on how we live our lives. It has enabled business model innovations (e.g., e-commerce, SaaS) and redefined how we consume media and interact with one another. At the same time, economists believe we may be living in a time in which the net rate of progress is lower than that of prior generations (see chart below; source McKinsey). What explains this apparent paradox?
One thesis for this may be that gains in the technology sector have not effectively led to similar innovation in other sectors of the economy. With this, gains in technology alone cannot have a large influence on overall US economic performance: it only represents ~7% of total GDP.
The performance of US productivity would support this claim. Gains in GDP are divided into two measurements: productivity and labor employment. Productivity, as a rough measure, is the difference between GDP growth and changes in labor employment. For example, in 2014, labor employment grew by 1.7% and GDP grew by 2.4%; “productivity” grew by the difference, 0.7%. Productivity is considered to be a proxy for innovation, as it should account for excess value that workers create (relative to historical performance). In the United States, over the last 40 years, this measure of productivity has slowed. In fact, the rate of productivity growth from 2011 to 2015 was the slowest since the five-year period ending in 1982.
Economists have been trying to figure out this puzzle for many decades, and it is becoming increasingly important. We know that the slowdown across countries is not correlated with IT production or use, suggesting that the problem is not mismeasurement related to IT goods or services. We also know that the slowdown has been broad-based across industries and would be similar if industry weights were held fixed — it does not reflect a rising share of slow-growth industries.
Robert Gordon, an economist, has a theory that, with regard to innovation, the years from 1870-1970 are unparalleled throughout history and advances in ICT in recent decades simply do not compare to the relatively concurrent inventions of electricity, the internal combustion engine, modern sanitation and plumbing, aviation, pharma products, etc. Coupled with this, ICT advances haven’t made the type of broad-based improvements to the economy that these other technologies have—leaving their overall effect on the economy more muted.
Is this theory a predictor of what will happen in the future? Certainly not. But one can think about the nature of value creation from advances in ICT. By and large, they have focused on automating routine activities. More modern innovations in AI and data science have focused on further, non-routine automation. These technologies key on reducing cost and price.
When labor is not able to use the gains from these efficiencies to focus on other, more value-added activities, the role of technology in GDP growth is challenged. As an anecdote, one rationale for the recent merger between Monsanto and Bayer is that farmers’ profit has not improved enough to continue to invest in GMO seeds. The point is clear: if our economy cannot find the kind of growth that creates a “rising tide for all boats,” we stunt the ability to bring new innovations to market.
Current business activity has a strong focus on protecting existing profit pools.
Disruptive technology should lead to a proliferation of new markets and/or significant churn in existing ones. However, this has not been the case: competition in the United States has slowed in recent decades. This has become a recent focus of the Council of Economic Advisors: ROIC is increasing (especially for market leaders), markets are becoming increasingly consolidated, M&A activity is increasing, and the rate of firm entry (startups) has been decreasing.
To wit: an American firm that was very profitable in 2003 (one with post-tax returns on capital of 15-25%, excluding goodwill) had an 83% chance of still being very profitable in 2013, according to McKinsey. In the previous decade the odds were about 50%. And since 2008, American firms have engaged in one of the largest rounds of mergers in their country’s history, worth $10 trillion.
Supporting this, incumbent businesses are using their resources to protect profit—and do so by investing in the continual modernization of their operations. These incremental investments in innovation (e.g., digitization) increase barriers for new entrants as organizations focus on their short-term profit. (Recent papers have noted a decline in basic and applied research within large corporations).
What does it all mean
Due to today’s market structures, dynamism and economic shifts will be slow without large shocks to competition. Digital skills will accrue most at incumbent firms, who have the resources to make investments and can create competitive moats. Public institutions should create incentives to spur investment into basic science R&D - we need leadership to focus on long-term sources of growth and diversify areas of productivity within the economy.
Additional research, perspective, and detail can be found in the following supporting articles:
- Intro: Creating a general framework for current opportunities and challenges.
- Part II: Aging & unproven learning models are headwinds to growth.
- Part III: Technology requires deeper integration into our work lives.
My goal in putting this together was to clarify my own thinking - and to present it in a way that can be challenged and deepened by others. I would be grateful to learn what may resonate (or differ) from your personal perspectives and work.


--- layout: post title: Deploy & Edit a Facebook App in 5 Min date: '2012-05-10T09:53:32-05:00' tags: - Facebook - app - deploy - graph permalink: /post/22778757689/deploy-edit-a-facebook-app-in-5-min ---
Ever want to write an App that uses the Facebook graph? You could be the next Zynga, Foursquare, or Causes; but first you need to create your app. This quick demo shows getting started by generating an app through Facebook and then editing it. If you’ve already got a working web app it’s simple to add Facebook functionality to it, though we’ll save that for another day. What are you waiting for, five minutes from now you could have your very own live Facebook App!
If you’re interested in more information on Facebook Apps let me know @schneems


I propose you an application completely free and without ads.
It allows you to load an infinity of articles from a category that you choose.
features:
Get an article about a chosen category (History for example)
Get a random article (on all subjects)
Get an article with an expression or phrase you have chosen
Add favourite categories and articles
Subscribe to categories to receive notifications (soon)
50 categories available:
history
geography
science
computer
art
religion
particle physics
and still full of others.
QR Code Scanner
Android app
I created a QR code application completely free and without ads.
Appium Codeception module
PHP module
Easy Appium integration module, iOS Automation
Date: March 2020
Project Name
Lorem ipsum dolor sit amet consectetur.
 Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est blanditiis dolorem culpa incidunt minus dignissimos deserunt repellat aperiam quasi sunt officia expedita beatae cupiditate, maiores repudiandae, nostrum, reiciendis facere nemo!


-addusr template: ster?clnt=<name|pass>&com=addusr&usr=<usr>&<str_1>=<deg_1>&<str_2>=... Order of query params is not important. User name must not be empty string. descript: assigns stereotypes to a user with an associated degree. Degree is numeric (double), and expresses relevence. For the 'degree' parameters in query string that cannot be converted to numeric, NULLs will be inserted in DB. The stereotypes must already exist in the DB. If a stereotype in the query string does not already exists in the DB, or if a (usr, str) pair already exists, then code 401 (request error) will be returned. If the error code 401 is returned then no records have been inserted in the DB. example : ster?clnt=name|pass&com=addusr&usr=kostas&visitor=0.78&expert=0.9 ster?clnt=name|pass&com=addusr&usr=0.34&visitor=&expert=0.5 returns : 200 OK, 401 (fail, request error), 501 (fail, server error) 200 OK : example result body: <result> <row> <num_of_rows>1</num_of_rows> </row> </result>


Disclosure - Test Case 1
Test Case - Details and summary elements and polyfill
Help with nationality
If you're not sure about your nationality, try to find out from an official document like a passport or national ID card.
We need to know your nationality so we can work out which elections you're entitled to vote in. If you can't provide your nationality, you'll have to send copies of identity documents through the post.
Implementation details
This is the GOV.UK Elements implementation of a disclosure widget using the details and summary element with a javascript polyfil to make it work in browsers that do not natiively support it and to make it keyboard and screen reader accessible.
Results
Colour blindness
Awaiting result
Colour contrast
Awaiting result
Inverted Colours
Awaiting result
Increased font size
Awaiting result
Hit area
Awaiting result
Keyboard only (chrome)
Awaiting result
Screen readers
Jaws 16 / IE 11
Awaiting result
Jaws 13 / IE 9
Awaiting result
NVDA / Firefox
Awaiting result
VoiceOver / Safari (OS X)
Awaiting result
VoiceOver / Safari (iOS 9.2.1)
Awaiting result
Talkback / Firefox (Android Lollipop)
Awaiting result
Screen Magnifier / ZoomText
Awaiting result
Speech Recognition / Dragon
Awaiting result
Valid markup
Awaiting result
Progressive Enhancement
No Javascript
Awaiting result
No Javascript and no CSS
Awaiting result


/**
* Copyright 2017 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { contains, forEach } from '@firebase/util';
import { setTimeoutNonBlocking } from '../util/util';
import { StatsListener } from './StatsListener';
import { StatsCollection } from './StatsCollection';
import { ServerActions } from '../ServerActions';
// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably
// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10
// seconds to try to ensure the Firebase connection is established / settled.
const FIRST_STATS_MIN_TIME = 10 * 1000;
const FIRST_STATS_MAX_TIME = 30 * 1000;
// We'll continue to report stats on average every 5 minutes.
const REPORT_STATS_INTERVAL = 5 * 60 * 1000;
/**
* @constructor
*/
export class StatsReporter {
private statsListener_: StatsListener;
private statsToReport_: { [k: string]: boolean } = {};
/**
* @param collection
* @param server_
*/
constructor(collection: StatsCollection, private server_: ServerActions) {
this.statsListener_ = new StatsListener(collection);
const timeout =
FIRST_STATS_MIN_TIME +
(FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();
setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));
}
includeStat(stat: string) {
this.statsToReport_[stat] = true;
}
private reportStats_() {
const stats = this.statsListener_.get();
const reportedStats: typeof stats = {};
let haveStatsToReport = false;
forEach(stats, (stat: string, value: number) => {
Iif (value > 0 && contains(this.statsToReport_, stat)) {
reportedStats[stat] = value;
haveStatsToReport = true;
}
});
Iif (haveStatsToReport) {
this.server_.reportStats(reportedStats);
}
// queue our next run.
setTimeoutNonBlocking(
this.reportStats_.bind(this),
Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL)
);
}
}
|


enum class ContextPropertyKeys
Set of well known properties that may be set on a serialization context. This doesn't preclude others being set that aren't keyed on this enumeration, but for general use properties adding a well known key here is preferred.
SERIALIZERS |