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

Специализация хз

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

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

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

Почему GCP?


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


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


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


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

Распознавание объектов на android с помощью TensorFlow: от подготовки данных до запуска на устройстве

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

Обучение нейросети распознаванию образов — долгий и ресурсоемкий процесс. Особенно когда под рукой есть только недорогой ноут, а не компьютер с мощной видеокартой. В этом случае на помощь придёт Google Colaboratory, которая предлагает совершенно бесплатно воспользоваться GPU уровня Tesla K80 (подробнее).


В этой статье описан процесс подготовки данных, обучения модели tensorflow в Google Colaboratory и её запуск на android устройстве.


Подготовка данных


В качестве примера попробуем обучить нейросеть распознавать белые игральные кости на черном фоне. Соответственно, для начала, надо создать набор данных, достаточный для обучения (пока остановимся на ~100 фото).


Всего голосов 18: ↑18 и ↓0+18
Комментарии3

TDD для микроконтроллеров. Часть 1: Первый полет

Время на прочтение10 мин
Количество просмотров15K
TDD для микроконтроллеров. Часть 1: Первый полет
TDD для микроконтроллеров. Часть 2: Как шпионы избавляют от зависимостей
TDD для микроконтроллеров. Часть 3: Запуск на железе


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


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


Одной из наиболее популярных методологий улучшения качества разрабатываемых приложений является Test-driven development (TDD). Но эффективна ли методология TDD для разработки встраиваемых систем? Ответ на этот вопрос будем искать под катом.

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

Как правильно раздавать котят

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

Раздача котят по DHCP


  1. Привязать к котёнку поводок
  2. Запустить котёнка в толпу
  3. Когда хозяин будет найден, он сам отвяжет котёнка от поводка.

Раздача котят по HTTPS


— Вам нужен котёнок?
— А у него есть родословная и сертификат о прививках?
— Есть, вот, смотрите. А у вас паспорт, кстати, не просрочен?
— Нет, он просто молдавский. А это точно котёнок?
— А что?
— А почему у него в родословной немецкая овчарка?

Читать дальше →
Всего голосов 296: ↑284 и ↓12+272
Комментарии155

Датчик движения и подключение сигнализации и видеорегистрации в Home Assistant на Raspberry pi

Время на прочтение8 мин
Количество просмотров33K
Хочу рассказать о своем небольшом опыте работы с Home Assistant (далее – HA) на Raspberry pi и о подключении функционала видео регистрации, датчика движения и, соответственно, функции охраны дома с получением по почте снимков в случае срабатывания “охраны”.

Конечно же, одной из причин является желание понять из ваших отзывов, что же я все-таки “понаделал не так”, реализуя данный сценарий.

Есть три пути настройки вышеуказанного функционала: “без заморочек”, “короткий” и “самостоятельный”. В первом случае, вы, скачав готовый образ с сайта https://ViaMyBox.com/downloadpage для вашей Raspberry pi, можете посмотреть, как все выглядит в уже настроенном виде. Во втором случае, вы можете скачать zip с сайта или с гитхаб проекта, проинсталлировать и поставить HA docker образ через утилиту (sudo via-setup.sh), чтобы посмотреть, как все настроено. И, наконец, третий путь — настроить “все по-своему”: взять что-нибудь полезное с сайта или githab проекта, или из этого туториала. Ссылки на все в конце статьи.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии4

Как работают веб-приложения

Время на прочтение6 мин
Количество просмотров224K
Это статья для начинающих разработчиков и тех, кто хочет немного ориентироваться в терминах и технологиях современных веб-приложений. В статье написано о том, чем веб-приложения отличаются от сайтов, какие бывают веб-приложения, из чего они состоят и как работают.
Читать дальше →
Всего голосов 39: ↑32 и ↓7+25
Комментарии14

20 библиотек для эффектного iOS-приложения

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


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

Все анимации являются ссылками на свои полноразмерные версии.
Большой траффик - много гиф-анимации
Всего голосов 23: ↑22 и ↓1+21
Комментарии13

Что такое Flutter и почему вы должны изучать его в 2020 году

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

Привет, Хабр! Представляю вашему вниманию перевод статьи: "What is Flutter and Why You Should Learn It in 2020" автора Gaël Thomas.


Что такое Flutter?


Flutter — бесплатный и открытый набор средств разработки мобильного пользовательского интерфейса, созданный компанией Google и выпущенный в мае 2017 года. Проще говоря, с помощью Flutter возможно создать собственное мобильное приложение с одним массивом кода. Это означает, что для создания двух приложений (IOS и Android) можно использовать единый язык программирования и одну базу кода.


Flutter нацелен на две важные вещи:


  • SDK (Software Development Kit): набор инструментов, который поможет вам в разработке приложений. Он включает инструменты для компиляции кода в нативном машинном коде (код для IOS и Android).
  • Framework (Библиотека пользовательского интерфейса на основе виджетов): Коллекция функциональных элементов пользовательского интерфейса (кнопок, текстовых вводов, ползунков и т.д.), которые можно персонализировать под личные предпочтения.

Для разработки с Flutter используется язык программирования под названием Dart. Это также язык Google, созданный в октябре 2011 года, но значительно улучшившийся в последние годы.


Dart фокусируется на развитии вёрстки веб-страниц; его можно с легкостью использовать для создания мобильных и веб-приложений.

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

SwiftUI по полочкам

Время на прочтение24 мин
Количество просмотров85K
Каждый раз, когда в языке программирования появляется новый Фреймворк, рано или поздно, появляются люди, которые изучают язык именно с него. Вероятно так было и в IOS разработке во времена появления Swift: поначалу он рассматривался как дополнение к Objective-C — но я этого уже не застал. Сейчас, если начинаешь с нуля, выбор языка уже не стоит. Swift вне конкуренции.

То же самое, но в меньшем масштабе, происходит и с фреймворками. Появление SwiftUI — не исключение. Вероятно, я — представитель первого поколения разработчиков, кто стартовал с изучения SwiftUI, проигнорировав UIKit. У этого есть своя цена — обучающих материалов и примеров работающего кода пока очень мало. Да, в сети уже есть некоторое количество статей, рассказывающих о той или иной особенности, том или ином инструменте. На том же www.hackingwithswift.com уже довольно много примеров кода с объяснениями. Однако, они слабо помогают тем, кто решил изучать SwiftUI с нуля, как я. Большинство материалов в сети — это ответы на конкретные, сформулированные вопросы. Опытный разработчик легко разберется, как все устроено, почему именно так, и зачем это нужно применять. Новичку же, сначала нужно понять, какой вопрос задать, и только тогда он сможет добраться до этих статей.



Под катом я попробую систематизировать и разложить по полочкам то, что сам успел усвоить на текущий момент. Формат статьи — почти гайд, хотя скорее, шпаргалка, составленная мной в том виде, в котором я сам бы хотел ее прочитать в начале своего пути. Для опытных разработчиков, еще не вникавшим глубоко в SwiftUI, тоже найдется пара интересных примеров кода, а текстовые пояснения можно читать по-диагонали.

Надеюсь статья поможет вам сэкономить некоторое время, когда вы тоже захотите ощутить немного магии.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии30

Практичные способы маппинга данных в Kotlin

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

Маппинг данных – один из способов для разделения кода приложения на слои. Маппинг широко используется в Android приложениях. Популярный пример архитектуры мобильного приложения Android-CleanArchitecture использует маппинг как в оригинальной версии (пример маппера из CleanArchitecture), так и в новой Kotlin версии (пример маппера).


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


Пример полезного маппинга изображен на схеме:


Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии15

Мы приближаемся к пределу вычислительных мощностей – нам нужны новые программисты

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

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




Давно, ещё в 1960-х, Гордон Мур, один из основателей компании Intel, заметил, что количество транзисторов, которые можно уместить на кремниевом чипе, удваивается примерно каждые два года. Поскольку количество транзисторов связано с вычислительной мощностью, это означало, что, по сути, вычислительная мощность удваивается каждые два года. Так родился закон Мура, обеспечивший для работающих в компьютерной индустрии людей – по крайней мере, для тех, кому ещё нет сорока – такую же надёжную основу, какую ньютоновские законы движения обеспечили для инженеров-механиков.
Читать дальше →
Всего голосов 103: ↑81 и ↓22+59
Комментарии502

Умный дом, как я до такого докатился. Часть 2-я

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

В первой части я рассказал о причинах, побудивших меня заняться построением своего “умного дома”, и об используемом “железе”.
Но “железо”, само по себе, умным быть не может, главное это “софт”. Вот об этой стороне своего проекта я и хочу рассказать в этой части. Банальное управление освещением с пульта, конечно, выглядит круто в глазах непосвященной публики, но “ума” тут никакого.
Так что же такого умного можно сделать? И, главное, как?
Читать дальше →
Всего голосов 114: ↑112 и ↓2+110
Комментарии104

Разработка умных устройств на примере контроллера теплого пола на ESP8266

Время на прочтение11 мин
Количество просмотров23K
Хочу поделиться своим опытом разработки умного устройства. В этой публикации я опишу аппаратное (кратко) и программное (более подробно) обеспечение.

Контроллер предназначен анализировать показания датчиков (проводных и беспроводных) и поддерживать заданную (с учетом расписания, в т.ч. по дням недели) температуру в каждой отдельной зоне, путем включения/выключения котла и управления петлями водяного теплого пола с помощью термоголовок на коллекторе.
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии53

Разработка электроники. Аудит проекта в примерах. Спасаем тёплые полы всем хабром

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

Лирическое отступление
По моему мнению, в сегодняшней России наибольшие шансы на успех в области технологических стартапов имеют два типа проектов:

  • узконишевые в области промышленной автоматизации, основанные командой профессионалов в данной области и подкреплённые стартовым финансированием по крайней мере в 20 — 50 000 USD
  • создание прототипов устройств, ориентированных на глобальные рынки

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

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

Давно хотел провести детальный анализ какого-либо проекта по разработке электроники, показать явные ошибки и правильные подходы, которые помогут их исключить. Возможно, ещё долго бы собирался, но подвернулся случай — пост в блогосфере Habra “Становление термостата. Как это получилось”. Статья вызвала бурю в комментариях в том числе и с моей стороны, значит тема актуальна. Какой смысл рассказывать о провалившихся и канувших в Лету проектах, где уже ничего нельзя исправить, не лучше ли попытаться сделать доброе дело?

Попробуем провести аудит проекта с учётом самых ценных комментариев и будем надеяться, что команда извлечёт из него что-то полезное. Возьмём за минимально жизнеспособную версию (MVP) информацию, которую авторы раскрыли в своей статье и подумаем, каким образом можно его улучшить в ходе следующей итерации.
Приступаем к аудиту проекта
Всего голосов 46: ↑41 и ↓5+36
Комментарии122

Пишем драйвер для ноутбука for fun and profit, или как закоммитить в ядро даже если ты дурак

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

С чего всё началось


Начнём с постановки проблемы. Дано: один ноутбук. Новый ноутбук, геймерский. С RGB-подсветкой. Вот такой примерно ноутбук:

image
Картинка взята с lenovo.com

Есть ещё программа к этому ноутбуку. Программа как раз этой подсветкой и управляет.

Одна только проблема – программа под Windows, а хочется чтоб в любимом линуксе всё работало. И лампочки чтоб светились, и чтоб цвета красивые мелькали. Да вот только как это сделать, чтоб без реверс-инжиниринга и без написания своих драйверов? Простой ответ пришёл быстро – никак. Ну что ж, пошли писать драйвер.
Читать дальше →
Всего голосов 133: ↑132 и ↓1+131
Комментарии20

Hack The Box — прохождение Player. FFmpeg эксплоит, JWT и различные веб перечисления

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

Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ. В данной статье пройдем JWT, выполним такие веб-перечисления, как поиск дирректорий, поддоменов и файлов бэкапа, проэксплуатируем SSRF в кодере FFmpeg и RCE в SSH.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)

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

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии2

Недочёты, часто встречающиеся в программировании, которых стоит избегать

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



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

Вот некоторые распространённые недочёты, которых стоит избегать программисту.
Читать дальше →
Всего голосов 60: ↑42 и ↓18+24
Комментарии70

Светильник управляемый жестами на Arduino

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

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

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

И так, все по порядку.
Всего голосов 37: ↑32 и ↓5+27
Комментарии38

Разработка чрезвычайно быстрых программ на Python

Время на прочтение7 мин
Количество просмотров68K
Ненавистники Python всегда говорят, что одной из причин того, что они не хотят использовать этот язык, является то, что Python — это медленно. Но то, что некая программа, независимо от используемого языка программирования, может считаться быстрой или медленной, очень сильно зависит от разработчика, который её написал, от его знаний и от умения создавать оптимизированный и высокопроизводительный код.



Автор статьи, перевод которой мы сегодня публикуем, предлагает доказать то, что те, кто называет Python медленным, неправы. Он хочет рассказать о том, как улучшить производительность Python-программ и сделать их по-настоящему быстрыми.
Читать дальше →
Всего голосов 90: ↑83 и ↓7+76
Комментарии47

Не боги горшки обжигают

Время на прочтение5 мин
Количество просмотров69K
Дима: Читал эту статью? (Разработчики — никакая не элита, а голые короли индустрии). Что скажешь?

Я: Прочитал эту статью вчера
Я: В двух словах моё мнение целиком не выразить
Я: Это, скорее, тянет на получасовой разговор. Минимум

Дисклеймер


  1. Несмотря на то, что есть, о чем сказать, постараюсь не превратить своё повествование в безумный лонгрид
  2. Мы немного коснёмся рыночных и экономических отношений, но давайте постараемся не удариться в политическую дискуссию
  3. Это моя первая статья на Хабре. Почти уверен, что совершаю “литературное” самоубийство, но хочется ответить на некоторые вопросы как минимум самому себе

Разработчики действительно УЖЕ не элита



Читать дальше →
Всего голосов 187: ↑165 и ↓22+143
Комментарии308

Информация

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