Как стать автором
Обновить
36
1.2
Константин @Cerberuser

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

Отправить сообщение

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

Время на прочтение6 мин
Количество просмотров29K
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()

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

Я говорю о других макросах, с помощью которых пытаются избежать реализации полноценной функции или стараются сократить размер функции. Рассмотрим несколько мотивов избегать таких макросов.
Читать дальше →
Всего голосов 80: ↑72 и ↓8+64
Комментарии77

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

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


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

Оказывается, я не одинок в этой проблеме. Приложения Ruby могут использовать много памяти. Но почему? Согласно Heroku и Нейту Беркопеку, в основном раздутие связано с фрагментацией памяти и чрезмерным распределением по кучам.
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии3

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

Время на прочтение7 мин
Количество просмотров30K

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


image


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

Читать дальше →
Всего голосов 78: ↑71 и ↓7+64
Комментарии33

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

Время на прочтение7 мин
Количество просмотров14K

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

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

Время на прочтение6 мин
Количество просмотров15K


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


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


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

Читать дальше →
Всего голосов 99: ↑90 и ↓9+81
Комментарии60

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

Время на прочтение15 мин
Количество просмотров212K


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

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

Недавно у него дела пошли в гору, и там где нормальные люди радуются и расцветают, этот парень, кажется, совсем съехал с катушек. Мы с ним как следует выпили, и он рассказал мне много искреннего дерьма, которое, честно, я бы хотел расслышать обратно.
Читать дальше →
Всего голосов 375: ↑315 и ↓60+255
Комментарии667

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

Время на прочтение11 мин
Количество просмотров91K

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

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

Время на прочтение1 мин
Количество просмотров9.1K
Привет, Хабр!

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

Знай, это не бред юмориста!
Ода дня одного программиста.
(прим. авт.)
Читать дальше →
Всего голосов 53: ↑39 и ↓14+25
Комментарии10

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

Время на прочтение1 мин
Количество просмотров6K


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

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

А чтобы не было дублирований, под катом вы найдёте список вопросов, которые мы подготовили от себя.
Спрашиваем Роберто Иерусалимского
Всего голосов 41: ↑39 и ↓2+37
Комментарии42

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

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

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

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

Читать дальше →
Всего голосов 269: ↑267 и ↓2+265
Комментарии67

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

Время на прочтение8 мин
Количество просмотров8.4K

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



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

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

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

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

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

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

Weak UI, weak programmer

Время на прочтение2 мин
Количество просмотров3.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 →
Всего голосов 14: ↑10 и ↓4+6
Комментарии5

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

Время на прочтение8 мин
Количество просмотров46K
image

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

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

Время на прочтение6 мин
Количество просмотров104K


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

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

Читать дальше →
Всего голосов 255: ↑250 и ↓5+245
Комментарии66

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

Время на прочтение25 мин
Количество просмотров43K


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

На конференции HolyJS доклад об опыте использования WebAssembly получил высокие оценки зрителей, и теперь специально для Хабра подготовлена текстовая версия этого доклада (видеозапись также приложена).
Читать дальше →
Всего голосов 73: ↑72 и ↓1+71
Комментарии59

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

Время на прочтение7 мин
Количество просмотров114K
image

Не желал бы я вам попасть ко мне на собеседование года два назад. Я провел их около сотни, и за все время взял может человек четырех. Не знаю почему, но эйчары считали, что это круто. Слава строгого интервьюера шла впереди меня. Знакомые звали меня собеседовать для чужих команд, и даже для чужих компаний, о которых вы слышите каждый день. И везде — не проходил никто.
Читать дальше →
Всего голосов 253: ↑228 и ↓25+203
Комментарии431

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

Время на прочтение2 мин
Количество просмотров20K
Примечание от переводчика: типично пятничная статья во вторник утром… почему бы и нет?



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

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

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

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

Из них используется около трети (предприятия, личные веб-сайты, электронная почта и т. д.). Ещё треть, по-видимому, не используется, а последняя треть используется в различных спекулятивных целях.
Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии29

Синдром самозванца — это не только вредно, но и полезно

Время на прочтение6 мин
Количество просмотров17K


Нужно не сражаться с неуверенностью в себе, а использовать ее в своих интересах


Однажды, еще в начале карьеры, меня пригласили на пафосное мероприятие для СМИ в Лос-Анджелесе. Увидев там журналистов из крупнейших мировых изданий, я почувствовала себя так неуместно, что спряталась в уборной и сидела там, пока не пришла моя подруга.

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

Я беседовала о синдроме самозванца со многими выдающимися людьми — бизнесменами, учеными-исследователями, телевизионщиками — и все как один говорили, что с приходом успеха всё становится только хуже: чем больше достижения, тем сильнее чувство, что вы обманываете. Но, как бы странно это ни прозвучало, синдром самозванца — не такая уж и плоха штука. Нужно только обратить его себе на пользу.
Если вы ощущаете неуверенность в себе, это значит, что вы больше осведомлены о собственных слабостях и, следовательно, лучше подготовлены к тому, чтобы преодолеть их.
Келси Рамсден, автор книги Похмелье от успеха, утверждает, что синдром самозванца — это и хорошо, и плохо: «Этот синдром вредит, потому что многим он мешает развиваться и применять собственные умения и таланты». С другой стороны, говорит Келси, синдром самозванца — это еще и признак выхода из зоны комфорта, — а это помогает совершенствоваться. Так что когда вас снова «накроет», знайте, что это можно использовать во благо.

Переведено в Alconost
Читать дальше →
Всего голосов 27: ↑23 и ↓4+19
Комментарии6

Информация

В рейтинге
1 501-й
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer
Senior