Как стать автором
Обновить
16
0
Владимир Гладков @vovkos

User

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

Ржавая очевидность

Время на прочтение7 мин
Количество просмотров20K
Каждый ищет в языках программирования что-то своё: кому-то важна функциональная сторона, кому-то богатство библиотек, а другой сразу обратит внимание на длину ключевых слов. В данной статье я хотел бы рассказать, что особенно важно для меня в Rust — его очевидность. Не в том, что его легко изучить с нуля, а в том, как легко исследовать поведение кода, глядя на его фрагменты. Я перечислю особенности языка, позволяющие точно определить, что делает та или иная функция, вырванная из контекста.

Особенно отмечу, что не пытаюсь полностью описать язык, а только одну его сторону. Это мой личный взгляд на философию Rust, не обязательно совпадающий с официальной позицией разработчиков! Кроме того, Rust не будет очевиден пришельцу из других языков: кривая обучение довольно резкая, и не раз компилятор заставит вас мысленно сказать «wtf» на пути к просветлению.
Читать дальше →

Пытаемся сделать мониторинг по SNMP действительно простым

Время на прочтение6 мин
Количество просмотров124K
Уже немало написано о том, что в названии Simple Network Management Protocol слово Simple можно смело писать в кавычках. Протокол SNMP является достаточно простым с точки зрения создания SNMP-агентов, однако на стороне управляющего ПО (SNMP manager) грамотная обработка сложных по структуре данных обычно является нетривиальной задачей.



Мы попытались упростить процесс настройки сбора данных и событий SNMP и позволить пользователям во время этого процесса:

  • Никогда не заглядывать внутрь MIB-файлов
  • Не знать, что такое OID-ы и никогда не оперировать с ними
  • Не пользоваться отдельной SNMP-утилитой для предварительного просмотра данных во время настройки

Как мы это делали и что из этого получилось

Заглянем за кулисы разработки: подборка исходных кодов классических игр

Время на прочтение10 мин
Количество просмотров84K
Обожаю заглядывать за кулисы. Мне интересно, как делаются вещи. Мне кажется, что большинству людей это тоже интересно.

Исторически так сложилось, что видеоигры не делятся исходниками. Конечно, они ведь предназначены для игроков. Но для программистов там всегда есть, на что посмотреть. И некоторые игры всё-таки выпускали свои исходники. А я давно намеревался сделать такую подборку.

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

Многие игры после выпуска исходников были улучшены и дополнены сообществом – я намеренно даю ссылки только на оригинальные исходники. Так что, если вас вдруг интересуют апгрейды – они могут существовать.

Многие игры были рассмотрены на сайте Fabien Sanglard. Если вам интересны подробности их работы, то пожалуйте к нему.

Можно заметить, что многие игры принадлежат id Software/Apogee. Совпадение? Не думаю. id славится открытостью и привычкой выпускать исходники. Старые коммерческие игры уже не имеют ценности и были бы потеряны – не лучше ли, чтобы кто-то учился чему-то полезному на их основе?

Итак, приступим (в хронологическом порядке):
Читать дальше →

CLion 1.0 — мощный инструмент для мощного языка

Время на прочтение6 мин
Количество просмотров58K
В сентябре прошлого года мы порадовали вас новостью о начале программы публичного превью (Public Early Access Program) нашей новой кросс-платформенной IDE для разработки на C и C++ — CLion. А уже сегодня мы готовы сказать — релиз CLion 1.0 состоялся! За два года от первого (полушутливого) объявления о начале разработки C++ IDE мы прошли огромный путь — переосмыслили свои навыки и умения по работе с кодом на C++, дружно освоили CMake, расширили команду, протестировали CLion на десятках больших проектов на C и C++.

Но самое главное — это каждодневная поддержка C++ коммьюнити, которое (спасибо вам!) приняло нас очень благосклонно. Спасибо за слова поддержки, репорты багов, предложения новых фич, сотни ретвитов и репостов наших новостей и анонсов! Сегодня мы готовы показать вам и рассказать, что же вошло в CLion 1.0.


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

Быстрое обнаружение поддерживаемых SNMP-устройством MIB-модулей

Время на прочтение5 мин
Количество просмотров21K
При внедрении систем мониторинга и управления IT-инфраструктурой часто приходится сталкиваться с «нестандартными» устройствами. Нередко про такое устройство наверняка известно только то, что оно поддерживает SNMP. Подключение его к проекту придется начать с ответа на вопрос о том, какую информацию о себе оно предоставляет. Обычно для этого проводится полный опрос устройства, и полученные данные анализируются на предмет выявления полезной информации… Но тут, как говорится, есть нюансы. В этой заметке я расскажу об одном таком — о разработанном нами алгоритме быстрого определения «поддерживаемых» устройством MIB-модулей.
Читать дальше →

Делаем скриншоты правильно: практические советы

Время на прочтение8 мин
Количество просмотров190K
Устройство для снимка экрана на первых компьютерах (Command-Shift-3)
Устройство для снимка экрана на первых компьютерах (Command-Shift-3)

Если вы когда-либо делали хелп или мануал для своего приложения, наверняка вы отметили, как неожиданно много времени и сил занимает создание скриншотов.

Ведь кажется, что скриншот — это “секунда работы, Alt+PrintScreen и Ctrl+V!”. Некоторые клиенты удивляются, когда слышат, что скриншот в мануале может стоить и $2 и даже $5.

В этой статье я расскажу, как правильно делать скриншоты, почему это не просто “два клика” и какие подводные камни встречаются на пути неопытного скриншотера. Рассматривайте ее как чеклист или список практических советов для тех, кто документирует ПО. Надеюсь, это поможет вам избежать разочарований и порадовать юзеров красочными понятными картинками.
Читать дальше →

Путь постижения AppStore или сколько стоит опыт?

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


Всегда любил читать истории разработчиков. Мне нравилось пересчитывать их победы и доходы, но особенно — представлять себя на их месте. Не обращал внимание на истории с грустным концом. Шел вперед с горящими глазами и думал, что этого будет достаточно.

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

Как я решил уйти в геймдев

Время на прочтение13 мин
Количество просмотров64K
Это история о том, как я бросил все и начал делать игры.

Шаг нулевой — решение


Почти десять лет я занимался электронным документооборотом. Наверное, если бы мне кто-нибудь десять лет назад сказал, что я в этом настолько серьезно увязну — не поверил бы. Тем не менее, хоть предметная область и не менялась, довольно долгое время мне все это было интересно. Интересно было создавать службу поддержки вместо повинности программистов дежурить по очереди, интересно было создавать всероссийское (ух, слово-то какое пафосное) сообщество разработчиков, интересно было встречаться с сотнями неглупых людей из десятков ведущих российских компаний, от производителей бургеров до строителей АЭС. Постоянно искать хитрые решения нестандартных запросов. На этом месте часто пишут «и вот в один прекрасный день я понял...», но, на самом деле, такого дня не было.
Читать дальше →

Как Уитфилд Диффи помог Бобу и Алисе обмануть Еву

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


Многие специалисты полагают, что концепция Диффи до сих пор является самым большим шагом вперед за всю историю криптографии. В 1976 году Уитфилд Диффи и его соавтор, стэнфордский профессор Мартин Хеллман, опубликовали научную работу «New Directions in Cryptography». В исследовании был представлен алгоритм обмена ключами, который и сегодня широко используется в криптографических приложениях.
Читать дальше →

Вы неправильно пишете животных

Время на прочтение5 мин
Количество просмотров384K
Животные – это платформы с очень ограниченной памятью, вычислительными способностями и возможностями модификаций. Разработчикам энимал-сцены приходится выдавать практически гениальные низкоуровневые алгоритмы. Правда, большое количество хардкода вызывает характерные проблемы с отсутствием проверки в экзотических условиях. Та же фильтрация входных данных делается очень и очень криво.


Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

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

Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
Читать дальше →

Создание мультиплеерного 3D-шутера на Webgl без опыта и денег

Время на прочтение9 мин
Количество просмотров35K
Это первая часть истории о том, как маленькая команда веб-разработчиков разработала мультиплеерный 3d-шутер без опыта в геймдеве, больших денег и штата сотрудников.

Дисклеймер: некоторые описанные в статье решения могут вызывать фейспалм.




2011 год. С чего все началось


В 2011 году мы были маленькой питерской веб-студией из 4 человек. Тимлид/сеошник, программист (вернее считал себя программистом), дизайнер и менеджер по продажам. На тот момент тимлид и программист занимались сайтами уже 3 года, но особых успехов на этом поприще не достигли. Хотя мы имели уже несколько постоянных клиентов на продвижении и обслуживании, но львиную долю дохода съедали налоги, аренда офиса и прочие расходы. Оставшихся копеек на четырех человек явно не хватало. Хроническое безденежье и отсутствие перспектив угнетали. Дизайнер уже навострил лыжи, да и остальные члены команды едва держались. Вот в такой обстановке и пришла в голову потрясающая по наивности мысль: «чего это мы все для всяких дядь делаем проекты, а давайте свое что-нибудь сделаем, например, игру браузерную и запилим её во вконтакте». Все, кроме дизайнера, восприняли идею с воодушевлением.
Читать дальше →

AggreGate Network Manager: платформа+коробка для зонтичного мониторинга IT-инфраструктуры

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


Диагностика проблем надежности и производительности в сложных ИТ-инфраструктурах требует понимания целостной картины всех процессов и событий, а также возможности отслеживать важнейшие тренды. Необходимость внедрения единой («зонтичной») системы управления ИТ-инфраструктурой обоснована классическими для бизнеса причинами:

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

Как два программиста хлеб пекли

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


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

Итак, представим себе, что есть два программиста. Один из них умный, прочёл кучу статей на Хабре, знает каталог GoF наизусть, а Фаулера — в лицо. Другой же делает всё просто. Первого будут звать, например, Борис Н., а второго — Маркус П. Само собой, имена вымышленные, и все совпадения с реальными людьми и программистами случайны.

Итак, к ним обоим приходит проектный менеджер (если в вашей вселенной PM не ходит сам к программистам, назовите его как-то иначе, например BA или lead, сути это не изменит) и говорит:
— Ребята, нам нужно, чтобы делался хлеб.

Именно так, «делался», без уточнения способа производства.

Как же поступят наши программисты?
Читать дальше →
2

Информация

В рейтинге
Не участвует
Откуда
Тайбэй, Тайвань, Тайвань
Дата рождения
Зарегистрирован
Активность