Как стать автором
Обновить
2
0

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

Отправить сообщение

Анатомия таблиц LuaJIT и особенности их использования

Время на прочтение10 мин
Количество просмотров13K

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


Читать дальше →
Всего голосов 46: ↑46 и ↓0+46
Комментарии19

Чем плоха СМС-аутентификация и как защититься от угона SIM-карты

Время на прочтение6 мин
Количество просмотров27K
Привет, Хабр! В прошлой статье мы затронули тему, что аутентификация по СМС – не самый лучший способ многофакторной аутентификации. Такой способ используют многие веб-сервисы: соцсети, почтовые клиенты, платежные системы. Вдобавок номер телефона используется в качестве логина: для регистрации ВКонтакте, в Telegram и так далее. 

Если SIM-карту угонят, а СМС перехватят, последствия будут плачевны. Многие пользователи переписываются в мессенджерах с коллегами и партнерами, поэтому под угрозой окажутся не только личные данные, но и корпоративные.  Если в вашей компании  не используется корпоративная инфраструктура для общения, то незащищенные аккаунты сотрудников ставят под угрозу бизнес. Так что стоит позаботиться о безопасности заранее.

В этой статье возьмем несколько популярных сервисов и заменим СМС-аутентификацию на более безопасные способы. Заодно разберемся, как дополнительно защитить аккаунты от угона и спать спокойно.
На статью нас вдохновил лонгрид MyCrypto, посвященный защите от SIM-джекинга (SimJacking). Мы изучили их рекомендации и составили актуальный список для России. 

Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии32

Собираем 8-битный компьютер: как уменьшить количество микросхем до шести

Время на прочтение5 мин
Количество просмотров24K

Сочетание старого трюка с кодированием цветов в NTSC и современного железа позволяет собрать на удивление работоспособную машину

В 8-битных системах есть что-то перманентно притягательное: вы можете собрать автономную систему, достаточно мощную, чтобы поддерживать адекватное взаимодействие с пользователем, но достаточно простую, чтобы собрать и запрограммировать её самостоятельно. Большинство современных 8-битных машин, созданных любителями, завязаны на классических процессорах, которые жили в золотой век домашних компьютеров 1980-х годов, когда в качестве дисплеев использовали миллионы телевизоров. Вначале была идея собрать свою машину на базе процессора Motorola 6809 из той же эпохи. Я пытался использовать как можно меньше микросхем, но несмотря на мои старания, мне всё ещё нужно было 13 дополнительных микросхем для работы с ОЗУ и последовательной передачи данных. Тогда я задумался: а что, если я использую более современный 8-битный процессор? Насколько сильно при этом я смогу снизить количество необходимых мне микросхем?
Читать дальше →
Всего голосов 19: ↑17 и ↓2+22
Комментарии16

Понимание итераторов в Python

Время на прочтение8 мин
Количество просмотров140K

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
Читать дальше →
Всего голосов 23: ↑21 и ↓2+25
Комментарии20

Бесплатный хостинг Telegram-бота на Google Cloud Platform

Время на прочтение3 мин
Количество просмотров147K

Почему GCP?


При написание телеграмм ботов столкнулся с вопросом, как быстро и бесплатно сделать так, чтобы бот работал постоянно. Варианты с Heroku и Pythonanywhere имеют слишком маленькие лимиты, если у вас более одного бота. Поэтому я решил воспользоваться GCP. Платформа предоставляет бесплатно 300$ на год + огромные скидки при использование этих средств(до 94%).


Как захостить вашего бота?


Шаг 1. Регистрация на GCP


Переходим на сайт GCP и нажимаем Get started for free.
Читать дальше →
Всего голосов 19: ↑6 и ↓130
Комментарии18

Программисты, давайте изучать исходники классических программ

Время на прочтение2 мин
Количество просмотров54K
Современные программисты — счастливчики: мы живём в мире, в котором исторические и оказавшие существенное влияние программы имеют открытый код, доступный для изучения. Однако, многие программисты только учатся, и изучают те программы, над которыми работают сами. У нас редко находится время для изучения исторических работ, и курсы программирования редко тратят время на такие вещи.

Мы полагаем, что разработчикам следует изучать исходники программ, оказавших большое влияние, подобно тому, как архитекторы изучают здания, оказавшие влияние на архитектуру (и критикуют их). Чем повторять те же ошибки снова и снова, мы должны изучить большую работу, проделанную до нас, и вынести из неё уроки.
Читать дальше →
Всего голосов 58: ↑53 и ↓5+64
Комментарии68

Как проверить навыки программирования на Python? Задачи от Яндекса

Время на прочтение9 мин
Количество просмотров64K

Хакатон в Школе бэкенд-разработки

В 2019 году нам потребовалось автоматизированно проверить умение писать Python-код у сотен разработчиков. Так мы отбирали будущих студентов для Школы бэкенд-разработки. Это не то же самое, что предложить решить задачу на листе бумаги, как на собеседовании. С другой стороны, мы также не могли переиспользовать условия задач, уже подготовленные для наших соревнований по программированию. Дело в том, что соревнования с целью определить лучших из лучших — это одно, а отбор специалистов с небольшим опытом в школу — совсем другое. Нам требовались задачи, по решению которых было бы видно, обладает ли разработчик базовыми навыками написания кода и умением грамотно использовать память и время. Вот какие условия мы составили.
Читать дальше →
Всего голосов 15: ↑12 и ↓3+15
Комментарии22

Волшебный дым: микроконтроллеры против линейных регуляторов

Время на прочтение2 мин
Количество просмотров13K


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

У меня неравной борьбы не выдержали Digispark, ESP-01 и Arduino pro mini 3.3V


Нетерпеливым можно посоветовать использовать step-down на MP1584EN, остальным — добро пожаловать по кат.

Читать дальше →
Всего голосов 24: ↑5 и ↓19-11
Комментарии23

Как в Python реализованы очень длинные числа типа integer?

Время на прочтение6 мин
Количество просмотров61K
Перевод статьи подготовлен специально для студентов курса «Разработчик Python».





Когда вы пишете на низкоуровневом языке, таком как С, вы беспокоитесь о выборе правильного типа данных и спецификаторах для ваших целых чисел, на каждом шаге анализируете достаточно ли будет использовать просто int или нужно добавить long или даже long double. Однако при написании кода на Python вам не нужно беспокоиться об этих «незначительных» вещах, потому что Python может работать с числами типа integer любого размера.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+35
Комментарии18

Применяем Data Science в мирных целях покупки дома

Время на прочтение9 мин
Количество просмотров25K
Чтобы продать что-нибудь ненужное, нужно сначала купить что-нибудь ненужное, а у нас денег нет.
— Трое из Простоквашино

Введение


Так получилось, что я живу в своей квартире (или кондо по-местному) в Монреале. И однажды, примерно год назад меня посетила мысль что неплохо бы перебраться в собственный дом. Некоторый опыт покупки и продажи жилья у меня уже был и, в принципе, можно было бы подойти к этому вопросу просто, как поступает большинство местных обывателей: нанять риэлтора и предоставить ему разобраться со всеми вопросами, но это было бы скучно и неинтересно.


Поэтому я решил подойти к этому делу научно. Есть задача: надо разобраться сколько примерно стоит то что у меня есть, и где находится то что я могу себе позволить. Ну и попутный вопрос — понять куда дует ветер. И изучить гео-пространственные вычисления в R.

Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии35

Конференция DEFCON 27. Изготовление дубликатов механических ключей с ограниченным доступом. Часть 1

Время на прочтение13 мин
Количество просмотров12K
Брифинг выступления:

Restricted keys, или механические ключи с ограниченным доступом, отличаются от обычных ключей тем, что их запрещено дублировать. Поэтому производители таких ключей (и замков) строго следят за тем, чтобы заготовки для изготовления дубликатов не появлялись в свободном доступе или же разрабатывают такие ключи, к которым чрезвычайно трудно подобрать готовые заготовки. На охраняемых объектах в США используют такие системы замков, как Medeco, Abloy, Assa и Mul-T-Lock, отчасти для того, чтобы противостоять механическому взлому замков, но в большей степени для предотвращения возможности изготовления дубликатов для несанкционированного проникновения в запертые помещения. Такие места, как Белый дом и здания Парламента Канады используют специальный профиль ключа исключительно для этих объектов, чтобы гарантировать, что никто не сможет раздобыть заготовки, чтобы сделать дубликаты.

Однако существуют десятки тысяч профилей заготовок для ключей, которые подходят для изготовления дубликатов даже для очень ограниченных серий замков. Поскольку ключи — это просто куски металла, братья Билл и Роберт Грейдоны в своем выступлении расскажут, как можно сделать дубликаты ключей для механических замков систем повышенной безопасности Medeco, Mul-T-Lock и Abloy. Они также коснутся всех аспектов контроля изготовления ключей, включая патенты, и рассмотрят, как администрация секретных объектов может предотвратить взлом замков с помощью дубликатов ключей.



Билл Грейдон является директором GGR Security Consultants и активно занимается исследованиями в области электронного наблюдения и сигнализации, психологии человека в безопасной среде и анализа систем блокировки. Он получил степень магистра в области компьютерной инженерии и сертификат в области судебной инженерии Университета Торонто и использует полученные знания для разработки математических моделей повышения безопасности в физическом мире.
Всего голосов 24: ↑24 и ↓0+24
Комментарии22

Как восстановить светодиодную лампу за 2 минуты при минимальных навыках работы с паяльником и знаниях об электронике

Время на прочтение4 мин
Количество просмотров443K

image


Исторически так сложилось, что в моем загородном доме все освещение сделано с помощью светодиодных ламп мощностью 10-11, а в последнее время и 12-13 вт с цоколем Е27. Лампы накаливания на площадь 200 м2 тратили бы слишком много электроэнергии, что не вписывалось бы в концепцию моего энергоэффективного дома с приличным утеплением, твердотопливным дровяным котлом, бесперебойником на автомобильных аккумуляторах и рекуператором. Люминесцентные "энергосберегайки" я невзлюбил с первого взгляда — они часто перегорают, не имеют той энергоэффективности что светодиодные, хрупкие, токсичные при случайном разбивании, мерцают и имеют неприятный спектр.

Читать дальше →
Всего голосов 48: ↑31 и ↓17+29
Комментарии312

Простой пример парсинга и аналитики данных по игре World of Tanks

Время на прочтение3 мин
Количество просмотров8.9K

В этом небольшом примере, я хочу показать, как парсить данные с сайтов и как дальше использовать их для анализа. Для этого я спарсил таблицу рейтингов кланов из игры World of Tanks и посмотрел, как рейтинг клана может коррелировать с другими данными.


Читать дальше →
Всего голосов 11: ↑6 и ↓5+7
Комментарии14

Сказ о том, как я автоматизировал квартиру с помощью Node-RED. Часть II

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


Всего голосов 49: ↑46 и ↓3+57
Комментарии23

Оптимизация кода на Python с помощью ctypes

Время на прочтение4 мин
Количество просмотров12K
Перевод статьи подготовлен специально для студентов курса «Разработчик Python».




Внимание: код в этой статье лицензирован под GNU AGPLv3.

Я написал это руководство, поскольку не смог найти такого, которое будет объединять в себе все полезное о ctypes. Надеюсь, эта статья сделает чью-то жизнь намного легче.

Содержание:

  1. Базовые оптимизации
  2. сtypes
  3. Компиляция под Python
  4. Структуры в Python
  5. Вызов вашего кода на С
  6. PyPy
Читать дальше →
Всего голосов 16: ↑10 и ↓6+9
Комментарии0

Умный светильник для «богатых» своими «ленивыми» руками, это же «просто» и удобно

Время на прочтение8 мин
Количество просмотров28K


Введение


Сделал на кухне «современную» подсветку для мойки, плиты и разделочного столика на базе светодиодной ленты под управлением ардуино (пусть называется светильник 1). Эта конструкция проработала 2 года, пока силовая часть «мозгов» не испортилась. Это отличный повод снова изобрести велосипед из «подручного хлама» (светильник 2). Правда в этот раз «хлам» будет дорогим и совместимым с умным домом Z-wave. Далее рассказ о замене ардуино на ZUNo (ардуино совместимый модуль для создания Z-wave устройства) c максимальным сохранением кода и пояснением необходимых изменений.
Читать дальше →
Всего голосов 13: ↑9 и ↓4+10
Комментарии46

Роборука

Время на прочтение1 мин
Количество просмотров6.9K
Привет.

Собрал игрушку, делюсь с вами.




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

Каждая тяга «сухожилие» сделана из 2мм стальной проволоки, на кончике просверлены, и крепится в пальце проволокой от скрепки. Саморезы 2.5мм 16мм (причем при сборке пальцев укорачивал) покупал в Леруа.

3Д модели лежат тут.
Всего голосов 28: ↑28 и ↓0+28
Комментарии20

Маленькая паяльная станция своими руками v2

Время на прочтение6 мин
Количество просмотров37K
Привет.

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


Основные функции:

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;
Всего голосов 23: ↑20 и ↓3+23
Комментарии23

Как заставить машину написать тесты из кода за тебя

Время на прочтение17 мин
Количество просмотров9.5K
Мы живем в неидеальном мире. Здесь код пишут люди, а люди по своей природе склонны совершать ошибки. Все бы ничего, ошибки можно отловить на этапе тестирования и не дать им никому навредить. Можно, если писать тесты. Чего люди делать почему-то не любят. Но возможно, есть надежда — автогенерация тестов из написанного кода.

Юлия Волкова хочет проверить идею в реальности и пробует переложить на машину создание тестов на основе кода, причем без использования дополнительных инструкций или контрактов. О том, какие открытия приносит путешествие в мир метапрограммирования, AST, синтаксического анализа и токенизации, и чего это все позволило добиться в автогенерации тестов, Юлия расскажет на Moscow Python Conf++. А пока я расспросил, откуда появилась сама идея — автоматизировать тестирование, что лежит в основе прототипа и с чем еще предстоит справиться.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии8

Делаем квадрокоптер с помощью 3D принтера

Время на прочтение1 мин
Количество просмотров12K

Привет!


Моя основная работа — в банке. Вторая работа (хотя я считаю её такой же важной) — Open Source.


Хобби — сборка самодельных квадрокоптеров и полёты на них.


Сейчас я расскажу, как можно сделать квадрокоптер с помощью 3D принтера.

Всего голосов 22: ↑6 и ↓16-5
Комментарии41

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность