Pull to refresh
0
Шурик@AlexBrownread⁠-⁠only

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

Send message

9 навыков программирования на Python, которые отличают новичка от опытного

Reading time9 min
Reach and readers15K
Перевод статьи подготовлен в преддверии старта курса «Разработчик Python».




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

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

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

Обработка сетевых данных на лету

Reading time5 min
Reach and readers5.2K
Перевод статьи подготовлен в преддверии старта курса «Пентест. Практика тестирования на проникновение».





Аннотация


Разнообразные виды оценки безопасности, начиная от регулярного тестирования на проникновение и операций Red Team до взлома IoT/ICS-устройств и SCADA, подразумевают под собой работу с бинарными сетевыми протоколами, то есть, по сути, перехват и модификацию сетевых данных между клиентом и целью. Сниффинг сетевого траффика не является сложной задачей, поскольку у нас есть такие инструменты, как Wireshark, Tcpdump или Scapy, однако модификация представляется задачей более трудоемкой, поскольку нам нужно будет иметь своеобразный интерфейс для чтения данных сети, их фильтрации, изменения на лету и отправки обратно на целевой хост почти в режиме реального времени. Кроме того, было бы идеально, если бы такой инструмент мог автоматически работать с несколькими параллельными соединениями и имел возможность кастомизации с помощью скриптов.

Однажды я открыл для себя инструмент, который называется maproxy, документация быстро дала мне понять, что maproxy – как раз то, что мне нужно. Это довольно простой, универсальный и легко настраиваемый TCP-прокси. Я протестировал этот инструмент на нескольких достаточно сложных приложениях, включая ICS – устройства (которые генерируют много пакетов), чтобы узнать, может ли он работать с множеством параллельных соединений, и инструмент хорошо себя показал.

Эта статья познакомит вас с обработкой сетевых данных на лету с помощью maproxy.
Читать дальше →

Django: краткое руководство по интернационализации

Reading time5 min
Reach and readers35K
Перевод приложения на разные языки и его локализация — это нечто такое, чем приходится заниматься всем разработчикам. В материале, перевод которого мы сегодня публикуем, представлено краткое руководство по интернационализации Django-приложений.

Часть того, о чём тут пойдёт речь, применимо к локализации любых Python-проектов. Разобрав основы, мы поговорим об ускорении работ по интернационализации. В частности — о применении платформы Phrase.



Предполагается, что у читателя этого материала имеется работающее Django-приложение, и то, что у него установлен пакет gettext (установить его можно, например, командой pip install gettext). Если вы раньше не пользовались Django (популярным веб-фреймворком, основанным на Python), то вам, возможно, будет полезно сначала взглянуть на это официальное руководство, а потом вернуться к данной статье.
Читать дальше →

Автономная охранная система на Arduino + GSM

Reading time4 min
Reach and readers60K

Друзья, разрешите представить проектик GSM сигнализации на Arduino. В сети довольно много проектов по типу «Arduino + модем + датчики», однако я часто вижу в них некоторую незаконченность (в особенности, с программной точки зрения): отсутствие гибкости в настройках и конфигурировании. В представленном решении я попытался сделать устройство максимально готовое к «боевым» условиям, предусмотрев все, что может понадобится среднестатистическому пользователю (на мой взгляд).



TL; DR программно и аппаратно задуманное реализовано, тест в реальных условиях запущен, исходники и бинарники опубликованы, корпус не осилил.

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

Поиск идеального набора инструментов: анализ популярных шаблонов Python-проектов

Reading time7 min
Reach and readers21K
Материал, перевод которого мы сегодня публикуем, посвящён рассказу об инструментальных средствах, используемых при создании Python-приложений. Он рассчитан на тех программистов, которые уже вышли из разряда начинающих, но пока не добрались до категории опытных Python-разработчиков.



Тем, кому не терпится приступить к практике, автор предлагает использовать в существующих Python-проектах Flake8, pytest и Sphinx. Он, кроме того, рекомендует взглянуть на pre-commit, Black и Pylint. Тем, кто планирует начать новый проект, он советует обратить внимание на Poetry и Dependabot.
Читать дальше →

Импортозамещение и судостроение

Reading time6 min
Reach and readers28K
Пару лет назад поставили передо мной задачу спроектировать забортный трап для судна. На каждом большом судне их два: правый и левый.

Забортный трап на судне

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

Принцип работы трапа упрощённо можно описать так. При наматывании каната на барабан лебёдки 5, лестничный марш 1 подтягивается к консольной части трап-балки 4. Как только марш упирается в консоль, она начинает поворачиваться относительно своей шарнирной точки крепления, приводя в движение вал 6 и поворотно-откидную площадку 3. В результате этого марш трапа заваливается на ребро, т.е. в положение «по-походному». При достижении конечного вертикального положения, срабатывает конечный выключатель, который останавливает лебёдку.

Кинематическая схема забортного трапа

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

Белочка приходит к людям после разговора с электросчетчиком

Reading time28 min
Reach and readers33K
Этим летом на даче, в конце августа, добившись наконец нормального обмена устройства, которое будет описано ниже, с электросчетчиком, я сидел на крылечке и слушал разговор двух белок, одна сидела на большой туе, а вторая – на яблоне. Тут позвонил мой друг, только что вернувшийся из автопохода на Белое море. На его вопрос «как дела?» я ответил, пребывая все еще погруженным в проект: «поговорил со счетчиком, сижу вот, слушаю разговор двух белок». Друг помолчал и сказал: «Ну про белочек после литра выпитой я конечно знаю, но после разговора со счетчиком???» :)

В статье описано устройство (далее – «Говорилка»), предназначенное для снятия показаний с электросчетчика и проговаривания их синтезированным голосом в телефонную линию. Кроме собственно показаний потребленной энергии Говорилка считывает текущие дату, напряжения по фазам, токи по фазам, потребление общее и по фазам и отображает эти данные на встроенном TFT дисплее. Также к Говорилке подсоединены датчики температуры, влажности, атмосферного давления и освещенности.
Читать дальше →

Наилегчайший старт в STM через «одно место»

Reading time5 min
Reach and readers31K
Уже, наверное, прошло время религиозных войн AVR против STM, но нет-нет да наблюдаются вспышки столкновений двух лагерей. Практически у любой публикации на тему поделок на AVR обязательно будет каммент вроде «Да сколько уже можно лохматить бабушку, давно пора перейти на STM», дальше вариации на тему цены, количества ног и таймеров. Если STMщик более продвинут, обязательно будет указание, что DMA в AVR нет и не будет, по этому AVR должна умереть. Зачем простому блинку-вольтметру-градуснику DMA, гора 16 разрядных таймеров, 100 ног и 12 битный АЦП никто как правило не объясняет. Зачем нужен такой комбайн в устройстве, которое легко вывозит Tiny13, которая при этом не загружена даже на треть своих ресурсов никто не будет разбираться. Просто надо переходить на STM32, и баста. Ибо вот.

И надо сказать, есть у людей тяга к новизне. А действительно, может попробовать? А вдруг понравится? Вот только Референс Мануал на популярный STM32F103C8T6, на котором основана самая массовая Голубая таблетка в 1126 страниц что-то как-то не очень располагает к «быстрому старту». Даже отдельную утилиту, так ненавидимый аксакалами «калокуб», и ту надо изучать, что там к чему. Да и вникнув в Cube, стартовать за 5 минут вряд ли получится, генерируемая им портянка не самое доступное чтиво на ночь, просто «в лоб» врубиться, о чём там речь получится не у каждого.
Читать дальше →

Введение в SSD. Часть 3. Форм-факторная

Reading time4 min
Reach and readers47K


В прошлых частях цикла «Введение в SSD» мы рассказали про историю появления дисков и интерфейсов взаимодействия с накопителями. Третья часть познакомит читателя с современными форм-факторами дисков.
Читать дальше →

Что такое Windows PowerShell и с чем его едят? Часть 1: основные возможности

Reading time8 min
Reach and readers438K
Исторически утилиты командной строки в Unix-системах развиты лучше чем в Windows, однако с появлением нового решения ситуация изменилась.

Windows PowerShell позволяет системным администраторам автоматизировать большинство рутинных задач. С ее помощью можно менять настройки, останавливать и запускать сервисы, а также производить обслуживание большинства установленных приложений. Воспринимать синее окошко как еще один интерпретатор команд было бы неправильно. Такой подход не отражает сути предложенных корпорацией Microsoft инноваций. На самом деле возможности Windows PowerShell гораздо шире: в небольшом цикле статей мы попробуем разобраться, чем решение Microsoft отличается от более привычных нам средств.


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

Влезаем в шкуру офис-менеджера. Основные алгоритмы снабжения

Reading time8 min
Reach and readers13K
Написать эту статью я решил после посещения одного офиса – там не оказалось черного чая. Зеленого было полно, а черного не было. И с кофе были перебои.

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

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

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

Парковка для ваших минусов

Reading time4 min
Reach and readers7.5K
С помощью этого текста, или его вариаций в устной или письменной форме, я лишаюсь на работе всех друзей. Это мой сознательный выбор.

Вообще, я добрый и мягкий человек. Люблю телек смотреть, книжки читать, котов своих гладить, шашлыки жарить. Но это вне работы.

А на работе мне чертовски жалко времени на всё, кроме двух вещей: собственно работа и развитие. Ну типа каждый день/неделя/месяц должны давать какой-то прирост — в показателях, скиллах, продуктах.

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

Вот текст.

Кем бы ты ни был, если ты вдруг решишь развиваться, тебя ждёт масса трудностей. Тебе понадобится цель, методы ее достижения, дисциплина, умение не опускать руки и пробовать новое. Какое длинное предложение, правда? На самом деле – чушь полная. Ключевая фраза – «если ты вдруг решишься».
Читать дальше →

Аппаратный ключ шифрования за 3$ — возможно ли это?

Reading time10 min
Reach and readers74K

Итоговый результат — ключ размером с флешку

Повсеместное шифрование и, как следствие, обилие ключей заставляет задуматься об их надежном хранении. Хранение ключей на внешних устройствах, откуда они не могут быть скопированы, уже давно считается хорошей практикой. Я расскажу о том, как за 3$ и 2 часа сделать такой девайс.
Читать дальше →

Почём быть Няшей?

Reading time6 min
Reach and readers13K
Большинство людей стремятся быть идеальными. Нет, не быть, а казаться. Прям красота вокруг, а не мир. Особенно сейчас, когда есть соц.сети.

И сам красавчик, и работает отлично, и с людьми ладит, и развивается постоянно, и книжки умные читает, и на морях отдыхает, и задачи решает в срок, и перспективный, и фильмы правильные смотрит (чтоб рейтинг на Кинопоиске был 7.5, не ниже), и в школе-институте учился отлично, а если не отлично, то я «просто был собой», и патриот, и правила дорожного движения не нарушает, и бабушкам дорогу перейти помогает. Няша.

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

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

Стоит оно того? Или не так: а чего оно стоит?
Читать дальше →

Визуализация линий напряженности и движений электростатических зарядов, симулирование движения планет солнечной системы

Reading time3 min
Reach and readers21K
Привет, сегодня я хочу вам предложить наглядное пособие по моделированию некоторых физических процессов и показать как получить красивые изображения и анимации. Осторожно много картинок.

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

Собрался изменять? Подумай еще раз

Reading time6 min
Reach and readers58K
Самое дурацкое занятие на свете – изменять. Оно даёт необычайно сильные эмоции, с одной стороны, а с другой – способно начисто выхолостить, опустошить, лишить друзей и даже любимой работы.

Пару историй расскажу. На истину в высшей инстанции не претендую, разумеется.
Читать дальше →

Опасно ли держать открытым RDP в Интернете?

Reading time7 min
Reach and readers79K

Нередко я читал мнение, что держать RDP (Remote Desktop Protocol) порт открытым в Интернет — это весьма небезопасно, и делать так не надо. А надо доступ к RDP давать или через VPN, или только с определённых "белых" IP адресов.


Я администрирую несколько Windows Server для небольших фирм, в которых мне поставили задачу обеспечить удалённый доступ к Windows Server для бухгалтеров. Такой вот современный тренд — работа из дома. Достаточно быстро я понял, что мучить бухгалтеров VPN — неблагодарное занятие, а собрать все IP для белого списка не получится, потому что IP адреса у народа — динамические.


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


В этой статье я поделюсь опытом (положительным и не очень) и рекомендациями.

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

Дебаг GSM-весов на Arduino

Reading time3 min
Reach and readers7.9K


Статья касается конструкций по публикациям на Хабре, а после и моем сайте


Написана по результатам некоторых неудачных попыток повторения схемы.


Кроме того, рекомендуется к прочтению пользователям arduino.ru, утверждающим, что


"Эта схема неработоспособна в принципе."

Для начала, система создавалась как максимально простая конструктивно, и она таковой получилась.


Мы-же не обвиняем создателей "1K ZX Chess"(самая маленькая шахматная программа), что она не умеет делать рокировки и отображает фигуры символами?


И кстати, самые маленькие весы для одного улья я таки сделал (к слову, 1K ZX Chess уже не самые маленькие ):


Smallest beehive GSM-scale


Они лишены багов по ложной засветке молниями, феерверками и фарами проезжающих машин.


Какие-же сюрпризы преподносят микроконтроллеры пользователям мы и рассмотрим под катом.

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

Реализация алгоритмической теории игр на Python с Nashpy

Reading time4 min
Reach and readers14K
Теория игр — это метод изучения стратегических ситуаций, когда результаты зависят не только от ваших действий, но и от того, что предпримут другие.

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

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



Под катом короткий рассказ про то, как можно задействовать теорию игр на Python при помощи библиотеки Nashpy.

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

Карманная метеостанция

Reading time5 min
Reach and readers18K
Да, метеостанция — это про что-то, измеряющее огромное количество параметров от направления и силы ветра до уровня солнечной радиации, но более подходящего термина не нашлось, поэтому приходится вводить в заблуждение. А вот насчет размера, все по-честному.

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

Information

Rating
Does not participate
Location
Красноярск, Красноярский край, Россия
Registered
Activity