Как стать автором
Обновить

Все потоки

Сначала показывать
Порог рейтинга

Эволюция игрового фреймворка 2. Клиент. Логика отображения

Анализ и проектирование систем *Разработка под iOS *Проектирование и рефакторинг *Разработка игр *Haxe *

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

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

Все примеры реализованы на Haxe + OpenFL), но код должен быть понятен всем, кто знаком с семейством языков ECMAScript. Главное же тут не код, а те идеи, которые за ним лежат.

Читать далее
Рейтинг 0
Просмотры 9
Комментарии 0

Новости

«Я видел будущее автомобилей, и оно электрическое»

Энергия и элементы питания
Перевод

Я никогда не считал себя «автолюбителем». Последней новой машиной, которую я купил, был необычный Ford Contour SVT 1998 года выпуска. С тех пор в 2011 году и мы купили универсал VW и минивэн Honda в 2012 году для семейных перевозок. Ну и всё. 

Универсал имел смысл для семьи из 3 человек. Но когда у нас родились близнецы, стал маловат. Как однажды сказал Марк Твен: «Сейчас достаточно одного ребенка. Пока вы в здравом уме, никогда не молитесь за близнецов. Близнецы — это постоянный бунт. И нет никакой реальной разницы между тройняшками и восстанием» Поэтому мы думали над покупкой минивэна. Однако сейчас у нас Kia Niro 2019 года. И это не минивэн. И он электрический.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 428
Комментарии 4

Как запланировать повторяющийся запуск VBA-процедуры в MS Excel без Application.OnTime

Visual Basic for Applications *SharePoint *Microsoft Access *Программирование *
Перевод

Привет, Хабр!

В этой статье мы демонстрируем простую альтернативу Application.OnTime для периодического запуска VBA-процедур в MS Excel.

Данный подход особенно удобен, если требуется передавать данные из листа MS SharePoint в книгу MS Excel в режиме реального времени.

С уважением,
Владимир

Читать далее
Всего голосов 1: ↑0 и ↓1 -1
Просмотры 83
Комментарии 0

Звуковой кейлоггер. Определяем нажатые клавиши по звуку

Блог компании GlobalSign Звук Информационная безопасность *Периферия


Не секрет, что у каждой клавиши на клавиатуре — уникальное звучание, которое зависит от её расположения и других факторов. Теоретически, анализ спектрограммы позволяет отличить клавиши друг от друга, а по частотности нажатий определить, какому символу соответствует каждый звук. Задача распознавания звуков упрощается тем, что при наборе связного текста символы хорошо прогнозируются по словарю (а именно, по частотности n-грамм для текстов).
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 450
Комментарии 0

Пять распространенных ошибок памяти в JavaScript

JavaScript *ReactJS *
Из песочницы
Перевод

Или советы по предотвращению утечек памяти в ваших веб-приложениях.

В JavaScript нет примитивов управления памятью. Вместо этого память управляется виртуальной машиной JavaScript посредством процесса восстановления памяти, который известен как Garbage Collection.

Но если мы не можем заставить его работать, как мы узнаем, что он будет работать правильно? Что мы знаем об этом? Выполнение скрипта приостанавливается во время процесса — это освобождает память для недоступных ресурсов. Скрипт недетерминирован и не будет проверять всю память за один раз, а будет выполняться в несколько циклов. Этот процесс непредсказуем и будет выполняться при необходимости.

Значит ли это, что нам не нужно беспокоиться о выделении ресурсов и памяти? Конечно, нет. Если вы не будете осторожны, у вас будут утечки памяти.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 258
Комментарии 0

Что такое шейдеры, зачем они нужны и как разобраться во всем этом. Краткий экскурс по рендерингу в Unity

C# *Unity *CGI (графика) *AR и VR
Tutorial

Всем привет. Сегодня я хотел бы задеть такую тему, как рендеринг и шейдеры в Unity. Шейдеры - простыми словами это инструкции для наших видео-карт, которые говорят, как правильно отрисовывать и трансформировать объекты в игре. Итак, welcome to the club buddy.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 365
Комментарии 0

Хороший инженер знает свои инструменты

JavaScript *Программирование *
Перевод

Раньше, когда я думал, что я крутой инженер, я провалил собеседование из-за одного глупого вопроса. Как раз дин из тех, что «не имеют никакого отношения к работе». Вот он: «Что бы вы изменили в JavaScript?»

Что за глупый вопрос, какое он имеет отношение к размещению div на странице и решению бизнес-задач? Кем считает себя этот интервьюер??? JavaScript совершенен и удивителен, если вы боретесь с какой-либо из его сложных деталей, вы, очевидно, просто еще недостаточно умны.

Именно так я думал тогда. Но я ошибался.

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Просмотры 561
Комментарии 3

Язык барабанов: осмысленный и беспощадный

Стандарты связи *Научно-популярное Изучение языков

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

Поэтому я проверил, а с каким явлением в 80-е годы XIX века ассоциировали телефон Белла и Эдисона – и с удивлением обнаружил, что ближайшим ее аналогом считалась связь через язык барабанов.  Именно с главы «Говорящие барабаны» начинается знаменитая книга Джеймса Глика «Информация. Теория. Поток», и ниже я постараюсь обрисовать язык барабанов как средство связи. Тем интереснее, что до сих пор существуют системы барабанных кодов, которые передают как музыку, так и язык.

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 535
Комментарии 1

Знакомство с тестированием веб-приложений

Блог компании RUVDS.com Разработка веб-сайтов *Тестирование веб-сервисов *Тестирование мобильных приложений *
Перевод

Даже в случае самой базовой конфигурации по мере добавления новых страниц и функциональности тестировать веб-приложение становится все сложнее. И чтобы помочь начинающим в этом нелегком деле, я написал небольшое вводное руководство.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 431
Комментарии 0

Рокетмены и право. Ракетомоделизм — это законно?

Блог компании Timeweb Cloud Научно-популярное Космонавтика DIY или Сделай сам


В посте про правовое регулирование дронов меня заинтересовал вопрос @vinny496 про то, каким образом в РФ регулируется модельное ракетостроение. В этом посте я представляю результаты небольшого правового расследования на эту тему.

В начале, тем не менее, стоит отметить, что в России регулированию такого хобби посвящено очень мало правовых актов. С одной стороны, ракетомоделизм не запрещен законом. Более того, по всей стране действуют десятки клубов ракетчиков, работает Федерация ракетомодельного спорта, организуются соревнования, в том числе Всероссийские соревнования по ракетомоделизму, проводимые в Пермском крае.

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

Такая ситуация отличается от США, где ракетомоделизм более институционализирован и вопросы изготовления топлива для ракет и их запуска регулируются федеральным законодательством, а также изложены в справочниках Национальной ассоциации ракетомоделизма.

Этот пост представляет собой попытку разобраться в требованиях закона и установить границы легальности этого захватывающего хобби.
Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 1.8K
Комментарии 11

Получение generic-типа в runtime

Java *

src

В Java 5 появились generic-типы, а вместе с ним и концепция type erasure, которая буквально означает стирание информации о generic-типе после компиляции. Действительно, во многих случаях это просто синтаксический сахар, помогающий писать типо-безопасный код на уровне компиляции, и в runtime с такими типами работать нельзя. Например, невозможно получить тип T внутри ArrayList<T>, поэтому он в своей реализации создает массив Object[], а не T[] для хранения элементов.

Однако, в ряде случаев это очень даже возможно. Например, можно объявить поле
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanPostProcessor;
...
@Autowired
private Set<BeanPostProcessor> beanPostProcessors;

и spring в него заинжектит все объекты контекста, которые реализуют интерфейс BeanPostProcessor.

Можно написать и так:
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
...
List<String> strings = new ObjectMapper()
     .readValue("[1, 2, 3]", new TypeReference<>() {});
// все элементы strings - строки (не Integer и не Long)
List<Integer> ints = new ObjectMapper()
     .readValue("[1, 2, 3]", new TypeReference<>() {});
// все элементы ints - Integer (не String и не Long)

Можно написать даже так:
Читать дальше →
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 1.1K
Комментарии 0

Миниатюрное десктопное GUI приложение на PHP — 2 МБ хватит для всех

Ненормальное программирование *PHP *Программирование *Разработка под Linux *Разработка под Windows *

Я часто заморачиваюсь на тему минимизации размера своих GUI приложений. Прошлая моя статья была про Nuklear. Но сейчас захотелось более современных технологий. Чтоб HTML5, CSS3 и PHP. Чтоб приложение ни от чего не зависело, т.е. построено по принципу "всё включено". И чтоб конечный размер приложения не превысил 2 МБ. Получится ли?

В Linux я часто пользуюсь утилитой df. Мне её очень не хватает в Windows, а искать аналоги лень. Так что было сделано волевое решение сделать свою, на РНР 5, с бутстрапом и JQuery.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 2.1K
Комментарии 5

Фронтенд-новости №15. CSS становится сложнее, VITE 3.0, самый высокий сайт в мире

Блог компании HTML Academy CSS *JavaScript *HTML *

Дайджест новостей и полезных статей из мира фронтенд-разработки за неделю 11–17 июля.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 1.5K
Комментарии 1

Оператор PIVOT

Microsoft SQL Server *
Перевод

По материалам статьи Craig Freedman: The PIVOT Operator

Несколько статей будут посвящены тому как в SQL Server реализован оператор PIVOT и UNPIVOT. Начнем с оператора PIVOT. Оператор PIVOT берет нормализованную таблицу и преобразует ее в другой вид, в котором столбцы результирующей таблицы получаются из значений исходной таблицы. Например, предположим, что мы хотим хранить данные о суммарной выручке от продаж за год по каждому из сотрудников. Для этих целей можно создать следующую таблицу:

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1K
Комментарии 2

Chrome OS Flex: стабильная версия ОС от Google для установки на старые ПК. Что она может?

Блог компании Selectel Google Chrome IT-инфраструктура *Софт IT-компании

Не так давно мы писали про новую (с оговорками) версию операционной системы Chrome OS Flех от Google. Корпорация модифицировала Chrome OS таким образом, чтобы та запускалась на Windows, Mac и Linux совместимых десктопных ПК и ноутбуках. Идея проста — продолжить жизнь морально устаревшему «железу», которое тормозит и лагает при попытке работать с более-менее современными ОС.

Корпорация не забросила свой проект, наоборот, она выпустила стабильную версию, которая может работать на относительно старом «железе». «Относительно» — поскольку на совсем уж старых ноутбуках и ПК система работать не будет. Разработчики системы убрали все «тяжелые» элементы ОС, так что Chrome OS Flex работает без особых проблем. Что может эта система?
Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 12K
Комментарии 32

«Врубай на Максиму!» или учимся решать математические задания для 6 и 7 классов в WxMaxima

Open source *Программирование *Математика *
Tutorial

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

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

Сегодня мы не будем всё усложнять и бегло рассмотрим простейшие примеры для 6 и 7 классов по следующим темам:

- наименьшее общее кратное

- наибольший общий делитель

- операции с дробями

- упрощение выражений с одночленами и многочленами

- линейные уравнение

- системы линейных уравнений

- построение графиков функции

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 1.7K
Комментарии 3

Использование sync/atomic в golang для float64

Программирование *Go *
Из песочницы

Привет всем гоферам! В данной статье я хочу разобрать как можно воспользоваться модулем sync/atomic для типа float64.

У нас есть канал из которого мы можем читать результаты выполнения задач. Результат задачи содержит флаг показывающий была ли ошибка при выполнении задачи и результат выполнения этой задачи (тип float64). Нужно найти сумму всех результатов и количество ошибок.

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Просмотры 955
Комментарии 4

Добавить свой React компонент к балуну над меткой/Placemark в react-yandex-maps, используя React.createPortal

ReactJS *
Из песочницы

Добрый день. Хочу поделиться информацией о том как мне удалось пририсовать динамическую React компоненту внутрь всплывающего окна над меткой на Яндекс карте.

Читать далее
Рейтинг 0
Просмотры 304
Комментарии 0

Создаем библиотеку для бота telegram

Python *Программирование *

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

Спойлер: толкового бота я так и не написал :)

Читать далее
Всего голосов 9: ↑3 и ↓6 -3
Просмотры 1.8K
Комментарии 3

Как один мужик карту города рисовал

Maps API *Геоинформационные сервисы *Визуализация данных *
Из песочницы

Всем привет!



Сегодня поговорим о визуализации геоданных с помощью GeoPandas и Kepler.gl. Хотел бы рассказать, как я за пару дней построил вот такую карту, где высота полигонов регулировалась этажностью здания, а цвет - годом постройки.

Читать далее
Всего голосов 46: ↑43 и ↓3 +40
Просмотры 4.5K
Комментарии 1