Решила повторить исследование, сделанное в 2017 году и посмотреть, что изменилось за 5 лет. Ссылка на предыдущую статью Анализ статей Хабрахабр и Geektimes. Дизайн сайта изменился, поэтому делала все в jupyter python, а не wolfram mathematica. Далеко не все графики удалось воспроизвести заново. Получился анализ более чем 260000 статей.
Программирование *
Искусство создания компьютерных программ
- Новые
- Лучшие
- Все
- ≥0
- ≥10
- ≥25
- ≥50
- ≥100
Новости
Как я прошел путь от игрушек на Objective-C к реальным проектам на Swift в большой компании
Привет, Хабр! Когда я был ещё совсем мал и только тянулся к разработке, я тоже почитывал Хабр и не раз видел статьи, где описывался путь с нуля до оффера. Иногда это были и вовсе удивительные истории о переходе в новую профессию, читая которые словно проживаешь жизнь другого человека.
Но теперь и мне есть о чём рассказать. Сразу скажу, что этот пост вряд ли чем-то удивит людей с опытом 3+ лет, но надеюсь, мой путь поможет другим людям, которые, как и я когда-то, только смотрят в сторону программирования. Ведь все мы, когда-то были начинающими. И так, меня зовут Александр Рубцов, я iOS-разработчик и это история моего пути в разработку…
Тестируем сервисы для подготовки к собеседованию
Шесть лет назад агентство Glassdoor выпустило исследование, где эксперты оценивали сложность интервью в IT-компаниях и реакцию соискателей. И неожиданно оказалось, что, чем труднее интервью, тем больше удовлетворения получает специалист от работы, если его наймут.
Кажется, рекрутеры взяли это на заметку. Собеседование любого айтишника превращается в большое количество теоретических вопросов и практических задач. Квалифицированный спец может сразу не вспомнить аргументы функций языка, что за 10 лет он использовал два раза, и те случайно.
Чтобы освежить знания, даже сеньоры часто дополнительно готовятся к техническому интервью и используют имитирующие техническую часть собеседования онлайн-программы.
К старту флагманского курса по Data Science разбираемся, действительно ли тестовые собеседования подходят для подготовки к реальным.
SAST unboxing
Мы создаем множество сложных программных продуктов и требования безопасности кода становятся все актуальнее. Автоматизация везде, в том числе и в сфере безопасности: алгоритмы говорят нам, как писать код. Очень хотелось бы иметь волшебный инструмент, который бы говорил, безопасен наш код или нет. Попробуем проверить, есть ли волшебная кнопка в мире DevSecOps. Для этого мы взяли несколько статический анализаторов кода, залили в них уязвимый код и посмотрели, что получилось на выходе.
Как пелось в песне группы Технология, “Нажми на кнопку – получишь результат, и твоя мечта осуществится”. О результатах эксперимента мы и поговорим далее.
Тюнинг PHP-FPM. Введение
БОНУС: в нашем подкасте мы обсудили эту тему с экспертом, членом сообщества PHP программистов: https://share.transistor.fm/s/6a8637ba
PHP-FPM (или FastCGI Process Manager) имеет по сравнению с mod_php несколько преимуществ, из которых самые очевидные — он более гибок в настройке, и в настоящее время сообщество отдает предпочтение именно этому режиму работы PHP. Однако, если вы используете дефолтную конфигурацию от вашего диспетчера пакетов, то, скорее всего, вы не получите максимум выгоды от его использования.
В этой статье я представлю краткий обзор того, как улучшить производительность PHP-FPM, сконцентрировав ваше внимание на трех типах менеджеров процессов PHP-FPM и том, какой и когда лучше использовать.
Как мы обновляли мобильное приложение для официантов: трудности перевода стека KMM + UI на Flutter из теста в продакшн
Привет! На связи снова Сергей Арсёнов, руководитель мобильной разработки в компании r_keeper. Я уже рассказывал, как и почему мы выбрали стек Kotlin Multiplatform Mobile + UI на Flutter для обновления нашего мобильного приложения для официантов. А теперь посмотрим, что из этого вышло на стадии продакшн (спойлер: все получилось, но проблем хватило).
Представляем MPS 2021.2
Мы выпустили версию 2021.2 — второй крупный релиз MPS в этом году. Как и в прошлый раз, мы подготовили для вас демо, в котором показываем новые возможности:
Ниже читайте краткий обзор новой функциональности.
Как помочь участникам видеокурсов проходить их до конца: опыт Слёрма
Раньше у Слёрма было два варианта обучения: интенсивы и видеокурсы. Но участники не проходили курсы до конца и мы стали думать, как помочь. Ввели формат прохождения в группах с куратором и сразу увидели результаты.
Как куратор помогает не отложить очередной видеокурс на полку, рассказали три наших эксперта.
React: простое и эффективное решение для управления состоянием приложений
Привет, друзья!
В этом небольшом "туториале" я хочу показать вам, как реализовать простое, но эффективное решение для управления состоянием React-приложений
.
Немного забегая вперед, скажу, что решение получилось чуть менее производительным, чем "классическое" сочетание хука useReducer()
и инструментов, предоставляемых Context API
(которые, собственно, и составляют ядро решения).
Решение представляет собой результат нескольких экспериментов, направленных на максимальное упрощение работы с контекстом React
, и во многом вдохновлено Vuex
— официальным инструментом для управления состоянием Vue-приложений
.
Решение не является законченным и находится в стадии активной разработки, поэтому приветствуются любые замечания и предложения, любая конструктивная критика.
Пока мне не представилось возможности испытать решение в "полевых условиях" (я намерен сделать это при первом удобном случае), но кажется, что оно подойдет для разработки приложений любой сложности при соблюдении двух важных условий:
Способы упрощения текстов: плюсы, минусы, альтернативы
Сложно понять содержимое текста, если в нем встречается много незнакомых слов. Вариант решения этой проблемы – замена слов на близкие к ним по значению. Заменить слово на синоним можно, например, тремя способами – трансформером, word2vec и его модификацией - RusVectores.
Зачем вообще упрощать текст? Есть, как минимум, три кейса, почему есть вероятность столкнуться с этой задачей:
- если перед вами текст на иностранном языке, то замена «сложного» слова на синоним поможет сориентироваться в сути предложения
- если вы работаете с доменной тематикой, то также подбор синонимов может сделать текст проще для восприятия (так, например, «ирригация» можно заменить на «орошение» и наоборот, в таком случае шанс понять текст у читающего увеличивается)
- для расширения датастета: аугментация текстовых данных – это всегда вызов, важно учитывать контекст для того, чтобы подобрать синоним. Тут, конечно, важно учитывать размер корпуса, частота встречаемости слов в рамках контекста будет точнее, если корпус состоит из миллионов предложений, а не из тысяч.
Если говорить более предметно, то это задача делится на две: поиск сложного слова или словосочетания и поиска его замены, исходя из контекста. Давайте последовательно разберемся с каждой из задач.
Если кому-то интересно ознакомиться только с кодом, то welcome на github, там можно найти пошаговую реализацию.
Задача выделения сложных слов
Персистентная очередь на фронте
Что такое персистентная очередь? Это очередь, события в которой не потеряются в случае перезагрузки приложения.
Персистентная очередь во фронтенде (или в мобильном приложении) может быть использована только... пока фронтенд работает. Так ли уж она полезна?
Как написать генератор изображений, который вас понимает
Автор статьи рассказывает, как за неделю создал Text2Art.com — генератор изображений на основе VQGAN+CLIP, способный рисовать пиксель-арт и живопись, а также изображать то, что вы напишите в текстовом поле.
Для интерфейса используется Gradio, модель работает на сервере FastAPI, а системой очереди сообщений служит Firebase. Подробностями делимся к старту курса по ML и DL.
Нижняя панель навигации Flutter с вложенной маршрутизацией (автомаршрутизация)
Маршрутизация во Flutter это обширная тема, поскольку она может быть выполнена множеством различных способов. Логичная и простая в навигации настройка маршрутизации однозначно приведет к улучшению пользовательского опыта. Это также сделает код намного более удобным для разработчиков.
Адаптация Qt-приложений под мониторы высокой чёткости
В связи с техническим прогрессом рынок мониторов постоянно обновляется моделями с повышенным разрешением, плотностью пикселей и/или размером экрана. Году в 2010 стандартным монитором можно было считать экземпляр 19’’ c разрешением WXGA++ (1600*900) и фактической плотностью пикселей 97 DPI (dots per inch). Сейчас (2021 год) стандартным монитором, думаю, можно признать экземпляр 24’’ c разрешением Full HD (1920*1080) и плотностью пикселей 92 DPI. Под «стандартным» я понимаю тот монитор, который стоит на рабочем месте у большинства работающего люда: инженеры, бухгалтеры, переводчики и т.д. (при этом, конечно, «стандартность» — это субъективная и приблизительная оценка). Относительно новые и отчасти нишевые модели (для фотографов, видеографов, геймеров) имеют характеристики: 4K UHD (3840*2160) и 28’’ (157 DPI) или UWQHD (3440x1440) и 34" (109 DPI) или QHD (2560x1440) и 27" (109 DPI) или UWHD (2560x1080) и 29" (96 DPI). Таким образом, наблюдается рост в связанных группах признаков: разрешение+размер экрана, или разрешение+плотность пикселей, или даже разрешение+плотность пикселей+размер экрана. На рынке ноутбуков в плане экранов похожая ситуация – растет разрешение+плотность пикселей.
К сожалению, не всегда программное обеспечение поспевает за ростом характеристик мониторов. Нередко оно выглядит немного коряво и неухоженно, что расстраивает пользователя. Действительно, на дворе 21 век, а зачастую приходится видеть размытые шрифты, а иногда и микроскопические иконки.
Что касается высокой чёткости (большой плотности пикселей), то в ОС Windows давно есть такие настройки, как масштабирование шрифта и изображений (масштаб экрана), которые применяются для увеличения слишком малых элементов GUI на мониторах с высокой чёткостью (High DPI). Также есть поддержка в платформе Qt (с нюансами, об этом далее). Однако способно ли Ваше, конкретное ПО их адекватно учитывать, применять?
Загрузка треков со Spotify с помощью питона
Здравствуйте, дорогие пользователи хабра! Сегодня я расскажу как используя python можно скачивать треки со спотифая.
Разрабатываем расширения для VS Code на Kotlin/JS
Kotlin/JS – это технология, позволяющая транслировать код, написанный на Kotlin, в JavaScript. Мне не удалось найти информации о том, как написать своё расширение для Visual Studio Code, популярного редактора кода, используя Kotlin, поэтому я задался вопросом, а возможно ли это? Какие проблемы нас ждут?
Frontend Security: о чем вы хотели бы забыть, но не сможете
Какие атаки на клиентскую часть веб-ресурсов вы знаете? XSS, CSRF, HTTP Response Splitting, Clickjacking, CSHM, атаки на CORS, следствия других ошибок программистов? В среднем разработчик вспоминает не половину, и даже не треть. Разнообразие атак зависит только от фантазии и любопытства злоумышленников, и все они созданы, чтобы навредить вашим клиентам, а значит — и вам.
Татьяна Новикова — ex-пентестер с опытом в безопасности около четырех лет, а ныне Application Security Engineer. В команде ЦАРКА (Центр анализа и расследования кибератак) она занималась пентестом — полной проверкой веб-ресурсов на безопасность. В том числе команда работала с white-box, то есть с исходными кодами, и разбирала безопасность не только бэкенда, но и фронтенда. Сейчас Татьяна перешла в Beeline Казахстан и занимается обеспечением процессов безопасной разработки.
На основе своего опыта она выступила на конференции Frontend Conf Live 2020. В одной статье, конечно, невозможно покрыть все уязвимости и потенциальные опасности, поэтому сегодня будет самое актуальное и страшное из доклада — то, что может нанести максимальный ущерб.
Самостоятельная разметка данных для распознавания русского рукописного текста
В данной статье я опишу наш опыт создания датасета для обучения модели распознавания рукописного текста.
Предварительный анализ работ по этой теме показал, что в публичном доступе отсутствуют размеченные наборы данных на русском языке. Доступные данные либо описывают английский текст, либо не доступны для коммерческого использования. Нам не подходило такое условие, поэтому единственным вариантом стало создание собственных данных.
Общий принцип был заимствован у коллег из Казахстана – создание и заполнение табличных форм с двумя колонками на странице – печатной и рукописной, а затем разбивка скана либо фотографии страницы на мини-боксы с текстом.
Мы начали с выбора текстов. Чтобы модель показывала хорошие результаты на инференсе, она должна иметь высокую обобщающую способность. Для этого она должна «увидеть» в процессе обучения как множество образцов почерка, так и разнообразие текстов. Мы взяли текст из нескольких источников, в числе которых бульварный роман, газетные публикации, научная работа и ряд других. Ниже приведена функция, которая формирует набор предложений из файла-источника, для чего выбирает по 3 слова в случайном месте текста. Ограничения на длину установлены, чтобы избежать слишком коротких или слишком длинных фраз.
Многозадачная модель T5 для русского языка
Модель T5 – это нейросеть, которая уже обучена хорошо понимать и генерировать текст, и которую можно дообучить на собственную задачу, будь то перевод, суммаризация текстов, или генерация ответа чат-бота.
В этом посте я рассказываю про первую многозадачную модель T5 для русского языка и показываю, как её можно обучить на новой задаче.
Компиляция Python
Предположим, вы разработали приложение или библиотеку на Python и уже готовитесь передать его / её заказчику. И в этот момент появляются разные вопросы.
Во-первых, к вам прибегает озадаченный проджект-менеджер и говорит: «Мы решили не отдавать исходный код, ведь это наша интеллектуальная собственность. Придумайте что-нибудь, чтобы заказчик был доволен, а мы оставили у себя исходники».
Во-вторых, возникает вопрос окружения - хочется быть уверенным, что заказчик справится с установкой правильной версии Python и всех вспомогательных библиотек, но это не всегда простая задача. Было бы удобно упаковать приложение в автономный исполняемый файл.
И, наконец, хочется, чтобы конечное приложение работало быстрее, чем в среде разработки.
И вот тут настало время скомпилировать Python-код.
Меня зовут Руслан, я старший разработчик компании «Цифровое проектирование». Сегодня я расскажу, как выбрать тот самый компилятор из множества доступных.
Вклад авторов
-
olegchir 3287.2 -
alizar 3032.2 -
tangro 2672.2 -
haqreu 2566.0 -
DmitrySpb79 2296.0 -
grigoryvp 2158.2 -
MaxRokatansky 1991.4 -
lany 1631.0 -
sahsAGU 1548.2 -
sidristij 1507.6