Search
Write a publication
Pull to refresh
2
0
Send message

«Основы программирования» набор на бесплатный курс с примерами на JavaScript

Reading time4 min
Views46K


Дорогие товарищи инженеры и будущие инженеры, сообщество Метархия открывает набор на бесплатный курс «Основы программирования», который будет доступен на youtube и github без всяких ограничений. Часть лекций уже записана в конце 2018 и начале 2019 года, а часть будет прочитана в Киевском политехническом институте осенью 2019 года и сразу же доступна на канале курса. Начало курса 3 сенября. Опыт предыдущих 5 лет, когда я делал более сложные лекции, показал необходимость лекций и для самых начинающих. В этот раз, по многочисленным просьбам студентов, я постараюсь добавить много материалов по основам программирования и, по возможности, абстрагировать курс от JavaScript. Конечно большинство примеров останутся на JavaScript, но теоретическая часть будет гораздо шире, и не ограничится синтаксисом и API языка. Часть примеров будет на TypeScript и C++. Это не курс по голому JavaScript, но фундаментальный курс по основам программирования, включая основные концепции и шаблоны проектирования для разных парадигм, функционального, процедурного, объектно-ориентированного, обобщенного, асинхронного, реактивного, параллельного, мультипарадигменного и метапрограммирования, а так же основы структур данных, тестирования, принципы построения структуры и архитектуры проектов.

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

Я написал эту статью, ни разу не посмотрев на клавиатуру

Reading time5 min
Views118K
В начале года я почувствовал, что упёрся в потолок как инженер. Вроде бы читаешь толстые книжки, решаешь на работе сложные задачи, на конференциях выступаешь. А всё не то. Поэтому я решил вернуться к корням и по очереди закрыть навыки, которые когда-то в детстве считал базовыми для программиста.

Первой в списке стояла слепая печать, которую давно откладывал. Теперь считаю её необходимой для каждого, для кого код и конфигурация – профессия. Под катом расскажу как перевернулся мой мир, и поделюсь советами как перевернуть ваш. Заодно приглашаю поделиться своими рецептами и мнениями.


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

Независимый обзор PVS-Studio (Linux, C++)

Reading time5 min
Views16K

Увидел публикацию о том, что PVS таки научился анализировать под Линуксами, и решил попробовать на своих проектах. И вот что из этого получилось.

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

Трюк с тригонометрией

Reading time4 min
Views28K

Скорее всего, вам известны следующие соотношения еще со школы:


$\sin(\alpha + \beta) = \sin\alpha \times \cos\beta + \cos\alpha \times \sin\beta \\ \cos(\alpha + \beta) = \cos\alpha \times \cos\beta - \sin\alpha \times \sin\beta$


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


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

Роскачество представило рейтинг проводных и беспроводных наушников, доступных в России

Reading time3 min
Views23K

Лидер рейтинга беспроводных наушников: Sony WH-1000XM2

Роскачество совместно с Международной ассамблеей организаций потребительских испытаний (ICRT) провели развернутое исследование разных моделей наушников из самых разных ценовых категорий. По итогам исследования составлен рейтинг лучших устройств, которые доступны для российских покупателей.

Всего специалисты изучили 93 пары проводных и 84 пары беспроводных наушников разных брендов (при этом профессиональные студийные модели не тестировались). Все модели проверялись по таким параметрам, как качество системы передачи звукового сигнала, прочность наушников, функциональность, качество звучания и удобство в использовании.
Читать дальше →

Создание игры Tower Defense в Unity: баллистика

Reading time21 min
Views13K
[Первая, вторая и третья части туториала]

  • Поддержка разных типов башен.
  • Создание башни-мортиры.
  • Вычисление параболических траекторий.
  • Запуск взрывающихся снарядов.

Это четвёртая часть туториала, посвящённого созданию простой игры в жанре tower defense. В ней мы добавим башни-мортиры, стреляющие детонирующими при столкновении снарядами.

Туториал создавался в Unity 2018.4.4f1.


Враги подвергаются бомбардировке.
Читать дальше →

CMake и C++ — братья навек

Reading time11 min
Views94K

Дружба навек


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


Многие ругают CMake, и часто заслуженно, но если разобраться, то не всё так плохо, а в последнее время очень даже неплохо, и направление развития вполне позитивное.


В данной заметке я хочу рассказать, как достаточно просто организовать заголовочную библиотеку на языке C++ в системе CMake, чтобы получить следующую функциональность:


  1. Сборку;
  2. Автозапуск тестов;
  3. Замер покрытия кода;
  4. Установку;
  5. Автодокументирование;
  6. Генерацию онлайн-песочницы;
  7. Статический анализ.

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

Заземление. Что это такое и как его сделать (часть 1)

Reading time12 min
Views592K


Мой рассказ будет состоять из трёх частей.

1 часть. Заземление
(общая информация, термины и определения)


2 часть. Традиционные способы строительства заземляющих устройств
(описание, расчёт, монтаж)


3 часть. Современные способы строительства заземляющих устройств
(описание, расчёт, монтаж)


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

Если читатель обладает теоретическими знаниями и интересуется только практической реализацией — ему лучше пропустить первую часть и начать чтение со второй части.

Если читатель обладает необходимыми знаниями и хочет познакомиться только с новинками — лучше пропустить первые две части и сразу перейти к чтению третьей.

Мой взгляд на описанные методы и решения в какой-то степени однобокий. Прошу читателя понимать, что я не выдвигаю свой материал за всеобъемлющий объективный труд и выражаю в нём свою точку зрения, свой опыт.

Некоторая часть текста является компромиссом между точностью и желанием объяснить “человеческим языком”, поэтому допущены упрощения, могущие “резать слух” технически подкованного читателя.

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

Изучаем английский: 9 идиом в американском стиле

Reading time3 min
Views20K
image

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

Проблема в том, что идиом в этом языке довольно много, при этом трудно разобраться в том, какие относятся к Британской версии английского, а какие – к используемой в США. Я нашла интересный пост с подборкой интересных идиом в американском стиле и подготовила его адаптированный перевод.
Читать дальше →

Какие факторы могут предсказать успех игры в Steam?

Reading time11 min
Views9.1K
image

На Reddit я видел множество дискуссий, комментариев и вопросов о том, чем определяется успех игры. Насколько важно качество? Действительно ли единственным определяющим аспектом является большая известность игры на рынке до её выпуска? Помогают или вредят демо-версии? Если показатели игры при выпуске оказались плохими, то какова вероятность их исправления? Можно ли хотя бы приблизительно предсказать объёмы продаж игры до её выпуска?

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

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

Сначала примечания по данным:

  • Один из важнейших источников данных — количество обзоров в Steam. Есть достоверные свидетельства того, что оно сильно коррелирует с количеством проданных копий, часто упоминаются соотношения «50 продаж на один обзор в Steam», но диапазон значений довольно широк. Похоже, большинство игр Steam попадает в интервал от 25 до 120 продаж на один обзор на Steam, но случаются и выбросы. Кроме того, игры с очень малым количеством обзоров с большей вероятностью в этом отношении будут выбросами. Моя игра — единственная, по которой у меня есть чёткие цифры продаж. Можете прочитать мой длинный пост о её релизе на Reddit, но самое важное для нас то, что я продал 1587 копий за первую неделю и 3580 копий за первый квартал.
  • Общее количество игр в выборке: 115.
  • Я выбирал игры полуслучайно, из разделов Popular Upcoming и All Upcoming. Это склоняет выборку больше в сторону популярных игр, и я сделал так намеренно: мне хотелось иметь разнообразную выборку, но чтобы в ней не доминировали полностью игры с нулевыми продажами.
  • Игры упорядочены по дате выпуска, которая находится в интервале от 26.10.18 до 20.12.18.
Читать дальше →

Нейросети и глубокое обучение, глава 4: визуальное доказательство того, что нейросети способны вычислить любую функцию

Reading time21 min
Views21K
В данной главе я даю простое и по большей части визуальное объяснение теоремы универсальности. Чтобы следить за материалом этой главы, не обязательно читать предыдущие. Он структурирован в виде самостоятельного эссе. Если у вас есть самое базовое представление о НС, вы должны суметь понять объяснения.


Один из наиболее потрясающих фактов, связанных с нейросетями, заключается в том, что они могут вычислить вообще любую функцию. То есть, допустим, некто даёт вам какую-то сложную и извилистую функцию f(x):


8 советов начинающим программистам или ретроспектива моей карьеры

Reading time5 min
Views45K


Ровно 15 лет назад, в этот самый день, своими дрожащими коленками я переступил порог офиса небольшого провинциального интернет-провайдера. Моя первая настоящая работа в качестве программиста. Знаний почти нет. Тонкий испуганный голосок откуда-то из желудка советует развернуться и убежать подальше, пока окончательно не опозорился. Глубокий вдох-выдох, и вот генеральный директор уже ведет меня в небольшую комнатку-подвальчик, показывает на полуразобранный компьютер, видавший лучшие времена: «Это твое рабочее место. Устраивайся». Так началась моя карьера.

Но перенесемся в настоящее. Сейчас я пишу эти строки, сидя в удобном офисе престижного БЦ в центре Москвы. За плечами работа с крупными международными брендами и разработка сложных fintech приложений. Сотни книг прочитано и десятки статей написано. Мания величия давно вылечена. Менеджерские позиции опробованы и отвергнуты. Душевное равновесие найдено. Любовь к профессии сохранена. Однако это не статья из серии “Какой я молодец. Делай, как я и тоже будешь молодцом”. Эта статья о том, какие ошибки я совершал и что можно было сделать лучше. Эта статья — ретроспектива моей карьеры.
Читать дальше →

C++20 укомплектован, C++23 начат. Итоги встречи в Кёльне

Reading time7 min
Views34K
На днях прошла встреча международного комитета по стандартизации C++ в Кёльне. В прошлый раз был принят feature freeze на C++20, так что комитет должен был обсуждать только исправления уже принятых вещей, а добавлять новинки уже в C++23…

… но всё было не так!



Что сделали с std::flat_map; останутся ли страшные ключевые слова co_return, co_await и co_yield; успели ли доделать std::format; в каком виде будут контракты в C++20? Всё это вас ждёт под катом.
Читать дальше →

Балансировка записи и чтения в базе данных

Reading time14 min
Views8.7K
image

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

В этой статье я покажу, каким образом такая концепция позволяет быстро и удобно балансировать запись и чтение в базу данных без какого-либо изменения логики работы. Похожий функционал попытались реализовать в современных коммерческих СУБД (в частности, Oracle и Microsoft SQL Server). В конце статьи я покажу, что получилось у них, мягко говоря, не очень.
Читать дальше →

Генерация подземелий и пещер для моей игры

Reading time4 min
Views26K

На этой неделе я начал работать над новой темой: генерацией подземелий и пещер. Я использовал разбиение пространства для генерации комнат, алгоритмы генерации лабиринтов для генерации коридоров и клеточные автоматы для придания пещерам более естествненного внешнего вида.

Разбиение пространства


Существует множество способов генерации комнат для подземелья (случайное размещение, генерация на основе агентов, с использованием separation steering behavior или физического движка, и т.д.). Но мой любимый метод — это разбиение пространства, потому что оно легко контролируется и расширяется.

Способов разбиения пространства тоже очень много: разделение на сетки, двоичное разбиение пространства, разбиение пространства деревом квадрантов, диаграммы Вороного и т.д. Я решил использовать двоичное разбиение пространства, потому что оно хорошо подходит для генерации прямоугольных комнат. Этот метод получил популярность благодаря статье на RogueBasin.

Единственная сложность этого алгоритма — выбор позиции разделения. Если мы не наложим ограничение на позицию разделения, то будем получать странные разбиения пространства:


Такого поведения можно избежать несколькими способами. Один из них — ограничить позицию разделения двумя соотношениями длин сторон, например, в интервале от 30% до 70% или от 40% до 60%. Другой способ — использовать вместо равномерного распределения нормальное или биномиальное, благодаря этому повысится вероятность разделения по центру стороны, а не по краям. Эти способы устраняют проблему, но сложно понять, как конкретно параметры влияют на окончательный результат.
Читать дальше →

Контактная сварка для аккумуляторов 18650

Reading time5 min
Views99K
Небольшая статья про самостоятельное изготовление аппарата для контактной сварки аккумуляторов (18650 и аналогичных). С помощью подобного устройства можно в домашних условиях и из подручных материалов сваривать и ремонтировать аккумуляторные батареи и сборки. Дешево, сердито и доступно каждому.


TDDx2, BDD, DDD, FDD, MDD и PDD, или все, что вы хотите узнать о Driven Development

Reading time13 min
Views142K

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



  • TDD — ну, это все знают, сначала пишем тесты, а потом остальной код.
  • BDD — что-то знакомое, вроде как, тоже тесты, но особенные.
  • TDD — снова? Так, стоп, тут речь уже не о тестах совсем. Но почему называется так же?
  • DDD — bound contexts, ubiquitous language, domain...
  • FDD — да сколько можно?
  • MDD — cерьезно, на основе диаграмм?
  • PDD — ...

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


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

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

Солнечная электростанция на дом 200 м2 своими руками

Reading time15 min
Views183K
Частенько в сети проскакивают сообщения о борьбе за экологию, развитие альтернативных источников энергии. Иногда даже проводят репортажи о том, как в заброшенной деревне сделали солнечную электростанцию, чтобы местные жители могли пользоваться благами цивилизации не 2-3 часа в сутки, пока работает генератор, а постоянно. Но это всё как-то далеко от нашей жизни, поэтому я решил на своем примере показать и рассказать, как устроена и как работает солнечная электростанция для частного дома. Расскажу обо всех этапах: от идеи до включения всех приборов, а также поделюсь опытом эксплуатации. Статья получится немаленькая, поэтому кто не любит много букв могут посмотреть ролик. Там я постарался рассказать то же самое, но будет видно, как я все это сам собираю.


Курс лекций «Основы цифровой обработки сигналов»

Reading time12 min
Views217K
Всем привет!

Часто ко мне обращаются люди с вопросами по задачам из области цифровой обработки сигналов (ЦОС). Я подробно рассказываю нюансы, подсказываю нужные источники информации. Но всем слушателям, как показало время, не хватает практических задач и примеров в процессе познания этой области. В связи с этим я решил написать краткий интерактивный курс по цифровой обработке сигналов и выложить его в открытый доступ.

Большая часть обучающего материала для наглядного и интерактивного представления реализована с использованием Jupyter Notebook. Предполагается, что читатель имеет базовые знания из области высшей математики, а также немного владеет языком программирования Python.


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

Information

Rating
Does not participate
Registered
Activity