perlfaq - Frequently asked questions about Perl
The perlfaq comprises several documents that answer the most commonly asked
questions about Perl and Perl programming. It's divided by topic into nine
major sections outlined in this document.
The perlfaq is an evolving document. Read the latest version at
<http://learn.perl.org/faq/>. It is also included in the standard Perl
distribution.
The "perldoc" command line tool is part of the
standard Perl distribution. To read the perlfaq:
$ perldoc perlfaq
To search the perlfaq question headings:
$ perldoc -q open
Review <https://github.com/perl-doc-cats/perlfaq/wiki>. If you don't find
your suggestion create an issue or pull request against
<https://github.com/perl-doc-cats/perlfaq>.
Once approved, changes are merged into
<https://github.com/tpf/perlfaq>, the repository which drives
<http://learn.perl.org/faq/>, and they are distributed with the next
Perl 5 release.
Try the resources in perlfaq2.
- perlfaq1 - General Questions About Perl
- perlfaq2 - Obtaining and Learning about Perl
- perlfaq3 - Programming Tools
- perlfaq4 - Data Manipulation
- perlfaq5 - Files and Formats
- perlfaq6 - Regular Expressions
- perlfaq7 - General Perl Language Issues
- perlfaq8 - System Interaction
- perlfaq9 - Web, Email and Networking
This section of the FAQ answers very general, high-level questions about Perl.
- What is Perl?
- Who supports Perl? Who develops it? Why is it free?
- Which version of Perl should I use?
- What are Perl 4, Perl 5, or Perl 6?
- What is Perl 6?
- How stable is Perl?
- How often are new versions of Perl released?
- Is Perl difficult to learn?
- How does Perl compare with other languages like Java, Python, REXX,
Scheme, or Tcl?
- Can I do [task] in Perl?
- When shouldn't I program in Perl?
- What's the difference between "perl" and "Perl"?
- What is a JAPH?
- How can I convince others to use Perl?
This section of the FAQ answers questions about where to find source and
documentation for Perl, support, and related matters.
- What machines support Perl? Where do I get it?
- How can I get a binary version of Perl?
- I don't have a C compiler. How can I build my own Perl interpreter?
- I copied the Perl binary from one machine to another, but scripts don't
work.
- I grabbed the sources and tried to compile but gdbm/dynamic
loading/malloc/linking/... failed. How do I make it work?
- What modules and extensions are available for Perl? What is CPAN?
- Where can I get information on Perl?
- What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
- Where can I post questions?
- Perl Books
- Which magazines have Perl content?
- Which Perl blogs should I read?
- What mailing lists are there for Perl?
- Where can I buy a commercial version of Perl?
- Where do I send bug reports?
This section of the FAQ answers questions related to programmer tools and
programming support.
- How do I do (anything)?
- How can I use Perl interactively?
- How do I find which modules are installed on my system?
- How do I debug my Perl programs?
- How do I profile my Perl programs?
- How do I cross-reference my Perl programs?
- Is there a pretty-printer (formatter) for Perl?
- Is there an IDE or Windows Perl Editor?
- Where can I get Perl macros for vi?
- Where can I get perl-mode or cperl-mode for emacs?
- How can I use curses with Perl?
- How can I write a GUI (X, Tk, Gtk, etc.) in Perl?
- How can I make my Perl program run faster?
- How can I make my Perl program take less memory?
- Is it safe to return a reference to local or lexical data?
- How can I free an array or hash so my program shrinks?
- How can I make my CGI script more efficient?
- How can I hide the source for my Perl program?
- How can I compile my Perl program into byte code or C?
- How can I get "#!perl" to work on
[MS-DOS,NT,...]?
- Can I write useful Perl programs on the command line?
- Why don't Perl one-liners work on my DOS/Mac/VMS system?
- Where can I learn about CGI or Web programming in Perl?
- Where can I learn about object-oriented Perl programming?
- Where can I learn about linking C with Perl?
- I've read perlembed, perlguts, etc., but I can't embed perl in my C
program; what am I doing wrong?
- When I tried to run my script, I got this message. What does it mean?
- What's MakeMaker?
This section of the FAQ answers questions related to manipulating numbers,
dates, strings, arrays, hashes, and miscellaneous data issues.
- Why am I getting long decimals (eg, 19.9499999999999) instead of the
numbers I should be getting (eg, 19.95)?
- Why is int() broken?
- Why isn't my octal data interpreted correctly?
- Does Perl have a round() function? What about ceil() and
floor()? Trig functions?
- How do I convert between numeric representations/bases/radixes?
- Why doesn't & work the way I want it to?
- How do I multiply matrices?
- How do I perform an operation on a series of integers?
- How can I output Roman numerals?
- Why aren't my random numbers random?
- How do I get a random number between X and Y?
- How do I find the day or week of the year?
- How do I find the current century or millennium?
- How can I compare two dates and find the difference?
- How can I take a string and turn it into epoch seconds?
- How can I find the Julian Day?
- How do I find yesterday's date?
- Does Perl have a Year 2000 or 2038 problem? Is Perl Y2K compliant?
- How do I validate input?
- How do I unescape a string?
- How do I remove consecutive pairs of characters?
- How do I expand function calls in a string?
- How do I find matching/nesting anything?
- How do I reverse a string?
- How do I expand tabs in a string?
- How do I reformat a paragraph?
- How can I access or change N characters of a string?
- How do I change the Nth occurrence of something?
- How can I count the number of occurrences of a substring within a
string?
- How do I capitalize all the words on one line?
- How can I split a [character]-delimited string except when inside
[character]?
- How do I strip blank space from the beginning/end of a string?
- How do I pad a string with blanks or pad a number with zeroes?
- How do I extract selected columns from a string?
- How do I find the soundex value of a string?
- How can I expand variables in text strings?
- What's wrong with always quoting "$vars"?
- Why don't my <<HERE documents work?
- What is the difference between a list and an array?
- What is the difference between $array[1] and
@array[1]?
- How can I remove duplicate elements from a list or array?
- How can I tell whether a certain element is contained in a list or
array?
- How do I compute the difference of two arrays? How do I compute the
intersection of two arrays?
- How do I test whether two arrays or hashes are equal?
- How do I find the first array element for which a condition is true?
- How do I handle linked lists?
- How do I handle circular lists?
- How do I shuffle an array randomly?
- How do I process/modify each element of an array?
- How do I select a random element from an array?
- How do I permute N elements of a list?
- How do I sort an array by (anything)?
- How do I manipulate arrays of bits?
- Why does defined() return true on empty arrays and hashes?
- How do I process an entire hash?
- How do I merge two hashes?
- What happens if I add or remove keys from a hash while iterating over
it?
- How do I look up a hash element by value?
- How can I know how many entries are in a hash?
- How do I sort a hash (optionally by value instead of key)?
- How can I always keep my hash sorted?
- What's the difference between "delete" and "undef"
with hashes?
- Why don't my tied hashes make the defined/exists distinction?
- How do I reset an each() operation part-way through?
- How can I get the unique keys from two hashes?
- How can I store a multidimensional array in a DBM file?
- How can I make my hash remember the order I put elements into it?
- Why does passing a subroutine an undefined element in a hash create
it?
- How can I make the Perl equivalent of a C structure/C++ class/hash or
array of hashes or arrays?
- How can I use a reference as a hash key?
- How can I check if a key exists in a multilevel hash?
- How can I prevent addition of unwanted keys into a hash?
- How do I handle binary data correctly?
- How do I determine whether a scalar is a number/whole/integer/float?
- How do I keep persistent data across program calls?
- How do I print out or copy a recursive data structure?
- How do I define methods for every class/object?
- How do I verify a credit card checksum?
- How do I pack arrays of doubles or floats for XS code?
This section deals with I/O and the "f" issues: filehandles, flushing,
formats, and footers.
- How do I flush/unbuffer an output filehandle? Why must I do this?
- How do I change, delete, or insert a line in a file, or append to the
beginning of a file?
- How do I count the number of lines in a file?
- How do I delete the last N lines from a file?
- How can I use Perl's "-i" option from
within a program?
- How can I copy a file?
- How do I make a temporary file name?
- How can I manipulate fixed-record-length files?
- How can I make a filehandle local to a subroutine? How do I pass
filehandles between subroutines? How do I make an array of
filehandles?
- How can I use a filehandle indirectly?
- How can I open a filehandle to a string?
- How can I set up a footer format to be used with write()?
- How can I write() into a string?
- How can I output my numbers with commas added?
- How can I translate tildes (~) in a filename?
- How come when I open a file read-write it wipes it out?
- Why do I sometimes get an "Argument list too long" when I use
<*>?
- How can I open a file named with a leading ">" or trailing
blanks?
- How can I reliably rename a file?
- How can I lock a file?
- Why can't I just open(FH, ">file.lock")?
- I still don't get locking. I just want to increment the number in the
file. How can I do this?
- All I want to do is append a small amount of text to the end of a file. Do
I still have to use locking?
- How do I randomly update a binary file?
- How do I get a file's timestamp in perl?
- How do I set a file's timestamp in perl?
- How do I print to more than one file at once?
- How can I read in an entire file all at once?
- How can I read in a file by paragraphs?
- How can I read a single character from a file? From the keyboard?
- How can I tell whether there's a character waiting on a filehandle?
- How do I do a "tail -f" in perl?
- How do I dup() a filehandle in Perl?
- How do I close a file descriptor by number?
- Why can't I use "C:\temp\foo" in DOS paths? Why doesn't
`C:\temp\foo.exe` work?
- Why doesn't glob("*.*") get all the files?
- Why does Perl let me delete read-only files? Why does
"-i" clobber protected files? Isn't this
a bug in Perl?
- How do I select a random line from a file?
- Why do I get weird spaces when I print an array of lines?
- How do I traverse a directory tree?
- How do I delete a directory tree?
- How do I copy an entire directory?
This section is surprisingly small because the rest of the FAQ is littered with
answers involving regular expressions. For example, decoding a URL and
checking whether something is a number can be handled with regular
expressions, but those answers are found elsewhere in this document (in
perlfaq9 : "How do I decode or create those %-encodings on the web"
and perlfaq4 : "How do I determine whether a scalar is a
number/whole/integer/float", to be precise).
- How can I hope to use regular expressions without creating illegible and
unmaintainable code?
- I'm having trouble matching over more than one line. What's wrong?
- How can I pull out lines between two patterns that are themselves on
different lines?
- How do I match XML, HTML, or other nasty, ugly things with a regex?
- I put a regular expression into $/ but it didn't work. What's wrong?
- How do I substitute case-insensitively on the LHS while preserving case on
the RHS?
- How can I make "\w" match national
character sets?
- How can I match a locale-smart version of
"/[a-zA-Z]/" ?
- How can I quote a variable to use in a regex?
- What is "/o" really for?
- How do I use a regular expression to strip C-style comments from a
file?
- Can I use Perl regular expressions to match balanced text?
- What does it mean that regexes are greedy? How can I get around it?
- How do I process each word on each line?
- How can I print out a word-frequency or line-frequency summary?
- How can I do approximate matching?
- How do I efficiently match many regular expressions at once?
- Why don't word-boundary searches with
"\b" work for me?
- Why does using $&, $`, or $' slow my program down?
- What good is "\G" in a regular
expression?
- Are Perl regexes DFAs or NFAs? Are they POSIX compliant?
- What's wrong with using grep in a void context?
- How can I match strings with multibyte characters?
- How do I match a regular expression that's in a variable?
This section deals with general Perl language issues that don't clearly fit into
any of the other sections.
- Can I get a BNF/yacc/RE for the Perl language?
- What are all these $@%&* punctuation signs, and how do I know when to
use them?
- Do I always/never have to quote my strings or use semicolons and
commas?
- How do I skip some return values?
- How do I temporarily block warnings?
- What's an extension?
- Why do Perl operators have different precedence than C operators?
- How do I declare/create a structure?
- How do I create a module?
- How do I adopt or take over a module already on CPAN?
- How do I create a class?
- How can I tell if a variable is tainted?
- What's a closure?
- What is variable suicide and how can I prevent it?
- How can I pass/return a {Function, FileHandle, Array, Hash, Method,
Regex}?
- How do I create a static variable?
- What's the difference between dynamic and lexical (static) scoping?
Between local() and my()?
- How can I access a dynamic variable while a similarly named lexical is in
scope?
- What's the difference between deep and shallow binding?
- Why doesn't "my($foo) = <$fh>;" work right?
- How do I redefine a builtin function, operator, or method?
- What's the difference between calling a function as &foo and
foo()?
- How do I create a switch or case statement?
- How can I catch accesses to undefined variables, functions, or
methods?
- Why can't a method included in this same file be found?
- How can I find out my current or calling package?
- How can I comment out a large block of Perl code?
- How do I clear a package?
- How can I use a variable as a variable name?
- What does "bad interpreter" mean?
- Do I need to recompile XS modules when there is a change in the C
library?
This section of the Perl FAQ covers questions involving operating system
interaction. Topics include interprocess communication (IPC), control over the
user-interface (keyboard, screen and pointing devices), and most anything else
not related to data manipulation.
- How do I find out which operating system I'm running under?
- How come exec() doesn't return?
- How do I do fancy stuff with the keyboard/screen/mouse?
- How do I print something out in color?
- How do I read just one key without waiting for a return key?
- How do I check whether input is ready on the keyboard?
- How do I clear the screen?
- How do I get the screen size?
- How do I ask the user for a password?
- How do I read and write the serial port?
- How do I decode encrypted password files?
- How do I start a process in the background?
- How do I trap control characters/signals?
- How do I modify the shadow password file on a Unix system?
- How do I set the time and date?
- How can I sleep() or alarm() for under a second?
- How can I measure time under a second?
- How can I do an atexit() or setjmp()/longjmp()?
(Exception handling)
- Why doesn't my sockets program work under System V (Solaris)? What does
the error message "Protocol not supported" mean?
- How can I call my system's unique C functions from Perl?
- Where do I get the include files to do ioctl() or
syscall()?
- Why do setuid perl scripts complain about kernel problems?
- How can I open a pipe both to and from a command?
- Why can't I get the output of a command with system()?
- How can I capture STDERR from an external command?
- Why doesn't open() return an error when a pipe open fails?
- What's wrong with using backticks in a void context?
- How can I call backticks without shell processing?
- Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on
MS-DOS)?
- How can I convert my shell script to perl?
- Can I use perl to run a telnet or ftp session?
- How can I write expect in Perl?
- Is there a way to hide perl's command line from programs such as
"ps"?
- I {changed directory, modified my environment} in a perl script. How come
the change disappeared when I exited the script? How do I get my changes
to be visible?
- How do I close a process's filehandle without waiting for it to
complete?
- How do I fork a daemon process?
- How do I find out if I'm running interactively or not?
- How do I timeout a slow event?
- How do I set CPU limits?
- How do I avoid zombies on a Unix system?
- How do I use an SQL database?
- How do I make a system() exit on control-C?
- How do I open a file without blocking?
- How do I tell the difference between errors from the shell and perl?
- How do I install a module from CPAN?
- What's the difference between require and use?
- How do I keep my own module/library directory?
- How do I add the directory my program lives in to the module/library
search path?
- How do I add a directory to my include path (@INC) at runtime?
- Where are modules installed?
- What is socket.ph and where do I get it?
This section deals with questions related to running web sites, sending and
receiving email as well as general networking.
- Should I use a web framework?
- Which web framework should I use?
- What is Plack and PSGI?
- How do I remove HTML from a string?
- How do I extract URLs?
- How do I fetch an HTML file?
- How do I automate an HTML form submission?
- How do I decode or create those %-encodings on the web?
- How do I redirect to another page?
- How do I put a password on my web pages?
- How do I make sure users can't enter values into a form that causes my CGI
script to do bad things?
- How do I parse a mail header?
- How do I check a valid mail address?
- How do I decode a MIME/BASE64 string?
- How do I find the user's mail address?
- How do I send email?
- How do I use MIME to make an attachment to a mail message?
- How do I read email?
- How do I find out my hostname, domainname, or IP address?
- How do I fetch/put an (S)FTP file?
- How can I do RPC in Perl?
Tom Christiansen wrote the original perlfaq then expanded it with the help of
Nat Torkington. brian d foy substantially edited and expanded the perlfaq.
perlfaq-workers and others have also supplied feedback, patches and
corrections over the years.
Tom Christiansen wrote the original version of this document. brian d foy
<EMAIL_ADDRESS>wrote this version.
See the individual perlfaq documents for additional copyright information.
This document is available under the same terms as Perl itself.
Code examples in all the perlfaq documents are in the public domain. Use
them as you see fit (and at your own risk with no warranty from anyone).


Worker Nodes
These are the nodes that
will run map or reduce jobs. They are not expected to stay around forever and
in order to join the system, the user visiting the 3rd
party website must opt-in.
UI Elements - /src/views/worker.jade, /src/public/javascripts/worker.coffee
For the demo we talked
about having a basic website that explains Countdera
with the actual client on the side. This will allow audience members to join
the network and read about it at the same time.
Opt-in view
Something that says
“Click to help Science” or something to that effect.
Participant view
This could simply be a
white square with lines of text being appended to a scrollable element. The
lines of text would be status messages that are set at various parts of the
mapping or reducing jobs.
Functions - /src/public/javascripts/client.coffee, /src/public/javascripts/lib/models/client.coffee
These are actions that
will need to be performed in javascript for the
worker nodes.
opt_in()
//not actually there,
run is just called
This gets called when
the user clicks on the opt-in button. When this happens, initialize a client
object to get an Id, start heartbeating, and mark
state as IDLE.
finish_job()
When a node gets a JOB_DONE message from the server, it should
clean up its state and become IDLE
again. This includes clearing out local map_output
data and all reduce output lines.
Mapper Functions - same files as functions
start_map(map_start_message)
This function gets called
when the client object receives a MAP_START
type message from the server. This message needs to contain the job_id and the url
of the data that this mapper should retrieve. The first thing the client should
do is update it’s state from IDLE to MAPPER. The
client can then call get_data(url) on the url
and retrieve the mapping code from firebase with the job_id.
Once get_data(url)
completes, the mapper should run the mapping code on the data to generate the
map output data with run_map_job(data, map_code) where data is an array of lines of the input file
and map_code is the string representation of the
mapping code retrieved from Firebase.
Once run_map_job
completes, store the resulting data on the client object and call map_done(job_id).
get_data(url)
This function needs to
request the page specified by the url
and parse the data into an array of lines of strings. If we want to be fancy
with this function, we could try to find a library that strips away html so we
can parse arbitrary web pages (maybe something like readability?). This
function should return a list of lines of the input file and will likely need
to use a deferred so the start_map function can wait
on the data.
run_map_job(data, map_code)
This function actually
performs the mapping job. One way to do this is to first make a nested function
called emit(key, object) that when called adds the
key, object pair to an array that we will output later. Now that the emit
function is in scope, we can define another function called map(data)
that runs exec on the string representation of the mapping code. In order for
this to work we need to make sure that the mapping code has been stripped of
the first and last line (which would explain the map function interface they
are working with).
Once map(data)
has been defined, it can be called on the actual data, and then we output the
array that is added to by our emit(key, object) function. Note that since we’re
sending this, the object that they emit for each key can’t have functions or
anything that can’t be serialized through JSON.
map_done(job_id)
This function updates
the client’s state to MAPPER_DONE. It
then sends a message to the server MAP_DONE
that includes the job_id it was working on. The
server will then send back a REDUCE_NODES
message that will need to be processed.
send_map_data(reduce_node_list)
This function is sent by
the server to inform the mapper of a list of reducers to send the map output
data to. Whenever the mapper gets one of these messages, he should begin
sending all of the map output data to the proper reducers.
The sending could work
as follows: Given the number of reducers and the ordered list of them, iterate
through the list of all (key, object) pairs in the map_output
and hash the key, modulo the result with the number of reducers and send the
pair to the reducer at that index. This message should be a MAP_OUTPUT message that contains the index of
the mapper and the pair (the index being the index of the URL that was
requested in the list of URLs for the job). Firebase guarantees FIFO ordering
and delivery but we still need to make sure the reducer knows when it has all
of the results from the given mapper. Since we have FIFO, an easy way to do
this would be to send a END_OF_MAP_OUTPUT
message to the reducer that also includes the index so it knows when it has all
of the results from a mapper. In addition, we will need to send a START_OF_MAP_OUTPUT message to the reducer to
inform it to invalidate what it has already received from a mapper with our
index in the event that a previous mapper died.
After sending all of the
map data, the mapper needs to remain in the MAPPER_DONE
state until the entire job is done so that if a reducer dies, the server can
send another REDUCE_NODES message and
recover.
Reducer Functions - same files as Functions
start_reduce(start_reduce_message)
When a worker node
receives a START_REDUCE message, the
message should contain the job_id and the number of
mappers involved in the job. It’s important that the reducers only treat the
mappers by the index of them (instead of id) because the actual mappers could
change / die / be restarted. At this point the worker node should change its
state to REDUCER and it should start
listening for MAP_OUTPUT messages.
add_map_output(map_output_message)
The reducer should build
up a map on the client object of the map_output. The
map should go from mapper_index to the map output
pairs from each mapper. Once a END_OF_MAP_OUTPUT
message is received from the mapper index, a boolean
array should be updated and once the last one is received, we can call the start_reduce()
method for the reducer.
There’s an issue here
with determining if the mapper dies while sending the map output… the reducer
could wait here forever. We might need a system so that if it’s been more than
15 seconds or so since the last map_output came from
a mapper that isn’t done, we tell the server to restart the mapper.
do_reduce()
This should only be
called after the reducer has put all of the map output in the index to map_output pairs map. Once this is
called, this method should iterate through it and generate a new map from key
to lists of objects for each key. Once this new map has been generated, we need
to build up a local emit(output_line)
and reduce(key, list_of_objects) method to call the
reduce code with. Once again the reduce code is retrieved from the job id.
These functions are generated in a similar manner to the mappers
functions. After we make the functions, we iterate through the new map and pass
in each key, list_of_object pair to the reduce
function.
The emit(line)
function should output each line of the output and each line should be
associated with the key that the reduce function called so we should
effectively build up a new map of key -> list of output lines. This map
should then be sent to the IOServer once it is
completely built. This will be done in the finish_reduce() method. //which I
call immediately
finish_reduce()
This function should be
called when we have a full map of key -> output line. This function should
add to an append only queue on the OUTPUT node that the IOServer
is watching. The output objects should be added to a node named the job_id under the output node. Each output object should
include both the key and the list of lines. Once all objects have been sent to
Firebase, the reducer should send a REDUCE_DONE
message to the server. This should also change the node’s state to REDUCER_DONE.
Client Nodes
These are the nodes that
want to run a job. The client side javascript here
will handle submitting the job, monitoring its progress, and displaying a link
to the output file once it has been flushed to the disk.
UI Elements - /src/views/master.jade, /src/public/javascripts/master.coffee
This will be the page
that people see when they want to run their jobs. It should first show a textarea where they can paste their map code along with the
function header at the top and a close brace at the bottom with an indication
that they shouldn’t touch those lines in a comment. When someone hits Save
after entering the map code and tags, we call save_map_code(). Then we do the same
thing for reduce, then we show a textarea for the url input and when they click run, we fire off start_job().
Functions - /src/public/javascripts/master.coffee, /src/public/javascripts/lib/models/master.coffee
init()
This function makes a
firebase call to generate an Id for the job that will be run. This will allow
the mapper and reducer code ids to be stored and will include all current
statuses of the job.
save_map_code(map_code, tag_list)
This function takes in
the string representation of the code and pushes it on MAP_CODE reference which will generate a unique id for it. This id
is then pushed onto references under MAP_CODE_TAGS
(one for each tag in tag_list) for eventual easy
lookup. In addition, the map_id is saved in the job
state under the JOB_STATE reference’s
entry for the job_id generated in init().
save_reduce_code(reduce_code, tag_list)
This function does the
same thing as save_map_code but uses the REDUCE_CODE and REDUCE_CODE_TAGS
references instead.
save_urls(url_list)
This function adds the
list of urls to the job state reference to the job
and calls start_job(job_id).
start_job(job_id)
This function adds a
watcher on a status tag of the job reference so that we can display neat things
to the person running the job and know when it has finished. At this point, we
also send a START_JOB message to the
server with the job_id included.
finish_job(job_id)
When the client sees
that the link to the output of the job is in the job reference on Firebase, he
sends a FINISH_JOB message to the
server.
Server
At this point, the
server is in charge of knowing what nodes are alive in the system and making
sure jobs run to completion. This will be accomplished by the workers sending
messages to the server and the server sending messages to the workers and
updating the job state that the client is watching.
watch_job(job_id)
This is called when the
server receives a START_JOB message. At
this point, the server should create a new JobWatcher
object with the job_id, add it to a list of them, and
call the JobWatcher’s run()
method. Messages that are processed from the server will need to be dispatched
to the proper JobWatcher to handle. They should just
be pushed onto an array of messages that the JobWatcher
has.
finish_job(job_id)
When the server receives
a FINISH_JOB message, it calls this
method. This makes sure that the JobWatcher is
killed.
JobWatcher.run()
This method will start a
setInterval loop to check on the job and make sure
that progress is being made. This method will contain all of the logic for
updating the state value of the job that the client is watching and should
essentially operate as a state machine. When this is called for the first time,
it should update the state field on the right Firebase job reference to
STARTING before starting the loop.
Inside the loop, we
should read the state value of the job. Below I’ve listed out the possible
states and when to move from one to the other.
IOServer
This server watches the OUTPUT Firebase reference for child additions.
When a node is added, the result of a job is being appended to that node. We
start creating a file with the name of the node that was added and start
watching that node for line additions. For each addition, we write out the key
and each line to disk and remove the entry from the Firebase node to save
space.
Under the
IO_SERVER_MESSAGE_REF there will be three types of messages for reduces to
write out their output. The types are START_REDUCER_OUTPUT, REDUCER_OUTPUT, STOP_REDUCER_OUTPUT. START_REDUCER_OUTPUT and
STOP_REDUCER_OUTPUT will look like the following:
{ name: START_REDUCER_OUTPUT, reducer: id, job: jobid }
{ name: STOP_REDUCER_OUTPUT, reducer: id, job: jobid }
The REDUCER_OUTPUT will
look like
{ name: REDUCER_OUTPUT, reducer: id, key: key, lines:
lines }
{ name: START_JOB, numReducers:
number, job: jobid }


As a Software Engineer, I'm learning all I can about software development, full project workaround and planification, and coding practices, from university subjects (Such as Software Project Planification, or Software Architecture) and at work, leaded in core to web technologies, such as RESTful API's, Design Patterns...
Development of new features and products for the company. Robust SOLID principles with Design Patterns, achieving robust, encapsulated and reusable products. Creation of interconected microservices, deployed to Azure. Metrics driven approaches with NewRelic.
Responsibilities:
Methodologies and frameworks:
Achievements
Migration of old site to a new one. Reduced SEO impact by some SEO tasks, such as redirections, retrocompatibility subpages, etc. provided by a SEO team. Development of new features, such as web widgets for Sitefinity CMS. Multiple database administration and improvement for databases of more than 5 milion registers.


On the list-all-posts page on this blog I wanted to group posts by year and show the year as a section-heading.
I found a StackOverflow answer that suggested using the group_by_exp
filter in Liquid. I used it as follows:
{% assign postsByYear = site.posts | group_by_exp:"post", "post.date | date: '%Y'" %}
{% for year in postsByYear %}

{{ year.name }}

{% for post in year.items %}

{{ post.title }}

{{ post.summary }}

{% endfor %}

{% endfor %}
If you want to further do sub-sections by month then you can use something like this:
{% assign postsByYear = site.posts | group_by_exp:"post", "post.date | date: '%Y'" %}
{% for year in postsByYear %}

{{ year.name }}

{% assign postsByMonth = year.items | group_by_exp:"post", "post.date | date: '%B'" %}
{% for month in postsByMonth %}

{{ month.name }}

{% for post in month.items %}

{{ post.title }}

{{ post.summary }}

{% endfor %}

{% endfor %}

{% endfor %}


Sphinx uses the Jinja templating engine for its HTML templates. Jinja is a text-based engine, and inspired by Django templates, so anyone having used Django will already be familiar with it. It also has excellent documentation for those who need to make themselves familiar with it.
No. You have several other options:
The default templating language in Sphinx is Jinja. It’s Django/Smarty inspired and easy to understand. The most important concept in Jinja is template inheritance, which means that you can overwrite only specific blocks within a template, customizing it while also keeping the changes at a minimum.
To customize the output of your documentation you can override all the templates (both the layout templates and the child templates) by adding files with the same name as the original filename into the template directory of the structure the Sphinx quickstart generated for you.
Sphinx will look for templates in the folders of :confval:`templates_path` first, and if it can’t find the template it’s looking for there, it falls back to the selected theme’s templates.
A template contains variables, which are replaced with values when the template is evaluated, tags, which control the logic of the template and blocks which are used for template inheritance.
Sphinx’ basic theme provides base templates with a couple of blocks it will fill with data. These are located in the themes/basic subdirectory of the Sphinx installation directory, and used by all builtin Sphinx themes. Templates with the same name in the :confval:`templates_path` override templates supplied by the selected theme.
For example, to add a new link to the template area containing related links all you have to do is to add a new template called layout.html with the following contents:
{% extends "!layout.html" %}
{% block rootrellink %}

Project Homepage »

{{ super() }}
{% endblock %}
By prefixing the name of the overridden template with an exclamation mark, Sphinx will load the layout template from the underlying HTML theme.
Important: If you override a block, call {{ super() }} somewhere to render the block’s content in the extended template – unless you don’t want that content to show up.
The builtin basic theme supplies the templates that all builtin Sphinx themes are based on. It has the following elements you can override or use:
The following blocks exist in the layout.html template:
This block contains the relation bar, the list of related links (the parent documents on the left, and the links to index, modules etc. on the right). relbar1 appears before the document, relbar2 after the document. By default, both blocks are filled; to show the relbar only before the document, you would override relbar2 like this:
{% block relbar2 %}{% endblock %}
A possible location for a sidebar. sidebar1 appears before the document and is empty by default, sidebar2 after the document and contains the default sidebar. If you want to swap the sidebar location override this and call the sidebar helper:
{% block sidebar1 %}{{ sidebar() }}{% endblock %}
{% block sidebar2 %}{% endblock %}
(The sidebar2 location for the sidebar is needed by the sphinxdoc.css stylesheet, for example.)
The following four blocks are only used for pages that do not have assigned a list of custom sidebars in the :confval:`html_sidebars` config value. Their use is deprecated in favor of separate sidebar templates, which can be included via :confval:`html_sidebars`.
The table of contents within the sidebar.
Deprecated since version 1.0.
The relation links (previous, next document) within the sidebar.
Deprecated since version 1.0.
The “Show source” link within the sidebar (normally only shown if this is enabled by :confval:`html_show_sourcelink`).
Deprecated since version 1.0.
The search box within the sidebar. Override this if you want to place some content at the bottom of the sidebar.
Deprecated since version 1.0.
Inside templates you can set a couple of variables used by the layout template using the {% set %} tag:
The delimiter for the items on the left side of the related bar. This defaults to ' »' Each item in the related bar ends with the value of this variable.
The delimiter for the items on the right side of the related bar. This defaults to ' |'. Each item except of the last one in the related bar ends with the value of this variable.
Overriding works like this:
{% extends "!layout.html" %}
{% set reldelim1 = ' >' %}
Add additional script files here, like this:
{% set script_files = script_files + ["_static/myscript.js"] %}
Similar to script_files, for CSS files.
Sphinx provides various Jinja functions as helpers in the template. You can use them to generate links or output multiply used elements.
Return the path to a Sphinx document as a URL. Use this to refer to built documents.
Return the path to a file which is a filename relative to the root of the generated output. Use this to refer to static files.
Check if a document with the name document exists.
Return the rendered sidebar.
Return the rendered relation bar.
These global variables are available in every template and are safe to use. There are more, but most of them are an implementation detail and might change in the future.
The name of the builder (e.g. html or htmlhelp).
The value of :confval:`copyright`.
The title of the documentation (the value of :confval:`html_title`), except when the “single-file” builder is used, when it is set to None.
True if the built HTML is meant to be embedded in some viewing application that handles navigation, not the web browser, such as for HTML help or Qt help formats. In this case, the sidebar is not included.
The path to the HTML favicon in the static path, or ''.
The value of the builder’s out_suffix attribute, i.e. the file name extension that the output files will get. For a standard HTML builder, this is usually .html.
True if the reST document sources are copied (if :confval:`html_copy_source` is true).
The build date.
The path to the HTML logo image in the static path, or ''.
The value of :confval:`master_doc`, for usage with pathto().
The next document for the navigation. This variable is either false or has two attributes link and title. The title contains HTML markup. For example, to generate a link to the next page, you can use this snippet:
{% if next %}
{{ next.title }}
{% endif %}
The “page name” of the current file, i.e. either the document name if the file is generated from a reST source, or the equivalent hierarchical name relative to the output directory ([directory/]filename_without_extension).
The value of :confval:`project`.
The value of :confval:`release`.
A list of links to put at the left side of the relbar, next to “next” and “prev”. This usually contains links to the general index and other indices, such as the Python module index. If you add something yourself, it must be a tuple (pagename, link title, accesskey, link text).
The value of :confval:`html_short_title`.
True if :confval:`html_show_sourcelink` is true.
The version of Sphinx used to build.
The name of the main stylesheet, as given by the theme or :confval:`html_style`.
The title of the current document, as used in the <title> tag.
The value of :confval:`html_use_opensearch`.
The value of :confval:`version`.
In addition to these values, there are also all theme options available (prefixed by theme_), as well as the values given by the user in :confval:`html_context`.
In documents that are created from source files (as opposed to automatically-generated files like the module index, or documents that already are in HTML form), these variables are also available:
Document metadata (a dictionary), see File-wide metadata.
The name of the copied source file for the current document. This is only nonempty if the :confval:`html_copy_source` value is true.
The local table of contents for the current page, rendered as HTML bullet lists.
A callable yielding the global TOC tree containing the current page, rendered as HTML bullet lists. Optional keyword arguments:


Procedural Planet Generator with SpriteSheet export
1. Generate surface
Random
Seed
Color Threshold
Poly factor
Has oceans
Has vegetation
Spin-direction
left
right
Apply
2. Generate planet
Sphere
3. Preview
Toggle Rotation
4. Export
Frames
40
Export Spritesheet
Output


Check and Radio inputs (IE9+, FF, Opera, Webkit)
Checkbox
Radio 1
Radio 2
Select Field (IE8+, FF, Webkit)
Credited to:
Bovotasan
Explorer
Firefox
Webkit
File Input (Webkit)
Adapted from but credited to:
The Computer Whiz
Text line and Text paragraph (IE9+, FF, Opera, Webkit)


A little bit about the stars: I've lived in Albuquerque for many moons. Albuquerque is okay but one thing I like about it is the many places available to do outdoor activities. I love to be outdoors either hiking or walking my dog.
One of my passions is animal behavior. I love watching my dog learn and interact with her world. I find it fascinating how she is able to communicate with humans, dogs, and other animal species, and how she learns to solve problems. I've also just taken up bird watching and love watching how birds interact with each other and the world around them.
Some of the birds I like include:
Favorite Music
Favorite Places to Gaze in Albuquerque


K-pop star Goo Hara found dead at home
by AAPK-pop star and TV celebrity Goo Hara has been found dead at her home in Seoul, police say.
Police say an acquaintance found the 28-year-old dead at her home in southern Seoul on Sunday and reported it to authorities.
The cause of death wasn’t immediately known. Police refused to provide further details.
Hara made her debut in 2008 as a member of the girl group Kara, which had big followings in South Korea, Japan and other Asian countries. She later worked as a solo artist and appeared on many TV shows.
In May, Hara was reportedly found unconscious at her home and was hospitalised.
She was embroiled last year in public disputes with an ex-boyfriend who claimed to have been assaulted by her.
Hara accused him of having threatened to circulate a sex video of her. The case made her the subject of tabloid fodder and malicious online messages.
Amid the dispute, Hara’s agency terminated her contract. In June, she signed a new contract with leading talent management agency Production Ogi in Japan, where Kara had enjoyed huge popularity.
Under Ogi, Goo appeared on TV shows and major fashion events in Japan. She also released a solo Japanese single Midnight Queen on November 13.
In October, another K-pop star and actress, Sulli, was found dead at her home near Seoul. She was a close friend of Hara’s.
The 25-year-old was known for her feminism and outspokenness that was rare among female entertainers in deeply conservative South Korea.
Before her death, she appeared in a TV show and spoke out against the online backlash she had received over her lifestyle.
Since the late 1990s, there has been a succession of deaths among young K-pop talent. Many have complained of depression while others have indicated signs of a highly toxic industry that, behind the glamorous and shiny exterior, tramples on human dignity.
In 2009, actress Jang Ja-yeon took her own life, leaving a note claiming that she had been sexually abused by powerful figures in the entertainment industry.
Lifeline 13 11 14
beyondblue 1300 22 4636


Education
Information Technology
Posts and Telecommunications Institute of Technology of Ha Noi
Ha Noi, Viet Nam
Bachelors
M102: MongoDB for DBAs
MongoDB University
M101JS: MongoDB for Node.js Developers
MongoDB University
M202: MongoDB Advanced Deployment and Operations
MongoDB University


|
Neonode zForce(TM) SDK
|
Handles connections. More...
Go to the source code of this file.
Classes | |
| struct | ConnectionMessage |
| Connection messages struct. More... | |
| struct | Connection |
| The main Connection struct. More... | |
Typedefs | |
| typedef enum ConnectionStatus | ConnectionStatus |
| typedef struct ConnectionMessage | ConnectionMessage |
| typedef struct Connection | Connection |
Enumerations | |
| enum | ConnectionStatus { Connected, Disconnected, ConnectionFault } |
| Connection events. More... | |
Functions | |
| DLLINTERNAL ConnectionMessage * | ConnectionMessage_New (ConnectionStatus connectionStatus, uint32_t errorCode) |
| Internal call used to create a new ConnectionMessage. More... | |
| DLLEXTERNAL Connection * | Connection_New (char *connectionString, char *protocolString, char *dataFrameType) |
| Create a new Connection. More... | |
Handles connections.
Handles connections, acts as the glue between devices, protocols and transports. Also handles queues to notify software about incoming messages.
| typedef struct Connection Connection |
| typedef struct ConnectionMessage ConnectionMessage |
| typedef enum ConnectionStatus ConnectionStatus |
| enum ConnectionStatus |
Connection events.
| Enumerator | |
|---|---|
| Connected |
Status changed to Connected. |
| Disconnected |
Status changed to Disconnected. |
| ConnectionFault |
Connection Fault. |
| DLLEXTERNAL Connection* Connection_New | ( | char * | connectionString, |
| char * | protocolString, | ||
| char * | dataFrameType | ||
| ) |
Create a new Connection.
This call does not actually connect, it just creates the binding between the Protocol and Transport.
On failure, errno is set.
Each Transport and Protocol has its own options.
Example to connect to a sensor over Hid using Asn1 as protocol.
HidPipeTransport (hidpipe) has the following options:
Asn1Protocol (asn1) currently has no options.
StreamingDataFrame (Streaming) is the DataFrame type used by both HidPipeTransport and Asn1Protocol.
MyConnection = Connection_New (
"hidpipe://vid=0x1536,pid=0x0101,index=0",
"asn1://",
"Streaming");
| connectionString | A Transport specific connection string. |
| protocolString | A Protocol specific prototocol string. |
| dataFrameType | Which Data Frame Type the Transport and Protocol uses. |
| DLLINTERNAL ConnectionMessage* ConnectionMessage_New | ( | ConnectionStatus | connectionStatus, |
| uint32_t | errorCode | ||
| ) |
Internal call used to create a new ConnectionMessage.
On failure, errno is set.
| connectionStatus | ConnectionStatus of message. |
| errorCode | ErrorCode of message. |


The problem with the Toshiba Portégé M200 tablet is it can only boot from a select few external CD drives. It can't boot from USB, so if you don't have one of these special CD drives, you're stuck with messing with an SD Card (at the moment, I don't have an SD Card reader for any other computer that isn't a camera), or setting up a net install.
Here's one other way to do this without SD cards, but you'll need a PATA/USB cable instead.
For this guide, you'll also need another computer that can boot from a CD or flash drive, and at least one spare flash drive (you will need two if you boot Parted Magic from a flash drive).
I wasted a whole day trying to use Unetbootin to install the xubuntu .iso to a small partition (1GB), and then use that to install to the rest of the drive. I almost pulled it off, but the installer insisted on unmounting the installation partition. Here are a few notes, though, in case you try something similar:
- I don't think the Portégé works with Unetbootin disks created in OS X (my guess is they need to be ext4 formatted, which OS X doesn't support)
- The Portégé is non-PAE hardware; make sure whatever you install is compatible (in my case with xubuntu, use 12.04)
I eventually gave up and did something a little more complicated, but probably cleaner in the long run:
Boot another computer with a
Parted Magic CD or flash drive, and plug in (1) the Portégé hard drive via PATA/USB and (2) a reasonably large spare flash drive (mine was 4GB). Using the Parted Magic Utilities:
- Format both the hard drive and spare flash drive to ext4 with the Partition Editor (gparted)
- Use Unetbootin to make the hard drive a bootable installation disk for your desired distribution
- Unmount the hard drive and spare flash drive, put the hard drive back in the Portégé, and plug in the flash drive
- Turn on the Portégé, and install the distribution to the flash drive (it might be a good idea to try the live version first to make sure the stylus drivers, etc. in your distribution work like you think they should... for the record, xubuntu works just fine!).
- When the Portégé reboots after installation, it will start up to the Unetbootin screen again (remember, it can't boot from USB)... just turn the machine off (you have to hold the power switch for a second).
- Remove the hard drive and flash drive, and plug them back into the computer running Parted Magic
- Using gparted, re-format the hard drive to ext4 (this may not be strictly necessary, but it's a good way to check which drive is sda, sdb, etc. before the next step)
- Using the Disk Cloning utility, do a local disk to local disk copy... copy the flash drive to the hard drive, and copy the bootloader when asked
- Open gparted again:
- Delete the swap and extended partition so you can expand the first (make a note of how big the extended partition was... I think the installer picks 510MB)
- Expand the first partition to fill the disk, leaving room to recreate the swap space at the end
- Recreate the extended partition and the swap space inside it
- Click Apply (you may need to create the swap space twice... it failed the first time I tried it)
- Finally, put the hard drive back in the Portégé, and start it up... if you did exactly what I did, you'll probably see some anomalies in the loading screen (mine was all fuzzy), but everything's fine once the desktop comes up.
- Open Synaptic Package Manager, click "Mark All Upgrades", and then click "Apply." At some point in the installation, it will ask about where to install grub - I installed on both sda and sda1.


Enter a URI and see a diagram of its various parts based on the URI RFC ABNF and parsed with PEG.js.
This project is hosted on github.
I have a related uri.exe project that is a command line tool to show how various Windows APIs parse URIs.


Audio signal class.
More...
#include <AudioSignal.h>
- Author
- Andrés González Fornell
Definition at line 17 of file AudioSignal.h.
◆ AudioSignal() [1/2]
| AudioSignal::AudioSignal |
( |
int |
fs | ) |
|
- Parameters
-
| fs | signal sampling frequency [Hz] |
Definition at line 18 of file AudioSignal.cpp.
◆ AudioSignal() [2/2]
| AudioSignal::AudioSignal |
( |
std::vector< float > |
signal, |
|
|
int |
fs |
|
) |
| |
- Parameters
-
| signal | vector of signal samples |
| fs | signal sampling frequency [Hz] |
Definition at line 29 of file AudioSignal.cpp.
◆ addSample()
| void AudioSignal::addSample |
( |
float |
sample | ) |
|
◆ deleteSample() [1/2]
| void AudioSignal::deleteSample |
( |
int |
index | ) |
|
◆ deleteSample() [2/2]
| void AudioSignal::deleteSample |
( |
int |
start, |
|
|
int |
end |
|
) |
| |
- Parameters
-
| start | first index of the range (included) |
| end | last index of the range (included) |
Definition at line 114 of file AudioSignal.cpp.
◆ getFrequencies() [1/2]
| std::vector< float > AudioSignal::getFrequencies |
( |
| ) |
|
◆ getFrequencies() [2/2]
| std::vector< float > AudioSignal::getFrequencies |
( |
int |
bands | ) |
|
- Parameters
-
| bands | number of frequency bands of the signal spectral density (if higher number than available has been requested, it returns as the highest number of frequency as possible) |
- Returns
- frequencies vector
Definition at line 241 of file AudioSignal.cpp.
◆ getSample()
| AudioSignal AudioSignal::getSample |
( |
int |
start, |
|
|
int |
end |
|
) |
| |
- Parameters
-
| start | first index of the range (included) |
| end | last index of the range (included) |
- Returns
- subsignal object
Definition at line 64 of file AudioSignal.cpp.
◆ getSignal()
| std::vector< float > AudioSignal::getSignal |
( |
| ) |
|
◆ getSpectrum() [1/2]
| std::vector< float > AudioSignal::getSpectrum |
( |
| ) |
|
◆ getSpectrum() [2/2]
| std::vector< float > AudioSignal::getSpectrum |
( |
int |
bands | ) |
|
- Parameters
-
| bands | number of frequency bands of the signal spectral density (if higher number than available has been requested, it returns as the highest number of frequency as possible) |
- Returns
- signal spectral density
Definition at line 195 of file AudioSignal.cpp.
◆ getTimes() [1/2]
| std::vector< float > AudioSignal::getTimes |
( |
| ) |
|
◆ getTimes() [2/2]
| std::vector< float > AudioSignal::getTimes |
( |
float |
initialtime | ) |
|
- Parameters
-
| initialtime | initial time [s] |
- Returns
- time vector
Definition at line 155 of file AudioSignal.cpp.
◆ operator[]()
| float AudioSignal::operator[] |
( |
int |
index | ) |
|
- Parameters
-
- Returns
- sample signal sample
Definition at line 46 of file AudioSignal.cpp.
◆ setSample()
| void AudioSignal::setSample |
( |
int |
index, |
|
|
float |
sample |
|
) |
| |
- Parameters
-
| index | selected index |
| sample | new signal sample |
Definition at line 76 of file AudioSignal.cpp.
◆ setSignal()
| void AudioSignal::setSignal |
( |
std::vector< float > |
signal | ) |
|
◆ fs
signal sampling frequency [Hz]
Definition at line 20 of file AudioSignal.h.
◆ maxsamples
| const unsigned int AudioSignal::maxsamples = 0xFFFFFF |
|
static |
◆ size
The documentation for this class was generated from the following files:


Scrum
Learn how to scrum with the best of ‘em
What is Scrum?
Scrum is a framework that helps teams work together. Much like a rugby team (where it gets its name) training for the big game, Scrum encourages teams to learn through experiences, self-organize while working on a problem, and reflect on their wins and losses to continuously improve.
While the Scrum I’m talking about is most frequently used by software development teams, its principles and lessons can be applied to all kinds of teamwork. This is one of the reasons Scrum is so popular. Often thought of as an agile project management framework, Scrum describes a set of meetings, tools, and roles that work in concert to help teams structure and manage their work.
In this article, we’ll discuss how a traditional scrum framework is comprised with the help of the Scrum Guide and David West, CEO of Scrum.org. We’ll also include examples of how we see our customers stray from these fundamentals to fit their specific needs. For that, our own Megan Cook, Group Product Manager for Jira Software and former agile coach, will give tips and tricks in our Agile Coach video series:
Scrum articles
Learn scrum with Jira Software
A step-by-step guide on how to drive a scrum project, prioritize and organize your backlog into sprints, run the scrum ceremonies and more, all in Jira.
Try this tutorialThe framework
People often think Scrum and agile are the same thing because Scrum is centered around continuous improvement, which is a core principle of agile. However, Scrum is a framework for getting work done, where agile is a mindset. You can’t really “go agile”, as it takes dedication from the whole team to change the way they think about delivering value to your customers. But you can use a framework like Scrum to help you start thinking that way and to practice building agile principles into your everyday communication and work.
The scrum framework is heuristic; it’s based on continuous learning and adjustment to fluctuating factors. It acknowledges that the team doesn’t know everything at the start of a project and will evolve through experience. Scrum is structured to help teams naturally adapt to changing conditions and user requirements, with re-prioritization built into the process and short release cycles so your team can constantly learn and improve.
While Scrum is structured, it is not entirely rigid. Its execution can be tailored to the needs of any organization. There are many theories about how exactly scrum teams must work in order to be successful. However, after more than a decade of helping agile teams get work done at Atlassian, we’ve learned that clear communication, transparency, and a dedication for continuous improvement should always remain at the center of whatever framework you choose. And the rest is up to you.
Scrum artifacts
Let’s start with identifying the three artifacts in scrum. Artifacts are something that we make, like a tool to solve a problem. In Scrum, these three artifacts are a product backlog, a sprint backlog, and an increment with your definition of “done”. They are the three constants in a scrum team that we continue to revisit and invest in overtime.
- Product Backlog is the master list of work that needs to get done maintained by the product owner or product manager. This is a dynamic list of features, requirements, enhancements, and fixes that acts as the input for the sprint backlog. It is, essentially, the team’s “To Do” list. The product backlog is constantly revisited, re-prioritized and maintained by the Product Owner because, as we learn more or as the market changes, items may no longer be relevant or problems may get solved in other ways.
- Sprint Backlog is the list of items, user stories, or bug fixes, selected by the development team for implementation in the current sprint cycle. Before each sprint, in the sprint planning meeting (which we’ll discuss later in the article) the team chooses which items it will work on for the sprint from the product backlog. A sprint backlog may be flexible and can evolve during a sprint. However, the fundamental sprint goal – what the team wants to achieve from the current sprint – cannot be compromised.
- Increment (or Sprint Goal) is the usable end-product from a sprint. At Atlassian, we usually demonstrate the “increment” during the end-of-sprint demo, where the team shows what was completed in the sprint. You may not hear the word “increment” out in the world, as it’s often referred to as the team’s definition of “Done”, a milestone, the sprint goal, or even a full version or a shipped epic. It just depends on how your teams defines “Done” and how you define your sprint goals. For example, some teams choose to release something to their customers at the end of every sprint. So their definition of ‘done’ would be ‘shipped’. However, this may not be realistic of other types of teams. Say you work on a server-based product that can only ship to your customers every quarter. You may still choose to work in 2-week sprints, but your definition of ‘done’ may be finishing part of a larger version that you plan to ship together. But of course, the longer it takes to release software, the higher the risk that software will miss the mark.
As you can tell, there are lots of variations, even within artifacts, that your team can choose to define. That’s why it’s important to be remain open to evolving how you maintain even your artifacts. Perhaps your definition of ‘done’ provides undo stress on your team, and you need to go back and pick a new definition.
You should be just as agile with your framework as you are with your product. Take the necessary time to check in on how things are going, make adjustments if needed, and don’t force something just for the sake of consistency.
Scrum ceremonies or events
Some of the more well known components of the Scrum framework are the set of sequential events, ceremonies or meetings that scrum teams perform on a regular basis. The ceremonies are where we see the most variations for teams. For example, some teams find doing all of these ceremonies cumbersome and repetitive, while others use them as a necessary check in. Our advice is to start out using all of the ceremonies for two sprints and see how it feels. You can then perform a quick retro and see where you might need to adjust.
Below is a list of all the key ceremonies a scrum team might partake in:
-
Organize the backlog: Sometimes known as backlog grooming, this event is the responsibility of the product owner. The product owner’s main jobs are to drive the product towards its product vision and have a constant pulse on the market and the customer. Therefore, he/she maintains this list using feedback from users and the development team to help prioritize and keep the list clean and ready to be worked on at any given time. You can read more about maintaining a healthy backlog here.
-
Sprint planning: The work to be performed (scope) during the current sprint is planned during this meeting by the entire development team. This meeting is led by the scrum master and is where the team decides on the sprint goal. Specific use stories are then added to the sprint from the product backlog. These stories always align with the goal and are also agreed upon by the scrum team to be feasible to implement during the sprint.
At the end of the planning meeting, every scrum member needs to be clear on what can be delivered in the sprint and how the increment can be delivered. -
Sprint: A sprint is the actual time period when the scrum team works together to finish an increment. Two weeks is a pretty typical length for a sprint, though some teams find a week to be easier to scope or a month to be easier to deliver a valuable increment. Dave West, from Scrum.org advises that the more complex the work and the more unknowns, the shorter the sprint should be. But it’s really up to your team, and you shouldn’t be afraid to change it if it’s not working! During this period, the scope can be re-negotiated between the product owner and the development team if necessary. This forms the crux of the empirical nature of scrum.
All the events — from planning to retrospective — happen during the sprint. Once a certain time interval for a sprint is established, it has to remain consistent throughout the development period. This helps the team learn from past experiences and apply that insight to future sprints. -
Daily Scrum or Stand Up: This is a daily super-short meeting that happens at the same time (usually mornings) and place to keep it simple. Many teams try to complete the meeting in 15 minutes, but that’s just a guideline. This meeting is also called a ‘daily stand-up’ emphasizing that it needs to be a quick one. The goal of the daily scrum is for everyone on the team to be on the same page, aligned with the sprint goal, and to get a plan out for the next 24 hours.
The stand up is the time to voice any concerns you have with meeting the sprint goal or any blockers.
A common way to conduct a stand up is for every team member to answers three questions in the context of achieving the sprint goal:
• What did I do yesterday?
• What do I plan to do today?
• Are there any obstacles?
However, we’ve seen the meeting quickly turn into people reading from their calendars from yesterday and for the next day. The theory behind the stand up is that it keep distracting chatter to a daily meeting, so the team can focus on the work for the rest of the day. So if it turns into a daily calendar read-out, don’t be afraid to change it up and get creative. -
Sprint review: At the end of the sprint, the team gets together for an informal session to view a demo of, or inspect, the increment. The development team showcases the backlog items that are now ‘Done’ to stakeholders and teammates for feedback. The product owner can decide whether or not to release the increment, although in most cases the increment is released.
This review meeting is also when the product owner reworks the product backlog based on the current sprint, which can feed into the next sprint planning session. For a one-month sprint, consider time-boxing your sprint review to a maximum of four hours. -
Sprint retrospective: The retrospective is where the team comes together to document and discuss what worked and what didn’t work in a sprint, a project, people or relationships, tools, or even for certain ceremonies. The idea is to create a place where the team can focus on what went well and what needs to be improved for the next time, and less about what went wrong.
Three essential roles for scrum success
A scrum team needs three specific roles: product owner, scrum master, and the development team. And because scrum teams are cross-functional, the development team includes testers, designers, UX specialists, and ops engineers in addition to developers.
The scrum product owner
Product owners are the champions for their product. They are focused on understanding business, customer, and market requirements, then prioritizing the work to be done by the engineering team accordingly. Effective product owners:
- Build and manage the product backlog.
- Closely partner with the business and the team to ensure everyone understands the work items in the product backlog.
- Give the team clear guidance on which features to deliver next.
-
Decide when to ship the product with a predisposition towards more frequent delivery.
The product owner is not always the product manager. Product owners focus on ensuring the development team delivers the most value to the business. Also, it's important that the product owner be an individual. No development team wants mixed guidance from multiple product owners.
The scrum master
Scrum masters are the champions for scrum within their teams. They coach teams, product owners, and the business on the scrum process, and look for ways to fine-tune their practice of it.
An effective scrum master deeply understands the work being done by the team and can help the team optimize their transparency and delivery flow. As the facilitator-in-chief, he/she schedules the needed resources (both human and logistical) for sprint planning, stand-up, sprint review, and the sprint retrospective.
The scrum development team
Scrum teams get s*%& done. They are are the champions for sustainable development practices. The most effective scrum teams are tight-knit, co-located, and usually five to seven members. One way to work out the team size is to use the famous ‘two pizza rule’ coined by Jeff Bezos, the CEO of Amazon (the team should be small enough to share two pizzas).
Team members have differing skill sets, and cross-train each other so no one person becomes a bottleneck in the delivery of work. Strong scrum teams are self-organising and approach their projects with a clear ‘we’ attitude. All members of the team help one another to ensure a successful sprint completion.
The scrum team drives the plan for each sprint. They forecast how much work they believe they can complete over the iteration using their historical velocity as a guide. Keeping the iteration length fixed gives the development team important feedback on their estimation and delivery process, which in turn makes their forecasts increasingly accurate over time.
Scrum, kanban, and agile
Scrum is such a popular agile framework that scrum and
agile are often misunderstood to be the same thing. But
there are other frameworks, like
kanban, which is a popular alternative. Some companies even
choose to follow a hybrid model of scrum and kanban, which
has acquired the name of ‘Scrumban’ or Kanplan, which is
Kanban with a backlog.
Both scrum and kanban use visual methods such as the scrum
board or kanban board to track the progress of work. Both
emphasize efficiency and splitting complex tasks into
smaller chunks of manageable work, but their approaches
towards that goal is different.
Scrum focuses on smaller, fixed-length iterations. Once
the time period for a sprint is finalized, the stories or
product backlog entries that can be implemented during
this sprint cycle are then determined. In kanban, however,
the number of tasks or the work in progress (WIP limit) to
be implemented in the current cycle is fixed at first. The
time taken to implement these features is then calculated
backwards.
Kanban is not as structured as scrum. Other than the WIP
limit, it is fairly open to interpretation. Scrum,
however, has several categorical concepts enforced as part
of its implementation such as sprint review,
retrospective, daily scrum, etc. It also insists on
cross-functionality, which is the ability of a scrum team
to not depend on external members to achieve their goals.
Putting together a
cross-functional team
is not straightforward. In that sense, kanban is easier to
adapt whereas scrum can be considered as a fundamental
shift in the thought process and functioning of a
development team.
But, why scrum?
The scrum framework itself is simple. The rules, artifacts, events, and roles are easy to understand. Its semi-prescriptive approach actually helps remove the ambiguities in the development process, while giving sufficient space for companies to introduce their individual flavor to it.
The organization of complex tasks into manageable user stories makes it ideal for difficult projects. Also, the clear demarcation of roles and planned events ensure that there is transparency and collective ownership throughout the development cycle. Quick releases keep the team motivated and the users happy as they can see progress in a short amount of time.
However, Scrum could take time to master, especially if the development team is acclimatized to a typical waterfall model. The concepts of smaller iterations, daily scrum meetings, sprint reviews, and identifying a scrum master could be a challenging cultural shift for a new team.
But, the long-term benefits far outweigh the initial
learning curve. Scrum’s success in developing complex
hardware and software products across diverse industries
and verticals makes it a compelling framework to
adopt for your organization.
Ready to get started? Try this tutorial.
A step-by-step guide on how to drive a scrum project, prioritize and organize your backlog into sprints, run the scrum ceremonies and more, all in Jira.
Read this tutorialKanban
An introduction to kanban methodology for agile software development and its benefits for your agile team.
Read this article


https://en.wikipedia.org/wiki/Diffusion_equation
https://en.wikipedia.org/wiki/Heat_equation
The diffusion equation is a parabolic partial differential equation. In physics, it describes the macroscopic behavior of many micro-particles in Brownian motion, resulting from the random movements and collisions of the particles. In mathematics, it is related to Markov processes, such as random walks, and applied in many other fields.
If the diffusion coefficient is constant then the diffusion equation is identical to the heat equation.
Unknown function u(x,t), x in [0,L], t in [0,T], u(x,t) is the density of the diffusing material (isotropic diffusion) or the temperature at the point x and time t, heat equation u_t = D * u_xx, D is a positive coefficient called the diffusion coefficient or the thermal diffusivity of the medium. u_t is time derivative, u_xx is double spatial derivative. Initial condition u(x,0) = f(x). Boundary condition u(0,t) = g1(t) and u(L,t) = g2(t). # j u(0,t)=g1(t), t increasing --> # x=0 +--+--+--+-- # | | | | # u(x,0)+--+--o--+-- # =f(x) | | | | # +--+--o--o-- u(i,j) # | | | | # i +--+--o--+-- # | | | | # x=L +--+--+--+-- # j u(L,t)=g2(t) x = i*dx, i = 0..Nx (Nx+1 points), Nx*dx = L, t = j*dt, j = 0..Nt (Nt+1 points), Nt*dt = T, u_t = [ u(i,j+1) - u(i,j) ] / dt # forward difference O(dt) u_xx = [ u(i-1,j) -2*u(i,j) + u(i+1,j) ] / (dx*dx) # central difference O(dx^2) r = D*dt / (dx*dx), formula is stable if r <= 0.5 u(i,j+1) - u(i,j) = r * [ u(i-1,j) -2*u(i,j) + u(i+1,j) ] u(i,j+1) = r*u(i-1,j) + (1-2*r)*u(i,j) + r*u(i+1,j) # j+1 point in time
Initial condition, t=0 (j=0) for i in range(Nx+1): u(i,0) = f(i*dx) Boundary condition, x=0 (i=0) and x=L (i=Nx) for j in range(1,Nt+1): u(0,j) = g1(j*dt) u(Nx,j) = g2(j*dt) Final formula (inside mesh) for j in range(Nt): for i in range(1,Nx): u(i,j+1) = r*u(i-1,j) + (1-2*r)*u(i,j) + r*u(i+1,j)
# Faster final formula using vectorization for j in range(Nt): u[1:-1,j+1] = r*u[:-2,j] + (1-2*r)*u[1:-1,j] + r*u[2:,j]


Love is blind, Pets are
NOT.
It's mating season!
PLAY THEM OFF KEYBOARD CAT!!
I LOVE THIS PERSON'S PET!


Concord Consortium Token Service
For more information visit
https://github.com/concord-consortium/token-service
.


4 references to
System.Management.Automation (4)
engine\debugger\Breakpoint.cs (4)
168
:
base
(script, action)
289
:
base
(script, action)
369
:
base
(script, action)
388
:
base
(script, action)


Customization
Bughunting
Custom Bug Notification Mail Templates
default notification mail looks like this:
Dear domain owner of ,
we are currently running an instance of CySec-Framework (https://cysec-framework.gitlab.io), which allows security researchers
to publish found vulnerabilities and help admins to fix them.
is one of our bug hunters. He found a vulnerability in your application.
You can find more details here:
This link is valid until the bug is disclosed on
you can use all attributes of the vulnerability and the generated detail link.
Create a new template called bug_notification_mail.html
in directory templates/bughunting
For customizing the mail subject by creating a file bug_notification_mail_subject.html
in directory templates/bughunting
. You can use all vulnerability attributes here.
Custom Bot Messages
Todo
Pentesting
Custom Report Templates
TODO


Welcome {user} to QA Homepage
Hello {username} , you are logged in as {role}
Author
TAgs
Start Date
End Date
{item}


Ohio Bobcats lineman performs cartwheel on team's pass play
by Ryan GaydosThe Ohio Bobcats threw a new wrinkle into their playbook in a Mid-American Conference game against the Western Michigan Broncos on Tuesday night.
The Bobcats lined Hagen Meservy out to the left, hoping it would throw off the defense in the third quarter of their closely contested game. To add another touch to the play, Meservy pulled off a clean cartwheel on what appeared to be an attempt at a screen play.
ALABAMA 5TH IN CFP COMMITTEE RANKINGS AFTER LOSS TO LSU
Meservy didn’t get the ball, but Ohio was able to pull off a 25-yard play when quarterback Nathan Rourke completed a pass to Adam Luehrman. On the next play, Bobcats running back De’Montre Tuttle scored on a 10-yard rushing touchdown.
Ohio had the lead at that point of the game, 14-10.
FORMER LIONS, SPARTANS WIDE RECEIVER CHARLES ROGERS DEAD AT 38
However, the Bobcats’ lead wouldn’t last for long. Western Michigan would fight back and the two teams would eventually go into overtime.
CLICK HERE FOR MORE SPORTS COVERAGE ON FOXNEWS.COM
The Broncos ended up winning the game, 37-34. Ohio dropped to 4-6 overall and 3-3 in the conference. Western Michigan improved to 7-4 overall and 5-2 in the conference.


Multiplexes 2 to 16 inputs to a single output. The inputs and outputs and can be configured as buses or single bits. The multiplexer symbol includes an indication of which input is currently selected.
The value of the input pin or bus determines which input is routed to O. The input will be a single bit if there are two choices (binary) or a bus if there are more than 2 choices.
The top example has been configured as a two input bus multiplexer. Since there are only two possible inputs, the selector input is a single bit. A value of true selects input I1.
The second example has been configured as an eight input bit multiplexer. The bus input is set to a value of 101 (5) so input I5 is selected to the output.


The receive tab allows you to receive funds. Displayed prominently is the mwcmq address that other users can use to send funds to you.
Your wallet will need to be online at the time that they send funds to you. Also, account information like funds that are available and awaiting confirmation is displayed on this page.
Indicators of connectivity to the tor and mwcmq listener are also displayed on this page.


×
Authentication Error!
Login Failed Message!
Login To Your Account
Remember me
Forgot password?
Sign In


|
How to Get a Progressive Web App into the Google Play Store
PWA (Progressive Web Apps) have been with us for some time now. Yet, each time I try explaining it to clients, the same question pops up: "Will my users be able to install the app using app stores?" css-tricks.com Mateusz Rybczonek
|
|
Detect CSS properties that don't have an effect on the current element
Detect CSS properties that don't have an effect on the current element. twitter.com Patrick Brosset
|
|
Improve React App Performance Through Memoization
Memoization is the process of caching a result of inputs linearly related to its output, so when the input is requested the output is returned from the cache without any computation. blog.bitsrc.io Chidume Nnamdi
|
|
React's new "hooks" APIs give function components the ability to use local component state, execute side effects, and more.
React Redux now offers a set of hook APIs as an alternative to the existing connect() Higher Order Component. These APIs allow you to subscribe to the Redux store and dispatch actions, without having to wrap your components in connect(). react-redux.js.org React Redux (Hooks)
|
|
Styling a fullscreen PWA
The Web App Manifest is the format that defines metadata about an application, so that a user can add it to their homescreen. matthewphillips.info Matthew Phillips
|
|
Netlify Functions for Sending Emails
Let's say you're rocking a JAMstack-style site (no server-side languages in use), but you want to do something rather dynamic like send an email. css-tricks.com Chris Coyier
|
|
Svelte 3: Rethinking reactivity
After several months of being just days away, we are over the moon to announce the stable release of Svelte 3. svelte.dev Rich Harris
|
|
Announcing NodeJS 12
This blog was written by Bethany Griggs and Michael Dawson, with additional contributions from the Node.js Release Team and Technical Steering committee. We are excited to announce Node.js 12 today. medium.com NodeJS foundation
|
|
What's New in Chrome 74
Private Class Fields, Prefers Reduced Motion, CSS Transition Events, & more www.youtube.com Chrome Team
|


--- title: "Sponsors" permalink: '/sponsors' current: sponsor ---
The LSE Law Review is proud to be sponsored by 3 Verulam Buildings. 3 Verulam Buildings is one of the UK’s principal sets of barristers’ chambers, with over 80 members specialising in a wide range of commercial law and practising both nationally, in other countries’ jurisdictions and internationally.
Learn more here: www.3vb.com
We are currently looking for organisations to sponsor us. If your organisation is interested in sponsoring us, please send an email to lselawreview@gmail.com.


Learning
- Google certified Android developer.
- Awarded first class honours bachelor's degree in Electronic & Computer engineering from NUI Galway.
- Completed serveral comprehensive online courses including this Android development one from Udacity.
Experience
- Worked as a trainee Software Engineer for six months with Fidelity Investments as my college internship in 2014.
- Began working with OnePageCRM after finishing college 2015.
OnePageCRM
- First project for OnePage was the Speed Dialer application which you can read more about here.
- Main project has been the re-design of OnePage's main Android app, and subsequent updates and fixes.
- Monitor and answer technical and API-related queries on the developer forum and mailboxes.
- Write and publish content for the developer blog.
- Maintain a Java API wrapper project, for use with the mobile app and customer/developer integrations etc.
Personal
- Created and released Coordinote as my final year project - a location-aware to-do application for Android.
- Spoke at, and helped organise and run Galway Developer Meetup.
- Competed in (13/14), and helping to organise and run the (17/18) CodeNinja coding competition for students.


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
IN THE HIGH COURT OF JHARKHAND AT RANCHI A.B.A.No. 4916 of 2016 Kripakar Mahato @ Kripakar Mahto ....Petitioner Versus The State of Jharkhand .... Opposite party ---------
CORAM: HON'BLE MR. JUSTICE ANANT BIJAY SINGH
---------
For the Petitioner : Mr. P.S. A.S Pati, Adv.
For the Opposite party : APP --------- 02/Dated: 04.01.2017
Heard learned counsel for the petitioner and learned counsel for the State.
The petitioner is apprehending his arrest in connection with the case registered under Sections 414/34 of the Indian Penal Code and 3/8 J.M.M.C. Rule 2004 4/54 Jharkhand Minor Minerals Concessions Rule 2004 & 21 Air Pollution Act 1981.
Learned counsel for the petitioner has submitted that the petitioner has been falsely implicated in this case. The entire allegation levelled against the petitioner is false and fabricated as no Khata number and Plot number mentioned in the written report given by the informant. It is further submidtted that the petitioner having no criminal antecedent.
Learned counsel for the State has opposed the prayer for anticipatory bail.
Be that as it may, I am inclined to admit the petitioner on anticipatory bail. The petitioner is directed to surrender in the court below within three weeks and in the event of his arrest or surrender, the court below shall release him on bail on his furnishing bail bond of Rs.10,000/- (Ten Thousand) with two sureties of the like amount each to the satisfaction of learned S.D.J.M, Seraikella, in connection with Chandil P.S. Case No.149/2016, Corresponding to G.R. Case No. 831/2016, subject to the condition as laid down under Section 438(2) of the Cr.P.C. Subject to further condition that on the date of surrender, petitioner shall deposit Rs. 5,000/- in the court below.
The aforesaid deposit is subject to the result of the case.
(Anant Bijay Singh, J.) Fahim/Shahid


--- layout: post title: Mobile web content tags: [] status: publish type: post published: true meta: {} ---
The O'Reilly wireless dev centre is carrying a couple of articles on developing and creating content for mobile phone browsers. It's pretty good as apart from just giving you a few WML and xHTML MP examples, it also looks at the technical limitations of mobile phones and their diversity.


May 11, 2014:
My Personal Thinking Style
Apr 26, 2014:
SQL Tuning/Optimization
Apr 20, 2014:
Culture: Stereotype Threat
Apr 19, 2014:
Functional Programming and OOP
Apr 13, 2014:
Culture: Tyrrany of Tech Clutter
Apr 12, 2014:
Defining and Instantiating a Class in Ruby
Apr 6, 2014:
Culture: Conflict Exercise
Apr 5, 2014:
Enumerable Methods in Ruby
Mar 29, 2014:
Culture: Pair Programming
Mar 28, 2014:
JavaScript vs. Ruby
Mar 20, 2014:
Culture: Exercise #1
Mar 20, 2014:
JavaScript's Popularity
Mar 16, 2014:
Comparing Websites


Researcher in History of Troy and Lost city of Atlantis. Also related to symbols and ancient freemasons. Some other interests include searching about aliens and outer space creatures.
Usally I will not have any free-time, but if I do then I read books, mostly fantasy, make my homepage more beautiful. Cook some specialities (copied from internet) and think about life.


sklearn.cluster
.AffinityPropagation¶
-
class
sklearn.cluster.
AffinityPropagation
(damping=0.5, max_iter=200, convergence_iter=15, copy=True, preference=None, affinity='euclidean', verbose=False)[source]¶ Perform Affinity Propagation Clustering of data.
Read more in the User Guide.
- Parameters
- dampingfloat, optional, default: 0.5
Damping factor (between 0.5 and 1) is the extent to which the current value is maintained relative to incoming values (weighted 1 - damping). This in order to avoid numerical oscillations when updating these values (messages).
- max_iterint, optional, default: 200
Maximum number of iterations.
- convergence_iterint, optional, default: 15
Number of iterations with no change in the number of estimated clusters that stops the convergence.
- copyboolean, optional, default: True
Make a copy of input data.
- preferencearray-like, shape (n_samples,) or float, optional
Preferences for each point - points with larger values of preferences are more likely to be chosen as exemplars. The number of exemplars, ie of clusters, is influenced by the input preferences value. If the preferences are not passed as arguments, they will be set to the median of the input similarities.
- affinitystring, optional, default=``euclidean``
Which affinity to use. At the moment
precomputed
andeuclidean
are supported.euclidean
uses the negative squared euclidean distance between points.- verboseboolean, optional, default: False
Whether to be verbose.
- Attributes
- cluster_centers_indices_array, shape (n_clusters,)
Indices of cluster centers
- cluster_centers_array, shape (n_clusters, n_features)
Cluster centers (if affinity !=
precomputed
).- labels_array, shape (n_samples,)
Labels of each point
- affinity_matrix_array, shape (n_samples, n_samples)
Stores the affinity matrix used in
fit
.- n_iter_int
Number of iterations taken to converge.
Notes
For an example, see examples/cluster/plot_affinity_propagation.py.
The algorithmic complexity of affinity propagation is quadratic in the number of points.
When
fit
does not converge,cluster_centers_
becomes an empty array and all training samples will be labelled as-1
. In addition,predict
will then label every sample as-1
.When all training samples have equal similarities and equal preferences, the assignment of cluster centers and labels depends on the preference. If the preference is smaller than the similarities,
fit
will result in a single cluster center and label0
for every sample. Otherwise, every training sample becomes its own cluster center and is assigned a unique label.References
Brendan J. Frey and Delbert Dueck, “Clustering by Passing Messages Between Data Points”, Science Feb. 2007
Examples
>>> from sklearn.cluster import AffinityPropagation >>> import numpy as np >>> X = np.array([[1, 2], [1, 4], [1, 0], ... [4, 2], [4, 4], [4, 0]]) >>> clustering = AffinityPropagation().fit(X) >>> clustering AffinityPropagation() >>> clustering.labels_ array([0, 0, 0, 1, 1, 1]) >>> clustering.predict([[0, 0], [4, 4]]) array([0, 1]) >>> clustering.cluster_centers_ array([[1, 2], [4, 2]])
Methods
fit
(self, X[, y])Fit the clustering from features, or affinity matrix.
fit_predict
(self, X[, y])Fit the clustering from features or affinity matrix, and return cluster labels.
get_params
(self[, deep])Get parameters for this estimator.
predict
(self, X)Predict the closest cluster each sample in X belongs to.
set_params
(self, \*\*params)Set the parameters of this estimator.
-
__init__
(self, damping=0.5, max_iter=200, convergence_iter=15, copy=True, preference=None, affinity='euclidean', verbose=False)[source]¶ Initialize self. See help(type(self)) for accurate signature.
-
fit
(self, X, y=None)[source]¶ Fit the clustering from features, or affinity matrix.
- Parameters
- Xarray-like or sparse matrix, shape (n_samples, n_features), or array-like, shape (n_samples, n_samples)
Training instances to cluster, or similarities / affinities between instances if
affinity='precomputed'
. If a sparse feature matrix is provided, it will be converted into a sparsecsr_matrix
.- yIgnored
Not used, present here for API consistency by convention.
- Returns
- self
-
fit_predict
(self, X, y=None)[source]¶ Fit the clustering from features or affinity matrix, and return cluster labels.
- Parameters
- Xarray-like or sparse matrix, shape (n_samples, n_features), or array-like, shape (n_samples, n_samples)
Training instances to cluster, or similarities / affinities between instances if
affinity='precomputed'
. If a sparse feature matrix is provided, it will be converted into a sparsecsr_matrix
.- yIgnored
Not used, present here for API consistency by convention.
- Returns
- labelsndarray, shape (n_samples,)
Cluster labels.
-
get_params
(self, deep=True)[source]¶ Get parameters for this estimator.
- Parameters
- deepboolean, optional
If True, will return the parameters for this estimator and contained subobjects that are estimators.
- Returns
- paramsmapping of string to any
Parameter names mapped to their values.
-
predict
(self, X)[source]¶ Predict the closest cluster each sample in X belongs to.
- Parameters
- Xarray-like or sparse matrix, shape (n_samples, n_features)
New data to predict. If a sparse matrix is provided, it will be converted into a sparse
csr_matrix
.
- Returns
- labelsndarray, shape (n_samples,)
Cluster labels.
-
set_params
(self, **params)[source]¶ Set the parameters of this estimator.
The method works on simple estimators as well as on nested objects (such as pipelines). The latter have parameters of the form
<component>__<parameter>
so that it’s possible to update each component of a nested object.- Returns
- self


public interface NamingEnumeration<T> extends Enumeration<T>
When a method such as list(), listBindings(), or search() returns a NamingEnumeration, any exceptions encountered are reserved until all results have been returned. At the end of the enumeration, the exception is thrown (by hasMore());
For example, if the list() is returning only a partial answer, the corresponding exception would be PartialResultException. list() would first return a NamingEnumeration. When the last of the results has been returned by the NamingEnumeration's next(), invoking hasMore() would result in PartialResultException being thrown.
In another example, if a search() method was invoked with a specified size limit of 'n'. If the answer consists of more than 'n' results, search() would first return a NamingEnumeration. When the n'th result has been returned by invoking next() on the NamingEnumeration, a SizeLimitExceedException would then thrown when hasMore() is invoked.
Note that if the program uses hasMoreElements() and nextElement() instead to iterate through the NamingEnumeration, because these methods cannot throw exceptions, no exception will be thrown. Instead, in the previous example, after the n'th result has been returned by nextElement(), invoking hasMoreElements() would return false.
Note also that NoSuchElementException is thrown if the program invokes next() or nextElement() when there are no elements left in the enumeration. The program can always avoid this exception by using hasMore() and hasMoreElements() to check whether the end of the enumeration has been reached.
If an exception is thrown during an enumeration, the enumeration becomes invalid. Subsequent invocation of any method on that enumeration will yield undefined results.
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Closes this enumeration.
|
boolean |
hasMore()
Determines whether there are any more elements in the enumeration.
|
T |
next()
Retrieves the next element in the enumeration.
|
hasMoreElements, nextElement
T next() throws NamingException
Note that next() can also throw the runtime exception NoSuchElementException to indicate that the caller is attempting to enumerate beyond the end of the enumeration. This is different from a NamingException, which indicates that there was a problem in obtaining the next element, for example, due to a referral or server unavailability, etc.
NamingException
- If a naming exception is encountered while attempting
to retrieve the next element. See NamingException
and its subclasses for the possible naming exceptions.NoSuchElementException
- If attempting to get the next element when none is available.Enumeration.nextElement()
boolean hasMore() throws NamingException
NamingException
- If a naming exception is encountered while attempting
to determine whether there is another element
in the enumeration. See NamingException
and its subclasses for the possible naming exceptions.Enumeration.hasMoreElements()
void close() throws NamingException
This method indicates to the service provider that it is free to release resources associated with the enumeration, and can notify servers to cancel any outstanding requests. The close() method is a hint to implementations for managing their resources. Implementations are encouraged to use appropriate algorithms to manage their resources when client omits the close() calls.
NamingException
- If a naming exception is encountered
while closing the enumeration. Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2015, Oracle and/or its affiliates. All rights reserved.


From watching the Marching 110 to attending the famous Homecoming parade, here’s a list of all the events you can attend this upcoming weekend:
Greek Life Banner Painting
On-campus sororities and fraternities will be participating in a banner painting activity at Tupper Hall from 7 to 9 p.m. Get to know your panhellenic and fraternal Bobcats on Monday night through showing off your creative side and preparing for the upcoming Homecoming Parade.
Flag Football
All are welcome to attend a 7v7 football matchup between sororities and fraternities on campus. Hosted at Mill Fields, the event will last from 7 to 9 p.m. on Tuesday night if you’re in the mood for blowing off some steam. Whether you’re a player or an audience member, this is definitely a carefree athletic event to attend, especially if you’re interested in going panhellenic or joining a fraternity.
Pack the Pantry
On Thursday from 11 a.m. to 3 p.m., you can donate items to Konneker Alumni Center for Pack the Pantry. Bring canned proteins, rice noodles, cooking oil, canned beans, pasta sauce, crackers or nuts to the center. All donations will be split between Cat’s Cupboard and the Athens Food Pantry.
Yell Like Hell Pep Rally
On Thursday, students can also attend the Yell Like Hell Pep Rally on College Green. Hosted by the Student Alumni Board, the event starts at 6 p.m. with yard games, a photo booth and a live performance from the beloved student band Rent Free. At 7 p.m., the Marching 110, football team and Rufus will make an appearance to hype up students before the start of Homecoming Weekend.
Food Truck Friday
Stop by the Konneker Alumni Center from 1 to 2:30 p.m. Friday to enjoy local food from the Burrito Buggy and Dr. May’s Thai Kitchen. Bring friends and win some prizes during the giveaways at the event. If you need a break from dining hall food, I highly suggest taking time out of your day to help out local food vendors and destress with friends!
The iconic Homecoming Parade
Starting at 10 a.m. on Saturday, you can watch various student and local organizations walk the streets of Athens. The parade will include floats, and of course, the Marching 110 to celebrate the OU students of the past and present. Trust me, you’re going to want to find a good spot for this, as the streets grow extremely crowded, even if you’re standing by Schoonover Center or College Green.
Ohio University v. Akron football game
If you’re a sports fan, you don’t want to miss out on a huge game for the Bobcats. Arrive to Peden Stadium by 2 p.m. to watch the football team take on Akron this Saturday, with the Marching 110 playing during halftime. This game is definitely the most fun of the year, and a great event to take your parents, friends or relatives to! Tickets are free for students and $30 for non-students.


Shri Ram Murti Smarak Trust, a public charitable Trust (Reg.) was established in the year 1990, to commemorate & Cherish memory of veteran freedom fighter, true Gandhian, ex-parliamentarian, ex-minister U.P., Late Ram Murti Ji. The primary objective of the Trust is to provide and promote education and research in the field of Engineering & Technology, Medicine, Humanities, Science and Management.


Toggle navigation
Data Query
Dashboard
Charts
Moodle Charts
WebSubmission Charts
new Moodle Charts
new WebSubmission Charts
Tables
Simple Query
Data Query
Critical Questions
Setings
Bug report
Survey
Survey 1
Survey 2
About
About us
Privacy
Terms
Help
Data Query
Handy Tools
Data source
Component
Event Name
Event Type
Start Date
To
Due Date
To
User
Grade
To
Assignment
Course
School Year
Semester
Search
Result:


{% extends "devhub/addons/submit/base.html" %} {% block title %} {{ dev_page_title(_('Submission Complete'), addon) }} {% endblock %} {% block primary %} {% set version_edit_url = url('devhub.versions.edit', addon.slug, uploaded_version.id) %} {% if uploaded_version.channel == amo.CHANNEL_LISTED %}
{% if preview %} {% endif %}
{{ _("You’re done! This version will be available after it passes review. " "You will be notified when it is reviewed.") }}
{% else %}{% trans site_domain=settings.DOMAIN %} You’re done! ✨ You will receive a confirmation email when this version is published on {{ site_domain }}. Note that it may take up to 24 hours before publication occurs, or longer if your add-on is selected for manual review. If you do not see an email after 24 hours, please check your spam folder. {% endtrans %}
{% endif %} {% if submit_page == 'addon' and addon.type == amo.ADDON_STATICTHEME %}{{ _("Your listing will be more successful by adding a detailed description. " "Get your listing ready for publication:") }}
{% elif submit_page == 'addon' %}{% trans a_attrs='target="_blank" rel="noopener noreferrer" href="%s/documentation/develop/create-an-appealing-listing?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=submission"'|format(settings.EXTENSION_WORKSHOP_URL)|safe %} You can attract users to your extension by adding a detailed description and screenshots to your listing. Get help creating an appealing listing on Firefox Extension Workshop. {% endtrans %}
{% endif %} {% if addon.type != amo.ADDON_STATICTHEME %}{{ _("You can also edit this version to add version notes, or source code " "if your submission includes minified, concatenated or otherwise machine-generated code.") }}
{{ _("Edit version {0}")|format_html(uploaded_version.version) }}
{% endif %} {% else %} {% include "devhub/includes/done_unlisted.html" %} {% endif %} {% if addon.type != amo.ADDON_STATICTHEME %}{{ _('As a reminder, your add-on is subject to manual review at any time.') }}
{% endif %}{% with link=url('devhub.themes') if addon.type == amo.ADDON_STATICTHEME else url('devhub.addons') %} {{ _("Go to My Submissions") }} {% endwith %}
{% endblock %}