• Вот зачем нужна геометрия

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


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


    Лично для меня этот предмет ассоциируется с двумя основными вещами:


    1. Доказательство теорем.
    2. Решение задач с помощью применения цепочки теорем и аксиом.
    Читать дальше →
  • Установка OpenCV-Python на виртуальной среде для суперчайников

    Здесь вы найдете пошаговый пример установки библиотеки OpenCV на Python.


    • Установка Python
    • Установка виртуальной среды
    • Установка OpenCV + jupiterlab, numpy, matplotlib
    • Тестирование

    Все тестировала на планшете Microsoft Surface, Windows 10 Pro, c 64-битной операционной системой.


    Предположим, что на вашем устройстве ничего не установлено заранее.


    1. Сначала установим Python.
      Скачиваем нужную версию и запускаем .exe файл. Не забываем установить галочку add path. Я установила Python 3.7.3 от 25 марта 2019 г., потому что новая на данный момент версия Python 3.7.4 от 8го июля 2019 г. работала некорректно, а именно в терминале некоторые команды зависали. Открываем командную строку.
    2. Устанавливаем virtualenv.
    Читать дальше →
  • Используем React: эксклюзивная лечебная методика сидения на трёх стульях сразу

    Где болит


    Как давно подмечено — легко в теории, хаос на практике. Несмотря на использование архитектурных шаблонов, типа Flux, Reflux, Redux, реальная жизнь (если только задача вашего кода несколько больше, чем «Hello World!») гарантирует ситуацию, когда код ваших React-компонентов может вырасти до размеров, несовместимых с лёгкостью чтения и осмысления. Как часто среди переопределённых методов жизненного цикла громоздятся либо дополнительные функции обработчиков разнообразных кликов, либо вспомогательная функциональность, решающая что рендерить в том или ином случае, либо всё сразу и.д. и т.п. И вот если Вы достигли данного состояния сложности бытия, то возникает закономерный вопрос: как отрефакторить всю получившуюся кучу гов..., простите, кода, в нечто приятное глазу и пониманию.
    Читать дальше →
  • Как Junior-разработчики делают мой проект правильнее

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

    Почему не нанять сразу крутых разработчиков:

    • Дорого, сложно найти.
    • Держать компетенцию желательно распределенно.
    • Не всегда уживаются вместе в силу конкуренции, бывает.
    • Завышенные требования
    Читать дальше →
  • System.Console, Mono и NCurses

    Всем привет, в своей работе (а ранее и в учебе) я часто использую C# и этот язык стал мне, что называется, привычным. Решив немного потренироваться в программировании, я написал консольный текстовый редактор для Linux. Вкратце опишу полученный опыт.

    В Mono класс System.Console поддерживается не полностью, но Mono замечателен тем, что также как и в .NET можно использовать P/Invoke, для вызова методов нативных C/C++ Linux библиотек.

    В моем случае это была библиотека ncurses. Выглядит это так:
    Читать дальше →
  • Простой перебор четырехзначных паролей на Python 3.x

    Всем привет.

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

    Для начала выберем язык. Я выбрал Python, так как он приятней глазу, и на нем будет проще объяснить, как все работает.

    Итак, начнем. Какие модули нам нужны? Только один — random! Импортируем его.

    import random
    
    Читать дальше →
  • Умные контракты на платформе Semux

    Что такое Semux?


    Многие из вас уже не раз слышали про блокчейн и так называемые «умные контракты», но в этой статье я не буду в очередной раз расписывать теорию и основы. Мы сразу перейдем к делу, а именно, к публикации вашего первого работающего смарт-контракта. Но не на платформе Ethereum, как вы могли подумать, а на другой платформе, более новой и малоизвестной, Semux платформе.

    Semux — это экспериментальная высокопроизводительная блокчейн-платформа с открытым исходным кодом, управляемая сообществом. В основе платформы лежит консенсусный механизм Semux BFT. Если сильно упростить то Semux — этот тот же Ethereum, только без PoW (Proof-of-Work) майнеров.

    Чтобы детальнее познакомиться с Semux — давайте создадим простенький гемблинг (gambling) смарт контракт «Подбрасывания монетки».

    Установка правильной ноды


    На данный момент основная сеть Semux не поддерживает EVM (Ethereum Virtual Machine) и работу со смарт контрактами, активация EVM будет немного позже, в конце лета\начало осени 2019. Исходя из этого, нам придется использовать тестовую сеть, где активирована EVM, к тому же монеты в тестовой сети бесплатны.

    Скачиваем последнюю версию релиз кандитата тут. На июль 2019 — это Semux v1.5.0 RC4, позже это может быть другая версия, так что будьте внимательны.

    Для того чтобы присойдениться к тестовой сети, необходимо указать флаг network=testnet при запуске ноды.

    ./semux-gui.sh --network testnet

    Указываем пароль, создаем новый адрес, теперь у нас есть адрес, но где взять тестовые монеты? Для этого переходим на этот ресурс, вставляем свой адрес и нажимаем «SEND», спустя пару минут на вашем адресе будет 1000 монет для тестовой сети. Теперь мы можем создавать и вызывать смарт-контракты.
    Читать дальше →
  • Проверка готовности к Business Intelligence

    Проекты Business Intelligence в своём большинстве не оправдывают ожиданий и находятся в замкнутом круге безнадёжности.
    Статья коротко описывает вопросы и перечень работ для оценки возможности внедрения BI инициативы.


    Готова ли моя организация к Business Intelligence?


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

    Читать дальше →
  • Битовые операции. Для чего они нужны на примере программировании МК

    Введение


    В своё время я не мог понять смысл таких вещей, как битовые операции. Статьи в интернете не давали мне практического понимания этого вопроса. Со временем, когда я столкнулся с программированием микроконтроллеров (МК), я понял удобство подобных операций, поэтому я решил написать данную статью, чтобы пролить свет на этот вопрос людям, которые только услышали про битовые операции и хотят узнать конкретное практическое применение данных операций. Все примеры будут приведены для tms320f28027.

    Читать дальше →
  • Стартап: от монолита к микросервисам

    Приветствую, Хабровчане!

    Сейчас очень модно заниматься стартапами, чтобы стать единорогом и всю оставшуюся жизнь греть пузико на море и есть бананы вершить судьбу IT-индустрии. Эта участь постигла и меня. Долгое время для тестирования своих идей моя команда писала небольшие MVP (минимальные жизнеспособные продукты), чей бэкенд представлял собой монолит. Немного позже обстоятельства завели нас в пучину контейнерной разработки, а оттуда и в микросервисы. Это существенно изменило наш взгляд на разработку. Об этом и пойдет речь в данной статье!
    Читать дальше →
  • Устанавливаем Selenoid в Docker за 5 минут

    Всем привет.

    Меня зовут Сергей, сегодня ровно 4 месяца как я работаю в автоматизации, да и в тестировании вообще. Так случилось, что в компании я один автоматизатор, и познавать основы автоматизации приходилось не просто, учитывая как сильно у нас на профильных форумах любят вопросы новичков. Ну а отсутствие официальной документации на русском языке для меня вообще странно в случае когда разработчики из России (СНГ).

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

    Итак приступаем:
    Читать дальше →
  • Универсальная защита от xss-атак и sql-инъекций

    Так сложилось, что вот уже который год мне приходится заниматься технической поддержкой хостинга, а также поддержкой сайтов, к которым я имею довольно косвенное отношение. А так как администраторы довольно часто сталкиваются с разного рода атаками на свои сайты, не имея при этом нанять специалиста, мне пришло в голову придумать единое и универсальное решение для всех сайтов, которое бы помогло им защитить свой сайт без особых усилий. И хотя в нем есть еще не мало минусов и нюансов, которые мне пока не удалось решить, тем не менее это единственное на данный момент решение, которое позволяет обезопасить сайт изнутри, не обращаясь к разного рода плагинам и модулям, которые нужно устанавливать извне и которое даже малоопытный разработчик сайтов способен установить и настроить у себя на сайте. Суть данного решения заключается в том, чтобы обработать данные переданные методами GET, POST и/или COOKIE, еще до момента обработки и записи их самих непосредственно в базу данных.

    В этой статье я приведу примеры использования и недостатки того или иного метода.
    Читать дальше →
  • Пасхалка в одном кроппере DeepNude

    image

    Кликать на все подряд привычка вредная, но после многолетней работы тестировщиком в web и mobile это становиться чем то обыденным. Вот так, в очередной раз, заигрывая с прекрасным творчеством машинного обучения и произошли эти «непроизвольные» нажатия.
    Читать дальше →
  • Sequence как инструмент для реализации бизнес-логики

    Sequence является общепринятой, и от этого, вполне очевидной функциональностью любых СУБД, реализовывая такие привычные механизмы обеспечения целостности, как уникальный ключ внутри таблицы.
    Читать дальше →
  • Превращаем аватарку ВКонтакте в часы

    Недавно увидел, как у одного пользователя в Телеге аватарка отображает текущее время. Решил, что хочу что-нибудь подобное, но делать такое в Телеге уже не интересно, пусть будет ВКонтакте.
    Читать дальше →
  • Кастомный EventEmitter в Angular

    image
    Не секрет, что у новичков в Angular могут возникнуть проблемы с передачей данных между компонентами, потому что не всегда удается использовать Input и Output декораторы. Предлагаю вашему вниманию реализацию паттерна EventEmitter на Angular.
    Читать дальше →
  • Как добавить к уже созданному приложению компоненты ReactJS

    В этом посте я попытаюсь подробно рассказать, как добавить в существующий проект фреймворка ASP .NET Core версии 3.0 библиотеку ReacJS и как её использовать в будущем.

    Создание ReactJS шаблона


    Так, как я использую ОС Windows, то процесс установки буду рассказывать именно под него, но думаю, что и на другие ОС не составит труда переделать под него. Если же у вас есть и готовое React приложение, то можете пропустить следующие шаги.

    Прежде, чем приступить к скачке соответствующего пакета, нам нужно установить пакетный менеджер. Для этого нужно перейти на сайт: nodejs.org/en/download

    И скачать пакет с NodeJS, который содержит в себе уже npm соответствующей версии.

    image

    Если же после установки, когда вы вводите команду npm, вам сообщается о том, что команда не найдена, попробуйте перезагрузить компьютер, если же не поможет проверьте Path и добавьте туда путь к директории с npm, как это сделать, можно узнать здесь:


    Installing Node.js (and npm) on Windows 10


    Для того, чтобы инсталировать пакет, нам нужно прописать в командной строке:

    npm install -g create-react-app

    После того, как пакет установился, нужно прописать команду:

    create-react-app *здесь название вашего приложения*

    Если же эта команда возвращает ошибку, попробуйте прописать команду

    npx create-react-app *здесь название вашего приложения*

    После того, как все пакеты будут установлены и скачаны, вы увидите соответствующий надпись об успешном завершении создании программы.
    Читать дальше →
  • OpenCV и Java/Windows. Основы

    OpenCV (от англ. Open Source Computer Vision Library) — это библиотека алгоритмов компьютерного зрения с открытым исходным кодом. Реализована на C/C++, также разрабатывается для Python, Java, Ruby т.д. В этой статье мы рассмотрим привязку к языку программирование Java применительно к операционной системе Windows.
    Читать дальше →
  • Байты, которых нам так не хватает

    Флешка, HDD, SSD — вещи необходимые не только в быту, но и в работе. Каждый день мы имеем дело с каждым из этих устройств, но всё ли нам говорят производители этих хранилищ данных?



    Введение


    Думаю каждый, кто хоть раз покупал HDD\SSD\флешку, а потом подключал её к компьютеру, с недоумением обнаруживал, что на ней памяти меньше, чем заявлено производителем. Со временем мы привыкли к этому и стали брать накопители с запасом памяти, чтобы избежать моментов, когда нужно сохранить какой-нибудь файл, а место на носителе закончилась. В этой статье я попытаю найти эти "потерянные" байты.


    Начало пути


    Ещё со школьной скамьи тем, кто проводил за компьютером большую часть своего времени, известно, что информация в компьютере измеряется в битах. В одном байте 8 бит, в одном килобайте 1024 байта и т.д. Поэтому логично предположить, что накопителе объёмом 8Гб будет $inline$8*1024^3$inline$ байта памяти. Однако если заглянем в проводник, то обнаружим 7,44Гб.


    image


    ОК, у нас не хватает 560Мб места. Вроде немного(это эквивалентно 244 фотографиям котиков в разрешении 4К), да и знающие люди скажут, что это место занимает файловая система, но:


    1. файловая система не может занимать такой объём памяти
    2. как показали дальнейшие эксперименты это число не является константой и с увеличением заявленного объёма увеличивается и количество «потерянной» памяти

    Проверив свою флешку я решил увеличить ставки и перейти к чему-то покрупнее. Я просмотрел накопители на 16Гб, 32Гб, 128Гб и 1Тб (это все варианты, которые оказались у меня дома). И каждый раз заявленный объём отличался от фактического.


    Ниже представлена таблица измерений


    Заявленный объём Фактический объём
    8Гб 7.44Гб
    16Гб 14.89Гб
    32Гб 29.79Гб
    128Гб 119.19Гб
    1Тб 931.31Гб
    Читать дальше →