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

Пользователь

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

Создание архитектуры программы или как проектировать табуретку

Время на прочтение25 мин
Количество просмотров691K
Взявшись за написание небольшого, но реального и растущего проекта, мы «на собственной шкуре» убедились, насколько важно то, чтобы программа не только хорошо работала, но и была хорошо организована. Не верьте, что продуманная архитектура нужна только большим проектам (просто для больших проектов «смертельность» отсутствия архитектуры очевидна). Сложность, как правило, растет гораздо быстрее размеров программы. И если не позаботиться об этом заранее, то довольно быстро наступает момент, когда ты перестаешь ее контролировать. Правильная архитектура экономит очень много сил, времени и денег. А нередко вообще определяет то, выживет ваш проект или нет. И даже если речь идет всего лишь о «построении табуретки» все равно вначале очень полезно ее спроектировать.

К моему удивлению оказалось, что на вроде бы актуальный вопрос: «Как построить хорошую/красивую архитектуру ПО?» — не так легко найти ответ. Не смотря на то, что есть много книг и статей, посвященных и шаблонам проектирования и принципам проектирования, например, принципам SOLID (кратко описаны тут, подробно и с примерами можно посмотреть тут, тут и тут) и тому, как правильно оформлять код, все равно оставалось чувство, что чего-то важного не хватает. Это было похоже на то, как если бы вам дали множество замечательных и полезных инструментов, но забыли главное — объяснить, а как же «проектировать табуретку».

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

Данная статья является попыткой ответить на эти вопросы хотя бы в первом приближении.
Читать дальше →
Всего голосов 88: ↑85 и ↓3+82
Комментарии45

RabbitMQ против Kafka: отказоустойчивость и высокая доступность

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


В прошлой статье мы рассмотрели кластеризацию RabbitMQ для обеспечения отказоустойчивости и высокой доступности. Теперь глубоко покопаемся в Apache Kafka.

Здесь единицей репликации является раздел (partition). У каждого топика один или несколько разделов. В каждом разделе есть лидер с фолловерами или без них. При создании топика указывается количество разделов и коэффициент репликации. Обычное значение 3, это означает три реплики: один лидер и два фолловера.
Читать дальше →
Всего голосов 48: ↑45 и ↓3+42
Комментарии3

Профсоюзный дайджест. Цифровое подавление, бригады “удоленщиков”, 10 суток ареста, зарплатный железный занавес, IT 90-е

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

Syn ack, Хабр!

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

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

Читать далее
Всего голосов 33: ↑26 и ↓7+25
Комментарии21

Профсоюзный дайджест. Хвост виляет собакой. Украина, Apple, XSolla. 06-12.09.2021

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

Syn ack, хабр!

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

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

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

Читать далее
Всего голосов 37: ↑22 и ↓15+13
Комментарии62

Профсоюзный дайджест. Неравенство зарплат, Cyberpunk, Увольнения, Таксисты бизнесмены. Apple, Яндекс. 30.08-05.09.2021

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

Syn ack, Хабр!

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

На что ты идешь уже сейчас ради успешного прохождения performance review и на что ты будешь готов в будущем?

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

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

А судьбы тех, кто не сможет конкурировать можно посмотреть уже сегодня.

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

Профсоюзный дайджест. NASDAQ, VironIt, Яндекс, Метро, Uber. 23-29.08.2021

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

Syn ack, Хабр!

Часто ли ты задумываешься о том, а что ты один можешь сделать? Но, почему ты считаешь, что ты один?

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

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

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

Чтобы что-то начало меняться, нужно объединяться в профсоюзы, и эта неделя как раз показывает, как объединения работников делают их более свободными. 

Но в любом случае, прежде чем начинать действовать тебе следует сначала ознакомиться с теорией

Читать далее
Всего голосов 18: ↑13 и ↓5+9
Комментарии58

Профсоюзный дайджест. Яндекс, Wildberries, Nestle, Apple. 16-22.08.2021

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

Syn ack, Хабр!

Эта неделя удивляет тем, как порой айти компании стремятся извлечь максимальную прибыль разнообразными способами, когда в ход идут такие, казалось бы, забытые способы извлечения максимальной выгоды, как рабство!

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

Давай посмотрим, как же достигают своего успеха самые успешные компании на рынке АйТи.

Читать далее
Всего голосов 20: ↑17 и ↓3+23
Комментарии37

Профсоюзный дайджест. Blizzard, Яндекс.Лавка, Google, МЦСТ, Amazon. 09-15.08.2021

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

Syn ack, Хабр!

Эта неделя была богата на противостояния между компаниями и их сотрудниками и не только. Отличились как ведущие гиганты АйТи индустрии, так и ведущие компании Российской федерации. Я считаю, это противостояние будет только нарастать, а значит и тренд на создание профсоюзов в АйТи индустрии будет только расти.

Давай посмотрим, что же такого произошло на этой неделе вместе.

Читать далее
Всего голосов 13: ↑8 и ↓5+3
Комментарии37

Полная домашняя автоматизация в новостройке

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


Панель управления квартирой в феврале 2020 года (Home Assistant)

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


Строительство нашего дома в процессе — ноябрь 2016 года
Умный дом в самом соку...
Всего голосов 104: ↑101 и ↓3+132
Комментарии514

10 признаков того, что хороший программист из вас не получится

Время на прочтение11 мин
Количество просмотров331K
Привет, Хабр! Представляю вашему вниманию перевод статьи «10 Signs You Will Suck at Programming» автора Jonathan Bluks.



Очень часто на Reddit или Quora я вижу вопросы вида «Как понять, смогу ли я стать успешным программистом?» (На самом деле, эта статья является расширенным продолжением моего недавнего ответа на Quora.) Когда кто-то задумывается о смене карьеры или интересуется разработкой и хочет знать, что для этого требуется, неизбежно возникает этот самый вопрос.

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

Будучи преподавателем на курсе «Full-stack Web-development», я работал со многими программистами-новичками. Хорошая новость в том, что мне редко встречались студенты, которые вообще не могли научиться программировать. Я считаю, что умение программировать — такой же базовый навык, как умение читать, писать и считать. Это под силу любому, так как это одна из способностей человека, но этому действительно надо учиться.

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

Этот список поможет вам понять, сможете ли вы стать хорошим программистом, а также что делать, если вы решите это изменить.
Читать дальше →
Всего голосов 133: ↑110 и ↓23+116
Комментарии518

Собеседуем кандидата на должность Senior Software Developer

Время на прочтение7 мин
Количество просмотров53K
Я провел не одну сотню собеседований как с одной стороны, так и с другой. В этой статье я хотел бы поделиться своими опытом, наблюдениями и интересными моментами. Возможно, кого-то это убережет от ошибок, неверных выводов и потерянного времени.
Читать дальше →
Всего голосов 71: ↑55 и ↓16+52
Комментарии151

Микросервисная архитектура, Spring Cloud и Docker

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

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



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

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

Знакомство с АОП

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

Парадигмы программирования


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

У каждой парадигмы есть свои особенности, однако, главным фактором, различающим их, является понятие основной единицы программы. Вот самые популярные из них:
  • инструкция (императивное программирование, FORTRAN/C/PHP),
  • функция (функциональное программирование, Haskell/Lisp/F#/Scala),
  • прототип (прототипное программирование, JavaScript),
  • объект (объектно-ориентированное программирование, С++/Java),
  • факт (логическое программирование, PROLOG).

Стоит заметить, что в общем случае язык программирования однозначно не определяет используемую парадигму: на том же PHP можно писать как императивные, так и объектно-ориентированные программы.

В этой статье я хочу рассказать о сравнительно молодой, но крайне, на мой взгляд, полезной парадигме программирования – аспектно-ориентированном программировании.

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

Material Design: на Луну и обратно

Время на прочтение11 мин
Количество просмотров388K
“Это унылое диалоговое окно действительно нужно?”



В этой статье я изложил главные принципы Material Design и дал советы по их воплощению. Текст написан по следам мастер-класса для разработчиков, который мы, Роботы, устраивали совместно с российским офисом Google (Think Mobile).


Когда-то все продукты Google выглядели по-разному плохо. Даже один продукт на разных платформах выглядел неконсистентно.

Все стало меняться в 2011 году, когда в Google начали усиленно работать над унификацией визуальной части экосистемы своих продуктов и назвали все это Project Kennedy.

При чем тут Кеннеди?
Легенда такова: президент Кеннеди инициировал программу полёта человека на Луну (если верить, что этот полёт когда-либо был). А большой начальник в Google Ларри Пейдж исповедует принцип, что продукты нет смысла улучшать на 10% — они должны быть в 10 раз лучше, чем у конкурентов. Если уж запускать продукт, то сразу на Луну. Вот и здесь было решено круто всё переделать.

Читать дальше →
Всего голосов 146: ↑135 и ↓11+124
Комментарии120

Моя реализация Java библиотеки для биржи BTC-e

Время на прочтение5 мин
Количество просмотров15K
После начала торговли на BTC-e я заметил довольно удачное API. Его возможности вполне можно направить на благое дело. А именно — на создание торговых ботов и мобильные клиенты. Про ботов понятно, а вот клиент под Android понадобился довольно скоро, но на маркете тогда их вообще не нашлось. А когда библиотека была дописана (да да, кода в ней мало, но получился долгострой), приложения хоть и появились, но были все равно какие-то не такие. Итак, если вам интересно узнать, что же у меня получилось и насколько это может быть полезно вам — прошу под кат.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии9

SQLite — замечательная встраиваемая БД (часть 1)

Время на прочтение5 мин
Количество просмотров480K
Решил все-таки написать статью про SQLite, в которой хочу обобщить свой 3-х летний опыт использования этой БД под Windows. Вижу, что тема популярная, но информации мало.

Часть 2
Часть 3

Небольшая вводная.

Эта статья не для начинающих программистов.
Она не является учебником по SQL.
Она не агитирует использовать SQLite.
Она не агитирует не использовать SQLite.
Статья написана в виде вопросов от гипотетического новичка в SQLite и ответов на них (поскольку информации очень много и так хоть немного проще ее структурировать).

Читать дальше →
Всего голосов 102: ↑100 и ↓2+98
Комментарии54

Что может Ctrl в Visual Studio

Время на прочтение2 мин
Количество просмотров234K
Одна простая клавиша Ctrl может значительно упростить работу в Visual Studio. Помимо типичных комбинаций, которые нам очень хорошо знакомы, существует также и большое количество других, менее известных, но от этого и более ценных.

Далее список того, что можно делать с клавишей Ctrl.

Читать дальше →
Всего голосов 108: ↑84 и ↓24+60
Комментарии61

Пятница: все дизайнеры интерфейсов попадают в ад…

Время на прочтение1 мин
Количество просмотров47K
image

Каждый раз, когда я вижу надпись «Обновить сейчас или напомнить завтра», у меня возникает улыбка, при мысли о том, что все люди, участвовавшие в разработке подобных диалоговых окон (с*ки, верните кнопку «Нет и никогда больше не спрашивать»), окажутся в тепленьком уютненьком аду, где им нужно будет просто ввести телефонный номер…
Всего голосов 149: ↑131 и ↓18+113
Комментарии55

Мужчина, который живёт без 90% мозга, озадачил учёных

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

Магнитно-резонансная томограмма пациента с практически отсутствующим мозгом, но ведущим нормальную социальную жизнь. Фото: Feuillet et al./The Lancet

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

Несмотря на десятилетия исследований, специалисты до сих пор не могут объяснить феномен сознания — фундаментального способа, каким человек соотносится с миром. Нам известно, что это нечто формируется в головном мозге, на базе нейронов. Но каким образом сохраняется сознание, если отсутствует подавляющее большинство нейронов?
Читать дальше →
Всего голосов 70: ↑62 и ↓8+54
Комментарии670

Четыре совета от инди-разработчика игр: как добиться трех миллионов загрузок

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


Имран Шафик днем работает разработчиком медицинского программного обеспечения, а вечерами разрабатывает игры для Windows Phone в качестве инди-разработчика.

Разработка игр – это моя креативная отдушина. Разработка игр занимает огромный объем моего свободного времени, но я мечтаю о том чтобы когда-нибудь сделать на этом карьеру.” – рассказывает Имран @DanglingNeuron Шафик.

Его бренд Dangling Neuron содержит отличные истории успеха, включая игры Air Soccer Fever, которая преодолела отметку в три миллиона загрузок и новую Tank Arena, которая уже сумела достигнуть отметки в 250 тысяч загрузок всего за несколько месяцев.

Мы попросили рассказать Имрана что-нибудь о том, что больше всего волнует инди-разработчиков. К счастью, Имран поведал нам несколько отличных советов по маркетингу, монетизации, вовлечению пользователей и даже о использовании Unity. Ниже вы найдете его советы.
Читать дальше →
Всего голосов 42: ↑29 и ↓13+16
Комментарии5

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность