Опубликованы корректирующие обновления стабильной ветки DNS-сервера BIND 9.16.18 и находящейся в разработке экспериментальной ветки 9.17.15, в которых устранена серьёзная ошибка, появившаяся в выпусках BIND 9.16.17 и 9.17.14, опубликованных на прошлой неделе (на следующий день после данных релизов разработчики предупредили о наличии проблемы и рекомендовали не устанавливать версии 9.16.17 и 9.17.14)...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=55373
> был пропущен символ "w"абсолютно не критично для всеобъемлющего World Wide Web пространства (:
Согласен, это же так удобнее использовать:
\000\000\000\000.\000\000\000\000.\000\000.
Какое разнообразие, просто диву дивишься)
\0 00 \0 00 \0 00 \0 00.\0 00 \00 0 \0 00 \0 00.\0 00 \0 00.
Главное - правильно поставить пробелы и замысел заговорщиков станет явью!
Этот домен компилируется в brainfuck!
Привет от будущего IPv6
> был пропущен символ "w"В английском алфавите еще осталось 25 букв... нежто не хватит?
Ну b-то всяко не пропустит какой-нить особо одарённый n.
Там всего 24 https://ang.wikipedia.org/wiki/Ænglisc_spræc
Как неполиткорректно, эта W неспроста, надо на разработчиков в суд подать, и обязать, чтобы не меньше 50% были 000omen.
Очевидно, что это только начало.
Дальше будут буквы [w,] h, i, t, e.
Нельзя говорить 000omаn, надо говорить feminoamerican.
Я не программист, простой gentoo-юзер. Но вот когда тут новости читаю про такие ошибки, создаётся ощущение, что качество работы программистов в последнее время рухнуло...
Не качество работы программистов рухнуло. Программисты старой закалки никуда не делись. Да и что греха таить, реально заинтересованная молодежь есть, рано или поздно (хотя да, стоит признать, что уже скорее поздно и не в том проценте) доходя до их кондиций. Если не застрянет на bullshit-buzzword-языках, вроде хачкелей-растов-{вставь-то-что-там-сейчас-модно-на-реддите-и-форчане-и-поэтому-форсится-в-инфополе-и-тянется-оттуда-на-опеннет-и-в-рунет} и nonKISS-концепциях, а потом не отсеется фильтрами fast web money и "работа программиста на картинке/работа программиста в реальности", то вполне годные спецы выходят.Такие ошибки от количества wannabe-программистов (нет, не новичков, не чайников - те как раз сами сначала учатся, читают и принимают ревью, а именно тех, кого в свое время называли ламерами), которых уже нельзя просто так взять и погнать в ридонли, луркать и учится, а их пуллы с наивным лобовым кодом - просто взять и завернуть после ревью с формулировкой "этот код несет в себе больше проблем, чем решает". СоС мешает. И "активизм новичка", который будет полыхать от любого, пусть даже самого обоснованного решения старшего коллеги и поэтому - искать какую угодно причину, лишь бы "перебороть врага". Ну как все эти псевдоученые, с невалидными дизайнами экспериментов, у которых везде заговор и которым обычные ученые - злейшие враги. Или альтернативно одаренные врачеватели, громко хающие доказательную медицину, не принимающую их торсионные поля и заряженную воду. Отсюда растут и травли, и "а я негр-трансвестит, ты неправильно указал местоимение для моей небинарной гендерной идентичности в личке, травим его, сограждане, ату его! Отмена!". Этим кодерам важна именно их правота, даже если наляпали пуллов с такими вот ошибками в таблицах
Нет, есть ненулевая вероятность, что это просто описка, но её вероятность...мала, скажем так.
много букав, оные складываются в слова, а слова в предложения, потом и в абзацы, но смысла в вами написанном ровно нуль, какая-то отсебятина, претендующая на лавры мнимой истины ИЧСХ эти лавры успешно пожинающая
Не понял, но осуждаю?
Ну Вы и впрямь всё в кучу свалили -- так и не понял, чем Вас хаскель покусал (меня вот pandoc'ом и крайней нетривиальностью бутстрапа на новых архитектурах).Порой помогает сперва выдать тезисы, а потом уж разобрать, чтоб луркатели вроде автора #17 имели хоть какую-то возможность тезисы-то осилить.
Скажем, так: "кого всё унижает, тот тянет всех на дно".
Твое мнение тут не особо полезно. Важно мнение тех кто видел десятилетиями развитие современной школы написания кода. Вот разработчик DragonflyBSD выдал мнение что практически никто не осилит те подходы и как они сложились в современном программировании. А следовать тупо приемам современных программистов будут только болваны типа китайцев, которые все только копируют. Без понимания применять современные методы никто не будет. Это не значит что качество кода упало. Скорее те кто в курсе просто не делятся полной верссией событий чтобы было понятно почему так и какие есть варианты. Люди не рождаются с навыком идеального программирования.
>Вот разработчик DragonflyBSD выдал мнение что практически никто не осилит те подходы и как они сложились в современном программированииА ссылочку можно? Почитал бы.
Вот откуда столько великовозрастных дураков берется, не понимаю.
Пример: "Модной и молодежной" теме формальной верификации программ 40 лет в обед, а то и больше. :J Давно ли писали контракты для Си кода на ACSL и засовывали их в решатель через какую-нибудь Frama-C? Хайповать на этой теме стали совсем недавно, и то не от хорошей жизни (оно нужно например для всякого mission-critical, для компиляторов, для всяких DSL и т.д. и т.п.), и в большинстве своем народ на эту тему может только страдать на форумах. А когда речь заходит до написания тактик доказательств, сложной математики на какой-нибудь Агде, то "ой всё, пойду играть указателями на Сишечке, я же ТруЪ программист, отстаньте со своими смузихлебными темами".Все ваши великовозрастные погромисты наделали в свое время кучу ошибок, чего только стоит концепция "все есть файл", в итоге получив ад в ioctl.
Но нет, приходит аноним с Опеннета и заумным тоном говорит KISS. KISS your EMACS foot pedal!
настоящие погромисты!
Для bind "последние времена" настали ровно в тот несчастливый день 99го года,когда они заявили что поддерживать версию 4. невозможно, но щас-щас-щас вот эти summer students за зачёт перепишут-перепишут все с нуля и как нада. С тех пор примерно каждое лето очередные переписывают, ведь разобраться в коде предыдущих им не по способностям. Зато пихон уже требуется. хруст на подходе. зависимости от libxml2 и еще кучи мусора - историческая ценность, не удалять!Проблема ВСЕХ софтин от ISC примерно одна - нехрен платить деньги, есть же бесплатные рабы!
При этом каким-то волшебным образом каждый раз оказывается, что любые шва6одкиные альтернативы либо вообще "всем хуже", либо затыкают какую-то специфичную проблему своих авторов и для всех остальных неудобны.Ну а ms - корпорация, зла. Ее продукты мы использовать не будем, патамушта.
Чё-то по морде шибко великовозрастный студент выходит. (ударение по вкусу)
"Он ни на каком инструменте не играет, он руководитель, как Вы!"
В эмпирической зависимости: "объём работы"/"количество программистов" = "количество багов в коде", переменная "количество программистов" (предположим, для упрощения, что все пишут хороший код) растёт медленно, переменная "объём работы" (размер кода и кол-во проектов) растёт экспоненциально. Можно лего догадываться, куда стремиться индустрия в результате.
> в таблицах сопоставления символов в нижнем и верхнем регистре (maptoupper и maptolower)Пораженные NIH-синдромом должны страдать.
Любители BINDырени тоже.
Зато на 0.001мс (0.0001%) быстрее исполняется, чем со случаем динамически линкованной С-либы!
Вы не понимаете, это другое!
Если переписать на lua и запустить с помощью luajit - получим двухкратный прирост производительности! Статья на хабре тому свидетель!
А если на Java? У, аж дух захватывает!
> Пораженные NIH-синдромом должны страдать.А для C есть готовые библиотеки работающие с ascii-char'ами? Работающие не со всякими там utf8, не в зависимости от локали, а просто с ascii-char'ами? C'шная локаль она такая, чем с ней связываться, проще своих костылей напилить, особенно если речь идёт не о том, чтобы использовать локаль себе на пользу, а о том, чтобы избавить код от всех эффектов этой локали.
В libc всякие там toupper и tolower работают по-разному, в зависимости от локали, и совершенно не канают для работы со стандартизованным протоколом. Ну, то есть можно, но для этого надо быть гуру POSIX локалей и особенностей их имплементации на разных системах, которые может быть не во всех нюансах следуют POSIX. Проще повеситься. То есть либо ты будешь с github'а тащить какой-то депенданс в стиле js на 200 строк inline функций, либо ты будешь велосипед вручную вытачивать. Их выбор из этих двух альтернатив вполне естественен.
В заголовке коммита "Optimize...". Впрочем, зачем там таблицы, я так и не понял.
И ты сразу покажеш реальные альтернативы бинду?
Знакомое дело взял чужое и попался , зато радуйся что чуть подправишь свой билд собранный на этой крутой системе и он будет полу нативным , ни один другой дистрибутив такого не даст
Этж какие днищщенские погромизды в наше время лезут куда ни попадя...
always have been!
А это почти во всех отраслях сейчас и страна не важна.
С 2000х вроде началось, когда срослись два тезиса: "softskills может даже и важнее чем профессиональные навыки" + "поверьте в себя, вы все можете".
Причем оба ложные, но так лучше курсы продавать :)
Вот за несколько лет и получили большой процент дятлов, умеющих проходить собеседование на личном обаянии и... и все.
чавойта ложные? Ровно так и есть - эти, с софтскиллс - все могут, достаточно им поверить и убедить поверить менеджмент (что софтскиллс и позволяют легко и просто, это ж и есть умение ездить по ушам).А что качество кода в результате - "такая фигня получается" - ну так сложилось, все уже привыкли.
Других разработчиков уже все равно нет, потому что они в таких коллективах не уживаются.
Другие приходят к нам, например. :}
Меня возьмете? Только.. расскажите в начале как планируется развивать отечественное процессоростроение в строгой инновационной перспективе?
> Меня возьмете?Смотря зачем Вам нужно; но вообще http://basealt.ru/about/vacancies в наличии.
> Только.. расскажите в начале как планируется развивать отечественное
> процессоростроение в строгой инновационной перспективе?Этим уж коллеги занимаются -- с ними тоже могу состыковать, только для ответа по существу лучше бы почтой списаться и понять, о чём именно их сравнивать.
Так-то какие-то планы и на публике есть что у МЦСТ, что у БЭ.
Это круто. У вас есть возможность доказать, что ваш подход лучше ихнего. Давайте не oбocpёмcя, пацаны!
> Это круто. У вас есть возможность доказать, что ваш подход
> лучше ихнего. Давайте не oбocpёмcя, пацаны!(пожимая плечами) Доброе утро, третий десяток лет уже как.
>> Это круто. У вас есть возможность доказать, что ваш подход
>> лучше ихнего. Давайте не oбocpёмcя, пацаны!
> (пожимая плечами) Доброе утро, третий десяток лет уже как.Ну, успехов. Мы продолжаем ждать, когда вам, наконец, удастся реализовать эту возможность.
Угу, виноваты программисты, которые не хотят делать быстро, дешево и одновременно качественно. А не пользователи, которые хотят быстро, дешево и пофиг на качество.Для примера - ведроид покупается? Покупается, да еще как. Дыра на дыре и быстрое превращение в неподдерживаемую тыкву. Но покупается же! А значит какой смысл всяким гуглам делать долго и качественно, если можно наcpать и все радостно купят?
Ну вот точно та же ситуация, буяк-буяк-и-в-продакшен.
зы. хорошо хоть не везде так. но, к сожалению, много где.
> Угу, виноваты программисты, которые не хотят делать быстро, дешево и одновременно качественно. А не пользователи, которые хотят быстро, дешево и пофиг на качество.Интересно, вы случайно или намеренно упустили один момент?... То что между программистами и end user есть одна мааааленькая прокладка, под названием "менеджер". Которая работает на другую ещё более мааленькую прокладку, под названием "акционеры". И темп развития (г*внокода) задают именно эти две прокладки.
А не пользователи, которые якобы что-то там хотят и каким-то магическим образом умудряются подгонять программистов. Последние наоборот, сами жертвы тех же прокладок - когда купленное устройство быстро снимается с поддержки и приходится "хотеть" новое.
> Дыра на дыре и быстрое превращение в неподдерживаемую тыкву.Так это не только к винде относится. Линкс движется туда же.
Ды, делов. Зашёл на \000\000\000.opennet.ru, и порядок.
Погоня за версиями? Почему такая спешка при наличии таких серьезных ошибок?
больше пугает что нет даже простейших тестов
Почему для несуществующего маппинга выводится 000? Почему не ¿!?
ну, например
char toUpper(char c) {
char result = 0;
size_t idx = find(c, upperTable);
if (idx != -1) result = upperTable[idx];
return result;
}
Тогда бы у них наверное вообще строка потом обрезалась бы. Из-за \0
Это сделано в рамках борьбы против 000hite supremacy.
> 000hite supremacy.Из словаря OxfordDictionary (En-En)
Hite
Shere (b.1942), American feminist. She published her research into sex, gender definition, and private life in the groundbreaking work The Hite Report on Female Sexuality (1976), based on the responses of thousands of people to anonymous questionnaires
Вона чё...
0xf0ldd1c7? :)
Вот, писали бы на Rust, такого бы не было.
Там бы бинд просто вываливался в панику, унося весь ресолв в даун?
с тех пор, как удалили мой опрос про стоп-слово, алгоритм очень простой.
1) вижу трэш-коммент про руст|раст|rust
2) жму красный "-"
3) жму "к модератору". коммент разный, например сейчас будет:
"модер проснись, растоманы борзеют."предлагаю всем поступать так же. вся надежда но то,
что модераторам надоест дурная работа и они внедрят стоп-слова.
Поражает то, как такое можно было проглядеть в патче?
Неужели у них никто никак не проверяет новый код и изменения?
Проглядеть то как раз легко, глаза имеют свойство замыливатся особенно на табличных данных.А вот хоть какой-то unit-тест тут скорее всего сработал на ура
В данном случае
static const unsigned char maptolower[256] = {
['A'] = 'a', ['B'] = 'b', ['C'] = 'c', ['D'] = 'd', ['E'] = 'e',
['F'] = 'f', ['G'] = 'g', ['H'] = 'h', ['I'] = 'i', ['J'] = 'j',
['K'] = 'k', ['L'] = 'l', ['M'] = 'm', ['N'] = 'n', ['O'] = 'o',
['P'] = 'p', ['Q'] = 'q', ['R'] = 'r', ['S'] = 's', ['T'] = 't',
['U'] = 'u', ['V'] = 'v', ['X'] = 'x', ['Y'] = 'y', ['Z'] = 'z',
};
https://gitlab.isc.org/isc-projects/bind9/-/commit/9f13e6104...Возможно было подсчитать количество инициализируемых элементов таблицы. Размер 5х5 мог бы смутить.
Но интересно другое:
if (c >= 'A' && c <= 'Z') {
name->ndata[i] = maptolower[c]; // c + ('a' - 'A');
}
Угу. Я тож сначала подумал, что они от ветвления решили избавиться табличкой на 256 элементов. Но ведь нет, на 256 байт таблички они пожидились и условие всё равно нужно.Хрен угадаешь, о чём они думали, когда писали. Может они скопипастили откуда-то код под utf8, а потом выкинули ненужное? С utf8 реально таблички нужны, т.к. все эти этнические алфавиты себя иногда странно ведут при попытке сменить регистр.
> Угу. Я тож сначала подумал, что они от ветвления решили избавиться табличкой
> на 256 элементов. Но ведь нет, на 256 байт таблички они
> пожидились и условие всё равно нужно.Так не пожидились! Я тоже изначально не так понял, поскольку наблюдаемый вариант кажется сюром. Там две таблицы, суммой в 512 байт, из которых используются 2*26.
Вот это в Си инициализирует 0x41-й (в случае исходника в ASCII) элемент значением 'a', а остальные 255 элементов значением 0:
static const unsigned char maptolower[256] = {
['A'] = 'a',
};При выборке значение символа используется как индекс массива, как в команде xlat от x86.
Таблицы могли бы иметь смысл, поскольку раньше детей пугали словами "source character set" и "EBCDIC", но тогда бы в них следовало писать не 'A', а значения из соответствующего раздела OSI/ISO.
> Хрен угадаешь, о чём они думали, когда писали. Может они скопипастили откуда-то
> код под utf8, а потом выкинули ненужное? С utf8 реально таблички
> нужны, т.к. все эти этнические алфавиты себя иногда странно ведут при
> попытке сменить регистр.Не знаю. Признаться, я немного опасаюсь вникать в этот код. Когда-то вывел эмпирическое правило: если нашёл рядом две ошибки, обязательно где-то есть и третья.
if (ISC_LIKELY(CASEFULLYLOWER(header))) {
for (size_t i = 0; i < name->length; i++) {
uint8_t c = name->ndata[i];
if (c >= 'A' && c <= 'Z') {
name->ndata[i] = maptolower[c];
}
}
} else {
for (size_t i = 0; i < name->length; i++) {
uint8_t c = name->ndata[i];if (mask == (1 << 7)) {
bits = header->upper[i / 8];
mask = 1;
} else {
mask <<= 1;
}if (c >= 'a' && c <= 'z') {
if ((bits & mask) != 0) {
name->ndata[i] = maptoupper[c];
}
} else if (c >= 'A' && c <= 'Z') {
if ((bits & mask) == 0) {
name->ndata[i] = maptolower[c];
}
}
}
}
https://gitlab.isc.org/isc-projects/bind9/-/blob/9f13e610417...
Так это азбуку знать надо. Ну или хотя бы латиницу.
Может он слишком хорошо латиницу знает:Уже в новое время, около XVI века произошла дифференциация слоговых и неслоговых вариантов букв I и V (I/J и U/V). В итоге получился современный алфавит из 25 букв:
Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Xx Yy Zz
Примерно в то же время, но только в северной Европе стал считаться отдельной буквой диграф VV, возникший в XI веке и использующийся в письме германских языков. С добавлением W алфавит достиг своего окончательного состава из 26 букв:
Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz
> дифференциация слоговых и неслоговых вариантов букв I и V (I/J и U/V)"u" был просто строчным вариантом "V": Pp Qq Rr Sſ Tt Vu Xx Yy Zz.
Так проверяют-то, в первую очередь, на сишные дырени.
> Поражает то, как такое можно было проглядеть в патче?Поражает, как они переизобретение колеса для конверсии регистра тестами не покрыли.
Но что самое интересное -- само колесо мало кто посмотрел.
Предлагаю новый RFC "Case sensitive in domain names".P.S. IMHO, давно надо было сделать.
это ж какой простор для фишинга будет!
OpEnNeT.rU - прибежище самых главных ыкспердов опеннета!
opENnet.ru - английское русское зеркало русскоязычного сайта
OPENNET.RU - для нетерпеливых и вечно ОРУЩИХ, СОБАКА юзеров, новорсти обновляются на 0.002с раньше!
oPENnet.ru - там где можно порисовать в веб-версии tuxpaint прямо на новостях
openNET.ru - новости проприентарного мира, рассадник клоунов-евангелистов от мелкомягких
Что ж ты творишь, я аж клавиатуру забрызгал.
>я аж клавиатуру забрызгал.Какой именно вариант возбудил тебя больше всего?
openneT.RU - место, где модераторы особенно лютуют
openNET.RU - moderator-free area
opENneT.ru - сайт для любителей деревьев и Толкиена.
ахахаха, класс!
Но зато кое-какой простор и для противодействия блокировкам.
Нормально так, неделю фиксить баг такой.
>привело к замене символов "W" и "w" в именах доменов на последовательность "\000"
>возвращалось имя "uv/000.sub.test.local" вместо "uvw.sub.test.local".Одному мне кажется что что-то здесь не так?
Под "последовательность "\000" следует понимать escape sequence, т.е. "байт со значением 0".
> Под "последовательность "\000" следует понимать escape sequence, т.е. "байт со значением
> 0".А почему тогда в адресе заменилось на "/000"?
Иначе последовательности маркируются?
>> Под "последовательность "\000" следует понимать escape sequence, т.е. "байт со значением
>> 0".
> А почему тогда в адресе заменилось на "/000"?
> Иначе последовательности маркируются?Потому что так написал в баг-репорте Sean Zhang
Наш ответ Чемберлену ? почему одним (Гуглу) можно скрывать www в домене а другим (ISC) нельзя ? ну, да первый вариант вышел несколько недоработанным, будут думать ...