Search
Write a publication
Pull to refresh
-2
0
Алексей Дебелов @AlienJust

Разработчик ПО

Send message

ТАУ для самых маленьких: пример реализации ПИД-регулятора в Unity3D

Reading time24 min
Views91K

Вместо введения


Системы автоматического управления (САУ) предназначены для автоматического изменения одного или нескольких параметров объекта управления с целью установления требуемого режима его работы. САУ обеспечивает поддержание постоянства заданных значений регулируемых параметров или их изменение по заданному закону либо оптимизирует определенные критерии качества управления.

Пишем бота-кликера на Python для Lineage 2

Reading time7 min
Views177K


Предисловие


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


Когда-то в школьные годы был увлечен одной из популярных MMORPG — Lineage 2. В игре можно объединяться в кланы, группы, заводить друзей и сражаться с соперниками, но в общем игра наполнена однообразными действиями: выполнением квестов и фармом (сбор ресурсов, получение опыта).


В итоге решил, что бот должен решать одну задачу: фарм. Для управления будут использоваться эмулированные клики мыши и нажатия клавиш клавиатуры, а для ориентирования в пространстве — компьютерное зрение, язык программирования — Python.

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

Нотной грамоте учат неправильно*

Reading time11 min
Views254K

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


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


Представьте что было бы, если бы обычной грамоте учили так же. Но мы, почему-то, в большинстве своем читать и писать таки научились.


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


* Дисклеймер

Прошу прощения, если заголовок статьи показался вам чересчур дерзким и провокационным. Таковым он, в общем-то, и является.


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


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


Эффективность я оценивал исключительно на себе, поскольку сей субъект оказался самым доступным для исследования.

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

Бюджетный спектрометр-пульсметр Uprtek MF250N

Reading time4 min
Views19K
Спектрометр — прибор, измеряющий спектр света и позволяющий определить такие параметры, как цветовая температура и индекс цветопередачи. Пульсметр — прибор, измеряющий пульсацию света.

Uprtek MF250N совмещает эти два прибора и, судя по всему, является самым дешёвым спектрометром в мире.

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

Как правильно читать состав косметики

Reading time8 min
Views83K


Ингредиенты перечисляются по понижению массовой доли: что ближе к началу, того больше по массе. Вещества, которых в составе менее 1% считаются равнозначными для этого списка, и их можно указывать после основных в любом порядке. В РФ по закону указывается всё без исключения (нет ситуации, когда при малом содержании можно пропускать вещество), и на практике это соблюдается. Почему — чуть ниже.

Нельзя писать «консервант» без указания, что это именно такое, нельзя писать «минеральный комплекс кислот» без детализации, что это такое, но можно писать коммерческие названия. То есть регистрируете свой минеральный комплекс кислот или консервант как товарный знак — и пишете уже его. Можно писать химические наименования или торговые, причём можно и латиницей, и на русском. В непонятных веществах, например, часто прячут то, что мнительные женщины не хотят увидеть на этикетке.
Читать дальше →

Как прочитать большой файл средствами PHP (не грохнув при этом сервак)

Reading time9 min
Views50K

Перевод статьи Christopher Pitt.


PHP разработчикам не так уж часто приходится следить за расходом памяти в своих приложениях. Сам движок PHP неплохо подчищает мусор за нами, да и модель веб-сервера с контекстом исполнения, "умирающим" после выполнения каждого запроса, позволяет даже самому плохому коду не создавать больших долгих проблем.


Однако, в некоторых ситуациях, мы можем столкнуться с проблемами нехватки оперативной памяти — например, пытаясь запустить композер на маленьком VPS, или при открытии большого файла на сервере не богатом ресурсами.


Fragmented terrain


Последняя проблема и будет рассмотрена в этом уроке.

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

SQL Server JSON

Reading time26 min
Views41K


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

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

Такое пафосное вступление имеет определенные на то основания, поскольку долгое время на Microsoft Connect поддержка работы с JSON на SQL Server была одной из самых востребованных фич. Шли годы и неожиданно данный функционал реализовали вместе с релизом SQL Server 2016. Забегая вперед скажу, что вышло очень даже хорошо, но Microsoft не остановилась на этом и в SQL Server 2017 существенно улучшили производительность и без того быстрого JSON парсера.
Подробнее

F# на Linux как лекарство для души

Reading time3 min
Views19K

А у вас никогда не возникало ощущения, что «вот это» уже надоело? Что хочется чего-то нового? «Вот этим» может быть что угодно: игра, работа, машина. Что-то любое, что повторяется изо дня в день. А в программировании? Под катом вы найдете историю об усталости от C# и выборе более интересного подхода.


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

Как мы делали приложение под Windows 10 с Fluent Design (UWP/C#)

Reading time16 min
Views13K
Мы в ivi давно собирались обновить наше приложение под Windows 10 (которое для ПК и планшетов). Мы хотели сделать его эдаким «уютным» уголком для отдыха. И поэтому анонсированная недавно Microsoft-ом концепция fluent design пришлась нам очень кстати.

Но я не буду здесь рассказывать про стандартные компоненты, предлагаем Microsoft-ом для fluent design-а (Acrylic, Reveal, Connected-анимации и др.), хотя мы их, конечно, используем тоже. С ними всё просто и понятно — бери документацию и пользуйся. 

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

image

Идея в том, что мы используем depth и motion из fluent design system. Центральный элемент как бы слегка приподнимается надо всеми остальными. Это достигается за счёт анимации его размера и тени во время скролла. 
Читать дальше →

Rust vs. C++ на алгоритмических задачах

Reading time9 min
Views54K
Не так давно я стал присматриваться к языку программирования Rust. Прочитав Rustbook, изучив код некоторых популярных проектов, я решил своими руками попробовать этот язык программирования и своими глазами оценить его преимущества и недостатки, его производительность и эко-систему.

Язык Rust позиционирует себя, как язык системного программирования, поэтому основным его vis-à-vis следует называть C/C++. Сравнивать же молодой и мультипарадигмальный Rust, который поддерживает множество современных конструкций программирования (таких, как итераторы, RAII и др.) с «голым» C я считаю не правильно. Поэтому в данной статье речь пойдет об сравнении с C++.

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

Статья построена следующим образом: в первой части я опишу основные плюсы и минусы, на которые я обратил внимание, работая с Rust. Во второй части я приведу краткое описание алгоритмических задач, которые были решены в Rust и C++, прокомментирую основные моменты реализации программ. В третьей части будет приведена таблица замера производительности программ на Rust и C++.
Читать дальше →

Рефлексия в C++14

Reading time15 min
Views32K
Данная статья является расшифровкой (с небольшими правками) доклада Антона antoshkka Полухина — “Немного магии для C++14”.

Я тут недавно ковырялся с C++ и случайно открыл пару новых приемов метапрограммирования, которые позволяют делать рефлексию в C++14. Пара мотивационных примеров. Вот у вас есть какая-то POD структура, в ней какие-то поля:

struct complicated_struct {
    int i;
    short s;
    double d;
    unsigned u;
};

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

#include <iostream>
#include "magic_get.hpp"

struct complicated_struct { /* … */ };

int main() {
    using namespace pod_ops;
    complicated_struct s {1, 2, 3.0, 4};
    std::cout << "s == " << s << std::endl; // Compile time error?
}

Функция main, в ней создаем переменную нашей структуры, как-то ее инициализируем через aggregate инициализацию, а потом эту переменную пытаемся вывести в std::cout. И в этот момент у нас, по идее, должна быть ошибка компиляции: мы не определили оператор вывода в поток для нашей структуры, компилятор не знает как все это скомпилировать и вывести. Однако, оно скомпилируется и выведет содержимое структуры:

antoshkka@home:~$ ./test
s == {1, 2, 3.0, 4}

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

Правильные многогранники. Часть 1.1 Символ Шлефли

Reading time13 min
Views27K
image Хабрахабр, уважаемые коллеги! Когда смотрю на соты, то думаю не о пчёлах, а о Символе Шлефли. Прочитав эту статью, вы уже не сможете смотреть на мир по старому, вы поймёте, что между сотами и правильными многогранниками есть прямая связь.

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

Двенадцать советов по повышению безопасности Linux

Reading time8 min
Views55K
imageМы живём в опасное время: едва ли не каждый день обнаруживаются новые уязвимости, на их основе создают эксплойты, под ударом может оказаться и обычный домашний компьютер на Linux, и сервер, от которого зависит огромная организация.

Возможно, вы уделяете внимание безопасности и периодически обновляете систему, но обычно этого недостаточно. Поэтому сегодня мы поделимся двенадцатью советами по повышению безопасности Linux-систем на примере CentOS 7.
Читать дальше →

Какой была на вкус еда семнадцатого века?

Reading time6 min
Views56K

Диего Веласкес, «Старуха жарит яйца», 1618 г

В качестве официального портретиста испанских монархов на пике своей славы, Диего Веласкес писал королев, императоров и богов. Но одна из наиболее знаменитых его картин приоткрывает окно в более скромный мир. Женщина жарит яйца в горячем масле и готовиться вынуть их при помощи простой деревянной ложки. За ней слуга, несущий наполовину наполненную бутыль вина и дыню, обвязанную бечёвкой.

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

Боты на .Net Core для Telegram, Slack и Facebook

Reading time8 min
Views90K
Недавно на одном из проектов банка возникла задача написать бота. Итогом этого опыта стал данный текст, который предназначен, прежде всего, для начинающих разработчиков.



Практически все, кто пользуется современными средствами обмена сообщениями, сталкивались с ботами. Одно из определений бота – это программа, выполняющая автоматически и/или по заданному расписанию какие-либо действия через интерфейсы, предназначенные для людей.

Боты могут использоваться для информирования, для автоматизации процессов (например, автоматической генерации задачи в TFS на основе письма пользователя) и для многих других целей, но т.к. одной статьи не хватит, чтобы рассмотреть все варианты, далее пойдёт рассказ лишь о том, как создать бота для обработки команд.
Читать дальше →

Лучшие VPN-решения для пользователей Linux

Reading time10 min
Views214K
Если вы выходите в интернет со своего Linux-ноутбука, вам стоит знать об особенностях виртуальных частных сетей (Virtual Private Network, VPN). Эта технология особенно актуальна для тех, кто подключается к Сети через точки доступа, расположенные в общественных местах, однако, во многих ситуациях VPN не повредит и компьютеру, которым пользуются дома.



VPN позволяет защищать данные, передаваемые из точки «А» в точку «Б». Точка «А» — это ваш компьютер. Точка «Б» — это VPN-провайдер, или VPN-система, которую развернули вы сами, либо в облаке, либо где-то ещё, например — в офисе. С VPN-сервисами можно взаимодействовать, используя множество протоколов, но их суть остаётся одной и той же: трафик, который путешествует между компьютером и VPN-сервисом, шифруется. Благодаря этому обеспечивается защита данных от перехвата на пути от пункта отправления к пункту назначения.

В ходе работы с VPN применимо множество сценариев, касающихся маршрутизации. Типичный сценарий заключается в перенаправлении всего трафика по VPN-соединению, но, кроме того, можно применить концепцию «раздельного туннелирования». При таком подходе некоторые данные идут через VPN, а другие — по обычному интернет-соединению в соответствии с правилами маршрутизации.
Читать дальше →

Десять лучших антивирусов для Linux

Reading time5 min
Views185K
Операционные системы — это очень сложные конструкции, в которых находится место для ошибок, проблем и других нежелательных явлений. Особые опасения вызывают искусственно созданные «явления», которые мы называем вирусами, троянскими конями, сетевыми червями и шпионскими программами. Операционные системы семейства Linux считаются неплохо защищёнными от подобного рода проблем, но вероятность их возникновения далеко не нулевая. Для защиты от вредоносного ПО специалисты по безопасности разрабатывают программы, которые обычно называют антивирусами.



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

Языки России в Интернете

Reading time15 min
Views34K

Я начал писать этот текст уже давно, так что он не планировался как политически актуальный. Но так вышло, что именно в эти дни у СМИ появился инфоповод, связанный с малыми (миноритарными) языками России. Возможно, что исследование, о котором я пишу ниже, что-то кому-то в этом смысле прояснит.


Сколько в России языков?


Это не так просто осознать, но в России говорят на внушительном числе языков. Более того, в России говорят на таких языках, которые больше нигде не распространены. Скажем, в России обитают миллионы украинцев и узбеков, вместе с тем существуют и суверенные государства Украина и Узбекистан, где соответствующие языки являются государственными. А вот в России говорят на башкирском, тувинском, удмуртском и многих (действительно многих) других языках, у которых своего государственного статуса больше нигде нет.


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


А насколько эти языки адаптировались к новым цифровым реалиям? Правда ли, что на них говорят только в отдалённых горных аулах? Или всё-таки они являются полноправным способом онлайн-общения? Несколько лет назад мы с коллегами решили это выяснить.

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

Просто купите себе чёртовых роботов

Reading time11 min
Views31K
Пять рядов по двести станков в каждом, одновременно вгрызаясь резцами в заготовки из стали, выбрасывали готовые детали на непрерывную ленту конвейера, останавливались на время, необходимое для закрепления в зажимах новых заготовок, зажимали их и, опять вгрызаясь резцами в заготовки, выбрасывали готовые детали.

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

Еще не успели просохнуть чернила на их докторских дипломах, как он с Финнерти и Шефердом был направлен в механический цех для производства таких записей. Начальник цеха указал им своего лучшего работника — как же было его имя? — и, подшучивая над озадаченным токарем, трое способных молодых людей подключили записывающий аппарат к рычагам токарного станка. Гертц! — вот как звали этого токаря. Руди Гертц, человек старого уклада, которого вот-вот должны были отправить на пенсию. Сейчас Пол вспомнил и его имя и то почтение, с которым старик относился к талантливым молодым людям.

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

Объясняем современный JavaScript динозавру

Reading time15 min
Views267K


Если вы не изучали JavaScript с самого начала, то осваивать его современную версию сложно. Экосистема быстро растёт и меняется, так что трудно разобраться с проблемами, для решения которых придуманы разные инструменты. Я начал программировать в 1998-м, но начал понимать JavaScript только в 2014-м. Помню, как просматривал Browserify и смотрел на его слоган:


Browserify позволяет делать require («модули») в браузере, объединяя все ваши зависимости


Я не понял ни слова из предложения и стал разбираться, как это может помочь мне как разработчику.


Цель статьи — рассказать о контексте, в котором инструменты в JavaScript развивались вплоть до 2017-го. Начнём с самого начала и будем делать сайт, как это делали бы динозавры — безо всяких инструментов, на чистом HTML и JavaScript. Постепенно станем вводить разные инструменты, поочерёдно рассматривая решаемые ими проблемы. Благодаря историческому контексту вы сможете адаптироваться к постоянно меняющемуся ландшафту JavaScript и понять его.

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity