Pull to refresh
2
0
Send message

RabbitMQ. Часть 1. Introduction. Erlang, AMQP

Reading time4 min
Views216K

Добрый день, Хабр! Хочу поделиться учебником-справочником знаний, которые мне удалось собрать по RabbitMQ и сжать в короткие рекомендации и выводы.

Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments6

Как работать с датами в pandas

Reading time4 min
Views61K

Библиотека Pandas — это весьма эффективный инструмент для обработки данных, представляющих собой временные ряды. На самом деле, эта библиотека была создана Уэсом МакКинни для работы с финансовыми данными, которые состоят, главным образом, из временных рядов.

При работе с временными рядами много сил уходит на выполнение различных операций с датой и временем. Этот материал посвящён ответам на четыре распространённых вопроса из данной сферы.

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

Начнём с создания учебного датафрейма (объекта DataFrame), с которым будем экспериментировать:

Читать далее
Total votes 18: ↑17 and ↓1+16
Comments2

Как организовать код в Python-проекте, чтобы потом не пожалеть

Reading time10 min
Views70K

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

Бенджамин Франклин

Python отличается от таких языков программирования, как C# или Java, заставляющих программиста давать классам имена, соответствующие именам файлов, в которых находится код этих классов.

Python — это самый гибкий язык программирования из тех, с которыми мне приходилось сталкиваться. А когда имеешь дело с чем-то «слишком гибким» — возрастает вероятность принятия неправильных решений.

Читать далее
Total votes 38: ↑35 and ↓3+32
Comments34

Устаревшие Python-библиотеки, с которыми пора попрощаться

Reading time11 min
Views32K

В Python, с каждым релизом, добавляют новые модули, появляются новые и улучшенные способы решения различных задач. Все мы привыкли пользоваться старыми добрыми Python-библиотеками, привыкли к определённым способам работы. Но пришло время обновиться, время воспользоваться новыми и улучшенными модулями и их возможностями.

Читать далее
Total votes 37: ↑35 and ↓2+33
Comments29

Бескомпромиссный CI-конвейер для питонистов

Reading time11 min
Views7.1K

Любому Python-проекту может пойти на пользу надёжный и стабильный конвейер непрерывной интеграции (Continuous Integration, CI). В рамках таких конвейеров выполняется сборка приложений, запуск тестов, проверка кода линтерами, контроль качества программ, анализ уязвимости приложений. Правда, построение CI-конвейеров занимает много времени, требует выполнения действий, которые, сами по себе, никакой пользы не приносят. Этот материал написан для тех Python-программистов, которым нужен полнофункциональный, настраиваемый CI-конвейер, основанный на GitHub Actions. Этот конвейер оснащён всеми мыслимыми инструментами, подключён ко всем необходимым сервисам, а подготовить его к работе можно всего за несколько минут.

Читать далее
Total votes 23: ↑21 and ↓2+19
Comments3

Способ атаковать любой чат в Telegram-мессенджере, или как на меня напали хакеры

Reading time4 min
Views106K

Помните, недавно вышла серия постов про прививки от коронавируса?

Я член команды админов из той системы чатов v1v2 по вакцинации и лично моя зона ответственности – «ЭпиВакКорона», вакцина ГНЦ «Вектор» Роспотребнадзора.

Если коротко, то в процессе независимой проверки вакцин мы выяснили, что Спутник-V отлично работает и побочки приемлемые, а их разработчик центр им. Гамалея говорит правду в СМИ про свою вакцину и её характеристики. Ковивак (им. Чумакова) работает существенно хуже – формирует антитела далеко не у всех и на низком уровне.  А вот «ЭпиВакКорона» вовсе не получилась никак – нулевая эффективность, её даже низкой нельзя назвать. Подробнее у нас на сайте. «ЭпиВакКорона» не даёт никакой защиты от коронавируса. Какие-то антитела  от неё в 70% появляются в организме человека, но они не способны связываться с коронавирусом.

В нашем чате около 8500 человек, интересующихся нашими исследованиями и данным препаратам. И вот вчера на нас напала неизвестная группа лиц весьма своеобразным способом. Проведя небольшое исследование и ряд экспериментов удалось вычислить схему действия. В нашем чате под видом обычного пользователя сидит бот, подключённый к чату через их API. Он следит за сообщениями и как кто-то пишет новое, смотрит id пользователя. Это внутренний номер в Telegram, который не равен вашему нику или номеру телефона. Id не меняется, если вы меняете ник или номер телефона.

Далее по данному id пробивается по базам данных, собранных по публичным источникам. Доступ к ним есть через ботов в Telegram, например @Quick_OSINT или «Глаз бога».

Что же там произошло?
Total votes 93: ↑84 and ↓9+75
Comments88

Разработка чрезвычайно быстрых программ на Python

Reading time7 min
Views68K
Ненавистники Python всегда говорят, что одной из причин того, что они не хотят использовать этот язык, является то, что Python — это медленно. Но то, что некая программа, независимо от используемого языка программирования, может считаться быстрой или медленной, очень сильно зависит от разработчика, который её написал, от его знаний и от умения создавать оптимизированный и высокопроизводительный код.



Автор статьи, перевод которой мы сегодня публикуем, предлагает доказать то, что те, кто называет Python медленным, неправы. Он хочет рассказать о том, как улучшить производительность Python-программ и сделать их по-настоящему быстрыми.
Читать дальше →
Total votes 90: ↑83 and ↓7+76
Comments47

Приготовься к введению в России социального рейтинга

Reading time9 min
Views90K
image

Уже сегодня банки формируют свои предложения исходя из данных собранных их приложениями на смартфонах клиентов. В частности ставка по кредиту, которую вам предложат, сильно зависит от файлов, размещенных на вашем устройстве, и сайтов, которые вы посещали. Именно поэтому банки так настойчиво предлагают их установить (даже отказывая в обслуживании, сославшись на возможность выполнения необходимых действий самостоятельно). Для этого банковские клиенты требуют максимальных прав на устройстве. Например, Сбербанк Онлайн утверждает, что ему необходим доступ к файловой системе для… поиска вирусов на устройстве.

Вам может показаться, что получение низкой ставки по кредиту за социально полезные действия- перспектива далекого будущего. Но уже сегодня ставка ипотеки для молодой семьи находится в районе 10%, тогда как остальные предложения близки к 20%. Т.е. это уже давно реальность, просто вы не придавали этому значения.

Я считаю, что ряд непопулярных решений будет принят в течении последнего президентского срока Владимира Путина: этому человеку больше не надо «сохранять лицо». Поэтому до 2024 года мы увидим новый виток «закручивания гаек», в том числе введение социального рейтинга в России.
Читать дальше →
Total votes 165: ↑124 and ↓41+83
Comments687

«Анализ данных на Python» в двух частях

Reading time5 min
Views57K
Курсы по анализу данных в CS центре читает Вадим Леонардович Аббакумов — кандидат физ.-мат. наук, он работает главным экспертом-аналитиком в компании Газпромнефть-Альтернативное топливо.

Лекции предназначены для двух категорий слушателей. Первая — начинающие аналитики, которым сложно начинать с изучения, например, книги The Elements of Statistical Learning. Курс подготовит их к дальнейшей работе. Вторая — опытные аналитики, не получившие систематического образования в области анализа данных. Они могут заполнить пробелы в знаниях. С прошлого года на занятиях используется язык программирования Python.

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

Приятного просмотра!
Total votes 22: ↑20 and ↓2+18
Comments0

10 фич для ускорения анализа данных в Python

Reading time5 min
Views21K

Источник

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


1. Профилирование Pandas Dataframe


Профилирование помогает лучше понять наши данные, и пакет Pandas Profiling создан как раз для этого. Библиотека даст возможность просто и быстро выполнить разведочный анализ Pandas Dataframe. Обычно в таких случаях в качестве первого шага используются функции df.describe() и df.info(), но они сообщают мало и плохо справляются с большими наборами данных. Одна строка кода с использованием Pandas Profiling, напротив, выведет много информации в интерактивном HTML-отчете.


Вот что вычисляется для заданного набора данных:


Статистика выводимая Pandas Profiling.

Установка


pip install pandas-profiling
или
conda install -c anaconda pandas-profiling

Использование


Давайте используем набор данных о пассажирах Титаника, чтобы продемонстрировать возможности профайлера.

Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments6

Как работает yield

Reading time6 min
Views664K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ
Total votes 141: ↑136 and ↓5+131
Comments41

Что нужно запомнить программисту, переходящему на Python

Reading time11 min
Views50K

Когда-то давно, в студенческие годы, меня укусил питон, правда инкубационный период затянулся и получилось так, что я стал программистом на перле.


Однако в какой-то момент перл исчерпал себя и я решил заняться питоном, сначала просто делал что-то и разбирался с тем, что нужно для данной задачи, а потом понял, что нужны какие-то систематизированные знания и прочитал несколько книг:


  • Билл Любанович «Простой Python. Современный стиль программирования»
  • Дэн Бейдер «Чистый Python. Тонкости программирования для профи»
  • Бретт Слаткин «Секреты Python: 59 рекомендаций по написанию эффективного кода»

Которые мне показались вполне подходящими для понимания основных тонкостей языка, хотя не помню, чтобы в них упоминалось про slots, но и не уверен, что это реально нужная фича — если уже по памяти прижало, то скорее всего одного этого способа будет недостаточно, но конечно это всё зависит от ситуации.


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

Читать дальше →
Total votes 46: ↑41 and ↓5+36
Comments33

Simple Solder MK936 SMD. Паяльная станция на SMD-компонентах своими руками

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

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

Собрав ее, вы получите опыт работы с компонентами поверхностного монтажа (SMD) и, конечно, полезное устройство.


Total votes 32: ↑32 and ↓0+32
Comments146

Краудтестинг, или Где взять опыт для первой работы в тестировании

Reading time8 min
Views188K

Изображение: источник

Привет, Хабр! Меня зовут Евгений Кузнецов. Я работаю в Badoo, в отделе QA.

Почти пять лет назад я начал интересоваться тестированием: читал книги, искал информацию в интернете. На одном из форумов наткнулся на тему про подработку, где один из участников оставил ссылку на сайт uTest.com. И это была действительно удачная находка, поскольку uTest оказался крупнейшей платформой для тестировщиков с кучей полезной информации и сотнями оплачиваемых краудсорсинговых проектов.

Я думаю, многие здесь уже слышали об этом сайте или о подобных площадках. Но, как ни странно, часто я вижу удивлённые лица, когда начинаю рассказывать про краудтестирование. Так что цель этой статьи — пустить полезную информацию в массы.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments16

Рассказ «6 часов до запуска БАКа»

Reading time4 min
Views2.1K
Тема Большого адронного коллайдера ещё не набила Вам оскомину? :)

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

Читать дальше →
Total votes 91: ↑72 and ↓19+53
Comments32

Короткий НФ рассказ «Ошибка в программе»

Reading time5 min
Views15K
К1732 спешил. Времени оставалось мало. Он очень хотел выполнить комплекс мероприятий 138450 до полуночи. А добираться до квадрата В8422, Д8591 приходится собственным ходом – локальный транспорт А13 будет аж только через 1264 секунды. Координация в пространстве не требует использования всех доступных вычислительных ресурсов, поэтому он успевал еще и подумать. Он не мог прийти к выводу о полезности своих размышлений, поскольку никакого конкретного практического результата они не давали. Собственно говоря, все его размышления сводились к формированию вопроса, а поиски конкретного и однозначного ответа на вопрос приводили лишь к появлению новых вопросов. Например, почему ему очень хотелось выполнить комплекс мероприятий 138450? И почему именно до полуночи?
Читать дальше →
Total votes 34: ↑31 and ↓3+28
Comments71

Колония. Главы 20 и 21

Reading time20 min
Views7K

Глава 20: По колено в грязи


Темнело. Сверчки за бортом ровера пели все громче, и график шума на одном из мониторов послушно увеличивал амплитуду колебаний с каждой минутой.


Питер погиб около получаса назад, и все это время в салоне ровера[] царила полная тишина. Поначалу она нарушалась редкими тревожными сигналами радара, которые, однако, становились все чаще, и вскоре Джо пришлось отключить звук. Кровь приманивала хищников, и они попросту не пропадали из радиуса обнаружения.


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

Читать дальше →
Total votes 25: ↑21 and ↓4+17
Comments7

Неожиданная встреча. Глава 1

Reading time13 min
Views36K
День был изумителен. По небу плыли белые облака, похожие на растянутый кусок ваты, через белые нити которого просвечивало яркое синее небо. Солнце подсвечивало сверху участки леса, создавая картину бегущих зеленых волн в такт тем местам на небе, где облака не закрывали солнце. Было заметно быстрое движение облаков, но ветер почему-то не ощущался. И это было странно здесь, на вершине горы. Птиц тоже не было ни видно, ни слышно. Хотя… если прислушаться… где-то вдали раздавались трели дринь-дринь-пик-пик…



Читать дальше...
Total votes 16: ↑12 and ↓4+8
Comments7

Электровелосипед — доступность и эффективность на личном примере

Reading time6 min
Views50K
В последнее время на Гиктаймсе проскакивают статьи про электровелосипеды, анонсированные крупными компаниями или выложенные на кикстартере и аналогах. Но всех их объединяет одно — низкая эффективность и многократно завышенная цена. Например, Xiaomi Mi Qicycle Folding Electric Bicycle проезжает до 45 км в идеальных условиях при скорости 20 км/ч. Зачем при такой скорости вообще мотор? Но при увеличении скорости каждые 10км/ч увеличивают расход, грубо говоря, в два раза. Да ещё надо учесть то, что чем больше мощности отбираем у аккумулятора, тем меньше ёмкости он отдаст. Делаем выводы про дальность.

Про то, как я дошёл до электротранспорта и какой ценой — под катом.
Читать дальше →
Total votes 51: ↑49 and ↓2+47
Comments166

Стратегии по ускорению кода на R, часть 1

Reading time3 min
Views7.2K
Цикл for в R может быть очень медленным, если он применяется в чистом виде, без оптимизации, особенно когда приходится иметь дело с большими наборами данных. Есть ряд способов сделать ваш код быстрее, и вы, вероятно, будете удивлены, узнав насколько.

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

Давайте попробуем ускорить код с циклом for и условным оператором (if-else) для создания колонки, которая добавляется к набору данных (data frame, df). Код ниже создает этот начальный набор данных.
# Создание набора данных
col1 <- runif (12^5, 0, 2)
col2 <- rnorm (12^5, 0, 2)
col3 <- rpois (12^5, 3)
col4 <- rchisq (12^5, 2)
df <- data.frame (col1, col2, col3, col4)

В этой части: векторизация, только истинные условия, ifelse.
В следующей части: which, apply, побайтовая компиляция, Rcpp, data.table.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments3

Information

Rating
Does not participate
Registered
Activity