Антипаттерн (англ.anti-pattern) — это распространённый подход к решению класса часто встречающихся проблем, являющийся неэффективным, рискованным или непродуктивным[1]. В отличие от шаблона проектирования, рассмотрение антипаттерна включает в себя как неправильное решение проблемы с его признаками и последствиями, так и выход из ситуации[2].
Термин происходит из информатики, из книги «Банды четырёх» «Шаблоны проектирования», которая заложила примеры практики хорошего программирования. Авторы назвали эти хорошие методы «паттернами», и противоположными им являются «антипаттерны».
Антипаттерны концептуально похожи на паттерны в том, что они документируют повторяющиеся решения общих проблем. Они известны как антипаттерны, потому что их использование (или злоупотребления) даёт негативные последствия[3]➤.
С развитием ИТ-индустрии масштабы программных проектов и затраты ресурсов на них стремительно росли, что порождало большое количество проблем, что вставали перед программистами. Большинство этих проблем были типичными и встречались практически в каждом крупном проекте. В начале 90-х годов приобрели значительную популярность каталоги шаблонов проектирования, «паттернов» (англ.design patterns) — элегантных и проверенных на практике способов решения типичных задач. Паттерны и на сегодняшний день являются мощными и чрезвычайно популярны, однако многие разработчики, используя популярные паттерны в ситуациях, для которых они не предназначены, порождали этим больше проблем, чем решали. Кроме того, у ИТ-инженеров, как и у работников любой другой сферы деятельности, можно выделить типичные совершаемые ошибки, обусловленные недостаточной базой знаний или отсутствием опыта, спешкой и оказываемым давлением из-за сроков сдачи проекта, финансовыми ограничениями и прочим.
Впервые термин «антипаттерн» в смысле обобщенного описания типичного неудачного решения был применен в 1996 году Майклом Эйкройдом (англ.Michael Akroyd) на конференции «Object World West Conference», посвященной аспектам объектно-ориентированного программирования.[4] В своей презентации «Антипаттерны: предотвращение неправильного использования объектов» Эйкройд обращал внимание на вредные, но частые программные конструкции, в частности, те, что противоречат принципам ООП. К тому же, для каждой такой конструкции он предлагал эффективную замену.
Термин в смысле «плохая идея» встречался и до Эйкройда, но не публиковался и особой популярностью не пользовался. И все же приписывать авторство одному человеку не стоит. Как считает Уильям Браун, автор книги «Антипаттерны: рефакторинг приложений, архитектур и проектов», антипаттерн — это этап эволюции понятия паттерна проектирования, расширения их модели.
Вызов предка[англ.] (Call super): Для реализации прикладной функциональности методу класса-потомка требуется в обязательном порядке вызывать те же методы класса-предка.
Ошибка пустого подкласса (Empty subclass failure): Создание класса (в Perl), который не проходит «проверку пустоты подкласса» («Empty Subclass Test») из-за различного поведения по сравнению с классом, который наследуется от него без изменений.
Божественный объект (God object): Концентрация слишком большого количества функций в одной части системы (классе).
Объектная клоака (Object cesspool): Переиспользование объектов, находящихся в непригодном для переиспользования состоянии.
Полтергейст[англ.] (Poltergeist[13]): Объекты, чьё единственное предназначение — передавать информацию другим объектам.
Проблема йо-йо[англ.] (Yo-yo problem): Чрезмерная размытость сильно связанного кода (например, выполняемого по порядку) по иерархии классов.
Френд-зона (Friend zone): Неуместное использование дружественных классов и дружественных функций в языке C++.
Каша из интерфейсов (Interface soup[14]): Объединение нескольких интерфейсов, разделенных согласно принципу изоляции интерфейсов (Interface segregation), в один.
Висящие концы: Интерфейс, большинство методов которого бессмысленны и реализуются «пустышками».
Заглушка (Stub): Попытка «натянуть» на объект уже имеющийся малоподходящий по смыслу интерфейс, вместо создания нового.
Активное ожидание[англ.] (Busy spin, busy waiting): Потребление ресурсов ЦПУ (процессорного времени) во время ожидания события, обычно при помощи постоянно повторяемой проверки, вместо того, чтобы использовать асинхронное программирование (к примеру, систему сообщений или событий).
Воняющий подгузник (The Diaper Pattern Stinks): Сброс флага ошибки без её обработки или передачи вышестоящему обработчику.
Проверка типа вместо интерфейса (Checking type instead of membership, Checking type instead of interface): Проверка того, что объект имеет специфический тип в то время, когда требуется только определённый интерфейс.
Инерция кода (Code momentum): Сверхограничение части системы путём постоянного подразумевания её поведения в других частях системы.
Таинственный код (Cryptic code): Использование аббревиатур вместо мнемоничных имён.
Жёсткое кодирование (Hard code): Внедрение предположений об окружении системы в слишком большом количестве точек её реализации.
Мягкое кодирование (Soft code): Патологическая боязнь жёсткого кодирования, приводящая к тому, что настраивается всё что угодно, при этом конфигурирование системы само по себе превращается в программирование.
Поток лавы[англ.] (Lava flow)[13]: Сохранение нежелательного (излишнего или низкокачественного) кода по причине того, что его удаление слишком дорого или будет иметь непредсказуемые последствия.
Волшебные числа (Magic numbers): Использование числовых констант без объяснения их смысла.
Спагетти-код (Spaghetti code, иногда «макароны»)[13]: Код с чрезмерно запутанным порядком выполнения.
Лазанья-код[англ.] (Lasagnia code, или «лук» (onion)): Чрезмерное связывание между собой уровней абстракции, приводящее к невозможности изменения одного уровня без изменения остальных.
Равиоли-код (Ravioli code, или «пельмени»): Объекты настолько «склеены» между собой, что практически не допускают рефакторинга.
Мыльный пузырь (Soap bubble): Объект, инициализированный мусором, максимально долго притворяется, что содержит какие-то данные.
Мьютексный ад (Mutex hell): Внедрение слишком большого количества объектов синхронизации между потоками.
(Мета-)шаблонный рак (Template cancer): Повсеместное использование шаблонов (в основном C++), в том числе там, где их использование не оправдано. Это уменьшает понимание и сопровождение кода и замедляет компиляцию.
Дефакторинг (De-Factoring): Процесс уничтожения функциональности и замены её документацией.
Золотой молоток (Golden hammer[13]): Сильная уверенность в том, что любимое решение универсально применимо. Название происходит от поговорки «когда в руках молоток, все проблемы кажутся гвоздями».
Фактор невероятности[англ.] (Improbability factor): Предположение о невозможности того, что сработает известная ошибка.
Преждевременная оптимизация (Premature optimization): Оптимизация на этапе проектирования сегмента кода, приводящая к его усложнению или искажению.
Программирование методом подбора (Programming by permutation): Подход к разработке программного обеспечения небольшими изменениями без понимания их смысла.
Изобретение колеса/велосипеда (Reinventing the wheel[13]): Создание с нуля вместо использования хорошего готового решения.
Изобретение квадратного колеса (Reinventing the square wheel): Создание плохого решения, при условии, что уже существует известное решение лучше.
Самоуничтожение (Self-destruction): Фатальная ошибка либо нестандартное поведение программы, приводящая к отказу в обслуживании, возникшая вследствие другой менее серьёзной ошибки. Например, при возникновении ошибки, приложение начинает очень быстро и много писать в лог, вследствие чего заканчивается место на жёстком диске быстрее, чем это обнаружит мониторинг.
Два тоннеля: Вынесение новой функциональности в отдельное приложение вместо расширения уже имеющегося. Чаще всего применяется, когда по каким-либо причинам (в основном, при нехватке времени либо нежелании менеджмента) внесение изменений в уже имеющийся код требует больших затрат, чем создание нового. При этом у клиента в конечном итоге работают два приложения, запускаясь одновременно либо попеременно друг из друга.
Коммит-убийца (Commit assasin): Внесение отдельных изменений в систему контроля версий без проверки влияния их на другие части программы. Как правило, после подобных коммитов работа коллектива парализуется на время исправления проблем в местах, которые ранее работали безошибочно.
Антипаттерны управления конфигурацией
Ад зависимостей (Dependency hell, на платформе Microsoft Windows также называется «DLL hell», «DLL-ад»): Разрастание графа взаимных зависимостей программных продуктов и библиотек, приводящее к сложности установки новых и удаления старых продуктов. В сложных случаях различные установленные программные продукты требуют наличия разных версий одной и той же библиотеки. В наиболее сложных случаях один продукт может косвенно потребовать сразу две версии одной и той же библиотеки.
Разные
Дым и зеркала (Smoke and mirrors[13]): Демонстрация того, как будут выглядеть ненаписанные функции (название происходит от двух излюбленных способов, которыми фокусники скрывают свои секреты).
Раздувание ПО (Software bloat): Разрешение последующим версиям системы требовать всё больше и больше ресурсов.
Функции для галочки: Превращение программы в конгломерат плохо реализованных и не связанных между собой функций (как правило, для того, чтобы заявить в рекламе, что функция есть).
Архитектурные антипаттерны
Типичные проблемы, связанные со структурой системы[6]:
Инверсия абстракции (Abstraction inversion): Сокрытие части функциональности от внешнего использования, в надежде на то, что никто не будет её использовать.
Затычка на ввод данных (Input kludge[13]): Забывчивость в спецификации и выполнении поддержки возможного неверного ввода.
Раздувание интерфейса (Interface bloat): Разработка интерфейса очень мощным и очень сложным для реализации.
Волшебная кнопка (Magic pushbutton): Выполнение результатов действий пользователя в виде неподходящего (недостаточно абстрактного) интерфейса. Например, в системах типа Delphi это написание прикладной логики в обработчиках нажатий на кнопку.
Дымоход (Stovepipe System[13]): Редко поддерживаемая сборка плохо связанных компонентов.
Состояние гонки (Race hazard, Race condition): непредвидение возможности наступления событий в порядке, отличном от ожидаемого.
Членовредительство (Mutilation): Излишнее «затачивание» объекта под определенную очень узкую задачу таким образом, что он не способен будет работать с никакими иными, пусть и очень схожими задачами.
Сохранение или смерть (Save or die): Сохранение изменений в конфигурации на жесткий диск лишь при завершении приложения; приводит к тому, что в случае отказа в программе эти данные будут утеряны
Организационные антипаттерны
Проблемы, с которыми встречаются менеджеры (или группы менеджеров)[6]:
Аналитический паралич (Analysis paralysis)[13]: неоправданно большие затраты на анализ и проектирование. Часто приводит к закрытию проекта до начала его реализации.
Дойная корова[англ.] (Cash cow): при наличии продукта, приносящего выгоду без существенных вложений, не вкладываются средства в развитие и разработку новых продуктов.
Управление, основанное на числах (Management by numbers): излишнее внимание к численным показателям, имеющим очень косвенное отношение к управляемой системе, сложным для получения, либо подверженным эффекту Гудхарта.
Драконовские меры (Management by perkele): неоправданно жесткий стиль управления.
Единственный знающий человек (Single head of knowledge, SHOK): когда жизненно важными для проекта сведениями или навыками обладает только один человек в команде, а с его уходом работа останавливается.
Рыцарь на белом коне (Knight in shining armor, KISA): когда на сцене появляется человек, который пытается починить всё, не сообщая никому, что он сделал и почему.
Нейл и Лапланте приводят следующие антипаттерны[5]:
Заочный менеджер (Absentee Manager): менеджер ведет себя уклончиво или невидим в течение длительного времени — он прячется где-то в офисе или вдали от офиса.
Иметь только молоток (All You Have Is A Hammer): однонаправленное управление, где одни и те же приемы используются на всех подчиненных и во всех ситуациях. Иногда также называется «One-Trick Pony».
Дикий менеджер (Cage Match Negotiator): любой менеджер, который упрям не по разуму и использует подход к управлению «Победа любой ценой» или «Я прав, а вы нет». У них часто есть кофейная кружка с «Правилами управления»: «Правило № 1: Босс всегда прав. Правило № 2: Если босс не прав, см. Правило № 1».
Доппельгангер (Doppelganger): менеджер или коллега, с которым то легко работать, то трудно.
Бесплодные прыжки (Fruitless Hoops): вы готовите для менеджеров всё новые и новые данные, нужные им для принятия решения, но менеджеры так и не принимают никакого решения, продолжая запрашивать у вас данные. Вы не знаете, зачем им нужны эти данные.
Золотой ребёнок (Golden Child): «Золотой ребенок» появляется в ситуациях, когда менеджер предоставляет особую ответственность, возможность, признание или вознаграждение члену своей команды на основе личных взаимоотношений с ним и вопреки его действительным действиям. Всех раздражает «Золотое дитя», но настоящая проблема заключается в менеджере.
Безглавая курица (Headless Chicken): менеджер без фокуса и плана, который никогда ничего не заканчивает.
Лидер не менеджер (Leader Not Manager): подчеркивает важность эффективного руководства.
Менеджер попугай (Managerial Cloning): менеджеры среднего звена, начинающие со временем вести себя, как их начальники.
Менеджер не лидер (Manager Not Leader): такой менеджер хорошо справляется с административными и управленческими обязанностями, но не обладает лидерскими способностями.
Злоупотребление метриками (Metric Abuse): неправильное использование метрик из-за некомпетентности или умышленного манипулирования данными.
Классный чувак (Mr. Nice Guy): менеджер, который сосредотачивается на том, чтобы быть другом каждого, в конечном итоге разочаровывает всех и не справляется со своими обязанностями.
Управление грибами (Mushroom Management): ситуация, в которой руководство не может эффективно общаться с персоналом. По сути, информация намеренно скрывается, чтобы все были «толстыми, глупыми и счастливыми». Название связано с аналогией: шампиньоны выращивают в темноте и в навозе.
Полирование тарелок (Plate Spinning): менеджер скрывает свою неэффективность, заставляя работников заниматься трудоёмкой и бесполезной работой.
Герой пролетариата (Proletariat Hero): менеджер ведёт себя с подчинёнными, как с идеальными работниками, но это лишь его опора, используемая для маскировки плохого управления. Это форма «мотивации» персонала, которая дает повод руководству повысить ожидаемые результаты или получить больше с меньшими затратами.
Звёздный выскочка (Rising Upstart): суперзвезды, которые не могут терять время на обучение и поиск своего места. Иногда это может быть из-за невежества (они не знают, чего не знают), а иногда из-за нетерпения (они знают то, чего не знают другие). Такой выскочка представляет настоящий вызов для всех, кроме самых опытных менеджеров.
Дорога в никуда (Road to Nowhere): Отсутствие плана вызывает замешательство и кризис руководства.
Бесхребетный руководитель (Spineless Executive): любой менеджер, который не имеет смелости вступить в необходимую конфронтацию или справиться со сложной ситуацией. Вместо этого он полностью избегает конфронтации или ситуации или просит вас сообщить ему плохие новости.
Абсолютный инструмент (Ultimate Weapon): менеджер объявляет, что все могут положиться на выдающихся сотрудников настолько, что эти сотрудники станут проводником всего.
Тёплое тело (Warm Bodies[13]): управленческая ситуация, в которой работник, который едва соответствует минимальным требованиям, перемещается от проекта к проекту или от команды к команде. Слабый работник называется «теплым телом», хотя настоящая проблема заключается в менеджере. Этот антипаттерн является противоположностью «Звёздного выскочки» в отношении навыков и потенциала.
Антипаттерны обстановки
Проблемы, вызванные доминирующей в организации структурой и социальной моделью, являющейся результатом действующей в организации общественной политики[15][6][5][16]:
Муравейник (Ant Colony) — под внешней красотой скрывается насаждение целей[прояснить].
↑Miroslav Kis. Information security antipatterns in software requirements engineering. In Proceedings of the 9th Conference on Pattern Language of Programs (Plop), 2002.
↑John Long. Software reuse antipatterns. In ACM SIGSOFT Software Engineering Notes, volume26, page 4, July 2001.
↑Paula Kotze, Karen Renaud, and Judy van Biljona. Don’t do this — pitfalls in using anti-patterns in teaching human-computer interaction principles. Computers and Education, 50(3):979-1008, April 2008
↑J. Krai and M. Zemlicka. The most important service-oriented antipatterns. In proceedings of the International Conference on Software Engineering Advances (ICSEA), 2007.
↑P.A. Laplante, R.R. Hoffman, and G. Klein. Antipatterns in the creation of intelligent systems. IEEE Intelligent Systems, 22:91-95, 2007.
Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Februari 2023. Suleman.netTangkapan layar Jenis situsUji kecepatan koneksi internetBahasaInggris, Prancis, Jerman, Italia, Rusia, Spenyol, Indonesia, Polandia, Portugis, Swedia, BelandaPemilikOoklaSitus webspeedtest.netPeringkat Alexa▼ 327 (Juni 2014[upda...
Artikel ini perlu dikembangkan agar dapat memenuhi kriteria sebagai entri Wikipedia.Bantulah untuk mengembangkan artikel ini. Jika tidak dikembangkan, artikel ini akan dihapus. Ini adalah nama Korea; marganya adalah Kang. Kang Ji-youngNama asal강지영Lahir18 Januari 1994 (umur 30)Paju, Gyeonggi, Korea SelatanNama lainJYPendidikanUniversitas SungkyunkwanPekerjaanAktrispenyanyiAgenKeyEastSweet PowerTinggi167 m (547 ft 11 in)Karier musikGenreK-popJ-popInstrumenVoc...
LGM-118A Peacekeeper, juga dikenal sebagai MX missile (untuk Missile-eksperimental), adalah ICBM berbasis darat dikerahkan oleh Amerika Serikat mulai tahun 1986. Peacekeeper adalah rudal MIRV, itu bisa membawa sampai 10 kendaraan re-entry, masing-masing dipersenjatai dengan 300 kiloton-W87 warhead/MK-21 RV. Sebanyak 50 rudal dikerahkan setelah masa pengembangan yang panjang dan bermasalah. Referensi The Politics of Armageddon: The Scowcroft Commission and the MX Missile, in Kenneth Kitts, Pr...
Aidomaggiore Aidumajòre, BidumajòreKomuneComune di AidomaggioreLokasi Aidomaggiore di Provinsi OristanoNegara ItaliaWilayah SardiniaProvinsiOristano (OR)Pemerintahan • Wali kotaMariano SalarisLuas • Total41,21 km2 (15,91 sq mi)Ketinggian250 m (820 ft)Populasi (2016) • Total451[1]Zona waktuUTC+1 (CET) • Musim panas (DST)UTC+2 (CEST)Kode pos09070Kode area telepon0785Situs webhttp://www.comuneaidomaggior...
Byzantine emperor from 610 to 641 For other uses, see Heraclius (disambiguation). Not to be confused with Heraclitus or Heracles. HeracliusEmperor of the RomansSolidus of Emperor Heraclius (aged 35–38). Constantinople mint. Struck 610–613.Byzantine emperorReign5 October 610 –11 February 641PredecessorPhocasSuccessorConstantine IIIHeraclonasCo-emperorsConstantine III (613–641)Heraclonas (638–641)Bornc. 575[1][2]Cappadocia, Byzantine EmpireDied11 February 641 (age...
For the coins of the same name, see Vietnamese cash. A Tự Đức Thông Bảo (嗣德通寶) with a nominal value of 6 văn and a Tự Đức Bảo Sao (嗣德寶鈔) with a nominal value of 60 văn. The Vietnamese văn (chữ Hán: 文; French: Sapèque) as a denomination for Vietnamese cash coins was used from 1868 until 1945 during the reign of the Nguyễn dynasty. The inspiration to introduce the văn may have been to emulate the Chinese wén used on contemporary Qing dynasty cash coin...
Ноты для гимна Господь наш меч (нем. Ein feste Burg ist unser Gott) — евангельский гимн, написанный Мартином Лютером в 1529 году на основе 45-го псалма (Бог нам прибежище и сила). Существует несколько стихотворных переводов этого гимна на русский язык. В баптистских сборниках (Песнь В...
Administrative district within the Spanish Empire (1777–1834) This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (April 2015) (Learn how and when to remove this template message) Captaincy General of VenezuelaCapitanía General de Venezuela1777–1824 Coat of arms of Caracas Anthem: Marcha RealRoyal MarchFlag of Spain: first national flag, naval flag since...
Le MélomaneSutradaraGeorges MélièsPemeranGeorges MélièsPerusahaanproduksiStar Film CompanyTanggal rilisSummer 1903[1]Durasi50 meter[2]NegaraPrancisBahasaBisu The Melomaniac (Prancis: Le Mélomane) adalah sebuah film bisu Prancis tahun 1903 garapan Georges Méliès. Film tersebut dirilis oleh Star Film Company karya Méliès dan diberi nomor 479–480 dalam katalog-katalognya.[2] Film tersebut didaftarkan untuk hak cipta Amerika Serikat di Perpustakaan Kongres ...
Stratovolcano on the island of Honshu in Japan Mount Nikkō-Shirane日光白根山Highest pointElevation2,578 m (8,458 ft)[1]Prominence1,613 m (5,292 ft)[1]ListingUltraList of volcanoes in JapanCoordinates36°47′54″N 139°22′27″E / 36.79833°N 139.37417°E / 36.79833; 139.37417[1]GeographyMount Nikkō-ShiraneJapan LocationHonshū, JapanTopo mapGeospatial Information Authority 25000:1 男体山GeologyMountain type...
SalutDesaKantor desa SalutNegara IndonesiaProvinsiNusa Tenggara BaratKabupatenLombok UtaraKecamatanKayanganKode pos83353Kode Kemendagri52.08.03.2006 Luas-Jumlah penduduk3.439 jiwa (2011)Kepadatan- Rumah bambu di kawasan hutan Salut adalah desa di kecamatan Kayangan, Lombok Utara, Nusa Tenggara Barat, Indonesia. Desa ini berjarak sekitar 11 Km dari pusat kecamatan. Wilayahnya berada di bagian paling timur, mencakup kawasan hutan yang cukup luas di lereng Gunung Rinjani, yang sebagian dike...
Mars orbiter, part of ExoMars programme This article needs to be updated. Please help update this article to reflect recent events or newly available information. (March 2020) Trace Gas OrbiterArtist's illustration of ExoMars 2016Mission typeMars orbiterOperatorESA · RoscosmosCOSPAR ID2016-017A SATCAT no.41388Websitehttp://exploration.esa.int/jump.cfm?oid=46475Mission durationPlanned: 7 years[1][2] Elapsed: 8 years, 1 month, 12 days Spacecraft prop...
Client states of the First Empire First French Empire (1804–1814, 1815) Principality of Elba (1814–1815) Former Holy Roman Empire County of Wetzlar (1803–1810) Principality of Erfurt (1807–1814) Confederation of the Rhine (1806–1813) Forest- and Rhine-County of Salm-Horstmar (1803–1813) County of Salm-Reifferscheid-Dyck (1806–1811) Grand Duchy of Baden Kingdom of Bavaria Grand Duchy of Berg Grand Duchy of Hesse-Darmstadt Principality of Regensburg (1803–1810) Kingdom of...
Public broadcaster for the German states of Thuringia, Saxony, and Saxony-Anhalt This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Mitteldeutscher Rundfunk – news · newspapers · books · scholar · JSTOR (January 2021) (Learn how and when to remove this message)You can help expand this article with text translat...
American surface-to-air missile system MIM-104 Patriot A Patriot system of the German Air Force in August 2013TypeMobile surface-to-air missile/anti-ballistic missile systemPlace of originUnited StatesService historyIn serviceSince 1981; initial operational capacity 1984[1]Used bySee operatorsWarsGulf WarIraq War2014 Israel–Gaza conflictSyrian Civil WarYemeni Civil War (2015–present)Saudi Arabian-led intervention in YemenSaudi Arabian–Yemeni border conflict (...
German classical archaeologist (1853–1907) Adolf FurtwänglerAdolf FurtwänglerBorn30 June 1853Freiburg im Breisgau, Grand Duchy of BadenDied10 October 1907(1907-10-10) (aged 54)Athens, GreeceScientific careerFieldsArchaeology Johann Michael Adolf Furtwängler (30 June 1853 – 10 October 1907) was a German archaeologist, teacher, art historian and museum director. He was the father of the conductor Wilhelm Furtwängler and grandfather of the German archaeologist Andreas Furtwängler. ...
State park in New York state, United States 41°6′42″N 73°50′11″W / 41.11167°N 73.83639°W / 41.11167; -73.83639 The Pocantico River as it flows through Rockefeller State Park A typical carriage road on the property Rockefeller State Park Preserve is a state park in Mount Pleasant, New York in the eastern foothills of the Hudson River in Westchester County. Common activities in the park include horse-riding, walking, jogging, running, bird-watching, and fishi...
American Civil War operation in Mississippi Steele's Greenville expeditionPart of the Vicksburg campaign of the American Civil WarMajor General Frederick Steele, who commanded the expeditionDateApril 2, 1863 (1863-04-02) – April 25, 1863 (1863-04-25)LocationGreenville, Mississippi and the Deer Creek areaResult Union victoryBelligerents United States (Union) CSA (Confederacy)Commanders and leaders Frederick Steele Samuel W. FergusonStephen Dill LeeStrength 5,600...