- 1
- 2
Почему Delphi не умирает? Кто родил Lazarus и нахуя? Чем C++ лучше Delphi? Почему php хуже delphi, c++ и всех прочих?
За что все так ненавидят WordPress?
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Почему Delphi не умирает? Кто родил Lazarus и нахуя? Чем C++ лучше Delphi? Почему php хуже delphi, c++ и всех прочих?
За что все так ненавидят WordPress?
У меня 4 часа утра, и эти ебучие вопросы не дают мне спать. Отвечайте, сритесь и бомбите, пожалуйста.
Что в трамвае дребезжит?
Почему скворец поёт?
Почему медведь ревёт?
Почему один в берлоге,
А другой в гнезде живёт?
это мой хуй
\ Что в трамвае дребезжит?
это мой хуй
\ Почему скворец поёт?
это мой хуй
\ Почему медведь ревёт?
это мой хуй
\ Почему один в берлоге,
это мой хуй
\ А другой в гнезде живёт?
это мой хуй
Вы слишком часто упоминаете свой хуй. Вы испытываете какие-нибудь проблемы, связанные с ним? Вы хотите об этом поговорить?
— Твоё состояние начинает меня беспокоить.
— Это хуй.
https://yandex.ru/maps/-/CBuvFKGs~C
https://goo.gl/maps/QmfwgpP2aQ42
Потому же, почему и Cobol
>>Чем C++ лучше Delphi?
Кросс-платформенностью и поддержкой вендоров ОС компиляторов
>>Почему php хуже delphi, c++ и всех прочих?
Потому что почитай "фрактал плохого дизайна". Говно-к-говну.
>>За что все так ненавидят WordPress?
Не знаю кто там его ненавидит, но дыр в нем очень много
Вот такие статьи:
https://www.securitylab.ru/vulnerability/489434.php
Говорят о крайне низком качестве кода, архитектуры и IQ разработчиков WordPress
Как обычно, нихуя по сути. Ссылку на описание эксплойта и коммит-исправление гони.
Это уязвимость не в WordPress, а у долбоёбов, которые неправильно юзают API.
Prepared statement injection получается 😀
Но делать выражение на основе printf - немного странно, согласен.
https://www.iso.org/ru/standard/51416.html
Умирает.
> Кто родил Lazarus и нахуя?
Всем похуй.
> Чем C++ лучше Delphi?
Потому что Delphi = Pascal = хуйня для школьников
> Почему php хуже delphi, c++ и всех прочих?
Delphi сразу нахуй. А PHP где-то лучше, где-то хуже.
> За что все так ненавидят WordPress?
За то, что он на "PHP" и на "MySQL".
а ты, анон, знаешь что старая макось была написана на паскале?
И всё вплоть до os x (коея есть ребрендинг nextstep) был сплошной поскаль?
The standard language of Mac OS Classic was Pascal. The OS's API documentation was all written for Pascal, and as much of the OS as was not written in hand-optimized ASM was written in Pascal.
Отлично. Apple недавно выпустила ньютон: такой маленький компьютер, не больше телефонного справочника. Там довольно много памяти (думаю около мегабайта), говорят что за такими штуками будущее, но мне кажется что мощности рабочих станций (типа сановских, тех что на sparc) все равно им не видать, а значит будущего у таких "маленьких" устройств нет.
Зато там внутри NewtonOS, под которую можно писать на современных объектно-ориентированных языках: C++ и Newton Script. Вот за ООП точно будущее.
Ну или их обоих вдохновил Self
Такого г.на я никогда не встречал ни до, ни после. Собсно, с того самого момента и невзлюбил плюсы и именно тогда понял, что пых для веба - очень даже ничего(С)
Т.е. они не догадались, что можно собрать расширение, запилив только то, что действительно нужно, на C++. Дальше можно не читать.
> Такого г.на я никогда не встречал ни до, ни после.
Какие-то рандомные веб-программисты не сумели в C++ ⇒ С++ — говно.
Я согласен, что в неумелых руках C++ действительно, пожалуй, самый опасный язык.
Так это же самый распостранненый паттерн:
У моей подруги с ее парнем был опыт программирования на языке $LANGUAGE под оперциаонную систему $OS.
У них там как-то все очень плохо получилось, с тех пор я знаю что $LANGUAGE и $OS -- дерьмо, и даже пробовать их не хочу
— Слушай, Изя, я-таки не понимаю, за что можно любить "Битлз"? Поют нечленораздельно, в ноты не попадают, слова путают.
— А ты где их слышал?
— А мне Мойша напел.
Плюсы не говно, тем более, что их на тот момент я знал их лучше пыха.
Другое дело, что, сайт, запиленный на плюсах с полностью самописными говнофреймворками( включая роутинг. Отчасти, потому, некоторые страницы открывались лишь по адрес_сайта/страница/, но выкидывали 404-ю без последнего "/", либо, если была не "страница", а "Страница" итд ) - это.. не то, что, даже врагу пожелаешь )
Но, проблемы были решены, сайт на плюсах отправился в утиль, а осадок остался. Собсно, хэппи-энд.
п.с: хотя, неприязнь к нему связана, скорее, с его монструозной избыточностью, которая, тем не менее, нифига не упрощает жизнь( и разработку на нём ).
Если 95% кодовой базы проекта на плюсах, то писать веб на чём-либо другом не рационально™
Readme доставляет.
"If you just want to use crow, copy amalgamate/crow_all.h and include it.", заходишь в репу, а там "Latest commit 274aad8 on 17 Sep 2017 - Remove amalgamation result (`crow_all.h`) from the repository" в папке amalgamate.
Или я не шарю и это build artifact?
this.
Надеюсь, он написан на шаблонах?
Почему не взять шаблонизатор у которого есть байндинги?
Даже сраный пых именно так и появлялся: бекенд у тебя на сишечке а пых нужен чтобы писать:
<b><?=$petuh;?></b>
Хотя с другой стороны для плюсов же наверняка дохрена шаблонизаторов
>>
Регистрозависимость -- довольно распространённое поведение серверов. Если запросить статический файл на произвольном сервере, изменив регистр хотя бы одной буквы, то почти наверняка получим в ответ 404. Почему же тогда для динамических страниц нужна регистронезависимость?
на винде нет
SO на винде, правда статика не у них
Т. е. как минимум полагаться на регистронезависимость статики слишком рискованно.
Все современные FS регистрозависимы, просто для NTFS и HFS (или как там у мака) оно отключено
А-а-а-а-а! Живой спрайт! 16 x 6876 пикс.
Я думал, с ними уже никто не заморачивается.
А после литра Солнцедара?
Ну если JS, CSS и даже HTML копелируется, то чому бы не копелировать спрайты?
Users should always consider that URLs are case-sensitive.
-- https://www.w3.org/TR/WD-html40-970708/htmlweb.html
http://govnokod.ru/images/brand.gif -- работает
http://govnokod.ru/images/Brand.gif -- а так 404
http://govnokod.ru/comments/ -- работает
http://govnokod.ru/Comments/ -- тоже работает (но уже благодаря роутингу в движке mzz)
Конечно, круто, что поддерживается и /comments, и /Comments. Но ведь по всем ссылкам, кроме главной, мы откуда-то приходим, поэтому /Comments неоткуда взяться (этот вариант может появиться, только если юзер будет набирать URL по памяти или перебирать всевозможные URL грубой силой).
Нахюй?
Блядь, не хватало еще, чтоб голодные студенты и всякие сраные васяны из ПТУ писали бэкенд на таком блядском небезопасном говнище, как плюсы.
Лучшие иксперты гугла, мелкософта, эпла и мозиллы не могут на плюсах нахерачить безопасный браузер, чтоб в нем не появлялись RCE уязвимости, а ты еще эту парашу предлагаешь на сервер-сайд ташить
https://www.cvedetails.com/product/15031/Google-Chrome.html?vendor_id=1224
https://www.cvedetails.com/product/3264/Mozilla-Firefox.html?vendor_id=452
https://www.cvedetails.com/product/9900/Microsoft-Internet-Explorer.html?vendor_id=26
https://www.cvedetails.com/product/2935/Apple-Safari.html?vendor_id=49
>> Если 95% кодовой базы проекта на плюсах, то писать веб на чём-либо другом не рационально™
Где именно я предлагаю что-либо куда-либо тащить?
> голодные студенты и всякие сраные васяны из ПТУ писали
>> Я согласен, что в неумелых руках C++ действительно, пожалуй, самый опасный язык.
Похоже, так бомбит, что даже читать разучился.
А кто такой умный, что решил писать кодовую базу для бэкенда на плюсах? Какова мотивация?
>> Я согласен, что в неумелых руках C++ действительно, пожалуй, самый опасный язык.
Он и в умелых руках опасный.
А какой ещё язык можно было взять лет 10 назад, чтобы получить более-менее стабильное время отклика, без GC пауз? Или чтобы мемори лэйаутом управлять (индексы в память маппить, к примеру)?
> Он и в умелых руках опасный.
В умелых руках он гораздо удобней и безопасней той же сишечки.
следующий раз попробуйте использовать программистов
>> не могут на плюсах нахерачить безопасный браузер
виноваты плюсы, конечно.
Вот в проектах на PHP нет ни одной узявимости
http://community.develstudio.org/showthread.php/5047
c("chromium1")->html = 'HTML Код';
и всё!
а C++ так не может, ахахахха
шедевр
Единственное, что вызывало у меня опасение — это string. Ничто в мире не бывает более беспомощным, безответственным и порочным, чем мудаки, не осилившие string. Я знал, что рано или поздно мы столкнёмся и с этими мудаками.
Кому ты нахуй нужен, убогий?
Старые же файловые системы (а так же современные, предпочитающие soft updates журналам) могут остаться в неконсистентном состоянии и тогда их нужно будет проверять и исправлять ошибки.
А это какие?
Железный факт.
Причём уязвимы не только браузеры, но и остальной софт тоже.
Потому-то мозилла изобрела питушню и даже переписала значительный кусок лисы, м$ сделал Microsoft Java (C#) и Microsoft JavaScript (ts) и даже переписал на него офис, эппл высрало свифт, итд.
/green
Приведите яркие примеры уязвимого "остального софта".
Нормально, да?
Приведите яркие примеры уязвимого "остального софта".
> Всем похуй.
> хуйня для школьников
> сразу нахуй.
Сёма детектед
А я вот если брать не делфи, а фрипескарь, то реально, чем фрипескарь всем не угандил? Ведь он и кроссплатформиный, и свободный, и синтаксис просчще, и ООП присутствует, и вообще в паскалях давно юзают модули, а сиськобляди до сих пор ебутся с загорловочными вайлами.
На самом деле дело не в качестве ЯП как такового а в том, что стало де-факто и имеет поддержку вендора, компилятора, коммунити итд.
Если я беру плюсы (не дай бог) то я знаю что у них серьезная поддержка от главного копелятора моей ОС (gcc на линукс, clang на bsd и макось vc++ на винде). Поддержка от вендора (ну у MS есть MFC).
Мощные тулы (ReSharper++, CLion, PVSStudio, всякие *tags их умеют).
Легкий интероп с плейнсями (по которым доки во всех API всех ОС) итд. Куча серьезных либ типа boost.
А я беру фрипескарь и что? На форуме с двумя стерторами общаюсь?
Да и вообще статью писал неосилятор. Я такую же могу написать про любой ЯП. У меня не получилось написать программу => язык -- говно.
Фрипескарь живёт-бувёт, да развеваеца. На freepascal.org наличествуе носилёный форум, имееца бугтрацкер, буги-вуги испровляюца, имеецаг одная иде. Как с любами и тулзами не знаю, я на нём не пешу.
> gcc на линукс
Кчтати, ведь гцц тожэ умеит поцкаль?
Вау, но в сишке-то, конечно, массивы ГОРАЗДО лучше.
> it is not possible to write a single procedure that will sort them both
В современных паскалях точно можно брать указатель на голову и размер и арифметику указателей завезли.
> 1981
Я смотрю, ты путешествуешь всё дальше в прошлое... Передавай Ричи и Маккарти привет.
зато можно arr1 := arr2, если они одного типа
> современных паскалях точно можно брать указатель
В соврименых поцкалях можно передавать, например array of integer, его длину получить можно length(arr), а укозаткелями енто делали в старых поцкалях.
Кстанти, давно что-то Стертор ничего не писал про дульфию
Конечно лучше. В сишке размер не является частью массива, и потому можно ловить лулзлы с дурачков, которые пришли из Java и пишут так:
void doo(char a[]) {
int i;
for(i =0; i < sizeof(a);i++
В паскале так нельзя (всмысле лулзы нельзя ловить)
>>и арифметику указателей завезли.
да, еще в борланд завезли
>>Я смотрю, ты путешествуешь всё дальше в прошлое..
...сказали мне люди в теме, где обсуждают pascal
for(i =0; i < sizeof(a)/sizeof(a[0]);i++
Я правда не понимаю почему нельзя вернуть массив, и передать его скопировав тоже нельзя.
Структуры можно, а массив -- нет.
Почему, блядь?
Потому что хуй большой, а ландыш маленьк массив большой, а структура маленькая?
Тем не менее, бывают структуры с массивами внутри
Структуры состоят из элементов разных типов, поэтому, чтобы не усложнять, будем считать разные структуры несовместимыми.
Массивы же состоят из однотипных элементов. K&R решили сделать массивы разных длин с одинаковым базовым типом совместимыми друг с другом. Ну чтобы если char a[42]; char b[265], то a и b были одного типа.
Ага, даже 255го или даже 65535го...
зачем вы так говорите
sizeof(char[42]) чему равен?
Структуры состоят из элементов разных типов, поэтому, чтобы не усложнять, будем считать разные структуры несовместимыми.
Массивы же состоят из однотипных элементов. K&R решили сделать массивы разных длин с одинаковым базовым типом совместимыми друг с другом. Ну чтобы если char a[42]; char b[265], то a и b были одного типа.
хм)
Массив гомогенен, а кортеж нет.
>>Массивы же состоят из однотипных элементов.
да
Вот структура это кортеж, да
Блять, частный случай, или ктота запирищаит какомута частнаму картижу быть из однопипных олиментов?
вот в пистоне многие дурачки думают чтокортеж это такой ридонли массив, ибо ниграмотноые
Это ты про себя, да? Пиздун.
На самом деле туплы часто используют как ридоноли листы (даже в джанге) и это кал
> у тебя бомбануло
открою секрет: у меня никогда не бомбит (я шизик)
В ваших пистонах что в том, что в другом лежат сплошь PyObjectы, поэтому разница чисто косметическая. Ничто не мешает навалять в питоний список вперемешку bool, int, str и даже небо, даже Аллаха. Воистину, "кортеж это такой ридонли массив".
Можно считать, что питон — это такой OCaml, к которому компилятор забыли написать:
Tuples, records, and arrays are all represented identically at runtime as a block with tag 0. Tuples and records have constant sizes determined at compile time, whereas arrays can be of variable length. While arrays are restricted to containing a single type of element in the OCaml type system, this is not required by the memory representation.
-- https://dev.realworldocaml.org/runtime-memory-layout.html#tuples-records-and-arrays
Во-первых это деталь реализации CPython, во-вторых в памяти лежат байты, и потому никакого типа данных кроме массива байт в компьютерах нет (привет, Царь), даже структур нету.
На микроскопическом уровне всё состоит из элементарных частиц, значит, тебя нет.
Так сделано только в сишке. Почему в сишке длина массива имеет разный смысл в разных контекстах? Почему "всех остальных местах он автоматом вырождается в указатель без длины"? Что в массиве такого, чтобы он в это вырождался?
если ничего не знать про функции то можно думать что массивы в си вообще отличные
char pituh[42];
pituh[36]= '0'
блок памяти размером 42*sizeof(char)
> pituh[36]= '0'
36[pituh] = '0'
*(putuh + 36) = '0';
охуенные массивы
а что они еще КАК-ТО себя ведут это не их проблема
протокол "массив" они выполнили
А сколко смыслов имеет длина массива, Сёма?
а разви укозатилли это ничасть стандартнаго поцкаля?
> если это 16ти битный поскаль
Там, емнип, можно было аккуратно собрать указатель из сегмента и оффсета. А не тупо кастить инт в указатель и надеяться, что это прокатит при текущих настройках конпелятора.
>>собрать уко
там было 3 сорта укозателей:
1) near (только оффсет)
2) far (сегмент:оффсет), но он врапился к началу сегмента
3) huge (или как-то так) который имитировал плоское пространство, крутя и сегмент и смещение, но страшно тормозил потому что его нельзя было просто увеличить
В трубопаскале до 4-й версии все указатели были near, ибо модель tiny. В следующих трубопаскалях добавили far и встроенные функции Seg, Ofs и Ptr, чтобы разбирать указатели на части и собирать. Кастовать far в longint было можно, но это не имело смысла, ведь получался не линейный адрес, а ерунда. Линейный адрес (если он вдруг требовался) получали сами (в защищённом режиме его вообще можно было получить только через API).
Арифметика указателей не использовалась, потому что в любом паскале было принято использовать тайпдефы. Безликий указатель типа pointer можно было кастовать в указатель на что угодно.
А, да, была арифметика в виде функций Inc, Dec, Succ, Pred, с помощью которых можно было получить указатель на следующий или предыдущий элемент массива (если указатель типизированный) или тупо уменьшить/увеличить на единицу.
- это пиздец. Как это читается вообще? pbytearray стал функцией, принял pointer и потом хитрым образом разыменовался?
Похоже, я знаю, чем вдохновлялись ребята, которые родили такое http://fuckingblocksyntax.com/
В сишке есть что-то похожее, но там скобок больше: Или даже так:
А в крестах к этому добавились static_cast<>, dynamic_cast<>, const_cast<>, reinterpret_cast<>.
Кстати, а что будет, если потом p прикастовать к другому типу? Мусор или какой-нибудь поскакалевский bad_access?
В некоторых случаях компилятор выбрасывает ошибку (если есть возможность проверить размер и размер не совпадает).
ios/macosник detected.
EXC_BAD_ACCESS это обращение по невалидному адресу памяти. Будет оно у тебя или нет, зависит от того получатся-ли у тебя кривые указатели после твоего каста или нет
https://youtu.be/6kQg4xawo4w?t=211
Это гамма спектрометр EDXRF. Посмотри внимательно на кнопочки и догадайся, на чём написана его оболочка.
https://sourceforge.net/p/owlnext/wiki/Replacing_usage_of_BWCC/
зы: на самом деле ты прав, конечно. 80% вероятность что это дельфи
Какой там был интерфейс? Обычные функции с PASCAL колконвешнеш? Или там были типа-классы с манглеными именами?
В 32-битной bwcc32.dll (барабанная дробь) коллконвеншен cdecl, как в Win32 и... все названия функций слово в слово, как в 16-битной dll.
Пример из "bwcc.h":
Надеюсь, суть ясна. Эти библиотеки можно дёргать из чего угодно, хоть из скрипта напитоне.
?
Макрос PASCAL, кстати, определён как __pascal только в Win16, для остальных систем его определяют как __stdcall или как пустую строку (чтобы можно было старый код портировать по-тупому).
>>FAR
Я уже забыл что такое дальний применительно к кол конвеншену в протектеде.
Это значит что кол у нас в другой сегмент может быть?
Теоретически FAR может применяться и в 32-битных моделях с PAE (у Watcom C/C++ даже есть возможность генерации такого кода, если указать модель памяти не flat, а какую-нибудь другую), но какими программами это использовалось в реальности, я не в курсе.
ftp://ftp.ingv.it/pub/giuseppe.tutone/bc45/SOURCE/OWL/APPLICAT.CPP
Кстати, OWL252F.DLL — это уже библиотека с замангленными именами. Её уже не так просто подключить, как bwcc.
https://sourceforge.net/projects/owlnext/
Столько всего было понаписано в конце 90-х на этом.. У меня, например, была карта города с такими вот кнопочками)
дельфи был де-факто конечно для винразработки
Подозреваю, что на практике на такое способен только кто-нибудь из завсегдатаев ГК, да и то на спор, а не в серьёзном проекте.
Обычно всё же для UI берут „искоробочные“ средства, если только не пишут какой-нибудь Winamp с 9000 сменных шкурок или что-нибудь гипермультиплатформенное.
А винамперы берут голый GDI (или даже DirectX) и рисуют там на канвасах
ААААА:
s/cdll/windll/
> s/
какой багор )))
за попробую с нотивным виндовым messagebox
йобушки воробушки, иправда
.
Интересно, сработает-ли MessageBoxW (юникодная версия) если сделать u'' ?
Значит, для большинства библиотек нужно использовать ctypes.windll, а ctypes.cdll использовать только для MSVCRT и подобных с сишной конвенцией.
фиксд
Въебал минус ублюдку.
Значит, для большинства библиотек нужно использовать ctypes.windll, а ctypes.cdll использовать только для MSVCRT и подобных с сишной конвенцией.
ctypes.windll.LoadLibrary('user32.dll')
Забавно что и cdll сработало, хотя и ругнулось конечно
ValueError: Procedure called with not enough arguments (16 bytes missing) or wrong calling convention
Понятия не имею кто такой SoftModalMessageBox, но думаю что он там event loop крутит (ну и блочнулся на WaitMessage)