Search
Write a publication
Pull to refresh
0
@seeker142read⁠-⁠only

User

Send message

learnopengl. Урок 1.7 — Трансформации

Reading time17 min
Views134K

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

learnopengl. Урок 1.6 — Текстуры

Reading time15 min
Views141K

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


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

learnopengl. Урок 1.4 — Hello Triangle

Reading time20 min
Views188K
В прошлом уроке мы таки осилили открытие окна и примитивный пользовательский ввод. В этом уроке мы разберем все азы вывода вершин на экран и воспользуемся всеми возможностями OpenGL, вроде VAO, VBO, EBO для того, чтобы вывести пару треугольников.
Заинтересовавшихся прошу под кат.
Читать дальше →

learnopengl. Урок 1.3 — Hello Window

Reading time8 min
Views113K
В прошлом уроке мы подготовили рабочее пространство и теперь мы полностью готовы создать окно.
Данный перевод подготовлен совместно с FERusM за что ему большое спасибо.
Заинтересовавшихся прошу под кат.
Читать дальше →

learnopengl. Урок 1.2 — Создание окна

Reading time8 min
Views163K
В прошлом уроке мы разобрались с тем, что такое OpenGL. В этом уроке мы поговорим о причине необходимости использования GLFW, GLEW и CMake, а также рассмотрим как их использовать. А также освежим в памяти, разницу между статической и динамической линковкой.

Заинтересовавшихся прошу под кат.
Читать дальше →

learnopengl. Урок 1.1 — OpenGL

Reading time7 min
Views357K
Здравствуйте. Несколько недель назад я начинал серию переводов статей по изучению OpenGL. Но на 4 статье один хабровчанин заметил, что мои переводы могут нарушать лицензию, по которой распространяются учебные материалы, предоставленные в исходной статье. И действительно, мои переводы нарушали лицензию. Для разрешения этой проблемы я обратился к авторам того набора уроков, но так и не смог добиться нормального ответа. По этой причине я связался с автором другого, не менее (а возможно даже и более) крутого, набора уроков по OpenGL: Joey de Vries. И он дал полное разрешение на перевод его набора уроков. Его уроки гораздо более обширные, чем прошлый набор, поэтому эти переводы растянутся на долго. И я обещаю, будет интересно. Заинтересовавшихся прошу под кат.

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

На счет уроков по Vulkan: к сожалению мне тяжело сейчас написать уроки по данному API по причине скудной видеокарты на данный момент, которая просто не поддерживает Vulkan API, поэтому уроки по данному API будут только после обновления видеокарты.
Читать дальше →

23 бесплатных инструмента расследования инцидентов для специалиста по информационной безопасности

Reading time5 min
Views82K


Утечки данных происходят почти каждый день. Согласно индексу утечки данных, с 2013 года более 4,762,376,960 записей было утеряно или украдено.
Читать дальше →

youtube-dl, или как скачать видео с YouTube в качестве 1080p и выше

Reading time5 min
Views405K
Видеохостинг YouTube — второй по посещаемости сайт в мире. Его смотрят с умных телевизоров, игровых и телевизионных приставок, настольных компьютеров и ноутбуков, планшетов и смартфонов. Не все из этих устройств требуют одинаковой картинки. Сетевая природа сервиса и потокового видео предполагает, что на сайте должны быть доступны опции просмотра в разном качестве.

Качество картинки на YouTube варьируется от 144p (144 строчки в прогрессивной развёртке) до 8K 4320p. Последнее видео в четыре раза крупнее 4К 2160p, в шестнадцать — 1080p, в тридцать шесть — 720p, который также называют HD.


Мало какой компьютер может проиграть это видео в его полном разрешении, а доступных по цене 8K-мониторов в мире просто нет.

Технология MPEG-DASH разбивает контент на куски, а браузер запрашивает эти сегменты автоматически. Логично хранить и отдавать отдельно видео и звук. У DASH есть жирный плюс: адаптивность воспроизведения.

Несколько лет назад пользователи YouTube заметили введение DASH по тому, что буферизация видео больше не шла до конца ролика, а ограничивалась примерно минутой. Около того же времени другая проблема возникла у скачивающих видео с YouTube. Внезапно обнаружилось, что ролики с качеством 1080p доступны в виде файлов без звука. Сайты-сервисы, которые раньше выдавали ссылки на скачивание видео, отдавали лишь 720p, не выше. Около 1080p стояло «без звука» или «только видео».
Читать дальше →

Как решать простые задачи оптимизации на питоне с помощью cvxpy

Reading time3 min
Views17K
Всем доброго времени суток! Простым поиском я не сумел обнаружить упоминание модуля cvxpy и потому решил написать обучающий материал по нему – просто примеры кода, по которым в дальнейшем новичку будет проще использовать этот модуль для своих задач. cvxpy предназначен для решения задач оптимизации – нахождения минимумов/максимумов функций при определённых ограничениях. Если вам интересна эта тема – прошу под кат.
Читать дальше →

Глубокое обучение для новичков: распознаем изображения с помощью сверточных сетей

Reading time27 min
Views105K

Введение


Представляем вторую статью в серии, задуманной, чтобы помочь быстро разобраться в технологии глубокого обучения; мы будем двигаться от базовых принципов к нетривиальным особенностям с целью получить достойную производительность на двух наборах данных: MNIST (классификация рукописных цифр) и CIFAR-10 (классификация небольших изображений по десяти классам: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль и грузовик).


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

Реализация классификации текста свёрточной сетью на keras

Reading time9 min
Views24K
Речь, как ни странно, пойдёт о использующем свёрточную сеть классификаторе текстов (векторизация отдельных слов — это уже другой вопрос). Код, тестовые данные и примеры их применения — на bitbucket (уперся в ограничения размера от github и предложение применить Git Large File Storage (LFS), пока не осилил предлагаемое решение).

Наборы данных


Использованы конвертированные наборы: reuters — 22000 записей, watson-й — 530 записей, и ещё 1 watson-й — 50 записей. Кстати, не отказался бы от подкинутого в комменты/ЛС (но лучше таки в комменты) набора текстов на русском.

Устройство сети


За основу взята одна реализация описанной тут сети. Код использованной реализации на github.

В моём случае — на входе сети находятся векторы слов (использована gensim-я реализация word2vec). Структура сети изображена ниже:


Вкратце:

  • Текст представляется как матрица вида word_count x word_vector_size. Векторы отдельных слов — от word2vec, о котором можно почитать, например, в этом посте. Так как заранее мне неизвестно, какой текст подсунет пользователь — беру длину 2 * N, где N — число векторов в длиннейшем тексте обучающей выборки. Да, ткнул пальцев в небо.
  • Матрица обрабатывается свёрточными участками сети (на выходе получаем преобразованные признаки слова)
  • Выделенные признаки обрабатываются полносвязным участком сети

Стоп слова отфильтровываю предварительно (на reuter-м dataset-е это не сказывалось, но в меньших по объему наборах — оказало влияние). Об этом ниже.
Читать дальше →

Сделать завтра. Как не тратить время на мелочи

Reading time6 min
Views62K
Поговорим немного об управлении временем. Об этом много пишут, но это как раз говорит о том, что тема очень востребована и полезна. Статья объединяет в себе методики Стивена Кови и Марка Форстера. Эти две методики оказались безумно полезными и на удивление эффективными. Пригодятся всем, кто ощущает завал делами и не успевает жить.


Онлайн курс по компьютерным сетям начального уровня

Reading time2 min
Views102K
Сейчас онлайн-курсы не создает только ленивый. Я решил присоединиться к этому движению и перенести в онлайн вводный курс по компьютерным сетям, который читаю в университете. Видео курса есть на YouTube в открытом доступе.


Зачем нужен еще один курс?


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

Я решил сделать курс начального уровня, в котором кратко и ёмко рассказать об основных понятиях компьютерных сетей. Для этого мне пришлось убрать из курса много сложных технических деталей, которые не являются обязательными для понимания принципов работы сетей. В результате получился короткий видеокурс, который можно посмотреть за обозримое время (2-3 дня). А после того, как вы поняли основные принципы, в технических деталях можно разобраться самостоятельно по книжкам или материалам в интернет.

Шишки и грабли Android-разработчика за 2 года

Reading time10 min
Views41K
image

Я ясно помню тот день в далеком 2014 году, когда я решил заняться программирование под Android. Это оказалось лучшим решением, которое я принял в моей жизни. Уже прошло почти два с половиной года, и за это время у меня возможность кое-чему научиться.

Когда я только начал, я не знал никого, кто мог бы научить меня, показать, как правильно нужно делать. И я совершил МНОЖЕСТВО ошибок, в так же потратил кучу времени на то, чтобы потом их исправить.

Полтора года спустя, мне выпал шанс поработать с очень талантливыми и опытными Android-разработчиками, которые направляли меня и помогли мне привести все в порядок. Эти две составляющие научили меня многому. Я понял, что надо ДЕЛАТЬ, а самое главное, что НЕ НАДО.

И уже какое-то время я, как могу, стараюсь помогать другим разработчикам — прямо или косвенно. Вот мои профили: StackOverflow и Github.

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

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

Приемы взятия сложных интегралов

Reading time3 min
Views43K

Интeгpaлы, чтo мoжeт быть вeceлee? Hу, вoзмoжнo нe для вcex, нo вce жe, я ужe дaвнo ничeгo нe пocтил тaкoгo cугубo мaтeмaтичecкoгo, тaк чтo пoпpoбую. Этoт пocт – пpo тo кaк бpaть «cлoжныe» интeгpaлы. Этoт пocт пoдpaзумeвaeт чтo читaтeль училcя тaки в шкoлe и знaeт тpивиaльныe пoдxoды (нaпpимep, интегрирование по частям). B пocтe мы будeм oбcуждaть тoлькo интeгpaлы Pимaнa, a нe интeгpaлы Лeбeгa-Cтилтьeca, Итo, Cкopoxoдa и тaк дaлee (xoтя я бы c удoвoльcтвиeм, чeccлoвo).


Becь этoт пocт — мaлeнькaя выбopкa peцeптoв или «пaттepнoв» кoтopыe мoжнo взять в кoпилку и пoтoм пpимeнять. Пocт peкoмeндуeтcя читaть нa high-DРI диcплee дaбы пpeдoтвpaтить глaзнoe кpoвoтeчeниe. Я пpeдупpeдил.


Если интересно...

Перевод: Анатомия игрового движка Total War, Часть 1

Reading time3 min
Views11K


Добрый день, уважаемые читатели. Вашему вниманию предлагается перевод увлекательной серии статей по архитектуре игрового движка Total War.

Кому интересно, добро пожаловать под кат!
Читать дальше →

Глубокое обучение для новичков: распознаем рукописные цифры

Reading time11 min
Views108K

Представляем первую статью в серии, задуманной, чтобы помочь быстро разобраться в технологии глубокого обучения; мы будем двигаться от базовых принципов к нетривиальным особенностям с целью получить достойную производительность на двух наборах данных: MNIST (классификация рукописных цифр) и CIFAR-10 (классификация небольших изображений по десяти классам: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль и грузовик).



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

Как устроен парсер Python, и как втрое уменьшить потребление им памяти

Reading time12 min
Views50K
Любой, кто изучал устройство языков программирования, примерно представляет, как они работают: парсер в соответствии с формальной грамматикой ЯП превращает входной текст в некоторое древовидное представление, с которой работают последующие этапы (семантический анализ, различные трансформации, и генерация кода).

КДПВ

В Python всё немного сложнее: парсеров два. Первый парсер руководствуется грамматикой, заданной в файле Grammar/Grammar в виде регулярных выражений (с не совсем обычным синтаксисом). По этой грамматике при помощи Parser/pgen во время компиляции python генерируется целый набор конечных автоматов, распознающих заданные регулярные выражения — по одному КА для каждого нетерминала. Формат получающегося набора КА описан в Include/grammar.h, а сами КА задаются в Python/graminit.c, в виде глобальной структуры _PyParser_Grammar. Терминальные символы определены в Include/token.h, и им соответствуют номера 0..56; номера нетерминалов начинаются с 256.

Проиллюстрировать работу первого парсера проще всего на примере. Пусть у нас есть программа if 42: print("Hello world").
Читать дальше →

Основы левел-дизайна

Reading time5 min
Views39K

Уже в течение восьми лет я занимаюсь созданием многопользовательских карт для моддинг-сообщества Call of Duty. За эти годы я освоил различные правила и принципы дизайна, которые успешно применяю в процессе левел-дизайна. Я поэтапно расскажу вам о том, как создать интересную многопользовательскую карту.

В этой статье я буду говорить о разработке многопользовательской карты для Call of Duty: Modern Warfare. Давайте назовём её «Tugurios». Она будет создаваться в антураже трущоб. Теперь мы немного поговорим об истории и сеттинге карты.
Читать дальше →

50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков

Reading time44 min
Views238K


Go — простой и забавный язык. Но в нём, как и в любых других языках, есть свои подводные камни. И во многих из них сам Go не виноват. Одни — это естественное следствие прихода программистов из других языков, другие возникают из-за ложных представлений и нехватки подробностей. Если вы найдёте время и почитаете официальные спецификации, вики, почтовые рассылки, публикации в блогах и исходный код, то многие из подводных камней станут для вас очевидны. Но далеко не каждый так начинает, и это нормально. Если вы новичок в Go, статья поможет сэкономить немало часов, которые вы бы потратили на отладку кода. Мы будем рассматривать версии Go 1.5 и ниже.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity