Pull to refresh
6
0
Александр @temnyivecher

User

Send message

Dart для бэкэндеров. Часть 1

Level of difficultyMedium
Reading time14 min
Views6.7K

Идея создавать полный стек веб или мобильного приложения с использованием одной технологии не является новой. Этим путем уже прошел Javascript (JS + React/Native + Node.JS), Python (cowasm + kivy) и даже Go (go/wasm, gomobile) и Dart тоже не исключение (web для него естественная среда обитания, поскольку язык создавался для замены JavaScript, также поддерживается компиляция в Wasm с включенным экспериментом wasm gc, для мобильной разработки существует фреймворк Flutter). Кроме того, приложение на Dart может компилироваться в исполняемый файл и это может дать прирост производительности для высоконагруженных систем. В этой статье мы рассмотрим несколько решений для создания бэкэнда на Dart, в первой части обсудим общие вопросы архитектуры и создадим простой сервер без фреймворка и с использованием Shelf, а во второй части статьи речь пойдет о Frog и Conduit.

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments11

Как продакт-менеджеру сфокусироваться на 80% Discovery и 20% Delivery: Руководство на основе реального опыта

Reading time5 min
Views3.7K

В своей карьере я работала в таких компаниях, как Авито, Rutube, МТС, сейчас работаю в Банке [NDA] — и везде у меня была команда разработки самостоятельна. 

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

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

Читать далее
Total votes 15: ↑11 and ↓4+12
Comments5

13 причин не быть управленцем

Reading time12 min
Views464K
Так уж сложилось, что последние несколько лет я занимал самые разнообразные руководящие должности в полудюжине компаний, занимающихся разработкой программного обеспечения разного рода. Довелось побывать и тимлидом, и менеджером проекта, и группы проектов, руководителем отдела и руководителем технического направления; подопечных бывало от двух до ста пятидесяти человек, да и размеры компании варьировались от трёх до двухсот тысяч работников. Неизменным оставалось только одно: чисто управленческая работа, постепенный и окончательный отход от технических задач.

А сейчас, в период между Рождеством и Новым Годом, когда особенно обострена склонность к углублённой рефлексии, приходит понимание того, что, знай я некоторые «инсайдерские» подробности управленческой деятельности заранее – сделал бы совсем другой выбор лет эдак семь назад.

Вот поэтому и родился этот немного хаотичный и очень разнокалиберный список моментов, которые очень хотелось бы передать куда-то обратно, примерно в 2005 год – дайте знать, если кто-то вдруг уже научился это делать! А пока, может быть кто-то найдёт некоторые из перечисленных ниже пунктов не до конца очевидными, или даже полезными для себя; было бы приятно осознавать, что удалось помочь кому-то сделать более осознанный выбор профессии – или просто о чём-нибудь важном задуматься.
Итак, поехали
Total votes 441: ↑410 and ↓31+379
Comments340

300 потрясающих бесплатных сервисов

Reading time11 min
Views1.6M


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

Читать дальше →
Total votes 341: ↑325 and ↓16+309
Comments107

Эффективная постановка и ведение задач в IT-проектах

Level of difficultyEasy
Reading time5 min
Views8.1K

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

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

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

Шаблоны и примеры задач будут в конце статьи.

Читать далее
Total votes 15: ↑13 and ↓2+14
Comments4

Инструменты тимлида: как управлять техническим бэклогом

Reading time11 min
Views12K

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

Читать далее
Total votes 12: ↑11 and ↓1+10
Comments2

Flutter. Стиль кода — это все

Level of difficultyEasy
Reading time14 min
Views7.2K

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

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

Люди тоже диктуют стиль. Стиль был у Роберта Мартина, у Дэвида Томаса, у Мартина Фаулера, у Эрика Эванса... Я встречал стиль в открытом исходном коде. В среде разработчиков стильных проектов куда больше, чем в каком-либо другом сообществе. Стиль — это атрибут, подход и структура.

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

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

Читать далее
Total votes 15: ↑15 and ↓0+18
Comments9

Rive-анимация для Flutter-приложений: почему мы любим ее больше Lottie, когда ее применять и какие фишки использовать

Level of difficultyMedium
Reading time5 min
Views4.8K

Привет! Меня зовут Никита Грибков, я Flutter-разработчик в AGIMA. Расскажу вам про возможности Rive — фреймворка, который использует векторную графику для создания анимации во Flutter-приложениях. Эта статья выросла из небольшого поста на Хабре, в котором я коротко описал опыт работы над кнопкой для Bottom Bar в своем пет-проекте. Здесь же я уже подробно опишу, как анимировать элементы и чем вообще хорош Rive.

Читать далее
Total votes 9: ↑9 and ↓0+12
Comments2

Где заканчивается Flutter и начинается платформа?

Level of difficultyMedium
Reading time11 min
Views3.6K

Сердце фреймворка Flutter (который для разработчиков часто представляется только в виде набора классов на языке Dart) написано на языке С и компилируется в двоичный артефакт, известный как Flutter Engine, подключаемый к приложению и используемый из Dart-классов через механизм нативного связывания (аннотации @pragma('vm:entry-point') для вызовов из Flutter Engine в Dart, @Native и external для обращения к C++ коду во Flutter Engine из Dart).

Но в действительности Flutter Engine не имеет никакого платформо-специфического кода (при этом собран под целевую аппаратную архитектуру) и не знает, как работает платформенный event loop, как создавать потоки, на какой поверхности выполнять отрисовку сцены и не может получать информацию о действиях пользователя (касание экрана, перемещение указателя мыши, нажатие клавиш) и системных событиях. Такое архитектурное решение было сделано для того, чтобы иметь возможность запускать Flutter-приложения потенциально на любом устройстве с экраном (даже светодиодной панелью). В этой статье мы поговорим про Flutter Embedder, его роль в запуске приложения и привязке к системным event loop, а также рассмотрим сборку простого embedder для публикации Flutter приложения как VNC-сервера.

Читать далее
Total votes 21: ↑20 and ↓1+21
Comments1

Задача готова! Или нет? Definition of Done и зачем он нужен

Level of difficultyEasy
Reading time5 min
Views9.1K

Менеджер: Эта задача готова?
Разработчик: Да.
Менеджер: Давайте катить на пользователей?
Разработчик: Давайте.
Менеджер: Что‑то не вижу функциональности на продакшене?
Разработчик: Ну, нам нужно еще пару дней — пройти код‑ревью, подождать, чтобы QA протестировали, собрать и выкатить релиз в прод, сделать несколько миграций данных, и потом мы откроем фичу для пользователей.
Менеджер: Но ты же сказал, что задача готова?
Разработчик: Да.

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

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

Инструкция: как быстро настроить GitLab CI/CD на Flutter-проекте

Reading time12 min
Views8.3K

Привет! Я Александр Омельяненко, Flutter-разработчик в AGIMA. Недавно мне понадобилось быстро настроить CI/CD на Flutter-проекте. Те несколько руководств, что я нашел в интернете по этой теме, были либо с нерабочими примерами, либо запутанные и просто плохого качества. Но всё же какое-то представление я получил. Плюс задал вопросы коллегам. Набивая шишки по пути, я-таки настроил CI/CD на своем проекте. Но мне тогда очень пригодилась бы четкая инструкция. Поэтому я решил написать ее сам по горячим следам. Сегодня делюсь ею с вами и надеюсь, эта инструкция облегчит жизнь тем, кто настраивает CI/CD на Flutter-проекте прямо сейчас.

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments13

Bug policy. Что делать когда работа с дефектами — это хаос и ужас

Level of difficultyMedium
Reading time4 min
Views1.9K

Сегодня хотим рассказать о том,  как нам в YouTravel.me удалось снизить количество дефектов в 30 раз — с 400 до 13 — менее чем за полгода. Для наглядности — вот как выглядит это на графике:

Читать далее
Total votes 4: ↑3 and ↓1+3
Comments5

Эффективная работа из дома: общее и личное

Reading time9 min
Views84K


Моё домашнее рабочее место


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


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


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

Читать дальше →
Total votes 65: ↑62 and ↓3+82
Comments65

Анонсируем Dart 3

Level of difficultyEasy
Reading time9 min
Views2.7K

Привет из Google I/O 2023. Сегодня, в прямом эфире из Маунтин-Вью, мы объявляем о выпуске Dart 3 - самого крупного релиза Dart на сегодняшний день! Dart 3 содержит три основных усовершенствования. Во-первых, мы завершили путь к 100% надёжная null безопасности. Во-вторых, мы добавили новые возможности языка для записей, шаблонов и модификаторов классов. В-третьих, мы заглядываем в будущее, где мы расширим поддержку наших платформ, добавив нативный код для веб с помощью Wasm-компиляции. Давайте разберемся во всём в деталях.

Читать далее
Total votes 10: ↑4 and ↓6-2
Comments4

Шесть открытых библиотек от Mad Brains, которые упростят жизнь Flutter-разработчика

Level of difficultyMedium
Reading time4 min
Views2.6K

Работая над разнообразными бизнес-задачами с помощью Flutter, мы часто сталкиваемся с отсутствием готовых решений. Поэтому команда Mad Brains создает собственные и делится ими с ИТ-сообществом. В этом материале мы рассказываем, как наши библиотеки помогают Flutter-разработчикам и бизнесу.

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments4

10 популярных вопросов, которые нужно знать, чтобы пройти собеседование на позицию Flutter-разработчика

Reading time9 min
Views17K

Привет, на связи Flutter-команда Mad Brains. Сегодня мы разберём 10 часто задаваемых вопросов на собеседованиях на позицию Junior Flutter Developer. Наш ведущий Flutter-разработчик расскажет, как показать себя во всей красе и получить оффер. А в конце статьи вас ждет приятный бонус от нашей команды. 

1. Зачем вообще использовать Flutter? Какие у него преимущества недостатки?
Можете взять примеры, которые представлены на официальном сайте Flutter. Но из своего опыта отметим несколько важных поинтов. Во-первых, у Flutter есть несомненный плюс — это единая кодовая база, которая позволяет увеличить скорость разработки. Благодаря этому у него высокая масштабируемость, потому что почти 100% кода портируется на Android, iOS, Web, Desktop и т.д.

Немаловажным плюсом является декларативная верстка, которая позволяет писать намного более понятный и логичный код. Еще одна  особенность, которая сейчас есть и на Kotlin, — это Hot reload и Hot restart. Нет необходимости сидеть и ждать компиляции, чтобы увидеть изменения, что дает сильный буст в скорости разработки и позволяет оставаться в потоке. Кто использовал их, знает, насколько это крутая штука и насколько это сокращает время разработки. 

Не стоит забывать, что у Flutter сформировано большое комьюнити, есть хорошая поддержка от Google, огромное количество библиотек на pub.dev и статей. Это тоже плюс, хотя еще пару лет назад молодость технологии была ее минусом. 

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

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments3

Основы Интернета

Reading time7 min
Views57K

Есть такая интересная книга – «High Performance Browser Networking» Ильи Григорика, в которой описаны основы работы сетей и способы оптимизации передачи данных. В этой книге автор пишет про CDN следующее:

Сервисы по доставке контента (CDN) приносят много пользы, но основаны они на простом наблюдении, что, распределив контент по всему земному шару и доставляя его к пользователю из точки, которая как можно ближе к нему, можно значительно уменьшить время загрузки.

Если подумать, то наверное можно согласиться с тем фактом, что CDN улучшают UX, потому что ускоряют загрузку сайта. Но... минуточку. А как именно CDN это делает?

Вы можете сказать: «Ну, когда пользователь запрашивает файлы с CDN, они загружаются с ближайшего к пользователю сервера. Легко и просто». Да, но ведь эти данные загружаются всегда с одного домена. Как тогда запрос может приходить на разные сервера?

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

Начнём с проводов
Total votes 44: ↑40 and ↓4+43
Comments15

Расплывающаяся менюшка

Reading time6 min
Views3K

Понадобилось мне в приложении меню которое появляется по нажатию на floating button. Начал смотреть, что там такого есть в этих ваших интернетах. Мне хотелось как в самсунге меню для стилуса. Поскольку я не придумал, как это гуглить правильно, я не нашел такого меню готового. Поэтому решил сделать его сам.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments1
1
23 ...

Information

Rating
Does not participate
Registered
Activity

Specialization

Fullstack Developer, Mobile Application Developer
Middle
From 160,000 ₽
Git
Python
Flutter
Development of mobile applications
Client-server applications
FullStack
Dart
Clean Architecture
Django
PostgreSQL