See: Description
| Package | Description |
|---|---|
| org.springframework.integration.dsl |
Root package of the Spring Integration Java DSL.
|
| org.springframework.integration.dsl.amqp |
Provides AMQP Components support for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.channel |
Contains MessageChannel Builders DSL.
|
| org.springframework.integration.dsl.config |
Provides config classes of the Spring Integration Java DSL.
|
| org.springframework.integration.dsl.context |
The context support classes for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.core |
Provides core classes of the Spring Integration Java DSL.
|
| org.springframework.integration.dsl.feed |
Provides Feed Components support for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.file |
Provides File Components support for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.ftp |
Provides FTP Components support for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.http |
Provides HTTP Components support for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.jms |
Provides JMS Components support for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.jpa |
Provides JPA Components support for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.kafka |
Provides Kafka Components support for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.mail |
Provides Mail Components support for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.scripting |
Provides Scripting Components support for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.sftp |
Provides SFTP Components support for Spring Integration Java DSL.
|
| org.springframework.integration.dsl.support |
Provides various support classes used across Spring Integration Java DSL Components.
|
| org.springframework.integration.dsl.support.tuple |
Tuples provide a type-safe way to specify multiple parameters.
|
| org.springframework.integration.dsl.transaction |
Provides classes supporting Transactions.
|
For further API reference and developer documentation, see the Spring Integration Java DSL reference documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
If you are interested in commercial training, consultancy, and support for Spring Integration, please visit http://spring.io


{% comment %} PARAMETERS: gallery to return all images in a gallery, specify it's name (with extension) TODO When returning a gallery, don't have a way to define caption or alt yet. Probably want to store them along with source paths, but I don't know yet. {% endcomment %} {% assign year = page.date | date: "%Y" %} {% assign gallery_name = include.gallery %} {%- if gallery_name == "" or gallery_name == nil -%} {% assign gallery_name = "gallery" %} {%- endif -%} {% capture gallery_slug %}{{gallery_name | slugify}}{% endcapture %} {% assign gallery = site.data.pictures[year][page.slug][gallery_slug] %} {%- if gallery -%}
{%- else -%} # Gallery Didn't Exist: **{{ include.gallery }}** {%- endif -%}


{% extends "window.html" %} {% block _head %} {% endblock %} {% block viewport %}
Date: {% now "D/m/y" %}
Start time of session: {{session_start}}
Number of total Advertisments served: {{ad_number}}
Number of clients Managed by Dashboard: {{client_number}}
Number of pending updates to clients: {{len_updates}}
Errors during this session: {{len_errors}}
No messages have been pushed to this console since the start of this session
{% else %} {% for message in console_messages %}{{message}}
{% endfor %} {% endif %}


Permanent storage is something most applications want to have in one way or another. Selecting the right storage wouldn't be a choice at all if there weren't so many options out there, and a lot of these come with their respective advantages and disadvantages.
Read moreWhen writing a user system for a client-side encrypted application, you first have to start with the universe. Well, that might be too much, so let's start a bit further ahead.
Read moreOne of the most important features of an API, besides usability, is resilience. A big aspect of a more resilient API is a restricted amount of information communicated. This is important to keep in mind, since every bit of information you give away, aids in an attack against your API.
Read moreLast time, in Tokens, cookies and sessions: an auth story (Part 1), we talked about the decision-making process behind our authentication mechanism.
Read moreWhen deciding which way to go with communicating and storing authentication information, one can easily drift into a bad trip and start wondering how anything ever works.
Read moreCustom types in Ecto are a really nice way of abstracting away some functionality you need in a lot of places concerning your schemas. That sounds really nice, but let's break that down to something more digestible.
Read moreLast time we went over creating a secured infrastructure and network for our SaaS operation.
Read moreThe decision behind every SaaS DB: MT or MI?
Read moreA secure infrastructure is pretty useless if the application being transported is not reliably secure. So this week we will talk about securing our deployment and continuous integration process.
Read moreLast week we talked about the application's threat model. Now let's talk about securing our infrastructure.
Read moreBefore we can properly develop our application, it helps to have a clearly formulated idea about what you want to do, and why. When it comes to an application whose goal is to provide a secure environment for its users, it is important to have a concrete threat model. This way we know what to protect against - and also why.
Read moreSealas was our our first attempt to create a SaaS.
It started out as a simple idealistic idea: frustrated with the available options, we wanted to create an easy to use accounting application, that encrypts all user data before storing.
But we failed horribly.
Read more


This book is an introduction to the Boost C++ Libraries which complement the C++ standard by adding functions helpful in practice. As the Boost C++ Libraries are based on the C++ standard, they are implemented using state-of-the-art C++. They are platform independent and are supported on many operating systems including Windows and Linux by a large developer community.
The Boost C++ Libraries enable you to boost your productivity as a C++ developer. For example, you can benefit from smart pointers which help you to write more reliable code or use one of the many libraries to develop platform independent network applications. Since many Boost C++ Libraries are going to be incorporated into the next version of the C++ standard, you can prepare yourself starting today.
As your browser doesn't support frames, please click here to open the book The Boost C++ Libraries without frames.


Manchester, UK
Personal Profile
I am a versatile programmer with knowledge and interest to learn and code, who specialise in Web and Android development.
I am aspiring to be a Full Stack Developer by the end of the year, by working through the freeCodeCamp curriculum and I am currently on my second scholarship from Google via Udacity studying Mobile Web Specialist, a course that focuses on accessible and responsive web apps and offline first technologies.
Skills
Trello and Slack efficent
CMS (Pantheon, AWS, Episerver)
Version Control (Git)
Android Studio
Gulp
TDD
Google Analytics and Data Studio
Languages
HTML
CSS
SCSS
Javascript
Java
Python
Typescript
XML
Frameworks
Wordpress and Drupal
Bootstrap3
AMP
jQuery
Jekyll
Suzy
Fetch API
ReactJs
Angular
My role involves translating UX design / wireframes from Adobe XD into code to produce the visual elements of a Website or Landing page, using varying technologies.
I work as part of a supportive and closeknit creative team, working closely and very collaborative with our UX designers, client-services and copyrighter to ensure all project are delivered with client's approval, optimised, tested, and on time.
This requires building a reusable code base for future re-use, and liaising with internal and external stakeholders concerning projects and building a good stakeholders relationship with active communication.
My role and responsibilities at the Co-op included providing high-quality digital projects, digital and administrative support to the team.
This involved assisting in the delivery of projects and membership campaigns, analyzing and reporting campaigns data’s, and Front-End Web development, which was website (Internet and Intranet) content updating and creating via Episerver CMS (the Co-op content management system).
I was also responsible for individual projects as per agreement with my team manager, as well as working with colleagues on the team on projects, and liaising with internal and external stakeholders concerning key campaigns, initiatives and projects and building a good stakeholders relationship with active communication.
Mobile Web Specialist Nanodegree
Android Basic Nanodegree by Google
Andriod - Web Development! All I need to know in one place
Full-Stack Curriculum
Web Development! All I need to know in one place
PGCE in Early Years Teacher Status
BSc in Integrated Children Practice
FDSc in Working with Familiies and Commiunities
I am someone that likes to get involved because I have a genuine commitment to social impact, so being able to help support people new to coding and developing is something I enjoy and I do in my free time, and I enjoy mentoring those that reach out to me for help.
I was invited to the join the Free-code-camp Manchester meet-up as an organiser in January due to my contribution to the group.
I organised Christmas Jumper day last Christmas with my co-workers and was able to raise over £200 for Save the children.
At the Co-op, I have been involved in a few community projects and fundraising. In 2016, I organize and lead a massive clean-up in Boggart Hole Park, which also made the local paper. I also organized a fundraising 'Charity Shop' event in 1 Angel Square which raise over £700. And in October 2016, I was part of Team Droylsden Co-op Apprenticeship challenge, where we were the winner of the ‘greatest increase in shop takings’.
While in University I volunteered in a local charity shop for animals within my first two years, which I really enjoyed, and I was able to learn a lot about the local community.


QEMU Guest Agent¶
Synopsis¶
qemu-ga [OPTIONS]
Description¶
The QEMU Guest Agent is a daemon intended to be run within virtual machines. It allows the hypervisor host to perform various operations in the guest, such as:
get information from the guest
set the guest’s system time
read/write a file
sync and freeze the filesystems
suspend the guest
reconfigure guest local processors
set user’s password
…
qemu-ga will read a system configuration file on startup (located at
/home/qemu-docs/qemu/install-dir/etc/qemu
/qemu-ga.conf
by default), then parse remaining
configuration options on the command line. For the same key, the last
option wins, but the lists accumulate (see below for configuration
file format).
Options¶
-
-m
,
--method
=METHOD
¶ Transport method: one of
unix-listen
,virtio-serial
, orisa-serial
, orvsock-listen
(virtio-serial
is the default).
-
-p
,
--path
=PATH
¶ Device/socket path (the default for virtio-serial is
/dev/virtio-ports/org.qemu.guest_agent.0
, the default for isa-serial is/dev/ttyS0
). Socket addresses for vsock-listen are written as<cid>:<port>
.
-
-l
,
--logfile
=PATH
¶ Set log file path (default is stderr).
-
-f
,
--pidfile
=PATH
¶ Specify pid file (default is
/var/run/qemu-ga.pid
).
-
-F
,
--fsfreeze-hook
=PATH
¶ Enable fsfreeze hook. Accepts an optional argument that specifies script to run on freeze/thaw. Script will be called with ‘freeze’/’thaw’ arguments accordingly (default is
/home/qemu-docs/qemu/install-dir/etc/qemu
/fsfreeze-hook
). If using -F with an argument, do not follow -F with a space (for example:-F/var/run/fsfreezehook.sh
).
-
-t
,
--statedir
=PATH
¶ Specify the directory to store state information (absolute paths only, default is
/var/run
).
-
-v
,
--verbose
¶
Log extra debugging information.
-
-V
,
--version
¶
Print version information and exit.
-
-d
,
--daemon
¶
Daemonize after startup (detach from terminal).
-
-b
,
--blacklist
=LIST
¶ Comma-separated list of RPCs to disable (no spaces,
?
to list available RPCs).
-
-D
,
--dump-conf
¶
Dump the configuration in a format compatible with
qemu-ga.conf
and exit.
-
-h
,
--help
¶
Display this help and exit.
Files¶
The syntax of the qemu-ga.conf
configuration file follows the
Desktop Entry Specification, here is a quick summary: it consists of
groups of key-value pairs, interspersed with comments.
# qemu-ga configuration sample
[general]
daemonize = 0
pidfile = /var/run/qemu-ga.pid
verbose = 0
method = virtio-serial
path = /dev/virtio-ports/org.qemu.guest_agent.0
statedir = /var/run
The list of keys follows the command line options:
Key |
Key type |
|---|---|
daemon |
boolean |
method |
string |
path |
string |
logfile |
string |
pidfile |
string |
fsfreeze-hook |
string |
statedir |
string |
verbose |
boolean |
blacklist |
string list |
See also¶
qemu(1)


|
SideCar
|
Base class for message-specific circular buffers. More...
#include </Users/howes/src/sidecar/Messages/CircularBuffer.h>
Public Types | |
| using | MessageRef = Messages::PRIMessage::Ref |
Public Member Functions | |
| Messages::MetaTypeInfo::Value | getType () const |
| Obtain the type enumeration of the messages held in the buffer. More... | |
| size_t | size () const |
| Obtain the number of messages in the buffer. More... | |
| bool | empty () const |
| Determine if the buffer is void of messages. More... | |
| void | clear () |
| Remove all messages from the buffer. More... | |
Static Public Member Functions | |
| static Logger::Log & | Log () |
| Log device used by instances. More... | |
Protected Member Functions | |
| CircularBuffer (const Messages::MetaTypeInfo &type) | |
| Constructor. More... | |
| ~CircularBuffer () | |
| Destructor. | |
| void | add (const MessageRef &msg) |
| Store a message into the buffer. More... | |
| CircularBufferIterator | locate (const MessageRef &msg) const |
| Obtain an iterator that points to the slot that contains a given message. More... | |
| CircularBufferIterator | newest () const |
| Obtain iterator to the newest element in the buffer. More... | |
| CircularBufferIterator | oldest () const |
| Obtain iterator to the oldest element in the buffer. More... | |
Static Protected Member Functions | |
| static void | Install (const std::string &name, CircularBuffer *buffer) |
| Class utility method that installs a new CircularBuffer into the global collection of circular buffers. More... | |
| static const CircularBuffer * | Get (const std::string &name, const Messages::MetaTypeInfo &typeInfo) |
| Class utility method that returns a previously-registered CircularBuffer object. More... | |
Friends | |
| class | CircularBufferIterator |
Base class for message-specific circular buffers.
A circular buffer holds a finite number of PRIMessage objects. The value obtained from the message PRIMessageInfo::getShaftEncoding() method determines where in the buffer it is stored.
This class does all of the type-neutral work. However, it prohibits creation of instances. Type-specific classes provide that functionality.
Definition at line 28 of file CircularBuffer.h.
|
protected |
Constructor.
| type | type type descriptor for the messages being held |
Definition at line 67 of file CircularBuffer.cc.
References SideCar::Messages::RadarConfig::GetShaftEncodingMax(), Log(), and LOGINFO.
|
protected |
Store a message into the buffer.
The position where the message will be placed is determined by the value of PRIMesageInfo::getShaftEncoding().
| msg | the message to store |
Definition at line 93 of file CircularBuffer.cc.
References SideCar::Messages::MetaTypeInfo::Find(), SideCar::Messages::MetaTypeInfo::getName(), Log(), LOGDEBUG, LOGINFO, and Logger::ProcLog::thrower().
| void CircularBuffer::clear | ( | ) |
Remove all messages from the buffer.
Iterators remain valid, but they will point to an invalid reference-counted value, whose get() method will return NULL.
Definition at line 83 of file CircularBuffer.cc.
|
inline |
Determine if the buffer is void of messages.
Definition at line 55 of file CircularBuffer.h.
|
staticprotected |
Class utility method that returns a previously-registered CircularBuffer object.
Throws an exception if the buffer does not exist, or if the buffer does not work with the given message type.
| name | the name of the buffer to fetch |
| typeInfo | the message type specification the buffer must handle |
Definition at line 20 of file CircularBuffer.cc.
References SideCar::Messages::MetaTypeInfo::getKey(), Log(), LOGINFO, and Logger::ProcLog::thrower().
|
inline |
Obtain the type enumeration of the messages held in the buffer.
Definition at line 43 of file CircularBuffer.h.
|
staticprotected |
Class utility method that installs a new CircularBuffer into the global collection of circular buffers.
Throws an error if there is already an entry registered under the given name.
| name | the name to register the buffer under |
| buffer | the object to register |
Definition at line 46 of file CircularBuffer.cc.
References Log(), LOGINFO, and Logger::ProcLog::thrower().
|
protected |
Obtain an iterator that points to the slot that contains a given message.
Uses the value from PRIMessageInfo::getShaftEncoding(), but does not check that the actual messages are the same.
| msg | the message to look for |
Definition at line 146 of file CircularBuffer.cc.
|
static |
Log device used by instances.
Definition at line 12 of file CircularBuffer.cc.
References Logger::Log::Find().
Referenced by add(), CircularBuffer(), clear(), Get(), Install(), locate(), and ~CircularBuffer().
|
protected |
Obtain iterator to the newest element in the buffer.
NOTE: if another thread adds to the the buffer, then this will no longer refer to the newest entry.
Definition at line 138 of file CircularBuffer.cc.
|
protected |
Obtain iterator to the oldest element in the buffer.
NOTE: if another thread adds to the the buffer, then this will no longer refer to the oldest entry, and instead point to newer entries.
Definition at line 132 of file CircularBuffer.cc.
|
inline |
Obtain the number of messages in the buffer.
Definition at line 49 of file CircularBuffer.h.


[161]
A. Looney, C. Yannelis, , Brookings Papers on Economic Activity 2015 (2015), no. 2, 1–89.
in-context


- Books
- Inside XML by Steve Holzner published by New Riders 2000
- Excellent for both learning and as a reference; includes XSL and useful material on interfaces with Java and JDOM and SAX
- XML and Web Services Unleashed by Ron Schmelzer, Travis Vandersypen, Jason Bloomberg, and Madhu Siddalingaiah published by SAMS 2002
- Another boook useful for learning and as a reference; many examples; note that this book includes web services
- Charles F. Goldfarb's XML Handbook, 5 Edition by Charles F. Goldfarb and Paul Prescod published by Prentice Hall 2003
- Includes some material on web services; for a long time this was the standard; well-written, it is still very useful
- Learning XML, Second Edition by Erik T Ray published by O'Reilly 2003
- More of a book to learn from than the ones above; very clear
- XML 1.1 Bible by Elliotte Rusty Harold published by IDG 2004
- Includes coverage of CSS, but very limited coverage of important topic of schemas, so I would use the other books first.
- Documentation
- W3C HTML Home Page
- XML homepage from the w3c
- Includes description of the many working groups and links to them, to various languages specifications and versions, and to many other resources.
- XML Schemas
- What are the components of an XML Schema and here their definition in a DTD
- Chart of Built-In DataTypes
- XML Recommendations Homepage
- XML Specs
- XML Namespaces
- The Cover Pages
- Important collection of on-line reference material on SGML/XML languages and various standards, now hosted by OASIS. You may want to start at About XML Cover Pages. Site is for the knowledgeable (except possibly the news stories on front page).
- DTD's attributes


The
Old Cameron Cemetery is also called the Hartline Cemetery. It is located in Adams Township
southwest of Cameron about 700 feet northwest of the bridge over Sunfish
Creek. A steep trail goes north up the hill for about 150 feet. The
cemetery is no longer maintained. There are about 50 graves in the
cemetery with many of the monuments being those of the Hartline family.


a bug in agama allowes for multi-line if you click the eyeball (you can 'C' it)(edited)
Markus01-Feb-19 11:06 PM
there was a 5 btc painting once ^^
ca33301-Feb-19 11:06 PM
there was a 310 BTC one not long ago....
worth 2 millies when got cracked
Markus01-Feb-19 11:06 PM
oh yea forgot about that one
ca33301-Feb-19 11:06 PM
and still couple other unsolved ones around
mazyar_lp01-Feb-19 11:09 PM
seed length can be any thing??
Decker01-Feb-19 11:30 PM
Ok, guys ... Let me introduce one "ultra-easy" puzzle "based" on previous one. Rules are simple:
1. https://kmdexplorer.io/address/RKPGAoV72Z53cqTnfRuhLquzmHPyyVuGX3 - here is the address with bounty. 25 KMD.
2. No hidden rules, no bugs exploitation.
3. Don't need to calc something, solve sudokues, or something like it.
4.  Yes, length of passphrase is 1 symbol.
5. No hints ... with 1 char - you don't need any hints ))
p.s. Except one: This is crypto puzzle ))(edited)
Who will be first? ) He-he ... )
Gawain01-Feb-19 11:36 PM
it's not heh
i also tried ONLY 1 CHAR LONG . Yes, length of passphrase is 1 symbol.
Jonathan01-Feb-19 11:38 PM
~
Decker01-Feb-19 11:41 PM
What could be easier? Just one character ))
ca33301-Feb-19 11:43 PM
haha nice one @Decker
i will finish documentation and then i will test it.
Komodo Multicoin Wallet and Blockchain Dashboard. Contribute to KomodoPlatform/Agama development by creating an account on GitHub.
updated
starting from there you should be able to build it and launch it. plz let me know if any obstacles.
i set up a fresh ubuntu 18.04 and will simulate a fresh install - so will see if anything is missing
ca33302-Feb-19 12:14 AM
this was really easy - did it during the Agama build.
1
ps. @ComputerGenie 👴👴👴 Agama running fine via new README
i additinoally installed build-essential as a dependency
i am used to that one and install it automatically since i am gonna build komodo too.
i will add this step to the README.
bundling and building osx/linux will be fine. for WIN you ll need to go through a crosscompilation hackaround. just ping me whenever you want to build for WIN.
kolo02-Feb-19 12:21 AM
So my assumption answer is jl777 was correct, just \n was missing. Yay
ca33302-Feb-19 12:22 AM
exactly @kolo
kolo02-Feb-19 12:23 AM
@Decker was asking me yesterday what can be heart. First and only assumption was jl777
1
1
Decker02-Feb-19 12:24 AM
)) Not only one ... could be jl777c )
ca33302-Feb-19 12:24 AM
hehe - you keep giving me good ideas for future puzzles
Hey yall. Do you like games?
:scallywag: Ahoy mateys! With great pleasure we announce the opening of the first cycle of
ARRR LOTTERY
ARRR Lottery is a raffle-type lottery game, played in cycles.
ℹ The cycle is opened by the lottery administrator, and ended automatically by the lottery bot after 7 day(s). The winners will be announced in #pirate-chat .
There will be 3 randomly selected winners, winning 80%, 10%, 5% from the pot, respectively. The remaining ARRR will be used to start the next lottery cycle.
Buy tickets by issuing the !arrrtip buyticket amount command (specify the amount of your choosing; minimal amount to buy is 1 ARRR). You can also buy tickets in direct messages, or in privacy mode by appending private to the command. You can buy an arbitrary amount of tickets - the more tickets you buy, the greater your chances will be in the drawing.
At all times, all bought lottery tickets for cycle can be audited by issuing the !arrrtip lotterytickets command (data is anonymized).
At all times you can get help by issuing the !arrrtip lotterymanual command.
To see current lottery cycle info, including the tickets you bought (delivered in DM), issue the !arrrtip lottery command.
Have a great weekend!(edited)
1
williamkeffer9302-Feb-19 02:01 AM
@Decker both. Man I was close to the sudoku I had the numbers right was missing jl777. 10 more minutes I would of had it computer locked up had to replace a hard drive cable lol
I wouldn't have got the one char one lol
FishyGuts02-Feb-19 02:36 AM
!arrrtip squall 1000
1
Good luck in the lottery!
Max Power02-Feb-19 02:37 AM
Strob02-Feb-19 03:00 AM
oh boy and I tried this and it didn't work! maaa! : 428916753 357428961 916375842 794183526 563247189 281569437 645731298 872694315 139852674 jl777
hastrup02-Feb-19 03:37 AM
!arrrtip buyticket 10
!arrrtip buyticket 20
@FishyGuts nice thx!! :)
!arrrtip lotterymanual
!arrrtip lotterytickets
Strob02-Feb-19 03:46 AM
@ca333 Thank you for that puzzle that was fun!
1
ca33302-Feb-19 07:43 AM
you re welcome @Strob - next week we will continue with the next cryptopuzzle. i promise it will be more fun. 1 picture = 3 different seeds hidden (3 different levels: easy, mid, hard)
@kolo haha nice - now you did a puzzle too!!? I will check it shortly - have couple of tasks first. @Decker have you tried it? ps your puzzle was cool and i will use the idea for the next puzzle - first i used a bruteforcer on my std ASCII table (even NUL, del, EOF, etc.) but i saw its nothing from there. Then i downloaded extended char table with more symbols (incl. 'crypto') and it worked immdiately..
mazyar_lp02-Feb-19 09:25 AM
Create puzzles that non tech people can solve them
6 of the teams you wanted to host an AMA in the #Binance Telegram https://t.co/xYcqyDnJDx
@ziliqa_coin $ZIL
@KomodoPlatform $KMD
@metalpaysme $MTL
@wavesplatform $WAVES
@ZCoinProject $XZC
@NeblioTeam $NEBL
There will be two polls with the rules included on the second
Pol...
6 of the teams you wanted to host an AMA in the #Binance Telegram https://t.co/xYcqyDnJDx
@ziliqa_coin $ZIL
@KomodoPlatform $KMD
@metalpaysme $MTL
@wavesplatform $WAVES
@ZCoinProject $XZC
@NeblioTeam $NEBL
There will be two polls with the rules included on the second
Pol...
6 of the teams you wanted to host an AMA in the #Binance Telegram https://t.co/xYcqyDnJDx
@zilliqa $ZIL
@KomodoPlatform $KMD
@metalpaysme $MTL
@wavesplatform $WAVES
@zcoinofficial $XZC
@NeblioTeam $NEBL
There will be two polls with the rules included on the second
Poll ...
they replaced the tweet with a new one
Acura02-Feb-19 10:01 AM
Voted on the new link
6
bogybogy02-Feb-19 10:30 AM
Voted on new link
How to beat zilika when people follow the money not the real decentralisation
crumb02-Feb-19 10:43 AM
too few people care / are able to understand what it really means. unfortunate, but current reality
"it" being decentralisation
ph03nix02-Feb-19 10:47 AM
this is a pretty decent poll, good to see komodo in the running
Fontconfig warning: "/etc/fonts/fonts.conf", line 100: unknown element "blank"
Xlib: extension "RANDR" missing on display ":0.0".
(node:5490) Warning: .then() only accepts functions but was passed: [object Object]
Option origins is not valid. Please refer to the README.
(node:5490) Warning: .then() only accepts functions but was passed: [object Object]
6 of the teams you wanted to host an AMA in the #Binance Telegram https://t.co/xYcqyDnJDx
@zilliqa $ZIL
@KomodoPlatform $KMD
@metalpaysme $MTL
@wavesplatform $WAVES
@zcoinofficial $XZC
@NeblioTeam $NEBL
There will be two polls with the rules included on the second
Poll ...
Likes
121
ca33302-Feb-19 12:35 PM
@ComputerGenie 👴👴👴 which OS are you riding?
ComputerGenie 👴👴👴02-Feb-19 12:35 PM
debian
the RANDR msg is mostly meaningless, but I pasted all of it as is
ca33302-Feb-19 12:45 PM
just to confirm - you ve did the first part and launched up the frontend process
aftwards you launched up a new terminal (while frontend is running) to spin up the Agama electron app ??
ComputerGenie 👴👴👴02-Feb-19 12:45 PM
yes, I followed the readme exactly
ca33302-Feb-19 12:46 PM
ok - i ve tested it on ubuntu 18.04 - i am spinning up my debian 9 machine and will test here
give me 30 - 45 mins though. quickly finishing a mobile build for some test.
ComputerGenie 👴👴👴02-Feb-19 12:46 PM
no rush, I not going away any time soon
1
ca33302-Feb-19 12:47 PM
@SHossain ^ if you get a chance plz try to reproduce above


Creates meshes with axial symmetry like vases. The lathe rotates around the Y axis.
const points = [];
for ( let i = 0; i < 10; i ++ ) {
points.push( new THREE.Vector2( Math.sin( i * 0.2 ) * 10 + 5, ( i - 5 ) * 2 ) );
}
const geometry = new THREE.LatheGeometry( points );
const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
const lathe = new THREE.Mesh( geometry, material );
scene.add( lathe );
points — Array of Vector2s. The x-coordinate of each point must be greater
than zero. Default is an array with (0,-0.5), (0.5,0) and (0,0.5) which
creates a simple diamond shape.
segments — the number of circumference segments to generate. Default is
12.
phiStart — the starting angle in radians. Default is `0`.
phiLength — the radian (0 to 2PI) range of the lathed section 2PI is a
closed lathe, less than 2PI is a portion. Default is 2PI.
This creates a [name] based on the parameters.
See the base [page:BufferGeometry] class for common properties.
An object with a property for each of the constructor parameters. Any modification after instantiation does not change the geometry.
See the base [page:BufferGeometry] class for common methods.
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]


The purpose of the discipline
The purpose of the discipline is to develop knowledge and acquire management consulting skills and organizational development, mastering methods for diagnosing organizational problems and ways to involve people in the processes of change.
Thats very important! It helps business to develop


diskstats.py
This plug-in reads /proc/diskstats and collects stats for a sub-set of devices, such as sda, sdb, ..., fio, md0, md1, md2, md3, etc.
In addition to collecting raw stats, plugin can cache current value to determine time series derivatives (such as, iops, device utilization, etc.) at next collection interval.
/proc/diskstats output shows one device stats per line and each line looks like this:
252 1 dm-1 321244 0 12631594<PHONE_NUMBER>086 0 29567992 46637332 0 1841812 47117632
Meaning of these lines is explained in linux kernel Documentation/iostat.txt (ignores first 3 fileds):
This is the total number of reads completed successfully.
Reads and writes which are adjacent to each other may be merged for efficiency. Thus two 4K reads may become one 8K read before it is ultimately handed to the disk, and so it will be counted (and queued) as only one I/O. This field lets you know how often this was done.
This is the total number of sectors read successfully.
This is the total number of milliseconds spent by all reads (as measured from __make_request() to end_that_request_last()).
This is the total number of writes completed successfully.
This is the total number of sectors written successfully.
This is the total number of milliseconds spent by all writes (as measured from __make_request() to end_that_request_last()).
The only field that should go to zero. Incremented as requests are given to appropriate struct request_queue and decremented as they finish.
This field is increases so long as field 9 is nonzero.
This field is incremented at each I/O start, I/O completion, I/O merge, or read of these stats by the number of I/Os in progress (field 9) times the number of milliseconds spent doing I/O since the last update of this field. This can provide an easy measure of both I/O completion time and the backlog that may be accumulating.
We want to limit the length of device list by ignoring sub-partitions when number of devices are beyond certian limit. We can also limit the number of devices by ignoring devices beyond certian limit, which is handy for supporting DB nodes with large number of logical units.
Collectd statistics for devices in global dev_list from /proc/diskstats
Args: None
This function determines a device list for this plugin monitoring.
There are a number of non-storage devices in /proc/diskstat output that need to be skipped. These inclue loop, ram, and possibly other devices and partitions.
In addition, we can decide whether to collect device partition stats based on number of overall devices constand: DISKSTATS_DEV_TOO_MANY. Also, it is possible to limit the overall number of devices and partitions that need to be tracked using: DISKSTATS_DEV_LIMIT.


Unable to fetch poll details from the system, please try after sometime or contact support team.
| {{votes.get('Yes')?.length}} | {{votes.get('No')?.length}} | {{votes.get('Tentative')?.length}} |
|---|---|---|
{{userTag.name}} {{userTag.team}} |
{{userTag.name}} {{userTag.team}} |
{{userTag.name}} {{userTag.team}} |


Package edu.sdccd.cisc191.b.client
Class PlayerShip
java.lang.Object
edu.sdccd.cisc191.b.client.Ship
edu.sdccd.cisc191.b.client.PlayerShip
public class PlayerShip extends Ship
Player ship class extends the Ship class. It defines features for the player, such as its hit box, current number of lives, and its collision status (also known as its survival status).
- Author:
- Joaquin Dicang, Sholehani Hafezi, Kim Lim
-
Constructor Summary
Constructors Constructor Description PlayerShip(int x, int y)
Initializes the player ship's x and y coordinates, default number of lives, its movement speed, and its default survival status as true. -
Method Summary
Modifier and Type Method Description void
decrementLives()
Decrease the current amount number of lives.java.awt.Rectangle
getHitBox()
Generates player ship's hit box.int
getLives()
Accesses the player ship's current number of lives.boolean
isAlive()
Accesses the current survival status of the player ship.boolean
isBullet()
Accesses the current status of the player ship's bullet.boolean
isMoveDown()
Accesses the current status of the player ship's down movement.boolean
isMoveLeft()
Accesses the current status of the player ship's left movement.boolean
isMoveRight()
Accesses the current status of the player ship's right movement.boolean
isMoveUp()
Accesses the current status of the player ship's up movement.void
setAlive(boolean alive)
Changes the current survival status of the player ship to the passed argument value.void
setBullet(boolean bullet)
Sets the current status of the player ship's bullet with the passed argument value.void
setMoveDown(boolean moveDown)
Sets the current status of the player ship's down movement with the passed argument value.void
setMoveLeft(boolean moveLeft)
Sets the current status of the player ship's left movement with the passed argument value.void
setMoveRight(boolean moveRight)
Sets the current status of the player ship's right movement with the passed argument value.void
setMoveUp(boolean moveUp)
Sets the current status of the player ship's up movement with the passed argument value.Methods inherited from class edu.sdccd.cisc191.b.client.Ship
getMoveSpeed, getX, getY, setMoveSpeed, setX, setY
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
PlayerShip
public PlayerShip(int x, int y)Initializes the player ship's x and y coordinates, default number of lives, its movement speed, and its default survival status as true.- Parameters:
x
- the player ship's x coordinatey
- the player ship's y coordinate
-
-
Method Details
-
getHitBox
public java.awt.Rectangle getHitBox()Generates player ship's hit box. This handles the player ship's collision events.- Returns:
- rectangle object that represents the hit box
- See Also:
Rectangle
-
isAlive
public boolean isAlive()Accesses the current survival status of the player ship.- Returns:
- the boolean value representing if the player ship is alive or not
-
setAlive
public void setAlive(boolean alive)Changes the current survival status of the player ship to the passed argument value.- Parameters:
alive
- the new survival status of the player ship
-
getLives
public int getLives()Accesses the player ship's current number of lives.- Returns:
- the current total number of lives
-
decrementLives
public void decrementLives()Decrease the current amount number of lives. -
isMoveLeft
public boolean isMoveLeft()Accesses the current status of the player ship's left movement.- Returns:
- the boolean value determining if the player is moving left
-
setMoveLeft
public void setMoveLeft(boolean moveLeft)Sets the current status of the player ship's left movement with the passed argument value. -
isMoveUp
public boolean isMoveUp()Accesses the current status of the player ship's up movement.- Returns:
- the boolean value determining if the player is moving up
-
setMoveUp
public void setMoveUp(boolean moveUp)Sets the current status of the player ship's up movement with the passed argument value. -
isMoveRight
public boolean isMoveRight()Accesses the current status of the player ship's right movement.- Returns:
- the boolean value determining if the player is moving right
-
setMoveRight
public void setMoveRight(boolean moveRight)Sets the current status of the player ship's right movement with the passed argument value. -
isMoveDown
public boolean isMoveDown()Accesses the current status of the player ship's down movement.- Returns:
- the boolean value determining if the player is moving down
-
setMoveDown
public void setMoveDown(boolean moveDown)Sets the current status of the player ship's down movement with the passed argument value. -
isBullet
public boolean isBullet()Accesses the current status of the player ship's bullet.- Returns:
- the boolean value determining if the player shot a bullet
-
setBullet
public void setBullet(boolean bullet)Sets the current status of the player ship's bullet with the passed argument value.
-


Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
For the best experience please use the latest Chrome, Safari or Firefox browser.
{hashdog}
{#}what we do
RubyOnRails Software Factory
We will help you from the conception of your idea to building and maintaining it as a working software. UI, UX, graphic design, back-end development, front-end development. We are on it!
{#}how we do it
Agile
We use Agile methods all the way. Agile inception, Agile planning, Scrum, XP, pair programming, retrospectives, agile project management. That way we can adapt to your every need.
Let's chat
Tell us about your idea. We want to know how we can help you. We'll have a session of agile inception.
Prototype
We sketch and wireframe your application. Then lay it out and discuss it with you. After this, you’ll be able to visualize your future application.
Create
We work with you through Project Management Sofware. You can check the evolution of your project in real-time.
Creative
Our designers will put all of their creative skills at your service, to make your app/site stand out from the rest.
{#}technologies
Our main tech stack is Rails. In this area we go both back-end and front-end.
Front-end
Back-end
{#}Services
Software Factory
Analysis
Design
Development
Testing
QA
IT Consulting
{#}Success Stories
{hashdog}
Use Arrows or SpaceBar keys to navigate


Description
This course provides an intensive, hands-on introduction to data science for analysts. Participants will learn the fundamental skills necessary to programmatically acquire, ingest, manipulate, merge, summarize, and visualize data.
Using open source programming tools, participants will engage with real-world statistical, temporal, spatial, and network data spanning topics relevant to their organization’s mission. Participants will also learn how to put all of the pieces together to complete analytical projects, automate workflows, and produce advanced reporting products.
Learning Objectives
Upon successfully completing this course, participants will be able to:
- Perform fundamental data analysis tasks, including:
- Managing and importing strutured and unstructured data
- Data carpentry: wrangling/cleaning/manipulating/transforming
- Fusing multiple data sources
- Conduct exploratory data analysis and visualization
- Write robust code to automate tasks
- Create rich analytical products to communicate findings
Prerequisites
There are no prerequisites. No previous exposure to programming or statistics is expected.
- This is not a statistics course, but we will draw upon ideas and techniques from the field of statistics.
- This is also not a computer science or software engineering course, but we will draw from topics, technologies, and practices that are most closely aligned with those fields.
Technology
- R
- The primary tool we will use throughout this course is the R programming language, a freely available language and environment for statistical computing and graphics that runs on Linux, Windows, and MacOS. While R was originally designed as a language targeting statistical analysis, it has grown to be one of the primary tools used for data science.
- RStudio
- We will use RStudio as our interface to the R language. RStudio is a freely available integrated development environment (IDE).
If you have a pre-existing installation of R and/or RStudio, we highly recommend reinstalling both and getting up-to-date versions. Below are some links with further readings:
Boilerplate
- Class participation: Participation is essential. Please come to class prepared to contribute and actively participate.
- Arrive on time: Please get to class early. Dealing with software is hard enough, but having people rustling to get situated can make concentrating even harder.
- Lessons: Daily lessons seek to cover all the topics necessary for a thorough introduction to programmatic data analysis. Should there be any lingering questions, participants are encouraged to raise them in class or contact the instructors directly.
- In-class materials: All in-class materials will be made available to participants via the course site.
- Course Communications and Instructor Feedback: For communication regarding the course, please contact the instructors using the information provided above.
Schedule
Classes will begin shortly after 0900 PDT and conclude at 1500 PDT daily. Daily sessions will break for one hour at 1130 PDT for lunch. Optional office hours will be held from 1500 to 1600 PDT; alternatively, please arrange via email using the information provided above.
The following is an outline of the coursework, each topic is followed by a list of resources for reference purposes.
Day 1: Introduction to Programming for Analysts
- Morning
- Systems Check: R and RStudio
- Installing packages
- Afternoon
- R basics
- Project management
- Lecture Notes
Day 2 : Data Carpentry: Cleaning and Managing
- Morning
- Data frames
- Getting data into and out of R
- Introduction to a grammar of data manipulation
- Afternoon
Day 3 : Visualizing Data and Exploring Patterns
- Morning
- More data carpentry
- “Tidy” data
- More visualization
- Afternoon
- Working with multiple data sources
Day 4: Going Deeper
Day 5: Wrapping up


C
RATE
Welcome to
CRATE
, home of your record collection.
LOG IN
Create An Account
Search Results
Cool Record
\
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record
Cool Record


Firefox OS Intensive
Deployment
Dietrich Ayala,
@dietrich
or
<EMAIL_ADDRESS>Firefox OS - Deployment
Photo:
psychikos2
Deployment
Types
Audience
Device
Phonegap/Cordova


Welcome to Sparsify¶
Sparsify improves model performance for deployment at scale using the latest model compression techniques. Use Sparsify to analyze, optimize, and integrate your neural network for production.
Sparsify is a deep learning model acceleration tool suite that simplifies the model optimization process to rapidly achieve the best combination of size, speed, and accuracy on any deep learning model. Sparsify is an easy way to optimize and benchmark models informed by industry research insights for ML practitioners, including ML engineers and operators, who need to deploy performant deep learning models at scale. Sparsify provides visual performance potential for your model, including a sliding scale between performance and loss.
About This Guide¶
This guide provides the following for you to use Sparsify:
Learning path and goals
Basic examples
Details of features
Advanced options
Feedback and Help¶
Sparsify is currently an alpha release and, as such, the software may not contain all of the features that are planned for the final version. Neural Magic, the software’s maintainer, welcomes all feedback and suggestions, from user experience to model optimization errors.
Post software issues requiring support. Please include a light summary, the steps to reproduce, screenshots, files used, or onscreen messages. Be sure to share your environment details and framework versions.
Submit bugs and feature requests. Check existing issues to avoid duplication.
Next step…
Begin by installing Sparsify.


Event Type
Name
×
Description
×
Start Time
×
End Time
×
Interval
×
Interval Detail
×
Duties
Duplicate Me
Duplicate Me
Delete Event Type
Save


A presentation on laws and admonitions from the writings and talks of Bahá'u'lláh and `Abdu'l-Bahá relating to the natural world; treatment of animals; education; consumption and moderation; distribution of wealth; and consultation.
This presentation highlights quotations related to themes of intersectionality; interdependence; kindness to animals; eating meat; clean air; burial; cultivation of the Earth; and implications of these for ethics and behavior.
Celebrating the Papal encyclical Laudato Si with a presentation for the Bahá'ís of Irving and Dallas Interfaith Power and Light. Addresses common themes from various religious responses to climate change; call to action; prevention; awareness and advocacy; and individual action to show support for international action.
A presentation originally dedicated to the National Preach-in on Climate Change (2014).
Eco-spiritual Integration: Three Texts is an essay on fragmented lifestyles in relation to environmental awareness, with reflection on three passages from the Bahá'í writings.


Provides access to phyloinformatic data in 'NeXML' format. The package should add new functionality to R such as the possibility to manipulate 'NeXML' objects in more various and refined way and compatibility with 'ape' objects.
| Version: | 2.2.0 |
| Depends: | R (≥ 3.0.0), ape (≥ 3.1), methods (≥ 3.0.0) |
| Imports: | XML (≥ 3.95), plyr (≥ 1.8), reshape2 (≥ 1.2.2), httr (≥ 0.3), uuid (≥ 0.1-1), dplyr (≥ 0.5.0), lazyeval (≥ 0.1.0), tidyr (≥ 0.3.1), stringr (≥ 1.0), xml2 |
| Suggests: | spelling, rdflib, geiger (≥ 2.0), phytools (≥ 0.3.93), knitr (≥ 1.5), rfigshare (≥ 0.3.0), knitcitations (≥ 1.0.1), testthat (≥ 0.10.0), rmarkdown (≥ 0.3.3), xslt, taxize (≥ 0.2.2), covr |
| Published: | 2018-11-01 |
| Author: | Carl Boettiger [cre, aut], Scott Chamberlain [aut], Hilmar Lapp [aut], Kseniia Shumelchyk [aut], Rutger Vos [aut] |
| Maintainer: | Carl Boettiger <cboettig at gmail.com> |
| BugReports: | https://github.com/ropensci/RNeXML/issues |
| License: | BSD_3_clause + file LICENSE |
| URL: | https://github.com/ropensci/RNeXML |
| NeedsCompilation: | no |
| Language: | en-US |
| Citation: | RNeXML citation info |
| Materials: | README NEWS |
| In views: | Phylogenetics |
| CRAN checks: | RNeXML results |
| Reference manual: | RNeXML.pdf |
| Vignettes: |
The nexml S4 Object Handling Metadata in RNeXML Extending NeXML to simmap SPARQL with RNeXML |
| Package source: | RNeXML_2.2.0.tar.gz |
| Windows binaries: | r-devel: RNeXML_2.2.0.zip, r-release: RNeXML_2.2.0.zip, r-oldrel: RNeXML_2.2.0.zip |
| OS X binaries: | r-release: RNeXML_2.2.0.tgz, r-oldrel: RNeXML_2.2.0.tgz |
| Old sources: | RNeXML archive |
| Reverse imports: | phylobase |
| Reverse suggests: | rotl |
Please use the canonical form https://CRAN.R-project.org/package=RNeXML to link to this page.


Title: Web Developer
Duration: June 2013 to Oct. 2015
Tasks:
- Built e-commerce registration portals.
- Performed cross-browser testing and automated testing with selenium.
- Worked in a team of 3 to 4 individuals.
- Built PDFs using Java.
- Built functionality to filter excel or CVS files.
- Built site designs to client specifications.
- Built in complex navigation using Java.
- Built in client-side functionality with JavaScript.
- Built in custom SQL queries.
- Implemented Bootstrap for mobile optimized websites.
- Built over a hundred sites working in small agile groups.
Technologies: HTML5, CSS, Bootstrap, JavaScript, jQuery, Java, SQL, JSP, Windows OS, Dreamweaver, Sublime Editor, Notepad++, Filezila, FireBug, Selenium


Hello, my name is Gustavo. I'm a Cs50's student and I love computers and space. I hope you will appreciate my website.


| Opcode/Instruction | Op /En | 64/32 bit Mode Support | CPUID Feature Flag | Description |
|---|---|---|---|---|
|
F3 0F 59 /r MULSS xmm1,xmm2/m32 |
RM | V/V | SSE | Multiply the low single-precision floating-point value in xmm2/m32 by the low single-precision floating-point value in xmm1. |
|
VEX.NDS.128.F3.0F.WIG 59 /r VMULSS xmm1,xmm2, xmm3/m32 |
RVM | V/V | AVX | Multiply the low single-precision floating-point value in xmm3/m32 by the low single-precision floating-point value in xmm2. |
|
EVEX.NDS.LIG.F3.0F.W0 59 /r VMULSS xmm1 {k1}{z}, xmm2, xmm3/m32 {er} |
T1S | V/V | AVX512F | Multiply the low single-precision floating-point value in xmm3/m32 by the low single-precision floating-point value in xmm2. |
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| RM | ModRM:reg (r, w) | ModRM:r/m (r) | NA | NA |
| RVM | ModRM:reg (w) | VEX.vvvv (r) | ModRM:r/m (r) | NA |
| T1S | ModRM:reg (w) | EVEX.vvvv (r) | ModRM:r/m (r) | NA |
Description
Multiplies the low single-precision floating-point value from the second source operand by the low single-precision floating-point value in the first source operand, and stores the single-precision floating-point result in the destina-tion operand. The second source operand can be an XMM register or a 32-bit memory location. The first source operand and the destination operands are XMM registers.
128-bit Legacy SSE version: The first source operand and the destination operand are the same. Bits (MAX_VL-1:32) of the corresponding YMM destination register remain unchanged.
VEX.128 and EVEX encoded version: The first source operand is an xmm register encoded by VEX.vvvv. The three high-order doublewords of the destination operand are copied from the first source operand. Bits (MAX_VL-1:128) of the destination register are zeroed.
EVEX encoded version: The low doubleword element of the destination operand is updated according to the writemask.
Software should ensure VMULSS is encoded with VEX.L=0. Encoding VMULSS with VEX.L=1 may encounter unpre-dictable behavior across different processor generations.
Operation
VMULSS (EVEX encoded version)
IF (EVEX.b = 1) AND SRC2 *is a register*
THEN
SET_RM(EVEX.RC);
ELSE
SET_RM(MXCSR.RM);
FI;
IF k1[0] or *no writemask*
THEN
DEST[31:0] (cid:197) SRC1[31:0] * SRC2[31:0]
ELSE
IF *merging-masking*
; merging-masking
THEN *DEST[31:0] remains unchanged*
ELSE
; zeroing-masking
THEN DEST[31:0] (cid:197) 0
FI
FI;
ENDFOR
DEST[127:32] (cid:197) SRC1[127:32]
DEST[MAX_VL-1:128] (cid:197) 0
VMULSS (VEX.128 encoded version)
DEST[31:0] (cid:197)SRC1[31:0] * SRC2[31:0]
DEST[127:32] (cid:197)SRC1[127:32]
DEST[MAX_VL-1:128] (cid:197)0
MULSS (128-bit Legacy SSE version)
DEST[31:0] (cid:197)DEST[31:0] * SRC[31:0]
DEST[MAX_VL-1:32] (Unmodified)
Intel C/C++ Compiler Intrinsic Equivalent
VMULSS __m128 _mm_mask_mul_ss(__m128 s, __mmask8 k, __m128 a, __m128 b);
VMULSS __m128 _mm_maskz_mul_ss( __mmask8 k, __m128 a, __m128 b);
VMULSS __m128 _mm_mul_round_ss( __m128 a, __m128 b, int);
VMULSS __m128 _mm_mask_mul_round_ss(__m128 s, __mmask8 k, __m128 a, __m128 b, int);
VMULSS __m128 _mm_maskz_mul_round_ss( __mmask8 k, __m128 a, __m128 b, int);
MULSS __m128 _mm_mul_ss(__m128 a, __m128 b)
SIMD Floating-Point Exceptions
Underflow, Overflow, Invalid, Precision, Denormal
Other Exceptions
Non-EVEX-encoded instruction, see Exceptions Type 3.
EVEX-encoded instruction, see Exceptions Type E3.


---
layout: page
title: Publications
---
Publications
[ASPLOS'20] - Lazy Release Persistency
Mahesh Dananjaya, Vasilis Gavrielatos, Arpit Joshi, Vijay Nagarajan
The 24th ACM conference on Architectural Support for Programming Languages and Operating Systems, Laussane, Switzerland, 2020. [Acceptance Rate=18%]
[pdf]
[ppt]
[THESIS'19] - Release Persistency
Mahesh Dananjaya
The University of Edinburgh, United Kingdom
[MSc Dissertation Award] [submitted-pdf]
Other Publications
[ASAP'18] - Reconfigurable Co-Processor Architecture with Limited Numerical Precision to Accelerate Deep Convolutional Neural Networks
Sasindu Wijeratne, Sandaruwan Jayaweera, Mahesh Dananjaya, Ajith Pasqual
The 29th IEEE International Conference on Application-specific Systems, Architectures and Processors, Milan, Italy, 2018.
[pdf]
[LANMAN'17] - SDN based Operator Assisted Offloading Platform for Multi-Controller 5G Networks
Madhusanka Liyanage, Mahesh Dananjaya, Jude Okwuibe, Mika Ylianttila
The 23rd IEEE International Symposium on Local and Metropolitan Area Networks, Osaka, Japan, 2017.
[pdf]
[NFV-SDN'16] - High Performance Flow Matching Architecture for OpenFlow Data Plane
Viduranga Wijekoon, Mahesh Dananjaya, Pramodya Kariyawasam, Sasika Iddamalgoda, Ajith Pasqual
The 2nd IEEE International Conference on Network Function Virtualization and Software Defined Networks, Palo Alto, California, USA, 2016
[pdf]
[THESIS'16] - OpenFlow Aware Network Processor with a custom RISC ISA
Mahesh Dananjaya, Viduranga Wijekoon, Pramodya Kariyawasam, Sasika Iddamalgoda, Ajith Pasqual
University of Moratuwa, Sri Lanka, 2016
[pdf]
[Article] - Low Power VLSI Design
Mahesh Dananjaya
ResearchGate, 2015
[pdf]


var nextTick = (function () {
return this.setImmediate || process.nextTick;
}());
function Channel() {
this._queue = new Array;
this._pending = new Array;
return this;
}
A channel is a queue with a read-end and a write-end. Values are written and read asynchronously via callbacks. The basic channel is such that the callback associated with a value put into it will be called when the value is consumed from the read end.
var nextTick = (function () {
return this.setImmediate || process.nextTick;
}());
function Channel() {
this._queue = new Array;
this._pending = new Array;
return this;
}
Convenience class method to instantiate a channel.
Channel.new = function () {
return new Channel();
};
function sendValue(value, callback) {
callback && nextTick(function () { callback(null, value); });
}
function sendError(err, callback) {
callback && nextTick(function () { callback(err, null); });
}
function sendValueS(value, callback) {
callback && callback(null, value);
}
function sendErrorS(err, callback) {
callback && callback(err, null);
}
function CBV(callback, value) {
this._callback = callback;
this._value = value;
return this;
}
Read a value from the channel, passing the value to the given callback.
Channel.prototype.take = function (callback) {
if (this._queue.length > 0) {
var q = this._queue.shift();
sendValue(q._value, q._callback);
sendValue(q._value, callback);
} else {
callback && this._pending.push(callback);
}
};
Places a value into the channel. The callback will be called when the value is consumed from the read-end.
Channel.prototype.put = function (value, callback) {
if (this._pending.length > 0) {
var p = this._pending.shift();
sendValue(value, callback);
sendValue(value, p);
} else {
this._queue.push(new CBV(callback, value));
}
};
Does any ending actions on the channel. The protocol is to have a channel “end” by a null value being placed on it. The end() method is simply to perform any pending ending actions. The default action is to replace the end() function with the original end.
Channel.prototype.end = function end() {
this.end = end;
};
Returns a channel that will give you values that come on this channel, without actually reading from the channel. That is, multiple taps on a channel will get its values fanned out. If a channel argument is given, the tapped values will go into that channel.
Channel.prototype.tap = function (chan) {
var tapChan = chan || new Channel();
var self = this;
if (!this._taps) {
this._taps = [tapChan];
var put = this.put;
this.put = function (value, callback) {
for (var c = 0, cN = this._taps.length; c < cN; ++c) {
this._taps[c].put(value);
}
if (value === null) {
while (this._taps.length > 0) {
this._taps[0].end();
}
this._taps = null;
this.put = put;
}
if (this._pending.length > 0) {
Put only if there are takers. Otherwise just drop the value. If we don’t do this, the value will simply pile up if only taps are being used on the channel.
put.call(this, value, callback);
}
};
} else {
this._taps.push(tapChan);
}
var end = tapChan.end;
tapChan.end = function () {
self._taps.splice(self._taps.indexOf(tapChan), 1);
end.call(this);
};
return tapChan;
};
For an end-point channel, applies the given function to values received on the channel. The second argument to the function is a callback that should be called once the processing has completed. It is alright to call the callback synchronously. It only makes sense to have one processing function for a channel. The fn is called with the value as the first argument and a loop continuation callback as the second argument.
Channel.prototype.process = function (fn) {
var self = this;
function receive(err, value) {
fn(value, loop);
}
function loop(err) {
if (!err) {
self.take(receive);
}
}
loop(null);
return this;
};
Binds a channel to the given named method of the given
class. If the class has an init() method, it will be called
with options.initArgs
to instantiate an object.
The given options.methodName
of the resultant object will be
invoked with the message as the first argument, and a continuation
callback (a la process()
) as the second argument. The methodName
defaults to receive
.
If options.spawn
is true
, then the handler is called with the
message only and the channel returns to processing other
messages immediately without waiting for the handling to
finish.
Calling bind on an already bound channel replaces the previous binding.
Channel.prototype.bind = function (klass, options) {
var self = this, receive, loop;
self._boundClass = klass;
self._boundMethodName = (options && options.methodName) || 'receive';
self._boundInitArgs = (options && options.initArgs) || [];
self._boundSpawn = (options && options.spawn) || false;
if (!self._bound) {
receive = function (err, msg) {
var handler = new self._boundClass(); // new is not expected to throw.
if (handler.init) {
try {
handler = handler.init.apply(handler, self._boundInitArgs);
} catch (e) {
return loop(err);
}
}
if (self._boundSpawn) {
nextTick(loop);
handler[self._boundMethodName](msg);
} else {
handler[self._boundMethodName](msg, loop);
}
};
loop = function (err) {
if (!err) {
self.take(receive);
} else {
self._bound = false;
}
};
self._bound = true;
loop(null);
}
return this;
};
function ChannelValue(chan, err, value) {
this.chan = chan;
this.err = err;
this.val = value;
return this;
}
ChannelValue.prototype.resolve = function () {
if (this.err) {
throw this.err;
} else {
return this.val;
}
};
Makes a callback that will receive the value produced by some process and place the result into the channel. The “id” exists to identify the one producing the value. The “id”, “err” and “val” are all available on the channel.
Channel.prototype.receive = function () {
var self = this;
return function (err, value) {
self.put(new ChannelValue(self, err, value));
};
};
Like receive, but results in the channel being ‘filled’ with the value received on the callback. Once a value is received, all subsequent take operations will give the same value, and puts will result in an error.
Channel.prototype.resolver = function () {
var self = this;
return function (err, value) {
self.fill(new ChannelValue(self, err, value));
};
};
Answers “will read succeed immediately?”
Channel.prototype.canRead = function () {
return this._queue.length > 0 && this._pending.length === 0;
};
Answers “will write succeed immediately?”
Channel.prototype.canWrite = function () {
return this._pending.length > 0 || this._queue.length === 0;
};
Answers “how many values have been placed into the channel?” Positive values give the number of values available right away. Negative values give the number of pending take operations.
Channel.prototype.backlog = function () {
return this._queue.length - this._pending.length;
};
Makes a new channel whose values are transformed by the given
function “f”. cond(value)
is a function that specifies a
condition until which the mapping will continue. The mapper
is not expected to throw.
Channel.prototype.map = function (f) {
var ch2 = Object.create(this);
var take = this.take;
ch2.take = function (callback) {
take.call(this, function (err, value) {
callback(err, err ? null : f(value));
});
};
return ch2;
};
Makes a new channel and pipes the values in this channel to it. Only the values that satisfy the predicate function ‘f’ are piped and others are dropped. The filter function is not expected to throw.
Channel.prototype.filter = function (f) {
var ch2 = Object.create(this);
var take = this.take;
ch2.take = function (callback) {
take.call(this, function (err, value) {
if (err) {
callback(err, null);
} else if (f(value)) {
callback(err, value);
} else {
ch2.take(callback); // Value dropped
}
});
};
return ch2;
};
Makes a new channel, reduces the values produced continuously and sends the output to the taker. The reducer is not expected to throw.
Channel.prototype.reduce = function (initial, f) {
var ch2 = Object.create(this);
var take = this.take;
var result = initial;
ch2.take = function (callback) {
take.call(this, function (err, value) {
if (err) {
callback(err, null);
} else {
result = f(result, value);
callback(null, result);
}
});
};
return ch2;
};
Makes a new channel and pipes the values put into this channel in groups of N.
Channel.prototype.group = function (N) {
if (N <= 0) {
throw new Error('Groups need to be at least 1 in size. Given "' + N + '"');
}
return this.reduce([], function (group, value) {
return (group.length === N) ? [value] : (group.push(value), group);
}).filter(function (g) { return g.length === N; });
};
function resolve(thing, recursive, callback) {
var unresolved = 0;
if (thing instanceof Channel) {
unresolved += resolveChannel(thing, recursive, callback);
} else if (thing instanceof Array) {
unresolved += resolveArray(thing, recursive, callback);
} else if (thing instanceof Object) {
unresolved += resolveObject(thing, recursive, callback);
} else {
sendValue(thing, callback);
}
return unresolved;
}
function resolveChannel(channel, recursive, callback) {
if (recursive) {
channel.take(function receiver(err, value) {
Channel.resolve(value, recursive, callback);
});
} else {
channel.take(callback);
}
return 1;
}
function resolveArray(arr, recursive, callback) {
var unresolved = 0;
for (var i = 0; i < arr.length; ++i) {
unresolved += resolve(arr[i], recursive, (function (i) {
return function receiver(err, value) {
if (recursive) {
resolve(value, recursive, receiver);
} else {
arr[i] = value;
--unresolved;
if (unresolved === 0) {
callback(null, arr);
}
}
};
}(i)));
}
return unresolved;
}
function resolveObject(obj, recursive, callback) {
unresolved = 0;
Object.keys(obj).forEach(function (k) {
unresolved += resolve(obj[k], recursive, function receiver(err, value) {
if (recursive) {
resolve(value, recursive, receiver);
} else {
obj[k] = value;
--unresolved;
if (unresolved === 0) {
callback(null, obj);
}
}
});
});
return unresolved;
}
Waits for all channels in the given array to get a value, replaces the array element with the received value and calls back when all entries have been resolved. If ‘recursive’ is true, then if the value received on a channel is itself a channel, it is recursively waited on until final resolution.
Channel.resolve = resolve;
Temporarily switches the channel to a mode where it will collect the next N items into a group and pass it on to the callback.
Use within task like this - var ch = new Channel(); … x <- ch.takeN(10);
Channel.prototype.takeN = function (N, callback) {
var group = [];
var self = this;
function receive(err, value) {
if (err) {
return sendError(err, callback);
}
if (value !== null) {
group.push(value);
if (group.length < N) {
self.take(receive);
} else {
sendValue(group, callback);
}
} else {
sendValue(group, callback);
}
}
self.take(receive);
};
Takes as many values as it can without blocking.
Channel.prototype.takeSome = function (callback) {
var bl = this.backlog();
if (bl > 0) {
return this.takeN(bl, callback);
}
sendValue([], callback);
};
Keeps this channel alive until a value is received from the given chan.
Channel.prototype.until = function (chan) {
var done = false;
var self = this;
var tapChan = chan.tap();
tapChan.take(function (err, value) {
done = true;
tapChan.end();
self.end();
});
var ch = this.tap();
var take = ch.take;
ch.take = function (callback) {
if (done) {
sendValue(null, callback);
} else {
take.call(this, callback);
}
};
return ch;
};
function noop() {}
Switches the channel to a state where every time some
reader takes a value from the channel, they’ll get
value
delivered immediately. This makes a channel
behave somewhat like a promise, where until fill
is called, asking for a value will cause a wait, but
once fill
is called somewhere, take
will always
succeed with a single value.
Channel.prototype.fill = function (value) {
if (this.backlog() > 0) {
throw new Error('Channel::fill cannot be used after Channel::put has been called');
}
var origPut = this.put;
this.take = function (callback) {
sendValue(value, callback);
};
this.put = function (ignoredValue, callback) {
sendError('filled', callback);
};
this.fill = noop;
If takers are already waiting, satisfy them immediately.
while (this.backlog() < 0) {
origPut.call(this, value);
}
return this;
};
Sends the elements of the given array one by one to the channel as readers request values. The callback will be called when the last value is accepted.
Channel.prototype.stream = function (array, callback) {
var i = 0, self = this;
function next() {
if (i < array.length) {
self.put(array[i++], next);
} else {
sendValue(array, callback);
}
}
next();
};
Sets up the channel to receive events of the given type
from the given domElement. (Works only in the browser.)
domElement
can either be a string which is taken to be
a querySelector specifier, an array of DOM nodes, or
a single DOM node. eventName
is a string like ‘click’
which gives an event category to bind to.
Note: If you want a channel to not receive events too frequently, you can first debounce the channel before listening for events, like this -
ch = new Channel();
ch.debounce(100).listen('.textarea', 'change');
The above code will make sure that consecutive change
events are separated by at least 100ms. The debounce()
method call produces a wrapper channel object that
acts as a gatekeeper to the original channel object
‘ch’. So, while the above way will result in debounced
actions, you can subsequently call ch.listen()
to
bypass debouncing on the same channel. Readers reading
ch
will receive events from the debounced elements
as well from the elements bound directly.
Channel.prototype.listen = function (domElement, eventName) {
var self = this;
var elements = null;
if (typeof domElement === 'string') {
elements = document.querySelectorAll(domElement);
} else if (domElement.length) {
elements = domElement;
} else {
elements = [domElement];
}
function listener(event) {
self.put(event);
event.stopPropagation();
}
for (var i = 0, N = elements.length; i < N; ++i) {
elements[i].addEventListener(eventName, listener);
}
var end = this.end;
this.end = function () {
for (var i = 0, N = elements.length; i < N; ++i) {
elements[i].removeEventListener(eventName, listener);
}
end.call(this);
};
return this;
};
Makes a new channel that receives the values put into all the given channels (which is an array of channels). The value produced by a merged channel is a wrapper object that has three fields - “chan” giving the channel that produced the value, “val” giving the value and “ix” giving the index of the channel in the array that produced the value. The merged channel will received a wrapped object that will pass on both values as well as errors from the channels being merged. This permits custom error handling instead of triggering error propagation in the receiver for every channel’s error. Not all errors and channels need be equal.
Breaking change: MergedChannelValue no longer has an ‘ix’ field giving the index within the array. You need to branch on the channel itself. Alternatively, you can store some reference value as a property of the channel object any way. The reason for this change is that now the “piper” function is exposed as the .add() method of the merged channel, to enable addition of new channels to the merged stream on the fly. To remove a channel from a merged stream, simply send a null value to it.
Breaking change: MergedChannelValue is now ChannelValue.
Channel.merge = function (channels) {
var channel = new Channel();
function piper(ch) {
function writer(err, value) {
if (value !== null) {
channel.put(new ChannelValue(ch, err, value), reader);
} else {
Indicate that the channel is finished. The reader can discard this.
channel.put(new ChannelValue(ch, null, null));
}
}
function reader(err, value) {
ch.take(writer);
}
reader(null, true);
}
channel.add = piper;
channels && channels.forEach(piper);
return channel;
};
It is sometimes useful to also have a value sent to an existing channel after a timeout expires. If some other process is supposed to write a value to the channel and it is taking too long, the value passed to the .timeout() call can be tested against to decide whether a timeout occurred before the process could do its thing.
Channel.prototype.timeout = function (ms, value) {
setTimeout(timeoutTick, ms, this, value);
return this;
};
Makes a “timeout” channel, which’ll deliver a value a given interval after the channel is created.
Channel.timeout = function (ms, value) {
return (new Channel()).timeout(ms, value);
};
function timeoutTick(channel, value) {
channel.put(value);
}
Makes a “clock” channel which, once started, will produce
values counting upwards from startCounter
, until the
stop()
method is called on the channel. Calling start()
will have an effect only when the clock is stopped.
Channel.clock = function (ms) {
var channel = new Channel();
channel._timer = null;
channel._timeInterval_ms = ms;
channel._counter = 0;
channel.start = clockStart;
channel.stop = clockStop;
return channel;
};
function clockTick(clock) {
clock.put(clock._counter++);
}
function clockStart(startCounter) {
if (!this._timer) {
startCounter = arguments.length < 1 ? 1 : startCounter;
this._counter = startCounter;
this._timer = setInterval(clockTick, this._timeInterval_ms, this);
}
}
function clockStop() {
if (this._timer) {
clearInterval(this._timer);
this._timer = null;
}
}
Returns a wrapped interface to channel which will debounce the values placed on it - i.e. it will reject put() operations that occur within a time of “ms” milliseconds between each other.
Channel.prototype.debounce = function (ms) {
var ch = Object.create(this);
ch._channel = this;
ch._debounceInterval_ms = ms;
ch._timer = null;
ch.put = debouncingPut;
return ch;
};
function realPut(ch, value, callback) {
ch._timer = null;
ch._channel.put(value, callback);
}
function debouncingPut(value, callback) {
if (this._timer) {
clearTimeout(this._timer);
this._timer = null;
}
this._timer = setTimeout(realPut, this._debounceInterval_ms, this, value, callback);
return this;
}
Wraps the given channel with an interface such that put() operations will immediately succeed as long as fewer than N values have been placed on the channel.
Channel.prototype.buffer = function (N) {
var ch = Object.create(this);
ch._channel = this;
ch._bufferLength = N;
ch.put = bufferedPut;
ch.take = bufferedTake;
return ch;
};
function bufferedPut(value, callback) {
if (this.backlog() < this._bufferLength) {
this._channel.put(value);
sendValue(value, callback);
} else {
this._channel.put(value, callback);
}
}
function bufferedTake(callback) {
this._channel.take(callback);
if (this.backlog() >= this._bufferLength) {
var q = this._queue[this._bufferLength - 1];
sendValue(q._value, q._callback);
q._callback = null;
}
}
Every time a bucket’s level falls below the low water mark, it waits for the bucket to get full again before delivering values to the takers. This is useful when values are expected to arrive at a channel roughly periodically, but the rate at which they get processed can fluctuate a bit. The buffering helps with the fluctuation and the “low water mark” helps ensure maintenance of the buffer.
Channel.prototype.bucket = function (fullSize, lowWaterMark) {
var ch = Object.create(this);
ch._channel = this;
ch._bufferLength = fullSize;
ch._bucketLowWaterMark = lowWaterMark || 0;
ch._suspendedTakes = [];
ch.waitingTillFull = true;
ch.take = bucketTake;
ch.put = bucketPut;
return ch;
};
function bucketProcSuspendedTakes(bucket) {
while (bucket._suspendedTakes.length > 0) {
bufferedTake.call(bucket, bucket._suspendedTakes.shift());
}
bucket.waitingTillFull = bucket.backlog() <= bucket._bucketLowWaterMark;
}
function bucketTake(callback) {
if (this.waitingTillFull) {
if (this.backlog() > this._bufferLength) {
Full reached.
this.waitingTillFull = false;
this.take(callback);
} else {
this._suspendedTakes.push(callback);
}
} else {
this._suspendedTakes.push(callback);
bucketProcSuspendedTakes(this);
}
}
function bucketPut(value, callback) {
bufferedPut.call(this, value, callback);
if (this.waitingTillFull) {
if (this.backlog() > this._bufferLength) {
Full reached.
bucketProcSuspendedTakes(this);
}
} else {
bucketProcSuspendedTakes(this);
}
}
If more than N values have been placed into a channel
and a writer tries to place one more value, sometimes
we want the new value to be dropped in order that
processing requirements don’t accumulate. This is
the purpose of droppingBuffer
which wraps the
parent channel’s put
to do this dropping.
A channel with a droppingBuffer will never block a put operation.
Channel.prototype.droppingBuffer = function (N) {
var ch = Object.create(this);
ch._channel = this;
ch._bufferLength = N;
ch.put = droppingPut;
return ch;
};
function droppingPut(value, callback) {
if (this.backlog() < this._bufferLength) {
this._channel.put(value);
sendValue(value, callback);
} else {
Drop the value.
sendValue(null, callback);
}
}
In the same situation as with droppingBuffer
,
at other times, we want the more recent values
to take precedence over the values already in
the queue. In this case, we want to expire the
old values and replace them with new values.
That is what expiringBuffer
does.
A channel with an expiringBuffer will never block a put operation.
Channel.prototype.expiringBuffer = function (N) {
var ch = Object.create(this);
ch._channel = this;
ch._bufferLength = N;
ch.put = expiringPut;
return ch;
};
function expiringPut(value, callback) {
while (this.backlog() >= this._bufferLength) {
this.take();
}
this._channel.put(value);
sendValue(value, callback);
return this;
}
Makes a “fanout” channel that can be “connect()”ed to other channels to whom the values that come on this channel will be copied. Do not call a fanout channel’s “take” method explicitly. Instead connect other channels to it to receive values. Since it may take time to setup connections, you have to call ch.start() explicitly to begin piping values to the connections, lest some values get missed out.
Channel.prototype.fanout = function () {
var ch = Object.create(this);
ch.connect = fanoutConnect;
ch.disconnect = fanoutDisconnect;
ch.start = fanoutStart;
ch._channel = this;
ch._connections = [];
ch._started = false;
return ch;
};
function fanoutConnect() {
for (var i = 0, N = arguments.length; i < N; ++i) {
this.disconnect(arguments[i]);
this._connections.push(arguments[i]);
}
return this;
}
function fanoutDisconnect() {
if (arguments.length === 0) {
this._connections = [];
return this;
}
var N, i, chan, pos;
for (i = 0, N = arguments.length; i < N; ++i) {
chan = arguments[i];
pos = this._connections.indexOf(chan);
if (pos >= 0) {
this._connections.splice(pos, 1);
}
}
return this;
}
function fanoutStart() {
var self = this;
if (!self._started) {
self._started = true;
self.take(function receive(err, value) {
if (value !== null) {
for (var i = 0, N = self._connections.length; i < N; ++i) {
self._connections[i].put(value);
}
self.take(receive);
}
});
}
return self;
}
module.exports = Channel;


Methods
applyStyle()
This function applys the specific characteristics to the sentence/text
Returns:
a string
build()
The @param takes in the list of styles and assigns the the property to that style
Returns:
the function of styles
Chalk()
This is the @constructor that takes a param of the description that you want your sentence to look like
if no @param is given, it's set automatically


Report struct for HID transfer. More...
Public Attributes | |
| HIDDReportEventCallback | fCallback |
| Callback when report done. More... | |
| void * | pArg |
| Callback arguments. More... | |
| uint16_t | wMaxSize |
| Report size (ID + DATA) More... | |
| uint16_t | wTransferred |
| Transfered size. More... | |
| uint8_t | bIdleRate |
| Report idle rate. More... | |
| uint8_t | bDelay |
| Delay count for Idle. More... | |
| uint8_t | bID |
| Report ID. More... | |
| uint8_t | bData [HIDDTransferDriver_REPORTSIZE] |
| Report data address. More... | |
Report struct for HID transfer.
| uint8_t _HIDDTransferReport::bData[HIDDTransferDriver_REPORTSIZE] |
Report data address.
| uint8_t _HIDDTransferReport::bDelay |
Delay count for Idle.
| uint8_t _HIDDTransferReport::bID |
Report ID.
| uint8_t _HIDDTransferReport::bIdleRate |
Report idle rate.
| HIDDReportEventCallback _HIDDTransferReport::fCallback |
Callback when report done.
| void* _HIDDTransferReport::pArg |
Callback arguments.
| uint16_t _HIDDTransferReport::wMaxSize |
Report size (ID + DATA)
| uint16_t _HIDDTransferReport::wTransferred |
Transfered size.


And this is the collapsible content
And this is the collapsible content
And this is the collapsible content
And this is the collapsible content
And this is the collapsible content
And this is the collapsible content
And this is the collapsible content
And this is the collapsible content (A)
And this is the collapsible content (B)


ShadowFox styles about:blank
in order to maintain a universal dark theme. An unfortunate consequence of this is that empty iframes on webpages are unintentionally styled (see here). No Empty iframes is a simple extension available on AMO that solves this problem by adding a content-less div
to the body of any empty iframe
.
Below is a simple test for No Empty iframes. The first iframe has no content, and the second does. Both iframes should have a green background, but with just ShadowFox installed, you will notice the first is grey.
With No Empty iframes installed (or ShadowFox uninstalled), both boxes should be green.
No Empty iframes is very simple extension, and the following code could be easily be applied via an extension like Violentmonkey.


Code repository for a short introduction to D3.js. The slides can be found at https://slides.com/sutantyo/d3js. The code repository is https://github.com/sutantyo/comp777_2018.


STAR TREK: GENERATIONS A film review by Mark R. Leeper Copyright 1994 Mark R. Leeper
Capsule review: The next First Generation "Star Trek" film is also the first Next Generation "Star Trek" film. A physical phenomenon that does nasty things to time (and even worse things to logic) is loose in the universe. Kirk gets to meet Picard and the two fight a world-chewing villain. This one is a feast for the eye and a famine for the brain. Rating: high -1 (-4 to +4) [This review contains some spoilers of the early parts of the film. Spoilers of later parts of the film are saved for an afterword. You have to excuse me for not taking "Star Trek" very seriously. Of late I find I am just a "Babylon 5" sort of guy.]
There are two kinds of "Star Trek" fans.  The most popular "Star Trek" films are the ones aimed at audiences who want to turn off their minds and just have a roller-coaster ride. In a small unofficial poll the best-liked "Star Trek" film is STAR TREK II: THE WRATH OF KHAN. That film is built around a completely absurd plot device called the "Genesis Effect" that seemed to create and instantly evolve life on barren planets, moving suns in place as needed. The film did have good action and special effects, however, and many of the fans were not troubled by the film being built around a poorly-conceived premise. STAR TREK GENERATIONS should please the people who liked WRATH OF KHAN and should irritate the set of fans who were irritated at that film. This time the story is built around something called the "Nexus." This thing is described as a scientific phenomenon, but as used in the film it is pure pixie and fairy dust.
As the film opens, Captain Kirk and other members of the Corpulent Space Corps are guests aboard a brand new Enterprise under the fledgling Captain Harriman. The ship is not really provisioned to travel, but then this maiden voyage is intended only as a three-hour cruise. We all know, however, that the Enterprise's enterprises never run smoothly. This Enterprise is unexpectedly called to a rescue mission. Things do not go well for Harriman and most embarrassing of all for the new captain is that old Captain Kirk is, for the first time in his career, sort of killed. Unfortunately, Spock is not along to help Kirk through that trying first death. Meanwhile, 78 years later, the Next Generation crew is involved with a similar rescue. Curiously, they seem to rescue one of the same people that the earlier Enterprise rescued.
This is a film with a plot that goes in for quantity rather than quality. One film that is less than two hours long involves two Enterprise crews, renegade Klingons, enemy Romulans, an interstellar temporal thingee, a sailing ship, Jean-Luc Picard's family, a Christmas tree with odd ornaments, a new chip that greatly modifies Data, two different Enterprises on the brink of destruction, Captain Kirk's long lost love, some very funny-looking eggs, and a mad scientist. That is just a bit too much for everything to gel. What works the best are the acting--which most of these people can do in their sleep--and those special-effects action sequences. The space battle scenes are always impressive on the big screen, though hardly original. One sequence involving the Enterprise and the planet Veridian III actually is breath-taking. Not all the visuals work out so well, however. When blown up to ten feet across, Data's make-up looks not enough like the covering of a machine and way too much like clown's greasepaint. But in general the look is more polished than the script deserved. To have so many nice special effects lavished on the film and yet to have such a poorly thought-out script is a very negative indication of the filmmakers' opinion of their audience. Unfortunately the "Star Trek" people probably do know their audience only too well.
This film is a triumph of style over substance. It is far more an exercise in sci-fi than science fiction. I give it a high -1 on the -4 to +4 scale. I have to be honest and say that I walked out of the theater thinking this film was at least decent, but as the film started to gel in my mind and I realized some of the gaping holes in what I had seen, I realized this script had far too many problems to get near a camera.
SPOILER SPOILER SPOILER SPOILER SPOILER SPOILER
I would like to say a little more about why this thing called the Nexus has no place in a science fiction film. The Nexus seems to have attributes usually ascribed only to Heaven. It is a physical phenomenon that seems to pluck people out of our universe and somehow plop each person right into the best of all possible parallel universes for that person. There the castaway has things like a ready-made family. Picard has a wife and children who are not at all surprised to see him suddenly appear. Kirk, who has been in the Nexus for 78 years, seems to have just arrived. Kirk and Picard apparently manage to escape the Nexus only by wishing to be elsewhere. (Perhaps they clicked their heels together and said "There's no place like Veridian.") The concept is great for fantasy fans but has little to do with physics or any other science. It is an idea full of contradictions that seems to have been contrived only to give Soran a motive for his crimes--so it is a nice place to be--and to have Kirk and Picard come together in time--so it is a temporal phenomenon. Room is certainly left for a sequel since the interstellar transtemporal space ribbon is still zapping around out there were no one has gone before. Of course leaving room for a sequel in a "Star Trek" film is redundant.
Besides the foolishness of the main premise--and the fact that 47 people are pulled out of the heaven-like Nexus and 78 years later the Federation seems to have forgotten that the Nexus exists--there are other problems in the script. In one sequence Picard is crawling only very slowly through the hole in the rocks and is fired upon. There is no way he could have moved fast enough to get out of the way of the explosion, yet he sustains not even a scratch. A rocket fired from Veridian III to its sun seems to hit its target in seconds.  The bug in Geordi LaForge's glasses is still broadcasting. Will he ever discover it? All these touches seem speak more of the first draft of a script than of a finished product. To have so many people working on the film and not to have anyone asking basic questions like "how do the captains get from the Nexus back to Veridian III?" indicates to me a very cynical attitude of the Star Trek organization--and this is the product of an organization, not just a few script-writers--toward science fiction fans. They have taken the attitude that their audience cares about visuals and not intelligence or even the basics of continuity in scriptwriting.
Mark R. Leeper<EMAIL_ADDRESS>.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


| DOSE: |
100 mg |
oral |
2C-C |
(capsule) |
~~WARNING~~WARNING~~WARNING~~
I submit this report with the sincere desire to alert future users of taking this, or any drug, in unknown quantities.
Where to begin? I have had numerous experiences with mind-altering substances, including LSD, mescaline, psylocibin, and various other chemicals. I've even had a few trips with 2C-E. 2C-I, 2C-D, and even 2C-C, with no real adverse side-effects. I do take an SSRI anti-depressant and a benzodiazepine, along with various vitamins and herbs.
OK, here we go. I arrive at work in the a.m., check the assignment list. Good, only some computer reports, and not much else but some 'manual' labor. I take my capsule (an empty one that had an herbal mixture in it) which I had pretty much filled to about 75% with 2C-C.
[Erowid Note: 100 mgs of 2C-C is considered a very high dose, see 2C-C Dose Chart]
After reading the rather benign reports about this substance I was expecting a slow and easy ride, somewhat 'trippy,' but also lethargic. I didn't notice much for about 2 hours, and was able to concentrate on my computer work without any problems. I thought it would be like most other times at work: a nice buzz, good visuals, little communication problems, and so on. Then it happened.
I was somewhere totally out of my ability to describe. My body was miserable, my mind was going. The people I worked with that day began to look at me funny. I know my eyes were HUGE. All effort was put into one thing - keeping my sanity. My body felt like it was alternately hot and cold for every millimeter of skin. I thought seriously about going to the ER, as I felt like I was about to have a stroke. Lunch time was worse.
What was happening to me? I realized I had taken too much. Diarrhea, chills, hot flashes, lack of coordination - NOTHING was pleasant, EVERYTHING was awful!
 A huge thunderstorm was raging outside, and the lightning and thunder were a suitable backdrop to my damaged mind. My good wife (who knows nothing of my experiments) had fixed a wonderful meal, which I could not appreciate at all. I feigned sickness and took a hot shower. I found some powerful benzos in the cabinet, also some Darvon - took that too. Hours later I was still sick, and took some antipsychotics that had belonged to a family member. Put me to sleep, but I was literally sick for 5 days.
Two weeks later I was still seeing trails. In short, I came close to doing permanent damage to my mind and body. PLEASE don't play around with the dosages of this or any chemical, regardless of how glowing the reports might be. As my name implies, I do most of my tripping at work, but after this time, I felt like a RAT.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Nintendo's Tokyo Store Is Set to Open This Friday, And It's Looking Amazing
More merch than you can toss a Pikmin at!
by Robert SephazonThe Parco Store in Shibuya, Tokyo has been closed for renovations since spring of this year. However, that will change this Friday, November 22nd. With its grand reopening, the public will finally have access to the Nintendo Tokyo Store.
Journalists in Japan have recently had the opportunity to go in and explore some of the merch available for consumers, and what they show is absolutely amazing. From every Yoshi colour under the sun, to Kirby bento sets to shirts featuring Pokémon sprites designed out of Mario blocks, there's something here for every Nintendo fan.
We'll be sure to cover the grand opening of the Nintendo Tokyo Store this Friday, so be sure to check back for a detailed review soon!
Is there anything you'd like to get your hands on from the Nintendo Tokyo Store? Let us know in the comments!
[via twitter.com]


Updates for multiple jobs which branch will be checked out from Hg
When you have several jobs for one project (Continuous, Nightly, Test, Release, Dev, ...) you often have to change branches, especially when you have one branch per version.
It's quite annoying to change that by hand in each configuration.
For this script you just need to change the parts for the old branch name, new branch name and a regex pattern to match your jobs.
def oldBranch = "NAME_OF_OLD_BRANCH" // update this def newBranch = "NAME_OF_NEW_BRANCH" // update this def jobNamePattern = "YourRegExPattern" // update this def freeStyleJobs = hudson.model.Hudson.instance.getItems(hudson.model.FreeStyleProject.class) for (job in freeStyleJobs) { def oldScm = job.getScm() if (oldScm.getType().indexOf("Mercurial") > -1 && job.name.matches(jobNamePattern)) { if (oldScm.getBranch().equals(oldBranch)) { print "Job '${job.name}' has branch '${oldBranch}' and will be updated to '${newBranch}'" // uncomment the next two lines to actually perform the operation. Else it simulates a dry-run //def newHgSCM = new hudson.plugins.mercurial.MercurialSCM(oldScm.getInstallation(), oldScm.getSource(), newBranch, oldScm.getModules(), oldScm.getSubdir(), oldScm.getBrowser(), oldScm.isClean()) //job.setScm(newHgSCM) println "[OK]" } else if (oldScm.getBranch().equals(newBranch)) { println "Job '${job.name}' already is on branch '${newBranch}'" } else { println "Job '${job.name}' is on branch '${oldScm.getBranch()}' and will not be updated" } } }


Prince of Wales and Duchess of Cornwall arrive in New Zealand for tour
It is the start of the couple’s third tour to the country.
The Prince of Wales and Duchess of Cornwall have arrived in New Zealand for an official tour which will take them to Auckland, Waitangi and Christchurch.
Charles and Camilla touched down at the New Zealand Royal Air Force base Whenuapai – Maori for “good land” – and were greeted by Governor-General Dame Patsy Reddy and the Deputy Mayor of Auckland Bill Cashmore.
Whenuapai is the largest NZRAF air base in the country, with more than 1,000 personnel.
It is the couple’s third visit to the country, after travelling in 2012 to mark the Queen’s Diamond Jubilee and again in 2015.
The first engagements of the tour will take place on Monday in Auckland, and the prince and duchess will travel on to the Solomon Islands after the New Zealand leg is completed.
Last week, Charles spent his 71st birthday in Mumbai, where he received a gift featuring the stories of Hindu deity Krishna, told with tiny figures in three bonsai gardens.


Common class for all model objects within the system.
Initializes a new instance of the class. The parameter hash takes whatever properties of the specific model type as keys.
# File lib/models/model.rb, line 6 def initialize(params={}) self.update(params) end
# File lib/models/model.rb, line 26 def ==(other) return instance_variables.all? do |var| instance_variable_get(var) == other.instance_variable_get(var) end false end
The hash representation of any model object maps attribute names as symbols to their values, like the following:
{attr1: val1, attr2: val2, ...}
# File lib/models/model.rb, line 20 def to_hash instance_variables.each_with_object({}) do |var, hash| hash[var[1..-1].to_sym] = instance_variable_get(var) end end
Updates the properties of this instance. The parameter hash takes whatever properties of the specific model type as keys.
# File lib/models/model.rb, line 12 def update(params) params.keys.each do |key| self.send("#{key}=", params[key]) end end


Marcel Dancák
Open source developer
Skills: Python, JavaScript, HTML5, Django
Contributions: Gisplan, GIS.lab, QGIS
More relevant information about Gisquick’s development, including source code, deployment and support for users are published on GitHub.This ambitious open source GIS project has been prepared for further custom development, maybe just according to your requirements. If you are interested in collaboration on this project, please contact us and become our partner. Let’s create Gisquick together.


HEAVEN'S PRISONERS 1996 A film review by Timothy Voon Copyright 1997 Timothy Voon
Cast: Alec Baldwin, Mary Stuart Masterson, Kelly Lynch, Teri Hatcher, Eric Roberts, Vondie Curtis-Hall, Samantha Lagpacan Director: Phil Joanou Screenplay: Harley Peyton and Scott Frank based on the novel by James Lee Burke
Does anybody know why this movie is called Heaven's Prisoners? The only connection I can make is the fact that the wife gets shot and maybe goes to Heaven. Have I missed an important point somewhere in this movie? Or is 'Heaven' the name of the place where they live?

This movie based on a novel written by James Lee Burke, feels as though the director has decided to randomly rip pages from the book, before pasting it's remains to create a movie. I have never felt this disjointed or confused about anything, except for the time I dislocated my shoulder playing basketball, then lapsed into temporary bliss when the pethidine kicked in.
The cast is no better. Kelly Lynch is terminated before she can demonstrate any signs of emotion. Terri Hatcher gets to pout and show all of her emotions from A to C, and unfortunately isn't disposed of sooner. Mary Stuart Masterson who normally plays the 'girl next door', is wasted as a stripper who never shows her wares; and Eric Roberts 'Bubba', looks like he's just attended Whoopi Goldberg's school on hair braiding skills. The only person with any admirable talent is Baldwin who plays the tortured, emotionally wrecked husband much better than he does the vengeful ex-detective. Here take a tissue Alec you deserve it.
There's also a plentiful supply of sultry, sassy, southerners with great slurring accents. Who don't walk, but strut; don't perspire but sweat. Who settle misunderstandings the old fashioned way (with fists). Where strippers are known synonymously as whores, and unfaithful wives are executed by trigger happy husbands; and it's called 'Heaven's Prisoners'???
Comment: How about 'Straight To Hell. Don't Collect $200, and Don't Pass Go'?
Monopoly (British Version) Feel scale: 0% *OLD KENT* / Trafalgar Square / Mayfair 100%
Timothy Voon e-mail<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Reports unused classes, methods and fields.
Example:
public class Department {
private Organization myOrganization;
}
Here Department
explicitly references Organization
but if Department
class itself is unused,
then inspection would report both classes.
The inspection also reports parameters, which are not used by their methods and all method implementations/overriders, as well as local variables, which are declared but not used.
For more information, see the same inspection in Java.