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

Для связи @sa_bul
Download Telegram
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
Python умеет "из коробки" работать с zip. Можно удобно использовать контекстный менеджер with.

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

Подробнее о ZipFile в документации

#python #codereview
👍10🔥2
За последние 5 лет доля Windows упала с 84 до 76% согласно statcounter. В 2009 году, когда проект statcounter начался, доля Windows была 95%.

Ещё в районе 2010-ых года я предполагал, что Ubuntu почти готова для распространения среди непрофессиональных пользователей. Достаточно же установить Ubuntu и всё настроить, а дальше оно работает почти без нареканий. Ну что ж, спустя десятилетие Ubuntu всё ещё в состоянии "оно почти готово".

Надежда была на разработчиков, так как на Linux удобнее разрабатывать софт. Ну, игр то нет и ничего не отвлекает. К сожалению, всё идёт к тому, что распространением WSL (Windows Subsystem for Linux) Windows продолжит быть основной ОС.
#skills #trends
👍3🔥2
Есть такая больная тема, как фрагментация версий. Речь про то, сколько одновременно существует версий операционной системы (или форматов экранов, или чего угодно), под что требуется адаптация разрабатываемых приложений. Windows провела хорошую работу в части сокращения фрагментации версий своей ОС. В начале 2018 win10 обогнал win7 и с тех пор уверенно растёт до 80% в пике
👍3🔥3
На мобильных сейчас расклад 70 android против 30 IOS. Так было не всегда. В период 2009-2012 жили SymbianOS от Nokia, Blackberry, IOS. В 2012-2015 существовал Series 40 от той же Nokia.

Не могу не подчеркнуть стабильность IOS. Они держат свои 30% уже больше десятка лет
👍3🔥3
Вот у Android с фрагментацией всегда был ужас. Сейчас легче, но всё ещё плохо. В 2018 году в ходу было одновременно 6 версий Android, а плюсом к тому огромный спектр различных размеров экранов.
👍3🔥2
IOS вот умеют твёрдой рукой загонять в светлое будущее. Вышел апдейт – надо обновиться, бро. Убрать зарядку или дырку для наушников? Я лучше знаю, я же Apple. Это позволяет быстро внедрять инновации и доставляет много боли, если конкретно эту инновацию ты не хочешь
👍6🔥2
На рынке браузеров сейчас складывается грустная монополия Chrome и Chrome-based движков. Монополия Internet Explorer 6 задержала развитие интернета на 15 лет. Использование Chrome своего доминирующего положения не за горами.

Поддержи Firefox как единственный альтернативный движок для браузера
#skills #trends
👍10🔥2
Расклад по РФ чуть лучше. Яндекс смог взять 20% рынка, пусть движок тот же Blink, что и у Chrome.
👍5🔥2
Мобильные браузеры тоже под Chrome. Кусок рынка Safari от пользователей IOS. Есть некий Samsung Internet с 5%, впервые такое вижу. А он с 2016 года взял 5% и не отдаёт.
👍2🔥2
В РФ на рынке мобильных до 2014 года правила Opera с долей аж до 80% (в 2010). А потом владельцы потеряли все полимеры.
👍4🔥1
Последние 15 лет google занимает 1 место в области поиска для настольных компьютеров (Desktop) с долей в 85%. Bing и yahoo 10% в сумме. Яндекс молодцы, смогли занять 1.5% мирового рынка
👍4🔥1