Algorithms
A great deal of research has been performed on applying deep learning to object detection tasks. The resulting methods have proved to be quicker and more accurate than traditional computer vision techniques, however adoption of these algorithms for laboratory usage has lagged due to the difficulty in acquiring the large, labeled datasets necessary for training neural networks. We will be attempting to determine the efficacy of generating labeled training data from a simulation, and using it to detect defects in real-world data. Ideally, we would also like to create a simple pipeline allowing the detection of other objects to be quickly automated.
For reference, the images we are attempting to annotate look like the one below. Defects are the points marked by red dots.
Sample Defect Image
The three most popular algorithms for object detection are RCNN (and its successors), Single Shot Detectors (SSD), and YOLO. Although all three approaches make use of deep neural networks, their methods of finding bounding boxes differ greatly. It is important to understand these differences, so I will provide a brief summary of each. R-CNN – Region Convolutional Neural network. Most modern version is known as Faster R-CNN. This algorithm uses a search function to find potential candidate objects to run object recognition on. Slower, but accurate. Unfortunately, since this algorithm depends on only running the neural network on likely object candidates detected in a untrainable search algorithm, it will most likely perform poorly at detecting objects that don’t fit traditional ideas of what constitutes an object.
SSD- Single Shot (multibox) Detector. This algorithm works by creating multiple default bounding boxes over the entirety of an image. A neural network scores the bounding boxes and provides a prediction for how to adjust the regions to maximize a high class. Faster than R-CNN, but slightly less accurate.
YOLO – You Only Look Once. The input image is initially divided into a grid. Each cell in the grid is used to predict five bounding boxes. A classifier is run for each predicted bounding box, and outcomes with high certainty scores are returned as objects. This is the fastest of the three algorithms, although slightly less accurate in general. However, since the features we are looking at aren’t typical objects this method is likely to work better than R-CNN.
Since we will be attempting to detect defects, which do not look like the ordinary definition of an object (see above image), R-CNN would make a poor choice. Both SSD and YOLO are likely to produce good results. YOLO has the advantage of the having a highly accessibly implementation known as darkflow, which uses the python tensorflow library on the backend. This a major advantage when considering accessibility for scientists or industrial users who may need to make their own modifications, as python is a much more readable and easier to understand language than other languages commonly used for deep learning algorithms.
Darkflow
The original darkflow repository can be found here https://github.com/thtrieu/darkflow The repository for our modified code can be found here https://github.com/mlfilms/defectTracker Our code includes scripts for simplifying the process of training and running the algorithm. To make a model, you will also need the default weights file to train from, which is located at https://drive.google.com/drive/u/2/folders/1c_xrWVKNBuqZUwXGvv_MBamOHNa1wBKy along with other trained models. Download the yolo.weights file and place it in a bin folder.
The readme included in the repo explains how to use the system in detail, and includes instructions on installing dependencies.
Inside the darkflow folder are three scripts that make running training, running, and validating the model easier. trainFlow.py uses annotations and images to train a model. Adjust the batch size or gpu usage number if you run into memory errors. runFlowPB.py loads a model from the .pb and .meta files generated when a model is finished training. The images in the specified directory will be analyzed and marked images will be output, along with json files containing the detections. Finally, validation .py makes use of code from https://github.com/Cartucho/mAP to evaluate how well a trained model performs
Also included are scripts for generating simple training data datasets consisting of images with circles. As a first order test, this simulated data was used to evaluate the effectiveness of YOLO for detecting circles when compared with a common, non-ML algorithm, the circular hough transform. Although both methods were able to properly label almost all circles in clear images, YOLO showed superiority at detecting circles in noisy data, yielding a mAP score of around 80% when the hough transform failed to detect any circles.
The YOLO detections in noisy data. The circular hough transform failed to detect any circles in this data.
Clear images of circles. Both the circular hough transform and YOLO were able to detect almost all images in this dataset.
This demonstrates the viability of YOLO at providing superior performance detecting objects in imperfect or noisy data, as is often necessary in real scenarios.
Training the model took around 45 minutes on a GTX 1080 GPU, and the final model was able to label 200 images in about 25 seconds, demonstrating the viability of training and using darkflow without the need for specialized hardward.
The system can be setup on a windows computer running anaconda in three commands, and can be retrained, ran, and validated with easily with three scripts written to simplify the process.
This allowed a new model to be quickly trained and run on simulated data for defects. The defect simulation and physical significance will be explained in detail in a later post. The initial results are promising on both noisy and clean data.
Noisy, crowded simulated defect data. The red markers are all the defect detections from YOLO. Although almost no defects are missed, several false detections exist.
. Clean simulated defect data. The trained model was able to accurately label all defects with few mistakes.
The next step is to asssess the viability of the models trained on simulated data at detecting defects in experimental data.


Segmentation Activity
[start]
[stop]
[clear]
reset
Message Handled
Identifier
Event
Segment
Enter
Exit
Subscription ID


Florida: Essays and Poems
by FCIT
Fountain of Youth
by Oliver Wendell Holmes, Sr.
Additional Information
- Year Published: 1900
- Language: English
- Country of Origin: United States of America
- Source: Stedman, E.C. (Ed.). (1900). "Fountain of Youth". From An American Anthology 1787-1900. Boston: Riverside Press.
-
Readability:
- Flesch–Kincaid Level: 2.4
- Word Count: 289
- Genre: Poetry
- ✎ Cite This
Downloads
The fount the Spaniard sought in vain
Through all the land of flowers
Leaps glittering from the sandy plain
Our classic grove embowers;
Here youth, unchanging, blooms and smiles,
Here dwells eternal spring,
And warm from Hope's elysian isles
The winds their perfume bring.
Here every leaf is in the bud,
Each singing throat in tune,
And bright o'er evening's silver flood
Shines the young crescent moon.
What wonder Age forgets his staff
And lays his glasses down,
And gray-haired grandsires look and laugh
As when their locks were brown!

What change has clothed the ancient sire
In sudden youth? For, to!
The Judge, the Doctor, and the Squire
Are Jack and Bill and Joe!
And be his titles what they will,
In spite of manhood's claim
The graybeard is a school-boy still
And loves his school-boy name;
It calms the ruler's stormy breast
Whom hurrying care pursues,
And brings a sense of peace and rest,
Like slippers after shoes.–
And what are all the prizes won
To youth's enchanted view?
And what is all the man has done
To what the boy may do?
O blessed fount, whose waters flow
Alike for sire and son,
That melts our winter's frost and snow
And makes all ages one!
I pledge the sparkling fountain's tide,
That flings its golden shower
With age to fill and youth to guide,
Still fresh in morning flower
Flow on with ever-widening stream,
In ever-brightening morn,–
Our story's pride, our future's dream,
The hope of times unborn!


This package contains test examples of analog electrical multiphase circuits.
| Name | Description |
|---|---|
| TransformerYY | Test example with multiphase components |
| TransformerYD | Test example with multiphase components |
| Rectifier | Test example with multiphase components |
| TestSensors |


Home
Home 1
Home 2
Home 3
Home 4
Home 5
About
Services
Services
Services Details
Blog
Blog
Blog Standard
Blog Details
Pages
Faq
Portfolio
Portfolio Details
Team
Team Details
Error 404
Sign Up
Sign In
Contact
login
Get Started
close
login
sign up
Portfolio
Home
Portfolio
Get the perfect solution for work.
Elizabeth geeza quain standard guvnor gosh cras brilliant
ALL
Marketing
SEO
Branding
Design
Marketing
Online digital marketing
Marketing
Online digital marketing
Marketing
Online digital marketing
Marketing
Online digital marketing
Marketing
Online digital marketing
Marketing
Online digital marketing
Marketing
Online digital marketing
Marketing
Online digital marketing
Marketing
Online digital marketing
Marketing
Online digital marketing
Marketing
Online digital marketing
Marketing
Online digital marketing


Dynamics
Dynamics, a Project-Oriented Community, is a multi-disciplinary technical group of CSE department in Siddaganga Institute of Technology which focuses on both hardware and software-based projects. Our motive is to help fellow engineers with their blooming project ideas in different tech domains. We conduct regular events and frequent hackathons to test the skills and ability of the students.
We are gladly to announce the establishment of our new chapter in SIt, Tumkur.
Visit: Mars Society Chapter SIT


AWS Certified Developer Associate | Graduate of Lancaster University
Find Out MoreI speak native English and Cantonese, fluent Mandarin and basic Russian
Experienced in using React JS and React Native, typescript and jQuery
Extremely natural in communicating and cooperating with others.
Constantly improving UI/UX design through practice
C, Java, Arduino and Processing IDE, SQL, PHP.
Skilled in HTML and CSS.
Trained in web security troubleshooting for problems including but not limited to user authentication, single sign-on, cross-domain configuration, SSH remote from and to Unix machines
This is the home screen of the application I made for my final year project, which resulted in an A- and in addition, it is currently
being further developed on in one of the projects of 2 doctorate students. This application aimed to help users capture positive and mundane
memories that they might normally not be aware of, and in the long run, improve their mental well-being. In the doctoral project, it is modified
into an app that will help the research in a very practical way (I cannot disclose the details however). It will be published in September 2019
and I (the creator) will be acknowledged in the paper.
It is hard to demonstrate this app because it consists of more than 30 pages and interactions, including and not limited to recording audio/image/text.
Here is a link to the project, you can view it via downloading Expo as a client on your PlayStore
and using the link by clicking "open project in browser" or scanning the QR code with an Android phone on the said page. Unfortunately, Expo no longer supports iOS
viewing public projects, an Android or a computer are 2 alternative ways to view the app.
I would appreciate any opportunity given to me to improve myself. Feel free to email me or view my CV for more detailed information about me in the section below!


DOCTOR DOLITTLE 1998 A film review by Timothy Voon Copyright 1998 Timothy Voon 1 :-) for the talking animals
Directed by Betty Thomas. Cast Eddie Murphy, Ossie Davis, Oliver Platt, Richard Schiff, Kristen Wilson, Jeffrey Tambor Written by Hugh Lofting, Nat Mauldin, Larry Levin
There's probably one thing that annoys me more than a rude, verbose, hyperactive Eddie Murphy, and that would be – smart-mouthed, lip malleable, talking animals. So, I had every reason to dislike this movie from the outset, but instead I decided to sit back and re-evaluate my life. After momentarily journeying to the depths of my soul and relieving myself of the hate I bore for the ones named Murphy and talking animals, I decided to enjoy the holiday spirit of the movie.
This movie is great for the kids. They love animals and they love animals that talk, even more. Eddie is well behaved, and if I had to choose between watching him as a smart mouthed BEVERLY HILLS COP, or as a disillusioned MD who can talk to animals – MD wins hands down. The animals are o.k. Yes they generate great one liners, with style and human expression thanks to Jim Henson and co.
In the opening credits of the movie, it is stated that the movie is based on Hugh Lofting's children's books of the same name. To clarify this further, I will say that they are only very, very, very loosely based on the novels. In fact the only thing vaguely resembling Lofting's characters is the name Dolittle and of course the talking animals.
The plot is simple. Dolittle (Murphy) has the gift of talking to animals. A gift that he has repressed since childhood, and only recently been awoken since hitting a stray dog with his car. After this, the Doctor mostly psychologically counsels animals about their bowel habits, sex life and numerous psychiatric disorders. By keeping the plot simple, and the focus on the talking animals and away from Eddie Murphy, the children will remain delighted and 20th Century Fox has another potential box office hit on their hands.
Timothy Voon e-mail<EMAIL_ADDRESS>Movie Archives http://us.imdb.com/M/reviews_by?Tim+Voon Hugues Bouclier's Movies in Melbourne http://www.labyrinth.net.au/~bouclier/week/movies.html
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


REVIEW: THE ENGLISH PATIENT (1996) by Chris Webb copyright 1997
Cast: Ralph Fiennes (Count Laszlo Almasy), Kristin Scott Thomas (Katherine Clifton), Juliette Binoche (Hana), Naveen Andrews (Kip), Willem Dafoe (Caravaggio). Directed and written by Anthony Minghella Based on the novel by Michael Ondaatje
There is a ten minute intermission in "The English Patient" that if you are not careful, you might sleep through. I saw this movie in the theaters in January, and about midway through, I had to take a break from Anthony Minghella's successful tribute to Oscar snobbery. "The English Patient" is a mediocre movie at best, with a broken plot, uninspired acting, and an adaptation that would make Shakespeare cringe.
I did not enjoy "The English Patient," and I find it hard to believe that most critics were so swept away by this transparent over-the-top movie. This film follows the story of Count Laszlo Almasy (Fiennes) after some sort of debilitating accident which rendered him skinless and near death. It is an as-told-to account to nurse Hana (Binoche) who is so enthralled by him that she whisks him away to an abandoned mansion, deserting her army effortlessly.
This was supposed to be a love story, but between whom? In Hana, we see a compassion for Almasy, but there exists no spark there. We hear of Almasy's lusty affair with Katherine Clifton (Scott Thomas), but there is not much love portrayed on the screen. But then there is the romance between Hana and Indian bomb-defuser Kip (Andrews). However, after sorting out the which-is-which and who-is-who, we are left with a trifling unromantic tale of deceit and treachory that should not be endearing as many think it is. There is no prominent love story here.
Ralph Fiennes has thrived on portraying dispassionate men in "Quiz Show" and "Schindler's List," but in "The English Patient" he takes his lack of passion to a height where it seems as though he could care less about the script. He speaks more like a book-on-tape, and being in bed shrowded in makeup does not a good actor make. By the time you see his most poignant scene, where he screams in anguish before being a traitor to his country, his performance has already desended into monotony. The character is arrogant, and Minghella tries to show us this, but embarrassingly mimics Shakespearean rhetoric failingly instead.
Scott Thomas is more of a mantlepiece who goes with the flow and does little to show that she can act. Her range rises a bit above the flatline throughout. As she lays dying, she sounds the same as when she is at what is supposed to be her most passionate. Binoche won best supporting actress for her part, and she was the most transparent of all.  It was not a great part for this talented actress, but she reaped rewards nonetheless. If we are going to find a great performance, we look to Naveen Andrews, who portrays the quiet anxiety which someone with his job might have. He is understated and powerful at the same time, saving "The English Patient" from complete failure.
Willem Dafoe's character does not belong, and it is unclear as to why he is there, except that he's mad that some of his fingers are missing. At this point, who really cares anyway?
I wanted to like "The English Patient," but I know many who did. Personally, I think that this movie was a waste of time and that if one truly looks for grand scale romantic drama, "Casablanca" is the way to go.
My grade: D-
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


About Us
Iron Mind Fitness is a strength and conditioning gym that is dedicated toward providing a positive workout environment where people can learn and grow together regardless of where they are in their fitness journey. We take pride in helping others develop their health and discipline with the aid of Iron, strength/conditioning, as well as proper nutrition.  All are welcome and we hope to help every one of our members attain there personal and competitive goals and gain an Iron Mind!


--- layout: page ---
We are a thriving Archery club in the Cambridge (UK) area that shoot together very regularly.
We welcome both beginners and seasoned archers into the club. For more information on the sort of club we are, read our About page, and for details on how to join, please see our Contact Us page. See the Beginners page to discover what we provide to train beginners.
We provide taster "have-a-go" sessions for a fun and novel corporate or group event day.
In normal times, club shoots three times a week, summer & winter.
We are associated with ArcheryGB, Southern Counties Archery Society, World Archery and Cambridgeshire Archery Association
David and Ann English dreamed up Netherhall Archers in 2001. It is called Netherhall because that is what the area was called in days gone by. The name choice had nothing to do with the name of the school where we shoot!
 They personally bought the initial equipment needed to get the club up and running. The club had eight founder members and initially they shot on a Saturday morning once a week in the outdoor season.
The club had a brilliant first year, with few days when we couldn't shoot on a Saturday, on the small field beside the Sports Hall at the Netherhall school.
The club built up members and managed to hire the indoor facility once a week too. We were given space in the large container for a while and, after we had been running for a couple of years, we applied for a National Lottery Grant that enabled us to buy the small container and a lot of training bows for new archers.
The University Archers used to come and shoot with us indoors and helped with their target fees to build up the Club.
Every year we elect the the members of the committee. The current members of our committee are:


Santa Cruz Bird Graph
Neary Lagoon Birds Memory Match
Freshwater Micro/Macro-invertebrates
Turbidity and Oxygen
pH Testing
Photos
Videos


{% extends "base.html" %}
{% load entities %}
{% block title %}Model groups you can edit - {% endblock title %}
{% block content %}
models
model groups
stories
protocols
datasets
fitting specifications
Your model groups
{% can_create_entity 'model' as permission %}
{% if permission %}
Create a new model group
{% else %}
Your account doesn't have the authority to create new model groups; please contact us to request permission.
{% endif %}
{% for modelgroup in object_list %}
{% if modelgroup.author == user %}
-
{{ modelgroup.title }}
{% endif %}
{% endfor %}
Other model groups you can edit
{% for modelgroup in object_list %}
{% if modelgroup.author != user %}
-
{{ modelgroup.title }} (by {{ modelgroup.author.full_name }})
{% endif %}
{% endfor %}
{% endblock content %}


Random Stuff:)
Click me to Google something
Some Fruits
Apple
Banana
Orange
Mosambi
Popular Sites
Google
Amazon Shopping
Facebook
Important Festivals
Diwali
Sankranti
Christmas
Eid Mubarak


Twenty øne Piløts
Turnês
Destaques Regional at Best Tour com destaque ao lado de CHALLENGER! (2011) Mostly November Tour (2012) Quiet Is Violent Tour (2014) Blurryface Tour (2015–2016) Emotional Roadshow World Tour (2016–2017) The Bandito Tour (2018–2019)
(informações retiradas de https://www.wikipedia.org/)


#include <sparse_ops.h>
Concatenates a list of SparseTensor
along the specified dimension.
Concatenation is with respect to the dense versions of these sparse tensors. It is assumed that each input is a SparseTensor
whose elements are ordered along increasing dimension number.
All inputs' shapes must match, except for the concat dimension. The indices
, values
, and shapes
lists must have the same length.
The output shape is identical to the inputs', except along the concat dimension, where it is the sum of the inputs' sizes along that dimension.
The output elements will be resorted to preserve the sort order along increasing dimension number.
This op runs in O(M log M)
time, where M
is the total number of non-empty values across all inputs. This is due to the need for an internal sort in order to concatenate efficiently across an arbitrary dimension.
For example, if concat_dim = 1
and the inputs are
sp_inputs[0]: shape = [2, 3] [0, 2]: "a" [1, 0]: "b" [1, 1]: "c" sp_inputs[1]: shape = [2, 4] [0, 1]: "d" [0, 2]: "e"
then the output will be
shape = [2, 7] [0, 2]: "a" [0, 4]: "d" [0, 5]: "e" [1, 0]: "b" [1, 1]: "c"
Graphically this is equivalent to doing
[ a] concat [ d e ] = [ a d e ] [b c ] [ ] [b c ]
Arguments:
SparseTensor
.SparseTensor
.SparseTensor
.SparseTensor
.Returns:
Output
output_indices: 2-D. Indices of the concatenated SparseTensor
.Output
output_values: 1-D. Non-empty values of the concatenated SparseTensor
.Output
output_shape: 1-D. Shape of the concatenated SparseTensor
.
Constructors and Destructors |
|
|---|---|
SparseConcat(const ::tensorflow::Scope & scope, ::tensorflow::InputList indices, ::tensorflow::InputList values, ::tensorflow::InputList shapes, int64 concat_dim)
|
Public attributes |
|
|---|---|
operation
|
|
output_indices
|
|
output_shape
|
|
output_values
|
Operation operation
::tensorflow::Output output_indices
::tensorflow::Output output_shape
::tensorflow::Output output_values
SparseConcat( const ::tensorflow::Scope & scope, ::tensorflow::InputList indices, ::tensorflow::InputList values, ::tensorflow::InputList shapes, int64 concat_dim )


| quantmod.OHLC {quantmod} | R Documentation |
Coerce an object with the apporpriate columns to class
quantmod.OHLC
, which extends zoo.
as.quantmod.OHLC(x, col.names = c("Open", "High", "Low", "Close", "Volume", "Adjusted"), name = NULL, ...)
x |
object of class |
col.names |
suffix for columns |
name |
name to attach unique column suffixes to, defaults to the object name |
... |
additional arguments (unused) |
quantmod.OHLC
is actually just a renaming of an object
of class zoo
, with the convention of NAME.Open, NAME.High, ...
for the column names.
Additionally methods may be written to handle or check for the above conditions within other functions - as is the case within the quantmod package.
An object of class c('quantmod.OHLC','zoo')
Jeffrey A. Ryan
OHLC.Transformations
, getSymbols


H1 - Class h1
H3 - Class h2
H3 - Class h3
H4 - Class h4
H5 - Class h5
H6 - Class h6
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.


{{ title }}
Are you sure to delete User : {{user.login}}
Are you sure to delete Organisme : {{organisme.libelle}}
Are you sure to delete Profile : {{profile.libelle}}
Are you sure to delete Pays : {{pays.nom}}
Are you sure to delete Domaine : {{domaine.libelle}}


|
If
You Ever
(Gabrielle) |
|
The
very first time that I saw your brown eyes
Your lips said hello and I said hi I knew right then you were the one But I was caught up in physical attraction But to my satisfaction Baby you were more than just a friend And if you ever fall in love again You must make sure that the lady is a friend And if you ever fall in love so true You must be sure that she feels the same way too If I said that I would be your one and only Promise that you'd never leave me lonely I just want to be the one you need I just want to be the one to serve you Sometimes I feel as if I don't deserve you I cherish every moment that we share And if you ever fall in love again You must be sure that the lady is a friend And if you ever fall in love so true You must be sure that she feels the same way too The very first time that I saw your brown eyes Your lips said hello and I said hi I knew right then you were the one And I was caught up in physical attraction But to my satisfaction Baby you were more than just a friend And if you ever fall in love again You must be sure that the lady is a friend And if you ever fall in love so true You must be sure that she feels the same way too And if you ever fall in love again You must be sure that the lady is a friend And if you ever fall in love so true You must be sure that she feels the same way too And if you ever fall in love again You must be sure that the lady is a friend And if you ever fall in love so true You must be sure that she feels the same way too |


Dara is united under the Empror Ragin, once known as Kuni Garu, the bandit king. There has been peace for six years, but the Dandelion Throne rests on bloody foundations - Kuni's betrayal of his friend, Mata Zyndu, the Hegemon. The Hegemon's rule was brutal and unbending - but he died well, creating a legend that haunts the new emperor, no matter what good he strives to do.
Where war once forged unbreakable bonds between Kuni's inner circle, peace now gnaws at their loyalties. Where ancient wisdoms once held sway, a brilliant scholar promises a philosophical revolution. And from the far north, over the horizon, comes a terrible new threat ...
The scent of blood is in the water.
The sky was overcast, and the cold wind whipped a few scattered snowflakes through the air. Carriages and pedestrians in thick coats and fur-lines hates hurried through the wide avenues of Pan, the Harmonious City; seeking the warmth of home.


Sound Class
The Sound class is the public API for creating sounds, controlling the overall sound levels, and managing plugins. All Sound APIs on this class are static.
Registering and Preloading
Before you can play a sound, it must be registered. You can do this with registerSound,
or register multiple sounds using registerManifest. If you don't register a
sound prior to attempting to play it using play or create it using createInstance,
the sound source will be automatically registered but playback will fail as the source will not be ready. If you use
PreloadJS, this is handled for you when the sound is
preloaded. It is recommended to preload sounds either internally using the register functions or externally using
PreloadJS so they are ready when you want to use them.
Playback
To play a sound once it's been registered and preloaded, use the play method.
This method returns a SoundInstance which can be paused, resumed, muted, etc.
Please see the SoundInstance documentation for more on the instance control APIs.
Plugins
By default, the WebAudioPlugin or the HTMLAudioPlugin
are used (when available), although developers can change plugin priority or add new plugins (such as the
provided FlashPlugin). Please see the Sound API
methods for more on the playback and plugin APIs. To install plugins, or specify a different plugin order, see
Sound/installPlugins.
Example
createjs.Sound.registerPlugins([createjs.WebAudioPlugin, createjs.FlashPlugin]);
createjs.Sound.addEventListener("fileload", createjs.proxy(this.loadHandler, (this));
createjs.Sound.registerSound("path/to/mySound.mp3|path/to/mySound.ogg", "sound");
function loadHandler(event) {
// This is fired for each sound that is registered.
var instance = createjs.Sound.play("sound"); // play using id. Could also use full source path or event.src.
instance.addEventListener("complete", createjs.proxy(this.handleComplete, this));
instance.setVolume(0.5);
}
The maximum number of concurrently playing instances of the same sound can be specified in the "data" argument of registerSound. Note that if not specified, the active plugin will apply a default limit. Currently HTMLAudioPlugin sets a default limit of 2, while WebAudioPlugin and FlashPlugin set a default limit of 100.
createjs.Sound.registerSound("sound.mp3", "soundId", 4);
Sound can be used as a plugin with PreloadJS to help preload audio properly. Audio preloaded with PreloadJS is automatically registered with the Sound class. When audio is not preloaded, Sound will do an automatic internal load. As a result, it may not play immediately the first time play is called. Use the Sound/fileload event to determine when a sound has finished internally preloading. It is recommended that all audio is preloaded before it is played.
createjs.PreloadJS.installPlugin(createjs.Sound);
Mobile Safe Approach
Mobile devices require sounds to be played inside of a user initiated event (touch/click) in varying degrees.
As of SoundJS 0.4.1, you can launch a site inside of a user initiated event and have audio playback work. To
enable as broadly as possible, the site needs to setup the Sound plugin in its initialization (for example via
createjs.Sound.initializeDefaultPlugins();
), and all sounds need to be played in the scope of the
application. See the MobileSafe demo for a working example.
Example
document.getElementById("status").addEventListener("click", handleTouch, false); // works on Android and iPad
function handleTouch(event) {
document.getElementById("status").removeEventListener("click", handleTouch, false); // remove the listener
var thisApp = new myNameSpace.MyApp(); // launch the app
}
Known Browser and OS issues
IE 9 HTML Audio limitations
- There is a delay in applying volume changes to tags that occurs once playback is started. So if you have muted all sounds, they will all play during this delay until the mute applies internally. This happens regardless of when or how you apply the volume change, as the tag seems to need to play to apply it.
- MP3 encoding will not always work for audio tags, particularly in Internet Explorer. We've found default encoding with 64kbps works.
- There is a limit to how many audio tags you can load and play at once, which appears to be determined by hardware and browser settings. See HTMLAudioPlugin.MAX_INSTANCES for a safe estimate.
- Safari requires Quicktime to be installed for audio playback.
- Sound is initially muted and will only unmute through play being called inside a user initiated event (touch/click).
- Despite suggestions to the opposite, we have control over audio volume through our gain nodes.
- A bug exists that will distort un-cached web audio when a video element is present in the DOM.
- Note HTMLAudioPlugin is not supported on iOS by default. See HTMLAudioPlugin for more details.
Android HTML Audio limitations
- We have no control over audio volume. Only the user can set volume on their device.
- We can only play audio inside a user event (touch/click). This currently means you cannot loop sound or use a delay.
- Chrome reports true when you run createjs.Sound.BrowserDetect.isChrome, but is a different browser with different abilities.
- Can only play 1 sound at a time.
- Sound is not cached.
- Sound can only be loaded in a user initiated touch/click event.
- There is a delay before a sound is played, presumably while the src is loaded.
Item Index
Methods
- addEventListener
- beginPlaying static
- createInstance
- dispatchEvent
- getCapabilities static
- getCapability static
- getMute static
- getPreloadHandlers static
- getSrcById static
- getVolume static
- hasEventListener
- initialize
- initializeDefaultPlugins
- initLoad static
- isReady static
- loadComplete
- mute static deprecated
- parsePath
- play static
- playFinished static
- playInstance static
- proxy static deprecated
- registerManifest static
- registerPlugin static
- registerPlugins static
- registerSound static
- removeAllEventListeners
- removeAllSounds static
- removeEventListener
- removeManifest static
- removeSound static
- sendFileLoadEvent static
- setMute static
- setVolume static
- stop static
- toString
Properties
- _listeners
- activePlugin static
- AUDIO_TIMEOUT static
- defaultInterruptBehavior static
- defaultSoundInstance static
- DELIMITER static
- EXTENSION_MAP
- FILE_PATTERN static
- idHash static
- instances static
- INTERRUPT_ANY static
- INTERRUPT_EARLY static
- INTERRUPT_LATE static
- INTERRUPT_NONE static
- lastID static
- masterMute static
- masterVolume
- onLoadComplete deprecated
- PLAY_FAILED static
- PLAY_FINISHED static
- PLAY_INITED static
- PLAY_INTERRUPTED static
- PLAY_SUCCEEDED static
- pluginsRegistered static
- preloadHash static
- SUPPORTED_EXTENSIONS
Events
- fileload
- loadComplete deprecated
Methods
addEventListener
-
type
-
listener
Adds the specified event listener. Note that adding multiple listeners to the same function will result in multiple callbacks getting fired.
Example
displayObject.addEventListener("click", handleClick);
function handleClick(event) {
// Click happened.
}
Parameters:
beginPlaying
-
instance
-
[interrupt=none]
-
[offset]
-
[loop=0]
-
[volume]
-
[pan=instance.pan]
Begin playback. This is called immediately or after delay by playInstance.
Parameters:
-
instance
SoundInstanceA SoundInstance to begin playback.
-
[interrupt=none]
String optionalHow this sound interrupts other instances with the same source. Defaults to
Sound.INTERRUPTNONE
. Interrupts are defined asINTERRUPTTYPE
constants on Sound. -
[offset]
Number optionalTime in milliseconds into the sound to begin playback. Defaults to the current value on the instance.
-
[loop=0]
Number optionalThe number of times to loop the audio. Use 0 for no loops, and -1 for an infinite loop.
-
[volume]
Number optionalThe volume of the sound between 0 and 1. Defaults to the current value on the instance.
-
[pan=instance.pan]
Number optionalThe pan of the sound between -1 and 1. Defaults to current instance value.
Returns:
createInstance
-
src
Creates a SoundInstance using the passed in src. If the src does not have a
supported extension or if there is no available plugin, a Sound.defaultSoundInstance
will be returned
that can be called safely but does nothing.
Example
var myInstance = null;
createjs.Sound.addEventListener("fileload", handleLoad);
createjs.Sound.registerSound("myAudioPath/mySound.mp3", "myID", 3);
function handleLoad(event) {
myInstance = createjs.Sound.createInstance("myID");
// alternately we could call the following
myInstance = createjs.Sound.createInstance("myAudioPath/mySound.mp3");
}
Parameters:
-
src
StringThe src or ID of the audio.
Returns:
dispatchEvent
-
eventObj
-
[target]
Dispatches the specified event to all listeners.
Example
// Use a string event
this.dispatchEvent("complete");
// Use an object
var event = {
type: "complete",
foo: "bar"
};
this.dispatchEvent(event);
Parameters:
-
eventObj
Object | StringAn object with a "type" property, or a string type. If a string is used, dispatchEvent will construct a generic event object with the specified type.
-
[target]
Object optionalThe object to use as the target property of the event object. This will default to the dispatching object.
Returns:
getCapabilities
()
Object
static
Get the active plugins capabilities, which help determine if a plugin can be used in the current environment, or if the plugin supports a specific feature. Capabilities include:
- panning: If the plugin can pan audio from left to right
- volume; If the plugin can control audio volume.
- mp3: If MP3 audio is supported.
- ogg: If OGG audio is supported.
- wav: If WAV audio is supported.
- mpeg: If MPEG audio is supported.
- m4a: If M4A audio is supported.
- mp4: If MP4 audio is supported.
- aiff: If aiff audio is supported.
- wma: If wma audio is supported.
- mid: If mid audio is supported.
- tracks: The maximum number of audio tracks that can be played back at a time. This will be -1 if there is no known limit.
Returns:
getCapability
-
key
Get a specific capability of the active plugin. See getCapabilities for a full list of capabilities.
Example
var maxAudioInstances = createjs.Sound.getCapability("tracks");
Parameters:
-
key
StringThe capability to retrieve
getMute
()
Boolean
static
Returns the global mute value. To get the mute value of an individual instance, use SoundInstance getMute instead.
Example
var masterMute = createjs.Sound.getMute();
Returns:
getPreloadHandlers
()
Object
protected
static
Get the preload rules to allow Sound to be used as a plugin by PreloadJS. Any load calls that have the matching type or extension will fire the callback method, and use the resulting object, which is potentially modified by Sound. This helps when determining the correct path, as well as registering the audio instance(s) with Sound. This method should not be called, except by PreloadJS.
Returns:
- callback: A preload callback that is fired when a file is added to PreloadJS, which provides Sound a mechanism to modify the load parameters, select the correct file format, register the sound, etc.
- types: A list of file types that are supported by Sound (currently supports "sound").
- extensions: A list of file extensions that are supported by Sound (see Sound.SUPPORTED_EXTENSIONS).
getSrcById
-
value
Get the source of a sound via the ID passed in with a register call. If no ID is found the value is returned instead.
Parameters:
-
value
StringThe ID the sound was registered with.
Returns:
getVolume
()
Number
static
Get the master volume of Sound. The master volume is multiplied against each sound's individual volume. To get individual sound volume, use SoundInstance getVolume instead.
Example
var masterVolume = createjs.Sound.getVolume();
Returns:
hasEventListener
-
type
Indicates whether there is at least one listener for the specified event type.
Parameters:
-
type
StringThe string type of the event.
Returns:
initialize
()
protected
Initialization method.
initializeDefaultPlugins
()
Boolean
Initialize the default plugins. This method is automatically called when any audio is played or registered before the user has manually registered plugins, and enables Sound to work without manual plugin setup. Currently, the default plugins are WebAudioPlugin followed by HTMLAudioPlugin.
Example
if (!createjs.initializeDefaultPlugins()) { return; }
Returns:
initLoad
-
src
-
[type]
-
[id]
-
[data]
Process manifest items from PreloadJS. This method is intended for usage by a plugin, and not for direct interaction.
Parameters:
-
src
String | ObjectThe src or object to load. This is usually a string path, but can also be an HTMLAudioElement or similar audio playback object.
-
[type]
String optionalThe type of object. Will likely be "sound" or null.
-
[id]
String optionalAn optional user-specified id that is used to play sounds.
-
[data]
Number | String | Boolean | Object optionalData associated with the item. Sound uses the data parameter as the number of channels for an audio instance, however a "channels" property can be appended to the data object if this property is used for other information. The audio channels will default to 1 if no value is found.
isReady
()
Boolean
static
Determines if Sound has been initialized, and a plugin has been activated.
Example
This example sets up a Flash fallback, but only if there is no plugin specified yet.
if (!createjs.Sound.isReady()) {
createjs.FlashPlugin.BASE_PATH = "../src/SoundJS/";
createjs.Sound.registerPlugins([createjs.WebAudioPlugin, createjs.HTMLAudioPlugin, createjs.FlashPlugin]);
}
Returns:
loadComplete
-
src
Check if a source has been loaded by internal preloaders. This is necessary to ensure that sounds that are not completed preloading will not kick off a new internal preload if they are played.
Example
var mySound = "assetPath/asset0.mp3|assetPath/asset0.ogg";
if(createjs.Sound.loadComplete(mySound) {
createjs.Sound.play(mySound);
}
Parameters:
-
src
StringThe src or id that is being loaded.
Returns:
mute
-
value
Mute/Unmute all audio. Please see setMute.
Parameters:
-
value
BooleanWhether the audio should be muted or not.
parsePath
-
value
-
[type]
-
[id]
-
[data]
Parse the path of a sound, usually from a manifest item. Manifest items support single file paths, as well as
composite paths using Sound.DELIMITER
, which defaults to "|". The first path supported by the
current browser/plugin will be used.
Parameters:
-
value
StringThe path to an audio source.
-
[type]
String optionalThe type of path. This will typically be "sound" or null.
-
[id]
String optionalThe user-specified sound ID. This may be null, in which case the src will be used instead.
-
[data]
Number | String | Boolean | Object optionalArbitrary data appended to the sound, usually denoting the number of channels for the sound. This method doesn't currently do anything with the data property.
play
-
src
-
[interrupt="none"]
-
[delay=0]
-
[offset=0]
-
[loop=0]
-
[volume=1]
-
[pan=0]
Play a sound and get a SoundInstance to control. If the sound fails to play, a
SoundInstance will still be returned, and have a playState of Sound.PLAY_FAILED
. Note that even on
sounds with failed playback, you may still be able to call SoundInstance play,
since the failure could be due to lack of available channels. If the src does not have a supported extension or
if there is no available plugin,Sound.defaultSoundInstance
will be returned, which will not play any
audio, but will not generate errors.
Example
createjs.Sound.addEventListener("fileload", handleLoad);
createjs.Sound.registerSound("myAudioPath/mySound.mp3", "myID", 3);
function handleLoad(event) {
createjs.Sound.play("myID");
// alternately we could call the following
var myInstance = createjs.Sound.play("myAudioPath/mySound.mp3", createjs.Sound.INTERRUPT_ANY, 0, 0, -1, 1, 0);
}
Parameters:
-
src
StringThe src or ID of the audio.
-
[interrupt="none"]
String optionalHow to interrupt any currently playing instances of audio with the same source, if the maximum number of instances of the sound are already playing. Values are defined as
INTERRUPT_TYPE
constants on the Sound class, with the default defined by Sound/defaultInterruptBehavior. -
[delay=0]
Number optionalThe amount of time to delay the start of audio playback, in milliseconds.
-
[offset=0]
Number optionalThe offset from the start of the audio to begin playback, in milliseconds.
-
[loop=0]
Number optionalHow many times the audio loops when it reaches the end of playback. The default is 0 (no loops), and -1 can be used for infinite playback.
-
[volume=1]
Number optionalThe volume of the sound, between 0 and 1. Note that the master volume is applied against the individual volume.
-
[pan=0]
Number optionalThe left-right pan of the sound (if supported), between -1 (left) and 1 (right).
Returns:
playFinished
-
instance
A sound has completed playback, been interrupted, failed, or been stopped. This method removes the instance from Sound management. It will be added again, if the sound re-plays. Note that this method is called from the instances themselves.
Parameters:
-
instance
SoundInstanceThe instance that finished playback.
playInstance
-
instance
-
[interrupt=none]
-
[delay=0]
-
[offset=instance.offset]
-
[loop=0]
-
[volume]
-
[pan]
Play an instance. This is called by the static API, as well as from plugins. This allows the core class to control delays.
Parameters:
-
instance
SoundInstanceThe SoundInstance to start playing.
-
[interrupt=none]
String optionalHow this sound interrupts other instances with the same source. Defaults to
Sound.INTERRUPTNONE
. All interrupt values are defined asINTERRUPTTYPE
constants on Sound. -
[delay=0]
Number optionalTime in milliseconds before playback begins.
-
[offset=instance.offset]
Number optionalTime into the sound to begin playback in milliseconds. Defaults to the current value on the instance.
-
[loop=0]
Number optionalThe number of times to loop the audio. Use 0 for no loops, and -1 for an infinite loop.
-
[volume]
Number optionalThe volume of the sound between 0 and 1. Defaults to current instance value.
-
[pan]
Number optionalThe pan of the sound between -1 and 1. Defaults to current instance value.
Returns:
proxy
-
method
-
scope
A function proxy for Sound methods. By default, JavaScript methods do not maintain scope, so passing a method as a callback will result in the method getting called in the scope of the caller. Using a proxy ensures that the method gets called in the correct scope.
registerManifest
-
manifest
Register a manifest of audio files for loading and future playback in Sound. It is recommended to register all sounds that need to be played back in order to properly prepare and preload them. Sound does internal preloading when required.
Example
var manifest = [
{src:"assetPath/asset0.mp3|assetPath/asset0.ogg", id:"example"}, // Note the Sound.DELIMITER
{src:"assetPath/asset1.mp3|assetPath/asset1.ogg", id:"1", data:6},
{src:"assetPath/asset2.mp3", id:"works"}
];
createjs.Sound.addEventListener("fileload", handleLoad); // call handleLoad when each sound loads
createjs.Sound.registerManifest(manifest);
Parameters:
-
manifest
ArrayAn array of objects to load. Objects are expected to be in the format needed for registerSound:
{src:srcURI, id:ID, data:Data, preload:UseInternalPreloader}
with "id", "data", and "preload" being optional.
Returns:
registerPlugin
-
plugin
Register a Sound plugin. Plugins handle the actual playback of audio. The default plugins are (WebAudioPlugin followed by HTMLAudioPlugin), and are installed if no other plugins are present when the user attempts to start playback or register sound.
Example
createjs.FlashPlugin.BASE_PATH = "../src/SoundJS/";
createjs.Sound.registerPlugin(createjs.FlashPlugin);
To register multiple plugins, use registerPlugins.
Parameters:
-
plugin
ObjectThe plugin class to install.
Returns:
registerPlugins
-
plugins
Register a list of Sound plugins, in order of precedence. To register a single plugin, use registerPlugin.
Example
createjs.FlashPlugin.BASE_PATH = "../src/SoundJS/";
createjs.Sound.registerPlugins([createjs.WebAudioPlugin, createjs.HTMLAudioPlugin, createjs.FlashPlugin]);
Parameters:
-
plugins
ArrayAn array of plugins classes to install.
Returns:
registerSound
-
src
-
[id]
-
[data]
-
[preload=true]
Register an audio file for loading and future playback in Sound. This is automatically called when using PreloadJS. It is recommended to register all sounds that need to be played back in order to properly prepare and preload them. Sound does internal preloading when required.
Example
createjs.Sound.addEventListener("fileload", handleLoad); // add an event listener for when load is completed
createjs.Sound.registerSound("myAudioPath/mySound.mp3|myAudioPath/mySound.ogg", "myID", 3);
Parameters:
-
src
String | ObjectThe source or an Objects with a "src" property
-
[id]
String optionalAn id specified by the user to play the sound later.
-
[data]
Number | Object optionalData associated with the item. Sound uses the data parameter as the number of channels for an audio instance, however a "channels" property can be appended to the data object if it is used for other information. The audio channels will set a default based on plugin if no value is found.
-
[preload=true]
Boolean optionalIf the sound should be internally preloaded so that it can be played back without an external preloader.
Returns:
removeAllEventListeners
-
[type]
Removes all listeners for the specified type, or all listeners of all types.
Example
// Remove all listeners
displayObject.removeAllEvenListeners();
// Remove all click listeners
displayObject.removeAllEventListeners("click");
Parameters:
-
[type]
String optionalThe string type of the event. If omitted, all listeners for all types will be removed.
removeAllSounds
()
static
Remove all sounds that have been registered with registerSound or registerManifest. Note this will stop playback on all active sound instances before deleting them.
Example
createjs.Sound.removeAllSounds();
removeEventListener
-
type
-
listener
Removes the specified event listener.
Important Note: that you must pass the exact function reference used when the event was added. If a proxy function, or function closure is used as the callback, the proxy/closure reference must be used - a new proxy or closure will not work.
Example
displayObject.removeEventListener("click", handleClick);
removeManifest
-
manifest
Remove a manifest of audio files that have been registered with registerSound or registerManifest. Note this will stop playback on active instances playing this audio before deleting them.
Example
var manifest = [
{src:"assetPath/asset0.mp3|assetPath/asset0.ogg", id:"example"}, // Note the Sound.DELIMITER
{src:"assetPath/asset1.mp3|assetPath/asset1.ogg", id:"1", data:6},
{src:"assetPath/asset2.mp3", id:"works"}
];
createjs.Sound.removeManifest(manifest);
Parameters:
-
manifest
ArrayAn array of objects to remove. Objects are expected to be in the format needed for removeSound:
{srcOrID:srcURIorID}
Returns:
removeSound
-
src
Remove a sound that has been registered with registerSound or registerManifest. Note this will stop playback on active instances playing this sound before deleting them.
Example
createjs.Sound.removeSound("myAudioPath/mySound.mp3|myAudioPath/mySound.ogg");
createjs.Sound.removeSound("myID");
Returns:
sendFileLoadEvent
-
src
Used by external plugins to dispatch file load events.
Parameters:
-
src
StringA sound file has completed loading, and should be dispatched.
setMute
-
value
Mute/Unmute all audio. Note that muted audio still plays at 0 volume. This global mute value is maintained separately and when set will override, but not change the mute property of individual instances. To mute an individual instance, use SoundInstance setMute instead.
Example
createjs.Sound.setMute(true);
Parameters:
-
value
BooleanWhether the audio should be muted or not.
Returns:
setVolume
-
value
Set the master volume of Sound. The master volume is multiplied against each sound's individual volume. For example, if master volume is 0.5 and a sound's volume is 0.5, the resulting volume is 0.25. To set individual sound volume, use SoundInstance setVolume instead.
Example
createjs.Sound.setVolume(0.5);
Parameters:
-
value
NumberThe master volume value. The acceptable range is 0-1.
stop
()
static
Stop all audio (global stop). Stopped audio is reset, and not paused. To play audio that has been stopped, call SoundInstance.play.
Example
createjs.Sound.stop();
Properties
activePlugin
Object
static
The currently active plugin. If this is null, then no plugin could be initialized. If no plugin was specified, Sound attempts to apply the default plugins: WebAudioPlugin, followed by HTMLAudioPlugin.
AUDIO_TIMEOUT
Number
protected
static
The duration in milliseconds to determine a timeout.
Default: 8000
defaultInterruptBehavior
String
static
Determines the default behavior for interrupting other currently playing instances with the same source, if the
maximum number of instances of the sound are already playing. Currently the default is Sound.INTERRUPT_NONE
but this can be set and will change playback behavior accordingly. This is only used when play
is called without passing a value for interrupt.
Default: none
defaultSoundInstance
Object
protected
static
An object that stands in for audio that fails to play. This allows developers to continue to call methods on the failed instance without having to check if it is valid first. The instance is instantiated once, and shared to keep the memory footprint down.
DELIMITER
String
static
The character (or characters) that are used to split multiple paths from an audio source.
Default: |
EXTENSION_MAP
Object
Some extensions use another type of extension support to play (one of them is a codex). This allows you to map that support so plugins can accurately determine if an extension is supported. Adding to this list can help plugins determine more accurately if an extension is supported.
FILE_PATTERN
RegExp
protected
static
The RegExp pattern used to parse file URIs. This supports simple file names, as well as full domain URIs with query strings. The resulting match is: protocol:$1 domain:$2 path:$3 file:$4 extension:$5 query:$6.
instances
Array
protected
static
An array containing all currently playing instances. This allows Sound to control the volume, mute, and playback of all instances when using static APIs like stop and setVolume. When an instance has finished playback, it gets removed via the Sound/finishedPlaying method. If the user replays an instance, it gets added back in via the beginPlaying method.
INTERRUPT_ANY
String
static
The interrupt value to interrupt any currently playing instance with the same source, if the maximum number of instances of the sound are already playing.
Default: any
INTERRUPT_EARLY
String
static
The interrupt value to interrupt the earliest currently playing instance with the same source that progressed the least distance in the audio track, if the maximum number of instances of the sound are already playing.
Default: early
INTERRUPT_LATE
String
static
The interrupt value to interrupt the currently playing instance with the same source that progressed the most distance in the audio track, if the maximum number of instances of the sound are already playing.
Default: late
INTERRUPT_NONE
String
static
The interrupt value to not interrupt any currently playing instances with the same source, if the maximum number of instances of the sound are already playing.
Default: none
masterMute
Boolean
protected
static
The master mute value, which affects all sounds. This is applies to all sound instances. This value can be set through setMute and accessed via getMute.
Default: false
masterVolume
Number
protected
The master volume value, which affects all sounds. Use getVolume and setVolume to modify the volume of all audio.
Default: 1
onLoadComplete
Function
deprecated
The callback that is fired when a file finishes loading internally. This is fired for each loaded sound.
PLAY_FAILED
String
static
Defines the playState of an instance that failed to play. This is usually caused by a lack of available channels when the interrupt mode was "INTERRUPT_NONE", the playback stalled, or the sound could not be found.
Default: playFailed
PLAY_FINISHED
String
static
Defines the playState of an instance that completed playback.
Default: playFinished
PLAY_INITED
String
static
Defines the playState of an instance that is still initializing.
Default: playInited
PLAY_INTERRUPTED
String
static
Defines the playState of an instance that was interrupted by another instance.
Default: playInterrupted
PLAY_SUCCEEDED
String
static
Defines the playState of an instance that is currently playing or paused.
Default: playSucceeded
pluginsRegistered
Boolean
protected
static
Determines if the plugins have been registered. If false, the first call to play() will instantiate the default plugins (WebAudioPlugin, followed by HTMLAudioPlugin). If plugins have been registered, but none are applicable, then sound playback will fail.
Default: false
preloadHash
Object
protected
static
An object hash that stores preloading sound sources via the parsed source that is passed to the plugin. Contains the source, id, and data that was passed in by the user. Parsed sources can contain multiple instances of source, id, and data.
SUPPORTED_EXTENSIONS
ArrayString
A list of the default supported extensions that Sound will try to play. Plugins will check if the browser can play these types, so modifying this list before a plugin is initialized will allow the plugins to try to support additional media types.
NOTE this does not currently work for FlashPlugin.
More details on file formats can be found at http://en.wikipedia.org/wiki/Audiofileformat. A very detailed list of file formats can be found at http://www.fileinfo.com/filetypes/audio. A useful list of extensions for each format can be found at http://html5doctor.com/html5-audio-the-state-of-play/
Default: ["mp3", "ogg", "mpeg", "wav", "m4a", "mp4", "aiff", "wma", "mid"]
Events
fileload
This event is fired when a file finishes loading internally. This event is fired for each loaded sound,
so any handler methods should look up the event.src
to handle a particular sound.
Event Payload:
-
target
ObjectThe object that dispatched the event.
-
type
StringThe event type.
-
src
StringThe source of the sound that was loaded. Note this will only return the loaded part of a delimiter-separated source.
-
[id]
String optionalThe id passed in when the sound was registered. If one was not provided, it will be null.
-
[data]
Number | Object optionalAny additional data associated with the item. If not provided, it will be undefined.
loadComplete
deprecated
This event is fired when a file finishes loading internally. Please use the "fileload" event instead.


Reverse LinkedList
Reverse LinkedList
The first problem(Leetcode 206) is to reverse a singly linked list. We can do it either iteratively or recursively.
- Iteration
Iteration is pretty intuitive and simple, which means we just iterate the whole list, and make the next pointer of each node point to its previous node, repeating the process one by one. This would take O(n) time complexity as iterating the whole n nodes, and O(1) space complexity.
//Iteration
public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode cur = head;
ListNode next;
while(cur != null) {
next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
- Recursion
The recursive way is a little tricky. The key concept is, we always assume the whole list after the current node we are processing has already been reversed. So all we need to consider is just reversing the next pointer of the current node back to its previous node. It actually works backwords. The time complexity is still O(n), but the space complexity is O(n) since there is an implicit stack, which could go up to n levels deep.
//Recursion
public ListNode reverseList(ListNode head) {
if(head == null||head.next == null) {
return head;
}
ListNode pre = reverseList(head.next);
head.next.next = head;
head.next = null;
return pre;
}
In addition, the ListNode pre here is to save the last node of the original list, which can be returned as the head of the new reversed list later.
Reverse LinkedList II
The second problem(Leetcode 92) is to reverse a part of a linked list, instead of the whole list. At first glance, I was also thinking about using the two methods: iteration and recursion naturally. By iteration, the problem is after we reversing the required part, we still have to spend some time to connect the head, middle and tail part. That is not efficient. By recursion, we can start reversing from the middle node, then expanding the reversion until covering the left-th and right-th nodes. We solve the problem by progressing (l, r) into (l + 1, r - 1)…until l == r, where we can directly return the single node. But the same problem of taking time to connect appears again, we cannot do this in one-pass.
So, what should I do…? I checked the answer. 😂
The solution is inserting the nodes of the required reversing part, into the start position of the reversing part one by one. I know that is not neat. It is also kind of like, iteration.
For example, the original list is 1->2->3->4->5->6. (we want to reverse 2->3->4->5)
1-st inserting 2: 1-> 2->3->4->5 ->6
2-nd inserting 3: 1-> 3->2->4->5 ->6
3-rd inserting 4: 1-> 4->3->2->5 ->6
4-th inserting 5: 1-> 5->4->3->2 ->6
Done!
The time complexity is up to O(n) as we may processing the whole n nodes. The space complexity is just O(1).
public ListNode reverseBetween(ListNode head, int m, int n) {
if(head == null || head.next == null || m == n) {
return head;
}
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
for(int i = 0; i < m - 1; i++) {
pre = pre.next;
}
ListNode start = pre.next;
ListNode then = start.next;
for(int i = 0; i < n - m; i++) {
start.next = then.next;
then.next = pre.next;
pre.next = then;
then = start.next;
}
return dummy.next;
}


Talking, not dancing
The Last Days Of Disco A Film Review By Michael Redman Copyright 1998 By Michael Redman
**1/2 (Out of ****)
All cultures have their mating rituals: a time and place where the eligible get together to strut their stuff and pick whose stuff they like being strutted. In many tribal cultures the men drum at a gathering demonstrating their skills while the women dance for the drummers portraying theirs.
In the urban United States during the late seventies there were few drumming circles so the twenty-somethings headed to discos to find their mates - even very temporary ones. Disco music has been often denigrated as mediocre at best and with good reason. But that's not the point. The music was always only a means. The scene was the important aspect.
For a group of recent college graduates, the chosen ritual meeting place is a club never named but obviously modeled after Club 54 where they gather (assuming that they look cool enough to make it past the doorman) to dance the night away under flashing lights. Their throbbing rhythms are mechanically produced but the ritual is still the same.
Alice (Chloe Sevigny) and Charlotte (Kate Beckinsale) attempt to climb the corporate ladder at a book publisher by day and work the social ladder in the evenings. At the club they hang with Josh (Matthew Keeslar), an assistant DA; Jimmy (MacKenzie Astin), a junior advertising executive and Des (Christopher Eigeman), the club's assistant manager. They make up a fairly tight-knit group playing together, dancing together and, you guessed it, sleeping together.
Although the film features the expected disco soundtrack, the stars spend much more time talking than they do dancing. This is no "Saturday Night Live" featuring stylized gyrations. Here the dancing is decidedly unglamorized although for a few seconds now and then there is something interesting happening on the dance floor.
To be blunt, these people lead a shallow existence. Some events in their lives are exciting (Josh is investigating the club, Jimmy must sneak clients in, Des has a coke problem and a parade of girlfriends), but they are just wandering through.
What they mostly do is talk and when they're done, they talk some more. Although the conversation is witty, the topics are banal. There's a long discussion deconstructing Lady And The Tramp leading to the conclusion that the film is why girls go for bad boys. A couple debates the technical qualifications of virginity reminding me of numerous deliberations I've heard about sexual activity and which category an evening fell into. "I did this and he did that. Did we have sex?"
With the arrogance of youth, Charlotte wonders if people really ever danced in bars before disco. Josh recounts the beginnings of the musical genre with "Some people don't consider that 'disco' -- because it's good." Being advised by her critical friend that throwing in the word "sexy" as often as possible is a good thing, Alice explains to a one-night stand "there's something sexy about Scrooge McDuck."
They talk about a couple who are cheating on a trial separation by secretly seeing each other. Charlotte explains how VD isn't all bad because you have to inform your previous sexual partners leading to renewed possibilities.
Although the conversations are witty and some of the lines priceless, the intellectualizing about nothing becomes wearing. They are hanging out waiting for something to happen and eventually the audience is doing the same. One of the problems with the movie is that when the plot rears its ugly head, there's not much there. An undercover investigation of the club's finances just gets in the way of the film.
The actors do a fine job of portraying authentic characters. They're not very likable people but they are real. Alice is the closest to someone that you'd want to spend time with but Sevigny's performance is uneven. Occasionally warm and human, she's so odd and quirky that it's uncomfortable to watch.
The guys are all clones of each other. They look and act so much alike that I spent half of the film asking my companion which man was which. In fact nearly everyone on the dance floor looks alike...except the ones that are dressed as "Wizard Of Oz" characters or in a leopard print outfit or naked.
The only exception is Dan (Matt Ross), a co-worker at the book publisher. A political activist, he has a distinctive personality. Until, that is, he is able to get into the club. Then he becomes one more piece of fodder for the scene.
A companion piece to director Whit Stillman's other two films ("Metropolitan", "Barcelona"), the repartee is enjoyable and the look at group social dynamics is almost enticing, but it would be nice if these people had something going in their lives. Oh well, they're young and disco is dying so maybe there's hope.
(Michael Redman has written this column for 23 years and is brave enough to admit that he actually went to a disco club -- twice. Email your confessions to<EMAIL_ADDRESS>[The appeared in the 7/2/98 "Bloomington Voice", Bloomington, Indiana. Michael Redman can be contacted at<EMAIL_ADDRESS>--<EMAIL_ADDRESS>This week's film review at http://www.bvoice.com/ Film reviews archive at http://us.imdb.com/M/reviews_by?Michael%20Redman
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


--- layout: default ---
My research focuses on one consequence of the digital revolution: the pervasiveness of digital traces we leave behind us. I study how we relate to these traces, how we can control them but also how they can enrich our lives. Ongoing projects include: leveraging traces to develop and improve our digital skills by reflecting on past experiences, enabling users to better understand the traces they produce and developing tools to better control how traces are used.
In the past years, I have explored these questions in the context of Biology laboratories, studying how researchers capture, re-visit and reflect on information (see my dissertation).
If you have you own project that can be a good match with my research topic, feel free to reach out as we have funding for visitors. If you are looking for Information Visualisation / Visual Analytics projects in Lyon, check out Romain Vuillemot's webpage.


F1 will not go all-electric - Symonds
Formula 1 will work to become the authority in the area of biofuels rather than join Formula E in the world of electric power.
by GMM F1That is the view of Pat Symonds, a former F1 engineer who now works with the FIA.
"Formula 1 didn't invent the hybrid, but Formula 1 showed what a hybrid could be and it moved people's perceptions of what a hybrid is capable of," he said.
Currently, the rules mandate a 5.75pc biofuel mix, and that should increase to 10pc for 2021. But Symonds indicated that the eventual goal is 100pc.
"The path to that is not completely clear at the moment, but in partnership with the FIA and with the help of the engine manufacturers and the fuel companies, we are looking at the way forward," he said.
"What we cannot do is carry on digging those (fuels) out of the ground. We're going to have to somehow synthesise them and that's what we want Formula 1 to explore and hopefully to lead."
Symonds said F1 will not simply follow Formula E's lead with all-electric power.
"What we can do is we can show the world that there are alternatives to electric power and there are alternatives to storing electricity in heavy and, I have to say, somewhat dirty batteries," he said.
body check tags ::


Background
- I made the fun, popular game, Tetris, from scratch using the software platform JavaFX
- The especially fun/tricky aspects of the project to imeplement were coding the rotation of pieces and the clearing of lines
How the Game Works
- 7 randomly generated pieces fall to the stage
- Pieces can be shifted or rotated by pressing keys on the keyboard
- Pressing the down key accelerates the motion of the piece; pressing space drops the piece
Under the hood
- Each tetris piece is randomly generated, and each piece is composed of 4 wrapper square classes
- The entire tetris board is implemented as a 2-D array
- Inside our handle methods we have to calculate a variety of events (e.g. if the tetris piece tries to go out of the bounds of the board); we use a Timeline to animate the Piece going down


{% extends 'django_project/base_error_page.html' %}
{% block page_title %}HTTP Internal Server Error (500){% endblock %}
{% block error_heading %}HTTP 500 - Internal Server Error{% endblock %}
{% block error_content %}Ooops... something went wrong during server-side processing. Please notify the system administrator about this issue.{% endblock %}


Help Turns Tears Into Smiles
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto, corrupti! Adipisci illum vitae qui, earum iusto fuga, molestias corrupti dignissimos officia pariatur eos quis consequatur distinctio voluptate, accusantium ratione sequi?
Become a Volunteer
Recent
Cause
Raise Tour Funds For a Cause That You Care
The ship set ground on the shore that this group..
The ship set ground on the shore that this group..
The ship set ground on the shore that this group..


INVOICE LIST
Filter / Search
| Company Name | Representative Name | Invoice Number (Latest) | Invoice Status (Latest) | Action |
|---|---|---|---|---|
| Lorem Incorporated | Johnny Doe |<PHONE_NUMBER>01 | Paid | |
| Ipsum Global | Craig Williams |<PHONE_NUMBER>02 | Cancelled | |
| Test Division | Paula Mckee |<PHONE_NUMBER>03 | Pending | |
| Ionics Limited | Juliet Kerr |<PHONE_NUMBER>04 | Paid | |
| Kaizen Unlimited | Cloud Emerson |<PHONE_NUMBER>05 | Cancelled | |
| Survey Inc | Miranda Ackenson |<PHONE_NUMBER>06 | Pending | |
| Comment Division | Yusuke Imugen |<PHONE_NUMBER>07 | Pending | |
| Question Systems | Silvia Loyola |<PHONE_NUMBER>08 | Cancelled | |
| Apex Industries | Hank Cristianson |<PHONE_NUMBER>09 | Paid | |
| Zentopia | Alisa Hil |<PHONE_NUMBER>10 | Pending |


Discussion about Komodo scalability. Komodo has demonstrated 20,000 TPS.
100 messages
Before 05-Dec-19 12:00 AM
Hermes08-Jan-19 07:52 PM
free cofee
Andem08-Jan-19 08:00 PM
nice! thank you
nille08-Jan-19 08:36 PM
thank you
Mylo09-Jan-19 08:13 AM
nice work @blackjok3r who ended up doing whatever url rewriting? or some other way was conceived?
blackjok3r09-Jan-19 08:13 AM
webworker did it...
and gave me pointer on how to fix html display issues... was then just a matter of trial and erroring diffrent things until all links went somewhere or didnt show.
managed to get a pretty decent migratt balst going with just 2 nodes.... however miner locked up... Testing new fix for miner now
Mylo09-Jan-19 08:15 AM
cool man. thanks @webworker01 for your inputs
1
Razzler0409-Jan-19 09:27 AM
Hello all, where do I find my wallet.dat file on windows 10?
I've just upgraded v0.3.2a and my wallet cant sync
et sapling height, if possible from ht.1144186<PHONE_NUMBER>
transition at 1140349 (1140348,<PHONE_NUMBER>) -> (1140349,<PHONE_NUMBER>)
SET SAPLING ACTIVATION height.1140409
sapling activation at 1140409
finished loading blocks
Error: A block chain rewind has been detected that would roll back 3777 blocks! This is larger than the maximum of 99 blocks, and so the node is shutting down for your safety.
Rewind details:
- Current tip: 00000ef54f29fc759ccceca9e278321a65bac73ab27b060f2ac0c77a02c9531e, height 1144186
- Rewinding to: 00000000cc4f641df2c0b3627fa9791f85b758cff562bb14357e428466edc0fa, height 1140408
Please help, human!
: Unable to rewind the database to a pre-upgrade state. You will need to redownload the blockchain.
error in HDD data, might just need to update to latest, if that doesnt work, then you need to resync
komodod exited with code 1, crashed?
support says:Please help to restart wallet and check to see blocks are getting struck on any specific block. If nothing works, Please resync your wallet from scratch.
Note: Take your wallet.dat file and private key backup. Please go to Pirate discord support for more detailed information.
crumb09-Jan-19 09:30 AM
please go to channel #deleted-channel for help. this is a dev channel
Razzler0409-Jan-19 09:31 AM
oh, sorry,
I clicked on the invite from suppot
Pirate discord?
crumb09-Jan-19 09:31 AM
/appdata/
look from there
Razzler0409-Jan-19 09:32 AM
thank you
nuttycoin19-Jan-19 12:05 AM
hi, what consensus mechanism do side chains in KMD use? is it the same dPoW that the KMD main chain uses?
CHMEX19-Jan-19 12:19 AM
Yes apart from Verus which got its own VerusHash algo. I believe you can already set your aglo for new chains now equihash or verushash where default is equihash
not full PoS though? and what PoS algo does that involve?
i'm also curious how side chains can trustlessly validate the generation of coins that have been burned on another chain. do nodes in side chains have to be constantly processing the merkle roots in the main KMD chain?
ty for the info btw
Alright19-Jan-19 08:05 AM
@nuttycoin 100% POS will work with ac_staked=100 if that's what you're asking
Komodo Platform is eliminating the scalability problem for the blockchain industry. Komodo's solution has achieved over 20,000 tx/sec. Learn more here.
but yes, all based on merkle roots, allows chains to verify transactions happened on other chains
jl777c19-Jan-19 10:16 AM
only the merkle roots involved in a specific crosschain tx needs to be validated
it is really a very efficient process to "bind" all the chains in a cluster
nuttycoin20-Jan-19 03:54 AM
@jl777c that makes sense, but how does the validation take place on the tx receiving side? how do i know that the KMD node i am connected to isn't giving me a fake merkle root?
jl777c20-Jan-19 06:31 AM
because you are getting MoMoM as part of the notarizations
so the raw tx -> txid -> validated in merkleroot -> validated in MoM -> validated in MoMoM
like a recursive SPV validation
you need to understand how SPV validation works before you can understand MoMoM
nuttycoin20-Jan-19 07:09 AM
my understanding is that SPV is not totally trustless, as its security requires the light node to rely on the full nodes that it connects to. correct or no?
While network nodes can verify
transactions for themselves, the simplified method can be fooled by an attacker's fabricated
transactions for as long as the attacker can continue to overpower the network.
jl777c20-Jan-19 07:14 AM
yes, in this case the notaries are the nodes that need to be trusted to be making valid MoMoM
there is no overpowering of the notaries
jl777c20-Jan-19 07:25 AM
so it is like making SPV secure and then iterating on it
nuttycoin20-Jan-19 07:38 AM
ok gotcha. so the assumption is that every notary is honest.
jl777c20-Jan-19 07:39 AM
no
the assumption is that the majority of notaries are not dishonest
all the notaries must come to consensus on every notarization. a minority dishonest wont get any notarizations
so to get any fake MoMoM the majority of notaries need to be dishonest and collude with each other
there is a fatal flaw in the game theory for these evil notaries.
who holds the privkey to whatever SPV games they will do? all the evil notaries would need to trust their leader to share the wealth and as any collusion is immediately apparent on the blockchain, this is a onetime thing for any of the colluders, who are then identified as the culprits. and only the evil leader gets any money from it. this is assuming there is success in their shenanigans, which there isnt any guarantee
nuttycoin20-Jan-19 08:05 AM
i'd say bribe-based attacks are slightly more dangerous though. because the theoretical profit-maximizing equation for a notary would be
act malicious if (bribe_reward > (annual_kmd_reward - annual_resource_costs) * (1 + ∑[i=1,∞] ip(1−p) ^ (i−1))) ,
where p = probability of earning a top 30 spot(edited)
whereas some PoS-based threat models require some kind of slashing, in which dishonest nodes not only miss out on potential revenue but also lose assets instantly(edited)
(that notation is kinda unclear also, sorry about that lol)
jl777c20-Jan-19 08:21 AM
except the notaries would be specifically identified
factor in the risk costs, changes the equation
so not only would any top 30 spot is forfeit, there would be prosecution risks
another factor is that a false MoMoM attack is order of magnitude(s) more difficult to conduct than a 51% attack. but at scale this factor becomes small
nuttycoin20-Jan-19 08:38 AM
true, illegality is a significant cost as well albeit hard to estimate
appreciate the answers
grewalsatinder05-Feb-19 05:31 AM
@blackjok3r hey mate if u not using my hetzener servers, can I delete those servers?
I was using 1 and 2 were left for scalling
CC @ns408
blackjok3r05-Feb-19 05:32 AM
lol... yeah this project seemed to stop.. I will just use AWS for everything when we go ahead with it.
We dont need any extra servers...
grewalsatinder05-Feb-19 05:34 AM
True
Mylo07-Feb-19 05:45 AM
Just an update: Project is still on, it took a pause for some bug fixing through Q4 2018 and then the holiday break. The KMD marketing team and AWS will resume meetings in coming weeks to form plans for execution etc.
15
3
1
1
1
2
Dylan201918-Feb-19 05:19 PM
hola
alguno que hable español
y me pueda ayudar
porfavor
0x8818-Feb-19 08:59 PM
@Dylan2019 if you have any questions please in English, or you can use alternative the Spanish channel
smk762 - dracocanis ominator22-Feb-19 01:23 PM
@Dylan2019 ir al #spanish canal por ayuda en español
jeffekoumbou26-Feb-19 11:23 AM
Hello here
Can I have a blockchain dev team member from komodo?
jl777c26-Feb-19 11:24 AM
you cant have them, but you can ask questions here
5
ComputerGenie 👴👴👴26-Feb-19 02:52 PM
I don't know, I bet you could have @blackjok3r for a night for the right price
3
thomasxu28-Feb-19 08:55 PM
Hi guys, anyone know what is the token exchange count for KMD?
Alright01-Mar-19 05:32 AM
@thomasxu what do you mean by that?(edited)
Hollowman900018-Apr-19 12:34 PM
Wouldn’t happen to be going down on Monday and Tuesday would it
The blockchain scaling issue seems to have a lot of really smart people trying solve a lot of really hard problems. In my life, I have met…
kmdkrazy29-Apr-19 04:29 AM
RockSolid17-May-19 07:50 PM
Hey people show is everyone doing?
Ian27-May-19 12:12 AM
@jl777c - So Sharding vs manychains - scrambling/unscrambling vs crosschain merkleroot magic - unless your transactions have high chain affinity, how are you better off ? What makes extreme chain affinity any different to payment relationships vis-à-vis payment channels - is it just a matter of granularity of sharding. The more parallel chains you use the more you will have to maintain locally, and if your affinity does not match the chains native affinity you will be little better off than with a single chain and a larger block size. Sharding requires coordination protocols for cross-shard transactions, you use merkleroot magic
How are they fundamentally different ?
(The comment re "you will be little better off than with a single chain" only applies when you have transaction counts that compare with how many shards/chains you interact with - obviously 1 trade a week is going to be much tighter)
The main point is whether your proposal is just a specific sharding implementation where you have more control over chain affinity ?(edited)
Ian27-May-19 12:26 AM
And how does it compare with Cosmos, Polkadot, Kadena, Harmony, ...
jl777c27-May-19 12:43 AM
in the extreme cases, I am sure you can specify a scenario where sharding vs many chains devolve to being approx the same.
however, let us deal with reality
a single cryptokitties dapp basically saturated the ETH chain. this cannot be denied. Let us now assume there is a second dapp cryptodoggies from a different vendor. I claim that the overlap between cryptokitties and cryptodoggies will be VERY small. How likely is it that they have to share state? they are different dapps from different vendors.
Now, what if there are hundreds of dapps from hundreds of vendors. just how much overlap is there between all these dapps?
doing payments is about the only thing where it is shared globally for all things and your logic could apply, even then it is very likely to be ways to automatically have locality of payments.
However, anybody can see without any formal maths that forcing all cryptokitties, cryptodoggies, cryptobirdies,... into a single chain and then sharding it cannot be anywhere as efficient as simply having independent chains for each one.
The big difference of komodo versus all the other many chains solutions is that komodo doesnt require vendor lockin. maximum independence and each chain is literally its own independent chain that has the option to add dPoW, but not the obligation. there is no per tx fee to pay to a master chain, no deposit needed to be able to make a chain, etc. i argue that the komodo approach is the most decentralized. What happens in all the other systems if the mainchain goes down?
Explorer Links and Money Supply Data for KMD Ecosystem Coins
54 independent chains, the total capacity is well in excess of 10,000 tx/sec. and there is not much crosstalk between chains, in fact, atomic swaps can be done for the times where that is needed.
now imagine a single chain that is the combination of all 54 chains. If any chain comes close to saturating the single chain, 53 other chains suffer. Not to mention that the txfee for everyone goes up. Sharding is basically that. combine all things into a single chain, then somehow split it apart and make it all work. I have no idea how they will achieve this, seems very difficult problem to me.
so maybe with a magical sharding solution you can have a single virtual chain that is composed of many shards, but what have you achieved? A way for all to pay higher txfees
sharding is an attempt to extend the mainchain taxation onto all transactions. komodo is a tax free zone and we dont do contortions to be able to enforce a tax on all usage in the ecosystem
Ian27-May-19 01:37 AM
What you are describing is affinity - and it exists in general computing as well - a typical CPU has L1, L2, L3 cache and maintaining the majority of access to a single cache segment within a layer is the answer to orders of magnitude in performance. By implementing multiple chains you have manually specified domains where affinity is strong. This is good, where you can manage it. It works really well when you have a defined community of interaction and hence well defined strong domains but is not so easy with a general payment system such as Bitcoin where the domains are not so easy to define.
Ian27-May-19 01:53 AM
Perhaps it is because my understanding of the term sharding pre-dates blockchain tech and i assume that the algorithm for splitting shards is configurable.
An example - BarterDEX . Having it's own chain separate from others will segregate DEX traffic from other chain traffic in the Komodo ecosystem. How might you speed that up beyond what is feasible on Layer 1 using more frequent and larger blocks. You could implement Layer 2 but defining useful networks of payment channels is non-trivial. You could shard by pair, but again the spread of activity is usually not evenly spread as trading on BTC/USD and a few major crosses probably swamp all the rest combined. If you define any manual sharding criteria (or multichains) what happens when that changes?
Perhaps the system could look for strongly correlated activity, assign groupings and attempt to minimise cross group activity - it could then shard the traffic according to that grouping, gaining the advantages of affinity whilst not needing to define that grouping in advance
Over time the pattern of activity could change - the grouping of activity perhaps changeing with it, and the layout of the shards with it as well. The consensus mechanism could exchange that sharding criteria so each node could work out which shard it should use at any given time
grewalsatinder27-May-19 05:16 AM
BarterDEX doesn't have any blockchain.
It is only a p2p network.


African Wildlife Foundation helps ensure the safety of
wildlife and wildlife in modern Africa. AWF was established
to focus on Africa’s unique conservation needs.
They are a nonprofit organization that is even expanded
in more areas than wildlife, like the environment and other world issues.


Hi, I'm Kevin Lynch
Bio
I am a Product Analyst at Technically Media and currently enrolled in the Full-Stack Flex bootcamp at Thinkful. I’m passionate about coding because every challenge is like solving a puzzle. I love seeing my work come to life and I find perfecting a complex function to be extremely satisfying.
When I'm not coding, I'm often playing video games. Nowadays, Fortnite is my game of choice, but Rocket League is another favorite. I love to push myself to, incrementally, get better at the things I put my time into. Other than coding and Fortnite, I am enjoying learning to play the electric guitar.
Projects
This application is a 10 question quiz to test your knowledge of Fortnite.
This app can be used to check on NBA games and scores. The home page display the scores of any live games, as well as, all completed games from the last day that games were played. The user may then enter a team, a date, or both to filter their view. Team searches will return the details regarding the next 3 games that team plays and the final scores of the last 3 games they played. Date searches will return all games played on that date or game to be played, depending on if is is in the past or future. Searching both will show any games for the entered team on the specified date.
This app is designed to help local basketball players see what courts have active players. In addition to that, it solves the problem of debating 'Who's Got Next?' or what team is next in line to play on a certain court.
This app is designed to help people plan their weddings. With tons of options out there for each piece of a wedding it be hard to pick the right one and even keep track of all the options. Wedding planner allows you to log your favorites and compare them.


Pi Approximation
A
Monte Carlo method
of approximating pi.
Number of iterations:
This document requires you to enable JavaScript in order to be viewed properly.
Created by
Bill Mei


This is a detail from a picture which appeared long ago in the Hooting Yard Calendar 1993. I reproduce it here partly on a whim, and partly to alert readers to the fact that in the new year I will be auctioning the artwork from one or more Hooting Yard Calendars.  It could be that I'm living in a fool's paradise, but even if that's the case, I would like to ask readers to post expressions of interest in the Comments, so I can get an idea whether to go ahead with this harebrained scheme. An expression of interest is just that, not a commitment, and by all means post anonymously if you so wish. Oh, and I haven't yet decided whether to auction single drawings or a whole calendar's artwork as a set, so you might want to suggest a preference.


{% extends 'layout.html' %} {% block content %}
Click here for your entries
Created by {{ entry.user.email }}


--- layout: default title: "404: Page not found" permalink: 404.html img: vultures.jpg ---
Designer of this page is known to have misplaced few links ... just to keep us fed.


Committers are responsible for reviewing and integrating code changes. The PMC votes to make a contributor a committer based on an assessment of their contributions to the project. Contributions can be made in many ways, and there is no one route to committership. That said, here are the general criteria that the PMC looks for from all potential committers:
A history of sustained contribution to the project. This is a way for a contributor to demonstrate their expertise in an area, and thus their ability to help review and commit contributions by others in that same area. Sustained contribution is also a way of demonstrating commitment to the project, essentially that someone will continue contributing even after they become a committer.
High-quality contributions. As experienced contributors, committers set an example for others in the project, and help inculcate a culture of high-quality contributions. For code contributions, this means clean, documented code which includes unit tests if appropriate and passes precommit checks. For reviews, this means thorough, actionable feedback, and a +1 vote (even non-binding) only when there is a high degree of confidence in the change.
Community involvement. Contributors are always expected to be polite, constructive, and respectful of others during community interactions. Disagreement can (and will) happen over technical issues, but the discussion should remain friendly and focused on technical merits. Committers also have the additional responsibility of mentoring newer contributors, as well as helping to grow the community through actions like responding to emails on the user and dev list.
Here are a few hypothetical example paths to a commit bit:
Han Meimei works at a big company operating a large Apache Hadoop cluster. While deploying the newest version of Hadoop to her staging cluster, she discovers a number of bugs and performance regressions. She files JIRAs for these issues, and is able to post patches for some of them. On the remaining JIRAs, she works with other community members by doing additional debugging on her cluster and testing and reviewing intermediate patches. Additionally, Han Meimei works with the release manager of the release line, Lei Li, to make sure critical issues are backported to the next maintenance release. Han Meimei also makes an effort to help fix and review other critical issues targeted at the next maintenance release, even though her cluster is not currently affected. She continues doing similar stabilization work for subsequent maintenance releases in this release line, demonstrating her commitment to shipping high-quality upstream releases.
Elise works at a commercial big data vendor as a developer. Elise ramps up by doing some newbie JIRAs, but then gets involved with a large cross-company development effort happening on a feature branch. Elise helps to review the design of the feature, providing constructive feedback, and works with other community members to divide the work into subtasks. At this point, the PMC grants Elise branch committership to accelerate development. Elise submits good patches for a number of subtasks, and shows care and thoroughness when reviewing and committing code of others. After the feature branch is later merged to trunk, Elise continues to find and fix bugs related to the feature, as well as reviewing code contributions from others.
Raj works as a test engineer at a commercial big data vendor. Raj notices the lack of integration testing upstream, and contributes a test harness for fault-injection testing which is committed to the project. Raj coordinates with the PMC to get the test harness running on Apache infrastructure, and starts triaging the output and filing JIRAs for relevant bugs with reproductions. Raj helps with gathering logs and reproducing issues, and continues making improvements to the test harness.
Peter is a technical writer interested in improving Hadoop’s documentation. He starts by fixing outdated information and incorrect examples, reaching out to subject matter experts and exploring the codebase to clarify technical details. As Peter becomes more familiar with the set of documentation, he realizes that a newly contributed feature didn’t include sufficient documentation, and contributes a guide on how to setup and use the feature that also explains some of the design decisions that influenced API design. Peter continues to broaden his doc contributions to more and more areas, and also is active answering user questions on the mailing list. This demonstrates his knowledge of the project, attention to detail, and also his user-focus.