Search
Write a publication
Pull to refresh
0
0
Vadim Toptunov @g0rd1as

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

Send message

Java Challengers #3: Полиморфизм и наследование

Reading time9 min
Views52K

Java Challengers #3: Полиморфизм и наследование


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


Согласно легендарному Венкату Субраманиам (Venkat Subramaniam) полиморфизм является самым важным понятием в объектно — ориентированном программировании. Полиморфизм — или способность объекта выполнять специализированные действия на основе его типа — это то, что делает Java — код гибким. Шаблоны проектирования, такие как Команда (Command), Наблюдатель (Observer), Декоратор (Decorator), Стратегия (Strategy), и многие другие, созданные бандой четырех (Gang Of Four), все используют ту или иную форму полиморфизма. Освоение этой концепции значительно улучшит вашу способность продумывать программные решения.


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

Мониторинг улья и открытый проект

Reading time2 min
Views22K

Пчела на микроконтроллере


Всем привет! Прошло 5 дней с момента предыдущей статьи на тему "умного улья". Как говорится, много думал и гуглил. Еще несколько лет назад не было такого хайпа в области пчеловодства. Сейчас-же поднялась целая волна — кажется, что интернетом пчел занимаются все — от школьников, студентов и до серьезных ИТ-гигантов.


Но эта волна разбивается о прагматизм отрасли пчеловодства.


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


Ибо один человек может потерять интерес, уйти в бизнес, но сообщество останется и будет развиваться!


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

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

Еще одна реализация Обработки Данных

Reading time2 min
Views3.6K
Представьте себе инструмент, с помощью которого вы можете трансформировать любые данные в… любые данные.

Самый доступный пример — Изображения. Что если я хочу получить картинку определенного размера и поставить где-нибудь водяную марку (тоже определенного размера).

И вот один из примеров как это может выглядеть:

image

P.S.: Это обзорная статья, если будет интересно, дальше опишу подходы детальнее.
Читать дальше →

Становимся волшебниками в программировании. Часть 2

Reading time1 min
Views10K

Читайте часть 1 вот тут.
Если вы давно хотели стать программистом, но не знали с чего начать, то начните с этого комикса. В нем о том, как задавать правильные вопросы, чтобы получать полезные ответы и читать исходный код.


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

Проектирование типами: Как сделать некорректные состояния невыразимыми на C#

Reading time9 min
Views7.2K

Как правило статьи, рассказывающие о проектировании типами, содержат примеры на функциональных языках — Haskell, F# и других. Может показаться, что эта концепция неприменима к объектно-ориентированным языкам, но это не так.


В этой статье я переведу примеры из статьи Скотта Власчина Проектирование типами: Как сделать некорректные состояния невыразимыми на идиоматический C#. Также я постараюсь показать, что этот подход применим не только в качестве эксперимента, но и в рабочем коде.

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

Прерывания от внешних устройств в системе x86. Часть 2. Опции загрузки ядра Linux

Reading time13 min
Views24K
В предыдущей части мы рассмотрели эволюцию доставки прерываний от устройств в x86 системах (PIC → APIC → MSI), общую теорию и все необходимые термины.

В этой практической части мы рассмотрим как откатиться к использованию устаревших методов доставки прерываний в Linux, а именно рассмотрим опции загрузки ядра:

  • pci=nomsi
  • noapic
  • nolapic

Также мы посмотрим на порядок, в котором ОС смотрит таблицы роутинга прерываний (ACPI/MPtable/$PIR) и какое влияние на него окажет добавление опций загрузки:

  • pci=noacpi
  • acpi=noirq
  • acpi=off

Возможно вы пробовали комбинации из всех этих опций, когда какое-либо устройство не работало из-за проблемы с прерываниями. Разберём, что именно они делают и как они меняют вывод /proc/interrupts.
Читать дальше →

ШОК! Новый софт для фишинга побеждает второй фактор

Reading time6 min
Views20K

Всем привет!


Бывают случаи, когда тебе нужно кого-то зафишить. Бывает, когда у целевой организации настроен второй фактор для аутентификации — sms, Google authenticator, Duo. Что делать в таких случаях? Нанимать гопников? Подрезать телефоны у сотрудников? Нет! Оказывается, хитрые хакеры написали софт, способный помочь в этой непростой ситуации.

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

Один Вк бот, один С# и апельсин

Reading time3 min
Views12K
Продолжая свои эксперименты с “умным” домом, ради забавы я решил добавить группу в Вк для управления некоторыми его характеристиками. Для данной статьи конкретизируем задачу: попробуем написать на языке с# простого бота, который будет отвечать от имени сообщества в вк, и рассмотрим, как быстро его запустить на arm32 (в моем случае на orange pi zero).


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

Эльфы в памяти. Выполнение ELF в оперативной памяти Linux

Reading time15 min
Views19K


Бесфайловое распространение вредоносного ПО набирает популярность. Что не удивительно, ведь работа таких программ практически не оставляет следов. В этой статье мы не будем касаться техник выполнения программ в памяти Windows. Сконцентрируемся на GNU/Linux. Linux по праву доминирует в серверном сегменте, обитает на миллионах встраиваемых устройств и обеспечивает работу подавляющего большинства веб-ресурсов. Далее мы сделаем небольшой обзор возможностей исполнения программ в памяти и продемонстрируем что это возможно даже в затруднительных условиях.

Безопасность мобильного OAuth 2.0

Reading time13 min
Views26K


Всем привет! Я Никита Ступин, специалист по информационной безопасности Почты Mail.Ru. Не так давно я провел исследование уязвимостей мобильного OAuth 2.0. Для создания безопасной схемы мобильного OAuth 2.0 мало реализовать стандарт в чистом виде и проверять redirect_uri. Необходимо учитывать специфику мобильных приложений и применять дополнительные механизмы защиты.

В этой статье я хочу поделиться с вами знаниями об атаках на мобильный OAuth 2.0, о методах защиты и безопасной реализации этого протокола. Все необходимые компоненты защиты, о которых я расскажу ниже, реализованы в последней версии SDK для мобильных клиентов Почты Mail.Ru.
Читать дальше →

Первые шаги с Unicorn Engine

Reading time14 min
Views14K

При поиске "Unicorn Engine" на Хабре, я с удивлением обнаружил, что этот инструмент еще ни разу не попадал в статьи. Я попробую заполнить эту пустоту. Начнем, пожалуй, с азов, и посмотрим на пример использования эмулятора в реальной жизни. Для того, чтобы не изобретать велосипед, я решил просто перевести этот мануал. Перед началом скажу, что все мои комментарии или замечания будут выглядеть так.

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

Баги в Gmail позволяли спрятать адрес отправителя и переложить письмо в «отправленные»

Reading time2 min
Views3.4K
Сразу две серьезные ошибки, которые могут быть использованы для фишинга, обнаружены в ноябре в интерфейсе Gmail исследователем Тимом Коттеном.

Перекладываем письмо в чужом инбоксе


Первый баг проявился, когда Тим изучал инцидент в своей компании. Одна из его коллег обнаружила в своем аккаунте GMail в папке «Отправленные» несколько писем, которые не посылала. В результате анализа ситуации выяснилось, что письма были отправлены с чужого аккаунта и при получении были автоматически помещены в папку «Отправленные».

image

Оказалось, что в поле «From:» на самом деле содержалось два адреса, принадлежавшие настоящему отправителю и фактическому получателю. Причем адрес получателя из-за отсутствия кавычек воспринимается почтовыми серверами, как сопроводительный текст к второму адресу почты. А интерфейс почтового ящика воспринимает получившуюся запись уже как два разных адреса. По версии Коттена, затем при обработке поля From:, содержащего адрес получателя, Gmail сортирует письмо по пакам как отправленное, несмотря на то, что сообщение является входящим и пришло с другого адреса.
Читать дальше →

Бэкап для Linux, или как создать снапшот

Reading time12 min
Views40K
Всем привет! Я работаю в Veeam над проектом Veeam Agent for Linux. С помощью этого продукта можно бэкапить машину с ОС Linux. «Agent» в названии означает, что программа позволяет бэкапить физические машины. Виртуалки тоже бэкапит, но располагается при этом на гостевой ОС.

Вдохновением для этой статьи послужил мой доклад на конференции Linux Piter, который я решил оформить в виде статьи для всех интересующихся хабражителей.

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

Всех заинтересовавшихся прошу под кат!


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

Нагрузочное тестирование с locust. Часть 2

Reading time6 min
Views22K
Для тех, кому понравилась моя предыдущая статья, продолжаю делится впечатлениями об инструменте для нагрузочного тестирования Locust.

Постараюсь наглядно показать преимущества написания нагрузочного теста python кодом, в котором можно удобно как подготавливать любые данные для теста, так и обрабатывать результаты.

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

Информационная безопасность интернета вещей: кто вещь, а кто хозяин?

Reading time6 min
Views11K

Источник

Ни для кого не секрет, что в области интернета вещей (Internet of Things, IoT), пожалуй, меньше всего порядка в плане обеспечения информационной безопасности (ИБ). Сегодня мы наблюдаем развивающуюся технологию, постоянно меняющийся ландшафт отрасли, прогнозы, порой уводящие в сторону от реальности, десятки организаций, пытающихся объявить себя законодателями в той или иной области, хотя бы «на час». Актуальность проблемы подчеркивается эпическими инцидентами. Industroyer, BrickerBot, Mirai – и это лишь видимая верхушка айсберга, а что «день грядущий нам готовит»? Если продолжать двигаться по течению, то хозяевами интернета вещей станут ботнеты и прочие «вредоносы». А вещи с непродуманным функционалом будут довлеть над теми, кто попытается стать их хозяином.

В ноябре 2018 ENISA (The European Union Agency for Network and Information Security) выпустило документ «Good Practices for Security of Internet of Things in the context of Smart Manufacturing», в котором собраны всевозможные практики обеспечения кибербезопасности для промышленного интернета вещей, причем проанализировано около сотни документов с лучшими практиками в этой области. Что же находится «под капотом» этой попытки объять необъятное? В статье выполнен обзор содержания.
Читать дальше →

Be a security ninja: secret level

Reading time2 min
Views15K


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

Троянский пингвин: Делаем вирус для Linux

Reading time6 min
Views23K
Нет, я не собираюсь рассказывать, как написать своего шифровальщика-вымогателя, майнера или эксплуатировать супер-новую уязвимость, как вы могли подумать. И тем более я не горю желанием поднимать холивар «Linux безопаснее Windows?(да)». Моей целью было написание простого вируса для linux, некого, так сказать, «Just for Fun», единственной функцией которого является распространение своей копии. О том, что у меня получилось, я расскажу в этой статье. В конце я приведу ссылку на GitHub с исходниками.

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

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

Reading time16 min
Views23K

Как освободить ящик от старых телефонов, ноутбуков и жёстких дисков, не беспокоясь по поводу того, что ваши данные попадут кому-то в руки




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

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

Продолжайте читать, если хотите узнать, почему это так, и как шифрование может помочь уменьшит эти риски. А также что лучше – продать старые устройства или просто уничтожить?
Читать дальше →

Программирование с PyUSB 1.0

Reading time15 min
Views57K
От переводчика:
Это перевод руководства Programming with PyUSB 1.0
Данное руководство написано силами разработчиков PyUSB, однако быстро пробежавшись по коммитам я полагаю, что основной автор руководства — walac.


Позвольте мне представиться


PyUSB 1.0 — это библиотека Python обеспечивающая легкий доступ к USB. PyUSB предоставляет различные функции:

  • На 100% написана на Python:
    В отличии от версий 0.x, которые были написаны на C, версия 1.0 написанна на Python. Это позволяет программистам на Python без опыта работы на C лучше понять как работает PyUSB.
  • Нейтральность платформы:
    Версия 1.0 включает в себя фронтенд-бэкенд схему. Она изолирует API от специфичных с точки зрения системы деталей реализации. Соединяет эти два слоя интерфейс IBackend. PyUSB идет вместе со встроенными бэкендами для libusb 0.1, libusb 1.0 и OpenUSB. Вы можете сами написать свой бэкенд, если хотите.
  • Портативность:
    PyUSB должен запускаться на любой платформе с Python >= 2.4, ctypes и, по крайней мере, одним из поддерживаемых встроенных бэкендов.
  • Простота:
    Взаимодействие с устройством USB никогда не было таким простым! USB — сложный протокол, а у PyUSB есть хорошие предустановки для наиболее распространенных конфигураций.
  • Поддержка изохронных передач:
    PyUSB поддерживает изохронные передачи, если лежащий в основе бэкенд поддерживает их.

Несмотря на то, что PyUSB делает программирование USB менее болезненным, в этом туториале предполагается, что у Вас есть минимальные знания USB протокола. Если Вы ничего не знаете о USB, я рекомендую Вам прекрасную книгу Яна Аксельсона «Совершенный USB» (Jan Axelson «USB Complete»).
Читать дальше →

Написание простого процессора и окружения для него

Reading time4 min
Views25K

Здравствуйте! В этой статье я расскажу какие шаги нужно пройти для создания простого процессора и окружения для него.

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

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity