Pull to refresh
-2
6.1
Send message

Архитектура клиентского приложения (механизмы структуризации)

Reading time29 min
Views18K

История первая


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

image

Игровая компания немца разрабатывала 3 вида игр:

  1. Флэш-игры для мобильных телефонов с поддержкой технологии J2ME.
  2. Обучающие игры для портативной игровой приставки Nintendo DS. Заказчиками этих игр были европейские издатели, а покупателями — родители, чьи чада имели проблемы с обучением по математике, английскому или немецкому языкам. Подразделение игр для Nintendo DS выпустило много игр. Хотя они и не стали AAA-тайтлами, но окупили свою разработку и принесли небольшую прибыль.
  3. Игры для платформы Nintendo Wii.

В последней команде был я. Команда должна была разработать игру для маленьких девочек по детскому бренду. Бренд был достаточно известен в Германии (это был основной рынок) и в ряде других европейских стран: во Франции и в Великобритании.

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments6

Как удалить JavaScript из файлов PDF

Reading time3 min
Views7.8K
Как известно, внутри файлов PDF можно размещать скрипты JavaScript, которые будут запускаться на исполнение в браузере. Например, если загрузить этот PDF, то вы увидите результат выполнения скрипта:



Это стандартная функция формата. Все разработчики браузеров знают, что PDF подобно HTML является активным контентом и может содержать исполняемые скрипты.
Читать дальше →
Total votes 16: ↑15 and ↓1+22
Comments10

Чистый код: Принцип открытости закрытости (OCP)

Level of difficultyMedium
Reading time4 min
Views5.9K

Принцип открытости/закрытости гласит, что программные объекты (классы, методы, функции и т. д.) должны быть открыты для расширения, но закрыты для модификации.

Идеальной реализацией данного принципа является интерфейс. Ничего лишнего, нечего модифицировать, можно только расширять.

Читать далее
Total votes 14: ↑5 and ↓90
Comments15

Собираем бюджетный домашний NAS на 14 ТБ

Level of difficultyMedium
Reading time13 min
Views73K


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

О моём опыте сборки бюджетного NAS на 14 ТБ я напишу далее в статье.
Читать дальше →
Total votes 140: ↑139 and ↓1+171
Comments261

RLS в действии: как решить вопросы доступа в BI за 5 минут

Level of difficultyMedium
Reading time6 min
Views1.3K

Когда бизнес-аналитика внедряется как корпоративный инструмент, ее пользователями становятся сотни или даже тысячи людей из разных подразделений. Кроме этого нередко результаты прогнозов, расчетов и визуализаций все чаще выкладывают прямо на порталы или открывают к ним доступ без авторизации, чтобы сторонние наблюдатели могли получить важную для себя информацию. Все это порождает проблемы конфиденциальности, которые раньше решались с помощью дублирования данных и создания нескольких контуров BI. Но, как говорится, «есть способ лучше»! Сегодня мы поговорим про механизм Row Level Security (RLS), который позволяет и BI предложить сразу всем, и доступ разграничить, и не плодить личные сущности. Ну а подопытным, которому мы будем ограничивать доступ в наших примерах, как вы уже догадались, будет Александр Сергеевич.

Читать далее
Total votes 9: ↑9 and ↓0+11
Comments3

Camunda и Kafka: не откусывай больше, чем можешь проглотить

Level of difficultyMedium
Reading time10 min
Views8.9K

Привет, Хабр! Меня зовут Егор, я бэкенд-разработчик в T-Банке, участвую в разработке продуктов комплаенса. Недавно в одном из наших проектов мы столкнулись с проблемой низкой производительности Camunda — и хотим поделиться опытом, который мы получили в процессе ее решения.

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

Читать далее
Total votes 11: ↑10 and ↓1+11
Comments14

Механизмы образования антициклонов над континентами. А причём тут роса на траве по утрам?

Reading time16 min
Views8.9K

В каких случаях мы видим росу на траве по утрам?

Каждый с детства из классической литературы знает про «туман над речкой после заката» и про «росу на траве по утру».

Для примера приведу фотографии реальных пейзажей к этим пасторальным литературным штампам (см.рис.1-3)

Читать далее
Total votes 41: ↑39 and ↓2+48
Comments61

Пожалуйста, хватит о чистой архитектуре микросервисов

Level of difficultyEasy
Reading time3 min
Views13K

Я действующий senior golang разработчик. В связи с чем, могу заявить, что данное мнение является полностью неоспоримым. Вашего объективного мнения не существует, существует только субъективное, ибо мы с вами не камни. Камень - объект, человек - субъект. Может ли субъект родить что-то объективное? Но да ладно, меня понесло.

Читать далее
Total votes 37: ↑7 and ↓30-21
Comments30

Еще одна конфигурация на базе OpenWRT (+PC) для обработки трафика

Level of difficultyMedium
Reading time4 min
Views3.9K

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

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

Как и у многих, у меня рядом с роутером есть небольшой NAS на базе PC. Который с помощью второй сетевухи мог бы легко превратиться в роутер. Но как это сделать удаленно? И как сделать из сервера роутер, не трогая по-возможности сервер и роутер? Легко!

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

Читать далее
Total votes 5: ↑4 and ↓1+5
Comments2

Сложно о простом. Сеансовый уровень (L5), представительный (L6) уровень и прикладной (L7) уровень

Level of difficultyEasy
Reading time9 min
Views8.2K


Приветствую, коллеги! Меня зовут ProstoKirReal, и сегодня мы продолжим изучение модели OSI, сосредоточив для начала внимание на сеансовом уровне (L5). Этот уровень играет важную роль в управлении сеансами связи между приложениями.
Читать дальше →
Total votes 20: ↑19 and ↓1+28
Comments6

OSINT: Нахождение секретной техники ВВС США по фото

Reading time3 min
Views9.1K

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

Читать далее
Total votes 19: ↑16 and ↓3+14
Comments10

Распределенные транзакции для самых маленьких

Level of difficultyEasy
Reading time8 min
Views13K

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

Читать далее
Total votes 18: ↑14 and ↓4+15
Comments10

Видеонаблюдение на базе NanoPi R4S, rclone и mediamtx

Level of difficultyMedium
Reading time7 min
Views7.8K

В этой статье я расскажу, как организовал себе примитивный видеорегистратор, который:

1. Умеет транслировать видео на любые устройства, где есть браузер с поддержкой h264, причем без использования китайских серверов.
2. Вести циклическую запись в формате mp4 и сохранять её удалённо.
3. Стоит меньше 100$.

Читать далее
Total votes 14: ↑14 and ↓0+20
Comments24

Реквием по SCRUM: всё равно уже хайп прошёл

Level of difficultyMedium
Reading time11 min
Views17K

В мире победившего эджайла, SCRUM, как один из наиболее популярных фреймворков, казалось, имеет все шансы стать отраслевым стандартом. Однако в результате врождённых недостатков он стала чем-то средним между религией для занятых проектным управлением и воздухом для продажи эджайл-коучами. Более того, сегодня строгая приверженность принципам SCRUM нередко становится маркером профнепригодности для людей, которые имели неосторожность переродиться из полноценных проектных методологов и руководителей в фанатично зацикленных на ритуалах scrum-мастеров (речь не обо всех, но о об очень многих). В посте попытался обобщить все проблемы SCRUM, как "фреймворка" для проектного управления и создания продуктов.

Читать далее
Total votes 48: ↑43 and ↓5+54
Comments108

Локальное голосовое управление

Reading time4 min
Views4.8K

Я не художник...

Привет. В очередной раз задумался о локальном голосовом управлении устройствами умного дома, а тут как раз наткнулся на статью @CyberexTech "Моя безумная колонка" - https://habr.com/ru/companies/timeweb/articles/772080. Их там две части. Я тоже запускал на распбери готовые проекты типа voice2json, но все это оказалось не о том, речь распознавалась, но дальше никакого движения. А тут статья от Кибертеха (мне проще его так называть). Очень интересный проект показался, особенно после видео довольно быстрого распознавания воксом голоса, но дочитав до конца я понял, что это опять не то, нам-то нужно чтобы включалось/крутилось всякое железо, навешанное на умный дом, типа лампочек и кондиционеров, а в статье это оказалось как-то очень усложненно и неявно. В общем решил сам попробовать что-нить запилить. А самая хохма в том, что я не программист и писать код не умею, но у нас теперь есть программист от бога, которого называют ChatGPT. Пришлось обращаться к нему.

Читать далее и так далее
Total votes 7: ↑4 and ↓3+3
Comments6

Гибкие шестерни

Level of difficultyMedium
Reading time9 min
Views17K
Картинка Jahobr, Youtube-канал «3DprintedLife»

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

В этой статье мы поговорим о том, как можно решить этот вопрос наиболее простым способом.
Читать дальше →
Total votes 66: ↑64 and ↓2+91
Comments42

AMQP по-русски

Reading time4 min
Views102K
Сегодня довольно мало информации о протоколе AMQP (Advanced Message Queueing Protocol) и его применении, особенно на русском языке. А вообще это — замечательный, уже достаточно широко поддерживаемый открытый протокол для передачи сообщений между компонентами системы с низкой задержкой и на высокой скорости. При этом семантика обмена сообщениями настраивается под нужды конкретного проекта. Такие решения существовали и ранее, но это первый стандарт, для которого существует большое количество свободных реализаций.

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

Сегодня тема доставки информации в реальном времени является крайне актуальной (достаточно вспомнить хотя бы Twitter, Google Wave). И здесь системы передачи сообщений могут служить внутренним механизмом обмена данными, который обеспечивает доставку данных (изменений данных) клиентам.

Я не ставлю своей целью сегодня рассказать о том, как писать приложения для AMQP. Хочу лишь немного рассказать о том, что это совсем не страшно, не очень сложно, и действительно работает, хотя стандарт находится еще в развитии, выходят новые версии протокола, брокеров и т.п. Но это уже вполне production-quality. Расскажу лишь базовые советы, чтобы помочь “въехать” в протокол.
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments31

Протокол MQTT: концептуальное погружение

Reading time12 min
Views235K
Протокол Message Queuing Telemetry Transport (MQTT) используется в течение многих лет, но сейчас он особенно актуален благодаря взрывному росту IoT: и потребительские, и промышленные устройства внедряют распределённые сети и граничные вычисления (edge computing), а устройства с постоянной трансляцией данных становятся частью повседневной жизни.

Это означает, что лёгкие, открытые и доступные протоколы со временем станут ещё важнее. В этой статье приводится концептуальное погружение в MQTT: как он работает, как используется сейчас и как будет использоваться в будущем.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments8

Архитектура предприятия, TOGAF 10 и адаптивность организационной структуры

Reading time11 min
Views30K

Архитектура предприятия предназначена для самого предприятия, а не для архитекторов.

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

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

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments3

Information

Rating
830-th
Location
Жуковский, Москва и Московская обл., Россия
Date of birth
Registered
Activity