Pull to refresh
18
0

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

Send message

Python. Внутреннее устройство множеств set и словарей dict. Часть 2 из 2

Level of difficultyMedium
Reading time7 min
Views4.8K

Продолжение Части 1

4. Хэш-таблицы в dict
4.1. Как компактный dict экономит место и сохраняет порядок
4.2 Алгоритм добавления элементов в компактный dict
4.3. dict с общим доступом к ключам
4.4. Практические выводы по тому как работает dict

Читать далее
Total votes 10: ↑9 and ↓1+11
Comments2

Фокусы с опторазвязкой

Level of difficultyMedium
Reading time9 min
Views25K

Нюансы оптронной развязки, борьба с её недостатками и интересный на мой взгляд костыль: как разогнать скорость копеечной опторазвязки и наполучать других бонусов. Я не силён в рекламе, поэтому на месте КДПВ будет сразу тема статьи.

Читать далее
Total votes 125: ↑124 and ↓1+160
Comments63

Древние технологии охлаждения в современном мире

Level of difficultyEasy
Reading time10 min
Views14K

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

Да… Именно ради этого 17 июля 1902 года инженер Уиллис Карриер изобрел первый кондиционер!

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

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

Спрос на энергию во всем мире растет быстрыми темпами. По оценкам, с 2018 по 2050 год он вырастет до 50%. На строительный сектор приходится значительная часть общего потребления энергии (40%) и почти 30% соответствующих выбросов парниковых газов (ПГ). Как правило, традиционные системы отопления, вентиляции и кондиционирования воздуха (HVAC) потребляют почти две трети общего энергопотребления здания. Следовательно, многие исследователи стремятся внедрить стратегии естественной вентиляции и пассивного охлаждения для снижения энергопотребления при одновременном обеспечении теплового комфорта, и улучшения качества воздуха в помещении (IAQ). Люди проводят 80–90% своего времени в закрытых помещениях во время работы и проживания; и поэтому неспособность обеспечить хороший уровень качества воздуха в помещении может повлиять на их здоровье, благополучие и производительность.

Читать далее
Total votes 13: ↑11 and ↓2+14
Comments17

Воспоминания о сотовой связи. Часть первая

Reading time10 min
Views12K

В эти выходные на меня навалилась ностальгия и захотелось вспомнить самое начало своей карьеры. Расскажу о взрывном росте сотовой связи в начале 2000х и о том, что случилось к 2013му. Спойлер — на улицу выставили половину персонала.

Повествование я буду вести из двух времен:

Вернем себе свой 2007!)
Total votes 59: ↑58 and ↓1+73
Comments51

Глубокое погружение в хуки pytest: как и зачем их использовать

Level of difficultyMedium
Reading time3 min
Views2K

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

Читать далее
Total votes 6: ↑4 and ↓2+4
Comments0

Бюджетный умный климат: как я заставил дешевый кондиционер поумнеть и слушаться Алису

Level of difficultyMedium
Reading time3 min
Views32K

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

Я установил в свою 3-комнатную квартиру три кондиционера DEXP AC‑CH9ONF. Это самый простой и бюджетный вариант, я не ожидал от него особых возможностей.

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

Управление по IR командам сразу забраковал, так как это неудобно. Почему?

Читать далее
Total votes 30: ↑30 and ↓0+37
Comments65

Каждая капля на счету или как я счетчик умным делал

Level of difficultyMedium
Reading time9 min
Views15K


Привет, Хабр!

В предыдущей статье я уже описывал бюджетное решение для интеграции электросчетчика в системы умного дома, где всё было реализовано на базе своего DIY устройства. Но не только из электросчетчика состоит «домашний» учет энергоресурсов, поэтому в данной статье хочу поделиться личным опытом разработки аппаратного устройства для интеграции бытовых счетчиков воды в системы домашней автоматизации. Присоединяйтесь, будет интересно!
Читать дальше →
Total votes 36: ↑36 and ↓0+46
Comments58

Воспоминания о сотовой связи. Часть вторая

Reading time11 min
Views6.2K

Начало тут

Что они себе позволяют???

2008 год. Рост замедлился, но не остановился. Просто все стало каким‑то спокойным и контролируемым. Больше нет задачи ворваться на рынок и успеть, пока другие не успели. Есть развитие, оно улучшает покрытие. Есть планы на квартал/год.

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

Идут слияния и поглощения. Все явнее оформляется большая тройка. Пока тройкой, Теле2 полноценно примкнет к ним позже.

Но не все так просто...
Total votes 32: ↑32 and ↓0+42
Comments22

VPN vs Proxy vs XRay: что лучше?

Level of difficultyEasy
Reading time9 min
Views12K

Всем привет, это TechTalk! 

Мы пишем и говорим про IT, цифровые права и свободу интернета в Телеграм и на YouTube, а сегодня решили зайти с другим форматом, поэтому это первый хабрапост.

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

Читать далее
Total votes 16: ↑16 and ↓0+20
Comments5

Домашний сервер на базе Proxmox

Level of difficultyEasy
Reading time9 min
Views40K

Привет! Меня зовут Александр Щербаков. Я DevOps команд страхования в Банки.ру. На своём карьерном пути я успел поработать эникейщиком, системным администратором и, наконец, DevOps‑инженером с несколькими командами разработки. Как и любой инженер, я стремлюсь постоянно совершенствоваться: получать новые знания, изучать как устоявшиеся, так и только появившиеся технологии.

И здесь сразу появляется главная проблема — для развития DevOps нужна среда, где можно запускать ПО для исследования. Разработчикам проще: открыл документацию, скачал IDE, начал пробовать и изучать новую технологию. А вот DevOps‑инженеру одной только IDE будет мало, так как часть его работы как минимум завязана на Linux серверах. Поэтому важно не просто знать, как использовать готовые решения, но и понимать, как они функционируют на уровне инфраструктуры.

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

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

Читать далее
Total votes 54: ↑52 and ↓2+58
Comments139

UB или не UB – вот в чём вопрос: как gcc и clang обрабатывают статически известное неопределённое поведение

Reading time7 min
Views3.3K

Недавно у нас в команде зашла дискуссия о неопределённом поведении (UB) в C. Напомню для тех, кто не знает: если мы пишем такой код, эффект от выполнения которого (и события в процессе его выполнения) строго не определён в спецификации языка, то возникает неопределённое поведение. Таким образом, встретив такой код, компилятор может действовать по собственному усмотрению, и нет никаких гарантий, что выполнение этого кода пойдёт по предсказуемому пути. Следовательно, нужно избегать неопределённого поведения любой ценой, поскольку мало того, что оно может приводить к глюкам программы, но и часто становится источником уязвимостей и угрозой безопасности. Примеры кода, в котором проявляется неопределённое поведение: выход за границы массива при его индексировании, целочисленное переполнение, деление на ноль, разыменование указателя на null [1].

Компиляторы нередко пользуются неопределённой семантикой языка, чтобы делать те или иные допущения о программе. Например, если написать что-то вроде int x = y/z, компилятор может предположить, что z не может быть равно нулю, так как деление на ноль приводит к неопределённому поведению, а программист явно не собирался писать такой код. На основе этой информации он может попытаться далее оптимизировать программу так:

Читать далее
Total votes 10: ↑9 and ↓1+16
Comments13

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

Reading time3 min
Views6.1K

GDDR7 — новое поколение видеопамяти для графических адаптеров, например, для Nvidia Blackwell RTX 50. В ближайшие несколько лет именно эта технология будет применяться в современных продуктах разных производителей, постепенно заменяя собой GDDR6 и GDDR6X. У стандарта немало интересных возможностей, но ждать быстрого появления новых видеокарт с такой памятью не стоит. Подробности — под катом.

Читать далее
Total votes 6: ↑5 and ↓1+10
Comments4

Компиляторные оптимизации сложны, так как компиляторы забывчивы

Level of difficultyHard
Reading time10 min
Views6.6K

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

Читать далее
Total votes 36: ↑28 and ↓8+32
Comments6

Кадры в РФ — V. Тримодальное распределение зарплат часть 2

Level of difficultyHard
Reading time14 min
Views46K

Для лиги лени: ежемесячное нытье про зарплаты и наличие кадров. Поток сознания от нейросети, мысли вслух, рукопись найденная в солидоле ванне. Рукопись написана на архаичном протоязыке, и потому некоторые термины и идиоматические выражения в тексте остались непереведенными. Это, как правило, те священные, исполненные тайной магической силы заклинания, которые до сих пор, без понимания утерянного смысла, передаются из уст в в уста.. Читать не надо, сразу ставь минус!

Читать далее
Total votes 173: ↑127 and ↓46+108
Comments145

Python: Как написать систему модов для игры / плагинов для программы

Level of difficultyMedium
Reading time6 min
Views5.5K

Итак, всех приветствую.

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

А начнем мы с того, что установим importlib в ваше виртуальное окружение.

Читать далее
Total votes 6: ↑4 and ↓2+4
Comments13

Self Hosted для домашнего сервера

Level of difficultyMedium
Reading time10 min
Views24K

Есть отличный термин self hosted, который очень популярен в англоязычном интернете.
Но он плохо переводится, почти как open source - хотя википедия и пытается дать ужасно звучащий термин "самохостинг"...

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

В общем, self hosted - это когда вы решаете, что какие-то вещи лучше хранить у себя, а не отдавать злым корпорациям - фотографии, почту, умный дом, книги, и так далее.
И собираете под это какой-то сервер, полноценным хозяином которого являетесь только вы.

Эту статью я пишу во многом для нескольких друзей, которые решили приобщиться к этому тренду, и здесь будет обзор моего личного self hosted - про всякие разные штуки, которые показались полезны лично мне, и плотно заняли своё место на моём домашнем сервере.

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

Читать далее
Total votes 65: ↑65 and ↓0+68
Comments124

Делаем вентилятор умным или как улучшить микроклимат в ванной комнате с помощью домашней автоматизации

Level of difficultyMedium
Reading time6 min
Views31K


Привет, Хабр!

Наверное, многие из вас понимают, что одним из ключевых моментов при эксплуатации ванной комнаты является поддержание оптимального микроклимата, поскольку избыточная влажность создает идеальную среду для развития плесени и грибка на любых пористых поверхностях, будь-то штукатурка или межшовное пространство кафеля. Для нормализации уровня влажности, в первую очередь необходимо обеспечить нормальную вентиляцию, как правило, данная задача решается установкой вытяжного вентилятора. Вместе с тем, для обеспечения эффективности, немаловажно автоматизировать процесс работы вытяжной вентиляции. В данной статье я хочу поделиться своим опытом реализации «домашней» автоматизации для решения этого вопроса. Впереди DIY и много картинок, присоединяйтесь!
Читать дальше →
Total votes 50: ↑49 and ↓1+59
Comments85

Жизнь – боль: как одновременно поддерживать в Rust синхронный и асинхронный код

Reading time13 min
Views4.1K

Присаживайтесь поудобнее и послушайте стариковскую байку: что случилось, когда я попросил у Rust слишком многого.

Допустим, вы хотите написать на Rust новую библиотеку. Всё, что для этого требуется — обернуть её в публичный API, через который будет предоставляться доступ к какому-то другому продукту, например, в Spotify API или, может быть, в API базы данных, скажем, ArangoDB. Не так это и тяжело: в конце концов, вы не изобретаете ничего нового, вам не приходится иметь дело со сложными алгоритмами. Поэтому вы полагаете, что задача решается относительно прямолинейно.  

Вы решаете реализовать библиотеку с применением async. Работа, которая будет выполняться с помощью вашей библиотеки, заключается в основном в выполнении HTTP-запросов, обслуживающих ввод/вывод, поэтому применять здесь async действительно целесообразно (кстати, это одна из тех фишек, благодаря которым сегодня так востребован Rust). Вы садитесь писать код — и вот, через несколько дней у вас готова версия v0.1.0. «Приятно», — думаете вы, как только cargo publish заканчивается успешно и загружает вашу работу на crates.io.

Проходит несколько дней, и вам прилетает новое уведомление с GitHub. Оказывается, кто-то открыл тему:

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

Rust и асинхронные функции: как улучшить структуру кода и повысить производительность с помощью абстракций

Reading time26 min
Views2.9K

В начале 2010-х годов в программировании появился новый подход к реализации параллелизма с использованием абстракций future и promise, а также синтаксического приёма async/await. Эти технологии облегчили работу с асинхронным кодом, но вызвали ожесточённые споры среди разработчиков. Автор статьи, системный программист Saoirse Shipwreckt*, рассматривает две противоположные точки зрения на future от их апологета Мариуса Эриксена и критика Боба Нистрома. 

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

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity