class Sass::Source::Map
Attributes
The mapping data ordered by the location in the target.
@return [Array<Mapping>]
Public Class Methods
# File lib/sass/source/map.rb, line 23 def initialize @data = [] end
Public Instance Methods
Adds a new mapping from one source range to another. Multiple invocations of this method should have each `output` range come after all previous ranges.
@param input [Sass::Source::Range]
The source range in the input document.
@param output [Sass::Source::Range]
The source range in the output document.
# File lib/sass/source/map.rb, line 34 def add(input, output) @data.push(Mapping.new(input, output)) end
Shifts all output source ranges forward one or more lines.
@param delta [Fixnum] The number of lines to shift the ranges forward.
# File lib/sass/source/map.rb, line 41 def shift_output_lines(delta) return if delta == 0 @data.each do |m| m.output.start_pos.line += delta m.output.end_pos.line += delta end end
Shifts any output source ranges that lie on the first line forward one or more characters on that line.
@param delta [Fixnum] The number of characters to shift the ranges
forward.
# File lib/sass/source/map.rb, line 54 def shift_output_offsets(delta) return if delta == 0 @data.each do |m| break if m.output.start_pos.line > 1 m.output.start_pos.offset += delta m.output.end_pos.offset += delta if m.output.end_pos.line > 1 end end
Returns the standard JSON representation of the source map.
If the `:css_uri` option isn’t specified, the `:css_path` and `:sourcemap_path` options must both be specified. Any options may also be specified alongside the `:css_uri` option. If `:css_uri` isn’t specified, it will be inferred from `:css_path` and `:sourcemap_path` using the assumption that the local file system has the same layout as the server.
If any source stylesheets use the default filesystem importer, sourcemap generation will fail unless the `:sourcemap_path` option is specified. The layout of the local file system is assumed to be the same as the layout of the server for the purposes of linking to source stylesheets that use the filesystem importer.
Regardless of which options are passed to this method, source stylesheets that are imported using a non-default importer will only be linked to in the source map if their importers implement {Sass::Importers::Base#public_url}.
@option options :css_uri [String]
The publicly-visible URI of the CSS output file.
@option options :css_path [String]
The local path of the CSS output file.
@option options :sourcemap_path [String]
The (eventual) local path of the sourcemap file.
@return [String] The JSON string. @raise [ArgumentError] If neither `:css_uri` nor `:css_path` and
`:sourcemap_path` are specified.
@comment
rubocop:disable MethodLength
# File lib/sass/source/map.rb, line 93 def to_json(options) css_uri, css_path, sourcemap_path = options[:css_uri], options[:css_path], options[:sourcemap_path] unless css_uri || (css_path && sourcemap_path) raise ArgumentError.new("Sass::Source::Map#to_json requires either " "the :css_uri option or both the :css_path and :soucemap_path options.") end css_path &&= Sass::Util.pathname(Sass::Util.absolute_path(css_path)) sourcemap_path &&= Sass::Util.pathname(Sass::Util.absolute_path(sourcemap_path)) css_uri ||= css_path.relative_path_from(sourcemap_path.dirname).to_s.tr('\', '/') result = "{\n" write_json_field(result, "version", 3, true) source_uri_to_id = {} id_to_source_uri = {} next_source_id = 0 line_data = [] segment_data_for_line = [] # These track data necessary for the delta coding. previous_target_line = nil previous_target_offset = 1 previous_source_line = 1 previous_source_offset = 1 previous_source_id = 0 @data.each do |m| file, importer = m.input.file, m.input.importer source_uri = importer && importer.public_url(file, sourcemap_path && sourcemap_path.dirname.to_s) next unless source_uri current_source_id = source_uri_to_id[source_uri] unless current_source_id current_source_id = next_source_id next_source_id += 1 source_uri_to_id[source_uri] = current_source_id id_to_source_uri[current_source_id] = source_uri end [ [m.input.start_pos, m.output.start_pos], [m.input.end_pos, m.output.end_pos] ].each do |source_pos, target_pos| if previous_target_line != target_pos.line line_data.push(segment_data_for_line.join(",")) unless segment_data_for_line.empty? (target_pos.line - 1 - (previous_target_line || 0)).times {line_data.push("")} previous_target_line = target_pos.line previous_target_offset = 1 segment_data_for_line = [] end # `segment` is a data chunk for a single position mapping. segment = "" # Field 1: zero-based starting offset. segment << Sass::Util.encode_vlq(target_pos.offset - previous_target_offset) previous_target_offset = target_pos.offset # Field 2: zero-based index into the "sources" list. segment << Sass::Util.encode_vlq(current_source_id - previous_source_id) previous_source_id = current_source_id # Field 3: zero-based starting line in the original source. segment << Sass::Util.encode_vlq(source_pos.line - previous_source_line) previous_source_line = source_pos.line # Field 4: zero-based starting offset in the original source. segment << Sass::Util.encode_vlq(source_pos.offset - previous_source_offset) previous_source_offset = source_pos.offset segment_data_for_line.push(segment) previous_target_line = target_pos.line end end line_data.push(segment_data_for_line.join(",")) write_json_field(result, "mappings", line_data.join(";")) source_names = [] (0...next_source_id).each {|id| source_names.push(id_to_source_uri[id].to_s)} write_json_field(result, "sources", source_names) write_json_field(result, "names", []) write_json_field(result, "file", css_uri) result << "\n}" result end
Private Instance Methods
@comment
rubocop:enable MethodLength
# File lib/sass/source/map.rb, line 188 def write_json_field(out, name, value, is_first = false) out << (is_first ? "" : ",\n") << "\"" << Sass::Util.json_escape_string(name) << "\": " << Sass::Util.json_value_of(value) end


Your account isn't verified. Please click the link sent to your email to verify your account. After that, make sure you log out and log back in again.
Click here to resend the verification email.


--- layout: post title: 'Hidden Google Analytics feature: Custom alerts' date: 2014-11-04 14:47:45.000000000 -05:00 type: post published: true status: publish categories: - Analytics - Tuesday Tips tags: - custom alerts - google analytics - tips & tricks meta: _wpcom_is_markdown: '1' _wpas_done_all: '1' _publicize_twitter_user: "@chris_vannoy" _edit_last: '1' image: '' _wpas_skip_9013372: '1' _wpas_skip_9017901: '1' _wpas_skip_9013380: '1' _wpas_skip_9013384: '1' _yoast_wpseo_title: Putting Google Analytics' Custom Alerts to work thumb: http://jekyll-blog-cv.s3.amazonaws.com/product-icon.png ---
Note: This post originally appeared on the blog of my since-shuttered analytics firm: Axiomatic. That said, if you need some analytics work, get in touch
In an ideal world, your website analytics should serve as a watchdog over your business - giving you insight on what's working and what isn't.
But over the past few weeks I've talked to enough people to know that most frankly don't have the time to log in to their analytics every day (or even once a week) to check on things.
But here's the thing: Google Analytics can come to you when things get out of whack.
Right above "Real-Time" in the left sidebar navigation of GA is likely the least-used feature of the product: Intelligence Events.
Why is it so infrequently used? Well, just look at it. Between the intimidating name and the completely blank state it lands you in, it's a wonder anyone digs into this it all.
But the second tab there - Custom Alerts - is a hugely powerful interface to let you know when things happen on your site that you'd really like to know about.
With these custom alerts, you can do things like:
Last week, I outlined a recommendation on tracking error pages in Google Analytics.
So, now that we're tracking them, it'd be awfully handy if GA gave a ping when those numbers became elevated.
Let's set one up for a spike in 404 errors:
And here's the final product:
Save that alert and rest easy knowing that GA will give you a hearty ping when those errors spike.


6th Year PhD Candidate at University of Michigan, School of Information (UMSI)
I'm broadly interested in data science for social good, and I'm particularly interested in researching complex sociotechnological systems with vast user-generated content. Thus far, I have published numerous manuscripts in the field of misinformation and online political communications. My projects rely on extensive social media datasets and a diverse range of computational methods including natural language processing (topic modeling, word2vec, entity extraction, NLTK, BERT), network analysis (centrality, network cascade, network inference, motifs), machine learning (scikit-learn, Tensorflow), and statistical analysis. My PI is Ceren Budak.
I grew up in the West Coast, and earned my bachelors in Computer Science from the University of Washington, Seattle. I then worked at Amazon and Google as a full stack software engineer for a few years. I'm currently a 6th year doctoral candidate at the University of Michigan, School of Information.
Outside of work, I enjoy basketball, badminton, running, weight lifting, horror films, Dungeons and Dragons with my close friends, and teaching my pets new tricks. I have also solo backpacked in Asia and Europe for half a year, and contemplated being a wandering comedian for a time.
Lia Bozarth, Ceren Budak, "Market Forces: Quantifying the Role of Top Credible Ad Servers in the Fake News Ecosystem", in proceedings, ICWSM (2021) Download
Lia Bozarth, Ceren Budak, "An Analysis of the Partnership between Retailers and Low-credibility News Publishers", in proceedings, JQD:DM (2021) Download
Robert Bond, Lia Bozarth, Ceren Budak, Kelly Garrett, Jason Jones, Drew Margolin, "The Case for Studying Obscure Falsehoods", Harvard Kennedy School Misinformation Review (2021)
Lia Bozarth, Ceren Budak, "Toward a Better Performance Evaluation Framework for Fake News Classification", in proceedings, ICWSM(2020).Download
Lia Bozarth, Aparajita Saraf, Ceren Budak, "Higher Ground? How Groundtruth Labeling Impacts Our Understanding of Fake News about the 2016 U.S. Presidential Nominees", in proceedings, ICWSM (2020). Download
Lia Bozarth, Ceren Budak, "Beyond the Eye-Catchers: a Large-Scale Study of Social Movement Organizations' Involvement in Online Protests", in proceedings, New Media & Society (2020). Download
Lia Bozarth, Anmol Panda, Joyojeet Pal, "From Greetings to Corruption: Politicians, Political Parties, and Tweeting in India", in proceedings, ICTD (2020) Download
Lia Bozarth, Joyojeet Pal, "Twitter Discourse as a Lens into Politicians' Interest in Technology and Development", in proceedings, ICTDX (2018). Download
Lia Bozarth, Ceren Budak, "Is Slacktivism Underrated? Measuring the Value of Slacktivists for Online Social Movements", in proceedings, ICWSM (2017). Download
Lia Bozarth, Ceren Budak, "Keyword Expansion Techniques for Mining Social Movement Data on Social Media", submitted to EPJ Data Science
Chris Quarles, Lia Bozarth “How the Term 'White Privilege' Affects Online Communication", submitted to PLOS One
Ceren Budak, Robert Bond, Lia Bozarth, Kelly Garrett, Jason Jones, Drew Margolin, “Bursts of Co-publication Among High and Low Credibility Online News Publishers Observed on Facebook”, submitted to Science Advances
Best Poster Award: Lia Bozarth, Ceren Budak, "Profit for You and Me: Exploring Ad Servers on Fake News Sites", for the category "Most Likely to Make a Societal Impact", MIDAS Data Symposium (2019) Award Link
Best Poster Award Honorable Mention: Lia Bozarth, Ceren Budak, “A Large-scale Study of Social Movement Organizations (SMOs) in Online Movements”,, MIDAS TweetCon (2019)
Joyojeet Pal, Lia Bozarth, "How Modi lost his mojo and Rahul roared to life on Twitter", Quartz (2018). Article Link
Joyojeet Pal, Lia Bozarth, "Is Tweeting in Indian Languages Helping Politicians Widen Their Reach?", Economic and Political Weekly (2018). Download
Graduate Student Instructor (GSI) at the University of Michigan for the following courses: Data Mining I, Data Mining II, Information Architecture, Fundamentals of Human Behavior, and Information Analytics Project.
Reviewer for the following venues: ICWSM, CSCW, New Media & Society, and WWW.
Coordinator for the Computational Social Science Methods (CSSM) Reading Group at UMSI.
Facilitator (Organizer) for UMSI's LGBTQ student group.
Student representative within the Student Life and Academic Affairs subcommittees in Rackham Student Government at the University level.


Subscribe to our newsletter
Once a week we will send you a summary of the most useful news
Lorem ipsum dolor sit amet, consectetur adipisicing elit.


Express
Welcome to Express Ecma Boilerplate
Got to http://localhost:3000/api/v1 to test your API endpoint


https://smlnj-gforge.cs.uchicago.edu/svn/smlnj/pages/trunkThe actual server page sources are located at
/stage/web_static/smlnj/htdocson the UofC servers. This is a working directory checked out from the repository mentioned above.
If you want to edit the smlnj pages, you should check out your own working copy of the pages/trunk project, make your edits in your working copy, and then commit them to the svn repository.
Your changes can then be made visible at the main www.smlnj.org URL, which is an alias for smlnj.cs.uchicago.edu, by doing an svn update in the htdocs directory mentioned above.
NOTE: Certain distribution-specific files are not in the repository. In particular, dist/working/110.xx/NOTES, which contains some documentation files like MACOSXINSTALL. These files have to be edited directly in the corresponding site source directories.
This page and other local developer documentation are found in the local subdirectory of the pages directory. This local site is password protected (user: smlnj, password: semantix), and there are no links to it from the main smlnj web site.
Formerly the web server for www.smlnj.org was at sourceforge, and the directory containing the web pages was located at:/home/groups/s/sm/smlnj/htdocsBut this old version is no longer maintained.


About me
I am Ashish Bagaddeo. With over 9 years of experience in developing and
maintiaining large scale softwares, this is my first foray into web development. I am a self-taught backend
developer with focus on Node.js and
Django. Currently residing in London, i like to travel and in love with nature. With that, I pursue my other
passion
i.e. Photography.


We're sorry but the site doesn't work properly without JavaScript enabled. Please enable it to continue.


Updated on July 27, 2016
This hackathon is being co-sponsored by partners iHub, IOTA, the African Agricultural Technology Foundation (AATF) and aWhere, Inc., the latter two of which partner on the Hybrid Rice: Breeding by Design project, alongside Hybrids East Africa Ltd (HEAL).
The goal of the Hybrid Rice: Breeding by Design project is to improve food security and rural livelihood among small-scale rice producers in Africa, by developing hybrid rice, with significant yield advantage and creating sustainable hybrid rice agro-businesses to support rice farming in East, West and Southern Africa by determining precise relationships between yield, environment and genetics.
Hybrid Rice: Breeding by Design is funded by the Bill and Melinda Gates Foundation. This hackathon seeks to bring representatives of seed companies and local technology talent together to brainstorm solutions to some of the industry's greatest challenges.
This event is scheduled to take place from Friday, July 29, 2016 - Sunday, July 31, 2016.
| Time | Session |
|---|---|
| Day 1 - Registration and Introductory Session - Friday, July 29th | |
| 1:00 pm - 2:00 pm | Event Registration |
| 2:00 pm - 5:00 pm | Opening Remarks, Partner Presentations & Hackathon Challenge Presentation |
| Day 2 - Hacking Day 1 - Saturday, July 30th | |
| 8:00 am - 12:00 pm | Hacking |
| 12:00 pm - 1:00 pm | Lunch |
| 1:00 pm - 6:00 pm | Hacking |
| 6:00 pm - 7:00 pm | Dinner |
| 7:00 pm - late | Hacking |
| Day 3 - Hacking Day 2 - Sunday, July 31st | |
| 8:00 am - 12:00 pm | Hacking |
| 12:00 pm - 1:00 pm | Lunch |
| 1:00 pm - 2:15 pm | Hacking |
| 2:30 pm - 5:00 pm | Project Presentations, Judging, & Award Announcements |
| 5:00 pm - 6:00 pm | Post-announcement Networking |
This event will be held at Nailab in Nairobi.
If you are a representative of an East African seed company and would like to get involved with the hackathon or the Hybrid Rice project more broadly, we'd love to hear from you. Similarly, if you're a developer or analyst with coding experience and would like to help solve problems in seed markets, your skills are needed!
The Resources Kit for participants is available here.
Twitter:
• Follow and tweet the hashtag #hack4farming on Twitter
• Follow @aWhere, @iHub, @aatfafrica, and @iotatoken
You can view the outputs of past hackathons, and the team presentations here.
Contact us if you have a question the FAQs page hasn't covered.


{% extends "base.html" %} {% block title %}Hearing Screening Test - CAQE{% endblock %} {% block body_content %}
Before beginning the primary task, you must complete a quick hearing test. Please follow these instructions:
Find a quiet place without much background noise.
If you have headphones, put them on.
Listen to the following audio file. While you are listening, adjust the level of your speakers/headphones to a comfortable volume. Once it is set, do not change the volume. Your browser does not support the audio element.
Listen to the entire audio file below and count how many tones you hear: Your browser does not support the audio element.
How many tones did you hear? 1 2 3 4 5 6 7 8


Events and Event Listeners in JavaScript
An example using a
mousemove
listener anddebounce
to bring it all together
JavaScript uses an Event Loop to provide concurrency: managing multiple tasks at the same time.
Concurrency (management) is not the same thing as execution (performance). Rather, it’s a means for JavaScript to arrange tasks in an ordered way and execute them singly when there is time available.
Kind of like how your managers tell you what to do but never do it themselves…joking joking.
JavaScript still only has one thread, meaning that it can only do one thing at a time. The Event Loop is a queue of “things to do” when JS is not doing something else.
A queue is an Abstract Data Type that JS implements to handle events. You’re familiar with queues already. Just imagine a line in the grocery store. The first person to get in line is the first person to leave. First in, first out (FIFO). This means that events get handled as close to the time they were added to the queue as possible.
If an event happens in the browser and no one’s listening…
Is it still an event? No.
In the event model, there are emitters and event listeners. Listeners subscribe to emitters, just like you’d subscribe to someone’s Twitter feed. You only get updates from feeds that you’ve subscribed to, and you only get updates when tweets are sent.
Here’s a list of events or “tweets” that elements can send.
Subscribing to an event emitter means registering a handler. Confusing terminology, but this just means passing a function to be called (a good ol' callback!) with the event, whenever the event occurs.
You’ve already seen event listeners. Remember window.onload = function() {}
? The function you’re passing to the onload
event is the event handler
. Since window
is global, the event handler is often the entirety of your program’s code. It’s still operating within the evented paradigm.
Adding listeners
Let’s look at an example for a submit button.
<button id="submit">submit</button>
First we select the element. Then we add a listener to it.
const sButton = document.getElementById("submit");
sButton.addEventListener("click", function handleClick() {
window.alert("You clicked me!");
});
example: Submit

Sometimes we only want a listener to fire once. If you click the “Submit” button above, it launches an alert dialog each time. Imagine this was a Submit button for a payment processing platform. You wouldn’t want to issue multiple orders if the user kept clicking because the site was slow.
Instead, we can register an event listener that detaches after it fires once (burn after reading) by using the once
boolean in the options
parameter of addEventListener
(Docs)
:
const oneTime = document.getElementById("submitOnce");
oneTime.addEventListener(
"click",
function handleClick() {
window.alert("You clicked me!");
},
{ once: true }
);
you only (click) once example: Submit

Try clicking multiple times. The alert fires once and only once.
Removing Listeners
One event can have multiple listeners. We can use removeEventListener
(Docs)
to remove listeners we have added. removeEventListener
requires two parameters to find the listener to remove: the event type, and the callback function registered to the event.
For example, in our button case: sButton.removeEventListener('click', handleClick)
.
Do not use anonymous functions
for event handlers, since it makes removing them tricky. We can’t just call sButton.removeEventListener('click')
, for instance.
Okay, it’s a little more complex. Bubbling.
We know that the DOM is a tree of tags
. What happens in the tree when there’s a click
event on one of its innermost leaves (say, a child div
inside a container)?

1

2

3

4

5

6

const c1 = document.getElementById("c1");
function containerClick(e) {
console.log(e.path);
alert("container clicked (id): " + e.target.id);
}
c1.addEventListener("click", containerClick);
function bodyClick(e) {
if (
e.target.parentElement.className !== "container" ||
!["c1", "c2"].includes(e.target.parentElement.id)
) {
return false;
}
alert("document-level click event from target: " + e.target.id);
}
document.addEventListener("click", bodyClick);

1

2

3

4

5

6

try clicking above
Check out the event.path
property in the console when you click on a box:
The click event happened on the child element. But then it passed to its parent container, container’s parent, that parent’s parent…all the way up to window
, causing the second alert you saw. This is known as bubbling.
This can be a feature and also a source of bugs and confusion. Usually we define click handlers with specificity and would not put a handler on the window
itself. But imagine that we did have higher-level click handlers, and we did not want these lower-level clicks to trigger them.
In this case, we can call e.stopPropagation()
in our event handler.

1

2

3

4

5

6

function limitedClick(e) {
e.stopPropagation();
alert("container clicked (id): " + e.target.id);
}
const c2 = document.getElementById("c2");
c2.addEventListener("click", limitedClick);

1

2

3

4

5

6

clicking above only triggers a local handler
function limitedClick(e) {
e.stopPropagation();
alert("container clicked (id): " + e.target.id);
}
const c2 = document.getElementById("c2");
c2.addEventListener("click", limitedClick);
It can go the other way: Capture.
Say that we want to prevent clicks on a parent element from propagating downwards toward child element handlers. We can use our previous example of the div
s within the container div. What if we want the container element to “capture” the event and prevent it from propagating downwards?
function limitPropagation(e) {
alert("container clicked (id): " + e.target.id);
}
function childClicked(e) {
alert("child clicked (id): " + e.target.id);
}
document.querySelectorAll("div#c3 > .child").forEach((child) => {
child.addEventListener("click", childClicked);
});
const c3 = document.getElementById("c3");
c3.addEventListener("click", limitPropagation, true);

1

2

3

4

5

6

clicking above only triggers the container handler: none of the child element listeners fire
function limitPropagation(e) {
e.stopPropagation();
alert("container clicked (id): " + e.target.id);
}
function childClicked(e) {
alert("child clicked (id): " + e.target.id);
}
document.querySelectorAll("div#c3 > .child").forEach((child) => {
child.addEventListener("click", childClicked);
});
const c3 = document.getElementById("c3");
c3.addEventListener("click", limitPropagation, true);
In review.
Bubbling: bottom->up (child->parent)
e.target
: the innermost child element that was clicked- to prevent bubbling to parent elements: call
e.preventDefault()
in the event handler
Capture: top->down (parent->child)
- to enable: pass
true
inaddEventListener()
’s third parameter - to prevent: nothing special required. The default is false.
Event Delegation
Bubbling allows us to take advantage of Event Delegation. Say we want to listen to all the children of a certain div for an event. We can put an event listener on the parent element. When a child div is clicked, the event will bubble up to the parent listener. We can then determine which child element was clicked by looking at e.target.id
.
The event target
is the element at which the event was directed. In this case, it’s the child div. That target is passed with all the rest of the event information up the chain until it reaches an event handler where it is processed.
Debouncing
It often happens that you are listening to an event which fires many times. mousemove
is a good example. This event fires whenever the user moves the mouse, with pixel-level precision. If you call a function each time the mouse is moved, the function will be called thousands of times per seconds and overflow the stack.
What we want to do in these cases is debounce
the function. Debouncing simply means wrapping the function in another function that keeps track of how often its child function was called. It only passes through calls when the inner function has not been called for a specified interval.
For instance, if mousemove is calling 50 times per second and your debounce is set to an interval of 500ms, your function will only be called twice, instead of 50 times. Obviously with this decreased granularity, your data will be updated less frequently. However, it’s often possible to make a tradeoff that doesn’t affect performance or user experience. In the case of mousemove
, the function call overhead will slow down the app far more than a ms delay between updates.
Underscore is a JS utility library that implements debounce. We can write it for fun though, too.
const debounce = (fn, intervalMs, ...args) => {
let lastCalled = Date.now();
return function debounced(args) {
const rightNow = Date.now();
if (rightNow - lastCalled > intervalMs) {
fn.apply(null, [args]);
lastCalled = Date.now();
} else {
// debounce
// no-op
}
};
};
function logger() {
console.log("test");
}
let padded = debounce(logger, 1000);
setInterval(padded, 1);
Even though we call the function 1000x/second, we only invoke the console.log()
1x/second.
In the case of console.log()
, the function takes very little time to execute, so it probably wouldn’t be a big deal to call it a thousand times per second. Imagine you have logic in there, or Math.sin()
, and suddenly you’re doing something very expensive very frequently. No! Debounce instead, where the only overhead is grabbing the current timestamp and comparing it with the previous timestamp.
Preventing default behavior with e.preventDefault()
Browsers have native handling for many events, like form submission. We often want to use a form
tag, since it makes sense semantically. However, we might want to fire validation code when the user clicks Submit
. Or, if it’s a Single Page App, we want to prevent the default page refresh behavior.
default refresh
<form id="default">
<button>submit</button>
</form>

<form id="default">
clicking this refreshes the page: <button>submit</button>
</form>

<form id="prevented">
<button>submit</button>
</form>
override default refresh
<form id="prevented">
clicking this does not (prevent default and pop an alert):
<button>submit</button>
</form>

As always, only scratching the surface
Explore the events list and try experimenting on CodePen. Understanding the event model is not only key to understanding how modern, client-side, interactive JavaScript functions, but also it’s a paradigm used by NodeJS. You can even define your own events (tutorial soon)!


China's PLA soldiers seen helping clean up streets after Hong Kong protests: RTHK
HONG KONG (Reuters) - Chinese People’s Liberation Army soldiers in shorts and t-shirts joined pro-China residents in Hong Kong on Saturday to clean up barricades and debris after anti-government protests blocked roads, according to broadcaster RTHK.
The soldiers rarely leave their barracks in the Chinese-ruled city, which has been rocked by anti-government protests for months.


French interior minister blames protest violence on 'thugs'
by ReutersPARIS — French Interior Minister Christophe Castaner blamed “thugs” and “bullies” on Sunday for the violence that hit demonstrations the previous day marking marked the first anniversary of the anti-government “yellow vest” protests.
“Yesterday, what we saw were few (legitimate) demonstrators but thugs, bullies and morons,” Castaner told Europe 1 radio when asked about the violence in Paris on Saturday.
Demonstrators torched cars and pelted police with stones and bottles and police fired tear gas and water cannon during the rallies to mark a year since the birth of the anti-government yellow vest movement.
Across France, police arrested 264 people on Saturday, including 173 in Paris, Castaner said. (Reporting by Dominique Vidalon Editing by Frances Kerry)


Technology experts for all your IT needs. Consulting, Troubleshooting, Maintenance, Repair, Network Administration, Cybersecurity


National University of Ireland, GalwayIDA Business Park,Lower Dangan,Galway, Ireland
Phone: +353 91 495053


Zelensky enacts law on Naftogaz unbundling
The law fulfills conditions put forward by the EU legislation regarding the separation of gas transmission operations and activities of the GTS operator.
President of Ukraine Volodymyr Zelensky on Friday signed a law on the unbundling of natural gas transmission operations from Naftogaz of Ukraine.
That's according to Deputy Head of the Presidential Office, Yulia Kovaliv.
"The law fulfills conditions put forward by the EU legislation regarding the separation of gas transmission operations and activities of the GTS operator," Kovaliv wrote on Fracebook.
Kovaliv emphasized that, despite certain attempts to block and delay decision-making, Ukraine is steadily moving towards European integration and is demonstrating willingness to certify the gas transmission system operator in accordance with EU rules and the Third Energy Package.
As UNIAN reported earlier, the Verkhovna Rada of Ukraine adopted a law that provides for the unbundling of the gas transmission system of Ukraine from National Joint Stock Company Naftogaz of Ukraine, while retaining the infrastructure in state ownership.
UNIAN memo. Unbundling is the separation of natural gas transmission operations (activities of the GTS Operator) from production and supply of natural gas and electric energy.
It is assumed that effective unbundling will become the key to the formation of an independent operator of the Ukrainian gas transmission system, certified by European requirements. Such an operator will strengthen the position and role of Ukraine in the negotiation process with the Russian Federation on the extension of transit and preservation of the Ukrainian gas transmission after the end of 2019 when the existing gas transit contract with Russia's Gazrpom expires.


# The source root of this Component COMPONENT_ROOT=../.. # The root of the build system BS_ROOT=$(COMPONENT_ROOT)/build3 # Boostrap Build system definitions. include $(BS_ROOT)/defines.mk # check for a particular version of postgres-devel with a package # name override, and any version of openssl with all defaults. CKOSPKG_TARGETS=\ postgres-devel \ openssl postgres-server_NAME=postgresql-devel postgres-server_VERSION=8.1.18 postgres-server_RELEASE=e15_4.1 postgres-server_ARCH=x86_64 # Finally, include the rules to make the build system go. include $(BS_ROOT)/rules.mk


public interface ConverterBase
| Modifier and Type | Interface and Description |
|---|---|
static class |
ConverterBase.ConverterStatus
Representing the status of conversion.
|
| Modifier and Type | Method and Description |
|---|---|
default boolean |
canProcess(CrawlData data)
The implementation of this method tests whether or not the given
crawl-data can be processed by this converter, typically by examining
the value of content-type and url of the crawl-data . |
default boolean |
canReadMetadataFrom(CrawlData data)
The implementation of this method tests whether or not the given
crawl-data can be used as metadata during the conversion. |
default boolean |
forcesDeletion()
The implementation of this method defines a flag as to whether or not the
deletion is issued for any old document with
url that matches by
prefix to url of crawl-data that is processed by this
converter, before the results of this converter are added to the dataset. |
ConverterConfiguration |
getConfiguration() |
default ConverterConfiguration.GeneralSettings |
getGeneralSettings() |
default java.util.logging.Logger |
logger() |
default void |
postProcess(CrawlData crawlData,
CrawlData.Builder builder)
The implementation of this method modifies
crawl-data after the
conversion. |
default boolean |
removesMetadata()
The implementation of this method defines a flag as to whether or not after
the conversion, this converter removes metadata, i.e.,
crawl-data for
which
canReadMetadataFrom is true , from the output. |
default java.util.logging.Logger logger()
ConverterConfiguration getConfiguration()
ConverterConfiguration
of this
converter, which is set by the converter pipeline framework.default ConverterConfiguration.GeneralSettings getGeneralSettings()
ConverterConfiguration.GeneralSettings
section of the converter configuration, which
includes information about typeIn
, conditional
,
typeOut
, and typeOut
.default boolean canProcess(CrawlData data)
crawl-data
can be processed by this converter, typically by examining
the value of content-type
and url
of the crawl-data
.
If getGeneralSettings
returns non-null
value, the default
implementation judges it from typeIn
and conditional
parameters of given converter configuration. Otherwise it returns
false
.data
- crawl-data
true
, if crawl-data
should be processed for
conversion.default boolean canReadMetadataFrom(CrawlData data)
crawl-data
can be used as metadata during the conversion. If
getGeneralSettings
returns non-null
value, the default
implementation of this method examines whether or not url
of the
crawl-data
matches typeMeta
parameter of given converter
configuration. Otherwise it returns null
. *data
- crawl-data
true
, if crawl-data
can be used as metadata.default void postProcess(CrawlData crawlData, CrawlData.Builder builder)
crawl-data
after the
conversion. If getGeneralSettings
returns non-null
value, the
default implementation sets the value of typeOut
of given converter
configuration.crawlData
- input crawl-data
before conversionbuilder
- builder for new crawl-data
after conversiondefault boolean removesMetadata()
crawl-data
for
which
canReadMetadataFrom
is true
, from the output.true
, if metadata needs to be removed.default boolean forcesDeletion()
url
that matches by
prefix to url
of crawl-data
that is processed by this
converter, before the results of this converter are added to the dataset.
*true
, if the deletion of old documents with matching
url
should be issued.


Covid19Info
help line:<PHONE_NUMBER>0
About us
Live Updates
Public advice
Donation
Tweet updates
Help Desk
Donation
Let's help the needy
Donate:
First name
Last name
Email
Phone
Method of donation
One Time
Monthly


| Subject Name | Operations | |
|---|---|---|
|
|
{{subject.name}} | info assignment_ind delete |
| Student Name | Address | Phones | Operations | |||
|---|---|---|---|---|---|---|
| {{student.name}} | {{student.address}} | {{student.phones[0].key}} | {{student.phones[0].value}} | {{student.phones[1].key}} | {{student.phones[1].value}} | add_circle update delete |


<EMAIL_ADDRESS>~] # whoami
Jaspreet Singh, graduated from GNDU Amritsar with a degree in Computer Science and Engineering, is currently working with TCS as a full stack web developer.
In his free time, he is reading books, playing guitar, writing blogs for www.myinfonotes.com, desiging new html themes, and helping people on facebook groups with programming stuff.


| DOSE: |
repeated |
oral |
Pharms - Butorphanol |
(powder / crystals) |
| |
repeated |
insufflated |
Pharms - Butorphanol |
(powder / crystals) |
Recreational value: moderate. I rate it higher than codeine and opium but certainly lower than hydrocodone, oxycodone, heroin, or morphine. Note that I am a fan of the opiates and that I have never experienced the negative side effects of them that others complain about, such as nausea, dizziness, or mental unclarity.
Effects: apathy, marked sedation, slight body high, floating feeling, slight feeling of warmth, lack of physical coordination, heavy limbs, extreme pupil constriction, lack of hunger, exophoria, strong anxiolytic properties, slight euphoria, none of the sociability I invariably feel with the other opiates, lack of physical pain (obviously), opiate-typical nightmares, opiate-typical difficulty in having orgasm (can be a big benefit for sex, actually, along with the lack of pain), distance from everyday problems, skewed passage of time (it doesn't pass fast the way it would with speed or meth, but I can space out for long periods of time or be apathetic to time and find myself doing the same thing for hours on end without feeling either bored or particularly interested by it).
Doses: (on various days) 50mg ingested, 3.5 mg inssuflated, 7mg inssuflated, 13mg inssuflated, 7 mg ingested, 13mg ingested, 20mg ingested (three times), 35mg ingested.
Preferred dosage: 7-13mg ingested, 3.5-6mg insufflated. This opiate is much stronger than it appears! Taking more does not lead to more recreational results!! I will at best fall asleep, or at worst (such as with 13mg or more insufflated) almost suffer overdose, as indicated by blue appendages, almost complete cessation of breathing, very low heart rate, falling alseep/passing out even while moving around, stumbling and extreme lack of coordination, complete mental confusion and inability to follow through a thought, inability to focus eyes, and relative mental calmness about the certainty of impending opiate overdose.
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.


Senior HPC and Cloud Systems Engineer
The Francis Crick Institute
Biomedical discovery institute dedicated to understanding the fundamental biology underlying health and disease
Biggest biomedical research facility under a single roof in Europe
1,500 staff, £650m investment
Pressure from funding bodies
Pressure from procurement
Deadline-driven bursting
Biomedical research cloud, with 6,048 cores and 5.5PB storage
Share data, methods and expertise
OpenStack, GPFS
Benign environment assumption
Licensing complications
NFS export
Scientific reference datasets
Object storage?
Application support for objects?
800TB dataset from TCGC
Restricted access
Special client
Multiple instances
Elasticluster
Heat
Ansible/Salt etc.
Back to importance of shared filesystem access
Are they actually the best fit for clouds?
How well are the characteristics of pipelines known?
Only start VMs as needed
Reflects focus on high utilisation, rather than "time to science"
Performance tuning of clouds
Flexibility cost
Rising software complexity
Users focus on images and snapshots
Is this the right level of abstraction
Use repeatable configuration management/provisioning instead?
Criticism of TripleO for being image-centric
How to update them
Image catalogues
Hyperscale mindset and capabilities
Maturity of container support for scientific applications
Singularity, Shifter "fixing" containers for scientific use
Are we just reinventing packaging, badly?
Lambda
Google Cloud Functions
OpenWhisk
Fission
Will science have a say?
Simply treat clouds as nice new resources
Already have tools to handle remote data transparently
Already have accounting tools
Advantages of grid experience
Concerns about security
Image Credits:
The Guardian
Alvaro Sanchez


TABLE OF CONTENTS
A. GS1 Related ART AND CULTURE 1. Araku Balloon Festival B. GS2 Related INTERNATIONAL RELATIONS 1. Post-Doklam, India asserts itself in China’s backyard POLITY 1. SC dismisses petition for SIT probe in bribery case HEALTH ISSUES 1. Indians add more years to their lives 2. Burden of disease shifts to non-communicable ailments C. GS3 Related ENVIRONMENTAL SCIENCE AND ECOLOGY 1. Winged guests flock to Chilika INTERNAL SECURITY AND DEFENSE 1. ‘Joint training doctrine’ for armed forces MISCELLANEOUS 1. Rashtriya Bal Kalyan Award presented to Super-30 founder 2. Rasogolla hits sweet spot, gets GI tag D. GS4 Related E. Prelims Fact F. UPSC Prelims Practice Questions G. UPSC Mains Practice Questions
- “Araku Balloon Festival”, an international festival organised by Andhra Pradesh Tourism
- The event is aimed at showcasing the Araku Valley – known for its panoramic views of the Eastern Ghats, the coffee plantations, and the waterfalls – as a tourist destination. It has drawn scores of travellers, photography enthusiasts, and media from across the country.
- To be held from November 14 till November 16, the festival will lit up the sky throughout the day and night on all the three days and enthusiasts would get to witness balloons of different shapes and sizes adorn the sky in the non-ticketed festival.
- Sixteen teams from 13 countries, including the US, Malaysia, Taiwan and Switzerland, are participating in the festival.
- Apart from the colourful and dazzling hot air balloons, para-motoring displays, a hare and hound race and others events will also be a part of the festival itinerary to keep festival-goers hooked on all there days.
Category: INTERNATIONAL RELATIONS
1. Post-Doklam, India asserts itself in China’s backyard
Key Points:
- Displaying convergence of interests with the new quadrilateral grouping with U.S., Japan and Australia, India reached out to China’s backyard, addressing an array of issues ranging from the tension in the Korean peninsula to freedom of navigation and sought a crackdown on chemical weapons during the ASEAN and the East Asia summits.
- A high-level Indian official told The Hindu that New Delhi has emerged as a more dependable partner for South-East Asia following the Doklam faceoff with China, and indicated that the South-East Asian countries expect New Delhi to be assertive with Beijing.
Issue Area
- India remains concerned about China’s manmade structures in the South China Sea that are likely to create navigational problems and international friction
- Southeast Asian region had been facing uncertainties following the exit of President Barack Obama as he took visible interest in the region.
- However, the latest visits by the leaders of the quadrilateral countries, including by the new U.S. President Donald Trump have once again assured support to these countries as they face China’s commercial and military domination.
Other issues discussed
- Prime Minister Narendra Modi shared concerns of DPRK’s pursuit of missiles and nuclear weapons and called for complete verification and irreversible denuclearisation of the Korean peninsula.
- He also said that North Korea’s proliferation links must be investigated and the parties who have supported these unlawful programmes must be made accountable
Basic Information:
Quadrilateral grouping
- The Quadrilateral Security Dialogue (QSD) was an informal strategic dialogue between the United States, Japan, Australia and India that was maintained by talks between member countries.
- The dialogue was initiated in 2007 by Prime Minister Shinzo Abe of Japan, with the support of Vice President Dick Cheney of the US, Prime Minister John Howard of Australia and Prime Minister Manmohan Singh of India.
- Japan President Shinzo Abe delivered a speech to the Indian Parliament in August 2007, entitled a “confluence of the two seas”, a phrase he took from the title of a book written by Mughal prince Dara Shikoh.
- The dialogue was paralleled by joint military exercises of an unprecedented scale, titled Exercise Malabar.
- The diplomatic and military arrangement was widely viewed as a response to increased Chinese economic and military power, and the Chinese government responded to the Quadrilateral dialogue by issuing formal diplomatic protests to its members.
What was the intention?
- The initiation of an American, Japanese, Australian and Indian defense arrangement, modeled on the concept of a Democratic Peace
- The Quadrilateral was supposed to establish an “Asian Arc of Democracy,” envisioned to ultimately include countries in central Asia, Mongolia, the Korean peninsula, and other countries in Southeast Asia: “virtually all the countries on China’s periphery, except for China itself.”
ASEAN meeting
- Convened around the theme of a “free and open Indo-Pacific,” the first quadrilateral meeting addressed seven core themes: the rules-based order in Asia, freedom of navigation and overflight in the maritime commons, respect for international law, enhancing connectivity, maritime security, the North Korean threat and nonproliferation, and terrorism.
- The agreements on terror financing, chemical weapons and de-radicalisation adopted at the East Asia Summit will help the region cope with the threat of terrorism effectively in future.
Drawbacks
- The Quadrilateral was viewed as an “Asian NATO;”
- Daniel Twining of the German Marshall Fund of the United States has written that the arrangement “could lead to military conflict,” or could instead “lay an enduring foundation for peace” if China becomes a democratic leader in Asia.
1. SC dismisses petition for SIT probe in bribery case
In news:
- The Supreme Court dismissed a petition filed by advocate Kamini Jaiswal seeking a Special Investigation Team probe in the medical college bribery case as an effort to “create ripples” within the apex court by throwing scandalous allegations at Chief Justice of India Dipak Misra.
Background:
- The case, which the Central Bureau of Investigation is looking into, involves allegations that former members of the higher judiciary took bribes to manipulate court orders in favour of medical colleges that had failed to get official registrations.
Controversy in Supreme Court:
- Jaiswal’s petition was mentioned before a two-judge bench headed by Justice Chelameswar for urgent hearing. The judge decided to take up the petition.
- This bench referred the matter to a larger five-judge Constitution bench on November 13.
- The petitioners had said that the bench should exclude Chief Justice Dipak Misra, who handled cases related to the Medical Council of India earlier this year, as there would be a conflict of interest.
Progress:
- However, a Constitution bench led by Chief Justice Dipak Misra, in an unprecedented hearing, nullified Justice Chelameswar’s order
- The bench had said “the chief justice is the master of the roster” and no other judges of the Supreme Court can constitute benches.
- Future
- On November 11, the Supreme Court even issued a circular that from now on, all unassigned or unlisted cases can be mentioned only before the chief justice of India.
1. Indians add more years to their lives
- ‘India State-Level Disease Burden,’ has revealed severe inequalities in the disease burden in different States.
Life Expectancy
- Life expectancy at birth in the country improved significantly during 1990 to 2016 — from 59.7 years and 58.3 years for females and males respectively in 1990 to 70.3 years for females and 66.9 years for males in 2016.
- But in a measure of the continuing inequalities, the life expectancy for females in Uttar Pradesh was 66.8 years — below the national average and 12 years less than in Kerala, where it was 78.7 years.
- Again, men in Kerala enjoyed a life expectancy of 73.8 years, but the corresponding figure for men in Assam was 63.6 years.
Under five morality
- The study found that while under-5 mortality was improving in every State, there was a four-fold difference in the rate of improvement among States, which again indicated health inequalities.
Who published the report?
- The report was prepared under the India State-level Disease Burden Initiative, a joint project between the Indian Council of Medical Research (ICMR), the Public Health Foundation of India (PHFI), and the Institute for Health Metrics and Evaluation (IHME), in collaboration with the Ministry of Health and Family Welfare.
- The report’s findings were published in the journal Lancet.
Basic Information:
Indian Council of Medical Research (ICMR)
- ICMR the apex body for the formulation, coordination and promotion of biomedical research
- It is one of the oldest and largest medical research bodies in the world.
- The ICMR is funded by the Government of India through the Department of Health Research, Ministry of Health and Family Welfare
- ICMR’s 26 National Institutes address themselves to research on specific health topics like tuberculosis, leprosy, cholera and diarrhoeal diseases, viral diseases
- The Council’s research priorities coincide with National health priorities
- The Governing Body of the Council is presided over by the Union Health Minister.
2. Burden of disease shifts to non-communicable ailments
- The ‘India State Level Disease Burden’ report, prepared as part of the Global Burden of Disease (GBD) Study 2016, and published in Lancet, has found that every State in India has a higher burden from non-communicable diseases and injuries than from infectious diseases.
- The study used multiple data sources to map State-level disease burden from 333 disease conditions and injuries, and 83 risk factors for each State from 1990 to 2016.
Details
- The contribution of non-communicable diseases to health loss — fuelled by unhealthy diets, high blood pressure, and blood sugar — has doubled in India over the past two decades
- Air pollution and tobacco smoking continue to be major contributors to health loss
Category: ENVIRONMENTAL SCIENCE AND ECOLOGY
1. Winged guests flock to Chilika
In news:
- With winter setting in, migratory birds have started to arrive at Odisha’s Chilika Lake, the largest brackish water lagoon in the country
- Avian guests from north, central and east Siberia, China, Mongolia, west Asian countries and the Himalayan region of India reach Chilika every year during winter months.
- The Nalabana island and its adjoining areas, spread over 15 sqkm inside the large lake, is a major perching region for these migratory birds
Delayed arrival
- This year, the arrival of migratory birds was slightly delayed due to climatic conditions. Usually the birds arrive at the lake in the second fortnight of October, but this year they started flocking in the beginning of November.
- Fall in atmospheric temperature was slightly late in this part of the country.
- Added to that, sporadic rainfall that continued till October kept high patches and vegetation of the lake submerged.
Where are they dispersed?
- At present, the migratory birds are perching in areas where the water level is comparatively low and mud patches are visible.
- Birds like waders are mostly seen at mud patches, while ducks are being sighted in areas of shallow water.
- The other bird varieties that are being sighted in large numbers in the lake include pintails, gadwals, shovellers, rudy shelducks and pratincoles among others.
Bird-protection camps
- As many as 19 bird-protection camps have been set up by the Forest Department at Nalabana sanctuary and other areas around Chilika Lake.
- Around 30 former bird poachers, were arrested by the Forest Department in the past, are part of these bird-protection camps.
- No boats, except for two power boats of the Forest Department, are being allowed to enter the sanctuary area.
Nalbana Bird Sanctuary
- Nalbana Bird Sanctuary or Nalbana Island is the core area of the Ramsar designated wetlands of Chilika Lake.
- It was declared a bird sanctuary under the Wildlife Protection Act in 1973
- In the heart of the park, one can see thousands of birds descending during the migratory season. The island disappears during monsoon season due to inundation only to emerge again in post-monsoon.
- Nalbana means a weed covered island In the Odia language.
- Nalbana was notified in 1987 and declared a bird sanctuary in 1973 under the Wildlife Protection Act
- In 2002, The Bombay Natural History Society survey recorded 540 nests of the Indian river tern at the island, the largest nesting colony in the southeast Asia
Category: INTERNAL SECURITY AND DEFENSE
1. ‘Joint training doctrine’ for armed forces
In news:
- In a first, the Indian armed forces released a joint training doctrine meant to facilitate joint training and planning.
- Titled ‘Joint Training Doctrine Indian Armed Forces – 2017,’ it was released by Admiral Sunil Lanba, Navy Chief and Chairman, Chiefs of Staff Committee, in the presence of other two Service Chiefs.
Aim
- The aim of the doctrine is to promote ‘synergy’ and ‘integration’ among the three Services and other stake-holders leading to an enhanced efficiency and optimum utilisation of resources.
- It will also go a long way in ‘fostering initiative’ and ‘stimulating creativity’ for promoting ‘integration’ between the three services in times to come
What is the doctrine about?
- The doctrine brings out our approach to joint training at macro-level, fundamentals, objectives, joint structures, planning and organisation amongst other aspects in existence and in use in the armed forces
- It will serve as a ‘foundation’ and ‘knowledge base’ from which specific directives and strategies will be derived, from time to time.
1. Rashtriya Bal Kalyan Award presented to Super-30 founder
In news:
- President Ram Nath Kovind awarded this year’s “Rashtriya Bal Kalyan Award” to Super 30 founder Anand Kumar for his contributions in the field of teaching and education.
- What is super 30?
- Kumar’s Super 30 coaching institute has been providing free education, accommodation and food to students coming from the underprivileged section of society to crack the prestigious IIT entrance examination.
- Over 400 students have cracked IIT-JEE from Super -30 coaching institute since it has started in the year 2002 in Patna. Mr. Kumar now aims to increase the strength of students at Super 30.
Details about award
- The award, launched by the Department of Women and Child Development, carries a citation and Rs. 1 lakh.
- The awardees are selected after shortlisting the entries from all over the country.
2. Rasogolla hits sweet spot, gets GI tag
In news:
- The Geographical Indication (GI) Registry and Intellectual Property India presented the Geographical Indication Tag status to Banglar Rasogolla of West Bengal and
- Mamallapuram stone sculptures of Tamil Nadu.
- Tamil Nadu in its application stated that the sculptures from Mamallapuram were known to be carved in stone with characteristics of intricate designing chiselled finely, keeping with the spirit of the surrounding Pallava art and architecture.
- The description includes cave architecture, rock architecture, structural temples, open sculptures, relief sculptures and painting/portrait sculptures.
- West Bengal was involved in a lengthy battle with Odisha, which too had claimed Rasogolla as its invention.
History
- West Bengal believes that the Rasogolla was invented in Calcutta by confectioner Nabin Chandra Das. West Bengal in its application had provided proof of origin — historical records dating back to 1896.
- Odisha says it was invented in the holy city of Puri in the 13 th century.
Nothing here for Today!!!
|
Nothing here for Today!!! |
F. Practice Questions for UPSC Prelims Exam
G. UPSC Mains Practice Questions
GS Paper I
- “A child bride is more than doubly prone to health problems than a grown-up woman,” Discuss.
- The effective management of land and water resources will drastically reduce the human miseries. Explain
GS Paper II
- Under the Indian Constitutional and Legal framework, what constitutes Hate speech? How does it violate Fundamental Right to Equality enshrined under Article 14?


Pizza Order up!
Pick your size:
Personal Pizza
Two-Person
Family Sized
Pick your base:
Italian blend cheese with Red Sauce
Italian blend cheese with Pesto
Vegan "cheese" with Red Sauce
Vegan "cheese" with Pesto
Meat Options:
Pepperoni
Sausage
Canadian Bacon
Spicy Linguica
Grilled Chicken
Veggie Options:
Mushrooms
Bell Peppers
Onions
Black Olives
Broccoli
Specialty Toppings:
Prosciutto
Wild Mushroom
Quail Egg
Fresh Mozzarella
Smoked Salmon
Submit your order
's Order
Your order has been received! You ordered a
-topping pizza with the following toppings:
Your order total: $


Golden stuff.
Microsoft Store breaks out into song →
I know it’s obvious what’s wrong with this but I can’t help but talk about it, I’m facinated.
As a customer this would do nothing but annoy me. You’re trying to buy a computer and every member of the huge staff breaks out into a repetitive dance for 4 minutes. I understand a computer is a big purchase but imagine trying to buy a sandwich and having the cashier dance for even 10 seconds. It would be maddening, in both situations.
Speed and service are the qualities I appreciate in a retail store. Microsoft is trying to be fun, a quality no one cares about when buying things (and which Microsoft fails to achieve with their embarrassing dance anyway), at the expense of both.
From what I can see, Microsoft spends 5% of it’s resources developing a shitty operating system and the remaining 95% on ill conceived ideas to convince people to buy it anyway.
I’ve said similar things before.
Via Daring Fireball.
The iMac versus the Mac Pro
Editor’s note: This post includes an embedded table which lacks styles when viewed in the dashboard but which I’ve meticulously styled for the post when viewed on the website, I suggest you view it there.
I’m obsessed with the ideal setup. I try to milk the best out of the equipment I have and think a lot about how it could be improved as my situation changes and new technology is released.
I’ve been more than satisfied with my 24” iMac at home for a long time but I feel like I’ve outgrown it. The Mac Pro was the next, extremely expensive, logical step. Until the 27” iMac arrived:
| Processor | 2.66Ghz Quad Core Intel Core i5 | 2.66GHz Quad Core Intel Xeon Nehalem |
| Memory | 4GB | 3GB |
| Hard Disk | 1TB | 640GB |
| Video Card | ATI Radeon HD 4850 graphics with 512MB | NVIDIA GeForce GT 120 with 512MB |
| Screen | 27” LED backlit display at 2560 x 1440 (16:9) | None |
| Price | AU$2,599 | AU$4,499 |
Equivalent CPU power and (I guess) video cards, the iMac wins on RAM and hard disk space which are both cheap enough to be negligible. So as far as computer specifications go, they’re very similar, if not totally equivalent out of the box.
The iMac comes with a gorgeous, 27” LED backlit screen the likes of which you can’t even buy individually. The Mac Pro comes with no screen. The Mac Pro is expandable with PCI cards and hard disk slots. The cost of that expandability is $1900 and the best computer screen available.
For many the lack of expandability is a deal breaker. If expandability is not essential, the iMac is an easy choice and I imagine many Mac Pro users will defect to the iMac come upgrade time.
Expandability is not essential for me but it’s desirable. Evidently Apple is able to sell a computer with the power of the Mac Pro for much less than $4,499. I wish they’d put it in the Mac Pro’s expandable case and sell it at or below the iMac’s fantastic price.
  Anyone remember that Apple makes computers?
After seeing the irresistible Watchmen trailer (720p .mov) I saw the movie soon after it was released in cinemas. It didn’t live up to my extremely high expectations but that’s not to say I didn’t enjoy it.
Still, every so often I go back to the trailer and want to see the movie again. A friend from work lent me the novel and I loved it, much more than I remember enjoying the movie.
Today I watched the movie again. I had a greater appreciation and better understanding having seen it once before and read the novel but it still didn’t live up to its potential. Watchmen is an intricate and complex story, the movie leaves a significant amount of that out, which is definitely fine but it then adds fat elsewhere.
One thing the movie did get right is the opening credits. In five minutes it completely covers the background story in a series of gorgeous slow motion scenes. It’s beautifully succinct in a way the rest of the movie is not.
Here’s another great still from the sequence and I’ve cut an HD version of the opening credits at YouTube.
 It reeks of people who think schmoozing and fortnightly “networking breakfasts” are the way to the top, a culture I actively avoid.
This afternoon it was the only search result for a person I was looking for. On their LinkedIn profile was a contact link. Contacting someone requires an account.
Already annoying but this is my only option. I resolve to sign up, email them and close my account. Signing up is a long, multiple step process that involves email activation. After logging in I have to skip my way through a number of information harvesting, data entry screens.
I find the guy I’m after and look for his email address. Not an option. I can send an “InMail”. I try to send an “InMail”. Not an option, to send an InMail I need to upgrade my account.
For the low price of $25/month I can send 3 “InMails”.
No. Fucking. Way.
I delete my account. My avoidance was well founded.
 It’s bad for you, bad for people looking for you and good for the scumbags at LinkedIn.
I couldn’t believe it this morning watching 7 Early News that this was being reported as an iPhone virus with no more qualification than that. It requires three things:
- A jail broken phone.
- OpenSSH installed, not a default on most jail broken phones.
- The default root password.
So about 0.1% of iPhones whose users have gone out of their way to open up completely but haven’t taken the care to change their password are susceptible. Meanwhile every iPhone owner is under the impression their phones are vulnerable.
Don’t let the truth get in the way of a good story. Not that anyone having their iPhone background set to a picture of Rick Astley is a good story.
Epiphany
For as long as the term “social media” has been around I haven’t had a clue what exactly it means. I can’t define it, no one I know, even those who use it regularly, can define it. Until now.
Social media is automatically posting a digest of your tweets to your blog.
And automatically sending your blog posts to your Twitter feed.
And automatically posting both to your Facebook page.
While clicking follow, the only manual part of the process.
I love the use of diagrams to present information. For humour, to make a point, factually precise or a general approximation, I love it. Indexed is one my favourite websites.
 But I’ve quickly been disappointed. There’s little clever distillation of information into graph form and a lot of forcing anything at all into a couple of circles.
Simple Desktops →
The wallpaper featured on Simple Desktops is good but I’d never use it or feature it on A Solid Base. I love the simplicity but I don’t like solid colours, hard lines or a single focal point, ironically or not, I find it all distracting.
Room and Board is not just the best example of furniture sales websites but of any website that sells a large range of similar items. Consistent, high quality photographs, prices on everything and no pagination makes it easy to compare their range.
Their products on the other hand don’t appeal to me at all.
Forum software is a cesspool of bloat and terrible, complicated UI design. For many niches interacting with forum software is the only option. There’s few easier ways to start a community. There’s 1000s of options, all trying to out feature the next when less, much less, is what’s desperately required.
The less phpBBs, Agoras, Simple Machines (the world’s most ironically named piece of software) and the more Vanillas the better.
I’m consistently intrigued by people’s reluctance to spend money on iPhone applications. People who’ll lay down $6 on a beer or coffee without blinking wouldn’t dream of spending $2.50 on an iPhone app.
It’s not because of a disinterest in applications, the phones their paying $2000+ for over two years are packed with apps, free apps. A strange phenomenon.
I’m usually pretty bad about remembering to empty the Trash, but I think this is a personal record.
I’m the opposite. Sometimes I’m so quick to right click the trash, ready to empty, after I’ve dropped something in it that it hasn’t registered yet and Empty Trash is still a greyed out option.
Is there anyone out there tech savvy or nerdy enough to be aware of and willing to buy a separate, additional Missing Manual for iPhone but not tech savvy enough to simply play with the phone or browse the web to learn what it can do?
People who need a manual don’t care enough to buy an additional book meticulously explaining their device’s feature set.
And people who do want to know their device inside out can easily learn it themselves.
Who are these missing manual books for?
Second Hand
At work we have very short, golf-green-like carpet, a putting machine and a broken putter. I went to Cash Converters, one of Australia’s second hand store chain to buy a replacement club. My only requirement was that it be functional, my budget was roughly $10.
As second hand stores do, they had many putters. About 15 of them and not one was on sale for less than $40 despite most looking very crappy and very used, exactly what I was after.
I looked around the store, a rack of DVDs, a couple of guitars, a cabinet of jewellery, 4 staff and no customers — it was sparse.
Sites like Craigslist, Gumtree, The Trading Post and Ebay are evidence there is a massive market for second hand goods. Yet Cash Converters, what should be the physical manifestation of these websites, stagnates with barely any stock and ridiculously high prices.
If they were willing to reduce their margins Cash Converters would make a great place. I’m perpetually unloading stuff I don’t use anymore, I’d love a place I could take it all at once and get a fair price, albeit a lower price than I’d get with the hassle of listing it, fielding enquiries and shipping it myself. As a consumer I’d love a place I could go to get something inconsequential like a putter for cheap. It feels like a huge missed opportunity.
The Talk Show Episode 30 →
The first episode in eight months. I’d forgotten how much I enjoy this podcast. Benjamin and Gruber could not compliment each other more perfectly. The last I heard Gruber was not so interested in recording more episodes, that was before number 30, I hope they keep it up.
A Solid Base is my attempt at the trend of using Tumblr not to write or share things you’ve made but to curate a niche of great things others have made. It’s my favourite, hand picked desktop wallpaper always at high resolution. It’s kind of like Prettify and Iconpaper but without the icons and without all the wallpaper I don’t like.
I know if you’re using your computer properly it should rarely be seen but desktop wallpaper is still important. There’s a lot of great stuff out there but it’s buried in a sea of rubbish, A Solid Base is your filter. I’ve loaded it up with a bunch to begin with and have many more lined up in the queue. Enjoy and submit, if you like.
Streaming HD video from your Mac to your Xbox 360
I have HD video on my computer. I have an Xbox 360 capable of playing video connected to my HDTV. I even have an application that will stream video from my computer to my Xbox over a local network. You’d think getting HD video to stream from your computer to your Xbox would be easy. It’s not and I’m loathed to spend money on another device. I’ve spent this last weekend trying to make it happen. I found a process that’s not ideal but it’ll do.
The Problem
- The Xbox will not play video in the Matroska container, the most common format for HD video distribution.
- MKV video can be converted to a format the Xbox can read but it can take days of computing power and produce massive files.

The Good News
The Xbox can play H264 video, which is the format of the video inside the Matroska container, it’s the audio format that the Xbox doesn’t like. Using Quicktime we’re able to pass through the video, convert the audio to something the Xbox likes and package it up in an MPEG-4 container. The video is identical, the file size equivalent and the process only takes 10–15 minutes.
How It’s Done
- Open the MKV video in QuickTime Pro 7. QuickTime X will not do it (exactly why requires a long, detailed explanation).
- Let the loading bar totally buffer, it takes 5-10 minutes.
- File → Export
- Choose Movie to MPEG-4 in the drop down.
- Click Options.
- Choose MP4 from the File Format drop down, not MP4 (ISMA).
- Choose Pass Through from the Video Format drop down. If Pass Through is greyed out go back to the video, Window → Show Movie Properties, and deselect the subtitles channel. Try again.
- On the Audio tab choose AAC-LC (Music) from the Audio Format drop down. Fill the rest with whatever you like, I use 160kbps, Mono, 44.100khz and “Best”.
- Click OK, export the file.
- It should take 10–15 minutes depending on your processor power, if it’s taking hours you’re converting the video too and doing it wrong.
The Bad News
The Xbox refuses to play any file too big. Too big seems weigh in at something around 4GB but I’ve managed to play files a little larger than 4GB. The totally useless error message the Xbox displays when it refuses to play these files makes it seem your video is in the wrong format, it’s not, cut the video a little shorter and it plays fine.
To get around this insane limitation I’ve had success using SplitFuse to break a movie up into two, less-than-4GB parts. It takes another 5 or 10 minutes and is another step in the already too long chain but it works.
Notes
Steady playback is very hit or miss for me. Sometimes I’ll go an hour with no hiccups, other times video won’t play 20 seconds without stalling. Pausing for a time seems to help but not always. I am streaming with an ordinary router over the G protocol between rooms, so the connection is far from the fastest a local network could be. I’m sure playback would be much more reliable through an Airport Extreme or a wired network.
The process is long, impossible to automate and no where near as convenient or reliable as downloading iTunes content to an Apple TV. But you already have a device capable of playing HD content through your TV and the result at the end of it all is fantastic.


| com.shinobicontrols.charts.ShinobiChart |
Displays data arranged in either CartesianSeries
or
PieDonutSeries
.
A ShinobiChart will display its cartesian series (for example LineSeries
,
ColumnSeries
, CandlestickSeries
) if a cartesian series is added to it
first, or all its pieDonut series (DonutSeries
, PieSeries
) if a
pieDonut series is added to it first. If a pieDonut series is added to a
‘cartesian chart’ or vice versa, an java.lang.IllegalStateException
will be thrown.
Data is always represented by a series or a set of series. The Series
determines the look and style of the data contained in a DataAdapter
.
There is a one-to-one relationship between a chart series and the data
adapter it represents. A ShinobiChart will be updated to reflect any changes
to data depending on the specific implementation of its series' data
adapters.
A chart must have an x-axis and a y-axis to display cartesian series otherwise an java.lang.IllegalStateException will be thrown. For pieDonut series, however, the chart must not have any axes otherwise again an java.lang.IllegalStateException will be thrown.
For the ShinboiCharts for Android Trial Version, a valid license key must be
set, using setLicenseKey(String)
, before the chart renders otherwise
an InvalidLicenseException
will be thrown. This is not necessary for
the Standard Version.
| Nested Classes | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| ShinobiChart.OnAxisMotionStateChangeListener | Interface definition for a callback to be invoked when the motion state of an axis changes | ||||||||||
| ShinobiChart.OnAxisRangeChangeListener | Interface definition for a callback to be invoked when an axis range changes | ||||||||||
| ShinobiChart.OnCrosshairListener | Interface definition for callbacks to be invoked when the
Crosshair changes in some way. |
||||||||||
| ShinobiChart.OnGestureListener | Interface definition for callbacks to be invoked when the user makes touch gestures. | ||||||||||
| ShinobiChart.OnInternalLayoutListener | Interface definition for a callback to be invoked when the internal layout of the chart is complete | ||||||||||
| ShinobiChart.OnPieDonutSliceLabelDrawListener | Interface definition for a callback to be invoked when a pie or donut series label is about to be drawn. | ||||||||||
| ShinobiChart.OnPieDonutSliceUpdateListener | Interface definition for a callback to be invoked after a pie or donut slice has been created. | ||||||||||
| ShinobiChart.OnSeriesSelectionListener | Interface definition for a callback to be invoked when a series or point is selected or deselected. | ||||||||||
| ShinobiChart.OnSnapshotDoneListener | Interface definition for a callback to be invoked when a snapshot has been taken and is ready for use. |
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Adds the series to the chart.
| |||||||||||
Adds the series to the chart, associating it with the specified X and Y
axes.
| |||||||||||
Adds an X-axis to this chart.
| |||||||||||
Adds a Y-axis to this chart.
| |||||||||||
Sets a style resource as the source for the chart.
| |||||||||||
Returns all X-axes associated with this chart. | |||||||||||
Returns all Y-axes associated with this chart. | |||||||||||
Returns the annotations manager.
| |||||||||||
Retrieve the location of the canvas, with co-ordinates relative to the
containing
ChartView 's position. | |||||||||||
Returns the object that is displayed after a tap-and-hold gesture
on the chart.
| |||||||||||
Returns version information about the ShinobiCharts library being used.
| |||||||||||
Returns the object that represents the chart's
Legend . | |||||||||||
Retrieve the location of the plot area, with co-ordinates relative to the
containing
ChartView 's position. | |||||||||||
Returns a list containing all the series associated with this chart, indexed according to the order in which they were originally added. | |||||||||||
Returns all the series associated with the specified axis. | |||||||||||
Gets the
ChartStyle object that manages the style for the chart
area. | |||||||||||
Gets the text value from this chart's title label.
| |||||||||||
Gets the
MainTitleStyle object that manages the style for the
chart title. | |||||||||||
Returns this chart's primary X-axis.
| |||||||||||
Returns the X-axis for the specified series.
| |||||||||||
Returns the primary Y-axis for this chart.
| |||||||||||
Returns the Y-axis for the specified series.
| |||||||||||
This method is deprecated.
As of v1.4, inspect the type of the series that the chart holds
directly instead. An enumerated type may be introduced in a future release
that depicts the type of the chart.
| |||||||||||
Determines whether selecting a series by a tap gesture will deselect other series on the chart.
| |||||||||||
Redraws the chart's elements.
| |||||||||||
Removes the series from the chart.
| |||||||||||
Removes an X-axis from the chart.
| |||||||||||
Removes a Y-axis from the chart.
| |||||||||||
Asks the chart to generate a snapshot image.
| |||||||||||
Sets a license key for this chart.
| |||||||||||
Provides an object to handle axis motion state change callbacks.
| |||||||||||
Provides an object to handle axis range change callbacks.
| |||||||||||
Provides an object to handle crosshair change callbacks.
| |||||||||||
Provides an object to handle gesture callbacks.
| |||||||||||
Provides an object to handle chart internal layout callbacks.
| |||||||||||
Sets the
ShinobiChart.OnPieDonutSliceLabelDrawListener for the chart. | |||||||||||
Sets the
ShinobiChart.OnPieDonutSliceUpdateListener for the chart. | |||||||||||
Provides an object to handle series selection state change callbacks.
| |||||||||||
Provides an object to handle snapshot ready callbacks.
| |||||||||||
Controls whether selecting a series by a tap gesture will deselect other series on the chart.
| |||||||||||
Sets the
ChartStyle object that manages the style for the chart
area. | |||||||||||
Sets the text value of the chart's title label and displays it in the
standard position.
| |||||||||||
Sets the
MainTitleStyle object that manages the style for the
chart title. | |||||||||||
Sets the primary X-axis for this chart.
| |||||||||||
Sets the primary Y-axis for this chart.
|
Adds the series to the chart. The series will be associated with the primary x and y axes. If no primary x or y axis has been set, then this series will automatically be associated with an axis when it is set as a primary axis.
If no style is set on the series, then it will assume a style from the chart's default style values. Otherwise, all properties on the style not explicitly specified by the user will be replaced by corresponding properties from the chart's default style values.
| series | The series to add to the chart |
|---|
Adds the series to the chart, associating it with the specified X and Y
axes. If xAxis
or yAxis
do not currently belong to the
chart they will be added.
If no style is set on the series, then it will assume a style from the chart's default style values. Otherwise, all properties on the style not explicitly specified by the user will be replaced by corresponding properties from the chart's default style values.
Adds an X-axis to this chart. If the chart does not have a primary
X-axis, then axis
will be set as the primary X-axis.
The ShinobiCharts for Android Premium version has support for adding multiple X-axes to your chart. In the Standard version, only one X-axis is allowed and any attempts to add further X-axes will result in an java.lang.UnsupportedOperationException being thrown.
If no style is set on the axis, then it will assume a style from the chart's Theme. Otherwise, all properties on the style not explicitly specified by the user will be replaced by corresponding properties from the chart's Theme.
Attempting to add a null axis or an axis that already belongs to another
chart will result in an java.lang.IllegalArgumentException being
thrown. Attempting to add an axis that already belongs to this chart or
trying to add an axis to a chart containing a PieDonutSeries
will
result in an java.lang.IllegalStateException being thrown.
| axis | The axis to add as an X-axis for the chart |
|---|
Adds a Y-axis to this chart. If the chart does not have a primary
Y-axis, then axis
will be set as the primary Y-axis.
The ShinobiCharts for Android Premium version has support for adding multiple Y-axes to your chart. In the Standard version, only one Y-axis is allowed and any attempts to add further Y-axes will result in an java.lang.UnsupportedOperationException being thrown.
If no style is set on the axis, then it will assume a style from the chart's Theme. Otherwise, all properties on the style not explicitly specified by the user will be replaced by corresponding properties from the chart's Theme.
Attempting to add a null axis or an axis that already belongs to another
chart will result in an java.lang.IllegalArgumentException being
thrown. Attempting to add an axis that already belongs to this chart or
trying to add an axis to a chart containing a PieDonutSeries
will
result in an java.lang.IllegalStateException being thrown.
| axis | The axis to add as a Y-axis for the chart |
|---|
Sets a style resource as the source for the chart. If overwrite is set to true all values in the style resource will be applied, if it is set to false all values in the style will be applied except those that have been set by the user using any of the .set methods of the styles.
| themeResourceID | The R.style.id of the style to apply |
|---|---|
| overwrite | Set to true to replace all values, false to only replace default values. |
Returns all X-axes associated with this chart.
If there are none, the method will return an empty list.
This list is read-only. Attempts to add, remove or replace the contents of the list will result in an java.lang.UnsupportedOperationException being thrown. However, it is possible to modify the elements in the list.
Returns all Y-axes associated with this chart.
If there are none, the method will return an empty list.
This list is read-only. Attempts to add, remove or replace the contents of the list will result in an java.lang.UnsupportedOperationException being thrown. However, it is possible to modify the elements in the list.
Returns the annotations manager. This handles the creation, addition and
removal of Annotation
objects to this chart; annotations are not
created directly but instead are created through the annotations manager.
Annotations are a ShinobiCharts for Android Premium Edition-only feature. Attempting to add annotations via the annotations manager with the Standard Edition will result in an java.lang.UnsupportedOperationException being thrown.
Retrieve the location of the canvas, with co-ordinates relative to the
containing ChartView
's position.
Returns the object that is displayed after a tap-and-hold gesture
on the chart. The Crosshair
will draw a target circle over the
tracked data point with lines extending from the circle to the axes. It
will also display a tooltip on top of this showing the values for x and y
at that data point.
Returns version information about the ShinobiCharts library being used.
Returns the object that represents the chart's Legend
.
Retrieve the location of the plot area, with co-ordinates relative to the
containing ChartView
's position.
Returns a list containing all the series associated with this chart, indexed according to the order in which they were originally added.
If there are none, the method will return an empty list.
This list is read-only. Attempts to add, remove or replace the contents of the list will result in an java.lang.UnsupportedOperationException being thrown. However, it is possible to modify the elements in the list.
To add series to the chart, use addSeries(Series>)
To remove series, use
removeSeries(Series>)
.
Returns all the series associated with the specified axis.
If there are none, the method will return an empty list.
| axis | The axis whose series are being retrieved |
|---|
axis
Gets the ChartStyle
object that manages the style for the chart
area. Setting these values will override any values set by the theme. Any
changes to properties on the style are not reflected visually until
redrawChart()
is called.
Gets the text value from this chart's title label.
Gets the MainTitleStyle
object that manages the style for the
chart title. Setting these values will override any values set by the
theme. Any changes to properties on the style are not reflected visually
until redrawChart()
is called.
Returns this chart's primary X-axis.
Returns the X-axis for the specified series.
| series | The series whose X-Axis is being retrieved |
|---|
series
Returns the primary Y-axis for this chart.
Returns the Y-axis for the specified series.
| series | The series whose Y-Axis is being retrieved |
|---|
series
This method is deprecated.
As of v1.4, inspect the type of the series that the chart holds
directly instead. An enumerated type may be introduced in a future release
that depicts the type of the chart.
Whether the chart is displaying a PieDonutSeries
, such as a
PieSeries
or DonutSeries
. It is not possible to add a
CartesianSeries
to the chart when displaying pieDonut series.
true
if the chart contains a pieDonut series.Determines whether selecting a series by a tap gesture will deselect other series on the chart.
Redraws the chart's elements. Any styling changes applied since the last
call to redrawChart()
will be applied. In response to data
changes, redrawChart()
is automatically called.
Removes the series from the chart.
| series | The series to remove |
|---|
Removes an X-axis from the chart. Any annotations that are associated
with axis
will also be removed from the chart.
Note, annotations are a premium-edition only feature.
| axis | The X-axis to remove from the chart |
|---|
Removes a Y-axis from the chart. Any annotations that are associated with
axis
will also be removed from the chart.
Note, annotations are a premium-edition only feature.
| axis | The Y-axis to remove from the chart |
|---|
Asks the chart to generate a snapshot image. If an ShinobiChart#OnSnapshotDoneListener has been
registered, it will receive an Bitmap
via the onSnapshotDone(android.graphics.Bitmap bitmap) method of that interface.
NOTE: This will cause the chart to redraw as part of the snapshot process, so any pending style changes will also
be committed.
Sets a license key for this chart.
For the trial version of ShinobiCharts for Android, a valid license key must be set before the chart will render. This is not necessary for the standard version.
| licenseKey | the license key used to validate the trial version |
|---|
Provides an object to handle axis motion state change callbacks.
| listener | The listener. |
|---|
Provides an object to handle axis range change callbacks.
| listener | The listener. |
|---|
Provides an object to handle crosshair change callbacks.
| listener | The listener. |
|---|
Provides an object to handle gesture callbacks.
| listener | The listener. |
|---|
Provides an object to handle chart internal layout callbacks.
| listener | The listener. |
|---|
Sets the ShinobiChart.OnPieDonutSliceLabelDrawListener
for the chart.
| onPieDonutSeriesLabelDrawListener | the onPieDonutSeriesLabelDrawListener to set |
|---|
Sets the ShinobiChart.OnPieDonutSliceUpdateListener
for the chart.
| onPieDonutSliceUpdateListener | the onPieDonutSliceUpdateListener to set |
|---|
Provides an object to handle series selection state change callbacks.
| listener | The listener. |
|---|
Provides an object to handle snapshot ready callbacks. Before calling myChart.requestSnapshot()
, an
ShinobiChart.OnSnapshotDoneListener
will need to be provided via this method.
Typically the class calling this will itself implement the ShinobiChart.OnSnapshotDoneListener
interface and override
onSnapshotDone(android.graphics.Bitmap)
. It can then register itself
to receive the call back by calling myChart.setOnSnapshotDoneListener(this).
| listener | The listener. |
|---|
Controls whether selecting a series by a tap gesture will deselect other series on the chart.
| seriesSelectionIsSingle | Set true if selecting a series by a tap gesture should deselect other series on the chart. |
|---|
Sets the ChartStyle
object that manages the style for the chart
area. Values in style
will override any values set by the theme.
The new style is not reflected visually until redrawChart()
is
called.
| style | The style for the chart |
|---|
Sets the text value of the chart's title label and displays it in the standard position. Setting the title to null will cause it to be hidden.
| title | The text for the title of this chart |
|---|
Sets the MainTitleStyle
object that manages the style for the
chart title. Values in titleStyle
will override any values set by
the theme. The new style is not reflected visually until
redrawChart()
is called.
| titleStyle | The style for the chart's title label |
|---|
Sets the primary X-axis for this chart. If this chart already has a
primary X-axis, the existing axis will be removed and axis
will
replace it as the primary X-axis.
If no style is set on the axis, then it will assume a style from the chart's Theme. Otherwise, all properties on the style not explicitly specified by the user will be replaced by corresponding properties from the chart's Theme.
Attempting to set a null axis or an axis that already belongs to another
chart will result in an java.lang.IllegalArgumentException being
thrown. Attempting to set an axis that already belongs to this chart or
trying to set an axis on a chart containing a PieDonutSeries
will
result in an java.lang.IllegalStateException being thrown.
| axis | The axis to set as the chart's primary X-axis |
|---|
Sets the primary Y-axis for this chart. If this chart already has a
primary Y-axis, the existing axis will be removed and axis
will
replace it as the primary Y-axis.
If no style is set on the axis, then it will assume a style from the chart's Theme. Otherwise, all properties on the style not explicitly specified by the user will be replaced by corresponding properties from the chart's Theme.
Attempting to set a null axis or an axis that already belongs to another
chart will result in an java.lang.IllegalArgumentException being
thrown. Attempting to set an axis that already belongs to this chart or
trying to set an axis on a chart containing a PieDonutSeries
will
result in an java.lang.IllegalStateException being thrown.
| axis | The axis to set as the chart's primary Y-axis |
|---|


BiKeyHashMap()
A Collection class that supports two keys (K1, K2) mapped to a single value V.
Author Boston Vanseghi
Since 2.1.6


As I stated above, we all want to mate up with some certain champions. However, this is also highly up to person. I have some preference, but I would also love to know your idea. In the following part, I have put some of my opinion, for few champions. However, you may feel free to add your opinions on best pair or pairs below. Also, if you disagree some of my ideas, you may also change them by the function below.
A champion's Best Partner will be listed here.
Just like we have someone we really want to see, there are always some people that we would rather not meet ever. A champion in league will always has some opponent that they are frustrated about. Thus, we should try to avoid this ahead.
A champion's Worst Encounter will be listed here.


Qualysguard Decentralized It How to Organize Your Assets
I work for a University with a decentralized IT department: each college, division, department, etc maintains their users. As a security department who maintains QualysGuard, we were wanting each department to scan their own assets and re-mediate all vulnerabilities found in these scans based on the following policy:
- Level 4 and Level 5 vulnerabilities must be re-mediated within 15 days
- Level 3 vulnerabilities must be re-mediated within 30 days
- Level 2 vulnerabilities must be re-mediated within the next semesters
- Level 1 vulnerabilities must be re-mediated whenever possible
When dealing with QualysGuard in a decentralized IT infrastructure, your naming convention will save you!
Once you have a group of Assets in their respective Asset Groups, then we add them to their own Business Unit. Remember that you must a Unit Manager (at least 1), and you may any number of Scanner and Reader roles. You can additionally assign a role to specific Asset Groups within the Business Unit (or another Business Unit).
Please see the following graphic, which outlines what was previously stated:
Remember, when you are rolling out your QualysGuard VM infrastructure you will want to plan (in great detail) your roll-out. Creating a roll-out plan that relies on system owners to take responsibility for their own systems, instead of System Administrators and/or Security Analyst is the idea goal. By doing this, it highlights the importance for security in your organization as well as giving everyone insight into the security posture of their organization. Hopefully they will see QualysGuard as a tool of transparency that helps strengthen your organization vulnerability management life cycle management.