Pull to refresh
0
0

Developer

Send message

Golang-дайджест № 6 (1 – 30 июня  2021)

Reading time4 min
Views5.8K

Свежая подборка новостей и материалов

Интересное в этом выпуске

Выпущены версии Go 1.16.5 и 1.15.13, выпущен gopls v0.7.0, создание собственного Ngrok в 130 строках, GopherCon Europe 2021 Online

Приятного чтения!

Читать далее
Total votes 14: ↑13 and ↓1+14
Comments0

Актуальность принципов SOLID

Reading time5 min
Views38K

Впервые принципы SOLID были представлены в 2000 году в статье Design Principles and Design Patterns Роберта Мартина, также известного как Дядюшка Боб. 

С тех пор прошло два десятилетия. Возникает вопрос - релевантны ли эти принципы до сих пор?

Перед вами перевод статьи Дядюшки Боба, опубликованной в октябре 2020 года, в которой он рассуждает об актуальности принципов SOLID для современной разработки.   

Недавно я получил письмо с примерно следующими соображениями:

Годами знание принципов SOLID было стандартом при найме. От кандидатов ожидалось уверенное владение этими принципами. Однако позже один из наших менеджеров, который уже почти не пишет код, усомнился, разумно ли это. Он утверждал, что принцип открытости-закрытости стал менее важен, так как по большей части мы уже не пишем код для крупных монолитов. А вносить изменения в компактные микросервисы - безопасно и просто.

Принцип подстановки Лисков давно устарел, потому что мы уже не уделяем столько внимания наследованию, сколько уделяли 20 лет назад. Думаю, нам стоит рассмотреть позицию Дена Норса о SOLID - “Пишите простой код”

Читать далее
Total votes 39: ↑33 and ↓6+36
Comments87

Golang-дайджест № 5 (1 – 31 мая  2021)

Reading time4 min
Views4.7K

Свежая подборка новостей и материалов

Интересное в этом выпуске

выпущены версии Go 1.16.4 и 1.15.12, эмулятор Atari VCS, эмулятор Game Boy, фантастическая библиотека 2D-игр

Приятного чтения!

Читать далее
Total votes 9: ↑7 and ↓2+7
Comments1

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

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

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

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

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

QEMU.js: теперь по-серьёзному и с WASM

Reading time13 min
Views13K

Когда-то давно я смеха ради решил доказать обратимость процесса и научиться генерировать JavaScript (а точнее, Asm.js) из машинного кода. Для эксперимента был выбран QEMU, некоторое время спустя была написана статья на Хабр. В комментариях мне посоветовали переделать проект на WebAssembly, да и самому бросать почти законченный проект как-то не хотелось… Работа шла, но уж очень медленно, и вот, недавно в той статье появился комментарий на тему «Так и чем всё закончилось?». На мой развёрнутый ответ я услышал «Это тянет на статью». Ну, раз тянет, то будет статья. Может, кому пригодится. Из неё читатель узнает некоторые факты про устройство бекендов кодогенерации QEMU, а также как написать Just-in-Time компилятор для веб-приложения.

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

Почему единицу не относят к простым числам, и когда её вообще начали считать числом

Reading time5 min
Views40K
Мой друг инженер недавно меня удивил. Он сказал, что не уверен, является число 1 простым или нет. Я удивилась, потому что никто из математиков не считает единицу простым.

Путаница начинается с определения, которое дают простому числу: это положительное целое число, которое делится только на 1 и само на себя. Число 1 делится на 1, и оно делится само на себя. Но деление на себя и на 1 здесь не является двумя различными факторами. Так простое число это или нет? Когда я пишу определение простого числа, то пытаюсь устранить эту двусмысленность: я прямо говорю о необходимости ровно двух различных условий, деление на 1 и само на себя, или что простое число должно быть целым числом больше 1. Но зачем идти на такие меры, чтобы исключить 1?
Читать дальше →
Total votes 40: ↑36 and ↓4+32
Comments75

Как сделать из сайта приложение и выложить его в Google Play за несколько часов. Часть 1/2: Progressive Web App

Reading time8 min
Views98K


Наверное, все близкие к веб-разработке люди уже наслышаны о Progressive Web App. Ещё бы! Эта технология практически уравняла веб и мобильную разработку с точки зрения распространения продуктов и вовлечённости пользователей.

Да, современный фронтенд, написанный, например, на React, работает как приложение. Но вот только скачивается это приложение в браузер и запускается из него. В этом и заключается огромный гандикап, который всегда имела мобильная разработка. Давайте подумаем, чем с точки зрения обычного пользователя, «приложение» отличается от «сайта». Сразу в голову приходит, что приложение в телефоне, а сайт на компьютере. Но ведь есть мобильный браузер, так что сайт и в телефоне тоже. Тогда остаётся 3 существенных отличия:
Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments31

Архитектура SPA-приложения биржи в 2019 году

Reading time42 min
Views17K

Приветствую, хабровчане!


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


Читать дальше →
Total votes 32: ↑26 and ↓6+20
Comments26

Как не слить 10 миллионов бюджета вашего заказчика, играясь с Agile

Reading time6 min
Views17K
В этом посте я расскажу о тех проблемах с которыми в течении года сталкивалась наша Scrum Front End команда при работе над приличным проектом. Мы начинали разрабатывать проект с нуля используя стек технологий React + Typescript. Оглядываясь назад я вижу многие миллионы выброшенные впустую просто из-за того, что процесс разработки не был поставлен с самого начала правильно. Но на это есть свои причины.
Читать дальше →
Total votes 42: ↑36 and ↓6+30
Comments27

Архитектура сетевого балансировщика нагрузки в Яндекс.Облаке

Reading time10 min
Views23K

Привет, я Сергей Еланцев, разрабатываю сетевой балансировщик нагрузки в Яндекс.Облаке. Раньше я руководил разработкой L7-балансировщика портала Яндекса — коллеги шутят, что чем бы я ни занимался, получается балансировщик. Я расскажу читателям Хабра, как нужно управлять нагрузкой в облачной платформе, каким мы видим идеальный инструмент достижения этой цели и как движемся к построению этого инструмента.
Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments6

Краткий курс по управлению удаленными командами

Reading time8 min
Views13K

Всем привет!


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


  • «Стоит ли работать удаленно?»
  • «Как вы организовали удаленную работу для своей команды?»
  • «Нам сложно работать с удаленными разработчиками...»

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


И раз… два… три… Поехали!


Читать дальше →
Total votes 45: ↑38 and ↓7+31
Comments7

Получить работу в Германии станет проще

Reading time2 min
Views76K

19 декабря 2018 года кабинет министров Германии согласовал закон о квалифицированной трудовой иммиграции (Fachkräfteeinwanderungsgesetz). Благодаря ему будет легче мигрировать квалифицированным работникам из стран, не входящих в Европейский Союз. Но эти изменения коснутся только квалифицированных рабочих. Немцы рассчитывают, что специалисты из России, Украины, Индии, Китая и других стран восполнят дефицит кадров. Сразу отмечу, что речь не идет о неквалифицированной или низкоквалифицированной работе.

Читать дальше →
Total votes 83: ↑71 and ↓12+59
Comments353

Что нового в Blazor 0.7.0

Reading time5 min
Views9.7K
Blazor 0.7.0 теперь доступен! В этом обновлении основное внимание уделяется ADRs (ancestor-descendent relationships). Кроме того, мы добавили некоторые улучшения в процесс отладки. Подробнее под катом!

Немного про Blazor: фреймворк для браузерных приложений, написанный на .NET и запускающийся с помощью WebAssembly. Он даёт вам все преимущества современных одностраничных приложений (SPA), позволяя при этом использовать .NET от начала и до конца, вплоть до общего кода на сервере и клиенте. [1]

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

Семантика копирования и управление ресурсами в C++

Reading time28 min
Views53K

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



Читать дальше →
Total votes 45: ↑44 and ↓1+43
Comments83

Манифест Чистого Программиста или краткий конспект книги «Чистый Код» Роберта Мартина

Reading time8 min
Views96K

Данная статья является конспектом книги "Чистый Код" Роберта Мартина и моим пониманием того, каким Чистый Код должен быть. Тут нет разделов о тестировании, TDD, о том какая должна быть архитектура и т.д. Здесь все только о том, каким должен быть Чистый Код.


Читать дальше →
Total votes 48: ↑44 and ↓4+40
Comments49

Domain Driven Design на практике

Reading time12 min
Views269K
Эванс написал хорошую книжку с хорошими идеями. Но этим идеям не хватает методологической основы. Опытным разработчикам и архитекторам на интуитивном уровне понятно, что надо быть как можно ближе к предметной области заказчика, что с заказчиком надо разговаривать. Но не понятно как оценить проект на соответствие Ubiquitous Language и реального языка заказчика? Как понять, что домен разделен на Bounded Context правильно? Как вообще определить используется DDD в проекте или нет?

Последний пункт особенно актуален. На одном из своих выступлений Грег Янг попросил поднять руки тех, кто практиукует DDD. А потом попросил опустить тех, кто создает классы с набором публичных геттеров и сеттеров, располагает логику в «сервисах» и «хелперах» и называет это DDD. По залу прошел смешок:)

Как же правильно структурировать бизнес-логику в DDD-стиле? Где хранить «поведение»: в сервисах, сущностях, extension-методах или везде по чуть-чуть? В статье я расскажу о том, как проектирую предметную область и какими правилами пользуюсь.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments18

Лекции Технопарка. 1 семестр. С/С++

Reading time6 min
Views110K
Мы продолжаем наши еженедельные публикации учебных материалов Технопарка. Предыдущие лекции были посвящены web-технологиям в целом, а также алгоритмам и структурам данных. В третьем блоке лекций рассказывается о языках С и С++.

Лекция 1. Язык С. Основы организации и использования оперативной и сверхоперативной памяти


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


Читать дальше →
Total votes 72: ↑70 and ↓2+68
Comments83

Налить пива силой мысли

Reading time2 min
Views42K


Это «НейроКран»: при помощи нейроинтерфейса ты силой мысли управляешь процессом розлива напитков.

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



А это сейф, открываемый силой мысли в квесте в реальности «Киберпанк». Здесь четыре задвижки, каждая со своим уровнем сложности. Первую можно открыть, почти не концентрируясь, а последняя — это уже вызов для навыка сосредоточения.
Читать дальше →
Total votes 70: ↑54 and ↓16+38
Comments46

REST API за пару минут с Lionframe

Reading time2 min
Views18K
Генераторы кода упрощают жизнь рядового разработчика, во всяком случае призваны это делать, избавляя его от скучного написания однотипного кода. Один из таких генераторов команда Sylius'a представила как подарок для коммьюнити к Рождеству.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments9

webpack: 7 бед — один ответ

Reading time12 min
Views179K
После моего недавнего выступления на MoscowJS #17 с одноимённым докладом у многих возник интерес к этому инструменту. В рамках 11-го выпуска RadioJS, Миша Башкиров bashmish рассказал, что решился попробовать его в своём новом проекте, об успешном опыте и множестве положительных эмоций. Но были озвучены вопросы и возникла дискуссия, в результате которой я решил написать эту статью, чтобы раскрыть основные тезисы с доклада и рассказать о том, что тогда не успел.
Статья ориентирована, как на профессионалов, так и на тех, кто с похожими технологиями ещё не сталкивался.
Итак, начнём.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments13
1

Information

Rating
Does not participate
Registered
Activity

Specialization

Fullstack Developer, Web Developer
JavaScript
Node.js
Golang
PHP
PostgreSQL
C#
Object-oriented design
Software development
SQL
Linux