text:
Bloom Free
Print HTML Forward Facebook Twitter Reddit 微博 QQ空间 百度贴吧
"Our motherland is like a garden, and we, the colorful flowers," the song goes.
Dear motherland, I would love to be one of the colors and add to your beauty. But before that, please let me bloom into my own.
September 8, 2013, I was on my way home. "2020 already? God, I'm old!" I exclaimed, when I heard the news that Tokyo won the bid to host the 2020 Olympics. "London 2012 and Beijing 2008 still feel like just yesterday!" After I pulled myself out of this bout of pretentious self-pitying, the news flooded me with a torrent of reminiscences that carried me from the moment when Beijing won its own bid in 2001 and then to the opening ceremonies of the Beijing and London Olympic Games. When I finally snapped back to reality, I was smiling—but with tearful eyes.
Let me begin with these three very special moments. In 2001, I was 12 years old. On July 13, the day when candidate cities delivered their final presentations to the International Olympic Committee members, I glued myself to the television, not wanting to miss a single second of it. For me, being there for my country in critical moments like that was an outright obligation. When Juan Antonio Samaranch, then IOC president, announced Beijing's victory, I, like many Chinese, was immersed in a night of tearful exuberance. It was only instinctual for me to have that level of patriotic devotion and pride.
Came 2008, and I turned 19. And yes, August 8 was another whole day of "being there for my country." On top of that, I had my mom get me two mini flags, and I would cheer and wave them in front of the TV. Again, I felt obliged to capture every moment with my full attention, as if deep regret would haunt me if I hadn't. Eight past eight—the ceremony began, and I invited a close Indian friend of mine to join me over Skype so that I could explain to him the profound cultural significance behind every set. To every impressed gasp of his, my heart beat with unspeakable pride and enthusiasm—spreading to the world my love for my motherland was such a blessed calling.
I couldn't help but wonder, however, why it always seems to take a special "international" occasion for my patriotic love to burn ever so passionately? I believe underneath the fire is a desire for recognition—recognition from the world. This is something every citizen raised in China can relate to because our education taught us repetitively about the transformation our nation has gone through: from the humiliation of the Opium War and being called the "sick man of Asia," to the glory of the founding of New China and the Reform and Opening Up. This sentiment of getting recognized for the extraordinary comeback has become part of our national psyche, evident not only on big occasions like the Olympics, where the nation's image is on full display, but also in our everyday life as ordinary citizens. Even here at graduate school in the United States, whenever I receive praise from my professors and colleagues, I can sense the presence of the "international recognition" element in my joy.
I started to think more deeply about this when watching the opening ceremony of the London Olympics. It was 2012. I was 23. In the four years since the Beijing Olympics, I had traveled the longest and the most complicated of personal journeys. Ignorance is bliss, indeed. With more learning, reading, and thinking over the years, my understanding of things grew more sophisticated, and my thinking on China's future, more solemn, with the feeling of increasing weight on my shoulders. Since then, the world has not been the same: it's no longer filled with pink marshmallows—even though that innocent, childlike heart of mine remains unchanged. I am no longer content just to watch the calm ocean. I need to go into the depths to find answers, even if it means swimming against the soaring waves. This is perhaps the cost—as well as the gain—of growing up.
I was not the only one who watched the London Olympics opening ceremony just to compare it with Beijing's, but I was looking at it from a different angle. Instead of pitting them against each other in competition, I was curious to see how each of these two nations—one, as one of the oldest civilizations, and the other, as the vanguard of industrialization—would, on the Olympic stage, highlight its rich legacy and contributions to the world that cannot be ignored.
If I have only one word to describe each presentation: "uniformity" for Beijing and "chaos" for London. The 2,008 percussionists chanting words from the Analects of Confucius while beating the fou drums with surreal synchronization formed a stark contrast to the London performers, who seemed to each be doing his or her own thing—playing the various roles of farmers, Union workers, and suffragettes, against the backdrop of seven big chimneys that signified the Industrial Revolution.
For me, the divide between "uniformity" and "chaos" speaks to a greater difference between two underlying rationales for the ceremonies: Beijing deployed the individuals to showcase the glory of its civilization, while London used civilization as the stage to glorify the individual. But the difference in staging points to something of greater significance: the staging is an expression of how each state relates to its people.
It has been said that anthropologist Margaret Mead once stated, "Never doubt that a small group of thoughtful, committed citizens can change the world; indeed, it's the only thing that ever has." Thanks to the unprecedented advancement of information and communication technology and social media, the crowd of the "small group of thoughtful, committed citizens" of the world—the heart and moving force of civil society—is getting larger, speaking louder, and growing stronger. The civil society that initiated the change in the Arab world was the same civil society that provided much needed assistance after a magnitude 8 earthquake struck my dear home province of Sichuan in 2008 when official disaster relief efforts proved insufficient. Civil society is fundamentally an institution that embodies the collective desire of citizens to solve problems on their own, and it shares with government the same problem-solving function. As such, it is an institution to be nurtured by the government for the greater good of the people.
One song we grew up singing is called "Our Motherland Is Like a Garden." The first line goes like this: "Our motherland is like a garden, and we, the colorful flowers." If we borrow the symbols from this song, the state-citizen relationship of the "Beijing model" can be understood as one between the flowers and the gardener. To achieve a most colorful garden, the gardener would arrange the flowers' position, manage their nutrients, and monitor their growth. In contrast, the state-citizen relationship of the "London model" is more like one between the flowers and the garden: each flower, with the nutrients provided in the soil, grows freely in its own natural course, with the garden patiently waiting for the day when all the flowers are in full bloom. The latter is what the leaders of China should aim for when they proclaim the governing principles of "putting people first," "biding our time," and "rising with accumulated strength."
In other words, the Chinese government needs to come to the realization that it was people who wrote the nation's five thousand years of history. China's success requires the restoration of the people as the agents of its political life. "The great rejuvenation of the Chinese nation" should not be constructed as a government-led national project with each citizen shouldering a share of the "rejuvenation" responsibility. Instead, it should be viewed as a natural result of positive citizen-state interactions. As I have previously mentioned, the "recognition" sentiment—a byproduct of the "humiliation" education and "rejuvenation" campaign—has penetrated into the national psyche as well as political and cultural life. We urgently need to change course.
The Beijing and London "models" can also be applied to the relationships among parents, children, educators, and students. There are already extensive and heated discussions in China regarding the lack of individuality and creativity of Chinese students compared to Western students, and the harm of rote learning and exam-oriented education, so I will not elaborate on that here. What I would like to highlight, rather, is the often overlooked correlation between China's current political life and the education of the next generation.
Initiatives such as promoting the rule of law and implementing education reform are needed, but they are, in my view, not the most urgent tasks for our nation today. I believe the foremost priority is to change the national subconsciousness of uniformity and synchronization, which can be found in every facet of Chinese society. This subconsciousness is essentially a distorted obsession with control and imposition of authority and an intolerance of behaviors that depart from what is prescribed by the authorities. This obsession—a disease, in fact—stifles civil society and, therefore, impedes the natural, intellectual growth of a nation. It undermines civil society's ability to function as the harbinger of our time and critic for better governance.
In parallel, teachers and parents arbitrarily put their students and children on an assembly line and manufacture a future generation in the image they desire. Now, to teach is no longer to educate, and the children are deprived of the opportunity to develop into their own selves. But education is not flower arrangement; it is flower cultivation. Children and students should be the agents of growth and education, with parents and educators being the supporters and nurturers. Our children will only be themselves when they are granted the freedom to know themselves.
Granted, it is extremely difficult to eradicate a deep-rooted tenet. But we must, in order to enter a virtuous cycle of history. It is my firm conviction that this great nation has an extraordinary cohesion formed throughout its long history, and the emergence of Chinese civil society has caught the world's attention. Meanwhile, the Chinese leadership also possesses a remarkable machinery of mobilization. If this machinery can be put to a good use to restore the greatness and impact of the people themselves in making history, that would be the nation's greatest blessing.
September 8, 2013. That flag-waving little girl in front of the television watching the Beijing Olympics in 2008 has now traveled half the globe. She still harbors the deepest love for her homeland and will always be there for her as she did before, but now with a more mature, rational, and constructive approach. Then I smiled: after all these years trying my hardest to bloom freely, I have passed that breakthrough moment of springing from the darkness in the soil to the brightness in the sun—I'm now joyfully budding. That thought also makes me sad, because so many people have yet to have the opportunity to taste the wonderfulness of blooming free.
I returned home, humming the melody of "Our Motherland Is Like A Garden." But I was singing my own song: "We, the flowers, are beautiful, hence the garden-like motherland. Watching us sway in the breeze of freedom, our Mother smiles."
Nakshatra is a 24-year-old Chengdu native who is passionate about Western studies and political science. Once an aspiring simultaneous interpreter, she currently is pursuing her Master's degree in human rights and democratic governance in Washington, D.C., after rekindling her childhood interests during a year studying in Prague, Czech Republic.


text:
Les transports en commun en Belgique sont assurés par de nombreux modes de transport en ayant recours à des entreprises
aux statuts variés.

Historique

Caractéristiques

Modes de transport

Autobus
Dès 1924, la SNCV eut droit de mettre en place ses premières lignes d'autobus pour compléter son réseau ferré et tenter, sans beaucoup de succès, de faire face à la concurrence de services d'autobus privés se développant de manière anarchique.

Dans le cadre de la régionalisation de la Belgique, la Loi du  prononce la dissolution de la SNCV dans la ligne de la Loi du  transférant aux Régions la tutelle des transports urbains et régionaux. Les transports régionaux désignent dans les textes législatifs les transports vicinaux, c'est-à-dire ceux organisés par la Société nationale des chemins de fer vicinaux.

L'Arrêté Royal du  transfère les missions, biens, droits et obligations de la SNCV, avec effet rétroactif au , à deux organismes régionaux : la Vlaamse Vervoer Maatschappij (VVM) connue sous la dénomination commerciale De Lijn en Région flamande et la Société régionale wallonne du transport (SRWT) connue sous la dénomination commerciale TEC en Région wallonne. Cela représente la fin effective de la SNCV et la suppression de la distinction juridique entre transports urbains et vicinaux au profit de la nouvelle définition de transports régionaux, c'est-à-dire de transports organisés sous la tutelle d'une Région.

Depuis la régionalisation des transports en 1991, 3 sociétés de transport gèrent l'exploitation des lignes de bus : SRWT (Wallonie), STIB (Région de Bruxelles-Capitale) et Delijn (Région Flamande).

Autocar

Avion

Bateau-bus

Metro

Taxi

Train

La  Société nationale des chemins de fer belges (SNCB), en néerlandais   (NMBS), est l'entreprise publique autonome belge créée en 1926, qui exploite le réseau ferré belge.

Plus précisément, le , la SNCB-Holding fusionne avec sa filiale SNCB, qui disparaît, et change de nom en reprenant la dénomination SNCB. Elle devient une entreprise ferroviaire au statut d'entreprise publique autonome détenue par l'État Belge. En parallèle Infrabel conserve sa qualité de gestionnaire du réseau mais devient également une entreprise publique autonome détenue par l'État Belge. Une troisième entreprise SA de droit public, dénommée HR Rail, est créée. C'est une filiale à parts égales de la nouvelle SNCB et d'Infrabel, dont au moins 2 % des actions et 60 % des droits de votes sont détenus par l'État Belge. Elle est l'employeur unique de l'ensemble du personnel de la SNCB et d'Infrabel

Tramway

Trolleybus

Véhicules touristiques

Autres modes

Notes et références

Voir aussi
 Transport en Belgique
 Transport ferroviaire en Belgique
 Musée des transports en commun de Wallonie

redpajama_set_name: RedPajamaWikipedia


text:
BREAKING! Ramakrishna Mission College wins highest NAAC grade
GetBengal Information Desk
16 December, 2019 13:46:47
Home / BREAKING! Ramakrishna Mission College wins highest NAAC grade
Ramakrishna Mission Vivekananda Education and Research Institute (deemed to be university) has bagged the highest grade of A++ by National Assessment and Accreditation Council (NAAC). Not just the college even Ramakrishna Mission Vidyapith Purulia has received winning accolades by bagging the best school award from the school education department of West Bengal Government.
RKM has also won Pravasi Bharatiya Samman Award for its service in South Africa. These accolades are a feather to PKM College's cap specially in a year when Ramakrishna Mission and the Math commemorated the 125th anniversary of Swami Vivekananda's historic address at the World's Parliament of Religions in Chicago, USA.
Manisha Pailan, the real-life story of an acid attack survivor
I still seek for my freedom in this Free Land
Kolkata scientist who helped Dr Subhas Mukhopadhyay to create India's first test-tube baby

redpajama_set_name: RedPajamaCommonCrawl


It is not at all difficult to dry your very own roses utilizing a volcano vaporizer and volcano vaporizer accessories and after that integrate them into something gorgeous like a rose arrangement. Making and drying out climbed arrangements is a pleasurable pastime as well as the end product that you obtain will amaze you. You won't think how talented you truly are till you put that wonderful arrangement made with your very own roses in a vase for everyone to enjoy.
The process of drying out roses utilizing a volcano vaporizer and volcano vaporizer accessories is fairly very easy and also there are 2 key methods to do it. The majority of people favor air drying their roses. This drying out approach is utilized most successfully when roses are simply opening from the bud stage. All you need to do is locate a dry, dark location in which to hang them upside down for concerning 2 weeks. After a couple of weeks they will certainly be rather brittle, so make use of care when you handle them.
Another way of drying out roses (desiccant drying out) is the approach best made use of on roses that have currently opened up entirely. To do desiccant drying out, you will certainly require tall container as well as silica gel crystals. The silica gel crystals need to cover your roses as soon as the flowers are put on end in your container. Make sure that the container is secured firmly after the silica gel remains in location. Shop the sealed container at area temperature level and your roses must be completely dried and also all set to use in concerning 10 days.
Bouquets constructed out of roses are one of the most charming by far. They have an attractive fragrance, even when dried, making them that far more enticing. The best rose bouquets result from great preparation. Begin by gathering together everything you need prior to you start in fact placing your arrangement with each other. Determine if you want to utilize one color or maybe a mix of colors and afterwards select the roses dried by volcano vaporizer and volcano vaporizer accessories you require. Ensure that you have a pair of sharp scissors, some environment-friendly floral tape and also working with ribbon. Place your bouquet together and after that utilize the floral tape to safeguard the stems. Lastly, utilize your bow to hide the tape and also to include additional shade to your arrangement.
Making as well as drying climbed arrangements can be a fun project, especially when you use flowers from your own yard or usage flowers that have emotional value. They keep for a long period of time to ensure that you will always be advised of how vital they were (and also still are!) to you. If you are looking for more information on volcano vaporizer and volcano vaporizer accessories, please visit:https://digitalvaporizersale.com.


text:
<?php

import('lib.pkp.tests.WebTestCase');

class FunctionalDOIPubIdPluginTest extends WebTestCase {
	private
		$pages,
		$objectTypes = array('Article', 'Issue', 'Galley', 'SuppFile'); // order is significant!

	/**
	 * @see WebTestCase::getAffectedTables()
	 */
	protected function getAffectedTables() {
		return array(
			'journal_settings', 'plugin_settings', 'issues', 'issue_settings',
			'published_submissions', 'submissions', 'submission_settings',
			'submission_files', 'submission_galleys', 'submission_galley_settings',
			'article_supplementary_files', 'article_supp_file_settings',
			'event_log', 'event_log_settings', 'notifications', 'sessions'
		);
	}

	/**
	 * BACKGROUND:
	 *   GIVEN I am on the journal settings page step 1 (details)
	 *
	 * @see WebTestCase::setUp()
	 */
	protected function setUp() {
		parent::setUp();

		// OJS pages and Selenium locators required for test.
		$this->pages = array(
			// journal setup
			'journal-setup' => array(
				'url' => $this->baseUrl.'/index.php/test/manager/setup/%id'
			),

			// DOI plug-in settings
			'settings' => array(
				'url' => $this->baseUrl.'/index.php/test/manager/plugins',
				'doiPrefix' => 'css=input[id^="doiPrefix"]',
				'reassignDOIs' => 'css=a[id^="doiSettingsForm-reassignDOIs-button"]',
				'formError' => '//ul[@class="pkp_form_error_list"]//a[@href="#%id"]'
			),

			// public pages
			'issue' => array(
				'url' => $this->baseUrl.'/index.php/test/issue/view/%id',
				'visible' => '//a[@id="pub-id::doi"]'
			),
			'article' => array(
				'url' => $this->baseUrl.'/index.php/test/article/view/%id',
				'visible' => '//a[@id="pub-id::doi"]',
				'DC-meta' => '//meta[@name="DC.Identifier.DOI"]@content',
				'Google-meta' => '//meta[@name="citation_doi"]@content'
			),
			'article-rt-indexing' => array(
				'url' => $this->baseUrl.'/index.php/test/rt/metadata/%id/0',
				'visible' => '//tr/td[text()="Digital Object Identifier"]/../td[last()]'
			),
			'article-rt-citations-apa' => array(
				'url' => $this->baseUrl.'/index.php/test/rt/captureCite/%id/0/ApaCitationPlugin',
				'visible' => 'id=citation'
			),
			'galley' => array(
				'url' => $this->baseUrl.'/index.php/test/article/view/%id/1',
				'visible' => '//a[@id="pub-id::doi"]',
				'DC-meta' => '//meta[@name="DC.Identifier.DOI"]@content',
				'Google-meta' => '//meta[@name="citation_doi"]@content'
			),
			'suppfile' => array(
				'url' => $this->baseUrl.'/index.php/test/rt/suppFileMetadata/%id/0/1',
				'visible' => '//tr/td[text()="Digital Object Identifier"]/../td[last()]'
			),

			// meta-data editing pages
			'metadata-issue' => array(
				'url' => $this->baseUrl.'/index.php/test/editor/issueData/%id',
				'urlSuffix' => 'id=publicIssueId'
			),
			'metadata-article' => array(
				'url' => $this->baseUrl.'/index.php/test/editor/viewMetadata/%id',
				'urlSuffixPage' => $this->baseUrl.'/index.php/test/editor/issueToc/%id',
				'urlSuffix' => 'name=publishedArticles[1]'
			),
			'metadata-galley' => array(
				'url' => $this->baseUrl.'/index.php/test/editor/editGalley/%id/1',
				'urlSuffix' => 'id=publicGalleyId'
			),
			'metadata-suppfile' => array(
				'url' => $this->baseUrl.'/index.php/test/editor/editSuppFile/%id/1',
				'urlSuffix' => 'id=publicSuppFileId'
			)
		);

		// The meta-data pages have uniform structure.
		foreach ($this->objectTypes as $objectType) {
			$objectType = strtolower_codesafe($objectType);
			$this->pages["metadata-$objectType"] += array(
				'doi' => '//div[@id="pub-id::doi"]',
				'doiInput' => '//div[@id="pub-id::doi"]//input',
				'formError' => '//ul[@class="pkp_form_error_list"]//a[@href="#%id"]'
			);
		}

		// Start Selenium.
		$this->start();

		// Log in to OJS as admin.
		$this->logIn();

		// Open the DOI settings page.
		$this->openSettingsPage();
	}

	/**
	 * SCENARIO OUTLINE: Display of DOIs for various journal objects
	 *    WHEN I enable DOIs for {object type}
	 *     AND I open up the {object page}
	 *    THEN an issue DOI will appear on that page in the given {display format}.
	 *
	 * EXAMPLES:
	 *   object type | object page                              | display format
	 *   ============|==========================================|============================
	 *   issue       | .../issue/view/1                         | visible (10.xxxx/xxx)
	 *   article     | .../article/view/1                       | visible (10.xxxx/xxx),
	 *               |                                          |   DC <meta>, Google <meta>
	 *   article     | .../rt/metadata/1/0                      | visible (10.xxxx/xxx)
	 *   article     | .../rt/captureCite/1/0/ApaCitationPlugin | visible (APA citation)
	 *   galley      | .../article/view/1/1                     | visible (10.xxxx/xxx)
	 *               |                                          |   DC <meta>, Google <meta>
	 *   supp file   | .../rt/suppFileMetadata/1/0/1            | visible (10.xxxx/xxx)
	 *
	 * SCENARIO OUTLINE: Standard pattern for suffix generation
	 *    WHEN I select the "default pattern" suffix generation strategy
	 *    THEN DOI suffixes for {object type} must follow a certain
	 *         {default pattern} where %j stands for the initials of the journal,
	 *         %v for the issue's volume, %i for the issue number, %a, %g, %s for
	 *         the internal OJS article, galley and supp file IDs respectively,
	 *         and %p for the page number.
	 *
	 * EXAMPLES:
	 *   object type | default pattern
	 *   ============|================
	 *   article     | %j.%v%i.%a
	 *   issue       | %j.%v%i
	 *   galley      | %j.%v%i.%a.g%g
	 *   supp file   | %j.%v%i.%a.s%s
	 */
	public function testDoiDisplayWithDefaultPatternOnAllPages() {
		// Enable DOIs with default settings for all objects.
		$this->configureDoi(true);

		// Check whether the expected display formats exist for
		// the various object types and whether the suffix is
		// correctly generated according to the default pattern.
		$expectedDois = array(
			'issue' => '10.1234/t.v1i1',
			'article' => '10.1234/t.v1i1.1',
			'article-rt-indexing' => '10.1234/t.v1i1.1',
			'article-rt-citations-apa' => 'doi:10.1234/t.v1i1.1',
			'galley' => '10.1234/t.v1i1.1.g1',
			'suppfile' => '10.1234/t.v1i1.1.s1'
		);
		foreach ($expectedDois as $objectType => $expectedDoi) {
		    // There should be no DOI meta-data field for this suffix generation strategy.
		    if (strpos($objectType, '-rt-') === false) {
				$this->checkMetadataPage($objectType, $editable = false, $expectedDoi, 1, true);
		    }
		    // DOIs should be generated for all object pages automatically.
			$this->checkDoiDisplay($objectType, $expectedDoi);
		}
	}

	/**
	 * SCENARIO OUTLINE: Disabled DOIs
	 *    WHEN I disable DOIs for {object type}
	 *     AND I open up the {object page}
	 *    THEN no issue DOI will appear anywhere on that page.
	 *
	 * EXAMPLES:
	 *   object type | object page
	 *   ============|==========================================
	 *   issue       | .../issue/view/1
	 *   article     | .../article/view/1
	 *   article     | .../rt/metadata/1/0
	 *   article     | .../rt/captureCite/1/0/ApaCitationPlugin
	 *   galley      | .../article/view/1/1
	 *   supp file   | .../rt/suppFileMetadata/1/0/1
	 */
	public function testDoiDisabled() {
		// Disable DOIs for all objects.
		$tests = array(
			'Issue' => 'issue',
			'Article' => 'article',
			'Article' => 'article-rt-indexing',
			'Article' => 'article-rt-citations-apa',
			'Galley' => 'galley',
			'SuppFile' => 'suppfile'
		);
		foreach ($tests as $objectType => $page) {
			$this->configureDoi($objectType);
			$this->checkDoiDisplay($page, false);
		}
	}

	/**
	 * SCENARIO OUTLINE: Individual journal prefix
	 *    WHEN I set the {DOI prefix}
	 *    THEN all DOIs for issues, articles, galleys and supp files
	 *         must start with that prefix (i.e. {DOI prefix}/xxx).
	 *
	 * EXAMPLES:
	 *   DOI prefix
	 *   ==========
	 *      10.1234
	 *      10.4321
	 */
	public function testDoiPrefix() {
		// Test 10.1234 example.
		$this->configureDoi(true, '10.1234');
		$this->checkDoiDisplay('article', '10.1234/t.v1i1.1');

		// Test 10.4321 example.
		$this->configureDoi(true, '10.4321');
		$this->checkDoiDisplay('article', '10.4321/t.v1i1.1');
	}

	/**
	 * SCENARIO OUTLINE: Custom pattern for suffix generation
	 *    WHEN I select the "custom pattern" suffix generation strategy
	 *    THEN DOI suffixes for {object type} must be generated according to
	 *         the GIVEN {custom pattern} where %j stands for the initials of the
	 *         journal, %v for the issue's volume, %i for the issue number, %a, %g,
	 *         %s for the internal OJS article, galley and supp file IDs respectively,
	 *         %p for the page number and %Y for the publication year.
	 *
	 * EXAMPLES:
	 *   object type | custom pattern
	 *   ============|==================
	 *   issue       | jor%j.%Y.vol%v
	 *   article     | jor%j.iss%i.art%a
	 *   galley      | jor%j.art%a.gal%g
	 *   supp file   | jor%j.art%a.suf%s
	 */
	public function testDoiCustomSuffixPattern() {
		// Configure custom pattern.
		$customPattern = $this->getCustomPatternArray();
		$this->configureDoi(true, '10.1234', 'doiSuffix', $customPattern);

		// Check the results.
		$expectedDois = array(
			'issue' => '10.1234/jort.2011.vol1',
			'article' => '10.1234/jort.iss1.art1',
			'galley' => '10.1234/jort.art1.gal1',
			'suppfile' => '10.1234/jort.art1.suf1'
		);
		foreach ($expectedDois as $objectType => $expectedDoi) {
			$this->checkDoiDisplay($objectType, $expectedDoi);
			$this->checkMetadataPage($objectType, $editable = false, $expectedDoi);
		}
	}

	/**
	 * SCENARIO: Empty custom pattern not allowed
	 *    WHEN I select the "individual DOI suffix" option
	 *     AND I do not enter any suffix generation patterns
	 *         for an enabled publishing object
	 *    THEN an error message should alert me that I must
	 *         enter a pattern for enabled objects
	 *     AND no error message appears when leaving fields
	 *         of non-enabled publishing objects empty.
	 */
	public function testDoiCustomSuffixPatternEmptyNotAllowed() {
		// Select the "individual DOI suffix" option.
		$this->click('id=doiSuffix');

		// Make sure that DOIs for all object types
		// are enabled but that their suffix patterns are empty.
		foreach ($this->objectTypes as $objectType) {
			$this->check("id=enable${objectType}Doi");
			$this->type("id=doi${objectType}SuffixPattern", '');
		}

		// Try to save settings.
		$this->submitAjaxForm('doiSettingsForm');

		// Now we should find error messages for all four object
		// types.
		foreach ($this->objectTypes as $objectType) {
			$formError = str_replace(
				'%id', "doi${objectType}SuffixPattern",
				$this->pages['settings']['formError']
			);
			$this->assertElementPresent($formError);
		}

		// Disable DOIs for an object type and the
		// corresponding error message should disappear.
		foreach ($this->objectTypes as $objectType) {
			$this->uncheck("id=enable${objectType}Doi");
			$this->submitAjaxForm('doiSettingsForm');
			$this->assertLocation('exact:' . $this->getUrl('settings') . '#formErrors');
			$formError = str_replace(
				'%id', "doi${objectType}SuffixPattern",
				$this->pages['settings']['formError']
			);
			$this->assertElementNotPresent($formError);
		}
	}

	/**
	 * SCENARIO OUTLINE: Suffix generation based on custom ID (custom URL suffix)
	 *    WHEN I select the "custom identifier" option
	 *    THEN the {generated DOI} for a GIVEN {object type} must be equal
	 *         to the prefix plus the {custom identifier} or - in the absence of such
	 *         an identifier - equal to the internal {object id} of the corresponding
	 *         publication object
	 *     AND the internal id - if used - must be preceded by some unique object type
	 *         dependent letter to avoid duplicate DOIs, except for articles where no
	 *         letter will be used to maintain backwards compatibility.
	 *
	 * EXAMPLES:
	 *   object type | custom identifier  | object id | generated DOI
	 *   ============|====================|===========|===========================
	 *   issue       | issue_url          |         1 | 10.1234/issue_url
	 *   issue       |                    |         1 | 10.1234/i1
	 *   article     | article_url        |         1 | 10.1234/article_url
	 *   article     |                    |         1 | 10.1234/1
	 *   galley      | article_galley_url |         1 | 10.1234/article_galley_url
	 *   galley      |                    |         1 | 10.1234/g1
	 *   supp file   | supp_file_url      |         1 | 10.1234/supp_file_url
	 *   supp file   |                    |         1 | 10.1234/s1
	 */
	public function testDoiSuffixIsCustomUrlSuffix() {
		// Configure the custom URL (a.k.a. publisher ID) suffix generation method.
		$this->configureDoi(true, '10.1234', 'doiSuffixPublisherId');
		// Enable custom URL suffixes.
		$this->configurePublisherIds(true);

		// Enter test URL-suffixes.
		$testUrlSuffixes = array(
			'issue' => 'issue_url',
			'article' => 'article_url',
			'galley' => 'galley_url',
			'suppfile' => 'supp_file_url',
		);

		// Check whether DOIs are generated based on these suffixes.
		foreach ($testUrlSuffixes as $objectType => $testUrlSuffix) {
			$this->setUrlSuffix($objectType, $testUrlSuffix);
			$expectedDoi = "10.1234/${testUrlSuffix}";
			$this->checkDoiDisplay($objectType, $expectedDoi);
			$this->checkMetadataPage($objectType, $editable = false, $expectedDoi);
		}

		// Delete DOIs generated so far.
		$this->deleteExistingDois();

		// Check whether DOIs are generated by "best id" when no suffix is given.
		$expectedDoisWithoutUrlSuffix = array(
			'issue' => '10.1234/i1',
			'article' => '10.1234/1',
			'galley' => '10.1234/g1',
			'suppfile' => '10.1234/s1',
		);
		foreach ($expectedDoisWithoutUrlSuffix as $objectType => $expectedDoi) {
			$this->setUrlSuffix($objectType, '');
			$this->checkDoiDisplay($objectType, $expectedDoi);
		}

		// Disable custom URL suffixes.
		$this->configurePublisherIds(false);
	}

	/**
	 * SCENARIO OUTLINE: Check for duplicate url suffixes across object types
	 *   GIVEN I already assigned the custom identifier "doitest" to
	 *         a {publication object} in the database
	 *    WHEN I select the "custom identifier" option
	 *     AND I navigate to the {meta-data page} of another object
	 *     AND I enter that same custom identifier for the other object
	 *     AND I click the "Save" button
	 *    THEN the object will not be saved
	 *     AND the form will redisplay with an error message "...".
	 *
	 * EXAMPLES:
	 *   publication object | meta-data page
	 *   ===================|========================
	 *   issue              | editor/editSuppFile/1/1
	 *   article            | editor/issueData/1
	 *   galley             | editor/viewMetadata/1
	 *   supp file          | editor/editGalley/1/1
	 */
	public function testCheckForDuplicateUrlSuffixesAcrossObjectTypes() {
		// This test is not about testing the settings GUI so
		// configure DOIs via the database which is faster.
		$pubIdPlugins = PluginRegistry::loadCategory('pubIds');
		$doiPlugin = $pubIdPlugins['DOIPubIdPlugin'];
		$doiPlugin->updateSetting(1, 'doiSuffix', 'publisherId');
		$journalDao = DAORegistry::getDAO('JournalDAO'); /* @var journalDao JournalDAO */
		$journal = $journalDao->getById(1);
		foreach($this->objectTypes as $objectType) {
			$journal->updateSetting('enablePublic' . $objectType . 'Id', true);
		}

		// Assign object types to DAO names and methods.
		$daos = array(
			'Issue' => array('IssueDAO', 'getById', 'updateObject'),
			'Article' => array('PublishedArticleDAO', 'getPublishedArticleByArticleId', 'updateObject'),
			'Galley' => array('ArticleGalleyDAO', 'getById', 'updateObject'),
			'SuppFile' => array('SuppFileDAO', 'getSuppFile', 'updateSuppFile')
		);

		// Test examples.
		$examples = array(
			'Issue' => 'SuppFile',
			'Article' => 'Issue',
			'Galley' => 'Article',
			'SuppFile' => 'Galley'
		);

		// Go through all object types.
		foreach($this->objectTypes as $objectType) {
			try {
				// Assign the URL suffix "doitest" to an object
				// with the given object type. Again, this is not
				// to test the DOI so we do it directly in the
				// database.
				$dao = DAORegistry::getDAO($daos[$objectType][0]);
				// Retrieve the object.
				$object = $dao->$daos[$objectType][1](1);
				// Set its URL suffix to 'doitest'.
				$object->setStoredPubId('publisher-id', 'doitest');
				// Due to the 'unconventional' implementation of the article
				// DAOs we have to manually change our DAO for article update.
				if (is_a($object, 'PublishedArticle')) $dao = $dao->articleDao;
				// Update the object.
				$dao->$daos[$objectType][2]($object);

				// Navigate to the meta-data page given in the example
				// and enter the (duplicate) URL suffix "doitest" and
				// try to save the form.
				$targetObjectType = $examples[$objectType];
				$this->setUrlSuffix(strtolower_codesafe($targetObjectType), 'doitest');

				// Check that the form is being redisplayed with an error.
				$expectedErrorMessage = "The public identifier 'doitest' already exists.*";
				if ($targetObjectType == 'Article') {
					// We expect a notification in the case of article
					// URL suffixes as they are edited in the issue toc
					// which is not a form.
					$this->waitForLocation(
						'exact:'.str_replace('%id', '1', $this->pages['metadata-article']['urlSuffixPage'])
					);
					$this->waitForText('css=.ui-pnotify-text', $expectedErrorMessage);
				} else {
					// All other target objects are edited in forms and should
					// produce a form error.
					$metadataPage = 'metadata-' . strtolower_codesafe($targetObjectType);
					$this->assertText(
						str_replace(
							'%id', "public${targetObjectType}Id",
							$this->pages[$metadataPage]['formError']
						),
						$expectedErrorMessage
					);
				}
			} catch(Exception $e) {
				$objectType = strtolower_codesafe($objectType);
				$targetObjectType = strtolower_codesafe($targetObjectType);
				throw $this->improveException($e, "example $objectType / $targetObjectType");
			}
		}
	}

	/**
	 * SCENARIO OUTLINE: Suffix generation based on custom ID (URL independent)
	 *    WHEN I select the "individual DOI suffix" option
	 *    THEN I see an input field for the individual identifier
	 *         on the {object type}s meta-data entry page as long as no
	 *         DOI has been generated yet
	 *     AND the {generated DOI} for a GIVEN {object type} must be equal
	 *         to the prefix plus the {individual identifier} or - if no identifier
	 *         has been entered - no DOI will be generated
	 *     AND the internal id - if used - must be preceded by some unique object
	 *         type dependent letter to avoid duplicate DOIs, except for articles
	 *         where no letter will be used to maintain backwards compatibility.
	 *
	 * EXAMPLES:
	 *   object type | individual identifier | generated DOI
	 *   ============|=======================|===============================
	 *   article     | article_suffix        | 10.1234/article_suffix
	 *   article     | ./.                   | ./.
	 *   issue       | issue_suffix          | 10.1234/issue_suffix
	 *   issue       | ./.                   | ./.
	 *   galley      | article_galley_suffix | 10.1234/article_galley_suffix
	 *   galley      | ./.                   | ./.
	 *   supp file   | supp_file_suffix      | 10.1234/supp_file_suffix
	 *   supp file   | ./.                   | ./.
	 *
	 *
	 * SCENARIO OUTLINE: Delete custom suffix.
	 *   GIVEN I select the "individual DOI suffix" option
	 *     AND I already assigned a custom DOI suffix to a
	 *         {publication object}
	 *     BUT a DOI has not yet been generated for that object
	 *    WHEN I empty the custom suffix field for that object
	 *         on its corresponding {meta-data page}
	 *     AND I click the "Save" button
	 *    THEN the existing custom DOI suffix should be deleted
	 *         in the database.
	 *
	 * EXAMPLES:
	 *   publication object | meta-data page
	 *   ===================|========================
	 *   issue              | editor/issueData/1
	 *   article            | editor/viewMetadata/1
	 *   galley             | editor/editGalley/1/1
	 *   supp file          | editor/editSuppFile/1/1
	 */
	public function testDoiSuffixIsCustomId() {
		// Change the suffix generation method.
		$this->configureDoi(true, '10.1234', 'doiSuffixCustomIdentifier');

		$existingSuffix = null;
		foreach ($this->objectTypes as $objectType) {
			$objectType = strtolower_codesafe($objectType);

			// An input field should be present on all meta-data pages
			// as long as no DOI has been generated.
			$this->checkMetadataPage($objectType, $editable = true, '');

			// Check that an already existing suffix cannot be re-used.
			if ($objectType != 'article') {
				// NB: Called in all but the first iteration.
				self::assertNotNull($existingSuffix);
				$this->checkDuplicateDoiSuffixError($objectType, '1', $existingSuffix);
			}

			// Let's enter a custom DOI.
			$customSuffix = "custom_${objectType}_doi";
			$this->setCustomId($objectType, $customSuffix);

			// Make sure that the suffix has been saved and is being
			// re-displayed in the form which should still be editable.
			$this->checkMetadataPage($objectType, $editable = true, $customSuffix);

			// Enter an empty suffix (=delete the suffix).
			$this->setCustomId($objectType, '');

			// Check that no DOI is being generated when entering
			// while the suffix is empty.
			$this->checkDoiDisplay($objectType, false);

			// Re-enter the suffix.
			$this->checkMetadataPage($objectType, $editable = true, '');
			$this->setCustomId($objectType, $customSuffix);

			// Check whether a custom DOI is correctly generated.
			$expectedDoi = "10.1234/$customSuffix";
			$this->checkDoiDisplay($objectType, $expectedDoi);

			// As soon as the DOI has been generated the meta-data field
			// should no longer be editable and the generated DOI should
			// be displayed instead.
			$this->checkMetadataPage($objectType, $editable = false, $expectedDoi);

			// Check that an already existing suffix cannot be re-used.
			if ($objectType == 'article') {
				// NB: Called in first iteration only.
				$existingSuffix = $customSuffix;
				// Check the article against a second article.
				$this->checkDuplicateDoiSuffixError($objectType, '2', $existingSuffix);
			}
		}
	}

	/**
	 * SCENARIO: Suffixes must be persistent
	 *   GIVEN a suffix has already been generated for an object
	 *    WHEN I change the suffix generation strategy
	 *    THEN the already assigned suffix of the object will not
	 *         change to guarantee a persistent object identifier.
	 *
	 * SCENARIO: Reassigning suffixes
	 *   GIVEN a suffix has already been generated for an object
	 *    WHEN I go to the DOI settings page
	 *     AND I choose a suffix generation strategy different from the one that
	 *         had been used previously for the object
	 *     AND I click the "Reassign DOIs" button
	 *    THEN the suffix for this object (and all other objects) will change.
	 */
	public function testDoiWillNotChangeWithoutReset() {
		// Configure DOI defaults and delete all existing DOIs.
		$this->configureDoi();

		// Generate a test DOI.
		$this->checkDoiDisplay('article', '10.1234/t.v1i1.1');

		// Change and save a DOI setting without deleting DOIs.
		$this->openSettingsPage();
		$this->type('css=input[id^="doiPrefix"]', '10.4321');
		$this->submitAjaxForm('doiSettingsForm');

		// Check that the DOI didn't change.
		$this->checkDoiDisplay('article', '10.1234/t.v1i1.1');

		// Check that only deleting the DOIs will actually
		// re-assign a new DOI.
		$this->deleteExistingDois();
		$this->checkDoiDisplay('article', '10.4321/t.v1i1.1');
	}

	/**
	 * SCENARIO OUTLINE: Preview DOI of published articles.
	 *    WHEN I choose {suffix generation method}
	 *     AND I open the metadata page of an published
	 *         article that does not yet have a DOI generated
	 *    THEN I'll see a {DOI preview} without a DOI being
	 *         generated.
	 *
	 * EXAMPLES:
	 *   suffix generation method | DOI preview
	 *   =================================================
	 *   default pattern          | 10.1234/t.v1i1.1
	 *   custom pattern           | 10.1234/jort.iss1.art1
	 *   custom url suffix        | 10.1234/custom-url
	 *
	 *
	 * SCENARIO OUTLINE: Preview DOI of unpublished articles.
	 *    WHEN I choose {suffix generation method}
	 *     AND I open the metadata page of an unpublished
	 *         article
	 *    THEN I'll see a {partial DOI preview} even if the
	 *         article is not yet published
	 *     AND a DOI will not be generated.
	 *
	 * EXAMPLES:
	 *   suffix generation method | partial DOI preview
	 *   ==================================================
	 *   default pattern          | 10.1234/t.v%vi%i.2
	 *   custom pattern           | 10.1234/jort.iss%i.art2
	 *   custom url suffix        | 10.1234/2
	 */
	public function testPreviewArticleDoi() {
		// Our test cases. For performance reasons we test both
		// scenarios together.
		$testCases = array(
			'doiSuffixDefault' => array(1 => '10.1234/t.v1i1.1', 2 => '10.1234/t.v%vi%i.2'),
			'doiSuffix' =>  array(1 => '10.1234/jort.iss1.art1', 2 => '10.1234/jort.iss%i.art2'),
			'doiSuffixPublisherId' =>  array(1 => '10.1234/custom-url', 2 => '10.1234/2')
		);

		// Enable custom URL suffixes.
		$this->configurePublisherIds(true);
		$this->setUrlSuffix('article', 'custom-url');

		// Run through all test cases.
		foreach ($testCases as $suffixGenerationMethod => $expectedPreviews) {
			// Set the suffix generation method.
			if ($suffixGenerationMethod == 'doiSuffix') {
				$customPattern = $this->getCustomPatternArray();
				$this->configureDoi(true, '10.1234', $suffixGenerationMethod, $customPattern);
			} else {
				$this->configureDoi(true, '10.1234', $suffixGenerationMethod);
			}

			// Check the (partial) DOI prefix.
			foreach ($expectedPreviews as $articleId => $expectedPreview) {
				$this->checkMetadataPage('article', false, $expectedPreview, $articleId, true);
			}
		}
	}

	/**
	 * @see PHPUnit_Framework_TestCase::tearDown()
	 */
	protected function tearDown() {
		// Restart the session so that we get access
		// to Selenium to clean up our configuration.
		$this->start();

		// Reset to standard settings. We have to do this
		// through the UI to correctly reset caches, too.
		$this->resetDoiSettings();

		// Explicitly stop Selenium otherwise our session
		// will not be freed for re-use.
		$this->stop();

		parent::tearDown();
	}

	/**
	 * @see PHPUnit_Extensions_SeleniumTestCase::onNotSuccessfulTest()
	 */
	protected function onNotSuccessfulTest($e) {
		// Restart the Selenium session to avoid overlay of
		// error messages.
		$this->start();
		parent::onNotSuccessfulTest($e);
	}

	//
	// Private helper methods
	//
	/**
	 * Return the url of the given page with the article ID
	 * correctly inserted.
	 * @param $page string
	 * @param $articleId integer
	 */
	private function getUrl($page, $id = null) {
		$url = $this->pages[$page]['url'];
		if (!is_null($id)) {
			$url = str_replace('%id', (string) $id, $url);
		}
		return $url;
	}

	/**
	 * Open the settings page
	 */
	private function openSettingsPage() {
		$this->verifyAndOpen($this->getUrl('settings'));
		$this->waitForElementPresent('css=tr.elementDOIPubIdPlugin');
		$this->click('css=a[id^="component-grid-settings-plugins-settingsplugingrid-category-pubIds-row-DOIPubIdPlugin-settings-button"]');
		$this->waitForElementPresent('css=#doiSettingsForm .submitFormButton');
	}

	/**
	 * Configures the DOI prefix and suffix generation method
	 * and resets all DOIs so that the new rules will be applied.
	 * @param $disabled string an object type for which DOI generation should be disabled
	 * @param $prefix string
	 * @param $suffixGenerationMethod string
	 * @param $pattern string
	 */
	private function configureDoi($disabled = null, $prefix = '10.1234', $suffixGenerationMethod = 'doiSuffixDefault',
			$pattern = array('Issue' => '', 'Article' => '', 'Galley' => '', 'SuppFile' => '')) {

		// Make sure the settings page is open.
		$this->openSettingsPage();

		// Check whether we have to change anything at all.
		foreach($this->objectTypes as $objectType) {
			$objectLocator = 'id=enable'.$objectType.'Doi';
			if ($objectType === $disabled) {
				$this->verifyNotChecked($objectLocator);
			} else {
				$this->verifyChecked($objectLocator);
			}
		}
		$this->verifyValue($this->pages['settings']['doiPrefix'], 'exact:'.$prefix);
		$this->verifyValue('id='.$suffixGenerationMethod, 'exact:on');
		if (!$this->verified()) {
			// Enable/Disable DOI generation.
			foreach($this->objectTypes as $objectType) {
				$objectLocator = 'id=enable'.$objectType.'Doi';
				if ($objectType === $disabled) {
					$this->uncheck($objectLocator);
				} else {
					$this->check($objectLocator);
				}
			}

			// Configure the prefix.
			$this->type($this->pages['settings']['doiPrefix'], $prefix);
			$this->click('id='.$suffixGenerationMethod);

			// Configure the suffix patterns.
			foreach ($pattern as $objectType => $suffixPattern) {
				$this->type(
					'css=input[id^="doi' . $objectType . 'SuffixPattern"]',
					$suffixPattern
				);
			}

			// Save settings.
			$this->submitAjaxForm('doiSettingsForm');
		}

		// Delete existing DOIs.
		$this->deleteExistingDois();
	}

	/**
	 * Delete all existing DOIs.
	 */
	private function deleteExistingDois() {
		$this->openSettingsPage();
		$this->click($this->pages['settings']['reassignDOIs']);
		$confirmationDivSelector = 'css=div:contains("Are you sure you wish to delete all existing DOIs?")';
		$this->waitForElementPresent($confirmationDivSelector);
		$this->click($confirmationDivSelector . ' button.ui-button');
		$this->waitForElementNotPresent($confirmationDivSelector);
	}

	/**
	 * Enable/Disable publisher IDs.
	 */
	private function configurePublisherIds($enabled = true) {
		// Enable publisher IDs for all objects.
		$this->open($this->getUrl('journal-setup', 4));
		foreach($this->objectTypes as $objectType) {
			$optionLocator = "id=enablePublic${objectType}Id";
			if ($enabled) {
				$this->check($optionLocator);
			} else {
				$this->uncheck($optionLocator);
			}
		}
		$this->clickAndWait('css=input.button.defaultButton');
	}

	/**
	 * Enter the URL suffix for the given object type.
	 * @param $objectType string
	 * @param $urlSuffix string
	 */
	private function setUrlSuffix($objectType, $urlSuffix) {
		$metadataPage = $this->pages["metadata-$objectType"];
		if (isset($metadataPage['urlSuffixPage'])) {
			$url = $metadataPage['urlSuffixPage'];
		} else {
			$url = $metadataPage['url'];
		}
		$this->open(str_replace('%id', '1', $url));
		$this->type($metadataPage['urlSuffix'], $urlSuffix);
		$this->clickAndWait('css=input.button.defaultButton');
		if ($objectType == 'article') {
			$this->assertConfirmation('Save changes to table of contents?');
		}
	}

	/**
	 * Enter a custom suffix for the given object
	 * type and save the form. Make sure that the
	 * form does not produce an error.
	 * @param $objectType string
	 * @param $customSuffix string
	 */
	private function setCustomId($objectType, $customSuffix) {
		$metadataPage = $this->pages["metadata-$objectType"];
		$this->type($metadataPage['doiInput'], $customSuffix);
		$this->clickAndWait('css=input.button.defaultButton');
		$this->assertElementNotPresent(
			str_replace('%id', 'doiSuffix', $metadataPage['formError'])
		);
	}

	/**
	 * Check whether the given DOI appears on the object's page.
	 * @param $objectType string
	 * @param $expectedDoi string/boolean the expected DOI or false if
	 *    no DOI should be present.
	 */
	private function checkDoiDisplay($objectType, $expectedDoi) {
		$url = $this->getUrl($objectType, 1);
		$this->verifyAndOpen($url);
		try {
			if ($expectedDoi === false) {
				$visibleElement = $this->pages[$objectType]['visible'];
				if (strpos($objectType, 'citations') !== false) {
					$this->assertNotText($visibleElement, 'doi');
				} else {
					$this->assertElementNotPresent($visibleElement);
				}
				foreach (array('DC-meta', 'Google-meta') as $doiMetaAttribute) {
					if (isset($this->pages[$objectType][$doiMetaAttribute])) {
						$doiMetaElement = String::regexp_replace(
							'/@[^@]+$/', '',
							$this->pages[$objectType][$doiMetaAttribute]
						);
						$this->assertElementNotPresent($doiMetaElement);
					}
				}
			} else {
				$expectedDoiPattern = "(^|.* )$expectedDoi($| .*)";
				$doiText = $this->getText($this->pages[$objectType]['visible']);
				if ($expectedDoi == '10.1234/t.v1i1.1') {
					$fata = 'morgana';
				}
				$this->assertText($this->pages[$objectType]['visible'], $expectedDoiPattern);
				foreach (array('DC-meta', 'Google-meta') as $doiMetaAttribute) {
					if (isset($this->pages[$objectType][$doiMetaAttribute])) {
						$this->assertAttribute(
							$this->pages[$objectType][$doiMetaAttribute],
							$expectedDoiPattern
						);
					}
				}
			}
		} catch(Exception $e) {
			throw $this->improveException($e, $objectType);
		}
	}

	/**
	 * Check DOI input and display on a single metadata page.
	 * @param $objectType string
	 * @param $editable boolean whether the DOI Suffix field should be editable.
	 * @param $expectedDoi string
	 */
	private function checkMetadataPage($objectType, $editable = false, $expectedDoi = null, $objectId = 1, $isPreview = false) {
		try {
			$objectType = strtolower_codesafe($objectType);
			$metadataPage = "metadata-$objectType";
			$url = $this->getUrl($metadataPage, $objectId);
			$this->verifyAndOpen($url);
			$doiText = $this->getText($this->pages[$metadataPage]['doi']);
			if ($editable) {
				if (!is_null($expectedDoi)) $this->assertValue($this->pages[$metadataPage]['doiInput'], $expectedDoi);
			} else {
				$this->assertElementNotPresent($this->pages[$metadataPage]['doiInput']);
				if (!is_null($expectedDoi)) $this->assertContains("DOI $expectedDoi", $doiText);
			}
			if ($isPreview) {
				$this->assertContains('What you see is a preview', $doiText);
			}
		} catch(Exception $e) {
			throw $this->improveException($e, $objectType);
		}
	}

	/**
	 * Check whether the given meta-data page denies
	 * entering an existing DOI suffix across all object
	 * types.
	 * @param $objectType string
	 * @param $objectId string
	 * @param $existingSuffix string
	 */
	private function checkDuplicateDoiSuffixError($objectType, $objectId, $existingSuffix) {
		// We should get an error when trying to enter an already existing
		// suffix for another object.
		$metadataPage = "metadata-$objectType";
		$this->open($this->getUrl($metadataPage, $objectId));
		$this->type($this->pages[$metadataPage]['doiInput'], $existingSuffix);
		$this->clickAndWait('css=input.button.defaultButton');
		$this->assertElementPresent(
			str_replace('%id', 'doiSuffix', $this->pages[$metadataPage]['formError'])
		);
	}

	/**
	 * Reset to standard DOI settings.
	 */
	private function resetDoiSettings() {
		$this->openSettingsPage();
		$this->configureDoi();
	}

	/**
	 * Return an array with custom patterns
	 * for testing.
	 * @return array
	 */
	private function getCustomPatternArray() {
		return array(
			'Issue' => 'jor%j.%Y.vol%v',
			'Article' => 'jor%j.iss%i.art%a',
			'Galley' => 'jor%j.art%a.gal%g',
			'SuppFile' => 'jor%j.art%a.suf%s'
		);
	}
}
?>

redpajama_set_name: RedPajamaGithub


text:
Graphene/Research/Biosensors, drug delivery and diabetes
Biosensors, drug delivery and diabetes
Research 21st March 2016
Joe Butcher a PhD student in the Graphene NOWNANO Centre for Doctoral Training (CDT) programme. Talks to us about his work on biosensors and how they could revolutionise medical applications.
Can you give an outline of the kind of research that you do (in layman's terms), and particularly how it relates to graphene?
I'm trying to make a biosensor which will have on one side an enzyme, or sensing molecule, which could detect glucose for example, and on the other side would have something like insulin. Effectively, graphene helps to combine these two onto a single platform which could release insulin when glucose is detected. Graphene cuts out the middle-man between sensing and administering therapy.
Why is it important that the material is graphene?
Because graphene is conductive, and we can functionalise it. If we can create a way to get both the enzyme (in this case glucose) and the therapeutic molecule (in this case insulin) on to the same sheet of graphene, then when glucose is detected there would be a current generated, and from that current you could release therapeutic insulin. So it's a very targeted biosensor.
So can you say more about the possible applications of this?
Sure. This doesn't only need to be with glucose. If I can do this with one enzyme, it could potentially be done with others. I've also been working with cholesterol too, so this could be applied to provide medicine for high cholesterol conditions, and this would be very targeted. In an ideal world – and we'll see if we can get to this point in the future – you'd be able to leave this biosensor in contact with the bloodstream. Diabetics have to treat themselves several times a day, but if there was a way to set this up, it would be able to regulate [blood-sugar] by itself, which could reduce the frequency of treatment a great deal.
How did you come to your interest in this project?
When I finished my undergrad degree in physics, and the CDT was a very good way to expand my horizons. I decided I wanted to do something which would really be useful. I was looking at PhDs in astronomy for example, which is very interesting, but I wanted my work to have obvious practical applications.
What motivated your interest in physics to begin with?
As a teenager I felt like Physics offered the best opportunity to learn the most about the world around me.
And do you still feel as motivated to do this research work now as you were when you started?
Absolutely. It's really exciting to be at the cutting edge, using state of the art techniques, and being at the forefront of the science. Some of the things we find in this work are completely new. In nanoscience, and with graphene in particular, there is so much that hasn't been discovered yet, so most of your results are really novel, and that's really exciting.
What's the best thing, and the worst thing, about your day-to-day research?
The best thing is that the work is so new. The conditions could change so often, and everything is so variable, that results are often very novel. That variability is also it's downfall! You're never completely certain about what you've got. Graphene is difficult to characterise, because it's so incredibly small. As a result, the work can sometimes be really painstaking.
What are your thoughts on The University of Manchester as an institution?
I was here for undergrad too, and there were lots of options available to me when I graduated, with the CDT as just one of them. The CDT is also very open. Normally programs decide on topics before you begin the course, but in this program we were able to do some training, and then define our own direction for our research, which was really interesting.
The university as a whole is so large and such a good institution, that there is always someone around with the expertise to help you get your work done. There is a real community fostered among the CDT students, and we make up a good proportion of all the graphene research work carried out at the university, so it's a really good place to be a part of.
Do you think the plans for the Graphene Engineering Innovation Centre (GEIC) are an important part of the growth of graphene research here?
Definitely. There is a real difficulty communicating some of the ideas we have about graphene between the scientists and industry, who will apply those ideas. The GEIC could be very important in bridging that gap.
Where do you think graphene development will go in the next 5 years, and in the next 20 years?
In the next five years the applications around electronics – like the graphene light bulb – will be significant. They will also probably work out some production difficulties in that time-frame too. Over the next twenty years, the pharmaceutical applications – like the kinds of work I'm doing in my research now – could really begin to become available. That's one of the areas which is not reported on to the public as much. People don't know as much about the potential for medical applications connected to graphene.
BiomedicinegrapheneGraphene NOWNANOHealthNational Graphene Institute
Graphene research students engage the public with science shows
Graphene, AI and the brain: an extraordinary journey into human consciousness
Graphene inventor Vivek Koncherry: from 'backwater' to space inventor
Connect with the University


A story is told of a loving father who was trying to save his daughter during a bombing raid in World War II. Fleeing a building that had just been hit and desperate for shelter, he spied a large hole from an earlier shell explosion. He leaped in, then lifted his arms to catch his child. The terrified girl cried out that she could not see him. He looked up and saw her silhouette illuminated by tracer lights and fire. The father called out to her, "I can see you. Jump!" When she heard the encouraging words of her father, she jumped into the safety of his arms.
As we daily surrender our plans and desires to our loving Father, we reflect the character of Jesus. In obedience to His Father, Jesus sacrificed everything. He gave up His life and took upon Himself the horror and guilt of our sins. This choice to obey was not easy, as His battle in Gethsemane reveals. The Bible describes His sweat as "drops of blood" as He pleaded, "Father, if You are willing, take this cup from Me; yet not My will, but Yours be done" (Luke 22:42, NIV).
Like the little girl above, have you yet "jumped" into your Father's arms, with abandon and trust? If not, do so today, by faith. He will not let you fall.


The Murray Street Stage 6 project will have final surfacing works to complete the asphalt commencing 7pm Monday 11 February 2019 until 7am Tuesday 12 February 2019. Detours will be in place as per Detour Map A with Variable Message Boards providing advance notice and advising that Gawler is 'open for business'.
During these works, traffic restrictions and detours will apply, click Here to see map. Traffic controllers and signage will alert motorists to the changed traffic conditions and detours with advance notification provided via the electronic Variable Message Signs. Pedestrian access to local businesses will be maintained during normal business hours for all detours. Vehicle access to Julian Terrace, Murray Street South and Murray Street (from Murray Street South to Lyndoch Road) will be maintained via the detours. To manage the impact on the township and the wider community the works will be undertaken during both day and night over a continuous weekend. Two detours will be in place during these works.
'Open for Business' Prior to these works.
Council will continue their communication with the wider community ensuring to raise awareness that Businesses along Murray Street, Julian Terrace and Murray Street South are 'Open for Business' during this time. This will be communicated several ways including signage and Council's web page.
Town of Gawler is conscious of the impacts the construction may have on businesses and services and will continue to work closely with stakeholder, businesses and building owners as well as the wider community. Regular contact is made to provide updates about the project and the next stages of construction.
Council thank you for your continued patience during the delivery of this important project.
- Setting up of the site compound facilities in Murray Street South adjacent the SA Water Depot.
- Establishing traffic control including variable message signage (VMS).
- Utility services investigations and survey set-out.
- Demolition including the removal of the southern kerb and footpath from Murray Street South to Julian Terrace and the island outside the Southern Hotel.
- Installation of the new pedestrian ramps and refuge island at Murray Street South.
- Commencement of utility service pit lit adjustments.
- Installation of new stormwater infrastructure including pits, pipes and road crossings.
- New concrete kerb along the Southern side of Murray Street.
- Installation of the scaffolding under the Gawler Mill Inn Bridge to commence the bridge upgrade and remedial works.
- Concrete kerb construction on the northern side of Murray Street.
- Reinstatement of vehicle crossovers.
- Upgrades to the street lighting and traffic signals at Julian Terrace.
- Temporary works and clean-up for the temporary site closure over Christmas and New Years.
The project will temporarily cease construction works from Thursday 20 December 2018 through to Tuesday 2 January 2019. The current lane restrictions will also be lifted, however, to ensure the safety of traffic, cyclists and pedestrians through the project area, a 40km/h speed limit will be in place during the site closure period.
- Construction of the final footpaths to the Northern and Southern sides of Murray Street (similar finish to the main street of Gawler Township).
- Continuing with the installation of new street lighting along Murray Street.
- Continuing the upgrade and remedial works to the Gawler Mill Inn Bridge.
- Refurbishment of the bridge structures including strengthening of existing elements.
- General cleaning, painting and restoration work above and below the bridge.
- Road safety barrier installation and footpath balustrade treatments.
- Installation of bird netting to the underside of the bridge.
To enable the works on top of the bridge, a full lane closure and restricted accesses will be required over a period of approximately 4 weeks. These temporary traffic restrictions will commence on approximately 14 January 2019, and will be undertaken at night from 7pm until 6am, from Monday through to Saturday.
In addition, cleaning and re-painting of bridge handrails, works on the bridge footpath and final construction of footpaths to the Northern and Southern sides of Murray Street (from Julian Terrace to Murray Street South) will be undertaken requiring short-term footpath closure and detours for a period of up to two weeks on each side of Murray Street. Pedestrian detours will be in place and access to businesses will be maintained during business hours.
In late January and early February 2019, major road reconstruction works along Murray Street from the intersection of Murray Street South up to and including the Gawler Mill Inn Bridge will be undertaken. These works will be managed to minimise disruption to all road users and the local community including businesses. Further information about these works and will be provided in January 2019.
We are conscious of the impacts the construction may have on businesses and services and will continue to work closely with stakeholder, businesses and building owners as well as the wider community.
We will continue to make regular contact with you to provide updates about the project and the next stages of construction. Should you have any questions about these works, please don't hesitate to contact the Murray Street (Stage 6) Upgrade Team via email or phone.
For more project information, please visit the project website, at: www.gawler.sa.gov.au/murray-street-upgrade. These works are subject to favourable weather conditions and we will notify you if they are to be rescheduled.
The Murray Street Upgrade Project is a key component of the Gawler Community Plan 2017-2027 and Town Centre Urban Design Framework as it creates a more efficient and safer transport, traffic and pedestrian network in the main street of Gawler. The project will also improve various modes of transportation and promote regional economic development by improving amenity and accessibility of the Town Centre and business precinct.
The next stage of this project has now been approved by the Council for construction and awarded to BMD Constructions who will deliver the Murray Street Upgrade Stage 6 Project.
The Council has allocated $3.71M to delivering this project from its intersection with Murray Street South through to Julian Terrace as well as an upgrade of the Gawler Mill Inn Bridge itself. The project is being jointly funded through the Australian Government's Bridges Renewal Programme ($660K), the State Government administered Special Local Roads Program ($600K) and the Council ($2.45M).
• Improved landscape character into the Gawler Town Centre.
• Improve safety for pedestrians, cyclists and traffic on the bridge. Works are scheduled to commence in mid-October 2018 and completed by April 2019.
We thank you for your cooperation during the delivery of this exciting project for the Town of Gawler.
The next stage of the project further south of the Gawler Mill Inn Bridge to the Tenth / Seventh Street intersection is currently subject to further grant funding being obtained to assist in its delivery. The Council is currently pursuing grant opportunities for this component of works.


text:
World / Americas
Tropical Storm Barry grinds toward Louisiana
13 July 2019 - 10:42 Collin Eaton and Kathy Finn
A worker seals the front of a restaurant along Bourbon Street from floodwater as rainfall from Hurricane Barry begins on July 12 2019 in New Orleans, Louisiana. Picture: GETTY IMAGES/ AFP/ SCOTT OLSON
City officials warned New Orleans residents on Friday to secure their homes, stock up on supplies and prepare to huddle indoors with Tropical Storm Barry poised to make landfall as the first Atlantic hurricane of 2019.
Barry's maximum sustained winds were clocked at 100 kph as it churned through the northern Gulf of Mexico toward Louisiana. Meteorologists warned that torrential rains — as much as 60 cm in some places — are likely to unleash severe flooding.
While New Orleans authorities refrained from ordering evacuations and advised residents to shelter in place instead, tourism officials reported an exodus of hotel guests checking out early on Friday. Some airlines, including British Airways, have canceled outbound flights from the city through Saturday.
Mandatory evacuations were imposed in flood-prone coastal areas of two neighboring parishes south of the city.
US President Donald Trump declared a state of emergency for Louisiana, and the region's oil production was scaled back by nearly 60 percent as energy companies evacuated offshore drilling facilities.
A performance scheduled for Sunday by the Rolling Stones at the Mercedes-Benz Superdome, which served as an emergency shelter during the Hurricane Katrina flood catastrophe of 2005, was postponed until Monday.
The impending storm was widely seen as a key test of the fortified flood defenses put in place following Katrina, which inundated much of the city and killed some 1,800 people.
Barry is expected to cross the coastline southwest of New Orleans on Saturday morning. It is forecast to reach Category-1 hurricane strength by then, with winds of at least 119 kph, the National Weather Service said.
Dangerous and life-threatening
The storm's flood potential, rather than its high winds, posed the greatest danger to the low-lying metropolitan landscape of New Orleans, a city virtually surrounded on all sides by rising waters.
"Tropical Storm Barry is a dangerous and life-threatening storm," Weather Service meteorologist Benjamin Schott said at a news conference. "Major to ... record flooding will be possible."
Authorities were keeping a particularly watchful eye on the levee system built to contain the lower Mississippi River, which winds through the heart of New Orleans and was already well above flood stage from months of heavy upstream rainfall over the Midwest.
A coastal storm surge into the mouth of the Mississippi is expected to push its crest to 5.79 meter in New Orleans on Saturday, the highest level since 1950 and dangerously close to the top of the city's levees.
The brunt of Barry was expected to skirt the western edge of New Orleans, avoiding a direct hit. But Mayor LaToya Cantrell said 48 hours of heavy downpours could overwhelm pumps designed to purge streets and storm drains of excess water.
"There is no system in the world that can handle that amount of rainfall in such a short period," Cantrell said on Twitter.
New Orleans was already saturated after thunderstorms drenched the city with a foot of rain on Wednesday.
"If it's worse than the other day, it'd be the worst week since Katrina," said musician Robert Harris, 61, polishing his trombone while sitting in a folding chair on a sidewalk.
Floodgates and levees
While street flooding seemed probable, officials from the U.S. Army Corps of Engineers insisted that significant breaching of the 20-foot-tall levees in New Orleans was unlikely.
All levee floodgates were being closed, along with a giant surge barrier erected after Katrina.
The chance of overtopping levees seemed greater farther downstream, where the levee walls are lower.
The level of Lake Pontchartrain, an estuary on the city's northern flank, rose by 3 feet on Friday, triggering the closure of a flood gate on a canal that breached during Katrina, said Derrick Boese, chief administrator for the local flood control agency.
Mandatory evacuation orders were issued for areas of Plaquemines Parish beyond the levees southeast of the city and for low-lying communities in Jefferson Parish, to the southwest.
New Orleans residents planning to ride out the storm flocked to supermarkets for bottled water, ice, snacks and beer, thronging grocery stores in such numbers that some ran out of shopping carts. Throughout the city, motorists left cars parked on the raised median strips of roadways hoping the extra elevation would protect them from flood damage.
City residents were asked to remain indoors after 8pm on Friday.
Larry Gumpert, the 74-year-old owner of a pest-control company, said he planned to hunker down at home, cooking and catching up on household chores.
"If all the predictions come true, we're going to see major street flooding," Gumpert said. "The Army Corps has spent time, money and energy trying to fortify the city. This is a good test of what they have accomplished since Katrina. We'll see."
Storm Barry expected to hit Louisiana coast as a hurricane
Damage of up to $1bn are expected, with most oil production already halted in the Gulf of Mexico, as winds of up to 80km/h are expected


text:
Texas Republican Tells Beto O'Rourke, "My AR Is Ready for You"
Twitter has since removed the post.
Brian Cahn/ZUMA
A Texas state representative is under fire after tweeting, "My AR is waiting for you" at Beto O'Rourke, shortly after the Democratic presidential candidate endorsed mandatory buybacks of assault-style weapons during the third Democratic debate Thursday night.
"Hell yes, we're going to take your AR-15, your AK-47," O'Rourke declared to the audience in Houston, Texas, while describing how such weapons are designed for combat and should therefore not be in the hands of everyday gun owners. "We're not going to allow it to be used against our fellow Americans anymore."
But as the remarks, which drew loud applause, reverberated on social media, Republican Briscoe Cain, who has served in the Texas House of Representatives since 2016, made his contempt for the proposal clear:
This is a death threat, Representative. Clearly, you shouldn't own an AR-15—and neither should anyone else. pic.twitter.com/jsiZmwjMDs
— Beto O'Rourke (@BetoORourke) September 13, 2019
The post, widely interpreted as a threat against O'Rourke, was instantly slammed on social media. But that didn't stop the Republican from attacking O'Rourke once more. "You're a child Robert Francis," he said later, retweeting O'Rourke.
Twitter has since removed the initial post.
O'Rourke first backed a mandatory buybacks program in the wake of last month's massacre in his hometown of El Paso that killed 22 people. The proposal has since riled conservatives, including Meghan McCain, who warned earlier this month that there would be "a lot of violence" if Washington passed legislation aimed at confiscating weapons like the AR-15.
"I'm not living without guns!" McCain told her colleagues on The View. "It's just that simple."
Meghan McCain, after saying there will be "violence" in America if the AR-15 is banned because it's "the most popular gun" in the country, then declares that she's "not living without guns." pic.twitter.com/YlDtQwkFr0
— Justin Baragona (@justinbaragona) September 3, 2019
"Hell Yes, We're Going to Take Your AR-15"
Kara Voght
Beto O'Rourke Tears Into Trump for Inciting Anti-Immigrant Violence


text:
Husted rules against charter proposal
Will not appear on Nov. ballot
The charter government initiative will not be on the Fulton County ballot in November following a Thursday decision by Ohio Secretary of State Jon Husted.
Husted ruled on protests filed with his office that questioned the validity of county charter ballot proposals in Fulton as well as Athens and Medina Counties. In all three counties, he upheld the protests by invalidating the charter proposals and certifying that they would not receive a place on the Nov. 3 General Election ballot.
As part of his decision, Husted said that the proposed provisions in each of the charters relating to oil and gas exploration represented an attempt to circumvent state law in a manner the courts have already found to be in violation of the Ohio Constitution.
"The issue of whether local communities can get around state laws on fracking has already been litigated," Husted said. "Allowing these proposals to proceed will only serve a false promise that wastes taxpayer's time and money and will eventually end in sending the charters to certain death in the courts."
Under the Ohio Revised Code, the Secretary of State, in his role as the chief elections officer, is required to determine the validity of both the proposal and the petitions submitted and rule on whether or not the petition should qualify for the ballot.
Furthermore, the Husted insisted that the proposed ballot initiatives fail to properly establish an "alternative form of county government" as prescribed by Section 301 and 302 of the Ohio Revised Code.
"Having carefully reviewed the law, court decisions and the materials submitted in connection with the protests, I find that the… petitions violate… provisions of statutory and Ohio constitutional law," wrote Husted.
Hi! A visitor to our site felt the following article might be of interest to you: Husted rules against charter proposal. Here is a link to that story: https://www.fcnews.org/news/731/husted-rules-against-charter-proposal


text:
The good, the bad and the ugly side of Facebook
Home » The good, the bad and the ugly side of Facebook
By	Roslyn Layton
By Roslyn Layton
The good, the bad and the ugly side of Facebook2013-02-212013-02-21https://tbkconsult.com/wp-content/uploads/2015/11/logo_banner_90x270.jpgTBK Consulthttps://tbkconsult.com/wp-content/uploads/2014/03/Facebook.jpeg200px200px
The good, bad and ugly
This is a report that describes how Facebook affects the mobile industry strategically, operationally and financially.
Strand Consult has met with many mobile operators that use Facebook in many different ways. Most operators use Facebook to be able to have a two-way communication with their customers, as an extended arm to their customer service, as a media channel and to market and sell various products. Because Facebook is becoming so integrated in many mobile operators' business, a very important question arises; How will Facebook influence the mobile industry strategically, operationally and financially?
Strand Consult is well-known for voicing our opinion – even when our opinion goes against the flow. In our 2009 report "The moment of truth, a portrait of the iPhone – Is there an effect from a mobile operator's point of view and can shareholders measure the value of the iPhone effect?" we documented how the iPhone was having a negative influence on a number of mobile operators' earnings.
With our new report "The good, the bad and the ugly side of Facebook – A report that describes how Facebook affects the mobile industry strategically, operationally and financially," we have published yet another unique report to add to our history of comprehensive reports where we closely examine and describe the challenges that the mobile industry faces when customers start using new platforms and technologies.
Mobile operators cannot avoid Facebook. With the current popularity Facebook has acquired it is becoming increasingly important for mobile operators and other market players in the mobile industry to evaluate how Facebook is influencing their business. Is Facebook only good news, or does Facebook also have a bad and an ugly side?
In this new report we have examined and analysed Facebook from eight important angles:
1. How will Facebook influence the voice traffic market?
2. How will Facebook influence the SMS traffic market?
3. Will Facebook have any influence on the MMS market?
4. How will Facebook influence the mobile data market?
5. How will Facebook influence the mobile phone market?
6. Is Facebook influencing operators marketing and communications strategy?
7. Is Facebook a sales channel, or can it develop into a new sales channel?
8. Is Facebook suitable to handle cost effective customer care?
Our new report "The good, the bad and the ugly side of Facebook – A report that describes how Facebook affects the mobile industry strategically, operationally and financially" describes Facebook from a 360 degree angle. The report analyses and describes in depth "The good, the bad and the ugly" sides of Facebook.
At Strand Consult our main focus is on the mobile operators and their shareholders – these are our customers. We are not a "digital pusher" and have no interest in selling Facebook related services. Our sole goal is to sell knowledge that can help reduce mobile operators' costs and increase their earnings.
When we published our original report about the iPhone market seen from a mobile operator's point of view in 2009, many "Apple fanboys" disagreed with us and the conclusions of the report. On the other hand, the top management of some of the world's largest mobile operators confirmed our conclusions. And the conclusions were very clear: The iPhone creates value for Apple's shareholders – not for the mobile operators' shareholders.
If you do not believe that Facebook will have any influence on the mobile industry, there is no point in buying our new report "The good, the bad and the ugly side of Facebook – A report that describes how Facebook affects the mobile industry strategically, operationally and financially."
But if you are one of the increasing number of people that are using more and more resources on Facebook and you need some professional sparring and input via facts, analyses and Facebook case studies from around the world, you should seriously consider purchasing this report. And just so we are perfectly clear about this: Facebook most certainly does have a good, a bad and an ugly side.
Source: Strand Consult
Facebook, global, Independent Software Vendor, ISV, MMS market, mobile operator, Strand Consult
Roslyn Layton
The Ultimate Guide to Email Prospecting
Social Selling Without Situational and Contextual Content Is like Partying with Robots – Part 3
Using IT to Improve Parent-Teacher-Student Communication
Rethinking MDF: New Research Shows Channel Marketers Placing Increased Focus On Long-Term Impact Of Incentives
Strategic Partner Development in the Software IndustryBuilding Successful Partner Channels, Industry News
VMware to Acquire VirstoIndustry News


text:
Headlines For Friday, February 8, 2019
Rise Guys Headlines
6 am Headlines
Jeff Bezos says the "National Enquirer" is trying to blackmail him with nude photos.
https://bit.ly/2WOLuOf
The average person gives their partner's Valentine's Day efforts an "F".
https://bit.ly/2GCtkd5
The new "Pet Sematary" makes a major change from the book and the original movie: Instead of the little boy, Gage, getting killed and resurrected by the Pet Sematary, it's his sister Ellie. Meanwhile, Stephen King Tweeted out a warning that the movie is scary.
Video of Pet Sematary (2019) - Trailer 2 - Paramount Pictures
If making eye contact with people makes you nervous, just stare at their nose, mouth, or forehead instead. A new study found we can't really tell the difference.
https://bit.ly/2WGULYC
There's a guy in Melville, Saskatchewan, Canada whose real name is Dave Assman. And he's upset because he tried to get his last name on a license plate and the government said no.
https://bit.ly/2Bt8Vnb
The ten ways that "Making Love" is different than "Having Sex".
https://bit.ly/2TDUtzL
It only costs $627 to "feel like a million bucks," according to a new study. They found if you spend that much on clothes, accessories, a haircut, and makeup, people say it makes them feel like a million bucks.
A carjacker in St. Louis dropped his phone on Monday. So the victim grabbed it . . . used it as a bargaining chip . . . and the carjacker had to trade the car to get it back.
https://on.ksdk.com/2TDOb3a
Paige933


In this toys dolls parody video Elsa and Anna toddlers notice something strange : their lovely pet dog is not playful, not happy . They believe the dog is sick. Is it ? The dog doesn't want to play at all! Anna and Elsa decide to take the dog to the Vet for a check-up. The doctor from the Animal Clinic soon finds out that the dog is pregnant and it is going to have puppies soon ! Yay !


text:
Andrew Burmon
'Hannibal' Recap: The Sweet Taste of Florence
As the weirdest show on NBC enters it third season, it's impossible to not wonder how it has survived.
The strangest thing about the strangest show on network television is its continued existence. Hannibal has transformed, over three seasons, from a borderline procedural to a Mark Rothko painting. To watch the show is to wonder, "Who the hell watches this?" and then think that you probably want to hang out with those people, who all presumably wear clear-framed spectacles and have strong opinions on epistemology.
Historically, NBC's attempts at high-brow entertainment (St. Elsewhere, 30 Rock, The West Wing) have slipped into middle-brow drag by their third season. Hannibal's show runner, Bryan Fuller, used the first half of "Antipasto", last night's debut episode, to announce his intention to do exactly the opposite. As Bedelia Du Maurier, Hannibal's paramour/captive/psychologist/dance partner put it to our bloodthirsty protagonist - and make no mistake, he is the protagonist - "You no longer have ethical concerns, Hannibal, you have aesthetic ones."
Gillian Anderson, who has the bearing of a mid-level deity, delivers that line in a coldblooded vibrato and proceeds to bathe in blood because, presumably, metaphors matter and Kierkegaard is kool. But the admission here is that metaphors, visual or otherwise, have no truck here. Without getting discursive about the objective correlative, we can simply agree that the show is far more about appearances than it is about plot or character.
Hannibal is a nihilistic show about beauty. To repeat a prior point: It's insane that it exists. It's also awesome because Mads is great to look at — especially in black and white — like an overfed fish or an underfed otter.
His Hannibal has fled from America to Florence, which is apparently gilded to the hilt, and leveraged his linguistic and social abilities into a position a local museum (a position that came open after he killed its previous occupant). Our main victim in this episode, which plays out as a photo negative of Law & Order: SVU, is a florid English teaching assistant that threatens to out him, but the real focus is Hannibal and Bedelia's complex relationship. The notion is that she is his psychological hostage and that he recognizes her as a member of his own species, someone he could cannibalize rather than simply consume.
But let's not fall into the narrative trap. Hannibal's apartment is beautiful and the scene in which snails crawl all over Eddie Izzard's former arm (it's not really his possession anymore) is like a Dutch still life painted by a particularly bloody-minded shark. None of it makes sense, but slow-motion shots of oysters are pretty cool. And truffles!
Where's Will Graham? Waiting in the wings with his bestiary. The show doesn't need him for conflict, just color.
'Hannibal' Recap: Heart Problems
By Andrew Burmon
'Hannibal' Recap: Brain Food
'Hannibal' Recap: The Deformed Story


Are you looking to start a new family tradition or continue an old one? Look no further. Rutledge Corn Maze has something for everyone! Get lost in our giant corn maze or hunt through the pumpkin patch for your perfect pumpkin. Day-time activities include story-time with Spookley the Square Pumpkin, corn hole and swings! You can also take a ride on the NEW cow train! When the sun sets Rutledge offers a Haunted Corn Maze and a Zombie Paintball Adventure! The Rutledge Corn Maze and all of its attractions have become a family tradition for many. Come create memories!


On 18th April our company will be participating in a meeting of the Polish Technological Platform of Security Systems in WAT, as well as in the IX Conference Modernization of Trainrails in Dźwirzyno. The main topic will be mainly early warning system about contingencies, safety management systems and the safety of IT systems. Conference in Dźwirzyno is a presentation of companies and discussion about the adaptation and the development of the railway transport. Report from these events will be delivered soon, meanwhile we are already encouraging to get acquainted with the program.


text:
Q: How to identify the largest files in a directory including in its subdirectories? I have a directory with a lot of files and subdirectories. I know there are a small number of large files contained somewhere within. What is a quick/easy way to identify one or more large files in a directory, including throughout all it's sub directories?
I tried this:
find . -printf '%s %p\n'|sort -nr|head
find: -printf: unknown primary or operator

and this:
find -type f -printf '%s %p\n' |sort -nr | head

find: illegal option -- t
usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
       find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]

and this:
find . -type f -printf "%s %p\n" | sort -nr | head -1
find: -printf: unknown primary or operator

A: Here's an example using BSD find and stat-
find . -type f -exec stat -f '%z %N' {} + | sort -nr

A: I like spotlight better than crawling the filesystem for speed reasons. This doesn't directly report sizes so you can sort top 10, but you can quickly (fraction of a second) locate places where large files exist.
mdfind 'kMDItemFSSize > 2000000000' | grep "$(pwd)"

More options are on this thread. Add or remove zeroes or pick your size threshold for finding large files.

As to your syntax errors and other problems you'll face is handling spaces in files and directories, hence the " " around $(pwd) so you can quickly get in territory where you need to learn a bit more about shells, pipes, white space and escaping words / variables. Worst case, isolate each one element above so you can learn what the output of the find command is telling you and they layer back the filters / processing once you have valid results.
If all you are after cleaning large files and you don't need a script and want to learn that later. I recommend system information, storage management or Daisy Disk. Finder also can calculate all sizes well for me in preferences if you want to interact as you navigate.

A: BSD find (which is part of macOS) and GNU find (which is part of Linux distributions) use different options, so your examples won't work.

*

*You can install GNU find via Homebrew (brew install findutils) and then use gfind to get GNU syntax/options

*For a quick solution, du -a TOP-DIRECTORY | sort -r will work as well. It lists both files and directories though, so it won't easily work within a script

A: If you're looking for the largest file(s) in each directory and child subdirectories
Use the du command:
du -ah . | sort -nr | head -n X

Where X is the number of results you want.  For example, if you want the top 25, substitute 25 for X.  If you only want the largest file, use 1.  It will list the output in "human readable format."

A: Do you need this for a script, or is a manual tool acceptable?
I find Disk Inventory X is outstanding for identifying large directories and files.

redpajama_set_name: RedPajamaStackExchange


text:
By bureaus and offices Department of Commerce-Bureau of Economic Analysis-Bureau of Industry and Security-U.S. Census Bureau-Economic Development Administration-Office of the Under Secretary for Economic Affairs-International Trade Administration-Minority Business Development Agency-National Institute of Standards and Technology-National Oceanic and Atmospheric Administration--National Environmental Satellite, Data, and Information Service--National Marine Fisheries Service--National Ocean Service--National Weather Service--Oceanic & Atmospheric Research--Office of Marine and Aviation Operations-National Technical Information Service-National Telecommunications and Information Administration--First Responder Network Authority-U.S. Patent and Trademark Office-Office of the Secretary--Office of Business Liaison--Office of the Chief of Staff--Office of the Deputy Secretary--Office of Executive Secretariat--Office of General Counsel--Office of Inspector General--Office of Legislative and Intergovernmental Affairs---Native American Affairs--Office of Policy and Strategic Planning--Office of Public Affairs---Office of Digital Engagement--Office of the White House Liaison--The White House Initiative on Asian Americans and Pacific Islanders--Office of the Chief Financial Officer and Assistant Secretary for Administration---Office of Acquisition Management---Office of Facilities and Environmental Quality---Office of Budget---Office of Civil Rights---Office of Financial Management---Office of Human Resources Management---Office of Privacy and Open Government---Office of Program Evaluation & Risk Management---Office of Security---Office of Small and Disadvantaged Business Utilization--Office of the Chief Information Officer--Enterprise Services--Center for Faith-Based and Neighborhood Partnerships
By issues 2020 CensusAtmospheric dataCybersecurityEconomic indicatorsEnvironmental dataExport and investment promotionFirst responder networkFisheries and aquacultureICT Supply ChainInfrastructureIntellectual propertyInvesting in communities and workersManufacturingMinority business growthPopulation statisticsRegulatory reformSpace commerceTrade enforcementWeather and satellites
Re-Examining the Cost-of-Living Index and the Biases of Price Indices
The U.S. CPI is based on the Laspeyres price index, an index type that has an upward "substitution bias." Thus, the CPI tends to overstate increases in the cost of living. To address this bias, the Advisory Commission to Study the Consumer Price Index recommended adopting for the CPI a "superlative" price index, e.g., the Fisher or Tornqvist indices. Under the assumption of homothetic preferences...
International Competitiveness: Labor Productivity Leadership and Convergence Among 14 OECD Countries
From 1970 through 1991, the United States led other OECD countries in overall labor productivity, a key measure of national competitiveness. During this period, labor productivity in these countries converged, both towards the mean OECD labor productivity and the U.S. level of labor productivity. This suggests living standards among the OECD countries are becoming more alike. In the latter half of...
Economy-Wide and Industry-Level Impact of Information Technology
From 1970 through 1991, the United States led other OECD countries in overall labor productivity, a key measure of national competitiveness. During this period, labor productivity in these countries converged, both towards the mean OECD labor productivity and the U.S. level of labor productivity.
Information Technology's Impact on Firm Structure: A Cross-Industry Analysis
Since 1984, the U.S. telecommunications services industry has experienced profound changes caused by deregulation and rapid technological change. Competition now exists in almost all segments of the domestic industry. Local services, the only sector of the industry that remains monopolistic, currently face the prospect of increased competition as changes in technology and law enable various...
Service Industries and Economic Performance
Service Industries and Economic Performance addresses three questions that have troubled economists for more than a decade: whether service-oriented economies can sustain high rates of output growth; whether they can generate large numbers of good jobs; and whether they can compete effectively in global markets.
Engines of Growth: Manufacturing Industries in the U.S. Economy
This study assesses the widely-held belief that manufacturing industries are uniquely important to the process of national economic growth. The study's related purpose is to describe structural changes in the U.S. manufacturing sector and the organization of U.S. manufacturing firms that are helping to determine the pace of economic growth and the creation of economic opportunity. Taken together...
Re-Examining the Cost-Effectiveness of the Research and Experimentation Tax Credit
This paper evaluates several well-known empirical studies of the cost-effectiveness of the research and experimentation (R&E) tax credit. Studies of the credit's effect during 1981-1985 generally find weak evidence of cost-effectiveness. However, more recent studies focusing on a longer period conclude that the tax credit has induced an increase in R&E spending by an amount that is significantly...
Patterns of Advanced Technology Adoption and Manufacturing Performance: An Overview
This report on technology adoption patterns and performance characteristics in a sample of several thousand U.S. manufacturing plants sheds new light on the ways in which technology is associated with growth. The report summarizes a more detailed study to be released later that finds patterns of technology adoption to be enormously diverse. Nonetheless, dispersion of advanced technologies appears...
Current page 157


Currently I am Professor for Prehistoric Archaeology at the University of Tübingen. Next to my extensive work on several archaeological campaigns in Syria, I devoted a great personal energy in caring for and protecting the archaeological sites and cultural heritage in war-torn Syria during the last three years.
In a time when Archaeological sites are under great threat, we have to devote our attention to projects of restoration and preservation. With my membership in the AGYA I hope to enlarge the idea of collaboration in the field of Archaeology and make the scientific and public community aware of the danger our cultural heritage is posed today, in Syria and other Arab countries.
Abdulrahman, A. (2013). Gindaris and the Amuq Plain, Excavations from 2006 until 2011, Damaskus: al-Basil Center Press.
Abdulrahman, A. (2010). "Excavation Results at Gindaris 2009", in Chronique Archéologique en Syrie 5.
Abdulrahman, A. (2009). Believes and Arts of the Pioneer Farmers, Damaskus: Inana Press.


text:
PHPC-572: Ensure stream context does not go out of scope before socket init
--SKIPIF--
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
<?php skip_if_not_libmongoc_ssl(); ?>
<?php skip_if_not_ssl(); ?>
--FILE--
<?php
require_once __DIR__ . "/../utils/basic.inc";

$closure = function() {
    $context = stream_context_create([
        'ssl' => [
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true,
        ],
    ]);
    return new MongoDB\Driver\Manager(URI, [], ['context' => $context]);
};

$manager = $closure();
$cursor = $manager->executeCommand(DATABASE_NAME, new MongoDB\Driver\Command(['ping' => 1]));
var_dump($cursor->toArray()[0]);

?>
===DONE===
<?php exit(0); ?>
--EXPECTF--
object(stdClass)#%d (%d) {
  ["ok"]=>
  float(1)
}
===DONE===