Vocabulary Sidebar highlights rare English dictionary words, idioms and proverbs on web pages.
It helps non-native English learners to discover new expressions while they are browsing the Internet.
Highlighting of rare words is useful because some people do not even notice vaguely known words, especially when these words are not critical for understanding of the text that they read. One possible explanation of this strange and pertexing effect is that mind of a reader is concentrated on understanding the meaning and structure of the text, and after finishing reading a sentence many readers won't go back to check the meaning of unfamiliar words that they have already forgot. E.g. some readers will forget to check the definition of word "pertexing" from the previous sentence which, in fact, doesn't exist. And even if you did check it, you still can try this extension, it highlights only real English dictionary words and idioms =)
Vocabulary Sidebar is free forever, open source, and it has no ads.
Vocabulary Sidebar is better than "Word-of-the-day" type of programs because new words are highlighted in context of the text that you read, which is a good motivating factor to finally check the definitions and learn these words (or idioms).
Depending on your vocabulary size, you can adjust frequency threshold of highlighted words e.g. skip 25% most common English words, and highlight all the rest. There's no way to set such threshold for idioms and proverbs, the extension can either highlight all of them or none.
Vocabulary Sidebar can operate in two modes:
Currently there are ~50K words and ~1600 idioms in the extension's dictionary. If you're interested you can look at them on project's github page.
Here some example of idioms from the dictionary: "brand new"(everyone knows this one), "bucket list", "moral high ground", "baby shower"(it is not a shower for babies), "money laundering", "jigsaw puzzle", "veil of ignorance". And there are many others.
If you known definition of a highlighted word, you can add it to your personal vocabulary and it won't be detected any more. When you add a new word it is converted to normal form for your vocabulary e.g. "dogs -> dog". You can always view your vocabulary or save it as a text file. To add a word - select it's text with mouse and right click to show browser context menu.
Vocabulary Sidebar provides basic dictionary lookup functionality: see the dictionary links in hovering window and in browser context menu. And, of course, you can also use Vocabulary Sidebar in combination with your favorite dictionary app (e.g. "Google dictionary" extension)
Vocabulary Sidebar respects your privacy, works locally in your browser, and doesn't send any of your data anywhere. It can even work offline if you have some html files saved on your computer.
Most adult native English speakers know 20000-35000 words, so it is totally possible to eventually add them all to your vocabulary file.
Backup your personal vocabulary to a text file periodically.
If you have dedicated dictionary extension installed in browser, you can disable online dictionary links that "Vocabulary Sidebar" provides. It will be easier to add new words after that.


DAUGHTER OF HORROR (DEMENTIA) (director/writer: John Parker; cinematographer: William C. Thompson; editor: Joseph P. Gluck; cast: Adrienne Barrett (The Gamin), Bruno Ve Sota (Rich Man), Richard Barron (Evil One), Ben Roseman (Gamin's Father/Law Enforcer), Jebbie Ve Sota (Flower girl), Lucille Howland (Mother); Runtime: 60; Kino International; 1955)
Reviewed by Dennis Schwartz
A very curious and strange b/w film, which is a hard to classify oddity, involving the nightmare of a lonely, sexually repressed, psychotic woman, called in the titles The Gamin (Adrienne Barrett). There is no dialogue or narrator in the first version I saw, but in the later version Ed McMahon does the narration.
The film plays as a surreal nightmare for The Gamin, who is in a skid-row Hollywood hotel, where she imagines that she is taking a walk in the ocean and disappears in a giant wave. What follows is a visionary tale of Freudian images and those from those B-movies after WW11.
When she goes to open the bureau drawer and finds a switchblade knife there, she takes it with her as she leaves her room to go out at night, walking down the stairs to witness a beat cop arresting the abusive husband of her downstair's neighbor. She then walks in an alley of winos. When one of the winos grabs her and refuses to let go, her detective father (Ben Roseman) gets out of his police car, and beats the wino up, while she stands by gleefully laughing.
A midget newspaper vender sells her a copy of the Hollywood Tribune, whose headline is 'Mysterious Stabbing.'  The Evil One (Barron) takes a flower from the flower girl for his lapel, and then sells The Gamin to someone who looks like Orson Welles, The Rich Man (Bruno Ve Sota), who takes her for a ride, with both sitting in the back seat.
He takes her to the Club Pronto, where he smokes a big cigar and they watch a sexy female dancer perform.  In the background is a cemetery with gravestones for her father and mother. When the father discovers a cigar in the ashtray from another man, he shoots his wife. The Gamin then sticks her switchblade in his belly.
These are some very weird Freudian dream sequences. In another scene, she goes with The Rich Man to his apartment and listens to him play the piano, then he rebuffs her offer of a drink, instead sitting down to the elegant meal his butler brings him, eating the chicken with his hands. When he goes to kiss her after the meal, he repulses her and becomes her second stabbing victim. But he grasps her pendant while struggling, which she will get back when she cuts off his hand, as the narrator tells her not to be afraid of the ghouls around the dead man's body, they won't touch her. She will deposit the severed hand with the pendant into the basket of the flower girl.
In the shadowy street, she's being trailed by the cop who has the same face as her father. In order to escape, she goes into the apartment of the Evil One, which is a drug house, where jazz is played by Shorty Rogers and the Giants, an interracial couple is hotly dancing, and the Evil One is kissing two pretty women who are at his table. Her smiling father comes into the club and gets an envelope from the Evil One. The rich man reappears, with his head peering through the window bars of the cellar apartment, and the same beat cop from before, is standing over him and smiling. Inside the apartment everyone is pointing at her, including her father, who is also waving handcuffs in the air, which he indicates are meant for her.
She once again sees herself drowning and the camera returns to a shot of her hotel room, as this nightmare ends. But the narrator poses the question, is it a dream of madness on a dark night -- or was it real?
This is a bizarre film, a precursor to Welles' "Touch of Evil" and Polansky's "Repulsion." If not made to be understandable, it is at least a very demanding depiction of someone demonically possessed by guilt.
REVIEWED ON 10/21/2000 GRADE: B
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


The bee influencer that has over two lakh followers on Instagram
The Instagram page of B is run by a French philanthropic network, Fondation de France, and presently has over two lakh followers.
by Trends DeskThe latest influencer on social media is B, reportedly the world first insect influencer. The bee influencer is taking the internet by storm with unique photographs and is aiming to spread a very important message- help save the world’s bees.
The Instagram page of B is run by a French philanthropic network, Fondation de France, and presently has over two lakh followers.
The foundation works on the issue of protecting bees and several of the foundation’s posts urge people to save the bee population. Many of B’s posts also carry fun facts and information about the insect.
Bees, who are active pollinators, play a pivotal role in our food supply. However, the bee population has been reducing and factors like with the use of pesticides and intensive farming techniques are blamed for it.
The page aims to raise funds for preserving bees.


 It is your last year as a high school student, however, you are not quite done with school yet. You have been going to school for 13-19 years now and are in the home stretch. It might be tough, but the main thing to do is remain focused and fun.
“It always seems impossible until it's done.”
-Nelson Mandela
“Be happy in the moment, that's enough. Each moment is all we need, not more”
-Mother Teresa
“You have brains in your head. You have feet in your shoes. You can steer yourself any direction you choose. You're on your own. And you know what you know. And you are the one who'll decide where to go. ”
-Dr. Seuss


Denys Duchier wrote: > is it possible to use inter_r with IntViews of 2 vars each in a > different space? Do you mean something like: IntViewRanges i2r(i2); i1.inter_r(home, i2r); where i1 and i2 are from different spaces? That's possible. Cheers, Guido


What's your worth?
Marital Status
Single
Married
Divorced/Seperated
Confused
Sex
Male
Female
Both
Next >>
Previous


MyHerbs goal as an application is to bring awareness to the potential psychological benefits to taking different strains of marijuana. Different strains have different effects because of their unique terpene profiles. Based on those profiles and coupled with the specific benefits that each terpene has, MyHerbs can match users with a strain that can best serve their personal and unique needs. MyHerbs is created and owned by Brian Guan, an engineering student at UCLA.
Contact Info<EMAIL_ADDRESS>(949)981-8816


Finding a peace of mind or a change in lifestyle?
Last updated 3 mins ago
Find courses with the best of the best!
LOVE LOVE LOVE LOVE


Mateo Kovacic reveals what Frank Lampard’s asked him to do more of for Chelsea FC
Mateo Kovacic admits he wants to try and score more goals for Chelsea FC
by The Sport Review staffMateo Kovacic has revealed that Frank Lampard has asked him to shoot more for Chelsea FC this season.
The Croatia international has been a regular fixture in the first team this season and has featured in all 12 of Chelsea FC’s Premier League games this term.
He has notched up one assist in the Premier League for the Blues so far this term and he is yet to score a goal for the west London club.
Kovacic has not scored a goal for club or country since January 2017 and the 25-year-old will clearly be looking to put that right in the coming weeks and months.
Now, the midfielder has revealed how Lampard has asked him to shoot more often for Chelsea FC this season as he bids to try and find the net more regularly.
Speaking in an interview with Chelsea FC’s website, Kovacic said: “I never had the pressure to score goals, I was never obsessed because my game is not about goals, but obviously if I want to go to the next step I need to improve it.
“The coach was the greatest goal-scoring midfielder that ever played. There were many, but he really scored a lot of goals. He [Lampard] tells me always that I need to shoot. Now I am trying more!
“It’s just a thing of mentality, to try to score, to be aggressive and to have the hunger to score goals.
“I want to improve that, I’m trying to improve that and I am sure I will get there.”
Chelsea FC will return to Premier League action after the international break when they take on Manchester City at The Etihad on Saturday evening.
The Blues are currently in third place in the Premier League table and eight points off top spot after having won all six of their last six games in the top flight.


THE PRINCE OF EGYPT A film by Brenda Chapman, Steve Hickner, and Simon Wells With the voices of Val Kilmer, Ralph Fiennes, Michelle Pfeiffer, Helen Mirren, Sandra Bullock, Jeff Goldblum, Danny Glover, Steve Martin, Martin Short, and Patrick Stewart
THE PRINCE OF EGYPT, the long-awaited foray by Dreamworks Animation (and its head, Jeffrey Katzenberg), is an ambitious, enthralling epic whose faults don't undermine the power of the film. Despite its mediocre songs and its rushed story, THE PRINCE OF EGYPT has much to recommend, and is an overpowering addition to the animated genre.
The story is relatively simple. During the Egyptians' killing of all newborn children, a young child is sent down a river, in hopes that he will find a home that will care for him. The young child grows into a man, Moses (Kilmer), and together with his brother Ramses (Ralph Fiennes), is quite a palace troublemaker, until lhe sees two people who remind him of his past. From that moment, Moses leaves the palace, and goes to find his true self. On the way to that, he finds a little more than that: a burning bush, and the voice of God himself. Moses is given a mission: to free the Hebrew slaves from the grasp of the Egyptians.
The story is developed rather a little too quickly. This film, more than any other, deserved the full movie treatment of animation. I found myself asking why didn't Jeffrey Katzenberg take animation to the next level by making his movie 2 hours long? It would have been a better, more complete story. Instead, the miracles of God are rushed into a compact 20 minutes. I found myself looking at my watch midway through, wondering when the Red Sea was ever going to be parted. The first half is quite good. The chariot race sequence between Ramses and Moses is excellent, and the animation throughout the entire movie is top-notch. It is certainly a gorgeous movie to look at.
The voices are superb, but the only two that register are the two that matter. Kilmer and Fiennes are great, as are Goldblum, Bullock, and Pfeiffer. The relationship between Kilmer and Fiennes is essential, however. It has to work for the film to work, and the development is exquisite. The film adds the guilt on Moses as Ramses' son dies. Moses knows he had to go through his ordeals, but he sees his brother suffer, and it is difficult to watch. It is a great moment in animation. There are in fact many of those moments, the best probably being the burning bush, which is a great piece of work.
The score is actually pretty good, although the songs are pretty mediocre. The first song, "Deliver Us",wasn't too bad, and neither was the second, "River Flow Gently". Much of the latter half of the film, beginning with Moses' departure from Egypt, is told in episodic fashion, like Martin Scorsese's KUNDUN, in the sense that songs are merely episodes, and the movie moves from episode to episode, in almost blocks of 5 minutes, telling the story by visuals instead of dialogue. It works for the most part, although some of the songs don't. The big number by Martin and Short is a failure, mostly because it feels like something out of ALADDIN. The song sung by Danny Glover's character, and Moses' future father-in-law is also something that didn't exactly sit well with me, although the sequence was very well done. Come the last, rushed third of the film, there are merely glimpses of things I wanted to see more. All of God's plagues are told in one 4 minute sequence, the plague of the frogs and locusts. These were truly frightening and scary. Yet, it felt rushed. I wanted more of this, I wanted more of this terror, because that was what God was inflicting upon the Egyptians, and Pharoah himself. Certainly, visual wise they were exquisite, but if more had been available, the film would have been even more devastating as far as impact.
Certainly, the Red Sea sequence, the Burning Bush, and the sequence where God takees all of the Egyptian first born, are all spectacular. There is some true uneasiness when God kills so many. There is a strange dichotomy during all of PRINCE OF EGYPT. On one hand, the film wants to extend the borders of animation. It wants to be so great, that it often is. The terrorizing sequences attest to that fact. The character development between Ramses and Moses (the only two characters that are developed) is sensational, and the effects are magnificent. This is meant to be a very serious movie, and it delivers at the end. But throughout the film, there is a sense of making this one "for the kids". As a result, things like Martin Short's and Steve Martin's characters, their ridiculous production number, some of the songs, and MIchelle Pfeiffer's character (who looks a little too much like Disney's POCAHONTAS), are really annoying, and angered me deeply. If Dreamworks had stuck to its guns instead of competing with Disney, they could have made the greatest animated film of all time. Add about 1/2 hour to an hour to it, show what happens to the Hebrews with the Ten Commandments, and take out about half the songs, and this is one hell of a movie.  Dreamworks could have done more, but what they did was pretty good itself.
Rating: *** out of ****
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Freeing Doctors to Focus on Patients, Not Paperwork
By Kathleen Sebelius, Secretary of Health and Human Services. Cross-post from Healthcare.gov
Did you know your doctor has to spend 12 cents of every dollar she makes to hire staff just to fill out insurance forms and other paperwork? Wouldn’t you rather she spend that time with you?
Today, the Department of Health and Human Services issued rules to simplify the mounds of paperwork that doctors, nurses, and other caregivers have to complete in order to get paid for treating you. We estimate that these changes will save our health care system $12 billion over the next 10 years.  We estimate these changes will give doctors back four hours a week and another five hours to their staff.
This common-sense streamlining means fewer phone calls between physicians and health plans, lower postage and paperwork cots, and fewer denied claims. All in all, this means physicians can cut through the red tape and spend more time and money administering quality care to their patients.
Under these rules, called for by the Affordable Care Act, doctors and other health care professionals will be able to use a simple, streamlined form to ask your insurance company if you are eligible for benefits. And a second form will be used for doctors’ offices to check to the status of insurance claims they have filed. And insurers have agreed to accept these forms rather than use multiple systems.
This is only the beginning of our efforts to cut out waste and inefficiency in our health care system and free dedicated doctors, nurses, and caregivers to focus their time and efforts on keeping patients healthy, treating illness, and restoring health. Stay tuned.
Get Free Screenings to Help Fight Cancer
You can take control of your health with Medicare’s preventive benefits. Get free screenings to detect cancer early, when treatment works best. Preventing and stopping the progress of chronic diseases improves your health and quality of life. It also helps Medicare spend less on long-term illnesses that could have been prevented.
If you have Medicare, you can get the following screenings:
- Colorectal cancer screenings – four different screenings to detect colon and rectal cancers, each is covered as needed for all people age 50 and older
- Prostate cancer screenings – covered for all men age 50 or older
- Mammograms – screenings to detect breast cancer, covered for all women age 40 or older
- Pap test and pelvic exams – screenings to detect cervical and vaginal cancers, covered for all women
- Smoking cessation counseling – help quitting smoking, to help prevent lung, throat, and other cancers; covered for all people who use tobacco
Call your doctor’s office to set up your yearly preventive visit, where you can ask about any risk factors that may affect you, and schedule your preventive screenings. Your doctor can also help you keep track of when you should get screenings and which kinds are right for you.
Know the questions. Questions, answers and health tips for the Hispanic community
When I’m getting ready to buy a new product, I will look for the clerk at the store and ask all kinds of questions. However, when I see the doctor, I find that I don’t ask questions because I’m not sure what to ask, or I’m too embarrassed to ask. Let’s face it, many in our Hispanic community prefer to ask a coworker, friend or even a family member about health concerns or treatment advice rather than going to the doctor.
Well, now there’s a Spanish Web site by the Agency for Healthcare Research and Quality (AHRQ) that can help us ask the right questions and can improve communication with our doctors. Conozca las preguntas (Know the questions. Questions, answers and health tips for the Hispanic community) offers tips and sample questions to help you prepare for your medical appointments. You can even get biweekly tips on how to talk to your doctor. There’s also a Web site available for smart phones.
If you ask questions and talk openly with your doctor, you can improve not only your health, but also your quality of care.
Affordable Care Act Saves $260 Million This Year
By Donald M. Berwick, M.D., Administrator, Centers for Medicare & Medicaid Services. Cross posted from Healthcare.gov
Thanks to the Affordable Care Act, almost half a million individuals enrolled in Medicare’s prescription drug benefit have received a 50 percent discount on their out-of-pocket costs in the first five months of 2011.
Because of Medicare improvements in the Affordable Care Act, beneficiaries now automatically receive a 50 percent discount on covered brand-name drugs in the Part D coverage gap, or “donut hole,” and have saved more than $260 million so far this year.
In May alone, we have seen a 76 percent increase in the number of beneficiaries receiving this discount (478,272 individuals through the end of May compared to 270,900 through the end of April). In addition, the total savings these beneficiaries received grew over 56 percent in one month, for a total average savings of $545 per beneficiary (for state-by-state figures, please click here).
Most of these discounts are helping Americans with serious medical conditions – nearly 14 percent of the benefits provided to date – more than $36 million – are for cancer drugs, more than 8 percent or $21 million for drugs to help control high blood pressure and cholesterol, and another more than 7 percent – about $20 million – are for drugs provides to diabetic patients.
As more and more beneficiaries hit the donut hole through the rest of this year, the numbers will continue to climb. All of these beneficiaries will see savings on their drug costs that were not available in previous years.
And cheaper prescriptions are just one of the many ways the Affordable Care Act is improving Medicare for seniors. Thanks to the new law, many preventive care screenings are available free of charge. As of June 10, we found that about 5.5 million people with Medicare have accessed one or more preventive measures and last week, we launched a new awareness effort– Share the News, Share the Health – to highlight Medicare’s preventive benefits and encourage Medicare beneficiaries taking advantage of these potentially lifesaving services.
More information on the free preventive services that are available to people on Medicare can be found on the “Manage Your Health” tab at www.Medicare.gov.
¿Habla usted español? Es.Medicare.gov speaks your language.
You already know that Medicare.gov has a wealth of current information: everything from basic costs and coverage to details about screening tests and visits to help you stay healthy.
Es.Medicare.gov is one of many ways we’re sharing Medicare information so everyone can better understand their health care options and get the best care. Now, Es.Medicare.gov also includes everything you need to know about preventive benefits, like recommended cancer screenings and discounts on brand-name drugs in the donut hole.
Here’s what you’ll find:
- · Details about exactly what Medicare covers and what you pay, including for preventive tests and screenings
- · Helpful Web sites and phone numbers for people who can answer your questions
- · “Medicare & You” handbook
- · Fact sheets and publications with specific details about the Medicare Program
- · Step-by-step information about how to file an appeal
- · Forms to apply for Medicare , file claims, and more
Visit Es.Medicare.gov, and tell your friends and family. Because when you share the news, you share the health.


{% extends "web/base.html" %} {% block title %}About NB{% endblock %} {% block style %} span.n { background-color: #A0A0DD; color: #F9F650; font-family: Trebuchet MS; padding-left: 0.2em; } span.b { background-color: #F9F650; color: #A0A0DD; font-family: Trebuchet MS; padding-right: 0.2em; } {% endblock %} {% block content %}
nb is an annotation taking tool developed by the Haystack Group at CSAIL. Students and Faculty can use nb to annotate arbitrary PDF files online, in a collaborative fashion.
A demo being worth a thousand words, you can try nb right now, using our Sandbox
nb has been used in real classes at MIT since February 2009, and has undergone three major development cycles. Still, active research and development are being carried out by the nb team.
If you're a faculty member and that you'd like to incorporate nb in your teaching, please give it a try by creating a sample site .
if you have questions or if you've found a bug, or have a feature request: Please contact us
The following video shows how nb can be used in a typical class environment. [Fall 2011: This video depicts a past version of nb... We will update a more recent video as soon as possible]
{% endblock %}


CrimPapers
Articles published on 12 December 2018
On 12 December 2018, 10 new articles were published in 8 journals.
“He Did That Because I Was Black”: Black College Students Perceive Municipal Police, Not Campus Police, As Discriminating by Andrea Allen, Scott Jacques
From Celtic Tiger to Celtic Phoenix: Exploring the Relationship Between Anomie and Crime in Ireland by Deirdre Healy
Brill Renews Unique Open Access Partnership With Kitlv Society
Book Review: Faye S Taxman (ed.), Handbook on Risk and Need Assessment. Theory and Practice, Jay P. Singh, Daryl G. Kroner, J. Stephen Wormith, Sarah L. Desmarais and Zachary Hamilton (ed.), Handbook of Recidivism Risk/needs Assessment Tools by Martine Herzog-Evans
Interoperability by Sérgio Felgueiras, Lúcia G. Pais, Sónia M. A. Morgado
The Role of Race in Court-Ordered Pretrial Psychiatric Evaluations by Ann Dirks-Linhorst, Donald M. Linhorst, Travis M. Loux
The Influence of Familiar and Confident Eyewitnesses on Mock Jurors’ Judgments
Variations of Salient Rejection Options: Does One Work Best For Adolescents and Adults?
Comparison Between Japanese Online and Standard Administrations of the Gudjonsson Suggestibility Scale 2 and Effects of Post‐warning by Taeko Wachi,
kazumi Watanabe,
kaeko Yokota,
yusuke Otsuka,
kazuki Hirama
Technology Use and Constituting Structures: Accounting For the Consequences of Information Technology on Police Organisational Change by James J. Willis, Christopher S. Koper, Cynthia Lum


{% extends "base.html" %} {% block content %}
Need help? Learn about lightning talks, see example pitches and get inspired below.
Note: After submitting, you won't be able to edit your pitch! But feel free to submit multiple pitches.


It helped us to rapidly find shared room that were much more time-consuming in the past
Nick Butura
Student from Tbilisi
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptate architecto beatae nobis!
Cris Evans
Student from Frankston
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vitae aliquam itaque natus maxime expedita odit ad.
Nick Butura
Student from Cranbourne
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis quas corporis eos dolorem.
Nick Butura
Student from Oakleigh
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Neque delectus, dolor qui accusamus fuga magni! Architecto?
Nick Butura
Student from Dandenong
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Saepe, nulla deserunt quaerat quisquam suscipit quidem.
Nick Butura
Student from Frankston


Current version: {{ currentVersion }}
Latest version: {{ repVersion }}
You seem to be running Hydra inside docker. It's recommended to update the container instead of using Hydra's
update mechanism.
You're up to date!The latest version was ignored by you.
The NZBHydra wrapper (i.e. the executable or python script you use to run NZBHydra) seems to be outdated. Please update it:
Shut down NZBHydra, download the latest version and extract it into your main NZBHydra folder. Start NZBHydra again.


LIVE FOR THE HUNT
DAUNTLESS IS A FREE-TO-PLAY CO-OP ACTION RPG AVAILABLE FOR PLAYSTATION 4, XBOX ONE, AND PC VIA EPIC GAMES STORE.


Sigma algebras are overrated.
They are great for proofs involving \lim\limits_n\int f_n\,d\mu = \int\lim\limits_n f_n\,d\mu.
But they involve a lot of complicated machinery.
C(X) - continuous functions on topological space X
Topology - a study of the word ‘near’.
A topology on X is a collection of open subsets of X closed under finite intersection and arbitrary union.
M(X) - countably additive measures on Borel sets
A measure satisfies \mu(A\cup B) = \mu(A) + \mu(B) - \mu(A\cap B) and \mu(\emptyset) = 0.
It doesn’t count things twice and nothing from nothing leaves nothing. (Billy Preston)
Inclusion/exclusion By induction …
A countably additive measure satisfies \mu(\cup_j A_j) = \sum_j \mu(A_j) if \{A_j\} are pairwise disjoint.
Note \cap_{i\in I} A_i \subseteq A_j\cap A_k = \emptyset if j\not=k.
Borel sets are smallest \sigma-algebra generated by open sets.
Riesz Representation Theorem: X compact Hausdorff, C(X)^* = M(X).
The proof is hard. Rudin needs 6 pages in Real and Complex Analysis.
If V a vector space then V^* is all linear functionals V\to\mathbf{R}.
If V a topological vector space then V^* is all continuous linear functionals V\to\mathbf{R}.
Haar measure.
Baire sets generated by dense G-deltas.
Radon measures? Finite on compact sets, outer regular on Borel set, and inner regular on open sets. Continuous functions with compact support. Bourbaki.
Mathematician’s Kayfabe. (Learned from Eric Weinstein. The Portal.)
Kayfabe - “The portrayal of staged events within the (wrestling) industry as ‘real’ or ‘true’”
Podcasts are the new news.
Not TeeVee news rich old white guys getting incinerated by the #MeToo asteroid pay their minions to parrot.
[Make it disappear. Deep State. Now back to our regularly scheduled programming.]
X any set, B(X)^* = ba(X).
B(X) - bounded function on X
ba(X) - finitely additive measures on X
The proof is easy.
If L\in B(X)^* define \lambda(A) = L(1_A) for any A\subseteq X,
where 1_A(x) = 1 if x\in A and 1_A(x) = 0 if x\not\in A.
Well-defined since \sum_j a_j 1_{A_j} = \sum_k b_k 1_{B_k} where B_k are pairwise disjoint.
[two lines instead of 6 pages]
Algebras - a study of the words ‘not’ and ‘and’.
We get ‘or’ from DeMoivre and ‘implies’ from subset.
Not A or B if and only if not A and not B
If A is a subset of B then x\in A implies x\in B.
If an algebra is finite the atoms form a partition.
The only set in an algebra contained in an atom is the empty set.
If \omega\in\Omega define A_\omega = \cap\{A\in\mathcal{A}:\omega\in A\}
The sets \{A_\omega:\omega\in\Omega\} are a partition.
A partition represents partial information.
All probabilities are conditional probabilities
E[X|\mathcal{A}] = (XP)|_{\mathcal{A}}


In this blog entry I’m going to detail the exact configuration and cover in some additional details the collateral resources you can expect to find once the configuration is executed against with Terraform. For the repository to this write up, I create our_new_world available on Github.
A lot of this material I wrote about with Setting up a GCP Container Cluster - Part I and Setting up a GCP Container Cluster - Part II. I had started on a Part 3 around setting up Drone.io on a Kubernetes/GCP Container Cluster but stopped midway through with other demands. This post is a more up to date post of all those things plus more. With this post completed I’ve stepped back into getting Drone.io setup and am now finally finishing that blog entry! #win!
First things first, locally you’ll want to have the respective CLI tools installed for Google Cloud Platform, Terraform, and Kubernetes.
- Install the gcloud CLI and get it configured with gcloud init
- Install the latest Terraform
- With gcloud CLI installed you can then easily install kubectl with
gcloud components install kubectl
command.
Now that all the prerequisites are covered, let’s dive into the specifics of setup.
If you take a look at the Google Cloud Platform Console, it’s easy to get a before and after view of what is and will be built in the environment. The specific areas where infrastructure will be built out for Kubernetes are in the following areas, which I’ve taken a few screenshots of just to show what the empty console looks like. Again, it’s helpful to see a before and after view, it helps to understand all the pieces that are being put into place.
The first view is of the Google Compute Engine page, which currently on this account in this organization I have no instances running.
This view shows the container engines running. Basically this screen will show any Kubernetes clusters running, Google just opted for the super generic Google Container Engine as a title with Kubernetes nowhere to be seen. Yet.
Here I have one ephemeral IP address, which honestly will disappear in a moment once I delete that forwarding rule.
These four firewall rules are the default. The account starts out with these, and there isn’t any specific reason to change them at this point. We’ll see a number of additional firewall settings in a moment.
Load balancers, again, currently empty but we’ll see resources here shortly.
Alright, that’s basically an audit of the screens where we’ll see the meat of resources built. It’s time to get the configurations built now.
Time to Terraform Our New World
Using Terraform to build a Kubernetes cluster is pretty minimalistic. First, as I always do I add a few files the way I like to organize my Terraform configuration project. These files include:
- .gitignore - for the requisite things I won’t want to go into the repository.
- connections.tf - for the connection to GCP.
- kubernetes.tf - for the configuration defining the characteristics of the Kubernetes cluster I’m working toward getting built.
- README.md - cuz docs first. No seriously, I don’t jest, write the damned docs!
- terraform.tfvars - for assigning variables created in variables.tf.
- variables.tf - for declaring and adding doc/descriptions for the variables I use.
In the .gitignore I add just a few items. Some are specific to my setup that I have and IntelliJ. The contents of the file looks like this. I’ve included comments in my .gitignore so that one can easily make sense of what I’m ignoring.
# A silly MacOS/OS-X hidden file that is the bane of all repos.
.DS_Store
# .idea is the user setting configuration directory for IntelliJ, or more generally Jetbrains IDE Products.
.idea
.terraform
The next file I write up is the connections.tf file.
provider "google" {
credentials = "${file("../secrets/account.json")}"
project = "thrashingcorecode"
region = "us-west1"
}
The path ../secrets/account.json
is where I place my account.json file with keys and such, to keep it out of the repository. For more on this practice check out my post Quick Start Connections With Terraform and Kubernetes and Working With Google Compute Engine (GCE) using Terraform (with a load of Bash Scripts Too) posts.
The project in GCP is called thrashingcorecode, which whatever you’ve named yours you can always find right up toward the top of the GCP Console.
Then the region is set to us-west1 which is the data centers that are located, most reasonably to my current geographic area, in The Dalles, Oregon. These data centers also tend to have a lot of the latest and greatest hardware, so they provide a little bit more oompf!
The next file I setup is the README.md, which you can just check out in the repository here.
Now I setup the variables.tf and the terraform.tfvars files. The variables.tf includes the following input and output variables declared.
// General Variables
variable "linux_admin_username" {
type = "string"
description = "User name for authentication to the Kubernetes linux agent virtual machines in the cluster."
}
variable "linux_admin_password" {
type ="string"
description = "The password for the Linux admin account."
}
// GCP Variables
variable "gcp_cluster_count" {
type = "string"
description = "Count of cluster instances to start."
}
variable "cluster_name" {
type = "string"
description = "Cluster name for the GCP Cluster."
}
// GCP Outputs
output "gcp_cluster_endpoint" {
value = "${google_container_cluster.gcp_kubernetes.endpoint}"
}
output "gcp_ssh_command" {
value = "ssh<EMAIL_ADDRESS>}
output "gcp_cluster_name" {
value = "${google_container_cluster.gcp_kubernetes.name}"
}
In the terraform.tfvars file I have the following assigned. Obviously you wouldn’t want to keep your production Linux username and passwords in this file, but for this example I’ve set them up here as the repository sample code can only be run against your own GCP org service, so remember, if you run this you’ve got public facing default linux account credentials exposed right here!
cluster_name = "ournewworld"
gcp_cluster_count = 1
linux_admin_username = "frankie"
linux_admin_password = "supersecretpassword"
Now for the meat of this effort. The kubernetes.tf file. The way I’ve set this file up is as shown.
resource "google_container_cluster" "gcp_kubernetes" {
name = "${var.cluster_name}"
zone = "us-west1-a"
initial_node_count = "${var.gcp_cluster_count}"
additional_zones = [
"us-west1-b",
"us-west1-c",
]
master_auth {
username = "${var.linux_admin_username}"
password = "${var.linux_admin_password}}"
}
node_config {
oauth_scopes = [
"https://www.googleapis.com/auth/compute",
"https://www.googleapis.com/auth/devstorage.read_only",
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring",
]
labels {
this-is-for = "dev-cluster"
}
tags = ["dev", "work"]
}
}
With all that setup I can now run the three commands to get everything built. The first command is terraform init
. This is new with the latest releases of Terraform, which pulls down any of the respective providers that a Terraform execution will need. In this particular project it pulls down the GCP Provider. This command only needs to be run the first time before terraform plan
or terraform apply
are run, if you’ve deleted your .terraform
directory, or if you’ve added configuration for something like Azure, Amazon Web Services, or Github that needs a new provider.
Now to ensure and determine what will be built, I’ll run terraform plan
.
Since everything looks good, time to execute with terraform apply
. This will display output similar to the terraform plan
command but for creating the command, and then you’ll see the countdown begin as it waits for instances to start up and networking to be configured and routed.
While waiting for this to build you can also click back and forth and watch firewall rules, networking, external IP addresses, and instances start to appears in the Google Cloud Platform Console. When it completes, we can see the results, which I’ll step through here with some added notes about what is or isn’t happening and then wrap up with a destruction of the Kubernetes cluster. Keep reading until the end, because there are some important caveats about things that might or might not be destroyed during clean up. It’s important to ensure you’ve got a plan to review the cluster after it is destroyed to make sure resources and the respective costs aren’t still there.
Compute Engine View
In the console click on the compute engine option.
I’ll start with the Compute Engine view. I can see the individual virtual machine instances here and their respective zones.
Looking at the Terraform file confiugration I can see that the initial zone to create the cluster in was used, which is us-west1-a inside the us-west1 region. The next two instances are in the respective additional_zones that I marked up in the Terraform configuration.
additional_zones = [
"us-west1-b",
"us-west1-c",
]
You could even add additional zones here too. Terraform during creation will create an additional virtual machine instance to add to the Kubernetes cluster for each increment that initial_node_count is set to. Currently I set mine to a variable so I could set it and other things in my terraform.tfvars file. Right now I have it set to 1 so that one virtual machine instance will be created in the initial zone and in each of the designated additional_zones.
Beyond the VM instances view click on the Instance groups, Instance templates, and Disks to seem more items setup for each of the instances in the respective deployed zones.
If I bump my virtual machine instance count up to 2, I get 6 virtual machine instances. I did this, and took a screenshot of those instances running. You can see that there are two instances in each zone now.
Instance groups
Note that an instance group is setup for each zone, so this group kind of organizes all the instances in that zone.
Instance Templates
Like the instance groups, there is one template per zone. If I setup 1 virtual machine instance or 10 in the zone, I’ll have one template that describes the instances that are created.
To SSH into any of these virtual machine instances, the easiest way is to navigate into one of the views for the instances, such as under the VM instances section, and click on the SSH button for the instance.
Then a screen will pop up showing the session starting. This will take 10-20 seconds sometimes so don’t assume it’s broken. Then a browser based standard looking SSH terminal will be running against the instance.
This comes in handy if any of the instances ends up having issues down the line. Of all the providers GCP has made connecting to instances and such with this and tools like gcloud extremely easy and quick.
Container Engine View
In this view we have cluster specific information to check out.
Once the cluster view comes up there sits the single cluster that is built. If there are additional, they display here just like instances or other resources on other screens. It’s all pretty standard and well laid out in Google Cloud Platform fashion.
The first thing to note, in my not so humble opinion, is the Connect button. This, like on so many other areas of the console, has immediate, quick, easy ways to connect to the cluster.
Gaining access to the cluster that is now created with the commands available is quick. The little button in the top right hand corner copies the command to the copy paste buffer. The two commands execute as shown.
gcloud container clusters get-credentials ournewworld --zone us-west1-a --project thrashingcorecode
and then
kubectl proxy
With the URI posted after execution of kubectl proxy
I can check out the active dashboard rendered for the container cluster at <IP_ADDRESS>:8001/ui.
IMPORTANT NOTE: If the kubectl
version isn’t up to an appropriate parity version with the server then it may not render this page ok. To ensure that the version is at parity, run a kubectl version
to see what versions are in place. I recently went through troubleshooting this scenario which rendered a blank page. After trial and error it came down to version differences on server and client kubectl
.
I’ll dive into more of the dashboard and related things in a later post. For now I’m going to keep moving forward and focus on the remaining resources built, in networking.
VPC Network
Once the networking view renders there are several key tabs on the left hand side; External IP addresses, Firewall rules, and Routes.
External IP Addresses
Setting and using external IP addresses allow for routing to the various Kubernetes nodes. Several ephemeral IP addresses are created and displayed in this section for each of the Kubernetes nodes. For more information check out the documentation on reserving a static external IP address and reserving an internal IP address.
Firewall Rules
In this section there are several new rules added for the cluster. For more information specific to GCP firewall rules check out the documentation about firewall rules.
Routes
Routes are used to setup paths mapping an IP range to a destination. Routes setup a VPC Networks where to send packets for a particular IP address. For more information about documentation route details.
Each of these sections have new resources built and added as shown above. More than a few convention based assumptions are made with Terraform.
Next steps…
In my next post I’ll dive into some things to setup once you’ve got your Kubernetes cluster. Setting up users, getting a continuous integration and delivery build started, and more. I’ll also be writing up another entry, similar to this for AWS and Azure Cloud Providers. If you’d like to see Kubernetes setup and a tour of the setup with Terraform beyond the big three, let me know and I’ll add that to the queue. Once we get past that there are a number of additional Kubernetes, containers, and dev specific posts that I’ll have coming up. Stay tuned, subscribe to the blog feed or follow @ThrashingCode for new blog posts.
Resources:


Keep track of your job applications!
Application Pending
Phone Interview Scheduled
Phone Interview Completed
Onsite Interview Scheduled
Onsite Interview Completed
Not Selected
Received Offer
Company Name
Req ID
Job Title
Recruiter's Email
Application Date
Status
URL
Action


Ode to the sun
May 20th, 2009
Ode to the sun
the fixed hanging star
It is to you that we owe life to
and as darkness falls here
somewhere not far off
there is daytime on which is predicated by another
Forever realized by nothing but ash and electricity,
water and sunlight and my paper
ground of being
rest in certainty
never stop, never sleep
the night never reaches you
far off you hold us in place
and only the moon's shadow blocks you
As I stand in the penumbra-
for a moment you fail to be
yet your gravity, your radiation,
it reaches me


--- layout: post title: ">Scrum is your mother-in-law!" date: 2008-11-15 08:33:00.000000000 +01:00 categories: - SCRUM tags: [] status: publish type: post published: true meta: blogger_blog: andreasohlund.blogspot.com blogger_permalink: "/2008/11/scrum-is-your-mother-in-law.html" dsq_thread_id: '299892650' author: login: andreas.ohlund email<EMAIL_ADDRESS>display_name: Andreas Öhlund first_name: Andreas last_name: "Öhlund" ---
>
James Shore has an excellent article on how you will fail with Scrum and other agile methodologies if you don't to realize the importance of engineering practices such as XP, TDD, Automated Acceptance tests etc. If you don't you'll probably end up with an ever increasing amount of technical debt that is going to fail your project. (hmm, increasing debt seems to be the theme this year:) )
One part that got me laughing was Ken Schwabers analogy about Scrum and your mother-in-law
"Scrum is like your mother-in-law," Ken Schwaber said at the recent Agile Vancouver conference. "It's constantly pointing out your shortcomings."
Having practiced Scrum for a while I must agree that this statement is spot on!
Just for the record: This is of course not true for my mother-in-law :) *** Gun against my head ***


Summary:
Passfault evaluates the strength of passwords accurately enough to predict the time to crack.
It makes creating passwords and password policies significantly more intuitive and simple.
- Accurate:
- Measures the size of password patterns and identifies more weak passwords, yet allows strong passwords that don't match traditional password policies
- Informative:
- Provides detailed analysis of the password and sub patterns within the password, so users quickly learn how to make strong passwords without training.
- Simple:
- Presents the password strength as the "time to crack" to help communicate the risk of poor paswords, providing the incentive to create stronger passwords.
- Powerful:
- Empowers administrators to know and control the strength and risk of the organization's passwords.
What does Passfault Do:
When setting a password, Passfault examines the password, looking for common patterns. Passfault than measures the strength of the patterns and combinations of patterns. The end result is a more academic and accurate measurement of password strength.
When setting a password policy, passfault simplifies configuration to one simple, intuitive and meaningful measurement: the time to crack
Continue reading to learn why the world needs better password analysis


Before testing your control, you must build and register it. You can manually register a control with the Register Control command on the Tools menu.
To insert a control into Test Container
1. Choose Insert New Control from the Edit menu.
2. Select a control.
If you see multiple entries with the same name, your registry may need to be cleaned.


Hello, world!
My name is
Maren
. When I grow up, I am going to be an
engineer!
Here is why I am excited:
I just created my first website. Whoppie!
I feel powerful!
I can't believe that I will get to do this again and again in DBC


PODCAST NAME
BEING BOSS
NAME OF PODCASTER
creative entrepreneurs
DESCRIPTION
being boss is a podcast for creative entrepreneurs, freelancers, and side-hustlers. join emily thompson and kathleen shannon as they dig into the mindset, habits, routines, and boundaries that help you make money doing what you love.
PODCAST NAME
10:BEING BOSS
Name of podcaster
CREATIVE ENTREPRENEURS
Description
A BITE-SIZED SHOW FOR CREATIVE ENTREPRENEURS WHERE WE TAKE LISTENER QUESTIONS AND GIVE OUT ACTIONABLE INSIGHTS, TOOLS, AND TACTICS IN AROUND 10 MINUTES.
PODCAST NAME
BEING BOSS
Name of podcaster
CREATIVE ENTREPRENEURS
Description
BEING BOSS IS A PODCAST FOR CREATIVE ENTREPRENEURS, FREELANCERS, AND SIDE-HUSTLERS.


|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
| Interface Summary | |
|---|---|
| ActionValidatorManager | ActionValidatorManager |
| FieldValidator | The FieldValidator interface defines the methods to be implemented by FieldValidators, which are used by the XWork validation framework to validate Action properties before executing the Action. |
| ShortCircuitableValidator | This interface should be implemented by validators that can short-circuit the validator queue that it is in. |
| Validator | The validators supplied by the Xwork distribution (and any validators you might write yourself) come in two different flavors: Plain Validators / Non-Field validators FieldValidators Plain Validators (such as the ExpressionValidator) perform validation checks that are not inherently tied to a single specified field. |
| ValidatorContext | The context for validation. |
| Class Summary | |
|---|---|
| ActionValidatorManagerFactory | ActionValidatorManagerFactory |
| AnnotationActionValidatorManager | AnnotationActionValidatorManager
This is the entry point into XWork's annotations-based validator framework. |
| AnnotationValidationConfigurationBuilder | AnnotationValidationConfigurationBuilder |
| DefaultActionValidatorManager | This is the entry point into XWork's rule-based validation framework. |
| DelegatingValidatorContext | A default implementation of the ValidatorContext interface. |
| DelegatingValidatorContext.ActionContextLocaleProvider | An implementation of LocaleProvider which gets the locale from the action context. |
| DelegatingValidatorContext.LoggingValidationAware | An implementation of ValidationAware which logs errors and messages. |
| ValidationInterceptor | This interceptor runs the action through the standard validation framework, which in turn checks the action against
any validation rules (found in files such as ActionClass-validation.xml) and adds field-level and action-level
error messages (provided that the action implements ValidationAware ). |
| ValidatorConfig | Holds the necessary information for configuring an instance of a Validator. |
| ValidatorFactory | ValidatorFactory |
| ValidatorFileParser | Parse the validation file. |
| Exception Summary | |
|---|---|
| ValidationException | ValidationException. |
XWork validation subsystem.
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


a new page for our future
View My GitHub Profile
hope it works “link”:www.bing.com ** test font *** how abt it
.h1 well .h2 222 .h3 yes
asdf yes ~nope~


The purpose of this page is to see what effect various JavaScript actions may have on search engine results.
As each option runs, its letter is added to the table and image below, as well as to the relevant <title> and <meta> tags in this document's <head>.
If a letter shows in a given search engine or service's results, it means that method was recorded by that search engine or service.
If a letter shows before another letter, it means that letter's method was executed first by the browser or crawler viewing the page.
This page is intentionally designed to be a "low priority" site for web crawlers. It uses a poor domain name (ranking-wise) and, as of initial indexing, does not have any sites linking to it. Results will eventually be published in a blog post somewhere, which is probably how you found this page to begin with.
In keeping with the theme of not having this page linked externally, you can find the code for this project by searching on GitHub for "tiaraudn".


You may be asking yourself, wtf is this creepy website? It's really not intended to be creepy.  Explore and enjoy!
{{ data.REMOTE_ADDR }} This is the address you connected from. It should be your proxy server's address if you're using one, otherwise just your good ol' public-facing IP.


 PLEASE MODIFY THE ORIGINAL SOURCE IN THE 'https://github.com/istio/istio' REPO source_repo: https://github.com/istio/istio title: galley description: Galley provides configuration management services for Istio. generator: pkg-collateral-docs number_of_entries: 5 max_toc_level: 2 remove_toc_prefix: 'galley ' ---
Galley provides configuration management services for Istio.
| Flags | Shorthand | Description |
|---|---|---|
--config <string> |
-c |
Config file containing args (default ``) |
--log_as_json |
Whether to format output as JSON or in plain console-friendly format | |
--log_caller <string> |
Comma-separated list of scopes for which to include caller information, scopes can be any of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] (default ``) | |
--log_output_level <string> |
Comma-separated minimum per-scope logging level of messages to output, in the form of <scope>:<level>,<scope>:<level>,... where scope can be one of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:info`) | |
--log_rotate <string> |
The path for the optional rotating log file (default ``) | |
--log_rotate_max_age <int> |
The maximum age in days of a log file beyond which the file is rotated (0 indicates no limit) (default `30`) | |
--log_rotate_max_backups <int> |
The maximum number of log file backups to keep before older files are deleted (0 indicates no limit) (default `1000`) | |
--log_rotate_max_size <int> |
The maximum size in megabytes of a log file beyond which the file is rotated (default `104857600`) | |
--log_stacktrace_level <string> |
Comma-separated minimum per-scope logging level at which stack traces are captured, in the form of <scope>:<level>,<scope:level>,... where scope can be one of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:none`) | |
--log_target <stringArray> |
The set of paths where to output the log. This can be any path as well as the special values stdout and stderr (default `[stdout]`) |
Check the liveness or readiness of a locally-running server
galley probe [flags]
| Flags | Shorthand | Description |
|---|---|---|
--config <string> |
-c |
Config file containing args (default ``) |
--interval <duration> |
Duration used for checking the target file's last modified time. (default `0s`) | |
--log_as_json |
Whether to format output as JSON or in plain console-friendly format | |
--log_caller <string> |
Comma-separated list of scopes for which to include caller information, scopes can be any of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] (default ``) | |
--log_output_level <string> |
Comma-separated minimum per-scope logging level of messages to output, in the form of <scope>:<level>,<scope>:<level>,... where scope can be one of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:info`) | |
--log_rotate <string> |
The path for the optional rotating log file (default ``) | |
--log_rotate_max_age <int> |
The maximum age in days of a log file beyond which the file is rotated (0 indicates no limit) (default `30`) | |
--log_rotate_max_backups <int> |
The maximum number of log file backups to keep before older files are deleted (0 indicates no limit) (default `1000`) | |
--log_rotate_max_size <int> |
The maximum size in megabytes of a log file beyond which the file is rotated (default `104857600`) | |
--log_stacktrace_level <string> |
Comma-separated minimum per-scope logging level at which stack traces are captured, in the form of <scope>:<level>,<scope:level>,... where scope can be one of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:none`) | |
--log_target <stringArray> |
The set of paths where to output the log. This can be any path as well as the special values stdout and stderr (default `[stdout]`) | |
--probe-path <string> |
Path of the file for checking the availability. (default ``) |
Starts Galley as a server
galley server [flags]
| Flags | Shorthand | Description |
|---|---|---|
--accessListFile <string> |
The access list yaml file that contains the allowed mTLS peer ids. (default `/etc/config/accesslist.yaml`) | |
--caCertFile <string> |
File containing the caBundle that signed the cert/key specified by --tlsCertFile and --tlsKeyFile. (default `/etc/certs/root-cert.pem`) | |
--config <string> |
-c |
Config file containing args (default ``) |
--configPath <string> |
Istio config file path (default ``) | |
--ctrlz_address <string> |
The IP Address to listen on for the ControlZ introspection facility. Use '*' to indicate all addresses. (default `localhost`) | |
--ctrlz_port <uint16> |
The IP port to use for the ControlZ introspection facility (default `9876`) | |
--deployment-name <string> |
Name of the deployment for the validation pod (default `istio-galley`) | |
--deployment-namespace <string> |
Namespace of the deployment for the validation pod (default `istio-system`) | |
--disableResourceReadyCheck |
Disable resource readiness checks. This allows Galley to start if not all resource types are supported | |
--domain <string> |
DNS domain suffix (default `cluster.local`) | |
--enable-reconcileWebhookConfiguration |
Enable reconciliation for webhook configuration. | |
--enable-server |
Run galley server mode | |
--enable-validation |
Run galley validation mode | |
--enableAnalysis |
Enable config analysis service | |
--enableProfiling |
Enable profiling for Galley | |
--enableServiceDiscovery |
Enable service discovery processing in Galley | |
--excludedResourceKinds <stringSlice> |
Comma-separated list of resource kinds that should not generate source events (default `[Endpoints,Namespace,Node,Pod,Service]`) | |
--insecure |
Use insecure gRPC communication | |
--kubeconfig <string> |
Use a Kubernetes configuration file instead of in-cluster configuration (default ``) | |
--livenessProbeInterval <duration> |
Interval of updating file for the Galley liveness probe. (default `2s`) | |
--livenessProbePath <string> |
Path to the file for the Galley liveness probe. (default `/healthLiveness`) | |
--log_as_json |
Whether to format output as JSON or in plain console-friendly format | |
--log_caller <string> |
Comma-separated list of scopes for which to include caller information, scopes can be any of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] (default ``) | |
--log_output_level <string> |
Comma-separated minimum per-scope logging level of messages to output, in the form of <scope>:<level>,<scope>:<level>,... where scope can be one of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:info`) | |
--log_rotate <string> |
The path for the optional rotating log file (default ``) | |
--log_rotate_max_age <int> |
The maximum age in days of a log file beyond which the file is rotated (0 indicates no limit) (default `30`) | |
--log_rotate_max_backups <int> |
The maximum number of log file backups to keep before older files are deleted (0 indicates no limit) (default `1000`) | |
--log_rotate_max_size <int> |
The maximum size in megabytes of a log file beyond which the file is rotated (default `104857600`) | |
--log_stacktrace_level <string> |
Comma-separated minimum per-scope logging level at which stack traces are captured, in the form of <scope>:<level>,<scope:level>,... where scope can be one of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:none`) | |
--log_target <stringArray> |
The set of paths where to output the log. This can be any path as well as the special values stdout and stderr (default `[stdout]`) | |
--meshConfigFile <string> |
Path to the mesh config file (default `/etc/mesh-config/mesh`) | |
--monitoringPort <uint> |
Port to use for exposing self-monitoring information (default `15014`) | |
--pprofPort <uint> |
Port to use for exposing profiling (default `9094`) | |
--readinessProbeInterval <duration> |
Interval of updating file for the Galley readiness probe. (default `2s`) | |
--readinessProbePath <string> |
Path to the file for the Galley readiness probe. (default `/healthReadiness`) | |
--resyncPeriod <duration> |
Resync period for rescanning Kubernetes resources (default `0s`) | |
--server-address <string> |
Address to use for Galley's gRPC API, e.g. tcp://localhost:9092 or unix:///path/to/file (default `tcp://<IP_ADDRESS>:9901`) | |
--server-maxConcurrentStreams <uint> |
Maximum number of outstanding RPCs per connection (default `1024`) | |
--server-maxReceivedMessageSize <uint> |
Maximum size of individual gRPC messages (default `1048576`) | |
--service-name <string> |
Name of the validation service running in the same namespace as the deployment (default `istio-galley`) | |
--sinkAddress <string> |
Address of MCP Resource Sink server for Galley to connect to. Ex: 'foo.com:1234' (default ``) | |
--sinkAuthMode <string> |
Name of authentication plugin to use for connection to sink server. (default ``) | |
--sinkMeta <stringSlice> |
Comma-separated list of key=values to attach as metadata to outgoing sink connections. Ex: 'key=value,key2=value2' (default `[]`) | |
--tlsCertFile <string> |
File containing the x509 Certificate for HTTPS. (default `/etc/certs/cert-chain.pem`) | |
--tlsKeyFile <string> |
File containing the x509 private key matching --tlsCertFile. (default `/etc/certs/key.pem`) | |
--useOldProcessor |
Use the old processing pipeline for config processing | |
--validation-port <uint> |
HTTPS port of the validation service. (default `9443`) | |
--validation-webhook-config-file <string> |
File that contains k8s validatingwebhookconfiguration yaml. Required if enable-validation is true. (default ``) | |
--validation.tls.caCertificates <string> |
File containing the caBundle that signed the cert/key specified by --validation.tls.clientCertificate and --validation.tls.privateKey. (default ``) | |
--validation.tls.clientCertificate <string> |
File containing the x509 Certificate for HTTPS validation. (default ``) | |
--validation.tls.privateKey <string> |
File containing the x509 private key matching --validation.tls.clientCertificate. (default ``) | |
--watchConfigFiles |
Enable the Fsnotify for watching config source files on the disk and implicit signaling on a config change. Explicit signaling will still be enabled | |
--webhook-name <string> |
Name of the k8s validatingwebhookconfiguration (default `istio-galley`) |
general:
introspection:
address: --ctrlz_address
port: --ctrlz_port
kubeconfig: --kubeconfig
processing:
domainsuffix: --domain
server:
address: --server-address
auth:
insecure: --insecure
enable: --enable-server
validation:
deploymentname: --deployment-name
deploymentnamespace: --deployment-namespace
enable: --enable-validation
servicename: --service-name
tls:
caCertificates: --validation.tls.caCertificates
clientCertificate: --validation.tls.clientCertificate
privateKey: --validation.tls.privateKey
webhookconfigfile: --validation-webhook-config-file
webhookname: --webhook-name
webhookport: --validation-port
Prints out build version information
galley version [flags]
| Flags | Shorthand | Description |
|---|---|---|
--config <string> |
-c |
Config file containing args (default ``) |
--log_as_json |
Whether to format output as JSON or in plain console-friendly format | |
--log_caller <string> |
Comma-separated list of scopes for which to include caller information, scopes can be any of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] (default ``) | |
--log_output_level <string> |
Comma-separated minimum per-scope logging level of messages to output, in the form of <scope>:<level>,<scope>:<level>,... where scope can be one of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:info`) | |
--log_rotate <string> |
The path for the optional rotating log file (default ``) | |
--log_rotate_max_age <int> |
The maximum age in days of a log file beyond which the file is rotated (0 indicates no limit) (default `30`) | |
--log_rotate_max_backups <int> |
The maximum number of log file backups to keep before older files are deleted (0 indicates no limit) (default `1000`) | |
--log_rotate_max_size <int> |
The maximum size in megabytes of a log file beyond which the file is rotated (default `104857600`) | |
--log_stacktrace_level <string> |
Comma-separated minimum per-scope logging level at which stack traces are captured, in the form of <scope>:<level>,<scope:level>,... where scope can be one of [all, analysis, attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, resource, runtime, server, source, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:none`) | |
--log_target <stringArray> |
The set of paths where to output the log. This can be any path as well as the special values stdout and stderr (default `[stdout]`) | |
--output <string> |
-o |
One of 'yaml' or 'json'. (default ``) |
--short |
-s |
Use --short=false to generate full version information |
galley
command.
| Variable Name | Type | Default Value | Description |
|---|---|---|---|
AUTHZ_FAILURE_LOG_BURST_SIZE |
Integer | 1 |
|
AUTHZ_FAILURE_LOG_FREQ |
Time Duration | 1m0s |
| Metric Name | Type | Description |
|---|---|---|
galley_runtime_processor_event_span_duration_milliseconds | Distribution | The duration between each incoming event |
galley_runtime_processor_events_processed_total | Count | The number of events that have been processed |
galley_runtime_processor_snapshot_events_total | Distribution | The number of events per snapshot |
galley_runtime_processor_snapshot_lifetime_duration_milliseconds | Distribution | The duration of each snapshot |
galley_runtime_processor_snapshots_published_total | Count | The number of snapshots that have been published |
galley_runtime_state_type_instances_total | LastValue | The number of type instances per type URL |
galley_runtime_strategy_on_change_total | Count | The number of times the strategy's onChange has been called |
galley_runtime_strategy_timer_max_time_reached_total | Count | The number of times the max time has been reached |
galley_runtime_strategy_timer_quiesce_reached_total | Count | The number of times a quiesce has been reached |
galley_runtime_strategy_timer_resets_total | Count | The number of times the timer has been reset |
galley_source_kube_dynamic_converter_failure_total | Count | The number of times a dynamnic kubernetes source failed converting a resources |
galley_source_kube_dynamic_converter_success_total | Count | The number of times a dynamic kubernetes source successfully converted a resource |
galley_source_kube_event_error_total | Count | The number of times a kubernetes source encountered errored while handling an event |
galley_source_kube_event_success_total | Count | The number of times a kubernetes source successfully handled an event |
galley_validation_cert_key_update_errors | Count | Galley validation webhook certificate updates errors |
galley_validation_cert_key_updates | Count | Galley validation webhook certificate updates |
galley_validation_config_load | Count | k8s webhook configuration (re)loads |
galley_validation_config_load_error | Count | k8s webhook configuration (re)load error |
galley_validation_config_update_error | Count | k8s webhook configuration update error |
galley_validation_config_updates | Count | k8s webhook configuration updates |
galley_validation_failed | Count | Resource validation failed |
galley_validation_http_error | Count | Resource validation http serve errors |
galley_validation_passed | Count | Resource is valid |
istio_build | LastValue | Istio component build info |
istio_mcp_clients_total | LastValue | The number of streams currently connected. |
istio_mcp_message_sizes_bytes | Distribution | Size of messages received from clients. |
istio_mcp_reconnections | Sum | The number of times the sink has reconnected. |
istio_mcp_recv_failures_total | Sum | The number of recv failures in the source. |
istio_mcp_request_acks_total | Sum | The number of request acks received by the source. |
istio_mcp_request_nacks_total | Sum | The number of request nacks received by the source. |
istio_mcp_send_failures_total | Sum | The number of send failures in the source. |


--- layout: post status: publish published: true title: Upgrading to Karmic Koala and Bugs author: display_name: Tomas Restrepo login: tomasr email<EMAIL_ADDRESS>url: http://winterdom.com/ author_login: tomasr author_email<EMAIL_ADDRESS>author_url: http://winterdom.com/ wordpress_id: 1306 wordpress_url: http://winterdom.com/2009/10/upgrading-to-karmic-koala-and-bugs date: '2009-10-30 17:48:02 +0000' date_gmt: '2009-10-30 17:48:02 +0000' categories: - Linux tags: [] comments: - id: 1198 author: asdf author_email<EMAIL_ADDRESS>author_url: '' date: '2009-11-03 00:36:07 +0000' date_gmt: '2009-11-03 00:36:07 +0000' content: "See \"gcc chokes under Karmic's smbfs\"\r\nhttps://bugs.launchpad.net/ubuntu/+source/gcc-defaults/+bug/455122" - id: 1199 author: asdf author_email<EMAIL_ADDRESS>author_url: '' date: '2009-11-03 00:37:31 +0000' date_gmt: '2009-11-03 00:37:31 +0000' content: oops, sorry, I didn't read your entire post. ---
Yesterday afternoon I kicked off the update to Karmic Koala (9.10) on my trusty Dell Latitude D820 laptop that was running Ubuntu 9.04. The update took a long time (mostly due to the servers getting hammered) and, overall, worked just fine.
I did have to struggle with a couple of things. For example, I originally installed that machine with Xubuntu a long time ago and then converted to GNome. The Karmic upgrade enabled Xubuntu as the default again and configured XFCE as the default session, but that’s easy enough to fix. I can’t seem to find where to change my logon screen to the one I was using, though.
The big issue issues I’m running on, however, are related to what I use my machine the most for :(:


{% extends "otree/admin/Session.html" %} {% load otree i18n %} {% block content %} {{ block.super }} {% if not mturk_ready %}
MTurk is currently disabled. If you want to publish your HIT on MTurk please do the following steps:
| Step | Done? |
|---|---|
Run pip3 install otree[mturk]
and in your requirements_base.txt ,
replace otree==N.N.N with otree[mturk]==N.N.N .
This will install oTree along with extra MTurk-specific packages.
|
{{ boto3_installed|yesno }} |
Set the settings AWS_ACCESS_KEY_ID and
AWS_SECRET_ACCESS_KEY |
{{ aws_keys_exist|yesno }} |
View this page with HTTPS.
|
{{ https|yesno }} |
You can read more about Amazon Mechanical Turk integration here.
{% elif session.mturk_is_expired %}This HIT has expired, so workers can no longer accept assignments.
{% elif session.mturk_HITId %}You have published HIT for this session on MTurk {% if session.mturk_use_sandbox %} Sandbox {% endif %} .
To look at the HIT as a worker follow this link.
The above button will expire this HIT early. You should click this button before deleting the session. Otherwise, your nonexistent session will still be advertised on the MTurk website, and MTurk workers will get a "page not found" error. (However, it is safe to delete the session if all assignments have been submitted.)
{% else %} {% if form.errors %}


Now that you have made your own repository and have acuired mad skills, you might want to copy someone elses repository. You can do this by going to the location on your computer where you want to add the files.
Then you go to https://github.com and find a project you wish to clone and copy that projects link. If you want to copy this website you would write:
git clone https://github.com/welearncodes/e-learning.git
This will copy the files to the location you picked out.


Directives are a way to teach HTML new tricks. During DOM compilation directives are matched against the HTML and executed. This allows directives to register behavior, or transform the DOM.
Angular comes with a built in set of directives which are useful for building web applications but can be extended such that HTML can be turned into a declarative domain specific language (DSL).
Directives have camel cased names such as 'ngBind'. The directive can be invoked by translating
the camel case name into snake case with these special characters :
, -
, or _
. Optionally the
directive can be prefixed with x-
, or data-
to make it HTML validator compliant. Here is a
list of some of the possible directive names: ng:bind
, ng-bind
, ng_bind
, x-ng-bind
and
data-ng-bind
.
The directives can be placed in element names, attributes, class names, as well as comments. Here
are some equivalent examples of invoking myDir
. (However, most directives are restricted to
attribute only.)
  <my-dir></my-dir>
Directives can be invoked in many different ways, but are equivalent in the end result as shown in the following example.

 Hello <input ng-model='name'>

it('should load template1.html', function() { expect(element('div[ng-controller="Ctrl1"] span[ng-bind]').text()).toBe('angular'); });
During the compilation process the compiler
matches text and
attributes using the $interpolate
service to see if they
contain embedded expressions. These expressions are registered as watches
and will update as part of normal digest
cycle. An example of interpolation is shown
here:
Hello {{username}}!
Compilation of HTML happens in three phases:
First the HTML is parsed into DOM using the standard browser API. This is important to realize because the templates must be parsable HTML. This is in contrast to most templating systems that operate on strings, rather then on DOM elements.
The compilation of the DOM is performed by the call to $compile()
method. The method traverses the DOM and matches the directives. If a match is found
it is added to the list of directives associated with the given DOM element. Once all directives
for a given DOM element have been identified they are sorted by priority and their compile()
functions are executed. The directive compile function has a chance to modify the DOM structure
and is responsible for producing a link()
function explained next. The $compile()
method returns a combined linking function, which is a
collection of all of the linking functions returned from the individual directive compile
functions.
Link the template with scope by calling the linking function returned from the previous step.
This in turn will call the linking function of the individual directives allowing them to
register any listeners on the elements and set up any watches
with the scope
. The result of this is a live binding between the
scope and the DOM. A change in the scope is reflected in the DOM.
var $compile = ...; // injected into your code var scope = ...; var html = '

'; // Step 1: parse HTML into DOM element var template = angular.element(html); // Step 2: compile the template var linkFn = $compile(template); // Step 3: link the compiled template with the scope. linkFn(scope);
At this point you may wonder why is the compile process broken down to a compile and link phase. To understand this, lets look at a real world example with repeater:
Hello {{user}}, you have these actions:

 {{action.description}}

The short answer is that compile and link separation is needed any time a change in model causes a change in DOM structure such as in repeaters.
When the above example is compiled, the compiler visits every node and looks for directives. The
{{user}}
is an example of interpolation
directive. ngRepeat
is another directive. But ngRepeat
has a dilemma. It needs to be
able to quickly stamp out new li
s for every action
in user.actions
. This means that it needs
to save a clean copy of the li
element for cloning purposes and as new action
s are inserted,
the template li
element needs to be cloned and inserted into ul
. But cloning the li
element
is not enough. It also needs to compile the li
so that its directives such as
{{action.descriptions}}
evaluate against the right scope
. A naive method would be to simply insert a copy of the li
elemnt and then compile it.
But compiling on every li
element clone would be slow, since the compilation requires that we
traverse the DOM tree and look for directives and execute them. If we put the compilation inside a
repeater which needs to unroll 100 items we would quickly run into performance problem.
The solution is to break the compilation process into two phases the compile phase where all of
the directives are identified and sorted by priority, and a linking phase where any work which
links a specific instance of the scope
and the specific
instance of an li
is performed.
ngRepeat
works by preventing the
compilation process form descending into li
element. Instead the ngRepeat
directive compiles li
seperatly. The result of of the li
element compilation is a linking function which contains all
of the directives contained in the li
element ready to be attached to a specific clone of li
element. At runtime the ngRepeat
watches the expression and as items are added to the array it clones the li
element, creates a
new scope
for the cloned li
element and calls the
link function on the cloned li
.
Summary:
compile function - The compile function is relatively rare in directives, since most directives are concerned with working with a specific DOM element instance rather then transforming the template DOM element. Any operation which can be shared among the instance of directives should be moved to the compile function for performance reasons.
link function - It is rare for the directive not to have a link function. Link function allows the directive to register listeners to the specific cloned DOM element instance as well as to copy content into the DOM from the scope.
In this example we will build a directive which displays the current time.

 Date format: <input ng-model='format'>
 Current time is: </span

The full skeleton of the directive is shown here:
var myModule = angular.module(...); myModule.directive('directiveName', function factory(injectables) { var directiveDefinitionObject = { priority: 0, template: '

', templateUrl: 'directive.html', replace: false, transclude: false, restrict: 'A', scope: false, compile: function compile(tElement, tAttrs, transclude) { return { pre: function preLink(scope, iElement, iAttrs, controller) { ... }, post: function postLink(scope, iElement, iAttrs, controller) { ... } } }, link: function postLink(scope, iElement, iAttrs) { ... } }; return directiveDefinitionObject; });
In most cases you will not need such fine control and so the above can be simplified. All of the different parts of this skeleton are explained in following sections. In this section we are interested only isomers of this skeleton.
The first step in simplyfing the code is to rely on the deafult values. Therefore the above can be simplified as:
var myModule = angular.module(...); myModule.directive('directiveName', function factory(injectables) { var directiveDefinitionObject = { compile: function compile(tElement, tAttrs) { return function postLink(scope, iElement, iAttrs) { ... } } }; return directiveDefinitionObject; });
Most directives concern themselves only with instances not with template transformations allowing further simplification:
var myModule = angular.module(...); myModule.directive('directiveName', function factory(injectables) { return function postLink(scope, iElement, iAttrs) { ... } });
The factory method is responsible for creating the directive. It is invoked only once, when the
compiler
matches the directive for the first time. You can
perform any initialization work here. The method is invoked using the $injector.invoke which
makes it injectable following all of the rules of injection annotation.
The directive definition object provides instructions to the compiler
. The attributes are:
name
- Name of the current scope. Optional defaults to the name at registration.
priority
- When there are multiple directives defined on a single DOM element, sometimes it
is necessary to specify the order in which the directives are applied. The priority
is used
to sort the directives before their compile
functions get called. Higher priority
goes
first. The order of directives within the same priority is undefined.
terminal
- If set to true then the current priority
will be the last set of directives
which will execute (any directives at the current priority will still execute
as the order of execution on same priority
is undefined).
scope
- If set to:
true
- then a new scope will be created for this directive. If multiple directives on the
same element request new scope, only one new scope is created. The new scope rule does not
apply for the root of the template since the root of the template always gets a new scope.
{}
(object hash) - then a new 'isolate' scope is created. The 'isolate' scope differs from
normal scope that it does not prototypically inherit from the parent scope. This is useful
when creating reusable components, which should not accidentally read or modify data in
parent scope.
The 'isolate' scope takes an object hash which defines a set of local scope properties
derived from the parent scope. These local properties are useful for aliasing values for
templates. Locals definition is a hash of normalized element attribute name to their
corresponding binding strategy. Valid binding strategies are:
attribute
- one time read of element attribute value and save it to widget scope.
Given <widget my-attr='abc'>
and widget definition of scope: {myAttr:'attribute'}
,
then widget scope property myAttr
will be "abc"
.
evaluate
- one time evaluation of expression stored in the attribute.
Given
<widget my-attr='name'>
and widget definition of scope: {myAttr:'evaluate'}
, and
parent scope {name:'angular'}
then widget scope property myAttr
will be "angular"
.
bind
- Set up one way binding from the element attribute to the widget scope.
Given <widget my-attr='{{name}}'>
and widget definition of scope: {myAttr:'bind'}
,
and parent scope {name:'angular'}
then widget scope property myAttr
will be
"angular"
, but any changes in the parent scope will be reflected in the widget scope.
accessor
- Set up getter/setter function for the expression in the widget element
attribute to the widget scope.
Given <widget my-attr='name'>
and widget definition
of scope: {myAttr:'prop'}
, and parent scope {name:'angular'}
then widget scope
property myAttr
will be a function such that myAttr()
will return "angular"
and
myAttr('new value')
will update the parent scope name
property. This is useful for
treating the element as a data-model for reading/writing.
expression
- Treat element attribute as an expression to be executed on the parent scope.
Given <widget my-attr='doSomething()'>
and widget definition of scope:
{myAttr:'expression'}
, and parent scope {doSomething:function() {}}
then calling the
widget scope function myAttr
will execute the expression against the parent scope.
controller
- Controller constructor function. The controller is instantiated before the
pre-linking phase and it is shared with other directives if they request it by name (see
require
attribute). This allows the directives to communicate with each other and augment
each other behavior. The controller is injectable with the following locals:
$scope
- Current scope associated with the element$element
- Current element$attrs
- Current attributes obeject for the element$transclude
- A transclude linking function pre-bound to the correct transclusion scope:
function(cloneLinkingFn)
.require
- Require another controller be passed into current directive linking function. The
require
takes a name of the directive controller to pass in. If no such controller can be
found an error is raised. The name can be prefixed with:
?
- Don't raise an error. This makes the require dependency optional.^
- Look for the controller on parent elements as well.inject
(object hash) - Specifies a way to inject bindings into a controller. Injection
definition is a hash of normalized element attribute names to their corresponding binding
strategy. Valid binding strategies are:
attribute
- inject attribute value.
Given <widget my-attr='abc'>
and widget definition of inject: {myAttr:'attribute'}
, then
myAttr
will inject "abc"
.
evaluate
- inject one time evaluation of expression stored in the attribute.
Given <widget my-attr='name'>
and widget definition of inject: {myAttr:'evaluate'}
, and
parent scope {name:'angular'}
then myAttr
will inject "angular"
.
accessor
- inject a getter/setter function for the expression in the widget element
attribute to the widget scope.
Given <widget my-attr='name'>
and widget definition of inject: {myAttr:'prop'}
, and
parent scope {name:'angular'}
then injecting myAttr
will inject a function such
that myAttr()
will return "angular"
and myAttr('new value')
will update the parent
scope name
property. This is usefull for treating the element as a data-model for
reading/writing.
expression
- Inject expression function.
Given <widget my-attr='doSomething()'>
and widget definition of
inject: {myAttr:'expression'}
, and parent scope {doSomething:function() {}}
then
injecting myAttr
will inject a function which when called will execute the expression
against the parent scope.
restrict
- String of subset of EACM
which restricts the directive to a specific directive
declaration style. If omitted directives are allowed on attributes only.
E
- Element name: <my-directive></my-directive>
A
- Attribute:

C
- Class:

M
- Comment:
template
- replace the current element with the contents of the HTML. The replacement process
migrates all of the attributes / classes from the old element to the new one. See Creating
Widgets section below for more information.
templateUrl
- Same as template
but the template is loaded from the specified URL. Because
the template loading is asynchronous the compilation/linking is suspended until the template
is loaded.
replace
- if set to true
then the template will replace the current element, rather then
append the template to the element.
transclude
- compile the content of the element and make it available to the directive.
Typically used with ngTransclude
. The advantage of transclusion is that the linking function receives a
transclusion function which is pre-bound to the correct scope. In a typical setup the widget
creates an isolate
scope, but the transclusion is not a child, but a sibling of the isolate
scope. This makes it possible for the widget to have private state, and the transclusion to
be bound to the parent (pre-isolate
) scope.
true
- transclude the content of the directive.'element'
- transclude the whole element including any directives defined at lower priority.compile
: This is the compile function described in the section below.
link
: This is the link function described in the section below. This property is used only
if the compile
property is not defined.
function compile(tElement, tAttrs, transclude) { ... }
Compile function deals with transforming the template DOM. Since most directives do not do
template transformation, it is not used often. Examples which require compile functions are
directives which transform template DOM such as ngRepeat
or load the contents
asynchronously such as ngView
. The
compile functions takes the following arguments.
tElement
- template element - The element where the directive has been declared. It is
safe to do template transformation on the element and child elements only.
tAttrs
- template attributes - Normalized list of attributes declared on this element shared
between all directive compile functions. See Attributes
transclude
- A transclude linking function: function(scope, cloneLinkingFn)
.
NOTE: The template instance and the link instance may not be the same objects if the template has been cloned. For this reason it is not safe in the compile function to do anything other the DOM transformation that applies to all DOM clones. Specifically, DOM listener registration should be done in a linking function rather than in a compile function.
A compile function can have a return value which can be either a function or an object.
returning a function - is equivalent to registering the linking function via the link
property
of the config object when the compile function is empty.
returning an object with function(s) registered via pre
and post
properties - allows you to
control when a linking function should be called during the linking phase. See info about
pre-linking and post-linking functions below.
function link(scope, iElement, iAttrs, controller) { ... }
Link function is responsible for registering DOM listeners as well as updating the DOM. It is executed after the template has been cloned. This is where most of the directive logic will be put.
scope
- Scope
- The scope to be used by the
directive for registering watches
.
iElement
- instance element - The element where the directive is to be used. It is safe to
manipulate the children of the element only in postLink
function since the children have
already been linked.
iAttrs
- instance attributes - Normalized list of attributes declared on this element shared
between all directive linking functions. See Attributes
controller
- a controller instance - A controller instance if at least one directive on the
element defines a controller. The controller is shared among all the directives, which allows
the directives to use the controllers as a communication channel.
Executed before the child elements are linked. Not safe to do DOM transformation since the compiler linking function will fail to locate the correct elements for linking.
Executed after the child elements are linked. Safe to do DOM transformation in here.
The attributes object - passed as a parameter in the link() or compile() functions - is a way of accessing:
normalized attribute names: Since a directive such as 'ngBind' can be expressed in many ways sucha s as 'ng:bind', or 'x-ng-bind', the attributes object allows for a normalize accessed to the attributes.
directive inter-communication: All directives share the same instance of the attributes object which allows the directives to use the attributes object as inter directive communication.
supports interpolation: Interpolation attributes are assigned to the attribute object allowing other directives to read the interpolated value.
observing interpolated attributes: Use $observe
to observe the value changes of attributes
that contain interpolation (e.g. src="{{bar}}"
). Not only is this very efficient but it's also
the only way to easily get the actual value because during the linking phase the interpolation
hasn't been evaluated yet and so the value is at this time set to undefined
.
function linkingFn(scope, elm, attrs, ctrl) { // get the attribute value console.log(attrs.ngModel); // change the attribute attrs.$set('ngModel', 'new value'); // observe changes to interpolated attribute attrs.$observe('ngModel', function(value) { console.log('ngModel has changed value to ' + value); }); }
It is often desirable to have reusable components. Below is a pseudo code showing how a simplified dialog component may work.

 <button ng-click="show=true">show</button> <dialog title="Hello {{username}}." visible="show" on-cancel="show = false" on-ok="show = false; doSomething()"> Body goes here: {{username}} is {{title}}. </dialog>
Clicking on the "show" button will open the dialog. The dialog will have a title, which is
data bound to username
, and it will also have a body which we would like to transclude
into the dialog.
Here is an example of what the template definition for the dialog
widget may look like.

{{title}}

 <button ng-click="onOk()">Save changes</button> <button ng-click="onCancel()">Close</button>

This will not render properly, unless we do some scope magic.
The first issue we have to solve is that the dialog box template expect title
to be defined, but
the place of instantiation would like to bind to username
. Furthermore the buttons expect onOk
as well as onCancel
functions to be present in the scope. This limits the usefulness of the
widget. To solve the mapping issue we use the locals
to create local variables which the template
expects as follows:
scope: { title: 'bind', // set up title to accept data-binding onOk: 'expression', // create a delegate onOk function onCancel: 'expression', // create a delegate onCancel function show: 'accessor' // create a getter/setter function for visibility. }
Creating local properties on widget scope creates two problems:
isolation - if the user forgets to set title
attribute of the dialog widget the dialog
template will bind to parent scope property. This is unpredictable and undesirable.
transclusion - the transcluded DOM can see the widget locals, which may overwrite the
properties which the transclusion needs for data-binding. In our example the title
property of the widget clobbers the title
property of the transclusion.
To solve the issue of lack of isolation, the directive declares a new isolated
scope. An
isolated scope does not prototypically inherit from the child scope, and therefore we don't have
to worry about accidentally clobbering any properties.
However 'isolated' scope creates a new problem: if a transcluded DOM is a child of the widget isolated scope then it will not be able to bind to anything. For this reason the transcluded scope is a child of the original scope, before the widget created an isolated scope for its local variables. This makes the transcluded and widget isolated scope siblings.
This may seem as unexpected complexity, but it gives the widget user and developer the least surprise.
Therefore the final directive definition looks something like this:
transclude: true, scope: { title: 'bind', // set up title to accept data-binding onOk: 'expression', // create a delegate onOk function onCancel: 'expression', // create a delegate onCancel function show: 'accessor' // create a getter/setter function for visibility. }
It is often desirable to replace a single directive with a more complex DOM structure. This allows the directives to become a short hand for reusable components from which applications can be built.
Following is an example of building a reusable widget.

 Title: <input ng-model="title">
 Text: <textarea ng-model="text"></textarea>

{{text}}

it('should bind and open / close', function() { input('title').enter('TITLE'); input('text').enter('TEXT'); expect(element('.title').text()).toEqual('Details: TITLE...'); expect(binding('text')).toEqual('TEXT'); expect(element('.zippy').prop('className')).toMatch(/closed/); element('.zippy > .title').click(); expect(element('.zippy').prop('className')).toMatch(/opened/); });