By far the most intellectually and politically interesting thing about the recent “exposé” of Spokane, WA, NAACP activist Rachel Dolezal’s racial status is the conundrum it has posed for racial identitarians who are also committed to defense of transgender identity. The comparisons between Dolezal and Republican Jenner (I’ve decided to opt for that referent because it is an identity continuous between “Bruce” and “Caitlyn” and is moreover the one most meaningful to me) began almost instantly, particularly as a flood of mass-mediated Racial Voices who support the legitimacy of transgender identity objected strenuously to suggestions that Dolezal’s representation, and apparent perception, of herself as black is similar to Bruce Jenner’s perception of himself as actually Caitlyn.
The way Zeba Blay puts it, on the Black Voices section of HuffPo, is by declaring how important it is to “make one thing clear: transracial identity is not a thing.” What is clear is that it’s not at all clear what that statement is supposed to mean. It seems to suggest that transracial identity is not something that has been validated by public recognition, or at least that Blay has not heard of or does not recognize it. But there’s an obvious problem with this contention. There was a moment, not that long ago actually, when transgender identity was not a “thing” in that sense, either. Is Blay’s contention that we should accept transgender identity only because it is now publicly recognized? If so, the circularity is obvious, and the lack of acceptance arguably only a matter of time. Transgender wasn’t always a thing—just ask Christine Jorgensen.
But the more serious charge is the moral one, that, as Michelle Garcia puts it, “It’s pretty clear: Dolezal has lied.” But here too, it’s not clear what’s so clear. Is the point supposed to be that Dolezal is lying when she says she identifies as black? Or is it that being black has nothing to do with how you identify? The problem with the first claim is obvious—how do they know? And on what grounds does Jenner get to be telling the truth and Dolezal not? But the problem with the second claim is even more obvious, since if you think there’s some biological fact of the matter about what race people actually belong to, utterly independent of what race they think they belong to, you’re committed to a view of racial difference as biologically definitive in a way that’s even deeper than sexual difference.
Blay attempts to deal with these issues by quoting the analysis of Darnell L. Moore of Mic, that, “In attempting to pass as black, Dolezal falsely represented her identity. Trans people don’t lie about their gender identities—they express their gender according to categories that reflect who they are.” This claim has recurred in various formulations. Meredith Talusan asserts it most emphatically in the Guardian:
The fundamental difference between Dolezal’s actions and trans people’s is that her decision to identify as black was an active choice, whereas transgender people’s decision to transition is almost always involuntary. Transitioning is the product of a fundamental aspect of our humanity—gender—being foisted upon us over and over again from the time of our birth in a manner inconsistent with our own experience of our genders. Doctors don’t announce our race or color when we are born; they announce our gender. People who are alienated from their presumed gender and define themselves according to another gender have existed since earliest recorded history; race is a medieval European invention. Thus, Dolezal identified as black, but I am a woman, and other trans people are the gender they feel themselves to be.
This assessment is mind-bogglingly wrong-headed, but it is at the same time thus deeply revealing of the contradictoriness and irrationality that undergird so much self-righteous identitarian twaddle. First of all, as I’ve already suggested, the claim that Dolezal’s identity is false and transgendered people’s are true immediately provokes a “Who says?” What makes Talusan’s and other transgender people’s identities authentic is that they believe them to be authentic. We agree to accept transgender people’s expression of belief in their authenticity. It’s fine for Talusan or others to say that they are convinced that the identities they embrace are their real ones in some way that is not limited by their biology at birth. However, the logic of the pluralism and open-endedness of identity they assert would require that they also accept the self-reports of claims to authenticity regarding identities that may diverge in other ways from convention. Certainly, not doing so necessitates some justification more persuasive—and less Archie Bunkerish—than simply asserting, “Mine is genuine, theirs is not.”  Once again, who says? Who gave Talusan, Moore, Blay and others the gifts of telepathic mindreading and ventriloquy? How do we know that Dolezal may not sense that she is “really” black in the same, involuntary way that many transgender people feel that they are “really” transgender?
The related complaint that Dolezal’s self-representation is inauthentic because she “lied” about her identity is equally fatuous. To stay within the identitarian paradigm, what did Republican Jenner do for more than six decades of operating as Bruce? What does any transgender person do before the moment of coming out?
Michelle Garcia, also at Mic, asks, imagining that her question is a trump, “If Caitlyn Jenner can identify as a woman, why can’t Rachel Dolezal say that she’s black?” But why should that be the definitive criterion for accepting the self-representation? Who made that rule? Could there be something about public expectations at this point regarding the fixity of racial boundaries that would stay Dolezal from taking the bold step of announcing that she had always “known” herself to be black? The furor that has surrounded the “exposé” would suggest that is the case. Would she have felt free to do so if public awareness already accepted the possibility of racial identity as not necessarily tied to official classification? I have no idea whether she would have, and Garcia doesn’t either. And, again, what about the 60+ years before Republican Jenner emerged publicly as Caitlyn? Was his privately embraced identity as Caitlyn bogus for all those years because he didn’t, or felt he couldn’t, go public with it?
This brings me to the most important point that this affair throws into relief. It has outed the essentialism on which those identitarian discourses rest. Garcia asks, “So why don’t we just accept Dolezal as black? Because she’s not.” But why is she not black in Garcia’s view? Well, “Her parents say she’s not even close to being black.” But what would that mean—that she has no known black ancestry? Is blackness, then, a matter of hypodescent after all? But, if that’s what it is, then what politically significant meaning does the category have? Dolezal no doubt has her issues and idiosyncrasies, but, especially if the judgment of the NAACP counts for anything in the matter, I’m pretty sure I’d take her in a trade for Clarence Thomas, Cory Booker, Condi Rice, and five TFA pimps to be named later. Or would Dolezal’s “not even close to being black” mean that she was raised outside of “authentic” black idiom or cultural experience? But whose black idiom or cultural experience would that be? Is there really an irreducible, definitive one? If so, on which Racial Voice blog or Ivy League campus might we find it?
The essentialism cuts in odd ways in this saga. Sometimes race is real in a way that sex is not—you’re black only if you meet the biological criteria (whatever they’re supposed to be) for blackness. And sometimes, as in Talusan’s failure to distinguish gender from sex typing, gender is “real” in a way that race is not. “Doctors don’t announce our race or color when we are born; they announce our gender.” I assume Talusan is referring to the stereotypical moment in the delivery room. Technically, though, the doctor announces the child’s sex type, not its culturally constructed gender roles. And when exactly does Talusan presume race is determined and by whom? I’m pretty sure that in most of the United States it’s still marked on one’s birth certificate. That’s not the delivery room, but it’s pretty damn close.
Talusan’s confusion of sex and gender is startlingly naïve. She contends that gender is a “product of a fundamental aspect of our humanity” and that, unlike race, the medieval European invention, gender is a “fundamental attribute” of our existence. But gender is no less culturally constructed than race. If Talusan were a little more curious anthropologically than precocious, she might have noticed that the relation between sex type and gender roles has varied wildly over the history and range of our species. But she, like Jenner, Hugh Hefner, and legions of anti-feminists, among others, naturalizes gender as melded into sex type: “Trans people transition in order to be the gender we feel inside.” For those to whom it seems odd or tendentious to link the naturalizing discourses of some transgender activists and hoary anti-feminism, I recommend Elinor Burkett’s fine rumination on the issue in the June 6 [2015] New York Times, titled “What Makes a Woman?”
There is a guild-protective agenda underlying racial identitarians’ outrage about Dolezal that is also quite revealing. Nikki Lynette, writing at Red Eye, exhorts, “Don’t Compare NAACP’s Rachel Dolezal to Caitlyn Jenner.” Why? Because, she contends, Dolezal benefited materially from her self-representation as black. Putting aside for the moment Republican Jenner’s orchestrated payday surrounding the announcement and display of transition, this is an unusual charge, one that is counterintuitive in relation to several generations of black American humor and also smacks a bit of right-wingers’ insinuations about whites taking advantage of affirmative action. Nevertheless, like Zeba Blay and others, Lynette rehearses a charge that Dolezal received a full scholarship to the Howard University MFA program on the pretext that she was a black woman. That charge is false; not only was she not admitted as black person (Howard’s applications apparently didn’t require racial identification); reports from faculty and students when she was there confirmed that she was not understood to be black when she was enrolled at the university. (See Hillary Crosley Coker, “When Rachel Dolezal Attended Howard, She Was White,” at Jezebel.) The charge is what those making it want to be true; they assume it’s true because they understand black racial classification as a form of capital.
Blay expresses this position most clearly. She objects that Dolezal “occupied positions of power specifically designated for members of a marginalized group.” Blay is referring, in addition to the false accusation about the circumstances of Dolezal’s matriculation at Howard, to her having belonged, while an undergraduate at Bellhaven College, to “a racial reconciliation community development project where blacks and whites lived together.” Blay presents membership in that group as though it were precursor to her having duped Howard out of a fellowship that should have gone to a black woman. To Blay this pattern of duplicity culminated in Dolezal’s “eventually working her way up to president of the Spokane NAACP in 2014.” (Some have included a charge that Dolezal used racial misrepresentation to advance an academic career; an occasional stint as an adjunct instructor, however, doesn’t square with the Iggy Azalea imagery that seems to propel this claim. It certainly would be a skimpy reward for such prodigious self-fashioning.) In Blay’s narrow political universe, the NAACP branch presidency is an honorific to be awarded on the basis of ascriptive categories like race and gender, not the result of effective work on behalf of the Association’s mission and goals. It is especially striking in this regard that a number of those exercised by Dolezal have at least implicitly called for the NAACP to renounce its support of her. Their commitment to arbitrary notions of racial propriety should override the Association’s sense of its own concrete priorities in the actual struggle for civil rights and social justice.
When all is said and done, the racial outrage is about protection of the boundaries of racial authenticity as the exclusive property of the guild of Racial Spokespersonship. (Blay also, with no hint of self-consciousness, complains that Dolezal’s deception has “hijacked the conversation about race, during a week where the nation was focusing on police brutality in McKinney, Texas.” Not only is that insipid “conversation about race” chatter the equivalent of fingernails on a chalkboard. It seems that Blay hasn’t discerned that the Dolezal issue has captured such attention only because it rankles the sensibilities of those who essentialize race and that no one is making her talk about it but herself.)
Beneath all the puerile cultural studies prattle about “cultural appropriation”—which can only occur if “culture” is essentialized as the property of what is in effect a “race”1—“same heritage and social struggles” (I doubt that Nikki Lynette was at Greensboro on February 1, 1960, Ft. Wagner on July 18, 1863, Little Rock in September, 1957, Colfax, Louisiana on April 13, 1873, the 1968 Memphis sanitation workers’ strike, either of the Amenia conferences, or Minton’s Playhouse any time in the 1940s), and Orwellian chatter about privilege and “disprivilege,” the magical power of “whiteness,” etc. lies yet another iteration in what literature scholar Kenneth Warren has identified in his masterful 2012 study, What Was African American Literature?, as a more than century-old class program among elements of the black professional-managerial stratum to establish “managerial authority over the nation’s Negro problem.”
That is to say, as is ever clearer and ever more important to note, race politics is not an alternative to class politics; it is a class politics, the politics of the left-wing of neoliberalism. It is the expression and active agency of a political order and moral economy in which capitalist market forces are treated as unassailable nature. An integral element of that moral economy is displacement of the critique of the invidious outcomes produced by capitalist class power onto equally naturalized categories of ascriptive identity that sort us into groups supposedly defined by what we essentially are rather than what we do. As I have argued, following Walter Michaels and others, within that moral economy a society in which 1% of the population controlled 90% of the resources could be just, provided that roughly 12% of the 1% were black, 12% were Latino, 50% were women, and whatever the appropriate proportions were LGBT people. It would be tough to imagine a normative ideal that expresses more unambiguously the social position of people who consider themselves candidates for inclusion in, or at least significant staff positions in service to, the ruling class.
This perspective may help explain why, the more aggressively and openly capitalist class power destroys and marketizes every shred of social protection working people of all races, genders, and sexual orientations have fought for and won over the last century, the louder and more insistent are the demands from the identitarian left that we focus our attention on statistical disparities and episodic outrages that “prove” that the crucial injustices in the society should be understood in the language of ascriptive identity. The Dolezal/Jenner contretemps stoked the protectionist reflexes of identitarian spokesperson guilds because it troubles current jurisdictional boundaries. Even before that, however, some racial identitarians had grown bolder in laying bare the blur of careerism and arbitrary, self-serving moralism at the base of this supposed politics. In an unintentionally farcical homage to Black Power era radicalism, various racial ventriloquists claiming to channel the Voices of the Youth leadership of the putative Black Lives Matter “movement” have lately been arguing that the key condition for a left alliance is that we all must “respect black leadership.”  Those of us old enough to remember Black Power and the War on Poverty also will look around to see which funders or employers they’re addressing.
And, in apparent contradiction of the ontological principle of group authenticity on which the paradigm rests, reprise of the tawdriest features of Black Power hustling isn’t available only to officially recognized people of color. Joan Walsh, apparently having learned the strictures of “white allyship” from being chastened by prima inter pares bourgeois identitarian Melissa Harris-Perry, recently showed the depths of crude opportunism this discourse enables when she race-baited Bernie Sanders as an instrument of her effort to pimp for Hillary Clinton (see her “White Progressives’ Racial Myopia: Why Their Colorblindness Fails Minorities—and the Left”). For Walsh, it seems, black people don’t count among the millions who would be helped by Sanders’s social-democratic agenda, but Clinton, presumably, would show proper respect by hooking them up with a #BlackLivesMatter Facebook like.
I’ll conclude by returning to the Dolezal/Jenner issue. I can imagine an identitarian response to my argument to the effect that I endorse some version of wiggerism, or the view that “feeling black” can make one genuinely black. The fact is that I think that formulation is wrong-headed either way one lines up on it. Each position—that one can feel or will one’s way into an ascriptive identity or that one can’t—presumes that the “identity” is a thing with real boundaries. The issue of the line that Dolezal, who has now resigned her NAACP position, crossed that made her alleged self-representation unacceptable is interesting in this regard only because it highlights contradictions at the core of racial essentialism. In addition to the problems of articulating what confers racial authenticity, if what we have read about her approach to expressing black racial identity is accurate, she seems to have embraced an essentialist version of being black no less than do her outraged critics. Wiggers do so as well, and we must admit that Dolezal’s performance and apparent embrace of culturally recognized representations of black womanhood rests on an æsthetic purporting to embody respect and celebration rather than the demeaning racialist fantasies that shape the commercial personae of the likes of Iggy Azalea. Moreover, even if Dolezal may suffer from something like racial dysmorphia, the expression of her fixation has been tied up with commitment to struggle for social justice. She may have other personal problems and strained or bad relations with family members, but those are matters that concern her and those with whom she interacts. They do not automatically impeach the authenticity of her feelings of who she “really” is. And I doubt that we’d want to start a scorecard comparing her and Republican Jenner on that front.
That points to the other way that this affair has exposed identitarianism’s irrational underbelly. The fundamental contradiction that has impelled the debate and required the flight into often idiotic sophistry is that racial identitarians assume, even if they give catechistic lip service—a requirement of being taken seriously outside Charles Murray’s world—to the catchphrase that “race is a social construction,” that race is a thing, an essence that lives within us. If pushed, they will offer any of a range of more or less mystical, formulaic, breezy, or neo-Lamarckian faux explanations of how it can be both an essential ground of our being and a social construct, and most people are willing not to pay close attention to the justificatory patter. Nevertheless, for identitarians, to paraphrase Michaels, we aren’t, for instance, black because we do black things; that seems to have been Dolezal’s mistaken wish. We do black things because we are black.  That is how it’s possible to talk about having lost or needing to retrieve one’s culture or define “cultural appropriation” as the equivalent, if not the prosaic reality, of a property crime. That, indeed, is also the essence of essentialism.
The problem the Jenner comparison poses is that, if identity is inherent in us in ways that are beyond our volition, how can we legitimate transgender identity—which is gender identity that does not conform with that conventionally associated with biological sex type—without the psychological stigma of dysmorphia? Confounding of sex and gender is the ideological mechanism that seems to resolve that conundrum. Thus, notwithstanding my earlier suggestion that Talusan misses the cultural fluidity of gender because she is naïve anthropologically, she may also have an important ideological reason to deny it. It is only by treating gender roles as somehow endowed at birth that she can contend that transgender identity is “almost always involuntary.” That is, in the context of essentializing political discourse, gender identity must express a condition as “natural” or inherent equivalent, or prior, to biological sex type. Transgender identity requires being read as in effect “hardwired” only within a normative framework in which access to the domain of recognizable identity deserving of civic regard depends on essentialist claims, and the only way transgender identity can meet that standard is to collapse distinctions between sex and gender—even though that move, as Burkett argues, cuts against the grain of the perspective the women’s movement has fought to advance for at least the last half-century. Nor does this view acknowledge the grave political mischief that ideologies of essential human difference have underwritten in not-at-all distant history, from segregation and other forms legal discrimination and imposition of separate spheres to genocide.
The transrace/transgender comparison makes clear the conceptual emptiness of the essentializing discourses, and the opportunist politics, that undergird identitarian ideologies. There is no coherent, principled defense of the stance that transgender identity is legitimate but transracial is not, at least not one that would satisfy basic rules of argument. The debate also throws into relief the reality that a notion of social justice that hinges on claims to entitlement based on extra-societal, ascriptive identities is neoliberalism’s critical self-consciousness. In insisting on the political priority of such fictive, naturalized populations, identitarianism meshes well with neoliberal naturalization of the structures that reproduce inequality. In that sense it’s not just a pointed coincidence that Dolezal’s critics were appalled with the NAACP for standing behind her work. It may be that one of Rachel Dolezal’s most important contributions to the struggle for social justice may turn out to be having catalyzed, not intentionally to be sure, a discussion that may help us move beyond the identitarian dead end.


date_time/2
date_time/2 – gets current date and time
date/1 – gets current date
time/1 – gets the current system time
gm_date_time/2 – gets current Greenwich mean date and time
FORMS
date_time(Date, Time)
time(Time)
date(Date)
gm_date_time(Date, Time)
DESCRIPTION
date_time(Date, Time) obtains the current Date and Time from the same call to the OS/system clock. gm_date_time(Date, Time) obtains the current Geenwich UTC Date and Time from the same call to the OS/system clock. date/1 and time/1 are effectively defined by:
date(Date) :- date_time(Date, _).
time(Time) :- date_time(_, Time).
EXAMPLES
?- time(Time).
Time = (16:51:49)
yes.
?- date(Date)
Date = 93/11/5
yes.


--- layout: post status: publish published: true title: "春节快乐" author: Leask author_login: leask author_email<EMAIL_ADDRESS>author_url: https://leaskh.com wordpress_id: 305 wordpress_url: http://leaskh.wordpress.com/2008/02/06/%e6%98%a5%e8%8a%82%e5%bf%ab%e4%b9%90 date: '2008-02-06 17:41:39 +0800' date_gmt: '2008-02-06 17:41:39 +0800' categories: - Life tags: [] comments: - id: 337 author: "颢原" author_email: '' author_url: '' date: '2008-02-13 06:43:25 +0800' date_gmt: '2008-02-13 06:43:25 +0800' content: |- 朋友们~更新你的地址吧~~哈哈 http://hoyo1203.blog.163.com/ ---


Data for this map is sourced from FireWhat.com's data and map on ArcGIS.com.
This page was built in less than 10 minutes. To build something like this, get sample code from Esri JS developers site thats ready to use. For conceptual information, check out the AGO help


Here are our Tips for you to explore Jordan:
- You are reminded of a civilization that once was, you can walk through the Siq and explore one of the seven wonders of the modern world, the Rose-red city of Petra.
- Canyoning is the perfect way for thrill-seekers to experience the challenges and beauty of Jordan’s best and most spectacular canyons. Explore the breathtaking sandstone canyons of Wadi Mujib.
- From the Lawrence of Arabia, Star wars till the Martin, be inspired by the spectacular Wadi Rum desert.
- The lowest point on earth is just a few hours from your home, it does not matter whether it's summer or winter, the Dead Sea is always a good place to visit.
- You have been home for a long time, and we know it was stressful, if diving is your thing, ensure you spend some time snorkeling the reefs in Aqaba.


GitHub is an essential tool for Computer Scientists today. It is similar to Google Drive but for coders. It allows you to collaborate with others when coding. Most importantly, it allows you to manage and organize your code. There are so many additional features that GitHub offers. For our use, it hosts your websites for free without much work on your part.
Now you are ready to create your account! Visit GitHub to create your free account.
So you have now made your account. In order to make your first repository or digital storage space where you can keep your code and host it, you must navigate to the home page of GitHub and click on “Start Project”. Fill in all of the required fields. You will see a box for initializing your repository with a “README” A README is just a text file that can explain how to use your code or what is in your code. Make sure you check this box so you can get used to having a README.
You are all set up for your future projects! We are assuming you are at least a little familiar with the Command Line now that you have moved on to this tutorial!
If you have completed a project and want to save your code to GitHub and upload it straight from the command line to GitHub follow these steps:
git branch *nameofbranch* --- Make a new branch
git checkout *nameofbranch* --- Switch to branch
git push origin *nameofbranch* --- push files to a branch
git pull origin *nameofbranch* --- retrieve files from a branch


We released our multi-year strategic plan today! Read the press release.
You can read the whole thing as a PDF or google doc. If you want a quick read, I pasted the executive summary below. You can also track details on our progress on our timeline of activities (google spreadsheet).
(And PS - we added a resources page to the blog where we’ll blog-post all of our documents - reuse, re-purpose, critique!)
Executive Summary
San Francisco has been a leader in open data. As one of the first cities with an open data policy, we helped fuel a movement that has spread across the country and the world. Open data can serve as a platform to 1) change how we use, share and consume government data - externally and internally; 2) transform data into services; and 3) foster continuous improvement in decision-making and the business of government.

Need to Evolve.
But this plan demonstrates the need to evolve and mature our approach. Not only do we need to reinvigorate our program and release more data, we need to evolve our work to support the use of data in decision-making. To transform our initiative into a program, our strategic plan is designed to build the elements of an institutional approach to open data and data use more generally. The goals and strategies for year 1 lay out a framework for how we can grow, mature, and sustain our program to align our activities and resources with the expectations of the open data policy. In achieving these goals and strategies, we can fulfill our mission of enabling use of the City’s data thereby fostering an ecosystem of data-enabled management, services, and decisions.
Timing and Resources.
Our strategic plan is ambitious and reflects a vision of what we hope to accomplish over time. We do not expect to be able to deliver on all aspects of our strategic vision in year 1. However, by fully articulating our vision, we are better able to prioritize and allocate our resources and identify where we need key partners to help execute on our goals. Moreover, this plan recognizes that each of our goals are multi-year goals and that a great deal of work is already happening throughout the City. This plan helps us stitch together an overarching vision of how these efforts align, where the role of open data fits in, and how we can move forward to enable use of data.
While we expect our strategic goals to change over time, we believe the goals in this plan will be in place for the next three years. The Office of the Chief Data Officer (OCDO) will be focused on Goals 1, 2 and 6 in year 1, in conjunction with key partners and the departments themselves. In year 1, OCDO work on goals 3, 4, and 5 is focused on leveraging key partnerships or pursuing strategies that will inform future work. Section 6 and Appendix D include more details.
| Goals | Supporting Strategies |
|---|---|
| Goal 1. Increase number and timeliness of datasets on DataSF | Why this matters. To enable the use of data we must first make it available. We need to ensure that we are publishing the City’s data when allowed and in a timely way. We will:

|
| Goal 2. Improve the usability of DataSF | Why this matters. To ensure that our open data is readily accessible and used, we need to make sure that our data website and the means of accessing the data support the needs of users. We will:

|
| Goal 3. Improve the usability, quality and consistency of our data | Why this matters. While Goals 1 and 2 help provide access to the City’s data, the ultimate value of the data depends on its usability, quality, and consistency. We will:

|
| Goal 4. Enable use of confidential data, while appropriately protecting it | Why this matters. While the City needs to appropriately protect confidential data, we also need to enable better access to and use of this data for cross-department data sharing. We will:

|
| Goal 5. Support increased use of data in decision-making | Why this matters. Once data is available, we need to use it. We need to match the availability of data with the capacity to use data, both in terms of people and technology. We will:

|
| Goal 6. Identify and foster innovations in open data and data use | Why this matters. The pace of change in the open data, analytics, and visualization spaces is breathtaking. We need to identify and nurture innovation in order to ensure that the City benefits. We will:

|
*Indicates need for resources or activities beyond the OCDO (e.g. key partnerships, department effort, volunteers etc).


Learn Darklight
Customize Waterloo Learn interface
Waterloo Autolog
Automatic login for multiple campus systems
Quest Raspberry
Modern new theme for UWaterloo Quest


Structure learning¶
With structure learning we can estimate a DAG that captures the dependencies between the variables in the data set. However, realize that the search space of DAGs is super-exponential in the number of variables and you may end up in finding a local maxima. Commonly used scoring functions to measure the fit between model and data are Bayesian Dirichlet scores such as BDeu or K2 and the Bayesian Information Criterion (BIC, also called MDL). BDeu is dependent on an equivalent sample size. To learn model structure (a DAG) from a data set, there are three broad techniques:
Score-based structure learning:
Exhaustivesearch
Hillclimbsearch
Chow-liu
Tree-augmented Naive Bayes (TAN)
Constraint-based structure learning:
chi-square test
Hybrid structure learning:
The combination of both techniques (MMHC)
Exhaustivesearch¶
ExhaustiveSearch can be used to compute the score for every DAG and returns the best-scoring one. This search approach is only atractable for very small networks, and prohibits efficient local optimization algorithms to always find the optimal structure. Thus, identifiying the ideal structure is often not tractable. Despite these bad news, heuristic search strategies often yields good results. If only few nodes are involved (read: less than 5 or so).
Hillclimbsearch¶
Once more nodes are involved, one needs to switch to heuristic search. HillClimbSearch implements a greedy local search that starts from the DAG “start” (default: disconnected DAG) and proceeds by iteratively performing single-edge manipulations that maximally increase the score. The search terminates once a local maximum is found.
Constraint-based¶
A different, but quite straightforward approach to build a DAG from data is to identify independencies in the data set using hypothesis tests, such as chi2 test statistic. The p_value of the test, and a heuristig flag that indicates if the sample size was sufficient. The p_value is the probability of observing the computed chi2 statistic (or an even higher chi2 value), given the null hypothesis that X and Y are independent given Zs. This can be used to make independence judgements, at a given level of significance.
Hypothesis tests
Construct DAG (pattern) according to identified independencies (Conditional) Independence Tests
Independencies in the data can be identified using chi2 conditional independence tests.
Chow-liu¶
The Chow-Liu Algorithm is a Tree search based approach. The Chow-Liu algorithm finds the maximum-likelihood tree structure where each node has at most one parent. Note that here our score is simply the maximum likelihood, we do not need to penalize the complexity since we are already limiting complexity by restricting ourselves to tree structures[1].
The algorithm has three steps:
Compute the mutual information for all pairs of variables X,U. This function measures how much information U provides about X
Find the maximum weight spanning tree: the maximal-weight tree that connects all vertices in a graph. This can be found using Kruskal or Prim Algorithms
Pick any node to be the root variable, and assign directions radiating outward from this node (arrows go away from it). This step transforms the resulting undirected tree to a directed one.
Tree-augmented Naive Bayes (TAN)¶
Tree augmented naive Bayes or TAN is a semi-naive Bayesian Learning method. It relaxes the naive Bayes attribute independence assumption by employing a tree structure, in which each attribute only depends on the class and one other attribute. A maximum weighted spanning tree that maximizes the likelihood of the training data is used to perform classification [2].
The algorithm has three steps:
Approximate the dependencies among features with a tree Bayes net.
- Tree induction algorithm
Optimality: Maximum likelihood tree
Efficiency: Polynomial algorithm
Robust parameter estimation
Example Structure learning (general)¶
A different, but quite straightforward approach to build a DAG from data is to identify independencies in the data set using hypothesis tests, such as chi2 test statistic. The p_value of the test, and a heuristic flag that indicates if the sample size was sufficient. The p_value is the probability of observing the computed chi2 statistic (or an even higher chi2 value), given the null hypothesis that X and Y are independent given Zs. This can be used to make independence judgements, at a given level of significance.
Example Structure learning (1)¶
For this example, we will be investigating the sprinkler data set. This is a very simple data set with 4 variables and each variable can contain value [1] or [0]. The question we can ask: What are the relationships and dependencies across the variables? Note that his data set is already pre-processed and no missing values are present.
Let’s bring in our dataset.
import bnlearn
df = bnlearn.import_example()
df.head()
Cloudy |
Sprinkler |
Rain |
Wet_Grass |
|---|---|---|---|
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
… |
… |
… |
… |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
From the bnlearn library, we’ll need the fit
for this exercise:
model = bnlearn.structure_learning.fit(df)
G = bnlearn.plot(model)
We can specificy the method and scoring type. As described previously, some methods are more expensive to run then others. Make the decision on the number of variables, hardware in your machine, time you are willing to wait etc
Method types:
hillclimbsearch or hc (greedy local search if many more nodes are involved)
exhaustivesearch or ex (exhaustive search for very small networks)
constraintsearch or cs (Constraint-based Structure Learning by first identifing independencies in the data set using hypothesis test, chi2)
Scoring types:
bic
k2
bdeu
model_hc_bic = bnlearn.structure_learning.fit(df, methodtype='hc', scoretype='bic')
model_hc_k2 = bnlearn.structure_learning.fit(df, methodtype='hc', scoretype='k2')
model_hc_bdeu = bnlearn.structure_learning.fit(df, methodtype='hc', scoretype='bdeu')
model_ex_bic = bnlearn.structure_learning.fit(df, methodtype='ex', scoretype='bic')
model_ex_k2 = bnlearn.structure_learning.fit(df, methodtype='ex', scoretype='k2')
model_ex_bdeu = bnlearn.structure_learning.fit(df, methodtype='ex', scoretype='bdeu')
Example Structure learning (2)¶
Lets learn the structure of a more complex data set and compare it to another one.
import bnlearn
# Load asia DAG
model_true = bnlearn.import_DAG('asia')
# plot ground truth
G = bnlearn.plot(model_true)
# Sampling
df = bnlearn.sampling(model_true, n=10000)
# Structure learning of sampled dataset
model_learned = bnlearn.structure_learning.fit(df, methodtype='hc', scoretype='bic')
# Plot based on structure learning of sampled data
bnlearn.plot(model_learned, pos=G['pos'])
# Compare networks and make plot
bnlearn.compare_networks(model_true, model_learned, pos=G['pos'])
References 1. https://ermongroup.github.io/cs228-notes/learning/structure/ 2. https://doi.org/10.1007/978-0-387-30164-8_850


| Ticket ID: 409788 | |
| Name: |
Parker Seidel
|
| Email: |
<EMAIL_ADDRESS>|
| Response Time: |
72hours, 60hours left |
| Last Action: |
Never been locked. Link to public post |
| Status: |
Not answered |


Datasets
Sample datasets included in this package.
|
|
df.al_12_2005_prblty
|
Strike probabilities for Hurricane Katrina (AL122005) |
|
df.al_18_2012_fstadv
|
Forecast/Advisory for Hurricane Sandy (AL182012) |
|
df.al_18_2012_wndprb
|
Wind speed probabilities for Hurricane Sandy (AL182012) |
|
df.al_18_2012
|
Forecast/Advisory and Wind Speed Probabilities for Hurricane Sandy (AL182012) |
|
df.al_2012
|
Atlantic cyclones for 2012 |
|
df.gis_adv
|
GIS advisory dataset for Hurricane Sandy Adv 18 |
|
df.gis_storm_surge
|
GIS storm surge shapefile dataset for Hurricane Sandy (AL182012) |
|
df.gis_wind_radii
|
GIS windfield and forecast wind radii for Hurricane Sandy (AL182012) |
|
df.gis_wsp
|
GIS wind speed probabilities for Hurricane Sandy (AL182012) |


Data Science & Data Engineering
3 levels of dirt:
- Data Manager (no dirt)
- Data Scientist (gets her hands dirty in the data)
- Data Engineer (dirt around the clock)
http://drewconway.com/zia/2013/3/26/the-data-science-venn-diagram
Texts
TODO
Apache NiFi (Niagra Falls) https://nifi.apache.org => ???


Country Game
Name
Money
Debt
Territory Controlled
{{Name}}
{{Money}}
{{Debt}}
{{Territory controlled}}


10.89. Release 0.54
Restore binding for the node resource on the coordinator, which provides the state of all nodes as seen by the coordinator’s failure detector. Access /v1/node to see all nodes, or /v1/node/failed to see failed nodes.
Prevent the Command Line Interface from hanging when the server goes away.
Add Hive connector hive-hadoop1 for Apache Hadoop 1.x.
Add support for Snappy and LZ4 compression codecs for the hive-cdh4 connector.
Add Example HTTP connector example-http that reads CSV data via HTTP. The connector requires a metadata URI that returns a JSON document describing the table metadata and the CSV files to read.
Its primary purpose is to serve as an example of how to write a connector, but it can also be used directly. Create etc/catalog/example.properties with the following contents to mount the example-http connector as the example catalog:
connector.name=example-http metadata-uri=http://s3.amazonaws.com/presto-example/v1/example-metadata.json
Show correct error message when a catalog or schema does not exist.
Verify JVM requirements on startup.
Log an error when the JVM code cache is full.
Upgrade the embedded Discovery server to allow using non-UUID values for the node.id property.


filmcritic.com presents a review from staff member James Brundage. You can find the review with full credits at http://filmcritic.com/misc/emporium.nsf/60e74e041ca9cd6b8625626f0062219f/4650ea226b8fd7108825696b0058451e?OpenDocument
THE ROCKY HORROR PICTURE SHOW A film review by James Brundage Copyright 2000 Filmcritic.com filmcritic.com
Well here we are, doing the time warp again.
Celebrating 25 years of making high-schoolers giddy with its debauchery and high camp, The Rocky Horror Picture Show is back with a 25th Anniversary two-disc DVD edition, complete with deleted scenes, outtakes, interviews, and an audience participation track.
But never mind the extra scenes: Nobody sees Rocky Horror out of some longing for a deeper meaning. We see it because it's a messed up film, and every once in a while its fun to just sit back, go wild, dress up in garters and watch a messed up movie.
Umů. Forget that thing about dressing up in garters.
For those unfamiliar with Rocky Horror, the film concerns the creation of a oversexed Frankenstein by the name of Rocky for the sole purpose of being a lovetoy for sexually ambiguous transvestite Dr. Frank-n-Furter (Tim Curry). Frankie's a little crazy, so he invites motorcycle gangs to party, murders people in public, eats food on their corpses, and begins singing and dancing funny rock musical numbers. Witnessing this are Brad (Barry Bostwick) and Janet (Susan Surrandon), two recently-engaged youngsters living in the shadow of the 70s. This bizarre combination leads to some of the most fucked-up musical numbers you'll ever hear outside of the parody songs you sing to yourself in the shower and a generally enjoyable film.
Rocky Horror was pretty purely brain candy when it came out, and it remains that way to present day, extras or no. If you haven't already, you should definitely see it, if only so that you will no longer be considered a virgin in the eyes of fanatics. But as for all this extra junk? Just give me a simple sweet transvestite and forget about all the rest of it.
RATING: ****1/2
|----------------------------------| \ ***** Perfection \ \ **** Good, memorable film \ \ *** Average, hits and misses \ \ ** Sub-par on many levels \ \ * Unquestionably awful \ |--------------------------------------|
MPAA Rating: R
Director: Jim Sharman Producer: Michael White Writer: Jim Sharman and Richard O'Brien Starring: Tim Curry, Susan Surrandon, Barry Bostwick, Richard O'Brien, Patricia Quinn, Nell Campbell, Jonathan Adams, Peter Hinwood, Meatloaf, and Charles Gray
--
http://www.amazon.com/exec/obidos/redirect?tag=filmcriticcom&path=subst/video/sellers/amazon-top-100-dvd.html Movie Fiends: Check out Amazon.com's Top 100 Hot DVDs!
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Tabs
Home
Profile
Messages
Settings
Home
Profile
Messages
Settings
mui-tabs-justified
Home
Profile
Messages
Settings
Home
Profile
Messages
Settings


XMODMAP(1) XMODMAP(1) NAME xmodmap - utility for modifying keymaps and pointer button mappings in X SYNOPSIS xmodmap [-options ...] [filename] DESCRIPTION The xmodmap program is used to edit and display the keyboard modifier map and keymap table that are used by client applications to convert event keycodes into keysyms. It is usually run from the user's session startup script to configure the keyboard according to personal tastes. OPTIONS The following options may be used with xmodmap: -display display This option specifies the host and display to use. -help This option indicates that a brief description of the command line arguments should be printed on the standard error channel. This will be done whenever an unhandled argument is given to xmodmap. -grammar This option indicates that a help message describing the expres‐ sion grammar used in files and with -e expressions should be printed on the standard error. -verbose This option indicates that xmodmap should print logging informa‐ tion as it parses its input. -quiet This option turns off the verbose logging. This is the default. -n This option indicates that xmodmap should not change the map‐ pings, but should display what it would do, like make(1) does when given this option. -e expression This option specifies an expression to be executed. Any number of expressions may be specified from the command line. -pm This option indicates that the current modifier map should be printed on the standard output. This is the default mode of operation if no other mode options are specified. -pk This option indicates that the current keymap table should be printed on the standard output. -pke This option indicates that the current keymap table should be printed on the standard output in the form of expressions that can be fed back to xmodmap. -pp This option indicates that the current pointer map should be printed on the standard output. - A lone dash means that the standard input should be used as the input file. The filename specifies a file containing xmodmap expressions to be exe‐ cuted. This file is usually kept in the user's home directory with a name like .xmodmaprc. EXPRESSION GRAMMAR The xmodmap program reads a list of expressions and parses them all before attempting to execute any of them. This makes it possible to refer to keysyms that are being redefined in a natural way without having to worry as much about name conflicts. The list of keysym names may be found in the header file <X11/keysymdef.h> (without the XK_ prefix), supplemented by the keysym database /usr/share/X11/XKeysymDB. Keysyms matching Unicode characters may be specified as "U0020" to "U007E" and "U00A0" to "U10FFFF" for all possible Unicode characters. keycode NUMBER = KEYSYMNAME ... The list of keysyms is assigned to the indicated keycode (which may be specified in decimal, hex or octal and can be determined by running the xev program). Up to eight keysyms may be attached to a key, however the last four are not used in any major X server implementation. The first keysym is used when no modifier key is pressed in conjunction with this key, the second with Shift, the third when the Mode_switch key is used with this key and the fourth when both the Mode_switch and Shift keys are used. keycode any = KEYSYMNAME ... If no existing key has the specified list of keysyms assigned to it, a spare key on the keyboard is selected and the keysyms are assigned to it. The list of keysyms may be specified in decimal, hex or octal. keysym KEYSYMNAME = KEYSYMNAME ... The KEYSYMNAME on the left hand side is translated into matching keycodes used to perform the corresponding set of keycode expres‐ sions. Note that if the same keysym is bound to multiple keys, the expression is executed for each matching keycode. clear MODIFIERNAME This removes all entries in the modifier map for the given modi‐ fier, where valid name are: Shift, Lock, Control, Mod1, Mod2, Mod3, Mod4, and Mod5 (case does not matter in modifier names, although it does matter for all other names). For example, ``clear Lock'' will remove all any keys that were bound to the shift lock modifier. add MODIFIERNAME = KEYSYMNAME ... This adds all keys containing the given keysyms to the indicated modifier map. The keysym names are evaluated after all input expressions are read to make it easy to write expressions to swap keys (see the EXAMPLES section). remove MODIFIERNAME = KEYSYMNAME ... This removes all keys containing the given keysyms from the indi‐ cated modifier map. Unlike add, the keysym names are evaluated as the line is read in. This allows you to remove keys from a modifier without having to worry about whether or not they have been reassigned. pointer = default This sets the pointer map back to its default settings (button 1 generates a code of 1, button 2 generates a 2, etc.). pointer = NUMBER ... This sets the pointer map to contain the indicated button codes. The list always starts with the first physical button. Setting a button code to 0 disables events from that button. Lines that begin with an exclamation point (!) are taken as comments. If you want to change the binding of a modifier key, you must also remove it from the appropriate modifier map. EXAMPLES Many pointers are designed such that the first button is pressed using the index finger of the right hand. People who are left-handed fre‐ quently find that it is more comfortable to reverse the button codes that get generated so that the primary button is pressed using the index fin‐ ger of the left hand. This could be done on a 3 button pointer as fol‐ lows: % xmodmap -e "pointer = 3 2 1" Many applications support the notion of Meta keys (similar to Control keys except that Meta is held down instead of Control). However, some servers do not have a Meta keysym in the default keymap table, so one needs to be added by hand. The following command will attach Meta to the Multi-language key (sometimes labeled Compose Character). It also takes advantage of the fact that applications that need a Meta key simply need to get the keycode and don't require the keysym to be in the first column of the keymap table. This means that applications that are looking for a Multi_key (including the default modifier map) won't notice any change. % xmodmap -e "keysym Multi_key = Multi_key Meta_L" Similarly, some keyboards have an Alt key but no Meta key. In that case the following may be useful: % xmodmap -e "keysym Alt_L = Meta_L Alt_L" One of the more simple, yet convenient, uses of xmodmap is to set the keyboard's "rubout" key to generate an alternate keysym. This frequently involves exchanging Backspace with Delete to be more comfortable to the user. If the ttyModes resource in xterm is set as well, all terminal emulator windows will use the same key for erasing characters: % xmodmap -e "keysym BackSpace = Delete" % echo "XTerm*ttyModes: erase ^?" | xrdb -merge Some keyboards do not automatically generate less than and greater than characters when the comma and period keys are shifted. This can be reme‐ died with xmodmap by resetting the bindings for the comma and period with the following scripts: ! ! make shift-, be < and shift-. be > ! keysym comma = comma less keysym period = period greater One of the more irritating differences between keyboards is the location of the Control and Shift Lock keys. A common use of xmodmap is to swap these two keys as follows: ! ! Swap Caps_Lock and Control_L ! remove Lock = Caps_Lock remove Control = Control_L keysym Control_L = Caps_Lock keysym Caps_Lock = Control_L add Lock = Caps_Lock add Control = Control_L This example can be run again to swap the keys back to their previous assignments. The keycode command is useful for assigning the same keysym to multiple keycodes. Although unportable, it also makes it possible to write scripts that can reset the keyboard to a known state. The following script sets the backspace key to generate Delete (as shown above), flushes all existing caps lock bindings, makes the CapsLock key be a con‐ trol key, make F5 generate Escape, and makes Break/Reset be a shift lock. ! !  SEE ALSO X(7), xev(1), setxkbmap(1), XStringToKeysym(3), Xlib documentation on key and pointer events BUGS Every time a keycode expression is evaluated, the server generates a Map‐ pingNotify event on every client. This can cause some thrashing. All of the changes should be batched together and done at once. Clients that receive keyboard input and ignore MappingNotify events will not notice any changes made to keyboard mappings. Xmodmap should generate "add" and "remove" expressions automatically whenever a keycode that is already bound to a modifier is changed. There should be a way to have the remove expression accept keycodes as well as keysyms for those times when you really mess up your mappings. AUTHOR Jim Fulton, MIT X Consortium, rewritten from an earlier version by David Rosenthal of Sun Microsystems. X Version 11 xmodmap 1.0.7 XMODMAP(1)


Gmail-to-Trello Extension Options
Enable debug mode
Due shortcuts:
Due shortcuts
Default
Save
↑
This is the options screen.
←
The main Gmail-to-Trello button is at the top of the Gmail view, next to the "More" button.
version


Why SVG Is the Future of Web Graphics?
What Is SVG?
Scalable Vector Graphics
SVG is an XML-based vector graphic format used to display a wide range of graphics on the Web.
SVG documents are just plain text files and can be created and edited in every text editor.
SVG Is Future-Proof
As long as the W3C sets the global industry standards, it seems that SVG will continue to be the de-facto standard for vector graphics in the browser.
SVG is a W3C standard. This makes SVG future-proof. Technologies are rapidly changing. What’s here today could be gone tomorrow. But SVG will most likely be around for a long time.
SVG Is the Best Graphic Format for Web
What makes SVG so preferable for Web is its remarkable usefulness and unlimited flexibility. It's the only one graphic format which most closely and completely responds to the current web development demands such as scalability, responsibility, interactivity, programmability, and accessibility.
As a graphic format SVG perfectly suits the Web needs because it satisfies both designers and developers. An illustration can be easily created by a designer with any vector software, and then, the exported SVG can be transferred to a developer who can add animation or some other interactivity.
SVG Usage Is Growing
Over the last year SVG usage has doubled.
As of 2014 SVG usage is growing continuously (image below) and it has doubled over the last year (right image).
SVG Solves the Most Important Problems in Modern Web Development
SVG Has Very Good Browser Support
The browser support for SVG is 97% and above
SVG Has Many Different Use Cases
SVG Workflow Is Straightforward
-
01. Draw
Draw a graphic in vector editing program such as Adobe Illustrator
-
02. Export
Export the drawing as a SVG file
-
03. Optimize
Further optimize the exported SVG with tool such as SVGO (if needed)
-
04. Use
Use the final SVG file on a website


Publisher
extends FileCollection
in package
Publishers read in file paths from a variety of sources and copy the files out to different destinations. This class acts both as a base for individual publication directives as well as the mode of discovery for said instances. In this class a "file" is a full path to a verified file while a "path" is relative to its source or destination and may indicate either a file or directory of unconfirmed existence.
Class failures throw the PublisherException, but some underlying methods may percolate different exceptions, like FileException, FileNotFoundException or InvalidArgumentException.
Write operations will catch all errors in the file-specific $errors property to minimize impact of partial batch operations.
Table of Contents
Properties
- $destination : string
- Base path to use for the destination.
- $files : array<string|int, string>
- The current list of file paths.
- $source : string
- Base path to use for the source.
- $discovered : array<string, array<string|int, self>|null>
- Array of discovered Publishers.
- $errors : array<string, Throwable>
- Exceptions for specific files from the last write operation.
- $published : array<string|int, string>
- List of file published curing the last write operation.
- $replacer : ContentReplacer
- $restrictions : array<string, string>
- List of allowed directories and their allowed files regex.
- $scratch : string|null
- Directory to use for methods that need temporary storage.
Methods
- __construct() : mixed
- Loads the helper and verifies the source and destination directories.
- __destruct() : mixed
- Cleans up any temporary files in the scratch space.
- add() : $this
- Adds an array/single file or directory to the list.
- addDirectories() : $this
- Verifies and adds files from each directory to the list.
- addDirectory() : $this
- Verifies and adds all files from a directory.
- addFile() : $this
- Verifies and adds a single file to the file list.
- addFiles() : $this
- Verifies and adds files to the list.
- addLineAfter() : bool
- Add line after the line with the string
- addLineBefore() : bool
- Add line before the line with the string
- addPath() : $this
- Adds a single path to the file list.
- addPaths() : $this
- Verifies and adds paths to the list.
- addUri() : $this
- Downloads a file from the URI, and adds it to the file list.
- addUris() : $this
- Downloads and stages files from an array of URIs.
- copy() : bool
- Copies all files into the destination, does not create directory structure.
- count() : int
- Returns the current number of files in the collection.
- discover() : array<string|int, self>
- Discovers and returns all Publishers in the specified namespace directory.
- get() : array<string|int, string>
- Optimizes and returns the current file list.
- getDestination() : string
- Returns the destination directory.
- getErrors() : array<string, Throwable>
- Returns errors from the last write operation if any.
- getIterator() : Generator<string|int, File>
- Yields as an Iterator for the current files.
- getPublished() : array<string|int, string>
- Returns the files published by the last write operation.
- getScratch() : string
- Returns the temporary workspace, creating it if necessary.
- getSource() : string
- Returns the source directory.
- merge() : bool
- Merges all files into the destination.
- publish() : bool
- Reads files from the sources and copies them out to their destinations.
- removeFile() : $this
- Removes a single file from the list.
- removeFiles() : $this
- Removes files from the list.
- removePattern() : $this
- Removes any files from the list that match the supplied pattern (within the optional scope).
- replace() : bool
- Replace content
- retainPattern() : $this
- Keeps only the files from the list that match (within the optional scope).
- set() : $this
- Sets the file list directly, files are still subject to verification.
- wipe() : $this
- Removes the destination and all its files and folders.
- define() : void
- Applies any initial inputs after the constructor.
- filterFiles() : array<string|int, string>
- Removes files that are not part of the given directory (recursive).
- matchFiles() : array<string|int, string>
- Returns any files whose `basename` matches the given pattern.
- resolveDirectory() : string
- Resolves a full path and verifies it is an actual directory.
- resolveFile() : string
- Resolves a full path and verifies it is an actual file.
- safeCopyFile() : void
- Copies a file with directory creation and identical file awareness.
- verifyAllowed() : void
- Verify this is an allowed file for its destination.
- wipeDirectory() : void
- Removes a directory and all its files and subdirectories.
Properties
$destination
Base path to use for the destination.
protected
string
$destination
= FCPATH
$files
The current list of file paths.
protected
array<string|int, string>
$files
= []
$source
Base path to use for the source.
protected
string
$source
= ROOTPATH
$discovered
Array of discovered Publishers.
private
static array<string, array<string|int, self>|null>
$discovered
= []
$errors
Exceptions for specific files from the last write operation.
private
array<string, Throwable>
$errors
= []
$published
List of file published curing the last write operation.
private
array<string|int, string>
$published
= []
$replacer
private
ContentReplacer
$replacer
$restrictions
List of allowed directories and their allowed files regex.
private
array<string, string>
$restrictions
Restrictions are intentionally private to prevent overriding.
$scratch
Directory to use for methods that need temporary storage.
private
string|null
$scratch
= null
Created on-the-fly as needed.
Methods
__construct()
Loads the helper and verifies the source and destination directories.
public
__construct([string|null $source = null ][, string|null $destination = null ]) : mixed
Parameters
- $source : string|null = null
- $destination : string|null = null
__destruct()
Cleans up any temporary files in the scratch space.
public
__destruct() : mixed
add()
Adds an array/single file or directory to the list.
public
add(string|array<string|int, string> $paths[, bool $recursive = true ]) : $this
Parameters
- $paths : string|array<string|int, string>
- $recursive : bool = true
Return values
$thisaddDirectories()
Verifies and adds files from each directory to the list.
public
addDirectories(array<string|int, string> $directories[, bool $recursive = false ]) : $this
Parameters
- $directories : array<string|int, string>
- $recursive : bool = false
Return values
$thisaddDirectory()
Verifies and adds all files from a directory.
public
addDirectory(string $directory[, bool $recursive = false ]) : $this
Parameters
- $directory : string
- $recursive : bool = false
Return values
$thisaddFile()
Verifies and adds a single file to the file list.
public
addFile(string $file) : $this
Parameters
- $file : string
Return values
$thisaddFiles()
Verifies and adds files to the list.
public
addFiles(array<string|int, string> $files) : $this
Parameters
- $files : array<string|int, string>
Return values
$thisaddLineAfter()
Add line after the line with the string
public
addLineAfter(string $file, string $line, string $after) : bool
Parameters
- $file : string
- $line : string
- $after : string
-
String to search.
Return values
booladdLineBefore()
Add line before the line with the string
public
addLineBefore(string $file, string $line, string $before) : bool
Parameters
- $file : string
- $line : string
- $before : string
-
String to search.
Return values
booladdPath()
Adds a single path to the file list.
public
final addPath(string $path[, bool $recursive = true ]) : $this
Parameters
- $path : string
- $recursive : bool = true
Return values
$thisaddPaths()
Verifies and adds paths to the list.
public
final addPaths(array<string|int, string> $paths[, bool $recursive = true ]) : $this
Parameters
- $paths : array<string|int, string>
- $recursive : bool = true
Return values
$thisaddUri()
Downloads a file from the URI, and adds it to the file list.
public
final addUri(string $uri) : $this
Parameters
- $uri : string
-
Because HTTP\URI is stringable it will still be accepted
Return values
$thisaddUris()
Downloads and stages files from an array of URIs.
public
final addUris(array<string|int, string> $uris) : $this
Parameters
- $uris : array<string|int, string>
Return values
$thiscopy()
Copies all files into the destination, does not create directory structure.
public
final copy([bool $replace = true ]) : bool
Parameters
- $replace : bool = true
-
Whether to overwrite existing files.
Return values
bool —Whether all files were copied successfully
count()
Returns the current number of files in the collection.
public
count() : int
Fulfills Countable.
Return values
intdiscover()
Discovers and returns all Publishers in the specified namespace directory.
public
final static discover([string $directory = 'Publishers' ]) : array<string|int, self>
Parameters
- $directory : string = 'Publishers'
Return values
array<string|int, self>get()
Optimizes and returns the current file list.
public
get() : array<string|int, string>
Return values
array<string|int, string>getDestination()
Returns the destination directory.
public
final getDestination() : string
Return values
stringgetErrors()
Returns errors from the last write operation if any.
public
final getErrors() : array<string, Throwable>
Return values
array<string, Throwable>getIterator()
Yields as an Iterator for the current files.
public
getIterator() : Generator<string|int, File>
Fulfills IteratorAggregate.
Tags
Return values
Generator<string|int, File>getPublished()
Returns the files published by the last write operation.
public
final getPublished() : array<string|int, string>
Return values
array<string|int, string>getScratch()
Returns the temporary workspace, creating it if necessary.
public
final getScratch() : string
Return values
stringgetSource()
Returns the source directory.
public
final getSource() : string
Return values
stringmerge()
Merges all files into the destination.
public
final merge([bool $replace = true ]) : bool
Creates a mirrored directory structure only for files from source.
Parameters
- $replace : bool = true
-
Whether to overwrite existing files.
Return values
bool —Whether all files were copied successfully
publish()
Reads files from the sources and copies them out to their destinations.
public
publish() : bool
This method should be reimplemented by child classes intended for discovery.
Tags
Return values
boolremoveFile()
Removes a single file from the list.
public
removeFile(string $file) : $this
Parameters
- $file : string
Return values
$thisremoveFiles()
Removes files from the list.
public
removeFiles(array<string|int, string> $files) : $this
Parameters
- $files : array<string|int, string>
Return values
$thisremovePattern()
Removes any files from the list that match the supplied pattern (within the optional scope).
public
removePattern(string $pattern[, string|null $scope = null ]) : $this
Parameters
- $pattern : string
-
Regex or pseudo-regex string
- $scope : string|null = null
-
The directory to limit the scope
Return values
$thisreplace()
Replace content
public
replace(string $file, array<string|int, mixed> $replaces) : bool
Parameters
- $file : string
- $replaces : array<string|int, mixed>
-
[search => replace]
Return values
boolretainPattern()
Keeps only the files from the list that match (within the optional scope).
public
retainPattern(string $pattern[, string|null $scope = null ]) : $this
Parameters
- $pattern : string
-
Regex or pseudo-regex string
- $scope : string|null = null
-
A directory to limit the scope
Return values
$thisset()
Sets the file list directly, files are still subject to verification.
public
set(array<string|int, string> $files) : $this
This works as a "reset" method with [].
Parameters
- $files : array<string|int, string>
-
The new file list to use
Return values
$thiswipe()
Removes the destination and all its files and folders.
public
final wipe() : $this
Return values
$thisdefine()
Applies any initial inputs after the constructor.
protected
define() : void
This method is a stub to be implemented by child classes.
filterFiles()
Removes files that are not part of the given directory (recursive).
protected
final static filterFiles(array<string|int, string> $files, string $directory) : array<string|int, string>
Parameters
- $files : array<string|int, string>
- $directory : string
Return values
array<string|int, string>matchFiles()
Returns any files whose `basename` matches the given pattern.
protected
final static matchFiles(array<string|int, string> $files, string $pattern) : array<string|int, string>
Parameters
- $files : array<string|int, string>
- $pattern : string
-
Regex or pseudo-regex string
Return values
array<string|int, string>resolveDirectory()
Resolves a full path and verifies it is an actual directory.
protected
final static resolveDirectory(string $directory) : string
Parameters
- $directory : string
Tags
Return values
stringresolveFile()
Resolves a full path and verifies it is an actual file.
protected
final static resolveFile(string $file) : string
Parameters
- $file : string
Tags
Return values
stringsafeCopyFile()
Copies a file with directory creation and identical file awareness.
private
safeCopyFile(string $from, string $to, bool $replace) : void
Intentionally allows errors.
Parameters
- $from : string
- $to : string
- $replace : bool
Tags
verifyAllowed()
Verify this is an allowed file for its destination.
private
verifyAllowed(string $from, string $to) : void
Parameters
- $from : string
- $to : string
wipeDirectory()
Removes a directory and all its files and subdirectories.
private
static wipeDirectory(string $directory) : void
Parameters
- $directory : string


I recently posted a shader pack which creates a cool “dissolve” (for lack of a better descriptor) effect, similar to the skin of Skyrim’s dragons during their death animation. As requested by reddit, this post detail exactly what you need to know to write one of these shaders yourself, and hopefully, provide you with a good base with which to modify my shaders to your specific needs. I’m going to attempt to start from square one and not assume any shader experience on your part, but it will probably help if you have a general idea of how to build a basic shader before hand.
Let’s get started.
The obvious first step here is to open up Unity and create a new shader. Unity is going to assume that you would like to create a surface shader, and pre-populate a lot of boiler plate code. Thanks Unity! Now, delete all of it and give yourself a nice, clean slate to work with.
Now that that’s cleaned up, start your shader with the lines:
Shader "MyDissolveShader"
{
Properties
{
}
SubShader
{
}
}
This is a bit of Unity specific structure; the “Properties” section will allow us to define which variables we want to expose in the inspector, while the “SubShader” section will hold the actual code used in our shader.
Ok, now let’s figure out exactly what we will need the user to define. Take another look at what the effect looks like:
First off, we’re going to need the user to tell us what texture the put on the mesh for its normal undissolved state. The convention with Unity shaders is to call this texture _MainTex. So let’s add that to our properties.
Shader "MyDissolveShader"
{
Properties
{
_MainTex("Main Texture", 2D) = "white"{}
}
SubShader
{
}
}
The new line in properties shows how to define a regular texture for the inspector. We are going to call this variable _MainTex in our code, so that goes first. The “Main Texture” string in the parentheses defines that we want the inspector to display as this variables name. The subsequent “2D” declares that this slot in the inspector will accept a 2D texture. The “values after the equals sign “white”{} after the equals sign just sets the default value of this field to a generic white texture.
Ok, so now that we’ve figured out how to declare a texture, what other textures will we need? For this shader, we’re not going to use bump maps, so the only other texture we need is something to define the shape of the dissolve effect. Let’s call that _DissolveMap.
Shader "MyDissolveShader"
{
Properties
{
_MainTex("Main Texture", 2D) = "white"{}
_DissolveMap("Dissolve Shape", 2D) = "white"{}
}
SubShader
{
}
}
Ok, aside from our textures we also need 2 floats to control the progress of the effect and size of the edge lines. However, we want to be able to control the range of these floats, so that our users don’t set them to values that are outside of what makes sense for our shader. One way of doing this is with the Range type. Any variables marked as type Range in the properties panel will display as a slider, that moves between the low and high values we define.
Finally, I’m going to add a Color variable to allow us to define what colour the edges of the effect are.
Shader "MyDissolveShader"
{
Properties
{
_MainTex("Main Texture", 2D) = "white"{}
_DissolveMap("Dissolve Shape", 2D) = "white"{}
_DissolveVal("Dissolve Value", Range(-0.2, 1.2)) = 1.2
_LineWidth("Line Width", Range(0.0, 0.2)) = 0.1
_LineColor("Line Color", Color) = (1.0, 1.0, 1.0, 1.0)
}
SubShader
{
}
}
One thing to note is that we want the range of the dissolve effect to be functionally between 0.0 and 1.0, but in order to account for the line width, we need to expand the range in both directions by the maximum size the lines can be, otherwise lines will show up when the mesh should have no dissolve applied, and when it should be completely transparent.
Ok perfect, so now that that’s taken care of, let’s move on the actually writing a shader!
So now we move down to the SubShader tag. We’re going to be writing a surface shader. Surface shaders are a unity specific type of shorthand that takes care of all the lighting specific shader code for you. It’s perfect for our purposes. What this also decides for us is that our shader needs to be written in CG (as opposed to glsl or hlsl).
The first things we need to do with our shader are tell Unity to expect CG code, and what variables we want our code to access from outside of the shader itself.
Shader "MyDissolveShader"
{
Properties
{
_MainTex("Main Texture", 2D) = "white"{}
_DissolveMap("Dissolve Shape", 2D) = "white"{}
_DissolveVal("Dissolve Value", Range(-0.2, 1.2)) = 1.2
_LineWidth("Line Width", Range(0.0, 0.2)) = 0.1
_LineColor("Line Color", Color) = (1.0, 1.0, 1.0, 1.0)
}
SubShader
{
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
sampler2D _DissolveMap;
float4 _LineColor;
float _DissolveVal;
float _LineWidth;
ENDCG
}
}
Most of this is hopefully self explanatory, but the one line that may not be is the #pragma… line. This is a surface shader specific pragma that tells unity that we want our model to be lit according to the Lamber lighting model (diffuse lighting). Behind the scenes, Unity will add the code necessary for this lighting model to our shader when it compiles.
The other lines added are just declarations of the data we’re getting from the inspector, so that our shader knows to use this data. It’s important that the variable names used here are exactly the same as the ones we used in the Properties section. The datatypes here are just the CG equivalents of the types we defined above (there’s no such thing as a Color type in CG, so colours are representing as a 4 element vector).
Now, let’s add the rest of the structural code we need in order for our shader to start taking shape.
Shader "MyDissolveShader"
{
Properties
{
_MainTex("Main Texture", 2D) = "white"{}
_DissolveMap("Dissolve Shape", 2D) = "white"{}
_DissolveVal("Dissolve Value", Range(-0.2, 1.2)) = 1.2
_LineWidth("Line Width", Range(0.0, 0.2)) = 0.1
_LineColor("Line Color", Color) = (1.0, 1.0, 1.0, 1.0)
}
SubShader
{
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
sampler2D _DissolveMap;
float4 _LineColor;
float _DissolveVal;
float _LineWidth;
struct Input
{
half2 uv_MainTex;
half2 uv_DissolveMap;
};
void surf (Input IN, inout SurfaceOutput o)
{
o.Albedo = float4(1.0, 1.0, 1.0, 1.0);
}
ENDCG
}
}
The Input struct defines what information we need to access about each vertex in the model being shaded. In this case, all we need are uv co-ordinates for each of the textures that we’re using. Defining these variables as “uv_” and then a texture name will automatically pull the correct uv’s for that texture.
The surface shader system will handle dealing with the position and normal variables as it needs to, but we don’t need to worry about that.
The surf function that I defined is just a boiler plate surface function. It takes the input we defined, and modifies a SurfaceOutput struct for Unity. This SurfaceOutput data will control what the fragment actually gets shaded as.
The o.Albedo line shows how to set the colour of a fragment. In this case, all we’re doing is assigning each fragment the color white. We’re going to modify this now. The next example will show how to set a fragment to the colour it should be to display _MainTex properly.
Shader "MyDissolveShader"
{
Properties
{
_MainTex("Main Texture", 2D) = "white"{}
_DissolveMap("Dissolve Shape", 2D) = "white"{}
_DissolveVal("Dissolve Value", Range(-0.2, 1.2)) = 1.2
_LineWidth("Line Width", Range(0.0, 0.2)) = 0.1
_LineColor("Line Color", Color) = (1.0, 1.0, 1.0, 1.0)
}
SubShader
{
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
sampler2D _DissolveMap;
float4 _LineColor;
float _DissolveVal;
float _LineWidth;
struct Input
{
half2 uv_MainTex;
half2 uv_DissolveMap;
};
void surf (Input IN, inout SurfaceOutput o)
{
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
half4 dissolve = tex2D(_DissolveMap, IN.uv_DissolveMap);
half4 clear = half4(0.0);
}
ENDCG
}
}
If you’ve worked at all with shaders before this should make sense, we’re looking for what colour is at the position in the texture defined by the uv for this position on the mesh. o.Albedo doesn’t set the alpha of our fragment, so we use .rgb to trim the alpha from this function.
I’ve gone ahead and defined a clear variable (this is a 4 element vector with r g b and a set to 0.0) and grabbed the color of this position in the dissolve map texture as well.
Now we need to get to the good stuff, how to decide whether a given fragment should be shaded with the main texture, the line color, or the clear color.
We’re going to decide how to shade each fragment based on the red channel of the dissolve map. If the red value of that texture is above the value of _DissolveVal, we are going to shade that fragment with the line colour. If it is above the value of _DissolveVal + _LineWidth, the fragment will be transparent.
In a regular script, this would usually be done with an if/else statement, but unfortunately shaders don’t do if/else flows that well. You’ll get the correct value, but the shader will end up executing the code for every possible outcome before choosing the correct value. It’s much faster (and more shader-y) to use lerp for this. Lerp will mix two values together based on a third float value (if this value is 0, we end up with 100% of value A, if this is 1, we get 100% of value B). Hopefully this sounds like an if statement to you as well.
We’re going to define an integer that will serve as our conditional. The first choice we need to make is whether or not we are transparent. As stated before, we are only transparent if the red value of dissolve is greater than DissolveValue + LineWidth.
void surf (Input IN, inout SurfaceOutput o)
{
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
half4 dissolve = tex2D(_DissolveMap, IN.uv_DissolveMap);
half4 clear = half4(0.0);
int isClear = int(dissolve.r - (_DissolveVal + _LineWidth) + 0.99);
int isAtLeastLine = int(dissolve.r - (_DissolveVal) + 0.99);
}
The two ints do what their name implies. isClear resolve to 0 if dissolve.r isn’t greater than _DissolvVal + _LineWidth and isAtLeastLine will be 0 if we should use the regular texture instead of using the line color or transparency.
Once we have those two values, the rest is pretty straight forward.
void surf (Input IN, inout SurfaceOutput o)
{
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
half4 dissolve = tex2D(_DissolveMap, IN.uv_DissolveMap);
half4 clear = half4(0.0);
int isClear = int(dissolve.r - (_DissolveVal + _LineWidth) + 0.99);
int isAtLeastLine = int(dissolve.r - (_DissolveVal) + 0.99);
half4 altCol = lerp(_LineColor, clear, isClear);
o.Albedo = lerp(o.Albedo, altCol, isAtLeastLine);
}
In case it isn’t clear, the 2 lines we just added choose whether or not the alt color is clear or the line color, and then choose whether or not we should use the main texture, or the alt color.
We’re almost done! If you switch over to Unity now you might notice that nothing is really going transparent, it’s just going black. This is because we haven’t yet told Unity that this will be a transparent shader. Because of the order things are rendered, you need to explicitly tell Unity when a shader will draw transparent fragments. Luckily this is a pretty simple addition to the top of the shader.
Shader "MyDissolveShader"
{
Properties
{
_MainTex("Main Texture", 2D) = "white"{}
_DissolveMap("Dissolve Shape", 2D) = "white"{}
_DissolveVal("Dissolve Value", Range(-0.2, 1.2)) = 1.2
_LineWidth("Line Width", Range(0.0, 0.2)) = 0.1
_LineColor("Line Color", Color) = (1.0, 1.0, 1.0, 1.0)
}
SubShader
{
Tags{ "Queue" = "Transparent"}
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
sampler2D _DissolveMap;
float4 _LineColor;
float _DissolveVal;
float _LineWidth;
struct Input
{
half2 uv_MainTex;
half2 uv_DissolveMap;
};
void surf (Input IN, inout SurfaceOutput o)
{
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
half4 dissolve = tex2D(_DissolveMap, IN.uv_DissolveMap);
half4 clear = half4(0.0);
int isClear = int(dissolve.r - (_DissolveVal + _LineWidth) + 0.99);
int isAtLeastLine = int(dissolve.r - (_DissolveVal) + 0.99);
half4 altCol = lerp(_LineColor, clear, isClear);
o.Albedo = lerp(o.Albedo, altCol, isAtLeastLine);
o.Alpha = lerp(1.0, 0.0, isClear);
}
ENDCG
}
}
It takes 3 lines to make the shader transparent. The Tags.. line tells Unity to render objects using this shader when it renders transparent geometry and the Blend line defines how our transparency behaves. The one above tells our shader to use alpha blending (as opposed to being additive, or multiplicative transparency). Finally the o.Alpha… line defines the transparency of the fragment being shaded.
Put all together, you have the Dissolve Diffuse shader from my Dissolve Shader pack! Hopefully this tutorial was helpful. Shoot any feedback you have to me on Twitter. Happy shading!


Implements interfaces:
Twig_NodeVisitor_Escaper implements output escaping.
Located in /NodeVisitor/Escaper.php (line 19)
Called before child nodes are visited.
Called after child nodes are visited.
Documentation generated on Sun, 24 Oct 2010 20:29:19 +0200 by phpDocumentor 1.4.3


If arg is not eql to the integer 1, a lowercase s is printed; if arg is eql to 1, nothing is printed. If arg is a floating-point 1.0, the s is printed.
~:P does the same thing, after doing a ~:* to back up one argument; that is, it prints a lowercase s if the previous argument was not 1.
~@P prints y if the argument is 1, or ies if it is not. ~:@P does the same thing, but backs up first.
(format nil "~D tr~:@P/~D win~:P" 7 1) ⇒ "7 tries/1 win" (format nil "~D tr~:@P/~D win~:P" 1 0) ⇒ "1 try/0 wins" (format nil "~D tr~:@P/~D win~:P" 1 3) ⇒ "1 try/3 wins"


Tests that resources panel correctly shows mime type when it loads data from memory cache.
Bug 63701


 All rights reserved. Terms of use
.


projects
these are lots of projects i am currently working on our have worked on in the past
- garage gym
- a gym. in the garage. this is what equipment we added or removed and when. following semantic versioning
- september 2019 challenges
- a couple challenges i am taking on over september 2019, whether solo or with others
- style guide
- i wanted a style guide for myself. very much in progress
- summer of marvel
- we watch the marvel movies in order over the summer of 2019


Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
For the best experience please use the latest Chrome or Safari browser. Firefox 10 (to be released soon) will also handle it.
@tsucchi
Perl
ミルキィホームズ
とりあえずこの辺ざっと読んでみた
__DATA__
Use a spacebar or arrow keys to navigate


Returns true if the value is a finite number.
Please consider following this project's author, Jon Schlinkert, and consider starring the project to show your :heart: and support.
Install with npm:
$ npm install --save is-number
In JavaScript, it's not always as straightforward as it should be to reliably check if a value is a number. It's common for devs to use +
, -
, or Number()
to cast a string value to a number (for example, when values are returned from user input, regex matches, parsers, etc). But there are many non-intuitive edge cases that yield unexpected results:
console.log(+[]); //=> 0
console.log(+''); //=> 0
console.log(+' '); //=> 0
console.log(typeof NaN); //=> 'number'
This library offers a performant way to smooth out edge cases like these.
const isNumber = require('is-number');
See the tests for more examples.
isNumber(5e3); // true
isNumber(0xff); // true
isNumber(-1.1); // true
isNumber(0); // true
isNumber(1); // true
isNumber(1.1); // true
isNumber(10); // true
isNumber(10.10); // true
isNumber(100); // true
isNumber('-1.1'); // true
isNumber('0'); // true
isNumber('012'); // true
isNumber('0xff'); // true
isNumber('1'); // true
isNumber('1.1'); // true
isNumber('10'); // true
isNumber('10.10'); // true
isNumber('100'); // true
isNumber('5e3'); // true
isNumber(parseInt('012')); // true
isNumber(parseFloat('012')); // true
Everything else is false, as you would expect:
isNumber(Infinity); // false
isNumber(NaN); // false
isNumber(null); // false
isNumber(undefined); // false
isNumber(''); // false
isNumber(' '); // false
isNumber('foo'); // false
isNumber([1]); // false
isNumber([]); // false
isNumber(function () {}); // false
isNumber({}); // false
.isFinite
if it exists.Breaking changes
instanceof Number
and instanceof String
As with all benchmarks, take these with a grain of salt. See the benchmarks for more detail.
# all
v7.0 x 413,222 ops/sec ±2.02% (86 runs sampled)
v6.0 x 111,061 ops/sec ±1.29% (85 runs sampled)
parseFloat x 317,596 ops/sec ±1.36% (86 runs sampled)
fastest is 'v7.0'
# string
v7.0 x 3,054,496 ops/sec ±1.05% (89 runs sampled)
v6.0 x 2,957,781 ops/sec ±0.98% (88 runs sampled)
parseFloat x 3,071,060 ops/sec ±1.13% (88 runs sampled)
fastest is 'parseFloat,v7.0'
# number
v7.0 x 3,146,895 ops/sec ±0.89% (89 runs sampled)
v6.0 x 3,214,038 ops/sec ±1.07% (89 runs sampled)
parseFloat x 3,077,588 ops/sec ±1.07% (87 runs sampled)
fastest is 'v6.0'
sh
$ npm install && npm test
sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
You might also be interested in these projects:
Object
constructor. | homepagetrue
if the value is a primitive. | homepage| Commits | Contributor |
|---|---|
| 49 | jonschlinkert |
| 5 | charlike-old |
| 1 | benaadams |
| 1 | realityking |
Jon Schlinkert
Copyright © 2018, Jon Schlinkert. Released under the MIT License.
This file was generated by verb-generate-readme, v0.6.0, on June 15, 2018.


WITNESS LIST State Affairs Committee April 12, 1999-2:00P HB 78 For: Smith, Tom "Smitty" (Public Citizens Members) On: Kroger, Stephanie A (Self and Texas Coalition for Competetive Electricity) HB 349 For: King, Robert J (Texas Energy Service Coalitions) Weaver, Klip (Self and Control Systems International) Against: Farrell, Thomas (City of Rollingwood) Thompson, Dwight (Citizens of West Lake Hills, Tx) On: Brand, Greg (Shell Energy) Kroger, Stephanie A (Self and Texas Coaltion for Competetive Electricity) HB 526 Against: Briesemeister, Janee (Consumers Union Southwest Regional Office) Smith, Tom "Smitty" (Public Citizens Members) On: Kroger, Stephanie A (Self and Texas Coaliton for Competetive Electricity) HB 630 For: Laws, Dan (Self and Rio Grande Electric Cooperative) Leonard, Gary (Self) Against: Williams, Mike (Texas Electric Cooperatives) HB 2048 On: Dewhurst, David (Texas General Land Office) Kroger, Stephanie A (Self and Tx Coalition for Competetive Electricity) HB 2899 On: Kroger, Stephanie A (Self and Tx Coalition for Competetive Electricity) HB 3121 On: Kroger, Stephanie A (Self and Tx Coalition for Competetive Electricity) Smith, Tom "Smitty" (Public Citizens Member) HB 3187 For: Johnson, Stan (Self and Texas Air Cond Contractors Assoc) King, Robert (Texas Energy Services Coalition) Osgood Jr., John (Self and Texas Air Conditioning Contractors Assoc) Smith, Tom "Smitty" (Public Citizens Members) Weaver, Klip (Self and Control Systems International) On: Kroger, Stephanie A (Self and Tx Coalition for Competetive Electricity) HB 3188 For: Briesemeister, Janee (Consumers Union Southwest Regional Office) Johnson, Stan (Self and Texas Air Conditioning Contractors Assoc) King, Robert J (Tx Energy Services Coalition) Osgood Jr, John (Self and Texas Air Conditioning Contractors) Smith, Tom "Smitty" (Public Citizens Member) On: Kroger, Stephanie A (Self and Tx Coalition for Competetive Electricity) HB 3203 For: Briesemeister, Janee (Consumers Union Southwest Regional Office) Johnson, Stan (Self and Texas Air Conditioning Contractors Assoc) Osgood Jr, John (Self and Texas Air Conditioning Contractors) Smith, Tom "Smitty" (Public Citizens Member) Weaver, Klip (Self and Control Systems International) On: Kroger, Stephanie (Self and Tx Coalition for Competetive Electricity) HB 3721 For: Briesemeister, Janee (Consumers Union Southwest Regional Office) Smith, Tom "Smitty" (Public Citizens Member) On: Kroger, Stephanie (Self and Tx Coalition for Competetive Electricity) McClellan, Suzi (Office of Public Utility Counsel) HB 3726 For: Chapman, Randall (Self) Levy, Rick (Texas AFL-CIO) Smith, Tom "Smitty" (Public Citizens Member) On: Kroger, Stephanie (Self and Tx Coalition for Competetive Electricity) Patton, A.D. (Self) HB 3734 For: Biedrzycki, Carol (Self and Texas Ratepayers Organization to Save Energy) Briesemeister, Janee (Consumers Union Southwest Regional Office) Chapman, Randall (Self) Fitzpatrick, James M (Self and AARP Texas State Legislative Committee) Gooch, Claudia (Self and EOAC) Levy, Rick (TX AFL-CIO) Oppenheim, Jerrold (National Consumerl Law Center) Smith, Tom "Smitty" (Public Citizens Members) Summers, Glenn (Self and EOAC (Weatherization Program)) On: Eisenberg, Joel F (Self) Kroger, Stephanie (Self and Tx Coalition for Competetive Electricity) SB 7 For: Baker, Thomas L (Association of Electric Companies of Texas) Magruder, Kathleen E (Enron Corp) Marston, Jim (Enviornmental Defense Fund) Moore, Mickey (Texas Retailers Association) ONeil, Robert A (Texas Electric Cooperatives) Pinkus, David (Small Business United of TX) Schaeffer, Steve (AECT & Reliant Energy) Zion, Mark (TPPA) Against: Farrell, Thomas (City of Rollingwood) Fitzpatrick, James M. (Self and AARP Texas State Legislative Committee & AARP Members in Texas) Thompson, Dwight (Citizens of West Lake Hills) On: Bacon, Pamela (The University of Texas System) Brand, Greg (Shell Energy) Dewhurst, David (Texas General Land Office) Elsenberg, Joel F (Self) Kroger, Stepanie A (Self and Texas Coalition of Competetive Electricity) Lacy, Kerry (Sam Rayburn Municipal Power Agency) Ogletree Jr, Beh R. (Sam Rayburn Municipal Power Agency) SB 7 Committee Substitute (Wolens) For: Blunden, Julie (Green Mountain Energy) Forward, Gordon (Self and TXI and its subsidiary, Chaparral Steel) Johnson, Stan (Self and Texas Air Conditioning Contractors Ass.) King, Robert J (Texas Energy Services Coalition) Marston, Jim (Enviornmental Defense Fund) Osgood Jr, John (Self and Texas Air Conditioning Contractors) Palmer, Ray (New Energy Ventures) Schonborn, Josh (Self) Stone, Garrett (NUCOR Steel) Tramuto, James A (Competetive Power Advocates) Weaver, Klip (Self and Control Systems International) Williams, Mike (Texas Electric Cooperatives) Against: Biedrzyckl, Carol (Self and Texas Ratepayers Organization to Save Energy) Briesemeister, Janee (Consumers Union; Southwest Regional Office) Buchanan, Burl (City of Spearman) Chapman, Randall (Self and Texas Legal Services Center) Fenoglio, Stephen (Apache Corporation & Texas Independent Producers & Royalty Olivers Assoc) Fenoglio, Stephen (Texas Cattle Feeders Association) Fenoglio, Stephen (Texas Cotton Ginners Association) Gooch, Claudia (Self and EOAC) Oppenheim, Jerruld (National Comsumer Law Center) Smith, Tom "Smitty" (Public Citizens Members) Summers, Glenn (Self and EOAC of Waco) On: Darling, Jim (City of McAllen; CP&L Cities' Steering Comm) Eminger, Randy (The Center for Energy & Economic Development) King, Robert (Tx Renewable Power Coalition) Levy, Rick (TX AFL-CIO) McClellan, Suzi (Office of Public Utility Counsel) Patrick, Matthew C. (Self) Smith, George (Sierra Club Lone Star Chapter Air Quality Comm) Wood, Pat (PUC)


If you're using a "single sign-on" system that allows you to share the same password across different machines/servers/applications, etc. you can setup Password Safe entries accordingly, so that changing one password affects all other related entries. This is called "aliasing" entries. This section describes how to define and use such aliases.
The basic idea is to allow one entry's password to be referred to by another. The "referred to" entry is called the base, and the "referring" entry (or entries) is (are) called the alias(es). When an entry is set to be the alias of another entry, the alias's password effectively "follows" that entry's password: If you copy the alias' password to the clipboard, the password that gets copied is the base's. If you change the base's password, this is immediately reflected in all the alias entries associated with the base. Although this may sound complicated, in fact it's quite simple and intuitive to use. The hardest part is setting up the aliases, as described below.
In Password Safe, an entry can refer to another's password by means of a specially formatted password in the referring entry. The format is the "name" of the referred-to entry enclosed in square brackets. Most of the time, you can think of "name" as synonymous with the title field of an entry, so if the base entry's title is "master", for example, then entering "[master]" (without the quotes) in another entry's password field is enough to define the other entry as an alias of "master".
In the general case, a "name" can contain all of the following fields, separated by colons: Group, Title and User name. Note that if the title is unique in the database, then the other fields are optional. Likewise, if the group and title together or title and user together specify a unique entry, then the corresponding user or group doesn't have to be specified.
In Password Safe entries, only the Title and Password fields are mandatory. Group and User name fields are optional as long as the resulting combination of "group/title/user name" is unique. As indicated above, the alias' "password" is in the form [g:t:u] but in fact you only have to specify enough information to uniquely identify the base entry. So, if there is only one entry in the database with title 't', then [t] would be sufficient - since title is mandatory and only one item is given, it is assumed to be the title. If there were more than one entry with this title, you would be warned that this is the case, and you would need to be more specific in order to uniquely identify the base entry by adding either its group, its user name, or both. As long as there is a matching unique entry, any of the following formats are accepted: [g:t:u], [g:t], [t:u] or [t]. Specifying a colon without a value implies an empty field, e.g. [g:t:] means an entry with title 't' in group 'g' and with no user name value and [:t:] specifies an entry with title 't' in the root with no user name value, etc.
If you change the password of an Alias (either via the Generate password button or by typing in the password field), the change will only be made when the Apply or OK button is clicked. However, if you wish to change the base entry's password, then you should edit the base entry directly. If you change the Alias's password from [g:t:u] to some other value not in this format, it will change from an alias to a "normal" entry, and will have no relation to the previous base entry. Of course, you can restore the connection by Undo, or manually editing the password.
Unlike shortcuts, which refer to the base entry for all fields, aliases have their own values for all fields except for its password, which is its base's. For example: copying the aliases URL will use the alias's value but copying the alias's password will copy its base's.
Finally, if a normal entry was saving its password history before it was made an alias by changing its password as described above, then it will retain this history. If the alias is then reverted back to a normal entry at a later date, this password history will again become active and be updated if its password is changed.
The following examples should make this clear.
Base entries, that is, entries with at least one alias "pointing" to them, are displayed with a green triangle instead of a green square in the nested tree view.
Alias entries are shown with grey triangles.


We as a non-profit ministry do not involve ourselves in many fundraiser's, but our Run-Jog-Walk-A-Thon has been around for the past thirty three years. The Run-Jog-Walk-A-Thon has provided an opportunity for thousands of campers to attend camp and hear the gospel of Jesus Christ. The money goes to the Marnie Provance Memorial Scholarship Fund. Marnie died in a drowning accident in 1981 while attending our camp. We put the Run-Jog-Walk-A-Thon money in this memorial scholarship and give it directly to churches that have students that cannot afford to come to camp. Your financial participation in this fund raiser is an amazing way to spread the good news of a loving God to teenagers from Washington, Colorado, Idaho, Texas, Oregon, and California.
Our staff will run-jog-walk around a 1/4- mile track for one hour on the Sunday of the Memorial Day Retreat. Our staff secure pledges from friends and relatives per lap that they complete, or a flat donation here online. This year each staff members goal is to raise a minimum of $600.00.
Last year our staff raised $60,034.91. These funds went out to churches in the form of camper scholarships. With the current economy it is difficult for families to send their kids to camp. That is where you come in! Your donation towards the R-J-W directly sends kids to camp. We ask that you help us in making this a success.
Find the staff member you would like to donate towards in the drop down menu below, select their name, then click donate. You will be directed to PAYPAL where you can make a donation. This will go directly into the Marnie Provance Memorial Scholarship Fund in the name of the staff you selected. If you want to make a pledge per lap, click here.
SONSHINE MINISTRIES
Sonshine Specialized Camping Ministries
P.O. Box 1527 Woodbridge, CA 95258
209-367-0212 (phone)
209-368-1662 (fax)


| Number of Classes | Line Coverage | Mutation Coverage |
|---|---|---|
| 12 | 89% | 85% |
| Name | Line Coverage | Mutation Coverage |
|---|---|---|
| CloseOp.java | 83% |
67% |
| Doc.java | 90% |
85% |
| DocBuilder.java | 81% |
89% |
| FormatterDiagnostic.java | 86% |
48% |
| FormattingError.java | 0% |
0% |
| Indent.java | 68% |
75% |
| Input.java | 25% |
0% |
| InputOutput.java | 97% |
86% |
| Newlines.java | 96% |
98% |
| OpenOp.java | 86% |
67% |
| OpsBuilder.java | 90% |
88% |
| Output.java | 86% |
50% |