Copyright (c) Pedro Sena 1994
FILM TITLE: MERRY CHRISTMAS, MR. LAWRENCE DIRECTOR: NAGISA OSHIMA COUNTRY: EMGLAND/JAPAN 1982 CINEMATOGRAPHY: TOICHIRO NARUSHIMA MUSIC: RYUICHI SAKAMOTO BASED ON: Sir Laurens Van Der Port's "The Seed and The Sower" CAST: David Bowie ( Jack Celliars ), Ryuichi Sakamoto Capt Yanoi ), Takeshi ( Sergeant Hara ), Tom Conti ( J. Lawrence ), Jack Thompson SUPER FEATURES: Great film about the WILL of the winner.. or loser.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
There are many ways to create an anti war film. Some dwell on the violence. Some dwell on my cause, or your cause, and justify it. And some, stand as truly great works that do not try to prove anything except that we are fickle human beings convinced that we are right at every turn.
Nagisa Oshima, went a step further. He went so far as to state that much of this stuff is a battle of inner wills, if not an egotistical desire which man has for physical control, even sexual. The point is made that even at the worst of times, the animal in us will still come out, be it in fighting, or in anything else.
The place is Java, in 1942. And the Japanese maintain a prisoner camp for a few soldiers. Most of them seem to have been commanders rather than just common field soldiers. The presumption is that these camps were set up to try and gain valuable information that might lead the Japanese into places where they could attack the enemy. It might have worked in many cases, but in this particular story it doesn't. Be it a staunch English major, or the better meaning and mannered John Lawrence, who had been in Japan prior to the war.
In between the battles of wills, the commanders engage in various incidents with their prisoners, and they never seem to get the edge they want. This forces the commander Yonoi and sergeant Hara to have a better respect for their prisoners, but it never seems to change into anything else.
There are moments in this film that are very well written, and have been specially well directed into film, perhaps because it is the famous writer that directed the film. And the continuity of the piece is rather interesting, with flashbacks that are immediately seen as unusual, but an indication that the characters are here to take a stand, and one of power and inner force at that. The young English soldier whose background seems centered in various forms of betrayal ( so he calls it ) regarding his younger brother, ends up clearing up why he joined the army in the first place. And he finally commits the ultimate insult that gets him buried, as we finally see why it is that he did what he did. For once he has not betrayed anybody, but by his actions helped save, or buy time, for his fellow prisoners.
Eventually the tables turn and the Japanese commander is visited by Mr. Lawrence, who understands the spoils of war better than anyone. "We are victims of men who feel they are right, and the truth really is that no one is right, of course". The commander is to be executed the next morning.
Very good in this film are both Tom Conti and David Bowie, in what is an excellent script, very well directed and thought about. The film defines color only in certain times and moments. And lush it is. The rest of the time it is basically bland, and only shows the two colors of the camp.
With music by Ryuchi Sakamoto, who also plays the Commander Yanoi, this film pulsates with a few musical tones, that just bloom into a musical moment. A rare, and well designed style for the film.
4 GIBLOONS
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


{% extends 'base.html' %} {% block title %} ThePursuit | Home{% endblock %} {% block navigation %}
ThePursuit is an online treasure hunt (OTH). For the uninitiated, an OTH is an online game where you need to solve a series of clues to win the ultimate prize. ThePursuit is one of the most exciting events around, boasting of 400+ participants last year from 26 countries! We're back again this time and the winner gets a free ticket and a goodie bag!
Like any game, an OTH follows its own set of rules. To make the most out of the game, do give them a read:
What are you waiting for? Start your pursuit!
days
hours
minutes
seconds
Powered by


My name is Mehdi Pourhadi. I'm 26 years old. I grew up in Tehran. Graduated in Computer programming. Here's my Linux story, and how I got acquainted with it: once my brother came home with Fedora , one of the most famous Linux distros, installed on his laptop; I asked him about it as I was using Windows XP back then. I played with it for a while and decided it was not my thing (still trying to use it but can't); but when he introduced Ubuntu to me, I said "that's it." Ubuntu was more friendly and easy to use. After a while I got to like Linux more and more; having tried other distros, I found Linux mint which is currently the #1 in the top 100 in Distrowatch ; I knew then that I had finally found the OS I really needed.
I'ts 21st century and for someone who knew computer its one of the essential thing in his expertise to have a website. Also i like blogging and it allows me tho express myself in a way that i want.


I need you more than want you, and I want you for all time
Friedrich Nietzsche famously said, “without music, life would be a mistake.” He was also a huge fan of opium and self-prescribed chloral hydrate, so maybe we should be wary of what he constitutes a “mistake.”
Either way, music is an essential, very human form of expression, bringing joy in a way that can’t be felt through words alone.
A beautiful song like “Wichita Lineman” by the recently departed Glen Campbell connects to virtually anyone on an emotional level - and yet conjures unique feelings in every listener.
For an activity we’ve been doing since people could bang one thing against another thing, the whole “humans making music” process seems to be working out just fine - so why are people trying to change it, and how?
In the first of a two-part look into the future of music consumption and creation, MONTAG asks these questions - and finds out how you can take advantage of AI to make music for yourself. Then, next week, we’ll find out how we shouldn't be scared of a future where our favourite music is made without human input...
C.R.E.A.M.
**The TL;DR to the question** “why are we headed for a future where my music is made by AI?” hovers somewhere between “lust for cash” and “the human desperation to innovate.”The way tech will change music can broadly be cleaved into two paradigms: music that will be made without any human input whatsoever, and music that is made by humans - but in a way which means handing off work to bots.
Neither of these options will fill musicians with anything other than existential dread. But it also might work out a lot better than they’d assume.
Automatic For The People
**Music is, by definition, compiled using a limited number of notes, chords and melodies**, and thus is ripe for automation. It’s made of the kind of patterns that computers find simple to analyse and replicate.So AI-produced music will suck, right?
The short answer is no. The longer answer is also no, and - surprise! - you’re already listening to it. And it’s great.
Brian Eno is considered one of modern music’s wizards. A founding member of Roxy Music, he soon quit the band to invent his own type of music: Ambient - the warm, languid, slow music that is “as ignorable as it is interesting.”
It’s the type of music you could hear at airports, as the title of one of his pioneering LPs, Music For Airports, is at pains to point out.
Eno has been producing music that makes itself for decades. Generative music involves presenting a computer with a set of sounds and some loose parameters - and letting it create the music it concludes works best.
Recently, he released Reflection, an album that was released as an app that created the music anew each time it was launched: whenever you played it, it felt sonically familiar without actually being the same.
(And even if you listen to it on a streaming service, you will experience an element of its mutation: every few months Eno quietly uploads a different version of Reflection to a slightly confused - or impassive - audience.)
Reflection is a great album that challenges what an album - and music itself - is. In some ways this is nothing new - before recorded music existed, a song was always different every time you heard it.
But that’s Brian Eno.  What about the bedroom artists, or the rest of us music lovers?
B-Boy Bouillabaisse
Music that makes itself is not a threat to music. It might be a threat to the livelihood of the people that make it, but that’s the same issue that we’ll all be facing soon.
Instead, what are the ways music makers will be liberated, supercharged and energised by automation?
Rewind to 1989. It’s a sunny day in Los Angeles, and you’re on the roof of the Capitol Records building. There’s a weird new music playing that sounds like someone took little bits from a hundred classic soul and funk and rock and hip hop records and jigsawed them all together.
You’d be right to think that, ‘cos you’re drunk and you're at at the launch party of the Beastie Boys’ revolutionary Paul’s Boutique LP: an album that was, indeed, made from all those bits of records (and more). Here’s the interesting part: a record like Paul’s Boutique will never be made again.
The reason that it's one-of-a-kind will frustrate anyone who’s listened to the album and been struck by the dazzling scope, audacity (who’d have the guts to shuffle a collage of bits of Beatles songs into a new song?) and funkiness of the ultimate cut-n-paste record.
It’s because the band and their visionary producers, the Dust Brothers, broke the law. They grabbed all the best bits of all the records that they liked the best and, out of the parts, made one that was better. And they didn’t pay for any of these parts.
You can’t do this any more: copyright laws in the music industry have been tightened with industrial-strength monkey wrenches. Using a snippet of another song in your own costs so much money that it rarely makes financial sense.
In fact, it’s often financial insanity: the famous strings in The Verve’s Bittersweet Symphony is a sample of an orchestral cover of a Rolling Stones song, and as a result, the Verve had to pay every penny the song earned to Mick ’n’ Keef.
What Can You Do For Me?
Wait, what’s this got to do with automation? Two very important things.
Firstly, Paul’s Boutique was a turning point: when the musician openly evolved from being a writer of music to being a curator of sounds, noises and snippets.
Everything is a remix now, and it probably has Nicki Minaj doing a guest verse.
Secondly, and conversely: this cut ’n’ paste method of making music is normal now.
Open Garageband or any easy-to-use music-making software and you’ll see that making music involves nudging around virtual lego bricks: this drum beat here, this horn stab there, and this loop of a jazz-flute unaccountably gasping over the top of it all.
It’s long been common for composers to buy “packs” of samples, noises and loops of sound made for you to cut up, move around and make new songs from.
So what if a computer made them for you instead?
OK Computer
It takes half a dozen clicks to create a brand-new, never-before-heard song on Jukedeck, a service that uses AI to create brand new compositions.
Jukedeck is simple: fill in a few meaningful parameters (Choose “Corporate Tech” if you must) and make some tonal distinctions - and out pops a song that you can stream, download, or buy outright so that you are the actual owner of the composition.
This is great for podcasters who just want a piece of catchy music for their show, and can’t afford to hire a songwriter, or make it themselves.
MONTAG’s companion podcast, the MONTAGE, uses a “Cinematic Sci-Fi” song that we made on Jukedeck called Reckless Doubts (a suspiciously fitting name for any of MONTAG’s activities).
Is This It?
Ho-hum, you might think: this isn’t real music. And you know - maybe it isn't.
Yet this is the very crux of tomorrow's human music-making paradigm.
Here's where the much-maligned human producer is creatively supercharged: why not use Jukedeck, or tomorrow’s more advanced version of it, to make 20 tracks, sample the best bits, and make something human, unique and utterly new from the fragments?
You might be making Paul’s Boutique 2.0 and it’d be the most “now”, most cutting-edge thing you could possibly do in music (at least, that’s what your breathless press release will say.)
So: automated music creation is not to be feared, it's not upsetting the apple cart as much as you'd think, and humans are going to be more essential than ever.
And next week, we find out why that's all wrong, and how you're already humming along to songs made by machines.


Front End¶
The user facing section of this project is made up of two parts: a User Interface and a REST API.
User Interface¶
The User Interface is the primary user facing aspect of this project. Providing users a simple method of submitting pipeline job requests. The page markdown is retrieved from the local ui.html file.
-
ui.
mission_page
()¶ A simple function that retreives the pipeline job request page HTML.
- Returns
The HTML for the pipeline job request page.
-
ui.
submit
()¶ A function called upon submission of a pipeline job request. This function parses the user request form, retrieving the user request data. This data is then organized into a dictionary to be sent in a REST POST request to the REST API.
In the case of a job request containing invalid parameters, the user will be sent to an error page, asking them to redo their request.
- Returns
The HTML for a thank you page.
-
ui.
download
()¶ A function called to provide the user with a zipped archive of their processed images.
- Returns
A .zip archive containing processed images.
-
ui.
dag_test
()¶ A function to test the ability of the UI to send a request to the REST API, using a pregenerated request.
- Returns
A simple message to indicate a successful test.
REST API¶
The REST API is a simple endpoint that can be interacted with either indirectly through the User Interface or through a direct request, such as with a curl command.
-
class
rest_api.
PipelineJob
¶ A class that represents a POST endpoint for pipeline job submission.
-
post
(job_id)¶ A function to handle requests made to the REST API. This function also contains a routine for testing the communication of the API to the generator library.
In the case of a job request containing invalid parameters, the REST API will report the error to the UI.
- TODO:
Rework identifier for generation failure due to parameter error.
- Parameters
job_id – A job identifier in the form of the timestamp of when the job request was first made.
- Returns
A REST response depending on the result of the generation process.
-


|
PIT Control Panel 1.0 | ||||
| FRAMES |
lucee.Component pit.auth
public class auth
Controller to handle all things related to authentication
| Method Summary | |
|---|---|
remote any |
checkAuth()
Checks to see if the current session user is authorized |
package struct |
getCurrentUser()
Returns the currently logged in user |
package boolean |
isLoggedIn()
checks if the current session is logged in |
remote any |
login([string email], [string password])
Logs a user into the control panel based on the passed email and password |
remote any |
logout()
Logs out the current user |
package void |
setCurrentUser([any user])
Sets the user variable in the session scope |
| Methods inherited from class lucee.Component |
|---|
|
| Method Detail |
|---|
remote any checkAuth()
package struct getCurrentUser()
package boolean isLoggedIn()
remote any login([string email], [string password])
email
password
remote any logout()
package void setCurrentUser([any user])
user
|
PIT Control Panel 1.0 | ||||
| FRAMES |


Grey Matter Fundamentals is a 2.5 day, instructor-led, hands-on course designed to bring any technical practitioner from “What’s a service mesh?” to “I wield Grey Matter”.
Service mesh fundamentals
Grey Matter core features
How to install Grey Matter
How to deploy a new service into Grey Matter
How to configure and customize Grey Matter
Any technical practitioner involved in the ideation, architecture, development, deployment, and maintenance of software services, including Cloud Administrators, Linux Administrators, Architects, Operations, DevOps, and Software Engineers.
You’ll be learning from Daniel Cox, Zoe McCormick, and Kait Moreno, three affable Decipherers with their hands in the source code.
What is a service mesh?
Grey Matter Features
Grey Matter Installation
Launching a machine
Installing prerequisites
Minikube setup
Grey Matter configuration
Helm overrides
Decipher Helm repository
Grey Matter installation
Verifying the deployment
Troubleshooting an installation
Grey Matter Service Deployment
Download the latest Grey Matter CLI
Configuring the Grey Matter CLI
Launching a new service
Kubernetes configuration
Grey Matter sidecar configuration
Cluster
Domain
Listener
Shared Rules
Route
Proxy
Review
Grey Matter edge configuration
Edge Cluster
Edge Shared Rules
Edge Route (for route with trailing slash)
Edge Route 2 (adds missing trailing slash)
Catalog service configuration
Troubleshooting a deployment
Mesh Configuration
Discovery mechanisms
Kubernetes
Consul
AWS Elastic Container Service (ECS)
Flat file
Securing the mesh with role-based access control (RBAC)
Securing impersonation
Observables, metrics, and auditing
Multi-mesh communication
Grey Matter Data
Introduction
Basic usage
Security model
Bring Your Own Problems (BYOP)


2D HTML5/Javascript Canvas Experiments (mostly works in progress / aka unoptimized):
*** 80 circle sine + glow, + compacted
*** Sprite scroller, + sine path, + rasterbar,
+ variable sine amplitutde + static bitmap
*** Large sprite scroller + moving background bitmap
*** Rose curve scroller


The Server-Side Languages course examines the benefits of a server-side scripting language to heighten human-computer interaction with web content. In this course, students will learn how to take their existing knowledge of static-based web content and implement a server-side scripting language to develop a more robust web application. By implementing server-side languages within standards-compliant HTML web pages, students will be able to deploy dynamic content to further the level of interaction between client and server communication.
LINK: https://assethub.fso.fullsail.edu/assethub/LateWorkPolicy_6b109e3f-b947-4f25-a7ed-e77b2b2a716d.pdf


Filtering
RSpec supports filtering examples and example groups in multiple ways, allowing you to run a targeted subset of your suite that you are currently interested in.
Filtering by Tag
Examples and groups can be filtered by matching tags declared on
the command line or options files, or filters declared via
RSpec.configure
, with hash key/values submitted within example group
and/or example declarations. For example, given this declaration:
RSpec.describe Thing, :awesome => true do
it "does something" do
# ...
end
end
That group (or any other with :awesome => true
) would be filtered in
with any of the following commands:
rspec --tag awesome:true
rspec --tag awesome
rspec -t awesome:true
rspec -t awesome
Prefixing the tag names with ~
negates the tags, thus excluding this
group with any of:
rspec --tag ~awesome:true
rspec --tag ~awesome
rspec -t ~awesome:true
rspec -t ~awesome
Filtering by Example description
RSpec provides the --example
(short form: -e
) option to allow you to
select examples or groups by their description. All loaded examples
whose full description (computed based on the description of the example
plus that of all ancestor groups) contains the provided argument will be
executed.
rspec --example "Homepage when logged in"
rspec -e "Homepage when logged in"
You can specify this option multiple times to select multiple sets of examples:
rspec -e "Homepage when logged in" -e "User"
Note that RSpec will load all spec files in these situations, which can incur considerable start-up costs (particularly for Rails apps). If you know that the examples you are targeting are in particular files, you can also pass the file or directory name so that RSpec loads only those spec files, speeding things up:
rspec spec/homepage_spec.rb -e "Homepage when logged in"
rspec -e "Homepage when logged in" spec/homepage_spec.rb
Note also that description-less examples that have generated descriptions (typical when using the one-liner syntax) cannot be directly filtered with this option, because it is necessary to execute the example to generate the description, so RSpec is unable to use the not-yet-generated description to decide whether or not to execute an example. You can, of course, pass part of a group's description to select all examples defined in the group (including those that have no description).
Filtering by Example Location
Examples and groups can be selected from the command line by passing the file and line number where they are defined, separated by a colon:
rspec spec/homepage_spec.rb:14 spec/widgets_spec.rb:40 spec/users_spec.rb
This command would run the example or group defined on line 14 of
spec/homepage_spec.rb
, the example or group defined on line 40 of
spec/widgets_spec.rb
, and all examples and groups defined in
spec/users_spec.rb
.
If there is no example or group defined at the specified line, RSpec will run the last example or group defined before the line.
Focusing
RSpec supports configuration options that make it easy to select
examples by temporarily tweaking them. In your spec_helper.rb
(or
a similar file), put this configuration:
RSpec.configure do |config|
config.filter_run :focus
config.run_all_when_everything_filtered = true
end
This configuration is generated for you by rspec --init
in the
commented-out section of recommendations. With that in place, you
can tag any example group or example with :focus
metadata to
select it:
it "does something" do
# becomes...
it "does something", :focus do
RSpec also ships with aliases of the common example group definition
methods (describe
, context
) and example methods (it
, specify
,
example
) with an f
prefix that automatically includes :focus =>
true
metadata, allowing you to easily change it
to fit
(think
"focused it"), describe
to fdescribe
, etc in order to temporarily
focus them.
Options files and command line overrides
Command line option declarations can be stored in .rspec
, ~/.rspec
, or a custom
options file. This is useful for storing defaults. For example, let's
say you've got some slow specs that you want to suppress most of the
time. You can tag them like this:
RSpec.describe Something, :slow => true do
And then store this in .rspec
:
--tag ~slow:true
Now when you run rspec
, that group will be excluded.
Overriding
Of course, you probably want to run them sometimes, so you can override this tag on the command line like this:
rspec --tag slow:true
Precedence
Location and description filters have priority over tag filters since
they express a desire by the user to run specific examples. Thus, you
could specify a location or description at the command line to run an
example or example group that would normally be excluded due to a
:slow
tag if you were using the above configuration.
RSpec.configure
You can also store default tags with RSpec.configure
. We use tag
on
the command line (and in options files like .rspec
), but for historical
reasons we use the term filter
in RSpec.configure
:
RSpec.configure do |c|
c.filter_run_including :foo => :bar
c.filter_run_excluding :foo => :bar
end
These declarations can also be overridden from the command line.


Wireframes
Here's the layout of Reddit's site. They got rid of all of the clutter, so you pretty much have no choice but to do what they want you to do - click on the links of the posts. It's simplicity is its beauty really, but it can't capture everyone's attention. That's probably why Redditors are often similar types of people. They want the info, not the frills and lace.
AskMen's website is almost the opposite of Reddit, but I still appreciate that both are simple and efficient. There's not much to do but click on a link to an article in this site as well. The bif difference here, though, is that AskMen's links are represented by pictures rather than text. In fact, the entire site is filled with media to capture the attention. This is probably why AskMen can cater to all types of people. The only problem - it's a bit much for your eyes and it's overwhelming, for me at least.
Tiny Buddha also seems a bit overwhelming because there are containers all over the place!  The purpose of the website is inspiration and invoking positive energy/feelings. The content does just that, but the design isn't so much conducive to it. I think with a simpler design than they have already, their mission would be better served.


MARYAM HADI
Home
Portfolio
About
Get a quote!
Get a Quote!
This is my form. Please fill it out. It's awesome!
Name
Email
Message
Do Not Fill This Out
Wufoo
Designed
About content can go here


Alicia Keys to return as Grammy Awards host in 2020
Keys was first woman to host since 2005
by Faith Karimi, CNNLOS ANGELES - Alicia Keys is hosting the Grammy Awards again next year.
Her 2020 return for the 62nd Annual Grammys puts her in rare company after she became the first female to host the awards in 14 years. Before that, the last woman was Queen Latifah in 2005.
"At first, I did think last year was a one-time thing, but when the opportunity came back around, there was no question about returning as host," Keys told Billboard in a statement. "Last year was such a powerful experience for me. Not only did I feel the love in the room, but I felt it from around the world and it confirmed the healing and unifying power of music."
The show will take take place on January 26 at the Staples Center in Los Angeles.
This year, Keys said her status as a regular award receiver helped with her hosting duties.
"I know what it feels like to be on that stage, and I'm going to bring that vibe and energy," the entertainer said.
On Wednesday, Keys had some fun with the announcement, posting a video of herself as the current Alicia Keys discussing hosting with Alicia Keys from February 2019.
"The people wanna know: How ya gonna top this Alicia, c'mon!," last year's version of Keys says in the video.


These recognition results come from the Medicare Reimbursement Semantic Data Collection.
CPT copyright 2012 American Medical Association. All rights reserved. CPT is a registered trademark of the American Medical Association.
Each recognition result has the following fields:
| Property Name | Type | Description |
|---|---|---|
| code | String | The CPT / HCPCS code |
| description | String | A description of the procedure |
| costs | Object |
A mapping from localities to the US dollar amount reimbursed by Medicare. Localities are generally the capitalized
two-letter abbreviations for states, with the following exceptions:
|
{ "com.solveforall.recognition.healthcare.medicare.Procedure": [ { "code": "86902", "description": "Blood type antigen donor ea", "costs": { "max": 5.22, "median": 7.05, "min": 0, "CA (North)": 5.22, "CA (South)": 5.22, "HI": 5.22, ..., "MO": 5.22, "MO (General American)": 5.22, "NE": 2.15, "IL": 5.22, "NY (Empire)": 5.22, "NY (West)": 5.22, "NY (GHI)": 5.22, "ME": 5.22, "MA": 5.22, ... } } ] }


June 10, 2020 at 9 am
Today I received an email stating I was awarded the GHC Student
Scholarship to attend the 2020 Virtual Grace Hoppe Celebration. My
younger sister was not thrilled that I will not be attending it in
person, but I am just excited I was selected.
I have recently created a LinkedIn account. If you like to follow me
just click on my pic. 🤗
June 24, 2020 at 9 am
Today I participated in the first virtual GHC Sholar Series. It was
the title "Own Your Story" and it was an hour-long webinar presented
by Wogrammer. What was discussed was how women in STEM never really highlight
what we have done and accomplished, but rather highlight another
person success. I do have to admit that every topic that was discussed
I have and still go through.
If you would like to view the PowerPoint slides just click on the pic
to the left. 🤗
Created By Maria Martinez


×

Thermometer Setup
Thermometer Setup
Graph Scale
Fahrenheit
Celsius
Change Password
New Password
Type Again
Clear all temperature data
Clear network credentials
Remote Access Log
Peer Status
Back


As the battle proceeded Cody and Alesha approached the monsters leader,and the three are in a 2 vs 1 umm whatever you call a duel but it's not just two people fighting. "I must say princess"said the monsters leader "i'm impressed by your sword fighting skills,never though a princess would pot her own life in danger and..."the commander looked at cody "you ... "the commander stopped "what"said cody why do you look at me like that?"


| Table 1 |
Source of data for each step (Fig. 1) in the burden of disea ... |
| Table 2 |
Minimum, median and maximum average annual number of extreme ... |
| Table 3 |
Minimum, median and maximum daily rate of deaths, hospitaliz ... |
| Table 4 |
Central estimates of historical (1971–2000) and projected (2 ... |
| Table 5 |
Characterization of uncertainty* by source in the estimates ... |


White Birch Resort
on Blackduck Lake
5-Star All-Inclusive Lakefront Luxury Resort
for all occasions year-round
White Birch Resort offers luxury vacation homes and cabin accommodations overlooking Blackduck Lake and the “lazy” knee-deep Blackduck River, surrounded by awe-inspiring panoramic views of deep green and blue landscapes. Experience the unspoiled natural beauty of birch, spruce, maples, vibrant sunsets and calm summer breezes.
Originally established in 1932, this beautiful 5-star lakefront resort is proud to offer an amazing experience like no other resort in Minnesota. Many guests say they feel as though they are in their own private custom lake home!
Enjoy fishing, kayaking, canoeing, boating and swimming in the summer, and ice fishing, snowmobiling, snowshoeing and cross-country skiing in the winter. More than 30 all-inclusive on-resort experiences and activities are offered for guests to enjoy.
The area around White Birch Resort offers over 90 local attractions and activities including golfing, hiking, biking, skiing, snow tubing, sightseeing, shopping and much more. Conveniently located just minutes north of Bemidji, 3½ hours north of Minneapolis, 3 hours east of Fargo and 1 hour south of Canada, White Birch Resort is close to the surrounding communities of Blackduck, Bemidji, Upper Red Lake, Park Rapids, Grand Rapids and Walker.
Come experience everything White Birch Resort has to offer:
- Unmatched 5-star luxury lake homes and cabins that can accommodate up to 22 people
- Only resort offering private hot tubs at each home
- Located on a “Top 10 Best” walleye fishing lake
- Over 30 on-resort activities included FREE
- Warm personalized service on site 24/7
- Best rates for 5-star small resort accommodations and activities
- Open year-round
Featured accommodations
Home 1
- 6 bedrooms
- 14–22 people
- Accessible
- Hot tub
- Lakefront views
- $400–$600/night
“This house was so comfortable! It made our vacation really special!”
—Jean V., Fargo, N.D.
Home 5
- 4 bedrooms
- 10–15 people
- Accessible
- Hot tub
- Old-fashioned swing on porch
- $300–$400/night
“So luxurious being right on the lake! House was very comfortable and the decor was relaxing.”
—Dan H., Edina, Minn.
Home 19
- 4 bedrooms
- 12–16 people
- Accessible
- Roomy and inviting
- $425/night
“This house was perfect for our family reunion! We’ll be back!”
—Sam F., Milwaukee, Wis.


2012
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
2011
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes
Liquid error: No such file or directory - /Users/saschabates/github/brattyblog/_includes


Phileas Fogg stopped off in what is now Mumbai on his voyage around the world, but at which club in the city did Nicolas Anelka start his managerial journey?
?
When Cuco Martina scored against Arsenal this season he became the first representative of which national team to score in the Premier League?
In which country would you find the world's largest football stadium (by capacity)?
Who finished the 2014-15 Ligue 1 season as top scorer?


Check out my latest blog post!
The Git Essentials
9/15/2015
More blog posts below!
Here lies another post
date/date/date
Here lies another post
date/date/date
Here lies another post
date/date/date
Here lies another post
date/date/date
Here lies another post
date/date/date
If you have any questions or comments, please feel free to contact me at my email. I'm always looking for ways to improve!


As a CSS novice, I found myself spending hours adjusting the positioning for the containers in my website. None of the book definitions of relative, absolute, fixed, and static positioning really made sense to me until I started playing around them myself, and even then, hours flew by. In this blog, I want to explain CSS positioning in a way that might help clear some confusion for another beginner like me. If you are interested, please keep reading!
1. Let's start with static positioning:
.container-1 {
position: static;
}
Let's say we were to set container-1's positioning to static. Above is how you would write the CSS code. Static positioning will place the container at its default positioning. Just always remember that static equals default. The container will stay with the normal page flow and not move.
2. Relative Positioning:
.container-1 {
position: relative;
top: -100px;
left: -100px;
}
Now you decided that you want to move container-1 elsewhere. Let's say you want to move it up 100 pixels and to the left 100 pixels. This is when relative positioning comes into play. By setting the position to relative, you are telling your container to move a certain number of pixels from its original position.
3. Absolute Positioning:
.container-1 {
position: absolute;
top: 0 px;
left: 0 px;
}
Let's say your container is actually the logo of your company, and you want it place in the top left corner of your website. You could use relative positioning, and figure out the number of pixels it would have to move from its original position to be in that corner. However, someone viewing your page through a bigger monitor screen may still not see your logo in the corner. This is when absolute positioning is useful. Absolute positioning will take your container out of the normal flow of the page and position it according to the edges of the entire scrollable page. By assigning the top and left to be 0 px, your container will absolutely ALWAYS be 0 pixels from the top and left of any page, allowing it to be stuck right on the corner. Absolute can be useless when you are not cornering an element since screen sizes vary.
4. So what if the parent element position is relative but the child element position is absolute?
This will allow you to position the child element absolutely within the parent element. If your child element was an image while the parent element is a container, the image could be placed in the center of the parent element and will always stay in the center of the parent no matter what.
5. Last but not least, Fixed Positioning:
Fixed positioning is probably the easiest to understand. In fact, you can see a clear example of it right here on my blog post! If you look below, you can see my social media nav bar with my Twitter, Facebook, etc buttons. Now, try scrolling up and down my blog post. Do you notice that the bar always remains in the same position, or fixed? This is exactly what fixed positioning allows you to do. Fixed positioning will place your container at a certain spot and will always be in that spot no matter how far you scroll around.
Well, that's it for now! I hope this cleared some things up for you.


{% extends "tutorial.html" %} {% load mixin from templatefilters %} {% block headauthor %}Umar Hansa{% endblock %} {% block pagebreadcrumb %}{{ tut.title }}{% endblock %} {% block browsersupport %} Operaunsupported Internet Explorerunsupported Safarisupported Firefoxunsupported Chromesupported {% endblock %} {% block iscompatible %} {% endblock %} {% block head %} {% endblock %} {% block html5badge %} {% endblock %} {% block share_image %} {% endblock %} {% block content %}
Improve your code editing experience with edit locations & go-to column, discover registered event listeners with getEventListeners(), learn about some minor DevTools UI enhancements all in the latest edition of the DevTools digest.
Stack traces can now be associated with the asynchronous source of an event. There is support for timers, animation frames, XHRs, event listeners and more. We'll soon be posting a full writeup of asynchronous call stacks to HTML5 Rocks. (Don't forget to check 'Enable support for async stack traces' in DevTools experiments.) [crbug.com/272416]
When viewing the DOM of a page, it's not always obvious what elements have JavaScript event listeners registered on them, if any. All registered event listeners on the window
object (or any DOM node for that matter) can now be retrieved via getEventListeners in the Console panel as part of the Command Line API. [crbug.com/336472]
Sources panel introduces the concept of editing locations which are essentially cursor positions in the code editor. Alt-
takes you to previous editing locations (the piece of code you were previously at) and Alt+
goes forward. [crbug.com/281507]
Auto suggest values for the CSS property box-shadow
have been updated to include the keyword of none
. [crbug.com/332355]
Go to a line number at a specific column using :line:column
in the Sources panel ‘Search by filename’ (Ctrl + O or Cmd + O) dialogue box. [crbug.com/337909]
Any empty space on the main DevTools toolbar now acts as a valid resize handle. [crbug.com/304730]
The network bars which were originally formed from images have now been created in CSS making them resolution independent and retina friendly. [crbug.com/330659]
Unknown arguments passed to the meta viewport tag are no longer displayed as errors in the console, but rather, warnings meaning less noise for you to sift through. [crbug.com/332794]
The Styles pane cog to cycle through color formats is now removed, though you can still change this preference in DevTools settings. [crbug.com/333840]
The console tab in the drawer now correctly remembers its state correctly after a reload. [crbug.com/328551]
A link to the mobile emulation documentation has been added into DevTools to help explain more on emulation and Text autosizing, a tooltip also appears for the text autosizing checkbox. [crbug.com/319092]
You can now view the IP address of a host in the Network panel resource view. [crbug.com/255602]
Thanks for reading. You can try these features out in Canary, alternatively many of the features mentioned in the December edition are now available in Chrome stable!
{% endblock %}


This is a second of two blog posts about Reactive Programming in Scala. The first blog post about Reactive Programming: Try versus Future covered reactive programs resulting in one value. This second blog post covers reactive programs resulting in many (zero or more) values.
Remark: The types that are used in this blog post exist in the Scala Adaptor for RxJava library. We refer to this library as the RxScala library. In contrast with the previous blog post, this blog post puts less emphasis on how to define computations. It puts more emphasis on how to use computations.
The Notification
type
The Notification
type plays a role similar to the Try
type, but
it is not considered as a computation type (although it could be).
Just like Try
is a type that is similar to Option
,
Notification
is a type that is similar to Iterable
(but they both also somehow deal with failure).
The Notification
trait represents a value that is
a next value, an error value or a marker value
indicating that there are no more values.
An instance of Notification[Z]
is
an instance of OnNext[Z]
holding a value of type Z
,
an instance of OnError[Z]
holding an error of type Throwable
or an instance of OnCompleted[Z]
holding no value at all.
Code that makes use a value nz
of type Notification[Z]
,
typically, makes use of a match
on nz
, which, you can think of as code that
- in a synchronous (blocking) way, pulls a
next value, error value or marker non-value
out of
nz
.
In fact, this blog post is rarely uses notifications directly in this way.
Much in the spirit of reactive programming,
and as the names of the classes extending Notification
suggest,
notifications values are at their best when used as values that
are pushed rather than pulled.
Notifications values can, just as computations of type Try
, be materialized.
This blog post does not go into details.
Computations of type Observable
A value of type Notification[Z]
that is defined as a def
is essentially the same as a value of type Unit => Notification[Z]
.
The dual of such a value, obtained by reversing the arrow =>
,
is a value of type Notification[Z] => Unit
.
This dual is, in a way, the same as a value of type Observer[Z]
since the Observer[-Z]
trait of RxScala has three methods
def onNext(value: Z): Unit
def onError(error: Throwable): Unit
def onCompleted(): Unit
In a way (as illustrated in the following section)
an Observable[Z]
value is the dual of an Observer[Z]
value,
and, as such, the bi-dual of a Notification[Z]
value.
More precisely, in a way, Observable[Z]
is the same as Observer[Z] => Unit
,
which, in a way, is the same as (Notification[Z] => Unit) => Unit
.
This bi-duality turns out to transform synchronous values of type Notification
into asynchronous computations of type Observable
.
Materializing failure and latency using mkObservable
Just as the code in the previous blog post did for Future
the code below materializes failure and latency for Observable
def mkObservable[Z](sz2u: Subscriber[Z] => Unit): Observable[Z] =
Observable(sz2u)
The Observable
companion object of the RxScala library has an apply
method
that we use (in a trivial way) to define mkObservable
.
The definition of mkObservable
is given for consistency reasons only
(cfr. mkTry
and mkFuture
of the previous blog post).
We did not define Subscriber[Z]
yet. Below is its definition
trait Subscriber[-Z] extends Observer[Z] with Subscription
So, a subscriber is just a special observer.
When considering mkObservable
as the only way to
make an observable, in a way, Observable[Z]
becomes the same as Observer[Z] => Unit
.
An observer can subscribe to an observable as shown by the following method of the Observable[Z]
class below
def subscribe(observer: Observer[T]): Subscription
We did not define Subscription
yet. It is a trait with the following methods
def isUnsubscribed: Boolean
def unsubscribe(): Unit
The main reason why subscriptions exist is because observables push many values to subscribed observers and there should be a way for subscribed observers to unsubscribe from a subscription so that no more values are pushed to them.
It is important that you understand the usage of mkObservable
- you can make an observable by defining what it pushes to subscribed observers
Not surprising, a computation of type Future
can be transformed to a computation
of type Observable
using this idea
def future2observable[Z](fz: => Future[Z]): Observable[Z] =
Observable { sz =>
fz.register {
case Success(z) =>
sz.onNext(z)
sz.onCompleted()
case Failure(t) =>
sz.onError(t)
}
}
The future2observable
code makes use of a call by name parameter fz
.
The example below illustrates how to use future2observable
to transform a computation
of type Try
to a computation of type Observable
def try2observable[Z](tz: => Try[Z]): Observable[Z] =
future2observable(try2future(tz))
The try2future
function for computations of type Try
could naturally be reused.
The example below illustrates how to use try2observable
def mkObservableTry[Z](block: => Z): Observable[Z] =
try2observable(mkTry{ block })
The mkTry
function for computations of type Try
could naturally be reused.
The mkObservableTry
code makes use of a call by name parameter block
which you can think of as code that
on the one hand, can succeed or can fail and,
on the other hand, can take some time to be evaluated.
There is one concept that we did not explain yet.
In the previous blog post
the type Promise[Z]
is used in the implementation of many methods.
We also pounted out that it is a useful type on its own.
There exists a corresponding concept that is formalized as
trait Subject[-Z] extends Observer[-Z] with Observable[+Z]
It is possible, and often useful, to define observables directly in terms of
various kinds of subjects (Subject
is a trait).
This blog post does not go into details.
How are computations of type Future
described?
Describing Computations of type Observable
Here are four computations of type Observable
that are described using future2observable
scala> :paste
// Entering paste mode (ctrl-D to finish)
lazy val tryObservableFooBar05: Observable[String] =
future2observable(tryFutureFooBar05)
lazy val tryObservableFooBar06: Observable[String] =
future2observable(tryFutureFooBar06)
lazy val tryObservableFooBar07: Observable[String] =
future2observable(tryFutureFooBar07)
lazy val tryObservableFooBar08: Observable[String] =
future2observable(tryFutureFooBar08)
// Exiting paste mode, now interpreting.
tryObservableFooBar05: rx.lang.scala.Observable[String] = <lazy>
tryObservableFooBar06: rx.lang.scala.Observable[String] = <lazy>
tryObservableFooBar07: rx.lang.scala.Observable[String] = <lazy>
tryObservableFooBar08: rx.lang.scala.Observable[String] = <lazy>
The examples make use of computations of type Future
from the previous blog post
How are computations of type Observable
executed once they are described?
Executing Computations of type Observable
For the purpose of this series of blog posts,
executing a computation of type Observable
can be as simple as
subscribing an observer that prints the values pushed to it, or
prints the message of an error pushed to it, or
prints an indication that no more more values are pushed.
def subscribe[Z](oz: Observable[Z]): Subscription =
oz.subscribe(new Observer[Z] {
override def onNext(z: Z) = print(s"$z")
override def onError(t: Throwable) = print(s"${t.getMessage}")
override def onCompleted() = print("completed")
})
We have called the method subscribe
instead of execute
because it corresponds to a subscribe
method of Observable
that,
in this case , also returns a subscription that can be unsubscribed.
Below, the four computations of type Observable
are executed using subscribe
scala> { subscribe(tryObservableFooBar05) ; work('W', 150) }
B54.F194.W192.B54.F194.B54.B54.W192.F194.B54.B54.F194.B54.W192.B54.F194.B54.B54.W192.
F194.F194.W192.F194.W192.F194.F194.W192.fooOkbarOkcompletedW192.W192.W192.
scala> { subscribe(tryObservableFooBar06) ; work('W', 150) }
B54.F196.W192.B54.B54.F196.B54.W192.F196.B54.B54.F196.W192.B54.B54.F196.B54.W192.B54.
F196.W192.F196.F196.W192.F196.W192.F196.fooKoW192.W192.W192.
scala> { subscribe(tryObservableFooBar07) ; work('W', 150) }
B196.F54.W192.B196.F54.B196.W192.B196.F54.B196.B196.W192.F54.B196.B196.F54.B196.W192.
B196.F54.W192.F54.F54.W192.F54.W192.F54.barKoW192.W192.W192.
scala> { subscribe(tryObservableFooBar08) ; work('W', 150) }
B54.F197.W192.B54.F197.B54.W192.B54.F197.B54.B54.W192.F197.B54.B54.F197.B54.W192.B54.
F197.W192.F197.F197.W192.F197.W192.F197.barKo and fooKoW192.W192.W192.
Transforming futures, pushing one value, to (a special kind of) observables, potentially pushing many (zero or more) values, is, of course, not the end of the story about observables.
More Computations of type Observable
The simple observables defined below can serve as building blocks for defining more complex observables
def zeroObservable(): Observable[Nothing] =
mkObservable { sn =>
}
def errorObservable[Z](t: Throwable): Observable[Z] =
Observable { sz =>
sz.onError(t)
}
def nextObservable[Z](z: Z): Observable[Z] =
Observable { sz =>
sz.onNext(z)
}
def completedObservable(): Observable[Nothing] =
Observable { sn =>
sn.onCompleted()
}
def oneObservable[Z](z: Z): Observable[Z] =
Observable { sz =>
sz.onNext(z)
sz.onCompleted()
}
The meaning of the simple observables above is almost trivial: they push nothing resp. an error resp. a value, resp. a completed marker resp. a value and a completed marker to subscribed observers.
The following method shows how to define observables that push many values.
It uses a helper function subscriber2observable
because directly subscribing
the subscriber sz
below to the observable oz
below does not work:
a new observer, wrapping the subscriber, needs to be subscribed.
def subscriber2observer[Z](sz: Subscriber[Z]) =
new Observer[Z] {
override def onNext(z: Z) = sz.onNext(z)
override def onError(t: Throwable) = sz.onError(t)
override def onCompleted() = sz.onCompleted()
}
implicit class ObservableOps[Z](oz: Observable[Z]) {
def startingWith(zs: Z*) =
Observable[Z] { sz =>
zs.foreach { z => sz.onNext(z) }
oz.subscribe(subscriber2observer(sz))
}
// ...
First all zs
are pushed to subscribed observers
and after that the observable oz
continues pushing
values to them.
scala> subscribe(oneObservable(4).startingWith(1, 2, 3))
1234completed
Computations of type Observable
of the RxScala library
There are various ways to define observables available in the RxScala library.
Below is an example, using from
, that
can be used to transform any iterable, which is pull based,
to an observable, which is push based
scala> lazy val oneTwoThreeFour = from(List(1, 2, 3, 4))
oneTwoThreeFour: rx.lang.scala.Observable[Int] = <lazy>
You can subscribe to it (ignoring the subscription)
scala> { subscribe(oneTwoThreeFour) ; () }
1234completed
This transformation from iterables to observables is not as trivial as it looks: at any moment subscribed observers should be able to unsubscribe.
Below is an example, using interval
, that defines
a ticker that is ticking every 100
milliseconds.
scala> lazy val ticker = interval(100 millis)
ticker: rx.lang.scala.Observable[Long] = <lazy>
You can subscribe to it and unsubscribe from it when you are not interested in receiving further ticks any more.
scala> :paste
// Entering paste mode (ctrl-D to finish)
{
val subscription = subscribe(ticker)
Thread.sleep(600)
subscription.unsubscribe
}
// Exiting paste mode, now interpreting.
012345
So what about bnd
and and
?
flatten
is your friend
The story is somewhat different here and we do not go into all details.
For observables, the method bnd
below which is defined in terms of the RxScala
library method flatten
(which, non-deterministically, merges observables of observables)
is all we need.
def bnd[Y](z2oy: Z => Observable[Y]): Observable[Y] =
Observable[Observable[Y]] { ooy =>
oz.subscribe(new Observer[Z] {
override def onNext(z: Z) =
ooy.onNext(z bind z2oy)
override def onError(t: Throwable) =
ooy.onError(t)
override def onCompleted() =
ooy.onCompleted()
})
} flatten
To make things interesting from a merge point of view we define
the following verbose version of interval
def verboseInterval(t0: Long, x: Long, n: Int) =
interval(x*100 millis).take(n) bnd { y =>
val millis = (System.currentTimeMillis - t0) / 1000.0
println(f"at ${millis}%.3f interval($x) emits $y")
nextObservable(y)
}
Here is an observable, this time defined as a def
,
to take the current time into account every time it is executed,
that uses bnd
to merge three intervals as they are pushed
to subscribed observers
scala> :paste
// Entering paste mode (ctrl-D to finish)
def mergedIntervals(t: Long) =
from(List(3, 2, 1)) bnd { x =>
verboseInterval(t, x, 2) bnd { y =>
oneObservable("")
}
}
// Exiting paste mode, now interpreting.
mergedIntervals: (t: Long)rx.lang.scala.Observable[String]
It is instructive to try to understand the output of executing the following computation
scala> :paste
// Entering paste mode (ctrl-D to finish)
{
subscribe(mergedIntervals(System.currentTimeMillis))
Thread.sleep(3000)
}
// Exiting paste mode, now interpreting.
at 0.102:interval(1) emits 0
at 0.202:interval(2) emits 0
at 0.202:interval(1) emits 1
at 0.302:interval(3) emits 0
at 0.402:interval(2) emits 1
at 0.602:interval(3) emits 1
An example: scanning
We end with a common use case: scanning observables.
For example:
an observable that pushes "1" "2" "3" "4" "5"
,
when scanned using add
, a swapped, curried version of +
, becomes
an observable that pushes "1" "12" "123" "1234" "12345"
.
def scanning[Y](y: Y)(z_2_y2y: Z => Y => Y): Observable[Y] =
mkObservable[Y] { sz =>
var accY = y
oz.subscribe(new Observer[Z] {
override def onNext(z: Z) = {
accY = z_2_y2y(z)(accY) ; sz.onNext(accY)
}
override def onError(t: Throwable) = {
sz.onError(t)
}
override def onCompleted() = {
sz.onCompleted()
}
})
}
We used a var accY
as an accumulator. You may argue: how ugly!
Well, in a way, using a var
as an internal implementation detail is not ugly at all.
Erik Meijer (the brain behind the Rx extensions of .NET, upon which RxJava
and RxScala are based) calls himself “both a functional thinker and an imperative hacker”.
Here is a typical scanning
example
scala> :paste
// Entering paste mode (ctrl-D to finish)
def add(s: String)(t: String): String = t + s
lazy val scannedObservable =
from(List("1", "2", "3", "4", "5"))
.scanning("")(add)
// Exiting paste mode, now interpreting.
add: (s: String)(t: String)String
scannedObservable: rx.lang.scala.Observable[String] = <lazy>
and here we run it
scala> { subscribe(scannedObservable) ; () }
112123123412345completed


- Applications Tab
- Finding Applications
- Workflow Tab
- Sessions Tab
- Typical Application Manager’s Layout
- Application-Specific Managers
- Appendices
The Applications page is the main interface for locating your applications and analyzing their performance. Unravel supports both ad-hoc applications, and repeatedly running workflows or data pipelines.
- Ad-hoc applications are Hive queries, MapReduce jobs, Spark applications, Impala queries, and so on; these are generated by end user tools (such as BI tools like Tableau, Microstrategy, etc.) or submitted via CLI.
- Repeatedly running workflows or data pipelines are
created using
cron
or schedulers like Oozie, AirFlow, or ETL tools like Informatica, Pentaho and others.
Unravel currently supports the the following application frameworks:
- Cascading/Pig
- Hive (on Map-Reduce)
- Kafka
- Impala
- Map-Reduce
- Tez
- Hive (on Tez)
- Spark
- Native
- Spark Streaming
- SparkSQL
(lightbulb) Your application’s performance and reliability depends on several factors such as quality of the code, types of joins used, configuration settings, data size, scheduler settings, contention with other applications, etc. It takes significant expertise and effort to get to the root cause(s) of an application’s problems. Unravel’s Intelligence Engine provides insights into your application’s run to help resolve it’s problems/inefficiencies. These insights are called events. For more information about events, see the Event Panel Examples.
The Applications Page has three tabs:
- Applications,
- Workflows, and
- Sessions
confluence-information-macro has-no-icon confluence-information-macro-note
Note
Click here for common features used throughout Unravel’s UI.
Applications Tab
By default this tab lists all applications for the past week. However, this view initially search results are ordered by the most recent start time. To reorder the results by another property, click the appropriate header in the results table.
Finding Applications
You can search for your application(s) in a variety of ways:
- The left sidebar allows you to filter you App Name, App type, Status, Tags (if any), Queue, User, Cluster, **Duration **(Min and Max duration), and **Number of Events. **
- By time period, including specifying custom range by dates and times, using the date picker or scroll by page (1).
If the job is part of a Hive query, Pig script, or a Workflow, a link to it is noted in the job’s Go To column (2). Clicking on the application (3) takes you to the application’s program manager (APM), i.e., MapReduce, Impala.
Workflow Tab
The layout of this window mirrors the Applications tab above. When there are no workflows tagged, the table is empty. You can use the date picker to select a date and time range. You can search for a workflow by name, enter the string in the search box; any user or workflow name matching or containing the string is displayed. Click on the workflow name to bring it up in the Workflow Manager Application Manager.
Click Add Workflow for a popup window listing all, if any, untagged workflows. The number of untagged workflows is noted in the title bar. Click on the radio button next to the workflow(s) you wish to add. Click Add Selected Workflows. Your changes are lost when closing the window before clicking Add Selected Workflows.
Sessions Tab
confluence-information-macro confluence-information-macro-information
This Report does not work with Postgres. You must be using MySQL and have the OnDemand package installed.
Sessions allows you to run your application expressly to tuneits performance for:
- efficiency: decrease the application’s time (end-to end duration) and resources (shortening duration is first priority), or
- reliability: in attempting to reduce resources Unravelprioritizes memory allocation to ensure the application doesn’t fail due to “out of memory” exceptions.
Why use sessions when Unravel already offers insights and recommendations on an application’s run?
- You direct the tuning goal.
- You can provide multiple runs of an application providing a larger data pool for Unravel to analyze.
- You can have Unravel apply the recommendations for you and run the newly configured application.
- You can see the effects, both positive and negative, the tuning has on an applications run.
- You can compare runs configurations.
- You can repeatedly tune the application until Unravel has no more recommendations.
- Your session is saved and can be run again, e.g., new runs added, cluster configuration changed.
You can tune:
- Spark
- Hive on MapReduce
Sessions can serve simply as a tool to compare two runs of the same application.
The Sessions tabs opens displaying all current sessions sorted on Sessions Name in ascending order. The Start Time is the time of the latest application run. Number of Apps is the number of runs inside the Session. Some of these runs were added when the Session was created and some were created by Sessions when it applied it recommendations.
The four (4) KPI’s Duration, IO, vCore Seconds, and Memory Seconds are essentially what the fine tuning hopes to minimize. The column contains a trend line which plots all the apps (vertices) contained in the Session. Beneath the trend line, the average and the best value is noted. For example, VCore9, has 3 apps , for Duration the average is 19m 24s and the best time was 38.31% better than this. You can not draw the conclusion that the same app performed best for each KPI. Last the Cluster ID is listed. You can sort the table on Session Name, Start Time and Cluster. Click on the edit button to edit the session.
You can search for a session by name. Enter the string in the search box; any session name matching or containing the string will be displayed.
Creating a Session
You can uses sessions
- manually - where you actively control the analysis and application of recommendations, or
- automatically - where sessions performs the iterations without you intervention until it reaches the maximum allowed runs or finds no more recommendations
Manual Session
Click Create Session. ** You must name your session, it does not have to be unique but we recommend you do so. Chose the **Application Type and Tuning Goal from the pull-down menu and the tuning goal. Add the App IDs **of the application(s) you want to tune you. Click **+Add another App ID to add more apps. Click to delete an App ID. Click Add to create the session.
If you are tuning a Spark App you must supply the JAR path and Class Name.
Auto Tune Session
You have the additional option to specify the maximum number of runs. If not specified, iterates continues until no recommendations are available. When specified, the iteration stops at the maximum number or lack of recommendations, whichever comes first.
**Via the Events Panel **
If an applications has events with recommendations you can create a session directly from the recommendations tab. You can create either a manual or auto tune session. Click the type of session you wish to create and session popup is filled out except for the session name.
Session
The Sessions APM layout is similar to all APMs. Instead of KPIs reflecting the Application, Sessions KPI’s are trends which graph the various runs resource usages measured when tuning, duration, IO, and resources. The example below is a session view immediately after creation.
The left tab, Applications is the list of runs; initially it is whatever was loaded when the session was created. As analysis and application of recommendations occur more runs are added.
Right Tabs
- Progress Tab - Keeps a log of all the activity. See example above.
- Trends - Expanded graphs of Duration, IO, Resources
- Compare - Allows you to compare two of the runs.
See Sessions Use Case for more information on using this feature.
Typical Application Manager’s Layout
- A black title bar notes the application type, i.e., Spark, Impala, MapReduce, Fragment, etc) and the job ID. On the right side of the title bar are glyphs for adding a comment, and to minimize or close the tile if possible. If the jobs has a parent, i.e., Hive, Pig, there will be a arrow with the parent’s type. Clicking on it brings up its APM.
- Unravel’s Intelligence Engine can provide insights into an application and may provide recommendations, suggestions and insights on how to improve the application’s run. When there are insights a bar appears immediately below the title bar. If Unravel has recommendations the insight bar is orange, otherwise it’s blue. For more information about events, see the Event Panel Examples.
- The next section contains general job information and Key Performance Indicators (KPIs) (as applicable)
- Event icon: notes the number of events the job had. No Events, instead of the box, is noted if there were none. This job has 2 events, clicking on the icon brings up a panel which contains one or more Tabs, as relevant, i.e., Recommendations, Efficiencies, Application Failure. See the Event Panel Examples.
- **Job icon: **notes the job type and status. The box is colored code to indicate as the application’s status.
- Job information: job number, owner, queue, cluster and start/stop time.
- KPIs: these vary by job type.
The last section, typically divided into two, has specific information related to job. Each Application-Specific Manager Section goes into detail about this section. If the job is composed of tasks/jobs/stages they appear on the the left under Navigation. Clicking a row brings up detailed information about it in a tile/panel below. The Auto Action/Event () column notes the number of events associated with the job/stage.
- Common Tabs:
- Errors: The Hive, MapReduce and Workflow APMs contain this tab. It lists all errors associated with the job. Like job status, the errors are color coded and number for each type (fatal, errors, warnings) are noted for each job. The top line list the number of all jobs/task. The errors are grouped by tasks/jobs and then by severity. For each job/task the total and type of errors are noted. Time, keywords (if any) and a brief message is displayed for the error. Keywords extract important details from the errors messages/log data that can help developers/operators quickly root cause issue. “No errors found” is displayed when there are none.
- Conf/Configuration: The MapReduce, Spark and Tez APMs contain this tab. It lists the configuration parameters for the task/job being displayed and their values. The parameters vary according to task/job.
- Tags: All APM’s except Pig and Cascading contain this tab. It lists the defined tag keys and associated values for the application. The example below has two tag keys, project and dept with each having one value, group11 and hr respectively.
Application-Specific Managers
Cascading and Pig Application Managers
The only difference between the two Application Managers is the job type name; otherwise they are exactly the same. The example used below is the Pig APM.
Key Performance Indicators
- Events: The number, if any, of Unravel insights for this query. See the Event Panel Examples for more information.
- Duration: Total time taken by the query.
- Data I/O: Total data read and written by the query.
- Number of Yarn Apps: The number of apps that make up the workflow.
By default the window open up displaying the Navigation and Task Attempts.
Tabs
The left Tabs:
Navigation: list of all the jobs, their status and type.
Gantt chart: Exceptions, errors, and warnings associated with this application. See here for an example.
Tags: See here for an example.
The right Tabs
Task Attempts: Displays Map and Reduce task attempts by success, failed, and killed status.The data displayed is for the entire HIVE job. To see the details for a specific MapReduce task click on the job in the Navigation tab. The Pig APM above shows the Task Attempts.
Attempts: Graphs the Map and Reduce task slot usage over the duration of the job.
Hive Application Manager
The Hive Application Manager provides a detailed view into the behavior of Hive queries. Typical users are Hadoop DBAs or application owners (engineers, BI team, analysts). You can use this view to:
- Resolve inefficiencies, bottlenecks and reasons for failure within applications.
Key Performance Indicators
- Events: The number, if any, of Unravel insights for this query. See the Event Panel Examples for more information.
- Duration: Total time taken by the application to complete execution.
- Data I/O: Total data read and written by the application.
- Number of YARN apps: The number of YARN apps making up the query.
Tabs
By default the Hive APM opens displaying the Navigation and Query tabs.
The left Tabs are:
Navigation: List all the MapReduce jobs associate with the query. Click on the job name to bring up job in the MapReduce Application Manager tile.
Execution Graph: Shows detailed information about the MapReduce jobs and their relationship with one another.(lightbulb) This view helps identify bottlenecks and inefficiencies.
Gantt Chart: Shows job sequencing using a gantt chart.
Errors: Exceptions, errors, and warnings associated with this application. See here for an example.
Tags: Lists defined tag keys and associated values. See here for an example.
The right Tabs are:
Query: Shows the Hive Query. See the Hive Application Managerwindowabove for an example Query tab. Click on the Copy Query to copy it to the clipboard.
Tables: A list tables accessed by Application.
Task Attempts: Displays MapReduce task attempts by success, failed, and killed status.The data displayed is for the entire HIVE job. To see the details for a specific MapReduce task click on the job in the Navigation tab.
Attempts: Graphs the Map and Reduce task slot usage over the duration of the job.
Impala Application Manager
The Impala Application Manager provides a detailed view into the behavior of Impala queries.
Key Performance Indicators
- Events: The number, if any, of Unravel insights for this query. See the Event Panel Examples for more information.
- Duration: Total time taken by the query.
- Data I/O: Total data read and written by the query.
- Number of Fragments: Total number of query fragments.
- Number of Operators: Total number of operators in this query.
Tabs
The left Tabs are:
- Fragments: Displays a table with information about each fragment associated with this query. Click on More to expose the Fragments operators and Less to hide them. The coordinator fragment () is always the nth fragment.
Operators: Displays a list of all operators for all fragments.
Gannt Chart: Charts the fragments and the time spent on each operation.
Query Plan: Shows the query plan in fragment or operator view.
Tags: Lists defined tag keys and associated values. See here for an example.
The right Tabs are:
Query: Shows the query plan code. Click on Query Copy to copy the query. See Impala APM window above for the Query Tab.
Mem Usage: Graphs the Memory Usage by peak usage. Notes the maximum memory used on what host and the estimated memory per host.
Kafka Application Manager
The Kafka Application Manager provides Multi-Cluster support for monitoring**: **
- Multi Cluster Metrics Monitoring, and
- Multi Cluster Consumer Offset/Lag Monitoring.
SeeKafka Insightsfor a Use Case example of locatingoflagging or stalled Consumer Groups
Operations | Charts | Kafka displays the list of Configured Kafka Clusters.
Key Performance Indicators
- Bytes in/sec
- Bytes out/sec
- Messages in/sec
- Total Fetch Requests per /sec
- Number of Active Controller
- Number of Under Replicated Partitions Number of Offline Partitions
Click on the Cluster Name to bring up the Cluster View.
Cluster View
This view has three sections:
Key Performance Indicators
Metric Graphs
- kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions
- kafka.controller:type=KafkaController,name=ActiveControllerCount
- kafka.server:type=KafkaRequestHandlerPool,name=RequestHandlerAvgIdlePercent
- kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec
- kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec
- kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec
- kafka.server:type=ReplicaManager,name=PartitionCount
- kafka.server:type=ReplicaManager,name=LeaderCount
- kafka.controller:type=KafkaController,name=OfflinePartitionsCount
- kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Fetch
- kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce
- kafka.network:type=RequestMetrics,name=RequestsPerSec,request=Fetch
- kafka.network:type=RequestMetrics,name=RequestsPerSec,request=Produce
- kafka.log:type=LogFlushStats,name=LogFlushRateAndTimeMs
- kafka.server:type=DelayedOperationPurgatory,name=PurgatorySize,delayedOperation=Produce
- kafka.server:type=DelayedOperationPurgatory,name=PurgatorySize,delayedOperation=Fe
Kafka Topics List consumed by a Consumer Group (CG) with relevant KPIs.
Organized by Topic, you can search on the topic name; any topic matching or containing the search sting will be displayed. Click on the Topic or Brokers name to see the Kafka Topic view. In the list below test2 has two (2) consumer groups associated with it, demo and test-consumer-group. Click on the Consumer Group name to bring it up in the Consumer Group View.
Consumer Group View
Key Performance Indicators
- Number of Topics
- Number of Partitions
The Topic lists displays the KPIs; when details are available a more info glyph is displayed. Click on it to bring up the Kafka view for the topic. Below the list are two tabs which display graphs of the Topic and Partition details. By default the window opens with the Topic Detail graph displayed.
Unravel Insights for Kafka
Auto-detection of Lagging/Stalled Consumer Groups
Unravel determines Consumer status by evaluating the consumer’s behavior over a sliding window. For example, we use average lag trend for 10 intervals (of 5 minutes duration each), covering a 50 minute period. Consumer Status is evaluated on several factors during the window for each partition it is consuming.
For a topic partition Consumer status is
- Stalled if:
- Consumer commit offset for the topic partition is not increasing and lag is greater than zero.
- Lagging if:
- Consumer lag for the topic partition is increasing consistently, and,
- An increase in lag from the start of the window to the last value is greater than lag threshold (e.g., 250).
The information is distilled down into a status for each partition, and then into a single status for the consumer. A consumer is either in one of the following states:
- OK,
- Warning: the consumer is working, but falling behind, or
- Error: the consumer has stopped or stalled.
MapReduce Application Manager
The MapReduce Application Manager provides and easy way to understand the breakdown of the application. You can use this view to:
- Drill down into MapReduce jobs that make up the application, and
- Resolve inefficiencies, bottlenecks and reasons for failure within applications.
It contains similar sections to the Hive Application Manager and additionally shows the timeline view of MapReduce job execution, logs and configuration.
Key Performance Indicators
- Events: The number, if any, of Unravel insights for this query. See the Event Panel Examples for more information.
- Duration: Total time taken by the application to complete execution.
- Data I/O: Total data read and written by the application.
Tabs
By default the MapReduce APM opens in the Graphs | Attempts view.
Graphs: Has four (4) sub tabs.
- Attempts: Number of task attempts are charted in “wall-clock” time. The aggregated time of all tasks running in on the Map/Reduce slot duration is noted below the graph.
- Containers, Vcores, and** Memory**: Graphs utilization of slot containers, vcores, and memory over time.
Timeline: Displays the details of each MapReduce job by showing the execution of each task on the machine it was executed on.
Metrics: The metrics, their definitions and values.
Logs: Lists the available logs by Map, Reduce and Application Master.
Configuration: The defined parameters and their values.
Resource Usage: (lightbulb) These graphs are useful for identifying critical resources that caused a performance degradation.
Errors: Exceptions, errors, and warnings associated with this application. See here for an example.
Tags: Lists defined tag keys and associated values. See here for an example.
Spark Application Manager
See Spark Application Manager page.
Tez Application Manager
The Tez Application Manager provides a detailed view into the behavior of Hive queries as a DAG (Directed Acyclic Graph).
To troubleshoot Tez data collection issues,
check /usr/local/unravel/logs/unravel_ew_1.log
.
Key Performance Indicators
- Events: The number, if any, of Unravel insights for this query. See the Event Panel Examples for more information.
- Duration: Total time taken by the query.
- Data I/O: Total data read and written by the query.
Tabs
By default the Tez APM opens showing the Navigation and Program Tabs.
The left Tabs are:
Navigation: List the Dag jobs with KPIs, Duration and I/O.
Configuration: List the configuration parameters and their values.
Tags: Lists defined tag keys and associated values. See here for an example
The right Tabs are:
Program: Displays the query.
Graphs: Has three (3) sub tabs.
- Containers, Vcores, and** Memory**: Graphs utilization of slot containers, Vcores, and memory over time.
Resources: Graphs the resources consumed.
Workflow Manager
The Workflow Manager provides a comprehensive view to understand workflows and their patterns of execution. It is used by Workflow (Pipelines) owners
- to identify anomalies, inefficiencies and bottlenecks in workflow instances.
The Workflow Manager helps pipeline owners easily maintain SLAs. (Applications that have a Workflow parent will have a link to the workflow in the Goto column in Applications | Applications.)
Key Performance Indicators
- Events: The number, if any, of Unravel insights for this query. See the Event Panel Examples for more information.
- Duration: Total time taken by the query
- Data I/O: Total data read and written by the query.
- Number of Yarn Apps: The number of apps that make up the workflow
Tabs
The APM opens showing the Navigation and Compare tabs by default.
The left Tabs
Navigation: Provides an easy way to understand the breakdown of the workflow the applications which comprise the Workflow, i.e., Hive, Spark, MapReduce, Oozie. Click on More to display the jobs/apps which comprise the type.
Execution: Displays the execution graph of the workflow.
Errors: Exceptions, errors, and warnings associated with this application. See here for an example.
Tags: See here for an example.
The right Tabs:
Compare: Provides a quick way to understand how well a workflow run compares to its other runs. Hovering your pointer graph displays instances top KPIs such as duration, data I/O, resources, and the number of jobs in that instance. Clicking on the point in the chart brings up the Workflow APM for that instance. The graph Metrics choices are I/O, MR Jobs, Resource and Events. The Workflow APM above show an example of the compare tab.
Task Attempts: Displays charts for Map Task, Reduce, and Spark Tasks, broken down by success, failed, and killed as appropriate.
Attempts: Graphs the attempts over the time interval in Wall Clock time and list the Map and Reduce Slot Duration in total computing time below.
Event Panel Examples
The Unravel intelligence engine helps you manage your applications more efficiently by providing insights into their run. The UI engine gives its insights and tuning suggesting via the Events Panel. Not all UI engine insights results in concrete recommendations, so to take full advantage you must read the efficiency panel. There is not a 1-1 correspondence between the event and recommendation number. A single event might lead to no or many recommendations.
Recommendations
Lists the parameters to change, shows their current and recommended value.
Efficiency
The efficiency list details the inefficiencies. The UI engine then
- might make a recommendation and may note the expected result from such a change,
- make a suggestion, or
- note where to look to increase efficiency
Below are two examples. Each type of job and instance of a job has events relevant to that particular job and instance.
MapReduce Job Example
This MapReduce job is part of a Hive Query. In this example the UI engine lists list four (4) events and has three (3) recommendations.
Recommendations
Efficiency 1: Used Too Many Reducers
Resulted in the one recommendation (#1).** **
Efficiency 2: Reduce Tasks that Start before Map Phase Finishes
Resulted in one suggestion**. **
Efficiency 3: Too Many Mappers
Resulted in the two recommendations (#2 and #3).
Efficiency 4: Large Data Shuffle from Map to Reduce
Resulted in a suggestion.
Tez DAG Example
This Tez DAG job is part of a Hive Query. In this example the UI engine lists list three (3) events and has four (4) recommendations.
Recommendations
**Efficiency 1: Tez DAG Map Vertex used too many tasks **
Resulted in two suggestions (#3 and #4) and explanation of the problem.** **
**Efficiency 2: Tez DAG Reducer Vertex used too many tasks **
Resulted in one recommendation (#1).** **
**Efficiency 3: hive.exec.parallel is set to false **
Resulted in one recommendation (#2).** **
Appendices
A list of all events generated by Unravel.
A list of resource metrics collected by Unravel.
Attachments:


-
Design and Analysis of Algorithm
An algorithm is a finite set of computational instructions, each instructi...
View More -
Simulation and Modelling
System modeling and computer simulation, recently has become one o...
View More -
System Analysis and Design
The operating system is the first piece of software to run on a compute...
View More -
-


Class TxStats
- java.lang.Object
-
- com.arjuna.ats.arjuna.coordinator.TxStats
-
- All Implemented Interfaces:
TxStatsMBean
public class TxStats extends java.lang.Object implements TxStatsMBean
This class is used to maintain statistics on transactions that have been created. This includes the number of transactions, their termination status (committed or rolled back), ...- Since:
- JTS 2.1.
- Version:
- $Id: TxStats.java 2342 2006-03-30 13:06:17Z $
- Author:
- Mark Little<EMAIL_ADDRESS>-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static boolean
enabled()
long
getAverageCommitTime()
Returns the average time, in nanoseconds, it is taking to commit a transaction.static TxStats
getInstance()
long
getNumberOfAbortedTransactions()
Returns the number of aborted (i.e.long
getNumberOfApplicationRollbacks()
Returns the number of transactions that have been rolled back by application request.long
getNumberOfCommittedTransactions()
Returns the number of committed transactionslong
getNumberOfHeuristics()
Returns the number of transactions which have terminated with heuristic outcomes.long
getNumberOfInflightTransactions()
Get the number of transactions that have begun but not yet terminated.long
getNumberOfNestedTransactions()
Returns the total number of nested (sub) transactions created.long
getNumberOfResourceRollbacks()
Returns the number of transactions that rolled back due to resource (participant) failure.long
getNumberOfSystemRollbacks()
Returns the number of transactions that have been rolled back due to internal system errors including failure to create log storage and failure to write a transaction log.long
getNumberOfTimedOutTransactions()
Returns the number of transactions that have rolled back due to timeout.long
getNumberOfTransactions()
Returns the total number of transactions (top-level and nested) createdvoid
printStatus(java.io.PrintWriter pw)
Print all of the current statistics information.
-
-
-
Method Detail
-
enabled
public static boolean enabled()
-
getInstance
public static TxStats getInstance()
-
getNumberOfTransactions
public long getNumberOfTransactions()
Description copied from interface:TxStatsMBean
Returns the total number of transactions (top-level and nested) created- Specified by:
getNumberOfTransactions
in interfaceTxStatsMBean
- Returns:
- the number of transactions (top-level and nested) created so far.
-
getNumberOfNestedTransactions
public long getNumberOfNestedTransactions()
Description copied from interface:TxStatsMBean
Returns the total number of nested (sub) transactions created. Note: in JTA environments will normally be 0, since JTA disallows nested tx by default.- Specified by:
getNumberOfNestedTransactions
in interfaceTxStatsMBean
- Returns:
- the number of nested (sub) transactions created so far.
-
getNumberOfHeuristics
public long getNumberOfHeuristics()
Description copied from interface:TxStatsMBean
Returns the number of transactions which have terminated with heuristic outcomes.- Specified by:
getNumberOfHeuristics
in interfaceTxStatsMBean
- Returns:
- the number of transactions which have terminated with heuristic outcomes.
-
getNumberOfCommittedTransactions
public long getNumberOfCommittedTransactions()
Description copied from interface:TxStatsMBean
Returns the number of committed transactions- Specified by:
getNumberOfCommittedTransactions
in interfaceTxStatsMBean
- Returns:
- the number of committed transactions.
-
getAverageCommitTime
public long getAverageCommitTime()
Description copied from interface:TxStatsMBean
Returns the average time, in nanoseconds, it is taking to commit a transaction. This time is measured from the moment the client calls commit until the transaction manager determines that the commit attempt was successful (ie that all participants successfully committed). This includes cases where:- there are no transaction participants;
- the transaction only contains readonly participants;
- Specified by:
getAverageCommitTime
in interfaceTxStatsMBean
- Returns:
- the average time, in nanoseconds, it has taken to commit a transaction.
-
getNumberOfAbortedTransactions
public long getNumberOfAbortedTransactions()
Description copied from interface:TxStatsMBean
Returns the number of aborted (i.e. rolledback) transactions- Specified by:
getNumberOfAbortedTransactions
in interfaceTxStatsMBean
- Returns:
- the total number of transactions which have rolled back.
-
getNumberOfInflightTransactions
public long getNumberOfInflightTransactions()
Description copied from interface:TxStatsMBean
Get the number of transactions that have begun but not yet terminated. Note: This count is approximate, particularly in recovery situations.- Specified by:
getNumberOfInflightTransactions
in interfaceTxStatsMBean
- Returns:
- total number of inflight (active) transactions.
-
getNumberOfTimedOutTransactions
public long getNumberOfTimedOutTransactions()
Description copied from interface:TxStatsMBean
Returns the number of transactions that have rolled back due to timeout.- Specified by:
getNumberOfTimedOutTransactions
in interfaceTxStatsMBean
- Returns:
- the number of transactions that have rolled back due to timeout.
-
getNumberOfApplicationRollbacks
public long getNumberOfApplicationRollbacks()
Description copied from interface:TxStatsMBean
Returns the number of transactions that have been rolled back by application request. This includes those that timeout, since the timeout behaviour is considered an attribute of the application configuration.- Specified by:
getNumberOfApplicationRollbacks
in interfaceTxStatsMBean
- Returns:
- the number of transactions that been rolled back by the application.
-
getNumberOfSystemRollbacks
public long getNumberOfSystemRollbacks()
Description copied from interface:TxStatsMBean
Returns the number of transactions that have been rolled back due to internal system errors including failure to create log storage and failure to write a transaction log. It does not include rollbacks caused by resource failures.- Specified by:
getNumberOfSystemRollbacks
in interfaceTxStatsMBean
- Returns:
- the number of transactions that been rolled back due to internal system errors including failure to create log storage and failure to write a transaction log.
-
getNumberOfResourceRollbacks
public long getNumberOfResourceRollbacks()
Description copied from interface:TxStatsMBean
Returns the number of transactions that rolled back due to resource (participant) failure.- Specified by:
getNumberOfResourceRollbacks
in interfaceTxStatsMBean
- Returns:
- the number of transactions that have been rolled back by participants.
-
printStatus
public void printStatus(java.io.PrintWriter pw)
Print all of the current statistics information.- Parameters:
pw
- the writer to use.
-
-


The first paragraph.
The second paragraph.
The third paragraph.
The fourth paragraph.
注意: Internet Explorer 8 以及更早版本的浏览器不支持 :nth-child()选择器.


## alexandre gefen et claude perez
today, we think we’ve moved away from self-referentiality, from formalism, from the canon. but in reality, not so much.
if there is chronological extension, what other kinds of extensions are there? because it extends between journalism and literature, anthropology and literature, history and literature… it def goes beyond fiction.
it is no longer a matter of pointing out the specificities of the literary in certain texts, but highlight those that question this specificities. that live indeed at the boundary.
literature studied not as a set of texts but as a set of activities. it even gets closer to a study of a particular media (the written text), a study of particular supports/materials


Enter Phase 0 Week 6 of Dev Bootcamp. This post addresses Ruby classes.
- What is a class and why should I use it?
- The song and playlist classes
What is a class?
A class is an object that models a slice of reality by specifying properties for objects it spawns as well as defining what can be performed by or done to the created objects. This is significant, because the Ruby hierarchy is a web of relationships between different Ruby objects, classes included. Inheritance is outside the scope of this post, but essentially the relationships provide functionality for different classes. The String and Array classes are two great examples of two objects that we use all the time. Each class is also an object and has many methods available to each respective class. We know the String class has methods like String#downcase and the Array class has Array#uniq.
I'll also briefly mention that classes can borrow functionality from Modules like Enumerable, attaining even more functionality. With different classes, we can expect different behavior and know what messages each class understands and therefore what the classes can do.
Having already mentioned the importance of the object concept, this leads to the topic of object-oriented programming. By leveraging classes we focus on writing code that emphasizes modeling things in the world as objects as well as what these objects can do. In other words create objects and then tell those objects to do things for us. We say that classes generate instances of themselves, with each instance having its own properties. All instances of the same class will share the same functionality.
The song and playlist classes
Below, I created two classes Song and Playlist. A song can have many different properties, but this example only uses the typical ones like artist, album, year, etc... I kept the Playlist class simple, just including a few methods and also borrowing from the Array class. Let's see the example code and then I'll break down what's happening after.
class Song
attr_accessor :artist, :album, :year, :track, :title, :label, :genre
def initialize(song_title)
@title = song_title
end
def display_info
p "#{@artist} - #{@track} - #{@title} - #{@genre}"
p "From the album '#{@album}' released by #{@label} in #{@year}"
end
end
class Playlist
def initialize
@playlist = []
end
def add_playlist(*song_title)
@playlist.push(song_title)
end
def view_playlist
p @playlist
end
end
bo = Song.new("Buggin' Out")
bo.artist = "A Tribe Called Quest"
bo.album = "The Low End Theory"
bo.year = "1991"
bo.track = "2"
bo.label = "Jive Records"
bo.genre = "Hip hop"
bo.display_info
fb = Song.new("4 Better or 4 Worse")
fb.artist = "The Pharcyde"
fb.album = "Bizarre Ride II The Pharcyde"
fb.year = "1992"
fb.track = "4"
fb.label = "Delicious"
fb.genre = "Hip hop"
fb.display_info
hip = Playlist.new
hip.add_playlist(bo.title,fb.title)
hip.view_playlist
- First, attr_accessor is a shortcut that creates two methods, one that allows us to read the property, and another that lets us set the property. Thus, attr_accessor will allow us to both read and set artist, album, year, track, etc... This becomes important once we try adding songs to a playlist.
- Typically, classes have an initialize method that provides some minimum information when creating an object of a given class. Here, when we use Song.new to create a song object, we initialize it with a song title that gets stored as an instance variable @title. We use instance variables to store information about instances of a class. In addition, the scope for this information is the entire class. So now we have our first song property song title.
- The display_info method simply prints out all the properties of a song. Instance variables make this possible. If we used local variables, we'd have to pass each one as an argument, which can get very cumbersome.
- The Playlist class allows songs to be added. In the initialize method, I create a blank array for the new playlist.
- The add_playlist method takes any number of songs as an argument and then adds each song to the playlist.
- Finally, the view_playlist method prints the playlist to console.
The rest of the code is driver code that allows us to create two song objects, set their properties, add them to a playlist, and then view the playlist. The output is shown below:
:> ruby song.rb
"A Tribe Called Quest - 2 - Buggin' Out - Hip hop"
"From the album 'The Low End Theory' released by Jive Records in 1991"
"The Pharcyde - 4 - 4 Better or 4 Worse - Hip hop"
"From the album 'Bizarre Ride II The Pharcyde' released by Delicious in 1992"
[["Buggin' Out", "4 Better or 4 Worse"]]
The attr_accessor came into play when I set each song property, and when I added the songs to the Hip hop playlist. Each time a song property is set, this is made possible by utilizing the setter method that was created for us via attr_accessor. I also called the reader methods when adding bo.title and fb.title to the playlist. This called title on both bo and fb, returning their song titles.
Looking forward to next week!


Computer Engineer
Atlanta, GA
<EMAIL_ADDRESS>B.S. Computer Engineering
Graduated in Fall 2017 with Highest Honors
M.S. Computer Engineering
Skills
C/C++
Python
Java
Tools
git
Latex
Languages
Traditional Mandarin(繁體中文)
English
Japanese(日本語）
I enjoy learning science, logic, and mathematics. I aim on applying them to create fantastic projects to make our world a better place. It is amazing to live in a rapidly changing world since we have opportunities to learn the latest technology.
Programming & Embedded System & Computer Architecture
Cooking ^ Guitar ^ Counter Strike
• Refactored the architecture of Wi-Fi TestSuite-Linux-DUT user space program for MediaTek AP device to support dual-band, dual concurrent (dbdc) mode.
• Reduced the AP con guration time from 127 seconds to 10 seconds on test plan VHT 4.2.5 with this new design.
Ported the new concise daemon (273KB) to MediaTek platform, re ned its compile structure to make the user program compatible with MediaTek SDK framework.
• Improved company’s file comparison tool using python, PowerShell, and batch files, saving over 50% of execution time.
• Integrated xml-junit results to internal server using php and javascript for tracking development status.
• Integrated verification scripts with Atlassian Bamboo (continuous integration and delivery tool) to automate the release management for AW609 (twin-engined tiltrotor VTOL aircraft) Project.
• Lead 21 students in weekly recitation, monitored their learning progress, and shared coding techniques.
• Graded student’s homework, exams; clarified programming concepts in one-on-one appointments.
• Deployed flask application on AWS EC2 with MySQL on AWS RDS (3 tables).
• Created mulitple functions like add, delate, update dababase for user to interact with the system.
• Designed a html layout with render_template library.
• Generate json string for weather information from third part API.
• Calibrated sensors and implemented python interface for backend.
• Designed a surface mound circuitry layout for light, humidity, and temperature sensors on transparent glass.
Designed a prototype to simulate semi-autonomous vehicle with 2 wheel robot, the key features are the followings:
• Configured ESP8266 wifi module on mbed and Designed a python based terminal tool to interact with the robot.
• Implemented rotation sensor and designed algorithms to calculate real time coordinates for future error correction development.


September in boston many years ago, on the back porch of their apartment looking over an alley we ate dinner (they supplied the food) and finished the meal with a steaming mug of shroom tea for each (we supplied the mushrooms)
We sat around and waited, chatting nervously
We came up and i was unable to speak, unable to move, stuck in my chair, following the vision in my mind-
A male voice was narrating these visuals of a life cycle, ending not in the grave, but out out out in space (there is more to life than just this one, he said) and i struggled to stay in the moment and remember (i must remind myself of this)
I was released from my chair and we all talked and giggled and snuggled on the couch. I had never bonded so quickly or closely with another woman before because of our womanhood, our sisterhood. It was a privledge to do so, and i relish those moments
We left the apartment hours later to go walk along the charles- fortunely we knew better than to go swimming in it (although the impulse arose.) ---- wanted to go off and make out, but being sexual in any way was the last thing i wanted
Dawn rose upon our coming down
And i look back and feel so lucky that my first time taking mushrooms was in such a caring, safe setting, and that we shared such a wonderful experience
And yet i am now at the point where even looking at mushrooms make me nauseous- and i am reconnecting with mushrooms, reconnecting with the higher state they can access- but i cannot do so without looking at where i have come from and where i have been.
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.