Jüdische Friedhöfe in Orten namens Brüggen werden in folgenden Artikeln behandelt:

 Jüdischer Friedhof (Brüggen, Kerpen) in Brüggen, Stadtteil von Kerpen im Rhein-Erft-Kreis
 Neuer jüdischer Friedhof (Brüggen) in Brüggen im Kreis Viersen
 Alter jüdischer Friedhof (Brüggen) in Brüggen im Kreis Viersen

{'title': 'Jüdischer Friedhof Brüggen', 'url': 'https://de.wikipedia.org/wiki/J%C3%BCdischer%20Friedhof%20Br%C3%BCggen', 'language': 'de', 'timestamp': '20230320'}


import {Semaphore} from 'immutable-di/utils/Promised'
import {Factory} from 'immutable-di/define'

function _Semaphore() {
    return Semaphore()
}

export default Factory()(_Semaphore)

{'content_hash': 'e1e8ad31154c51b3e09e5ffaaf500f8c', 'timestamp': '', 'source': 'github', 'line_count': 8, 'max_line_length': 53, 'avg_line_length': 23.25, 'alnum_prop': 0.7419354838709677, 'repo_name': 'zerkalica/immutable-di-todomvc', 'id': 'c4c03410332e4911a8f2530f015ab338402f6b1d', 'size': '186', 'binary': False, 'copies': '1', 'ref': 'refs/heads/master', 'path': 'src/common/services/Semaphore.js', 'mode': '33188', 'license': 'mit', 'language': [{'name': 'CSS', 'bytes': '106'}, {'name': 'JavaScript', 'bytes': '26772'}, {'name': 'Shell', 'bytes': '190'}]}


Não tente me rastrear #handsomeman #homembonito #cute #bearman #beardy #bestoftheday #picoftheday #fotografia #memyself #instaboy #garotosdorio #instaman #instabear #bears 🐻 #fridaymood #beardpower #catboy #proudbears #errejota #filhosdeoxossi #thischarmingman l #filhodomato #gypsystyle #ciganos #almacigana #optcha #fogedemim .
#amorpropio #selflove #motivation #motivacion #aceptacion #sentidocomun #criteriopropio #fridaymood #frasedeldia Algo tan simple, pero difícil para muchos. . . .

{'timestamp': '2019-04-23T06:56:01Z', 'url': 'https://www.picbon.com/tag/FridayMood', 'language': 'en', 'source': 'c4'}


Press – "... for peace comes dropping slow ..."
Download Carrane Hill Light Writers image (JPG, 1692 x 954, 1.2MB).
Download Lightwriters at Parke’s Castle (JPG, 1692 x 949, 1.3MB).
Download Letter R at Culleenamore Strand (JPG, 1697 x 947, 1.5MB).
Download Peace at Carrane Hill (JPG, 2174 x 1222, 1.5MB).
Download ‘For’ at Carrane Hill (JPG, 3030 x 2020, 3.2MB).

{'timestamp': '2019-04-18T21:07:44Z', 'url': 'http://www.forpeacecomesdroppingslow.com/?page_id=268', 'language': 'en', 'source': 'c4'}


benhur ／ Digital Paperback:The Life & Journey of an Individual.
DJ H.A.W.K／mainWE$Tream 4 Fingaz Up! 2 Twisted in the Middle!!
DJ 千 a.k.a Thousand／International Radio 1000% Westcoast Sound!!
SLAPBAK／IF IT AIN'T BROKE, DON'T FUNK WID IT!


FROM richarvey/nginx-php-fpm:stable

LABEL Description="Contains basic setup for NGINX-PHP-FPM setup" Vendor="Exclusive Home Production" Version="1.0"

COPY ./default.dev.vhost.conf /etc/nginx/sites-available/default.conf

{'content_hash': '626348e3b4266e7bfad8fe020066d8c1', 'timestamp': '', 'source': 'github', 'line_count': 5, 'max_line_length': 113, 'avg_line_length': 44.2, 'alnum_prop': 0.8009049773755657, 'repo_name': 'bravepickle/docktor-project-base-php', 'id': '2bf9cd4bfdab8770df96d5c1d56b7a05dc5b425c', 'size': '221', 'binary': False, 'copies': '1', 'ref': 'refs/heads/master', 'path': 'etc/docker/nginx-php/Dockerfile', 'mode': '33188', 'license': 'apache-2.0', 'language': [{'name': 'HTML', 'bytes': '3171'}, {'name': 'PHP', 'bytes': '158'}, {'name': 'Puppet', 'bytes': '10825'}, {'name': 'Ruby', 'bytes': '3271'}, {'name': 'Shell', 'bytes': '2734'}]}


Division 1 Féminine är den främsta fotbollsligan för kvinnor i Frankrike. I ligan ingår bland andra Lyon och Paris St. Germain. Ligan i dess nuvarande form grundades 2002 och består av 12 lag.

Överlägset flest ligasegrar efter säsongen 2020/21 har Olympique Lyonnais med 14 stycken. Inför säsongen 2020/2021 består ligan av

Externa länkar
Footofeminin

Fotboll i Frankrike

{'title': 'Division 1 Féminine', 'url': 'https://sv.wikipedia.org/wiki/Division%201%20F%C3%A9minine', 'language': 'sv', 'timestamp': '20230320'}


Starodub (Ostericum Hoffmann) – rodzaj roślin z rodziny selerowatych. Obejmuje 11 gatunków. Ze względu na podobieństwa morfologiczne bywają one włączane do rodzaju dzięgiel Angelica, aczkolwiek badania molekularne potwierdzają odrębność tych rodzajów. Zasięg rodzaju obejmuje strefę umiarkowaną Eurazji – Europę Środkową i Wschodnią, azjatycką część Rosji, Kazachstan, Mongolię, Chiny, Półwysep Koreański i Japonię. Do flory Polski należy jeden gatunek – starodub łąkowy Ostericum palustre.

Użytkowe znaczenie ma O. citriodorum wykorzystywany w tradycyjnej medycynie chińskiej. Jako źródło do pozyskania olejków eterycznych stosowane są też O. grosseserratum i O. maximowiczii.

Morfologia
 Pokrój Byliny z łodygami dętymi, żebrowanymi.
 Liście Blaszki 2- i 3-krotnie trójsieczne lub pierzasto złożone. Ogonki z rozdętą, pochwiastą nasadą.
 Kwiaty Zebrane w baldachy złożone, których rozgałęzienia wsparte są nielicznymi, równowąskimi lub równowąskolancetowatymi pokrywami i pokrywkami. Działki kielicha okazałe, jajowate lub trójkątne.
 Owoce Rozłupnia rozpadająca się na dwie rozłupki, spłaszczone, owalnie-jajowate, u nasady sercowate, na powierzchni grzbietowej z wyraźnymi żebrami, podczas gdy boczne żebra są zwykle szerokie i cienkie, oskrzydlające rozłupki.

Systematyka
Z powodu podobieństwa wielu cech morfologicznych, gatunki tu zaliczane bywają w niektórych ujęciach systematycznych włączane do rodzaju dzięgiel Angelica. Jednak badania molekularne nie potwierdzają pokrewieństwa tych rodzajów. Angelica należy do plemienia Selineae, podczas gdy Ostericum wchodzi w skład kladu wspólnego z rodzajem Acronema i do niego nazywanym. W jego obrębie jest rodzajem siostrzanym względem rodzaju Pternopetalum (morfologicznie z kolei dość odrębnym...). Podobieństwa morfologiczne z rodzajem Angelica tłumaczone są jako skutek konwergencji i niekompletnego sortowania haplotypów (incomplete lineage sorting – ILS).

 Pozycja systematyczna
Rodzaj z podrodziny Apioideae i rodziny selerowatych Apiaceae, tradycyjnie klasyfikowany do plemienia Selineae. Badania molekularne wskazują na przynależność tego rodzaju do odrębnej „grupy Acronema”.

 Wykaz gatunków
 Ostericum atropurpureum G.Y.Li, G.H.Xia & W.Y.Xie
 Ostericum citriodorum (Hance) R.H.Shan & C.Q.Yuan
 Ostericum florenti (Franch. & Sav. ex Maxim.) Kitag.
 Ostericum grosseserratum (Maxim.) Kitag.
 Ostericum huadongense Z.H.Pan & X.H.Li
 Ostericum longipedicellatum (H.Wolff) Pimenov & Kljuykov
 Ostericum maximowiczii (F.Schmidt) Kitag.
 Ostericum palustre (Besser) Besser – starodub łąkowy
 Ostericum scaberulum (Franch.) R.H.Shan & C.Q.Yuan
 Ostericum sieboldii (Miq.) Nakai
 Ostericum tenuifolium (Pall. ex Schult.) Y.C.Chu

Przypisy

Selerowate

{'title': 'Starodub (roślina)', 'url': 'https://pl.wikipedia.org/wiki/Starodub%20%28ro%C5%9Blina%29', 'language': 'pl', 'timestamp': '20230320'}


Ubiquiti UniFi AC Lite Access Point 802.11ac Dual Radio Access Point 739,00 kr.
Ubiquiti UniFi AC Mesh Access Point 802.11ac Access Point with Plug & Play Mesh 819,00 kr.
Ubiquiti UniFi AC In-Wall Access Point In-Wall 802.11ac Access Point 819,00 kr.
Xclaim Xi-1 Business Class Wi-Fi Access Point Dual-Band 2x2 802.11n, Single Radio, PoE 895,00 kr.
Ubiquiti UniFi AC LR Access Point 802.11ac Long Range Access Point 899,00 kr.
Ubiquiti UniFi AC Pro Access Point 802.11ac PRO Access Point 1.229,00 kr.
Ubiquiti UniFi nanoHD Access Point 802.11ac Wave 2 Enterprise Wi-Fi Access Point 1.479,00 kr.
Ubiquiti UniFi AC Mesh Pro Access Point 802.11ac Access Point with Plug & Play Mesh 1.649,00 kr.
Ubiquiti UniFi AC In-Wall Access Point Pro In-Wall 802.11ac Access Point Pro 1.649,00 kr.
Xclaim Xi-2 Business Class Wi-Fi Access Point Dual-Band 2x2 802.11n, Dual Radio, PoE 1.695,00 kr.
Xclaim Xi-3 Business Class Wi-Fi Access Point Dual-Band 2x2 802.11ac, Dual Radio, PoE 2.195,00 kr.
Ruckus ZoneFlex H320 Wall Switch 802.11ac, Wave2 2.493,75 kr.
Ruckus ZoneFlex H320 Wall Switch, Unleashed Dual-Band 802.11ac, Wave2 2.493,75 kr.
Ubiquiti UniFi AC HD Access Point 802.11ac Wave 2 Enterprise Wi-Fi Access Point 2.879,00 kr.
Xclaim Xo-1 Business Class Wi-Fi Access Point Dual-Band 2x2 802.11ac, Dual Radio, Outdoor, PoE 2.995,00 kr.
Ubiquiti UniFi AC EDU Access Point 802.11ac Dual-Radio AP with Public Address System 3.299,00 kr.
Ubiquiti UniFi AC Lite Access Point, 5 Pack 5 x AC Lite, No PoE Adapters Included. 3.299,00 kr.
Ruckus ZoneFlex H510 Wall Switch, Unleashed Dual-Band 802.11ac 2x2:2, 2 x Gigabit, Wave2 3.456,25 kr.
Ruckus ZoneFlex H510 Wall Switch, 2x2:2 Streams 802.11ac, Wave2 3.456,25 kr.
Ruckus ZoneFlex R310 Access Point, Unleashed Dual-Band 802.11ac 2x2:2, 1 x Gigabit 3.456,25 kr.

{'timestamp': '2019-04-18T10:54:59Z', 'url': 'https://www.proconsult.dk/shop/netvaerk/professionelle-access-point', 'language': 'en', 'source': 'c4'}


Me: *Accidentally hits dog.* OMG I'M SO SORRY!!!! Dog: *Runs away* Me: LET ME LOVE YOU!!!!!

{'timestamp': '2019-04-23T22:03:52Z', 'url': 'http://www.lolsotrue.com/member-quotes/2169', 'language': 'en', 'source': 'c4'}


Dytryk von Grüningen, także Theodericus de Groninge, Grueningen (urodz. ?, zm. 3 września 1259 lub później) – mistrz krajowy Inflant zakonu krzyżackiego w latach 1242-1245, mistrz krajowy w Prusach 1247-1259, mistrz krajowy w Niemczech w latach 1254-1256, jedna z najwybitniejszych postaci zakonu krzyżackiego w XIII wieku.

Życiorys
Pochodził z wsi Grüningen (stąd przydomek „von Grüningen”) położonej na północ od stolicy Turyngii, Erfurtu. Wywodził się z rodziny ministeriałów związanych z miejscowymi landgrafami.

Do zakonu krzyżackiego wstąpił 18 listopada 1234 w Marburgu wraz ze swoimi przyjaciółmi Konradem von Thüringen oraz Hartmanem von Heldrungen, późniejszymi wielkimi mistrzami zakonu. Szczególnie znajomość z Konradem zaowocowała szybką karierą w zakonie. Pierwszą nominację na mistrza krajowego Inflant otrzymał w 1237 roku, lecz ostatecznie na Inflanty udał się Hermann Balk. U boku Hermanna Balka zbierał Dytryk von Grüningen cenne doświadczenie, kierując ostatecznie prowincją inflancką od połowy 1238 roku do początków 1240, po rezygnacji Balka z funkcji mistrza krajowego. Na pełnoprawne stanowisko mistrza krajowego Inflant powrócił w 1242. Okres jego rządów w Inflantach przypadł na trudny czas po przegranej bitwie na jeziorze Pejpus. Swoimi nieprzeciętnymi zdolnościami organizacyjnymi opanował kryzysową sytuację zakonu, przechodząc do działań ofensywnych w Kurlandii, których efektem było założenie Goldyngii.

W latach 1244-1245 widać jego obecność u boku wielkiego mistrza Henryka von Hohenlohe bądź to podczas zebrań kapituły zakonu w Ziemi Świętej, bądź to w kurii papieskiej w Lyonie. Od tamtych wydarzeń rozpoczyna się kariera dyplomatyczna Dytryka w zakonie. Stał się on jednym z głównych dyplomatów dbających o interesy zakonu krzyżackiego w Rzymie. W roku 1246 przybył do kurii papieskiej jako poseł antykróla niemieckiego landgrafa Turyngii Henryka Raspe.

Na przełomie lat 1247/1248 został mianowany mistrzem krajowym w Prusach. Pomimo objęcia funkcji mistrza do Prus jednak nie przybył. Najprawdopodobniej nominacja miała na celu wzmocnienie pozycji Dytryka w strukturach zakonu, a także silniejsze reprezentowanie interesów rodzącego w Prusach się państwa krzyżackiego u samego papieża Innocentego IV.

W latach 1249-1251 Dytryk von Grüningen zaliczany był do grona najbardziej zaufanych dyplomatów papieża. Podejmował się wielu misji w imieniu Innocentego IV. W 1249 roku złożył skargę u arcybiskupa inflancko-pruskiego Alberta Suerbeera będącego w sporze z zakonem. Złożona skarga spowodowała działania papieża, które 24 lutego 1251 roku zakończyły się ugodą pomiędzy arcybiskupem Albertem a zakonem regulującą stosunki kościelne w Inflantach. Po klęsce Krzyżaków w bitwie pod Krukami Dytryk uzyskał poparcie papieża w sprawie organizacji pomocy dla zakonu w walce z pogańskimi Prusami. W 1251 roku Dytryk wyprawił się do Niemiec w celu przeciągnięcia na stronę antykróla Wilhelma z Holandii książąt, landgrafów, margrabiów i biskupów niemieckich. W tym czasie piastował stanowisko zastępcy wielkiego mistrza w prowincjach europejskich. Urząd ten pozwalał mu na swobodę działania i podejmowania decyzji.

Do Prus Dytryk von Grüningen przybywa dopiero w 1254, kiedy to wraz z wielkim mistrzem Popponem von Osternohe wydaje dokument nadania lenna księciu tczewskiemu Samborowi. W tym czasie Dytryk w dokumentach występuje już jako mistrz krajowy Niemiec. Z Prus przybył przed oblicze papieskie do Asyżu, skąd jeszcze w 1254 roku udał się na spotkanie z arcybiskupem Albertem w celu ostatecznego zakończenia sporu biskupstwa inflanckiego z zakonem. Spotkanie odbyło się w grudniu 1254 roku w Sens we Francji. Do Prus powrócił w maju 1255 roku i przebywał najprawdopodobniej w Chełmży.

Na początku 1256 roku spotkał się w Rzymie z następcą Innocentego IV, papieżem Aleksandrem IV. Następnie źródła informują o jego spotkaniu w czerwcu 1256 roku w komendzie Sachsenhausen nieopodal Frankfurtu nad Menem z biskupem sambijskim Henrykiem von Streittbergiem oraz z mistrzem krajowym Inflant Anno von Sangerhausenem w sprawie podziału trybutu ściąganego z podbitej Sambii.

Dytryk godność mistrza krajowego Niemiec złożył na kapitule generalnej zakonu w Rzymie jesienią 1256 roku, jednocześnie zachował tytuł mistrza krajowego Prus, choć najprawdopodobniej już nigdy nie odwiedził terenów Prus. Dodać należy, że rezygnacja Dytryka zbiegła się ze zrzeczeniem się godności wielkiego mistrza przez Poppona von Osternohe. W odróżnieniu od daty dziennej data roczna śmierci Dytryka von Grüningena nie jest poświadczona, założyć można, że zmarł 3 września, najwcześniej w 1259 roku lub później.

Bibliografia
 Maciej Dorna, Bracia zakonu krzyżackiego w Prusach w latach 1228-1309, Wydawnictwo Poznańskie, Poznań 2004, str. 132-141.

Mistrzowie krajowi Prus (zakon krzyżacki)
Mistrzowie krajowi Inflant (zakon krzyżacki)
Mistrzowie krajowi Niemiec (zakon krzyżacki)

{'title': 'Dytryk von Grüningen', 'url': 'https://pl.wikipedia.org/wiki/Dytryk%20von%20Gr%C3%BCningen', 'language': 'pl', 'timestamp': '20230320'}


«Ёж и лиса» () — эссе философа Исайи Бе́рлина, одно из его самых широко известных произведений. Впервые опубликовано в 1953 году. По словам самого Берлина, он «не собирался делать серьёзных заявлений, а имел в виду своего рода увлекательную интеллектуальную игру, но к ней отнеслись серьёзно: каждая классификация на что-то проливает свет».

Происхождение
Название эссе является отсылкой к фрагменту, приписываемому древнегреческому поэту Архилоху:  («лиса знает многое, а ёж — одно большое»). В Adagia (1500) Эразма Роттердамского эта фраза дана на латыни: Multa novit vulpes, verum echinus unum magnum. Та же идея воплощена в басне Эзопа «».

Содержание
Берлин дальше разрабатывает эту идею, чтобы разделить писателей и мыслителей на две категории: ежи, которые смотрят на мир через призму одной определяющей идеи (в качестве примера приводятся Платон, Лукреций, Данте Алигьери, Блез Паскаль, Георг Гегель, Федор Достоевский, Фридрих Ницше, Хенрик Ибсен и Марсель Пруст) и лисы, которые опираются на широкий спектр опыта и для которых мир не может быть сведён к одной идее (приведённые примеры включают Геродота, Аристотеля, Эразма Роттердамского, Уильяма Шекспира, Мишеля де Монтеня, Мольера, Иоганна Вольфганга Гёте, Александра Пушкина, Оноре де Бальзака и Джеймса Джойса).

Обращаясь к Льву Толстому, Берлин утверждает, что на первый взгляд Толстой ускользает от отнесения в одну из двух групп. Берлин полагает, что, хотя Толстой обладает талантами лисы, сам он считает, что нужно быть ежом, и поэтому пространные оценки, которые даёт Толстой своим работам, вводят в заблуждение. Берлин использует эту идею как основу для анализа теории истории, которую Толстой представляет в своем романе «Война и мир».

Во второй половине эссе Берлин анализирует творчество Толстого путём его сопоставления с творчеством мыслителя начала XIX века Жозефа де Местра, остроту этому сравнению придаёт то, что, хотя Толстой и де Местр придерживались диаметрально противоположных взглядов по многим вопросам, их взгляды на фундаментальную природу бытия и пределы рационального, научного подхода к бытию оказываются глубоко сходными.

В последних нескольких абзацах эссе Берлин ещё раз повторяет свой тезис о том, что Толстой был по натуре лисом, но по убеждениям — ежом, и высказывает предположение, что это внутреннее противоречие причинило Толстому огромную боль в конце его жизни.

Эссе опубликовано отдельно и в сборнике «Русские мыслители» под редакцией Генри Харди и Эйлин Келли. Это эссе также представлено в широко распространённой антологии эссе И. Берлина «Правильное исследование человечества».

Влияние
Некоторые авторы, такие как Майкл Уолцер, использовали тот же подход для описания самого И. Берлина как человека, который много знает, по сравнению с предполагаемой ограниченностью многих других современных политических философов. Канадский философ Чарльз Тейлор, бывший студент Берлина, признавался в своём интервью после получения премии Темплтона 2007 года, что учитель окрестил его ежом.

Филип Э. Тетлок, профессор политической психологии Пенсильванского университета, в значительной степени использовал эту классификацию в своём исследовании точности экспертов и прогнозистов в различных областях (особенно в политике) в своей книге 2005 года «Экспертное политическое суждение: насколько оно хорошо? Как мы можем узнать?».

В своей книге «Братья-основатели» о ключевых фигурах американской революции историк Джозеф Эллис, оценивая Джорджа Вашингтона, использует берлинскую концепцию «Ёж и лис», отмечая, что «Вашингтон был архетипическим ежом. И единственное, что он знал, это то, что будущее Америки как нации лежит на Западе, в её развитии в качестве континентальной империи в течение следующего столетия», что было одной из причин того, что Вашингтон посвящал много усилий строительству каналов.

Джим Коллинз ссылается на эссе в своей книге «От хорошего к великому», где он ясно показывает своё предпочтение менталитету ежа.

Клаудио Велис использует конструкцию Берлина для противопоставления англо-американских и испанских моделей поселения и управления в своей книге 1994 года The New World of the Gothic Fox Culture and Economy in English and Spanish America.

Художник Ричард Серра упомянул эссе в названии своей скульптуры, установленной в кампусе Принстонского университета в 2000 году.

Книга философа права Рональда Дворкина «Справедливость для ежей» (2011), в которой приводится довод в пользу единой всеобъемлющей и последовательной основы моральной истины, берёт свое название от мнения Берлина о еже.

Историк музыки Бертольд Хекнер применяет и расширяет различия Берлина в своем эссе 2007 года «Вагнер и происхождение зла». Одним из ключевых выводов Хекнера является то, что историография антисемитизма Вагнера, как и историография холокоста, имеет две основные ветви: функционалистскую ветвь, подобную ежу, которая рассматривает полемические выпады композитора в отношении еврейской культуры как простую ассимиляционистскую риторику — и интенционалистскую ветвь, подобную лисе, которая рассматривает их как насильственные проявления подлинного антисемитизма.

В своей книге «Место Витгенштейна в аналитической философии XX века» оксфордский философ Питер Хакер использует эту метафору, чтобы сопоставить берлинского Толстого «лиса по натуре, но еж по убеждению» с философом австрийского происхождения Людвигом Витгенштейном, который был «по своей природе ежом, но после 1929 года благодаря большим интеллектуальным усилиям и воображению превратился в образцового лиса».

В своём бестселлере 2012 года «Сигнал и шум» прогнозист Нейт Сильвер призывает читателей быть «более хитрыми» после того, как резюмирует эссе Берлина. Он цитирует работу Филипа Э. Тетлока о точности политических прогнозов в Соединенных Штатах во время холодной войны, когда он был профессором политологии в Калифорнийском университете в Беркли. Новостной веб-сайт Сильвера, fivethirtyeight.com, когда он был запущен в марте 2014 года, также принял лисицу в качестве своего логотипа «как намёк на оригинальную работу Архилоха».

В 2018 году Джон Льюис Гэддис ссылается на эссе Берлина, а также на работу Тетлока в своей книге «О великой стратегии».

В фильме Вуди Аллена 1992 года «Мужья и жёны» персонаж Салли, которую играет Джуди Дэвис, размышляет во время секса о разных людях, которых она знает, — ежи они или лисы.

Философ искусства Питер Киви ссылается на эссе Берлина, когда он противопоставляет современную философию искусства как эпоху Лиса, лучше всего представленную Ноэлем Кэрроллом, с предыдущей эпохой Ежа, лучше всего представленной Артуром Данто.

Политический экономист из Гарварда Дэни Родрик применяет это различие к традиционным ортодоксальным экономистам-ежам, которые всегда и везде применяют «либеральную парадигму», и к неортодоксальным (политическим) экономистам-лисицам, которые имеют разные ответы для разных обстоятельств времени, места и ситуации в своей книге 2015 года «Экономика решает: сила и слабость „мрачной науки“».

Издания
на английском языке
 ; New York, 1953: Simon & Schuster; New York, 1957: New American Library; New York, 1986: Simon & Schuster, with an introduction by Michael Walzer.

 на русском языке
 Берлин, Исайя. Ёж и лисица (Об исторических взглядах Л. Н. Толстого). Перевод с английского и публикация В. Сапова // Вопросы литературы. 2001. № 4 — 5.
 Берлин, Исайя. Ёж и лисица (Об исторических взглядах Л. Н. Толстого) // Подлинная цель познания. Избранные эссе / Пер. с англ. и комментарии В. В. Сапова. — М.: Канон+, 2002. — 800 с. — С. 513—595.

См. также
 Homo unius libri

Примечания

Ссылки
  Report on the book Expert Political Judgment by Philip Tetlock, who uses the fox and the hedgehog as a parable for political and economics experts.

Эссе 1953 года
Эссе на английском языке
Исайя Берлин
Лев Толстой
Вымышленные ежи
Вымышленные лисы
Книги издательства Weidenfeld & Nicolson


#import "S3CopyPartRequest.h"

@implementation S3CopyPartRequest

@synthesize uploadId;
@synthesize partNumber;

@synthesize sourceBucketName;
@synthesize sourceKey;
@synthesize sourceVersionId;

@synthesize destinationBucketName;
@synthesize destinationKey;

@synthesize ifMatch;
@synthesize ifNoneMatch;
@synthesize ifModifiedSince;
@synthesize ifUnmodifiedSince;

@synthesize firstByte;
@synthesize lastByte;

-(NSMutableURLRequest *)configureURLRequest
{
    self.bucket = destinationBucketName;
    self.key    = destinationKey;

    NSString *sourceHeader = [NSString stringWithFormat:@"/%@/%@", [AmazonSDKUtil urlEncode:self.sourceBucketName], [AmazonSDKUtil urlEncode:self.sourceKey]];
    if (sourceVersionId != nil) {
        sourceHeader = [NSString stringWithFormat:@"%@?%@=%@", sourceHeader, kS3SubResourceVersionId, sourceVersionId];
    }
    [self.urlRequest setValue:sourceHeader forHTTPHeaderField:kHttpHdrAmzCopySource];

    if (nil != self.ifModifiedSince) {
        [self.urlRequest setValue:[self.ifModifiedSince requestFormat] forHTTPHeaderField:kHttpHdrAmzCopySourceIfModified];
    }
    if (nil != self.ifUnmodifiedSince) {
        [self.urlRequest setValue:[self.ifUnmodifiedSince requestFormat] forHTTPHeaderField:kHttpHdrAmzCopySourceIfUnmodified];
    }

    if (nil != self.ifMatch) {
        [self.urlRequest setValue:self.ifMatch forHTTPHeaderField:kHttpHdrAmzCopySourceIfMatch];
    }
    if (nil != self.ifNoneMatch) {
        [self.urlRequest setValue:self.ifNoneMatch forHTTPHeaderField:kHttpHdrAmzCopySourceIfNoneMatch];
    }

    if (nil != self.firstByte && nil != self.lastByte) {
        NSString *range = [NSString stringWithFormat:@"bytes=%ld-%ld", [firstByte longValue], [lastByte longValue]];
        [self.urlRequest setValue:range forHTTPHeaderField:kHttpHdrRange];
    }

    self.subResource = [NSString stringWithFormat:@"%@=%d&%@=%@", kS3QueryParamPartNumber, self.partNumber, kS3QueryParamUploadId, self.uploadId];

    self.contentLength = 0;
    [super configureURLRequest];

    [urlRequest setHTTPMethod:kHttpMethodPut];

    return urlRequest;
}

-(void)dealloc
{
    [uploadId release];

    [super dealloc];
}

@end

{'content_hash': '85ff02571f0497bb3cbcbb09b332bf35', 'timestamp': '', 'source': 'github', 'line_count': 74, 'max_line_length': 158, 'avg_line_length': 29.486486486486488, 'alnum_prop': 0.7401466544454629, 'repo_name': 'abovelabs/aws-ios-sdk', 'id': '437023c9595ae164f73aad1e17a28509a2f04c19', 'size': '2766', 'binary': False, 'copies': '1', 'ref': 'refs/heads/master', 'path': 'src/Amazon.S3/Model/S3CopyPartRequest.m', 'mode': '33188', 'license': 'apache-2.0', 'language': []}


import sql from 'sql-template-strings'
import { SbPermissions } from '../../../common/users/permissions'
import { SbUserId } from '../../../common/users/sb-user'
import db, { DbClient } from '../db'
import { Dbify } from '../db/types'

type DbPermissions = Dbify<SbPermissions>

function convertFromDb(props: DbPermissions): SbPermissions {
  return {
    editPermissions: props.edit_permissions,
    debug: props.debug,
    banUsers: props.ban_users,
    manageMaps: props.manage_maps,
    manageMapPools: props.manage_map_pools,
    manageMatchmakingSeasons: props.manage_matchmaking_seasons,
    manageMatchmakingTimes: props.manage_matchmaking_times,
    manageRallyPointServers: props.manage_rally_point_servers,
    massDeleteMaps: props.mass_delete_maps,
    moderateChatChannels: props.moderate_chat_channels,
  }
}

export async function createPermissions(
  dbClient: DbClient,
  userId: SbUserId,
): Promise<SbPermissions> {
  const query = sql`
    INSERT INTO permissions (user_id) VALUES (${userId}) RETURNING *;
  `

  const result = await dbClient.query(query)
  if (result.rowCount < 1) throw new Error('No rows returned')
  return convertFromDb(result.rows[0])
}

export async function getPermissions(userId: SbUserId): Promise<SbPermissions | undefined> {
  const query = sql`
    SELECT user_id, edit_permissions, debug, ban_users, manage_maps, manage_map_pools,
        mass_delete_maps, manage_matchmaking_times, manage_rally_point_servers,
        moderate_chat_channels, manage_matchmaking_seasons
    FROM permissions
    WHERE user_id = ${userId};
  `

  const { client, done } = await db()
  try {
    const result = await client.query<DbPermissions>(query)
    return result.rows.length ? convertFromDb(result.rows[0]) : undefined
  } finally {
    done()
  }
}

export async function updatePermissions(
  userId: SbUserId,
  perms: SbPermissions,
): Promise<SbPermissions | undefined> {
  const query = sql`
    UPDATE permissions
    SET
      edit_permissions = ${!!perms.editPermissions},
      debug = ${!!perms.debug},
      ban_users = ${!!perms.banUsers},
      manage_maps = ${!!perms.manageMaps},
      manage_map_pools = ${!!perms.manageMapPools},
      mass_delete_maps = ${!!perms.massDeleteMaps},
      manage_matchmaking_times = ${!!perms.manageMatchmakingTimes},
      manage_rally_point_servers = ${!!perms.manageRallyPointServers},
      moderate_chat_channels=${!!perms.moderateChatChannels},
      manage_matchmaking_seasons=${!!perms.manageMatchmakingSeasons}
    WHERE user_id = ${userId}
    RETURNING *;
  `

  const { client, done } = await db()
  try {
    const result = await client.query(query)
    return convertFromDb(result.rows[0])
  } finally {
    done()
  }
}

{'content_hash': '87d4cbcfdf680dde2f13f104b3a663e4', 'timestamp': '', 'source': 'github', 'line_count': 83, 'max_line_length': 92, 'avg_line_length': 32.81927710843374, 'alnum_prop': 0.6978707782672541, 'repo_name': 'ShieldBattery/ShieldBattery', 'id': '03665ace5a215b4f00f1e1d3074c5005aaf48eb8', 'size': '2724', 'binary': False, 'copies': '1', 'ref': 'refs/heads/master', 'path': 'server/lib/models/permissions.ts', 'mode': '33188', 'license': 'mit', 'language': [{'name': 'Batchfile', 'bytes': '4449'}, {'name': 'Dockerfile', 'bytes': '4617'}, {'name': 'HLSL', 'bytes': '2763'}, {'name': 'HTML', 'bytes': '103655'}, {'name': 'JavaScript', 'bytes': '518100'}, {'name': 'Pug', 'bytes': '1868'}, {'name': 'Rust', 'bytes': '528300'}, {'name': 'Shell', 'bytes': '9625'}, {'name': 'TypeScript', 'bytes': '2340371'}]}


0TuttiFrutti0 . SnowWhitte. gallenmadrid. shytalia.
LorenzoLunaGoldieAnnaxDorinaShyRoussy .JustinwithyouBUSTYHOTSBlondieGirlTScok2BOYSPORN4U .ANNIEANDJAYAnnePorterImagineWhatIcanBUSTYHOTS .DaveGrantKellyHomeblackNwitheNbigDorinaShy .DorinaShyJohnyDandeDorinaShySweeetLorelai .RamgamsSimpleGabbyImagineWhatIcanCrystallSex .AlissaTeenMissShandieGeorgetAlissaTeen .Hairyparadise208AsweetSEXyLOVERxJohnyDandeWonderfulCat .anisa1anisa1blackNwitheNbigDaveGrant .Geraldin21SimpleGabbySeanRoseGiaAdelle .KellyHomeBeatrisLunaxAnnaBelleAlexiasXoXo .
kosshkkkaMissShandieAlexandrraWoWMillySky .HoneyCornettlonddaaJustinwithyouFergusSTOUN .ImagineWhatIcanBestCouples6969JustItSexEmeraldVeil .Georgeta0BillyMilliganHairyparadise208SweeetLorelai .BlondieGirlTScokcouplefoxsexyEmilyXLoveGirlWithBigLips .RoussySexBlondyALEXxAnnaBellekittyfreckle .pervnightdollanisa1FunFunSponNaughtyCupcake .riki1587Wnts0m3Bunny6Samantha9DaltonHuber .blackNwitheNbigANNIEANDJAYanisa1Anaksonomun .YoungGuy78373DaveGrantDorinaShyMissShandie .LorenzoLunariki1587MilashlaaBUSTYHOTS .

{'timestamp': '2019-04-22T04:28:56Z', 'url': 'http://www.evaescort.net/0TuttiFrutti0', 'language': 'en', 'source': 'c4'}


Серия Samsung Galaxy S — относится к Android-смартфонам серии Samsung GALAXY и включает в себя "сверхумные" (Super Smart) устройства серии GALAXY, произведённые Samsung Electronics.

Телефоны серии Galaxy S начиная с 2010 года позиционируются, как флагманы компании Samsung и считаются главными конкурентами линейки смартфонов iPhone компании Apple. Первоначально, первый смартфон серии Galaxy S был запущен в Сингапуре, Малайзии и Южной Корее в июне 2010 года, затем в США. За первые 45 дней продаж, в Соединенных Штатах было продано более миллиона единиц, что также способствовало продвижению операционной системы Android в новом и быстрорастущем рынке смартфонов, где также ещё выпускались телефоны с операционными системами Symbian, Windows Phone, LiMo на базе Linux и другие. Линейка телефонов Galaxy S сделала компанию Samsung крупнейшим производителем телефонов в мире. Линейка Galaxy S отличается тем, что её новые модели обладают как правило самыми современными технологиями и инновационными характеристиками на рынке смартфонов.

История
Первый телефон линейки Galaxy S появился в 2010 году на заре развития рынка сенсорных смартфонов без кнопок. Компания Samsung и ранее занималась выпуском бюджетных телефонов, однако они не были флагманами и как правило встречали неоднозначную оценку покупателей, в эпоху кнопочных телефонов флагманами считались телефоны от компании Nokia, Samsung же в основном выпускала более бюджетные телефоны, в том числе и раскладушки со слайдерами, в след за популярными новинками телефонов от Nokia. Внезапный выпуск первого iPhone в 2007 году с сенсорным экраном предвещал серьёзные перемены на рынке телефонов. Тогда же компания Samsung быстро пошла на решение инвестировать в «смелый и дорогой проект» — смартфон, «который бы наилучшим образом визуально и функционально ощущался как iPhone». В стремлении создать продукт, который был бы как минимум не хуже iPhone, инженеры и разработчики Samsung сталкивались с рядом трудностей, так как впервые работали над проектом подобного рода. Программисты и дизайнеры даже после выбора Android в качестве операционной системы перерабатывали дизайн и интерфейс будущего телефона множество раз. Первый телефон серии Galaxy S, выпущенный с операционной системой Android возымел большой успех и способствовал популяризации данной ОС на рынке смартфонов, став её «главной рыбой в пруду Google». Несмотря на то, что смартфон быстро разряжался, многих пользователей привлекал дизайн телефона, а также внешне схожий с IOS интерфейс Android и возможность скачивать приложения. Гораздо больший успех возымел второй смартфон серии Galaxy S, ставший хитом среди смартфонов и окрещённый, как главный соперник iPhone от компании Apple. Менее, чем за два месяца, Samsung удалось продать 3 миллиона телефонов, в целом по всему миру было продано 40 миллионов смартфонов в 120 странах. Samsung Galaxу S II в своё время обладал передовыми техническими характеристиками и ярким Amoled-дисплеем.

В течение пяти месяцев Samsung удалось продать более 10 миллионов устройств, способствуя дальнейшей популяризации операционной системы Android. Samsung Galaxy S3, выпущенный в 2012 году предлагал оригинальный, «сглаженный» дизайн, напоминающий форму гальки, в отличие от предыдущих моделей, подражающих iPhone. Успех S3 значительно превзошёл S2, Samsung удалось продать 70 миллионов смартфонов, ещё до выпуска было сделано 9 миллионов предзаказов устройства. Вместе с S3, за Samsung окончательно укрепилось звание компании, создающей смартфоны-флагманы с операционной системой Android. Вместе с Samsung Galaxy S4, Samsung заложила традицию добавлять в свои телефоны разные датчики, отслеживающие глаза, уровень влажности, передвижение и так далее. Дизайн телефона был схож с S3, но с большими размерами. В первые 5 месяцев после выпуска, Samsung в 2013 году продала 40 миллионов устройств. Если все ранее выпущенные телефоны предлагали превосходные для своего времени характеристики и встречали однозначно положительные оценки критиков, то выпущенный в 2014 году Samsung Galaxy S5, несмотря на влагозащищённость, встроенный пульсометр и прочие инновационные дополнения, встретил неоднозначную поддержку за свой дизайн, из-за которого телефон не выглядел, как смартфон премиум-класса. В это же время флагманы других компаний отказывались от пластика в пользу стекла или металла, когда же задняя крышка S5 была сделана из поликарбоната. Продажи также были значительно ниже ожидаемых, так за первые три месяца после выпуска, Samsung продала 12 миллионов устройств. Критики указывали на отсутствие инноваций со времён Galaxy S3.

В 2015 году состоялся выпуск Samsung Galaxy S6, впервые предложивший оригинальный дизайн с изогнутым по бокам экраном, а также корпус из дорогих материалов без возможности снимать крышку телефона. Модель также предлагала значительно улучшенные характеристики а также возможность делать снимки с очень высоким разрешением. S6 также выпускался в более бюджетной версии без изогнутых боков экрана. Считается, что с этого момента у линейки Galaxy S развивается свой фирменный дизайнерский стиль, которому удаётся «выйти из тени iPhone». Несмотря на передовое «железо», из телефона убрали слот для карточки памяти, как это делается в iPhone, данный момент вызвал разочарование у многих покупателей. Тем не менее продажи телефона были успешными, за первый месяц Samsung продала 10 миллионов телефонов и в общем 45 миллионов устройств за всё время.

Вышедший в 2016 году Samsung Galaxy S7 имел ряд дизайнерских улучшений, возвратил слот для карточки памяти, получил возможность беспроводной зарядки и предлагал одну из лучших на рынке смартфонов камер, в том числе возможностью делать качественные снимки в мало освещённых пространствах. В первый месяц после выпуска, продажи смартфона оценивались в 7 — 9 миллионов экземпляров и 48 миллионов устройств в 2016 году.

Выпущенный в 2017 году Samsung Galaxy S8 предлагал усовершенствованный дизайн без нижней кнопки и с максимально малым размером рамок среди смартфонов того времени. Данная модель задала новые стандарты для дизайна флагманов от других компаний, которые вскоре также начали отказываться от массивных рамок в новых смартфонах. Помимо дизайна и ряда улучшений, S8 не имел каких-либо иных инновационных улучшений, критиковался за быстрый разряд батареи, неудобное расположение датчика для разблокировки пальцем, однако это не помешано телефону завоевать статус лучшего смартфона 2017 года. Продажи S8 превышали S7 примерно на 30%.

Samsung Galaxy S9, выпущенный в 2018 году имел идентичный S8 дизайн, но с рядом улучшений, в том числе с добавлением двойной камеры, стереозвука и прочего. Тем не менее продажи телефона были ниже прогнозируемых и шли хуже, чем у S8.

Samsung Galaxy S10, вышедший в 2019 году предлагался впервые в трёх моделях, а также позиционируется, как первый в серии безрамочный смартфон с каплевидным вырезом на экране для фронтальной камеры. Среди других инноваций — наличие трёх камер, в том числе и широкоугольного объектива и возможность создавать макро фотографии.

Samsung Galaxy S20, представленный в 2020 году, также имеет три модели, но с рядом заметных улучшений. В частности, модель Galaxy S20 Ultra имеет камеру с разрешением 108 Мп и 100-кратное увеличение изображения во время съёмки (англ. Zoom). В сентябре 2020 года Samsung представила новинку серии — Galaxy S20 FE (Fan Edition). Смартфон стал слегка упрощённым вариантом обычного Galaxy S20.

Samsung Galaxy S21, представленный в 2021-2022 году, имея также четыре модели, претерпел несколько усовершенствований. В частности, изменения коснулись нового дизайна, который поклонники критиковали в прошлой модели — теперь это матовое стекло во всех моделях, кроме обычного Galaxy S21 и Galaxy S21 FE, в котором используется усовершенствованный поликарбонат, так называемый «гластик». Galaxy S21 Ultra получил практически такую же камеру, как и Galaxy S20 Ultra, за исключением новых «модификаций». Камера выполнена по новой технологии под названием ISOCELL HM3 с таким же разрешением в 108 Мп, как и Galaxy S20 Ultra. В Galaxy S21 Ultra теперь присутствует лазерный автофокус, который позволяет быстро сфокусироваться в темноте, а также для снятия макро снимков с достаточно близкого расстояния. Также в аппарате теперь есть трехкратный и десятикратный оптический zoom.

Операционная система
Хотя смартфоны линейки Galaxy S имеют операционную систему Android, Samsung разработала для своих устройств графические оболочки с рядом улучшений, такие, как TouchWiz, Samsung Experience и затем One UI.

Начиная с первого поколения Galaxy S, в телефонах помимо самой актуальной версии Android также была встроена оболочка TouchWiz, изменяющая дизайн рабочего стола, а также предоставляющая ряд функций и визуальных эффектов, не доступных в чистой android-версии от Google. В своё время, вместе с Touchwiz, в телефонах Galaxy S добавлялись инновационные функции, не доступные на других android-устройствах в то время, например технология отслеживания глаз, чтобы определить, продолжает ли пользователь смотреть экран, панорамный режим фотографии, многооконный режим, программа S Health для отслеживания пульса, подсчёта шагов, голосовой помощник «S Voice» и прочие эксклюзивные программы, такие, как ChatON, S Memo, Knox и другие. Обилие интерактивных функций приводило к понижению производительности смартфонов среди старых моделей Galaxy S. Несовершенность ранних версий Touchwiz приводилa к тому, что пользовательский интерфейс Galaxy S выглядел «громоздким» и трудным в усвоении для новых пользователей. Это вступало в контраст с линейкой телефонов iPhone, которые позиционировались, как быстрые устройства с простым интерфейсом.

Начиная с 2014 года, новые версии Touchwiz предлагали уже более простой пользовательский интерфейс с меньшим потреблением ресурсов, пользователи получили возможность отключать ненужные для себя функции Touchwiz. Дизайн оболочки — Grace UX также был переосмыслен, чтобы гармонировать с визуальным стилем Android. В 2016 году Samsung представила новую оболочку — Samsung Experience, чей пользовательский интерфейс и визуальный стиль был полностью переработан для более удобного использования. Помимо этого, Samsung Experience вводила ряд новшеств в виде боковых панелей, адаптированных для работы с изогнутым экраном, функции «всегда включённого экрана», виртуального ассистента Bixby и прочих нововведений. Оценки Samsung Experience были значительно лучше, а телефоны линейки Galaxy S могли наконец то похвастаться быстрым и плавным интерфейсом. В конце 2018 года Samsung представила третье поколение оболочки под названием One UI, которая получила новый дизайн и ряд нововведений, среди которых, например, введение «ночного режима». Оценка визуального дизайна была, однако, неоднозначной среди пользователей.

Влияние
Galaxy S на протяжении 10 лет оставался самым популярным брендом смартфонов, её модели включали в себя инновационные технологии, которые затем задавали тон на рынке телефонов. Galaxy S также было принято рассматривать, как бюджетную альтернативу флагманам iPhone, но наделённую такими же продвинутыми техническими характеристиками.

Линейка Galaxy S имеет вторую крупнейшую фанатскую базу после фанатов техники Apple. При этом в интернете большой популярностью пользуются споры между фанатами Apple и Samsung в попытке доказать, чьё устройство лучше. Споры происходят постоянно и особенно на фоне выхода новых устройств от компаний Samsung и Apple. Данные споры широко известны в интернет-культуры, как пример одного из самых «бессмысленных» конфликтов, и даже становились источником многочисленных шуток и интернет-мемов.

Сравнение
Эта таблица показывает различия между моделями семейства серии GALAXY S первых лет. Список охватывает только разблокированные и международные устройства.

Продажи
Всего моделей серии Samsung Galaxy S было продано свыше 160 миллионов, из них 25 – Galaxy S, 40 – Galaxy S2, 60 — Galaxy S3, продажи Galaxy S4 составляют 40 млн моделей (октябрь 2013 года).

См. также
 Samsung Galaxy
 Линейка Samsung Wave
 Линейка Samsung Galaxy Note
 Samsung ATIV S
 Android

Примечания

Samsung Galaxy
Galaxy

{'title': 'Samsung Galaxy S (серия)', 'url': 'https://ru.wikipedia.org/wiki/Samsung%20Galaxy%20S%20%28%D1%81%D0%B5%D1%80%D0%B8%D1%8F%29', 'language': 'ru', 'timestamp': '20230320'}


El Giro d'Itàlia de 2010 és la noranta-tresena edició del Giro d'Itàlia i es disputà entre 8 i el 30 de maig de 2010, amb un recorregut de 3.418 km distribuïts en 21 etapes, tres d'elles contrarellotge individual i una contrarellotge per equips. Aquesta era la catorzena prova del Calendari mundial. La sortida de la cursa es feu a Amsterdam, Països Baixos, i el final a Verona.

La victòria fou per l'italià Ivan Basso, vencedor de l'edició de 2006. Fou seguit per l'espanyol David Arroyo i el seu company d'equip Vincenzo Nibali. L'australià Cadel Evans que acabà coinquè, guanyà la classificació per punts, i els seus compatriotes Matthew Lloyd i Richie Porte guanyaren respectivament la classificació de la muntanya i dels joves. El Liquigas-Doimo guanyà la classificació per equips.

Equips participants
La llista dels 22 equips participants es va fer pública el 22 de març, amb 15 equips ProTour i 7 equips continentals professionals:

 Equips ProTour: Team Milram, Omega Pharma-Lotto, Quick Step, Team Saxo Bank, , Footon-Servetto, Garmin-Transitions, Team HTC-Columbia, AG2R La Mondiale, Lampre-Farnese Vini, Liquigas-Doimo, , , Team Sky, Team Katusha
 Equips continentals professionals: BMC Racing Team, Bbox Bouygues Telecom, Cofidis, Colnago-CSF Inox, Acqua & Sapone, Androni Giocattoli, Cervélo TestTeam

Tres equips ProTour no participen en aquesta edició del Giro d'Itàlia: ,  i Team RadioShack.

Favorits

Per la classificació general
Els tres darrers vencedors del Giro d'Itàlia no prenen part en aquesta edició. Denís Ménxov (), actual vencedor, i Alberto Contador (), vencedor el 2008, prefereixen altres curses per preparar el Tour de França. Danilo Di Luca es troba suspès per dopatge. Franco Pellizotti (Liquigas-Doimo), 3r el 2009, està sent investigat per irregularitats en el seu passaport biològic i l'UCI no li permet prendre part en aquesta edició.

Damiano Cunego (Lampre-Farnese Vini), vencedor el 2004, formarà equip junt a Gilberto Simoni, que disputarà el Giro per darrera vegada abans de retirar-se. Ivan Basso (Liquigas-Doimo), vencedor el 2006 i cinquè el 2009, pot aprofitar l'absència de Pellizotti, per convertir-se en el líder de l'equip, sempre que Vincenzo Nibali li permeti.

Stefano Garzelli (Acqua & Sapone), vencedor el 2000 i millor escalador el 2009, Michele Scarponi (Androni Giocattoli), vencedor de 2 etapes el 2009, i Domenico Pozzovivo (Colnago-CSF Inox) participaran en el Giro amb ambicions de fer un bon paper.

Quant a la presència internacional cal destacar Cadel Evans (BMC Racing Team), actual campió del món, participa en el Giro per primera vegada des del 2002. Carlos Sastre (Cervélo TestTeam), 4t i vencedor de 2 etapes de muntanya el 2009, Aleksandr Vinokúrov, Vladímir Karpets (Team Katusha), Bradley Wiggins (Team Sky), 4t al Tour de França de 2009, i Christian Vande Velde (Garmin-Transitions), també prenen part en aquesta edició del Giro.

Els esprintadors
Mark Cavendish (Team HTC-Columbia) no participa en aquest Giro en preferir disputar la Volta a Califòrnia, passant a ser el referent de l'equip en els esprints Andre Greipel. Óscar Freire () tampoc no prendrà part al Giro per una sinusitis. Altres esprintadors, que si prenen part en aquest Giro, són: Alessandro Petacchi, Danilo Hondo (Lampre-Farnese Vini), Tyler Farrar (Garmin-Transitions), Alberto Loddo (Androni Giocattoli), William Bonnet (Bbox Bouygues Telecom), Sacha Modolo (Colnago-CSF Inox), Robbie McEwen (Team Katusha), Robert Forster (Team Milram), Gregory Henderson (Team Sky) i Baden Cooke (Team Saxo Bank).

Recorregut

Etapes
 Etapa 1. Amsterdam. 8 de maig de 2010. 8,4 km (CRI)
La primera etapa és una contrarellotge individual, totalment plana, pels carrers d'Amsterdam, als Països Baixos.

El vencedor fou Bradley Wiggins (Team Sky), convertint-se en el primer portador de la maglia rosa de la present edició. Aquesta és la seva primera victòria en una gran volta. Cadel Evans (BMC Racing Team) i Aleksandr Vinokúrov (Astana) van confirmar el seu bon moment de forma amb la tercera i quarta posició final. Ivan Basso (Liquigas) i Carlos Sastre (Cervelo TestTeam) perderen menys de 30" i Damiano Cunego (Lampre-Fondital) quasi un minut.

Resultat de l'etapa i classificació general

 Etapa 2. Amsterdam - Utrecht. 9 de maig de 2010. 209 km
Etapa totalment plana entre Amsterdam i Utrecht, amb dues petites cotes a mitjan etapa per decidir els primers punts de la muntanya.

Durant l'etapa es produeixen nombroses caigudes, la gran majoria d'elles sense cap conseqüència física, però que provocaren nombrosos talls en el gran grup.

L'escapada del dia la formaren Paul Voss, Flens Rick, Stefano Pirazzi i Mauro Facci, que arribaren a tenir una màxima diferència de poc més de 5' pel control exercit per l'Team Sky al capdavant del gran grup. A 40 km de meta es produí una caiguda en què es veieren implicats una trentena de ciclistes, entre ells el líder Bradley Wiggins. Flens va intentar arribar en solitari, però fou agafat a 24 km de meta. Una altra caiguda important es produí a manca de 7,2 km, quedant al capdavant sols 58 ciclistes, entre els quals no hi havia Wiggins ni Carlos Sastre, que perderen 37" a meta. En l'esprint la victòria fou per a Tyler Farrar i Cadel Evans es vestí amb la màglia rosa.

 Etapa 3. Amsterdam - Middelburg. 10 de maig de 2010. 224 km
Darrera etapa per terres holandeses, totalment plana i fins i tot amb alguns sectors per sota del nivell del mar. L'etapa surt d'Amsterdam cap al sud, per anar a toca el mar del Nord, creuant algunes de les illes de Zelanda fins a arribar a Middelburg, a Walcheren.

L'etapa va estar marcada pels fort vents que van bufar durant bona part de l'etapa que van provocar nombrosos trencaments del gran grup per la formació de ventalls, les nombroses caigudes i la pèrdua notable de temps per a alguns dels favorits.

A 30 km de l'arribada una caiguda fa que bona part del Team Sky quedi endarrerit, entre ells Bradley Wiggins. El més afectat per aquesta caiguda fou Christian Vandevelde que es veié obligat a abandonar. Aquesta caiguda va fer que al capdavant quedés un grup format per 29 ciclistes, entre els quals no hi havia el líder, Cadel Evans, que a meta perdé 46" i el lideratge. L'esprint fou guanyat clarament per Wouter Weylandt. El ciclista millor classificat del grup capdavanter era Aleksandr Vinokúrov, que d'aquesta manera es convertia en el nou líder.

Bradley Wiggins va perdre 4', mentre Alessandro Petacchi, Domenico Pozzovivo, Marzio Bruseghin, Filippo Pozzato i Gilberto Simoni van perdre 8' i totes les seves aspiracions a la general.

 Etapa 4. Savigliano - Cuneo. 12 de maig de 2010. 32,5 km (CRE)
Després d'un dia de descans i el trasllat fins al nord d'Itàlia es disputa una Contrarellotge per equips entre Savigliano i Cuneo. El recorregut és sempre ascendent, amb 225 metres de desnivell.

El quart equip en prendre la sortida, el BMC Racing Team de Cadel Evans, aconsegueix el primer temps de referència amb un temps de 37' 58" que serà el millor temps durant una hora. El Team Katusha, de Vladímir Karpets, és el primer equip a millorar el temps i deixar-lo en 37' 04". Més tard serà el Team Sky el que millorarà el temps amb 36' 50". Finalment, el vencedor de l'etapa serà el Liquigas-Doimo, que millorarà el temps en 13" i el deixarà en 36' 37". L', del líder Aleksandr Vinokúrov va perdre 38" i d'aquesta manera també el lideratge en favor de Vincenzo Nibali.

 Etapa 5. Novara – Novi Ligure. 13 de maig de 2010. 168 km
Etapa plana, amb dues petites cotes a la part central de l'etapa, Avolasca i Castellania. L'etapa ret homenatge a Fausto Coppi, vencedor de 5 Giros, en el cinquantenari de la seva mort. L'etapa passa per la seva vila natal, Castellania i recorre part de les carreteres que feia servir per entrenar-se.

Una escapada de 4 ciclistes formada per Yukiya Arashiro (BBox Bouygues Telecom), Julien Fouchard (Cofidis), Jérôme Pineau (Quick Step) i Paul Voss (Team Milram) aconsegueix 5' 40" a 46 kilòmetres de l'arribada. Paul Voss es despenja del grup capdavanter a manca de 15 km, mentre que els altres tres continuen endavant, resistint la persecució del gran grup. Arashiro és el primer a llançar l'esprint, però és Pineau qui guanya l'etapa per davant de Fouchard. Tyler Farrar (Garmin Chipotle) guanya l'esprint del gran grup. No hi ha canvis a la general.

 Etapa 6. Fidenza – Carrara. 14 de maig de 2010. 166 km
Després de l'homenatge a Fausto Coppi en l'etapa anterior, ara és el torn de Jacques Anquetil, en el 50è aniversari de la seva primera victòria pels carrers de Carrara en una contrarellotge individual. El Passo del Brattello (2a categoria, 11 km al 5%) és la primera gran dificultat muntanyosa d'aquesta edició. L'etapa també inclou dues dificultats més: el pas de Spolverina (10,5 km al 3,5%, de 2a categoria) i el pas de Bedizzano (3 km al 8%, de 3a categoria).

Dos homes s'escapen durant bona part de l'etapa: Rubens Bertogliati (Androni Giocattoli) i Matthew Lloyd (Omega Pharma-Lotto). Matthew Lloyd passa el primer pel Passo del Brattello, mentre que per darrere Paul Voss intenta esgarrapar algun punt per conservar el seu mallot verd. En el descens Guillaume Bonnafond (AG2R La Mondiale) i Paolo Tiralongo () cauen, havent de ser evacuats a un hospital i veient-se obligats a abandonar. Als peus del Spolverina, segona dificultat del dia, cinc ciclistes s'ecapen: Sergei Klimov i Ievgueni Petrov (Team Katusha), Johann Tschopp (BBox Bouygues Telecom), Matteo Bono (Lampre-Farnese Vini) i Cayetano Sarmiento (Acqua & Sapone). Al cim sols queden Petrov, Tschopp i Sarmiento. Matthew Lloyd aconsegueix en aquest port els punts necessaris per a obtenir el mallot de la muntanya. Al pas de Bedizzano Bertogliati passa per dificultats, cosa que obliga a atacar a Lloyd, el qual marxa en solitari al capdavant per arribar amb més d'un minut a la meta de Carrara. Bertogliati serà segon, mentre Danilo Hondo encapçalarà el gran grup. Vincenzo Nibali conserva el mallot rosa.

 Etapa 7. Carrara – Montalcino. 15 de maig de 2010. 215 km
Etapa de mitja muntanya que té la particularitat de transitar per part del recorregut de la Monte Paschi Strade Bianche, amb el pas per pistes de terra i de grava en els darrers quilòmetres. Els ciclistes hauran d'afrontar tres dificultats muntanyoses en la segona meitat de la cursa, ja que la primera part és totalment plana. Els dos primers ports són de tercera categoria i es troben al km 117 i 184. En el descens d'aquest segon port es troben el primer tram de terra i a cinc quilòmetres per l'arribada coronen el Poggio Civitella, de 12 km de llargada, amb desnivells superiors al 10% i sobre pista forestal.

Etapa heròica, amb bona part de la mateixa disputada sobre una persistent pluja que va complicar, i molt, el pas per les pistes forestals per les quals discorria la part final de l'etapa. Després d'una hora de competició es van produir els primers atacs, formant-se un grup de 16 en què hi havia Gilberto Simoni, Valerio Agnoli, Fabian Wegmann, Andrí Hrivko i Filippo Pozzato, però el gran grup els agafà ràpidament. Tot seguit ataquen Rick Flens i Nicki Sørensen, els quals sí que tindran via lliure per escapar-se, aconseguint un diferència màxima de 10'. A 50 km de meta sols disposen de 3' i la pluja i el gran grup va perdent unitats.

A 40 km de l'arribada el líder de la cursa, Vincenzo Nibali, pateix una caiguda en la qual es veuen implicats també Valerio Agnoli, Ivan Basso, Michele Scarponi o Carlos Sastre. Linus Gerdemann ataca i és seguit per Aleksandr Vinokúrov, Stefano Garzelli, Thomas Rohregger i Jan Bakelants, sent agafats per un grup en què hi ha Cadel Evans i Damiano Cunego. En l'ascensió a la principal dificultat del dia, sota la pluja i el fang, ataca Vinokúrov, que és seguit per Evans, Cunego, Garzelli, John Gadret, David Arroyo i Marco Pinotti. Per darrere Nibali i Basso perden més d'1' 30". Un nou atac de Vinokúrov farà que perdin contacte Gadret i Garzelli, jugant-se, els altres cinc, la victòria d'etapa. En els estrets carrers de Montalcino Evans serà el primer a llançar l'esprint per a aconseguir la victòria. Nibali perd dos minuts, cedint el lideratge a Vinokúrov. Sastre perd cinc minuts.

 Etapa 8. Chianciano Terme – Terminillo. 16 de maig de 2010. 189 km
Primera etapa amb final en alt, al Terminillo, un port de 16,1 km al 7,2% de desnivell. Anteriorment els ciclistes hauran superat dos ports de tercera categoria, el Valico de Monte Nibbio (10,1 km al 3,0%) i el pas de Marmore (9,3 km al 2,5%).

Chris Anker Sørensen (Team Saxo Bank) s'emporta l'etapa en solitari, la primera en final en alt, després de deixar enrere la resta de companys que havien protagonitzat l'escapada del dia. 17 ciclistes en formaren part, entre els que destquen: Thomas Voeckler (BBox Bouygues Telecom), David Moncoutié (Cofidis), Rigoberto Urán () i Ievgueni Petrov (Team Katusha). Entre els favorits no hi hagué canvis significatius, ja que tots els intents foren aboratats. Destaca la tercera posició a l'etapa de Xavier Tondo, que en els darrers quilòmetres s'escapà del grup de favorits.

 Etapa 9. Frosinone – Cava de' Tirreni. 17 de maig de 2010. 188 km
Etapa completament plana, sense cap dificultat muntanyosa, però amb un final en pujada en els darrers 5 km

L'escapada del dia, formada al km 9, estava integrada per 4 ciclistes: Mikhaïl Ignàtiev (Team Katusha), Giampaolo Cheula (Footon-Servetto), Michael Barry (Team Sky) i Tom Stamsnijder (). Agafen ràpidament 4', però els homes del Team HTC-Columbia no deixen que augmenti més i els controlen a dos minuts. La forta pluja fa molt preillosa l'etapa, amb enormes bassals que ha de creuar els ciclistes i que provoquen que el grup es trenqui. En un d'aquests trencaments Aleksandr Vinokúrov () es troba al capdavant, junt a Vincenzo Nibali (Liquigas-Doimo) i Damiano Cunego (Lampre-Fondital), però no pas Cadel Evans (BMC Racing Team) i Ivan Basso (Liquigas-Doimo). Això fa augmentar molt el ritme, però els dos grups es tornaran a unir a 10 km de meta. En aquests moments Carlos Sastre punxa i perd contacte amb el grup principal, perdent a meta 1' 50".

Mikhaïl Ignàtiev intenta escapar-se sol, però Barry l'atrapa al cap de poc. A 5 km de meta són absorbits per un gran grup en què diversos ciclistes intenten l'escapada sense sort. La victòria es decideix a l'esprint, sent guanyat per Matthew Goss (Team Columbia-HTC), per dacant Filippo Pozzato (Team Katusha) i Tyler Farrar (Garmin Chipotle).

 Etapa 10. Avellino – Bitonto. 18 de maig de 2010. 220 km
Etapa completament plana, amb sols una petita dificultat muntanyosa al km 90.

L'escapada del dia la formaren Hubert Dupont (AG2R La Mondiale), Charles Wegelius (Omega Pharma-Lotto) i Dario Cataldo (Quick Step), els quals foren agafats a 16 km de l'arribada. La victòria es disputà a l'esprint, sent guanyat per Tyler Farrar (Garmin-Transitions), per davant Fabio Sabatini (Liquigas-Doimo) i Julian Dean (Garmin-Transitions). És la seva segona victòria d'etapa en la present edició.

 Etapa 11. Lucera – L'Aquila. 19 de maig de 2010. 256 km
Etapa més llarga de la present edició, amb una segona part del recorregut força accidentada. Els ciclistes han de superar tres dificultats muntanyoses: el Rionero Sannitico (10 km al 6,3%) de 1a categoria 1ère catégorie (km 136), el Roccaraso (9,5 km al 4,7%) de 2a categoria (km 157) i el Capo di Valle (8,6 km al 5,8%) de 2a categoria (km 217). L'arribada a l'Aquila és en pujada amb un últim km al 6,9% i rampes de fins a l'11%.

Etapa passada per aigua en què es produeix una cosa inhabitual en el ciclisme modern: una cinquantena de ciclistes s'escapen durant bona part de l'etapa. Entre els escapats hi ha: Rubens Bertogliati, Alexander Efimkin, Thomas Voeckler, Iuri Trofímov, David Arroyo, Vassil Kirienka, Carlos Sastre, Xavier Tondo, David Moncoutié, Domenico Pozzovivo, David Millar, Matthew Goss, Ievgueni Petrov, Valerio Agnoli, Robert Kiserlovski, Linus Gerdemann, Jan Bakelants, Matthew Lloyd, Dario Cataldo, Jérôme Pineau, Bradley Wiggins, Chris Anker Sørensen, Laurent Didier i Richie Porte. El gran grup sembla no donar importància a l'escapada en un primer moment i ràpidament aconsegueixen 17' 50", donat que Richie Porte, David Arroyo i Carlos Sastre posen a treballar els seus companys d'equip. La reacció del grup de la maglia rosa reacciona tard i això fa que a 50 km encara disposin de 13'.

Al Capo di Valle l'Omega Pharma-Lotto augmenta el ritme en favor de Matthew Lloyd i el mallot verd, fent que el grup capdavanter perdi alguns elements. Per darrere, el grup de la maglia rosa sols té 27 corredors i tots els caps de fila han de posar-se a tirar si no volen perdre més temps.

Jérôme Pineau és el primer a intentar la victòria d'etapa en solitari. Més tard seran Dario Cataldo, Linus Gerdemann i Jan Bakelandts els que ataquen, però Bakelandts cau en un tomb. En el darrer quilòmetre ataca Ievgueni Petrov, aconseguint la victòria en solitari. El grup de la maglia rosa perd 12' 42" i Richie Porte és el nou líder.

 Etapa 12. Città Sant'Angelo – Porto Recanati. 20 de maig de 2010. 206 km
Darrera etapa plana abans d'atacar la mitja muntanya i després l'alta muntanya d'aquesta edició del Giro i darrera oportunitat pels esprintadors. L'etapa ressegueix la costa adriàtica i sols té dues petites dificultats a la part final de l'etapa

A set quilòmetres per l'arribada es forma una escapada formada per 10 corredors en la qual es troben la major de favorits que el dia anterior havien perdut temps. El vencedor, a l'esprint, serà Filippo Pozzato, que d'aquesta manera aconsegueix la primera victòria italiana en la present edició del Giro. Amb tot, aquest grup sols va poder treure 10" al grup del líder.

 Etapa 13. Porto Recanati – Cesenatico. 21 de maig de 2010. 222 km
Etapa llarga resseguint la costa adriàtica fins a l'alçada de Rímini quan la cursa s'endinsa cap a l'interior per anar a buscar les dues dificultats del dia, el coll de Perticara i el de Barbotto, amb rames de fins al 15%. Els darrers 40 kilòmetres són de descens fins a l'arribada, a Cesenatico, la vila nadiua de Marco Pantani.

Disset corredors formaran l'escapada del dia. El gran grup els deixa fer en vistes que cap d'ells representa una seriosa amenaça per a la classificació general. L'escapada arriba a obtenir una màxima diferència de 10 minuts i entre ells es jugaran la victòria. Es produiran diversos atacs, però finalment s'arriba a l'esprint. Gregory Henderson (Team Sky) llença l'esprint, sent superat per Manuel Belletti (Colnago-CSF Inox) que d'aquesta manera aconsegueix la seva primera victòria important.

Per darrere Vladímir Karpets (Team Katusha), s'escapa en l'ascens al darrer port i arriba amb un parell de minuts per davant del gran grup, que ho farà a 7' 26" de Belletti.

 Etapa 14. Ferrara – Asolo. 22 de maig de 2010. 205 km
El final de la segona setmana de cursa porta dues etapes d'alta muntanya. La primera d'elles està marcada per l'ascensió al Monte Grappa, 18 kilòmetres al 8% de mitjana i rampes del 14%, sent la quarta vegada que es puja aquest coll en la història del Giro (1968, 1972 i 1982). L'arribada és a Asolo, després del descens.

Una escapada de sis homes arriba a peus del monte Grappa: Filippo Pozzato (Team Katusha), Alessandro Bisolti (Colnago-CSF Inox), William Bonnet (BBox Bouygues Telecom), Markus Eibegger (Footon-Servetto), Damien Monier (Cofidis) i Steve Cummings (Team Sky). L'escapada havia disposat de fins a 8', però sota l'impuls del Lampre Farnese Vini i el Liquigas-Doimo, aquesta s'havia reduït a tres minuts.

En les primeres rampes el grup d'escapats es trenca i Bisolti queda sol al capdavant. El Liquigas-Doimo encapçala el gran grup, tot imprimint un bon ritme que fa que la maglia rosa, Richie Porte (Team Saxo Bank), perdi contacte, així com Stefano Garzelli (Acqua & Sapone). Al mateix moment, Bradley Wiggins (Team Sky) ataca i junt a Steve Cummings, que anava escapat, marxen endavant durant uns mintus, ja que el grup dels favorits manté un fort ritme. Robert Kiserlovski (Liquigas-Doimo), Marco Pinotti (Team HTC-Columbia) i Alexander Efimkin (AG2R La Mondiale) tiren d'un grup de favorits en què no hi ha més de 15 corredors. Porte perd dos minuts i al davant encara es mantenen Bisolti i Monier.

Vincenzo Nibali (Liquigas-Doimo) ataca i això trenca el grup. Vladímir Karpets (Team Katusha), Damiano Cunego (Lampre Farnese Vini), Bradley Wiggins, Xavier Tondo (Cervélo TestTeam) i David Arroyo () perden contacte. Al davant sols queda el segueixen Michele Scarponi (Androni Giocattoli), Ivan Basso (Liquigas-Doimo) i Cadel Evans (BMC Racing Team). Aleksandr Vinokúrov () i Carlos Sastre (Cervélo TestTeam) es troben a poca distància. Bisolti és superat, marxant els quatre cap al cim. Basso és el primer a passar. Vinokúrov i Sastre ho fan a un minut i el grup de Porte ho fa a quatre.

En el descens Sastre no pot seguir el ritme de Vinokúrov i és absorbit pel grup perseguidor en què hi ha Arroyo i Cunego.Per davant Nibali s'escapa de la resta de companys en el descens, passant la pancarta dels 30 km amb 25" d'avantatge. Nibali mantindrà la distància i es presentarà a meta amb 23" sobre Basso, Scarponi i Evans. Vinokúrov arribarà a 1' 34", el grup d'Arroyo a 2' 25" i el grup de Richie Porte a 4' 45".

David Arroyo passa a ser el no líder de la classificació general, amb 39" sobre Porte.

 Etapa 15. Mestre – Monte Zoncolan. 23 de maig de 2010. 161 km
Primera part de l'etapa totalment plana, però amb un final duríssim, amb quatre ports en els darrers 80 km: Sella Chianzutan (10,9 km al 5,3%) de 2a categoria (km 144), Passo Duron (4,3 km al 9,8%) de 1a categoria (km 183), Sella Valvalda (6,5 km al 6,2%) de 2a categoria (km 202) i Monte Zoncolan (10,1 km de l'11,9%) i final d'etapa.

Sis corredors protagonitzaran una llarga escapada des del km 18 d'etapa. Disposaran de fins a 14' 20", però seran agafats en l'ascens al Monte Zoncolan, ja que el Liquigas-Doimo havia endurit molt el ritme pel darrere i al pas pel Passo Duran ja sols quedaven unes 25 unitats al grup dels favorits.

Michele Scarponi (Androni Giocattoli) és el primer dels favorits en atacar, però serà una accelació d'Ivan Basso la que provocarà el trencament del grup dels favorits, ja que sols Scarponi, Cadel Evans (BMC Racing Team) i Marco Pinotti (Team HTC-Columbia) el poden seguir en un primer moment.

Un segon grup és format per Aleksandr Vinokúrov (), Damiano Cunego (Lampre Farnese Vini), Alexander Efimkin (AG2R La Mondiale) i Vincenzo Nibali (Liquigas-Doimo), i més tard Pinotti quan es despengi del grup capdavanter. David Arroyo (Caisse d'Epargne) i Carlos Sastre (Cervélo TestTeam) es troben una mica més enrere.

El grup de Basso anirà superant els escapats, per posar-se al capdavant. Finalment Basso atacarà i marxarà sol cap a la victòria, imposant-se amb 1' 19" respecte Evans. David Arroyo, arriba 11è i conservà el liderat, tot i que els principals favorits li retallen temps.

 Etapa 16. San Vigilio di Marebbe – Plan de Corones. 25 de maig de 2010. 12,9 km (CRI)
Contrarellotge individual de 12,9 km, tota ascendent, amb una mitjana del 8,4% i rampes de fins al 24%, en un tram final sense enquitranar.

El vencedor de l'etapa és Stefano Garzelli (Acqua & Sapone), vencedor el 2000. Distanciat en les etapes precedents la seva victòria no afecta la general.

Cadel Evans (BMC Racing Team), segon a l'etapa, millora una posició a la general i esgarrapa uns quants segons respecte a David Arroyo i Ivan Basso.

 Etapa 17. Bruneck – Peio Terme. 26 de maig de 2010. 173 km
Etapa amb una primera part en descens fins a trobar les rampes del Passo delle Palade (18,9 km al 6,6%), de 1a categoria, al km 106. El final és en pujada, a Peio Terme, amb 9 km amb algun tram fins al 12%, tot i que no puntua per a la classificació de la muntanya.

Una escapada formada per 19 ciclistes serà la protagonista de l'etapa. Entre els escapats el millor situat era Aleksandr Efimkin, a 19'. La màxima diferència aconseguida fou de prop d'11'. El gran grup els deixà fer, tot controlant la diferència. El primer a intentar la victòria en solitari fou Mikhaïl Ignàtiev (Katuixa]) i, tot seguit, Danilo Hondo (Lampre), Damien Monier (Cofidis) i Steven Kruijswijk (Rabobank). A tres quilòmetres de la meta va arribar l'atac de Damien Monier, que va arribar en solitari a la meta, amb 36" sobre Hondo. Pel darrere, entre els favorits no passà res i sols alguns esgarraparen alguns segons.

 Etapa 18. Levico Terme – Brescia. 27 de maig de 2010. 156 km
Etapa totalment plana, sense cap dificultat muntanyosa, com a prèvia a la decisiva etapa de l'endemà.

Darrera oportunitat per arribar a l'esprint que no fou desaprofitada per André Greipel, que demostrà ser el més ràpid. Anteriorment Alan Marangolli (Colnago) i Oliver Kaiser (Omega) havien estat escapats durant bona part de l'etapa, sent agafats a sols dos km per a l'arribada.

 Etapa 19. Brescia – Aprica. 28 de maig de 2010. 198 km
Etapa reina de la present edició, amb una primera part en lleugera pujada fins a arribar a Aprica, on en el primer pas per la ciutat, al km 113 puntua de 2a categoria (14 km al 3,5% i rampes de fins al 15%). Tot seguit els ciclistes afronten el coll de Trivigno, al km 130 (11 km al 7,6% i rampes de fins al 14%), de primera categoria, i tot seguit el Mortirolo, també de 1a, al km 162 (12,8 km al 10,3% i rampes de fins al 18%), a sols 33 km per a l'arribada. El final a Aprica és per la mateixa carretera que anteriorment era puntuable, tot i que en aquests moments no ho és.

Etapa per a la història del ciclisme, amb un David Arroyo inconmensurable que defensà la maglia rosa fins al darrer metre, però que finalment no pogué fer-hi res i la perdé a mans d'Ivan Basso.

En les primeres rampes del Mortirolo Arroyo va perdre contacte amb el grup capdavanter, encapçalat pels homes del Liquigas-Doimo. Poc després sols quedaren al capdavant els italians Ivan Basso, Vincenzo Nibali i Michele Scarponi, que a poc a poc anaren guanyant temps al líder. Al cim li treien dos minuts, però en un descens vertiginós d'Arroyo aconseguí recuperar més d'un minut i col·locar-se a sols 40" quan sols quedaven 15 km per a l'arribada. En aquests moments Arroyo i Vinokúrov anaven uns segons per davant d'un trio perseguidor format per Cadel Evans, Carlos Sastre i John Gadret, però quan s'uniren en un grup de cinc no arribaren a una bona entesa i el trio capdavanter tornà a augmentar les diferències fins a ser insuperables per Arroyo, que a Aprica perdé més de 3' i el liderat de la cursa en favor de Basso.

 Etapa 20. Bormio – Passo del Tonale. 29 de maig de 2010. 178 km
Segona etapa d'altíssima muntanya de la present edició, amb quatre ports de més de 2.000 msnm i l'arribada també en alt. Hi ha una petita incursió per Suïssa.

Els primers quilòmetres són en descens fins a arribar a Tirano i la frontera suïssa, a menys de 500 msnm, on comença la llarga ascensió al Forcola di Livigno (1a categoria), a 2.315 metres, un dur port amb rampes sostingudes al 8% durant 10 km de la part central de l'ascensió. Tot seguit s'enllacen dos petits ports de 2a i 3a categoria, el Passo di Eira (6,5 km al 6,4%, km 93,6)) i el Passo di Fiscagno (3,9 km al 6,7, km 100,5). Tot seguit s'incia un llarg descens fins a arribar a Bormio on comença la llarguíssima ascensió al Passo di Gavia (2.618 m, 24,9 km, al 5,6%), al km 148,8. Un llarg descens fins a Ponte di Lengo duu els ciclistes a l'inici de la darrera ascensió del dia, el Passo del Tonale (12,1 km, al 5,2) i punt d'arribada de l'etapa.

L'etapa va començar amb els dubtes sobre la possibilitat o no de pujar al Gavia per la gran quantitat de neu acumulada a les seves faldes, però finalment es va poder retirar a temps i l'etapa es va disputar sencera. Ivan Basso va aguantar les contínues envestides per mantenir el mallot rosa que li dona de manera virtual la victòria final.

Des des de l'inici es produïren atacs que buscaven sorprendre Basso. El primer atac important fou al quilòmetre 50, on un grup amb vint corredors, amb Aleksandr Vinokúrov, Gilberto Simoni i Carlos Sastre, entre d'altres s'escaparen del grup de la maglia rosa. Al Gavia Tschopp va ser el primer a passar per la Cima Coppi, seguit de Simoni, i del grup de Sastre, que ho va fer a mig minut. El gran grup perdia 1' 18". En el descens foren absorbits tots els escapats, excepte Tschopp, que es plantà en solitari a la meta de Passo del Tonale. Els atacs per despenjar Arroyo no tingueren èxit i va poder mantenir la segona posició final.

 Etapa 21. Verona – Verona. 30 de maig de 2010. 15,3 km (CRI)
Contrarellotge individual pels voltants de Verona amb una petita dificultat muntanyosa a la part central de l'etapa.

Ivan Basso no va tenir cap problema per mantenir la diferència respecte als seus perseguidors en la general durant la contrarellotge i que va guanyar el suec Gustav Erik Larsson.

Classificacions finals

Classificació general

Evolució de les classificacions

Punts UCI
Els 20 primers de la general i els cinc primers de cada etapa sumen punts per a la Classificació mundial UCI 2010. Al final de la cursa Cadel Evans prendrà el liderat de la classificació.

Referències

Enllaços externs

 Web oficial
 Estagiro

2010
Calendari mundial UCI 2010

{'title': "Giro d'Itàlia de 2010", 'url': 'https://ca.wikipedia.org/wiki/Giro%20d%27It%C3%A0lia%20de%202010', 'language': 'ca', 'timestamp': '20230320'}


Триада Уиппла — проявление комплекса клинических симптомов, которые сочетаются с изменением биохимических показателей крови на фоне проведения трёхдневной пробы с голоданием:
 появление гипогликемической симптоматики (нейрогликопенической и адренергической);
 падение уровня глюкозы крови ниже 2,5 ммоль/л;
 купирование приступа внутривенным введением глюкозы.
У больных с инсулиномой обычно триада Уиппла проявляется в течение 12-18 часов при проведении пробы с трёхдневным голоданием.

Эпоним
Проба получила название в честь американского хирурга Алена Олдфазера Уиппла,  (02.09.1881 — 06.04.1963).

Источники

Эндокринология
Инсулинома


Stephen Alan "Harps" Harper (Easington, 14. ožujka 1975.) engleski je umirovljeni nogometni vratar.

Newcastle United
Godine 1993. Harpera je doveo Newcastle United iz lokalnog kluba Seaham Red Star za nominalnu naknadu. Bio je zamjena za prvog vratara Pavela Srníčeka nakon njegova dolaska u Newcastle. Bio je na posudbama u klubovima: Bradford City, Gateshead, Stockport County, Hartlepool United i Huddersfield Town prije nego što je debitirao za Newcastle 1999. Dugo godina bio je zamjena Shayu Givenu, a postao je prvi vratar kad je Given otišao 2009. u Manchester City.

Harper je i licencirani nogometni sudac.

Izvori

Vanjske poveznice

  Profil  na službenoj stranici Newcastle Uniteda
 Profil na Soccerbase.com

Engleski nogometni vratari
Nogometaši Huddersfield Towna
Nogometaši Hull Cityja
Nogometaši Newcastle Uniteda

{'title': 'Steve Harper', 'url': 'https://hr.wikipedia.org/wiki/Steve%20Harper', 'language': 'hr', 'timestamp': '20230320'}


Städtisches Museum steht für folgende Museen:

in Deutschland:
 Städtisches Museum Villa Obernier, Bonn, siehe Villa Obernier
 Städtisches Museum (Braunschweig)
 Städtisches Museum Göttingen
 Städtisches Museum Kitzingen
 Städtisches Museum Ludwigsburg, siehe Ludwigsburg Museum
 Städtisches Museum Medebach
 Städtisches Museum Abteiberg, Mönchengladbach, siehe Museum Abteiberg
 Städtisches Museum Neunkirchen
 Städtisches Museum Seesen
 Städtisches Museum Simeonstift, Trier, siehe Stadtmuseum Simeonstift Trier
 Städtisches Museum Am Rykenberg – Wendelin-Leidinger-Haus, Werl
 Städtisches Museum Zirndorf

in anderen Ländern:
 Städtisches Museum Bratislava, siehe Museum der Stadt Bratislava
 Städtisches Museum Stettin
 Städtisches Museum Revoltella – Galerie für Moderne Kunst, Triest, siehe Museo Revoltella – Galleria d’Arte Moderna

Städtische Museen steht für:

 Städtische Museen Dresden, siehe Museen der Stadt Dresden
 Städtische Museen Heilbronn
 Städtische Museen Junge Kunst und Viadrina, Frankfurt (Oder)

Siehe auch:
 Stadtmuseum (auch Städtisches Museum), kommunales Museum

{'title': 'Städtisches Museum', 'url': 'https://de.wikipedia.org/wiki/St%C3%A4dtisches%20Museum', 'language': 'de', 'timestamp': '20230320'}


Argyresthia goedartella је врста инсекта из реда лептира (Lepidoptera), који припада породици Argyresthiidae.

Опис
Овај ноћни лептир има распон крила од 10 до 13 мм изузетно јарке обојености предњих крила. Типична форма је са белим крилима на којима се налазе шаре металик златне боје у облику слова "Y". Осим ове постоји и форма лептира једнобојних златно-бакарних боја крила. Задња крила су сиве боје.

Распрострањење и станиште
Ова врста насељава већи део Европе и Северне Америке. У Србији је бележена на високим планинама. Најчешће се налази у отвореним шумама, често поред потока и река.

Биологија
Животним циклусом ова врста ноћног лептира је везана за брезу (Betula) и јову (Alnus glutinosa). Одрасле јединке су активне јуна до августа. Лептири су активни у сумрак и ноћу и често долазе на вештачко светло. Гусенице презимљавају у мушкој реси брзе или јове, а на пролеће након неколико стадијума завлаче се испод коре дрвета где се улуткавају. Одрасле јединке се најчешће хране нектаром биљке Tanacetum vulgare.

Галерија

Синоними

 Argyresthia divisella Dufrane, 1960
 Argyresthia goedartella subsp. literella (Haworth, 1828)
 Argyresthia literella (Haworth, 1828)
 Argyresthia uniformella Dufrane, 1960
 Oecophora goedartella (Linnaeus, 1758)
 Phalaena goedartella Linnaeus, 1758
 Tinea literella Haworth, 1828

Референце

Спољашње везе

 insecta.pro
 GBIF
 bladmineerders

Ноћни лептири Србије
Биодиверзитет

{'title': 'Argyresthia goedartella', 'url': 'https://sr.wikipedia.org/wiki/Argyresthia%20goedartella', 'language': 'sr', 'timestamp': '20230320'}


Чубахкинарой, Чебяхкинхой () — чеченский тайп входящий в тукхум Чеберлой. На севере граничили с землями Нижалой. Существует  р. Чубяхкинерой-ахк.

Чеченский исследователь-краевед, педагог и народный поэт А. С. Сулейманов, зафиксировал представителей тайпа в следующем населённом пункте: Бердакел. Чобаькхинхой — жители аула Чобаькхинча. В 1891 году родовой аул тайпа Чубахкинрой имел 52 дворов, население чеченцы магометане, мужчины 135, женщины 118, всего 253. По мнению  А. С. Сулейманова название переводится как  «Зашли куда».

Историческое расселение
В Чеберлоевском районе, по левой стороне каньона, где протекает речка Келой-ахк, на северо-западе от аула Нохчи-Келой, на высокогорье около 2000 метров над уровнем моря находится селение Чубах-Кенерой. Оно некоторое время было безлюдным, но сейчас в нём живут две семьи, которые по возвращении из выселения в Казахстан вернулись на Землю своих предков. Село Чубахкинарой основано выходцами из Нашхойского аула Хийлах.

Аул Чубахкинарой находится в 110 километрах от города Грозного и в 50 км от Шатоя. Расположение аула приходится почти по центру Чеберлоевского района. В 1937 году аул, указом ВЦИК РСФСР, был назначен центром Чеберлоевского района. На юго-востоке от Чубахкинароя расположено селение Нохчи-Келой, на юго-западе Дай. К востоку и северо-востоку находятся остатки сел Кулой и Ригахой. В северной части в двух километрах — развалины аул Ачалой. Северо-запад и запад занимают аулы Нижалой и Буоси, куда можно попасть, перевалив через горную гряду, разделяющую эти аулы и аул Чубахкинара. На владениях аула расположены горы: Горг-лам, Хадечу-корт. Есть еще средней высоты возвышенности — Роте-те, Вирен-дук, Ши Лам Хаде.

Известные представители
 Залмаев Дада (Залмуйн Дада), - один из руководителей антирусского восстания в Ичкерии во второй половине прошлого века, - чеберло (чубяхкинеро).
 Шавлаева Тамара Магомедовна - Доктор исторических наук, профессор, этнограф.

Примечания

Литература

Ссылки
 Из истории развития шерстяного промысла чеченцев в XIX - нач. XX вв. :историко-этнографическое исследование тема диссертации и автореферата по ВАК 07.00.02, кандидат исторических наук Шавлаева, Тамара Магомедовна Научная библиотека диссертаций и авторефератов
 По следам одной легенды

Чеченские тайпы


Der Zweckverband Wasserversorgung Nordostwürttemberg (NOW) ist ein kommunaler Zweckverband, der 100 Städte und Gemeinden im Nordosten von Baden-Württemberg mit rund 600.000 Einwohnern mit Trinkwasser beliefert. Der Sitz ist in Crailsheim im Landkreis Schwäbisch Hall.

Struktur

Organisation
Die NOW ist als öffentlich-rechtlicher Zweckverband (Körperschaft des öffentlichen Rechts) organisiert nach den Regeln des Zweckverbandsrechts für Baden-Württemberg. Organe des Zweckverbands sind die Verbandsversammlung, der Verwaltungsrat, der Verbandsvorsitzende und die Geschäftsleitung.

Der Verbandsvorsitzende und seine beiden Stellvertreter sind von der Verbandsversammlung derzeit für eine 5-jährige Wahlperiode bis zum 28. Januar 2024 gewählt. Der Verbandsvorsitzender ist Bürgermeister Stefan Neumann (Künzelsau). Erster stellvertretender Verbandsvorsitzender ist Bürgermeister Gerhard Häuser (Schwaikheim); zweiter stellvertretender Verbandsvorsitzender ist Bürgermeisterin Petra Weber (Blaufelden).

Die Geschäftsleitung der NOW besteht aus einem Geschäftsführer, der von der Verbandsversammlung bestellt wird. Seine Amtszeit beträgt 8 Jahre. Der derzeitige Geschäftsführer ist Jochen Damm.

Die NOW beschäftigt über 100 Mitarbeitern im Nordosten von Baden-Württemberg.

Verbandsgebiet
Der Zweckverband beliefert Gemeinden und Städte im Landkreis Heilbronn, Hohenlohekreis, Main-Tauber-Kreis, Ostalbkreis, Rems-Murr-Kreis und im Landkreis Schwäbisch Hall mit Trinkwasser.

Verbandsmitglieder
Derzeit sind 53 Städte und sonstige Gemeinden, 17 Zweckverbände, vier Stadtwerke und vier Landkreise NOW-Verbandsmitglieder.

Städte und sonstige Gemeinden
A
 Auenwald

B
 Backnang
 Bad Mergentheim
 Braunsbach
 Bretzfeld
 Bühlertann

C
 Creglingen

D
 Dörzbach

E
 Ellenberg
 Ellhofen
 Ellwangen an der Jagst
 Eschach

F
 Fichtenberg
 Forchtenberg

G
 Gaildorf

H
 Heuchlingen

I
 Igersheim
 Ingelfingen

K
 Korb
 Künzelsau
 Kupferzell

L
 Langenbrettach
 Langenburg
 Leutenbach

M
 Michelbach an der Bilz
 Mulfingen
 Murrhardt

N
 Neuenstein
 Niedernhall
 Niederstetten

O
 Oberrot
 Öhringen
 Oppenweiler

P
 Pfedelbach

R
 Remshalden

S
 Satteldorf
 Schöntal
 Schrozberg
 Schwäbisch Hall
 Schwaikheim
 Sulzbach an der Murr
 Sulzbach-Laufen

U
 Untermünkheim

W
 Waldenburg
 Wallhausen
 Weikersheim
 Weinstadt
 Weissach im Tal
 Weißbach
 Winnenden
 Wolpertshausen
 Wüstenrot

Z
 Zweiflingen

Zweckverbände
 Wasserversorgungsverband Allmersbach im Tal, Allmersbach im Tal
 Biberwasserversorgungsgruppe, Michelfeld
 Bühlertal-Wasserversorgung, Obersontheim
 Gewerbepark Hohenlohe, Künzelsau
 Hardt-Wasserversorgungsgruppe, Aspach
 Hohenloher Wasserversorgungsgruppe, Gerabronn
 Wasserversorgung Jagstgruppe, Crailsheim
 Wasserversorgung Jagsttalgruppe, Krautheim
 Wasserversorgung Kochereckgruppe, Untermünkheim
 Wasserversorgung Menzlesmühle, Welzheim
 Mutlanger Wasserversorgungsgruppe, Mutlangen
 Nassau-Wasserversorgungsgruppe, Weikersheim
 Zweckverband RiesWasserVersorgung, Ellwangen
 Wasserversorgung Rombachgruppe, Aalen
 Wasserversorgung Schmerachgruppe, Ilshofen
 Wasserversorgung Söllbachgruppe, Burgstetten
 Sulmwasserversorgungsgruppe, Obersulm

Landkreise
 Hohenlohekreis (Künzelsau)
 Main-Tauber-Kreis (Tauberbischofsheim)
 Rems-Murr-Kreis (Waiblingen)
 Landkreis Schwäbisch Hall (Schwäbisch Hall)

Wasserdargebot

Die Jahreswassermenge des Zweckverbands Wasserversorgung Nordostwürttemberg stammte in den Jahren 2018 und 2019 zu jeweils etwa einem Drittel aus der Eigenwasserproduktion und zu etwa zwei Dritteln aus dem Fremdwasserbezug (ohne Durchleitung). In diesen beiden Jahren betrieb der Zweckverband für die Eigenwasserproduktion jeweils insgesamt 163 Gewinnungsanlagen; davon 66 Brunnen und 97 Quellen.

Der Fremdwasserbezug erfolgte im Jahr 2019 über den Zweckverband Landeswasserversorgung (der über Wasservorkommen im württembergischen Donauried sowie im Egautal verfügt und Flusswasser aus der Donau entnimmt), den Zweckverband Bodensee-Wasserversorgung (der sein Wasser aus dem Bodensee gewinnt) und über den Zweckverband Ries-Wasserversorgung (der sein Wasser aus 15 Tiefbrunnen im Ostalbkreis gewinnt).

Siehe auch
 Landeswasserversorgung
 Bodensee-Wasserversorgung

Weblinks

 Offizielle Website des Zweckverbands Wasserversorgung Nordostwürttemberg unter www.now-wasser.de

Einzelnachweise

Kommunaler Wasserversorger (Deutschland)
Wasserversorgung Nordostwurttemberg
Wasserverband
Organisation (Crailsheim)
Wasserversorgung (Baden-Württemberg)

{'title': 'Zweckverband Wasserversorgung Nordostwürttemberg', 'url': 'https://de.wikipedia.org/wiki/Zweckverband%20Wasserversorgung%20Nordostw%C3%BCrttemberg', 'language': 'de', 'timestamp': '20230320'}


package sentinel

{'content_hash': '24dbec1a3b044c07b93e771fc78eae07', 'timestamp': '', 'source': 'github', 'line_count': 1, 'max_line_length': 16, 'avg_line_length': 17.0, 'alnum_prop': 0.8823529411764706, 'repo_name': 'ljy2010a/redisgo-sentinel', 'id': '40d367d6aadec5ddd18e381bf215dbebe831e5ef', 'size': '603', 'binary': False, 'copies': '1', 'ref': 'refs/heads/master', 'path': 'doc.go', 'mode': '33188', 'license': 'apache-2.0', 'language': [{'name': 'Go', 'bytes': '29224'}]}


from __future__ import annotations

import dataclasses
import itertools
import logging
import re
from dataclasses import dataclass
from pathlib import Path, PurePath
from textwrap import dedent
from typing import Iterable, List, Type

import pytest

from pants.build_graph.address import Address
from pants.core.goals.fix import (
    Fix,
    FixFilesRequest,
    FixRequest,
    FixResult,
    FixTargetsRequest,
    Partitions,
)
from pants.core.goals.fix import rules as fix_rules
from pants.core.goals.fmt import FmtResult, FmtTargetsRequest
from pants.core.util_rules import source_files
from pants.core.util_rules.partitions import PartitionerType
from pants.engine.fs import (
    EMPTY_DIGEST,
    EMPTY_SNAPSHOT,
    CreateDigest,
    Digest,
    DigestContents,
    FileContent,
    Snapshot,
)
from pants.engine.rules import Get, QueryRule, collect_rules, rule
from pants.engine.target import FieldSet, MultipleSourcesField, SingleSourceField, Target
from pants.option.option_types import SkipOption
from pants.option.subsystem import Subsystem
from pants.testutil.rule_runner import RuleRunner
from pants.util.logging import LogLevel
from pants.util.meta import classproperty

FORTRAN_FILE = FileContent("fixed.f98", b"READ INPUT TAPE 5\n")
SMALLTALK_FILE = FileContent("fixed.st", b"y := self size + super size.')\n")

class FortranSource(SingleSourceField):
    pass

class FortranTarget(Target):
    alias = "fortran"
    core_fields = (FortranSource,)

@dataclass(frozen=True)
class FortranFieldSet(FieldSet):
    required_fields = (FortranSource,)

    sources: FortranSource

class FortranFixRequest(FixTargetsRequest):
    field_set_type = FortranFieldSet

    @classproperty
    def tool_name(cls) -> str:
        return "FortranConditionallyDidChange"

class FortranFmtRequest(FmtTargetsRequest):
    field_set_type = FortranFieldSet

    @classproperty
    def tool_name(cls) -> str:
        return "FortranFormatter"

@rule
async def fortran_fix_partition(request: FortranFixRequest.PartitionRequest) -> Partitions:
    if not any(fs.address.target_name == "needs_fixing" for fs in request.field_sets):
        return Partitions()
    return Partitions.single_partition(fs.sources.file_path for fs in request.field_sets)

@rule
async def fortran_fmt_partition(request: FortranFmtRequest.PartitionRequest) -> Partitions:
    return Partitions.single_partition(fs.sources.file_path for fs in request.field_sets)

@rule
async def fortran_fix(request: FortranFixRequest.Batch) -> FixResult:
    input = request.snapshot
    output = await Get(
        Snapshot, CreateDigest([FileContent(file, FORTRAN_FILE.content) for file in request.files])
    )
    return FixResult(
        input=input, output=output, stdout="", stderr="", tool_name=FortranFixRequest.tool_name
    )

@rule
async def fortran_fmt(request: FortranFmtRequest.Batch) -> FmtResult:
    output = await Get(
        Snapshot, CreateDigest([FileContent(file, FORTRAN_FILE.content) for file in request.files])
    )
    return FmtResult(
        input=request.snapshot,
        output=output,
        stdout="",
        stderr="",
        tool_name=FortranFmtRequest.tool_name,
    )

class SmalltalkSource(SingleSourceField):
    pass

class SmalltalkTarget(Target):
    alias = "smalltalk"
    core_fields = (SmalltalkSource,)

@dataclass(frozen=True)
class SmalltalkFieldSet(FieldSet):
    required_fields = (SmalltalkSource,)

    source: SmalltalkSource

class SmalltalkNoopRequest(FixTargetsRequest):
    field_set_type = SmalltalkFieldSet

    @classproperty
    def tool_name(cls) -> str:
        return "SmalltalkDidNotChange"

@rule
async def smalltalk_noop_partition(request: SmalltalkNoopRequest.PartitionRequest) -> Partitions:
    return Partitions.single_partition(fs.source.file_path for fs in request.field_sets)

@rule
async def smalltalk_noop(request: SmalltalkNoopRequest.Batch) -> FixResult:
    assert request.snapshot != EMPTY_SNAPSHOT
    return FixResult(
        input=request.snapshot,
        output=request.snapshot,
        stdout="",
        stderr="",
        tool_name=SmalltalkNoopRequest.tool_name,
    )

class SmalltalkSkipRequest(FixTargetsRequest):
    field_set_type = SmalltalkFieldSet

    @classproperty
    def tool_name(cls) -> str:
        return "SmalltalkSkipped"

@rule
async def smalltalk_skip_partition(request: SmalltalkSkipRequest.PartitionRequest) -> Partitions:
    return Partitions()

@rule
async def smalltalk_skip(request: SmalltalkSkipRequest.Batch) -> FixResult:
    assert False

class BrickyBuildFileFixer(FixFilesRequest):
    """Ensures all non-comment lines only consist of the word 'brick'."""

    @classproperty
    def tool_name(cls) -> str:
        return "BrickyBobby"

@rule
async def bricky_partition(request: BrickyBuildFileFixer.PartitionRequest) -> Partitions:
    return Partitions.single_partition(
        file for file in request.files if PurePath(file).name == "BUILD"
    )

@rule
async def fix_with_bricky(request: BrickyBuildFileFixer.Batch) -> FixResult:
    def brickify(contents: bytes) -> bytes:
        content_str = contents.decode("ascii")
        new_lines = []
        for line in content_str.splitlines(keepends=True):
            if not line.startswith("#"):
                line = re.sub(r"[a-zA-Z_]+", "brick", line)
            new_lines.append(line)
        return "".join(new_lines).encode()

    snapshot = request.snapshot
    digest_contents = await Get(DigestContents, Digest, snapshot.digest)
    new_contents = [
        dataclasses.replace(file_content, content=brickify(file_content.content))
        for file_content in digest_contents
    ]
    output_snapshot = await Get(Snapshot, CreateDigest(new_contents))

    return FixResult(
        input=snapshot,
        output=output_snapshot,
        stdout="",
        stderr="",
        tool_name=BrickyBuildFileFixer.tool_name,
    )

def fix_rule_runner(
    target_types: List[Type[Target]],
    request_types: List[Type[FixRequest]] = [],
) -> RuleRunner:
    return RuleRunner(
        rules=[
            *collect_rules(),
            *source_files.rules(),
            *fix_rules(),
            *itertools.chain.from_iterable(request_type.rules() for request_type in request_types),
        ],
        target_types=target_types,
    )

def run_fix(
    rule_runner: RuleRunner,
    *,
    target_specs: List[str],
    only: list[str] | None = None,
    extra_args: Iterable[str] = (),
) -> str:
    result = rule_runner.run_goal_rule(
        Fix,
        args=[f"--only={repr(only or [])}", *target_specs, *extra_args],
    )
    assert result.exit_code == 0
    assert not result.stdout
    return result.stderr

def write_files(rule_runner: RuleRunner) -> None:
    rule_runner.write_files(
        {
            "BUILD": dedent(
                """\
                fortran(name='f1', source="ft1.f98")
                fortran(name='needs_fixing', source="fixed.f98")
                smalltalk(name='s1', source="st1.st")
                smalltalk(name='s2', source="fixed.st")
                """,
            ),
            "ft1.f98": "READ INPUT TAPE 5\n",
            "fixed.f98": "READ INPUT TAPE 5",
            "st1.st": "y := self size + super size.')",
            "fixed.st": "y := self size + super size.')\n",
        },
    )

def test_summary() -> None:
    rule_runner = fix_rule_runner(
        target_types=[FortranTarget, SmalltalkTarget],
        request_types=[
            FortranFixRequest,
            FortranFmtRequest,
            SmalltalkSkipRequest,
            SmalltalkNoopRequest,
            BrickyBuildFileFixer,
        ],
    )

    write_files(rule_runner)

    stderr = run_fix(rule_runner, target_specs=["::"])

    assert stderr == dedent(
        """\

        + BrickyBobby made changes.
        + FortranConditionallyDidChange made changes.
        ✓ FortranFormatter made no changes.
        ✓ SmalltalkDidNotChange made no changes.
        """
    )

    fortran_file = Path(rule_runner.build_root, FORTRAN_FILE.path)
    smalltalk_file = Path(rule_runner.build_root, SMALLTALK_FILE.path)
    build_file = Path(rule_runner.build_root, "BUILD")
    assert fortran_file.is_file()
    assert fortran_file.read_text() == FORTRAN_FILE.content.decode()
    assert smalltalk_file.is_file()
    assert smalltalk_file.read_text() == SMALLTALK_FILE.content.decode()
    assert build_file.is_file()
    assert build_file.read_text() == dedent(
        """\
        brick(brick='brick1', brick="brick1.brick98")
        brick(brick='brick', brick="brick.brick98")
        brick(brick='brick1', brick="brick1.brick")
        brick(brick='brick2', brick="brick.brick")
        """
    )

def test_skip_formatters() -> None:
    rule_runner = fix_rule_runner(
        target_types=[FortranTarget, SmalltalkTarget],
        request_types=[FortranFmtRequest],
    )

    write_files(rule_runner)

    stderr = run_fix(rule_runner, target_specs=["::"], extra_args=["--fix-skip-formatters"])

    assert not stderr

def test_fixers_first() -> None:
    rule_runner = fix_rule_runner(
        target_types=[FortranTarget, SmalltalkTarget],
        # NB: Order is important here
        request_types=[FortranFmtRequest, FortranFixRequest],
    )

    write_files(rule_runner)

    stderr = run_fix(rule_runner, target_specs=["::"])

    # NB Since both rules have the same body, if the fixer runs first, it'll make changes. Then the
    # formatter will have nothing to change.
    assert stderr == dedent(
        """\

        + FortranConditionallyDidChange made changes.
        ✓ FortranFormatter made no changes.
        """
    )

def test_only() -> None:
    rule_runner = fix_rule_runner(
        target_types=[FortranTarget, SmalltalkTarget],
        request_types=[
            FortranFixRequest,
            SmalltalkSkipRequest,
            SmalltalkNoopRequest,
            BrickyBuildFileFixer,
        ],
    )

    write_files(rule_runner)

    stderr = run_fix(
        rule_runner,
        target_specs=["::"],
        only=[SmalltalkNoopRequest.tool_name],
    )
    assert stderr.strip() == "✓ SmalltalkDidNotChange made no changes."

def test_no_targets() -> None:
    rule_runner = fix_rule_runner(
        target_types=[FortranTarget, SmalltalkTarget],
        request_types=[
            FortranFixRequest,
            SmalltalkSkipRequest,
            SmalltalkNoopRequest,
            BrickyBuildFileFixer,
        ],
    )

    write_files(rule_runner)

    stderr = run_fix(
        rule_runner,
        target_specs=[],
    )
    assert not stderr.strip()

def test_message_lists_added_files() -> None:
    input_snapshot = Snapshot._unsafe_create(
        Digest("a" * 64, 1000), ["f.ext", "dir/f.ext"], ["dir"]
    )
    output_snapshot = Snapshot._unsafe_create(
        Digest("b" * 64, 1000), ["f.ext", "added.ext", "dir/f.ext"], ["dir"]
    )
    result = FixResult(
        input=input_snapshot,
        output=output_snapshot,
        stdout="stdout",
        stderr="stderr",
        tool_name="fixer",
    )
    assert result.message() == "fixer made changes.\n  added.ext"

def test_message_lists_removed_files() -> None:
    input_snapshot = Snapshot._unsafe_create(
        Digest("a" * 64, 1000), ["f.ext", "removed.ext", "dir/f.ext"], ["dir"]
    )
    output_snapshot = Snapshot._unsafe_create(
        Digest("b" * 64, 1000), ["f.ext", "dir/f.ext"], ["dir"]
    )
    result = FixResult(
        input=input_snapshot,
        output=output_snapshot,
        stdout="stdout",
        stderr="stderr",
        tool_name="fixer",
    )
    assert result.message() == "fixer made changes.\n  removed.ext"

def test_message_lists_files() -> None:
    # _unsafe_create() cannot be used to simulate changed files,
    # so just make sure added and removed work together.
    input_snapshot = Snapshot._unsafe_create(
        Digest("a" * 64, 1000), ["f.ext", "removed.ext", "dir/f.ext"], ["dir"]
    )
    output_snapshot = Snapshot._unsafe_create(
        Digest("b" * 64, 1000), ["f.ext", "added.ext", "dir/f.ext"], ["dir"]
    )
    result = FixResult(
        input=input_snapshot,
        output=output_snapshot,
        stdout="stdout",
        stderr="stderr",
        tool_name="fixer",
    )
    assert result.message() == "fixer made changes.\n  added.ext\n  removed.ext"

@dataclass(frozen=True)
class KitchenSingleUtensilFieldSet(FieldSet):
    required_fields = (FortranSource,)

    utensil: SingleSourceField

@dataclass(frozen=True)
class KitchenMultipleUtensilsFieldSet(FieldSet):
    required_fields = (FortranSource,)

    utensils: MultipleSourcesField

@pytest.mark.parametrize(
    "kitchen_field_set_type, field_sets",
    [
        (
            KitchenSingleUtensilFieldSet,
            (
                KitchenSingleUtensilFieldSet(
                    Address("//:bowl"), SingleSourceField("bowl.utensil", Address(""))
                ),
                KitchenSingleUtensilFieldSet(
                    Address("//:knife"), SingleSourceField("knife.utensil", Address(""))
                ),
            ),
        ),
        (
            KitchenMultipleUtensilsFieldSet,
            (
                KitchenMultipleUtensilsFieldSet(
                    Address("//:utensils"),
                    MultipleSourcesField(["*.utensil"], Address("")),
                ),
            ),
        ),
    ],
)
def test_default_single_partition_partitioner(kitchen_field_set_type, field_sets) -> None:
    class KitchenSubsystem(Subsystem):
        options_scope = "kitchen"
        help = "a cookbook might help"
        name = "The Kitchen"
        skip = SkipOption("lint")

    class FixKitchenRequest(FixTargetsRequest):
        field_set_type = kitchen_field_set_type
        tool_subsystem = KitchenSubsystem
        partitioner_type = PartitionerType.DEFAULT_SINGLE_PARTITION

    rules = [
        *FixKitchenRequest._get_rules(),
        QueryRule(Partitions, [FixKitchenRequest.PartitionRequest]),
    ]
    rule_runner = RuleRunner(rules=rules)
    print(rule_runner.write_files({"BUILD": "", "knife.utensil": "", "bowl.utensil": ""}))
    partitions = rule_runner.request(Partitions, [FixKitchenRequest.PartitionRequest(field_sets)])
    assert len(partitions) == 1
    assert partitions[0].elements == ("bowl.utensil", "knife.utensil")

    rule_runner.set_options(["--kitchen-skip"])
    partitions = rule_runner.request(Partitions, [FixKitchenRequest.PartitionRequest(field_sets)])
    assert partitions == Partitions([])

def test_streaming_output_changed(caplog) -> None:
    caplog.set_level(logging.DEBUG)
    changed_digest = Digest(EMPTY_DIGEST.fingerprint, 2)
    changed_snapshot = Snapshot._unsafe_create(changed_digest, [], [])
    result = FixResult(
        input=EMPTY_SNAPSHOT,
        output=changed_snapshot,
        stdout="stdout",
        stderr="stderr",
        tool_name="fixer",
    )
    assert result.level() == LogLevel.WARN
    assert result.message() == "fixer made changes."
    assert ["Output from fixer\nstdout\nstderr"] == [
        rec.message for rec in caplog.records if rec.levelno == logging.DEBUG
    ]

def test_streaming_output_not_changed(caplog) -> None:
    caplog.set_level(logging.DEBUG)
    result = FixResult(
        input=EMPTY_SNAPSHOT,
        output=EMPTY_SNAPSHOT,
        stdout="stdout",
        stderr="stderr",
        tool_name="fixer",
    )
    assert result.level() == LogLevel.INFO
    assert result.message() == "fixer made no changes."
    assert ["Output from fixer\nstdout\nstderr"] == [
        rec.message for rec in caplog.records if rec.levelno == logging.DEBUG
    ]