- 1
<<?='b'.'o'.'d'.'y'?> class="p0 m0">
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+158
<<?='b'.'o'.'d'.'y'?> class="p0 m0">
Чье-то из какой-то самописной CMS в шаблоне..) таким способом выводятся многие теги))
Надо userjs такой забабахать.
Боль в жопе для того, кому потом это поддерживать. И ведь он всяко писал это руками, а не делал скрипт-обфускатор.
Работал только в браузерах, парсер которых поддерживал «SGML». Был ещё такой вариант, чтобы не сломать интерпретатор «JS», если вдруг парсер не понимает «SGML»:
Однако, если парсер не понимает «SGML», то даже такой вариант не спасёт от необходимости разбивать слово 'scr'+'ipt'.
Или даже так:
так низзя делать. Руки отрубят.
> ты любишь несвежее может?
У меня ещё "DSL" есть...
Ещё я люблю маленькие дисьры: "DSL" (для 50-ти метров в нём предустановлено довольно программ, но он давно мьортфф), " SliTaz" (у него много разных редакций, но он вообще на 2-м ведре), "Tiny Core" (для пердоликов-минималистов, любителей гуёв в стиле 90-x (ну это поправимо), но мне нравится (возможно потому что я минималист)).
Ещё можно попробовать «QNX», «BeOS», «Haiku», «Temple OS», «Хакинтош», «OS/2», «VxWorks», «Android x86».
ядро 3.10
Зато штабильное.
Кто о чём, а гость, как обычно о длинных да о чёрных.
Говорят, что у «IBM PS/2» были какие-то свои разъёмы, но я их не видел.
Ещё говорят, что были длинные коричневые («EISA»), но врут наверняка.
Увы, не копал я «IDE» a. k. a. «ATA». Строго говоря, даже во времена «AT» там были хитрости, иначе бы существовали переходники «ISA — IDE» в обе стороны. Да, данные не обрабатывались, они проходили насквозь. А вот шина адреса в «ленточный удлинитель» полностью не заводилась. Номер порта I/O выбирался не жёстким диском, а мультикартой (на ней иногда даже были перемычки для выбора альтернативного порта I/O). Т. е. на мультикарте как минимум стоял мультиплексор.
Но ведь мультиплексор стоял и на «LPT» (вроде недавно обсуждали 8255). Да и данные там тоже вроде проходили насквозь без обработки.
Из Википедии: «In 2008 IEI Technologies released a modern motherboard for Intel Core 2 Duo processors which, in addition to other special I/O features, is equipped with two ISA slots.
Similarly, ADEK Industrial Computers is releasing a motherboard in early 2013 for Intel Core i3/i5/i7 processors, which contains one (non-DMA) ISA slot».
Как на них она реализована?
Штабильно!
И оно нахуй не нужно во времеена KVM и хрдврнй вртлзции
http://www.opennet.ru/openforum/vsluhforumID3/92539.html
Какие-нибудь ещё торговые марки нужно заменять эвфемизмами, чтобы не запомоиться, или только производную «Дебиана»?
http://govnokod.ru/19864
Тогда так: ((uint16_t *)p)[0] == 0x6570.
Или так: 0[(uint16_t *)p] == 0x6570.
З.Ы. Ну и можно включить align check, но тогда вся стандартная либа отправляется на помойку. Банальный memcpy крашнется.
Ширина строки (и количество усилителей) на порядок больше количества пинов под данные. После активации строки (долго) ты можешь читать и писать любые места в этой строке (быстро). На SDRAM эти обращения пайплайнятся и хуярят на частоте шины (те самые 3ГГц).
А ширина модуля действительно совпадает с суммарной шириной чипов. И сейчас там вроде намного больше 64...
> открывать следующую строку
И закрывать текущую... а это время на перезарядку сенс-ампов.
А дополнительные планки увеличивают либо ширину шины либо тупо объём памяти. Смотря как воткнёшь.
А ещё мне нравятся нестандартные литералы, когда в одинарных кавычках несколько символов. Даже на одном процессоре с известным индейцем в разных кокококомпиляторах они реализованы по-разному. В одних 'abcd' кококомпилируется в db 61h, 62h, 63h, 64h, в других –— в db 64h, 63h, 62h, 61h. Ну то есть в одних 'abcd' –— это 0x61626364, в других —– это 0x64636261.
• «gcc» выдаёт: «warning: multi-character character constant [-Wmultichar]»
Спокойно компилирует, программа выводит 30313233 (т. е. на первом месте самый старший байт).
• «clang», «Watcom C», «Digital Mars», «MSVC», «Intel Compiler» даже ворнинг не выдали.
Программа выводит 30313233.
• «Borland C» компилирует без ворнингов.
Программа выводит 33323130 (т. е. байты размещаются так же, как в строке).
• «tcc» выводит ворнинг (multi-character character constant), но, как уже заметил очередной петух, воспринимает только первый символ. «Pelles C» ведёт себя точно так же.
• Церновский интерпретатор «CINT» без ворнингов выводит 30.
• Интерпретатор «Ch» указывает на синтаксическую ошибку и прерывает трансляцию.
Интересно было бы проверить какие-нибудь компиляторы на большом индейце.
«gcc» на «Power PC» и на «MIPS» выполняет операцию 0x30310000 | 0x3233, т. е. собирает число 0x30313233.
На «AVR» тот же компилятор собирает число 0x3233, т. е. воспринимает только два младших байта (два последних).
В общем, вне зависимости от порядка байтов процессора «gcc» воспринимает константу как записанную в большом индейце, а потом обрубает до размера мышиного слова.
• «Orange C» прерывает компиляцию с сообщением: «Unterminated character constant in function main».
• «IBM Visual Age» компилирует без ворнингов, выводит 30313233, как «мейнстримные» компиляторы.
http://compcert.inria.fr/
Компилятор «C», написанный на «OCaml»+«coq», с формально доказанной корректностью.
«The CompCert project investigates the formal verification of realistic compilers usable for critical embedded software. Such verified compilers come with a mathematical, machine-checked proof that the generated executable code behaves exactly as prescribed by the semantics of the source program. By ruling out the possibility of compiler-introduced bugs, verified compilers strengthen the guarantees that can be obtained by applying formal methods to source programs.
The main result of the project is the CompCert C verified compiler, a high-assurance compiler for almost all of the C language (ISO C99), generating efficient code for the PowerPC, ARM, RISC-V and x86 processors.»
switch statements must be structured as in MISRA-C; unstructured "switch", as in Duff's device, is not supported.
longjmp and setjmp are not guaranteed to work.
Variable-length array types are not supported.
Ну его нахуй, самые классные пльушке выпилили.
Описание программы на «ML»:
Ещё какое-то внутреннее представление:
* Точнее, что в нём нет отклонений от формальной спецификации
* «coq» = «петух» в переводе с французского.
Вся эта хуйня с unwind'ами - просто оптимизация успешного пути.
Такой уровень корректности нужен в малом количестве мест. Недаром сейчас "AI" так популярен: работает в 70% случаев и ладно.
> Почему строители моста могут математически показать что мост не упадет, а программисты не могут?
Даром что в 2018 как минимум два крупных моста разрушились, во Флориде (там чисто инженерный факап) и в Италии (старость + неудачная конструкция).
Кто-нибудь наверняка вспомнит про сопромат.
Сопромат основан на двух гипотезах:
1. Линейная упругость материала (механическое напряжение пропорционально удлинению).
2. Гипотеза плоских сечений. Грубо говоря, это когда частицы просто смещаются, но ещё не поворачиваются.
Реальные конструкции, пользуясь одним сопроматом, не рассчитаешь.
Невыпуклые углы конструкций являются концентраторами напряжений, в них могут начаться пластические деформации или рост трещин.
При больших деформациях описывать геометрическое состояние конструкции уже не так просто (гугли подходы Эйлера и Лагранжа).
Приходится дополнительно исследовать упругие свойства материала (нелинейная упругость, градиентная упругость, несимметричная упругость) и неупругие (эффект Баушингера –— раскрытие невидимых микротрещин при деформации, ползучесть, усталость).
Потом вспоминаем, что нагрузка имеет нерегулярный характер (на него может заехать больше транспорта, чем планировалось), что на мост действует окружающая среда, что материалы могут оказаться с браком, что при возведении могут быть погрешности, что грунт может подвести...
*****
По крайней мере, существуют методы мониторинга уже существующих конструкций. Обычно благодаря этому мониторингу о предстоящем разрушении можно узнать заранее и попытаться спасти конструкцию.
Что же произошло в 2018 году, из-за чего разрушение не смогли предотвратить?
Чем кончилось расследование в Италии я не следил, но мост был старый, а архитектор был выебщиком, у которого любимым развлечением было "а как бы сделать поменьше опор". В итоге ремонт его мостов был проблематичен (redundancy-то нет), ну на него и забили.
А если серьёзно, то можно ифдефов нафигачить и добавить ветку для большого индейца.
По размеру самого большого поля. Т.е. если 42 это 5 qword'ов + word, то надо догнаться до 48. Если это 10 dword'ов + word - то до 44. А если это 21 word - то 42 сойдёт.
З.Ы. Ну хотя раз у тебя sizeof() получился такой, то у тебя там word'ы или байты. Иначе конпелятор уже бы воткнул паддинг до 44 или 48.