Search
Write a publication
Pull to refresh
3
0

Пирожочек

Send message

Игровой код, который сам себя программирует

Reading time4 min
Views5.7K

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

Для непосвящённых: Haxe — это язык программирования и кросс-компилятор. Это значит, что можно написать игру на Haxe, и она автоматически "переводится" на другой язык программирования, в зависимости от выбранной платформы (C++ для Windows, JavaScript для Web, и т.д.), и компилируется в нативную программу для той платформы.

У языка есть несколько полезных функций метапрограммирования, которые используются для написания кода, который, грубо говоря, сам себя меняет. Эта статья — не туториал и не руководство, а просто несколько примеров того, как такие приёмы могут быть использованы в разработке компьютерных игр.

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

Читать далее

Внедрение Postgres из Docker в Kubernetes

Reading time7 min
Views15K

Создание контейнера для базы данных отнюдь не является излишеством. На самом деле, это позволит вам привнести все преимущества контейнеров в вашу БД.

Мы рассмотрим, как создавать контейнеры Postgres с помощью Docker и перезапускать их без потери данных, а в конце статьи с помощью нестандартного метода (использующего ConfigMaps и StatefulSets) мы развернём внутри подов Kubernetes — Postgres.
Читать дальше →

Когда разница адресов имеет значение

Reading time6 min
Views4.9K

Среди бесчисленных режимов адресации архитектуры х86 существует один такой…
Впрочем, почему «бесчисленных» режимов? Если разобраться, то их немного. Со времен первого процессора 8086 адресация укладывалась в байт, который имел аббревиатуру MODRM, где «MOD» - это собственно режим адресации (т.е. mode), «R» - регистр и «M» - очевидно, память (memory).
Если не рассматривать дальнейшее совершенствование системы адресации с помощью SIB-байта, то, поскольку под MODE в MODRM-байте выделено всего два бита, получается, что возможны всего-навсего четыре режима адресации.

Читать далее

Мгновенные снепшоты postgres на tablespace и btrfs

Reading time4 min
Views8.4K

Для работы бывает полезно иметь несколько копий одной реальной базы для экспериментов, фикстур или просто тестовых приложений. База растет и время копирования через разворачивание дампа или с помощью шаблона также возрастает до утомительных величин. Для решения этого кейса уже описаны варианты использования файловой системы с поддержкой CoW - Btrfs. В интернете находил  такие инструкции, они сводятся к тому, что делается снепшот всего сервера. И для работы второго "скопированного" нужно перегенерировать pid и сменить порт для предотвращения конфликтов. Этот способ довольно универсальный относительно конфигурации баз на сервере, но кажется имеет ограничение для неопределенного кол-ва параллельных снепшотов серверов.

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

Инструкция linux only, про поддержку CoW файловых систем на Windows не в курсе.

Читать далее

Забавы с маргинальными фреймворками: Пишем приложение для отладки TCP соединений с Malina.js

Reading time18 min
Views3.1K

Одна из моих работ связана с отлаживанием протоколов общения теплосчётчиков для удалённого снятия показаний. Чаще всего теплосчётчик даже не мой, а находится у клиента на объекте, поэтому я подключаю его через GPRS-терминал к какой-либо своей сетевой машине, где поднят TCP сервер откуда посылаю байтики и смотрю, что мне ответит теплосчётчик. Посылать байты с консоли можно, но не очень удобно. Есть ряд приложений с которыми этот процесс упрощается, но я решил сделать себе в помощь специальный TCP сервер в виде Node-приложения с Web-интерфейсом, созданном с помощью фреймворка Malina.js.

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

Читать далее

Как сделать VPN-туннель для недружественного почтового сервера

Reading time18 min
Views22K

В предыдущей статье, где рассказывалось о признании моего почтового сервера «недружественным», я упоминал о том, что смог обойти введённые ограничения с помощью аренды дополнительного виртуального сервера на территории РФ и проброса до него VPN-туннеля от основного сервера. После публикации статьи мне пришло несколько личных сообщений с просьбой рассказать подробнее о процессе настройки такого туннеля. В этой статье я постараюсь как можно более подробно описать этот процесс.

Читать далее

Иррационально свободный

Reading time7 min
Views35K

Заявление Николая произвело эффект разорвавшейся бомбы. Целую неделю весь офис только о нём и говорит. В курилке, на кухне, в переговорках и высоких кабинетах. Восхищаются, поливают грязью, пытаются анализировать, думают, как бы его уволить. Но все, без исключения, пытаются узнать побольше об этом парне. Понять, как он стал таким.

Чего же такого он там ляпнул?

Самое обычное совещание, с широким кругом приглашённых – программистов, разработчиков, РП, менеджеров, аналитиков, начальников и проч. Обсуждали офисные фетиши – цели, процессы, обязанности, ответственность, провалы. Кто чего должен и обязан. Тут заметили Колю – он сидел в углу и читал книгу. Заметить удалось потому, что Николай – редкий гость на совещаниях. И кто-то их Больших зачем-то спросил: «Коля, а что входит в твои обязанности?».

Коля поднял голову, улыбнулся и ответил: «Чисто по приколу, назовите хоть одну мою обязанность».

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

Читать далее

Имитация деятельности в стартапе

Reading time3 min
Views6.6K
image

Аарон Харрис — 
бывший глава по инвестициям Series A в Y Combinator

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

Это непростое время для основателей, потому что легко спутать вещи, которые выглядят как работа, с настоящей работой. Работа может означать нечто большее, чем просто написание кода и общение с пользователями, но она должна включать в себя только то, что помогает вашей компании расти и становиться лучше. Легко убедить себя, что другие виды деятельности делают вашу компанию лучше, но это неверно. Эти вещи в основном предназначены для отдыха. Если хотите, относитесь к ним именно так, но не путайте их с тем, что действительно поможет вашему стартапу.

Вещи, которые выглядят как работа над стартапом, но таковой не являются:
Читать дальше →

Tarantool 2.10: сжимаем данные, шифруем трафик, помогаем расследовать инциденты

Reading time4 min
Views6.7K

В Tarantool 2.10 добавили новые инструменты как для Enterprise версии, так и для Community Edition. А еще мы запустили Tarantool по модели DBaaS в облаке VK Cloud Solutions. Далее подробно расскажем про главные обновления: шифрование соединений между репликами и клиентом, сжатие данных в памяти, расширенные возможности аудита и поделимся ссылкой на полный список изменений

Читать далее

TypeScript: худший лучший язык программирования

Reading time13 min
Views85K

На конференции FrontedConf 2021 Андрей Старовойт показал плюсы и минусы TypeScript. Если вы сомневаетесь, стоит ли его использовать — эта статья для вас, чтобы вы смогли для себя всё решить. Если вы уже любите и используете TypeScript, то надеюсь, вам тоже будет интересно.

Все преимущества и недостатки языка описаны, конечно, через призму опыта Андрея. Несмотря на то, что последние 7 лет он работает в компании JetBrains над продуктом WebStorm на Java Kotlin, пишет он и на TypeScript. Попутно много смотрит на код других людей, пытаясь понять, что с ним можно сделать внутри WebStorm и почему типы выбились неправильно. А также — какие инспекции можно применить так, чтобы люди стали счастливы, а их код — лучше.

Читать далее

GraphQL и почти все-все-все. Часть 1:)

Reading time4 min
Views11K


Введение:


Все чаще слышу об использовании GraphQL, но так как последнее время все рабочее время уходило на Xamarin + GRPC + ASP.NET Core, технология казалась для меня загадочно манящей и очень не известной, потому решил опробовать ее на нескольких языках, чтобы увидеть какие плюсы и минусы в разных подходах. Начать решил с родного и любимого C# + Hot Chocolate, но планирую так же попробовать Typescript + Prisma, Kotlin + graphql-kotlin, и возможно что-то другое.
Поехали

Недружественные почтовые сервера

Reading time9 min
Views35K

Всем привет. Долго думал, о чём здесь написать — к сожалению, редко находится на это время и желание. Но недавно случилась одна не очень хорошая история, из которой я сделал выводы и решил, что эта информация может быть кому-то полезна, поэтому хочу рассказать о том, что произошло. История эта связана с электронной почтой, а если быть более точным — с отказом сетевой инфраструктуры РЖД в обслуживании персонального почтового сервера из-за его «недружественности».

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

Читать далее

P2P-коммуникации, свой программатик и Big Data: что мобильный оператор может противопоставить кризису на рынке рекламы

Reading time3 min
Views2K

Рекламный рынок прямо сейчас испытывает довольно тяжёлые времена, что заставляет его перестраиваться. Где-то выключили таргетинг по группам пользователей, где-то рекламу и монетизацию вообще, какие-то сервисы просто нельзя оплатить. И трансформация уже началась — мы в билайне вместе с группой ОТМ тщательно следим за процессом, и в этом посте хотим рассказать, как механики стали перераспределяться в рекламном сплите, а также о возможностях отечественной программатик-платформы ОТМ

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

А Big Data-механики можно использовать в тесной связке с программатик-рекламой и другими инструментами. Именно в этом направлении билайн и взаимодействует с ОТМ.

Читать далее

Лора на батарейках (мечта каждого мужчины)

Reading time9 min
Views47K


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

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

Можно было бы сделать свои батарейные LoRa модули (благо прототипы есть и прекрасно работают), но не хотелось тратить время на изобретение велосипеда, а просто купить что-то готовое, и я заказал с Aliexpress несколько плат-кандидатов для тестирования.

Одна из таких плат — LoRa Radio Node, отчёт о её разборе (по косточкам) и тестировании я и предлагаю вашему вниманию.
Читать дальше →

Как перевести 100 000 учеток на микросервис и ничего не сломать

Reading time9 min
Views7K

Меня зовут Андрей Рождествин, я QA-специалист СберМаркета. После роста заказов аутентификация на монолите перестала с ними справляться. Я расскажу, как мы перевели её на микросервис и подружили с ним мобильное приложение.

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

Читать далее

Чем является и чем не является эффект Даннинга-Крюгера

Reading time4 min
Views17K

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

Читать далее

Websocket-сервер для геолокации на asyncio

Level of difficultyMedium
Reading time20 min
Views20K

Привет!

Меня зовут Артем, я занимаюсь бэкенд-разработкой в отделе спецпроектов KTS и веду курс по асинхронному программированию в школе Metaclass. 

11-го апреля у нас стартует 3-й поток курса. Чтобы показать, чему учатся наши студенты, мы провели live-code-вебинар по вебсокетам, на котором написали сервис, в котором пользователи могут делиться своей геопозицией в режиме реального времени. Хотите узнать, как создавать такие сервисы?

Хочу

Менеджеры и разработка: типовые проблемы и как их решить

Reading time5 min
Views3.1K

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

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

Читать далее

Information

Rating
Does not participate
Registered
Activity