Yet Another Free Showdown Simulator: Agnostic vs. Zealous
I decided to put up some of my hold'em evaluation software. You
can download it from here:
www.pokerstove.com
There are quite a few programs/packages out there that will do
poker evaluations for you. Some programs are faster than
others, but one thing that they all seem to have in common is
their approach to solving the evaluation/enumeration problem.
Agnostic versus Zealous
In computer science there is classic tradeoff between size and
time. If you want to solve a problem faster, you can often
achieve this by using more space. If you have limited space you
can solve many of the same problems, but it might take a bit more
time. One concrete example of this is tree traversals. Most
algorithms require O(log(n)) space, where n is the number of
nodes in the tree. But the traversal can be accomplished using a
constant O(1) amount of space if you are willing to visit each
node three times.
When it comes to solving complex problems, programmers are often
faced with the decision of whether to create solutions which
address the specific problem at hand (zealous), or create a
solution which is more general and can be applied to multiple
problem domains (agnostic). The zealous approach provides a complex
library which takes into account many of the possible different
situations that the problem might present. The agnostic approach
is to provide a small efficient toolkit from which more and more
complex tools can be built. Conceptually the complex library
uses fewer levels of abstraction than the small toolkit.
This relates to the size/speed tradeoff as follows. The same
problems can be solved, but the zealous approach usually requires
more code, more code maintenance, and tends to be more brittle
(susceptible to bugs). The *size* of the zealous solution is
much larger in several dimensions. On the other hand, the
zealous solution can often be faster, since optimizations can be
applied across the conceptual levels that the agnostic solution
separates. [In fact, this is one of the reasons why JIT compiled
Java code can't compete with optimized C code, global
optimizations can't easily be applied to compiled .class files.]
What does this have to do with poker software?
All of the public poker code I've read, and most of the poker
software I've read about produces agnostic solutions to the
problem of evaluating hands. While this is good for providing a
general low level library, most hand evaluations occur in very
specific contextual circumstances. In particular, many of these
solutions treat evaluation and enumeration as two separate
problems.
As I was proctoring my exams (no pun intended -- but feel free),
I decided to take a break from modern RGP and go back and read
about the "good ol' days".
An old
thread that I was reading discussed the case of calculating
the equity of AA versus 9 random opponents. The upshot was that
it would require considering over 10^28 combinations. Using an
agnostic hand evaluator would require billions upon billions of
hand evaluations. But a zealous hand evaluator would know that
there are only 133,784,560 different 7-card hands, and only
bother to do that many evaluations. The rest of the code would
be centered around traversing the enumeration space in the most
efficient way possible.
To explore the possible speedup by moving from an agnostic
solution to a zealous solution, I wrote a "proof of concept" hand
evaluator which computes the all-in preflop equity of a set of
given hands. In order to tax the evaluator, I added the ability
to compute the subjective all-in equity (SAIE) for full hand
distributions. For example, the evaluator can calculate the
equity of 22 vs. AA when the suits are not specified. It can
also calculate the equity of a hands like 87s versus an early
raiser who might hold one of {99+, AQo+, AJs+}. [The code at pokersource.sourceforge.net
also provides SAIE evaluation.]
The results were dramatic. By binding the solution more closely
to the specific problem I was to increase the overall evaluation
speed of my code by a factor of 100. On modern machines, the
code can evaluate upwards of 1/2 billion games per second.
The speedup mostly comes from the fact that while there are
millions (or billions) of combinatorial cases to consider, many
of them are equivalent. For example, if we are calculating the
equity of KsKh vs. 8s3s all boards with the other two kings are
going to result in a win for KK. This equivalence class contains
46 choose 3 = 15,180 combinations, but we can evaluate it once
and apply that evaluation to across all combinations.
So what's the point?
The point is that the general state of poker evaluators has been
relatively stagnant for the last half decade. It is time to
actually sit down and do the hard work of producing quality
evaluators which take a more zealous approach. Hand evaluators
may be a rather dry aspect of poker, but it's either come up with
more clever ways of doing complex enumeration/evaluation tasks,
or wait 90 years for computers to "catch up"
In the real world, most of this work has little meaning. Monte
Carlo simulations work very well for most practical problems, and
enumeration driven software is only going to be of interest to
the true poker geeks who must have all of their i's dotted and
t's crossed. Of course, I'm one of those geeks :)
- Andrew
P.S. Maybe I can get Charles Haynes to pay me $50 at BARGE. :)
P.P.S. I'd like to give credit where credit is due. The
underlying ideas behind this kind of evaluator didn't originate
with me. I was inspired by ancient posts made by Steven R. Jacobs
regarding video poker evaluation/enumeration algorithms.
|


This is a web application that takes a user's birthday and calculates the day of the week they were born, depending on their gender outputs their Akan Name.
Names are based on gender and the date you were born.
More info on Akan names


WITNESS LIST
Natural Resources
September 6, 2012 10:00 AM
Interim Charge #9
ON:
Clark, Jeffery Executive Director (Texas Wind Coalition), Austin, TX
Doggett, Trip President and Chief Executive Office (ERCOT), Austin, TX
Eugster, Chris Executive Vice President and Chief Sustainability Officer (CPS Energy),
San Antonio, TX
Fainter, John President (Association of Electric Companies of Texas, Inc.), Austin, TX
Hadden, Karen (SEED Coalition), Austin, TX
Meehan, Colin (Environmental Defense Fund), Austin, TX
Nelson, Donna Chairwoman (Public Utility Commission of Texas), Austin, TX
Oldham, Phillip (Texas Association of Manufacturers), Austin, TX
Reed, Cyrus Interim Director (Lone Star Chapter of the Sierra Club), Austin, TX
Smith, Tom "Smitty" Director (Public Citizen), Austin, TX
Taylor, Dub Director (Comptroller-State Energy Conservation Office), Austin, TX
Yates, Maura Manager of Governmental Affairs (Sun Edison Corporation), Denver, CO
Providing written testimony:
ON:
Haughton, Andrea (American Lung Association), Austin, TX


A draw requires at least 2 participants.Can't email results for participants without an email.
What is a secret santa?
Secret Santa is a Western Christmas tradition in which members of a group or community are randomly assigned a person to whom they give a gift. The identity of the gift giver is a secret not to be revealed until after the gift is opened.
Why did I build this?
Being in charge of organizing a draw for a secret santa in my family, I used that opportunity to have fun while coding this small application. The application is open-source, which means that the full code can be found on GitHub.


@@include('../components/meta.html')
eAdmin
@@include('../components/link.html')
@@include('../components/side.html')
@@include('../components/header.html')
Home
Home
Library
Home
Library
Data
@@include('../components/footer.html')


“He was wholly absorbed in the making of a nondescript machine, a sort of crude harmonica with a clock-spring reed, a magnet, and a wire. It was a most absurd toy in appearance. It was unlike any other thing that had ever been made in any country. The young professor had been toiling over it for three years and it had constantly baffled him, until, on this hot afternoon in June, 1875, he heard an almost inaudible sound—a faint twang—come from the machine itself. ‘Snap that reed again, Watson’, cried the apparently irrational young professor.” — Herbert N Casson, The History Of The Telephone


--- layout: post permalink: resumewriters.html Tags: Array NameOfCoupon: Resume Writers Cash Back Summary: See our ResumeWriters.com Coupon Code, ResumeWriters.com Rebate, ResumeWriters.com Promo Code, ResumeWriters.com Discount, ResumeWriters.com Coupon Cash Back Rebate here. MetaKeywords: Resume Writers Coupon Code, Resume Writers Rebate, Resume Writers Promo Code, Resume Writers Cash Back Rebate, Resume Writers Discount, Resume Writers Coupon Image: images/22886.gif LinkURL: http://www.shareasale.com/r.cfm?b=181076&u=412002&m=22886 affiliate_url_link: http://www.icouponblog.com/jane.php?id=54 thesis_readmore: See the Resume Writers Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=resumewriters.com Title: Save 10% - Resume Writers Coupon Code for resumewriters.com. Resume Writers Rebate & Discount thesis_description: Our Resume Writers Discount Coupon Code for resumewriters.com. We have the best Resume Writers Rebate anywhere. thesis_keywords: Resume Writers, Resume Writers Coupon Code, Resume Writers Discount, Resume Writers Rebate product_name: Resume Writers hop_url: http://www.icouponblog.com/hop.php?id=54 ---
Looking for a job? Be noticed, stand out from the crowd with a resume done by ResumeWriters.com. Get a discount while also getting a resume from a leading professional Resume Writing Company which has been in the business for over a decade.
ResumeWriters.com has helped hundreds of thousands of clients find new jobs especially in this economy. ResumeWriters.com has the largest network of professional resume writers. Use ResumeWriters.com's expertise and get a 10% discount on their excellent service. ResumeWriters.com has a simple but very effective work process: Step 1: Submit your current resume or career info via their secure website. Step 2: Your personally assigned writer makes direct contact with you to assess your materials and plan the project according to your career needs. Step 3: Receive a first draft within 72 hours. Step 4: Work with the writer on revisions until you have a final draft you are happy with.
For resume services that get results, contact ResumeWriters.com and get a 10% cash back rebate. ResumeWriters.com are so confident of their effectiveness, they guarantee an interview or will re-write your resume for free. So if you are looking for a job, ResumeWriters.com may be an excellent choice for you. Give yourself a chance, be the applicant with the best resume. A resume from ResumeWriters.com is more affordable with the cash back rebate coupon. Get yours today!


How To Write a THREEx Module
============================
You can find a sample threex module in
[threex.sample repo](https://github.com/jeromeetienne/threex.sample),
You could just grab it and modify it if you see fit.
Let's come back on writing your own from scratch.
First you declare ```THREEx``` namespace. This will works whenever ```THREEx```
is already defined or not. Thus you dont have any dependancy. This is a [vendor.js]()
namespace, so to say.
```
/**
* declare THREEx namespace
*/
var THREEx = THREEx || {};
```
Then you declare your module, up to you to know what it is supposed to do. But if you
could document it, i would be grateful :)
If you look for a format, see [jsdoc](http://usejsdoc.org/).
```
/**
* THREEx module to do super things
*/
THREEx.SuperModule = function( /* arguments... */ ){
// here you put your own thing
};
```
If needed, you can have a ```.destroy()``` function to act as explicit destructor
```
this.destroy = function(){
// here, clean things up
}
```
## To Update Rendering of Your Module
If this module needs to be updated at each render, provide a function to update the
rendering of your module.
```
/**
* function to be called at every render update
* @param {Number} delta number of seconds since last update
* @param {Number} now Number of seconds since the begining
*/
this.update = function(delta, now){
// ... here you update the rendering of your module
}
```
### More Cooked Version
If you got many stuff to update, it may be nice to have an actual rendering
loop, like this one.
```
/**
* All Update Functions
* @type {Array}
*/
var onRenderFcts = []
/**
* function to be called at every render update
* @param {Number} delta number of seconds since last update
* @param {Number} now Number of seconds since the begining
*/
this.update = function(delta, now){
onRenderFcts.forEach(function(updateFct){
updateFct(delta, now)
})
}
```
To add a function in this update loop, do
```
onRenderFcts.push(function callback(delta, now){
// here you update a part of your module
})
```
to remove a function in this update loop, you can do
```
onRenderFcts.splice(onRenderFcts.indexOf(callback),1)
```
## To Update The Physics Of Your Module
Same as for updating rendering, but replace ```update``` by ```tick``` everywhere :)
## Folders Hierarchie
Some guidelines on how to organize your files:
* ```/examples``` contains the examples for your module
* it contains all the files which are used only by the examples.
html files, js files, all files.
* in principle the extension must be fully usable without ```/examples``` folder
* ```/readme.md``` contains a readme about your module.
For more on readme, see [Readme Driven Development](http://tom.preston-werner.com/2010/08/23/readme-driven-development.html)
* maybe a ```/threex.supermodule.js``` file which contains the js code of your module
* If your module is too complex for a single file, for example you could do
* ```/threex.supermodule.js``` the main file for your module
* ```/threex.supermodulecontrols.js``` for the controls of your module
* ```/threex.supermodulesounds.js``` for the sounds of your module
* and so on
* you should put extensions assets in ```/```.
your images assets in ```/images```
your sounds assets in ```/sounds```
your models in ```/models```,
you get the idea.
* put examples assets in ```/examples```
### Why i like this organisation ?
* it is aimed at being clear for a new developper.
* thus all the files and directories used by the extension are at the ```/```.
It made it clear for a new developper to see the architecture of your extension.
* filenames are based on their content. So it is easy to find the code you look for.
## How To Handle Dependencies
With several files, it may become interesting to handle dependancy, for that,
[require.js](http://requirejs.org/) is recommended.
You can provide a ```/package.require.js``` file.
This file will require all the files of your modules.
Thus the developper using your module just have to require this file to get
the dependancies of your modules.
for examples
```
define( [ './threex.supermodule',
, './threex.supermodulecontrols',
, './threex.supermodulesounds',
], function(){
// ... this is called when dependancies are loaded
});
```
## How To Localize Your Assets
Sometime a modules need assets, e.g. you got a module for a spaceship in a game, it will
need a model for the ship itself, some sounds for the reactors, and some images for the
explosions when the ship fire.
When you load the assets, you need to localise them. How to do that ?
A simple way is to define a baseUrl which depends on the module location, for example.
```
THREEx.SuperModule.baseUrl = "../";
```
And now every time you needs to load one of your assets you build the url like that.
```
var imageUrl = THREEx.SuperModule.baseUrl+'/images/explosion.jpg';
```
Up to you to set the ```.baseUrl```. You may set manually or automatically
with require.js with the following code in your ```package.require.js``` file.
```
define( [ 'module'
], function(module){
// set baseUrl for this module
THREEx.SuperModule.baseUrl = module.uri+'/../';
});
```
## Bower To Publish Threex Modules
Here is how to publish your module.
```
bower register threex.supermodule git@github.com:jeromeetienne/threex.supermodule.git
```
Here is how to install a module.
```
bower install threex.supermodule
```
Here is how to get the list of all threex modules.
```
bower search threex.
```


The Param Digger is a tool that can be used for parameter discovery. It identifies hidden, unlinked, and "obscure" parameters that can be useful for increasing the attack surface, thus easing the process of finding vulnerabilities. It uses a given URL as a seed and performes brute force guessing attacks to identify parameters. It's primarily based on James Kettle's research and implementation: Practical Web Cache Poisoning and Web Cache Entanglement.
The Param Digger can be configured and started using the Param Digger dialog.
It provides:


menu
Puertofolio
Nordstrom
Zillow Hackathon
Facebook
FujiFilm SonoSite iViz
Xbox SmartGlass
Amazon Social Idea
Verizon-Wireless
Sherwin.com
About Me
Contact Me
CodePen
Github
Home
Nordstrom
2019
View
Zillow Hackathon
2015
View
Facebook
2014-Present
View
SonoSite
2013
View
Sherwin-Williams
2011
View
Microsoft
2013
View
David Puerto 2019. All rights reserved.


In the third part of this exercise I'm going to focus on an issue related to just a few lines of code, that is quite interesting: partly because it involves a minor quirk in Java 8, partly because the understanding of it and its work-around is a good way to deepen the comprehension of lambdas.
Before moving to the main topic, there are a few things to say. First, I have to mention that the source code underwent a slight refactoring, in which:
ProgressTracker
class.Main
class from static to regular instance method - this means that
now Main
is instantiated before being executed.There could be many things to say about this transformation, which converts the original, functional “look” into something traditionally object-oriented. But the scope of SolidBlue2, so far, is so simple that there is not enough context to make serious considerations about this topic.
Second, the scanning of the filesystem has been improved with a try-with-resources:
try (final Stream<Path> s = Files.walk(targetPath, FOLLOW_LINKS)) { final Map<String, String> storage = s.filter(Main::matchesExtension) .peek(progressTracker::notifyDiscoveredFile) .collect(toList()) .stream() .collect(toMap(p -> p.getFileName().toString(), p -> computeFingerprint(p, "MD5"), (v1, v2) -> v2)); store(targetPath, storage); }
Stream
, actually, has got a close()
method. When the Stream
source is in
memory there's no need to close it, as the memory resources are handled by the Garbage Collector as usual. But
when the source opens some system resources (such as sockets or files), the Stream
should be
explicitly closed. SolidBlue2 is currently a tiny command line application that terminates after the scan, so this
aspect is not relevant now; but since it is going to become a full-fledged application with its own user
interface, it's better to properly handled the thing before I forget. The best way to do that is to use
try-with-resources, since Stream
implements AutoCloseable
.
Ok. Now we can focus on the main theme of this post. Let's look at the method that stores data into a file:
private void store (final Path targetPath, final Map<String, String> storage) throws IOException { final Path folder = targetPath.resolve(".it.tidalwave.solidblue2"); final Path file = folder.resolve("fingerprints-j8.txt"); Files.createDirectories(folder); log.info("Storing results into {} ...", file); try (final PrintWriter w = new PrintWriter(Files.newBufferedWriter(file, Charset.forName("UTF-8")))) { storage.entrySet().stream() .sorted(comparing(Entry::getKey)) .forEach(e -> w.printf("MD5(%s)=%s\n", e.getKey(), e.getValue())); } }
While the code is fine and it's also robust, as it uses try-with-resources, one might ask whether Java 8 offers a
less verbose way to do a simple operation such as writing some strings into a file. The verbosity related to BufferedWriter
and PrintWriter
is the thing I'm aiming at. In Java 8, actually, the Files
class has
been augmented with a couple of methods (I'm omitting some non relevant stuff):
public final class Files { public static Stream<String> lines (Path path) throws IOException;
public static Path write (Path path, Iterable<? extends CharSequence> iterable) throws IOException;
... }
They are pretty useful as they encapsulate all the technicalities about opening and closing a file and provide a good abstraction that only focuses on the data to be read and written. Thus one might be induced to write something such as:
Files.write(file, storage.entrySet().stream() .sorted(comparing(Entry::getKey)) .map(e -> String.format("MD5(%s)=%s", e.getKey(), e.getValue())), Charset.forName("UTF-8"));
Unfortunately this fails in compilation, because Stream<T>
doesn't extend Iterable<T>
.
This is pretty curious, since Stream<T>
does provide indeed a public Iterator<T>
iterator()
method (as well as another couple of methods defined in Iterable
). The thing has been already
debated at StackOverflow, where one of the answers was more or less “the thing is deliberate, because
programmers are used to the fact that they can call iterator()
on a collection multiple times, while
Stream
can be used only once“. Actually, one should recall that Stream
is not a
collection, rather a manipulator of collections of data. And Stream
s have been designed with
the internal iteration
concept in mind, while iterators are made for external iteration.
To have an authoritative answer I've asked about this issue at the core-libs-dev mailing list and got a very exhaustive reply from Remi Forax, including this confirmation:
iterator()
is not a 'real' method ofStream
, it's a kind of escape hatch that you can use if you have an API that takes anIterator
as parameter but it will be slow.
Given that anyway Stream<T>
provides all the methods in Iterable<T>
, one
might be tempted to try a cast (I've slightly rewritten the code chunk for better readability):
final Stream<String> s = storage.entrySet().stream() .sorted(comparing(Entry::getKey)) .map(e -> String.format("MD5(%s)=%s", e.getKey(), e.getValue())); Files.write(file, (Iterable<String>)s, Charset.forName("UTF-8"));
But this is clearly a naïve approach: you can fool the compiler, nevertheless you will get a ClassCastException
at runtime. After all, Java is still a strongly typed language, both statically and dynamically, and the JVM
cannot but tell you that Stream<T>
doesn't extend Iterable<T>
. A safe and
quick way to “convert” a Stream<T>
into an Iterable<T>
would be to just
add collect(toList())
, but this would accumulate all the products into a memory buffer. No problem
with smaller scenarios, but it could be an issue for larger amounts of data. And it would be a pity to waste
memory for an operation that might be inherently pipeline-oriented.
Stream.sorted()
, like in the code example above, is already buffering all data into a list,
because it's required by the sorting algorithm. Anyway I'd like to discuss a general case in which there could
be no sorting.
But there's a trick:
final Stream<String> s = storage.entrySet().stream() .sorted(comparing(Entry::getKey)) .map(e -> String.format("MD5(%s)=%s", e.getKey(), e.getValue())); Files.write(file, (Iterable<String>)s::iterator, Charset.forName("UTF-8"));
This compiles and works. What's happening here? s::iterator
is a method reference which matches a Supplier<Iterator<T>>
.
By matching, in Java 8 we mean that the two things are both functional interfaces sharing the same “functional
descriptor”: Java 8 doesn't care of the method names, but of the fact that they have the same parameters and
return type (and eventually the throw clause). Since also Iterable<T>
matches a Supplier<Iterator<T>>
,
s::iterator
can be assigned to an Iterable<String>
.
So, why the explicit cast (Iterable<String>)
? It is required indeed, otherwise the compiler
would complain again:
error: no suitable method found for write(Path,s::iterator,Charset)
The reason for this fact is more obscure. Again, Remi Forax explains that:
The conversion from a method reference to a functional interface doesn't work if the target type is parameterized by wildcard. This is specified like this in the Java spec. I consider that this is a bug but this is actually what the spec says. I hope we will be able to fix that in Java 10, but that just my opinion.
The problem is the wildcard, since Files.write()
accepts an Iterable<? extends
CharSequence>
. So we have to live with that cast, that it's just a minor annoyance after all. Unless this RFE is accepted for Java 10...
Note that first comment of the RFE: the idea has been suggested to write a specific Collector
to do
the job as an alternate solution - it is a smart idea IMHO, as what we're actually doing is a collection of the Stream
products into a file. I've
already posted about how to write a custom Collector
. A possible solution is:
public final class FileCollector implements Collector<String, PrintWriter, Void> { private final PrintWriter pw; private final AtomicBoolean parallelChecker = new AtomicBoolean(); public static Collector<String, ?, ?> toFile (final Path file, final Charset charset, final OpenOption ... openOptions) throws IOException { return new FileCollector(file, charset, openOptions); } private FileCollector() { throw new UnsupportedOperationException(); } private FileCollector (final Path file, final Charset charset, final OpenOption ... openOptions) throws IOException { pw = new PrintWriter(Files.newBufferedWriter(file, charset, openOptions)); } @Override public Supplier<PrintWriter> supplier() { return this::oneShotPrintWriterSupplier; } @Override public BiConsumer<PrintWriter, String> accumulator() { return PrintWriter::println; } @Override public BinaryOperator<PrintWriter> combiner() { return (a, b) -> { fail(); return null; }; // never called } @Override public Function<PrintWriter, Void> finisher() { return pw -> { pw.close(); return null; }; } @Override public Set<Characteristics> characteristics() { return Collections.emptySet(); } private PrintWriter oneShotPrintWriterSupplier() { if (parallelChecker.getAndSet(true)) { fail(); } return pw; } private void fail() { pw.close(); throw new IllegalStateException("Can't be used with a parallel Stream!"); } }
Basically, we're saying that this collector can be applied to a Stream
of Strings
, it
uses a PrintWriter
as the accumulator and doesn't produce a Java object as the result (that's why I
used Void
as the third type parameter). The implementation is straightforward, but there is a point
that must be dealt with: parallelism. Collector
s in fact are designed to work in parallel if the
incoming Stream
is parallel; but writing objects to a file can't be a parallel operation.
Eventually, the incoming Stream
must be turned into a sequential one before calling collect()
;
and our Collector
should perform a safety check. Unfortunately the Collector
itself
never sees the Stream
it is applied to; but we can assume that it is being run in parallel if the Supplier
of the accumulator is called more than once (note that the check might be triggered after that some
items have been already processed and written to the file). At this point, it is safe to assume (at least with the
current implementation of the Java 8 runtime...) that
the combiner is never called.
The code can be tested with TestNG:
private Collector<String, ?, ?> underTest; ... @BeforeMethod public void setup() throws IOException { underTest = FileCollector.toFile(file, Charset.forName("UTF-8")); } ... @Test(invocationCount = 100, expectedExceptions = IllegalStateException.class, expectedExceptionsMessageRegExp = ".*Can't be used with a parallel Stream!") public void must_fail_with_a_parallel_stream() { IntStream.range(0, 10000) .mapToObj(n -> "String #" + n) .collect(toList()) .parallelStream() .collect(underTest); }
Note that not specifying CONCURRENT
in the characteristics does not ensure that the Collector
is run in a sequential fashion: it only means that the accumulator cannot be manipulated in a concurrent way,
but with a parallel Stream
the runtime might still use
multiple accumulators in parallel (synchronizing the calls to the Collector
that manipulate
them). As per Java 8, there is no way to surely force a Collector
to run in a sequential
fashion with a parallel Stream
.
It's possible to write the Collector
in a radically shorter fashion. Given that in the end it's
just an aggregate of four lambdas, a factory method Collector.or()
might be used by providing them
inline. Note that this is possible even when there are status variables, as they can be turned into variables in
the scope of the factory method. Since lambdas can be usually written in a single line, the result is shorter.
Below the shorter code, even though I'm unsure what version is more readable, especially considering a reader that
is at his first experience with Java 8.
Lambdas can access variables declared in the enclosing scope, but they must be final, as it happens with inner
classes. The compiler doesn't require them to be declared final
, it suffices that they are not
re-assigned (“effectively final”). Nevertheless I prefer to always use the final
keyword
every time something is final, for better readability.
public final class FileCollector { public static Collector<String, ?, ?> toFile (final Path file, final Charset charset, final OpenOption ... openOptions) throws IOException { final PrintWriter pw = new PrintWriter(Files.newBufferedWriter(file, charset, openOptions)); final AtomicBoolean parallelChecker = new AtomicBoolean(); return Collector.of(() -> safeGetPrintWriter(parallelChecker.getAndSet(true), pw), PrintWriter::println, (a, b) -> safeGetPrintWriter(true, pw), // never called pw2 -> { pw2.close(); return null; }); } private FileCollector() { throw new UnsupportedOperationException(); } private static PrintWriter safeGetPrintWriter (final boolean condition, final PrintWriter pw) { if (condition) { pw.close(); throw new IllegalStateException("Can't be used with a parallel Stream!"); } return pw; } }
With the new Collector
this point the original code can be refactored into:
private void store (final Path targetPath, final Map<String, String> storage) throws IOException { final Path folder = targetPath.resolve(".it.tidalwave.solidblue2"); final Path file = folder.resolve("fingerprints-j8.txt"); Files.createDirectories(folder); log.info("Storing results into {} ...", file); storage.entrySet().stream() .sorted(comparing(Entry::getKey)) .map(e -> String.format("MD5(%s)=%s", e.getKey(), e.getValue())) .collect(toFile(file, Charset.forName("UTF-8"))); }
One relevant part of Remi's comment was about performance. Perhaps in most cases we can safely ignore the performance hit (for instance, when we have just a few lines to write). Since I've started grokking with the Java Micro Benchmarking Harness (JMH) it could be a useful exercise to measure the performance of the alternate solutions of the problem I presented here. Stuff for a further post.
The whole project, made with Maven, is available at BitBucket; the source illustrated in this post is part of 1.0-ALPHA-3.


PhD Scholarship
We are offering a funded 3 years PhD position at the Department of Informatics Engineering of the University of Coimbra, Portugal, starting November 2016 or January 2017.
Research Area
The expected outcome of the research is the development of advanced data analytics services for Data Science orchestrated using the concept of micro-services and workflows. Services must be parametrisable and implement specific machine learning and prediction algorithms (e.g., SVM, deep learning, …). Services must also be dynamically composable into reusable workflows which can run on top of OpenStack using recent advances in the field of process management (such as Mistral or Airflow).
Collaboration
The research will be conducted closely in collaboration with Prof. Jorge Cardoso of the Huawei German Research Center (GRC) in Munich, Germany. Results of the research will be tested in a large-scale computing platform such as the Open Telekom Cloud from Deustche Telekom. Collaboration will also be undertake with the University Institute of Lisbon ISCTE.
University of Coimbra
The University of Coimbra (UC) is a Portuguese public higher education institution with more than 700 years of experience in education, training and research. The first and the only Portuguese-speaking university until the early 20th century, UC has affirmed its position over the years with a unique mix of tradition, contemporaneity and innovation.
Selection Criteria
- Curricular elements (final average classification in the BSc and MSc degrees): 30%
- Scientific curriculum (scientific publications, research projects, etc.): 20%
- Proof of proficiency in data science and machine learning: 15%
- Experience in similar R&D projects: 7.5%
- Motivation letter: 2.5%
- Interview (if applicable: only the three top ranked candidates will be interviewed): 25%
How to Apply
Send an e-mail to Prof. Rui Pedro Paiva (ruipedro@dei.uc.pt), with your CV containing clear information regarding the selection criteria, with “DS4NP grant” in the subject.
Closing Date
November 8, 2016


Examples
Basics
- Hello WAAX!
- The first example.
- MUI Elements
- Basic demonstration of MUI elements.
- Plug-in Workshop
- Interactive WAAX plug-in playground.
Plug-ins
- Chorus
- Chorus effect based on Jon Dattorro's design.
- CMP1
- Compressor based on Web Audio API native implementation.
- ConVerb
- Convolution reverberator with easy control.
- EQ4
- 4-band parametring equalizer.
- Fader
- Channel fader support decibel control and stereo panning.
- FilterBank
- Harmonized 8-band filterbank.
- FMK1
- Single operator FM synth keys.
- Impulse
- Impulse train as an oscillator.
- Noise
- Robust noise generator for white and pink noise.
- SimpleOsc
- Simple oscillator with vibrator and tremolo.
- SP1
- Single timbre/polyphonic sample player.
- StereoDelay
- Basic stereo delay for pingpong effect and more.
- WXS1
- Monophonic dual oscillator subtractive synthesizer.


{% extends "base.html" %} {% block styles%} {{ super() }} {% endblock %} {% block content %}
Welcome to blogs page. We provide a random quote every time the page refreshes. At the same time, we let users register and post their own quotes.


There are many interesting ways to fill in the blank. My choice is:
int count = 1;
while ( count <= 10 )
{
circ.setRadius( (100/10)*count );
circ.draw(gr);
count = count + 1;
}
Since the width (and height) of the drawing area is 200, circles can have a radius of up to 100. For ten circles, that maximum radius is divided by ten to give the size increase in each radius.
Here is what the applet draws:


You can reach this dialog via the menu entry Analysis \ Symmetric Encryption(classic) \ Ciphertext-Only \ Vigenère.
This dialog is part of the automatic analysis of the Vigenère encryption algorithm.
The calculated key length is displayed in this dialog. If the length is incorrect, it can be altered.
To resume the analysis, click on Continue; to terminate the analysis click on Cancel.


Simple Buttons GUI
Top
Side
Head
Interim Results
Activate
Start Recognition
Final Results
Command Received:
Enter positive or negative numeric decimal values in the spin boxes below
Linear X
Linear Y
Angular Z
Publish Message


Wonder US Property Group PPR
Wonder US Property Group PPR is the area’s premier POLLUTION PREVENT company, and since our inception we have been helping homeowners
along with improving communities in each and every city we work in.
Through our extensive knowledge of the business, network of resources, and years of expertise, we are able to assist homeowners with a wide
variety of real estate problems. We pride ourselves on our reputation for working one-on-one with each customer to handle their individual
situations.
With the ability to directly purchase homes and make cash offers, we can create an extremely fast, and hassle-free transaction.
Our mission is to rejuvenate neighborhoods and increase the standard of living by improving the overall quality of housing for the residents.
Call us today and let’s see how we can work together!
We not only purchase property but we also sell our homes directly to buyers, many of which are completely renovated and in move-in condition
. Whether you are dreaming of becoming a first time home buyer or looking to upgrade your current home, we can help. If we don’t have a
home to sell directly to you, we can connect you with a licensed agent who can help you find your dream home!
Wonder US Property Group PPR is truly committed to helping each individual customer. We focus on fast response, integrity and over-delivering
on customer service. By putting the customer’s needs first, whether selling or buying a home, we can help you realize your real estate goals.


MOVIES Jonathan Richards
ON THE COVER OF THE ROLLING STONE
ALMOST FAMOUS
Written and Directed by Cameron Crowe
With Patrick Fugit, Kate Hudson
UA North R 125 min.
If you remember '70s rock, you'll swear you remember the band Stillwater and its Rolling Stone cover. You may even have their album somewhere in your stack of yellowing, tape-patched LP jackets. That's how real Cameron Crowe ("Jerry Maguire") makes the universe of his semi-autobiographical movie, "Almost Famous", with its improbable story of a 15-year-old rock critic touring with the band and writing a cover story for the 'zine of record of the record scene.
Improbable, but true. Crowe was a teenage writer for Rolling Stone, he did tour with bands like Led Zeppelin and the Allman Brothers, and the stories and situations with which he packs this tender, romantic, and exhilarating love letter to a bygone era are drawn from life.
William Miller (Patrick Fugit) is young, younger even than he knows: his mother (Frances McDormand) has lied to him about his age as she pushes him forward in school. An English professor of fierce intelligence and discipline, she won't even let rock records in the house ("Look," she says, confiscating a Simon & Garfunkel album from his older sister and pointing to their eyes on the cover. "Drugs!") But when his sister (Zooey Deschanel) runs away to become a stewardess, she leaves him her contraband cache of albums. Leafing through the forbidden jackets, he discovers a minefield of exotic temptation. He's sucked through the looking glass into the siren world of rock.
His break comes when he meets the (real life) legendary rock critic Lester Bangs (Philip Seymour Hoffman), who fills his ear with sage advice ("Don't become close to them. These people are not your friends. Friendship is the booze they feed you") and hires him to write a concert review. There he meets the lovely Penny Lane (Kate Hudson), a groupie who rejects that nomenclature ("We're Band Aides. We inspire the music.") He also meets Stillwater, with its charismatic guitarist (Billy Crudup) and lead singer (Jason Lee), and makes enough of an impression that they invite him to tag along to L.A.
The story line of "Almost Famous" is neither complex or important. It's a coming-of-age story, a loss-of-innocence story, an end-of-an-era story ("You're coming along at a dangerous time for rock 'n roll," Bangs tells William. "The war's over and they [commercialism] have won.") But Crowe's unerring feel for the personalities and the moments make this movie soar. There is a scene on the bus of Stillwater's "Almost Famous" tour which begins with the group sullenly isolated from each other following an ego-fueled dust-up. Elton John's "Tiny Dancer" is playing, and gradually, almost reluctantly, they all begin tapping, humming, and finally singing joyfully along. It's a paean to the healing power of music.
There are a few minor potholes. A confessional scene in a plane in a storm serves its purpose but feels a bit forced, ditto a scene in Rolling Stone's office trashing William's story. A few lines smack of "I couldn't resist" - a reference to Mick Jagger at 50, and a ponderous coy line about the early days of faxing. But most of it is perfect pitch. One of the best moments has McDormand on the phone with Crudup, admonishing him to take good care of her baby, and wiping the rock star smirk off his face.
Fugit's debut balances innocence and savvy, and grows in maturity across the film's arc. Hudson is luminous as the not quite invulnerable groupie, and she captures a couple of the film's most indelible scenes. In a performance that should catapult him out of the "If we can't get Brad Pitt" category, Crudup radiates sex appeal, self-confidence, and self-doubt, and Jason Lee does a deft mix of rock star charisma and neurosis. All the cast is outstanding, from the overqualified Band-Aides (Anna Paquin and Fairuza Balk) to the look-alikes playing Rolling Stone editors Ben Fong-Torres and Jann Wenner. Best of all are the flexibly puritanical McDormand and the hiply uncool Hoffman in terrific supporting roles that merit Oscar recognition.
"Almost Famous" is about what's real and what isn't, about love and friendship and hero-worship, about the loneliness common to cool and uncool, about the transitoriness of style and the staying power of intelligence. Cameron Crowe combines them all in a movie that really rocks.
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


Dr. Liu graduated from the University of Utah and went on to pursue his dental profession in Portland, Oregon. He received his D.M.D. (Doctor of Dental Medicine) degree from Oregon Health Sciences University. He did a one-year Resident program with Genesee Hospital in Rochester, New York.
Growing up in the Salt Lake Valley most of his life, he wanted to return to the place he loved to start his private dental practice in Sandy and later in Draper.
Dr. Liu believes in educating and building relationships with his patients that last a lifetime. No matter what your stage in life is, he and his team want to keep your smile healthy. He encourages every patient to ask questions concerning their dental health and is dedicated to the highest quality of service to you.


--- layout: about title: About ---
:wave: I'm Tamzin Atkins and I work in tech in the San Francisco Bay Area. This is a glimpse into my life experience - both career and otherwise. Thanks for visiting!


[§421J-6] Robert's Rules of Order. All association and board of directors meetings shall be conducted in accordance with the most current edition of Robert's Rules of Order, Newly Revised. [L 1997, c 132, pt of §1]


D.Sairam
9999999999
<EMAIL_ADDRESS>View Profile
N.Rajesh
9999999999
<EMAIL_ADDRESS>View Profile
K.Swami
9999999999
<EMAIL_ADDRESS>View Profile
V.Gayathri
9999999999
<EMAIL_ADDRESS>View Profile


Isar735.github.io
Holland's Six Personality Types Career.
Creative writing career outlook - get the required essay here and forget about your fears top-ranked and affordable report to simplify your life Allow the top writers. What is Creative Writing? - Definition, Types Examples.
No-Fee Writing Contest; Financial Assistance For Writers. Creative writing career outlook OHMYHOME. A-Z Index : Occupational Outlook Handbook: : U.S. Bureau. Creative Writer Salary and Career suit those with a creative writing background is a career working in a Career Profile, Job Outlook. Related Articles. Get Published - 50 Online Writing Websites for New Writers. Looking for paying writing gigs? Wondering how to get your name into print. Get the complete outlook for Poet, Lyricist or Creative Writer careers. Use our job growth and job vacancy research data for Poets, Lyricists and Creative.
See our list of the top free online grant writing courses and training programs. Learn about what courses are available and what topics they cover The Department of English and Writing is a community of students and scholars dedicated to the study of language, literature and writing. Students learn
Career Search - Virginia Career. Turn your passion for words into your profession with an online creative writing degree from Career Outlook. If exploring the creative side of business sounds. Online Creative Writing Degree Creative Writing Courses. List of Free Grant Writing Courses and Training Programs. Occupational Outlook Handbook. A-Z Index. The National Association of Colleges and Employers developed a definition for career readiness and identified seven competencies associated with career readiness. Business Technology Professional's Career.
Writers and Authors : Occupational Outlook Handbook:
Career advice to help you improve your resume, get a job, get a raise and promotion, or change careers. Help with your job search, interview Capital’s creative arts summer camp programs will be hosted in the educational and lab facilities on Capital University’s Bexley campus, 1 College Creative Writing: Career Center:. What you'll learn. The creative writing major is designed for students who wish to pursue careers as writers of imaginative literature: fiction, poetry, the essay.
Also known as 'the art of making things up,' creative writing is a vital part of modern society. This lesson will explore what makes writing. Master's in Creative Writing Online MA Writing Program. Career Outlook and Job Vacancies for Poets, Lyricists. Click on the video to learn more about the Peter K. Hixson Memorial Award for Creative Writers.
Respected leader in the field describes the Holland personality types accurately. A key to choosing a career, career pathway, college major, and training program. Check the best job rankings, get career, salary, and workplace advice at US News World Report. Virginia Career VIEW © 2018. All Rights Reserved. Privacy Policy. Login About Us Sitemap Contact.
The Purdue University Online Writing Lab serves writers from around the world and the Purdue University Writing Lab helps writers on Purdue's campus.
Research the Best Job Rankings, Salaries, Reviews, Career. Careers for creative people. workers must be able to share those ideas through writing or , Careers for creative people, Career Outlook. Graduate Programs in Creative Writing with Career Information. Creative writers wishing to refine their craft can pursue master s and doctoral degrees. Creative Writer: Job Description and Requirements - Study.com. Stratford Career Institute - Online Career Training. Creative Writer Salary Career Becoming a Fiction.
Registered Nurse Salary Career Outlook Creative Writer Salary and Career Facts - Learn.org.
50 of the Best Websites for Writers - educhoices.org. Distance learning school Stratford Career Institute offers 60 career training courses that can be completed online at home in your spare time. Request information. The University of Tampa - Tampa, Florida - English and Writing. Dear Twitpic Community - thank you for all the wonderful photos you have taken over the years. We have now placed Twitpic in an archived state. English Capital University, Columbus. Creative writing career outlook. From worldbuilding and character development to copywriting and press releases, an education in creative writing can be the first step toward a fulfilling career. Registered Nurse Salary Career Outlook. The following article discusses the critical role Registered Nurses play in the community including what they do, tasks.
Graduate Programs in Creative Writing with Career Information. The WWW resource for the Information Systems Professional's career issues, skill sets, job salary surveys, and resume, interview and career sites. Also, extensive. Career Advice Articles Career Tips Job Search. Creative Arts Camps Capital University, Columbus.
OMD UK is a marketing performance company committed to delivering sharper insights, smarter ideas and stronger results. Home of the ‘Future of Britain’ Research.
Careers for creative people : Career Outlook: U.S. Bureau.
What is Creative Writing? Like a child at play, the creative writer expends his emotion (libido energy) into a world of make-believe. In serious fantasy he fulfills.
Prospective students who searched for Creative Writer: Job Description and in creative writing may also lead to a career in Outlook and Salary. Writers and authors develop written content for various types of media, including advertisements; books; magazines; movie, play, and television scripts. Turn your passion for words into a career with a master's in creative writing online from nonprofit, accredited Southern New Hampshire University.


Let's get started!
Random hobbies:
Cooking
Gardening
Watching tv shows
Reading
This is a link to GitHub!
Order of important daily activities:
Sleep
Healthy balanced food
Exercise
Relaxation


class: center, middle # About Svelte ![svelte](./img/svelte.png) --- class: center, middle ## The new kid on the block ![the new kids on the block](./img/new-kids-on-the-block_orig.jpg) --- class: center, middle ## Hype ![hypster](./img/hipster.jpg) --- class: center, middle > Svelte is a component framework.
> A language and a compiler. --- class: center, middle ### One screen rule ![common setup](./img/many-screens.jpg) --- class: middle, center ```svelte
Good evening {event}
``` ✨ [REPL](https://svelte.dev/repl/b5340def6b2140f4a7a0aa57865230f4?version=3) ✨ --- class: middle, center ### Boilerplate free
--- class: middle, center ```html
{label}
``` ✨ [REPL](https://svelte.dev/repl/77cd3526d1274a4bbf908fd2ec3cf2c2?version=3.15.0) ✨ --- class: middle, center ### Reactive by design
--- class: middle, center ```html
Value in F° :
Value in C° :
{tempCelcius}
``` ✨ [REPL](https://svelte.dev/repl/fe4e0dfd70cc4e7185617489a14ad71c?version=3.15.0) ✨ --- class: middle, center ### Style included ![fashion](./img/style.jpg) --- class: middle, center ```html
Beware fashion included
``` ✨ [REPL](https://svelte.dev/repl/f6be800ba43b4666afe9802ab3018687?version=3) ✨ --- class: middle, center ```html
Beware flying fashion included
``` ✨ [REPL](https://svelte.dev/repl/33816c63c777420d90dd357226c23bf0?version=3.16.0) ✨ --- class: middle, center ### State included ![robot](./img/style.jpg) --- class: middle, center ```js import { writable } from 'svelte/store'; const states = { up : 'up', right : 'right', down : 'down', left : 'left' }; function createRobotState() { const { subscribe, set, update } = writable(states.up); return { subscribe, set, update, move(newState){ set(newState); } }; } export const robotState = createRobotState(); ``` --- class: middle, center ```html
Robot is {$robotState}
robotState.move('up') } > ↑
robotState.move('right') } > →
robotState.move('down') } > ↓
robotState.move('left') } > ←
``` ✨ [REPL](https://svelte.dev/repl/f6be800ba43b4666afe9802ab3018687?version=3) ✨ --- class: middle, center ### Size matters (in web dev) ![wrong tool](./img/size.gif) --- class: middle Free topics ? - performance impact - a11y - reusable component - integration --- class: middle, center @kramp ---


Detailed Contents
Introduction
Infrastructure
Semantics, structure, and APIs of HTML documents
The Elements of HTML
Document metadata
Sections
Grouping content
Text-level semantics
Edits
Embedded Content
Links
Tabular data
Forms
Interactive elements
Scripting
Common idioms without dedicated elements
Disabled-elements
Matching HTML elements using selectors
User interaction
Loading Web pages
Web application APIs
The HTML syntax
The XML syntax
Rendering
Obsolete features
IANA considerations
Index
IDL Index
References
Changes
Acknowledgements
Detailed Contents


/* This file is part of Ext JS 4 Copyright (c) 2011 Sencha Inc Contact: http://www.sencha.com/contact Commercial Usage Licensees holding valid commercial licenses may use this file in accordance with the Commercial Software License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Sencha. If you are unsure which license is appropriate for your use, please contact the sales department at http://www.sencha.com/contact. */ /** * Represents an Ext JS 4 application, which is typically a single page app using a {@link Ext.container.Viewport Viewport}. * A typical Ext.app.Application might look like this: * * Ext.application({ * name: 'MyApp', * launch: function() { * Ext.create('Ext.container.Viewport', { * items: { * html: 'My App' * } * }); * } * }); * * This does several things. First it creates a global variable called 'MyApp' - all of your Application's classes (such * as its Models, Views and Controllers) will reside under this single namespace, which drastically lowers the chances * of colliding global variables. * * When the page is ready and all of your JavaScript has loaded, your Application's {@link #launch} function is called, * at which time you can run the code that starts your app. Usually this consists of creating a Viewport, as we do in * the example above. * * # Telling Application about the rest of the app * * Because an Ext.app.Application represents an entire app, we should tell it about the other parts of the app - namely * the Models, Views and Controllers that are bundled with the application. Let's say we have a blog management app; we * might have Models and Controllers for Posts and Comments, and Views for listing, adding and editing Posts and Comments. * Here's how we'd tell our Application about all these things: * * Ext.application({ * name: 'Blog', * models: ['Post', 'Comment'], * controllers: ['Posts', 'Comments'], * * launch: function() { * ... * } * }); * * Note that we didn't actually list the Views directly in the Application itself. This is because Views are managed by * Controllers, so it makes sense to keep those dependencies there. The Application will load each of the specified * Controllers using the pathing conventions laid out in the [application architecture guide][mvc] - * in this case expecting the controllers to reside in `app/controller/Posts.js` and * `app/controller/Comments.js`. In turn, each Controller simply needs to list the Views it uses and they will be * automatically loaded. Here's how our Posts controller like be defined: * * Ext.define('MyApp.controller.Posts', { * extend: 'Ext.app.Controller', * views: ['posts.List', 'posts.Edit'], * * //the rest of the Controller here * }); * * Because we told our Application about our Models and Controllers, and our Controllers about their Views, Ext JS will * automatically load all of our app files for us. This means we don't have to manually add script tags into our html * files whenever we add a new class, but more importantly it enables us to create a minimized build of our entire * application using the Ext JS 4 SDK Tools. * * For more information about writing Ext JS 4 applications, please see the * [application architecture guide][mvc]. * * [mvc]: #!/guide/application_architecture * * @docauthor Ed Spencer */ Ext.define('Ext.app.Application', { extend: 'Ext.app.Controller', requires: [ 'Ext.ModelManager', 'Ext.data.Model', 'Ext.data.StoreManager', 'Ext.tip.QuickTipManager', 'Ext.ComponentManager', 'Ext.app.EventBus' ], /** * @cfg {String} name The name of your application. This will also be the namespace for your views, controllers * models and stores. Don't use spaces or special characters in the name. */ /** * @cfg {Object} scope The scope to execute the {@link #launch} function in. Defaults to the Application * instance. */ scope: undefined, /** * @cfg {Boolean} enableQuickTips True to automatically set up Ext.tip.QuickTip support. */ enableQuickTips: true, /** * @cfg {String} defaultUrl When the app is first loaded, this url will be redirected to. */ /** * @cfg {String} appFolder The path to the directory which contains all application's classes. * This path will be registered via {@link Ext.Loader#setPath} for the namespace specified in the {@link #name name} config. */ appFolder: 'app', /** * @cfg {Boolean} autoCreateViewport True to automatically load and instantiate AppName.view.Viewport * before firing the launch function. */ autoCreateViewport: false, /** * Creates new Application. * @param {Object} [config] Config object. */ constructor: function(config) { config = config || {}; Ext.apply(this, config); var requires = config.requires || []; Ext.Loader.setPath(this.name, this.appFolder); if (this.paths) { Ext.Object.each(this.paths, function(key, value) { Ext.Loader.setPath(key, value); }); } this.callParent(arguments); this.eventbus = Ext.create('Ext.app.EventBus'); var controllers = Ext.Array.from(this.controllers), ln = controllers && controllers.length, i, controller; this.controllers = Ext.create('Ext.util.MixedCollection'); if (this.autoCreateViewport) { requires.push(this.getModuleClassName('Viewport', 'view')); } for (i = 0; i < ln; i++) { requires.push(this.getModuleClassName(controllers[i], 'controller')); } Ext.require(requires); Ext.onReady(function() { for (i = 0; i < ln; i++) { controller = this.getController(controllers[i]); controller.init(this); } this.onBeforeLaunch.call(this); }, this); }, control: function(selectors, listeners, controller) { this.eventbus.control(selectors, listeners, controller); }, /** * Called automatically when the page has completely loaded. This is an empty function that should be * overridden by each application that needs to take action on page load * @property launch * @type Function * @param {String} profile The detected {@link #profiles application profile} * @return {Boolean} By default, the Application will dispatch to the configured startup controller and * action immediately after running the launch function. Return false to prevent this behavior. */ launch: Ext.emptyFn, /** * @private */ onBeforeLaunch: function() { if (this.enableQuickTips) { Ext.tip.QuickTipManager.init(); } if (this.autoCreateViewport) { this.getView('Viewport').create(); } this.launch.call(this.scope || this); this.launched = true; this.fireEvent('launch', this); this.controllers.each(function(controller) { controller.onLaunch(this); }, this); }, getModuleClassName: function(name, type) { var namespace = Ext.Loader.getPrefix(name); if (namespace.length > 0 && namespace !== name) { return name; } return this.name + '.' + type + '.' + name; }, getController: function(name) { var controller = this.controllers.get(name); if (!controller) { controller = Ext.create(this.getModuleClassName(name, 'controller'), { application: this, id: name }); this.controllers.add(controller); } return controller; }, getStore: function(name) { var store = Ext.StoreManager.get(name); if (!store) { store = Ext.create(this.getModuleClassName(name, 'store'), { storeId: name }); } return store; }, getModel: function(model) { model = this.getModuleClassName(model, 'model'); return Ext.ModelManager.getModel(model); }, getView: function(view) { view = this.getModuleClassName(view, 'view'); return Ext.ClassManager.get(view); } });


The Sokli basin in north-east Finland (67°48′ N 29°18′ E, 220 m a.s.l.) is one of the few terrestrial sites in northern Europe where Eemian sediments have been found preserved in a stratigraphic sequence, with overlying glacial till beds and non-glacial sediments of Weichselian age. The Sokli sequence has escaped major glacial erosion due to non-typical bedrock conditions. The Eemian diatom gyttja deposit at Sokli stretches as a marker horizon near the base of the unconsolidated sediment infill. Its interglacial pollen content was first noted in the 1970s and was correlated with the Eemian. Detailed stratigraphic studies on the overlying Weichselian sediment sequence, combined with absolute dating control, have supported the Eemian age assignment 11, 21, 22. The diatom gyttja bed is bracketed by thermoluminescence and infrared stimulated luminescence dating to >ca. 110 and <ca. 150–180 kyr 21, and by optically stimulated luminescence dating on quartz (using the single-aliquot regeneration dose protocol) to >ca. 95 kyr 22, 54.


Input text
Length:
0
Summary
NLTK
Time:
0
s
Length:
0
BERT
Time:
0
s
Length:
0
T5
Time:
0
s
Length:
0
LSTM
Time:
0
s
Length:
0
BiLSTM
Time:
0
s
Length:
0
CNN
Time:
0
s
Length:
0


ShortBoard
ShortBoard allows you to easily sort, view and filter shortwave broadcast schedules.
Screenshots
Main Interface, Add Broadcast to iCal
Requirements
ShortBoard has only been tested on Intel Mac OS X 10.6 (although it should work on 10.5)
Downloads
Download ShortBoard .92 Beta for Mac X 10.6 (1.01 MB)
Source
The code for ShortBoard is released under an MIT License. You can download the source from the project page.
Release History
.92 Beta (June 8, 2010)
- Fixed issue where data file could not be imported if encoded in MacRoman.
- File > Clear Cache Menu renamed to Clear Data.
- Clear Data menu items now also clears current view of data.
- Added Keyboard Shortcut for File > Import (CMD-I).
.91 Beta (December 23, 2008)
.90 Beta (December 17, 2008)
- Added ability to add a broadcast to iCal
- Various bug fixes and optimizations
.85 Beta (December 2, 2008)
- Initial Public Beta Release
- Import schedule data from file
- Filter schedules based on schedule fields
- Show current broadcasts
- Display Current time in UTC
Known Issues
If you have problems importing the data file, make sure that the file does not contain any HTML markup at the end of it.
Installation
The application is installed like any other Mac application. Simply mount the downloaded DMG file, copy the ShortBoard.app file to your Applications folder, and then launch from that folder.
The appleblog has more information on how to install applications from a DMG file on Mac.
Feedback and Bugs
Please submit any feedback and / or bugs here.
About
ShortBoard was created by Mike Chambers.
Icons by De Monsters
http://www.deMonsters.com
You can view my Shortwave / DX blog posts here.


Stephanie Coleman & Christina Cannito
BK-001, yay.
NOT COOL: choppy, laggy, jerky animations
COOL: smooth, seamless animations
BAD: JS animations run on browser's main thread
Graphical Processing Unit: specialized graphics rendering chip
Offload heavy lifting to the GPU
Applying transitions to an element on hover.
Basic hover:
Hover with transition-property and transition-duration:
Adding transition to the border radius:
Setting the transition on the release of the rollover, bringing the element back to its original state:
Translate, rotate, skew, and scale
Image in original state
45 degree angle
Scale on the x axis:
MORE INFO: animationswithcss.com


In this rotation, we learned the basics of laser cutting and engraving different objects. I made a bookmark, a water bottle, and a clock.
The first thing that I made was a bookmark. I first had to measure the leather bookmark and create an image to laser engrave. The laser engraver can only recognize black and white, so even though my original image had colors, they did not appear on the final product. The process for making the bookmark was very quick, and it printed in a short period of time because of its small size.
Image 1: The original file for the bookmark (optimized for size).The secpmd thing that I made was a water bottle. I first had to measure it in order to create my design. When I made my design in CorelDRAW, I had to rotate everything 90 degrees so that it would engrave the way I wanted to. The laser engraving literally burns the paint away, which is how the design can appear. Overall I am very happy with the way the bottle turned out and I will be using it to store my drinks in the future.
Image 3: The original file for the water bottle (optimized for size).The third and final thing that I made was a clock. First I had to find the dimensions of the vinyl record that we were turning into clocks. I then had to make my design in CorelDRAW, remembering to make everything a hairline so that it would be cut out instead of engraved. I laser cut two cardboard prototypes before making my final clock so that it would have no mistakes. In the end, it turned out very nice and precise, and is now hanging in the WIC.
Image 6: The original file for the clock (optimized for size).


This screen provides access to live CANBUS traffic on the CANBUS network. It also allows for messages to be manually transmitted through the CANdapter onto the network. This screen requires a CANdapter to utilize.
CANBUS traffic can be logged to disk by using the "Log Messages to Disk' option. If this is selected, the utility will prompt the user for a destination folder for the logfile when the "Start' button is pressed. The log will be saved in the destination folder as a zipped archive.
Note: A red background on a cell indicates that particular cell contents have changed since the live CANBUS viewing was started.
| < Open Cell Voltages Button | Histogram And Events > |


Templates Authoring
The documentation is a Work In Progress, feel free to ask details, missing info or to submit content (via Pull Request).
Rules
-
The minimal template is an empty dir.
-
a sample template and its expected output (on empty folder) is available at tests/test_1.
-
file priority (what file will be used if they have the same destination path)
existing file file with source extension .ffizer.hbs (and no {{...}} in the source file path) file with identical source file name (and extension) file with {{...}} in the source file path
A 5 minutes tutorial
-
create the folder with the template
mkdir my-template cd my-template
-
add file that will be copied as is
cat > file0.txt <<EOF I am file0. EOF
-
add a template file that will be "rendered" by the handlebars engine
- the file should have the .ffizer.hbs extension,
- the extension .ffizer.hbs is removed from the generated filename
- Handlebars templating language
```sh
cat > file1.txt.ffizer.hbs <<EOF
I am file1.txt of {{ project }}.
EOF
```
-
add a ffizer configuration file (.ffizer.yaml)
- to list variables
- to list pattern to ignore
variables: - name: project default_value: my-project ignores: - .git # exclude .git of the template host
-
add a file with a name that will be "rendered" by the handlebars engine
- the file should have {{ variable }},
- Handlebars templating language
cat > '{{ project }}.txt' <<EOF I am a fixed content file with rendered file name. EOF
Configuration
The configuration is:
- optional
- stored into a yaml file named
.ffizer.yaml
at the root of the template. - sections (top level entry) of the yaml are optionals
variables:
- name: project
default_value: my-project
ignores:
- .git # exclude .git of the template host
Sections
variables
List the variables usable into the .ffizer.hbs
template file.
Variables are defined by:
-
name
: (required) the name of the variable. -
default_value
: a suggested value, the value is a string and supporthbs
templating. -
ask
: the sentence use to prompt user to set the value of the variable. -
hidden
: the variable is not shown to the user, the value is set to default_value. Could be useful to cache shared (structured) value. (default to false) -
select_in_values
: for non-empty list, ask the user to select a value in the list. The list can be a regular yaml list or a string (evaluated as a yaml list of string).default_value
could be combined to pre-select a value in the list. After selection a second variable with same name plus suffix__idx
is set with the index of the selected value in the list.variables: - name: k2 select_in_values: - vk21 - vk22 - name: k1 select_in_values: [ "vk11", "vk12" ] - name: k3 select_in_values: '[ "vk31", "vk32" ]' - name: k4 select_in_values: '{{ do_stuff }}'
Variables definition are prompt in the order of the list, and with the prompt defined by ask
(if defined, else name
)
variables:
- name: project_name
default_value: "{{ file_name ffizer_dst_folder }}"
Every variables are mandatory, to allow empty value default_value
should be an empty string.
- name: foo
default_value: ""
ignores
List patterns of file path (relative to root of the template) that should be ignored when search for file to be copied or rendered from the template into the destination.
To ignore .git folder from the template (useful for template hosted on root of a git repository)
ignores:
- .git/*
- .git # exclude .git of the template host
imports
It is possible to imports templates into a template. It is useful to reuse templates or to compose template from other template.
The imports
section is a list of templates:
imports:
- uri: "git@github.com:ffizer/templates_default.git"
rev: "master"
subfolder: "gitignore_io"
The order in the list define:
- the order to ask variables (and to find variables definition): first the variable of the root template, then the variables of the first import, the second import,... then the variables of the first import of the first imports.
- the order of files: first the file of the root template, then the files from the first import,... (same as variable)
The first variable definition found (following the order) is keep. So a higher level variables definition override the lower level. In the example below, the ask
and the default_value
override the definition of gitignore_what
into the imported template.
variables:
- name: gitignore_what
default_value: rust,git,visualstudiocode
ask: Create useful .gitignore (via gitignore.io) for
imports:
- uri: "git@github.com:ffizer/templates_default.git"
rev: "master"
subfolder: "gitignore_io"
use_template_dir
By default, content of the template is mixed with its optional metadata (.ffizer.yaml
, ...). So it means that if you have a README.md
both as the template description and as template content (a README.md to generate), you have to follow this layout:
+- README.md.ffizer.hbs (or README.md.ffizer.raw)
+- README.md
+- .ffizer.yaml
And to add into .ffizer.yaml
ignores:
- README.md
Or you can choose to move the template content under a template
folder:
+- template
| +- README.md.ffizer.hbs (or README.md)
+- README.md
+- .ffizer.yaml
And to add into .ffizer.yaml
use_template_dir: true
The predefined variables
Some variables are predefined and they can be used into .ffizer.yaml
into the ignores
section or default_value
via handlebars expression.
ffizer_dst_folder
contains the value from cli arg--destination
ffizer_src_rev
contains the value from cli arg--rev
ffizer_src_uri
contains the value from cli arg--source
The following sample combine a helper function file_name
with ffizer_dst_folder
.
variables:
- name: project_name
default_value: "{{ file_name ffizer_dst_folder }}"
Template Helpers / Functions
Helpers extend the template to generate or to transform content.
The helpers from handlebars_misc_helpers are included. But if you need more helpers, ask via an issue or a PR.
To use an helper:
{{ helper_name argument}}
To chain helpers, use parenthesis:
{{ to_upper_case (to_singular "Hello foo-bars") }}
// -> "BAR"
see Handlebars templating language
String transformation
for the same input: "Hello foo-bars"
| helper_name | example out |
|---|---|
to_lower_case | "hello foo-bars" |
to_upper_case | "HELLO FOO-BARS" |
to_camel_case | "helloFooBars" |
to_pascal_case | "HelloFooBars" |
to_snake_case | "hello_foo_bars" |
to_screaming_snake_case | "HELLO_FOO_BARS" |
to_kebab_case | "hello-foo-bars" |
to_train_case | "Hello-Foo-Bars" |
to_sentence_case | "Hello foo bars" |
to_title_case | "Hello Foo Bars" |
to_class_case | "HelloFooBar" |
to_table_case | "hello_foo_bars" |
to_plural | "bars" |
to_singular | "bar" |
Http content
Helper able to render body response from an http request.
| helper_name | usage |
|---|---|
http_get | http_get "http://hello/..." |
gitignore_io | gitignore_io "rust" |
Path extraction
Helper able to extract (or transform) path (defined as string).
for the same input: "/hello/bar/foo.txt"
| helper_name | sample output |
|---|---|
| file_name | "foo.txt" |
| parent | "/hello/bar" |
| extension | "txt" |
Environment variable
Helper able to get environment variables.
| helper_name | usage |
|---|---|
| env_var | env_var "HOME" |


Preparation time
less than 30 mins
Cooking time
1 to 2 hours
Serves
Serves 4
Dietary
Make the best of autumnal produce with this scrumptious pudding that can be made well in advance. You will need a baking tray that snugly fits the pears and apples, and four large glasses or glass bowls.
Preheat the oven to 180C/350F/Gas 4. Mix the pears, lemon juice and 1½ tablespoons of the caster sugar in a bowl. Spread the pears out on the baking tray, cover with aluminium foil and place in the oven. After 10 minutes, add the apples, cover with the foil again and return to the oven for 30 minutes. Crush the fruit with a fork, set aside to cool then fold in the blackberries.
To make the crumble, place both the flours in a mixing bowl with the butter and brown sugar and rub together with your fingertips until the mixture resembles breadcrumbs. Spread out on a baking tray lined with greaseproof paper and place in the oven for 15 minutes. Remove the tray from the oven and set aside to cool.
Add the remaining three tablespoons of caster sugar and the nuts to a non-stick saucepan and cook over a gentle heat for 5-6 minutes, swirling the pan regularly, until the sugar has melted and coated the nuts evenly and the mixture is golden-brown. Tip the mixture onto a baking tray lined with greaseproof paper and set aside to cool. Once cooled, crush the nuts into a coarse powder.
For the cream, place all the ingredients in a large mixing bowl and whisk to soft peaks, taking care not to over-whisk.
To assemble, spoon two thirds of the crumble into the bottom of the serving glasses. Cover with two thirds of each of the fruit mixture, cream and nuts. Add the remaining crumble followed by the remaining third of the fruit and cream. Scatter over the remaining nuts and serve at once, or chill for a few hours. If you are serving the dish chilled, scatter over the nuts at the last minute.


Please fill out this field.
Make it as long and as crazy as you'd like
Drag and drop files here from your computer


|
Back to the Windows Installation page. |
While some of the following packages might not be absolutely required, they are likely to prove useful. I recommend that you install:
I also recommend that you install joe, a friendly text editor with a Word Perfect-like interface (Borland IDEs also use this interface). It can be downloaded by following a link from the Cygwin home page.


W-Hat.com provides a couple of useful services for LSL developers:
In the past, we also offered:
The group became inactive and faded into obscurity as its members grew up. In 2011 the owner of the group and land was quietly banned from Second Life.
Some of us still hang out in #sl
on irc.synirc.net
, but almost
nobody still plays Second Life.
Yes, please do. Everything on this site is free and open source and all the services are free to use and abuse in any manner you see fit.
<EMAIL_ADDRESS>postcards.zip 5779 files, 1.0 GB
Enter as many names as you want, separated by anything other than spaces or periods.
Paste keys in this box to add them to the database. Formatting and extraneous text don't matter; anything that doesn't look like a UUID will be ignored.
Looks up a name. <name> may be in user.name or resident name format. If the name is found, returns status 200 and the UUID. If it is not found, returns status 404 and NULL_KEY.
| Request | Response | ||
|---|---|---|---|
| Method | URL | Status | Body |
| GET | /name2key/Masakazu%20Kojima | 200 | a27b84f0-2757-4176-9579-43a181d4a5a0 |
| GET | /name2key/goVeRnoR.linDEN | 200 | 3d6181b0-6a4b-97ef-18d8-722652995cf1 |
| GET | /name2key/a | 404 | 00000000-0000-0000-0000-000000000000 |
| GET | /name2key/username.a.a.a | 400 | Invalid name |
Looks up multiple names at once. <names> should be a list of up to 50 names in user.name or resident name format separated by anything that is unambiguous. Returns status 200 and a list of names exactly as input and corresponding UUIDs separated by newlines. If a key was not found the UUID will be NULL_KEY.
| Request | Response | ||
|---|---|---|---|
| Method | URL | Status | Body |
| GET | /name2key?names=Masakazu%20Kojima,governor.linden,username,a | 200 | Masakazu Kojima a27b84f0-2757-4176-9579-43a181d4a5a0 governor.linden 3d6181b0-6a4b-97ef-18d8-722652995cf1 username 3223a4e4-01c6-44f8-9aa1-df790e02aa93 a 00000000-0000-0000-0000-000000000000 |
| GET | /name2key/?names=username.a.a.a | 200 | username.a 00000000-0000-0000-0000-000000000000 a.a 00000000-0000-0000-0000-000000000000 |
Look up a UUID. If found, returns 200 and the name in canonical user.name format. If not found, returns 404 and an empty string. Note this may attempt to resolve keys via world.secondlife.com and in-world search and may wait up to 60 seconds before returning a negative response.
| Request | Response | ||
|---|---|---|---|
| Method | URL | Status | Body |
| GET | /key2name/a27b84f0-2757-4176-9579-43a181d4a5a0 | 200 | masakazu.kojima |
| GET | /key2name/3223a4e4-01c6-44f8-9aa1-df790e02aa93 | 200 | username |
| GET | /key2name/a27b84f0-2757-4176-9579-43a181d4a5a1 | 404 | |
| GET | /key2name/a27b84f0-2757-4176-9579-43a181d4a5a | 404 | (undefined) |
Add keys to the database. The request body should contain one or more UUIDs separated by anything (or nothing). Keys will be queued up for resolution and an estimate of the number of new keys will be returned. Always returns status 200.
Add keys to the database. <keys> should contain one or more UUIDs separated by anything (or nothing). Keys will be queued up for resolution and an estimate of the number of new keys will be returned. Always returns status 200. This API only exists to preserve compatibility with older scripts, and should not be used in new scripts.
Looks up a name in the database or SL search. Name may be in user.name or resident name format. If the name is found, returns status 200 and the UUID. If it is not found, returns status 200 and NULL_KEY. When terse=1 is not specified, result UUIDs will be prefixed by the name exactly the same as input, and the string "None found" will be returned instead of NULL_KEY. This API only exists to preserve compatibility with older scripts, and should not be used in new scripts.
| Request | Response | ||
|---|---|---|---|
| Method | URL | Status | Body |
| GET | /name2key?name=Masakazu%20Kojima | 200 | Masakazu Kojima a27b84f0-2757-4176-9579-43a181d4a5a0 |
| GET | /name2key/?name=goVeRnoR.linDEN | 200 | goVeRnoR.linDEN 3d6181b0-6a4b-97ef-18d8-722652995cf1 |
| GET | /name2key/?name=goVeRnoR.linDEN&terse=1 | 200 | 3d6181b0-6a4b-97ef-18d8-722652995cf1 |
| POST | /name2key/?name=a | 200 | None found |
| POST | /name2key/?name=a&terse=1 | 200 | 00000000-0000-0000-0000-000000000000 |
string NAME = "Masakazu Kojima"; // name to look up string URL = "http://w-hat.com/name2key"; // name2key url key reqid; // http request id default { state_entry() { reqid = llHTTPRequest( URL + "/" + llEscapeURL(NAME), [], "" ); } http_response(key id, integer status, list meta, string body) { if ( id != reqid ) return; if ( status == 499 ) llOwnerSay("name2key request timed out"); else if ( status == 400 ) llOwnerSay("Invalid name: " + NAME); else if ( status == 404 ) llOwnerSay("No key found for " + NAME); else if ( status != 200 ) llOwnerSay("the internet exploded!!"); else llOwnerSay(NAME + "'s key is: " + body ); } }
There is no reason to worry about somebody else having your key. It is not a secret, it is just an identifier that LSL scripts use to interact with you.
Since Second Life introduced usernames, the concept of what a name is has gotten complicated. The service understands four types of names:
Resident Names are the original format. Everybody has a first and last name, separated by a space. Accounts created after the switch to usernames have the last name Resident. Examples: Masakazu Kojima, Governor Linden, Username Resident
Usernames are the new format. The first and last name are separated by a period (.), and the last name is optional if it is "resident". "username.resident" and "username" are equivalent. Examples: Masakazu.Kojima, governor.linden, username.resident, username
Canonical usernames are what this database stores. They are the same as usernames, exept they are always lowercase, and anything that can be omitted is. "username.resident" is not a valid canonical name. Examples: masakazu.kojima, governor.linden, username
A display name is freeform text that can be entered by a user and is displayed instead of their username. This is used in search results and profile pages. The actual account name is always appended in parentheses. Examples: Governor Linden (masakazu.kojima), Plastic Duck (username)
These files are updated daily at 08:00 UTC. Names are in Title Case resident name format, and the file is sorted by UUID.
lslint is a tool to check the syntactic and semantic validity of Second Life LSL scripts.
Releases and source are available on Makopoppo's GitHub.
Unfortunately, this feature is no longer available.
API documentation is a work-in-progress and the web interface is currently unavailable. They will be restored as soon as possible.
httpdb provides free, persistent, off-site storage for Second Life LSL scripts via llHTTPRequest. You can store up to 250kb of data in the form of key/value pairs, and read or write the data from any script. You can share your data with other users, protect it with passwords, browse and manage your data on the web, and download backups.
There is no need to register to use httpdb, you can just start saving and retrieving data at any time.
If 250kb is not enough for your purposes, you can request more by emailing<EMAIL_ADDRESS>You are also welcome to use multiple accounts to store your data.
Retrieve a record stored in HTTPDB.
| start|s | Drop specified number of leading bytes from the response. |
|---|---|
| password|p | The password required to access this record. |
| Request | Response | ||
|---|---|---|---|
| Method | URL | Status | Body |
| GET | /httpdb/blah | 404 | |
| GET | /httpdb/some/path | 200 | some data |
| GET | /httpdb/some/path?s=2 | 200 | me data |
| GET | /httpdb/protected | 403 | |
| GET | /httpdb/protected?password=secret | 200 | top secret data |
List all stored paths starting with specified prefix.
| start|s | Drop specified number of leading bytes from the response. |
|---|
| Request | Response | ||
|---|---|---|---|
| Method | URL | Status | Body |
| GET | /httpdb/hello?mode=list | 200 | |
| GET | /httpdb/user_?mode=list | 200 | user_1 user_2 |
| GET | /httpdb/user_?mode=list&start=4 | 200 | _1 user_2 |
Create or overwrite a record in HTTPDB.
| mode|m | How to handle existing data. No effect when creating new record.
|
|---|---|
| password|p | The password required to update this record. TODO: explain |
| read_password|readpass|rp | A password that will be required to read this record in the future. If the record already exists, setting this requires admin permission. |
| write_password|writepass|wp | A password that will be required to write to this record in the future. If the record already exists, setting this requires admin permission. |
| Request | Response | |||
|---|---|---|---|---|
| Method | URL | Body | Status | Body |
| PUT | /httpdb/test | Hello | 201 | 249995 |
| PUT | /httpdb/test?mode=append | World | 200 | 249989 |
Delete a record in HTTPDB.
| password|p | The password required to update this record. TODO: explain |
|---|
| Request | Response | ||
|---|---|---|---|
| Method | URL | Status | Body |
| DELETE | /httpdb/test | 200 | 250000 |
| DELETE | /httpdb/test | 404 |
Change the read and/or write password on a record.
| password|p | Current admin password for owner of record. |
|---|---|
| read_password|readpass|rp | New password to require for future reads of record. |
| write_password|writepass|wp | New password to require for future writes to record. |
| Request | Response | ||
|---|---|---|---|
| Method | URL | Status | Body |
| POST | /httpdb/test?wp=write | 403 | |
| POST | /httpdb/test?wp=write&p=admin | 200 |
Get remaining free space.
Get count of space used.


Posted:
Thu Jun 14, 2007 1:27 am
by ziggman
OMG FAWK,
3 hours designing a town.... and poof comp Randomly shuts down. and all is lost!
 I opened the editor back up... and instead of loading my f1... I saved a blank map to it... lol whooops
Posted:
Thu Jun 14, 2007 4:36 pm
by Karl G.
AHHH I'm sorry guys! I'll be changing the saving/loading procedure asap.
Posted:
Thu Jun 14, 2007 6:11 pm
by a_link_to_the_past
oh its cool Karl.... don't worry about it if you don't have the time.


Autocomplete
<mat-autocomplete>
Input text can be used with autocomplete to help users who have limited literacy or who write in a foreign
language.
For example, autocomplete can:
Suggest input as it’s typed (refreshing suggestions with each keystroke)
Fill a field with default input text
Pressing the return button accepts the current autocomplete suggestion.


YEP
You good for now homes. Just keep watching the news.
https://www.cdc.gov/ecoli/2018/o157h7-11-18/index.html


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Object realtimeweb.earthquakeservice.json.JsonEarthquakeService
public class JsonEarthquakeService
Used to get data as a raw string.
| Field Summary | |
|---|---|
protected boolean |
local
|
| Constructor Summary | |
|---|---|
protected |
JsonEarthquakeService()
**For internal use only!** Protected Constructor guards against instantiation. |
protected |
JsonEarthquakeService(InputStream localData)
|
| Method Summary | |
|---|---|
void |
connect()
Establishes a connection to the online service. |
void |
disconnect()
Establishes that Business Search data should be retrieved locally. |
ClientStore |
getClientStore()
**For internal use only!** The ClientStore is the internal cache where offline data is stored. |
String |
getEarthquakes(Threshold threshold,
History time)
Retrieves information about earthquakes around the world. |
String |
getEarthquakes(Threshold threshold,
History time,
boolean recording)
Retrieves information about earthquakes around the world, and prints both the input URL and the output data. |
void |
getEarthquakes(Threshold threshold,
History time,
JsonGetEarthquakesListener callback)
Retrieves information about earthquakes around the world. |
static JsonEarthquakeService |
getInstance()
Retrieves the singleton instance. |
static JsonEarthquakeService |
getInstance(InputStream localFile)
Retrieves the singleton instance, and if it doesn't exist, sets it to use the given local data stream. |
| Methods inherited from class Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected boolean local
| Constructor Detail |
|---|
protected JsonEarthquakeService()
protected JsonEarthquakeService(InputStream localData) throws IOException
IOException
| Method Detail |
|---|
public static JsonEarthquakeService getInstance()
public void connect()
connect
in interface AbstractEarthquakeService
public void disconnect()
disconnect
in interface AbstractEarthquakeService
public ClientStore getClientStore()
public String getEarthquakes(Threshold threshold, History time, boolean recording) throws EarthquakeException
threshold
- What kind of earthquakes to report. Note that this is a
minimum - earthquakes at or ABOVE this level will be reported!time
- The historical time range of earthquakes to report.recording
- Whether or not the inputs and outputs should be printed to stdin.
EarthquakeException
public String getEarthquakes(Threshold threshold, History time) throws EarthquakeException
threshold
- What kind of earthquakes to report. Note that this is a
minimum - earthquakes at or ABOVE this level will be reported!time
- The historical time range of earthquakes to report.
EarthquakeException
public void getEarthquakes(Threshold threshold, History time, JsonGetEarthquakesListener callback)
threshold
- What kind of earthquakes to report. Note that this is a
minimum - earthquakes at or ABOVE this level will be reported!time
- The historical time range of earthquakes to report.callback
- The listener that will be given the data (or error).public static JsonEarthquakeService getInstance(InputStream localFile) throws IOException
localFile
- A data stream that will be used instead of live data.
IOException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


This plugin can add a horizontal scroll ui in the form of buttons, one to scroll left and the other to scroll right, to any "unordered" list,this can also be implemented for jquery ui tabs and more
| proportion | The size of slidable area as a decimal or percentage.NB pixels can be used but it would be converted to a decimal that is proportional to parent size. |
| Space | The space between button and slider area,defualt is auto in which plugin will determine the space based on padding and margin values |
| selection | The selector string or dom object of the current selected li.NB The plugin does not assign any id or class to li's on any trigger the user will have to define those functions |
| html | The html to be added to left and right button.example html:{buttonLeft:'left',buttonRight:'right'} |
| bspace | The initial space between buttons and list.example bspace:10. The (integer)space is converted to a percentage of parent width. |
| background | For UI implementations a background is appended to parent dom, this background copies the background properties of the list. If you desire to change the properties of this background it can be done by setting the css and position of background.NB both must be set also there only exist one position option "absoluteTop". example background:{position:'',css:{background:'red'}} or :background{position:'absoluteTop',css:{background:'red'}} |
| reset | Reset position of ul to left 0 |
| getLast | Get last visible item still in view. |
| getFirst | Get first visible item still in view. |
| isOver | Boolean is there an element beyond the view of scroller |
| isUnder | Boolean is there an element below the view of scroller |
| refit | Place (selection) item in view,by default the last element is placed in view |
| resize | Resize scroller according to parent container only if parent container size increase |
| forceResize | Resize scroller according to parent container. |
| update | Update list size according to parent container |
| repositionButton | Realign buttons with list |
Example 1.
This example has no "wrapper" div so the buttons are positioned with respect to body in this case. Try seeing the effect it has by resizing the window.This can be rectified by:$('#test').scroller('repositionButton');
Example 2
This example has a wrapper and buttons remain in place.


Stand By Me Chad'z rating: *** (out of 4 = good) 1986, R, 87 minutes [1 hour, 27 minutes] [drama] starring; Will Wheaton (Gordie), River Phoenix (Chris), Corey Feldman (Teddy), Jerry O'Connell (Vern), written by Raynold Gideon, Bruce A. Evans, produced by Raynold Gideon, Bruce A. Evans, Andrew Scheinman, directed by Rob Reiner, based on the novella "The Body" by Stephen King.
We all had our best friends with whom we went on great adventures as children, but did we experience a loss of innocence with them? "Stand By Me" is a good movie that tires, perhaps a tad too hard, to answer that question by combining a sense of youth adventure with the seriousness of the loss of innocence.
The films stars Will Wheaton as Gordie LaChance, a typical kid growing up in a small town in the 1950s, which makes for a real American atmosphere. Gordie and his three best friends have a secret club of sorts, but each member is quite different. There is Chris (Phoenix), the leader of the gang and part-time troublemaker; Teddy (Feldman), the hyper kid with an over-active imagination; and Vern (O'Connell), the geeky fat kid they all pick on. The boys are all 12 years old, but they seem a rather mature for their age as they constantly smoke and swear like old men.
One day Vern tells the guys he overheard his brother figure out the location of a missing child, who everyone assumes is dead and the town is upset over this. They all become excited when they realize they could become heroes if they find the boy's body. They set out on a long hike through the woods and mountains, covering over 20 miles, but they consider it an unrealistic goal. But the film is not about finding the body, it's about the journey itself, and this provides for the good sense of innocence.
Meanwhile, a group of bullies who are much older but less mature than Gordie and his friends have come up with the same plan. The entire film is essentially a study to compare and contrast the two sets of characters and what they represent: Gordie's gang = innocence and adventure; the bullies = being brutal and desensitized for sake of doing so.
Most of the film depicts Gordie, Chris, Teddy, and Vern's quest and many things happen to them on the way, both funny and serious. They get into a fight with a junkyard owner and his dog, they out-run a train on a bridge, they tell stories of their future sexual conquests, and they have a traumatic experience with leeches. No plot forms, instead, everything is just characterization, dialogue, and camaraderie which makes for a good, lighthearted story. The only problem is sometimes it goes overboard and becomes sappy. All the boys break down in tears at least once as they talk about something bad that has happened to them. They realize they're growing up, and when they finally see the dead body their lives are changed instantly.
"Stand By Me" is a good coming-of-age film, but as hard as it tries to be more than that, that's really all it is.
Please visit Chad'z Movie Page @ http://members.aol.com/ChadPolenz E-mail<EMAIL_ADDRESS>(C)1997 Chad Polenz
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


This is a patch release of Google Play Music Desktop Player
Here is a quick run down of all things that have changed.
- NEW: Option to invert the tray icon color on linux
- NEW: Added Czech and French translations
- NEW: Volume events get sent to the Playback and webSocket API
- FIX: Chromecast track progress is now updated correctly
- FIX: The app would hang for 2 minutes on some systems. Now it doesn't
- FIX: Certain crashes when reloading
- FIX: PlaybackAPI JSON file now backs off if it fails to write the file
- FIX: Crash when generating a crash report :/
- FIX: Go To URL now works with shared playlists
- FIX: React performance boosts
Thanks to all the people who have helped with these features and fixes.


Hold shift while holding a button to generate a bunch of words; hold control/meta to clear. Add space after each word (for copying and pasting into one line).
This alternates between a "vowel" and a "consonant" and tries to add extra letters to them as well and shtuff.
A much simpler, probably easier to pronounce, version of method 1.
Method 2 but using the Eyo alphabet (aeiou jknprst). Hopefully it's easier to pronounce.
Method 1 but with more practical consonant combos.
Making ching-chong Chinese word stereotypes taking advantage of pinyin.
Alternates between consonant and vowel with no diphthongs nor consonant clusters. I've taken one of the orders from Wikipedia (eotha sinrd luymw fgcbp kvjqxz) and added each consonant from most used to least and stopped when the words started looking weird (letter c).


Uploader Example: Single File Upload with Progress Tracking and a Sprite-skinned Button
File selected:
Percent uploaded: