Как стать автором
Обновить
2
0
Владимир @vkus

Проектирую и реализую программные системы

Отправить сообщение

Я сделаю свое приложение, с блэкджеком и таблицами! Или как вырастить и кормить доброго монстра

Время на прочтение21 мин
Количество просмотров9.6K

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

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

С чего все началось? Давным-давно придя в организацию, в которой до сих пор работаю, я столкнулся с проблемой, что ИТ отдел совершенно не занимался учетом аппаратного обеспечения. Существовала база 1С бухгалтерии, в которой ставились на учет системные блоки, мониторы, принтеры и прочее оборудование. Кладовщик рисовал инвентарные номера и на этом все заканчивалось. Сотрудники отдела получали новую технику, настраивали, устанавливали и дальше о том где какая техника знал только кладовщик и то не всегда. Ситуация более чем странная, во всяком случае для меня.

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии27

Чек-лист разработчика языка программирования

Время на прочтение4 мин
Количество просмотров23K
Итак, Вы собираетесь создать новый [] функциональный, [] императивный, [] объектно-ориентированный, [] процедурный, [] стековый, [] мультипарадигменный, [] быстрый, [] статически-типизированный, [] динамически-типизированный, [] чистый, [] богатый, [] не-искусственный, [] наглядный, [] простой для новичков, [] простой даже для не-программистов, [] абсолютно непостижимый язык программирования.

Не получится. И вот почему.
Читать дальше →
Всего голосов 220: ↑189 и ↓31+158
Комментарии77

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

Время на прочтение10 мин
Количество просмотров18K

Меня зовут Андрей Булов. Я простой питерский технарь, архитектор, разработчик, DevOps технический менеджер. Сейчас работаю в Quantori.

Я не буду описывать самоорганизующиеся команды, а расскажу про алгоритм их создания. Это мой личный опыт — я так работаю с командами (их было 30+). Он перекликается с Management 3.0, моделью Херши-Бланшар, LeSS, Sсrum и даже SAFe, а также со многими другими софтовыми областями. И в нем есть конкретика на уровне действий.

Для ленивых: я исследую окружение, проектирую дизайн культуры, объясняю правила и делегирую задачи команде. Я не поддерживаю внедрение самоорганизации через фреймворк. Видео моего выступления об этом на конференции TeamLead Conf 2021 можно посмотреть здесь.

Читать далее
Всего голосов 29: ↑27 и ↓2+25
Комментарии7

Сравнение подходов к реализации распределенных транзакций для микросервисов

Время на прочтение21 мин
Количество просмотров40K

Как архитектор-консультант в Red Hat, я имел возможность поработать над множеством проектов для наших клиентов. У каждого из них есть свои особенности, которые, однако, имеют некоторые общие черты. Большинство клиентов хотят знать, как скоординировать запись в несколько систем одновременно. Ответ на этот вопрос обычно включает подробное объяснение двойной записи, распределенных транзакций, современных альтернатив, а также возможных сценариев сбоев и недостатков каждого подхода. Как правило, именно в этот момент заказчик понимает, что разделение монолитного приложения на микросервисы - долгий и сложный путь, обычно требующий компромиссов.

Читать далее
Всего голосов 36: ↑36 и ↓0+36
Комментарии9

Вычисляем на видеокартах. Технология OpenCL. Часть 0. Краткая история GPGPU

Время на прочтение7 мин
Количество просмотров17K
22 июня автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов провёл вебинар «Вычисляем на видеокартах. Технология OpenCL».

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

  • 0 (вводная часть). Зачем мы здесь собрались. Краткая история GPGPU.
  • 1. Пишем для OpenCL.
  • 2. Алгоритмы в условиях массового параллелизма.
  • 3. Сравнение технологий.

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

Цикл будет полезен и тем, кто уже знаком с OpenCL: в нём мы поделимся некоторыми хаками и неочевидными наблюдениями из собственного опыта.

CPU — в помойку?


В статье будем рассматривать технологию GPGPU. Разберёмся, что значат все эти буквы. Начнем с последних трёх — GPU. Все знают аббревиатуру CPU — Central Processor Unit, или центральный процессор. А GPU — Graphic Processor Unit. Это графический процессор. Он предназначен для решения графических задач.

Но перед GPU есть ещё буквы GP. Они расшифровываются как General-Purpose. В аббревиатуре опускают словосочетание Computing on. Если собрать всё вместе, получится General-Purpose Computing on Graphic Processor Unit, что по-русски — вычисления общего назначения на графическом процессоре.



То есть процессор графический, но мы почему-то хотим вычислять на нём что-то, что вообще к графике никакого отношения не имеет. Например, прогноз погоды, майнинг биткоинов. Моя задача в ближайшее время — объяснить, зачем нужно на процессоре для графики обучать, например, нейросети.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии29

Сила композиции

Время на прочтение20 мин
Количество просмотров18K


Функциональное программирование может отпугивать сложностью и непрактичностью: «Я далек от всех этих монад, пишу на обычном C#, в докладе про функциональщину ничего не пойму. А если даже напрягусь и пойму, где мне потом это применять?»


Но когда объясняет Скотт Влашин, все совершенно не так: его доклад о композиции с конференции DotNext 2019 Moscow — пример того, как можно доносить функциональные идеи простыми словами. Он за час перешел от бананов к монадам так, что второе кажется немногим сложнее первого. А в конце объяснил, почему осмыслить композицию полезно даже тем, кто не собирается покидать мир ООП. Примеры кода в докладе как на F#, так и на C#.


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

Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии4

SCRUM: Гибкое управление продуктовыми направлениями

Время на прочтение10 мин
Количество просмотров4.2K

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

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

2021 — год low-code. Как он спасает бизнесы в пандемию и превращает гуманитариев в программистов

Время на прочтение4 мин
Количество просмотров12K

Журнал SD Times назвал 2021 годом low-code и рассказал, почему программисты боятся этих решений, как low-code инструменты помогают бизнесу в пандемию, снимают нагрузку с IT-отделов и превращают обычного сотрудника в разработчика. Не обошлось и недостатков — такие системы подходят не всем компаниям. Предлагаем адаптированный перевод статьи на русский язык.

Год назад никто не думал, что бизнесу придется срочно переходить из офлайна в онлайн. Люди ушли из офисов и начали работать из дома — компаниям понадобились новые приложения, чтобы управлять проектами, выполнять заказы и работать с клиентами. Новые приложения нужны были срочно, а обычная разработка не поспевала за спросом. Помогли low-code-платформы, где можно собирать приложения без кода.

Читать далее
Всего голосов 39: ↑7 и ↓32-25
Комментарии35

Как научиться проектировать реляционные базы данных за полчаса

Время на прочтение17 мин
Количество просмотров43K


Автоматизация сопровождает нас повсюду и является спутником и признаком прогресса, снимая с человека необходимость выполнения рутинных действий и принятия рутинных решений. Но для принятия решений о будущем необходима информация о прошлом, поэтому автоматизация неизбежно связана с необходимостью накапливать, хранить и обрабатывать данные, чем и занимаются базы данных и системы управления базами данных. Объём данных не уменьшается, а только увеличивается, поэтому я всегда говорю своим студентам: я научу вас хаскелю, но это сломает вам жизнь и не поможет найти работу базы данных – это хлеб программиста, у разработчика баз данных работа будет всегда, учитесь ораклу базам данных – и хлеб с маслом и икрой вам обеспечен. Это я так, как обычно, полемически заостряюсь для мотивации, но совсем чуть-чуть.
Читать дальше на свой страх и риск
Всего голосов 26: ↑26 и ↓0+26
Комментарии27

Методика проектирования архитектурных слоев на основе анемичной модели и DDD

Время на прочтение11 мин
Количество просмотров12K
В результате выполнения методики будут выделены архитектурные слои с максимальной специализацией по уровням прикладных задач и разделением ответственности по SRP.

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

Как следствие, это выражается:

  • в непредсказуемости сроков разработки
  • большим временем локализации ошибок
  • увеличением требования к квалификации разработчиков и сложной заменяемости

Но как выйти на другой уровень качества приложения и разработки?

Если сравнивать архитектуру систем с архитектурой зданий, то на определённом этапе, переполненную хрущёвку надо превратить в небоскрёб. Методика описывает то, КАК это сделать.

image
Читать дальше →
Всего голосов 5: ↑3 и ↓2+1
Комментарии16

Букварь по дизайну систем (Часть 1 с дополнениями по микросервисам)

Время на прочтение37 мин
Количество просмотров23K


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


Словарь


Node — нода — узел с каким либо ресурсом
Content — контент — данныe
Traffic — трафик — запрос/ответ, данные которые передаются от сервера клиенту и наоборот
Hardware — железо — аппаратная часть
Instance — инстанс — созданный объект какой либо сущности. Например инстанс сервера API
Headers — хедеры — заголовки (как правило TCP пакета, но может быть и HTTP запроса)



Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии3

Как стать долларовым миллионером за 30 лет, лежа на диване

Время на прочтение12 мин
Количество просмотров239K


На Хабре недавно вышел пост ״Новичкам фондового рынка: честные разговоры о трейдинге״. Этот пост, опубликованный в одном из самых читаемых блогов Хабра, вводит людей в заблуждение и создает у них ложное представление о том, что игра на бирже — хороший способ заработка. Это вынудило меня написать комментарий, постепенно переросший в целую статью, с детальным разбором того, почему трейдинг — это не способ разбогатеть, а способ потерять деньги, и о том, как на самом деле заработать на инвестициях.
Поехали!
Всего голосов 308: ↑291 и ↓17+274
Комментарии557

Памятка по работе с Canvas API

Время на прочтение2 мин
Количество просмотров15K


Доброго времени суток, друзья!

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

Это не руководство по работе с холстом, а лишь демонстрация его возможностей.

Для меня это также своего рода промежуточный итог в изучении холста.

Код разбит на отдельные блоки-песочницы, которые для удобства чтения помещены под «кат».

Парочка важных моментов.

Ширину и высоту холста лучше определять с помощью атрибутов:

<canvas width="300" height="300"></canvas>

Если мы хотим, чтобы холстом была вся область просмотра, то делаем следующее:

const width = canvas.width = innerWidth
const height = canvas.height = innerHeight

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

const canvas = document.querySelector('canvas')
// не путать с объектом jQuery
const $ = canvas.getContext('2d')

Довольно слов.
Всего голосов 22: ↑21 и ↓1+20
Комментарии2

Практическое руководство по разработке бэкенд-сервиса на Python

Время на прочтение57 мин
Количество просмотров172K
Привет, меня зовут Александр Васин, я бэкенд-разработчик в Едадиле. Идея этого материала началась с того, что я хотел разобрать вступительное задание (Я.Диск) в Школу бэкенд-разработки Яндекса. Я начал описывать все тонкости выбора тех или иных технологий, методику тестирования… Получался совсем не разбор, а очень подробный гайд по тому, как писать бэкенды на Python. От первоначальной идеи остались только требования к сервису, на примере которых удобно разбирать инструменты и технологии. В итоге я очнулся на сотне тысяч символов. Ровно столько потребовалось, чтобы рассмотреть всё в мельчайших подробностях. Итак, программа на следующие 100 килобайт: как строить бэкенд сервиса, начиная от выбора инструментов и заканчивая деплоем.



TL;DR: Вот репка на GitHub с приложением, а кто любит (настоящие) лонгриды — прошу под кат.
Читать дальше →
Всего голосов 70: ↑68 и ↓2+66
Комментарии48

Как мы разрабатывали поле ввода новых сообщений в нашем мессенджере (Gem4me)

Время на прочтение13 мин
Количество просмотров5.1K

Всем привет!



Меня зовут Александр Бальцевич, я работаю на лидерской позиции Web-команды проекта Gem4me. Проект представляет из себя инновационный месенджер для всех и каждого (пока в моих фантазиях, но мы стремимся к этому ;-) )


Коротко о стэке веб-версии: ReactJS (кто бы сомневался) + mobX (лично я вообще не в восторге, но мигрировать никуда не планируем; если интересны детали, в чем именно не устраивает, пишите комментарии — возможно сделаю про это отдельную статью) + storybook + wdio (скриншотное тестирование).

Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии20

Инструменты Domain Driven Design

Время на прочтение11 мин
Количество просмотров23K
Синий кит — отличный пример того, как проектирование сложного проекта пошло не по плану. Кит внешне похож на рыбу, но он млекопитающее: кормит детенышей молоком, у него есть шерсть, а в плавниках до сих пор сохранились кости предплечья и кистей с пальцами, как у сухопутных. Он живет в океанах, но не может дышать под водой, поэтому регулярно поднимается на поверхность глотнуть воздуха, даже когда спит. Кит самое большое животное в мире, длиной с девятиэтажный дом, а массой как 75 автомобилей Volkswagen Touareg, но при этом не хищник, а питается планктоном.

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



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

Что такое DDD и какие инструменты в нем есть, мы расскажем в статье на основе доклада Артема Малышева. Подход DDD в Python, инструменты, подводные камни, контрактное программирование и проектирование продукта вокруг решаемой проблемы, а не используемого фреймворка — все это под катом.
Всего голосов 31: ↑28 и ↓3+25
Комментарии26

Дорабатываем Яндекс.Станцию для просмотра YouTube

Время на прочтение4 мин
Количество просмотров98K
На Яндекс.Станции неудобно смотреть YouTube. Нет рекомендаций, подписок и даже поиск нормально не работает. Поэтому я написал телеграмм бота для отправки на неё любого видео.



Под катом история, как я это сделал несмотря на то, что официального открытого API нет.
Читать дальше →
Всего голосов 50: ↑48 и ↓2+46
Комментарии29

Open Source Guides: Запуск проекта с открытым исходником

Время на прочтение13 мин
Количество просмотров12K


Предисловие переводчика


Пару месяцев назад на Гитхабе случайно наткнулся на ссылку «Open source guides» и не мог оторваться. Где-то за неделю я внимательно прочитал все 10 разделов. Конечно, я и раньше знал про open source: читал разные статьи (например, «Понять Open Source»), использовал такие проекты в работе, обращался с вопросами к сообществам, сообщал о багах, рыскал в issues и, даже делал неуклюжие попытки что-то улучшать, хотя бы документацию. И само собой, сердцем я был с этими ребятами, которые делятся софтом и знаниями по его использованию. Тем не менее, понятие об open source у меня было скорее смутное и обрывочное. А эта статья добавила ясности.

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

Вне зависимости от вашего отношения к open source, думаю, вы найдёте в этой серии из 10 статей много интересных идей и фактов: организационных, психологических, юридических, этических и технических.

Я дал прочитать этот текст нескольким непрограммистам, они сказали, что всё поняли. А в заголовке статьи я намеренно поставил «исходник» без «кода», потому что данная тема актуальна не только для программистов, а почти для любой интеллектуальной деятельности в формате открытого проекта.
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии5

Мечтают ли нейросети об электроденьгах?

Время на прочтение18 мин
Количество просмотров30K
TL;DR: Нет



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

Почему? Давайте разбираться.
Читать дальше →
Всего голосов 84: ↑83 и ↓1+82
Комментарии127

Как рассказать об основных компонентах Android за 15 минут

Время на прочтение17 мин
Количество просмотров22K

Введение


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


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


Не секрет, что в Интернете размещено огромное количество статей на эту тему, но в моем случае повествование будет немного отличаться: здесь будет только наглядная практика, без определений и прочих деталей. То есть смотрим — видим — комментируем происходящее. Смотрится, на мой взгляд, все достаточно просто и наглядно, куски кода получились тоже небольшие и очень простые, готовые к быстрому использованию в собственном проекте. Мне кажется, такой подход дает достаточно широкую обзорную картину классических инструментов Android, и при написании первого приложения вместо вопросов "что мне использовать" будут более конкретные вопросы "как именно мне использовать компонент Х". А уже все подробности об этом человек сможет узнать сам — если захочет.

Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии1

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность