<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://t8.lbstr.eu/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%BE%D1%81%D1%82%D1%8B%D0%BB%D1%8C</id>
	<title>Костыль - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://t8.lbstr.eu/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%BE%D1%81%D1%82%D1%8B%D0%BB%D1%8C"/>
	<link rel="alternate" type="text/html" href="https://t8.lbstr.eu/index.php?title=%D0%9A%D0%BE%D1%81%D1%82%D1%8B%D0%BB%D1%8C&amp;action=history"/>
	<updated>2026-11-03T09:14:24Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://t8.lbstr.eu/index.php?title=%D0%9A%D0%BE%D1%81%D1%82%D1%8B%D0%BB%D1%8C&amp;diff=13213&amp;oldid=prev</id>
		<title>127.0.0.1: /* Костыли IRL */ дополнение</title>
		<link rel="alternate" type="text/html" href="https://t8.lbstr.eu/index.php?title=%D0%9A%D0%BE%D1%81%D1%82%D1%8B%D0%BB%D1%8C&amp;diff=13213&amp;oldid=prev"/>
		<updated>2019-11-28T18:37:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Костыли IRL: &lt;/span&gt; дополнение&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Moar|костылей}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Костыль&amp;#039;&amp;#039;&amp;#039; — средство добавления недостающей функциональности или исправления серьёзных дыр без должного редизайна системы. Каждый костыль затрудняет дальнейшее развитие. В тех случаях, когда костыль уничтожает [[Баг|незапланированную функциональность]], называется заплаткой.&lt;br /&gt;
&lt;br /&gt;
Определение из {{lj comm|kostylism}}:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Костыль01.jpg|thumb|[[Рекурсия|Рекурсивный]] костыль [[IRL]], исправляющий сам себя.]]&lt;br /&gt;
[[Файл:Door bag.jpg|thumb|[[IRL]] костыль, исправляющий баг с дверью.]]&lt;br /&gt;
[[Файл:Realizat.jpg|thumb|Типичная реализация.]]&lt;br /&gt;
{{Цитата|pre=1|В этом мире много т. н. «костылей». Четкого определения нету, но, в общем, костыль — это нечто, что навешивается на что-то для решения какой-либо возникшей проблемы (и/или добавления функциональности), вместо того, чтобы это «что-то» переработать (возможно, с нуля). Яркие примеры костылей — ipsec, smtp auth, pppoe, и прочее.}}&lt;br /&gt;
&lt;br /&gt;
Если «костыль» отлично работает и не доставляет проблем ни пользователям, ни разработчикам, то можно считать его «технологическим крепежом».&lt;br /&gt;
&lt;br /&gt;
== Суть ==&lt;br /&gt;
Костыли могут создаваться в силу неспособности [[быдлокодер|разработчика]] создать более фундаментальное решение, либо в случае необходимости быстро устранить некий критичный [[баг]], исправление которого более элегантным методом в предоставленные сроки невозможно. Такие костыли называют «временным решением», но, как говорится, «нет ничего более постоянного, чем временное (решение)». Маленький костыль называют «[[грязный хак]]» или сопля. Как и костыли, сопли могут создавать проблемы в дальнейшем.&lt;br /&gt;
&lt;br /&gt;
Синонимом кода, состоящего из костылей [[чуть более, чем полностью]], является [[индусский код]].&lt;br /&gt;
&lt;br /&gt;
{{Цитата|pre=1|&lt;br /&gt;
Окостылил говнокод?&lt;br /&gt;
Ляг, поспи и все пройдет.&lt;br /&gt;
Встал, покодил, все равно&lt;br /&gt;
Получается говно.&lt;br /&gt;
&lt;br /&gt;
Как не патчил много лет,&lt;br /&gt;
Как не фиксил баги,&lt;br /&gt;
Все-равно велосипед&lt;br /&gt;
На костыльной тяге.&lt;br /&gt;
&lt;br /&gt;
Что б совсем без костылей,&lt;br /&gt;
Великов и багов&lt;br /&gt;
Нанимайте, говорю,&lt;br /&gt;
Нанимайте магов!|}}&lt;br /&gt;
&lt;br /&gt;
== Способы борьбы с костылями ==&lt;br /&gt;
* Переписать всё [[Нахуй|начисто]].&lt;br /&gt;
* &amp;lt;del&amp;gt;[[Взять и уебать]]&amp;lt;/del&amp;gt; Убедить автора, что [[Так верстают только мудаки|так писать]] [[Сказочный долбоеб|нехорошо]], и переписать начисто.&lt;br /&gt;
* &amp;lt;del&amp;gt;Убить нахер&amp;lt;/del&amp;gt; Убедить ПМа, что быстро только мухи рождаются, и пересмотреть сроки.&lt;br /&gt;
* Добавить [[Xzibit|ещё один костыль]].&lt;br /&gt;
* Объявить [[Фича|фичей]] и построить вокруг ровное приложение.&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
При написании программ для [[Маздай|Microsoft Windows]] некоторые программисты полагались на баги WinAPI. Позднее, при создании свободной реализации WinAPI [[Wine]], эмуляцию соответствующих багов пришлось добавить специально, чтобы обеспечить совместимость этих программ с Wine. Некоторый [[лулз]] состоит в том, что в MS при разработке новых версий софта занимаются тем же самым ради совместимости с предыдущими версиями.&lt;br /&gt;
&lt;br /&gt;
{{Цитата|Я впервые услышал об этом от одного из разработчиков популярной игры SimCity, который поведал мне о критической ошибке в их программе: она использовала память сразу после ее освобождения. Главное табу, нарушение которого прощалось в DOS, но карается в Windows, где освобожденную память тут же стащит другое работающее приложение. Тестеры в команде разработки Windows протестировали множество популярных приложений, чтобы убедиться, что все работает без сбоев, но SimCity зависала. Они сообщили это разработчикам Windows, которые дизассемблировали SimCity, шаг за шагом в дебаггере найдя ошибку, и добавили специальный код, проверяющий наличие SimCity в памяти и запускающий распределитель памяти в специальном режиме, в котором SimCity разрешается использовать память после ее освобождения.|[http://russian.joelonsoftware.com/Articles/HowMicrosoftLosttheWaronA.html Отсюда]}}&lt;br /&gt;
&lt;br /&gt;
Или вот такой костыль для IE — добавляет для элементов LI, вложенных в элемент id=cssmenu, свойство hover. Здорово нужен при написании разномастных выпадающих меню.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function cssmenuhover()&lt;br /&gt;
{&lt;br /&gt;
        if(!document.getElementById(&amp;quot;cssmenu&amp;quot;))&lt;br /&gt;
                return;&lt;br /&gt;
        var lis = document.getElementById(&amp;quot;cssmenu&amp;quot;).getElementsByTagName(&amp;quot;LI&amp;quot;);&lt;br /&gt;
        for (var i=0;i&amp;lt;lis.length;i++)&lt;br /&gt;
        {&lt;br /&gt;
                lis[i].onmouseover=function(){this.className+=&amp;quot; iehover&amp;quot;;}&lt;br /&gt;
                lis[i].onmouseout=function() {this.className=this.className.replace(new RegExp(&amp;quot; iehover\\b&amp;quot;), &amp;quot;&amp;quot;);}&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
if (window.attachEvent)&lt;br /&gt;
        window.attachEvent(&amp;quot;onload&amp;quot;, cssmenuhover);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Костыли IRL ==&lt;br /&gt;
{{Цитата|При проектировании самолета конструкторы постоянно сталкивались с самыми разнообразными, ранее никогда не встречавшимися проблемами. Например, у компоновки самолета, выигравшего конкурс, шасси не вписывалось в предназначенный для него отсек. Для выхода из ситуации предлагались довольно [[НЕХ|экзотические решения]] – воздухозаборники выносились на «спину», а после выхода на заданный курс самолет должен был переворачиваться кабиной вниз и так совершать полет. При посадке бомбардировщик должен был снова переворачиваться в исходное состояние.|[http://www.popmech.ru/article/3274-ubiytsa-avianostsev/ Из воспоминаний конструкторов советского бомбардировщика Т-4]}}&lt;br /&gt;
&lt;br /&gt;
* Наверное, наибольшее разнообразие костылей встречается в живых организмах, что на молекулярном, что на организменном уровне. Возможно, они даже целиком сделаны из костылей. Дело в том, что эволюция (случайная изменчивость+естественный отбор) попросту не умеет целенаправленно переделывать всё с нуля. Новые виды развиваются из уже существующих. Примеров имеется великое множество, и здесь будет разве что парочка, для понимания сути: у растений - реакции фотодыхания, начиная со второй, нужны, чтобы как-то утилизировать (а ещё лучше - заюзать с хоть каким-то профитом) гликолят, который образуется, когда фермент рубиско косячит (не хило так косячит, аж в 25% случаев), а у человеков, назвавших себя разумными, костылями можно считать надгортанник и мягкое нёбо, два хряща которые не дают жратве во время глотания попасть в дыхательные пути, которые пересекаются со жрательными.&lt;br /&gt;
* В Петербургском [[метро/В этой стране|метро]] в 99-м году обрушился козырёк над входом на станцию «Сенная площадь». После под каждый похожий козырёк подставили подпорки, которые портят вид станции и мешают пассажирам. К концу нулевых большинство из них либо перестроили (как, например, наркоманского вида «Горьковская»), либо под козырьки запихали ларьки, либо козырёк убран вообще. Дольше всех подпорки продержались на «Василеостровской».&lt;br /&gt;
* В самарском метро в 2002 году открыли станцию «Московская», а на оборотный тупик или съезд денег не хватило. В результате, до конца 2007 года, когда открыли станцию «Российская», поезд сначала приезжал со станции «Спортивная» на один путь станции «Гагаринская», разворачивался в тупике, подходил ко второму пути этой же станции и дальше уже ехал до конечной станции «Московская».&lt;br /&gt;
* Также костылём [[Автомобилист|водилы]] называют малоразмерное запасное колесо («докатку»). [http://amastercar.ru/articles/wheel_tire_7_dokatka.shtml Вот такое, например.] У [[Рулесрач|прулеводов]] на Дальнем Востоке распространено название «банан», по-видимому, из-за жёлтого цвета диска у докаток японских машин.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Ламер]]&lt;br /&gt;
* [[Быдлокодер]]&lt;br /&gt;
* [[Грязный хак]]&lt;br /&gt;
* [[Изобретать велосипед|Велосипед]]&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://govnokod.ru/ Целый сайт, посвященный сабжу и программерским лулзам.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
{{ЛОР}}&lt;br /&gt;
{{Software}}&lt;br /&gt;
{{Языки программирования|Программизм}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:IT-сленг]]&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
	</entry>
</feed>