text:
[ccan] / licenses / GPL-3
2 GNU GENERAL PUBLIC LICENSE
3 Version 3, 29 June 2007
5 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed.
9 Preamble
11 The GNU General Public License is a free, copyleft license for
12 software and other kinds of works.
16 the GNU General Public License is intended to guarantee your freedom to
17 share and change all versions of a program--to make sure it remains free
18 software for all its users. We, the Free Software Foundation, use the
19 GNU General Public License for most of our software; it applies also to
20 any other work released this way by its authors. You can apply it to
21 your programs, too.
30 To protect your rights, we need to prevent others from denying you
31 these rights or asking you to surrender the rights. Therefore, you have
32 certain responsibilities if you distribute copies of the software, or if
33 you modify it: responsibilities to respect the freedom of others.
35 For example, if you distribute copies of such a program, whether
36 gratis or for a fee, you must pass on to the recipients the same
37 freedoms that you received. You must make sure that they, too, receive
38 or can get the source code. And you must show them these terms so they
39 know their rights.
41 Developers that use the GNU GPL protect your rights with two steps:
42 (1) assert copyright on the software, and (2) offer you this License
43 giving you legal permission to copy, distribute and/or modify it.
45 For the developers' and authors' protection, the GPL clearly explains
46 that there is no warranty for this free software. For both users' and
47 authors' sake, the GPL requires that modified versions be marked as
48 changed, so that their problems will not be attributed erroneously to
49 authors of previous versions.
51 Some devices are designed to deny users access to install or run
52 modified versions of the software inside them, although the manufacturer
53 can do so. This is fundamentally incompatible with the aim of
54 protecting users' freedom to change the software. The systematic
55 pattern of such abuse occurs in the area of products for individuals to
56 use, which is precisely where it is most unacceptable. Therefore, we
57 have designed this version of the GPL to prohibit the practice for those
58 products. If such problems arise substantially in other domains, we
59 stand ready to extend this provision to those domains in future versions
60 of the GPL, as needed to protect the freedom of users.
62 Finally, every program is threatened constantly by software patents.
63 States should not allow patents to restrict development and use of
64 software on general-purpose computers, but in those that do, we wish to
65 avoid the special danger that patents applied to a free program could
66 make it effectively proprietary. To prevent this, the GPL assures that
67 patents cannot be used to render the program non-free.
72 TERMS AND CONDITIONS
74 0. Definitions.
76 "This License" refers to version 3 of the GNU General Public License.
78 "Copyright" also means copyright-like laws that apply to other kinds of
79 works, such as semiconductor masks.
86 in a fashion requiring copyright permission, other than the making of an
87 exact copy. The resulting work is called a "modified version" of the
88 earlier work or a work "based on" the earlier work.
100 To "convey" a work means any kind of propagation that enables other
101 parties to make or receive copies. Mere interaction with a user through
102 a computer network, with no transfer of a copy, is not conveying.
104 An interactive user interface displays "Appropriate Legal Notices"
105 to the extent that it includes a convenient and prominently visible
106 feature that (1) displays an appropriate copyright notice, and (2)
107 tells the user that there is no warranty for the work (except to the
113 1. Source Code.
115 The "source code" for a work means the preferred form of the work
116 for making modifications to it. "Object code" means any non-source
117 form of a work.
148 The Corresponding Source need not include anything that users
149 can regenerate automatically from other parts of the Corresponding
150 Source.
152 The Corresponding Source for a work in source code form is that
153 same work.
155 2. Basic Permissions.
165 You may make, run and propagate covered works that you do not
166 convey, without conditions so long as your license otherwise remains
167 in force. You may convey covered works to others for the sole purpose
168 of having them make modifications exclusively for you, or provide you
169 with facilities for running those works, provided that you comply with
170 the terms of this License in conveying all material for which you do
171 not control copyright. Those thus making or running the covered works
172 for you must do so exclusively on your behalf, under your direction
173 and control, on terms that prohibit them from making any copies of
174 your copyrighted material outside their relationship with you.
176 Conveying under any other circumstances is permitted solely under
177 the conditions stated below. Sublicensing is not allowed; section 10
178 makes it unnecessary.
180 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
189 circumvention of technological measures to the extent such circumvention
190 is effected by exercising rights under this License with respect to
191 the covered work, and you disclaim any intention to limit operation or
192 modification of the work as a means of enforcing, against the work's
193 users, your or third parties' legal rights to forbid circumvention of
194 technological measures.
196 4. Conveying Verbatim Copies.
209 5. Conveying Modified Source Versions.
213 terms of section 4, provided that you also meet all of these conditions:
215 a) The work must carry prominent notices stating that you modified
218 b) The work must carry prominent notices stating that it is
219 released under this License and any conditions added under section
220 7. This requirement modifies the requirement in section 4 to
221 "keep intact all notices".
223 c) You must license the entire work, as a whole, under this
231 d) If the work has interactive user interfaces, each must display
246 6. Conveying Non-Source Forms.
248 You may convey a covered work in object code form under the terms
249 of sections 4 and 5, provided that you also convey the
250 machine-readable Corresponding Source under the terms of this License,
251 in one of these ways:
253 a) Convey the object code in, or embodied in, a physical product
258 b) Convey the object code in, or embodied in, a physical product
267 conveying of source, or (2) access to copy the
268 Corresponding Source from a network server at no charge.
270 c) Convey individual copies of the object code with a copy of the
276 d) Convey the object code by offering access from a designated
289 e) Convey the object code using peer-to-peer transmission, provided
290 you inform other peers where the object code and Corresponding
291 Source of the work are being offered to the general public at no
292 charge under subsection 6d.
299 tangible personal property which is normally used for personal, family,
300 or household purposes, or (2) anything designed or sold for incorporation
301 into a dwelling. In determining whether a product is a consumer product,
302 doubtful cases shall be resolved in favor of coverage. For a particular
303 product received by a particular user, "normally used" refers to a
304 typical or common use of that class of product, regardless of the status
305 of the particular user or of the way in which the particular user
306 actually uses, or expects or is expected to use, the product. A product
307 is a consumer product regardless of whether the product has substantial
308 commercial, industrial or non-consumer uses, unless such uses represent
309 the only significant mode of use of the product.
312 procedures, authorization keys, or other information required to install
313 and execute modified versions of a covered work in that User Product from
314 a modified version of its Corresponding Source. The information must
315 suffice to ensure that the continued functioning of the modified object
316 code is in no case prevented or interfered with solely because
317 modification has been made.
331 requirement to continue to provide support service, warranty, or updates
332 for a work that has been modified or installed by the recipient, or for
333 the User Product in which it has been modified or installed. Access to a
334 network may be denied when the modification itself materially and
335 adversely affects the operation of the network or violates the rules and
336 protocols for communication across the network.
344 7. Additional Terms.
363 add to a covered work, you may (if authorized by the copyright holders of
364 that material) supplement the terms of this License with terms:
366 a) Disclaiming warranty or limiting liability differently from the
369 b) Requiring preservation of specified reasonable legal notices or
373 c) Prohibiting misrepresentation of the origin of that material, or
374 requiring that modified versions of such material be marked in
377 d) Limiting the use for publicity purposes of names of licensors or
378 authors of the material; or
380 e) Declining to grant rights under trademark law for use of some
383 f) Requiring indemnification of licensors and authors of that
384 material by anyone who conveys the material (or modified versions of
385 it) with contractual assumptions of liability to the recipient, for
386 any liability that these contractual assumptions directly impose on
387 those licensors and authors.
405 form of a separately written license, or stated as exceptions;
406 the above requirements apply either way.
408 8. Termination.
416 However, if you cease all violation of this License, then your
417 license from a particular copyright holder is reinstated (a)
418 provisionally, unless and until the copyright holder explicitly and
419 finally terminates your license, and (b) permanently, if the copyright
420 holder fails to notify you of the violation by some reasonable means
421 prior to 60 days after the cessation.
436 9. Acceptance Not Required for Having Copies.
438 You are not required to accept this License in order to receive or
439 run a copy of the Program. Ancillary propagation of a covered work
447 10. Automatic Licensing of Downstream Recipients.
472 11. Patents.
478 A contributor's "essential patent claims" are all patent claims
479 owned or controlled by the contributor, whether already acquired or
522 A patent license is "discriminatory" if it does not include within
523 the scope of its coverage, prohibits the exercise of, or is
524 conditioned on the non-exercise of one or more of the rights that are
525 specifically granted under this License. You may not convey a covered
526 work if you are a party to an arrangement with a third party that is
527 in the business of distributing software, under which you make payment
528 to the third party based on the extent of your activity of conveying
529 the work, and under which the third party grants, to any of the
530 parties who would receive the covered work from you, a discriminatory
531 patent license (a) in connection with copies of the covered work
532 conveyed by you (or copies made from those copies), or (b) primarily
533 for and in connection with specific products or compilations that
534 contain the covered work, unless you entered into that arrangement,
535 or that patent license was granted, prior to 28 March 2007.
541 12. No Surrender of Others' Freedom.
546 covered work so as to satisfy simultaneously your obligations under this
547 License and any other pertinent obligations, then as a consequence you may
548 not convey it at all. For example, if you agree to terms that obligate you
549 to collect a royalty for further conveying from those to whom you convey
550 the Program, the only way you could satisfy both those terms and this
551 License would be to refrain entirely from conveying the Program.
553 13. Use with the GNU Affero General Public License.
557 under version 3 of the GNU Affero General Public License into a single
560 but the special requirements of the GNU Affero General Public License,
561 section 13, concerning interaction through a network will apply to the
562 combination as such.
564 14. Revised Versions of this License.
566 The Free Software Foundation may publish revised and/or new versions of
567 the GNU General Public License from time to time. Such new versions will
568 be similar in spirit to the present version, but may differ in detail to
569 address new problems or concerns.
571 Each version is given a distinguishing version number. If the
572 Program specifies that a certain numbered version of the GNU General
577 GNU General Public License, you may choose any version ever published
578 by the Free Software Foundation.
580 If the Program specifies that a proxy can decide which future
581 versions of the GNU General Public License can be used, that proxy's
590 15. Disclaimer of Warranty.
594 HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
595 OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
596 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
597 PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
598 IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
599 ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
601 16. Limitation of Liability.
604 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
605 THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
606 GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
607 USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
608 DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
609 PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
610 EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
611 SUCH DAMAGES.
613 17. Interpretation of Sections 15 and 16.
624 How to Apply These Terms to Your New Programs
628 free software which everyone can redistribute and change under these terms.
630 To do so, attach the following notices to the program. It is safest
631 to attach them to the start of each source file to most effectively
632 state the exclusion of warranty; and each file should have at least
633 the "copyright" line and a pointer to where the full notice is found.
639 it under the terms of the GNU General Public License as published by
640 the Free Software Foundation, either version 3 of the License, or
641 (at your option) any later version.
646 GNU General Public License for more details.
648 You should have received a copy of the GNU General Public License
649 along with this program. If not, see <http://www.gnu.org/licenses/>.
651 Also add information on how to contact you by electronic and paper mail.
653 If the program does terminal interaction, make it output a short
654 notice like this when it starts in an interactive mode:
656 <program> Copyright (C) <year> <name of author>
657 This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
658 This is free software, and you are welcome to redistribute it
659 under certain conditions; type `show c' for details.
661 The hypothetical commands `show w' and `show c' should show the appropriate
662 parts of the General Public License. Of course, your program's commands
663 might be different; for a GUI interface, you would use an "about box".
665 You should also get your employer (if you work as a programmer) or school,
666 if any, to sign a "copyright disclaimer" for the program, if necessary.
667 For more information on this, and how to apply and follow the GNU GPL, see
668 <http://www.gnu.org/licenses/>.
670 The GNU General Public License does not permit incorporating your program
671 into proprietary programs. If your program is a subroutine library, you
672 may consider it more useful to permit linking proprietary applications with
673 the library. If this is what you want to do, use the GNU Lesser General
674 Public License instead of this License. But first, please read
675 <http://www.gnu.org/philosophy/why-not-lgpl.html>.


text:
Nostalgia for the New Critics
gratiaetnatura	academia, Deconstruction, Postmodernism	Cleanth Brooks, English, English Departments, Jacques Derrida, John Crowe Ransom, Literature, Marxism, Modern Language Association, New Criticism, New Critics, Polysemy, postmodernism, Poststructuralism, Robert Penn Warren, Structuralism, T.S. Eliot	5 Comments
Image of U.S. Poet Laureate Robert Penn Warren (Photo credit: Wikipedia)
The field of English is in shambles, and the Modern Language Association is a gaggle of voices for various interest groups based on race, class, gender, and sexual orientation. Dissertations in English appeal to Derrida and Foucault long after they became passe in France. A presentation on any topic by any writer at a conference sponsored by a college or university English Department that does not mention the four "code words" listed above will be considered quaint and out of date by most of the audience. Much of the radicalism in academia stems from English Departments (although other departments can be guilty as well–philosophy, with its analytic bent, may be narrow in methodology, but at least it eschews the relativism of many people who call themselves "postmodern"). Although many English professors are old-fashioned social democrats who are liberals, not radicals, the radicals have a missionary-like zeal in pushing their agenda. This agenda is anti-Western Culture, anti-traditional Christianity (and Muslims take note–if Christianity were to falter in the West, Islam would be the next target of the radicals, who are engaged in a "divide and conquer" strategy now). When radicals take over, ideological diversity dies, and the departments become as one-sided, closed-minded, Puritanical, and bigoted as religious Fundamentalists.
I long for the days of John Crowe Ransom, Cleanth Brooks, Robert Penn Warren, and T. S. Eliot. They may have failed to give psychological and sociological factors sufficient treatment in literary criticism, but their focus on a close reading of the text is surely a better approach than seeking the alleged hidden motivations of the authors. From the New Critics I have read, I see no evidence that they denied the existence of polysemy, but they limited their discussion of polysemy to what was suggested by the text and various historical and mythological allusions found in the text. Postmodern criticisms of the New Critics seemed to confuse the New Critics with European Structuralists–Structuralism was more narrow in approach than the New Criticism, must more Platonic than Aristotelian in approach, much more abstract than concrete. Structuralism deserved the scathing critique of Derrida. The New Criticism was a horse of a different color.
With the emphasis on "newness" in academia, the decline in the New Criticism had to be replaced with something, and that something included Marxist, feminist, womanist, African-American, and queer approaches to literature. Some approaches (such as Marxism) were not necessarily subjective, but the other approaches I listed are largely subjective. Since the advocates of radical theories consider themselves social reformers, including reformers of the academy, they push their agenda like a Fundamentalist preacher pushes being saved from hell fire. The resulting cultural rot spreads to other humanities departments, to the extent that it is difficult to blame students who do not want to major or minor in the humanities. Frankly, I cannot blame them–the New Criticism probably offered more that is relevant to their lives–Shakespeare's plays concern the universal human experience of revenge, pain, suffering, and happiness. The New Critics could at least point out where the text does relate to students' lives. Poststructuralists focus so much on polysemy and a political reading of the text that students walk away in disgust. They should be disgusted. Let's bring out some "New New Critics" to restore intellectual coherence and sanity to English Departments.
Azathoth the Postmodernist
gratiaetnatura	Azathoth, Deconstruction, H. P. Lovecraft, Postmodernism	Azathoth, Deconstruction, H. P. Lovecraft, Movements, Philosophy, postmodernism	Leave a comment
"….the spiral black vortices of that ultimate void of Chaos wherein reigns the mindless daemon-sultan Azathoth"–H. P. Lovecraft, "Dreams in the Witch House"
Since postmodernist relativists are so inconsistent–they say there is no metanarrative even though their denial of a metanarrative is itself a metanarrative–I decided to search for a consistent postmodernist. Such a consistent creature would be mad–indeed It would be Madness Itself since a deconstruction of all narratives includes a deconstruction of the self–and thus the destruction of the self. If only fragments of self really remain, where can we find a god that consists of such chaos. H. P. Lovecraft, the great American writer of fantastic fiction has the answer–the blind mindless deity Azathoth.
Azathoth inhabits the void of chaos which is his being, or lack thereof. He has no mind per se; at best, he is an uncordinated series of mind-fragments (if even that). Around him mad musicians pipe a tune so dissonant that Arnold Shoenberg's atonal pieces would sound like Mozart in comparison. The most frightening part of Lovecraft's fiction is the suggestion that ultimate chaos is the principle behind the entire universe. There are other elder gods, but Azathoth, the Anti-Order, Defeater of ALL metanarratives, is the "top god."
If academic postmodernists and their followers were consistent, they would emulate Azathoth. Their lives would be as disorderly as Azathoth's–they would be insane to the point that the worst current case of schizophrenia would seem normal by comparison. But most of these postmodernists live orderly lives–they get married, have families, teach for many years until they retire, grade student papers according to a standard–they do not literally try to deconstruct everything. They are hypocrites. When I see a mindless postmodernist sitting catatonic in the center of a circle of raving postmodernists playing dissonant pipes, I will take these pseudo-academics seriously. Otherwise, they should work to be more consistent in their madness. Until then, may Azathoth rant and scream mad non-words that echo through the mindless postmodern universe.

redpajama_set_name: RedPajamaCommonCrawl


text:
Arni is a municipality in the district of Bremgarten in the Swiss canton of Aargau.

History

Arni is first mentioned in 1184 as Arne.  In 1983 the, already independent, village of Islisberg separated from the municipality of Arni-Islisberg to form the municipalities of Arni, AG and Islisberg.

Geography

Arni has an area, , of .  Of this area, 58.8% is used for agricultural purposes, while 28.4% is forested.  Of the rest of the land, 12% is settled (buildings or roads) and the remainder (0.9%) is non-productive (rivers or lakes).

The municipality is located in the Bremgarten district on the southern edge of the Heitersberg at an elevation of .

Coat of arms
The blazon of the municipal coat of arms is Per fess Or a Lion passant Gules and Azure a Key fesswise with double Wards in sinister Argent.

Demographics
Arni has a population (as of ) of .  , 12.1% of the population was made up of foreign nationals.  Over the last 10 years the population has grown at a rate of 29.5%.  Most of the population () speaks German (94.8%), with French being second most common ( 1.3%) and Italian being third ( 0.9%).

The age distribution, , in Arni is; 187 children or 11.6% of the population are between 0 and 9 years old and 219 teenagers or 13.5% are between 10 and 19.  Of the adult population, 149 people or 9.2% of the population are between 20 and 29 years old.  202 people or 12.5% are between 30 and 39, 327 people or 20.2% are between 40 and 49, and 277 people or 17.1% are between 50 and 59.  The senior population distribution is 161 people or 9.9% of the population are between 60 and 69 years old, 67 people or 4.1% are between 70 and 79, there are 28 people or 1.7% who are between 80 and 89,and there are 2 people or 0.1% who are 90 and older.

 the average number of residents per living room was 0.55 which is about equal to the cantonal average of 0.57 per room.  In this case, a room is defined as space of a housing unit of at least  as normal bedrooms, dining rooms, living rooms, kitchens and habitable cellars and attics.  About 68.5% of the total households were owner occupied, or in other words did not pay rent (though they may have a mortgage or a rent-to-own agreement).  , there were 25 homes with 1 or 2 persons in the household, 183 homes with 3 or 4 persons in the household, and 278 homes with 5 or more persons in the household.  The average number of people per household was 2.61 individuals.   there were 347 single family homes (or 56.5% of the total) out of a total of 614 homes and apartments.  There were a total of 3 empty apartments for a 0.5% vacancy rate.  , the construction rate of new housing units was 0 new units per 1000 residents.

In the 2007 federal election the most popular party was the SVP which received 38.2% of the vote.  The next three most popular parties were the CVP (15.9%), the SP (14.7%) and the FDP (14.4%).

The entire Swiss population is generally well educated.  In Arni about 87.4% of the population (between age 25-64) have completed either non-mandatory upper secondary education or additional higher education (either university or a Fachhochschule).  Of the school age population (), there are 121 students attending primary school in the municipality.

The historical population is given in the following table:

Economy
, Arni had an unemployment rate of 1.61%.  , there were 22 people employed in the primary economic sector and about 8 businesses involved in this sector.  85 people are employed in the secondary sector and there are 19 businesses in this sector.  87 people are employed in the tertiary sector, with 34 businesses in this sector.

 there was a total of 740 workers who lived in the municipality.  Of these, 613 or about 82.8% of the residents worked outside Arni while 71 people commuted into the municipality for work.  There were a total of 198 jobs (of at least 6 hours per week) in the municipality.  Of the working population, 22.8% used public transportation to get to work, and 53.3% used a private car.

Religion
From the , 542 or 41.6% were Roman Catholic, while 447 or 34.3% belonged to the Swiss Reformed Church.  Of the rest of the population, there was 1 individual who belonged to the Christian Catholic faith.

References

Notes

External links

Arni website

Municipalities of Aargau

redpajama_set_name: RedPajamaWikipedia


text:
Pensacola would need $7.2 million to repair all of its sidewalks, audit says
Pensacola would need to spend about $7.2 million to bring all of the sidewalks in the city limits into full compliance with the Americans with Disabilities Act.
Last week, the city of Pensacola published a 33-page sidewalk prioritization list on its website based on a 2017 audit of city sidewalks along more than 1,500 city blocks that had at least one compliance issue with the ADA.
Pensacola Mayor Grover Robinson said he wants the city to improve is pedestrian and bicycle friendliness.
"People during the campaign said that loud and clear," Robinson said Monday at his press conference.
Robinson said he is waiting on his transition team to release its report before he decides on how the city will go about improving the city's walking and biking access, but it will be a long-term approach.
"We're going to make improvements as we can," Robinson said. "We can't do it all tomorrow."
Out of the city's 6,669 city blocks, 2,158 blocks have sidewalks and another 404 blocks have at least a part of a sidewalk, according the city's 2017 audit.
The city's audit of its sidewalk took almost seven months in 2017 and came about because the city needed to update its information on how many sidewalks the city had, according to Derrik Owens, public works director with the city.
"As part of that, we wanted to make sure that while we were in the field that we noted the discrepancies or the deficiencies with ADA compliance," Owens said.
The audit assigned scores to each block based on how many aspects of the ADA the sidewalk complied with, such as the sidewalk being at least 5 feet wide or if the slope of the sidewalk was than 3 percent.
The sidewalk with the most issues and therefore lowest score of a 20 out of 100 was on Langley Avenue between Goodrich Drive and Sanders Street.
The audit estimates repairing the issues would cost nearly $7,000.
The most expensive stretch of sidewalk to repair, according to the audit, is on Livingston Street near Woodcliff Park. The sidewalk intersects many driveways at different slopes. The cost estimated to repair that sidewalk is about $360,000 because 98 driveways would have to be rebuilt where they intersect the sidewalk.
The city has identified 235 blocks it considers high priority, which will cost about $3.3 million to repair.
Robinson said on Monday he believes the city needs more money from the state to address all of the sidewalk issues.
The state currently allows local governments in Escambia and Santa Rosa counties to compete for about $350,000 of state money for sidewalks.
"That's never going to catch up with what we need to be doing," Robinson said.
The city's current budget allocates about $500,000 for sidewalk repair with funds from the Community Redevelopment Agency and local option sales tax.
Robinson's transition team is expected to release a report in March making recommendations on how the city should move forward in several areas including walkability.
News reports of people being hit by cars have increased public awareness about the issue, Robinson said.
"It's unreal how often it's happened, and I think it's highlighting the need that this is something we need to go do," he said.


I see you've been appointed to the board of PavCo. Gives you a little something to do in retirement.
I'm not writing to you about that, though. I'm writing you today about a file left over from your days in the premier's office: the 2012 health ministry firings.
You see John, as deputy minister to the premier, you either signed-off on the firings (some might say ordered) or you know who did and you know why. It was your job to know.
Roderick MacIssac took his life as a result of his dismissal. I have to believe that weighs heavily on you. You'll recall the day his body was found.
Here's the thing John, the government has already wasted more than $5.3 million trying to satisfy the public's demands for answers, when you could clear it all up in a few minutes.
There are a lot of theories out there over the firings.
Some of the more cited ones include Big Pharma lobbyists pushing to shut down the Therapeutics Initiative, records that you ordered be destroyed in 2009 related to the government's class action lawsuit against tobacco companies, the clinical research into Champix and those 2010 discussions with LifeSciences BC over selling patient information to industry that they initiated with you.
You handed those discussions over to John Bethel, a confidante of Premier Christy Clark and a member of her transition team in 2011. The same transition that saw you promoted from deputy minister of health to the premier's office. The crowning achievement of your career in the public service.
The problem with theories is that sometimes they can be worse than the truth.
The fixation on the health ministry has always been of interest to me John, because the whistleblower claimed the transgressions cut across all ministries, as you know well. She called it systemic. As a former deputy minister of transportation and infrastructure I bet that word scared the daylights out of you.
I'm sure you know the Comptroller General's investigation vindicated the whistleblower.
I have to wonder if one of the damage control tactics used back then was to try and contain the whistleblower's claims to one ministry? Things could unravel fast, if the contagion – so to speak – spread to other ministries.
John, the public already knows mistakes were made, that someone may have overreacted. They know about Roderick.


Thanksgiving is coming soon and of course Turkey is on the menu for our family! So I thought I'd try out a Coffee Rub I created and have my sister and her family over to try it out with an early turkey dinner. Needless to say, it turned out to be a huge success. As coffee typically does with meat, the flavor of the meat itself was enhanced nicely without getting too much "coffee taste" when eating the turkey. The coffee also added a very robust flavor to the gravy. So I think it's safe to say this would be a unique and super yummy way to put a twist on your traditional holiday meal that's sure to get praises all around! Tell us what you think of it when you try it!
First of all, we used a 10 lb turkey which fed 4 adults and a couple kids. Most of us had seconds and there was leftovers! If you are wondering how big of a turkey to get, Butterball has a great calculator tool to help you know how big your turkey should be depending on how many people you are feeding, how much you want in leftovers, etc. If you have a really large crowd and will be using a bigger turkey, just double the rub recipe and you should have plenty!
So, to get started, preheat the oven to 450 degrees F, take the turkey out of the refrigerator, remove any packaging and giblets, set the turkey breast side up in your roasting pan, and let it sit for about a half hour to take the chill off. I also toweled it off to dry out the skin, giving it more of a crispness when it cooks. Also, I chose not to brine the turkey (which is soaking it in salted water for several hours or other spices to flavor the skin). Some people like to do this, but I felt that the rub was enough to flavor the meat nicely.
While the turkey dries out, grind the coffee (we used Mission Arabica Costa Rica coffee) and then mix all the rub ingredients together in a small bowl.
Before rubbing the turkey, baste the turkey with the olive oil using a basting brush. Then rub the turkey with the coffee rub mixture.
Pour 2 cups of broth or water into the roasting pan. (I just used water.) Cover and place in the oven. Reduce the oven temp to 350 degrees F.
I basted the turkey with the juices in the pan after the 1 hour mark, which also helps crisp the skin.
We cooked ours for about 2 hours and it turned out really well. I've read that the general rule of thumb for roasting a turkey is 13 minutes per pound of turkey, however it does make a difference whether you stuff the turkey and whether you cover the pan or not. We chose not to stuff the turkey, but rather placed two halves of a lemon and a couple garlic cloves in the cavity. You don't even really have to put anything in the cavity though if you don't want to. All in all, the internal meat temperature should reach 165 degrees in the thigh meat with a meat thermometer before it is considered done. I also bought a turkey that had a pop-up timer which made it super easy!
Take the turkey out of the oven and place on a platter. Cover with foil and allow it to rest while making the gravy.
To make the gravy, bring the turkey juices from the roasting pan to a boil in a medium sized saucepan on the stove. Mix 2-3 tablespoons of flour or corn starch in about a half cup of VERY COLD water.
Whisk the flour mixture into the boiling juices until thickened. If it seems too runny, add a bit more flour or corn starch until it reaches the consistency you like.
Plate and serve! We served ours with broccoli and mashed potatoes.
I'm not great at carving turkey by the way. But if you want a good tutorial on that, check out this youtube video from Alton Brown of Food Network. He does a really nice job of showing you how to carve the turkey nicely.


text:
Q: Question on approximation of number of non-trivial zeros of $\zeta(s)$ with $0<\Im(\rho)\le t$ The asymptotic growth of $f(x)$ defined in (1) below is $\overset{\text{~}}{f}(x)$ defined in (2) below, and $\overset{\text{~}}{f}(\frac{t}{2 \pi})$ very closely approximates the asymptotic growth of $N(t)$ defined in (3) below (the number of non-trivial zeta zeros with $0<\Im(\rho)\le t$). These relationships are illustrated following the question below.

(1) $\quad f(x)=\sum\limits_{n\le x}\log(n),\quad\zeta'(s)=-\sum\limits_{n}\log(n)\,n^{^-s}\quad\Re(s)>1$
(2) $\quad \overset{\text{~}}{f}(x)=x\,(\log (x)-1)+\frac{\log(2 \pi)}{2},\quad f(x)\approx\overset{\text{~}}{f}(x)$
(3) $\quad N(t)=\sum\limits_{0<\Im(\rho)\le t}1\approx\overset{\text{~}}{f}(\frac{t}{2 \pi})$

It's widely known the non-trivial zeros of the Riemann zeta function $\zeta(s)$ are closely related to the primes.

Question:  Why is the growth of $N(t)$ so closely related to the growth of $f(x)$ where $\zeta′(s)=-s\int_0^\infty f(x)\,x^{-s-1}\,dx$, and how is $N(t)\approx\overset{\text{~}}{f}(\frac{t}{2 \pi})$ related to the primes?

The following figure illustrates $f(x)$ in blue and $\overset{\text{~}}{f}(x)$ in orange.

Figure (1): Illustration of $f(x)$ (blue) and $\overset{\text{~}}{f}(x)$ (orange)

The following figure illustrates a discrete plot of $N(t)-\overset{\text{~}}{f}(\frac{t}{2 \pi})$.

Figure (2): Illustration of $N(t)-\overset{\text{~}}{f}(\frac{t}{2 \pi})$

redpajama_set_name: RedPajamaStackExchange


Designing a one of-a-kind piece is one of our favorite things. We can help you turn your ideas, magazine clippings and Pinterest pins into a one-of-a-kind dream piece!
Let our experienced jewelers breath new life into your broken or worn out pieces. We can tend to any of your jewelry needs, from sizing rings and replacing lost stones to restringing pearls and working on worn-out prongs. We use the latest technology in tools, equipment and training. Using the highest quality parts and findings.
We use MediSystem Sterile Ear Piercing Studs, the system that Physicians use, and we have a large selection of studs to choose from. We love that we are able to provide a warm, supportive atmosphere for such an exciting right-of-passage in our customers' lives!
Let our GIA certified appraiser update your jewelry appraisals and insurance coverage. As you have been hearing, the cost of gold has skyrocketed over the last several years. Meaning that the value of your jewelry has also increased. We take great care in providing you with the most accurate jewelry appraisal possible.


The Hope and Faith Community School (HFCS) was founded by Rosemary Mumbi in 2003 with just a pair of kids from the street. Rosemary's vision was to provide good quality, gospel based education to disadvantaged and vulnerable children (James 1:27 is an integral verse to her passion).
More than ten years later, this vision has now developed into a registered community school in a slum area (New Ngombe compound) of Lusaka city, Zambia. The school caters for nursery aged children (3 yrs old) through to students completing Grade 12. Over the years the school has seen approximately 908 students go from junior secondary to senior secondary, and at present there are 700 children attending. Many of these children are orphaned and several also participate in a school feeding program due to serious food insecurity. Most families in the New Ngombe compound have little or no source of income, and there is a lack of social services provided by the government. In response, the school is also running programmes for youth and women in their community.
In 2008, the government stopped funding community schools leaving the school to operate off fees and donations. The school has 23 committed and passionate teachers, who unfortunately receive much lower salaries than at comparative state schools. At present, the school's infrastructure consists of land, 14 junior classrooms, eight secondary school classrooms, two science labs, and administrative facilities has been able to be built through generous donations. However, there is a need to extend the school's capacity through the buidling of a school hall and library as well as the provision of textbooks and transport.
In 2016, the national average pass rate for the 'O' Level exams (Year 12) was 60%. HFCS students consistently score above the national average achieving from 80% to a remarkable 92% in 2016.
Anglican Aid is partnering with HCFS initially to enable the provision of school transport and other capital items that will help the school continue to provide quality education and move towards being sustainable institution that nurtures the physical, emotional, social and spiritual development of disadvantaged and vulnerable children in Lusaka.
Your donation will go to supporting the various costs of running the Hope & Faith School and its programs, including school fees, teacher salaries and the feeding program.


Howdy everyone! I'm excited to say that Third Party Watch is now two weeks old, and we've been getting great traffic numbers and lots of attention from other blogs and websites. It's nice to know there are people out there interested in alternatives to the two major parties.
This is the second is a series of comparison charts I'm working on to briefly outline how well a party's Presidential tickets peformed over the last few decades. This time it's the Libertarian Party.
The former Press Secretary of Ralph Nader's presidential campaign, Kevin Zeese, is seeking to unite all the third parties of Maryland for his 2006 Senate bid.
Zeese is a Green Party member and co-founder of the Maryland Populist Party. As he prepares to launch his campaign, he has held largely positive meetings with Libertarian leaders.
I wanted to take a look at the successes and failures of various third party presidential campaigns over the past 30 years. So, I've complied the results for the Green Party below. Raw data was pieced together through Ballot Access News, The U.S. Election Atlas, and other sites.
The Libertarian Party has launched a membership drive complete with updating thermometer. No word on if they've cleaned up their membership processing situation yet, but it was known that as of a few months ago some renewals submitted by state parties were not even being processed by the national party.
It seems that 2004 Libertarian Presidential candidate Michael Badnarik is promoting an alternative currency, backed by silver, on his blog. The currency is called "The Liberty Dollar" and appears to proliferate through a complicated system of referrals and "Regional Currency Offices" (people).
The Minnesota Spokesman-Recorder today published an interesting interview with 2004 Green Party Presidential candidate David Cobb. In the interview, Cobb argues for increased minority involvement in the Green Party, for reparations for slavery, and against the two-party system… in fact, against any party system.
This is an interesting article from the Libertarian Party's website that details the history of a 100+ year old communication tax. I always wondered what that crap on my phone bill was.
The Hampton Roads Daily Press of Virgina published this favorable opinion piece on Independent gubernatorial candidate Russ Potts.
In their piece, the paper seems to essentially endorse Potts while ripping apart his two general election opponants.
Could you do better a job?
I wanted to take a quick moment to highlight a game that I find really enjoyable called President Forever. I've been playing for a few years now.
We're all familiar with the Bull Moose Party from Teddy Roosevelt's 1912 Presidential campaign… but can you name the most recent American political party to adopt the moose into it's name?
It appears that the Peroutka 2004 Presidential campaign has produced a documentary called For God, Family, & The Republic: Inside the Peroutka 2004 Presidential Campaign.
Before I start here, I'd just like to say that I don't dislike the Libertarian Party. In fact, I openly admit that I voted for Harry Browne in 2000… and I live in Florida!
Fairleigh Dickinson University has fired adjunct professor Jacques Pluss for supposedly missing too many classes. However, Pluss claims he was fired for his political views. Turns out, Pluss is an active member of the American Nazi Party.
Laura Bush's recent comical performance at the White House Correspondents' dinner got generally positive reviews in the major media. Liberals and conservatives alike seemed to have been charmed by the First Lady, but not included in the group cheering her on is Chuck Baldwin.
New Hampshire Libertarian Russell Kanning made national headlines when he symbolicly defied airport security at the Manchester Airport and was arrested.
The Green Party is attempting to make a statement about the war in Iraq by placing county-level ballot questions on as many Wisconsin ballots as possible in next year's April 4th elections.
As we head toward a large pack of gubernatorial races next year, I thought it would be interesting to take a quick look back at the past few years.
Since 1998, a number of independent and third party candidates have made significant impacts on gubernatorial contests across the country.
No one really pays much attention to the Communist Party of the United States any more. It's been decades since they've run a Presidential ticket, and they seem to be largely keeping to themselves electorally speaking.
Ok, so I've decided to start having the occassional trivia question on here as a way to encourage people to start posting comments and to make this site a little more interactve.
Presented below is part 2 of our interview with Brian Phillips, the embattled chairman of the New Jersey Libertarian Party.
Third Party Watch: An emergency meeting was recently held to, supposedly, remove you from office. Are you still currently the chairman of the New Jersey Libertarian Party?
You are currently browsing the Third Party Watch weblog archives for June, 2005.


My Rhodes Experience: "Pak sar zameen shad-bad"
On 03 Oct, 2012, the Rhodes class of 2012 had their official group photo taken at the Rhodes House. I had initially planned to go dressed in a suit, but on the morning of the group photo, I felt that Shalwar Kameez was the right choice. And so, dressed in a black kameez and white shalwar, I arrived at the Rhodes House. It was a very pleasant day, one of the rare sunny ones here in Oxford. We were all taken to the Rhodes House garden and asked to stand in the order of our heights, which is a always a fun sorting activity. Then the photographer started picking out people for the front row, and he chose me for it too, yippee! After the photograph was done, out individual portraits were taken, and it was around this time that the Rhodes scholars from all the different constituencies started to sing their national anthems. First were the South Africans, then the Indians and then I was asked to sing my national anthem, and so I sang the solo.
"Pak sar zameen shad-bad". Standing there in the Rhodes garden, I felt like a child again, singing the national anthem in my school assembly.
"Pak sar zameen ka nizam". It also felt as if I was reciting the words from my heart for the first time, my first national anthem.
"Parcham-e-Sitara-o-Hilal". That day I went back and found the national anthem in Urdu and put up a print out in my room, to remind me always of this beautiful emotion.
I sing it at school everyday...;)And tomorrow morning,while singing it,I'll think about the persistence of change.


text:
Q: Installing cairo on Ubuntu/Heroku - what's my Heroku superuser? When I follow the instructions to install cairo, logged into my Heroku shell, with
~ $ su apt-get install libcairo2-dev

(http://www.cairographics.org/download/)
I get
password:
Does anyone know if a Heroku account gives you superuser access? No password I know of works.
Ultimately, I am trying to accomplish installing R with PNG support, which has a dependency on cairo for chart output.

A: Installing something directly on a Dyno has no effect: the dyno's filesystem is reverted back to its "original" (post-compilation, what's know as "slug") every reboot, or every time a new dyno is spun up for your app.
To have Cairo, you need to add it as part of your slug's build process. You can either:
1) Read up on Vulcan (https://github.com/heroku/vulcan) and do it yourself, or:
2) Use a build pack that already has Cairo (buildpacks: https://devcenter.heroku.com/articles/third-party-buildpacks#using-a-custom-buildpack; one that has Cairo: https://github.com/rumblelabs/heroku-buildpack-cairo for example, or https://github.com/mojodna/heroku-buildpack-nodejs#cairo)

A: You are not root. You forgot "sudo". How is this related to Heroku?


text:
(async function() {
  TestRunner.addResult(`Tests traceCalls(fn) console command.\n`);
  await TestRunner.loadLegacyModule('sources'); await TestRunner.loadTestModule('sources_test_runner');
  await TestRunner.loadLegacyModule('console'); await TestRunner.loadTestModule('console_test_runner');
  await TestRunner.showPanel('sources');
  await TestRunner.evaluateInPagePromise(`
      function simpleTestFunction()
      {
         return 0;
      }
    `);
  await TestRunner.evaluateInPagePromise(`
      function simpleTestFunction2()
      {
         return simpleTestFunction3();
      }

      function simpleTestFunction3()
      {
         return 0;
      }
    `);

  var currentSourceFrame;
  SourcesTestRunner.setQuiet(true);
  SourcesTestRunner.runDebuggerTestSuite([
    function testSimpleMonitor(next) {
      monitorAndRun(next, 'simpleTestFunction', 'simpleTestFunction();');
    },

    function testSimpleMonitorWith1Arg(next) {
      monitorAndRun(next, 'simpleTestFunction', 'simpleTestFunction(1);');
    },

    function testSimpleMonitorWithManyArgs(next) {
      monitorAndRun(next, 'simpleTestFunction', 'simpleTestFunction(1, 2, 3, 4 ,5);');
    },

    function testSimpleUnmonitor(next) {
      ConsoleTestRunner.evaluateInConsole('monitor(simpleTestFunction2)');
      ConsoleTestRunner.evaluateInConsole('unmonitor(simpleTestFunction2)');
      monitorAndRun(next, 'simpleTestFunction3', 'simpleTestFunction2();');
    },

    function testUnmonitorFuntionNotMonitored(next) {
      ConsoleTestRunner.evaluateInConsole('monitor(simpleTestFunction)', next);
    }
  ]);

  function monitorAndRun(next, functionName, runCmd) {
    ConsoleTestRunner.evaluateInConsole('monitor(' + functionName + ')');
    TestRunner.addResult('Start monitoring function.');

    ConsoleTestRunner.evaluateInConsole('setTimeout(function() { ' + runCmd + ' }, 0)');
    TestRunner.addResult('Set timer for test function.');
    ConsoleTestRunner.waitUntilMessageReceived(didReceive);

    function didReceive(message) {
      if (message.type === SDK.ConsoleMessage.FrontendMessageType.Result) {
        ConsoleTestRunner.waitUntilMessageReceived(didReceive);
        return;
      }

      TestRunner.addResult('Console message received: ' + message.messageText);
      ConsoleTestRunner.evaluateInConsole('unmonitor(' + functionName + ')');
      TestRunner.addResult('Stop monitoring.');
      next();
    }
  }
})();

redpajama_set_name: RedPajamaGithub


We absolutely love these Sacred geometry necklaces, earrings & pendants made of precious healing stones, with crystals, and beautiful strands of gem beads assembled by Scalar Heart Collection. Each piece is hand made by an artisan family in India and the artist.
Sacred geometry necklaces, earrings, and pendants made with healing stones and crushed crystals by Scalar Heart Collection.


text:
heritage chronicle sa
rail junctions
heritage guide
U N E S C O W O R L D H E R I T A G E S I T E
R o b b e n I s l a n d
Oh the sea is cold and the sky is grey
Look across the Island into the Bay
We are all islands till comes the day
We cross the burning water
Asimbonanga, Johnny Clegg
The sediments creating the bedrock of the island were laid down between 900/800 million years ago, and the changing sea levels over substantial time altered the physical shape and approximately 12,000 years ago the sea rose to cause the channel between it and the mainland.
There is the possibility that stone age peoples had access to the island, but that is still subject to archaeological exploration.
From the 17th century, the Dutch settlers utilised Robben Island as a prison and for the isolation of mainly political prisoners, with its first prisoner assumed to be Autshumato. Among its early permanent inhabitants were political leaders from various Dutch colonies, including Indonesia, and the leader of the mutiny on the slave ship Meermin.
Due to the maritime danger that Robben Island presented to shipping, Jan van Riebeeck ordered that bonfires were to be lit at night on top of Fire Hill, the highest point on the island, now Minto Hill). The first recorded shipwreck was in 1611, of the Yeanger of Horn, while searching for profits from seal oil. A number of other ships were wrecked on the island's shores, amongst others the Schapenjach in 1660, the Dageraad in 1694, the Flora in 1821 and the Perseverance in 1826. Ten years later the Gondolier was wrecked. In 1865 Robben Island lighthouse was completed on the hill.
After the British Royal Navy captured several Dutch East Indiamen at the battle of Saldanha Bay in 1781, a boat rowed out to meet the British warships. On board were the 'Kings of Ternate and Tidore, and the princes of the respective families'. They had long held them on "Isle Robin", but then were moved to Saldanha Bay.
In 1806 the Scottish whaler John Murray opened a whaling station at a sheltered bay on the north-eastern shore of the island which became known as Murray's Bay, adjacent to the site of the present-day harbour named Murray's Bay Harbour which was constructed in 1939-40.
After a failed uprising at Grahamstown in 1819, the fifth of the Xhosa Wars, the British colonial government sentenced African leader Makanda Nxele to life imprisonment on the island. He drowned on the shores of Table Bay after escaping.
The island was also used as a leper colony and animal quarantine station. After the leper colony in Hemel-en-Aarde was deemed unsatisfactory the victims were moved to Robben Island, in 1845, on a voluntary basis. In April 1891 the cornerstones for 11 new buildings to house lepers were laid. After the introduction of the Leprosy Repression Act in May 1892 admission was no longer voluntary and the movement of the lepers was restricted.
Leper Church also known as the Church of the Good Shepherd, designed by Herbet Baker and completed 1895.
The leper graveyard.
During the Second World War the island was fortified and BL 9.2-inch guns and 6-inch guns were installed as part of the defences for Cape Town.
From 1961, Robben Island was used by the South African government as a prison for political prisoners and convicted criminals. In 1969 the Moturu Kramat, which is now a sacred site for Muslim pilgrimage on Robben Island, was built to commemorate Sayed Abdurahman Moturu, the Prince of Madura. Moturu, who was one of Cape Town's first imams, was exiled to the island in the mid-1740s. He died there in 1754.
The maximum security prison for political prisoners closed in 1991. The medium security prison for criminal prisoners was closed five years later.
World War II gun battery.
The lime quarry where prisoners had to toil in the dazzling sunlight.
The Commissioners's house.
Garrison Church, 1841, on instructions by Captain Robert Wolfe, island commandant.
The lighthouse on Robben Island, standing on the highest point, Minto's Hill.
Photographs by Chris Murphy www.christopherj.photo.com
The island is managed by Robben Island Museum, which operates the site as a living museum and in 1999 it was declared a UNESCO World Heritage Site.
Website: www.robben-island.org.za


Hereby a overview of the news archive of December 2017.
Today Luc van Agt celebrates his birthday.Now he is 62 years old.The Supportersclub of PSV congratulates Luc van Agt with his birthday.
Today Rigo celebrates his birthday.Now he is 19 years old.The Supportersclub of PSV congratulates Rigo with his birthday.
Today Van Ginkel celebrates his birthday.Now he is 25 years old.The Supportersclub of PSV congratulates Van Ginkel with his birthday.


The ombre dip-dye finish invites Bisque customers to choose between 4-6 shades. These are carefully applied from light to dark to each Classic during a special application process. This new finish also takes advantage of Bisque's colour-matching service, where it can cater to popular paint brands such as Farrow & Ball and Little Greene. As all ombre radiators are made bespoke to order, they offer the perfect solution for discerning homeowners.


text:
package org.pentaho.di.trans.steps.fileinput.text;

import org.apache.commons.io.IOUtils;
import org.apache.commons.vfs2.FileObject;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
import org.mockito.Mockito;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.RowSet;
import org.pentaho.di.core.exception.KettleFileException;
import org.pentaho.di.core.fileinput.FileInputList;
import org.pentaho.di.core.playlist.FilePlayListAll;
import org.pentaho.di.core.row.RowMeta;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.row.value.ValueMetaString;
import org.pentaho.di.core.util.Assert;
import org.pentaho.di.core.variables.Variables;
import org.pentaho.di.core.vfs.KettleVFS;
import org.pentaho.di.junit.rules.RestorePDIEngineEnvironment;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.TransTestingUtil;
import org.pentaho.di.trans.step.StepDataInterface;
import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.trans.step.errorhandling.AbstractFileErrorHandler;
import org.pentaho.di.trans.step.errorhandling.FileErrorHandler;
import org.pentaho.di.trans.steps.StepMockUtil;
import org.pentaho.di.trans.steps.file.BaseFileField;
import org.pentaho.di.trans.steps.file.IBaseFileInputReader;
import org.pentaho.di.utils.TestUtils;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;

public class TextFileInputTest {
  @ClassRule public static RestorePDIEngineEnvironment env = new RestorePDIEngineEnvironment();

  @BeforeClass
  public static void initKettle() throws Exception {
    KettleEnvironment.init();
  }

  private static InputStreamReader getInputStreamReader( String data ) throws UnsupportedEncodingException {
    return new InputStreamReader( new ByteArrayInputStream( data.getBytes( ( "UTF-8" ) ) ) );
  }

  @Test
  public void testGetLineDOS() throws KettleFileException, UnsupportedEncodingException {
    String input = "col1\tcol2\tcol3\r\ndata1\tdata2\tdata3\r\n";
    String expected = "col1\tcol2\tcol3";
    String output =
        TextFileInputUtils.getLine( null, getInputStreamReader( input ), TextFileInputMeta.FILE_FORMAT_DOS,
            new StringBuilder( 1000 ) );
    assertEquals( expected, output );
  }

  @Test
  public void testGetLineUnix() throws KettleFileException, UnsupportedEncodingException {
    String input = "col1\tcol2\tcol3\ndata1\tdata2\tdata3\n";
    String expected = "col1\tcol2\tcol3";
    String output =
        TextFileInputUtils.getLine( null, getInputStreamReader( input ), TextFileInputMeta.FILE_FORMAT_UNIX,
            new StringBuilder( 1000 ) );
    assertEquals( expected, output );
  }

  @Test
  public void testGetLineOSX() throws KettleFileException, UnsupportedEncodingException {
    String input = "col1\tcol2\tcol3\rdata1\tdata2\tdata3\r";
    String expected = "col1\tcol2\tcol3";
    String output =
        TextFileInputUtils.getLine( null, getInputStreamReader( input ), TextFileInputMeta.FILE_FORMAT_UNIX,
            new StringBuilder( 1000 ) );
    assertEquals( expected, output );
  }

  @Test
  public void testGetLineMixed() throws KettleFileException, UnsupportedEncodingException {
    String input = "col1\tcol2\tcol3\r\ndata1\tdata2\tdata3\r";
    String expected = "col1\tcol2\tcol3";
    String output =
        TextFileInputUtils.getLine( null, getInputStreamReader( input ), TextFileInputMeta.FILE_FORMAT_MIXED,
            new StringBuilder( 1000 ) );
    assertEquals( expected, output );
  }

  @Test( timeout = 100 )
  public void test_PDI695() throws KettleFileException, UnsupportedEncodingException {
    String inputDOS = "col1\tcol2\tcol3\r\ndata1\tdata2\tdata3\r\n";
    String inputUnix = "col1\tcol2\tcol3\ndata1\tdata2\tdata3\n";
    String inputOSX = "col1\tcol2\tcol3\rdata1\tdata2\tdata3\r";
    String expected = "col1\tcol2\tcol3";

    assertEquals( expected, TextFileInputUtils.getLine( null, getInputStreamReader( inputDOS ),
        TextFileInputMeta.FILE_FORMAT_UNIX, new StringBuilder( 1000 ) ) );
    assertEquals( expected, TextFileInputUtils.getLine( null, getInputStreamReader( inputUnix ),
        TextFileInputMeta.FILE_FORMAT_UNIX, new StringBuilder( 1000 ) ) );
    assertEquals( expected, TextFileInputUtils.getLine( null, getInputStreamReader( inputOSX ),
        TextFileInputMeta.FILE_FORMAT_UNIX, new StringBuilder( 1000 ) ) );
  }

  @Test
  public void readWrappedInputWithoutHeaders() throws Exception {
    final String content = new StringBuilder()
      .append( "r1c1" ).append( '\n' ).append( ";r1c2\n" )
      .append( "r2c1" ).append( '\n' ).append( ";r2c2" )
      .toString();
    final String virtualFile = createVirtualFile( "pdi-2607.txt", content );

    TextFileInputMeta meta = createMetaObject( field( "col1" ), field( "col2" ) );
    meta.content.lineWrapped = true;
    meta.content.nrWraps = 1;

    TextFileInputData data = createDataObject( virtualFile, ";", "col1", "col2" );

    TextFileInput input = StepMockUtil.getStep( TextFileInput.class, TextFileInputMeta.class, "test" );
    List<Object[]> output = TransTestingUtil.execute( input, meta, data, 2, false );
    TransTestingUtil.assertResult( new Object[] { "r1c1", "r1c2" }, output.get( 0 ) );
    TransTestingUtil.assertResult( new Object[] { "r2c1", "r2c2" }, output.get( 1 ) );

    deleteVfsFile( virtualFile );
  }

  @Test
  public void readInputWithMissedValues() throws Exception {
    final String virtualFile = createVirtualFile( "pdi-14172.txt", "1,1,1\n", "2,,2\n" );

    BaseFileField field2 = field( "col2" );
    field2.setRepeated( true );

    TextFileInputMeta meta = createMetaObject( field( "col1" ), field2, field( "col3" ) );
    TextFileInputData data = createDataObject( virtualFile, ",", "col1", "col2", "col3" );

    TextFileInput input = StepMockUtil.getStep( TextFileInput.class, TextFileInputMeta.class, "test" );
    List<Object[]> output = TransTestingUtil.execute( input, meta, data, 2, false );
    TransTestingUtil.assertResult( new Object[] { "1", "1", "1" }, output.get( 0 ) );
    TransTestingUtil.assertResult( new Object[] { "2", "1", "2" }, output.get( 1 ) );

    deleteVfsFile( virtualFile );
  }

  @Test
  public void readInputWithNonEmptyNullif() throws Exception {
    final String virtualFile = createVirtualFile( "pdi-14358.txt", "-,-\n" );

    BaseFileField col2 = field( "col2" );
    col2.setNullString( "-" );

    TextFileInputMeta meta = createMetaObject( field( "col1" ), col2 );
    TextFileInputData data = createDataObject( virtualFile, ",", "col1", "col2" );

    TextFileInput input = StepMockUtil.getStep( TextFileInput.class, TextFileInputMeta.class, "test" );
    List<Object[]> output = TransTestingUtil.execute( input, meta, data, 1, false );
    TransTestingUtil.assertResult( new Object[] { "-" }, output.get( 0 ) );

    deleteVfsFile( virtualFile );
  }

  @Test
  public void readInputWithDefaultValues() throws Exception {
    final String virtualFile = createVirtualFile( "pdi-14832.txt", "1,\n" );

    BaseFileField col2 = field( "col2" );
    col2.setIfNullValue( "DEFAULT" );

    TextFileInputMeta meta = createMetaObject( field( "col1" ), col2 );
    TextFileInputData data = createDataObject( virtualFile, ",", "col1", "col2" );

    TextFileInput input = StepMockUtil.getStep( TextFileInput.class, TextFileInputMeta.class, "test" );
    List<Object[]> output = TransTestingUtil.execute( input, meta, data, 1, false );
    TransTestingUtil.assertResult( new Object[] { "1", "DEFAULT" }, output.get( 0 ) );

    deleteVfsFile( virtualFile );
  }
  @Test
  public void testErrorHandlerLineNumber() throws Exception {
    final String content = new StringBuilder()
      .append( "123" ).append( '\n' ).append( "333\n" )
      .append( "345" ).append( '\n' ).append( "773\n" )
      .append( "aaa" ).append( '\n' ).append( "444" )
      .toString();
    final String virtualFile = createVirtualFile( "pdi-2607.txt", content );

    TextFileInputMeta meta = createMetaObject( field( "col1" ) );

    meta.inputFields[0].setType( 1 );
    meta.content.lineWrapped = false;
    meta.content.nrWraps = 1;
    meta.errorHandling.errorIgnored = true;
    TextFileInputData data = createDataObject( virtualFile, ";", "col1" );
    data.dataErrorLineHandler = Mockito.mock( FileErrorHandler.class );
    TextFileInput input = StepMockUtil.getStep( TextFileInput.class, TextFileInputMeta.class, "test" );

    List<Object[]> output = TransTestingUtil.execute( input, meta, data, 4, false );

    Mockito.verify( data.dataErrorLineHandler ).handleLineError( 4, AbstractFileErrorHandler.NO_PARTS );
    deleteVfsFile( virtualFile );
  }

  @Test
  public void testHandleOpenFileException() throws Exception {
    final String content = new StringBuilder()
      .append( "123" ).append( '\n' ).append( "333\n" ).toString();
    final String virtualFile = createVirtualFile( "pdi-16697.txt", content );

    TextFileInputMeta meta = createMetaObject( field( "col1" ) );

    meta.inputFields[ 0 ].setType( 1 );
    meta.errorHandling.errorIgnored = true;
    meta.errorHandling.skipBadFiles = true;

    TextFileInputData data = createDataObject( virtualFile, ";", "col1" );
    data.dataErrorLineHandler = Mockito.mock( FileErrorHandler.class );

    TestTextFileInput textFileInput = StepMockUtil.getStep( TestTextFileInput.class, TextFileInputMeta.class, "test" );
    StepMeta stepMeta = textFileInput.getStepMeta();
    Mockito.doReturn( true ).when( stepMeta ).isDoingErrorHandling();

    List<Object[]> output = TransTestingUtil.execute( textFileInput, meta, data, 0, false );

    deleteVfsFile( virtualFile );

    assertEquals( 1, data.rejectedFiles.size() );
    assertEquals( 0, textFileInput.getErrors() );
  }

  @Test
  public void test_PDI17117() throws Exception {
    final String virtualFile = createVirtualFile( "pdi-14832.txt", "1,\n" );

    BaseFileField col2 = field( "col2" );
    col2.setIfNullValue( "DEFAULT" );

    TextFileInputMeta meta = createMetaObject( field( "col1" ), col2 );

    meta.inputFiles.passingThruFields = true;
    meta.inputFiles.acceptingFilenames = true;
    TextFileInputData data = createDataObject( virtualFile, ",", "col1", "col2" );

    TextFileInput input = Mockito.spy( StepMockUtil.getStep( TextFileInput.class, TextFileInputMeta.class, "test" ) );

    RowSet rowset = Mockito.mock( RowSet.class );
    RowMetaInterface rwi = Mockito.mock( RowMetaInterface.class );
    Object[] obj1 = new Object[2];
    Object[] obj2 = new Object[2];
    Mockito.doReturn( rowset ).when( input ).findInputRowSet( null );
    Mockito.doReturn( null ).when( input ).getRowFrom( rowset );
    Mockito.when( input.getRowFrom( rowset ) ).thenReturn( obj1, obj2, null );
    Mockito.doReturn( rwi ).when( rowset ).getRowMeta();
    Mockito.when( rwi.getString( obj2, 0 ) ).thenReturn( "filename1", "filename2" );
    List<Object[]> output = TransTestingUtil.execute( input, meta, data, 0, false );

    List<String> passThroughKeys = new ArrayList<>( data.passThruFields.keySet() );
    Assert.assertNotNull( passThroughKeys );
    // set order is not guaranteed - order alphabetically
    passThroughKeys.sort( String.CASE_INSENSITIVE_ORDER );
    assertEquals( 2, passThroughKeys.size() );

    Assert.assertNotNull( passThroughKeys.get( 0 ) );
    Assert.assertTrue( passThroughKeys.get( 0 ).startsWith( "0_file" ) );
    Assert.assertTrue( passThroughKeys.get( 0 ).endsWith( "filename1" ) );

    Assert.assertNotNull( passThroughKeys.get( 1 ) );
    Assert.assertTrue( passThroughKeys.get( 1 ).startsWith( "1_file" ) );
    Assert.assertTrue( passThroughKeys.get( 1 ).endsWith( "filename2" ) );

    deleteVfsFile( virtualFile );
  }

  private TextFileInputMeta createMetaObject( BaseFileField... fields ) {
    TextFileInputMeta meta = new TextFileInputMeta();
    meta.content.fileCompression = "None";
    meta.content.fileType = "CSV";
    meta.content.header = false;
    meta.content.nrHeaderLines = -1;
    meta.content.footer = false;
    meta.content.nrFooterLines = -1;

    meta.inputFields = fields;
    return meta;
  }

  private TextFileInputData createDataObject( String file,
                                              String separator,
                                              String... outputFields ) throws Exception {
    TextFileInputData data = new TextFileInputData();
    data.files = new FileInputList();
    data.files.addFile( KettleVFS.getFileObject( file ) );

    data.separator = separator;

    data.outputRowMeta = new RowMeta();
    if ( outputFields != null ) {
      for ( String field : outputFields ) {
        data.outputRowMeta.addValueMeta( new ValueMetaString( field ) );
      }
    }

    data.dataErrorLineHandler = mock( FileErrorHandler.class );
    data.fileFormatType = TextFileInputMeta.FILE_FORMAT_UNIX;
    data.filterProcessor = new TextFileFilterProcessor( new TextFileFilter[ 0 ], new Variables() );
    data.filePlayList = new FilePlayListAll();
    return data;
  }
  private static String createVirtualFile( String filename, String... rows ) throws Exception {
    String virtualFile = TestUtils.createRamFile( filename );

    StringBuilder content = new StringBuilder();
    if ( rows != null ) {
      for ( String row : rows ) {
        content.append( row );
      }
    }
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    bos.write( content.toString().getBytes() );

    try ( OutputStream os = KettleVFS.getFileObject( virtualFile ).getContent().getOutputStream() ) {
      IOUtils.copy( new ByteArrayInputStream( bos.toByteArray() ), os );
    }

    return virtualFile;
  }

  private static void deleteVfsFile( String path ) throws Exception {
    TestUtils.getFileObject( path ).delete();
  }

  private static BaseFileField field( String name ) {
    return new BaseFileField( name, -1, -1 );
  }

  public static class TestTextFileInput extends TextFileInput {
    public TestTextFileInput( StepMeta stepMeta, StepDataInterface stepDataInterface, int copyNr, TransMeta transMeta,
                              Trans trans ) {
      super( stepMeta, stepDataInterface, copyNr, transMeta, trans );
    }

    @Override
    protected IBaseFileInputReader createReader( TextFileInputMeta meta, TextFileInputData data, FileObject file )
      throws Exception {
      throw new Exception( "Can not create reader for the file object " + file );
    }
  }
}


text:
More than just a step ahead
ACES has recently taken on a new high technology tool, the "Raptor" Electric Patrol Vehicle (EPV) as part of security operations. The Raptor will greatly enhance public interfacing and safety roles whilst adding value and efficiency to ACES security operations. An increase in patrol distances covered and frequency of point checks 8 - 10 times that of foot patrols can be expected from the EPV.
The Raptor EPV will also enable ACES guards to safely, quietly and efficiently patrol diverse indoor and outdoor locations and respond rapidly and effectively to any emergency situation, all with zero emissions.
It's over-car, high visibility, and attention grabbing properties provide operator safe mobility and an unmistakeable security presence, which has been proven to help reduce crime in various hotspots.
The Raptor is road registered with high efficiency electric hub motors, enabling it to travel up to 60 kilometres on one overnight charge, and up to 15,000 kilometres on approximately $100 of generated electricity. Alternately, it can be used continuously 24/7 through the use of "hot swap" battery sets.
ACES are proudly an early adopter of this new security technology, which is an environmentally sustainable transport solution that assists with combating climate change through reduced CO2 pollution production.
# Events
ACES support the Sydney Children's Hospital Foundation


Actress Park Bo Young and Girl's Day's Minah became instant best friends in "1 Night, 2 Days" despite meeting for the first time.
In the recent broadcast of KBS variety show "1 Night, 2 Days", Girl's Day member Minah, Koyote's Shinji, Park Bo Young, Moon Geun Young, Kim Sook and Lee Jung Hyun appeared as special guests.
The female stars appeared in the show for the 'Girl-Person Friend Special' episode.
Park Bo Young and Minah became teammates with Cha Tae Hyun and Defconn. Despite being the first time that the two stars met, they became best friends instantly.
Park Bo Young and Minah got along easily since the two of them were the youngest participants in the show and they even have similar looks!
Netizens could not resist the charms of the two and have given light to Park Bo Young's comment about her friendships in the past.
What do you think of Park Bo Young and Minah's blossoming friendship?
Were you able to watch them in the recent episode of "1 Night, 2 Days"?
Leave a comment through the box below to share your thoughts!


text:
class Profile::TagsController < ApplicationController

  load_resource :profile, singleton: true,
                          find_by: :username,
                          id_param: :username

  load_resource :tag, class: ActsAsTaggableOn::Tag,
                      find_by: :slug,
                      id_param: :slug

  expose(:profile) { @profile.decorate }
  expose(:current_tag) { @tag.decorate }

  expose(:gists) do
    MyGists::Search.for :gists, profile: @profile,
                                tag: @tag,
                                private: can?(:read_private_gists, @profile),
                                page: params[:page]
  end

  expose(:tags) do
    MyGists::Search.for :tags, profile: @profile,
                               private: can?(:read_private_tags, @profile)
  end

  before_filter :refresh_gists, only: :index, if: :user_signed_in?

  def index
    respond_to do |format|
      format.js { render layout: false }
    end
  end

  def show
    respond_to { |format| format.html }
  end

  protected
  # Internal: Refreshes gists for the signed in user's profile, if the signed
  #           in user owns the profile. If the signed in user is visiting
  #           another user's profile, do not refresh the gists.
  #
  # Returns nothing.
  def refresh_gists
    MyGists::Refresh.for(@profile) if can?(:refresh_gists, @profile)
  end
end


The Inland Rivers, Ports & Terminals Inc. and the Port of Greater Baton Rouge are hosting the IRPT Annual Conference on April 23-25 in Baton Rouge.
Are you heading to the west coast next week? If you're looking for great activities and events to check out in Vancouver from April 14-20, check out this list!


Police are appealing for information after a caravan was stolen from Buxton over the weekend.
The incident occurred on Saturday at around 4.10pm on Mosley Road when the hitch lock on the caravan, which was parked on the drive, was removed and it was towed away with a silver coloured Rover.
One offender is described as being a white male, in his late 50s, around 5'10" tall, with balding grey hair, tubby around the stomach and wearing glasses. A further two, both male, are described as being around 14 to 15-years-old and wearing jeans with one wearing a navy coloured shirt.
Anyone with any information, or who saw anything suspicious, should contact PC 14177 Dean Cutts on 101, quoting crime number 31509/15.


text:
News Members Joey Ramone 1992 — 10 Stupid Questions Ramones of the Day
Joey Ramone
Dee Dee Ramone
Tommy Ramone
Elvis Ramone
C.J. Ramone
Andy Warhol's fifteen minutes, New York, USA 1987
1992 — 10 Stupid Questions Ramones of the Day
The Ramones are the rarest of punk pioneers: They're all still alive. They haven't disintegrated into an embarrassing lounge act. They still put out viable records--as in their latest release, Acid Eaters. This year marks the 20th anniversary of the Ramones' first performance, and we asked lead singer Joey Ramone to recall it for us. «Uh, it's not real vivid in my mind,» says the former party animal, with a laugh.
— Fortunately, he remembers other stuff. Who started punk?
Everyone thinks the British, but we did when we started in '74. When we played London in 1977, people like Johnny Rotten [of the Sex Pistols], the Clash, and the Damned all told us we were responsible.
— If you won' a $10 million sweepstakes, how would you spend It?
I'd start my own radio station--a dream I've had for years. I'm a product of AM, and I want to bring back free-form radio, but make it contemporary. I'd call it WILD and play bands like the Ramones, the Stooges, Motor-head, the Beatles, Nirvana, and Pearl Jam.
— What's always In your fridge?
It used to be just a six-pack, but I'm kind of healthy now, SO mineral water. My only vices are coffee and the occasional Bounty bar. I even clean my house. What's happening to me?
— What three people should be permanently sent to the biosphere?
Oh boy. Saddam Hussein. And that guy from Operation Rescue--Randall Terry. And La Toya Jackson. She's talentless and annoying — I can't stand her.
— What subject Interested you most In school?
Biology. And English. I had a really good teacher once. We'd bring in records and discuss them. I remember bringing in the first Turtles album. But most of my teachers were the sickest perverts, weirdos, and fascists.
— Who was on your school lunchbox?
I went with the Jetsons. Or the Monkees.
— What's the most embarrassing album In your collection?
Back in the '70s, I never would have admitted to liking the Eagles. But they had some good songs.
— Who does your laundry?
Mostly I'll drop it off. Once in a while it's fun to do myself, but you've got to get in a laundry state of mind. It's a spur of the moment thing.
— Can you Imagine yourself as an old man?
God, I hate to think about it.I hope I'll be open-minded and optimistic. I hope I finally have my act together.
— Do you have a favorite holiday?
I hate holidays. At 40, he's reformed but still knows how to rock & roll
Heather Delaney, www.officialramones.com
© 2001—2018 www.ramones.ru | about


The Ordinary and Extraordinary Mass - $14.95 : Best Catholic Posters, Get the Catholic Perspective!
What is the difference between the Ordinary Form of the Mass and the Extraordinary Form of the Mass?
Do they share ANY similarities?
If so, what would the similarities be?
This handy 19"x27" wall chart shows you, line by line, how the different parts of the Catholic Mass are arranged in both Ordinary and Extraordinary Forms.
Use this poster in middle school, high school and RCIA instruction or just for your own instruction!


text:
Q: Data Model for multiple checkboxes I currently have a supplier table and now I want to store the regions served by each supplier.

<form method="post" action="/Tests/Post/">
    <fieldset>
        <legend>What is Your Served Region ?</legend>
        <input type="checkbox" name="served_region" value="Europe">Europe

        <input type="checkbox" name="served_region" value="Asia">Asia

        <input type="checkbox" name="served_region" value="Africa">Africa

        <input type="submit" value="Submit now" />
    </fieldset>
</form>

As a first thought, I made my supplier model like this :
CREATE TABLE supliers (
  supplier_id SERIAL PRIMARY KEY NOT NULL,
  name VARCHAR(255),
  email VARCHAR(255) UNIQUE NOT NULL,
  servesAfrica BOOLEAN NOT NULL DEFAULT false,
  servesEurope BOOLEAN NOT NULL DEFAULT false,
  servesAsia BOOLEAN NOT NULL DEFAULT false
);

Does this seem to be a good pattern? Especially for queries to filter suppliers by region served etc.
Is this solution still reliable if in the future I want to add more regions?

A:
Is this solution still reliable if in the future I want to add more regions?

No. Adding another region entails:

*

*adding a new column to the database table

*amending your application code to reference that new column

Changing the data model and application code in a live application is always a pain point. (Precisely how much pain depends on your change process.)
A better design would be to have a table of REGIONS and an intersection table of SUPPLIER_REGIONS. Build your application around that structure and adding a new region is merely a matter of a some insert statements.
CREATE TABLE suppliers (
  supplier_id SERIAL PRIMARY KEY NOT NULL,
  name VARCHAR(255),
  email VARCHAR(255) UNIQUE NOT NULL
);
CREATE TABLE regions (
  region_id SERIAL PRIMARY KEY NOT NULL,
  region_name VARCHAR(255)
);
CREATE TABLE supplier_regions (
  supplier_id SERIAL NOT NULL,
  region_id SERIAL PRIMARY KEY NOT NULL,
  constraint supplier_regions_pk primary key (supplier_id, region_id),
  constraint supplier_regions_supplier_fk foreign key (supplier_id) references suppliers (supplier_id),
  constraint supplier_regions_region_fk foreign key (region_id) references regions (region_id)
);

Is it optimal to create an additional table for just 3 values: Europe, Africa and Asia?

Optimality is in the eye of the beholder.
Consider another change: let's add CUSTOMERS into the mix. We want to know which region our customers belong to. Also we add WAREHOUSES, and want to know in which region they are located. Now we want to know: which is the best Warehouse to store products from Supplier X? Which is the best Warehouse for deliveries to Customer Y? Having a single REGIONS table to join multiple dependent tables makes answering such questions a lot easier than joining flag columns on entity tables.

your proposed solution will make it possible to do operations on the region table like adding more fields (translate name etc)

That's a good insight. One of the purposes on data modelling is to drive out all the core entities in the domain. Things for which we want to store multiple attributes need to be independent tables.

A: I think you need something more normalized like the one below.
This way you can also add new regions without changing the schema of the tables.
In your example, you would need to add new columns in the case of a new region.
In the below you need only add new lines.
CREATE TABLE regions (
  id SERIAL PRIMARY KEY NOT NULL,
  name VARCHAR(255) NOT NULL
);

CREATE TABLE suppliers (
  supplier_id SERIAL PRIMARY KEY NOT NULL,
  name VARCHAR(255),
  email VARCHAR(255) UNIQUE NOT NULL,
  region_id INT NOT NULL,
  CONSTRAINT fk_regions
    FOREIGN KEY (region_id)
    REFERENCES regions(id)
);

If you are looking for a more "analytical" layer, i.e. not that normalized, the following could also work, only you would be duplicating the "region_name" heavily.
CREATE TABLE suppliers (
  supplier_id SERIAL PRIMARY KEY NOT NULL,
  name VARCHAR(255),
  email VARCHAR(255) UNIQUE NOT NULL,
  region_name VARCHAR(255)
);

A: Agree with romborimba, although if I got you right, your can have multiple regions assigned to a single supplier. In this case I'd use a binding table
QuickSQL
Binding_tbl
  ID
  Supplier_ID
    ID
    NAME
    EMAIL
  REGION_ID
    ID
    NAME


text:
package nozzle.auth

import scala.concurrent.ExecutionContext

import scalaz._
import Scalaz._
import scalaz.EitherT._

import nozzle.webresult._
import nozzle.monadicctrl._

package monadicctrl {
  // type A <: Authenticator

  class Controller[A <: Authenticator](authenticator: A)(implicit executionContext: ExecutionContext) {
    def login(credentials: authenticator.type#LoginCredentials): FutureCtrlFlow[A#AuthCredentials] = eitherT {
      authenticator.login(credentials).map {
        case Some((_, authCredentials)) => authCredentials.right
        case None => WebError.InvalidCredentials.left
      }
    }

  }
}


The Sylvester Comprehensive Cancer Center and Department of Biochemistry and Molecular Biology at the University of Miami Miller School of Medicine has an exciting opportunity for a Postdoctoral Scholar. This position will work in Dr. Feng-Chun Yang's laboratory. We are searching for two highly-motivated Postdoctoral Scholars with strong interest in scientific environments with multidisciplinary expertise encompassing epigenetics and cancer.These positions are part of a new NIH-T32 funded project. The proposed program will provide trainees with the ideal platform for successful careers as scientists, physicians, scientific administrators, and entrepreneurs that will identify novel agents and devices to treat cancer. The University of Miami T32 Program is a two-year full time program with the goal to expose trainees to state-of-the-art resources and technology in cancer epigenetics research, such as specialized animal models, therapeutic targeting, and personalized epigenetic therapies, and complex genomics and bioinformatics in order to help train the future leaders of the field. The program will continue to contribute throughout the trainees' independent careers to the improved understanding of mechanisms underlying genome-wide epigenetic regulation of chromatin dynamics, ultimately resulting in the development of novel therapeutics in cancer that can be applied in a context of personalized medicine.Please note that this position is eligible to receive limited benefits through the University of Miami.
Ph.D, M.D., or other doctoral-level degree. Per this research grant, must be a United States citizen, permanent resident of the United States, a non-citizen national, or must have been lawfully admitted for permanent residence and possess an Alien Registration Receipt Card (I-151 or I-551) or some other verification of legal admission as a permanent resident. Must be available for a full-time, twelve month appointment and agree to undertake a minimum of two years of research, research training, or comparable experiences from the time of appointment. Please note that the University of Miami is an at-will employer and cannot guarantee continued employment for the time period stated. Continued employment is contingent upon continued funding and satisfactory work performance.
Nomination letter from a T32 Mentor. You must identify a T32 specific mentor from the Mentor List and be accepted to their lab in order to qualify.
A description of your background (bio-sketch).
A 2-3 page detailed description of the actual research plan.


I come to you because you understand.
That's why I know I need your help.
My only hope is your love for me.
I'm reaching out so desperately.
Come take my hand, take all of me, just as I am.
2. Oh Lord you made what's broken new.
Why can't I learn, to follow you?
I want to know you, to feel you in my soul, I surrender all control.
Un adevăr puțin nefast; Nebunii, buni sunt în popor, Căci pun lumina în contrast Cu bezna grea din capul lor.


Ulūpī or Uloopi (also known as Uluchi or Uloochi), is a character in the Hindu epic Mahabharata. The daughter of Kouravya, the king of serpents, she was the second among the four wives of Arjuna. She also finds a mention in the Vishnu Purana and the Bhagavata Purana.
Ulupi is said to have met and married Arjuna when he was in exile; she had a son with him, Iravan. She played a major part in the upbringing of Babruvahana, Arjuna's son with Chitrāngadā. She is also credited with redeeming Arjuna from the curse of the Vasus by restoring his life after he was slain in a battle by Babruvahana.
Little is said about Ulupi in the Mahabharata. Ulupi is known by numerous names in the Mahabharata—Bhujagatmaja, Bhujagendrakanyaka, Bhujagottama, Kauravi, Kauravyaduhita, Kauravyakulanandini, Pannaganandini, Pannagasuta, Pannagatmaja, Pannagesvarakanya, Pannagi, and Uragatmaja. Ulupi is described as a mythical form of a Nagakanya (Naga princess), half-maiden and half-serpent. Michael Mott in his Caverns, Cauldrons, and Concealed Creatures described Ulupi as "partly reptilian" – the portion below the waist resembles that of a snake or a crocodile.
Ulupi was the daughter of Kouravya, a descendant of Naga the human head with snaketail. Her father ruled the underwater kingdom of serpents in the Ganga river. Ulupi was a well-trained warrior.
Arjuna, the third Pandava brother, is exiled from Indraprastha—the capital city of the kingdom—to go on a one-year pilgrimage as a penance for violating the terms of his marriage to Draupadi, the brothers' common wife. Accompanied by Brahmins, Arjuna goes to north-eastern region of present-day India. One day when he bathes in the Ganga river to perform his rituals, the current pulls him inside the river. He later realises that it was Ulupi, the Naga princess, who "grasped" and pulled him into the river. She held him with her hands and traveled at her will. They finally ended up in an underwater kingdom, the abode of Kourvaya. Arjuna saw a sacrificial fire in the place and offered his rites in the fire. Agni was pleased with Arjuna's "unhesitating offering of oblations".
Delighted by her act, Arjuna inquires Ulupi about her background. She reveals her lineage and admits that she had fallen in love with him. Arjuna, however, declines her proposal citing his celibacy on his pilgrimage. Ulupi argues that his celibacy is limited only to Draupadi, Arjuna's first wife. Convinced by her argument, he marries her and spends a night with her. A son named Iravan was born to them. Pleased by Arjuna, Ulupi grants him a boon that all animals that live under water will obey him and he will be invincible under the water.
The Vasus, Bhishma's brothers, cursed Arjuna after he killed Bhishma through treachery in the Kurukshetra War. When Ulupi heard of the curse, she sought the help of her father, Kouravya. Her father went to Ganga, Bhishma's mother, and requested her for a relief from the curse. Upon hearing him, Ganga said that Arjuna would be killed by his own son, Babruvahana—Arjuna's son through Chitrāngadā—and brought back to life when Ulupi places a gem called Nagamani on his chest.
Following her father's advice, Ulupi instigates Babruvahana to fight Arjuna. When Arjuna goes to Manipur with the horse intended for the Aswamedha sacrifice, the king Babruvahana, as directed by Ulupi, challenges Arjuna for a duel. In the fierce battle that took place between them, both are mangled by the other's arrows. Finally, Arjuna is mortally wounded and is killed by his son when he shoots a powerful arrow at him. Chitrāngadā rushes to the spot and abuses Ulupi for instigating Babruvahana to fight Arjuna. Repenting of his deed, Babruvahana is determined to kill himself, but is promptly stopped by Ulupi. She goes to her kingdom and brings the Nagamani. When she places the Nagamani on Arjuna's chest, his life is restored, thus relieving him of the Vasus' curse. When brought back to his life, Arjuna becomes happy to see Ulupi, Chitrāngadā, and Babruvahana. He takes all of them to Hastinapur.
Upon the onset of the Kali Yuga, the Pandavas along with Draupadi retired and left the throne to their only heir Arjuna's grandson, Parikshit. Giving up all their belongings and ties, they made their final journey of pilgrimage to the Himalayas, accompanied by a dog. Ulupi went back to her kingdom in the Ganga river.
^ Vettam 1975, p. 806.
^ Wheeler, James Talboys (1867). The History of India from the Earliest Ages: The Vedic period and the Mahá Bhárata. N. Trübner. p. 572.
^ Steiger, Brad (2010). Real Monsters, Gruesome Critters, and Beasts from the Darkside. Visible Ink Press. p. 150. ISBN 978-1-57859-345-3.
^ Mott, Wm Michael (2011). Caverns, Cauldrons, and Concealed Creatures: A Study of Subterranean Mysteries in History, Folklore, and Myth. Grave Distractions Pub. p. 98. ISBN 978-0-9829128-7-4.
^ Vogel 1926, p. 208.
^ Vettam 1975, p. 19.
^ a b c Debroy 2010, sec.Arjuna-vanavasa Parva.
^ Vettam 1975, p. 96.
^ a b Vettam 1975, p. 332.
^ Vettam 1975, p. 54.
^ Thadani 1931, pp. 185–186.
^ a b Ganguli, Kisari Mohan (1883–1896). "SECTION LXXXI". The Mahabharata: Book 14: Anugita Parva. Internet Sacred Text Archive. Retrieved 3 April 2016.
^ a b c d e Vettam 1975, p. 97.
^ Ganguli, Kisari Mohan (1883–1896). "SECTION LXXIX". The Mahabharata: Book 14: Anugita Parva. Internet Sacred Text Archive. Retrieved 3 April 2016.
^ Ganguli, Kisari Mohan (1883–1896). "SECTION LXXX". The Mahabharata: Book 14: Anugita Parva. Internet Sacred Text Archive. Retrieved 3 April 2016.
^ Ganguli, Kisari Mohan (1883–1896). "SECTION 1". The Mahabharata: Book 17: Mahaprasthanika Parva. Internet Sacred Text Archive. Retrieved 3 April 2016.
Debroy, Bibek (2010). The Mahabharata: Volume 2. Penguin Books. p. 536. ISBN 978-0-14-310013-3.
This page was last edited on 6 April 2019, at 07:21 (UTC).