Не знаю как вы, а я люблю ковыряться в кишочках разных систем. И в этой статье хочу рассказать о внутреннем устройстве Lua-таблиц и их особенностях. Lua — мой основной язык программирования по долгу службы, и чтобы писать хороший код, надо хоть немного понимать, что происходит за кулисами. Любопытных прошу за мной.
Пользователь
Чем плоха СМС-аутентификация и как защититься от угона SIM-карты
Если SIM-карту угонят, а СМС перехватят, последствия будут плачевны. Многие пользователи переписываются в мессенджерах с коллегами и партнерами, поэтому под угрозой окажутся не только личные данные, но и корпоративные. Если в вашей компании не используется корпоративная инфраструктура для общения, то незащищенные аккаунты сотрудников ставят под угрозу бизнес. Так что стоит позаботиться о безопасности заранее.
В этой статье возьмем несколько популярных сервисов и заменим СМС-аутентификацию на более безопасные способы. Заодно разберемся, как дополнительно защитить аккаунты от угона и спать спокойно.
На статью нас вдохновил лонгрид MyCrypto, посвященный защите от SIM-джекинга (SimJacking). Мы изучили их рекомендации и составили актуальный список для России.
Собираем 8-битный компьютер: как уменьшить количество микросхем до шести
Сочетание старого трюка с кодированием цветов в NTSC и современного железа позволяет собрать на удивление работоспособную машину
В 8-битных системах есть что-то перманентно притягательное: вы можете собрать автономную систему, достаточно мощную, чтобы поддерживать адекватное взаимодействие с пользователем, но достаточно простую, чтобы собрать и запрограммировать её самостоятельно. Большинство современных 8-битных машин, созданных любителями, завязаны на классических процессорах, которые жили в золотой век домашних компьютеров 1980-х годов, когда в качестве дисплеев использовали миллионы телевизоров. Вначале была идея собрать свою машину на базе процессора Motorola 6809 из той же эпохи. Я пытался использовать как можно меньше микросхем, но несмотря на мои старания, мне всё ещё нужно было 13 дополнительных микросхем для работы с ОЗУ и последовательной передачи данных. Тогда я задумался: а что, если я использую более современный 8-битный процессор? Насколько сильно при этом я смогу снизить количество необходимых мне микросхем?
Понимание итераторов в Python
Python — особенный язык в плане итераций и их реализации, в этой статье мы подробно разберём устройство итерируемых объектов и пресловутого цикла for
.
Особенности, с которыми вы часто можете столкнуться в повседневной деятельности
1. Использование генератора дважды
>>> numbers = [1,2,3,4,5]
>>> squared_numbers = (number**2 for number in numbers)
>>> list(squared_numbers)
[1, 4, 9, 16, 25]
>>> list(squared_numbers)
[]
Как мы видим в этом примере, использование переменной squared_numbers
дважды, дало ожидаемый результат в первом случае, и, для людей незнакомых с Python в достаточной мере, неожиданный результат во втором.
2. Проверка вхождения элемента в генератор
Возьмём всё те же переменные:
>>> numbers = [1,2,3,4,5]
>>> squared_numbers = (number**2 for number in numbers)
А теперь, дважды проверим, входит ли элемент в последовательность:
>>> 4 in squared_numbers
True
>>> 4 in squared_numbers
False
Бесплатный хостинг Telegram-бота на Google Cloud Platform
Почему GCP?
При написание телеграмм ботов столкнулся с вопросом, как быстро и бесплатно сделать так, чтобы бот работал постоянно. Варианты с Heroku и Pythonanywhere имеют слишком маленькие лимиты, если у вас более одного бота. Поэтому я решил воспользоваться GCP. Платформа предоставляет бесплатно 300$ на год + огромные скидки при использование этих средств(до 94%).
Как захостить вашего бота?
Шаг 1. Регистрация на GCP
Переходим на сайт GCP и нажимаем Get started for free.
Программисты, давайте изучать исходники классических программ
Мы полагаем, что разработчикам следует изучать исходники программ, оказавших большое влияние, подобно тому, как архитекторы изучают здания, оказавшие влияние на архитектуру (и критикуют их). Чем повторять те же ошибки снова и снова, мы должны изучить большую работу, проделанную до нас, и вынести из неё уроки.
Как проверить навыки программирования на Python? Задачи от Яндекса
Хакатон в Школе бэкенд-разработки
В 2019 году нам потребовалось автоматизированно проверить умение писать Python-код у сотен разработчиков. Так мы отбирали будущих студентов для Школы бэкенд-разработки. Это не то же самое, что предложить решить задачу на листе бумаги, как на собеседовании. С другой стороны, мы также не могли переиспользовать условия задач, уже подготовленные для наших соревнований по программированию. Дело в том, что соревнования с целью определить лучших из лучших — это одно, а отбор специалистов с небольшим опытом в школу — совсем другое. Нам требовались задачи, по решению которых было бы видно, обладает ли разработчик базовыми навыками написания кода и умением грамотно использовать память и время. Вот какие условия мы составили.
Волшебный дым: микроконтроллеры против линейных регуляторов
Волшебный дым (также «электронная фея» или «полупроводниковый джинн») — магический едкий дым, на котором работают все микросхемы в мире до тех пор пока не происходит чрезмерная электрическая нагрузка с перегревом, и волшебный дым гневно удаляется из микросхемы навсегда, после чего та перестаёт работать.
У меня неравной борьбы не выдержали Digispark, ESP-01 и Arduino pro mini 3.3V
Нетерпеливым можно посоветовать использовать step-down на MP1584EN, остальным — добро пожаловать по кат.
Как в Python реализованы очень длинные числа типа integer?
Когда вы пишете на низкоуровневом языке, таком как С, вы беспокоитесь о выборе правильного типа данных и спецификаторах для ваших целых чисел, на каждом шаге анализируете достаточно ли будет использовать просто
int
или нужно добавить long
или даже long double
. Однако при написании кода на Python вам не нужно беспокоиться об этих «незначительных» вещах, потому что Python может работать с числами типа integer
любого размера.Применяем Data Science в мирных целях покупки дома
Чтобы продать что-нибудь ненужное, нужно сначала купить что-нибудь ненужное, а у нас денег нет.
— Трое из Простоквашино
Введение
Так получилось, что я живу в своей квартире (или кондо по-местному) в Монреале. И однажды, примерно год назад меня посетила мысль что неплохо бы перебраться в собственный дом. Некоторый опыт покупки и продажи жилья у меня уже был и, в принципе, можно было бы подойти к этому вопросу просто, как поступает большинство местных обывателей: нанять риэлтора и предоставить ему разобраться со всеми вопросами, но это было бы скучно и неинтересно.
Поэтому я решил подойти к этому делу научно. Есть задача: надо разобраться сколько примерно стоит то что у меня есть, и где находится то что я могу себе позволить. Ну и попутный вопрос — понять куда дует ветер. И изучить гео-пространственные вычисления в R.
Конференция DEFCON 27. Изготовление дубликатов механических ключей с ограниченным доступом. Часть 1
Restricted keys, или механические ключи с ограниченным доступом, отличаются от обычных ключей тем, что их запрещено дублировать. Поэтому производители таких ключей (и замков) строго следят за тем, чтобы заготовки для изготовления дубликатов не появлялись в свободном доступе или же разрабатывают такие ключи, к которым чрезвычайно трудно подобрать готовые заготовки. На охраняемых объектах в США используют такие системы замков, как Medeco, Abloy, Assa и Mul-T-Lock, отчасти для того, чтобы противостоять механическому взлому замков, но в большей степени для предотвращения возможности изготовления дубликатов для несанкционированного проникновения в запертые помещения. Такие места, как Белый дом и здания Парламента Канады используют специальный профиль ключа исключительно для этих объектов, чтобы гарантировать, что никто не сможет раздобыть заготовки, чтобы сделать дубликаты.
Однако существуют десятки тысяч профилей заготовок для ключей, которые подходят для изготовления дубликатов даже для очень ограниченных серий замков. Поскольку ключи — это просто куски металла, братья Билл и Роберт Грейдоны в своем выступлении расскажут, как можно сделать дубликаты ключей для механических замков систем повышенной безопасности Medeco, Mul-T-Lock и Abloy. Они также коснутся всех аспектов контроля изготовления ключей, включая патенты, и рассмотрят, как администрация секретных объектов может предотвратить взлом замков с помощью дубликатов ключей.
Билл Грейдон является директором GGR Security Consultants и активно занимается исследованиями в области электронного наблюдения и сигнализации, психологии человека в безопасной среде и анализа систем блокировки. Он получил степень магистра в области компьютерной инженерии и сертификат в области судебной инженерии Университета Торонто и использует полученные знания для разработки математических моделей повышения безопасности в физическом мире.
Как восстановить светодиодную лампу за 2 минуты при минимальных навыках работы с паяльником и знаниях об электронике
Исторически так сложилось, что в моем загородном доме все освещение сделано с помощью светодиодных ламп мощностью 10-11, а в последнее время и 12-13 вт с цоколем Е27. Лампы накаливания на площадь 200 м2 тратили бы слишком много электроэнергии, что не вписывалось бы в концепцию моего энергоэффективного дома с приличным утеплением, твердотопливным дровяным котлом, бесперебойником на автомобильных аккумуляторах и рекуператором. Люминесцентные "энергосберегайки" я невзлюбил с первого взгляда — они часто перегорают, не имеют той энергоэффективности что светодиодные, хрупкие, токсичные при случайном разбивании, мерцают и имеют неприятный спектр.
Простой пример парсинга и аналитики данных по игре World of Tanks
В этом небольшом примере, я хочу показать, как парсить данные с сайтов и как дальше использовать их для анализа. Для этого я спарсил таблицу рейтингов кланов из игры World of Tanks и посмотрел, как рейтинг клана может коррелировать с другими данными.
Сказ о том, как я автоматизировал квартиру с помощью Node-RED. Часть II
Оптимизация кода на Python с помощью ctypes
Внимание: код в этой статье лицензирован под GNU AGPLv3.
Я написал это руководство, поскольку не смог найти такого, которое будет объединять в себе все полезное о ctypes. Надеюсь, эта статья сделает чью-то жизнь намного легче.
Содержание:
- Базовые оптимизации
- сtypes
- Компиляция под Python
- Структуры в Python
- Вызов вашего кода на С
- PyPy
Умный светильник для «богатых» своими «ленивыми» руками, это же «просто» и удобно
Введение
Сделал на кухне «современную» подсветку для мойки, плиты и разделочного столика на базе светодиодной ленты под управлением ардуино (пусть называется светильник 1). Эта конструкция проработала 2 года, пока силовая часть «мозгов» не испортилась. Это отличный повод снова изобрести велосипед из «подручного хлама» (светильник 2). Правда в этот раз «хлам» будет дорогим и совместимым с умным домом Z-wave. Далее рассказ о замене ардуино на ZUNo (ардуино совместимый модуль для создания Z-wave устройства) c максимальным сохранением кода и пояснением необходимых изменений.
Роборука
Собрал игрушку, делюсь с вами.
Кисть, привод от пальцев вашей руки. Каждый палец сгибается в 2 суставах, но требует всего 1 тягу за счет рычагов. Но тут есть и минус: требуется приличное усилие, например пивную банку хотя бы наполовину я смять не смог как ни пытался.
Каждая тяга «сухожилие» сделана из 2мм стальной проволоки, на кончике просверлены, и крепится в пальце проволокой от скрепки. Саморезы 2.5мм 16мм (причем при сборке пальцев укорачивал) покупал в Леруа.
3Д модели лежат тут.
Маленькая паяльная станция своими руками v2
Некоторое время назад я собрал маленькую паяльную станцию, о которой хотел рассказать. Это дополнительная упрощенная паяльная станция к основной, и конечно не может ее полноценно заменить.
Основные функции:
1. Паяльник. В коде заданы несколько температурных режимов (100, 250 и 350 градусов), между которыми осуществляется переключение кнопкой Solder. Плавная регулировка мне тут не нужна, паяю я в основном на 250 градусах. Мне лично это очень удобно. Для точного поддержания температуры используется PID регулятор.
Заданные режимы, пины, параметры PID можно поменять в файле 3_Solder:
struct {
static const byte termistor = A2; // пин термистора
static const byte pwm = 10; // пин нагревателя
static const byte use = 15; // A1 пин датчика движения паяльника
int mode[4] = {0, 150, 250, 300}; // режимы паяльника
byte set_solder = 0; // режим паяльника (по сути главная функция)
static const double PID_k[3] = {50, 5, 5}; // KP KI KD
static const byte PID_cycle = air.PID_cycle; // Цикл для ПИД. Участвует в расчетах, а также управляет частотой расчетов ПИД
double PID_in; // входящее значение
double PID_set; // требуемое значение
double PID_out; // выходное значения для управляемого элемента
//unsigned long time;
unsigned long srednee;
} sol;
Как заставить машину написать тесты из кода за тебя
Юлия Волкова хочет проверить идею в реальности и пробует переложить на машину создание тестов на основе кода, причем без использования дополнительных инструкций или контрактов. О том, какие открытия приносит путешествие в мир метапрограммирования, AST, синтаксического анализа и токенизации, и чего это все позволило добиться в автогенерации тестов, Юлия расскажет на Moscow Python Conf++. А пока я расспросил, откуда появилась сама идея — автоматизировать тестирование, что лежит в основе прототипа и с чем еще предстоит справиться.
Делаем квадрокоптер с помощью 3D принтера
Привет!
Моя основная работа — в банке. Вторая работа (хотя я считаю её такой же важной) — Open Source.
Хобби — сборка самодельных квадрокоптеров и полёты на них.
Сейчас я расскажу, как можно сделать квадрокоптер с помощью 3D принтера.
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность