Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
// https://github.com/WebKit/WebKit/blob/31b77296cf6d85c40313812d9f65a003cf41f440/Source/WebCore/page/Quirks.cpp#L330
bool Quirks::isGoogleMaps() const
{
auto& url = m_document->topDocument().url();
return topPrivatelyControlledDomain(url.host().toString()).startsWith("google.") && url.path().startsWithIgnoringASCIICase("/maps/");
}
bool Quirks::shouldDispatchSimulatedMouseEvents() const
{
if (RuntimeEnabledFeatures::sharedFeatures().mouseEventsSimulationEnabled())
return true;
if (!needsQuirks())
return false;
auto doShouldDispatchChecks = [this] () -> bool {
auto* loader = m_document->loader();
if (!loader || loader->simulatedMouseEventsDispatchPolicy() != SimulatedMouseEventsDispatchPolicy::Allow)
return false;
if (isAmazon())
return true;
if (isGoogleMaps())
return true;
auto& url = m_document->topDocument().url();
auto host = url.host().convertToASCIILowercase();
if (host == "wix.com" || host.endsWith(".wix.com")) {
// Disable simulated mouse dispatching for template selection.
return !url.path().startsWithIgnoringASCIICase("/website/templates/");
}
if ((host == "desmos.com" || host.endsWith(".desmos.com")) && url.path().startsWithIgnoringASCIICase("/calculator/"))
return true;
if (host == "figma.com" || host.endsWith(".figma.com"))
return true;
if (host == "trello.com" || host.endsWith(".trello.com"))
return true;
if (host == "airtable.com" || host.endsWith(".airtable.com"))
return true;
if (host == "msn.com" || host.endsWith(".msn.com"))
return true;
if (host == "flipkart.com" || host.endsWith(".flipkart.com"))
return true;
if (host == "iqiyi.com" || host.endsWith(".iqiyi.com"))
return true;
if (host == "trailers.apple.com")
return true;
if (host == "soundcloud.com")
return true;
if (host == "naver.com")
return true;
if (host == "nba.com" || host.endsWith(".nba.com"))
return true;
if (host.endsWith(".naver.com")) {
// Disable the quirk for tv.naver.com subdomain to be able to simulate hover on videos.
if (host == "tv.naver.com")
return false;
// Disable the quirk for mail.naver.com subdomain to be able to tap on mail subjects.
if (host == "mail.naver.com")
return false;
// Disable the quirk on the mobile site.
// FIXME: Maybe this quirk should be disabled for "m." subdomains on all sites? These are generally mobile sites that don't need mouse events.
if (host == "m.naver.com")
return false;
return true;
}
return false;
};
if (!m_shouldDispatchSimulatedMouseEventsQuirk)
m_shouldDispatchSimulatedMouseEventsQuirk = doShouldDispatchChecks();
return *m_shouldDispatchSimulatedMouseEventsQuirk;
}
Дааа блядь, давайте в движке браузера захардкодим какие-то говнодомены, что типа вот для них какая-то там блядь симуляция событий мыши работала каким-то таким образом. Охуенно!
У Оперы это говно хотя бы было в обновляемом browser.js, а тут в нативный код захардкодили. А завтра эти домены сдохнут, и всё перекомпилировать надо будет?
Гуглобляди соснули! Я никогда даже хромиум не юзаю, не то что хром. Эта питушатня знаменита ещё тем, что отправляет данные про всякое тоже только определённым захардкоженным сайтам в специально отведенных для этого заголовках которых нет в стандарте, и в основном это поддомены гугла. Делает она это и со всеми галочками сесурити, и в приватном режиме. Ну, и учитывая способ встраивания гугл рекламы, аналитики и капчи, можете себе представить какую новую нефть качает корпорация добра. Я в жопу ебал мать каждого сотрудника гугл кроме романа кашицина.
Я в общем и целом сказал, как про типажи. Есть люди, к которым не прилипает и которые действительно для жизненного опыта могут пощупать и такое, не став говном. Но это редкость и большой талант.
Почему ты сравшиваешь с говном любого рядового сотрудника гугла?
Ему что сказали, то он и делает. Или зашкварно идти в гугл только потому, что они собирают бигдату и качают нефть, а не потому, что пишут говнокод?
Потому что я идеалист, и явно не капиталистического толка. У нас при капитализме как было: черпак сам живёт, и другим не мешает жить. Ну всё. А должно как быть. Служишь корпорациям — по дыхалке получаешь. В гугле работаешь — вообще, блять, убью, нахуй.
Ну мать сыра на вкус как^H^H^H^H^H^H^H^H^H^H земля советует мне быть анархистом, у нас здеся всё-таки родина Бакунина.
Но я искусствоцентричен, и все измышления на этот счет, которые могут звучать категорически (aka взять всё и поделить), касаются в моем случае в основном культурных явлений. В пизду буржуазное искусство! на хую я видал индустрии (спотифай, оскар, грэмми, тренды ютуба). Капитал имеет неудержимую тенденцию впитывать, поглощать, скупать, возглавлять и порнографизировать то, что в какой-то момент времени называется "контркультурой", т.н. андеграунд и т.н. авангард во всех их проявлениях, ну и вот на мой взгляд задача приличного человека не сокрушаться от этого впитывания, но всегда оставаться на переднем крае, в бета-версии жизни во всех её проявлениях. Повторяю, как говорил Мераб Мамардашвили, человек есть стремление быть человеком.
Близкий мне авангард — духовический: юродство, пахом, московский концептуализм и акционизм, мамонов, лаэртский, летов, глухов, мавроматти и всё такое.
cancel culture — говно, педерасня — говно, феминизм — говно, проект западного человека — это проект раба с десятью видами жевачки, негры — говно. Но это только в духовных пространствах проявляется, я ж не идиот.
Хром стал стандартом де факто и ведёт себя как когда-то интернет эксплорер. Чо, стандарт? Не, мы фичу придумали, у нас будут мигать буквы по високосным годам
Кстати, нет. Полный HTML 3.2 поддерживался эзотерическими браузерами вроде HotJava, а остальные поддерживали только подмножество элементов.
В HTML 3.2 были формулы (потом их вынесли в отдельный язык MathML) и векторная графика (потом её вынесли в отдельный язык SVG). И ещё много всякой всячины было, которая не вошла в HTML4.
К слову, когда придумывали HTML3, ещё не знали, что будет CSS, поэтому в нём почти не было сёмантических элементов, зато было много влияющих на представление, типа <FONT> и <CENTER>, а также много визуальных атрибутов типа bgcolor, background, vlink, alink, align.
Стало очень весело в HTML4, когда атрибуты из HTML 3.2 сохранили, а к ним добавили CSS, и CSS и эти атрибуты стали конкурировать, приводя к разным результатам в разных браузерах.
С дивами вообще смешно вышло, и мы это обсуждали. Вёрстку на дивах ламеры называют семантической, хотя див — несемантический элемент. Семантические — это article, section, header, footer, nav, menu из HTML5, которыми никто не умеет пользоваться.
Особенно смешно, когда используют twitter bootstrap, и у тебя вместо семантического class="comment" будет ужасный class="color-black height-12px align-left" (я условно, я не помню классов бутстрапа).
Или когда таблицы чисел (реально таблицы!) верстают не <table>, потому что им сказали, что табличная вёрстка устарела, а ебутся с display:block, display:inline, display:inline-block, с position, с выравниванием... Или не ебутся, а делают display:table-cell (гы!)
По-хорошему, в тех случаях, когда реально нужны дивы (когда блоки могут свободно перетекать на следующую строчку), нужно делать flexbox, но в статьях 2008-го года о flexbox ни слова.
я даже не знаю, кто тут хуже, разрабы хуюгл хрома, которые всеми силами пытаются заставить говносайты работать, или разрабы этих самых говносайтов, которые настолько долбоебы, что чтобы их долбоебизм исправить надо патчить браузер
https://bug-220581-attachments.webkit.org/attachment.cgi?id=417553&action=diff&format=raw&headers=1
+
+ Facebook pauses video in PiP during scroll
+ https://bugs.webkit.org/show_bug.cgi?id=220581
+ <rdar://67273166>
+
+ Reviewed by NOBODY (OOPS!).
+
+ Add a Quirk which blocks Facebook from pausing videos in Picture-in-Picture mode without that
+ pause() occurring during a User Gesture. This blocks Facebook from pausing a PiP'd video when
+ the <video> element hosting that video scrolls out of the viewport, without blocking Facebook's
+ own custom pause control from working correctly.
+
+ * html/MediaElementSession.cpp:
+ (WebCore::MediaElementSession::playbackPermitted const):
+ * page/Quirks.cpp:
+ (WebCore::Quirks::requiresUserGestureToPauseInPictureInPicture const):
+ * page/Quirks.h:
+
Так что вот такая хуйня получается. Не только всяким фронт-энд питузам приходится адаптировать свою говноверстку под всякие говнобраузеры, но и говнобраузеры у себя в коде содержат говнокостыли для всяких говносайтов
А прикиньте как было б охуенно, если б в компиляторы крестоговна такую хуйню добавили, что если ими компилить какую-то определенную хуйню (чтоб еще это какими-то говноэвристиками детектить, типа агааа кажется это мы компилируем вот этот проект) то вот такое-то UB становится не UB а вполне себе понятно чем, а вот тут мы специально отходим от стандарта, иначе это говно не собирается. Вот это багор так багор!
В гцц вряд ли, они скорее нассут на неудачника, чем будут костыль втыкать или оптимизацию менее агрессивной делать. Даже Линус их не убедил в своё время.
> MSVC allows many invalid constructs in class templates that Clang has historically rejected. In order to parse widely distributed headers for libraries such as the Active Template Library (ATL) and Windows Runtime Library (WRL), some template rules have been relaxed or extended in Clang on Windows.
p.s. Говно снова всплыло? В связи с потеплением, или есть другая, более достойная причина? Скажи, не стыдно ли тебе, за непацанское, скажем так, поведение?
p.s. Говно снова всплыло? В связи с потеплением, или есть другая, более достойная причина? Скажи, не стыдно ли тебе, за непацанское, скажем так, поведение?
Так вышло, что можно было подмапать страничку на нулевой виртуальный адрес (бага).
Кто-то криво написал драйвер и попытался прочитать поле до проверки (другая бага).
Это безобидное кеширование поля не упало за счёт подмапанной странички. Но благодаря ему гцц выкинул все последующие проверки. А за ними были косвенные вызовы и т.п. Которыми и воспользовались для повышения привилегий.
понятно. Я бы на месте интела такое запретил, но теперь уже поздно.
Физическая память должна конечно с ноля адресовываца, а виртуальная это почти наверняка лажа.
А на месте операционок я запретил бы мапить туда, и.. минуточку:
mmap_min_addr
Ну а в целом, NULL -- это просто такое особое значение, которым мы помечаем "пустые" указатели. Чтобы делать опциональные объекты или указывать на конец списка, к примеру. Можно ли его разадресовать или нет, в общем-то, тут совершенно неважно. В кольцевом списке, к примеру, в качестве такого значения часто юзается &head, а не NULL.
Есть много других адресов, которые мне нельзя или бессмысленно разадресовывать, казалось бы, зачем отдельное правило для NULL?
А всё просто, UB про разадресацию NULL'а добавлен в стандарт исключительно для того, чтобы убирать проверки на него во время глубокого инлайна.
А всё просто. С точки зрения проца (а не стандарта) сам NULL редко кто разыменовывает. Чаще разыменовывают какие-то поля, которые могут иметь ненулевой оффсет. Поэтому чтобы стало безопаснее, надо защищать целую область, а не один конкретный адрес. И размер этой области определяется эмпирически, т.е. от балды.
Поэтому разрабы проца сами в это говно не лезут, а просто дают какой-то способ создать эту защитную зону. Размапать странички, к примеру, или запретить к ним доступ через MPU.
>MPU
извини, я не поинтеловски не разговариваю) Хотя в режиме сегментации наверное можно говорить про MPU.
Проще всего наверное запретить что либо мапить в нижнюю область пожертвовав парой мегабайт. Тогда попытка чото там разыменовать всегда будет приводить к фолту
Х.з., по-моему проц не должен лезть во всё это. Его задача -- дать разрабам оси и конпеляторов инструменты, которыми они смогут выразить нужные им концепции. А дальше пусть сами ебутся.
0 ведь не единственная защитная зона. Они есть ещё вокруг стеков и т.п.
>по-моему проц не должен лезть во всё это.
ну изначально интел очень даже везде лез, предлагая даже хардварно таски переключать, и каждой таске по куче своих сегментов. Но потом забил, да
Ага, именно поэтому в винде есть костыль chkstk, который в функциях где дохрена локалок аккуратно тыкает палчокой в каждую страницу стека по порядку. Иначе вместо роста стека получится сегфолт.
Там первая размапанная страничка наращивает стек при обращении, а вторая (и последующие?) просто крашат прогу.
Борманд рассказывал про Verilog и VHDL, в которых кроме 0 и 1 бывает высокоимпедансное состояние выхода (выход оторван, обозначается Z) и зачем-то ещё «не знаю» (обозначается X).
'U': uninitialized. (signal hasn't been set yet)
'X': unknown (impossible to determine this value/result)
'0': logic 0
'1': logic 1
'Z': High Impedance (signal source when that source makes no effective contribution to the resolved value of the signal)
'W': Weak unknown signal (can't tell if it should be 0 or 1)
'L': Weak signal that should probably go to 0
'H': Weak signal that should probably go to 1
'-': Don't care
это не более чем удобная тебе рационализация. все люди в конечном итоге работают на какой-то режим, не у всех при этом стокгольмский синдром вырабатывается
Помните, в 1980-х тян делали химическую завивку? Так вот составов для химзавивки бывает два типа:
1. На основе тиогликолевой кислоты (она же меркаптоуксусная).
2. «Биозавивка» на основе цистеамина (он же меркаптамин). Цистеамин никакого отношения к аминокислоте цистеину не имеет, что бы не пиздели маркетологи о натуральности цистеамина.
В итоге тян получала шевелюру с ароматом говна. И за 30 с лишним лет ничего не придумали, составы для завивки всё на той же базе.
Hi, so I encounter quite often this word on video game's chat, I know it's an insult but I just wonder if it's a rude one or just translate as "idiots", "fools". For exemple, I know "мудак/мудаки" is kind of rude and mean "asshole" but is "долбаеб" ruder or softer ?
Honestly I think it's even the insult word I encounter the most ( not toward me ) overall, so I am really curious about how rude it is. :p
Ему что сказали, то он и делает. Или зашкварно идти в гугл только потому, что они собирают бигдату и качают нефть, а не потому, что пишут говнокод?
Мысль ясна?
Ну мать сыра на вкус как^H^H^H^H^H^H^H^H^H^H земля советует мне быть анархистом, у нас здеся всё-таки родина Бакунина.
Но я искусствоцентричен, и все измышления на этот счет, которые могут звучать категорически (aka взять всё и поделить), касаются в моем случае в основном культурных явлений. В пизду буржуазное искусство! на хую я видал индустрии (спотифай, оскар, грэмми, тренды ютуба). Капитал имеет неудержимую тенденцию впитывать, поглощать, скупать, возглавлять и порнографизировать то, что в какой-то момент времени называется "контркультурой", т.н. андеграунд и т.н. авангард во всех их проявлениях, ну и вот на мой взгляд задача приличного человека не сокрушаться от этого впитывания, но всегда оставаться на переднем крае, в бета-версии жизни во всех её проявлениях. Повторяю, как говорил Мераб Мамардашвили, человек есть стремление быть человеком.
Близкий мне авангард — духовический: юродство, пахом, московский концептуализм и акционизм, мамонов, лаэртский, летов, глухов, мавроматти и всё такое.
cancel culture — говно, педерасня — говно, феминизм — говно, проект западного человека — это проект раба с десятью видами жевачки, негры — говно. Но это только в духовных пространствах проявляется, я ж не идиот.
Таким умникам нужно давать пиздюлей.
когда ты старый кусок дефакто, твоя задача сделаь так, чтобы в тебе работали ВСЕ
Если кто-то не работает -- этотвоя проблема
вот и фиксят, как могут
\\u\w\u\\
https://www.gearfuse.com/wp-content/uploads/2010/02/gspotmouse1.jpg
я тут сижу спиной к коридору
- может, у него было благословенное собеседование
> в корридорном углу
- это там, где коррида проводится?
Программисту не по понятиям заниматься чем-то кроме программирования, для этого есть каста менеджеров.
> > в корридорном углу
Я имел в виду в «колидорном», конечно же, просто опечатался!
в таких местах всё равно, куда спиной сидеть - везде один длинный калидор
не благодари
Фаерфокс соответствует стандартам, но тормозит.
Хром быстрее, но не всегда соответствует стандартам (причём то, что работало в одной версии, может сломаться в следующей).
Опера на Престо была быстрой и соответствовала стандартам, но её перестали обновлять, так что её стандарты устарели на десяток лет.
Они специально или нарочно такую хуйню творят?
http://gondor.apana.org.au/~herbert/dash/
В HTML 3.2 были формулы (потом их вынесли в отдельный язык MathML) и векторная графика (потом её вынесли в отдельный язык SVG). И ещё много всякой всячины было, которая не вошла в HTML4.
ладно я пошутил я в html 4.0 пишу
https://www.w3.org/MarkUp/html3/Contents.html
Стало очень весело в HTML4, когда атрибуты из HTML 3.2 сохранили, а к ним добавили CSS, и CSS и эти атрибуты стали конкурировать, приводя к разным результатам в разных браузерах.
а если так
то уже современная верстка
Особенно смешно, когда используют twitter bootstrap, и у тебя вместо семантического class="comment" будет ужасный class="color-black height-12px align-left" (я условно, я не помню классов бутстрапа).
Или когда таблицы чисел (реально таблицы!) верстают не <table>, потому что им сказали, что табличная вёрстка устарела, а ебутся с display:block, display:inline, display:inline-block, с position, с выравниванием... Или не ебутся, а делают display:table-cell (гы!)
По-хорошему, в тех случаях, когда реально нужны дивы (когда блоки могут свободно перетекать на следующую строчку), нужно делать flexbox, но в статьях 2008-го года о flexbox ни слова.
Там кстати еще есть хуйня, которая явно из-за багов в самом браузере. В том же файле
Но есть и явные костыли для всяких популярных сайтов, типа чтоб вот эта конкретная хуйня тут работала особым образом
https://bugs.webkit.org/show_bug.cgi?id=220581
В джаваскрипте целые числа хранятся педерастически, потому что сам язык был разработан педерастами и для передерастов.
Авторы ARM сделали для этого целую инструкцию с поэтичным названием FJCVTZS
https://stackoverflow.com/questions/50966676/why-do-arm-chips-have-an-instruction-with-javascript-in-the-name-fjcvtzs
Дроби говно
Откуда они знают число Тараса???
лол
>mutable Optional<bool>
блядь ну и говно
В гцц вряд ли, они скорее нассут на неудачника, чем будут костыль втыкать или оптимизацию менее агрессивной делать. Даже Линус их не убедил в своё время.
https://stackoverflow.com/a/56554568
ну и в Clang специально какие-то костыли добавляли, чтобы им вижуалстудиевский диалект C++ компилировать.
https://clang.llvm.org/docs/MSVCCompatibility.html
> MSVC allows many invalid constructs in class templates that Clang has historically rejected. In order to parse widely distributed headers for libraries such as the Active Template Library (ATL) and Windows Runtime Library (WRL), some template rules have been relaxed or extended in Clang on Windows.
Хотя вот поддержка ATL -- уже рядом, костыль ради конкретной либы.
p.s. Говно снова всплыло? В связи с потеплением, или есть другая, более достойная причина? Скажи, не стыдно ли тебе, за непацанское, скажем так, поведение?
p.s. Говно снова всплыло? В связи с потеплением, или есть другая, более достойная причина? Скажи, не стыдно ли тебе, за непацанское, скажем так, поведение?
ты про memmove?:)
по идее же если я уже разыменовал укозатель, а брат всё еще жив, то там стопудово не нул
какие тут могут быть сомнения?
Я могу представить архитектуру, где разыменовывание нула (не ноля, лол, а именно NULL) допустимо, но в сишке то всё равно будет UB
Кто-то криво написал драйвер и попытался прочитать поле до проверки (другая бага).
Это безобидное кеширование поля не упало за счёт подмапанной странички. Но благодаря ему гцц выкинул все последующие проверки. А за ними были косвенные вызовы и т.п. Которыми и воспользовались для повышения привилегий.
ARM'ы вон вообще грузятся с нуля.
Физическая память должна конечно с ноля адресовываца, а виртуальная это почти наверняка лажа.
А на месте операционок я запретил бы мапить туда, и.. минуточку:
mmap_min_addr
Я кстати нашел багор
https://bugzilla.kernel.org/show_bug.cgi?id=14416
Я только что проверил: если я разыменую питуха, а затем проверю его на null, то при -O3 (ну вероятно и при O2) проверка будет выкинута.
clang что-то там вяло помямлил про поссибл нулл, а gcc вообще промолчал даже со стеной
Почему нельзя такие штукенции писать в ворнинги?
Типа: the following condition is always "true"
питух бы быстрее нашел проблему
Это конесно не всенла проблема, я могу проверять какой-то ключ компиляции, но писать про это нужно
А потому что 99% таких ситуаций возникает как последствия инлайна, а не в пределах одной функции.
Ну т.е. есть функция, которая не проверяет указатель на NULL. В общем-то и не обязана, конпелятор её контракт не знает.
Она зовёт другие функции, в которых есть проверка на NULL. В общем-то тоже ничего плохого.
И тут мы начинаем их инлайнить в первую функцию и видим, что проверки то лишние (согласно понятию NULL в стандарте). Можно бы и оптимизнуть.
Жопа в том, что оптимизатору очень сложно отличить такую ситуацию от очевидного бага, он же не знает твои контракты. Поэтому он обычно не ворнингует.
чувак, в результате оптимизации мне удалось доказать, что вот этот вот код нахуй не нужен! Ща я его выкину!
Дык удалось доказать в данном конкретном случае, а про другие 100500 применений он ничего не знает.
Это мусор, а не предупреждение, его просто отключат и забудут. Мусорные ворнинги -- это очень плохо.
Есть много других адресов, которые мне нельзя или бессмысленно разадресовывать, казалось бы, зачем отдельное правило для NULL?
А всё просто, UB про разадресацию NULL'а добавлен в стандарт исключительно для того, чтобы убирать проверки на него во время глубокого инлайна.
Почему не помочь компилтору, и не сделать эту штуку железной?
Сразу станет безопаснее, не?
Поэтому разрабы проца сами в это говно не лезут, а просто дают какой-то способ создать эту защитную зону. Размапать странички, к примеру, или запретить к ним доступ через MPU.
>MPU
извини, я не поинтеловски не разговариваю) Хотя в режиме сегментации наверное можно говорить про MPU.
Проще всего наверное запретить что либо мапить в нижнюю область пожертвовав парой мегабайт. Тогда попытка чото там разыменовать всегда будет приводить к фолту
0 ведь не единственная защитная зона. Они есть ещё вокруг стеков и т.п.
>по-моему проц не должен лезть во всё это.
ну изначально интел очень даже везде лез, предлагая даже хардварно таски переключать, и каждой таске по куче своих сегментов. Но потом забил, да
Ага, именно поэтому в винде есть костыль chkstk, который в функциях где дохрена локалок аккуратно тыкает палчокой в каждую страницу стека по порядку. Иначе вместо роста стека получится сегфолт.
Там первая размапанная страничка наращивает стек при обращении, а вторая (и последующие?) просто крашат прогу.
Я за с89: там размер стека можно было знать заранее, и ровно столько для него выделить места, сколько нужно.
все тян сидят обычно под ником "сукаблядь" на форуме "говнокод.ру" и пиздят с двачерами
а где им еще быть?
ихнее место только здеся
https://blog.usejournal.com/how-i-stole-the-data-in-millions-of-peoples-google-accounts-aa1b72dcc075
Разница между мартышкой гоминидом примерно такая же, как между программистом на PHP и на любом другом языке.
Возможно, мне следует поменять аватар или сменить ник
Wir werden angegriffen! Alle posten besetzen. Ich wederchole: wir werden angegriffen!
там вся эта параша ещё завёрнута в #if ENABLE(TOUCH_EVENTS), так что оно похоже ещё и рассчитано в целом на мобайл (зачем? зачем?)
плюс видимо это ещё как-то отключается?
Мясо длинной свиньи?
Минимально адресумемая единица это байт, а в нем сидит восемь булов.
> в нем сидит восемь булов
– бибулярочка )))
Это газлайтинг
Светит этилен, ацетилен, водород... и газолин.
А меркаптан это ароматизатор "навоз".
Помните, в 1980-х тян делали химическую завивку? Так вот составов для химзавивки бывает два типа:
1. На основе тиогликолевой кислоты (она же меркаптоуксусная).
2. «Биозавивка» на основе цистеамина (он же меркаптамин). Цистеамин никакого отношения к аминокислоте цистеину не имеет, что бы не пиздели маркетологи о натуральности цистеамина.
В итоге тян получала шевелюру с ароматом говна. И за 30 с лишним лет ничего не придумали, составы для завивки всё на той же базе.
попрошу без оскорблений!
Hi, so I encounter quite often this word on video game's chat, I know it's an insult but I just wonder if it's a rude one or just translate as "idiots", "fools". For exemple, I know "мудак/мудаки" is kind of rude and mean "asshole" but is "долбаеб" ruder or softer ?
Honestly I think it's even the insult word I encounter the most ( not toward me ) overall, so I am really curious about how rude it is. :p
https://pbs.twimg.com/media/GL8fAdRW4AAYpAm?format=jpg&name=medium
Т.е. если Питер Паркер создаст URL https://google.govnokod.ru/maps/, то к нему применится патч, как к гуглокартам?