Pull to refresh
16
0
Дмитрий @deitry

программист

Send message

«Гигиенический минимум» в работе тимлида

Reading time13 min
Views7.4K

Привет, я Илья — Frontend Team Lead в Альфа-Банк. Отвечаю не только за команду, но также веду и техчасть. Как тимлид я часто задаюсь вопросом «В чем моя роль?», «Как измерить эффективность моей работы?» и «Какой профит от лидов для проекта в целом?»

Для себя я вывел определение и задачи лида. Это всего лишь мои субъективные умозаключения, и искушенной публике Хабра могут быть хорошо знакомы, иногда слишком очевидны, но…повторение мать учения, как когда-то говорили. И даже если мы сто раз что-то слышали — не значит, что мы начали это делать. То, о чем я хочу рассказать – простые шаги, которые работают только при регулярном повторении, без пропуска какого-то пункта, это важно.

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

Читать далее
Total votes 31: ↑27 and ↓4+26
Comments8

Новые функции внедрения зависимостей в .Net 6

Reading time12 min
Views11K

Продолжаем делиться полезными материалами в backend-разработке. Осваивая новые инструменты, специалисты SimbirSoft часто читают материалы зарубежных авторов, чтобы быть в курсе актуальных тенденций. В этот раз наш выбор пал на серию материалов британского разработчика Эндрю Лока про новые возможности .NET 6. С разрешения автора мы перевели статью, в которой он разбирает функции внедрения зависимостей в .NET 6. Материал будет полезен тем, кто хочет познакомиться с нововведениями в .Net 6 при переходе на эту технологию.

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

Краткий справочник по «всем-всем» командам Linux

Level of difficultyMedium
Reading time80 min
Views174K

Периодически меня на начальном курсе просят дать "список всех-всех команд с кратким описанием что делает"... Ну прям "всех-всех". И ведь если искать в интернете "такие" справочники существуют - либо про "20-30 команд, но самых важных", либо с неточностями и устаревшей информацией. Так что предлагаю вашему вниманию свою версию такого "краткого" справочника (на 300, 515, 612, 716, 842, 1005, 1171 команд) с ссылками на wiki-описание и на cheat.sh-примеры наиболее важных команд.

Справочник по всем-всем командам LINUX
Total votes 105: ↑102 and ↓3+120
Comments114

Я год шпионил за собой — что из этого вышло. Простой секрет личной эффективности

Reading time5 min
Views122K

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

Читать далее
Total votes 76: ↑69 and ↓7+83
Comments146

Безопасный OpenVPN на VPS за несколько минут

Reading time2 min
Views179K

Введение


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

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

Скрипт создавался для машин с CentOS 7.x или Ubuntu Server 17.x, использование на Ubuntu 16.x. возможно, но там OpenVPN 2.3.x в репозиториях. При необходимости можно добавить другие дистрибутивы, но обычно при покупке VPS можно выбрать систему и это не так важно.
Читать дальше →
Total votes 41: ↑36 and ↓5+31
Comments59

Как победить хаос в команде разработки и эффективно управлять ожиданиями заказчиков?

Reading time5 min
Views3K

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

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

Как вообще можно управлять отдельными людьми в команде разработки?

Reading time7 min
Views8.7K


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

Управлять можно, например:

  • Балансом между костылями и оверинжинирингом.
  • Балансом между тестированием кода и быстрой выкаткой на прод.
  • Балансом между техническим долгом и TTM.
  • Балансом между «пиши код» и «развивай своего джуна» и так далее.

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

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

Собственно, вот эта тонкая грань и есть перформанс-менеджмент.
Читать дальше →
Total votes 29: ↑26 and ↓3+25
Comments6

Ответственное управление пакетами в Visual Studio

Reading time10 min
Views7.6K

Почти девять лет назад миру был представлен новый опенсорсный проект под названием NuGet. Спустя два года после своего дебюта NuGet начал поставляться в Microsoft Visual Studio, что актуально и по сей день. NuGet — это один из нескольких пакетных менеджеров (диспетчеров пакетов), таких как Node Package Manager (NPM) для JavaScript и Maven для Java. Пакетные менеджеры упрощают и автоматизируют использование библиотек. Например, если вам нужна библиотека для реализации JavaScript Object Notation (JSON) в вашем .NET-приложении, потребуется всего несколько кликов мышью, и ваше приложение получит мощные возможности, которые вам не нужно реализовывать самим, совершенно бесплатно.

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

Основы формата GLTF и GLB, часть 2

Reading time7 min
Views16K

Данная статья является продолжением рассмотра основ GLTF и GLB форматов. Вы можете найти первую часть статьи здесь. В первой части мы рассмотрели с вами зачем изначально планировался формат, а также такие артефакты и их атрибуты GLTF формата как Scene, Node, Buffer, BufferView, Accessor и Mesh. В данной же статье мы рассмотрим Material, Texture, Animations, Skin, Camera, а также закончим формировать минимальный валидный GLTF файл.


image

Material и Texture


С мешем неразрывно связаны материалы и текстуры. При необходимости меш может быть анимирован. Материал хранит информацию о том, как модель будет отрендерена движком. GLTF определяет материалы, используя общий набор параметров, которые основаны на Physical-Based Rendering (PBR). PBR модель позволяет создавать “физически корректное” отображение объекта в разных световых условиях благодаря тому, что шейдинговая модель должна работать с “физическими” свойствами поверхности. Есть несколько способов описания PBR. Самая распространенная модель — это metallic-roughness model, которая и используется по умолчанию в GLTF. Также можно использовать и specular-glosiness модель, но только при помощи отдельного расширения (extenstion). Основные атрибуты материала следующие:


  1. name — имя меша.
  2. baseColorFactor/baseColorTexture — хранит инфомрацию о цвете. В случае атрибута Factor информация хранится в числовом значении для RGBA, в случае Texture — хранится ссылка на текстуру в объекте textures.
  3. metallicFactor — хранит информцию о Metallic
  4. roughnessFactor — хранит информцию об Roughness
  5. doubleSided — имеет значение true либо false (значение по умолчанию) и указывает на то, будет ли меш рендериться с обоих сторон или только с "лицевой" стороны.
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments10

Основы формата GLTF и GLB, часть 1

Reading time8 min
Views57K

Что такое GLTF и GLB?


GLTF (GL Transmission Format) — это формат файла для хранения 3Д сцен и моделей, который является крайне простым в понимании (структура записана в стандарте JSON), расширяемым и легко взаимодействующим с современными веб-технологиями. Данный формат хорошо сжимает трёхмерные сцены и минимизирует обработку во время выполнения приложений, использующих WebGL и другие API. GLTF сейчас активно продвигается Khronos Group как JPEG от мира 3D. На сегодняшний день используется GLTF версии 2.0. Существует и бинарная версия данного формата, которая называется GLB, единственное различие которого в том, что все хранится в одном файле с расширением GLB.


Эта статья — 1 часть из 2х. В ней мы с вами рассмотрим такие артефакты формата и их атрибуты, как Scene, Node, Buffer, BufferView, Accessor и Mesh. А во второй статье мы рассмотрим оставшиеся: Material, Texture, Animations, Skin и Camera. Больше общей информации о формате можно найти здесь.
Если в процессе просмотра статьи захочется лично поработать с данным форматом, то можете скачать модели GLTF 2.0 с официального репозитория Khronos на GitHub


image


Проблематика и её решение


Изначально GLTF формат был задуман Khronos Group как решение для передачи 3D контента по интернету и был призван минимизировать количество импортеров и конвертеров, разные виды которых создаются при работе с графическими API.


image

На текущий момент GLTF и его бинарный брат GLB используются как унифицированные форматы и в CAD программах (Autodesk Maya, Blender и т. д.), в игровых движках (Unreal Engine, Unity и прочих), AR/VR приложениях, соц. сетях и т.д.

Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments5

Есть ли жизнь без тестов?

Reading time15 min
Views12K
Это история про то, как нам удалось написать довольно сложную business-critical систему, и добиться, чтобы она была стабильной даже без юнит-тестов (WAT?!).
Читать дальше →
Total votes 31: ↑27 and ↓4+29
Comments59

Подборка о релокейте: страны, в которых хорошо

Reading time5 min
Views107K


Мы уже несколько лет выпускаем на Хабре истории о переезде. Некоторые успешные, некоторые не очень (примерно 30% экспатов со временем возвращались).


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


Если кто-то задумался о том, что делать, — вот личные истории из тех стран, в которые сейчас реально переехать, и в которых относительно просто построить новую жизнь.

Читать дальше →
Total votes 66: ↑49 and ↓17+46
Comments317

Пять проблем неидеального тимлида (и семь спасительных решений). Как тимлиду не пострадать от стокгольмского синдрома

Reading time4 min
Views5.5K

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

Обсудили волнующую многих тему на нашем митапе с Захаром Овчаровым (Respona front-end team-lead, Toptal senior front-end developer). Встреча прошла перед конференцией IT-People Conf в Казани и вызвала интересную дискуссию. Полная версия обсуждений в нашем видео. 

Дисклеймер от Захара: все персонажи выдуманы, все действия нереальны, автор не несет никакой ответственности за ваши действия, поэтому действуйте на свой страх и риск;) 

Внезапно для себя вместо фронтенд-разработчика я стал тимлидом. Казалось бы, ничего страшного. Но как результат — огромная куча проблем.

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

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

Читать далее
Total votes 8: ↑5 and ↓3+2
Comments2

Пора и честь знать или Как долго следует оставаться в одной компании

Reading time10 min
Views18K

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

Приятного чтения!
Total votes 19: ↑14 and ↓5+14
Comments12

«Что я получу, если смешаю корень златоцветника и настойку полыни?» или 10 вопросов для Junior Python-разработчика

Reading time7 min
Views19K

12 разных издательств отказывали Джоан Роулинг в публикации первой части Гарри Поттера. Многим программистам отказывали не меньше.

Читать далее
Total votes 16: ↑14 and ↓2+16
Comments36

Использование PowerShell с $PSStyle

Reading time5 min
Views4.7K

В PowerShell 7.2 появилась автоматическая переменная $PSStyle для новой функции под названием PSAnsiRendering. В этой статье я покажу, как можно использовать ANSI-рендеринг для управления оформлением текста, например цветом и стилизацией шрифта, в PowerShell.

Уже некоторое время мы можем использовать в сеансе PowerShell escape-последовательности ANSI. Вы уже могли наблюдать это при вводе команд в командной строке. Команды, параметры, строки и операторы отображаются цветом. Эти цвета определяются как опции PSReadline.
Читать дальше →
Total votes 9: ↑7 and ↓2+9
Comments3

О Thread и ThreadPool в .NET подробно (часть 2)

Reading time13 min
Views18K

В предыдущей публикации мы рассмотрели некоторые базовые вопросы относительно потоков и пулов потоков и готовы двигаться дальше. Давайте проведём эксперимент и найдём правильный объём работы для пула потоков. Чтобы его издержки не давлели над объёмом полезной работы

⚠️ Материал средней сложности

С другой стороны, показанные примеры доказывают, что на производительность сильно влияет гранулярность элементов работы. Имеется ввиду, конечно же, длительность работы делегатов. Чтобы достичь хороших показателей, гранулярность работы не может быть абы какой: она должна быть правильной. И помимо планирования задач на ThreadPool, планировать их можно также как через TPL так и через какой-либо свой собственный пул потоков. Например, если взять обычный ThreadPool, то можно примерно измерить издержки алгоритмов ThreadPool в тактах Time Stamp Counter счётчика времени (можно, конечно и в чём-то более привычном типа микросекунд, но там на многих сценариях вполне могут быть нули)

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

Байт, байт, кладбище, юзер, или Смерть в цифровую эпоху

Reading time7 min
Views6.1K

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

По данным Good Trust — американского сервиса по управлению цифровыми архивами — на одном  только Facebook насчитывается около 30 миллионов аккаунтов умерших людей. По мере роста цифрового имущества (аккаунты, подписки, домены, фотоархивы, электронные кошельки), проблема их наследования становится все более важной: на эту тему выпускают книги, а СМИ пишут подробные инструкции, как подготовиться к загробной цифровой жизни.

Во многих компаниях есть политики, касающееся смерти пользователя. Вслед за Google и Facebook, в конце 2021 года Apple запустила функцию Digital Legacy. Пользователь может назначить до пяти «контактов-наследников», которые смогут унаследовать его Apple ID и все данные в случае смерти. Наследникам нужно будет принять приглашение и предоставить доказательства, и как только они будут одобрены, у них будет полный доступ к паролям, фотографиям, документам, сообщениям и прочим данным Apple ID.

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

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

Собираем «Тревожный чемоданчик». Мнение спортивного туриста

Reading time18 min
Views209K
Когда началась война, все произошло так быстро, что я не могла ни понять, что происходит, ни подумать о том, что хотела бы взять с собой, когда мы убегали. (из интервью сирийской беженки)

Мне почему-то не хочется делать вид, что ничего не происходит. Потому что нынешняя военная эскалация напоминает затишье перед бурей, похожие ощущения были в январе 2020, когда «коронавирус же не у нас, он в Китае». В итоге жизнь подтвердила несостоятельность подобного «психологического» трюка. Поэтому, думая про худшее и надеясь на лучшее, я написал недавно эмоциональную заметку про «тревожный чемоданчик». Написана она с учетом моего опыта спортивного туризма (инструктор гор/пеш), поэтому профессиональные военным (выживальщикам?) просьба отнестись с пониманием. Писалось с акцентом на беларускую аудиторию, и вот искренне надеюсь, что (НЕ) пригодится всем. Просьба не политизировать данную статью, а воспринимать as is. Те кто затевает войны — Хабр не читают. Мы все в одной лодке, надеюсь написанное под катом хоть немного поможет этой «лодке» быть на плаву…


Собираем тревожный чемоданчик вместе
Total votes 225: ↑198 and ↓27+223
Comments391

Код доступа Termux

Reading time62 min
Views163K

Лонгрид посвящается любителям CLI в знак солидарности лучшего эмулятора терминала на OS Android, который испытывает «кошмарную» монополию Google.

В данной работе вербализация пойдет о нижеизложенном со всеми остановками:

[+] глубоко настраивать средý (флэшка, виджет, стиль, зеркала и конфиги);
[+] управлять серверами через ssh;
[+] скачивать ролики/отрывки с YouTube;
[+] нарезать видео, создавать gif;
[+] воспроизводить текст/музыку/радио прямо в CLI;
[+] нарезать mp3-бигфайлы (аналогов приложений на Android попросту нет), и склеивать аудиофайлы;
[+] редактировать документы;
[+] проверять орфографию: как текстовых файлов, так и различных статей по url, например, проверка орфографии статей на Habr-e;
[+] генерировать словари различной сложности со скоростью Си;
[+] создавать блок-схемы; графики; облако слов и даже 3D-визуализацию;
[+] заниматься Data Science на Android-мощностях;
[+] тестировать интернет соединение/интерфейс (требуется частично Root);
[+] сниффить/сканировать сети (требуется частично Root);
[+] запускать и управлять TOR-сетью (deleted);
[+] управлять приложениями и процессами в ОС Android (требуется Root);
[+] анализировать память;
[+] защищать любые данные от случайного редактирования/уничтожения (требуется Root);
[+] автоматически шифровать и бэкапить по ночам любые данные в своё облако;
[+] чекать username(s) и e-mail(s);
[+] проводить аудит безопасности (об опасности сердить скрипт-кидди с их любимыми: «сниффить, парсить, брутить, дампить, сканить, фишить»);
[+] работать с электропочтой;
[+] изучать UNIX/shell;
[+] программировать на Android (на выбор пользователя. В Termux портированы несколько интерпретируемых и компилируемых языков программирования);
[+] запускать python/php/npm скрипты в т.ч. в одно касание с рабочего стола;
[+] работать с криптографией, стеганографией и цифровыми подписями;
[+] парсить данные;
[*] и даже запускать GNU-GUI-софт из CLI.

Погрузиться в GNU культуру
Total votes 28: ↑27 and ↓1+28
Comments46

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Software Developer, Backend Developer
Lead
C++
C#
Git
Python
Software development