Pull to refresh
100
0
Михаил Васильев @Loiqig

Сетевой инженер

Send message

JIT-компилятор Python в 300 строк

Reading time11 min
Views29K

Может ли студент второго курса написать JIT - компилятор Питона, конкурирующий по производительности с промышленным решением? С учётом того, что он это сделает за две недели за зачёт по программированию.

Как оказалось, может, но с нюансами.

Читать далее
Total votes 138: ↑137 and ↓1+136
Comments37

Абстракции и наследование в Си — стреляем по ногам красиво

Reading time10 min
Views13K

Иногда нет-нет да и хочется что-нибудь абстрагировать и обобщить в коде на Си. К примеру, хочешь ты принтануть содержимое структуры несколько раз, пишешь везде, как дурак, printf("%s %d %f\n", foo->bar, foo->baz, foo->boom), и интуитивно кажется, что есть способ сделать foo->print(foo), и так вообще со всеми структурами, не только с foo.

Возьмем пример: есть некий чувак с именем и фамилией, и есть птица, у которой есть имя и владелец.

Читать далее
Total votes 31: ↑28 and ↓3+25
Comments37

Xудшие практики для Ansible. Георгий Шуклин

Reading time20 min
Views22K


Приветствую всех! Меня зовут Георгий. Я работаю в компании servers.com. Я пришел рассказать про Ansible: про хороший Ansible и про плохой Ansible в основном, т. е. про то, как люди могут плохо делать на Ansible.

Total votes 33: ↑30 and ↓3+27
Comments31

Программист учится рисовать. Дневник Емели

Reading time16 min
Views34K
Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

Еще в январе я дал себе некое обещание в виде цели к концу года — прокачать навык рисования (звучит конечно абстрактно и совсем не по SMART-у, я думаю, это и повлияло в дальнейшем на то, как я развивал этот навык весь год и что получилось в итоге).

spoiler
В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!

image
Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
Читать дальше →
Total votes 144: ↑143 and ↓1+142
Comments123

История одного переключения

Reading time10 min
Views11K

У нас в агрегации локальной сети было шесть пар коммутаторов Arista DCS-7050CX3-32S и одна пара коммутаторов Brocade VDX 6940-36Q. Не то, чтобы нас сильно напрягали коммутаторы Brocade в этой сети, они работают и выполняют свои функции, но мы готовили полную автоматизацию некоторых действий, а этих возможностей мы на этих коммутаторах не имели. А еще хотелось перейти с 40GE интерфейсов на возможность использования 100GE, чтобы сделать запас на следующие 2-3 года. Так мы решили поменять Brocade на Arista.
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments3

Как поезд проходит путь от станции до станции: особенности маршрутизации

Reading time9 min
Views30K


Архитектура железной дороги — вещь достаточно интересная с точки зрения принципов маршрутизации. Есть перегон — некий линейный маршрут от одного узла до другого, например, от обгонного пункта до станции. По перегону поездам можно следовать только по очереди, не обгоняя друг друга и не «соприкасаясь». Маршрутизация по большей части производится на раздельных пунктах. То есть на перегоне можно только ехать или стоять.

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

Понятное дело, бывают исключения вроде ситуации, когда нужно вытолкать с блок-участка электричку, оставшуюся без питания (и нужно заехать под красный), но мы сейчас будем говорить про то, как устроено в упрощённых случаях.
Читать дальше →
Total votes 65: ↑65 and ↓0+65
Comments100

Древности: Roland MT-32, альтернативный звук для DOS-игр

Reading time13 min
Views23K
Не во всех играх под DOS есть настройки звука. Например, в Lemmings все просто работает. Или нет. Но там, где настройки все же имеются, они выглядят примерно так:


Когда я играл в «Принца Персии» в девяностые, моим единственным выбором была верхняя строчка, по причине отсутствия в компьютере нормальных звуковых устройств. В своем новом-старом 386-м компьютере я по умолчанию использую Sound Blaster, и вполне доволен результатом. Про другие опции в те времена я мало что знал, хотя в настройках разных игр они всплывали часто. Sound Blaster был достаточным апгрейдом: если он есть, то со звуком в твоем компьютере все в порядке.


А был ли вариант покруче? Здесь легко запутаться в определении этого самого «круче». В каких единицах должен выражаться прогресс? Сегодня я расскажу об уникальном во многих смыслах звуковом устройстве для IBM PC эпохи DOS — синтезаторе Roland MT-32. В конце восьмидесятых это был самый дорогой вариант реализации компьютерного звука. Тридцать с лишним лет спустя это недешевый коллекционный девайс, который превращает и так неплохой звук в некоторых DOS-играх в монументальный саундтрек.
Total votes 71: ↑70 and ↓1+69
Comments66

23 минуты. Оправдание тугодумов

Reading time3 min
Views191K
Я всегда думал, что я – тупой. Точнее, что я — тугодум.

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

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

А я, выйдя с совещания, продолжал думать над задачей. И, как говорит устойчивое идиоматическое выражение, хорошая мысля приходит опосля. Находил нормальное, иногда интересное, а бывало – что и офигенное решение. Но оно уже никому не было нужно. Типа после драки кулаками не машут.

Просто культура в тех компаниях, где я начинал работать, была модерновая. Ну, как там это бывает – «совещание должно закончиться принятием решения». Вот чего придумали на совещании, то и принимается. Даже если решение — полная фигня.
Читать дальше →
Total votes 397: ↑381 and ↓16+365
Comments334

Хаки при работе с большим числом мелких файлов

Reading time7 min
Views42K
Идея статьи родилась спонтанно из дискуссии в комментариях к статье «Кое-что об inode».



Дело в том, что внутренней спецификой работы наших сервисов является хранение огромадного числа мелких файлов. На данный момент у нас порядка сотен терабайт таких данных. И мы натолкнулись на некоторые очевидные и не очень грабельки и успешно по ним прошлись.

Поэтому делюсь нашим опытом, может кому и пригодится.
Читать дальше →
Total votes 104: ↑103 and ↓1+102
Comments66

Индульгенция — как избавиться от долгов по задачам

Reading time10 min
Views10K
У любого сотрудника есть долги. Как правило, чем выше должность, тем больше этот багаж. Речь, конечно, не о долгах по кредитам, а о невыполненных задачах, обязательствах, проектах, обещаниях и т.д.

Некоторые даже считают, что чем выше долги, тем лучше. Как-то встречал в вакансии Студии Артемия Лебедева такую фразу (не дословно) – не стоит к нам приходить, если вы можете передать дела на старом месте меньше, чем за полгода. Вроде как, большие долги – это повод для гордости.

Мне такое, к сожалению, не подходит. Я долги не люблю. И достаточно давно заприметил несколько методов, позволяющих от них либо избавляться, либо откладывать выплаты без накопления процентов.

Несколько лет испытывал методы сам, и наблюдал, как подобную практику нарабатывают другие – осознанно, или неосознанно. Общее название – Индульгенция.
Читать дальше →
Total votes 38: ↑24 and ↓14+10
Comments13

Английский и айтишник: английскую сову на русский глобус?

Reading time4 min
Views15K
image

Люди с техническим складом ума во всем стремятся найти систему. При изучении английского, столь востребованного в IT, многие программисты сталкиваются с тем, что не могут понять, как устроен этот язык, его систему.

“Кто виноват?”


В чем же проблема? Казалось бы, программист, частенько владеющий несколькими формальным языками программирования, или сисадмин, играючи управляющийся со сложнейшими системами, без труда должны были бы освоить столь несложный язык, как английский.

К сожалению, в общепринятой практике изучения английского языка не все так просто. Обучают языку и пишут пособия гуманитарии с иным, чем у технических специалистов, складом ума. Условно создателей представленных на сегодняшнем рынке программ и пособий по изучению английского можно разделить на две категории:
Читать дальше →
Total votes 47: ↑37 and ↓10+27
Comments126

Развёрнутый ответ на комментарий, а также немного о жизни провайдеров в РФ

Reading time7 min
Views81K
Сподвиг меня на этот пост вот этот вот комментарий.

Привожу его здесь:
kaleman сегодня в 18:53

Меня сегодня порадовал провайдер. Вместе с обновление системы блокирования сайтов, у него под бан попал почтовик mail.ru. С утра дергаю техподдержку, ничего сделать не могут. Провайдер маленький, и блокируют видимо вышестоящие провайдеры. Еще заметил замедление открытие всех сайтов, может какое-то кривое DLP навесили? Раньше никаких проблем с доступом не было. Уничтожение рунета идет прямо на моих глазах…
Дело в том, что, похоже, мы и есть тот самый провайдер :(

И действительно, kaleman почти угадал с причиной проблем с mail.ru (хотя мы долго отказывались верить в подобное).

Дальнейшее будет разделено на две части:

  1. причины наших сегодняшних проблем с mail.ru и увлекательный квест по их поиску
  2. существование ISP в сегодняшних реалиях, стабильность суверенного рунета.
Читать дальше →
Total votes 291: ↑290 and ↓1+289
Comments387

Как погрешность превращается в грех

Reading time7 min
Views30K

Одна городская легенда гласит, что создатель сахарных пакетиков-палочек повесился, узнав, что потребители не разламывают их пополам над чашкой, а аккуратно отрывают кончик. Это, разумеется, не так, но если следовать такой логике, то один британский любитель пива "Гиннесс" по имени Уильям Госсет должен был не просто повеситься, но и своим вращением в гробу уже пробурить Землю до самого центра. А все потому, что его знаковое изобретение, опубликованное под псевдонимом Стьюдент, уже десятки лет используют катастрофически неправильно.


image


Рисунок выше приведен из книги С. Гланц. Медико-биологическая статистика. Пер. с англ. — М., Практика, 1998. — 459 с. Мне неизвестно, проверял ли кто-нибудь на статистические ошибки расчеты для этой диаграммы. Однако и ряд современных статей по теме, и мой собственный опыт говорят о том, что t-критерий Стьюдента остается самым известным, и оттого — самым популярным в применении, по поводу и без.

Читать дальше →
Total votes 78: ↑71 and ↓7+64
Comments33

Цивилизация Пружин, 1/5

Reading time14 min
Views102K
### Часть 1. Золотое «Ку»

Лет в шесть мне попался в руки дедовский справочник[50] по грузовым автомобилям середины 20-го века. Добротный, напечатанный на гладкой плотной бумаге раритет. Единственное, что вообще осталось на память от деда после распада страны, войн и переездов.



В справочнике содержалось множество интересных ТТХ, так что слово «грузоподъёмность» стало мне знакомо с раннего детства. И когда отец на прогулке упомянул, что любой грузовик весит столько же, сколько увозит сам, я это запомнил. Запомнил и, много позже, заинтересовался.

Отец был прав. Для грузовиков 60-х годов это правило выполняется с довольно удивительной точностью:

Читать дальше →
Total votes 237: ↑230 and ↓7+223
Comments266

Трехмерный движок внутри запроса SQL

Reading time8 min
Views40K
Несколько лет назад на форуме SQL.ru решили провести сравнение реализаций трассировщиков лучей на разных языках программирования. К сожалению, моя заявка не может участвовать т.к. она не выводит надпись «PIXAR», поэтому публикую ее здесь.

Для чистоты эксперимента я использовал SQLite без расширений. Оказалось, что там нет даже функции SQRT.

WITH RECURSIVE numbers AS (SELECT 0 AS n UNION ALL SELECT n+1 FROM numbers WHERE n<89),
pixels AS (SELECT rows.n as row, cols.n as col FROM numbers as rows CROSS JOIN
numbers as cols WHERE rows.n > 4 AND rows.n < 38 AND cols.n > 9 AND cols.n < 89),
rawRays AS (SELECT row, col, -0.9049 + col * 0.0065 + row * 0.0057 as x,
-0.1487 + row * -0.0171 as y, 0.6713 + col * 0.0045 + row * -0.0081 as z FROM pixels),
norms AS (SELECT row, col, x, y, z, (1 + x * x + y * y + z * z) / 2 as n FROM rawRays),
rays AS (SELECT row, col, x / n AS x, y / n AS y, z / n AS z FROM norms),
iters AS (SELECT row, col, 0 as it, 0 as v FROM rays UNION ALL
SELECT rays.row, rays.col, it + 1 AS it, v + MAX(ABS(0.7+v*x) - 0.3,
ABS(0.7+v*y) - 0.3, ABS(-1.1+v*z) - 0.3, -((0.7+v*x) * (0.7+v*x) +
(0.7+v*y) * (0.7+v*y) + (-1.1+v*z) * (-1.1+v*z)) * 1.78 + 0.28) AS v
FROM iters JOIN rays ON rays.row = iters.row AND rays.col = iters.col WHERE it < 15),
lastIters AS (SELECT it0.row, it0.col, it0.v AS v0, it1.v AS v1, it2.v AS v2
FROM iters as it0 JOIN iters AS it1 ON it0.col = it1.col AND it0.row = it1.row
JOIN iters AS it2 ON it0.col = it2.col AND it0.row = it2.row
WHERE it0.it = 15 AND it1.it = 14 AND it2.it = 13),
res AS (SELECT col, (v0 - v1) / (v1 - v2) as v FROM lastIters)
SELECT group_concat(
substr('$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^. ',
round(1 + max(0, min(66, v * 67))), 1) || CASE WHEN col=88 THEN X'0A' ELSE '' END, '')
FROM res;



Здесь можно покрутить кубик

Под катом построчный разбор запроса. Как обычно, достаточно знания основ SQL и школьной математики.
Читать дальше →
Total votes 169: ↑168 and ↓1+167
Comments24

Максимально вырожденная игра на общение

Reading time5 min
Views76K


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

Потому что она настолько тривиальна, что это сложно представить.

Но давайте начнём с начала. Итак, настольные игры нужны для общения. Как повод встретиться с друзьями (а для этого многим реально нужен повод — ведь соцсети уверенно разделяют людей). Люди обмениваются тёплыми словами, — ну, стоит, в общем, положительный транзакционный обмен с нулевой суммой.

Задача — найти максимально вырожденную игру, которая работает только на общение. Сначала я думал, что встретил её в Южной Африке на обучении — мы играли в классическую «две правды и ложь».

Но, оказывается, можно ещё проще. И с совершенно убойным результатом.
Читать дальше →
Total votes 114: ↑103 and ↓11+92
Comments422

Память вашего компьютера лагает каждые 7,8 мкс

Reading time6 min
Views91K

Современная DDR3 SDRAM. Источник: BY-SA/4.0 by Kjerish

Во время недавнего посещения Музея компьютерной истории в Маунтин-Вью моё внимание привлёк древний образец ферритовой памяти.


Источник: BY-SA/3.0 by Konstantin Lanzet
Читать дальше →
Total votes 145: ↑138 and ↓7+131
Comments58

Какие свидетельства могут убедить математиков, если строгого доказательства нет?

Reading time8 min
Views13K

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



Какие точки на эллиптической кривой y2 = x3 – 4x + 1 рациональные? Чтобы их найти, нужно провести прямые через пары рациональных точек. Все точки, через которые проходят прямые, также будут рациональными.

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

И это не биологи, климатологи или физики. В их научной области эмпирические модели не имеют права голоса касательно истины. Они – математики, представители дисциплины, чья стандартная валюта – неоспоримое логичное доказательство – обычно избавляет их от дебатов, поражающих другие области. И всё же вот они, со своей моделью, говорящей, что, вероятно, пришло время пересмотреть некоторые давнишние представления.
Total votes 25: ↑19 and ↓6+13
Comments32

Бэкдоры в микрокоде ассемблерных инструкций процессоров x86

Reading time6 min
Views68K

Софту мы не доверяем уже давно, и поэтому осуществляем его аудит, проводим обратную инженерию, прогоняем в пошаговом режиме, запускаем в песочнице. Что же насчёт процессора, на котором выполняется наш софт? – Мы слепо и беззаветно доверяем этому маленькому кусочку кремния. Однако современное железо имеет те же самые проблемы, что и софт: секретную недокументированную функциональность, ошибки, уязвимости, малварь, трояны, руткиты, бэкдоры.



ISA (Instruction Set Architecture) x86 – одна из самых долгих непрерывно изменяющихся «архитектур набора команд» в истории. Начиная с дизайна 8086, разработанного в 1976 году, ISA претерпевает постоянные изменения и обновления; сохраняя при этом обратную совместимость и поддержку исходной спецификации. За 40 лет своего взросления, архитектура ISA обросла и продолжает обрастать множеством новых режимов и наборов инструкций, каждый из которых добавляет к предшествующему дизайну, и без того перегруженному, новый слой. Из-за политики полной обратной совместимости, в современных процессорах x86 присутствуют даже те инструкции и режимы, которые на сегодняшний день уже преданы полному забвению. В результате мы имеем архитектуру процессора, которая представляет собой сложно переплетающийся лабиринт новых и антикварных технологий. Такая чрезвычайно сложная среда – порождает множество проблем с кибербезопасностью процессора. Поэтому процессоры x86 не могут претендовать на роль доверенного корня критической киберинфраструктуры.

Читать дальше →
Total votes 147: ↑142 and ↓5+137
Comments87
1
23 ...

Information

Rating
Does not participate
Location
Волгоград, Волгоградская обл., Россия
Date of birth
Registered
Activity