- NAME
- Tcl_LinkVar, Tcl_UnlinkVar, Tcl_UpdateLinkedVar - link Tcl variable to C variable
- SYNOPSIS
- #include <tcl.h>
- int
- Tcl_LinkVar(interp, varName, addr, type)
- Tcl_UnlinkVar(interp, varName)
- Tcl_UpdateLinkedVar(interp, varName)
- ARGUMENTS
- DESCRIPTION
- TCL_LINK_INT
- TCL_LINK_UINT
- TCL_LINK_CHAR
- TCL_LINK_UCHAR
- TCL_LINK_SHORT
- TCL_LINK_USHORT
- TCL_LINK_LONG
- TCL_LINK_ULONG
- TCL_LINK_DOUBLE
- TCL_LINK_FLOAT
- TCL_LINK_WIDE_INT
- TCL_LINK_WIDE_UINT
- TCL_LINK_BOOLEAN
- TCL_LINK_STRING
- KEYWORDS
Tcl_LinkVar, Tcl_UnlinkVar, Tcl_UpdateLinkedVar - link Tcl variable to C variable
#include <tcl.h>
int
Tcl_LinkVar(interp, varName, addr, type)
Tcl_UnlinkVar(interp, varName)
Tcl_UpdateLinkedVar(interp, varName)
- Tcl_Interp *interp (in)
-
Interpreter that contains varName.
Also used by Tcl_LinkVar to return error messages.
- const char *varName (in)
-
Name of global variable.
- char *addr (in)
-
Address of C variable that is to be linked to varName.
- int type (in)
-
Type of C variable. Must be one of TCL_LINK_INT,
TCL_LINK_UINT, TCL_LINK_CHAR, TCL_LINK_UCHAR,
TCL_LINK_SHORT, TCL_LINK_USHORT, TCL_LINK_LONG,
TCL_LINK_ULONG,
TCL_LINK_WIDE_INT,
TCL_LINK_WIDE_UINT, TCL_LINK_FLOAT,
TCL_LINK_DOUBLE, TCL_LINK_BOOLEAN, or
TCL_LINK_STRING, optionally OR'ed with TCL_LINK_READ_ONLY
to make Tcl variable read-only.
Tcl_LinkVar uses variable traces to keep the Tcl variable
named by varName in sync with the C variable at the address
given by addr.
Whenever the Tcl variable is read the value of the C variable will
be returned, and whenever the Tcl variable is written the C
variable will be updated to have the same value.
Tcl_LinkVar normally returns TCL_OK; if an error occurs
while setting up the link (e.g. because varName is the
name of array) then TCL_ERROR is returned and the interpreter's result
contains an error message.
The type argument specifies the type of the C variable,
and must have one of the following values, optionally OR'ed with
TCL_LINK_READ_ONLY:
- TCL_LINK_INT
-
The C variable is of type int.
Any value written into the Tcl variable must have a proper integer
form acceptable to Tcl_GetIntFromObj; attempts to write
non-integer values into varName will be rejected with
Tcl errors.
- TCL_LINK_UINT
-
The C variable is of type unsigned int.
Any value written into the Tcl variable must have a proper unsigned
integer form acceptable to Tcl_GetWideIntFromObj and in the
platform's defined range for the unsigned int type; attempts to
write non-integer values (or values outside the range) into
varName will be rejected with Tcl errors.
- TCL_LINK_CHAR
-
The C variable is of type char.
Any value written into the Tcl variable must have a proper integer
form acceptable to Tcl_GetIntFromObj and be in the range of the
char datatype; attempts to write non-integer or out-of-range
values into varName will be rejected with Tcl errors.
- TCL_LINK_UCHAR
-
The C variable is of type unsigned char.
Any value written into the Tcl variable must have a proper unsigned
integer form acceptable to Tcl_GetIntFromObj and in the
platform's defined range for the unsigned char type; attempts to
write non-integer values (or values outside the range) into
varName will be rejected with Tcl errors.
- TCL_LINK_SHORT
-
The C variable is of type short.
Any value written into the Tcl variable must have a proper integer
form acceptable to Tcl_GetIntFromObj and be in the range of the
short datatype; attempts to write non-integer or out-of-range
values into varName will be rejected with Tcl errors.
- TCL_LINK_USHORT
-
The C variable is of type unsigned short.
Any value written into the Tcl variable must have a proper unsigned
integer form acceptable to Tcl_GetIntFromObj and in the
platform's defined range for the unsigned short type; attempts to
write non-integer values (or values outside the range) into
varName will be rejected with Tcl errors.
- TCL_LINK_LONG
-
The C variable is of type long.
Any value written into the Tcl variable must have a proper integer
form acceptable to Tcl_GetLongFromObj; attempts to write
non-integer or out-of-range
values into varName will be rejected with Tcl errors.
- TCL_LINK_ULONG
-
The C variable is of type unsigned long.
Any value written into the Tcl variable must have a proper unsigned
integer form acceptable to Tcl_GetWideIntFromObj and in the
platform's defined range for the unsigned long type; attempts to
write non-integer values (or values outside the range) into
varName will be rejected with Tcl errors.
- TCL_LINK_DOUBLE
-
The C variable is of type double.
Any value written into the Tcl variable must have a proper real
form acceptable to Tcl_GetDoubleFromObj; attempts to write
non-real values into varName will be rejected with
Tcl errors.
- TCL_LINK_FLOAT
-
The C variable is of type float.
Any value written into the Tcl variable must have a proper real
form acceptable to Tcl_GetDoubleFromObj and must be within the
range acceptable for a float; attempts to
write non-real values (or values outside the range) into
varName will be rejected with Tcl errors.
- TCL_LINK_WIDE_INT
-
The C variable is of type Tcl_WideInt (which is an integer type
at least 64-bits wide on all platforms that can support it.)
Any value written into the Tcl variable must have a proper integer
form acceptable to Tcl_GetWideIntFromObj; attempts to write
non-integer values into varName will be rejected with
Tcl errors.
- TCL_LINK_WIDE_UINT
-
The C variable is of type Tcl_WideUInt (which is an unsigned
integer type at least 64-bits wide on all platforms that can support
it.)
Any value written into the Tcl variable must have a proper unsigned
integer form acceptable to Tcl_GetWideIntFromObj (it will be
cast to unsigned);
attempts to write non-integer values into varName will be
rejected with Tcl errors.
- TCL_LINK_BOOLEAN
-
The C variable is of type int.
If its value is zero then it will read from Tcl as
“0”;
otherwise it will read from Tcl as
“1”.
Whenever varName is
modified, the C variable will be set to a 0 or 1 value.
Any value written into the Tcl variable must have a proper boolean
form acceptable to Tcl_GetBooleanFromObj; attempts to write
non-boolean values into varName will be rejected with
Tcl errors.
- TCL_LINK_STRING
-
The C variable is of type char *.
If its value is not NULL then it must be a pointer to a string
allocated with Tcl_Alloc or ckalloc.
Whenever the Tcl variable is modified the current C string will be
freed and new memory will be allocated to hold a copy of the variable's
new value.
If the C variable contains a NULL pointer then the Tcl variable
will read as
“NULL”.
If the TCL_LINK_READ_ONLY flag is present in type then the
variable will be read-only from Tcl, so that its value can only be
changed by modifying the C variable.
Attempts to write the variable from Tcl will be rejected with errors.
Tcl_UnlinkVar removes the link previously set up for the
variable given by varName. If there does not exist a link
for varName then the procedure has no effect.
Tcl_UpdateLinkedVar may be invoked after the C variable has
changed to force the Tcl variable to be updated immediately.
In many cases this procedure is not needed, since any attempt to
read the Tcl variable will return the latest value of the C variable.
However, if a trace has been set on the Tcl variable (such as a
Tk widget that wishes to display the value of the variable), the
trace will not trigger when the C variable has changed.
Tcl_UpdateLinkedVar ensures that any traces on the Tcl
variable are invoked.
boolean, integer, link, read-only, real, string, traces, variable
Copyright © 1995-1997 Roger E. Critchlow Jr.
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.


{% extends "PNapp/main.html" %} {% load static %} {% block content %} Connection Requests {% for fr in friend_requests %} {{fr.creator.name}} {{fr.creator.surname}} added you. Accept Request Reject Request {% empty %} No Connection Requests pending. {% endfor %} Post Notifications {% for action in notifications %} {% if user.id != action.creator.id %} {% if action.get_classname == "Interest" %} {{action.creator.name}} {{action.creator.surname}} is interested in your post: "{{action.post}}". {% elif action.get_classname == "Comment" %} {{action.creator.name}} {{action.creator.surname}} commented on your post: "{{action.post_id}}" and wrote "{{action.text}}" {% else %} asd{{action.get_classname}}asd {% endif %} {% endif %} {% endfor %} {% endblock %}
{{fr.creator.name}} {{fr.creator.surname}} added you.
{{action.creator.name}} {{action.creator.surname}} is interested in your post: "{{action.post}}".
{{action.creator.name}} {{action.creator.surname}} commented on your post: "{{action.post_id}}" and wrote "{{action.text}}"


Pferde fressen keinen Gurkensalat.
This text is styled.
Button will go away after 4s.
Click after this text
Click after this formated text


What is Pai's Clothes Store?
Pai's Clothes Store is a place where a person can get any kind of clothing he wants. We sell everything that you can possibly wear; from hats to shoes, and for both male and female. Pai's Clothes Store importes clothings from over 15 different countries across the world. The fabrics we use have the best quality and you can buy our products with the most agreeable price. Furthermore, you can reach us anywhere. We have up to 20 franchise all over Asia and around 3 in Thailand. You can also buy our products online by contacting us through our Facebook page. Good luck finding us!


JEFF the Brotherhood is an American two-piece rock band consisting of brothers Jake and Jamin Orrall, hailing from Nashville, Tennessee. Their style has been described by music writers as containing elements of psychedelic rock, garage rock, punk and pop. They have released five original LPs on the label Infinity Cat, one live album on Third Man Records, and assorted singles and splits with noted artists such as Ty Segall, Best Coast, and Screaming Females. They tour extensively and have played shows across the United States and internationally.
 They founded JEFF the Brotherhood (originally simply called JEFF) in 2001, while still in high school. Their first album, I Like You, was funded using pre-orders from the audience at a show for their side project, The Sex. Although this work did not see widespread exposure, it received critical acclaim. They started several other bands and side projects (including post-punk quartet Be Your Own Pet), eventually leaving them all and moving from Nashville to Chicago in order to pursue JEFF the Brotherhood full-time. The band returned to Nashville when Jamin dropped out of Columbia College Chicago.


Blood Source
Home
How to
Sign Up
Log In
About Us
Join bloodsource.com
A step to devote for Humanity
Sign Up Form
Full Name
Password
e-mail
Re-enter Password
Enter Phone Number
+880
Select Blood Group
Blood Group
O+
O-
A+
A-
B+
B-
AB+
AB-
Enter Location
By clicking Submit you are agreeing to our
Terms and Conditions
along with
Privacy Policy
Submit


Vatican’s Caritas vows better screening after Africa abuse
by The Associated PressVATICAN CITY — The Vatican’s Caritas Internationalis charity has vowed to improve its vetting process after its recently removed country director for the Central African Republic reportedly turned out to have a criminal conviction for child sexual abuse.
CNN reported that Caritas removed the Rev. Luk Delft only after the broadcaster confronted the Belgian priest and his Salesian order with evidence of his 2012 conviction in Ghent for abuse and child pornography possession, and allegations he had continued to abuse once posted to Africa.
In a statement Friday, Caritas said it was “saddened and outraged” by the report and was assisting its local office to investigate the allegations. It said it was working to improve its safeguarding process and had asked its national organizations “to vet their governance, staff, volunteers and international staff.”
The Associated Press


< Back
Michael Bostick
2/22/83
35
Male
Single
Specialist
Date
Time
Status
Dr. Crusher Internal Medicine
6/29/21
9:00am
upcoming
Dr. Pulaski Internal Medicine
8/18/21
11:00am
cancelled
Rate
Action
“Dr. Crusher was out of this world!
ReviewAccept
“Dr. Pulaski used some weird sci-fi device and instantly relieved my pain”!
“Nurse Chapel was such a delight!”


This example shows how to use lustre-sally
to solve a simple puzzle. This example is derived from one of the tests for jkind
, which is another model-checker that uses Lustre as its input language.
We solve the “Wolf, goat, and cabage problem”, described on Wikipedia as follows:
Once upon a time a farmer went to a market and purchased a wolf, a goat, and a cabbage. On his way home, the farmer came to the bank of a river and rented a boat. But crossing the river by boat, the farmer could carry only himself and a single one of his purchases: the wolf, the goat, or the cabbage.
If left unattended together, the wolf would eat the goat, or the goat would eat the cabbage.
The farmer’s challenge was to carry himself and his purchases to the far bank of the river, leaving each purchase intact. How did he do it?
To solve the puzzle we model the problem as a transition system, described in Lustre. The transition system desribes the initial state of the world (e.g., the locations of the farmer and his purchases), and also what are valid ways for the world to change (e.g., constraints, such as “the goat and the wolf should not be left alone”, and “the farmer may only pick up things from the side of the river that he is on”).
Once we have the Lustre model we can use lustre-sally
to invoke the sally
model-checker, to analyze the resulting system. The model checker’s job is to look for states of the world where some property holds. For the purposes of this puzzle we’ll have everyone start on the left side of the river, and look for states where everyone is on the right side of the river, without anyone getting eaten in-beetween. Here is the sample output we’d like to get:
| Step | wolfLoc | goatLoc | cabbageLoc | farmerLoc | -> | move |
|---|---|---|---|---|---|---|
| 1 | Left | Left | Left | Left | Goat | |
| 2 | Left | Right | Left | Right | Farmer | |
| 3 | Left | Right | Left | Left | Cabbage | |
| 4 | Left | Right | Right | Right | Goat | |
| 5 | Left | Left | Right | Left | Wolf | |
| 6 | Right | Left | Right | Right | Farmer | |
| 7 | Right | Left | Right | Left | Goat | |
| 8 | Right | Right | Right | Right |
We start by declaring a couple of enumeration types:
type Character = enum { Farmer, Wolf, Goat, Cabbage };
type Side = enum { Left, Right };
Type type Character
represents the characters in the story, and the type Side
models the characters’ locations. Without loss of generality, we arbitrarily choose that the characters start on the Left
side of the river, and are trying to get to the Right
side.
Signature. The central part of the model is the function action
which models a single action of the farmer:
node action(move : Character)
returns (wolfLoc, goatLoc, cabbageLoc, farmerLoc : Side);
The function’s parameter specifies who goes with the farmer in the boat, and the outputs are the new locations of the characters. If the parameter is Farmer
, then the farmer goes alone.
Local Variables. The function uses some local state to classify the current situation:
var
validMove : bool;
nothingEaten : bool;
solved : bool;
The names of the variables are suggestive but next we provide precise definitions, which are needed so that the model can be analyzed.
Definition. We start with validMove
which holds true when the farmer is following the rules, namely he may only pick up characters that are on the same bank of the river as he is:
let
validMove =
(move = Wolf => farmerLoc = wolfLoc) and
(move = Goat => farmerLoc = goatLoc) and
(move = Cabbage => farmerLoc = cabbageLoc);
As the name suggests, the variable nothingEaten
, ensures that the goat and the cabbage are not eaten. We do this by insisting that if a hungry character is in the same location as their food, then the farmer is also present to ensure they behave:
nothingEaten =
(wolfLoc = goatLoc => farmerLoc = goatLoc) and
(goatLoc = cabbageLoc => farmerLoc = cabbageLoc);
The variable solved
states precisely what we are looking for: a situation where all characters are on the Right
river bank, and we only preformed valid moves, and no one was eaten:
solved =
wolfLoc = Right and
goatLoc = Right and
cabbageLoc = Right and
farmerLoc = Right and
historically(nothingEaten and validMove);
Intuitively, the function historically
says that the given property holds now, and in all previous states, and we’ll see its definition shortly.
Finally, we need to specify how the characters’ locations are affected by the farmer’s actions:
farmerLoc = doMove(move, Farmer);
wolfLoc = doMove(move, Wolf);
goatLoc = doMove(move, Goat);
cabbageLoc = doMove(move, Cabbage);
The details of movement are factored into a separate function called doMove
.
The final part of the specification consists of two special comments that tell the solver what we’d like to do.
--%MAIN;
--%PROPERTY not solved;
tel;
The pragma MAIN
specifies that this is the entry point for our problem, and we are interested in the inputs and state of this function. Only one of the functions in a specification should be marked with MAIN
. The pragma PROPERTY
tells the solver what property we are searching for, by telling it what states to prune out. In this case, we are telling the solver to prune out states where the problem is not solved, thus asking it to find a solution.
While this may seems inverted, there is a good reason for it. Another way to think of PROPERTY
is as writing an assertion: we are asking the solver to check that the property holds in all reachable states of the system. If the solver finds a state the violets the invariant, it will report it by showing a sequence of steps that lead to the problem. So, in a way, in our puzzle we are “tricking” the solver to check the “invariant” that the problem is impossible to solve, thus asking it to “prove us wrong” by finding a solution.
We still need to specify how characters are affected by the farmer’s actions, which is captured in function doMove
. It takes two characters as parameters, the first one specifies who the farmer is moving, and the second one which character’s location we are computing. As a result we return the new location of the character.
node doMove(move, character: Character) returns (location : Side);
let
location =
Left ->
if character = Farmer then
pre(otherSide(location))
else
if pre(move) = character
then pre(otherSide(location))
else pre(location);
tel;
node otherSide(side : Side) returns (other : Side);
let
other = if side = Left then Right else Left;
tel;
The function doMove
illustrates some of Lustre’s temporal combinators. Expressions of the form A -> B
capture the common pattern where a value is initialized to A
and after that behaves as B
. In this case, all characters start on the Left
bank of the river, and the expression after the arrow specifies how they are affected by the move. The other temporal operator, pre(X)
refers to the value of X
but in the previous state (e.g., where something used to be). Since the farmer always moves with the boat, its location alternates on every action, no matter who is being moved. The else
statement deals with other characters and specifies that the character picked up by the farmer change their location while the other characters remain in place.
The same temporal operators are used to define historically
, which we present without further comment, but encourage the reader to try to understand its definition:
node historically(x : bool) returns (holds : bool);
let
holds = x and (true -> pre holds);
tel;
To run lustre-sally
on the model, we just provide the file containing the specification as a parameter:
> lustre-sally example/farmer.lus
This results in the following output:
[Lustre] Loading model from: "example/farmer.lus"
[Lustre] Validating properties:
[Lustre] Property Prop on line 28...
[Sally]considering 8 past states [Invalid] See (...URL...)
[Trace]
Prop on line 28:
Step | wolfLoc | goatLoc | cabbageLoc | farmerLoc | -> | move
------+---------+---------+------------+-----------+----+---------
1 | Left | Left | Left | Left | | Goat
2 | Left | Right | Left | Right | | Farmer
3 | Left | Right | Left | Left | | Cabbage
4 | Left | Right | Right | Right | | Goat
5 | Left | Left | Right | Left | | Wolf
6 | Right | Left | Right | Right | | Farmer
7 | Right | Left | Right | Left | | Goat
8 | Right | Right | Right | Right | |
[Lustre] Summary:
[Valid] 0
[Unknown] 0
[Invalid] 1
[Lustre] Model status: [Invalid]
While the Invalid
markers may seem concerning, recall the discussion from the previous section: we “tricked” the solver to look for a solution by asserting that one does not exist, so the solver is simply saying that our assertion is invalid, as it was able to find a solution.
You may also note the line:
[Lustre] Property Prop on line 28...
[Sally]considering 8 past states [Invalid] See (...URL...)
where (...URL...)
would be some system specific location. The web-site in this URL contains the full details about the example found by the solver, in the context of the original Lustre specification. This allows for interactive exploration of the model state at each step, including the parameters and local state of the different invocations of the same function. Here is a screen shot, demonstrating some of this, but it it best to try it out!


CompositeStep "compositeStep" is a hierarchical StateGraph consisting of two other subgraphs. Whenever component "compositeStep" is suspended, all steps with in "compositeStep" are deactivated. By entering "compositeStep" via its "resume" port, all steps within "compositeStep" are activated according to their setting before leaving the "compositeStep" via its "suspend" port.


"When I was a young boy, my father, took me into the city, to see a marching band" - Kim Jong Un
Win
Standard Edition
As well as HTML and CSS
If Only the IDE Worked
Sometimes you have to think inside the box
(G)It's a given
I Love Maven
MySQL and MongoDB
DEVOPS is the Best


Yaohua Hu
(note the ambient fill light worn)
233.43 name: Yaohua Hu, lab_name: MSRAIG 231.50 name: Jessica Hodgins, lab_name: hoping for the best 158.50 name: Aila, Lehtinen, Laine and Miettinen, lab_name: rand()%745 + 1 151.57 name: Tom Mertens, lab_name: Breakfast Clubbers 150.00 name: Doug Epps, lab_name: Everything.com 143.57 name: Stephen H. Westin, lab_name: Big Red 136.00 name: captain, lab_name: big researchers with dental failure 135.00 name: Abhijeet Ghosh, lab_name: Imager Graphics Lab 135.00 name: Alan Chalmers, lab_name: bristol_bretheren 123.57 name: Zhaosheng Bao, lab_name: fractureThe sketches did not affect the top slots; Stephen moved up and Abhijeet and Alan moved into the top ten. Jessica had a number of second authors for sketches, but only the first authors count (and since a sketch does not count as a publication, I guess such people should be called first presenters or somesuch).
But what of the monkeys? They were with banana-chucking distance of the two human leaders, didn't they benefit from the sketches? What's wrong with you, didn't I already say the monkeys lost?  Fifi Sarah McGrew, who was in thirteenth place, kicked up to second place; quite impressive, a gain of 80 points on sketch authors! Nonetheless, the flying monkeys lost. Still, by watching the Electric Sheep screensaver long enough and voting for the results they liked, new patterns evolved to the point where uncharted monkey neural pathways were opened up and the whole clan was able to use mind-power to instantaneously transport themselves away from the Earth to a better place. Well, at least their logic was that monkeys like being warm, the sun is warm, but in retrospect perhaps that wasn't the best place to mass teleport.
But anyway the humans won, and here's Yaohua's winning team:
1 cost: 210 value: 111.14 Heung-Yeung Shum 2 cost: 90 value: 61.14 Baining Guo 3 cost: 20 value: 30.57 Kun Zhou 4 cost: 45 value: 20.57 Xin Tong 5 cost: 25 value: 10.00 Lifeng WangThat's right, just 5 researchers on this team, which yields huge savings in office space and paper clip costs.
If you look closely at the names, you'll notice they're all Irish fellows. In the "it's a small world" interesting factoid category, Baining Guo was a housemate back around 1986 here in Ithaca. I'd like to say I taught him all he knows, but at the time he wasn't involved in computer graphics. Let's cut to the chase and interview the winner.
Congratulations on winning the FGL title and defeating everyone else, including the monkeys. Was this your first time entering the Fantasy Graphics League?
So there you have it, beginner's luck, if you can call someone at one of the most productive graphics research labs in the world a 'beginner'.
Anyway, this may be the last FGL, unless it isn't. My hopes as a SIGGRAPH Sketches committee member for dirty money came to nothing again this year. So the option of doing the FGL again for a seventh year in a row and firmly establishing myself as a one-joke has-been is pretty tempting. (cue scene of bedraggled author drinking whiskey from a greasy bottle and swinging a handgun around, muttering about how wavelets should have been called wavesicles.) Sorry, been reading too much modern literature lately...
If you want to check your score or see the values of any researcher-for-hire, the list is here.
This just in from Matt Pharr: For giggles, or something like that, below are the top 15 FGL scorers of all time. Those with **s are the winners for their year. Some interesting stuff there, if FGL is the sort of thing you find interesting...
Note that Antoine McNamara's 2004 score, all time #3, wasn't enough to win that year, even though it was much higher than his 2003 winning score. Tim Purcell comes in as highest scorer with no outright win in any year. A good chunk of other folks are distinguished by scoring higher in their particular year than the winner in a previous year.
1. 326.67 ** Aaron Hertzmann, Super Butter Dog (2002) 2. 292.00 ** John Hart, The GPU Abuse Center (2004) 3. 282.50 Antoine McNamara, The Inverse Kinematics (2004) 4. 277.57 Tim Purcell, Wunky Munky Du (2002) 5. 275.00 Mira Dontcheva (2004) 6. 271.00 ** Matt Pharr (2000) 7. 265.00 Hugues Hoppe, Shlomo & Hugues (2002) 8. 255.24 Ian Buck, The Frys Addicts (2002) 9. 254.00 ** Hanspeter Pfister, Beerflakes (2001) 10. 252.57 ** Antoine McNamara, The Inverse Kinematics (2003) 11. 243.57 Henrik Wann Jensen, The Vikings (2002) 12. 240.00 T. Aila, J. Lehtinen, V. Miettinen, lab name: rand()%680 + 1 (2004) 13. 233.43 ** Yaohua Hu, MSRAIG (2005) 14. 232.50 Aaron Hertzmann, Funky Homunculi (2004) 15. 231.50 Jessica Hodgins, hoping for the best (2005)
To relive the past glories and recall how you screwed up:


The Substance Abuse and Violence Intervention (SAVI) Program works with community stakeholders and advocates in Lexington to increase programming and opportunities that reduce drug related violence by teens and young adults; decrease the stigma that inhibits recovery; advocate for and increase access to effective substance abuse treatment programming.
Voices of Hope – Lexington is a non-profit organization dedicated to creating a positive environment to help people addicted to drugs and alcohol enter and flourish in recovery.
OpenLexington is a volunteer group of civic-minded software developers, designers, urban planners, citizen activists, data geeks and more. Part of the Code for America Brigade program, we work with LFUCG, Fayette County, and local communities to build open-source civic apps, open public data sources, and generally help to leverage technology for use in the public sphere.
LexLadiesCode is a women's coding club based in Lexington, Kentucky gathered to increase the visibility of and possibilities for women in technology.
Code for Boston aims to provide a 'center of gravity' for grassroots, community-driven civic innovation in the Greater Boston area. Our work includes building apps, community organizing, policy initiatives, qualitative research, and more, and we hope that volunteers of all types will join our community.
Browserstack - A cross browser testing tool.
David Caldwell, Balance Creative Advertising, Design and Marketing for the creation and donation of the GetHelpLex logo.
David Maynard, MA, LPCC, Addiction Specialist, University of Kentucky Trauma Services
Get Help Lex is a tool to help you find a substance abuse treatment program for yourself or others. It's an informational tool ONLY. If you are experiencing a medical emergency, please call 911.
Please remember that it is:
No identifying information is being collected from your search.


Highway.Data Project Home | Getting Started | Features | Release Notes | FAQs Features Simplified Creation Patterns Domain Context Understanding the Patterns Repository Logging Queries / Commands / Scalars Pagination Of Queries Advanced Queries / Commands /Scalars Performance Testing Queries Eager Loading with Queries and Scalars Testable Data Access At Every Layer Configuring Highway.Data


--- layout: post tags: [Dependency Injection, Software Design] date: 2012-03-26 13:53:31 UTC title: "IQueryable is Tight Coupling" description: "From time to time I encounter people who attempt to express an API in terms of IQueryable<T>. That's almost always a bad idea." --- {% include JB/setup %}
{{ page.description }} In this post, I'll explain why.
In short, the IQueryable<T> interface is one of the best examples of a Header Interface that .NET has to offer. It's almost impossible to fully implement it.
Please note that this post is about the problematic aspects of designing an API around the IQueryable<T> interface. It's not an attack on the interface itself, which has its place in the BCL. It's also not an attack on all the wonderful LINQ methods available on IEnumerable<T>.
You can say that IQueryable<T> is one big Liskov Substitution Principle (LSP)violation just waiting to happen. In the next two section, I will apply Postel's law to explain why that is.
The first part of Postel's law applied to API design states that an API should be liberal in what it accepts. In other words, we are talking about input, so an API that consumes IQueryable<T> would take this generalized shape:
IFoo SomeMethod(IQueryable<Bar> q);
Is that a liberal requirement? It most certainly is not. Such an interface demands of any caller that they must be able to supply an implementation of IQueryable<Bar>. According to the LSP we must be able to supply any implementation without changing the correctness of the program. That goes for both the implementer of IQueryable<Bar> as well as the implementation of SomeMethod.
At this point it's important to keep in mind the purpose of IQueryable<T>: it's intended for implementation by query providers. In other words, this isn't just some sequence of Bar instances which can be filtered and projected; no, this is a query expression which is intended to be translated into a query somewhere else - most often some dialect of SQL.
That's quite a demand to put on the caller.
It's certainly a powerful interface (or so it would seem), but is it really necessary? Does SomeMethod really need to be able to perform arbitrarily complex queries against a data source?
In one recent discussion, it turns out that all the developer really wanted to do was to be able to select based on a handful of simple criteria. In another case, the developer only wanted to do simple paging.
Such requirements could be modeled much simpler without making huge demands on the caller. In both cases, we could provide specialized Query Objects instead, or perhaps even simpler just a set of specialized queries:
IFoo FindById(int fooId); IFoo FindByCorrelationId(int correlationId);
Or, in the case of paging:
IEnumerable<IFoo> GetFoos(int page);
This is certainly much more liberal in that it requires the caller to supply only the required information in order to implement the methods. Designing APIs in terms of Role Interfaces instead of Header Interfaces makes the APIs much more flexible. This will enable you to respond to change.
The other part of Postel's law states that an API should be conservative in what it sends. In other words, a method must guarantee that the data it returns conforms rigorously to the contract between caller and implementer.
A method returning IQueryable<T> would take this generalized shape:
IQueryable<Bar> GetBars();
When designing APIs, a huge part of the contract is defined by the interface (or base class). Thus, the return type of a method specifies a conservative guarantee about the returned data. In the case of returning IQueryable<Bar> the method thus guarantees that it will return a complete implementation of IQueryable<Bar>.
Is that conservative?
Once again invoking the LSP, a consumer must be able to do anything allowed by IQueryable<Bar> without changing the correctness of the program.
That's a big honking promise to make.
Who can keep that promise?
Implementing IQueryable<T> is a huge undertaking. If you don't believe me, just take a look at the official Building an IQueryable provider series of blog posts. Even so, the interface is so flexible and expressive that with a single exception, it's always possible to write a query that a given provider can't translate.
Have you ever worked with LINQ to Entities or another ORM and received a NotSupportedException? Lots of people have. In fact, with a single exception, it's my firm belief that all existing implementations violate the LSP (in fact, I challenge my readers to refer me to a real, publicly available implementation of IQueryable<T> that can accept any expression I throw at it, and I'll ship a free copy of my book to the first reader to do so).
Furthermore, the subset of features that each implementation supports varies from query provider to query provider. An expression that can be translated by the Entity framework may not work with Microsoft's OData query provider.
The only implementation that fully implements IQueryable<T> is the in-memory implementation (and referring to this one does not earn you a free book). Ironically, this implementation can be considered a Null Object implementation and goes against the whole purpose of the IQueryable<T> interface exactly because it doesn't translate the expression to another language.
You may think this is all a theoretical exercise, but it actually does matter. When writing Clean Code, it's important to design an API in such a way that it's clear what it does.
An interface like this makes false guarantees:
public interface IRepository { IQueryable<T> Query<T>(); }
According to the LSP and Postel's law, it would seem to guarantee that you can write any query expression (no matter how complex) against the returned instance, and it would always work.
In practice, this is never going to happen.
Programmers who define such interfaces invariably have a specific ORM in mind, and they implicitly tend to stay within the bounds they know are safe for that specific ORM. This is a leaky abstraction.
If you have a specific ORM in mind, then be explicit about it. Don't hide it behind an interface. It creates the illusion that you can replace one implementation with another. In practice, that's impossible. Imagine attempting to provide an implementation over an Event Store.
The cake is a lie.
Comments
If you have the following query you get different results with the EF LINQ provider and the LINQ to Objects provider
var r = from x in context.Xs select new { x.Y.Z }
dependant on the type of join between the sets or if Y is null
makes in-memory testing difficult
P.S. Kudos by the way. I love every single piece of it.
Also, having a generic repository as an intermediate step between an ORM and a specific repository lets you unit test specific repositories and/or use them with multiple persistence mechanisms (which is sometimes desirable). Despite the leaks, this "pattern" does have some uses in my book when used VERY carefully (although it is misused in 99 cases out of 100 when you see it).
Everybody who wants to implement the repositories using EF would use EntityRepository and everybody who wants to use other ORMs can create his own derived abstraction from IRepository.
But the consumer codes in my library just use the IRepository inteface (Ex. A CRUD ViewModel base class).
It it correct?
See http://bartdesmet.net/blogs/bart/archive/2008/08/15/the-most-funny-interface-of-the-year-iqueryable-lt-t-gt.aspx and also take a look at the section 9min 30 secs into this talk http://channel9.msdn.com/Events/PDC/PDC10/FT10
Who on Earth defines an API that *takes* an IQueryable? Nobody I know, and
I've never had the need to. So the first half of the post is kinda
irrelevant ;)
-- Implementing IQueryable{T} is a huge undertaking.
That's why NOBODY has to. The ORM you use will (THEY will take the huge
undertaking and they have, go look for EF and NHibernate and even RavenDB
who do provide such an API), as well as Linq to Objects for your testing
needs.
So, the IRepository.Query{T} is doing *exactly* what its definition
promises: "Mediates between the domain and data mapping layers using a
collection-like interface for accessing domain objects." (
http://martinfowler.com/eaaCatalog/repository.html)
In the ORM-implemented case, it goes against the data mapping layer, in the
Linq to Objects case, it does directly over the collection of objects.
It's the PERFECT abstraction to make code that goes against a DB/repository
unit-testable. (not that it frees you from having full integration
end-to-end tests that go against the *real* repository to make sure you're
not using any unsupported constructs against the in-memory version).
IQueryable{T} got rid of an entire slew of useless interfaces to abstract
the real repository. We should wholeheartedly embrace it and move forward,
instead of longing for the days when we had to do all that manually ;)
That's the thing, if this interface is used in the read side of a CQRS
system, there's no event store there. Views need flexible queryability. No?
Saying this:
public IQueryable{Customer} GetActiveCustomers() {
return CustomersDb.Where(x => x.IsActive).ToList().AsQueryable();
}
tells consumers that the return value of the method is a representation of how the results will be materialized when the query is executed. Saying this, OTOH:
public IEnumerable{Customer} GetActiveCustomers() {
return CustomersDb.Where(x => x.IsActive).ToList();
}
explicitly tells consumers that you are returning the *results* of a query, and it's none of the consuming code's business to know how it got there.
Materialization of those query results is what you seemed to be focused on, and that's not IQueryable's task. That's the task of the specific LINQ provider. IQueryable's job is only to *describe* queries, not actually execute them.
A repository interface should be explicit about the operations it provides over the set of data, and should not open the door to arbitrary querying that is not part of the applications overall design / architecture. YAGNI
I know that this may fly in the face of those who are used to arbitrary late-bound SQL style query flexibility and code-gen'd ORMs, but this type of setup is not one that's conducive to performance or scaling in the long term. ORMs may be good to get something up and running without a lot of effort (or thought into how the data is used), but they rapidly show their cracks / leaks over time. This is why you see sites like StackOverflow as they reach scale adopt MicroORMs that are closer to the metal like Dapper instead of using EF, L2S or NHibernate. (Other great Micro ORMs are Massive, OrmLite, and PetaPoco to name just a few.)
Is it work to be explicit in your contracts around data access? Absolutely... but this is a better long-term design decision when you factor in testability and performance goals. How do you test the perf characteristics of an API that doesn't have well-defined operations? Well... you can't really.
Also -- consider stores that are *not* SQL based as Mark alludes to. We're using Riak, where querying capabilities are limited in scope and there are performance trade-offs to certain types of operations on secondary indices. We accept this tradeoff b/c the operational characteristics of Riak are unparalleled and it has great latency characteristics when retrieving data. We need to be explicit about how we allow data to be retrieved in our data access layer because some things are a no-go in our underlying store (for instance, listing keys is extremely expensive at the moment in Riak).
Bind yourself to IQueryable and you've handcuffed yourself. IQueryable is simply not a fit in a lot of cases, and in others it's total overkill... data access is not one size fits all. Embrace the polyglot!
However, I don't yet see how to design an easy to use and read API with query objects. Maybe you could provide a repository implementation that works without IQueryable but is still readable and easy to use?
However, exposing IQueryable in an API is so powerful that it's worth this minor annoyance.
I like the idea of the OData or Web API queries, but would rather they just expose the query parameters and let us build adapters from the query to the datastore as relevant.
The whole idea of web service interfaces is to expose a technology-agnostic interoperable API to the outside world.
Exposing an IQueryable/OData endpoint effectively couples your services to using OData indefinitely as you wont be able to feasibly determine what 'query space' existing clients are binded to, i.e. what existing queries/tables/views/properties you need to freeze/support indefinitely. This is an issue when exposing any implementation at the surface area of your API, as it limits your ability to add your own custom logic on it, e.g. Authorization, Caching, Monitoring, Rate-Limiting, etc. And because OData is really slow, you'll hit performance/scaling problems with it early. The lack of control over the endpoint, means you're effectively heading for a rewrite: https://coldie.net/?tag=servicestack
Lets see how feasible is would be to move off an oData provider implementation by looking at an existing query from Netflix's OData api:
http://odata.netflix.com/Catalog/Titles?$filter=Type%20eq%20'Movie'%20and%20(Rating%20eq%20'G'%20or%20Rating%20eq%20'PG-13')
This service is effectively now coupled to a Table/View called 'Titles' with a column called 'Type'.
And how it would be naturally written if you weren't using OData:
http://api.netflix.com/movies?ratings=G,PG-13
Now if for whatever reason you need to replace the implementation of the existing service (e.g. a better technology platform has emerged, it runs too slow and you need to move this dataset over to a NoSQL/Full-TextIndexing-backed sln) how much effort would it take to replace the OData impl (which is effectively binded to an RDBMS schema and OData binary impl) to the more intuitive impl-agnostic query below? It's not impossible, but as it's prohibitively difficult to implement an OData API for a new technology, that rewriting + breaking existing clients would tend to be the preferred option.
Letting internal implementations dictate the external facing url structure is a sure way to break existing clients when things need to change. This is why you should expose your services behind Cool URIs, i.e. logical permanent urls (that are unimpeded by implementation) that do not change, as you generally don't want to limit the technology choices of your services.
It might be a good option if you want to deliver adhoc 'exploratory services' on it, but it's not something I'd ever want external clients binded to in a production system. And if I'm only going to limit its use to my local intranet what advantages does it have over just giving out a read-only connection string? which will allow others use with their favourite Sql Explorer, Reporting or any other tools that speaks SQL.
The testable interface abstraction allows for one-liners in the ORM-bound implementation, as well as the testable fake. Doesn't get any simpler than that.
That hardly seems like complicated stuff to me.
Mario, thank you for writing. It occasionally happens that I change my mind, as I learn new skills and gain more experience, but in this case, I haven't changed my mind. I indirectly use IQueryable<T> when I occasionally have to query a relational database with the Entity Framework or LINQ to SQL (which happens extremely rarely these days), but I never design my own interfaces around IQueryable<T>; my reasons for introducing an interface is normally to reduce coupling, but introducing any interface that exposes or depends on IQueryable<T> doesn't reduce coupling.
In Agile Principles, Patterns, and Practices in C#, Robert C. Martin explains in chapter 11 that "clients [...] own the abstract interfaces" - in other words: the client, which invokes methods on the interface, should define the methods that the interface should expose, based on what it needs - not based on what an arbitrary implementation might be able to implement. This is the design philosophy I always follow. A client shouldn't have to need to be able to perform arbitrary queries against a data access layer. If it does, it's such a Leaky Abstraction anyway that the interface isn't going to help; in such cases, just let the client talk directly to the ORM or the ADO.NET objects. That's much easier to understand.
The same argument also goes against designing interfaces around Expression<Func<T, bool>>. It may seem flexible, but the fact is that such an expression can be arbitrarily complex, so in practice, it's impossible to guarantee that you can translate every expression to all SQL dialects; and what about OData? Or queries against MongoDB?
Still, I rarely use ORMs at all. Instead, I increasingly rely on simple abstractions like Drain when designing my systems.


Contact Form
Title
Date:
Month:
January
February
March
Year:
2015
2014
2013
Category
1
2
3
4
5
Author
Content
Url slug
Add to Gallery


Menu
Landing Page
Hello
Bobby Admin
Logout
SHS User Account
Accounts
/
User
/
Bobby Smith
User Profile
User Name
Bobby Smith
privileges
User Level 2
Department Manager
PHI: Permitted
Employee ID
CHA-458
Department
Legal
Go Back


Browser.FirefoxDriver Class
This module is a browser plugin for DalekJS. It provides all a WebDriverServer & browser launcher for Mozilla Firefox.
The browser plugin can be installed with the following command:
$ npm install dalek-browser-firefox --save-dev
You can use the browser plugin by adding a config option to the your Dalekfile
"browsers": ["firefox"]
Or you can tell Dalek that it should test in this browser via the command line:
$ dalek mytest.js -b firefox
Because of the availability of the Firefox Marionette testing framework, Dalek atm. can only drive the Firefox Aurora Debug builds.
You also have to add the location of the browser executable to you Dalekfile, because Dalek isn't capable of finding the executable yet on its own.
"browsers": [{
"firefox": {
"path": "~/Apps/FirefoxAuroraDebug.app/"
}
}]
The Firefox plugin only implements a subset of Daleks Assertions & Actions, so if you run into any bugs, the issue is most probably related to missing commands.
Item Index
Methods
Properties
Methods
_browserIsReady
()
private
Checks if the browser is ready for communication
_checkBinarydarwin
()
private
_checkBinarywin32
()
private
_checkLinuxBinary
()
private
_checkUserSetBinary
()
private
_createProfile
()
Q.promise
private
Creates user preferences for the profile
Saves them in user.js
in the newly created profile
Returns:
_createProfile
()
Q.promise
private
Creates a new firefox profile
Returns:
_deleteProfile
()
private
chainable
Deletes the user profile that has been created for this browser session
_onBrowserStartup
()
private
Consumes the console output when the browser is started
_startBrowser
()
private
getBrowserBinary
()
getHost
()
String
Returns the driver host
Returns:
host WebDriver server hostname
getMarionettePort
()
Integer
Resolves the marionette port
Returns:
port Marionette server port
getPort
()
Integer
Resolves the driver port
Returns:
port WebDriver server port
kill
()
chainable
Kills the browser processes, shuts down the TCP (Marionette) & HTTP connection (Webdriver) deletes the temp profile
launch
()
Object
Launches the FirefoxWebDriverServer & the browser
Returns:
promise Browser promise
Properties
binary
String
Path to the Firefox binary file
Default: null
defaultBinaries
Object
Paths to the default Firefox binary files
host
String
Default host of the FirefoxWebDriverServer The host may be overriden with a user configured value
Default: localhost
longName
String
Verbose version of the browser name
Default: Mozilla Firefox
marionettePort
Integer
Default port of the Marionette TCP service The port may change, cause the port conflict resultion tool might pick another one, if the default one is blocked
Default: 2828
path
String
Root path of the FirefoxWebDriverServer
Default: ''
port
Integer
Default port of the FirefoxWebDriverServer The port may change, cause the port conflict resultion tool might pick another one, if the default one is blocked
Default: 9006
profile
Null
Collected data about the created profile, path, name, etc.
Default: null
spawned
Null | Object
Child process instance of the Firefox browser
Default: null


A couple of world traveler with an insatiable passion for discovering this magnificent planet, we love meeting new people from all over the globe. During our travels, we never forget to take the time to appreciate the small pleasures in life... no matter how far from home we may be.
Along the way, we've learned that feeling welcome and comfortable is an absolute must in every journey we take. This is why we make every effort to ensure that your visit to La Réunion will be like coming home. Home to the paradise we live in, love, and love to share! The ultimate island.
During your visit to La Kaz Bourbon (The Bourbon House), a combination of Réunion's Creole language and the ancestral name of the island, ther's an essential element you'll need.  For this, we offer a choice of three houses, in two idyllic locations: Saint-Gilles les Bains and Grand Bois.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ac metus pharetra, tempor libero ut, facilisis ante. Quisque volutpat purus quis lectus tincidunt, ac tempor mauris vestibulum. Vivamus quis lobortis lorem, id mattis risus. In quis lectus bibendum, mollis augue nec, varius ipsum. Duis non nunc sem. Vestibulum non vulputate magna, ut porta quam. Donec porttitor dictum turpis ut egestas.
Sed placerat eros vel augue molestie volutpat. Etiam eros sem, suscipit sed nulla sit amet, vulputate tempus enim. Suspendisse tempus lectus et neque dignissim aliquam quis tempor odio. Fusce vel rutrum ipsum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.


|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
| Interface Summary | |
|---|---|
| InitializableRule | Defines an interface that a Rule class can implement if it wishes to get an initialisation callback after the rule has been added to the set of Rules within a PluginRules instance. |
| Class Summary | |
|---|---|
| Declaration | Represents a Class that can be instantiated by a PluginCreateRule, plus info on how to load custom digester rules for mapping xml into that plugged-in class. |
| PluginContext | Provides data and services which should exist only once per digester. |
| PluginCreateRule | Allows the original rules for parsing the configuration file to define points at which plugins are allowed, by configuring a PluginCreateRule with the appropriate pattern. |
| PluginDeclarationRule | A Digester rule which allows the user to pre-declare a class which is to be referenced later at a plugin point by a PluginCreateRule. |
| PluginManager | Coordinates between PluginDeclarationRule and PluginCreateRule objects, providing a place to share data between instances of these rules. |
| PluginRules | A custom digester Rules manager which must be used as the Rules object when using the plugins module functionality. |
| RuleFinder | Each concrete implementation of RuleFinder is an algorithm for locating a source of digester rules for a plugin. |
| RuleLoader | Interface for classes which can dynamically load custom plugin rules associated with a user's plugin class. |
| RulesFactory | Whenever the scope of a plugin tag is entered, the PluginRules class creates a new Rules instance and configures it with the appropriate parsing rules for the plugged-in class. |
| Exception Summary | |
|---|---|
| PluginAssertionFailure | Thrown when a bug is detected in the plugins code. |
| PluginConfigurationException | Thrown when an error occurs due to the way the calling application uses the plugins module. |
| PluginException | Thrown when some plugin-related error has occurred, and none of the other exception types are appropriate. |
| PluginInvalidInputException | Thrown when an error occurs due to bad data in the file being parsed. |
Provides an easy mechanism whereby new digestion rules can be added dynamically during a digestion.
Given the following digester rules in the main "parsing" application:
Digester digester = new Digester(); PluginRules rc = new PluginRules(); digester.setRules(rc); digester.addObjectCreate("pipeline", Pipeline.class); digester.addCallMethod("pipeline/source", "setSource", 1); digester.addCallParam("pipeline/source", 0, "file"); PluginCreateRule pcr = new PluginCreateRule(Transform.class); digester.addRule("pipeline/transform", pcr); digester.addSetNext("pipeline/transform", "setTransform"); digester.addCallMethod("pipeline/destination", "setDest", 1); digester.addCallParam("pipeline/destination", 0, "file"); digester.parse(filename);
the following input can be processed:
<pipeline> <source file="input.txt"/> <transform plugin-class="SubstituteTransform"> <from>changeme</from> <to>changed</to> </transform> <destination file="output.txt"/> </pipeline>
Note that the "SubstituteTransform" class is not hard-wired into the application, and also that this class is configuring itself from the same configuration file.
The user can specify any class they like here, and (provided that class follows the plugins conventions) it can use any Digester functionality to process the configuration data within the transform tag and its subtags.
The original application simply defined a "plugin point" of "pipeline/transform" at which user classes could be plugged in. However it did not specify what classes were permitted, other than that they must implement the Transform interface. It is the input file which has defined exactly which class should be instantiated when the transform element is encountered, and furthermore the "plugin" class itself has dynamically added rules for parsing elements nested within itself.
A class used as a plugin may dynamically add its own rules to the digester, in order to process its attributes and any subtags in any manner it wishes. This may be done by several mechanisms, including:
public static void addRules(Digester d, String
pattern)
on the class being "plugged in", orIn the example above, an end user may create their own classes which implement the required Transform interface, then cause these custom classes to be used instead of, or in addition to, classes distributed with the application.
PluginDeclarationRule
with a tag for that purpose). Example:
The plugin class can be declared once:
<plugin id="widget" class="com.acme.Widget"/>and later referenced via the short "id" value:
<sometag plugin-id="widget" ... >
Note also that plugged-in classes can themselves allow user-defined classes to be plugged in within their configuration. This allows a very simple framework to be extended almost without limit by the end user.
The term "plugin point" refers to a pattern associated with a PluginCreateRule. An xml element matching that pattern is expected to have a plugin-id attribute (but see note on "default plugins" elsewhere in this document).
<statement plugin-id="if">
cannot become <if>.
An instance of "PluginRules" must be used as the Rules implementation for the Digester (see example). However a PluginRules can use any other Rules implementation as its rule-matching engine, so this is not a significant issue. Plugged-in classes may only use the default RulesBase matching for the rules they add dynamically.
For technical reasons, a single instance of PluginCreateRule cannot currently be associated with multiple patterns; multiple instances are required. This is not expected to be a problem.
Processing elements which match patterns added dynamically by plugin classes does have a performance impact, but not excessively so.
Well, if the class has a no-argument constuctor, and only simple configuration needs that can be met by a SetPropertiesRule, then no changes need to be made at all.
In other circumstances, you may either define an "addRules" method on the class which adds any necessary rules to the digester, a separate class containing that information, or write an xmlrules-format file defining the necessary rules. In the "separate rule info class" approach, the class containing the rule info may have any name of your choice, but the original class + "RuleInfo" is recommended.
Here is the addRules method on class SubstituteTransform, from the example:
public static void addRules(Digester d, String pathPrefix) { d.addCallMethod(pathPrefix+"/from", "setFrom", 0); d.addCallMethod(pathPrefix+"/to", "setTo", 0); }A "rule info" class consists of nothing but a static method defined as above.
If a plugin class does not define an "addRules" method, and the plugin declaration does not associate a rule info class with it, then the plugins module will define a "SetPropertiesRule" by default. However if any custom rules are defined for the plugin class, then that implementation is required to define a SetPropertiesRule for itself if it desires one.
Note that when adding any rules, the pattern passed to the digester must start with the pathPrefix provided. A plugin cannot define rules with absolute paths. And as defined in the limitations, the pattern should not include any wildcard characters.
In situations where a user might want to specify a custom class, but will often want "default" behaviour, a PluginCreateRule can specify a default class. If the user then omits the "plugin-id" attribute on the matching xml element, an instance of the default class will be created.
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


Choose wisely your cards, keep wisely the wisdom you win in exchange
Wisdom won:
© Tranquilinho - More wikI-Ching wisdom


@(player1: pa.Head2Head, player2: pa.Head2Head, player1Appearances: pa.PlayerAppearances, player2Appearances: pa.PlayerAppearances)(implicit context: model.ApplicationContext, request: RequestHeader)
@views.html.football.main("Player head to head") {
Player Head to Head
| Team | Goals | Dismissals | Bookings | Appearances | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Home | Away | Total | Home | Away | Total | Home | Away | Total | ||
| @player1.name | @player1.goals.homeCount | @player1.goals.awayCount | @player1.totalGoals | @player1.dismissals.homeCount | @player1.dismissals.awayCount | @player1.totalDismissals | @player1.bookings.homeCount | @player1.bookings.awayCount | @player1.totalBookings | @player1Appearances.total.appearances |
| @player2.name | @player2.goals.homeCount | @player2.goals.awayCount | @player2.totalGoals | @player2.dismissals.homeCount | @player2.dismissals.awayCount | @player2.totalDismissals | @player2.bookings.homeCount | @player2.bookings.awayCount | @player2.totalBookings | @player2Appearances.total.appearances |


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


OpenTapioca annotates text with locations, organizations and people from Wikidata. It is synchronous with Wikidata. This is a prototype. See the GitHub project for more info.


WITNESS LIST
Veteran Affairs & Border Security
February 24, 2020 1:00 PM
Veteran Treatment Courts
ON:
Cantu, Al Chairman (Texas veterans commission), Austin, TX
Herman, John Bexar County Felony Veterans Treatment Court Coordinator (Bexar County
Veterans Treatment Court), San Antonio, TX
Osborne, Chip Director of Resource Management (Texas Veterans Commission), Austin,
TX
Sanchez, David Judge (Cameron County Veteran Treatment Court), Brownsville, TX
Solis, George American Legion Commander (American Legion Post 390), Raymondville,
TX
Stephen, Charles Judge (Comal County Veteran Treatment Court), New Braunfels, TX
Veterans Health Care
ON:
Cavazos, Rosie (Self), Harlingen, TX
Cortez, Jr., Israel District Commander (Self), San Benito, TX
English, Michael (Self), Weslaco, TX
Garcia, Joaquin (Self), Harlingen, TX
Garcia, Teresita (Veterans Advisory Board, City of Harlingen), Harlingen, TX
Lee Ortiz, Laura (Self), Brownsville, TX
Luevano, Cassie (Self), Edinburg, TX
Maggard, Roy (American Legion Post 205), Harlingen, TX
Osborne, Chip Director of Resource Management (Texas Veterans Commission), Austin,
TX
Perez, Lupita District Commander (Veteran Foreign Wars), Elsa, TX
Sabala, Victor (Warriors United in Arms), Brownsville, TX
Shiplett, Jason (Self), Brownsville, TX
Theobald, Paul Lead Coordinator Veterans Mental Health (Health and Human Services
Commission), TX
Tijerina, Vanessa (Self), Raymondville, TX
Veterans Mental Health
ON:
Boerstler, John CEO (Combined Arms), Houston, TX
Crocker, Terry (Tropical Texas Behavioral Health), TX
Hassan, Anthony Dr. (Cohen Veterans Network), Stamford, CT
Mitchell, Kyle (Meadows Mental Health Policy Institute), Dallas, TX
Obie, Olga Dr. (Self), Houston, TX
Osborne, Chip Director of Resource Management (Texas Veterans Commission), Austin,
TX
Palmer, Jill Dr. (Endeavors Veterans Group), San Antonio, TX
Polacios, Ruben (Self), Harlingen, TX
Rodriguez, Feliz (Self), Elsa, TX
Romero, Pete (Moms Demand Action), McAllen, TX
Sherrill, Tempa (22 Kill), Burelson, TX
WITNESS LIST
Veteran Affairs & Border Security
February 24, 2020 1:00 PM
Theobald, Paul Lead Coordinator Veterans Mental Health (Health and Human Services
Commission), Austin, TX


public interface IExternalUserRegistryManager
| Modifier and Type | Method and Description |
|---|---|
void |
addExternalUser(java.lang.String userId,
java.lang.String password,
java.lang.String name,
java.lang.String emailAddress,
java.lang.String[] groups,
org.eclipse.core.runtime.IProgressMonitor monitor)
Create a new user in the external user registry.
|
void |
addToGroup(java.lang.String userId,
java.lang.String groupName,
org.eclipse.core.runtime.IProgressMonitor monitor) |
void |
changePassword(java.lang.String userId,
java.lang.String oldPassword,
java.lang.String newPassword,
org.eclipse.core.runtime.IProgressMonitor monitor)
Change the password for the named user.
|
java.lang.String[] |
fetchGroupsForUser(java.lang.String userId,
org.eclipse.core.runtime.IProgressMonitor monitor)
Queries the registry to determine which of the known application groups a
user is a member of.
|
IExternalUser |
fetchUser(java.lang.String userId,
org.eclipse.core.runtime.IProgressMonitor monitor)
Query the external registry, and return an associated external user, if
it exists.
|
IExternalUser[] |
findUsersByAnyName(java.lang.String name,
org.eclipse.core.runtime.IProgressMonitor monitor)
Find all users matching the provided query, where the full name, aka
common name, contains the string preceded by the well known name
separator (usually a space).
|
IExternalUser[] |
findUsersByName(java.lang.String name,
org.eclipse.core.runtime.IProgressMonitor monitor)
Find all users matching the provided query, where the full name starts
with the parameter
|
java.lang.String |
getGroupDescription(java.lang.String groupName,
org.eclipse.core.runtime.IProgressMonitor monitor)
Get the description of a group
|
int |
getMaxLimitForUserSearchQuery(org.eclipse.core.runtime.IProgressMonitor monitor)
Get the maximum number of entries returned from a user search query.
|
boolean |
isExternalRegistryQueryable(org.eclipse.core.runtime.IProgressMonitor monitor)
Answer whether the external user registry is queryable by the
application.
|
boolean |
isExternalRegistryWriteable(org.eclipse.core.runtime.IProgressMonitor monitor)
Answer whether the external user registry allows write backs from the
application.
|
boolean |
isMember(java.lang.String userId,
java.lang.String groupName,
org.eclipse.core.runtime.IProgressMonitor monitor)
Is user a member of the given group name?
|
java.lang.String[] |
listAllReadOnlyAttributes(org.eclipse.core.runtime.IProgressMonitor monitor)
Returns the list of contributor attribute names that cannot be modified.
|
IExternalGroup[] |
listApplicationGroups(org.eclipse.core.runtime.IProgressMonitor monitor)
Returns a list of all the group (role) names that are used by the Jazz
application for authentication and permissions
|
void |
removeFromGroup(java.lang.String userId,
java.lang.String groupName,
org.eclipse.core.runtime.IProgressMonitor monitor) |
void |
resetPassword(java.lang.String userId,
java.lang.String[] emailAddresses,
org.eclipse.core.runtime.IProgressMonitor monitor)
Reset the password for the named user.
|
void |
updateExternalUser(java.lang.String userId,
java.lang.String name,
java.lang.String emailAddress,
java.lang.String[] groups,
org.eclipse.core.runtime.IProgressMonitor monitor) |
boolean isExternalRegistryQueryable(org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
IContributor
contributors in the system.TeamRepositoryException
boolean isExternalRegistryWriteable(org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
TeamRepositoryException
java.lang.String[] listAllReadOnlyAttributes(org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
TeamRepositoryException
IExternalGroup[] listApplicationGroups(org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
TeamRepositoryException
java.lang.String getGroupDescription(java.lang.String groupName, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
groupName
- TeamRepositoryException
IExternalUser fetchUser(java.lang.String userId, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
userId
- the userId of the contributor or user to be fetched; must not
be nullIExternalUser
the external user, if found. Never null.UnknownUserException
- if a user does not exist in the external registry.PermissionDeniedException
- if the currently authenticated user does not have authority
IPermissionService.JAZZ_ADMINS
to access the external
registryTeamRepositoryException
- for anything else.java.lang.String[] fetchGroupsForUser(java.lang.String userId, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
userId
- User id of the contributorPermissionDeniedException
- if the currently authenticated user does not have authority
IPermissionService.JAZZ_ADMINS
to access the external
registryTeamRepositoryException
- for anything else.#listApplicationGroups()
boolean isMember(java.lang.String userId, java.lang.String groupName, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
userId
- User IdgroupName
- Group NamePermissionDeniedException
- if the currently authenticated user does not have authority
IPermissionService.JAZZ_ADMINS
to access the external
registryTeamRepositoryException
- for anything else.IExternalUser[] findUsersByName(java.lang.String name, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
name
- the name to search, must not be nullPermissionDeniedException
- if the currently authenticated user does not have authority
IPermissionService.JAZZ_ADMINS
to access the external
registryTeamRepositoryException
IExternalUser[] findUsersByAnyName(java.lang.String name, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
name
- the name to search, must not be nullPermissionDeniedException
- if the currently authenticated user does not have authority
IPermissionService.JAZZ_ADMINS
to access the external
registryTeamRepositoryException
int getMaxLimitForUserSearchQuery(org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
TeamRepositoryException
void addExternalUser(java.lang.String userId, java.lang.String password, java.lang.String name, java.lang.String emailAddress, java.lang.String[] groups, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
userId
- User id of the user to be createdpassword
- Password of the username
- Full name of the useremailAddress
- Email address of the usergroups
- Groups user is member ofUnmodifiableUserRegistryException
- if write is not supportedTeamRepositoryException
- if anything else goes wrongPermissionDeniedException
- if the currently authenticated user does not have authority
IPermissionService.JAZZ_ADMINS
to access the external
registry#isExternalRegistryWriteable()
void updateExternalUser(java.lang.String userId, java.lang.String name, java.lang.String emailAddress, java.lang.String[] groups, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
userId
- name
- emailAddress
- groups
- UnmodifiableUserRegistryException
- if write is not supportedPermissionDeniedException
- if the currently authenticated user does not have authority
IPermissionService.JAZZ_ADMINS
to access the external
registryTeamRepositoryException
- if anything else goes wrong#isExternalRegistryWriteable()
void addToGroup(java.lang.String userId, java.lang.String groupName, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
userId
- groupName
- UnmodifiableUserRegistryException
- if write is not supportedPermissionDeniedException
- if the currently authenticated user does not have authority
IPermissionService.JAZZ_ADMINS
to access the external
registryTeamRepositoryException
- if anything else goes wrong#isExternalRegistryWriteable()
void removeFromGroup(java.lang.String userId, java.lang.String groupName, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
userId
- groupName
- UnmodifiableUserRegistryException
- if write is not supportedPermissionDeniedException
- if the currently authenticated user does not have authority
IPermissionService.JAZZ_ADMINS
to access the external
registryTeamRepositoryException
- if anything else goes wrongTeamRepositoryException
void changePassword(java.lang.String userId, java.lang.String oldPassword, java.lang.String newPassword, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
userId
- -
the userId of the user; must match the currently authenticated
contributoroldPassword
- -
the old passwordnewPassword
- -
the new passwordPermissionDeniedException
- if the currently authenticated contributor is not the same as
the user; or if the old password is incorrectTeamRepositoryException
- if anything else goes wrongvoid resetPassword(java.lang.String userId, java.lang.String[] emailAddresses, org.eclipse.core.runtime.IProgressMonitor monitor) throws TeamRepositoryException
userId
- Id of the user whose password need to be reset; must not be
nullemailAddresses
- Email Addresses of the user. The new password will be sent to
the provided email addresses; must not be nullmonitor
- Prgress monitorTeamRepositoryException
UnmodifiableUserRegistryException
- if write is not supportedPermissionDeniedException
- if the currently authenticated contributor is not an Admin


2. NOTES ON INDIVIDUAL PIECES - 2.2 Cyborg - 16
Mild-steel sheet metal; enamel paint; found mechanical parts; electric motor. H: 1660 mm W: 2700 mm L: 2940 mm


This is a sample paragraph.
This is another paragraph.
This paragraph has a title, Hello World! You can see it by mousing over the paragraph.
This is a link to Olympiads


1 / 12
2 / 12
3 / 12
4 / 12
5 / 12
6 / 12
7 / 12
8 / 12
9 / 12
10 / 12
11 / 12
12 / 12
❮
❯
We have THREE packages with your budget
TRADITIONAL
- Pre-Wedding Photography
- Pre-Rituals Wedding Photography & Videography
- Wedding Photography and Videography
- One Album
- One USB Pendrive
CINEMATIC
- Pre-Wedding Photography & Videography
- Pre-Rituals Wedding Photography & Videography
- Wedding Photography and Videography
- One Album
- One USB Pendrive
TRADITIONAL
- Pre-Wedding Photography
- Pre-Rituals Wedding Photography & Videography
- Wedding Photography and Videography
- One Album
- One USB Pendrive
CINEMATIC
- Pre-Wedding Photography & Videography
- Pre-Rituals Wedding Photography & Videography
- Wedding Photography and Videography
- One Album
- One USB Pendrive
TRADITIONAL
- Pre-Wedding Photography
- Pre-Rituals Wedding Photography & Videography
- Wedding Photography and Videography
- One Album
- One USB Pendrive
CINEMATIC
- Pre-Wedding Photography & Videography
- Pre-Rituals Wedding Photography & Videography
- Wedding Photography and Videography
- One Album
- One USB Pendrive


[§90D-7] Expenses. The commission may accept funds and in-kind services from other state and federal entities, as authorized by state law. [L 2002, c 88, pt of §1]


public interface Parasite
url(String)
and extractResults(org.jsoup.nodes.Document)
.
We can say, that the url(String)
is a help function for generating URL from query. This can be helpful when
searching a lot.
| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_TIMEOUT
Default value of timeout.
|
| Modifier and Type | Method and Description |
|---|---|
default Parasite |
anotherURL(java.lang.String url)
Returns new parasite with same
extractResults(org.jsoup.nodes.Document) but redefined url(String)
method. |
Results |
extractResults(org.jsoup.nodes.Document doc)
Extract search results from given document and create new
Results object with it. |
default Results |
search(java.lang.String query)
In fact do the same as the
search(String, int) method, but use DEFAULT_TIMEOUT as a timeout. |
default Results |
search(java.lang.String query,
int timeout)
Returns results from searching the given query with the engine.
|
java.lang.String |
url(java.lang.String query)
This method should return an URL from given query.
|
static final int DEFAULT_TIMEOUT
search(String)
method).java.lang.String url(java.lang.String query)
query
- the query to be searched with the engine, this parasite is parasitizing onResults extractResults(org.jsoup.nodes.Document doc)
Results
object with it.doc
- document to extract results fromdefault Parasite anotherURL(java.lang.String url)
extractResults(org.jsoup.nodes.Document)
but redefined url(String)
method. The new url(String)
method will be returning given string.url
- new returning value, that should new url(String)
method returnurl(String)
methoddefault Results search(java.lang.String query, int timeout) throws java.io.IOException
query
- the query to be searched with the engine. If null, the behavior will depend on url(String)
method behaviortimeout
- timeout for downloading the page with resultsjava.io.IOException
- if problem with downloading occursdefault Results search(java.lang.String query) throws java.io.IOException
search(String, int)
method, but use DEFAULT_TIMEOUT
as a timeout.query
- the query to be searched with the engine. If null, the behavior will depend on url(String)
method behaviorjava.io.IOException
- If problem with downloading occurs


Super Galactic Age Calculator
Please Enter your life expectancy:
Please Enter your age:
Calculate
Mercury
Venus
Mars
Jupiter


Posted on May 25, 2018
This is a very small chapter (just one page) in the book, and all we do here is define a permutation, introduce some notation, and count the total number of permutations of a given number of objects (everyone knows the answer). Nevertheless, we need to tell Haskell what a set is before we can tell it what a permutation is. And then we can also define some of the familiar operations on sets, which may come in handy later. ...


Burnley and Bournemouth want a player from the third league for 15 million!
by BeSoccer'The Sun' analysed Ivan Toney's situation, he is Peterborough United's main goalscorer in League One.
The prices for transfers in England do not follow the same reasoning as the rest of Europe. League One side, Peterborough United, have been targetted with many requests to let their star striker, Ivan Toney, go.
The 23-year-old footballer, who had no luck at Newcastle after standing out at Northampton Town in 2014/15, arrived at Peterborough in 2018. After a pilgrimage by teams from the lower leagues, he has found his place at Peterborough United and has aroused great interest in England.
Featured links
- Ballon d'Or winner already been decided
- The latest football transfers news and rumours
- Possible 'Clasico' in the Spanish Supercup final
- Who has the most free-kicks goals: Messi or Cristiano?
There, he got 23 goals and five assisrs in the 2018/19 season and has already scored 12 goals and got 2 assists this season. He is a very versatile forward with a great physique, who can also play on the right wing.
What's more, Bournemouth and Burnley, the teams who are most interested in signing him, Middlesborough, Cardiff, Bristol City and Derby County have also made it clear that they are interested in the player.
The Peterborough United boss has already made it clear that they will not give their star away, who he curiously bought from Newcastle for half a million euros: "Toney will break the transfer record for a League One player when he leaves. And it will shatter the 'posh' record".


Remnant class¶
Treats the post-merger remnant of MW-M31 as a galaxy.
-
class
galaxy.remnant.
Remnant
(snap=801, datadir=None, usesql=False, stride=1, ptype=(2, 3))[source]¶ A class to work with the MW-M31 post-merger remant.
- Args:
- snap (int):
Snap number, equivalent to time elapsed. Defaults to the last timepoint.
- datadir (str):
Directory to search first for the required file. Optional, and a default list of locations will be searched.
- usesql (bool):
If True, data will be taken from a PostgreSQL database instead of text files.
- stride (int):
Optional. For stride=n, get every nth row in the table. Only valid with usesql=True.
- ptype (int or iterable of int):
Particle type: 1, 2, 3 or a combination of these
- Class attributes:
- data (np.ndarray):
type, mass, position_xyz, velocity_xyz for each particle
-
read_db
(stride)[source]¶ Get relevant data from a PostgreSQL database and format it to be identical to that read from test files.
Ex-disk and ex-bulge particles are included, not DM particles.
- Args:
- stride (int):
Optional. For stride=n, get every nth row in the table.
- Changes:
self.time, self.particle_count and self.data are set.
Returns: nothing
-
I_tensor
(m, x, y, z)[source]¶ - Args:
- m, x, y, z:
1-D arrays with mass and coordinates (no units)
- Returns:
3x3 array representing the moment of inertia tensor
-
ellipsoid_axes
(m, x, y, z, r_lim=None)[source]¶ - Args:
- m, x, y, z:
1-D arrays with mass and coordinates (no units)
- r_limfloat
Radius to include in calculation (implicit kpc, no units)
- Returns:
Two 3-tuples: relative semimajor axes and principal axis vectors
-
sub_mass_enclosed
(radii, m, xyz)[source]¶ Calculate the mass within a given radius of the origin. Based on code in MassProfile, but this version assumes CoM-centric coordinates are supplied.
- Args:
radii (array of distances): spheres to integrate over m (array of masses): shape (N,) xyz (array of Cartesian coordinates): shape (3,N)
- Returns:
array of masses, in units of M_sun
-
hernquist_mass
(r, a, M_halo)[source]¶ Calculate the mass enclosed for a theoretical profile
- Args:
- r (Quantity, units of kpc):
distance from center
- a (Quantity, units of kpc):
scale radius
- M_halo (Quantity, units of M_sun):
total DM mass
- Returns:
Total DM mass enclosed within r (M_sun)
-
fit_hernquist_a
(m, xyz, r_inner=1, r_outer=100)[source]¶ Get scipy.optimize to do a non-linear least squares fit to find the best scale radius a for the Hernquist profile.
- Args:
- r_inner (numeric):
Optional. Minimum radius to consider (implicit kpc). Avoid values < 1 as they cause numeric problems.
- r_outer (numeric):
Optional. Maximum radius to consider (implicit kpc).
-
sersic
(R, Re, n, Mtot)[source]¶ Function that returns Sersic Profile for an Elliptical System (See in-class lab 6)
- Input
- R:
radius (kpc)
- Re:
half mass radius (kpc)
- n:
sersic index
- Mtot:
total stellar mass
- Returns
Surface Brightness profile in Lsun/kpc^2
-
Re
(R, m, xyz)[source]¶ Find the radius enclosing half the mass.
- Args:
- R (array of Quantity):
Radii to consider (kpc)
- Returns:
- Re (Quantity) :
Radius enclosing half light/mass (kpc)
- bulge_total (numeric):
Mass of entire bulge (M_sun, no units)
- bulgeI (array of Quantity):
Surface brightness at radii R (kpc^-2), assuming M/L=1
-
fit_sersic_n
(R, sub_Re, sub_total, subI)[source]¶ Get scipy.optimize to do a non-linear least squares fit to find the best value of n for a Sersic profile.
- Args:
- R (array of quantity):
Radii at which to calculate fit (kpc)
- Re (Quantity) :
Radius enclosing half light/mass (kpc)
- bulge_total (numeric):
Mass of entire bulge (M_sun, no units)
- bulgeI (array of Quantity):
Surface brightness at radii R (kpc^-2)
- Returns:
best n value and error estimate


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
BEFORE THE NATIONAL GREEN TRIBUNAL NEW DELHI (PRINICIPAL BENCH) Wednesday the 15th February, 2012 APPEAL NO.19 of 2011 Quorum: 1. Hon'ble Justice Shri C.V. Ramulu (Judicial Member) 2. Hon'ble Prof R.Nagendran (Expert Member) Between : 1. M/S P Manokaran Power Loom Rep. by its Proprietor Amani Palaniappal Mundali Street Tharamangalam Salem District -636 502 Tamil Nadu 2. M/S Selvam Power Loom Rep by its Proprietor Ka Kho Arumuga Kundali Street New 6th Ward Tharamangalam-636 502 Tamil Nadu 3. M/S Boopathy Power Loom Rep. by its proprietor 6-11 -15-/1,Ka Kho Arumuga Kudali Street New 6th Ward Tharamangalam Salem District -636 502 Tamil Nadu 4. M/S Arumugam Power Loom Rep by its Proprietor Pulavan Street Old 2nd Ward/New 3rd Ward Tharamangalam Salem District -636 502 Tamil Nadu 5. M/S Kuberan Power Loom Rep. by its Proprietor Saravana Kuppanna Kailasa Mudali Street New 6TH Ward Tharamangalm Salem District -636 502 Tamil Nadu 6. Govindam Power Loom Rep by its Proprietor T.Govindan , Ka Kho Arumuga Mundali Street, New 6th Ward Tharamangalm Salem District -636 502 Tamil Nadu 7. M/S Madhu Power Loom Rep. by its Proprietor Sengattapattian House Ka Kho Arumuga Kundali Street Tharamangalm Salem District -636 502 Tamil Nadu 8. M/S Madhu Power Loom Rep by its Proprietor Saravana Kuppanna Kailasa Mundali Street Tharamangalm Salem District -636 502 Tamil Nadu 9. M/S Mohanasundaram Power Loom Rep by its Proprietor Kattu Velayutha Mudali Street Tharamangalm Salem District -636 502 Tamil Nadu 10. M/S Balakrishnan Power Loom Rep by Proprietor T. Balakrishnan Saravana Kuppanna Kailasa Mundali Street Tharamangalm Salem District -636 502 Tamil Nadu 11. M/S KRP Balu Power Rep by its proprietor Saravana Kuppanna Kailasa Mudali Street Tharamangalm Salem District -636 502 Tamil Nadu 12 . M/S Gnanaprakasam Power Loom Rep by its proprietor Kattu Velayutha Mudali Street Tharamangalm Salem District -636 502 Tamil Nadu 13. M/S Selvaraj Power Loom Rep by its proprietor Kattu Velayutha Mudali Street Tharamangalm Salem District -636 502 Tamil Nadu 14. M/S Ganesan Power Loom Rep by its proprietor Saravana Kuppanna Kailasa Mudali Street Tharamangalm Salem District -636 502 Tamil Nadu .........Appellants v/s 1. Tamil Nadu Pollution Control Board Rep by its Chairman 76, Mount Salai Guindy, Chennai- 600 032 2. District Environmental Engineer Tamil Nadu Pollution Control Board Siva Tower, Meyanur Road Salem District -636 004 Tamil Nadu 3. S. Sakthivel Old 3rd Ward, New 6th Ward Ammani Palaniappa Mundali Street Tharamangalm Salem District -636 502 Tamil Nadu .............Respondents (Advocates appeared: Mr. G. Sivabalamurugan for Appellants, Mr Prasanna Venkat for Respondant No. 1 & 2 ). JUDGMENT
(Judgment delivered by the Bench)
1. This appeal is directed against an order dated 28.10.2010 made under Section 31 -A of Air (Prevention and Control of Pollution) Act 1981, (for short Air act ) whereunder the Unit of the Appellant was directed to be closed and further the electricity Board was directed to stop supply of electricity for certain violations under the said Act. Aggrieved thereby, the Appellant appears to have approached the Hon'ble High Court of Madras in Writ Petition No. 2389 to 2408 of 2010. However, the said writ petition papers were directed to be returned to the Appellant to enable him to approach the Green Tribunal.
2. When the matter had come up for hearing on 14.2.2012, we entertained a doubt as to the maintainability of the application. The Learned Counsel for the Appellant sought adjournment till date. The Learned Counsel for the appellant vehemently submitted and argued that though the impugned order is passed under Section 31-A of the Air Act and an appeal is available under Section 31 of the same Act to the named authority, this appeal is also maintainable for various reasons.
Firstly, the Appellant being aggrieved by the impugned order, filed Writ Petition No. 2389 to 2408 of 2010 before the Honorable High Court of Madras. The Writ Petition was entertained. However, on 15.9.2011, the papers were returned to enable the appellant to approach this Tribunal. Therefore, there is no necessity for Appellant to approach the Appellant Authority u/s 31 of the Air Act.
Secondly, the Hon'ble High Court of Madras itself has recorded that to enable Petitioner to approach the Green Tribunal, the papers were returned, and as such, it is the binding duty of this Tribunal to entertain this Appeal and dispose it on merits and it cannot examine the aspect of maintainability at this stage.
3. We are afraid, we may not agree with the submission made by the Learned Counsel for the appellant, Shri G. Sivabalamurugan in this regard. Ours is only a Statutory Tribunal and merely because the papers were returned by The Hon'ble High Court of Madras to enable the appellant to approach this Tribunal, it cannot be said that we should entertain the appeal without examining the legal provisions.
4. It is an admitted fact that against the impugned order dated 28.1.2010, an appeal under Section 31 of the Air Act is available. Instead of availing of that remedy, appellant had approached the Hon'ble High Court of Madras under Article 226 of the Constitution of India. No doubt, the Hon'ble High Court of Madras returned the papers to enable the Petitioners to approach this Tribunal. This does not mean that this Tribunal can allow Petitioners to bypass the appeal available under Section 31 of the Air Act.
Further, this Tribunal is the Appellate Authority against any order that may be passed by the Appellant Authority under Section 31 of the Air Act. We are not a constitutional body which can bypass the appeal provided under Air Act by invoking discretionary powers against the impugned order herein, particularly in the absence of any direction from the Hon'ble High Court of Madras to entertain the appeal and dispose it of on merits. We are of the considered opinion that this appeal is not maintainable. Therefore, the appeal stands dismissed. No cost.
5. However, we make it clear that it is always open to the Petitioner to file an appeal under Section 31 of the Air Act before the authority concerned and also seek condonation of delay in filing the appeal in view of the pendency of the Writ Petition before the Hon'ble Madras High Court and the appeal filed before this Tribunal. We further make it clear that the interim order granted by this Tribunal on 18.10.2011 shall be continued for a period of one month from today and petitioner is at liberty to file appeal u/s 31 and obtain necessary orders from appropriate authority, in the meanwhile.
(Prof. Dr. R. Nagendran) (Justice C V Ramulu) Expert Member Judicial Member


The Asset Allocator: The UK's Lose-Lose Elections (Podcast)
by SA For FAsSummary
- The British pound hit a 31-month high against the euro last week, presumably because the Conservatives maintain a healthy lead over Labour in this week’s elections.
- It’s understandable why investors don’t want Labour, which promises to nationalize much of the British economy and introduce a slew of different taxes.
- But why should the pound rally over the victory of a government that will finalize Brexit, the very reason the pound has crashed these past three-and-a-half years?
- Investors should just stay away from sterling-based assets altogether.
Listen on the go! Subscribe to the SA for FAs podcast on iTunes , Stitcher and SoundCloud (click the highlighted links).
The British pound hit a 31-month high against the euro last week, presumably because the Conservatives maintain a healthy lead over Labour in this week’s elections.
This podcast (5:54) highlights the reasons why investors will not come out ahead in this election, no matter the outcome.


{% extends 'layout.html' %} {% set version = "v5" %} {% set heading = "What sex were you registered at birth?" %} {% set mainClasses = "nhsuk-main-wrapper--s" %} {% set backLink = "phone-number" %} {% block content %}
We're asking this because we know coronavirus affects females and males differently.
Knowing your sex can help make sure we get the right mix of females and males taking part in vaccine studies.
This is so we can make sure any vaccine developed will work for everyone.
The next question asks about your gender.


Not to be confused with Mime. This article is about the term "meme" in general. For the usage of the term on the internet (or a trend that spreads quickly), see Internet meme. For other uses, see Meme (disambiguation).
A meme (/miːm/ MEEM) is an idea, behavior, or style that spreads by means of imitation from person to person within a culture—often with the aim of conveying a particular phenomenon, theme, or meaning represented by the meme. A meme acts
as a unit for carrying cultural ideas, symbols, or practices, that can be transmitted from one mind to another through writing, speech, gestures, rituals, or other imitable phenomena with a mimicked theme. Supporters of the concept regard
memes as cultural analogues to genes in that they self-replicate, mutate, and respond to selective pressures. Wikipedia
MEMELOGY uses meme-api to display a random meme.


Cells can find themselves in 3 different situations regarding osmotic pressure.
They can be in:
Isotonic: An isotonic solution is one where the solute concentration is perfectly balanced. There is no need for water to move into or out of the cell. The cell will not change shape in any way.
Hypertonic: In this situation the cell is in a high salt environment outside the cell. This means that osmotic pressure tends to make water move out of the cell as the solute concentration is higher outside compared to the inside. As water moves out of the cell, it makes the cell shrink and inhibits its activity.
Hypotonic: In this situation the cell is in a low salt environment outside the cell. This means that osmotic pressure tends to make water move into the cell as the solute concentration is higher inside compared to the outside. As water moves into the cell it begins to swell and may actually burst.


Vimeo player (captions hosted on Vimeo)
This page features an example of Able Player being used to play a Vimeo video. The video featured is hosted in a Vimeo Pro account, required for hiding the controller and for being able to control playback rate with faster/slower buttons. Captions and subtitles in this demo are stored solely on Vimeo, therefore Able Player is unable to auto-generate an interactive transcript, and users have no control of the appearance of captions.


Toggle navigation
Indy
Remote Repositories
maven
generic-http
npm
Hosted Repositories
maven
generic-http
npm
Groups
maven
generic-http
npm
REST API
More
Thread Dump
Diagnostic Bundle
Repo Bundle
Not-Found Cache
Delete Metadata
{{addon.name}}
{{username}}
Log Out
Welcome! Make a selection from the menu above to proceed.
Docs
|
Issues
|
Version:
{{stats.version}}
|
Commit ID:
{{stats["commit-id"]}}
|
Built
on {{stats["timestamp"]}} by
{{stats["builder"]}}


Client-Central provides the user with access to cardholder information relating to one or more client institutions, termed logos for debit clients and OrgIDs for Full Service Credit clients. This page allows you to grant or revoke user access to specific logos and/or OrgIDs. The user has access to the logos within the Selected Logos and/or Selected OrgID list.
When the user has the EPOC System checked on the User Details page, the Logos/Client IDs section displays. When the Full Service Credit System is checked, the OrgIDs section displays.
Note: Every institution has one designated primary security administrator (PSA). Maximum privileges applicable to the institution are defined on the PSA's security record. Other administrators and other users can be given the same or lesser privileges. When adding or maintaining a user record, you are not able to give more access than you have. Please refer to the Security manual for further details.
Click the following links for more information:
Key Information
Auto-filled with client and user identification values.
| First Name | First name of the user. |
| Last Name | Last name of the user. |
| Institution ID | 4-character alphanumeric identifier assigned by Card Services for the selected institution. |
| User ID | Client-Central user ID of the selected user. |
Logos/Client IDs
Allows you to control user logo access.
| Available Logos |
Logos available for access. You can highlight logos from this list and move them to the Selected Logos list.
Note: This list is limited to the logos specified on your own user record. |
| Selected Logos |
The user is granted access to all the logos within the Selected Logos list. To remove access, highlight logos from this list and move them to the Available Logos list. |
OrgIDs
Allows you to control user OrgID access.
| Available OrgIDs |
OrgIDs available for access. You can highlight OrgIDs from this list and move them to the Selected OrgIDs list. Note: This list is limited to the OrgIDs specified on your own user record. |
| Selected OrgIDs |
The user is granted access to all the OrgIDs within the Selected OrgIDs list. To move access, highlight OrgIDs from this list and move them to the Available OrgIDs list. |
| >> | Moves the highlighted items from the Available list to the Selected list. |
| All >> | Moves all items in the section from the Available list to the Selected list. |
| << | Moves the highlighted items from the Selected list to the Available list. |
| All << | Moves all items in the section from the Selected list to the Available list. |
| OK | Temporarily stores the information entered and takes you to the User Record page. You can then choose to save your changes by selecting Update. Before doing so, you have an opportunity to edit any information on any of the other pages. |
| Cancel | Discards your changes and returns you to the User Record page. |


{# This is the base template for the photometric ZP server, using the twitter bootstrap. #}
All-Sky Photometric Estimates


A set of routines written in the S language that calculate power and related quantities utilizing asymptotic likelihood ratio methods.
| Version: | 2015.6.25 |
| Depends: | R (≥ 2.2.0), stats |
| Published: | 2015-06-26 |
| Author: | S original by Barry W. Brown, James Lovato and Kathy Russel. R port by Kjetil B Halvorsen |
| Maintainer: | Kjetil B Halvorsen <kjetil1001 at gmail.com> |
| License: | ACM | file LICENSE |
| NeedsCompilation: | no |
| Materials: | README NEWS INSTALL |
| In views: | ClinicalTrials |
| CRAN checks: | asypow results |
| Reference manual: | asypow.pdf |
| Package source: | asypow_2015.6.25.tar.gz |
| Windows binaries: | r-devel: asypow_2015.6.25.zip, r-release: asypow_2015.6.25.zip, r-oldrel: asypow_2015.6.25.zip |
| OS X binaries: | r-release: asypow_2015.6.25.tgz, r-oldrel: asypow_2015.6.25.tgz |
| Old sources: | asypow archive |
Please use the canonical form https://CRAN.R-project.org/package=asypow to link to this page.


Hello! I'm Prosper
Welcome to my site! I'm a software developer and I love building things with technology. I build web apps, Android apps and I dabble in other fun tech stuff. I love playing video games and hanging out with my friends. Check out some of the things I've built and feel free to get in touch. We could be friends!
Some things I've built
React Notes
React Notes is basically a Google Keep knock off. Updates to notes are made in real time across all connected clients like in Google Docs! It was built with React and a Realtime Firebase Database.
YelpCamp
YelpCamp is like Yelp but for campgrounds. Users can signup, post campgrounds and comment on them. It was built with Node.js, Express and MongoDB.
Quake Report
Quake Report is an Android app that pulls earthquake data from USGS API and displays it in a nice, simple layout. Users can filter and sort the displayed earthquakes by magnitude and time of occurence.
Leave a comment!


@title@ @byuser@
@description@
# open a shell and run these commands pxt extract https://pxt.microbit.org/@id@ cd @title@ code .
Do you need help installing the tools? Follow these instructions!
@id@