Pull to refresh
0
0
Сергей Петренко @digitalHitler

Software engineer

Send message

Лучший сотрудник банка. Часть 2 — Мама, я в Головном Офисе

Reading time11 min
Views18K

Начало: Лучший сотрудник банка. Часть 1

Мой начальник поехал в очередную командировку в Москву на большую конференцию для таких-же начальников, где между делом на кофебрейке упомянул, что у него всё хорошо с автоматизацией. Его словами заинтересовались, и он рассказал подробнее. Не поверили, попросили сделать запись. Я отправляю ему по WhatsApp видео этот 5-минутный процесс , вопросы поля, и какие получились документы. Это показали на большом экране на 100+ начальников и начальников этих начальников из Головного Офиса. В зале было молчание, потом аплодисменты и просьбы поскорее им тоже такое внедрить.

Читать далее
Total votes 51: ↑48 and ↓3+55
Comments33

Рендеринг текста вас ненавидит

Reading time14 min
Views30K

Рендеринг текста: насколько сложным он может быть? Оказывается, невероятно сложным! Насколько мне известно, буквально ни одна система не выводит текст «идеально». Где-то лучше, где-то хуже.

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

В общем, сразу скажем: здесь нет последовательных правильных ответов, всё намного важнее, чем вы думаете, и всё влияет на всё остальное.

Мы обсудим темы, которые не объединяются в рамках какой-то единой концепции, это просто вопросы, с которыми мне пришлось столкнуться за несколько лет работы над рендерингом текста в Firefox. Например, не будем слишком подробно обсуждать проблемы сегментации текста или управления различными текстовыми библиотеками для конкретной платформы, поскольку этим я не слишком интересуюсь.
Читать дальше →
Total votes 113: ↑112 and ↓1+111
Comments19

Переписка со спамерами: избранное

Reading time4 min
Views69K

Конец XIV века, неизвестный автор: Комиссия ФАС изучает отмазки спамера.

Я радуюсь, получая спам – ведь у меня появляется новая возможность пополнить бюджет любимой страны (откуда берутся деньги на пенсии старикам, больницы, школы, домики для уточек и вот это вот все). Каждое полученное от спамеров сообщение я аккуратно пересылаю в ФАС, давая ей возможность пополнить бюджет на лишние 100-500 тысяч рублей, а потом наслаждаюсь материалами «расследований», проливающих свет на грязную подноготную «солидного бизнеса» и его подельников. Вранье, подтасовка документов и далее со всеми остановками – наслаждайтесь!
Читать дальше →
Total votes 361: ↑360 and ↓1+444
Comments187

Памятка и туториал по HTTP-заголовкам, связанным с безопасностью веб-приложений

Reading time27 min
Views33K


Доброго времени суток, друзья!


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


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


В практической части мы реализуем простое Express-приложение, развернем его на Heroku и оценим безопасность с помощью WebPageTest и Security Headers. Также, учитывая большую популярность сервисов для генерации статических сайтов, мы настроим и развернем приложение с аналогичным функционалом на Netlify.


Исходный код приложений находится здесь.


Демо Heroku-приложения можно посмотреть здесь, а Netlify-приложения — здесь.


Основными источниками истины при подготовке настоящей статьи для меня послужили следующие ресурсы:


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

Гайд по миграции с Vue 2 на Vue 3. Часть 1

Reading time6 min
Views24K

Эта статья — перевод оригинальной статьи Andy Li из Vue Mastery "Vue 3 Migration Build: safely upgrade your app to Vue 3 (Pt. 1)".

Команда Vue недавно выпустила долгожданный билд миграции для Vue 3. Если вы думали об обновлении своего приложения с Vue 2 до Vue 3, это то, что вам нужно.

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

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

Как структурировать крупномасштабное приложение Vue.js

Reading time11 min
Views25K

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

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

Почему это важно? Вы наверняка сталкивались с ситуацией, когда получали в наследство проект или были введены в него, а затем при выполнении первой задачи открывали кодовую базу и думали: "Я даже не знаю, с чего начать!".

Возможно, вы даже имели дело с кодовой базой в течение некоторого времени и возникала та же мысль! Предсказуемая кодовая база максимально облегчает этот опыт, делая знакомство разработчиков с проектами более простым, а продолжение работы - более эффективным.

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

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

Гайд по миграции с Vue 2 на Vue 3. Часть 2

Reading time15 min
Views10K

Эта статья — перевод оригинальной статьи Andy Li из Vue Mastery "Vue 3 Migration Changes: Replace, Rename, and Remove (Pt. 2)".

Команда Vue недавно выпустила долгожданный билд миграции для Vue 3. Если вы думали об обновлении своего приложения с Vue 2 до Vue 3, это то, что вам нужно.

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

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

Делаем лампочку вечной и суперэффективной

Reading time3 min
Views91K
Я нашёл новую отличную светодиодную лампу, которую можно за пять минут превратить в вечную.
Получится лампа, дающая 816 лм, с рекордной эффективностью почти 150 лм/Вт и почти неограниченным сроком службы.

Читать дальше →
Total votes 110: ↑106 and ↓4+135
Comments170

Руководство по FFmpeg libav

Reading time24 min
Views91K

Долго искал книгу, в которой было бы разжёвано, как использовать FFmpeg-подобную библиотеку, известную как libav (название расшифровывается как library audio video). Обнаружил учебник «Как написать видеоплеер и уложиться в менее чем тысячу строк». К сожалению, информация там устаревшая, так что пришлось создавать мануал своими силами.

Большая часть кода будет на C, однако не волнуйтесь: Вы легко всё поймёте и сможете применить на любимом языке. У FFmpeg libav уйма привязок ко многим языкам (в том числе и к Python и к Go). Но даже если Ваш язык прямой совместимости не имеет, всё равно можно привязаться через ffi (вот пример с Lua).

Начнём с краткого экскурса о том, что такое видео, аудио, кодеки и контейнеры. Затем перейдем к ускоренному курсу, посвященному использованию командной строки FFmpeg, и, наконец, напишем код. Не стесняйтесь переходить сразу в раздел «Тернистый путь изучения FFmpeg libav».

Есть мнение (и не только моё), что потоковое интернет-видео уже приняло эстафету от традиционного телевидения. Как бы то ни было, FFmpeg libav точно достоин изучения.

Оглавление


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

Коронавирус: почему надо действовать прямо сейчас

Reading time19 min
Views5.6M

Вступление


Учитывая всё, что происходит с коронавирусом, может оказаться очень сложно принять решение, что делать прямо сейчас. Стоит ли подождать, пока станет больше информации? Надо ли предпринять что-то уже сегодня? Если да, то что?

В этой статье со множеством графиков, данных и моделей из большого числа источников мы постараемся ответить на вопросы:

  • Сколько людей заболеют коронавирусом в вашем регионе?
  • Что случится, когда они начнут заболевать?
  • Что вы должны делать?
  • Когда?

Когда вы закончите читать статью, вы придёте к следующим выводам:

  • Коронавирус приближается к вам.
  • Он приближается с экспоненциальной скоростью: сперва постепенно, а потом внезапно.
  • Это вопрос нескольких дней. Может быть, неделя или две.
  • Когда это случится, ваша система здравоохранения будет перегружена.
  • Ваши сограждане будут лечиться в коридорах.
  • Изможденные медицинские работники сломаются. Некоторые погибнут.
  • Им придётся решать, кто из пациентов получит лечение, а кто умрет.
  • Единственный способ предотвратить это — социальная изоляция уже сегодня. Не завтра. Сегодня.
  • Это значит держать как можно больше людей дома, начиная с сегодняшнего дня.

Если вы политик, общественный деятель или руководитель, у вас есть власть и ответственность, чтобы предотвратить описанное выше.

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

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

Итак, давайте разбираться.
Много графиков и длинный текст
Total votes 424: ↑368 and ↓56+456
Comments2074

Отправка e-mail с любого адреса

Reading time2 min
Views72K
Ошибку, фичу, возможность (как ее только не называть) отправки e-mail с любого адреса я заметил, когда писал обычный php-скрипт отправки заявки со своего сайта на почту моего же домена. Реализуется все с помощью обычной функции mail, в которой среди параметров есть пункт «От кого». Изначально я думал, что там должен быть только свой адрес e-mail, который заранее должен был быть настроен на сервере, но на деле оказалось совсем не так.
Читать дальше →
Total votes 90: ↑13 and ↓77-64
Comments93

Советы для профессионального использования RecyclerView. Часть 2

Reading time4 min
Views8.1K

Советы для профессионального использования RecyclerView. Часть 2


Продолжая предыдущую статью, в этой я расскажу про ItemDecoration и ItemAnimator и постараюсь объяснить принцип их работы в RecyclerView на примере простого приложения, которое доступно на Github.

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

Что такое утечки памяти в android, как проверить программу на их отсутствие и как предотвратить их появление

Reading time14 min
Views88K
В этой статье для начинающих android-разработчиков я постараюсь рассказать о том, что такое «утечки памяти» в android, почему о них стоит думать на современных устройствах, выделяющих по 192МБ на приложение, как быстро найти и устранить эти утечки в малознакомом приложении и на что нужно обращать особое внимание при разработке любого приложения.


Конечная цель этой статьи — ответ на простой вопрос:
Куда нажать, чтобы узнать, какую строчку в приложении поправить?

Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments36

Как все начиналось: история паяльника и появление современных инструментов

Reading time6 min
Views40K

Паяльник второй половины XIX века, который нагревался на огне

Пайка известна человеку около 4 тысяч лет — это исторически доказано. Разные народы в разное время паяли золотые, серебряные изделия и предметы из других металлов. Все паяльники до момента изобретения электрического были рассчитаны на нагревание открытым огнем. Пока мастер работал с одним паяльником, второй нагревался при помощи пламени — так решалась проблема непрерывности работы. Все изменилось после того, как электричество стало привычным, а изобретатели стали создавать устройства, работающие на электрическом токе.
Total votes 71: ↑67 and ↓4+63
Comments66

Быстрый способ добавить уведомления в Android-приложение

Reading time4 min
Views8.5K


Перевели для вас статью Брендона Вивера о работе с уведомлениями в Android OS. Программист объясняет, как быстро добавить этот функционал в свое приложение. Статья, в первую очередь, будет полезна начинающим Android-разработчикам.

Уведомления — один из самых легких и быстрых способов сделать свое приложение интерактивнее, что позволит привлечь больше пользователей. Уведомления предоставляют пользователю краткую информацию о том, что может понадобиться ему прямо сейчас. Также это способ проинформировать о предстоящих событиях. Давайте попробуем быстро добавить эту функцию в приложение.
Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments1

Практический пример создания собственного View-компонента

Reading time5 min
Views8.7K

Практический пример создания собственного View-компонента


Мне нравится Dribbble. Там есть много крутых и вдохновляющих дизайн-проектов. Но если вы разработчик, то часто чувство прекрасного быстро сменяется на отчаяние, когда вы начинаете думать о том, как реализовать этот крутой дизайн.


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

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

Создание фермы Android-устройств с помощью Open STF

Reading time4 min
Views16K
Доля мобильного трафика увеличивается каждый год. Современный человек мобилен и ему проще получить информацию с экрана собственного смартфона. Поэтому в тренде разработка мобильных приложений. При разработке и тестировании важно иметь доступ к разнообразным устройствам, чтобы приложение корректно отрабатывало на всевозможных моделях смартфонов. Рассмотрим различные варианты доступа к устройствам.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments2

Зачем нужны сервисы приема SMS и с чем их едят

Reading time4 min
Views69K
Сервисы, предоставляющие временный номер для приема смс онлайн, появились после того как многие социальные сети, торговые площадки и прочие интернет ресурсы перешли с идентификации пользователя, при регистрации, через адрес электронной почты на идентификацию через отправленный код на телефонный номер, а зачастую и код на телефонный номер и подтверждение через электронную почту.

Для кого существуют сервисы, предоставляющие виртуальные номера онлайн?


Всю аудиторию пользователей ресурсов, предоставляющих услуги приема смс на телефонные номера онлайн, можно разделить на группы:
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments25

Ретроспектива технологических стартапов. Как это было в 90-х и чуть раньше

Reading time13 min
Views12K
Предыдущая статья цикла: Ретроспектива технологических стартапов. Z3 — первый релейный компьютер



В этой статье продолжаю ретроспективу стартапов. Перенесёмся из Германии Второй Мировой в молодую Россию начала 90-х прошлого столетия. В этот раз будет много примеров о том как это происходило в Зеленограде и попытка ответить на вопрос: “Как и почему в то время бизнесы по производству электроники вырастали с нуля как на дрожжах”.

Но для начала заглянем ненадолго в эпоху заката звезды СССР.

Для чего всё это?
В первом стартапе я принял участие на следующий год после окончания института, хотя тогда мы ещё не знали этого модного слова. С тех пор, я в том или ином роде, имел отношение к немалому их количеству. Большинство просуществовали недолго, но случались и успешные. Попытки анализа показали что удачная стратегия стартапа меняется в зависимости от общественно-политической ситуации, в которой он зарождается. Чтобы выбрать лучшую стратегию для сегодняшнего, не будет лишним разобраться каким образом достигался успех в прошлом, а затем попытаться обобщить информацию и выбрать лучший вариант развития на сегодняшний день. Начать я решил с ретроспективы нескольких удачных технологических стартапов, которые показались мне наиболее характерными для своего времени.
Опыт лихих девяностых
Total votes 42: ↑40 and ↓2+38
Comments48

10 лучших VS Code-расширений 2018 года для фронтенд-разработчиков

Reading time4 min
Views107K
Visual Studio Code, вероятно, можно назвать лучшим современным редактором кода. Если вы пока с ним не работаете — то вам, по крайней мере, стоит на него взглянуть. Для VS Code написано великое множество расширений, которые размещают в каталоге Marketplace, удобный доступ к которому организован из самого редактора.

Существуют расширения для отладки и форматирования кода, расширения, облегчающие работу с различными платформами (вроде Heroku, GitHub, Docker, Azure) и технологиями. В Marketplace можно найти темы для редактора, линтеры, средства, облегчающие ввод повторяющихся фрагментов кода, и многое другое.



Автор материала, перевод которого мы публикуем сегодня, отобрал 10 лучших VS Code-расширений, предназначенных преимущественно для тех, кто занимается фронтенд-разработкой, то есть, работает с HTML, CSS, JavaScript и с различными веб-фреймворками.
Читать дальше →
Total votes 31: ↑24 and ↓7+17
Comments16

Information

Rating
Does not participate
Location
Stockholm, Stockholms Län, Швеция
Date of birth
Registered
Activity