Как стать автором
Обновить
9
0.1

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

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

Как написать рефлексию для C++

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

C++ поистине противоречивый язык. Старый добрый С существует аж с 1972 года, С++ появился в 1985 и сохранил с ним обратную совместимость. За это время его хоронили ни раз и ни два, сперва Java, теперь его потихоньку продолжают хоронить Go и Rust. Все его недостатки пережеваны множество раз. Если вы пришли в мир С++ из других ООП языков, то здесь вы не найдете...

Читать далее
Всего голосов 30: ↑29 и ↓1+35
Комментарии44

Если гипотеза Римана не верна…

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

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

Или нет? Что если мы грубо пошуруем ломиком в святая святых математики и подвигаем нетривиальные нули зета функции? Сдвинутся ли со своих мест простые числа? Вас ждут картинки и видео, и очень мало формул.

Читать далее
Всего голосов 25: ↑19 и ↓6+20
Комментарии13

Согласование импедансов: переходные процессы и переходные отверстия

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

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

Металлизировать отверстия
Всего голосов 54: ↑53 и ↓1+66
Комментарии25

Код доступа Termux

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

Лонгрид посвящается любителям CLI в знак солидарности лучшего эмулятора терминала на OS Android, который испытывает «кошмарную» монополию Google.

В данной работе вербализация пойдет о нижеизложенном со всеми остановками:

[+] глубоко настраивать средý (флэшка, виджет, стиль, зеркала и конфиги);
[+] управлять серверами через ssh;
[+] скачивать ролики/отрывки с YouTube;
[+] нарезать видео, создавать gif;
[+] воспроизводить текст/музыку/радио прямо в CLI;
[+] нарезать mp3-бигфайлы (аналогов приложений на Android попросту нет), и склеивать аудиофайлы;
[+] редактировать документы;
[+] проверять орфографию: как текстовых файлов, так и различных статей по url, например, проверка орфографии статей на Habr-e;
[+] генерировать словари различной сложности со скоростью Си;
[+] создавать блок-схемы; графики; облако слов и даже 3D-визуализацию;
[+] заниматься Data Science на Android-мощностях;
[+] тестировать интернет соединение/интерфейс (требуется частично Root);
[+] сниффить/сканировать сети (требуется частично Root);
[+] запускать и управлять TOR-сетью (deleted);
[+] управлять приложениями и процессами в ОС Android (требуется Root);
[+] анализировать память;
[+] защищать любые данные от случайного редактирования/уничтожения (требуется Root);
[+] автоматически шифровать и бэкапить по ночам любые данные в своё облако;
[+] чекать username(s) и e-mail(s);
[+] проводить аудит безопасности (об опасности сердить скрипт-кидди с их любимыми: «сниффить, парсить, брутить, дампить, сканить, фишить»);
[+] работать с электропочтой;
[+] изучать UNIX/shell;
[+] программировать на Android (на выбор пользователя. В Termux портированы несколько интерпретируемых и компилируемых языков программирования);
[+] запускать python/php/npm скрипты в т.ч. в одно касание с рабочего стола;
[+] работать с криптографией, стеганографией и цифровыми подписями;
[+] парсить данные;
[*] и даже запускать GNU-GUI-софт из CLI.

Погрузиться в GNU культуру
Всего голосов 28: ↑27 и ↓1+28
Комментарии46

Рецепты Nginx: авторизация через auth0

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

Для приготовления авторизации через auth0 нам понадобится сам nginx и его плагины encrypted-session, headers-more, auth_request, set-misc, echo, json, evaluate и jwt. Можно также воспользоваться готовым образом.

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

Как сделать ERP и причем здесь Odoo

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

Хотелось бы поговорить про ERP системы в 2022 году, и можно было бы здесь описать стати из wiki про то, что такое ERP система общими словами и многое другое, но я не про это, а про то, есть ли вообще место ERP системам в современно микросервисном мире.

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Комментарии57

JNI Часть 1: Введение

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

Всем привет! Меня зовут Роман Аймалетдинов и я разрабатываю клиентское приложение Ситимобил. Решил написать небольшую серию из трех статей по JNI, так как технология используется редко, но иногда она бывает очень полезной. Несмотря на то, что я разрабатываю классические приложения под Android, иногда хочется посмотреть технологии рядом со своей специализацией.

Читать далее
Всего голосов 22: ↑21 и ↓1+21
Комментарии11

Домашний веб-сервер для чайников

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

Привет, Хабр! Относительно недавно после пары лет перерыва в айти, потраченных на изучение японского языка, мне пришлось срочно обновлять свои знания на работе. Ну знаете, искать возможности исполнить все хотелки начальника, как и положено эникею. Меня ждало много увлекательных открытий, но при этом, как водится, и немало боли и борьбы с непонятками. Docker, контейнеры, реверс DNS и реверс прокси, получение TLS сертификатов. В какой-то момент я наконец дошёл до удобного решения, которым я теперь хочу поделиться.

В своё время домашний сервер очень облегчил бы мне понимание Docker’а, да и удобство работы с ним неслабо бы повысил. Поэтому возникла идея написать эту статью, после прочтения которой любой человек даже с поверхностными знаниями в информационных технологиях сможет поставить себе постоянно доступный домашний сервер на базе Docker Swarm с удобной веб-мордой, простым получением TLS-сертификатов и Heroku-подобным функционалом (для чего будем использовать PaaS CapRover). 

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

Читать далее
Всего голосов 24: ↑22 и ↓2+23
Комментарии29

JavaScript редактор SVG диаграмм который весит в 6,5 раз меньше bootstrap (библиотека с открытым исходным кодом)

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

Demo | GitHub

Эксперименты с созданием редактора диаграмм на Blazor Webassembly (Blazor WebAssembly: Drag and Drop в SVG, Blazor WebAssembly: соединительные линии в SVG) показали что технология не годится для интенсивных манипуляций с DOM.

То что будут проседания было известно заранее: WebAssembly не имеет доступа к DOM, любые изменения только через вызовы JavaScript. Задержки оказались такими большими, что перетаскивание на мобильном тормозило уже после добавления третьей фигуры.

Читать далее
Всего голосов 36: ↑34 и ↓2+37
Комментарии17

Программирование на телефоне используя эмулятор терминала Termux

Время на прочтение2 мин
Количество просмотров151K
Приветствую читателей! В этой статье я расскажу о том, как можно, имея android телефон, писать программы. Говорю сразу — root права не нужны.

Что нам понадобится?


Первое, что нам понадобится — андроид телефон со установленным на него приложением Termux (есть в Google Play). Для полноценной работы с терминалом, нам нужно достаточно памяти. У меня с десятками установленных пакетов приложение занимает 1.5 ГБ памяти.
Так же, для комфортного кодинга желательно, чтобы телефон был с поддержкой OTG, и у вас была клавиатура с подключением по USB, чтобы писать код на клавиатуре (куда удобнее). Если уж нет этого, то качаем клавиатуру Hacker's Keyboard. В ней есть клавиша Ctrl, что нам важно.

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

Веб-приложение на C++, или укрощение демона FastCGI

Время на прочтение8 мин
Количество просмотров27K
В настоящее время, благодаря таким инструментам как NodeJS, создание веб-приложения — сущий пустяк. Скачал бинарник, сваял js в 5 строчек кода и можно хвастаться. А если подключить express и добавить ещё 5 строчек, то получим полноценное веб-приложение с роутингом, шаблонами, сессиями и другими прелестями. Так просто, что даже скучно. И стало мне интересно: как обстоят дела у моего старого знакомого С++, с которым уже 5 лет не виделся. В своё время прельстил меня ActionScript и прочий JavaScript, а о добром друге, который не раз выручал, совсем позабыл. В свете недавних статей о Configurable Omnipotent Custom Applications Integrated Network Engine (сокращено Cocaine), попался мне на глаза проект под названием Fastcgi Daemon, на основе которого функционирует HTTP-интерфейс Cocaine. И так, знакомьтесь
Читать дальше →
Всего голосов 36: ↑33 и ↓3+30
Комментарии24

Пишем свой системный монитор (Linux)

Время на прочтение9 мин
Количество просмотров41K
В этой статье я опишу процесс создания собственного системного монитора. Данный системный монитор показывает:
  • Hostname
  • Имя пользователя
  • Uptime
  • Имя модели процессора
  • Частоту процессора
  • Загрузку процессора
  • Количество оперативной памяти
  • Количество используемой оперативной памяти без кэшируемых данных
  • Запущенные процессы
Читать дальше →
Всего голосов 80: ↑54 и ↓26+28
Комментарии68

Просто о шаблонах C++

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

Статья для тех, кто боится слова template в C++. Вводная информация с примерами и их подробным разбором.

Читать далее
Всего голосов 62: ↑61 и ↓1+70
Комментарии35

Простая клиентская и серверная авторизация пользователя Ajax-сайта с помощью ВКонтакте API

Время на прочтение8 мин
Количество просмотров67K
Для одного проекта понадобилось сделать авторизацию пользователя на сайте с помощью ВКонтакте API как на клиентской стороне, с помощью javascript Open API, так и на серверной, с помощью PHP.

Разрешение доступа к API ВКонтакте

На первый взгляд, задача не такая уж и интересная, благо у ВКонтакте есть хорошая документация с подробным описанием, что да как, и даже пример клиентской авторизации, плюс, в сети уже есть очень много сайтов с авторизацией через ВКонтакте API.
Однако, не всё так просто
Всего голосов 18: ↑9 и ↓90
Комментарии3

Как работает крупнейший маркетплейс: что у него под капотом

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

Всем привет, я — Сергей Бобрецов, CTO в Wildberries. 

Сегодня Wildberries — самый большой маркетплейс в России и мы так часто заняты повседневным хайлоадом, что не всегда успеваем рассказать что за всем этим стоит: какие технологии и решения под капотом, как мы справляемся с адом черной пятницы и ужасами киберпонедельника.

Стоит начать с того, что основным генератором прогресса в WB с самого начала и по сей день является фактор роста. По бизнес-метрикам мы растем примерно х2 каждый год уже много лет, а по техническим (количестуву запросов / транзакций / трафику / объему данных и т. д.) — рост может быть даже быстрее, и это создает множество вызовов: технических, архитектурных и организационных. 

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

Сегодня я хочу рассказать немного про нашу инфраструктуру.

Читать далее
Всего голосов 63: ↑48 и ↓15+39
Комментарии55

C++20 Ranges — Полное руководство

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

C++20 Ranges, также известная как STL v2, представляет из себя более эффективную замену существующих алгоритмов и технических средств STL. В этой статье мы пройдемся по изменениям, введенным Ranges (диапазоны/интервалы), обсудим представления (views), которые представляют собой новый подход к композиции алгоритмов, и рассмотрим примеры реализации FizzBuzz с использованием трех разных методов, в каждом из которых используются некоторые аспекты библиотеки Ranges.

Однако сразу следует отметить, что Ranges — это одна из фич, реализованных в C++ 20 в полуготовом состоянии. C++23 должен приблизить нас к полной поддержке всего задуманного в рамках Ranges. Поэтому в некоторых примерах будет использоваться библиотека range v3.

Читать далее
Всего голосов 10: ↑6 и ↓4+4
Комментарии28

Отображение данных в формате json на структуру C++

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

В идеале хотелось бы определить структуру С++


struct Person {
 std::string name;
 int age;
 bool student;
} person;

передать экземпляр person в метод отображения вместе с данными json_data


map_json_to_struct(person, json_data)

после чего просто пользоваться заполненной структурой


std::cout << person.name << " : " << person.age;

StructMapping пытается решить эту задачу.

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

Создание веб-компонентов с помощью Vue 3.2

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

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

Как разработчик Vue, в идеале мы хотели бы просто использовать наш фреймворк для создания сложных пользовательских интерфейсов. Но иногда мы оказываемся в описанной выше ситуации, работая с другим фреймворком JavaScript, таким как React или Angular, или используя внутреннюю систему рендеринга, такую как Rails или Laravel. Как мы можем создать многоразовый пользовательский интерфейс для различных вариантов внешнего интерфейса?

В Vue 3.2 у нас теперь есть решение этой проблемы: веб-компоненты на базе Vue!

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии8

Вычисляем на видеокартах. Технология OpenCL. Часть 1a. Как работает OpenCL

Время на прочтение7 мин
Количество просмотров15K
22 июня автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов провёл вебинар «Вычисляем на видеокартах. Технология OpenCL».



Мы подготовили для вас его текстовую версию, для удобства разбив её на смысловые блоки.

0. Зачем мы здесь собрались. Краткая история GPGPU.
1a. Как работает OpenCL.
1b. Пишем для OpenCL.
2. Алгоритмы в условиях массового параллелизма.
3. Сравнение технологий.

Мы обещали, что разберём написание полноценной программы уже в этой части, но материала оказалось слишком много, и мы разбили эту часть надвое. В первой половине расскажем про основные принципы, которые должен знать каждый OpenCL-разработчик, а во второй напишем программу.

Есть мнение, что для написания эффективного кода для GPU программист обязан понимать архитектуру видеокарты. И это мнение не чьё-нибудь там, а NVIDIA (см. Лекции NVIDIA по GPGPU). Не будем спорить и разберём базовые принципы работы видеокарты.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии9

Варим суп из стали: оптимизация логистики ковшей и как устроен цех КЦ № 2

Время на прочтение8 мин
Количество просмотров20K
Привет из конвертерного цеха металлургического комбината! Смотрите, у нас тут есть вот такой суп в ковше, стоящем на сталевозе:

image
Таких ковшей на 320 тонн стали в цехе 40 штук, и они медленно остывают. Этой стали грустно и одиноко, она подмерзает. Через эти ковши проходит 10 миллионов тонн стали в год, это 14% стали России

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

image
На участке аргонной установки

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

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

Но давайте начну с, собственно, рассказа про то, что же именно оптимизируется в цехе.
Читать дальше →
Всего голосов 109: ↑109 и ↓0+109
Комментарии39

Информация

В рейтинге
3 492-й
Откуда
Йошкар-Ола, Марий Эл, Россия
Дата рождения
Зарегистрирован
Активность