beldmit: (Программизм)
Сгребу-ка я сюда все свои не очень оформленные мысли, а заодно и ссылки.

Вводная. У меня есть два основных пакета, с которыми я на работе ковыряюсь, OpenSSH и OpenSSL. И там и там 60+ патчей, которые при каждом ребейзе приносят адскую боль. OpenSSL я знаю хорошо и поэтому с этой болью я почти смирился, OpenSSH я знаю средне.

Случаи, когда код переписан содержательно, всегда требуют индивидуального подхода и деваться от этого некуда. Но хочется минимизировать технические вещи.

Очевидно, что чисто по времени при ребейзе дофига жрут сцепленные патчи. Мы поправили строку из контекста, и теперь у нас конфликт. Мы решили конфликт, нарушив тем самым контекст следующего патча. Возможно, эти два патча стоит склеить в один (или нет, если они решают разные проблемы). Но для этого их надо идентифицировать как "сцепленные".

Ещё очевидно, что патчи к одной подсистеме лучше прикладывать подряд, потому что контекст (в голове). И опять же склеить там, где возможно.

В общем, я задумался о том, что надо как-то строить график зависимостей патчей между собой. Вроде бы всё просто. Вот есть файл, вот мы добавили-убрали-изменили, вот номера затронутых строк, вот номера строк контекста до и после. Дальше эту информацию можно впихнуть хоть в базу данных и как-то анализировать.

Номера затронутых строк и строк контекста так просто из patch/diff не получить. Во всяком случае, я не нашёл. Ну теоретически эту часть я могу хоть на Perl написать, не rocket science. Найти сцепленные патчи так можно, и дальше уже решать, что с этим делать.

Следующий интересный вопрос - а что ещё с этим можно сделать, чтобы улучшить поддерживаемость набора патчей in the long run.

На уровне разработки я нашёл совершенно чудный инструмент git absorb, который разбирает свежие изменения на fixup-ы и новые содержательные. Не знаю, как он потянет 60+ коммитов, конечно.

Вот тут пишут про замену diff для GitHub, но в основном для web-интерфейса.

Difftastic - продвинутый diff, не по строкам, а по логическим блокам

Mergiraf - продвинутый merge.

В дискуссию приглашается, например, [personal profile] spamsink
beldmit: (Программизм)
"Чем заняться в программировании человеку, который не знает математику на уровне начальной школы?" спрашивает коллега.

Вот блин, застряло в головах у людей, что программирование - это математика. Да нифига. Типичная программа (точнее, некий самодостаточный кусок типичной программы) - это взять сепульку, произвести её сепуление или отдварковать внедлишным способом, что-то сделать с результатом (возможно, передать следующей процедуре) и иногда зачистить память. То есть надо примерно знать предметную область, какие у нас бывают сущности и как с ними оперировать. Математика в такую предметную область попадает не всегда, да и моя практика показывает, что чтобы писать криптографический код, с соответствующими сепульками можно обращаться, не особо думая о нижележащей математике. Не говоря уже о том, что самому криптографию реализовывать по приколу можно, но вообще говоря, не полезно.

Но да, площадь треугольника или прямоугольника - методически годная задача. И проверять удобно. Как, например, все 100500 тригонометрических уравнений, которые я в школе решал - легко сгенерить, можно проверить, никакого практического смысла.
beldmit: (Default)
Тут в одной дискуссии напомнили старую байку про то, как сконструированная ИИ электрическая схема содержала несвязанные с прочей частью схемы куски, при изъятии которых функциональность утрачивалась, и схемотехники не могли понять, почему.

Во-первых, у меня есть чёткое ощущение, что первый раз я эту байку слышал 20+ лет назад. То есть думаю, часть того, что тогда было ИИ (генетические алгоритмы?) ща уже доступно для понимания.

Во-вторых, я, конечно, физику в школе проходил в основном мимо, но понятие "индуктивность" помню и не понимаю, почему ИИ не мог на этой индуктивности играть (да, разумеется, скорее всего это решение будет не оптимальным).

Собственно, вопрос - а знает ли кто-нибудь первоисточник этой байки?

Update: нашли. 2002-й год, генетические алгоритмы, и версия про индуктивность.
beldmit: (Программизм)
Что-то как-то сюда не пишется, и отсутствие автомагического кросспоста в ЖЖ не способствует. Поэтому дам ссылку на те посты, которые я писал для работы.

Что мы сделали в Red Hat с протоколом SCP
Моя борьба с турецкой локалью
beldmit: (Манул)
Почтенный [livejournal.com profile] ivanov_petrov пишет про деньги, которые платят «ни за что» и иллюстрирует вот таким примером.

Например, когда-то я слышал историю. Некий научный институт решил завести сайт. Купили-сделали. Его надо вести. Некая девочка взялась за эту работу, сказав программистам сделать этакий бокс, куда завлабы должны будут складывать текстики с новостями своих лабораторий, научные новости эти нанятый контент-менеджер должен был из того бокса брать и размещать на сайте. Она считалась человеком, который ведет сайт и получала 80000 руб. Через год такой ее работы кто-то из завлабов, смекнув дело, возмутился и от нее потребовали плотнее заниматься своей работой - ну чего-то там креативить и вообще инициировать. Девочка фыркнула - за такие деньги я еще и работать должна? И ушла. К ужасу дирекции института, которой пришлось искать нового ответственного за сайт.

Делаем поправку на пересказ. Лично я предполагаю, что обязанности девочки включали в себя пнуть завлабов, чтобы они дали какой-то контент, пнуть программистов, когда что-то не работает, и пнуть бухгалтерию, чтобы хостинг не отвалился, вне зависимости от того, была ли она сама контент-менеджером или это был отдельный человек. Как мне объяснили в фейсбуке, отчасти тут всё объясняется, что девочке платят за то, сколько стоит её работа — а завлабам столько, сколько стоит их, и им крайне обидно.

Но самое интересное начинается в комментах вроде бы проходящих интеллектуальный ценз подписчиков.

Среди типичных откликов о том, что умственный труд переоценен, не хватает только традиционного демотиватора с шахтёрами и подписью «Расскажи им, как ты устал за рабочий день».

Да, 8 часов работать без перерыва головой — крайне утомительно. Кто не согласен, тот не пробовал. В крайнем случае, забыл про отходняк на следующий день. Поэтому часы, потраченные на чтение почты и совещания — это тоже работа. Может быть, не самая продуктивная.

Нет, чиновники тоже не получают деньги «ни за что». Они получают деньги за что-то, что, может быть, вполне бесполезно объективно — но это что-то они, как правило, делают.

Нет, работа на зарплате «выше средней по городу» без возможности отвлечься не будет априори привлекательнее той, где отвлечься можно.

Удивительно, что это всё специально подобранным людям (абы кто Иванова-Петрова не читает) неочевидно.
beldmit: (Программизм)
Каждой атаке положен официальный сайт. Вот, например.

Если использовать уникодные символы управления направлением вывода текста (слева направо интерпретировать кусок текста или справа налево), то можно добиться эффекта, когда человек, который ревьюит pull-request, увидит одно, а компилятор - совсем другое.
beldmit: (Программизм)
Костя Кноп в фейсбуке затеял дискуссию о математике и зачем она нужна.

Тамошние комменты читайте там, я вынесу некоторые свои соображения и полезные ссылки от Кости.

Я согласен с темой про развитие нейронных связей, и про то, что навык «выучил-сдал-забыл» тоже сам по себе до некоторой степени полезен.

Фигня в том, что школьная математика — это математика веков 17-18, а вузовская в подавляющем большинстве — 19, начало 20-го. И до современного переднего края дистанции огромного размера. В быту из школьной математики мне не пригодилось примерно ничего сверх теоремы Пифагора. В профессиональной деятельности за 20+ лет из ВУЗа пригодилось довольно много, но часть вещей случайно:

- теория множеств в довольно специфичном формате, SQL
- построение гладких кривых (простите, рисовал линии ауры)
- линейная алгебра (когда делали компьютерную игру с Ленским)
- общая алгебра в криптографии, но вообще на том уровне, на котором я работаю, она под капотом. Дискретная математика примерно туда же
- немного статистики, довелось гонять ДСЧ и анализировать качество их выдачи
- теория графов

Возможно, что-то ещё забыл, но как-то так. Понятно, что у других людей будет другое подмножество.

Ещё одна засада — никто не пытается убедить, что математика это прикольно. В нашем детстве был Гарднер. Сейчас можно найти много красивых геометрических роликов на YouTube, но я не уверен, что их показывают в школе.

Костя дал пару интересных ссылок на эту тему. Книгу Анания Левитина «Алгоритмические головоломки» я ещё поищу. А вот пару сайтов - MathPuzzle и Gathering for Garnder - буду смотреть, если мозгов хватит.
beldmit: (Любовь к ближним)
Блог об информационной безопасности уже некоторое время как не веду, но не могу молчать.

Azure устанавливала своего управляющего агента на Linux-машины. Работал агент под рутом. В агенте нашли Remote code execution, причём смешной: удаляешь из управляющего запроса заголовок Auth — и всё, заходи кто хочет, бери что хочешь.

Подробности
beldmit: (Default)
Узнал про существование устройств , которые используют домашнюю проводку в качестве сетевого кабеля.

Ну то есть про такое я слышал в своё время в эпоху ADSL, но тогда это подавалось как светлое будущее. А теперь, видать, настоящее.
beldmit: (Манул)
Вынесу сколько-то срача из фейсбука

В начале был пост Александра Пиперски:

Учебник русского языка для 6-го класса, случайно открывшийся разворот. В упражнениях — четыре более или менее длинных текста, содержание которых я кратко перескажу:
1) старые воробьи и воробьихи поведут воробьят на гумно;
2) косари забыли потушить костёр, суховей раздул пожар;
3) метличка закружилась над озером вместе с подружками;
4) два часа, не отставая, за мной летела ласточка; мне стало не по себе.
Вот и разбирайся, городской шестиклассник, чем гумно отличается от суховея, а косарь — от метлички. Я на всякий случай проверил ударение в слове «гумно» (а то вдруг путаю его с каким-нибудь другим похожим словом) и поискал в интернете метличек (мало что понял, кроме того, что это слово из Даля). На этом фоне хоррор Паустовского про ласточек смотрится даже свежо. Правда, оказалось, что его оборвали на самом драматичном месте, а разгадка простая: «когда человек идёт по некошеному лугу, он спугивает сотни кузнечиков и жуков, и ласточке незачем выискивать их в густой траве — она летает около человека, ловит их на лету и кормится без всякой заботы».


Потом - статья Антонины Лапошиной

«лес» в учебниках русского языка встречается в 15 раз чаще, чем в обычной жизни

Современные дети наверняка будут отличными орнитологами, поскольку в линейке учебников для 1–4-го класса насчитывается более 50 видов птиц, которые суммарно упоминаются более 500 раз.
в текстах учебников описания зимы встречаются в два раза чаще, чем лета

в учебниках 2014 года издания в качестве примеров неологизмов значатся «дискета» и «радиотелефон», хотя эти слова правильнее было бы отнести уже к историзмам, то есть словам, обозначающим предметы, вышедшие из употребления.

Ещё один простой пример несоответствия языка учебников современному русскому языку — слова «шофёр» и «водитель». Одна из самых часто встречающихся профессий в учебниках русского языка — шофёр, что, кстати, само по себе любопытно: «программист» на всю линейку учебников встречается 1 раз, «милиционер» (учебник издан до реформы) — 1, «космонавт» — 6, а «шофёр» — 22. «Шофёр» как обозначение профессии с середины XX века конкурирует со словом «водитель», и с 90-х годов второй вариант одерживает уверенную победу.

Самыми популярными авторами по-прежнему являются М. Пришвин, К. Паустовский, В. Бианки, встречаются тексты и XIX века: В. Одоевского, А. Фета и, конечно, А. Пушкина. Это приводит к обилию устаревших слов и историзмов: «бурлак», «ветрило», «длань», «скань», «зернь» — этот список можно продолжать ещё долго.


И доклад с более подробными цифрами

Ну и мои пять копеек:

Читал я когда-то некую автобиографическую повесть учителя, работавшего на Чукотке. И были там жалобы его коллеги, преподавателя русского языка и литературы, на то, что стандартные учебники русского и стандартные фразы оттуда у местных детей вызывают отторжение и непонимание, но глаза у них загораются, когда учитель придумывает нечто из их жизни - про условный выпас оленей и добычу китов. И правила при этом усваиваются лучше.

Нина говорит, что нечто подобное читала у Кима. Нет, повесть была не Кима, но не исключаю, что Ким там был протагонистом.
beldmit: (Манул)
Как применить DPI-устройства для DDoS Amplification.

Amplification атака построена по простому принципу. Шлём маленький пакет, получаем большой ответ, подставляем ложный адрес получателя — profit. Обычно для amplification атак используется протокол UDP, который сам по себе не приспособлен к проверке, что адрес, куда он должен отправить ответ, настоящий. Но всякие коробочки для DPI, устанавливаемые в целях цензуры, делают пригодным для этой цели и TCP.

Краткое популярное изложение
Статья раз
Статья два
beldmit: (Программизм)
Проект по реализации криптографии на rust. Теоретически это даёт спасение от всяких CVE по записи в никуда и чтению из ниоткуда (примерно треть всех уязвимостей в криптографии) — язык сдизайнен таким образом, что, если не прилагать усилий, записать по неверному указателю технически невозможно.

Сайт проекта, есть регулярные онлайн-встречи.

Сегодня, наконец, большой кусок встречи был посвящён дискуссиям о том, как гарантировать constant-time обработку данных (ещё существенный пласт атак) и защиту от шибко умного компилятора, который может выкинуть зачистку памяти в случае, если решит, что зачищенное значение больше не используется.

Вообще цель хорошая, и скорость выполнения криптографии на Rust осмысленная. Но общее состояние —пока сыровато.
beldmit: (Манул)
Иванов взялся за пешку и продвинул ее вперед.
- Е2-Е4 - поторопился объявить секретарь.
читать дальше )
Автор, возможно, Артём Голиков, во всяком случае, уволок я у него отсюда.
beldmit: (Default)
Удивительное рядом. В беседе у Аси Михеевой про женщин в книгах Стругацких люди на полном серьёзе утверждают, что у Ефремова персонажи более живые в «Лезвии Бритвы» и «Часе Быка».

Ну блин, про «Лезвие бритвы» там возможны варианты, хотя, кажется, то, что я сейчас про них помню - это нечто среднее между трофеем и боевой подругой. Но с яркостью образа землянок в «Часе Быка» как-то мне совершенно не алё.

То, что Фай Родис - командир корабля, не делает её автоматом личностью. Она слишком на много состоит из штампов.
beldmit: (Программизм)
Узнал через посредство Саши Венедюхина про корень Бринга — такую вот даже не то что абстракцию, но формальную сущность, с помощью которой решения произвольных уравнений пятой степени становятся реальными.

Почему-то это решение мне кажется читерским. В смысле, я привык к мысли о неразрешимости уравнений пятой и выше степеней в общем виде радикалах и предполагал, что альтернативы нет. А тут даже не дополнение поля происходит, а просто syntax sugar для того, чтобы возможность выразить решение появилась — но неуютно. Причём это, комплексные числа в своё время в голову как информобъекты как родные легли. Загадка, в общем.

При том, что точные формулы для уравнений высоких степеней, в общем-то нафиг никому не сдались в реальной жизни — возникают проблемы с устойчивостью решений при малом шевелении, а численные методы подойдут для большинства практических целей.

Update: Пока катался, до меня дошло, что не так с корнями Бринга. С обычными радикалами или комплексными числами много чего можно сделать. Можно умножить на константу и внести константу под корень. Можно домножить на сопряжённое выражение и от иррациональности избавиться. С корнями Бринга такого сделать не получится. Неочевидно даже, как связаны Br(a) и Br(-a), к примеру. Получаются символы без очевидной семантики, которые, тем не менее, можно вычислить. Из привычной массовой математики таковыми являются разве что π или e.
beldmit: (Программизм)
Нашёл интересный русскоязычный программерский Телеграм-канал и англоязычный сайт его автора с частичным дублированием контента.
beldmit: (Программизм)
Конвеевскую «Жизнь» IT-шники нашего поколения знают примерно все. Про Тьюринг-полноту «Жизни» тоже слышали.

Попались несколько красивых ссылок на эту тему, спасибо [livejournal.com profile] maksa за поиски.

Ролик про то, как «Жизнь» смоделировали на «Жизни». В описании видео несколько полезных ссылок.

Описание элементарной ячейки этой вот метамодели

Библиотека, которую для этого моделирования использовали

Логические элементы, построенные на «Жизни»

Тетрис средствами «Жизни»

Вообще безумно прикольно, конечно.
beldmit: (Программизм)
Ко вчерашнему посту [personal profile] alexott принёс интересную ссылку с описанием того, что там под капотом. Очень интересно, и какое счастье, что это (пока?) не моя проблема.
beldmit: (Программизм)
Как выжать максимум производительности из FizzBuzz на C

Любопытно, хотя я бы остановился гораздо раньше, потому что я считаю, что maintainability в норме ценнее, чем производительность.

Profile

beldmit: (Default)
Dmitry Belyavskiy

May 2025

S M T W T F S
    123
45678910
11121314151617
181920212223 24
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 17th, 2025 12:06 am
Powered by Dreamwidth Studios