Обновить
-1
0
Михаил@MuKPo6

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

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

Чтение на выходные: «Дизайн-мышление: от разработки новых продуктов до проектирования бизнес-моделей» Тима Брауна

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели2.3K

Тим Браун — CEO и президент американской дизайн-компании IDEO. Промышленный дизайнер по профессии и британец по происхождению. Работами Тима восхищаются в топовых галереях, а некоторые вещи, вышедшие из-под его пера, могут быть даже у вас дома. Например, детская щетка Oral-B и компьютерная мышь Apple с дизайном от его студии. Многие знают Тима по лекциям на TED или читают его блог о дизайн-мышлении. Круто, что автор открыт не только новаторским идеям, но и своей аудитории. Рекомендуем включить свои внутренние приемники и настроиться на дизайн-волну.

Читать далее

Как и зачем составлять чек-листы при разработке проекта? Делюсь бесплатными шаблонами чек-листов

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели27K

Меня зовут Саша Комбаров, я исполнительный директор в Amiga. Мой опыт в заказной разработке более 8 лет. Делюсь самым полезным :) Решили рассказать, как именно это делаем и что это дает. А в конце материала делюсь красивыми чек-листами.

Как составить чек-лист?

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

Время на прочтение12 мин
Охват и читатели6.4K

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

Читать далее

Эффект наблюдателя. Сознание влияет на исход эксперимента?

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели90K

Эффект наблюдателя является краеугольным камнем квантового мистицизма – популярного нынче направления эзотерики, маскирующегося под науку и распространяющего искажённые интерпретации квантовой механики. Он покушается на святое – принцип реализма, согласно которому существует объективная, независимая от сознания наблюдателя реальность. Поэтому его очень любят философы-идеалисты, экстрасенсы, мистики и представители культуры нью-эйдж. Ведь было бы так замечательно, если бы наука экспериментальным путём доказала способность человека влиять на вещественный мир силой мысли! Это сильно воодушевляет тех, кто верит в нематериальную природу сознания, управление реальностью, «секрет притяжения», телекинез и прочую магию. Ссылки на теоретическую физику придают их словам больше убедительности. Мол, официальная наука признала, что каждый из нас своими мыслями создаёт окружающую действительность. Вот только сами физики почти единогласно открещиваются от такой трактовки и наотрез отказываются признавать первичность сознания по отношению к материи. Почему же эффект наблюдателя вызывает столько противоречий: из-за его неверного понимания некоторыми популяризаторами или по причине нежелания учёных-материалистов отказываться от старой парадигмы? Давайте разберёмся.

Читать далее

Основные ресурсы нейронных сетей для начинающих и энтузиастов

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели15K

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

Ознакомиться

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 1

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

Квантовые компьютеры. С точки зрения традиционного программиста-математика.
Часть 1. Основы. Квантовый регистр.

О чем эта публикация

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

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

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

Читать далее

Feature-Sliced Design – альтернативный подход к организации кода приложений

Время на прочтение7 мин
Охват и читатели57K

Feature-Sliced Design — это архитектурная методология, активно набирающая популярность в последнее время. И не зря: организация разработки по её правилам позволяет упростить процессы, сделать их быстрее и гибче. Больше не нужно будет переживать из-за совместной работы в одном домене и конфликтов кода, долго искать ответ на вопрос «А куда же впилить новую фичу, тут и так намешано…» 

О том, как устроена Feature-sliced Design, чем она отличается от «классической» организации кода, плюсах и минусах от её внедрения — в этой статье.

Читать далее

Как мы поднимаем dev-стэнд(ы) и гоняем полноценные тесты api на каждый коммит

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели6.9K

Мы в API отказались от большого количества unit-тестов в пользу большого количества интеграционных/системных, чтобы тестировать меньшим количеством кода большее количество функций, а также наблюдать за взаимодействием разных частей системы.

На самом деле мы просто решили писать тесты не на отдельные классы/методы, а на интерфейс api, которым пользуются клиенты - на сервисы этого API. Тестируя их, мы убиваем двух зайцев: проверяем логику работы сервисов api + форматирование результата.

А такое тестирование сопряжено с несколькими проблемами.

Читать далее

Как я совмещал до 5 удаленных работ. Построил карьеру в digital на вранье: 9 лет за 3 года

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели15K

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

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

Читать далее

Как не зависнуть на пике глупости и преодолеть долину отчаяния? Разбираем эффект Даннинга-Крюгера

Время на прочтение5 мин
Охват и читатели24K

Эффект Даннинга-Крюгера — это когнитивное искажение, при котором люди неверно оценивают свои способности. Менее квалифицированные специалисты переоценивают свои навыки, а люди с глубокой экспертизой — недооценивают. Так возникает завышенная самооценка у одних и синдром самозванца — у других. Под катом рассказываем, как не попасть в эту ловушку.
Читать дальше →

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

Время на прочтение4 мин
Охват и читатели8.9K
Вопрос ограничения доступа к данным встает при разработке многопользовательских систем почти всегда. Основные сценарии следующие:

  1. ограничение доступа к данным для пользователей не прошедших аутентификацию
  2. ограничение доступа к данным для аутентифицированных, но не обладающих необходимыми привелегиями пользователей
  3. предотвращение несанкционированного доступа с помощью прямых обращений к API
  4. фильтрация данных в поисковых запросах и списковых элементах UI (таблицы, списки)
  5. предотвращение изменения данных, принадлежащих одному пользователю другими пользователями

Сценарии 1-3 хорошо описаны и обычно решаются с помощью встроенных средств фреймворков, например role-based или claim-based авторизации. А вот ситуации, когда авторизованный пользователь может по прямому url получить доступ к данным «соседа» или совершить действие в его аккаунте случаются сплошь и рядом. Происходит это чаще всего из-за того что программист забывает добавить необходимую проверку. Можно понадеяться на код-ревью, а можно предотвратить такие ситуации применив глобальные правила фильтрации данных. О них и пойдет речь в статье.
Читать дальше →

Шаблон проектирования «состояние» двадцать лет спустя

Время на прочтение5 мин
Охват и читатели31K
Состояние — поведенческий шаблон проектирования. Используется в тех случаях, когда во время выполнения программы объект должен менять своё поведение в зависимости от своего состояния. Классическая реализация предполагает создание базового абстрактного класса или интерфейса, содержащего все методы и по одному классу на каждое возможно состояние. Шаблон представляет собой частный случай рекомендации «заменяйте условные операторы полиморфизмом».

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

Нарушение принципа подстановки Лисков на лицо. Yaron Minsky предложил альтернативный подход: сделайте недопустимые состояния непредставимыми (make illegal states unrepresentable). Это дает возможность перенести проверку ошибок со времени исполнения на время компиляции. Однако control flow в этом случае будет организован на основе сопоставления с образцом, а не с помощью полиморфизма. К счастью, частичная поддержка pattern matching появилась в C#7.
Альтернативная реализация шаблона

Про ошибки и исключения

Время на прочтение7 мин
Охват и читатели19K


В прошлый раз я разобрал два примера (раз, два), как можно перейти от императивной валидации входных значений к декларативной. Второй пример действительно «слишком много знает» про аспекты хранения и имеет подводные камни (раз, два). Альтернатива – разбить валидацию на 3 части:

  1. Модел байндинг: ожидали int, пришел string – возвращаем 400
  2. Валидация значений: поле email, должно быть в формате your@mail.com, а пришло 123Petya – возвращаем 422
  3. Валидация бизнес-правил: ожидали что корзина пользователя активна, а она в архиве. Возвращаем 422

К сожалению стандартный механизм байндинга ASP.NET MVC не различает ошибки несоответствия типа (получили string вместо int) и валидаци, поэтому если вы хотите различать 400 и 422 коды ответа, то придется это сделать самостоятельно. Но речь не об этом.

Как слой бизнес-логики может вернуть в контроллер сообщение об ошибке?


Самый распространенный по мнению Хабра способ (раз, два, три) – выбросить исключение. Таким образом между понятием «ошибка» и «исключение» ставится знак равно. Причем «ошибка» трактуется в широком смысле слова: это не только валидация, но и проверка прав доступа и бизнес-правил. Так ли это? Является ли любая ошибка «исключительной ситуацией»? Если вы когда-нибудь сталкивались с бухгалтерским или налоговым учетом, то наверняка знаете, что существует специальный термин «корректировка». Он означает, что в прошлом отчетном периоде были поданы неверные сведения и их необходимо исправить. То есть в сфере учета, без которой бизнес не может существовать в принципе, ошибки – объекты первого класса. Для них введены специальные термины. Можно ли назвать их исключительными ситуациями? Нет. Это нормальное поведение. Люди ошибаются. Программисты — просто чересчур оптимистичный народ. Мы просто никогда не снимаем розовых очков.
Читать статью полностью желаешь

Блеск и нищета модели предметной области

Время на прочтение28 мин
Охват и читатели73K


Мартин Фаулер в книге «Patterns of Enterprise Application Architecture» описывает «Модель предметной области (Domain Model)» как сложный подход к организации бизнес-логики. Метод заключается в создании классов, соответствующих объектам предметной области из реального мира как с точки зрения структуры данных, так и поведения. При этом технические аспекты, такие как хранение данных, аутентификация и авторизация, управление транзакциями, выносится за пределы слоя бизнес-логики. Паттерн реализуется одним из двух способов:

  1. Богатая (насыщенная) модель — данные и поведение инкапсулируются внутри объектов предметной области.
  2. Анемичная модель — в объектах предметной области инкапсулируются только данные, поведение (методы) выносится в отдельный слой сервисов.

Фаулер и Эванс считают анемичную модель анти-паттерном. Однако многие кодовые базы, с которыми мне доводилось работать, реализованы именно в стиле «анемичной» модели. Под катом расшифровка и видео моего доклада с DotNext 2019 Moscow, посвященного сравнению сильных и слабых сторон обоих подходов и не очевидным деталям реализации модели предметной области в парадигме ООП и в функциональном стиле.
Читать дальше →

Создание Telegram бота на PHP #5: работа с хуками

Время на прочтение10 мин
Охват и читатели24K

В новом уроке мы с вами поговорим о настройке хуков и напишем свой первый обработчик команд.

В первом уроке я вам рассказывал что такое хуки, давайте повторим:

Hooks (Хуки) — это способ общения с программой, по средствам отправки данных от сервера — клиенту. То есть при определённых изменениях в программе, сервер (приложение) будет отправлять данные на указанный URL скрипта клиента.

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

Для регистрации хука нужно выполнить 2 правила:

Читать далее

Квантовые вычисления и их математические основы

Время на прочтение7 мин
Охват и читатели30K

Автор статьи: Артем Михайлов

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

Читать далее

Generative AI. Как программистам держать нос по ветру

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели16K

Вряд ли найдётся тот, кто ещё не знаком с ChatGPT, Midjourney, StableDiffusion - такая популярность говорит сама за себя. Хайп вокруг генеративного искусственного интеллекта (далее - ИИ) не утихает и уже начинает немного надоедать. Но мы, как разработчики, должны оставаться в курсе событий и принимать реальность такой, какая она есть.

А реальность такова:

• Использование Copilot и его аналогов, ChatGPT и других генеративных нейросетей увеличивает вашу продуктивность.

• Бизнес активно ищет возможности оптимизировать процессы или внедрить новые фичи на основе генеративного ИИ.

Давайте разберём каждое из этих утверждений.

Читать далее

Бардак в идеальном мире. Часть 1

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели32K

Откуда берëтся динамический хаос в простейших механических системах? Как его изучать? А это настоящий хаос или просто что-то очень сложное?

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

Это пример небольшого исследования, доступного студентам младших курсов, поэтому я позволю себе привести некоторые подробности анализа, которые искушённому читателю могут показаться излишними. Моя задача показать, что даже очень простые системы могут быть очень интересными, красивыми и доступными для глубокого анализа. И, конечно же, это повод показать симпатичные картинки, как правило, фрактальные. Ведь все же любят фракталы, верно? Ну, поехали!

Читать далее

Технологии создания МикроЭлектроМеханических (МЭМС) устройств

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели13K
Картинка Vecstock, Freepik

В микроэлектронике существует весьма интересный раздел, который рассматривает так называемые микросистемные элементы, в качестве которых выступают разнообразные микроустройства, объединённые с системами приёма/передачи/обработки информации.

В этой статье мы рассмотрим методы создания подобных элементов, а также кратко рассмотрим их виды.
Читать дальше →

Введение в потоковую передачу данных в Вебе

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели26K


Веб-потоки (web streams) предоставляют основанный на веб-стандартах способ асинхронной потоковой передачи данных по сети. Они позволяют разработчикам обрабатывать большие наборы данных по чанкам (chunks — части, куски), контролировать перегрузку сети (обратное давление — backpressure) и создавать высокоэффективные и отзывчивые приложения.


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


Web Streams API постепенно становится краеугольным камнем основных веб-платформ, включая браузеры, Node.js и Deno. В этой статье мы рассмотрим, что такое веб-потоки, как они работают, их преимущества, а также инструменты, созданные на их основе.




Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Одинцово, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Фулстек разработчик, Веб-разработчик
Ведущий
Git
Linux
ООП
PHP
MySQL