Search
Write a publication
Pull to refresh
4
0

Пользователь

Send message

Управление зависимостями в Python: сравнение подходов

Reading time12 min
Views28K
image

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

К сожалению, в Python-сообществе нет универсального понятия «хорошей архитектуры», есть только понятие «питоничности», поэтому архитектуру приходится придумывать самим. Под катом — лонгрид с размышлениями об архитектуре и в первую очередь — об управлении зависимостями применимо к Python.
Читать дальше →

Как создать простой микросервис на Golang и gRPC и выполнить его контейнеризацию с помощью Docker

Reading time4 min
Views52K
Привет, Хабр! представляю вашему вниманию перевод статьи «Go, gRPC and Docker» автора Mat Evans.

Существует множество статей о совместном использовании Go и Docker. Создавать контейнеры, способные взаимодействовать с клиентами и между собой, очень легко. Далее следует небольшой пример того, как это делается на базовом уровне.
Читать дальше →

О декораторах в Python

Reading time3 min
Views17K

Всем привет!


Перевод статьи подготовлен для студентов курса «Web-разработчик на Python». Интересно развиваться в данном направлении? Запишитесь на День Открытых Дверей курса и пообщайтесь вживую с преподавателем: онлайн-трансляция 23 июля в 20:00 по мск.!



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

Читать дальше →

Топ-10 самых распространенных ошибок, которые мне встречались в Go-проектах

Reading time10 min
Views8.6K
Этот пост — мой топ самых распространенных ошибок, которые встречались мне в Go-проектах. Порядок не имеет значения.

image

Неизвестное значение Enum


Давайте взглянем на простой пример:

type Status uint32

const (
	StatusOpen Status = iota
	StatusClosed
	StatusUnknown
)

Здесь мы создаем энумератор с помощью iota, что приведет к такому состоянию:

StatusOpen = 0
StatusClosed = 1
StatusUnknown = 2
Читать дальше →

Настройка PHP-FPM: используем pm static для максимальной производительности

Reading time5 min
Views29K


Неотредактированная версия статьи была изначально опубликована на haydenjames.io и публикуется здесь с разрешения ее автора.


Я в двух словах расскажу, как лучше всего настроить PHP-FPM, чтобы увеличить пропускную способность, снизить задержку и более стабильно использовать процессорные ресурсы и память. По умолчанию строка PM (process manager, менеджер процессов) в PHP-FPM имеет значение dynamic, а если у вас не хватает памяти, то лучше установить ondemand. Давайте сравним 2 варианта управления на основе документации php.net и посмотрим, чем от них отличается мой любимый static pm для большого объема трафика:


pm = dynamic — количество дочерних процессов настраивается динамически на основе следующих директив: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = ondemand — процессы создаются по требованию (в отличие от динамического создания, когда pm.start_servers запускаются при запуске сервиса).
pm = static — количество дочерних процессов фиксировано и указывается параметром pm.max_children.

Читать дальше →

Раздаем файлы с Google Drive посредством nginx

Reading time4 min
Views13K

Предыстория


Так уж случилось, что нужно мне было где-то хранить более 1.5тб данных, да еще и обеспечить возможность скачивания их обычными пользователями по прямой ссылке. Поскольку традиционно такие объемы памяти идут уже на VDS, стоимость аренды которых не слишком вкладывается в бюджет проекта из категории «от нечего делать», а из исходных данных у меня был VPS 400GB SSD, куда при всем желании 1.5тб картинок без lossless сжатия поместить не удастся.

Читать дальше →

Создание минимального Docker-контейнера для Go-приложений

Reading time4 min
Views52K
Привет, Хабр! Предлагаю вашему вниманию перевод статьи основателя сервиса Meetspaceapp Nick Gauthier «Building Minimal Docker Containers for Go Applications».

Время чтения: 6 минут

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

Часть 1: Наше «приложение»


Для тестирования нам потребуется какое-нибудь маленькое приложение. Давайте будем фетчить google.com и выводить размер HTML.

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
)

func main() {
    resp, err := http.Get("https://google.com")
    check(err)
    body, err := ioutil.ReadAll(resp.Body)
    check(err)
    fmt.Println(len(body))
}

func check(err error) {
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}

Если мы запустимся, то получим только какое-то число. У меня вышло около 17К. Я целенаправленно решил использовать SSL, но причину объясню позднее.
Читать дальше →

Собаку съел на нейронных сетях

Reading time3 min
Views11K
Вот видишь ты на улице пёсика. Ты всегда видишь на улице пёсиков. Вот кто-то вообще их не замечает и не имеет хлопот, вот нет этих душевных терзаний, и вообще можно считать, что им на улице норм. Но ты же! И заметил, и глаза у тебя на мокром месте, такой думаешь: «пёсик. уаа, такой миленький, взял бы но не могу. Но вот прям точно, но никак». И пошёл такой дальше. Но пофотал его, погладил.


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

Как потратить своё время и ресурс SSD впустую? Легко и просто

Reading time14 min
Views131K
«Тестировать нельзя диагностировать» – куда бы вы поставили запятую в данном предложении? Надеемся, что после прочтения данного материала вы без проблем можете чётко дать ответ на этот вопрос. Многие пользователи когда-либо сталкивались с потерей данных по той или иной причине, будь то программная или аппаратная проблема самого накопителя или же нестандартное физическое воздействие на него, если вы понимаете, о чём мы. Но именно о физических повреждениях сегодня речь и не пойдёт. Поговорим мы как раз о том, что от наших рук не зависит. Стоит ли тестировать SSD каждый день/неделю/месяц или это пустая трата его ресурса? А чем их вообще тестировать? Получая определённые результаты, вы правильно их понимаете? И как можно просто и быстро убедиться, что диск в порядке или ваши данные под угрозой?


Читать дальше →

Вижу, значит существую: обзор Deep Learning в Computer Vision (часть 1)

Reading time17 min
Views31K
Компьютерное зрение. Сейчас о нём много говорят, оно много где применяется и внедряется. И как-то давненько на Хабре не выходило обзорных статей по CV, с примерами архитектур и современными задачами. А ведь их очень много, и они правда крутые! Если вам интересно, что сейчас происходит в области Computer Vision не только с точки зрения исследований и статей, но и с точки зрения прикладных задач, то милости прошу под кат. Также статья может стать неплохим введением для тех, кто давно хотел начать разбираться во всём этом, но что-то мешало ;)

image
Читать дальше →

Вижу, значит существую: обзор Deep Learning в Computer Vision (часть 2)

Reading time18 min
Views43K
Продолжаем постигать современную магию (компьютерное зрение). Часть 2 не значит, что нужно сначала читать часть 1. Часть 2 значит, что теперь всё серьёзно — мы хотим понять всю мощь нейросетей в зрении. Детектирование, трекинг, сегментация, оценка позы, распознавание действий… Самые модные и крутые архитектуры, сотни слоёв и десятки гениальных идей уже ждут вас под катом!


Читать дальше →

Объяснение задачи на Python с собеседования

Reading time2 min
Views30K
Салют, хабровчане! В преддверии запуска нового потока по курсу «Web-разработчик на Python» хотим поделиться новым полезным переводом. Поехали!



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

def f(x, l=[]):
    for i in range(x):
        l.append(i * i)
    return l
>>> f(2)
>>> f(3, [0, 1, 2])
>>> f(3)


Вопрос: Что выведет этот код?
Читать дальше →

5 распространенных ошибок начинающих программистов на Python

Reading time4 min
Views52K
В первые дни работы программистом на Python все мы сталкиваемся с разными типами багов в нашем коде, которые после нескольких болезненных часов в StackOverflow оказываются не багом, а фичей Python'а. Ниже приведены 5 самых распространенных ошибок, которые делают большинство начинающих программистов на Python. Давайте немного о них узнаем, чтобы сэкономить несколько часов, задавая вопросы на страницах и в группах в Facebook.
Читать дальше →

Redis Stream — надёжность и масштабируемость ваших систем сообщений

Reading time16 min
Views42K
image

Redis Stream — новый абстрактный тип данных, представленный в Redis с выходом версии 5.0
Концептуально Redis Stream — это List, в который вы можете добавлять записи. Каждая запись имеет уникальный идентификатор. По умолчанию идентификатор генерируется автоматически и включает в себя временную метку. Поэтому вы можете запрашивать диапазоны записей по времени или получать новые данные по мере их поступления в поток, как Unix команда «tail -f» читает лог-файл и замирает в ожидании новых данных. Обратите внимание, что поток могут слушать одновременно несколько клиентов, как многие «tail -f» процессы могут одновременно читать файл, не конфликтуя друг с другом.

Чтобы понять все преимущества нового типа данных, давайте бегло вспомним давно существующие структуры Redis, которые частично повторяют функциональность Redis Stream.
Читать дальше →

Детальный разбор интервью для Junior Python Developer

Reading time1 min
Views9.1K

Последние два месяца я full-time пишу учебник по языку программирования Python, пока рабочее название "Магия Python для начинающих". Скорее всего будет видео-курс и книга. За 20 лет работы накопилось много опыта и хочется сделать мир чуточку более простым для тех кто только делает свои первые шаги в программировании.


Помимо синтаксиса и описания языка часть содержания посвящена тому как вообще устроена работа программиста. А поскольку мне очень важно сделать содержание которое бы действительно отвечало потребностям людей, то я начал искать контакт и общаться с теми кто только начал карьеру. И оказалось, что наиболее частый вопрос звучит так: я уже что-то выучил, прошел курсы или разобрался с языком самостоятельно и хочу устроиться на работу чтобы получить первый опыт, но без опыта меня не берут.

Подборка @pythonetc, июнь 2019

Reading time3 min
Views5.8K

Это одиннадцатая подборка советов про Python и программирование из моего авторского канала @pythonetc.

Предыдущие подборки


Символ \ в обычной строке имеет особое значение. \t — это символ табуляции, \r — разрыв строки, и так далее.

Чтобы отключить такое поведение, вы можете использовать raw-строки. Тогда r'\t' превратится всего лишь в обратный слэш и t.

Очевидно, что нельзя использовать ' внутри r'...'. И хотя это ограничение можно обойти с помощью \, однако в строке \ всё равно останется:
Читать дальше →

Дайджест статей машинного обучения и искусственного интеллекта

Reading time6 min
Views12K
Хабр, привет.

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

1. Проекты искусственного интеллекта, с которыми можно поиграться уже сегодня. Что вы знаете про искусственный интеллект и машинное обучение? Современный тренд или потенциально мощная сила, способная убивать людей? Эти модные понятия всё чаще на слуху, но далеко не все знают, что же это на самом деле. Пришло время изучить эти технологии с помощью простого и интересного подхода — попробовать искусственный интеллект и нейросети самостоятельно на практике.

image

Вирус Lurk взламывал банки, пока его писали обычные удаленщики по найму

Reading time5 min
Views19K

Отрывок из книги «Вторжение. Краткая история русских хакеров»


image

В мае этого года в издательстве Individuum вышла книга журналиста Даниила Туровского «Вторжение. Краткая история русских хакеров». В ней собраны истории с темной стороны российской IT-индустрии — о ребятах, которые полюбив компьютеры, научились не просто программировать, а грабить людей. Книга развивается, как и самое явление — от подростковых хулиганств и форумных тусовок до силовых операций и международных скандалов.

Материалы Даниил собирал несколько лет, некоторые истории выходили на «Медузе», за пересказы статей Даниила Эндрю Крамер из New York Times в 2017 году получил Пулитцеровскую премию.

Но хакерство — как и любая преступность — слишком закрытая тема. Настоящие истории передаются только из уст в уста между своими. И книга оставляет впечатление безумно разжигающей любопытство неполноты — как будто о каждом ее герое можно сложить трехтомник того «как было на самом деле».

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

Data Science Digest (July 2019)

Reading time3 min
Views5.2K


Приветствую всех!

Лето в полном разгаре, и если вы планируете быть в Одессе 5-го июля, приглашаю вас на ODS митап и дата-бар, который организовывает одесская ODS.ai команда. Напоминаю, что у дайджеста есть свой Telegram-канал и страницы в соцсетях (Facebook, Twitter, LinkedIn, Medium), где я ежедневно публикую ссылки на полезные материалы. Присоединяйтесь!

А пока предлагаю свежую подборку материалов под катом.
Читать дальше →

Как я делал социальную сеть в 2019

Reading time9 min
Views69K

В этой статье я расскажу, как делал свой проект социальной сети для сферы искусства havidea.ru от идеи до релиза. Расскажу о технической части, о мотивации и самоорганизации, какими инструментами пользуюсь в процессе разработки, о проблемах в работе со сферой искусства, с которыми я столкнулся почти сразу после запуска. Проект пережил реинкарнацию, т.е. был первый вариант, который я забросил и финальный, второй, который ушел в релиз.
Читать дальше →

Information

Rating
8,433-rd
Registered
Activity