Pull to refresh
8
0
Василий @VasilyK

Программист C++

Send message

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

Reading time6 min
Views15K


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


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


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

Читать дальше →
Total votes 99: ↑90 and ↓9+81
Comments60

Почему строить базу знаний компании на основе mediawiki — недурная затея

Reading time8 min
Views41K


В последнее время Confluence и sharepoint стали почти безраздельно править на рынке баз знаний. Системы отличные, не спорю, но лично мне не хватает их гибкости да и в целом как-то не срослось: вики-возможности sharepoint остались где-то на уровне 2005 года (про работу с офисными документами молчу, с ними все гуд), а Confluence в силу своих особенностей с ростом числа статей неумолимо превращался в свалку, в которой невозможно найти что-либо нужное (но, может, проблема была во мне).

Не умаляя достоинства этих систем, хотелось бы рассказать о том, какие возможности есть у Mediawiki в роли корпоративной базы знаний. Само собой, mediawiki подойдет не всем — в ней нет модной интеграции с jira/tfs/etc, перенос документов с картинками из пакета Microsoft Office доставляет кучу неудобств, да и сама она написана на PHP, что в последнее время служит отпугивающим фактором для некоторых айтишников. Тем не менее, платформа живее всех живых и над ее развитием работает изрядное количество людей, коль скоро на ней базируется семейство проектов фонда Викимедиа.
Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments63

Гибкая система тестирования и сбора метрик программ на примере LLVM test-suite

Reading time10 min
Views4K

Введение


Большинство разработчиков однозначно слышали о довольно значимых open-source разработках таких, как система LLVM и компилятор clang. Однако LLVM сейчас не только непосредственно сама система для создания компиляторов, но уже и большая экосистема, включающая в себя множество проектов для решения различных задач, возникающих в процессе любого этапа создания компилятора (обычно у каждого такого проекта существует свой отдельный репозиторий). Часть инфраструктуры естественно включает в себя средства для тестирования и бенчмаркинга, т.к. при разработке компилятора его эффективность является очень важным показателем. Одним из таких отдельных проектов тестовой инфраструктуры LLVM является test-suite (официальная документация).

LLVM test-suite


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

Курс MIT «Безопасность компьютерных систем». Лекция 5: «Откуда берутся ошибки систем безопасности», часть 1

Reading time17 min
Views12K

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Total votes 20: ↑20 and ↓0+20
Comments1

Кулинарный путеводитель по архитектурам AI

Reading time21 min
Views53K
image

Мне постоянно приходится слышать от студентов и начинающих гейм-дизайнеров – да, честно говоря, и от бывалых программистов тоже – один и тот же вопрос, который звучит примерно так: “Какую архитектуру AI мне выбрать для своего проекта?”. Этим вопросом пестрят форумы, его можно услышать на конференции разработчиков игр GDC, и, конечно же, его не один раз вспоминают во время пре-продакшна создатели любой игры – от AAA-класса до инди. Я работаю консультантом по игровому AI, поэтому я постоянно слышу ее от своих клиентов.

Обычно, самый лучший ответ на этот вопрос – «Когда как». Вот только подобный ответ мало кого устраивает, поэтому после него мне приходится устраивать самый настоящий допрос.
Читать дальше →
Total votes 83: ↑76 and ↓7+69
Comments6

Как следует писать комментарии к коммитам

Reading time11 min
Views134K


Предисловие от переводчика


На протяжении многих лет разработки ПО, будучи участником многих команд, работая с разными хорошими и опытными людьми, я часто наблюдал (да и чего греха таить, до определенного момента — создавал) одну и ту же проблему — тотальный бардак в репозитории. Каждый писал комментарии к коммитам в своем стиле (и хорошо, если постоянно в одном); половина комментариев была бесполезна (из разряда "это мост"), половина оставшейся половины — едва понятна.

И вот в один прекрасный момент я увидел данную статью, до перевода которой у меня наконец дошли руки. Всего 7 простых и коротких правил, и — о чудо — смотреть на историю коммитов стало не только полезно, но и приятно. Ничего революционного, все довольно очевидно, но сформулировано и резюмировано просто отлично.
Читать дальше →
Total votes 55: ↑51 and ↓4+47
Comments115

Создание приложения-раскраски на Unity3D

Reading time6 min
Views17K
image

Эта история началась одним морозным весенним вечером, когда в голову пришел вопрос: а есть ли способ определять степень заливки произвольной геометрической фигуры краской (то есть, на сколько процентов она в данный момент закрашена)? Да так, чтобы это не просто не тормозило, а летало на 60 fps на самых слабых мобильных девайсах.

Для тех, кто не сразу понял, о чем речь, поясню: к проблеме возможен как растровый подход, так и… не растровый.
Читать дальше →
Total votes 35: ↑32 and ↓3+29
Comments14

DevTube — новый open source-агрегатор видеоматериалов для разработчиков

Reading time3 min
Views17K
Сегодня ночью два разработчика из Риги, Андрей Адамович и Эдуард Сизов опубликовали на GitHub свой open source-проект агрегатора с видеоматериалами для разработчиков DevTube. На сайте уже реализована система фильтров по тегам, таким как Mobile, JavaScript, Testing и другим, а также по спикерам и языкам видео. Проект заявлен как некоммерческий: на сайте нет ничего лишнего, только навигация, превью к видео и такая ключевая информация как теги, продолжительность, дата загрузки, количество просмотров и лайков. Очевидно, ресурс будет полезен тем, кому нужны выступления и видеоматериалы по конкретным языкам или направлениям разработки.



Сейчас на ресурсе преобладает англоязычный контент, что неудивительно. Также разработчики заявили о старте коллективной работы по наполнению этого некоммерческого ресурса: подать заявку на добавление или удаление видео с DevTube можно через пулл-реквест на GitHub, о чем сообщается в README.md. Вот как идею создания такого ресурса прокомментировал один из разработчиков, Андрей codingandrey Адамович:
Читать дальше →
Total votes 55: ↑54 and ↓1+53
Comments30

Тайм-менеджмент – это не страшно: как успевать больше

Reading time5 min
Views21K
Мы разные: кто-то привык выполнять задачи в строгой последовательности, кому-то достаточно примерного плана действий, а кому-то для эффективной работы очень важно быть в хорошем настроении. Но во многом мы похожи: например, в том, что хотим больше успевать.

Как эффективнее распоряжаться своим временем на работе, помогала разбираться тренер по тайм-менеджменту, HR-специалист Wrike, Дарья Игнатович.


Читать дальше →
Total votes 11: ↑8 and ↓3+5
Comments16

15 советов по работе с Github

Reading time8 min
Views62K

Я 10 лет разрабатываю ПО, участвовал в нескольких open source-проектах и в многочисленных не-open source-проектах, работал в больших и малых командах, и везде мы использовали Github в качестве репозитория версионирования.

За это время я перепробовал разные рабочие процессы, и хочу поделиться советами, как построить эффективный и прагматичный рабочий процесс по созданию и сопровождению качественного ПО, который можно применять в любом проекте.
Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments25

Разработка игры для нескольких платформ: постмортем Cat Quest

Reading time9 min
Views8.8K
image

На переполненном рынке инди-игр разработчикам всё сложнее становится зарабатывать деньги. Поэтому всё более оправданным оказывается выпуск игры на как можно большем количестве платформ для максимального роста прибыли.

Наша компания The Gentlebros(@TheGentlebros) разработала небольшую игру под названиеми Cat Quest. Она опубликована уже около полугода назад (как же летит время!) для Switch, в Steam, PS4 и на мобильных устройствах!


Мы решили поделиться нашим опытом по выпуску одной игры на нескольких платформах и рассказать о том, что мы сделали правильно, а в чём ужасно ошиблись!
Total votes 18: ↑18 and ↓0+18
Comments2

Онлайн шутер на Unreal Engine 4 за 90 часов (видео создания + исходники)

Reading time5 min
Views62K
Привет, харб! Примерно год назад я выкладывал статью о том, как я в прямом эфире создал выживалку за 150 часов. На этот раз хочу представить вам сетевой шутер, который я создал за 25 заходов по 3 — 4 часа. Всего вышло около 90 часов и в итоге мы создали онлайн шутер, в который сыграли вместе со зрителями.

image

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

Несмотря на чистое время, данный проект занял примерно 10 месяцев. Я делал большие перерывы в стримах, но тем не менее, закончил разработку и теперь он доступен всем бесплатно и без смс.
Если вас интересуют подробности, записи стримов, исходники или билд игры с сервером в комплекте, предлагаю прочитать дальше под катом!
Total votes 64: ↑63 and ↓1+62
Comments27

Руководство для практикующего специалиста, как читать научные статьи по языкам программирования

Reading time6 min
Views14K
Неделю назад я пошутил, что статьи по принципам языков программирования POPL должны соответствовать критерию «интеллектуального запугивания», чтобы их принимали для публикации. Конечно, это неправда, но факт в том, что статьи по языкам программирования выглядят особенно устрашающе для специалистов-практиков (или академик действительно работает в другой области компьютерных наук!). Они битком набиты математическими символами и такими фразами как «суждения», «операционная семантика» и тому подобное. Там много тонких вариантов записи, но вы можете в основном уловить суть статьи, усвоив несколько базовых понятий. Так что вместо рассказа об очередной научной статье я подумал, что сегодня лучше напишу краткое практическое руководство по расшифровке научных статей на тему языков программирования. Здесь я следую книге Бенджамина Пирса «Типы в языках программирования» в качестве авторитетного источника.
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments4

Ещё одна статья про кватернионы и углы Эйлера

Reading time4 min
Views32K
По работе у меня возникла необходимость переводить координаты объекта из углов Эйлера в кватернионы и обратно.

В ходе разбирательства пришлось прочитать несколько статей на Хабре, посвященных кватернионам и углам Эйлера, Википедию и просто методички и статьи разных ВУЗов. Для удобства приведу ссылки на статьи, с Хабра:

Каверзные кватернионы
Заметки о вращении вектора кватернионом
Кватернионы для чайников
Кручу-верчу, запутать хочу. Углы Эйлера и Gimbal lock

Формулы для пересчёта углов Эйлера в кватеринионы и обратно найти можно, но
если бы всё было так просто...
Total votes 25: ↑20 and ↓5+15
Comments30

Создание атмосферного викторианского города из модулей

Reading time7 min
Views24K
Майкл Эндрюс рассказал, как он использовал модульный подход при создании красивого фрагмента выдуманного города; интересная работа с освещением и архитектурой.


Введение


Привет, меня зовут Майкл Эндрюс. Мне двадцать лет, я студент из северного Нью-Джерси. Сейчас я учусь на третьем курсе колледжа Чемплейн по специальности «игровая графика и анимация». Я специализируюсь на моделировании твердотельных пропсов, текстурировании и графике окружений. До недавнего времени я работал только над учебными проектами, создавал различные пропсы и окружения для развития моих художественных и технических навыков. Программа колледжа дала мне инструменты, необходимые для успешной работы после выпуска. Я только что окончил семестр в Монреале, где учился у Винсента Джойала (Vincent Joyal), который помог мне понять графику окружений и научил создавать достойные работы.

Проект


В начале каждого проекта я в первую очередь смотрю на общую картину и решаю, какие основные аспекты я хочу передать. Нынешняя моя работа основывается на концепте Джиорджио Греку (Giorgio Grecu). С самого начала я знал, что хочу передать масштаб и атмосферу картины. Я осознавал, что для меня этот концепт выделился на фоне остальных своим освещением, архитектурой и дымом/туманом. Передача этих аспектов стала основной сложностью проекта. Ещё одной существенной сложностью была компоновка переднего плана. Я решил не использовать в этой работе людей, потому что они сильно отвлекали бы зрителя от композиции. Эта проблема решилась добавлением новых уровней на плоскости земли в виде лестниц. Также я добавил скамейки, фонтан, ещё одну арку, мелкие листья и другие детали, которые сделали пространство более заполненным. Кроме переднего плана, серьёзной задачей было создание большого количества модулей и масштабность самой архитектуры. Потребовались считанные часы, чтобы сделать моделирование интересным и в то же время по-прежнему правдоподобным.
Читать дальше →
Total votes 55: ↑53 and ↓2+51
Comments8

Хочу как у YouTube

Reading time11 min
Views39K

Вы когда-нибудь задумывались как устроен ID видео на YouTube?
Возможно, вы уже знаете/нашли ответ, но, как показали обсуждения на Stack Overflow, многие понимают эту технологию неправильно. Если вам интересно изучить что-то новое, добро пожаловать под кат.


Хочу как у YouTube
Читать дальше →
Total votes 44: ↑33 and ↓11+22
Comments61

Создаём собственный физический 2D-движок: части 2-4

Reading time32 min
Views38K
image


Оглавление


Часть 2: ядро движка

  • Интегрирование
  • Метки времени
  • Модульная архитектура
    • Тела
    • Формы
    • Силы
    • Материалы
  • Широкая фаза
    • Отсечение дубликатов контактных пар
    • Система слоёв
  • Проверка пересечения полупространств

Часть 3: трение, сцена и таблица переходов

  • Трение
  • Сцена
  • Таблица переходов коллизий

Часть 4: ориентированные твёрдые тела

  • Математика вращения
  • Ориентированные формы
  • Распознавание коллизий
  • Разрешение коллизий

Total votes 52: ↑51 and ↓1+50
Comments8

Создаём собственный физический 2D-движок. Часть 1: основы и разрешение импульсов силы

Reading time14 min
Views66K
image


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

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

В этой части туториала мы рассмотрим следующие темы:

  • Простое распознавание коллизий
  • Генерирование простого многообразия
  • Разрешение импульсов силы
Total votes 42: ↑41 and ↓1+40
Comments21

C++17

Reading time26 min
Views86K

Рисунок 2


Язык C++ постоянно развивается, и нам как разработчикам статического анализатора важно следить за всеми изменениями, чтобы поддерживать все новые возможности языка. В этой обзорной статье я хотел бы поделиться с читателем наиболее интересными нововведениями, появившимися в C++17, а также продемонстрировать их на примерах.
Читать дальше →
Total votes 94: ↑88 and ↓6+82
Comments177

Поддержка системных ошибок в C++

Reading time23 min
Views31K

Предисловие


Я долго думал, нужно ли делать перевод этого, уже известного, цикла статей под названием «System error support in C++0x», повествующего о <system_error> и обработке ошибок. С одной стороны он написан в 2010 году и меня попросту могут счесть некрофилом, а с другой стороны в рунете очень мало информации по этой теме и многие довольно свежие статьи ссылаются на этот цикл, что говорит о том, что он не теряет актуальности и по сей день.

Потому я решил, что увековечить сей труд в граните на Хабре будет неплохой идеей.

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

Итак, приступим.
Читать дальше →
Total votes 36: ↑36 and ↓0+36
Comments11
1

Information

Rating
Does not participate
Registered
Activity