DevFM
2.35K subscribers
80 photos
5 videos
492 links
О разработке: технологии, инструменты, system design, процессы, команды

Для связи @sa_bul
Download Telegram
Есть разные точки зрения на общение в личном чате. В выпуске 796 radio-T в 25:30 обсуждают "холодные пинги". Это сообщения в чате вида "Привет" и всё. В IT-тусовке принято сразу излагать цель общения. Даже отдельный сайт есть.

Привет, случилось то-то и то-то
hi, как сделать такую штуку?

Если диалог поддерживается постоянно, то возможно вообще опускать приветствия. Зачем нужны постоянные приветствия и прощания? Они бессмысленно растягивают диалог и не привносят пользы. Естественно, если вторая сторона ни считает пропуск приветствия проявлением грубости.

Телеграмм многие считают средством асинхронного общения. Что это значит? Ожидайте, что вторая сторона будет читать и отвечать тогда, когда ей удобно, а не мгновенно. Нужно мгновенно - звоните.

Для разработчика постоянные прерывания — это ужасное зло, подрывающее производительность. Наибольшая продуктивность идёт в состоянии потока. По аналитике из этой статьи выходит, что вхождение в поток требует 10+ минут. Когда речь про создание Quake, то хорошо бы обеспечить 4 часа без отвлечения. Поэтому разработчики выключают уведомления и работают. Когда настало время перерыва, проверяются мессенджеры и почта. Почта не утратила актуальности на текущий момент. Можете посмотреть рабочий день разработчика из gitlab — его рабочий день начинается именно с почты.
#edu #devfm
🔥2👍1
Пятничное развлекательное

Есть целый пласт фильмов, поднимающих вопросы реальности окружающего мира. Наверное, самым популярным фильмом жанра является Матрица с Киану Ривзом (1999, продолжения 2003). Классический фильм обязателен к просмотру. Продолжения Перезагрузка и Революция вполне достойны просмотра. Как хорошо, что они сняли только три фильма и четвёртый никогда не выходил.

В прошлом году вышел отличный фильм Главный герой (2021) с Райаном Рейнольдсом. Вышло позитивно и легко. В фильме много отсылок к современной культуре.

Думаю, Начало (2010) с Леонардо Ди Каприо тоже на слуху. Подсознание человека как объект атаки - это красиво.

Завершает список известных фильмов Шоу Трумена (1998) с Джимом Керри. Тут авторы вне компьютерной тематики показывают жизнь человека "у всех на виду".

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

Встречайте Тринадцатый этаж (1999) про создание совершенной модели виртуальной реальности. Категорически рекомендуется к просмотру.

И, конечно, фильм Трон (1982 и 2010). Вы когда-нибудь хотели попасть в компьютерную игру? Фильм позволит вам это сделать. Картина 82 года, конечно, не отличается спецэффектами и костюмы местами вызывают улыбку, но она невероятно хороша.

#fun #films
👍9🔥2
Один из вариантов борьбы с отвлечениями — техника помидора. Суть техники в выделении непрерывных отрезков времени на работу. То есть начал работать — не отвлекаться какое-то время (по дефолту — 25 минут), потом прерваться.

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

А тут всего 25 минут... 25 минут у меня есть. Аппетит приходит во время еды, и дальше уже нет желания бросать писать начатую программу.
#edu
🔥6
Одной из фундаментальных технологий на текущий момент технологий является Docker — платформа для разработки, доставки и управления контейнерными приложениями. Он повсеместно используется для разработки fronend и backend, в Data Science и много где ещё.

Неплохим способом войти в Docker является длинная презентация (англ), в которой излагается теория и практика работы с контейнерной виртуализацией на примере докера.

В дополнение можете почитать свежий пост от yandex.cloud о докере.
#skills
🔥43
Ключевые аспекты хорошего Dockerfile

— Порядок команд важен. Вверху редко меняющиеся сущности (ставим зависимости apt-get, pip), внизу – часто меняющиеся (копируем ваш код)
— Слои нарастают и не удаляются. Если слой генерирует «мусор» – удалять нужно в этом же слое, иначе место не уменьшится
— Пользуемся готовыми образами на dockerhub

Если пробросить внутрь контейнера каталог с вашим кодом – вы получите dev-контейнер, сразу подхватывающий изменения кода. Исполняемый скрипт запустится новой версии, веб-сервер сам перезапустится.

И помните – если docker вам мешает, скорее всего, вы что-то делаете неправильно.
#skills #sudo #devfm
🔥4
Пятничное развлекательное

Batmetal — это невероятный сплав металла, кино, комиксов, мемов, игр и шуток. Это серия из 3 роликов от ArhyBES в антураже Бэтмана, и, надеюсь, мы дождёмся продолжения. Каждый кадр содержит огромное количество пасхалок, что доставляет немалое удовольствие внимательному зрителю.

Batmetal создаёт атмосферу. Batmetal returns начинает спорно. Но когда Робин в конце второй минуты начинает Спанч Боба... Это невозможно описать, только войти во вкус. И завершает пир духа Batmetal forever с появлением Джокера. Почти 150кк просмотров на три ролика, рекомендуется к просмотру.

#fun
🔥8
Online resources to learn how to code

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

А ваш проект должен содержать подробное readme.

#sudo
👍13🔥1
Stackoverflow с 2011 года проводит масштабные опросы разработчиков. В 2022 году участвовало более 70к человек из 180 стран. Из-за большого числа участников получаются репрезентативные данные — что в трендах, куда в целом индустрия плывёт. Рассмотрим отдельные кусочки этого обзора.

#skills #trends
👍7🔥1
Databases среди Professional Developers. Всегда переключаем на Professional Developers, потому что лучшее надо смотреть у лучших. Те, кто Learning to Code, вам подсказать не смогут

Неплохо бы знать парочку баз данных отсюда. Имеет смысл изучить реляционную (например, PostgreSQL) и документную (например, MongoDB) базы.

Во всех опросах можно было выбирать несколько галочек, так что сумма больше 100%

#sudo
👍10🔥2
Other tools среди Professional Developers

Варианты, мягко говоря, странные. Менеджеры пакетов npm, yarn, homebrew я бы исключил (это что-то уровня IDE), как и платформы для игр Unity, Unreal Engine (они должны идти в frameworks).

Среди оставшегося доминирует контейнерная виртуализация Docker и система управления контейнерами Kubernetes. Без докера никуда, господа.

#sudo
👍11🔥3
Operating system

Среди разработчиков аномально много Linux. Учитывая, что macOS во многом Linux-подобная, а на серверах только Linux, то в профессиональной разработке без знания Linux никуда.
👍11🔥2
Version control systems среди Professional Developers

Git 97%, SVN 6%. Варианты "без системы контроля версий" и mercurial менее 3% в сумме.

Не умеешь в Git? Ты не разработчик

#sudo
👍15🔥2👎1
Interacting with version control systems

85% работают с Git из терминала. Что ж.
👍11🔥3
Integrated development environment

Последнее на сегодня — IDE. Лидер на текущий момент VSCode. Популярность частично ложная, так как VSCode годится под любой язык программирования. Например, PyCharm только для Python, поэтому тут сравниваются несравнимые величины.

Удивительно много набрал Vim (24%+6% от Neovim) — наравне с IntelliJ. Это приятно. Можете присоединиться к этому сообществу бешеных людей.

28% у Notepad++. Я реально знаю таких людей. Из моего круга общения — это те, кто пишет небольшие скрипты на 30-300 строчек (автоматизация, Data Science). Им иногда даже подсветка синтаксиса не нужна.

Для большой кодовой базы без IDE никуда. И это инструмент, который требует времени на освоение. Горячие клавиши, автоматический рефакторинг (форматирование, extract method), кодогенерация, — IDE может вас существенно ускорить.
👍14🔥3
Зачем быть в курсе трендов? Вот начинаете программировать, хотите освоить систему контроля версий (СКВ). Вики насчитывает более 30 СКВ. Какую выбрать?

Нашёл опрос 2008 года, где лидер Subversion. В 2014 году на хабре был опрос по СКВ. Результат на скрине — 71% был за git, 32% за SVN, 16% за mercurial, 8% за TFS от Microsoft. Сейчас лидер де-факто Git со своими 97% в последнем опросе от Stackoverflow.

Технологии умирают. Вам в любом случае придётся изучать другие инструменты. Тренды позволят понять, какой инструмент выбрать для работы, а какой теряет популярность.
#skills #trends #devfm
👍13🔥21
Когда код не работает, то понять проблему помогут следующие способы:
1. Метод пристального взгляда. Полезное упражнение для мозга – попытаться в голове построчно воспроизвести код и состояния всех переменных
2. Отладка. Воспользоваться IDE или сторонними инструментами для пошагового запуска с контролем выбранных переменных. Этот способ следует освоить, пользоваться горячими клавишами и точками останова. Незаменим при разборе чужого кода или сложных структур данных
3. Юнит-тесты. Вместе с кодом важно писать изолированные тесты, покрывающие ту функцию, над которой вы сейчас работаете. Выгодное отличие от отладки – накопительный эффект. Чем больше уже написано тестов, тем меньше область поиска ошибки
4. Отладочные принты. Выводить нужные переменные. Детский способ вникания в код. Почему детский? Есть альтернатива лучше по всем параметрам
5. Логгирование. Это отладочная печать на стероидах. Можно сконфигурировать выводимое сообщение (добавить время и дату, добавить название вызываемого модуля и функции и многое другое). Можно настроить уровень предупреждений. В info писать важное (например, изменение состояния в базе данных), в error писать ошибки, а в debug – нужное для отладки. Прелесть в том, что debug убирать не придётся. В конфиге настраиваем писать только info и выше, и в результате debug выполняться не будут. Удобно
Про логгирование недавно был пост в канале по питону

Наилучшим сочетанием я считаю 3, 5, 1 – именно в таком порядке. Всегда писать тесты, часто использовать логгирование и использовать мозг

#sudo #procode #devfm
👍8🔥2
Почему zip-файл с произведением "Война и мир" весит во много раз меньше оригинала, а 1.5-гигабайтный avi файл после сжатия почти не меняет размера?

Давайте погрузимся в область сжатия данных на примере zip. Zip-файлы: история, объяснение и реализация. Про баг "master key" в apk весьма занятно.

PS: исходники лежат в архиве hwzip-1.0. Если пойти на оригинал статьи (ссылка вверху статьи), то там уже hwzip-2.1. Как жаль, что не придумали более удобного способа хранения версий кода...

PPS: комментарии, как обычно, могут радовать

#skills
👍11🔥2
А как насчёт zip-бомбы? Их есть у меня. Архив в 10 мегабайт в распакованном виде занимает... 281 терабайт. В статье ковыряют алгоритм распаковки zip с целью получения весьма опасного архива, который съест весь ваш жёсткий диск.

Ещё лучшая ZIP-бомба

PS: наконец, git clone в примерах кода. Наши ребята

#skills
👍11🔥2
Пятничное развлекательное

Культовая трилогия 90-ых – Назад в будущее. Три классических фильма о путешествиях во времени смотрятся на одном дыхании. Всегда старый Кристофер Ллойд в роли безумного учёного. Любимая Делориан, способная переместить вас в любое время и обеспечить переплетение прошлого, настоящего и будущего. Притягательный альманах! Как же хотелось получить себе такой... Однозначно рекомендуется к просмотру

А если вы уже смотрели трилогию, то вам однозначно зайдёт фанатский анализ от ЧБУ Бутылка виски спасает всех.

#fun #films
👍8🔥3
Одним из вариантов безопасной пересылки данных является передача зашифрованного rar/zip архива с паролем. В rar есть удобная галочка "шифровать имена файлов", когда названия файлов внутри архива не показываются. Но rar формат проприетарный, что плохо с точки зрения криптографии и является дурным тоном. Берём zip.

О пароле можно договориться заранее. Если пересылка регулярная, на помощь может прийти одноразовый блокнот. Менее безопасным является пересылка архива по одному каналу связи (мессенджер), а пароля – по другому (СМС, почта, другой мессенджер).

Надёжный пароль состоит не менее, чем из 20 символов. Отличный пароль – набор из 4+ английских слов. Изменение регистра и спецсимволы приветствуются. Примеры хороших паролей:

HowAwesomeHumanBrain
ComputerGamesAreNotBad
Many%Coders%Can%Code%Windows

Такие пароли легко запомнить и сложно перебрать (и bruteforce, и перебор по словарю за разумное время не производится).

PS: Идеальным будет пароль вроде JVoZlEoHk~?rsnJFCZ1pJ%IEp, но его невозможно запомнить и тяжело набирать. Тут могут помочь менеджеры паролей, но это другая тема.

#sudo #skills #devfm
👍8🔥3