Search
Write a publication
Pull to refresh
25
0
netslow @netslow

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

Send message

Кратко об абстракциях

Reading time3 min
Views9.2K

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


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

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

Всё простое опять стало сложным

Reading time10 min
Views33K
Это выступление состоялась 12 октября 2017 года на конференции Mirror Conf в Браге (Португалия) и ещё раз 9 февраля 2018 года на Awwwards Conference в Берлине.

Этим летом после лекции на веб-конференции у меня состоялась увлекательная беседа с молодой студенткой, которая изучает цифровой дизайн. Было интересно сравнить наши карьерные пути. У меня пятнадцать лет опыта дизайна для веб-клиентов, у неё — один год, но каким-то образом мы оказались в одинаковой ситуации: мы наслаждались работой, но были совершенно дезориентированы и обескуражены быстро растущей сложностью всего вокруг. Что за ерунда произошла? (Конечно, это риторический вопрос).

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

Что такое дырявые абстракции? (иллюстрированное руководство)

Reading time5 min
Views9.2K
Абстракции — естественная составляющая разработки программного обеспечения, и они вполне могут протекать.

image

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

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

В этой статье вы узнаете, что такое «дырявая абстракция», почему она возникает и стоит ли вам — серьезному программисту — беспокоиться об этом.
Читать дальше →

Всё, что вы не знали о CAP теореме

Reading time7 min
Views163K
Во время моего первого опыта работы с распределенными системами я постоянно сталкивался с некой CAP-теоремой, пришлось изрядно покопать, чтобы изучить и осознать её со всех сторон. Я не являюсь мастером баз данных, но надеюсь, что мое маленькое исследование мира распределённых систем будет полезно для обычных разработчиков. В статье я расскажу о том, что такое CAP, его проблемы и альтернативы, а также рассмотрим некоторые популярные системы баз данных через CAP призму.
Читать дальше →

Почему люди не используют формальные методы?

Reading time20 min
Views15K
На Software Engineering Stack Exchange я увидел такой вопрос: «Что мешает широкому внедрению формальных методов?» Вопрос был закрыт как предвзятый, а большинство ответов представляли собой комментарии типа «Слишком дорого!!!» или «Сайт — это не самолёт!!!» В каком-то смысле это верно, но мало что объясняет. Я написал эту статью, чтобы дать более широкую историческую картину формальных методов (FM), почему они на самом деле не используются и что мы делаем для исправления ситуации.

Прежде чем начать, нужно сформулировать некоторые условия. На самом деле существует не так много формальных методов: всего несколько крошечных групп. Это означает, что разные группы по-разному применяют термины. В широком смысле есть две группы формальных методов: формальная спецификация изучает запись точных, однозначных спецификаций, а формальная проверка — методы доказательства. Сюда входят и код, и абстрактные системы. Мало того, что мы используем разные термины для кода и систем, мы часто используем разные инструменты для их верификации. Чтобы ещё больше всё запутать, если кто-то говорит, что создаёт формальную спецификацию, обычно это означает и верификацию дизайна. А если кто-то говорит, что делает формальную верификацию, обычно это относится к верификации кода.
Читать дальше →

Введение в теорию взаимодействующих последовательных процессов (Communicating Sequential Processes — CSP)

Reading time6 min
Views18K

Предисловие


Данный текст является переводом и сокращённым пересказом начальных глав книги Чарльза Э. Хоара. Целью является ознакомление русскоязычной аудитории с данной алгеброй исчисления процессов, коя нашла достаточно широкое применение в современной вычислительной науке в связи с большим распространением параллельных систем. Наиболее близкими и понятными практическими применениями CSP, думаю, будут являться следующие языки программирования:

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

Тройки Хоара

Reading time11 min
Views34K
Я больше 15 лет при программировании использую логику Хоара и нахожу этот подход очень полезным и хочу поделится опытом. Естественно не надо «стрелять из пушки по воробьям», но при написании достаточно сложных алгоритмов или нетривиальных кусков кода применение логики Хоара сэкономит Ваше время и позволит внести элементы некоторого «промышленного» стандарта при программировании.
Читать дальше →

Руководство для практикующего специалиста, как читать научные статьи по языкам программирования

Reading time6 min
Views15K
Неделю назад я пошутил, что статьи по принципам языков программирования POPL должны соответствовать критерию «интеллектуального запугивания», чтобы их принимали для публикации. Конечно, это неправда, но факт в том, что статьи по языкам программирования выглядят особенно устрашающе для специалистов-практиков (или академик действительно работает в другой области компьютерных наук!). Они битком набиты математическими символами и такими фразами как «суждения», «операционная семантика» и тому подобное. Там много тонких вариантов записи, но вы можете в основном уловить суть статьи, усвоив несколько базовых понятий. Так что вместо рассказа об очередной научной статье я подумал, что сегодня лучше напишу краткое практическое руководство по расшифровке научных статей на тему языков программирования. Здесь я следую книге Бенджамина Пирса «Типы в языках программирования» в качестве авторитетного источника.
Читать дальше →

Принципы SOLID в картинках

Reading time4 min
Views534K


Если вы знакомы с объектно-ориентированным программированием, то наверняка слышали и о принципах SOLID. Эти пять правил разработки ПО задают траекторию, по которой нужно следовать, когда пишешь программы, чтобы их проще было масштабировать и поддерживать. Они получили известность благодаря программисту Роберту Мартину.

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

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

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

Ну, приступим.
Читать дальше →

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

Level of difficultyMedium
Reading time8 min
Views6.7K

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

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

Читать далее

Матрица Судьбы (компетенций) Android-программиста

Reading time7 min
Views4.8K

«Вы заметили, какое сейчас время? Новая эра, новая эпоха. Век открытых, доступных знаний – было бы желание, как говорится. Все больше и больше людей как будто просыпаются, выходят из длительного сна, состояния стагнация»1 - цитата из книги.

Вопрос грейдов всегда волнует тех, кто занимается разработкой ПО. Как понять самому, а главное доказать руководству, что ты находишься на новом уровне со всеми вытекающими последствиями? Многие из нас интроверты, и идти доказывать что-то кому-то – мало кто хочет. Как убрать фактор “хороших отношений” с руководством у коллег? Да и вообще хочется объективности и прозрачности критериев. Именно этим мы руководствовались в “Рексофт”, когда задумывали такой инструмент как “Матрица компетенций” (МК). Именно про него я хочу вам немного рассказать. Разберёмся в том, что это такое и с чем его едят. Чтобы не быть голословным, посмотрим на реальный пример матрицы, которая активно используется в компании. Возьмем матрицу компетенций Android-программиста, которую я (Олег Иванов, руководитель группы мобильной разработки компании «Рексофт») когда-то составил и стараюсь поддерживать в актуальном виде.

Читать далее

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

Reading time7 min
Views27K

Привет, Хабр!

Сегодня поговорим про матрицы компетенций и, как мы их внедряли в «Рексофт». Мы уже рассказывали про матрицу Android-программиста, и как мы вводили кросс-интервью при повышении грейда, а сегодня я расскажу, о том, как все начиналось и куда мы пришли. Итак, поехали!

Читать далее

Незнакомцы в поезде, или Как мы вводили кросс-интервью при повышении грейда

Reading time6 min
Views3.5K

Всем привет! В этой статье я расскажу, как у нас в «Рексофт» происходит повышение грейдов, почему именно так, и как мы к этому пришли.

К сожалению, начать придется издалека, и воображаемая машина времени отправляет нас в прошлое. Пристегните ремни, постараемся двигаться быстро. И, пожалуйста, наденьте спасательные жилеты: без «воды» никуда. ​

Читать далее

Как страшненький лендинг Midjourney втрое повысил конверсию, а банальные тексты Chat GPT оказались вдвое кликабельнее

Level of difficultyEasy
Reading time8 min
Views17K

Неочевидный маркетинг с Chat GPT и Midjourney. ИИ придумал УТП для разных ценовых сегментов аудитории, а потом написал скрипт для подмены контента на сайте, и это на 23% повысило конверсию. Рекомендация от нейросети увеличила на 5% бронирования в сети отелей. Как задавать нейросетям правильные запросы и получать классные маркетинговые решения.

Расскажем, о нашем практическом опыте использования нейросетей в контекстной рекламе и интернет-маркетинге. Вы узнаете:

1. Как сделать рекламные объявления в 2 раза более кликабельными при помощи Chat GPT

2. Как рекомендация от нейросети принесла дополнительные 5% бронирований для сети отелей

3. Как ИИ придумал эффективное УТП для разных ценовых сегментов аудитории

4. А потом ИИ написал скрипт для подмены контента на сайте, и это на 23% увеличило его конверсию

5. Как страшненький на вид лендинг от Midjourney оказался в 3 раза более конверсионным

6. Как правильно пользоваться нейросетями: 6 выводов для интернет-маркетолога

Читать далее

Предсказание остановок оборудования с использованием LSTM и Байесовского подхода

Level of difficultyMedium
Reading time6 min
Views4.4K

Привет, дорогие читатели Хабра! 

Исследования выполнено в рамках выпускного проекта на курсе Machine Learning Advanced в OTUS. Рецензенты проекта - @bekemax, @stureiko

Данные были предоставлены ПАО «Северсталь» для хакатона ЛИДЕРЫ ЦИФРОВОЙ ТРАНСФОРМАЦИИ 2023

В проекте развиты и реализованы в коде идеи Давида Пагано (Davide Pagano) из статьи A predictive maintenance model using Long Short-Term Memory Neural Networks and Bayesian inference, опубликованные в Decision Analytics Journal в марте 2023. Из-за соглашения о неразглашении никакие подробности о компании, а также ее данные и какой-либо код для иллюстрации исследования автором в статье предоставлены не были.

Читать далее

Когнитивные искажения в программировании

Reading time5 min
Views18K

Всем привет!

Сегодня мы поговорим о такой интересной и забавной вещи, как когнитивные искажения. Что это? Зачем это? Как с этим бороться или, быть может, их даже можно использовать? Для начала давайте разберемся, о чем же мы говорим.

Читать далее

Помог себе, помоги другому: мой опыт менторства в IT

Reading time5 min
Views5.4K

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

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

Читать далее

Что такое ШИМ и почему мерцает OLED? РАЗБОР

Reading time8 min
Views157K
ШИМ, все вокруг говорят про ШИМ. Ну фиг знает — я его не вижу. Что хотите сказать, если понижу яркость дисплея, это как-то будет меня утомлять? Кажется тут есть в чём разобраться!

Сегодня мы объясним как на самом деле работает ШИМ. Узнаем сколько FPS видит человек, а сколько муха.  Проведём тесты ШИМ на осциллографе. И, конечно, расскажем как избавиться от ШИМа на Samsung и на iPhone.



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

Почему так? Дело в том, что в отличие от большинства IPS-экранов большинство OLED-матриц мерцают. Примерно как дешевые люминесцентные лампы. И это не очень хорошо сказывается на зрении.

Подтверждение электронной почты с помощью Spring Boot & Angular

Level of difficultyMedium
Reading time7 min
Views5.8K

Как сделать подтверждение почты с помощью Spring Boot & Angular?

Всем привет! Мы с вами поговорим о важном аспекте безопасности — подтверждении почты пользователей. Мы расскажем, как сделать это с использованием Spring Boot и Angular, двух мощных инструментов для создания современных веб-приложений.

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

Читать далее

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity