| FEATURE ARTICLE | |||||||||||||||||
Chris Jackson is an Associate Professor at Nova Southeastern University in Fort Lauderdale, Florida. She teaches writing, literature, and music history.
Televisions view of law and order is changing. The pendulum of popular taste has begun to swing away from reality-based television toward nostalgia from thirty years ago. The times, they are a-changin--back.
In television, imitation is the sincerest way to make a buck. Shows about the complexities of behavior and challenging norms will give way to shows about reconstructed life, 1960s and 70s style, in cities high on urban renewal.
|
From Baltimore to Providence: Its Farther than You Think By Chris Jackson Theyre over. Two NBC season finales in one night have knocked me flat. Homicide: Life on the Street just aired its last ever episode. This penetrating, insightful show about Baltimore homicide detectives has for seven years featured the best writing and acting on television. An hour earlier, Providence gently drew tears from the collective psyche with its close to the first year. Homicide is no more; Providence has a guaranteed home in next seasons television land. Put those two facts together, and what do we have? You heard it here first, folks. Televisions view of law and order is changing. The pendulum of popular taste has begun to swing away from reality-based television toward nostalgia from thirty years ago. The times, they are a-changin--back. The show Homicide: Life on the Street dramatizes the complex effects of violent criminal behavior on police investigators. Quick cuts and triple shots of the same gesture intensify the chaos. As may happen with real law enforcement officers, the detectives lives are torn apart by the inhumanity they face daily. Alcoholism and depression are common. The characters are either not married or have been divorced numerous times. If married, their home lives are troubled. Their hearts empty from their profession, they have nothing to give wives, husbands, or children. This last Homicide episode lays out several thorny conflicts. Lieutenant Giardello (Yaphet Kotto) realizes that his promotion to captain is meaningless. John Munch (Richard Belzer) gets married. Munch and his fiancee state marriage vows over shots of a white-sheeted corpse on a gurney. Their marital bliss is short-lived as Munch shows up at the bar on his wedding night. Tim Bayliss (Kyle Secor) has a case he cant resolve. Due to red-tape delays, the court lets a suspected serial killer go free. Justice is a bitch, Meldrick says (Clark Johnson). Later, Tim recalls his early days with partner Frank Pembleton (Andre Braugher). Tim tells Munch, See, Frank said that I would never be a good homicide detective because I didnt have the killers instinct. Frank was wrong. The suspected serial killer is found dead, with no clues on the crime scene. The viewer draws his own disturbing conclusion. Betrayed by the court system, Bayliss enacted his own justice. Life is a mystery. Accept it. Tom Fontana wrote this episode. He also created that rock-hard, now cancelled HBO prison show Oz. Before that, Fontana worked on Saint Elsewhere. He wrote alongside John Masius. Masius went on to add Touched by an Angel to his resume. While Fontana fades, Masius prospers. One Friday night about a month ago, I made a long-distance call to relatives. Well call you back, they said. Were watching Providence. The series had arrived to terrible reviews. Critic Ken Tucker called the main character Dr. Feelbad (Entertainment Weekly, 8 January 1999). But I grew up in East Providence, and I was curious. The next week, I set the VCR. Providence is a stress-reducing bubble bath, and the tub is crowded. Created and directed by John Masius, Providence now falls consistently in the Top Thirty. Its a hit.
The show opens to a woman singing In My Life: There are places I remember . Providence never looked better. When I was a kid, the gray Industrial Trust building dominated the landscape like an old elephant. Homeward-bound from college, I drove 95 south through Massachusetts. From the northeast, the crooked building looked ready to fall over. This show bathes the old Industrial Trust Building in a heavenly glow. Aerial shots of the suburbs are slow-moving and serene, as if filmed from the basket of a hot-air balloon. This is the Providence of myth, suffused with the quality of safety that moved founder Roger Williams to lead settlers to the banks of the Providence River. Syd Hansen is a West Coast plastic surgeon who finds her boyfriend in the shower with another man. Aghast, she seeks haven with her family in Providence. In one episode, the boyfriend shows up to woo her back. He arrives for their date in a limo. When she refuses his offer, the boyfriend rides up front with the hunky limo driver. That old nautical saying is common in Providence--any port in a storm. Syds mother (Concetta Tomei) is a whisky-voiced angel, literally. Her ghost appears to Syd in dreams, dispensing advice on life and love. (My Mother, the Car?) Syds father Jim is a vet, played by Mike Farrell, AKA B.J. Hunnicutt on M*A*S*H. No doubt a future episode will feature a visit from Uncle Hawkeye, come to play cards and swig cheap gin all night with his former buddy. The unemployed Syd doesnt mope around the house eating Ring-Dings. She finds a position ASAP in a downtown clinic, a former church. No HMO scandals or malpractice suits here at Saint Somewhere. Dr. Syd doubles as Mother Theresa, saving an adorable adolescent here, a wonderful baby there. She even makes housecalls! A decade of razor-sharp medical and crime shows has taught us to expect the worst in the TV universe. This show confounds our expectations by being too nice. Potentially criminal behavior is washed away before two scenes can pass. A pre-teen patient who visits Syd is reluctant to leave a urine sample. Aha, we think. Drugs. The kid returns with a contaminated sample. It turns out that the kid is reporting his mothers symptoms as his own. She is too busy working to seek medical attention herself. His filial duty even extends to retrieving her urine sample. I fixed the toilet handle so it couldnt flush. Syd messes up giving a spinal tap to an infant. Aha, we think. Malpractice. Instead the father says, We dont want you here. His rejection bothers her, so she researches the babys symptoms to uncover an obscure genetic disease and saves the day. The family is so grateful. When Syd reports a wife abuser to the authorities, we think, aha, hes going to stalk Syd and seek reprisal for her meddling. Instead, he goes peacefully with the cops. Nine-on-one? Uh, never mind. Syd has a romance with Paul, son of a reputed Mafia boss. A friend in the DAs office warns that she too might be under surveillance. Syd dreams that she is on trial.  All the family members testify against Syd. Judge Mother says, I find you guilty. In her waking life, Paul sends a limo for her. Aha, we think, guilty as she is, she will end up with cement overshoes. The limo dumps her, not in the Providence River, but at, gasp, an Italian restaurant, where she and Paul dance to Andrea Bocelli singing Time to Say Goodbye. The DA has exiled Paul from Providence for his own protection, so his fathers criminal activities wont tempt him. In Providence, when the law plays a role, its like the police hauling Beaver Cleaver down from the billboard. Instead, the family is the seat of law and norms. Unchallenged authority resides in the father and deceased mother. Losing the Mafia son upsets Syd. Weeping, she asks her father, Dad, I see happy couples together. Whats wrong with me? Because Father knows best, Jim says, Well, kitten, (maybe he didnt really say kitten, maybe I just misheard) the trick is to keep an open heart to be ready for the next time. Its great to know that Jim is still B.J., the open heart man. This show has bedroom scenes, but they all end in pillow fights. We havent seen this many glowing windows outside a house since The Waltons.  The younger sister Joanie bakes dog goodies and sells them at her Barkery. (Happy Days? Joanie Loves Chachie?) She is also an unwed mother. Murphy Browns son Avery, who so shocked Dan Quayle, disappeared two episodes after Murphy gave birth. This baby girl, Hannah, gets maximum screen time. We see Hannah eating her breakfast, Hannah being read to at bedtime. But she is cute. Robbie, the brother, works at a bar called "ONeills." (My Three Sons?) He carries the whiff of prison on him, or maybe just reform school. He says if he had come home and found his girlfriend in the shower with another woman, he would jump in with them. Thats the difference between you and me, Syd. As if the Hansen family didnt have enough demographic appeal, we have teen angst from the high-school student Lily. One day, Lily hauls her delinquent self into Syds clinic. Dr. Hansen acts as any M.D.--she invites Lily to live with them. The girls primary sin is that she smokes. (Interestingly, so does Angel Mother.) Marketers dont know how to present a show that is too nice. Episode previews intimate, Lily burns the house down! Yes, Lilys smoking causes one attic curtain, an old one at that, to flare up. The next week, she is a full-fledged part of the family, with Jim/B.J. helping her build a Rube Goldberg contraption. Another week, Lily makes all the Hansens breakfast and volunteers to sit for Hannah. Aha, we think. She plans to rob them and steal Hannah. Instead, the time for her to be turned over to a foster home approaches. She wants to stay with them. They all love her and want her. Shes one of them. Heres what ticked me off about the season finale. Angel Mother tells Syd she is leaving.   In real life, while all the Hansens wait for Lily to celebrate her new Hansen-hood as a nonsmoker, Lilys creep of a boyfriend takes her for a ride in a stolen car. A police car smashes into them. Big explosion. Lily lingers long enough for Syds heart-wrenching goodbye. Lily exits. Angel Mother returns. You still need me, Syd.  I come to this chilling conclusion: As an outsider, Lily threatens the sanctity of The Family. Think of the symbolic value of her name. She has to be sacrificed so The Family can be resurrected, reunited in their bond of grief. On another level, the death of Lily reenacts the clash between Homicide: Life on the Street and Providence. Those horrible, nihilistic values of Homicide, as represented by the police car, wipe out Lily, the positive flower of family nurturing. Subversive, but there it is. Remember that cloying bubble-gum musical trio Hanson? We didnt think so. These Providence Hansens might also mmm-bop their way into oblivion, but I dont think so. In television, imitation is the sincerest way to make a buck. Shows about the complexities of behavior and challenging norms will give way to shows about reconstructed life, 1960s and 70s style, in cities high on urban renewal. Get ready for Cincinnati, St. Louis, and Boulder (no, scratch that), maybe Phoenix. The series Law and Order remains, but for how long? In 1999, a real political scandal has outdone even the wildest SNL sketch. Bombing in Kosovo continues. Boris Yeltsen staggers during public appearances. Teens shoot their classmates.  The viewing public is hungry for a little nostalgia. But is the sensibility from thirty-year old shows the answer?
Would you like to to comment on this article? Please submit your comments here.
|


| password_to_binary/2 | Convert a one-time password to a padded binary string. |
| password_to_string/2 | Convert a one-time password to a padded string. |
password_to_binary(Password, NbDigits) -> binary()
Convert a one-time password to a padded binary string.
See also: password_to_string/2.
password_to_string(Password, NbDigits) -> string()
Convert a one-time password to a padded string.
The result is undefined if the string representation ofPassword
contains
more digits than NbDigits
.
Generated by EDoc


Songs over Time by BPM
my music collection over time by bpm
Jul 10, 2017
Fantasy Basketball Ranks '16
top basketball players in fantasy scoring in 2016
Oct 21, 2016
BPM Visual Revisited
my music collection sorted by bpm
Sep 14, 2016
DC Demographics
breakdown of dc by demographic
Jun 18, 2015
How Teams Do In March Madness
tournament performance in the last 30 years
Mar 19, 2015
Fantasy Football Revisited
how well fantasy football players performed
Dec 25, 2014
Facebook Friend Network
force layout diagram of my facebook friends
Nov 21, 2014
BPM Visual
my music collection sorted by bpm
Nov 11, 2014
DC Snowfall
yearly snowfall in dc
Nov 10, 2014
Fantasy Basketball Ranks
the top basketball players in fantasy scoring
Oct 28, 2014
TV Show Viewership
a look at the ratings of recent popular tv shows
Oct 12, 2014
Education Spending
how much money is spent per student in the u.s.
Sept 16, 2014
Fantasy Draft Picks Pt. 2
a look at my league's draft picks
Sept 4, 2014
Fantasy Draft Picks
average draft picks in fantasy football
Sept 4, 2014
Drought
recent drought crisis in cali
Sept 2, 2014
Population
historical population in the u.s.
Aug 26, 2014
Poverty Rates
poverty in the u.s. by ethnicity
Aug 21, 2014
Income Thresholds
class division in the u.s.
Aug 19, 2014
Hey I'm Jefferson. I keep this blog because I think data visualization is cool and sometimes I like to make things =P.


{{property.description}}
Here you can grant and revoke access to your property and its data.
| Subjects | Access | |
|---|---|---|
| {{consent.formatedSubjects}} | {{consent.formatedActions}} |
ID: {{property.id}}
Here you can delete your Property.
Attention: this action cannot be undone. It will erase all data attached to this Property.


Sim
< body >
< h1 >
Hi,
I'm Sim,
Web Developer.
Front End Developer / React-Native / Node
< /h1 >
< /body >
< /html >
< body >
< h1 >
About Me
I am a Information Architect turned developer. I have always enjoyed creating and designing new things.
I have worked with multiple fortune 500 companies like Hilton as well as NMI. Helping them deliver new and innovative web&mobile experiences for their users.
Our Hilton HHonors mobile application was featured at GoogleIO 2015.
I am always striving to take my skills to the next level. Connect with me and lets create new and innovative projects.
< /h1 >
< /body >
< /html >
< body >
< h1 >
Skills & Experience
I am able to work both on the front and back end.
Apart from HTML/CSS/JS, I also have experience with React.js, React-Native and Angular.js.
I have the ability to build applications in both the MERN and MEAN stacks.
Also, I have experience in database architecture and production level scaling.
< /h1 >
< /body >
< /html >
< body >
< h1 >
work,
work Sim,
< /h1 >
< /body >
< /html >
< body >
< h1 >
contact,
contsct S,
< /h1 >
< /body >
< /html >


Addition Matrix
Substraction Matrix
Multiplication Matrix
Division Matrix
Title
Matrix A
Matrix B
Count


{% extends "layout.html" %} {% block page_title %} 2FA - GOV.UK prototype {% endblock %} {% block service_name %} Bob Thomas Arctor (AEDM) Home Your profile Sign out {% endblock %} {% block content %} Password error messages Choose error message Empty fields Not enough characters 1 or more numbers Block list Password Contains company name Contains real name Previously used password Username Upper/ Lowercase {% endblock %}
Choose error message
Empty fields
Not enough characters
1 or more numbers
Block list Password
Contains company name
Contains real name
Previously used password
Username
Upper/ Lowercase


Address: 20c Factory,
New York, NY 102
Call Us: +(321) 48 659 779<EMAIL_ADDRESS>Mon - Sat:09.00 to 18.00
Sunday:Closed
Address: 20c Factory,
New York, NY 102
Call Us: +(321) 48 659 779<EMAIL_ADDRESS>Mon - Sat: 09.00 to 18.00
Sunday: Closed
Address: 20c Factory,
New York, NY 102
Call Us: +(321) 48 659 779<EMAIL_ADDRESS>Mon - Sat: 09.00 to 18.00
Sunday: Closed


The SamcoFeeModel
models the fees of Samco.
security.SetFeeModel(new SamcoFeeModel());
security.SetFeeModel(SamcoFeeModel())
The SamcoFeeModel
models the order fees of Samco by its Equity Intraday fee structure. The following table shows the fees:
| Charge Item | Fee |
|---|---|
| Brokerage Fee | ₹20 per trade or 0.02% (whichever is lower) |
| Exchange Transaction Charge | 0.00345% |
| Securities Transaction Tax | 0.025% |
| Goods and Services Tax | 18% |
| SEBI Charges | 0.0001% |
| Stamp Duty | 0.003% |
The SamcoFeeModel
charges fees in INR.
To view the implementation of this model, see the LEAN GitHub repository.


Long-snouted, burrowing creatures native to Britain with a penchant for anything shiny.
- Hair colour: Black
- Native range: Britain
- Ministry of Magic Classification: Beast XXX
- Speciality: Locating treasure
Nifflers were rodent-like creatures with a long snout similar to that of a platypus and a coat of black, fluffy fur. They had a pouch on their bellies which held far more than at first seemed possible.


We are one of the eminent manufacturers, suppliers and exporters of Self Priming Domestic Pumps that are fabricated...
We are offering Borewell Submersible Pumps that features corrosion - resistant graded cast iron motor housing for more protection...
Atho Pressure booster maintains the even water pressure in all the outlets.The system consists of multistage pump, pressure switch, pressure gauge, Y-Strainer and pressure tank...
Clients can avail highly powerful ATHO Open Well Submersible Pump from us. In the making of ATHO Open Well Submersible Pump, we utilize the latest techniques and materials...
ATHO Induction motors are high efficient and suitable for continuous performance. Dynamically balanced rotor ensures vibration free and noise free operations...


Github API token
The token is not valid!
Token is requiredGithub repository
{{ option }}
Repository does not exist!
Repository cannot be checked (invalid API token)!
Repository is requiredGithub branch
{{ option }}
Branch does not exist!
Branch cannot be checked (invalid API token)!
path
Path does not exist!
Path is not a directory!


--- layout: tweet ---
Reentering American suburban culture is weird man
8/17/2022, 5:25:47 PM
Favs: 8
Retweets: 0


[dscrdeql] <CowboyCrypto- Founder> please direct all bot commands to #off-topic
[dscrdeql] <CowboyCrypto- Founder>
[dscrdeql] <x2maano> good night people
[dscrdeql] <x2maano>
[dscrdeql] <c2k>
[dscrdeql] <Jellysmash> good night there @x2maano
[dscrdeql] <Jellysmash> get de ZZZZZZ
[dscrdeql] <Jellysmash> nice one levelling up there @ghøst
[dscrdeql] <Podmaster> How come exrates has a high withdraw fee?
[dscrdeql] <Podmaster> To get your monies?
GatewayBOT30-Aug-18 08:07 PM
[dscrdeql] <CowboyCrypto- Founder> they have a high withdraw fee for reasons unknown, but we are seeking other exchanges that are more used. their numbers seem to be purely wash trading
GatewayBOT30-Aug-18 08:28 PM
[dscrdeql] <SwimedDragon> Are you allowed to tell which exchanges ask how much to be listed?
[dscrdeql] <Jellysmash> cryptopia is used a lot. they seem ok...i've used them a bit
[dscrdeql] <Jellysmash> don't know how much it costs to list on it
[dscrdeql] <Jellysmash> crypto-bridge is a new-ish exchange...costs around 1btc to list I think
[dscrdeql] <Jellysmash> but I hate having to use their special coin to put a buy or sell order in and if you cancel it you still have to pay a fee. that sucks, but it does force people to keep orders and not chop and change too much. maybe slightly more stable in maintaining coin price
[dscrdeql] <SwimedDragon> I think anything that's anti user friendly should be avoided if possible, but I still think it would be best to be listed where possible
[dscrdeql] <SwimedDragon> But yeah, using a special coin to pay for the fee sucks
[dscrdeql] <SwimedDragon> I don't mind paying a fee or stuff like that, it's just bs to let users use their coin to pay for the fee. No need for that at all
[dscrdeql] <SwimedDragon> Like on binance, I know the fee is a bit lower if you use their coin, but I'd rather pay the little more to buy, then to buy their coin first and use that
[dscrdeql] <SwimedDragon> I'm using cryptopia a lot. Sometimes I hear someone about it now and then, but overall they seem pretty good
[dscrdeql] <SwimedDragon> I gotta go sleep for now so I won't be reading up until tomorrow, unless the room is somehow flooded with hours of stuff to read haha
[dscrdeql] <SwimedDragon> Sleep well and see ya tomorrow everyone
GatewayBOT30-Aug-18 08:55 PM
[dscrdeql] <Jonathan-Mod> You too @SwimedDragon
GatewayBOT30-Aug-18 09:44 PM
[dscrdeql] <Jellysmash> @SwimedDragon sleep well
[dscrdeql] <Cypher - Founder> just a reminder please do check the #announcements for the latest updates
[dscrdeql] <CowboyCrypto- Founder> Cryptobridge is 2btc now and they won’t list us because of the zcash paeans
[dscrdeql] <CowboyCrypto- Founder> Parameters
GatewayBOT30-Aug-18 10:04 PM
[dscrdeql] <ghøst> good night
GatewayBOT30-Aug-18 10:12 PM
[dscrdeql] <MySoulisNotForSale> what is up with it
MapleChange is a Canadian cryptocurrency asset exchange revolving around the concept of community, fast customer experience, reliability and swiftness of transacitons. We offer a large variety of altcoins to choose from.
[dscrdeql] <Jellysmash> A lot of the micro cap small new coins are getting listed here so I presume it must be cheap to get listed there(edited)
[dscrdeql] <Jellysmash> May be easy for EQLI to get on there
[dscrdeql] <Jellysmash> I agree cryptopia would be good though, high volume
[dscrdeql] <Jellysmash> Most ppl into ALTs have a cryptopia account
[dscrdeql] <K00l1> gm
GatewayBOT31-Aug-18 01:38 AM
[dscrdeql] <Catalyst> I just saw the announcement I would like to say that i don't own any btc but am willing to be apart of this
[dscrdeql] <Catalyst> i can sell some to help you guys


Flamengo win 4-1 and continue march towards Serie A title
Bruno Henrique scored a hat-trick to help league leaders Flamengo to a 4-1 win over Corinthians at the Maracana stadium on Sunday.
RIO DE JANEIRO: Bruno Henrique scored a hat-trick to help league leaders Flamengo to a 4-1 win over Corinthians at the Maracana stadium on Sunday.
The former VfL Wolfsburg striker scored twice in a minute before halftime and then again immediately after the break.
The goals were his 13th, 14th and 15th of the league season, making him the Serie A's top goalscorer behind team mate Gabriel Barbosa.
Mateus Vital scored with a header to pull one back for Corinthians seven minutes into the second half but substitute Vitinho restored Flamengo's three-goal cushion midway through the second period with a fierce shot from outside the box.
The win extended Flamengo's unbeaten run under Portuguese coach Jorge Jesus to 21 games and kept them eight points clear of second-placed Palmeiras at the top of the Serie A.
(Reporting by Andrew Downie; Editing by Christian Radnedge)


--- title: GDPR analysis and introduction to tidymodels. author: Lucas Bagge date: '2020-05-04' slug: GPR and tidymodels categories: - GDPR - tidymodels tags: - tidymodels subtitle: '' summary: '' authors: [] lastmod: '2020-05-04T22:31:29+02:00' featured: no image: caption: '' focal_point: '' preview_only: no projects: [] draft: false ---
For this first post I will show an example of using newly launched tidymodels, which is a new packages that make it easiler to make models. To test the packages functionality I will work on an dataset for GDPR violation and see which gives the biggest fines.
Our modelling goal here is to understand which GDOR violations gives the higest fines. Before I will look at the data it is reasonable to understand some of the GDPR articles and what they are about:
As a first step in analysis gdpr violations and get a understanding of tidymodels I will explore the data.
gdpr_raw
## # A tibble: 250 x 11
## id picture name price authority date controller article_violated type
## <dbl> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 1 https:~ Pola~ 9380 Polish N~ 10/1~ Polish Ma~ Art. 28 GDPR Non-~
## 2 2 https:~ Roma~ 2500 Romanian~ 10/1~ UTTIS IND~ Art. 12 GDPR|Ar~ Info~
## 3 3 https:~ Spain 60000 Spanish ~ 10/1~ Xfera Mov~ Art. 5 GDPR|Art~ Non-~
## 4 4 https:~ Spain 8000 Spanish ~ 10/1~ Iberdrola~ Art. 31 GDPR Fail~
## 5 5 https:~ Roma~ 150000 Romanian~ 10/0~ Raiffeise~ Art. 32 GDPR Fail~
## 6 6 https:~ Roma~ 20000 Romanian~ 10/0~ Vreau Cre~ Art. 32 GDPR|Ar~ Fail~
## 7 7 https:~ Gree~ 200000 Hellenic~ 10/0~ Telecommu~ Art. 5 (1) c) G~ Fail~
## 8 8 https:~ Gree~ 200000 Hellenic~ 10/0~ Telecommu~ Art. 21 (3) GDP~ Fail~
## 9 9 https:~ Spain 30000 Spanish ~ 10/0~ Vueling A~ Art. 5 GDPR|Art~ Non-~
## 10 10 https:~ Roma~ 9000 Romanian~ 09/2~ Inteligo ~ Art. 5 (1) a) G~ Non-~
## # ... with 240 more rows, and 2 more variables: source <chr>, summary <chr>
How are they distributed?
gdpr_raw %>%
ggplot(aes(
price + 1
)) +
geom_histogram() +
scale_x_log10(labels = scales::dollar_format(prefix = "€")) +
labs(
x = "GDPR fine (EUR)",
y = "GDPR violations"
) +
theme_minimal()
We will know make the data tidy:
gdp_tidy <- gdpr_raw %>%
# add nes variable and drops existing ones.
transmute(id,
price,
country = name,
article_violated,
articles = str_extract_all(
article_violated,
# Add regex to get numbers
# Have a look to see that some didt get becasue of missing space
"Art. [:digit:]+|Art.[:digit:]+"
)
) %>%
# more engerring
# more violations gives bigger fines
# Beacuse we know it is an integer we can say map_int
mutate(total_articles = map_int(articles, length)) %>%
# by unnest we are gonna spread the articles.
unnest(articles) %>%
# We can count the number of articles.
# There is 27 articles and is to many for our modelling
# this wee need to faut
# count(articles, sort = TRUE)
add_count(articles) %>%
filter(n > 10) %>%
select(-n)
# Kow we have a row for each violations and not
gdp_tidy
## # A tibble: 304 x 6
## id price country article_violated articles total_articles
## <dbl> <dbl> <chr> <chr> <chr> <int>
## 1 2 2500 Romania Art. 12 GDPR|Art. 13 GDPR|Art. ~ Art. 13 4
## 2 2 2500 Romania Art. 12 GDPR|Art. 13 GDPR|Art. ~ Art. 5 4
## 3 2 2500 Romania Art. 12 GDPR|Art. 13 GDPR|Art. ~ Art. 6 4
## 4 3 60000 Spain Art. 5 GDPR|Art. 6 GDPR Art. 5 2
## 5 3 60000 Spain Art. 5 GDPR|Art. 6 GDPR Art. 6 2
## 6 5 150000 Romania Art. 32 GDPR Art. 32 1
## 7 6 20000 Romania Art. 32 GDPR|Art. 33 GDPR Art. 32 2
## 8 7 200000 Greece Art. 5 (1) c) GDPR|Art. 25 GDPR Art. 5 2
## 9 9 30000 Spain Art. 5 GDPR|Art. 6 GDPR Art. 5 2
## 10 9 30000 Spain Art. 5 GDPR|Art. 6 GDPR Art. 6 2
## # ... with 294 more rows
How are the articles distributed over per article?
library(ggbeeswarm)
gdp_tidy %>%
mutate(
articles = str_replace_all(articles, "Art. ", "Article "),
articles = fct_reorder(articles, price)
) %>%
ggplot(aes(
articles, price + 1,
color = articles, fill = articles
)) +
geom_quasirandom() +
geom_boxplot(alpha = 0.2, outlier.colour = NA) +
scale_y_log10(labels = scales::dollar_format(prefix = "£")) +
labs(
x = NULL, y = "GDPR fine (EUR)",
title = "GDPR fines levied by article",
subtitle = "For 250 violations in 25 countries"
) +
theme_minimal() +
theme(legend.position = "none")
From the beeshart I can see that ther is a bug difference in the size of the fine and the different articles. Article 15 is accosiated with the smallest fine and for articles 5 and 6 you get a highere fine.
Know I will prefer the data for the modelling.
# Back to one row to on violation.
gdpr_violation <- gdp_tidy %>%
mutate(value = 1) %>%
select(-article_violated) %>%
# article and value is gonna be maded wider
pivot_wider(
names_from = articles, values_from = value,
values_fn = list(value = max),
values_fill = list(value = 0)
) %>%
janitor::clean_names()
gdpr_violation
## # A tibble: 219 x 9
## id price country total_articles art_13 art_5 art_6 art_32 art_15
## <dbl> <dbl> <chr> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2 2500 Romania 4 1 1 1 0 0
## 2 3 60000 Spain 2 0 1 1 0 0
## 3 5 150000 Romania 1 0 0 0 1 0
## 4 6 20000 Romania 2 0 0 0 1 0
## 5 7 200000 Greece 2 0 1 0 0 0
## 6 9 30000 Spain 2 0 1 1 0 0
## 7 10 9000 Romania 2 0 1 1 0 0
## 8 11 195407 Germany 3 0 0 0 0 1
## 9 12 10000 Belgium 1 0 1 0 0 0
## 10 13 644780 Poland 1 0 0 0 1 0
## # ... with 209 more rows
With this data we are ready to take the next step and start building our model.
One key step before building the model is the prepocess the data.
library(tidymodels)
# Data preprocessing
gdpr_rec <- recipe(price ~ ., data = gdpr_violation) %>%
update_role(id, new_role = "id") %>%
step_log(price, base = 10, offset = 1, skip = TRUE) %>% # skip: i tilfælde vi ikke har et outcome varibale
# There is to many country
step_other(country, other = "Other") %>%
step_dummy(all_nominal()) %>%
# fjerner ting som ingen varians har.
step_zv(all_predictors())
# We set a recipe to model our data.
gdpr_prep <- prep(gdpr_rec)
# For train the model use prep
gdpr_prep
## Data Recipe
##
## Inputs:
##
## role #variables
## id 1
## outcome 1
## predictor 7
##
## Training data contained 219 data points and no missing data.
##
## Operations:
##
## Log transformation on price [trained]
## Collapsing factor levels for country [trained]
## Dummy variables from country [trained]
## Zero variance filter removed no terms [trained]
The modelling process in tidymodels is build on a recipe like when you are baking. It makes sence because you can see both process as a algoritme, which is just some steps you are doing to complete your task.
id
is not either but we want to keep it.price
, which is the amount of the fine.country
, so the other we collapses with Other
.Until know we haven´t don anything but only defined a lot of stuff. With prep
we evaluted our data.
Here we introduced the workflow()
which can be associates with lego blocks. Here
we can have both the recipe and model (our model is a OLS model).
# How does our data look like know?
juice(gdpr_prep)
## # A tibble: 219 x 14
## id total_articles art_13 art_5 art_6 art_32 art_15 price country_Czech.R~
## <dbl> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2 4 1 1 1 0 0 3.40 0
## 2 3 2 0 1 1 0 0 4.78 0
## 3 5 1 0 0 0 1 0 5.18 0
## 4 6 2 0 0 0 1 0 4.30 0
## 5 7 2 0 1 0 0 0 5.30 0
## 6 9 2 0 1 1 0 0 4.48 0
## 7 10 2 0 1 1 0 0 3.95 0
## 8 11 3 0 0 0 0 1 5.29 0
## 9 12 1 0 1 0 0 0 4.00 0
## 10 13 1 0 0 0 1 0 5.81 0
## # ... with 209 more rows, and 5 more variables: country_Germany <dbl>,
## # country_Hungary <dbl>, country_Romania <dbl>, country_Spain <dbl>,
## # country_Other <dbl>
# workflow, contain object that let you carrie stuff around.
gdpr_workflow <- workflow() %>%
add_recipe(gdpr_rec) %>%
add_model(linear_reg() %>%
set_engine("lm"))
# I want a model wark flow and get a linear model.
# prepoccesor + model
#
gdpr_workflow
## == Workflow ==============================================================================================================
## Preprocessor: Recipe
## Model: linear_reg()
##
## -- Preprocessor ----------------------------------------------------------------------------------------------------------
## 4 Recipe Steps
##
## * step_log()
## * step_other()
## * step_dummy()
## * step_zv()
##
## -- Model -----------------------------------------------------------------------------------------------------------------
## Linear Regression Model Specification (regression)
##
## Computational engine: lm
When we normally have a model we want to fit it. This is an important aspect in modelling because this tell us have well our model is.
gdpr_fit <- gdpr_workflow %>%
fit(data = gdpr_violation)
(gdpr_fit)
## == Workflow [trained] ====================================================================================================
## Preprocessor: Recipe
## Model: linear_reg()
##
## -- Preprocessor ----------------------------------------------------------------------------------------------------------
## 4 Recipe Steps
##
## * step_log()
## * step_other()
## * step_dummy()
## * step_zv()
##
## -- Model -----------------------------------------------------------------------------------------------------------------
##
## Call:
## stats::lm(formula = formula, data = data)
##
## Coefficients:
## (Intercept) total_articles art_13
## 3.76607 0.47957 -0.76251
## art_5 art_6 art_32
## -0.41869 -0.55988 -0.15317
## art_15 country_Czech.Republic country_Germany
## -1.56765 -0.64953 0.05974
## country_Hungary country_Romania country_Spain
## -0.15532 -0.34580 0.42968
## country_Other
## 0.23438
So we can fit a model or a workflow.
Let us see if we can get anything out of weather country and fines are different.
gdpr_fit %>%
pull_workflow_fit() %>%
tidy() %>%
arrange(estimate) %>%
kable()
| term | estimate | std.error | statistic | p.value |
|---|---|---|---|---|
| art_15 | -1.5676538 | 0.4651576 | -3.3701564 | 0.0008969 |
| art_13 | -0.7625069 | 0.4074302 | -1.8715031 | 0.0626929 |
| country_Czech.Republic | -0.6495339 | 0.4667470 | -1.3916188 | 0.1655387 |
| art_6 | -0.5598765 | 0.2950382 | -1.8976404 | 0.0591419 |
| art_5 | -0.4186949 | 0.2828869 | -1.4800789 | 0.1403799 |
| country_Romania | -0.3457980 | 0.4325560 | -0.7994295 | 0.4249622 |
| country_Hungary | -0.1553232 | 0.4790037 | -0.3242631 | 0.7460679 |
| art_32 | -0.1531725 | 0.3146769 | -0.4867613 | 0.6269450 |
| country_Germany | 0.0597408 | 0.4189434 | 0.1425986 | 0.8867465 |
| country_Other | 0.2343787 | 0.3551225 | 0.6599939 | 0.5099950 |
| country_Spain | 0.4296805 | 0.3643060 | 1.1794494 | 0.2395796 |
| total_articles | 0.4795667 | 0.1656494 | 2.8950705 | 0.0041993 |
| (Intercept) | 3.7660677 | 0.4089156 | 9.2098904 | 0.0000000 |
The results makes perfectly sense and we see that if you have many GDPR violation then the fine is bigger.
gdpr_fit %>%
pull_workflow_fit() %>%
tidy() %>%
filter(p.value < 0.05) %>%
arrange(estimate) %>%
kable()
| term | estimate | std.error | statistic | p.value |
|---|---|---|---|---|
| art_15 | -1.5676538 | 0.4651576 | -3.370156 | 0.0008969 |
| total_articles | 0.4795667 | 0.1656494 | 2.895071 | 0.0041993 |
| (Intercept) | 3.7660677 | 0.4089156 | 9.209890 | 0.0000000 |
If you violates art_15 which is if you dont give the right of access by data subject, then you get a lower fine.
What if we relax it a litlle bit?
gdpr_fit %>%
pull_workflow_fit() %>%
tidy() %>%
filter(p.value < 0.1) %>%
kable()
| term | estimate | std.error | statistic | p.value |
|---|---|---|---|---|
| (Intercept) | 3.7660677 | 0.4089156 | 9.209890 | 0.0000000 |
| total_articles | 0.4795667 | 0.1656494 | 2.895071 | 0.0041993 |
| art_13 | -0.7625069 | 0.4074302 | -1.871503 | 0.0626929 |
| art_6 | -0.5598765 | 0.2950382 | -1.897640 | 0.0591419 |
| art_15 | -1.5676538 | 0.4651576 | -3.370156 | 0.0008969 |
Here we see that violation of article 13, 6 and 15 gives you are smaller fine.
We know want to explore the result even more and try to predict. Here tidymodels is really good.
As we have seen from the resulta we have big p-values. But I understand the results
better if I see them visual. I will make prediction with the help of workflow()
Let´s create some example new data that we are interested in.
new_data <- crossing(
country = "Other",
art_5 = 0:1,
art_6 = 0:1,
art_13 = 0:1,
art_15 = 0:1,
art_32 = 0:1
) %>%
mutate(
total_articles = art_5 +
art_6 +
art_13 +
art_15 +
art_32,
id = row_number()
)
new_data %>%
head() %>%
kable()
| country | art_5 | art_6 | art_13 | art_15 | art_32 | total_articles | id |
|---|---|---|---|---|---|---|---|
| Other | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| Other | 0 | 0 | 0 | 0 | 1 | 1 | 2 |
| Other | 0 | 0 | 0 | 1 | 0 | 1 | 3 |
| Other | 0 | 0 | 0 | 1 | 1 | 2 | 4 |
| Other | 0 | 0 | 1 | 0 | 0 | 1 | 5 |
| Other | 0 | 0 | 1 | 0 | 1 | 2 | 6 |
The above code are making some new data. With the new data we can make prediction analysis. In the next step I will calculate the mean and confidence interval.
mean_pred <- predict(gdpr_fit,
new_data = new_data
)
conf_int_pred <- predict(gdpr_fit,
new_data = new_data,
type = "conf_int"
)
gdpr_res <- new_data %>%
bind_cols(mean_pred) %>%
bind_cols(conf_int_pred)
gdpr_res
## # A tibble: 32 x 11
## country art_5 art_6 art_13 art_15 art_32 total_articles id .pred
## <chr> <int> <int> <int> <int> <int> <int> <int> <dbl>
## 1 Other 0 0 0 0 0 0 1 4.00
## 2 Other 0 0 0 0 1 1 2 4.33
## 3 Other 0 0 0 1 0 1 3 2.91
## 4 Other 0 0 0 1 1 2 4 3.24
## 5 Other 0 0 1 0 0 1 5 3.72
## 6 Other 0 0 1 0 1 2 6 4.04
## 7 Other 0 0 1 1 0 2 7 2.63
## 8 Other 0 0 1 1 1 3 8 2.96
## 9 Other 0 1 0 0 0 1 9 3.92
## 10 Other 0 1 0 0 1 2 10 4.25
## # ... with 22 more rows, and 2 more variables: .pred_lower <dbl>,
## # .pred_upper <dbl>
Know we have the prediction in log euros. We also see we can get the confidence interval.
From the res we have that for different amount violation what can we predict what they have violated.
gdpr_res %>%
filter(total_articles == 1) %>%
pivot_longer(art_5:art_32) %>%
filter(value > 0) %>%
mutate(
name = str_replace_all(name, "art_", "Article "),
name = fct_reorder(name, .pred)
) %>%
ggplot(aes(name, 10^.pred, color = name)) +
geom_point(size = 3.5) +
geom_errorbar(aes(
ymin = 10^.pred_lower,
ymax = 10^.pred_upper
),
width = 0.2, alpha = 0.7
) +
theme_minimal() +
labs(
x = NULL, y = "Increase in fine (EUR)",
title = "Predicted fine for each type of GDPR article violation",
subtitle = "Modeling based on 250 violations in 25 countries"
) +
scale_y_log10(labels = scales::dollar_format(prefix = "€", accuracy = 1)) +
theme(legend.position = "none")
Know we have a model over the how expensive each fine are and which will give you the highest.


Ajax Contact Form
A simple Ajax based Contact form using jQuery and PHP.
Learn more »
Name
Email
Subject
Message
Send


Should the Flow wrap around? Defaults to true
.
The opacity of the last visible item on either side. The opacity of each item will be calculated by the
calcOpacity
function. Defaults to 1
.
Fixes the item size, to the calculated size. No adjustments will be done. Images will be croped if bigger.
Defaults to false
.
Determines how hard it is to drag the flow. If set to 0
dragging of the flow is deactivated. Defaults to
1
.
A flowSpeedFactor > 1
will speedup the scrollspeed, while a factor between 0
and 1
will slow it down.
Defaults to 1
.
Defines the keyCodes and the functions, which are triggerd on a keydown event within the ContentFlow. All defined functions are bound to the ContentFlow object. To disable this functionality, set this to an empty object.
Defaults to
{
13: function () { this._onclickActiveItem(this._activeItem) }, // return/enter key
37: function () { this.moveTo('pre') }, // left arrow
38: function () { this.moveTo('visibleNext') }, // up arrow
39: function () { this.moveTo('next') }, // right arrow
40: function () { this.moveTo('visiblePre') } // down arrow
}
Grace time in milliseconds for images to load. Defaults to 3000
.
Maximum item height in px. If set to a value greater than 0
the item size will be calculated from this
value instead relative to the width of the ContentFlow. Defaults to 0
.
Set the "surface"-color of the reflection. If set to 'overlay' the image given by the option
reflectionOverlaySrc
will be lain over the reflection. Defaults to transparent
.
Set the size of the gap between the image and the reflection image relative to the original image size.
Defaults to 0
.
Set the size of the reflection image relative to the original image. Defaults to 0.5
.
Position of item relative to it's coordinate. Defaults to top center
. So by default, the item will be
placed above the coordinate point and centered horizontally. If set, this option overrides the
calcRelativeItemPosition
option.
Factor by which the item will be scaled. Default to 1
.
Factor to scale content images in landscape format by. If set to max
, the height of an landscape image
content will be set to the height of the item. Defaults to 1
.
Factor to scale content images in portrait format by. If set to max
, the width of an portait image content
will be set to the width of the item. Defaults to 1
.
Flow will start scrolling on load from this item. If set to none
the flow will not scroll in. Default to
pre
.
Scales by how many items the flow will be moved with one usage of the mousewheel. Negative values will
reverse the scroll direction. If set to 0
scrolling with the mouse wheel is deactivated. Defaults to 1
.
Active Content item to start with. Defaults to center
Addons the ContentFlow should use. Defaults to all
Will turn the ContentFlow 90 degree counterclockwise. This will automatically swap calculated positions and
sizes where needed. You do not have to adjust any calculations or sizes. Should work with any AddOn out of
the box. Defaults to false
.
Number of items to show on either side of the active Item. If set to 0
it will be set to the square root of
the number of items in the flow. Defaults to 0
.
Called to calculate the position of an item element within the flow.
An item to process.
The calculated position of the item within the flow.
Called to set the calculation function of the relative font-size of an item.
An item to process.
The calculated font size, must not be negative.
Called to calculate the opacity of each item.
An item to process.
The calculated opacity in the range 0...1
.
Called to calculate the position of an item relative to it's coordinates. Please note that this function will
be overridden by the relativeItemPosition
option.
An item to process.
The calculated relative position of the item.
Called to set the calculation function of the size of a visible item
An item to process.
The calculated size of the item.
Called to set the calculation function of the width of each step to get the next position of the flow. diff
is the targetItemPosition - currentPosition
The different between the target item position and the current position in pixels.
The next position in the flow.
Called to set the calculation function of the z-index of each item. The z-index is only valid within the flow itself.
An item to process.
The calculated z-index in the range -32768...32768
.
Called when ever an item is redrawn. Use with caution, because this method is easily called many thousend times.
An item to process.
Called if an item becomes the active item.
The item on which the event occurred.
Called if the active item becomes an inactive item.
The item on which the event occurred.
Called each time a new target is set i.e by calling the moveTo method.
The item on which the event occurred.
Called if the target item becomes the active item.
The item on which the event occurred.
Called if the active item is clicked.
The item on which the event occurred.
Called if an inactive item is clicked.
The item on which the event occurred.
Called if the next
button item is clicked.
Called if the pre
button item is clicked.
Generated using TypeDoc
Describes the configuration for a content flow gallery.


Dr. Kanhaiyalal Lekhwani (born 1942, Hyderabad, Sindh) M.A. Ph.D.(linguistics); Former Associate Professor and Head, Department of Sindhi, WRLC (Central Institute of Indian Languages, Ministry of HRD, Government of India) Deccan College, Pune. He has been engaged in research, training, designing instructional material and actively organising conferences, academic seminars, expert workshops, language policy meetings.
Over the past four decades, Dr. Lekhwani has conducted and organised several Sindhi language and literature related orientation programs.
Worked as a Joint Secretary, Linguistic Society of India; Member, Maharashtra Rajya Sindhi Sahitya Academy, Mumbai ; Member, the Curriculum Committee for Secondary School Level Course in Sindhi, National Institute of Open Schooling, New Delhi; Expert Member , Sindhi Language Teaching Progamme, National Council For Promotion of Sindhi Language, New Delhi; Member, Expert Committee Sindhi Language and Culture Centre, IGNOU, New Delhi; Member, Sindhi Advisory Board, Sahitya Akademi, New Delhi and Member, Advisory Panel for Sindhi, National Book Trust - India, New Delhi
Received many National and International Awards, Dr. Lekhwani continues contributing in the field of Sindhi Language, Literature and Education.
Set of three books: Text Book, Copy Book, Teachers' Manual. Published in both scripts: Devanagiri Sindhi and Arabic Sindhi; CIIL Mysore
Specially prepared for second language learners, having 72 lessons with English meaning and grammatical notes in English.(Pages - XXI -882). CIIL Mysore
Having 30 lessons with exercises. Most of the lessons are based on topics related to Sindhi Culture. Published in both scripts: Devanagiri Sindhi(Pages - XII + 143) and Arabic Sindhi(Pages - XII + 152). CIIL Mysore
30 selected literary pieces with exercises. Published in both scripts: Devanagiri Sindhi(Pages: XII + 211) and Arabic Sindhi(Pages: XII + 223). CIIL Mysore
A brief history of Sindhi language and literature upto 2008 is given in this book. Published in both scripts: Devanagiri Sindhi(Pages: 398) and Arabic Sindhi(Pages: 397). CIIL Mysore.
Published in both sripts: Devanagiri Sindhi(Pages : 398) and Arabic Sindhi(Pages : 397). Lekhwani Publication, Pune.
Supplementary Reader for foreigners learning Sindhi. Selected, graded Sindhi news items with English translation and exercises are given in the book. Indian Institute of Language Studies, Dunwood Press, MD 70782 USA
Evaluation and testing of Sindhi Language upto X Standard, prepared along with other scholars. Published in both scripts: Devanagiri Sindhi(Pages: XII + 235) and Arabic Sindhi(Pages: XII + 231). CIIL Mysore.
About 12000 lexical items in Sindhi in both scripts (Devanagiri and Arabic) with Hindi meanings are given in this book. (Pages: VIII + 162). Prakash Publications, Pune
About 13000 lexical items in Sindhi in both scripts (Devanagiri and Arabic and Roman transliteration) with English meanings are given in this book.(Pages: 194) Prakash Publications, Pune.
About 13000 lexical items in Sindhi in both scripts (Devanagiri and Arabic and Roman transliteration) with English and Hindi meanings are given in this book.(Pages: 194) Prakash Publications, Pune.
Sindhi words (in both scripts) with Hindi and English meanings with pictures in 64 classified chapters are given in this book.(Pages: IV + 64). Prakash Publications, Pune.
Sindhi lexical items in both scripts are given with pictures. (Pages: XII + 136). CIIL Mysore.
Sindhi grammatical technical terms used upto higher secondary level are given in English with Sindhi meanings in both scripts. (Pages: 128). Lekhwani Publications, Pune.
About 16000 Sindhi lexical items in both sripts(Devanagiri Sindhi and Arabic Sindhi) with Hindi meanings are given. Published by Kanhaiyalal Lekhwani, Pune. Its 3rd edition is published by Sindhi Academy Delhi in 2011.(Pages: XXII + 441)
About 17000 lexical items in both scripts (Devanagiri Sindhi and Arabic Sindhi) with English meanings are given. (Pages: VI + 723). Published by National Council for Promotion of Sindhi Language(NCPSL), New Delhi.
About 13000 basic lexical items with their inflectional forms in both scrips(Devanagiri Sindhi and Arabic Sindhi) are given in the book. Compiled along with Dr. Bhojraj Lekhwani. (Pages: XVIII + 551). Published By: Chhattisgarh Sindhi Sahitya Sansthan (Akademy), Raipur.
Conducted the survey of Sindhi Education in India. Its report has been published in book form by Sindhi Academy, Delhi. (Pages: X + 119)
Sindhi translations of National Curriculum Framework - 2005 is given. (Pages: XXI +164). Published by NCERT, New Delhi.
24 selected Sindhi short stories on the Partition written by Indian Sindhi authors are given in this book. Published by National Book Trust- India, New Delhi.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close ProjectLorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close ProjectLorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close ProjectLorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close ProjectLorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close ProjectLorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close Project


compound:prt
: phrasal verb particle
The phrasal verb particle relation identifies an idiomatic phrasal verb, and holds between the verb and its particle (tagged as ADP). It is a subtype of the compound relation.
 These would typically become an ADV with the relation advmod:
The dentist pulled out the tooth
advmod(pulled, out)
The dentist pulled the tooth out
advmod(pulled, out)
Treebank Statistics (UD_English)
This relation is a language-specific subtype of compound.
821 nodes (0%) are attached to their parents as compound:prt
.
821 instances of compound:prt
(100%) are left-to-right (parent precedes child).
Average distance between parent and child is 1.31181485992692.
    PUNCT . _ 1 punct _ _
Treebank Statistics (UD_English-ESL)
This relation is a language-specific subtype of compound.
177 nodes (0%) are attached to their parents as compound:prt
.
177 instances of compound:prt
(100%) are left-to-right (parent precedes child).
Average distance between parent and child is 1.51977401129944.

Average distance between parent and child is 1.16666666666667.
   _ PUNCT Period _ 2 punct _ _
Treebank Statistics (UD_English-ParTUT)
This relation is a language-specific subtype of compound.
65 nodes (0%) are attached to their parents as compound:prt
.
64 instances of compound:prt
(98%) are left-to-right (parent precedes child).
Average distance between parent and child is 1.10769230769231.


Toggle navigation
Anime
Movies
Tv-Series
Games
Books
Blogs
create your blog here
Upload Image
Title
Description


The Composition relationship indicates that an object consists of a number of other objects.
In contrast to the Aggregation relationship, an object can be part of only one composition.
A Composition relationship is always allowed between two instances of the same element type.
Structural.
An Application Component may be composed of two or more sub-components.


Celine Dion surprises fans at NYC karaoke contest with performance of ‘Flying On My Own’
by Julius YoungCeline Dion will handle this one, thank you very much.
Fans were treated to an up-close-and-personal performance by the music queen when the 51-year-old diva popstar crashed her own album release celebration at Lips Drag Queen Show Palace Restaurant and Bar in New York City on Thursday night.
A witness at the venue told Entertainment Tonight that along with celebrating Dion’s release of her newest album “Courage,” ten people also took part in a karaoke competition and following the wrap of the last singer, Dion appeared on stage to the disbelief of many in attendance.
CELINE DION COMMENTS ON FANS WORRIED ABOUT HER APPEARANCE
Fans weren’t notified Dion would be showing up, according to the insider, however around 12:15 a.m., the “My Heart Will Go On” songstress arrived and took photos with eager fans.
"[Celine] talked a bit, left, but immediately came back and said she couldn’t leave without giving us something," the eyewitness told ET, adding that Dion then sang her hit, “Flying On My Own.”
CELINE DION BIOPIC 'THE POWER OF LOVE' IN THE WORKS
According to the outlet, Dion then addressed the audience while on stage and told the crowd she hopes they enjoy the album and she hopes her late husband and manager, René Angélil, likes it as well. She then put her hand in the air, the eyewitness told ET.
The Grammy-winning singer said she felt motivated recently to get back on the road and create music for the first time since the death of Angélil in 2016.
"It's going to be the Celine that you know," she told The Associated Press of her album. "Celine at 51. The Celine that you know. The Celine with producers and writers she's worked with. It's the Celine with new producers and new songwriters. ... The sound will change a little bit, and music changes. But I will always remain who I am."
CLICK HERE TO GET THE FOX NEWS APP
Dion is set to kick off her Courage World Tour in Quebec City, Canada, on Sept. 18, and will make stops in more than 50 cities, including Miami, Los Angeles, Montreal, Chicago and Brooklyn.


 Pick a style and get a random beer recommended. Any beer recommended is kept in your "Beer History" for easy reference. Want to see a list of all IPA's? Just check out "Browse"! Find one you like, just ask us to recommend a similar beer and we'll do the rest. We're excited to open your eyes to a whole new world of beer in Seattle.
|
Kasim Siddiqui
|
Hi, I am Kasim (pronounced K-awesome) Siddiqui (pronounced CD-key). My parents are Pakistani and I was born in Seattle. I studied Material Science and Engineering at UW. I moved Portland to work at Intel as a FIB circuit Engineer. After 3 years I quit my job to travel around Asia with my wife. Right now I am taking a web development course at Codefellows and I plan on taking a python accelerator. |
|
Carl Reiner
|
Carl is a coding guru. |
|
Chris Holt
|
Chris is amazing front end dude. |
|
Craig Campbell
|
Former high school chemistry/physics teacher turned code ninja. Zymurgist, avid beer enthusiast and connoisseur, monkey trainer (aka father of a 4-year-old). Yup thats all I have the energy to write about myself. Chris, make something up if you need more text! |


My Pokedex
Alakazam
Arceus
Machamp
Hello! My name is MingKinhal and I'm a Pokemon trainer!
Take a look at my pokedex of pokemon
Alakazam
HP:
Attack:
Defense:
Abilities:
Arceus
HP:
Attack:
Defense:
Abilities:
Machamp
HP:
Attack:
Defense:
Abilities:


--- layout: documentation title: FileSystemFlagListType ---
The FileSystemFlagListType is a listing of the flags specified for the volume by the file system.
| Field Name | Type | Description |
|---|---|---|
| File_System_Flag1..20 | VolumeFileSystemFlagType |
The File_System_Flag field specifies a particular flag used on the volume by the file system. |


Introduction
Welcome to Blockchain.com's Exchange API and developer documentation. These documents detail and give examples of various functionality offered by the API such as receiving real time market data, requesting balance information and performing trades.
View the full REST API documentation here.
To Get Started
- Create or log into your existing Blockchain.com Exchange account
- Select API from the drop down menu
- Fill out form and click “Create New API Key Now”
- Once generated you can view your keys under API Settings
Websocket API
The Websocket API can be used to receive market data and to interact with the trading system in real time. Every message is in a JSON format and trading messages use the FIX standard for naming of fields, and message types.
Each type of data is provided over a dedicated channel. Clients need to subscribe to all relevant channels they wish to receive real time updates from.
Authentication
# Simple python websocket client
# https://github.com/websocket-client/websocket-client
from websocket import create_connection
options = {}
options['origin'] = 'https://exchange.blockchain.com'
url = "wss://ws.blockchain.info/mercury-gateway/v1/ws"
ws = create_connection(url, **options)
msg = '{"token": "{API_SECRET}", "action": "subscribe", "channel": "auth"}'
ws.send(msg)
result = ws.recv()
print(result)
# { "seqnum":0,
# "event":"subscribed",
# "channel":"auth",
# "readOnly":false }
ws.close()
Interaction with the API will require an API key. To generate one, go to the API section of your Blockchain.com Exchange user settings. Each API key generated will be linked to your account. The only required information is a key name. Optionally you can set trading access, and IP address whitelisting.
Once your key is created you'll be shown an API Key and API Secret. Store the secret in a safe place because it will only be shown once.
Connection
The websocket endpoint is,
| Environment | URI |
|---|---|
| prod | wss://ws.blockchain.info/mercury-gateway/v1/ws |
In order to connect you have to add the following headers to the connection request
| Environment | Headers |
|---|---|
| prod | Origin: https://exchange.blockchain.com |
Requests
Each Message sent to the server will have at least 2 fields: action and channel.
Channel
A channel provides context about the type of data being communicated between the client and server. There are multiple channels available:
| Channel | Visibility | Description |
|---|---|---|
| heartbeat | anonymous | Receive heartbeat messages |
| l2 | anonymous | Receive level 2 order book data (aggregated) |
| l3 | anonymous | Receive level 3 order book data (aggregated) |
| prices | anonymous | Receive candlestick market data |
| symbols | anonymous | Receive symbol messages |
| ticker | anonymous | Receive ticker messages |
| trades | anonymous | Receive trade execution messages |
| auth | authenticated | To authenticate a web socket connection |
| balances | authenticated | To receive balance updates |
| trading | authenticated | Submit & cancel orders, receive order snapshots and updates |
Action
action
describes what action to take for the provided channel. The following standard action's are supported by all channels (with the exception of the auth channel):
| Action | Description |
|---|---|
| subscribe | Subscribe to the provided channel and attributes |
| unsubscribe | Unsubscribe from the provided channel and attributes |
A channel may expose other bespoke actions.
Response
Sequence Numbers
Each message sent from the server will contain a sequence number seqnum
which will be incremented by 1 with each message. If the client receives a seqnum
which has skipped one or more sequences, it indicates that a message was missed and the client is recommended to restart the websocket connection.
Event
In addition, each response field will contain an event field with the corresponding channel to indicate the purpose of the message. The following events are supported:
| Event | Type | Description |
|---|---|---|
| subscribed | admin | The channel was successfully subscribed to |
| unsubscribed | admin | The channel was successfully unsubscribed to |
| rejected | admin | the last action for the channel was rejected. A text field will be provided about the reason for the reject |
| snapshot | app | A channel snapshot has been provided |
| updated | app | An update corresponding to the channel has occurred |
Each time an action
is applied to a channel, an administrative event is sent from the server to notify whether the action
was applied successfully.
Data Types
All Messages use the standard JSON format. The following data types are supported:
| Type | Description | Example |
|---|---|---|
| number | Signed decimal number | 1234.45 |
| string | UTF-8 encoded unicode string | "Authentication Failed" |
| timestamp | UTC Timestamps following the convention YYYY-MM-DDTHH:MM:SS.ssssssZ or YYYY-MM-DDTHH:MM:SS.000ssssssZ or YYYY-MM-DDT00:00:00Z |
Fair usage and rate limits
{
"event": "rejected",
"text": "Connection throttling enabled, your messages will be ignored."
}
Currently there is a limit of 1200 messages per minute. If the limit is exceeded, you will receive a rejected
event. After waiting a minute, normal functionality will resume and you will be able to send messages again.
Response data throttling and delays
The response and update messages are never delayed, clients will get every update as soon as it happens.
Anonymous Channels
Heartbeat
Subscribe to channel:
{
"action": "subscribe",
"channel": "heartbeat"
}
A heartbeat can be sent by the server by subscribing to the heartbeat
channel.
Server response:
{
"seqnum": 0,
"event": "subscribed",
"channel": "heartbeat"
}
The server will send confirmation of the subscription.
Snapshot Example:
{
"seqnum": 1,
"event": "updated",
"channel": "heartbeat",
"timestamp": "2019-05-31T08:36:45.666753Z"
}
Snapshot messages are sent every 5 seconds and have the following format:
L2 Order Book
Subscribe to channel:
{
"action": "subscribe",
"channel": "l2",
"symbol": "BTC-USD"
}
Level 2 Order Book data is available through the l2
channel. This channel returns the volume available at each price. All the price levels are retrieved with this channel. Subscribing is done per symbol. Each entry in bids and asks arrays is a price level, along with its price (px
), quantity (qty
) and number of orders (num
) attributes.
Server response:
{
"seqnum": 1,
"event": "subscribed",
"channel": "l2",
"symbol": "BTC-USD"
}
Snapshots:
{
"seqnum": 2,
"event": "snapshot",
"channel": "l2",
"symbol": "BTC-USD",
"bids": [
{
"px": 8723.45,
"qty": 1.45,
"num": 2
},
{
"px": 8124.45,
"qty": 123.45,
"num": 1
}
],
"asks": [
{
"px": 8730.0,
"qty": 1.55,
"num": 2
},
{
"px": 8904.45,
"qty": 13.66,
"num": 2
}
]
}
There is no ordering guarantee in bids and asks entries.
{
"seqnum": 3,
"event": "updated",
"channel": "l2",
"symbol": "BTC-USD",
"bids": [
{
"px": 8723.45,
"qty": 1.1,
"num": 1
}
],
"asks": []
}
An update with qty equal to 0, means the price should be removed.
{
"seqnum": 4,
"event": "updated",
"channel": "l2",
"symbol": "BTC-USD",
"bids": [
{
"px": 8723.45,
"qty": 0.0,
"num": 0
}
],
"asks": []
}
L3 Order Book
Subscribe to channel:
{
"action": "subscribe",
"channel": "l3",
"symbol": "BTC-USD"
}
Level 3 Order Book data is available through the l3
channel. This channel returns all the order updates reaching the exchange; by applying the updates to the snapshot you can recreate the full state of the orderbook. Subscribing is done per symbol. Each entry in bids and asks arrays is an order, along with its id (id
), price (px
) and quantity (qty
) attributes.
Server response:
{
"seqnum": 1,
"event": "subscribed",
"channel": "l3",
"symbol": "BTC-USD"
}
Example snapshot:
{
"seqnum": 2,
"event": "snapshot",
"channel": "l3",
"symbol": "BTC-USD",
"bids": [
{
"id": "1234",
"px": 8723.45,
"qty": 1.1
},
{
"id": "1235",
"px": 8723.45,
"qty": 0.35
},
{
"id": "234",
"px": 8124.45,
"qty": 123.45
}
],
"asks": [
{
"id": "2222",
"px": 8730.0,
"qty": 0.65
},
{
"id": "2225",
"px": 8730.0,
"qty": 0.9
},
{
"id": "2343",
"px": 8904.45,
"qty": 8.66
},
{
"id": "2353",
"px": 8904.45,
"qty": 5.0
}
]
}
Updates will follow. An update with qty equal to 0, means the order should be removed.
{
"seqnum": 3,
"event": "updated",
"channel": "l3",
"symbol": "BTC-USD",
"bids": [
{
"id": "1234",
"px": 8723.45,
"qty": 0
}
],
"asks": []
}
Prices
Subscribe to channel:
{
"action": "subscribe",
"channel": "prices",
"symbol": "BTC-USD",
"granularity": 60
}
To receive candlestick market data you can subscribe to the prices channel.
Subscriptions are per symbol
and granularity
(in seconds) has to be specified.
Supported granularity values are: 60, 300, 900, 3600, 21600, 86400
You can subscribe for multiple symbols but not for multiple granularities per symbol.
Server response:
{
"seqnum": 0,
"event": "subscribed",
"channel": "prices",
"symbol": "BTC-USD"
}
The server will send confirmation of the subscription.
Updated event on the prices channel:
{
"seqnum": 2,
"event": "updated",
"channel": "prices",
"symbol": "BTC-USD",
"price": [1559039640, 8697.24, 8700.98, 8697.27, 8700.98, 0.431]
}
The price data is an array consisting of [timestamp
, open
, high
, low
, close
, volume
]
Symbols
To receive symbol updates, subscribe to the symbols
channel. The server will send confirmation of the subscription. The next message on this channel will be a snapshot of the current symbol
status.
When the symbol
is not halted the auction data in the message may be blank.
When a symbol
is in a halt state the auction data will populate as the book builds. When an opening time has been chosen, the auction-time
field will show the opening time. Subsequent updates will be sent only if the symbol
status changes in any way.
Field Description
| Field | Description |
|---|---|
| auction-price | If the symbol is halted and will open on an auction, this will be the opening price. |
| auction-size | Opening size |
| auction-time | Opening time in HHMM format. |
| imbalance | Auction imbalance. If > 0 then there will be buy orders left over at the auction price. If < 0 then there will be sell orders left over at the auction price. |
| status | Symbol status; open, close, suspend, halt, halt-freeze. |
| base_currency | The currency quantities are expressed in |
| base_currency_scale | The number of decimals the currency can be split in |
| counter_currency | The currency prices are expressed in |
| counter_currency_scale | The number of decimals the currency can be split in |
| min_price_increment | The price of the instrument must be a multiple of min_price_increment * (10^-min_price_increment_scale) |
| min_price_increment_scale | The price of the instrument must be a multiple of min_price_increment * (10^-min_price_increment_scale) |
| min_order_size | The minimum quantity for an order for this instrument must be min_order_size*(10^-min_order_size_scale) |
| min_order_size_scale | The minimum quantity for an order for this instrument must be min_order_size*(10^-min_order_size_scale) |
| max_order_size | The maximum quantity for an order for this instrument is max_order_size*(10^-max_order_size_scale). If this equal to zero, there is no limit |
| max_order_size_scale | The maximum quantity for an order for this instrument is max_order_size*(10^-max_order_size_scale). If this equal to zero, there is no limit |
Subscribe to channel:
{
"action": "subscribe",
"channel": "symbols"
}
Server response:
{
"seqnum": 0,
"event": "subscribed",
"channel": "symbols"
}
Example symbol status:
{
"seqnum": 1,
"event": "snapshot",
"channel": "symbols",
"symbols": {
"BTC-USD": {
"base_currency": "BTC",
"base_currency_scale": 8,
"counter_currency": "USD",
"counter_currency_scale": 2,
"min_price_increment": 10,
"min_price_increment_scale": 0,
"min_order_size": 50,
"min_order_size_scale": 2,
"max_order_size": 0,
"max_order_size_scale": 8,
"lot_size": 5,
"lot_size_scale": 2,
"status": "halt",
"id": 1,
"auction_price": 0.0,
"auction_size": 0.0,
"auction_time": "",
"imbalance": 0.0
},
"ETH-BTC": {
"base_currency": "ETH",
"base_currency_scale": 8,
"counter_currency": "BTC",
"counter_currency_scale": 8,
"min_price_increment": 100,
"min_price_increment_scale": 8,
"min_order_size": 220001,
"min_order_size_scale": 8,
"max_order_size": 0,
"max_order_size_scale": 8,
"lot_size": 0,
"lot_size_scale": 0,
"status": "open",
"id": 3,
"auction_price": 0.0,
"auction_size": 0.0,
"auction_time": "",
"imbalance": 0.0
},
"BTC-EUR": {
"base_currency": "BTC",
"base_currency_scale": 8,
"counter_currency": "EUR",
"counter_currency_scale": 2,
"min_price_increment": 10,
"min_price_increment_scale": 0,
"min_order_size": 50,
"min_order_size_scale": 2,
"max_order_size": 0,
"max_order_size_scale": 0,
"lot_size": 0,
"lot_size_scale": 0,
"status": "closed",
"id": 4,
"auction_price": 0.0,
"auction_size": 0.0,
"auction_time": "",
"imbalance": 0.0
},
"ETH-EUR": {
"base_currency": "ETH",
"base_currency_scale": 8,
"counter_currency": "EUR",
"counter_currency_scale": 2,
"min_price_increment": 10,
"min_price_increment_scale": 0,
"min_order_size": 50,
"min_order_size_scale": 2,
"max_order_size": 500,
"max_order_size_scale": 2,
"lot_size": 0,
"lot_size_scale": 0,
"status": "open",
"id": 5,
"auction_price": 0.0,
"auction_size": 0.0,
"auction_time": "",
"imbalance": 0.0
},
"ETH-USD": {
"base_currency": "ETH",
"base_currency_scale": 8,
"counter_currency": "USD",
"counter_currency_scale": 2,
"min_price_increment": 5,
"min_price_increment_scale": 0,
"min_order_size": 50,
"min_order_size_scale": 2,
"max_order_size": 0,
"max_order_size_scale": 0,
"lot_size": 0,
"lot_size_scale": 0,
"status": "open",
"id": 2,
"auction_price": 0.0,
"auction_size": 0.0,
"auction_time": "",
"imbalance": 0.0
}
}
}
Example not halted symbol:
{
"seqnum": 1,
"event": "updated",
"channel": "symbols",
"symbol": "BTC-USD",
"auction-price": 0,
"auction-size": 0,
"auction-time": "",
"imbalance": 0,
"status": "open"
}
Example halted symbol:
{
"seqnum": 1,
"event": "updated",
"channel": "symbols",
"symbol": "BTC-USD",
"auction-price": 4500.5,
"auction-size": 220.125,
"auction-time": "2230",
"imbalance": -0.5,
"status": "halt"
}
Ticker
Subscribe to channel:
{
"action": "subscribe",
"channel": "ticker",
"symbol": "BTC-USD"
}
In order to receive ticker updates, ticker
channel is available. Subscriptions are again per symbol. The server will send confirmation of the subscription.
Server response:
{
"seqnum": 0,
"event": "subscribed",
"channel": "ticker"
}
Example ticker snapshot:
{
"seqnum": 8,
"event": "snapshot",
"channel": "ticker",
"symbol": "BTC-USD",
"price_24h": 4988.0,
"volume_24h": 0.3015,
"last_trade_price": 5000.0
}
Trades
In order to receive trade updates on executions within each market across the Exchange, you can subscribe to the trades
channel.
Subscriptions are again per symbol.
{
"action": "subscribe",
"channel": "trades",
"symbol": "ETH-USD"
}
The server will send confirmation of the subscription.
{
"seqnum": 0,
"event": "subscribed",
"channel": "trades",
"symbol": "ETH-USD"
}
Example of a trade update:
{
"seqnum": 21,
"event": "updated",
"channel": "trades",
"symbol": "BTC-USD",
"timestamp": "2019-08-13T11:30:06.100140Z",
"side": "sell",
"qty": 8.5e-5,
"price": 11252.4,
"trade_id": "12884909920"
}
Authenticated Channels
Authenticated
To authenticate a web socket connection, the client must subscribe to the auth
channel passing a token field. Alternatively a client can provide the header cookie auth_token
on a new connection and then authentication will take place immediately without the need to subscribing to auth
channel.
If authentication is successful, the server will send an initial notification.
{
"seqnum": 0,
"event": "subscribed",
"channel": "auth"
}
If authentication was unsuccessful, the server will send the following notification:
{
"seqnum": 0,
"event": "rejected",
"channel": "auth",
"text": "Authentication Failed"
}
Trading
The client can submit and cancel orders, as well as receive order executions, through the trading
channel. The messages are in JSON format and the attribute names are using standardised FIX 4.2 Field names.
Below is a table showing the permitted FIX fields used as a JSON key for cancelling / creating an order:
| Tag | Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|---|
| 11 | clOrdID | string | YES | Reference field provided by client and cannot exceed 20 characters | "ABC" |
| 55 | symbol | string | YES | Blockchain symbol identifier | "BTC-USD" |
| 40 | ordType | string | YES | "market" for market "limit" for limit, "stop" for stop, "stopLimit" for stopLimit | "limit" |
| 59 | timeInForce | string | YES | "GTC" for Good Till Cancel, "IOC" for Immediate or Cancel, "FOK" for Fill or Kill, "GTD" Good Till Date | "GTC" |
| 54 | side | string | YES | "buy" for Buy, "sell" for Sell | "buy" |
| 38 | orderQty | number | YES | The order size in the terms of the base currency | 10.23 |
| 44 | price | number | required for limit and stopLimit order types | The limit price for the order | 0.12345 |
| 432 | expireDate | number | required for GTD orders | expiry date in the format YYYYMMDD | 20190318 |
| 99 | stopPx | number | required for limit and stopLimit order types | Price to trigger the stop order | 3500.12 |
| 110 | minQty | number | Optional for all market orders and for limit orders with IOC timeInForce | The minimum quantity required for an IOC fill | 10.0 |
| 18 | execInst | string | Optional for Limit Orders | The order is placed with Add Liquidity Only (aka Post Only): it will not match liquidity immediately. It will be rejected instead of matching liquidity in the market. | "ALO" |
Below is a table representing the different permutations permitted for the FIX fields, with X indicating what can be added and where O is not required:
| Market | Limit | Stop | Stop Limit | |
|---|---|---|---|---|
| clOrdID | X | X | X | X |
| symbol | X | X | X | X |
| ordType | X | X | X | X |
| timeInForce | O | X | X | X |
| side | X | X | X | X |
| orderQty | X | X | X | X |
| price | X | X | ||
| expireDate | O | |||
| stopPx | X | X | ||
| minQty | O | O |
The server can include the following additional FIX fields when notifying of an order update:
| Tag | Field | Type | Description | Example |
|---|---|---|---|---|
| 35 | msgType | string | "8" for ExecutionReport, "9" for OrderCancelRejected | "8" |
| 150 | execType | string | "0" for New, "4" for Canceled, "C" for Expired, "8" for Rejected, "F" for partial fill, "A" for Pending, "H" for Trade Break, "I" Order Status | "O" |
| 39 | ordStatus | string | ‘cancelled’, ‘expired’, ... | |
| 37 | orderID | string | The unique order id assigned by the exchange | "11111111" |
| 37 | execID | string | Unique identifier for the execution | "123456" |
| 32 | lastShares | number | The executed quantity for the order's last fill | 0.5678 |
| 31 | lastPx | number | The executed price for the last fill | 3500.12 |
| 151 | leavesQty | string | For Open and Partially Filled orders this is the remaining quantity open for execution. For Cancelled and Expired orders this is the quantity than was still open before cancellation/expiration. For Rejected order this is equal to orderQty. For other states this is always zero. | 10.0 |
| 14 | cumQty | number | The quantity of the order which has been filled | 0.123345 |
| 60 | transactTime | string | The time the transaction occurred | "2019-08-13T13:15:35.000955868Z" |
| 6 | avgPx | number | Calculated the Volume Weighted Average Price of all fills for this order | 345.33 |
| 1004 | tradeId | string | The unique ID assigned to the order fill, also known as trade | "77309432596" |
state
Enumerated fields are defined as follows:
| Name | Description | Example |
|---|---|---|
| pending | Order is pending acceptance. Only applicable to stop and stop-limit orders | |
| open | Order has been accepted | |
| rejected | Order has been rejected | Limit and market orders can get rejected if you have no balance to fill the order even partially. |
| cancelled | Order has been cancelled | A market order might get in state cancelled if you don’t have enough balance to fill it at market price. Both market orders and limit orders with IOC can have ordStatus ‘cancelled’ if there is no market for them, even without the user requesting the cancellation. |
| filled | Order has been filled | A limit order get in state cancelled after the user requested a cancellation. |
| partial | Order has been partially filled | |
| expired | Order has been expired |
type
| Name | Description |
|---|---|
| limit | order which has a price limit |
| market | order that will match at any price available in the market, starting from the best prices and filling up to the available balance |
| stop | order which has a stop/trigger price, and when that price is reached, it triggers a market order |
| stopLimit | order which has a stop price and limit price, and when the stop price is reached, it triggers a limit order at the limit price |
timeInForce
To subscribe:
{
"action": "subscribe",
"channel": "trading"
}
To submit & cancel orders as well as receive live order updates, subscribe to the authenticated trading
channel.
Server response:
{
"seqnum": 1,
"event": "subscribed",
"channel": "trading"
}
The next message will be a snapshot of live orders for the logged on user"
{
"seqnum": 3,
"event": "snapshot",
"channel": "trading",
"orders": [
{
"orderID": "12891851020",
"clOrdID": "78502a08-c8f1-4eff-b",
"symbol": "BTC-USD",
"side": "sell",
"ordType": "limit",
"orderQty": 5.0e-4,
"leavesQty": 5.0e-4,
"cumQty": 0.0,
"avgPx": 0.0,
"ordStatus": "open",
"timeInForce": "GTC",
"text": "New order",
"execType": "0",
"execID": "11321871",
"transactTime": "2019-08-13T11:30:03.000593290Z",
"msgType": 8,
"lastPx": 0.0,
"lastShares": 0.0,
"tradeId": "0",
"price": 15000.0
}
]
}
| Name | Description |
|---|---|
| GTC | Good Till Cancel. The order will rest on the order book until it is cancelled or filled |
| GTD | Good Till Date. The order will reset on the order book until it is cancelled, filled, or expired |
| FOK | Fill or Kill. The order is either completely filled or cancelled. No Partial Fills are permitted. |
| IOC | Immediate or Cancel. The order is either a) completely filled, b) partially filled and the remaining quantity canceled, or c) the order is canceled. |
Which TIF are supported. X for supported
| Market | Limit | Stop | Stop Limit | |
|---|---|---|---|---|
| GTC | X | X | X | |
| GTD | X | X | X | |
| IOC | X | |||
| FOK | X |
The trading
channel supports the following additional actions:
| Action | Description |
|---|---|
| NewOrderSingle | Creates an order |
| CancelOrderRequest | Cancels an order |
| OrderMassCancelRequest | Cancel multiple orders |
| OrderMassStatusRequest | Snapshot of live orders |
Cancel on disconnect
When subscribing to this channel, users can enable cancel on disconnect. This ensures that when the connection is disconnected, all live orders of the user will be cancelled.
To subscribe:
{
"action": "subscribe",
"channel": "trading",
"cancelOnDisconnect": true
}
Server response:
{
"seqnum": 1,
"event": "subscribed",
"channel": "trading",
"cancelOnDisconnect": true
}
Once enabled, cancel on disconnect cannot be turned off for this connection. Even unsubscribing from trading channel will trigger a cancellation of all live orders.
The next message will be a snapshot of live orders for the logged on user"
{
"seqnum": 3,
"event": "snapshot",
"channel": "trading",
"orders": [
{
"orderID": "12891851020",
"clOrdID": "78502a08-c8f1-4eff-b",
"symbol": "BTC-USD",
"side": "sell",
"ordType": "limit",
"orderQty": 5.0e-4,
"leavesQty": 5.0e-4,
"cumQty": 0.0,
"avgPx": 0.0,
"ordStatus": "open",
"timeInForce": "GTC",
"text": "New order",
"execType": "0",
"execID": "11321871",
"transactTime": "2019-08-13T11:30:03.000593290Z",
"msgType": 8,
"lastPx": 0.0,
"lastShares": 0.0,
"tradeId": "0",
"price": 15000.0
}
]
}
Create a new order (NewOrderSingle)
Example creating a GTC limit order:
{
"action": "NewOrderSingle",
"channel": "trading",
"clOrdID": "Client ID 3",
"symbol": "BTC-USD",
"ordType": "limit",
"timeInForce": "GTC",
"side": "sell",
"orderQty": 10.0,
"price": 3400.0,
"execInst": "ALO"
}
This action creates an order using the provided fields as described above.
Each time an order changes state or has a match, an event will be sent from the server:
{
"seqnum": 3,
"event": "updated",
"channel": "trading",
"msgType": "8",
"clOrdID": "Client ID 3",
"orderID": "999999878",
"ordStatus": "open",
"execType": "0",
"symbol": "BTC-USD",
"side": "sell",
"orderQty": 10.0,
"ordType": "limit",
"price": 3400.0,
"transactTime": "2019-08-13T13:09:34.000659345Z",
"leavesQty": 10.0,
"cumQty": 0.0,
"avgPx": 0.0
}
The next message will be a snapshot of live orders for the logged on user:
{
"seqnum": 3,
"event": "snapshot",
"channel": "trading",
"orders": [
{
"orderID": "12891851020",
"clOrdID": "78502a08-c8f1-4eff-b",
"symbol": "BTC-USD",
"side": "sell",
"ordType": "limit",
"orderQty": 5.0e-4,
"leavesQty": 5.0e-4,
"cumQty": 0.0,
"avgPx": 0.0,
"ordStatus": "open",
"timeInForce": "GTC",
"text": "New order",
"execType": "0",
"execID": "11321871",
"transactTime": "2019-08-13T11:30:03.000593290Z",
"msgType": 8,
"lastPx": 0.0,
"lastShares": 0.0,
"tradeId": "0",
"price": 15000.0
}
]
}
Examples
Example of a reply if your market order get filled:
{
"seqnum": 5,
"event": "updated",
"channel": "trading",
"orderID": "12891915594",
"clOrdID": "b50112a2-9851-43ce-a",
"symbol": "BTC-USD",
"side": "sell",
"ordType": "market",
"orderQty": 0.001,
"leavesQty": 0.0,
"cumQty": 0.001,
"avgPx": 11142.7,
"ordStatus": "filled",
"timeInForce": "GTC",
"text": "Fill",
"execType": "F",
"execID": "11451022",
"transactTime": "2019-08-13T13:50:02.000027480Z",
"msgType": 8,
"lastPx": 11142.7,
"lastShares": 0.001,
"tradeId": "12884910084"
}
Example of a response where your limit order is accepted and resting in the orderbook without fills:
{
"seqnum": 3,
"event": "updated",
"channel": "trading",
"orderID": "12895385711",
"clOrdID": "ac3f50b0-ec1c-456f-9",
"symbol": "BTC-USD",
"side": "buy",
"ordType": "limit",
"orderQty": 0.001,
"leavesQty": 0.001,
"cumQty": 0.0,
"avgPx": 0.0,
"ordStatus": "open",
"timeInForce": "GTC",
"text": "New order",
"execType": "0",
"execID": "18389438",
"transactTime": "2019-08-16T11:07:55.000648119Z",
"msgType": 8,
"lastPx": 0.0,
"lastShares": 0.0,
"tradeId": "0",
"price": 10065.0
}
If your limit order get rejected you will get:
{
"seqnum": 5,
"event": "rejected",
"channel": "trading",
"text": "Invalid price",
"clOrdID": "Client ID 3",
"ordStatus": "rejected",
"action": "NewOrderSingle"
}
or:
{
"seqnum": 5,
"event": "updated",
"channel": "trading",
"orderID": "-1",
"clOrdID": "71bf645a-6619-499f-9",
"symbol": "BTC-USD",
"side": "sell",
"ordType": "limit",
"orderQty": 100.0,
"leavesQty": 0.0,
"cumQty": 100.0,
"avgPx": 0.0,
"ordStatus": "rejected",
"timeInForce": "GTC",
"text": "Insufficient Balance",
"execType": "8",
"execID": "0",
"transactTime": "1970-01-01T00:00:00Z",
"msgType": 8,
"lastPx": 0.0,
"lastShares": 0.0,
"tradeId": "0",
"price": 16000.3
}
or:
{
"seqnum": 5,
"event": "updated",
"channel": "trading",
"orderID": "0",
"clOrdID": "12345678901234567890",
"symbol": "BTC-USD",
"side": "sell",
"ordType": "limit",
"orderQty": 0.001,
"leavesQty": 0.001,
"cumQty": 0.0,
"avgPx": 0.0,
"ordStatus": "rejected",
"timeInForce": "GTC",
"text": "Marketable AOL order",
"execType": "8",
"execID": "18331458",
"transactTime": "2019-08-16T10:39:19.000525614Z",
"msgType": 8,
"lastPx": 0.0,
"lastShares": 0.0,
"tradeId": "0",
"price": 100.3
}
If your market order get rejected you will get:
{
"seqnum": 3,
"event": "updated",
"channel": "trading",
"orderID": "-1",
"clOrdID": "Client ID 3",
"symbol": "BTC-USD",
"side": "sell",
"ordType": "market",
"orderQty": 100.0,
"leavesQty": 0.0,
"cumQty": 100.0,
"avgPx": 0.0,
"ordStatus": "rejected",
"timeInForce": "IOC",
"text": "Insufficient Balance",
"execType": "8",
"execID": "0",
"transactTime": "1970-01-01T00:00:00Z",
"msgType": 8,
"lastPx": 0.0,
"lastShares": 0.0,
"tradeId": "0",
"minQty": 0.0
}
or:
{
"seqnum": 1,
"event": "updated",
"channel": "trading",
"orderID": "4561237891",
"clOrdID": "Client ID 3",
"symbol": "BTC-USD",
"side": "buy",
"ordType": "market",
"orderQty": 3.0,
"leavesQty": 3.0,
"cumQty": 0.0,
"avgPx": 0.0,
"ordStatus": "cancelled",
"timeInForce": "GTC",
"text": "Met cash limit",
"execType": "4",
"execID": "1111111111",
"transactTime": "2019-01-01T08:08:08.000888888Z",
"msgType": 8,
"lastPx": 0.0,
"lastShares": 0.0,
"tradeId": "0",
"fee": 0.0
}
Cancel an order (CancelOrderRequest)
To cancel order:
{
"action": "CancelOrderRequest",
"channel": "trading",
"orderID": "999999878"
}
Server response:
{
"seqnum": 18,
"event": "updated",
"channel": "trading",
"orderID": "999999878",
"clOrdID": "Client ID 3",
"symbol": "BTC-USD",
"side": "sell",
"ordType": "limit",
"orderQty": 10.0,
"leavesQty": 10.0,
"cumQty": 0.0,
"avgPx": 0.0,
"ordStatus": "cancelled",
"timeInForce": "GTC",
"text": "Canceled by User",
"execType": "4",
"execID": "11397697",
"transactTime": "2019-08-13T13:15:35.000955868Z",
"msgType": 8,
"lastPx": 0.0,
"lastShares": 0.0,
"tradeId": "0",
"price": 3400.0
}
If the client gives an invalid orderId it will return a rejected cancellation:
{
"seqnum": 18,
"event": "rejected",
"channel": "trading",
"text": "Internal server error"
}
Mass order cancel request (OrderMassCancelRequest)
To cancel order:
{
"action": "OrderMassCancelRequest",
"channel": "trading"
}
Server response:
{
"action": "OrderMassCancelRequest",
"channel": "trading",
"symbol": "BTC-USD"
}
Users have the ability to cancel all of their live orders at once by using this action. A symbol can be optionally specified to reduce the scope of this action. After requesting a mass cancel, execution reports for the affected orders will follow.
Mass order status request (OrderMassStatusRequest)
To cancel order:
{
"action": "OrderMassStatusRequest",
"channel": "trading"
}
Live orders can be listed at any point in time with this request. The subsequent response will contain a snapshot similar to the one received when subscribing to this channel.
Balances
To receive balances for a user, subscribe to the authenticated balances channel:
{
"action": "subscribe",
"channel": "balances"
}
Server response:
{
"seqnum": 1,
"event": "subscribed",
"channel": "balances"
}
Snapshot of user balances (Zero balances are not sent in the initial snapshot):
{
"seqnum": 2,
"event": "snapshot",
"channel": "balances",
"balances": [
{
"currency": "BTC",
"balance": 0.00366963,
"available": 0.00266963,
"balance_local": 38.746779155,
"available_local": 28.188009155,
"rate": 10558.77
},
{
"currency": "USD",
"balance": 11.66,
"available": 0.0,
"balance_local": 11.66,
"available_local": 0.0,
"rate": 1.0
},
{
"currency": "ETH",
"balance": 0.18115942,
"available": 0.18115942,
"balance_local": 37.289855013,
"available_local": 37.289855013,
"rate": 205.84
}
],
"total_available_local": 65.477864168,
"total_balance_local": 87.696634168
}
Each time the balance changes, a new snapshot event will be sent from the server; this channel has only ‘snapshot’ event, not ‘updates’
{
"seqnum": 19,
"event": "snapshot",
"channel": "balances",
"balances": [
{
"currency": "BTC",
"balance": 0.00266963,
"available": 0.00166963,
"balance_local": 28.188009155,
"available_local": 17.629239155,
"rate": 10558.77
},
{
"currency": "USD",
"balance": 22.18,
"available": 10.52,
"balance_local": 22.18,
"available_local": 10.52,
"rate": 1.0
},
{
"currency": "ETH",
"balance": 0.18115942,
"available": 0.18115942,
"balance_local": 37.289855013,
"available_local": 37.289855013,
"rate": 205.84
}
],
"total_available_local": 65.439094168,
"total_balance_local": 87.657864168
}
REST Endpoints
Query single order status
Example request:
GET https://api.blockchain.com/exchange/order/21745988181
Response:
{
"orderId":<PHONE_NUMBER>1,
"gwOrderId":<PHONE_NUMBER>,
"clOrdId": "d7402f75314a4cf1webd",
"symbol": "ETH-BTC",
"ordType": "limit",
"timeInForce": "GTC",
"side": "buy",
"orderQty": 1.0,
"minQty": 0.0,
"cumQty": 0.0,
"price": 0.015797,
"stopPx": 0.0,
"ordStatus": "cancelled",
"expireDate": 20200414,
"execID": "537374697",
"avgPx": 0.0
}
In order to look up the status of a single order, users can utilize the following endpoint.
| Item | Description |
|---|---|
| URL | https://api.blockchain.com/exchange/order/{orderId} |
| HTTP Method | GET |
| Required headers | Cookie: auth_token={apiKey} |
Users can authenticate using API keys, by providing a cookie named auth_token with the value set to their API key.
View whitelisted addresses
Example request:
GET https://api.blockchain.com/exchange/beneficiaries
Response:
{
"capabilities": [
{
"currency": "BTC",
"address": true,
"xpub": false,
"existingBeneficiaryOnly": false,
"fiat": false
},
{
"currency": "ETH",
"address": true,
"xpub": false,
"existingBeneficiaryOnly": false,
"fiat": false
}
],
"enabled": true,
"enabledAt": "2020-05-08T11:41:32.664Z",
"whitelisted": [
{
"id": "298907ac-07df-47ab-93d5-5594e019813b",
"address": "******************************2v7b",
"agent": {
"account": "",
"address": null,
"code": null,
"country": null,
"name": null,
"recipient": null,
"routingNumber": null
},
"currency": "BTC",
"state": "ACTIVE",
"name": "My Ledger Device",
"whitelisted": true,
"fiat": false
}
]
}
In order to see the list of whitelisted beneficiaries, users can utilize the following endpoint.
| Item | Description |
|---|---|
| URL | https://api.blockchain.com/exchange/beneficiaries |
| HTTP Method | GET |
| Required headers | Cookie: auth_token={apiKey} |
Users can authenticate using API keys, by providing a cookie named auth_token with the value set to their API key.
Create A Withdrawal
Example request:
POST https://api.blockchain.com/exchange/withdrawals
{
"currency": "BTC",
"amount": "0.0001",
"beneficiary": "3ff5bc82-b118-45b3-b468-9697be208bdf"
}
Response:
{
"id": "1941fcdd-d16a-4b5a-998e-f58f5862af88",
"user": "e9307d88-bd92-4fdf-840c-7e30fbb0bbd7",
"product": "MERCURY",
"amount": {
"symbol": "BTC",
"value": "0.0001"
},
"fee": {
"symbol": "BTC",
"value": "0.0005"
},
"state": "NONE"
}
In order to create a withdrawal via api, users can utilize the following endpoint.
| Item | Description |
|---|---|
| URL | https://api.blockchain.com/exchange/withdrawals |
| HTTP Method | POST |
| Required headers | Cookie: auth_token={apiKey} |
Users can authenticate using API keys, by providing a cookie named auth_token with the value set to their API key.
Request Parameters
| Parameter | Description |
|---|---|
| currency | The ticker symbol for the withdrawal currency e.g. "BTC |
| amount | The amount of the withdrawal as a decimal e.g. 1.231 |
| beneficiary | The id of your beneficiary for this currency, which can be retrieved by using the /beneficiaries endpoint |


DM::OJ is an online judge platform, with over 20000 users. I have contributed bug fixes to both the site's frontend, backend, as well as to the sandbox used to run the submissions in, including porting the sandbox from Python2 to Python3.
School & Contests
School Clubs
I am the vice president of both the school's stage crew and computer science club. Additonally, I am an executive in the school's math club.
This year, our computer science club sent 2 teams to the final round of the ECOO competition. The teams I was on placed first during the first two rounds, and placed second during the finals.
Contests
Programming Contests
I have been competeting in the Canadian Computing Competition since grade 8, and in the last two years (grades 10 and 11) have placed in the top 30 students out of over 3000, which qualified me for the next round - the Canadian Computing Olympiad.
My goal is to also qualify for the Computing Olympiad next year, and to place higher during the competition.
Contests
DMPG Organization
In addition to competiting in contests, I also helped to organize several contests, one of which was the Don Mills Programming Gala.
This involved setting challenging computer science problems, contacting teachers and students to invite them, and the logistics of having 200 students in one area. It was a challenge, but I felt that the experience was well worth it, and I will be once again organizing this contest next year.
School & Projects
Sorting Visualizer
An assignment I was given in my ICS4U class was to visually compare two sorting algorithms. As the class was in Java, my partner and I decided to compare Quicksort and Timsort.
The project was implemented using javax.swing for the GUI, and scales seemlessly as the window is resized. There is also an option to change the number of bars, and also a worst case option for both sorts.
Projects
P3 Pointer
The P3 Pointer was the first project I built at a hackathon. It used a 9 degrees of freedom sensor and vector calculations to act as a wearable pointing device, sending the data via an ATmega32U4.
As the first project I built at a hackathon, and the first hardware project I'd ever done, it was a great learning experience for me.
Find Me!
I'm pretty elusive, but I can be found at the following sites:


Trump impeachment inquiry: US President says does not know Sondland 'very well'
"I don't know him very well. I have not spoken to him much," Trump told reporters at the White House.
Donald Trump sought Wednesday to distance himself from US envoy Gordon Sondland, after he told an impeachment hearing he had followed the president's orders in seeking a "quid pro quo" deal with Ukraine.
"I don't know him very well. I have not spoken to him much," Trump told reporters at the White House, before reading from notes which he said showed that he wanted "nothing" from Kiev.
In an October 8 tweet, Trump had described his ambassador to the European Union as "a really good man and great American."
Meanwhile, US diplomat Gordon Sondland said that President Donald Trump never spoke to him about stalled military aid to Ukraine or any alleged link to Trump's demands for political investigations.
"I never heard from President Trump that aid was conditioned on an announcement of (the investigations)," Sondland told a congressional impeachment inquiry.
"I don't recall President Trump ever talking to me about any security assistance, ever," he added.


Home Contact
Click on the area of the skeleton with pathological conditions
Contact info goes here
Additional info goes here


Controlgroups
Home
Controlgroup vertical
No icon
Left
Right
Top
Bottom
Icon only
Mini sized
No icon
Left
Right
Top
Bottom
Icon only
Controlgroup horizontal
No icon
Left
Right
Top
Top
Bottom
Bottom
Icon only
Icon only
Home
Search
More
Select…
One
Two
Three
Mini sized
No icon
Left
Right
Top
Top
Bottom
Bottom
Icon only
Icon only
Home
Search
More
Select…
One
Two
Three
Radio button
Vertical:
One
Two
Three
Vertical, mini sized:
One
Two
Three
Horizontal:
One
Two
Three
Horizontal, mini sized:
One
Two
Three
Checkbox
Vertical:
One
Two
Three
Vertical, mini sized:
One
Two
Three
Horizontal:
One
Two
Three
Horizontal, mini sized:
One
Two
Three
Selects
Vertical:
Select A
One
Two
Three
Select B
One
Two
Three
Select C
One
Two
Three
Vertical, mini sized:
Select A
One
Two
Three
Select B
One
Two
Three
Select C
One
Two
Three
Horizontal:
Select A
One
Two
Three
Select B
One
Two
Three
Select C
One
Two
Three
Horizontal, mini sized:
Select A
One
Two
Three
Select B
One
Two
Three
Select C
One
Two
Three


Top 10 Grossing Animated Films of All Time
Film Title
Released
Studio
Worldwide Gross
Domestic Gross
Foreign Gross
Budget
Sources:
Wikipedia
&
Box Office Mojo
. Data is current as of October 3, 2018.
Frozen
2013
Disney
$1,276,480,335
$400,738,009
$875,742,326
$150,000,000


Udaan is set in a restaurant with a dirty table in it, and you play the role of a fly whose objective is to collect as many pieces of cheese as possible while trying to stay alive, in a 2 min 30 sec time frame.
While trying to find the cheese you have to eat other food placed on the table in order to maintain your energy levels. When your energy starts dropping, your vision starts blurring and is an indication that you need to eat food soon in order to survive and continue to play the game.
Other tips:
Happy Flying!
Thanks to Professor Michael Zyda and Professor Vangelis Lympouridis for their encouragement and feedbacks.
Thanks to Birdly VR for providing us support for building our application.
Unity Engineer
Gameplay Engineer
Unity Engineer
Gameplay Engineer
Gameplay Engineer
Gameplay Engineer
Gameplay Engineer


Class: RfmAdaptor::Database::Base
- Inherits:
-
Object
- Object
- RfmAdaptor::Database::Base
- Extended by:
- ClassMethod
- Defined in:
- lib/rfm_adaptor/database/base.rb
Overview
Handle database object class
Constant Summary
- DEFAULT_SERVER_NAME =
default server name.
"default"
Instance Attribute Summary (collapse)
-
- (String) database_name
database name.
Attributes included from ClassMethod
Instance Method Summary (collapse)
-
- (Rfm::Layout) connection
Connection to FileMaker database as Rfm::Layout object.
-
- (Base) initialize(database_name)
constructor
Initialize object.
-
- (Rfm::Server) server
Server as Rfm::Server.
-
- (Object) setup
Setup configurations & attributes.
Constructor Details
- (Base) initialize(database_name)
Initialize object
30 31 32 33 34 |
# File 'lib/rfm_adaptor/database/base.rb', line 30 def initialize(database_name) super() self.database_name = database_name.to_s self.setup! end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
- (Object) method_missing(name, *args, &block) (private)
get attribute unless method not defined.
117 118 119 120 121 122 123 |
# File 'lib/rfm_adaptor/database/base.rb', line 117 def method_missing(name, *args, &block) unless self.attributes.include?(name.to_s) super(name, *args, &block) else self.attributes[name.to_s] end end |
Instance Attribute Details
- (String) database_name
database name.
23 24 25 |
# File 'lib/rfm_adaptor/database/base.rb', line 23 def database_name @database_name end |
Instance Method Details
- (Rfm::Layout) connection
Connection to FileMaker database as Rfm::Layout object
38 39 40 |
# File 'lib/rfm_adaptor/database/base.rb', line 38 def connection self.server[self.database][self.layout] end |
- (Rfm::Server) server
Server as Rfm::Server
44 45 46 |
# File 'lib/rfm_adaptor/database/base.rb', line 44 def server self._connection.server end |
- (Object) setup
Setup configurations & attributes
49 50 51 |
# File 'lib/rfm_adaptor/database/base.rb', line 49 def setup self.setup! unless self.setup? end |


CTFs and Chill
In this blog you can find various challenges write-ups and as POCs you can also subscribe my youtube channel CyberLix
You can contact me here
Telegram
Twitter


Class: RuboCop::Cask::AST::StanzaBlock
- Extended by:
- T::Helpers
- Defined in:
- rubocops/cask/ast/cask_block.rb
Direct Known Subclasses
Instance Attribute Summary collapse
Instance Method Summary collapse
Constructor Details
#initialize(block_node, comments) ⇒ void
19 20 21 22 |
# File 'rubocops/cask/ast/cask_block.rb', line 19 def initialize(block_node, comments) @block_node = block_node @comments = comments end |
Instance Attribute Details
#block_node ⇒ RuboCop::AST::BlockNode (readonly)
13 14 15 |
# File 'rubocops/cask/ast/cask_block.rb', line 13 def block_node @block_node end |
#comments ⇒ Array<Parser::Source::Comment> (readonly)
16 17 18 |
# File 'rubocops/cask/ast/cask_block.rb', line 16 def comments @comments end |
Instance Method Details
#stanzas ⇒ Array<Stanza>
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'rubocops/cask/ast/cask_block.rb', line 25 def stanzas return [] unless (block_body = block_node.block_body) # If a block only contains one stanza, it is that stanza's direct parent, otherwise # stanzas are grouped in a nested block and the block is that nested block's parent. is_stanza = if block_body.begin_block? ->(node) { node.parent.parent == block_node } else ->(node) { node.parent == block_node } end @stanzas ||= block_body.each_node .select(&:stanza?) .select(&is_stanza) .map { |node| Stanza.new(node, comments) } end |


Dog destroys wet driveway concrete
by Mark FrauenfelderThis dog didn't mind at all that his human companion did something weird and unnecessary to his playground.
The driveway is done, now we can relax from r/Wellthatsucks
This dog didn't mind at all that his human companion did something weird and unnecessary to his playground.
The driveway is done, now we can relax from r/Wellthatsucks