Search
Write a publication
Pull to refresh
Вадим @BigDflzread⁠-⁠only

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

Send message

Как синхронизировать потоки в Java

Level of difficultyEasy
Reading time6 min
Views6.8K

Многопоточность — это не просто возможность приложения выполнять несколько задач одновременно, это его способность делать это эффективно и безопасно. В Java многопоточность неотделима от синхронизации, ведь именно она помогает управлять состоянием разделяемых ресурсов между потоками.

Всё начинается с потребности в быстродействии и масштабируемости. C несколькими потоками можно обрабатывать больше операций одновременно.

В этой статье мы рассмотрим, как синхронизировать потоки в Java.

Читать далее

Чистим права доступа к файлам и папкам от удалённых пользователей

Level of difficultyMedium
Reading time1 min
Views3K

Многие системные администраторы в своей практике сталкиваются с файлопомойками, на которых их коллеги нерадивые назначали права к файлам и папкам напрямую пользователю, а не группе доступа. А пользователей со временем удаляли из домена. Как итог имеем гору файлов и папок, у которых в разделе безопасность мы видим гору sid ов. Чтобы побороть данную проблему предлагаю небольшой powershell скрипт

Читать далее

Фокусы с опторазвязкой

Level of difficultyMedium
Reading time9 min
Views32K

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

Читать далее

Насколько быстр Javascript? Симулируем 20 миллионов частиц

Level of difficultyEasy
Reading time23 min
Views25K

Я бросил себе вызов: симулировать 1000000 (миллион) частиц на чистом Javascript на телефоне, используя только CPU и добившись 60 FPS.

Поехали.

Задача не особо сложна, если выполнять всю работу на GPU, но правило гласит, что нужно пользоваться только CPU, при этом работая на JS, так что никакого WASM.

Читать далее

Как правильно сделать апгрейд ОС — установить Windows 11 поверх существующей с сохранением приложений и настроек

Level of difficultyMedium
Reading time7 min
Views32K

Сегодняшний разговор пойдет о том, как правильно следует устанавливать 64-битную Windows 11 поверх ранее установленной 64-битной операционной системы Windows 7, 8, 10 или 11. Не пропагандирую переход на Windows 11, — выбор за вами, если это вам не нужно, ради бога, — но давайте поможем тем кто хочет это сделать, но встречается с разными сложностями на пути. Хотя при этом, заметка в целом полезна и тем, кто использует, и планирует далее использовать устаревшие системы, — рассказанный мной способ установки ОС «поверх» или «апгрейд» в целом общий для всех версий Windows, я лишь буду отмечать тонкости ранее мне не встречающиеся. Чего еще не будет в этой статье, так это вопросов совместимости с ПО и железом, — такое коротко и обобщенно не описать, решать нужно конкретно поставленную задачу. Обновлять ОС на совсем уж старом железе, наверное, нецелесообразно, а способов заставить работать древний софт на современных ОС известно много, но они тоже подбираются под нужды.

Собственно, начать об обновлении ОС я хочу с того, что Microsoft всегда имеет «матрицу обновляемости» (upgrade matrix) и четкие правила того, что на что может быть обновлено. Начнем с матрицы (а как иначе, Нео?). В любой версии и издании Windows в папке C:\Windows\servicing\Editions лежит файл UpgradeMatrix.xml, в котором четко прописано, с каких версий и изданий вы можете выполнить обновление на данную систему. Для ОС, которая в ISO образе, или на установочной флешке, этот файл лежит внутри install.wim, его проще всего открыть 7zip архиватором и посмотреть, если есть интерес. Разбирать его детально я сегодня не буду, это скучная задача, поговорим о сложностях, возникающих при обновлении ОС.

Читайте, задавайте вопросы, отвечу! :)

Как настроить почтовый сервер в Debian и Ubuntu с ispmanager, чтобы защититься от спама

Level of difficultyMedium
Reading time11 min
Views8.1K

Собрал способы по созданию и настройке безопасного почтового сервера на операционной системе Linux Debian 11 bullseye. Основное внимание уделил инструментам борьбы со спамом — таким как Greylisting, DNSBL и SpamAssassin.

Статья также пригодится, если используете операционные системы Ubuntu 22.04.4 LTS (Jammy Jellyfish), Ubuntu 20.04 LTS (Focal Fossa) и Debian 10 (buster). 

В этой статье рассмотрим:

- Как установить Exim и Dovecot

- Создание почтового домена и электронной почты

- Настройка DNS, rDNS записи и smtp_banner

- Защита от спама

Читать

Все о версиях Windows 10 и как максимально продлить поддержку своей ОС

Level of difficultyEasy
Reading time7 min
Views58K

10 лет назад я писал заметку Всё о версиях Windows 8.1 и о том, как легально загрузить последний образ без подписки / Хабр (habr.com), где рассказывал по сути о версиях образов, - то есть о том какие обновления Microsoft интегрировал в выкладываемые образы. С тех пор утекло много воды, сегодняшний темп выхода обновлений лишает всякого интереса задачу отслеживания измененных образов. Зато остается масса вопросов о различиях между версиями (не путать с изданиями) Windows 10 и Windows 11.

То есть большинство из вас примерно представляет себе, чем отличается Windows 10 Home от Professional, или по крайней мере знает как легко это загуглить. А вот вопрос, чем отличается, например, Windows 10 21H1 (10.0.19043.x) Professional от Windows 10 21H2 (10.0.19044.x) Professional вас точно поставит в тупик (короткий ответ, начиная c 10.0.19043.1348, установив так называемый Enablement пакет в пару десятков килобайт вы получите 10.0.19044.1348, с поддержкой протокола WPA3 H2E и поддержкой GPU вычислений в Windows Subsystem for Linux). То есть ну ни разу не очевидные моменты, и поверьте, с Windows 11 ситуация еще более запутанная, там кроме веховой версии (например 23H2, она же Nickel R2) есть еще минимум пять ступеней обновлением функционала – незначительных «ступенечек», просто установкой кумулятивного обновления и «моментов» с установкой специального пакета, включающего возможности.

О Windows 11 мы поговорим в следующей моей заметке, а сегодня вспомним, все-таки, историю. Не древнейшую историю, - труп Windows XP уже сгнил, и не средневековье, - про Windows 7 и 8 вспоминать тоже не будем. Сегодня с нас хватит огромного количества разных версий Windows 10. Вспомним, что, когда выходило и чего добавлялось из возможностей в новых версиях и с веховыми обновлениями. Не забуду рассказать и о том, какие версии сейчас еще обновляются, и как долго будут. Что делать тем, кто не готов переходить на Windows 11, но хотел бы еще много лет получать обновления для Windows 10. Это уже в самом конце разговора. Не пугайтесь большого количества версий, - их совершенно нет необходимости ставить все поочередно для обновления, - всегда можно сразу поставить последнюю, перешагнув сколько угодно промежуточных шагов. Помните, единожды установив какую-то версию Windows 10, все последующие будут вам предлагаться бесплатно через Windows Update – это не касается лишь LTSB/LTSC и Enterprise G, версии которых требуется обновлять вручную.

Читать далее

systemD с 0 до 1: библия сисадмина

Level of difficultyMedium
Reading time27 min
Views51K


Что бы кто ни говорил, systemD становится стандартом систем инициализацией в линуксе. И с 80% вероятностью все сервера будут с systemD. Не факт, конечно, есть и личные сервера, на которых может стоять хоть Gentoo, хоть Devuan, хоть NixOS.

Некоторые дистрибутивы хотят даже перейти с загрузчика Grub на systemd-boot! Потому знать, как работать с данной системой инициализации, должен каждый сисадмин и просто программист, ибо сейчас он практически везде.

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

А также напишем небольшой скрипт на Python для автомизации некоторых задач. Приятного чтения, господа линуксоиды и просто пользователи!
Читать дальше →

Многопоточность JavaScript с SharedArrayBuffer и Atomics: основы

Level of difficultyEasy
Reading time6 min
Views3.8K

JavaScript по традиции известен как однопоточный язык. Т.е код выполняется последовательно, и одновременное выполнение нескольких задач может быть проблематичным. Если код сталкивается с тяжелыми вычислительными задачами, это может привести к задержкам и замедлению интерфейса юзера. Поэтому один поток не для каких-либо интенсивных вычислений или обработки больших объемов данных.

Чтобы обойти эти ограничения, были введены Web Workers — они позволяют выполнять JS-код в фоновом потоке, параллельно с основным. Однако, все сложилось так, что простой обмен данными между основным потоком и воркерами через postMessage имеет свои ограничения и может быть недостаточно хорошим для некоторых задач.

Здесь помогают SharedArrayBuffer и Atomics.

Читать далее

Крекер. SQL инъекции. Уязвимость LFI

Reading time4 min
Views7.8K

Введение

Рады вновь приветствовать дорогих читателей! Начиная с этой статьи мы запускаем новую рубрику "Крекер", в серии этих статьей мы будем разбирать различные уязвимости, их эксплуатацию. В этой вступительной статье мы разберём уязвимости SQL, LFI, ADB и инструменты их эксплуатации.

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

Читать далее

Как обстоят дела с HTTP/3 в сURL на середину 2024 года

Level of difficultyMedium
Reading time5 min
Views14K

Пора в очередной раз проанализировать, в каком состоянии сейчас находится поддержка HTTP/3 в curl.

Думаю, ситуация с curl отражает положение дел во многих других HTTP-инструментах и библиотеках. HTTP/3 был и продолжает быть более сложным в плане развёртывания по сравнению с HTTP/2.
Читать дальше →

Полный гайд по CSS Flexbox с примерами из практики

Level of difficultyEasy
Reading time10 min
Views27K

Привет! Сегодня мы поговорим про flexbox в css. Это очень важная тема, в которой должен разбираться каждый фронтенд-разработчик или верстальщик. Я покажу вам как flexbox работает на реальных примерах. А в конце статьи покажу лайфхаки, которыми сам постоянно пользуюсь на работе.

Читать далее

Анализируем HTTP трафик в Wireshark

Reading time5 min
Views17K

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

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

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

Читать далее

Lazy Loading в Java

Level of difficultyEasy
Reading time5 min
Views8.3K

Привет, Хабр!

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

Как и наши хвостатые друзья, существует такой паттерн как Lazy Loading, который позволяет экономить ресурсы, инициализируя объекты только тогда, когда они действительно нужны.

Рассмотрим, как мы можем применить этот котиковый подход в Java. Будем как котики — умными, экономными и эффективными!

Читать далее

Ловушки volatile, DCL и синхронизации в Java

Level of difficultyMedium
Reading time11 min
Views6.4K

А что если окажется, что простые знания на самом деле более нюансированные, а старые знакомые, такие как Double-checked locking, являются неоднозначными? Именно на такие мысли наталкивает изучение кода реальных проектов. Результаты этого исследования мы и рассмотрим в этой статье.

Читать далее

Перейди по ссылке, и я узнаю твой номер

Level of difficultyEasy
Reading time7 min
Views60K

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

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

Но что если вы не хотите оставлять свой номер на сайте, который просто открыли? Поговорим на примере одного из таких сервисов - dmp.one. Важно: автор рекомендует открывать этот адрес во вкладке инкогнито с включённым uBlock Origin с кастомными правилами (о них ниже), иначе есть риск попадания вашего телефона в базу.

Читать далее

О чём не молчит Windows. Погружение в Windows Registry Forensic

Reading time7 min
Views24K

Всем привет, Хабровчане!

Думаю ни у кого не возникает сомнений в важности грамотной работы специалистов ИБ и ИТ служб, учитывая события недавних дней с ТК СДЭК, а также другие крупные взломы/утечки, которых было немало за последние пару, тройку лет. Обеспечение грамотной работы включает в себя обычно комплекс мероприятий, да и в целом в работе служб ИБ есть множество направлений, где одним из интереснейших направлений, без которого, на мой взгляд, трудно обойтись, является компьютерная криминалистика (Forensic или форенсика).

Читать далее

Кратко про класс CompletableFuture в Java

Level of difficultyEasy
Reading time5 min
Views16K

Привет, Хабр!

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

CompletableFuture — это класс в пакете java.util.concurrent, предоставляющий возможности для асинхронного программирования. Он поддерживает выполнение задач в фоновом режиме, цепочки задач, обработку исключений и многое другое.

Читать далее

Создание дистрибутивов для разных операционных систем в Java 21 и 22

Reading time6 min
Views5.4K


Статья рассказывает о построении дистрибутивов приложений для операционных систем Windows, macOS и Linux в случае использования Java 21 и 22.

Продолжает ранее опубликованную статью о создании дистрибутивов в предыдущих версиях Java, подробно описывая кардинальные изменения, произошедшие с того времени.
Читать дальше →

Основы DNS: понятие, иерархия, записи

Level of difficultyMedium
Reading time7 min
Views55K

DNS (Domain Name System) – это система, которая переводит понятные человеку доменные имена в IP-адреса, которые используют компьютеры для связи друг с другом. Представьте, что DNS – это как телефонная книга интернета. В обычной телефонной книге, если вам нужно найти номер телефона человека, вы ищете его по имени, и книга предоставляет вам номер. Точно так же DNS помогает находить IP-адреса, когда вы вводите доменное имя.

Когда вы вводите адрес веб-сайта, например, www.example.com, в строку браузера, DNS помогает найти нужный IP-адрес, чтобы ваш браузер мог подключиться к нужному серверу. IP-адрес – это уникальный числовой идентификатор, который используется для идентификации устройства в сети. Всякий раз, когда вы отправляете запрос на веб-сайт, ваш браузер отправляет этот запрос через интернет на сервер, который затем отвечает данными, которые вы видите на экране.

Читать далее

Information

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