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

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

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

Компилятор GO. Добавляем цикл WHILE

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров6.7K

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

Самым простым и понятным для меня в этом плане показалась реализация цикла while. В этой статье я покажу, что у меня получилось выяснить. Вот примерный результат, к которому мы придём:

Читать далее

Интерпретатор выражений на php, без использования eval

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров1.8K

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

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

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

В общем, было решено писать интерпретатор выражений. Использование функции eval отмёл сразу, т. к. это такая потенциальная мина в безопасности, которую сам себе закладываешь. Моё субъективное мнение, что минусы от её использования перекрывают плюсы.

Читать далее

История C и C++. Часть вторая: стандартизация C и C++, Qt, Clang, Unreal Engine

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров6.2K

Вторая часть истории о том, как C и C++ стали такими, какими мы их знаем сегодня. Здесь расскажем об официальной сертификации C и C++, а также о вышедших инструментах в период с 1991 года и до наших дней.

Читать далее

Мой первый контейнер без Docker

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров41K

Технологии контейнеризации, возможно, как и у большинства из нас, плотно засели в моей голове. И казалось бы, просто пиши Dockerfile и не выпендривайся. Но всегда же хочется узнавать что‑то новое и углубляться в уже освоенные темы. По этой причине я решил разобраться в реализации контейнеров в ОС на базе ядра linux и в последствие создать свой «контейнер» через cmd.

Читать далее

ЛикБез по CAN-FD

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров10K

В этой заметке я написал про свой опыт работы с CAN шиной. Вы узнаете с какой стороны следует подходить к CAN сети.

Образно выражаясь CAN - это труба для чисел. Можно метафорично сказать, что CAN - это нервная система автомобиля. Именно по САN передаются сигналы от датчиков и к исполнительным механизмам.

Читать далее

Автоматика для водоснабжения

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

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

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

Как это работает и где там нужна автоматизация?

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

Читать далее

Разработка переходника для апгрейда ноутбука

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров20K

Приветствую, Хабр! Есть у меня ноутбук HP Stream x360 и всем он хорош, кроме одного — в качестве накопителя на борту распаяна eMMC на 32 ГБ. Данный аппарат используется в основном в поездках: для просмотра фильмов, интернет-серфинга и копирования фотографий. И очень уж неудобно каждый раз возиться с внешними флешками/винчестерами. Решил это дело исправить, но все оказалось не так просто, как хотелось бы.
Читать дальше →

Эволюция рабочего места одного программиста

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров56K

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

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

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

Читать далее

dumbproxy — что нового?

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров4.9K

dumbproxy уже упоминался на Хабре в одной из моих прошлых статей. Это HTTP(S) прокси-сервер, который работает через TLS, напрямую совместим с браузерами и браузерными расширениями, и имеет заметное количество дополнительных функций, расширяющих его границы применимости и облегчающих его использование.

Читать далее

Безопасный HTTPS-прокси менее чем за 10 минут

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

Это руководство описывает развёртывание HTTPS-прокси с помощью dumbproxy на практически любом Linux-сервере. Потребуется только curl и рутовый доступ.

Читать далее

Программа, которая падала на первой команде

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

Нашего клиента донимали отчёты о вылетах, показывавшие, что его программа ломается на самой первой команде.

Я открыл один из дампов вылета, он оказался настолько странным, что отладчик даже не мог понять, что пошло не так.

Читать далее

Как сделать и настроить собственный VPN

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров383K

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

В статье рассмотрим четыре способа создания собственного VPN. Начнем с самого простого варианта, что под силу даже начинающим пользователям ПК.

Читать далее

Автоматизация снятия показаний со счетчиков воды

Время на прочтение6 мин
Количество просмотров219K
Все знают, что лень двигатель прогресса. Так случилось и в моем случае.



В квартире присутствует 6 точек раздачи воды (3 холодные и 3 горячие). На каждой из точек стоит счетчик.
Каждые 2 счетчика спрятаны за люками скрытого монтажа, один из люков находится за зеркалом, которое нужно снять, чтобы до него добраться.

Раз в месяц с 20 по 25 число необходимо снимать показания со всех счетчиков и отправлять данные в Управляющую Компанию на бланке определенного образца.

В какой-то момент мне надоело открывать люки, снимать зеркало и было решено автоматизировать снятие показаний.
Читать дальше →

Как устроена работа в частном конструкторском бюро: взгляд изнутри

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров6K

Публикуем статью от частного конструкторского бюро Volkov-KB. Реверс-инжиниринг против традиционного проектирования, модели для парка аттракционов и рабочие сценарии использования КОМПАС-3D — обо всем этом в тексте.

Читать далее

Сколько памяти нужно в 2024 году для выполнения миллиона конкурентных задач?

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров15K

Помните сравнение потребления памяти для асинхронного программирования на популярных языках 2023 года?

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

Давайте снова проведём бенчмарки и изучим результаты!

Читать далее

Сказ о термопасте

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров22K

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

Читать далее

Улучшаем систему видеонаблюдения, ч.1

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

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

А для контроля за пространством вокруг эта функция довольно полезна.

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

Идея использовать PIR‑датчик тоже к успеху не привела: он реагирует на холодные струи дождя и на воздушные потоки разной температуры, что дает массу ложных срабатываний.

Итак, нам нужен «детектор человеков».

Первым вариантом решения стало использование CodeProject.AI.

Это AI‑сервер, который способен обрабатывать изображения, идентифицируя на них те или иные объекты. Взаимодействие с ним производится через WebAPI.
Несмотря на то, что на сайте указаны различные варианты использования — работают почему‑то только docker‑образы.

Читать далее

Windows 11 24H2 IoT Enterprise LTSC – что за зверь, и чем он хорош?

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров133K

Месяц назад я писал статью об издании Enterprise G, созданную Microsoft для китайского правительства, в котором много лишнего отключено. Статья вызвала большой интерес, много кому нужна ОС с максимальным функционалом — при вашем желании его использовать, но с возможностью отключить всё (или почти всё) ненужное. У версии Enterprise G основной недостаток в том, что политика продукта, прописанная в цифровой лицензии, запрещает установку любых языковых пакетов, отличных от китайского и английского. То бишь, русского интерфейса легким путем не достичь. Возникает вопрос выбора другого издания.

Сразу на ум приходит версия Enterprise LTSC, как полнофункциональная с длительным циклом обслуживания и поддержки, благо для Windows 11 24H2 она утекла еще в апреле. Но, оказывается, есть и более достойный выбор, о котором мы сейчас с вами и поговорим. Речь идёт об издании IoT Enterprise LTSC. Что это такое? Чем оно лучше, чем Enterprise LTSC? А чем хуже? Как её русифицировать и как активировать? Об это сегодняшний разговор.

Чем же так отличается IoT Enterprise LTSC?

Я тебя найду и позвоню

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров170K

Абсолютно легальные инструменты за смешные деньги могут позволить вам: звонить всем активным клиентам ваших конкурентов, построить десяток эффективных мошеннических схем, или даже позвонить предполагаемому любовнику вашей девушки/жены, а заодно проверить где она была вчера вечером! Обнаружил я это в ходе одного из расследований утечек заявок клиентов. И я твердо уверен, что такого быть не должно. Инструмент использующийся в статье эффективнее всех утечек вместе взятых, нашими данными не должны так легко легально торговать практически в режиме онлайн. Можно найти любого и позвонить любому из нас. Почему и как это работает, какие риски это несет и как этому противодействовать?

Расскажу далее.

OSDEV: Разработка аллокатора на С++ часть 1. Неявный список свободных блоков с граничными тегами

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.7K

Доброго времени суток.

При разработке ОС на с++ мы сталкиваемся с рядом трудностей, таких как отсутствие стандартной библиотеки и ABI с++ и прочее в этом духе. При чем перед реализацией PageAllocator и прочих аппаратных механизмов хотелось бы иметь какую то стандартную библиотеку позволяющую делать хоть что то. Об этом и пойдет речь.

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

Речь пойдет о немного переделанном алгоритме Кнута "неявный список блоков с граничными тегами" который описан в конце третьего тома в разделе "Распределение памяти". Его идея предельно проста:

Мы берем некоторый отрезок памяти, назовем его кучей и разбиваем его на блоки такого вида:

Читать далее
1
23 ...

Информация

В рейтинге
3 091-й
Откуда
Краснодар, Краснодарский край, Россия
Зарегистрирован
Активность

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

Разработчик приложений, Инженер электронных устройств
Средний
.NET Core
Linux
Python