Pull to refresh
0
Roma @MizaR9Iread⁠-⁠only

User

Send message

Mesh VS WiFi: что выбрать для беспроводной связи?

Reading time9 min
Views72K


Когда я еще жил в многоквартирном доме, я сталкивался с проблемой низкой скорости в дальнем от роутера помещении. Ведь у многих роутер стоит в прихожей, куда провайдер дотянул оптику или UTP, и там же был поставлен типовой девайс. Еще хорошо, когда собственник меняет маршрутизатор на свой собственный, а типовые устройства от провайдера – это, как правило, самые бюджетные или простые модели. Ждать от них высокой производительности не стоит — работает и ладно. Но я установил роутер с гигабитными портами, с радиомодулем, поддерживающим работу на частотах 2,4ГГЦ и 5 ГГц. А скорость связи с Интернетом в пределах квартиры и особенно в дальних комнатах была совсем удручающей. Отчасти дело в зашумленном диапазоне 2,4 ГГц, отчасти в угасании и многократном отражении сигнала при прохождении через железобетонные конструкции. И тогда я решил расширить сеть дополнительными устройствами. Возник вопрос: Wi-Fi сеть или Mesh-система? Я решил разобраться, провести тесты и поделиться опытом. Добро пожаловать.
Читать дальше →

All-In-One: Proxmox + OpenMediaVault или ещё одна идея для домашнего NAS

Reading time11 min
Views95K


Астрологи объявили месяц статей о домашних NAS на Хабре, так что поделюсь и своей историей успеха...


Не так давно я попробовал новый FreeNAS Coral. Понравилось мне в нем если не все, то очень многое: это и новый гипервизор bhyve, и повсеместное использование 9P для проброса файловой системы на гостя, а так же идея с docker и многое другое.


Кроме того я ещё больше влюбился в ZFS со всеми её плюшками, такими как дедупликация и сжатие на лету.


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


В статье так же будет немного рассказано про Docker и автоматический прокси с автоматическим получением сертификатов Letsencrypt.

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

О некоторых аспектах ремонта платы электроники жесткого диска

Reading time4 min
Views175K
Здравствуйте, уважаемые хабравчане! Это первая публикация в недавно открытом корпоративном блоге компании “Хардмастер”, специализирующейся на профессиональном восстановлении данных с накопителей. И с вами я, ведущий инженер Артем Макаров aka Robin. В этом блоге я и мои коллеги в меру сил будем стараться выкладывать материалы, которые смогут реально помочь всем желающим самостоятельно справляться с задачами по ремонту вышедших из строя девайсов и восстановлению информации с них.

Одной из распространенных причин выхода из строя жестких дисков являются проблемы с платой электроники.

image
(в простонародье это называют контроллером HDD, что конечно же некорректно)

И мы начинаем цикл публикаций по обзору поломок плат HDD и методов их устранения. Подписывайтесь и следите за обновлениями!
Читать дальше →

От ноутбука до майнкрафт-хостинга или история длиной в 7 лет

Reading time7 min
Views17K

Эта история не является техническим текстом про куб, докеры или что-либо довольно популярное и интересное. Тут я делюсь своим хобби, которое выросло с одного старого ноутбука до 32-юнитовой стойки в отдельной комнате в квартире с резервацией. Как и каким образом я до этого дошел, и причем тут minecraft вообще?

Читать далее

Атрибуты и протокол дескриптора в Python

Reading time6 min
Views17K

Рассмотрим такой код:


class Foo:
    def __init__(self):
        self.bar = 'hello!'

foo = Foo()
print(foo.bar)

Сегодня мы разберём ответ на вопрос: «Что именно происходит, когда мы пишем foo.bar




Вы, возможно, уже знаете, что у большинства объектов есть внутренний словарь __dict__, содержащий все их аттрибуты. И что особенно радует, как легко можно изучать такие низкоуровневые детали в Питоне:


>>> foo = Foo()
>>> foo.__dict__
{'bar': 'hello!'}

Давайте начнём с попытки сформулировать такую (неполную) гипотезу:


foo.bar эквивалентно foo.__dict__['bar'] .


Пока звучит похоже на правду:


>>> foo = Foo()
>>> foo.__dict__['bar']
'hello!'

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

Как генерируются UUID

Reading time7 min
Views133K

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

Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
Читать дальше →

Заметки об объектной системе языка Python ч.3

Reading time12 min
Views33K
Третья часть заметок об объектной системе python'a (первая и вторая части). В статье рассказывается о том, почему c.__call__() не то же самое, что и c(), как реализовать singleton с помощью метаклассов, что такое name mangling и как оно работает.

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

Заметки об объектной системе языка Python ч.2

Reading time10 min
Views90K
Вторая часть заметок об объектной системе python'a (первая часть тут). В этой статье рассказывается, что такое классы, метаклассы, type, object и как происходит поиск атрибутов в классе.

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

Заметки об объектной системе языка Python ч.1

Reading time8 min
Views66K
Несколько заметок об объектной системе python'a. Рассчитаны на тех, кто уже умеет программировать на python. Речь идет только о новых классах (new-style classes) в python 2.3 и выше. В этой статье рассказывается, что такое объекты и как происходит поиск атрибутов.

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

Регулярные выражения (regexp) — основы

Reading time21 min
Views1.1M

Регулярные выражения (их еще называют regexp, или regex) — это механизм для поиска и замены текста. В строке, файле, нескольких файлах... Их используют разработчики в коде приложения, тестировщики в автотестах, да просто при работе в командной строке!

Чем это лучше простого поиска? Тем, что позволяет задать шаблон.

Например, на вход приходит дата рождения в формате ДД.ММ.ГГГГГ. Вам надо передать ее дальше, но уже в формате ГГГГ-ММ-ДД. Как это сделать с помощью простого поиска? Вы же не знаете заранее, какая именно дата будет.

Читать далее

Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения

Reading time25 min
Views1.6M

Регулярные выражения в Python от простого к сложному




Решил я давеча моим школьникам дать задачек на регулярные выражения для изучения. А к задачкам нужна какая-нибудь теория. И стал я искать хорошие тексты на русском. Пяток сносных нашёл, но всё не то. Что-то смято, что-то упущено. У этих текстов был не только фатальный недостаток. Мало картинок, мало примеров. И почти нет разумных задач. Ну неужели поиск IP-адреса — это самая частая задача для регулярных выражений? Вот и я думаю, что нет.
Про разницу (?:...) / (...) фиг найдёшь, а без этого знания в некоторых случаях можно только страдать.

Плюс в питоне есть немало регулярных плюшек. Например, re.split может добавлять тот кусок текста, по которому был разрез, в список частей. А в re.sub можно вместо шаблона для замены передать функцию. Это — реальные вещи, которые прямо очень нужны, но никто про это не пишет.
Так и родился этот достаточно многобуквенный материал с подробностями, тонкостями, картинками и задачами.

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

10 полезных советов для начинающих изучать Django

Reading time5 min
Views22K


1. Используйте относительные пути в конфигурации


Не задавайте абсолютный путь в settings.py, это будет полезно, если вы будете в дальнейшем запускать проект из разных расположений, например при развертывании на другом веб-сервере, у которого пути будут другими. Используйте следующий код в settings.py если ваши шаблоны и статические файлы расположены внутри каталога проекта Django:

# settings.py
import os
PROJECT_DIR = os.path.dirname(__file__)
...
STATIC_DOC_ROOT = os.path.join(PROJECT_DIR, "static")
...
TEMPLATE_DIRS = (
    os.path.join(PROJECT_DIR, "templates"),
)
Читать дальше →

Что бы я хотел знать когда начинал изучать Django? — очень общий взгляд

Reading time7 min
Views33K
Здесь на Хабре много различных инструкций по использованию Django. Эти инструкции часто включают много кода и представляют последовательность шагов, которые нужно сделать, чтобы создать проект.

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

В этом посте я бы хотел посмотреть на Django с очень «философского вида» — минимум кода, максимум общих фактов. Думаю, что такой взгляд поможет тем, кто хочет начать изучать Django но теряется на старте.

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

Как эффективно управлять парком серверов? Оптимизируем работу с помощью API

Reading time9 min
Views3.9K

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

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

JPEG от мира 3D. Что такое glTF?

Reading time3 min
Views36K

Определение и краткая история


GLTF (GL Transmission Format) — это формат файла для хранения 3Д сцен и моделей, который является крайне простым в понимании (структура записана в стандарте JSON), расширяемым и легко взаимодействующим с современными веб-технологиями. Данный формат хорошо сжимает трёхмерные сцены и минимизирует обработку во во время выполнения приложений, использующих WebGL и другие API. glTF сейчас активно продвигается Khronos Group как JPEG от мира 3D.


Предполагается, что glTF будет эффективным, совместимым форматом доставки активов, который сжимает размер трехмерных сцен и минимизирует обработку во время выполнения приложениями, использующими WebGL и другие API. glTF также определяет общий формат публикации для инструментов и сервисов 3D-контента.

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

Поиграть в игру = протестировать игру. Почему это утверждение неверно?

Reading time12 min
Views13K

Салют Хабровчане. Сегодня я хочу затронуть чуть глубже топик игрового тестирования, ввести в курс дела начинающих в этом деле тестировщиков, развеять стереотипы вида "поиграй сам, дай другу поиграть, вот и всё тестирование. А что ещё нужно, другу же нравится!", а также расскажу базово о видах тестирования, багах, подходах и инструментах, помогающих проверить и обеспечить качество вашей игры!

Конкретно в этой статье мы поговорим с вами по подходах к тестированию, что такое playtesting, что тестируют в рамках level design и network testing и о многом другом!

Продолжать поглощать знания!

Оценка вредоносности файлов с помощью песочниц: Часть 1. Онлайн-сервисы

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

Итак, ситуация: у нас есть странный файл с подозрением на вредоносность, при этом существующий мультисканеры типа VirusTotal не дают никакой информации. Что же делать?
Читать дальше →

Асинхронность в программировании

Reading time26 min
Views100K

В области разработки высоконагруженных многопоточных или распределенных приложений часто возникают дискуссии об асинхронном программировании. Сегодня мы подробно погрузимся в асинхронность и изучим, что это такое, когда она возникает, как влияет на код и язык программирования, которым мы пользуемся. Разберемся, зачем нужны Futures и Promises и затронем корутины и операционные системы. Это сделает компромиссы, возникающие во время разработки ПО, более явными.


В основе материала — расшифровка доклада Ивана Пузыревского, преподавателя школы анализа данных Яндекса.


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

Асинхронный python без головной боли (часть 1)

Reading time14 min
Views352K

Почему так сложно понять asyncio?

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

Но будь я автором самого толстого в мире учебника по python, я бы рассказывал читателям про асинхронное программирование уже с первых страниц. Вот только написали "Hello, world!" и тут же приступили к созданию "Hello, asynchronous world!". А уже потом циклы, условия и все такое.

Съешь красную таблетку

О том, как в Instagram отключили сборщик мусора Python и начали жить

Reading time8 min
Views47K
Отключив сборщик мусора Python (GC), который освобождает память, отслеживая и удаляя неиспользуемые данные, Instagram стал работать на 10% быстрее. Да-да, вы не ослышались! Отключив сборщик мусора, можно сократить объем потребляемой памяти и повысить эффективность работы кэша процессора. Хотите узнать, почему так происходит? Тогда пристегните ремни!

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Backend Developer, Web Designer
Intern
JavaScript
CSS
HTML
BEM
SASS
SCSS
Web development
Python