Pull to refresh
4
0

C++/Qt, Python/Django

Send message

Кипр — минутка мягкого психодела

Reading time10 min
Views46K

Фламинго в Ларнаке на Кипре. Поселение, кстати, по-нашему будет «Гробово», потому что «ларнака» — это саркофаг, а их тут в окрестностях нашли немало. Так город и назвали.

Первое впечатление от Кипра или «острова айтишников» — остров невероятно добрых раздолбаев. Здесь тепло, приятно, рядом море, вокруг солнце, небо — ну как в таких обстоятельствах можно делать что-то серьёзное? Вот, например, для владельца кафе нормально увидеть большой поток клиентов, решить, что это слишком утомительно, закрыть заведение, сказать всем «Расслабьтесь!» и пойти через дорогу пить кофе. Чтобы отдохнуть. Что характерно, все расслабятся и уйдут по своим делам.

С другой стороны, модерация от государства тоже почти не чувствуется. Везде граффити (и очень удачно вписанные в городскую среду), паспортный контроль я в обе стороны прошёл за 15 секунд (быстрее нельзя, это время поиска свободного места под штемпель в паспорте), в музеях нет смотрителей (и всё целое), а на дорогах можно ехать слегка под градусом, все превышают и перестраиваются через сплошную даже перед полицией.
— Тут все нарушают, смотри! — сообщил мне водитель по дороге из аэропорта.
— Эээ… А вас не смущает, что мы сейчас превышаем на 40 километров в час?

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

Хакаем CAN шину авто. Виртуальная панель приборов

Reading time14 min
Views232K


В первой статье «Хакаем CAN шину авто для голосового управления» я подключался непосредственно к CAN шине Comfort в двери своего авто и исследовал пролетающий траффик, это позволило определить команды управления стеклоподъемниками, центральным замком и др.

В этой статье я расскажу как собрать свою уникальную виртуальную или цифровую панель приборов и получить данные с любых датчиков в автомобилях группы VAG (Volkswagen, Audi, Seat, Skoda).

Мною был собран новый CAN сниффер и CAN шилд для Raspberry Pi на базе модуля MCP2515 TJA1050 Niren, полученные с их помощью данные я применил в разработке цифровой панели приборов с использованием 7″ дисплея для Raspberry Pi. Помимо простого отображения информации цифровая панель реагирует на кнопки подрулевого переключателя и другие события в машине.

В качестве фреймворка для рисования приборов отлично подошел Kivy для Python. Работает без Иксов и для вывода графики использует GL.

  1. CAN сниффер из Arduino Uno
  2. Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)
  3. Разработка панели приборов на основе Raspberry Pi и 7″ дисплея
  4. Софт панели приборов на Python и Kivy (UI framework)
  5. Видео работы цифровой панели приборов на базе Raspberry Pi

Под катом полная реализация проекта, будет интересно!

Исследование защиты ArtMoney. Часть первая

Reading time8 min
Views35K
Приветствую! Сам ArtMoney был закейгенен мной давным-давно. Я не первый раз уже пробую начать писать статью о том, как происходил кейгенинг этой программы, но, всегда где-то стопорился. На этот раз, я решил доделать все до конца! Плюс, эту статью можно считать продолжением цикла статей о крякинге для новичков.

Итак, в этой статье вы узнаете, как я писал кейген к ArtMoney (здесь будет описана версия 7.45.1).
Читать дальше →

Алгоритм формирования кроссвордов

Reading time10 min
Views39K
Эта история начинается с публикации «Самый сложный кроссворд, составленный компьютером». В ней приведен один из самых сложных кроссвордов, составленных программой (см. ниже).



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

Принципы построения REST JSON API

Reading time8 min
Views366K

Эта памятка писалась для внутренних нужд (открыть глаза менее опытным в вебе коллегам). Но, т.к. я насмотрелся велосипедов от довольно уважаемых, казалось бы, контор, — выкладываю на хабр. Мне кажется, многим будет полезно.


Зачем


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


  • Стандарт HTTP это стандарт. Его несоблюдение вредно для кармы и ведёт к постоянным проблемам с безопасностью, кэшированием и прочими "закидонами" браузеров, которые совсем не закидоны, а просто следование стандарту.
  • Велосипеды со всякими {error: "message","result":...} невозможно нормально тестировать и отлаживать
  • Поддержка большим количеством готовых клиентских библиотек на все случаи жизни. Те, кто будет вашим api пользоваться, скажут большое человеческое спасибо.
  • Поддержка автоматизированного интеграционного тестирования. Когда сервер на любые запросы отдаёт 200 ОК — ну, это такое себе развлечение.
Читать дальше →

Визуализация времени возрождения Рошана

Reading time56 min
Views53K
В данной статье рассматривается перехват функций графического API на примере DirectX 9 под x64 применительно к игре Dota 2.

Будет подробно рассказано, как внедриться в процесс игры, как изменить поток выполнения, приведено краткое описание внедряемой логики. В конце поговорим о других возможностях для отрисовки, которые предоставляет движок.



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

CJDNS мертв, да здравствует Yggdrasil

Reading time4 min
Views63K
image


Что такое Yggdrasil?
Yggdrasil — это распределённая Mesh сеть, которая работет в Overlay режиме, позволяя сделать интернет поверх интернета.

Причем, сеть может одновременно работать в двух режимах — через интернет и без интернета, соединяясь напрямую с физически соседними пирами (через Ethernet, Wi-Fi или Bluetooth) работая на 3-ем уровне модели OSI.

На Apple устройствах использован протокол AWDL.
Последние новости о сети cjdns датируются 2017 годом, может показатся, что сеть умерла и разработка остановлена (на самом деле — да), однако появился самозванец — Yggdrasil, который практически полностью копирует cjdns однако делает это намного лучше.

В посте рассмотрим:

  • Что такое Yggdrasil
  • Зачем это нужно
  • Откуда он взялся
  • Можно ли ему доверять
  • В чем отличее от cjdns
  • Почему его стоит установить прямо сейчас
  • Поддержка iOS (Да!)
  • Что в планах
  • Как настроить

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

Как НЕ нужно переводить названия фильмов

Reading time7 min
Views35K
Название фильма — это первое, на что обращает внимание зритель. Первый контакт с кинокартиной определяет интерес к ней. Именно от названия во многом зависит, посмотрит ли человек трейлер фильма и пойдет ли он на него в кино.

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

Фильмы, рассчитанные на глобальный прокат, локализуют в десятках стран. Вот тут-то и начинаются свистопляски. Ведь часто названия переводят совершенно не так, как было в оригинале. Иногда это оправданный шаг, но есть варианты, когда «новое» название просто на голову не налазит. Об этом и поговорим.
Читать дальше →

Веб компоненты. Часть 1: Пользовательские элементы

Reading time9 min
Views22K
Вступление

Данная статья — первая часть из небольшой серии статей о создании веб-компонентов нативными средствами HTML и JS


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


Для реализации такого подхода, в настоящее время разрабатываются три спецификации, о первой из которых, пойдет речь в этой статье. Итак, знакомимся — спецификация пользовательских элементов (custom elements), рабочий черновик которой оупбликован 13.10.2016 и последняя версия которого датирована 04.12.2017.


Пользовательский элемент является наиболее важной частью АПИ, входящих в пакет веб компонент, поскольку именно он предоставляет ключевые возможности, а именно:


  • определение (собственно, создание) нового элемента
  • упаковка нестандартного функционала и данных в один тег
Читать дальше →

Наша с девушкой первая видеоигра. Разработка на Unity. Часть 1

Reading time7 min
Views37K
Ну как первая… Если не считать релизы только под Android и с десяток заброшенных проектов у финиша, то да, это первая наша игра с замахом больше чем на одну платформу. Как же всё начиналось? А всё просто, работали мы значит над другим проектом, назовем его «проект А», работали уже долгое время и решили, а не сделать ли нам за пару месяцев игру и потренировать на ней наши маркетинговые навыки, а «проект А» выпустим сразу после с большим опытом в продвижении игр. Но звезды не сошлись, петух не свистнул и «проект А» залег на дно ровно на год. Но эта история не о нем, а о логической игре под названием «Cubicity: Slide puzzle».


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

Курс молодого бойца PostgreSQL

Reading time13 min
Views555K


Хочу поделиться полезными приемами работы с PostgreSQL (другие СУБД имеют схожий функционал, но могут иметь иной синтаксис).

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

Данный материал будет полезен тем, кто полностью освоил базовые навыки SQL и желает учиться дальше. Советую выполнять и экспериментировать с примерами в pgAdmin'e, я сделал все SQL-запросы выполнимыми без разворачивания каких-либо дампов.

Поехали!
Читать дальше →

Как моя жизнь превратилась в книгу Кафки

Reading time10 min
Views66K
Это печальная и долгая история и о взаимоотношениях в IT-коллективе, и корпоративной культуре, и о совместной разработке. Надеюсь, кому-то она поможет не совершать наших ошибок и выстроить лучшие отношения с коллегами.

Вступление


В конце марта 2018 я начала работать, как мне казалось, в надежной и симпатичной шведской компании с большим IT-отделом в 200 человек. Я мечтала участвовать много в разработке новых приложений на Java, лучше узнать фреймворки семейства Spring, учиться новым технологиям (до этого случайно угодила в компанию, где всё ещё пользовались SVN), участвовать в интересных дискуссиях, получать и оставлять адекватные комментарии в Code Review (а не заморачиваться только на пробелах и отступах) — одним словом, быть частью профессионального коммьюнити и иметь возможность развиваться как специалист. Небезызвестная шведская корпоративная культура и пестрый международный коллектив подбадривали меня и укрепляли в моих надеждах на наше с компанией плодотворное сотрудничество.

В первые месяцы я действительно могла сказать, что нашла всё то, что искала. Я быстро погрузилась в разработку, приняла участие в выпуске MVP, узнала много нового и даже выучила Kotlin, что позволило мне внести посильный вклад и в другие проекты.

Но моё счастье длилось недолго…
Читать дальше →

Алгоритм Хаффмана на пальцах

Reading time5 min
Views539K
Вы вероятно слышали о Дэвиде Хаффмане и его популярном алгоритме сжатия. Если нет, то поищите информацию в интернете — в этой статье я не буду вас грузить историей или математикой. Сегодня я хочу просто попытаться показать вам практический пример применения алгоритма к символьной строке.
Разархивировать текст статьи

Я просканировал всю Австрию и нашёл…

Reading time3 min
Views28K

...IP-камеры, принтеры, АСУ ТП и многое другое


Отказ от ответственности: статья — результат нескольких недель работы. О самых больших проблемах я сообщил владельцам серверов, если смог их найти, а о других — в Cert.at. Кроме того, я не пытался войти ни на какое устройство/сервис/сайт, требующие пароль.

Прежде всего: как получить все IP-адреса целой страны?

Это очень просто. IP-адреса не «генерируются» страной, а назначаются центральным органом. Это означает, что существуют списки всех IP-адресов по странам.

Любой желающий может скачать такой список. Введите grep Austria IP2LOCATION-LITE-DB1.CSV > austria.csv и запустите простой скрипт для преобразования IP-адресов в удобный формат.
Читать дальше →

Не умничайте с формами для входа

Reading time4 min
Views47K
В последнее время меня начинает сильно раздражать авторизация на сайтах. Поскольку менеджеры паролей становятся более популярными, такие как 1Password (который я использую) и менеджер паролей Chrome (который я тоже использую), веб-сайтам важно учитывать этот факт.

Давайте рассмотрим некоторые шаблоны входа в систему, которые на мой взгляд не идеальны. А затем рассмотрим лучшие практики. TL;DR; Это страницы авторизации, которые просты, предсказуемы, на обычных страницах и дружат с менеджерами паролей.
Читать дальше →

Распределённый чат на Node.JS и Redis

Reading time11 min
Views37K

Результат пошуку зображень за запитом "голубиная почта"


Небольшой вопрос/ответ:


Для кого это? Людям, которые мало или вообще не сталкивались с распределенными системами, и которым интересно увидеть как они могут строится, какие существуют паттерны и решения.


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


Постановка задачи


Как сделать чат? Это должно быть тривиальной задачей, наверное каждый второй бекендер пилил свой собственный, так же как игровые разработчики делают свои тетрисы/змейки и т. п. Я взялся за такой, но чтоб было интереснее он должен быть готов к захвату мира, чтоб мог выдерживать сотниллиарды активных пользователей и вообще был неимоверно крут. Из этого исходит ясная потребность в распределенной архитектуре, потому что вместить все воображаемое количество клиентов на одной машине — пока нереально с нынешними мощностями. Заместо того чтоб просто сидеть и ждать на появление квантовых компьютеров я решительно взялся за изучение темы распределенных систем.


Стоит отметить что быстрый отклик очень важен, пресловутый realtime, ведь это же чат! а не доставка почты голубями.


%рандомная шутка про почту россии%


Использовать будем Node.JS, он идеален для прототипирования. Для сокетов возьмем Socket.IO. Писать на TypeScript.


И так, что вообще мы хотим:


  1. Чтоб пользователи могли слать друг-другу сообщения
  2. Знать кто онлайн/оффлайн

Как мы это хотим:

Разработка высоконагруженного WebSocket-сервиса

Reading time10 min
Views65K
Как создать веб-сервис, который будет взаимодействовать с пользователями в реальном времени, поддерживая при этом несколько сотен тысяч коннектов одновременно?

Всем привет, меня зовут Андрей Клюев, я разработчик. Недавно я столкнулся с такой задачей – создать интерактивный сервис, где пользователь может получать быстрые бонусы за свои действия. Дело осложнялось тем, что в проекте были довольно высокие требования по нагрузке, а сроки были крайне невелики.

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

В конце статьи приведены полезные ссылки на инструменты разработки, тестирования и мониторинга.

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

Собираем бандл мечты с помощью Webpack

Reading time18 min
Views69K
JS-приложения, сайты и другие ресурсы становятся сложнее и инструменты сборки — это реальность веб-разработки. Бандлеры помогают упаковывать, компилировать и организовывать библиотеки. Один из мощных и гибких инструментов с открытым исходным кодом, который можно идеально настроить для сборки клиентского приложения — Webpack.

Максим Соснов (crazymax11) — Frontend Lead в N1.RU внедрил Webpack в несколько больших проектов, на которых до этого была своя кастомная сборка, и контрибьютил с ним несколько проектов. Максим знает, как с Webpack собрать бандл мечты, сделать это быстро и конфигурировать так, чтобы конфиг оставался чистым, поддерживаемым и модульным.


Расшифровка отличается от доклада — это сильно усовершенствованная пруфлинками версия. По всей расшифровке рассыпаны пасхалочки на статьи, плагины, минификаторы, опции, транспайлеры и пруфы слов докладчика, ссылки на которые просто не поставить в выступление. Если собрать все, то откроется бонусный уровень в Webpack :-)

DNS rebinding в 2k19, или как по-настоящему вспотеть, посетив порносайт

Reading time9 min
Views81K


Всем привет! Сегодня мы бы хотели рассказать об одной старой и почти всеми забытой атаке под названием DNS rebinding. Первые разговоры о ней начались еще в 2007 году, однако тогда эксперты из области практической информационной безопасности не уделяли ей должного внимания в связи с особенностями эксплуатации этой атаки, а также мало ощутимыми, как тогда казалось, последствиями. Сегодня мы попробуем убедить в обратном их и вас, в частности, продемонстрировав, что в современном мире эта атака обрела второе дыхание и более не кажется такой безобидной.

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

Когда исчезнут JavaScript-фреймворки?

Reading time11 min
Views45K
Автор материала, перевод которого мы сегодня публикуем, веб-разработчик, говорит, что он старается регулярно пересматривать набор инструментов, которыми пользуется. Делает он это для того, чтобы понять, может ли он без некоторых из них обойтись, решая свои обычные задачи. Недавно он решил провести эксперимент и создать сложное фронтенд-приложение без использования JavaScript-фреймворков.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity