Pull to refresh
0
0

Стремящийся к совершенству недо-прогер

Send message

Type VS Interface: разница есть, но не всегда

Level of difficultyMedium
Reading time8 min
Views6K

Когда речь заходит о TypeScript, один из самых частых вопросов, которые мне задают студенты, звучит так: «Что лучше использовать: интерфейсы или типы?»

На эту тему написано уже множество статей, в том числе на Хабре (например тут и тут), и обсуждений в сообществе более чем достаточно. Однако даже после всех этих разъяснений часто остаётся ощущение, что однозначного ответа нет. Одни авторы говорят: «Интерфейсы лучше для декларативности», другие уверяют: «Типы универсальнее», и каждый подкрепляет свою точку зрения примерами.

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

И как результат, я не только нашёл интересные аспекты использования интерфейсов и типов, но и захотел поделиться ими с вами. Эта статья — попытка дать максимально объективный взгляд на выбор между интерфейсами и типами, рассматривая их с точки зрения практики, возможностей и ограничений TypeScript.

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

В поисках наиболее точного и понятного объяснения различий между интерфейсами и типами я пересмотрел множество источников. Среди них особенно выделилась статья «Type vs Interface» от Mykyta M.. В ней автор обстоятельно разбирает преимущества и недостатки обоих подходов, а также приводит примеры их использования.

Читать далее

Как работает JS: системы хранения данных

Reading time16 min
Views41K
При проектировании веб-приложения чрезвычайно важно выбрать подходящие средства для локального хранения данных. Речь идёт о механизме, который позволит надёжно хранить информацию, будет способствовать снижению объёма данных, передаваемых между серверной и клиентской частями приложения, и при этом не ухудшит скорость реакции приложения на воздействия пользователя. Хорошо продуманная стратегия локального кэширования данных является центральным звеном в разработке мобильных веб-приложений, которые могут работать без подключения к интернету. Современные пользователи всё чаще и чаще относятся к подобным возможностям как к чему-то привычному и ожидаемому.



Сегодня, в переводе 16 части серии материалов, посвящённых всему, что связано с JavaScript, мы поговорим о механизмах хранения данных на стороне клиента, которые могут использоваться в веб-разработке, и о выборе системы хранения данных для конкретного проекта.
Читать дальше →

Jest и Puppeteer: автоматизация тестирования веб-интерфейсов

Reading time9 min
Views44K
Эту статью написал программист из Италии Валентино Гаглиарди. Он говорит, что сразу после выхода Puppeteer его заинтересовала автоматизация тестирования веб-интерфейсов с использованием данной библиотеки и Jest. После этого он приступил к экспериментам.



Здесь речь пойдёт об основах работы с Puppeteer и Jest на примере тестирования веб-формы. Также тут будут рассмотрены особенности использования Chromium с пользовательским интерфейсом и без него, и некоторые полезные мелочи, касающиеся различных аспектов тестирования веб-страниц и организации рабочей среды. Валентино полагает, что, хотя Puppeteer — инструмент сравнительно новый и его API вполне может подвергаться изменениям, у него есть шанс занять достойное место в арсенале веб-разработчиков.

Чистая Архитектура для веб-приложений

Reading time36 min
Views112K
Хочу поделиться с вами подходом который я уже много лет использую в разработке приложений, в том числе и веб-приложений. Многим разработчикам настольных, серверных и мобильных приложений этот подход хорошо знаком, т.к. является фундаментальным при построении таких приложений, однако в вебе он представлен очень скудно, хотя желающие использовать такой подход однозначно есть. Кроме того на таком подходе написан редактор VS Code.

Чистая Архитектура

В результате применения этого подхода вы отвяжетесь от конкретного фреймворка. Сможете легко переключать библиотеку представления внутри вашего приложения, например React, Preact, Vue, Mithril без переписывания бизнес логики, а в большинстве случаев даже вьюхи. Если у вас есть приложение на Angular 1, вы без проблем сможете перевести его на Angular 2+, React, Svelte, WebComponents или даже свою библиотеку представления. Если у вас есть приложение на Angular 2+, но нету специалистов для него, то вы без проблем сможете перевести приложение на более популярную библиотеку без переписывания бизнес логики. А в итоге вообще забыть про проблему миграции с фремворка на фреймворк. Что же это за магия такая?
Читать дальше →

Как стать product-менеджером: специфика профессии, must-have навыки и вектор развития

Reading time10 min
Views15K

Product-менеджер (продакт-менеджер или просто “продакт”) — это человек, который отвечает за успех продукта или какой-то его части. Миссия продакта отчасти альтруистическая и состоит в создании чего-то ценного, что сделает жизнь людей лучше. 

С другой стороны, сегодня профессия product-менеджера очень популярна, поэтому появляется все больше искателей легкого пути: проходишь онлайн-курс, добавляешь строку “product-менеджер” в резюме и просишь зарплату от 150 000 рублей. 

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

Читать далее

Мега-Учебник Flask Глава 1: Привет, мир! ( издание 2018 )

Reading time12 min
Views375K

blog.miguelgrinberg.com


Miguel Grinberg




>>> следующая глава >>>


Эта статья является переводом нового издания учебника Мигеля Гринберга. Прежний перевод давно утратил свою актуальность.


Автор планирует завершить его выпуск в мае 2018. Я, со своей стороны, постараюсь не отставать с переводом.

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

Мега-Учебник Flask, Часть XXII: Фоновые задачи

Reading time26 min
Views37K

(издание 2018)


Miguel Grinberg




Туда Сюда


Это двадцать вторая часть Мега-Учебника, в которой я расскажу вам, как создавать фоновые задания, которые работают независимо от веб-сервера.

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

Redis Python based cluster. Часть 1: распределённые системы, теоремы CAP и PACELC и зачем нужен Redis

Reading time9 min
Views8.9K
Рано или поздно сервисы растут, а с большим RPS приходит Highload.

Что делать, когда ресурсов для вертикального масштабирования Redis уже нет, а данных меньше не становится? Как решить эту задачу без downtime и стоит ли её решать с помощью redis-cluster?

На воркшопе Redis Python based cluster Савва Демиденко и Илья Сильченков пробежались по теории алгоритмов консенсуса и попробовали в реальном времени показать, как можно решить проблему с данными, воспользовавшись sharding’ом, который уже входит в redis-cluster.

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

Введение


Немного о тех, кто провёл воркшоп, и почему вообще его решили провести.

Савва Демиденко

Занимаюсь разработкой в Avito, делаю программу курса «Мидл Python-разработчик» от Яндекс.Практикума. Закончил Бауманку и Технопарк. Разрабатываю на Python и Golang. Люблю решать архитектурные задачи в веб-программировании.

Илья Сильченков

Тимлид в «Сбермаркете» и наставник на курсе «Мидл Python-разработчик». Успел побыть фронтендером и дата-инженером, но остановился на бэкенде. Сейчас пишу на Python и Go.

В рамках нашего курса в «Яндекс.Практикуме» в течение шести месяцев мы делаем онлайн-кинотеатр из множества микросервисов. Сначала пишем маленькую ETL из Elasticsearch и Flask, потом — админку и асинхронное API, авторизацию/аутентификацию и систему уведомлений. В том числе есть маленькая продуктовая задача — пиар в социальных сетях.

Outcome-driven innovation (ODI)  — фреймворк для стратегии, основанный на CX

Level of difficultyMedium
Reading time6 min
Views502

Фреймворки встречаются нам часто, например, их достаточно много в программировании (Swift UI, если мы говорим про IOS-разработку), в маркетинге (SWOT-анализ), в продакт-менеджменте (RICE для приоритезации). Любой фреймворк, который мы применяем в той или иной деятельности, должен облегчить принятие решения в бизнесе.

Сегодня мы будем говорить про фреймворк, который может быть полезен для исследователя и продакт-менеджера. Это фреймворк Outcome-driven innovation (ODI).

Для исследователя ODI - это возможность легко анализировать данные и делать выводы, а для продакт-менеджера - удобный инструмент для принятия решения. Впервые я услышала о нем в книге Джима Калбаха “Jobs To Be Done PlayBook”.

Что такое ODI?

ODI - это подход, разработанный в 1990-х годах Энтони Ульвиком, который позволяет с помощью исследований целевой аудитории анализировать рынок и создавать востребованный продукт. Outcome Driven Innovation базируется на JTBD (тут прослеживается тесная связь Энтони Ульвика с Клейтоном Кристенсеном).

Применимость ODI

Многие любят идти по проторенной дорожке и использовать один и тот же фреймворк для всех задач. Как будто один фреймворк может стать “волшебным ключиком” от всех неизведанных дверей. Например, так происходит со всеми любимым Jobs to be done. Но у него есть довольно понятные ограничения в использовании (об этом есть статья у Константина Ефимова и Анастасии Жичкиной, обязательна к прочтению, если вас интересует JTBD). Нельзя использовать один фреймворк под все задачи подряд, потому что это не приблизит вас к решению бизнес-задачи. Порой, скажу на своём опыте, не нужны никакие фреймворки. Вы можете ограничиться простой группировкой данных или кластеризацией, которую сами придумали.

Читать далее

Введение в аннотации типов Python

Reading time6 min
Views306K

Введение



Автор иллюстрации — Magdalena Tomczyk


Вторая часть


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


Сохраняя идею динамической утиной типизации в современных версиях Python (3.6+) поддерживает аннотации типов переменных, полей класса, аргументов и возвращаемых значений функций:



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


Меня зовут Тихонов Андрей и я занимаюсь backend-разработкой в Lamoda.


В этой статье я хочу объяснить основы использования аннотаций типов и рассмотреть типичные примеры, реализуемые аннотациями из пакета typing.

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

«Бизнес с нуля. Метод Lean Startup». Книга за 15 минут

Reading time14 min
Views194K


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

Рекомендуем к прочтению краткое изложение бестселлера Эрика Риса предпринимателям и всем, чья деятельность связана с инновациями и запуском продуктов.
Читать дальше →

OpenCV: компьютерное зрение на Python

Reading time6 min
Views7.8K

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

В этой статье мы рассмотрим несколько примеров работы с компьютерным зрением с помощью бесплатной библиотеки OpenCV.

Читать далее

Тайм-менеджмент, или Эффективное управление хаосом

Reading time11 min
Views73K
Каждый в той или иной степени ощущал нехватку времени, давление сроков, испытывал стресс от вынужденной спешки и зарекался: уж в следующий раз я точно буду тщательнее следить за временем, смогу заранее всё запланировать, не буду распыляться на много задач или, наоборот, превращусь в супермена и переделаю все дела сразу. Так какая же стратегия наиболее эффективна? Спешить или не спешить? Делать последовательно или параллельно?   

Источник
Читать дальше →

Эффективное управление программами и проектами по методологии P2M

Reading time7 min
Views16K
Крупные компании в IT порой покрывают целиком территорию нашей страны. Такой масштаб требует постоянного изменения подходов, пересмотра ценностей. Конечно, не в каждой компании, но точно во многих проектах. А как известно, по ценностям впереди планеты всей – Япония.

Эта статья предназначена для интересующихся проектным управлением, практиков и теоретиков. Она позволит ознакомиться с японской методологией P2M (Project & Program Management for Enterprise Innovation), отличающейся от привычных западных подходов, в том числе ориентацией на создание дополнительных ценностей для компании и прямой корреляцией производимых изменений бизнеса с миссией предприятия.

Источник
Читать дальше →

Управление изменениями

Reading time9 min
Views5.7K

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

Проект: Платформенный продукт дорабатывается инженерами под требования покупателей. У нас железяки, поэтому у нас есть и производство (сборка) из многочисленных компонентов, которые мы заказываем у сторонних поставщиков.

Что такое Изменение? У нашего продукта есть Платформа: базовое устройство, на которое «навешивается» сверху все требования покупателя и его инфраструктуры. Когда мы приходим к покупателю с ценой – она за Продукт. Продукт = Платформа + Специфика. Продукт – это то, что будет описано в Спецификациях и ТЗ. Но потом начинается работа по детальному проектированию и подготовке к производству. И вот тут начинаются Изменения. Изменения – это Дельта к Продукту. То есть Проданный_Продукт + Дельта = Произведенный_Продукт.
Читать дальше →

PMBoK — управление проектами с умом

Level of difficultyEasy
Reading time11 min
Views46K

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

Люди бережно собирают свои знания и лучшие практики и делятся ими с миром. Одним из важных источников информации для руководителя можно считать PMBoK, или Project Management Body of Knowledge. Это свод знаний по управлению проектами, где описаны процессы, их цели и способы их внедрения. Можно сказать, что этот сборник — это настольная книга руководителя или библия тимлида. Называйте как больше нравится, сути дела это не меняет.  

Читать далее

Эффективное управление отношениями со стейкхолдерами

Level of difficultyMedium
Reading time9 min
Views9.9K

Без выстраивания хороших отношений со стейкхолдерами (или заинтересованными сторонами) на проекте далеко не уедешь. О том, как это делать like a boss, годная статья автора Кэт Бугард в блоге Miro.

Все картинки из Miro.

Читать далее

4 способа починить goodbyeDPI, как восстановить доступ к YouTube

Level of difficultyMedium
Reading time3 min
Views418K

Последнее время идет наплыв коментов, что goodbyedpi не работает опять, я решил сделать для вас инструкции по 4 рабочим способам, восстановления работы goodbyedpi. У всех срабатывает по разному, поэтому тестите, какой то вам подойдет. Пишите в комментариях, что вам помогло, может какие то свои значения!

Читать далее

Расширенная настройка web сервера (Apache2 + Nginx)

Reading time11 min
Views40K

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


В этой статье будет идти речь о настройке сервера с использованием: Apache2, Nginx, ngx_pagespeed, PHP, PHP-FPM, MariaDB и MemCached.

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

Что такое RACI-матрица и как она помогает управлять проектом

Level of difficultyEasy
Reading time6 min
Views10K

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

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

Читать далее
1
23 ...

Information

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

Specialization

Test Automation Engineer, Manual Test Engineer
Intern
From 40,000 ₽
SQL
XML
REST
Database