Search
Write a publication
Pull to refresh
35
0.8
Константин @Cerberuser

Разработчик, экспериментатор

Send message

Не бойтесь пробовать, или Как я стала программистом в возрасте далеко за 18

Reading time5 min
Views69K
Когда вы слышите словосочетание «младший разработчик», то наверняка представляете молодого парня на последних курсах вуза или недавнего выпускника — но уж никак не 30-летнюю женщину с маленьким ребёнком, которая до этого несколько лет преподавала в вузе и от разработки была так же далека, как Майя Плисецкая от тяжёлой атлетики. Только ленивый не задавал мне вопросы: «Почему ушла с позиции доцента на младшего разработчика?», «А как ты училась программировать?», «Как искала работу?», «С чего вдруг ты вообще решила стать программистом?» и т.д. и т.п.

Вот на них я и попытаюсь ответить в этом посте.


Читать дальше →

Вред макросов для C++ кода

Reading time6 min
Views30K
define

Язык C++ открывает обширные возможности для того, чтобы обходиться без макросов. Так давайте попробуем использовать макросы как можно реже!

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

BEGIN_MESSAGE_MAP(efcDialog, EFCDIALOG_PARENT )
  //{{AFX_MSG_MAP(efcDialog)
  ON_WM_CREATE()
  ON_WM_DESTROY()
  //}}AFX_MSG_MAP
END_MESSAGE_MAP()

Существуют такие макросы, да и ладно. Они действительно были созданы для упрощения программирования.

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

Что раздувает память в Ruby?

Reading time9 min
Views12K
У нас в Phusion работает простой многопоточный HTTP-прокси на Ruby (раздаёт пакеты DEB и RPM). Я видел на нём потребление памяти 1,3 ГБ. Но это безумие для stateless-процесса…


Вопрос: Что это? Ответ: Использование памяти процессом Ruby с течением времени!

Оказывается, я не одинок в этой проблеме. Приложения Ruby могут использовать много памяти. Но почему? Согласно Heroku и Нейту Беркопеку, в основном раздутие связано с фрагментацией памяти и чрезмерным распределением по кучам.
Читать дальше →

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

Reading time7 min
Views31K

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


image


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

Читать дальше →

По следам калькуляторов: Qalculate

Reading time7 min
Views15K

Ранее мы делали обзоры кода крупных математических пакетов, например, Scilab и Octave, а калькуляторы оставались в стороне как небольшие утилиты, в которых сложно допустить ошибки из-за их малого объёма кода. Мы ошиблись, не уделив им внимания. Случай с публикацией исходного кода калькулятора Windows показал, что всем интересно пообсуждать, какие ошибки там прячутся, а ошибок там более чем достаточно, чтобы написать про это статью. Мы с коллегами решили исследовать код ряда популярных калькуляторов и оказалось, что код калькулятора Windows был не так уж и плох (спойлер).
Читать дальше →

Пост-пост, мета-мета. Учимся писать на Хабр

Reading time6 min
Views16K


— Ямщик, а далеко до релиза?
— Да пара вёрсток.


Докатился — пишу на Хабр о том, как писать на Хабр. Хотя причины есть — я пять лет занимаюсь этим, перевидал и перепробовал кучу инструментов, так что теперь делюсь с вами самыми лучшими.


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

Читать дальше →

Король разработки

Reading time15 min
Views212K


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

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

Недавно у него дела пошли в гору, и там где нормальные люди радуются и расцветают, этот парень, кажется, совсем съехал с катушек. Мы с ним как следует выпили, и он рассказал мне много искреннего дерьма, которое, честно, я бы хотел расслышать обратно.
Читать дальше →

Подсчитаем баги в калькуляторе Windows

Reading time11 min
Views91K

На днях компания Microsoft открыла исходный код калькулятора. Это приложение входило во все версии операционной системы Windows. Исходный код разных проектов Microsoft достаточно часто открывался за последние годы, но новость о калькуляторе в первый же день просочилась даже в нетехнологические средства массовой информации. Что ж, это популярная, но очень маленькая программа на языке C++. Тем не менее, статический анализ кода с помощью PVS-Studio выявил подозрительные места в проекте.
Читать дальше →

Ода дня одного программиста

Reading time1 min
Views9.1K
Привет, Хабр!

В очередной раз разворачивая очередной проект праздничным пятничным утром, меня вдруг посетила муза, которой я делюсь с вами.

Знай, это не бред юмориста!
Ода дня одного программиста.
(прим. авт.)
Читать дальше →

Задай вопрос автору языка Lua

Reading time1 min
Views6K


В это воскресенье в офисе Mail.ru Group прошла конференция Lua in Moscow 2019. Приглашённой звездой был Роберто Иерусалимский, один из создателей языка Lua, ведущий архитектор и автор обучающих материалов. Под его чутким руководством язык развивается с далёкого 1993 года, так что Роберто можно назвать одним из столпов Lua-сообщества. Он уже трижды выступал у нас: Lua Workshop 2014, Митап в Mail.ru 2016, Lua in Moscow 2017.

И в этом году Роберто не улетел домой сразу после конференции, а придёт к нам в гости 6 марта по приглашению команды Tarantool. Мы хотим задать Роберто волнующие нас вопросы и приглашаем «виртуально» к нам присоединиться. Пишите в комментариях, что вы хотели бы спросить у патриарха о текущем состоянии Lua и о перспективах развития языка. Самые интересные вопросы мы включим в интервью.

А чтобы не было дублирований, под катом вы найдёте список вопросов, которые мы подготовили от себя.
Спрашиваем Роберто Иерусалимского

Жизнь на частицах

Reading time4 min
Views69K
Всем привет! Сегодня я расскажу о своих экспериментах с системами частиц. Основной целью было нахождение простых правил, которые бы порождали интересное поведение.

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

Под катом много мегабайт гифок.

Читать дальше →

Как детская головоломка помогает раскрыть секреты магнетизма

Reading time8 min
Views8.4K

Магниты были знакомы людям с древнейших времён, но физика ферромагнетизма остаётся загадкой. Теперь знакомая всем головоломка приближает физиков к ответам на вопросы



Игра в 15 предлагает игроку сдвигать пронумерованные плитки в рамках решётки. Если заменить номера спинами электронов, головоломку можно будет использовать для объяснения того, как работают постоянные магниты.

На несколько месяцев в 1880-м году целые регионы США поддались пристрастию, аналогов которого ранее никто не видел. «По всей стране буквально разразилась эпидемия», — писал журнал The Weekly News-Democrat города Импория, штата Канзас, 12 марта 1880. «Целые города завлечены, люди теряют сон и сходят с ума». Эпидемия распространилась на Европу, и дошла даже до Австралии с Новой Зеландией.

Заболеванием стала новая страсть: обескураживающее простая механическая игрушка-головоломка «15». Она известна до сих пор, и состоит из поля 4х4 квадрата, в котором можно передвигать 15 пронумерованных плиток с целью расставить их по порядку.
Читать дальше →

VPN без VPN или рассказ об нетрадиционном использовании SSH

Reading time10 min
Views54K
По данным ssh.com и Wikipedia, первая версия и реализация протокола SSH увидела свет в 1995 году. Задачей автора было разработать безопасную альтернативу использовавшимся тогда для удалённого администрирования rlogin, telnet и rsh. Любопытно, что появлению протокола SSH поспособствовал инцидент информационной безопасности, в результате которого злоумышленник собрал внушительную базу логинов/паролей от серверов, просто прослушивая университетскую сеть и выделяя пакеты аутентификации (пары логин/пароль в них передавались в незашифрованном виде).

Протокол быстро завоевал популярность и после длительного периода доработок и улучшений был стандартизован IETF в 2006 году. С тех пор он успел стать де-факто стандартом для удалённого управления системами с текстовой консолью. Помимо собственно текстовой консоли в протоколе предусмотрена масса других полезных функций, таких как передача файлов и переадресация портов. Именно о переадресации портов (port forwarding) и её не слишком очевидном применении пойдёт речь в этой статье.
Читать дальше →

Weak UI, weak programmer

Reading time2 min
Views3.1K

UI facepalm


Why do so many programmers hate UI work? Because it is tedious. Especially, for the Web, but other types of UI are only slightly easier. Layouts, margins, paddings — neverending stream of little tweaks to make it look OK on all sane environments, and somehow this freaking button sometimes overlaps that input field. Rrrr! And yes, it should not hang on button clicks, which means a lot of asynchronous programming, which is a nightmare.


And don’t even speak about aesthetics and usability! Choose right colours, element sizes and locations, find/draw images and put them where they fit, think about user workflows — isn’t it a designers’ or Ux specialists’ job?! Leave me alone, I’m a programmer. I work with backend layers, where everything is straightforward and linear, there are no buttloads of different environments to adjust to, and design is guided by mere logic without pesky fussing with ‘user friendliness’ and ’beauty’!

Read more →

Невозможная сковорода и другие победы плиток Пенроуза

Reading time8 min
Views48K
image

В 1974 году британский математик Роджер Пенроуз создал революционный набор плиток, который можно использовать для заполнения бесконечной плоскости никогда не повторяющимся узором. В 1982 году израильский кристаллограф Даниэль Шехтман открыл металлический сплав, атомы которого были выстроены в порядке, никогда ранее не встречавшемся в материаловедении. Пенроуз достиг масштабного общественного признания, редко достающегося математикам. Шехтман получил Нобелевскую премию. Оба учёных бросили вызов человеческой интуиции и изменили основы понимания структуры природы, обнаружив, что бесконечная вариативность может возникать даже в высокоупорядоченной среде.
Читать дальше →

Опасное видео: как я нашёл уязвимость в видеохостингах и не умер через 7 дней

Reading time6 min
Views104K


Всем привет! Я Максим Андреев, программист бэкенда Облака Mail.Ru. В свободное время я люблю искать баги. В сегодняшнем посте я хочу рассказать об одной довольно интересной уязвимости, которую я нашёл и зарепортил в bug bounty нескольких крупных компаний, за что получил солидное вознаграждение. Уязвимость заключается в следующем: если сформировать специальный видеофайл и загрузить его на сервер, то:

  • можно получить на нём SSRF;
  • можно получить local file read;
  • если пользователь скачает этот файл, то автоматически будет подвержен уязвимостям, даже если его не откроет: можно будет получить доступ к данным на компьютере пользователя и узнать его имя.

Читать дальше →

Разработка под WebAssembly: реальные грабли и примеры

Reading time25 min
Views44K


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

На конференции HolyJS доклад об опыте использования WebAssembly получил высокие оценки зрителей, и теперь специально для Хабра подготовлена текстовая версия этого доклада (видеозапись также приложена).
Читать дальше →

Я провел сто собеседований, отказал сотне людей — и только потом научился собеседовать

Reading time7 min
Views114K
image

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

Объясняем код с помощью ASCII-арта

Reading time2 min
Views21K
Примечание от переводчика: типично пятничная статья во вторник утром… почему бы и нет?



Большинство людей — визуалы. Они используют изображения, чтобы вникнуть в суть проблемы. А вот мэйнстримные языки программирования, напротив, основаны на текстовом представлении. Возникающую пропасть между текстом и графикой заполняют ASCII-изображения, нарисованные с помощью текстовых символов и вставленные в исходный код программы. Я их обожаю! Как-то раз я кинул клич в Twitter и мне прислали гораздо больше примеров, чем я ожидал. Спасибо всем участвовавшим. В этой теме попалось несколько прекрасных примеров, которые я собрал и разложил на категории. Для каждого изображения дается ссылка на соответствующий репозиторий.
Читать дальше →

Сколько доменных имён .com не используется?

Reading time5 min
Views31K
При поиске свободного имена в зоне .com меня неприятно удивило количество уже занятых, но неиспользуемых доменов. Судя по всему, зарегистрированы все произносимые комбинации букв на всех основных языках мира. И даже непроизносимые короткие комбинации. То ли существует большой рынок доменов, то ли мне просто на ум приходят те же имена, что и всем остальным? Посмотрим на голую статистику…

В настоящее время зарегистрировано 137 миллионов доменных имён .com. По данным Verisign, в «активной зоне» по состоянию на 27.01.2019 года есть 137 756 106 доменов .com. Перед этим я сверил корректность цифры с файлом DNS-зоны.

Из них используется около трети (предприятия, личные веб-сайты, электронная почта и т. д.). Ещё треть, по-видимому, не используется, а последняя треть используется в различных спекулятивных целях.
Читать дальше →

Information

Rating
3,161-st
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer
Senior