Pull to refresh
0
0
Send message

Ультимативный гайд по поиску утечек памяти в Python

Reading time7 min
Views24K

Практика показывает, что в современном мире Docker-контейнеров и оркестраторов (Kubernetes, Nomad, etc) проблема с утечкой памяти может быть обнаружена не при локальной разработке, а в ходе нагрузочного тестирования, или даже в production-среде. В этой статье рассмотрим причины появления утечек в Python-приложениях, доступные инструменты для отладки и мониторинга работающего приложения, а также общую методику поиска утечек памяти.

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

Работа с файлами в C++ с использованием Boost

Reading time9 min
Views35K
Привет! Я время от времени рассказываю на Хабре о решениях распространённых задач на C++ и вообще люблю делиться опытом. Поэтому даже написал целую книгу, которая называется «Разработка приложений на С++ с использованием Boost». Она может быть интересна разработчикам, которые уже немного знакомы со стандартной библиотекой языка, хотят глубже изучить Boost, упростить и повысить качество разработки приложений. Уверен, что информация, которую я собрал в книге, будет полезна — всё больше библиотек Boost становятся частью стандарта. Сегодня предлагаю прочитать главу, посвящённую работе с файлами. В ней я рассказываю о перечислении файлов в каталоге, стирании и создании файлов и каталогов, а также о самом быстром способе чтения. Надеюсь, будет интересно. И, пожалуйста, не забывайте делиться впечатлениями в комментариях.

UPD: добавил в конец поста бонус для читателей Хабра.
Читать дальше →
Total votes 44: ↑42 and ↓2+40
Comments25

Основы Docker за Х часов и Y дней

Reading time8 min
Views161K

0. Вступление


Цель данной статьи собрать в небольшую кучку основную информацию, минимально достаточную для того, чтобы начать работать с докер на ежедневной основе и удалить с рабочей машины локально установленные apache, mysql, virtualenv, python3, mongodb, memchaced, redis, php5, php7 и весь остальной зоопарк, который мы используем при разработке, и который зачастую еще и конфликтует между собой от версии к версии.
Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments16

Как начать работу в Kaggle: руководство для новичков в Data Science

Reading time4 min
Views144K
Доброго времени суток, уважаемые хабровчане! Сегодня я хотел бы поговорить о том, как не имея особого опыта в машинном обучении, можно попробовать свои силы в соревнованиях, проводимых Kaggle.

image

Как вам уже, наверное, известно, Kaggle – это платформа для исследователей разных уровней, где они могут опробовать свои модели анализа данных на серьезных и актуальных задачах. Суть такого ресурса – не только в возможности получить неплохой денежный приз в случае, если именно ваша модель окажется лучшей, но и в том (а, это, пожалуй, гораздо важнее), чтобы набраться опыта и стать специалистом в области анализа данных и машинного обучения. Ведь самый важный вопрос, зачастую стоящий перед такого рода специалистами – где найти реальные задачи? Здесь их достаточно.

Мы попробуем поучаствовать в обучающем соревновании, не предусматривающем каких-либо поощрений, кроме опыта.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments11

Кунг-фу стиля Linux: программное управление окнами

Reading time8 min
Views11K
Операционными системами, которые основаны на Linux и Unix и работают в текстовом режиме, очень легко управлять. Учитывая то, как работает подсистема ввода-вывода Unix, программам, ожидающих на входе то, что вводится с клавиатуры, можно передавать любые данные. А то, что программы обычно выдают на экран, можно перехватить и подвергнуть дальнейшей обработке. Вся операционная система устроена именно так. А вот графические программы, использующие возможности X11, это — уже совсем другое дело. Можно ли управлять графическими программами так же, как управляют программами с текстовым интерфейсом? Точный ответ на этот вопрос зависит от того, что именно понимать под «управлением программами». Но если не вдаваться в детали, то на этот вопрос можно дать положительный ответ.

Как это обычно бывает в Linux и Unix, существует множество способов решения одной и той же задачи. И наша задача — не исключение. Если вам нужны средства для точного управления программами, то можно сказать, что добиться этого можно с помощью утилит, задействующих специальный механизм, называемый D-Bus. Этот механизм позволяет программам так оформлять данные и методы, что ими могут пользоваться другие программы. В идеальном мире программы, которыми нужно управлять, применяют D-Bus, но в реальности всё далеко не так просто. Поэтому сегодня мы поговорим о том, как управлять самыми разными графическими программами в Linux.



Существует несколько утилит, которые позволяют каким-то способом управлять X-окнами. Например, есть инструмент xdo, о котором вы, наверняка слышите не особенно часто. Более популярным средством из этой сферы является утилита xdotool, о которой я расскажу. Кроме того, похожим функционалом обладает wmctrl. Есть ещё программа autokey, которая родственна популярной Windows-программе AutoHotKey.
Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments5

Изучаем Docker, часть 2: термины и концепции

Reading time6 min
Views206K
В первой части перевода серии материалов, посвящённых Docker, мы сделали общий обзор этой системы. В частности, мы говорили о том, почему технологии контейнеризации важны в наше время, о том, что такое контейнеры Docker, и о том, с чем их можно сравнить. Сегодня мы поговорим об экосистеме Docker и рассмотрим важные термины, с которыми вы можете столкнуться на пути изучения и использования Docker. Продолжив аналогию с разными вкусностями, представим, что наши термины — это пончики. Дюжина пончиков.

Часть 1: основы
Часть 2: термины и концепции
Часть 3: файлы Dockerfile
Часть 4: уменьшение размеров образов и ускорение их сборки
Часть 5: команды
Часть 6: работа с данными



Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments36

Что почитать проектному менеджеру: книги про управление персоналом, soft skills и DevOps

Reading time4 min
Views17K
Мы в «ИТ Гильдии» уделяем особое внимание вопросам управления проектами и помогаем другим компаниям внедрять инструменты, которые оптимизируют работу в IT-отделах.

Сегодня мы собрали несколько полезных книг для PM’ов. В подборку вошла литература, которую рекомендуют к прочтению в тематических тредах на Hacker News, Reddit и Quora.

Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments1

Лекции от Яндекса для тех, кто хочет провести каникулы с пользой. Дискретный анализ и теория вероятностей

Reading time3 min
Views143K
Для тех, кому одного курса на праздники мало и кто хочет больше, продолжаем нашу серию курсов от Школы анализа данных Яндекса. Сегодня подошла очередь курса «Дискретный анализ и теория вероятностей» – даже более фундаментального, чем предыдущий. Но без него нельзя представить ещё большую часть современной обработки данных.

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



Читает курс Андрей Райгородский. Доктор физико-математических наук. Профессор кафедры математической статистики и случайных процессов механико-математического факультета МГУ им. М. В. Ломоносова. Заведующий кафедрой Дискретной математики ФИВТ МФТИ. Профессор и научный руководитель бакалавриата кафедры «Анализ данных» факультета инноваций и высоких технологий МФТИ. Руководитель отдела теоретических и прикладных исследований компании «Яндекс». (Ещё больше можно узнать в статье о нём на Википедии).

Содержание курса и тезисы лекций
Total votes 121: ↑115 and ↓6+109
Comments21

Удобное логирование на бэкенде. Доклад Яндекса

Reading time12 min
Views17K
Что-то всегда идет не по плану. Приходится отвечать на вопросы, «Что сломалось?», «Почему тормозит?» и «Почему мы не увидели этого раньше?». На примере простого приложения Даниил Галиев zefirior из Яндекс.Путешествий показал, как отвечать на эти вопросы и какие инструменты в этом помогут. Настроим логирование, прикрутим трассировку, разложим ошибки, и все это в удобном интерфейсе.

— Давайте начинать. Я расскажу об удобном логировании и инфраструктуре вокруг логирования, которую можно развернуть, чтобы вам с вашим приложением и его жизненным циклом было удобно жить.
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments3

10 научных статей о реставрации с помощью глубокого обучения, которые должен прочитать каждый

Reading time12 min
Views6.1K
В скором времени у нас стартует новый поток продвинутого курса «Machine Learning Pro + Deep Learning», а сегодня мы делимся постом, в котором рассказывается о подходах к реставрации с помощью глубокого обучения. Реставрация изображений в разрезе глубокого обучения — это задача заполнения потерянных пикселей так, чтобы итоговое изображение выглядело реалистично и соответствовало оригинальному контексту. Некоторые приложения метода, такие как удаление нежелательных объектов и интерактивное редактирование изображений, показаны на кдпв. Приложений на самом деле так много, как вы только можете себе представить.
Приятного чтения!
Total votes 27: ↑26 and ↓1+25
Comments2

Как разработать ансамбль Light Gradient Boosted Machine (LightGBM)

Reading time16 min
Views40K
В преддверии старта нового потока курса «Машинное обучение» представляем вашему вниманию материал о Light Gradient Boosted Machine (далее — LightGBM), библиотеке с открытым исходным кодом, которая предоставляет эффективную и действенную реализацию алгоритма градиентного бустинга.

LightGBM расширяет алгоритм градиентного бустинга, добавляя тип автоматического выбора объектов, а также фокусируясь на примерах бустинга с большими градиентами. Это может привести к резкому ускорению обучения и улучшению прогнозных показателей. Таким образом, LightGBM стала де-факто алгоритмом для соревнований по машинному обучению при работе с табличными данными для задач регрессионного и классификационного прогностического моделирования. В этом туториале вы узнаете, как разрабатывать ансамбли машин Light Gradient Boosted для классификации и регрессии. После завершения этого урока вы будете знать:

  • Light Gradient Boosted Machine (LightGBM) — эффективную реализацию ансамбля стохастического градиентного бустинга с открытым исходным кодом.
  • Как разрабатывать ансамбли LightGBM для классификации и регрессии с помощью API scikit-learn.
  • Как исследовать влияние гиперпараметров модели LightGBM на её производительность.


Давайте начнём
Total votes 20: ↑18 and ↓2+16
Comments0

Лучшие в Kaggle: что такое соревновательный дата-сайенс и как достичь в нем успеха

Reading time6 min
Views12K
Привет Хабр! В блоге на нашем сайте мы регулярно публикуем статьи про данные и всё, что с ними связано. Некоторые материалы оттуда публикуем и здесь.

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


Приятного чтения!
Total votes 24: ↑17 and ↓7+10
Comments2

Как работает память в Python

Reading time7 min
Views60K

Ни одна компьютерная программа не может работать без данных. А данные, чтобы программа имела к ним доступ, должны располагаться в оперативной памяти вашего компьютера. Но что такое оперативная память на самом деле? Когда произносишь это словосочетание, многие сразу представляют «железную» плашку, вставленную в материнскую плату, на которой написано что-то типа 16Gb DDR4 2666MHz. И они, разумеется, правы — это действительно физический блок оперативной памяти, в котором, в итоге, все данные и оказываются. Но прежде, чем стать доступной внутри вашей программы, на память (как и на всё остальное аппаратное обеспечение) накладывается куча абстракций.

Читать далее
Total votes 65: ↑63 and ↓2+61
Comments10

Каверзные вопросы по Python

Reading time4 min
Views38K

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


Читать дальше →
Total votes 61: ↑60 and ↓1+59
Comments47

Детектирование техник обхода песочниц и виртуализации на примере PT Sandbox

Reading time14 min
Views4.6K
Когда заходит речь о песочницах, все представляют себе виртуальную машину, напичканную различными инструментами для отслеживания действий подозрительного ПО. И большинство продуктов работают именно таким образом. Следовательно, возникает вопрос — как же быть, если вредоносное ПО обнаружит ненастоящее окружение и завершит свою работу? Здесь мнения расходятся: кто-то скажет, что мы можем хорошенько поработать с виртуальным образом, изменив значения характеристик среды (харденинг), в которых малварь будет искать подвох. Другие считают, что эта игра не стоит свеч. Тем не менее сам факт попытки провести разведку и определить свойство окружения — подозрительное действие, которое нехарактерно для большинства легитимного софта. Конечно, такого поведения недостаточно, чтобы сделать однозначный вывод о злонамеренных целях ПО, однако в совокупности с другими признаками оно заслуживает отдельного внимания безопасника.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments2

Сколько инструкций процессора использует компилятор?

Reading time3 min
Views34K
Месяц назад я попытался сосчитать, сколько разных инструкций поддерживается современными процессорами, и насчитал 945 в Ice Lake. Комментаторы затронули интересный вопрос: какая часть всего этого разнообразия реально используется компиляторами? Например, некто Pepijn de Vos в 2016 подсчитал, сколько разных инструкций задействовано в бинарниках у него в /usr/bin, и насчитал 411 — т.е. примерно треть всех инструкций x86_64, существовавших на тот момент, не использовались ни в одной из стандартных программ в его ОС. Другая любопытная его находка — что код для x86_64 на треть состоит из инструкций mov. (В общем-то известно, что одних инструкций mov достаточно, чтобы написать любую программу.)

Я решил развить исследование de Vos, взяв в качестве «эталонного кода» компилятор LLVM/Clang. У него сразу несколько преимуществ перед содержимым /usr/bin неназванной версии неназванной ОС:

  1. С ним удобно работать: это один огромный бинарник, по размеру сопоставимый со всем содержимым /usr/bin среднестатистического линукса;
  2. Он позволяет сравнить разные ISA: на releases.llvm.org/download.html доступны официальные бинарники для x86, ARM, SPARC, MIPS и PowerPC;
  3. Он позволяет отследить исторические тренды: официальные бинарники доступны для всех релизов начиная с 2003;
  4. Наконец, в исследовании компиляторов логично использовать компилятор и в качестве подопытного объекта :-)

Начну со статистики по мартовскому релизу LLVM 10.0:
ISA Размер бинарника Размер секции .text Общее число инструкций Число разных инструкций
AArch64   97 МБ 74 МБ 13,814,975 195
ARMv7A 101 МБ 80 МБ 15,621,010 308
i386 106 МБ 88 МБ 20,138,657 122
PowerPC64LE 108 МБ 89 МБ 17,208,502 288
SPARCv9 129 МБ 105 МБ 19,993,362 122
x86_64 107 МБ 87 МБ 15,281,299 203
В прошлом топике комментаторы упомянули, что самый компактный код у них получается для SPARC. Здесь же видим, что бинарник для AArch64 оказывается на треть меньше что по размеру, что по общему числу инструкций.

А вот распределение по числу инструкций:
Читать дальше →
Total votes 93: ↑92 and ↓1+91
Comments226

450 бесплатных курсов от Лиги Плюща

Reading time19 min
Views68K
image


Информационные технологии позволяют получить невероятно крутые образовательные ресурсы в один клик. Бесплатно.

Я сейчас решаю задачу, как из огромной массы жизненно важного контента выбрать тот, который стоит попробовать в первую очередь, как «разметить данные», чтобы нейросеточка у подрастающего поколения обучилась более эффективно. (ontol.org, «Выгорание», «Удаленка», телеграм-канал).

Предлагаю вашему вниманию полную подборку всех бесплатных курсов от Лиги Плюща.

Лига плюща (The Ivy League) — ассоциация восьми частных американских университетов, расположенных в семи штатах на северо-востоке США. В состав лиги входят: Брауновский университет (Brown University), Гарвардский университет (Harvard University), Дартмутский колледж (Dartmouth College), Йельский университет (Yale University), Колумбийский университет (Columbia University), Корнеллский университет (Cornell University), Пенсильванский университет (University of Pennsylvania), Принстонский университет (Princeton University).

Эти университеты выпустили около 500 онлайн-курсов, 450 из которых сейчас доступны.

Оглавление


Computer Science (37)
Data Science (18)
Программирование (8)
Гуманитарные науки (80)
Бизнес (72)
Art & Design (20)
Наука (32)
Социальные науки (74)
Здоровье и медицина (32)
Инженерия (15)
Образование и преподавание (21)
Математика (14)
Личностное развитие (7)

Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments5

Скрытые алгоритмы, заманивающие в ловушку бедности

Reading time10 min
Views18K
Привет, Хабр! Делюсь с вами постом, в котором рассказывается, как группа юристов обнаруживает и борется с автоматизированными системами, которые отказывают бедным в жилье, работе и в базовых услугах. Рассматривается американский опыт, но в России данная проблема тоже очень скоро будет актуальна, ведь алгоритмы кредитного скоринга активно внедряются и у нас. А где ещё поднимать вопросы этичности подобных систем, как не среди тех, кто их создаёт?

Приятного чтения!
Total votes 25: ↑19 and ↓6+13
Comments31

Оптимизация C++: совмещаем скорость и высокий уровень. Доклад Яндекса

Reading time9 min
Views23K
Что влияет на скорость работы программ на C++ и как её добиться при высоком уровне кода? Ведущий разработчик библиотеки CatBoost Евгений Петров ответил на эти вопросы на примерах и иллюстрациях из опыта работы над CatBoost для x86_64.

Видео доклада

— Всем привет. Я занимаюсь оптимизацией для CPU библиотеки машинного обучения CatBoost. Основная часть нашей библиотеки написана на C++. Сегодня расскажу, какими простыми способами мы добиваемся скорости.


Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments16

Интернациональное программирование на естественных языках

Reading time7 min
Views5.1K
В последнее время часто попадаются на глаза статьи о новых языках программирования, а так же различные рейтинги и прогнозы, связанные с популярностью компьютерных языков.

Заявляют о себе и новые инструментальные средства, которые в своей работе используют собственные форматы описания конфигурационных файлов или последовательности выполняемых команд, которые так же очень сильно приближает их к понятию «язык программирования».

Цель написания данной статьи — формулировка ожиданий и возможной реализации абстрактного языка программирования, который может стать универсальным инструментом для общения между компьютером и человеком.
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments95
1

Information

Rating
Does not participate
Registered
Activity