Сообщество - Лига программистов
Добавить пост

Лига программистов

1 508 постов 11 408 подписчиков

Популярные теги в сообществе:

Я тебя по IP вычислю :)

Добрый день! Нужен совет программиста. У знакомого есть местячковый сайт, указывать название не буду, чтобы за рекламу не приняли. Содержание сайта – всякие интервью с директорами компаний и полезные статейки для бизнеса. Сайту уже 23 года, сам сайт на Вордпрессе уже 4 год (раньше был самописный).

Человек хостится на Рег.ру с тарифом Host-3. Недавно (после предупреждения) хостер выключил сайт потому что нагрузка на CPU за 7 дней составила 23% при допустимой в 13%.

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

Заблокировал эти адреса через плагин Wordfence в админке, Заблокировал адреса также в htaccess. Там же, в htaccess заблокировал бота ClaudeBot с 42000 запросов, а так же 5 000 ежедневных запросов от бота facebook.

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

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

Вопросы: 1)Можно ли сделать так, чтобы эти адреса действительно заблокировать и как это сделать? 2)Правильно ли я вписал директиву в htaccess? 3)Не получится ли, что вместо этих IP адресов прийдут на смену другие?

P.S. Убрал на всякий случай часть цифр, во избежании всякого разного. Еще раз хочу сказать, что я не программист и если у кого есть желание ответить, просьба максимально простым языком написать. Шутки люблю, но хотелось бы решить ситуацию.

Я тебя по IP вычислю :) Сайт, Программирование, Взлом, Интернет-мошенники, Информационная безопасность, Компьютерная помощь, Хакеры, Длиннопост

Скрин с хостинга

Я тебя по IP вычислю :) Сайт, Программирование, Взлом, Интернет-мошенники, Информационная безопасность, Компьютерная помощь, Хакеры, Длиннопост

Скрин с хостинга по запросам

Я тебя по IP вычислю :) Сайт, Программирование, Взлом, Интернет-мошенники, Информационная безопасность, Компьютерная помощь, Хакеры, Длиннопост
Показать полностью 3

Huawei Matebook 16s CREF-X vs Ubuntu. Жизнь без звука

Привет.
TLDR: Вся боль в заголовке. Как научить поделие китайских инженеров нормально отдавать и регулировать звук?

К делу. В общем, сидела моя жена все время на винде и горя не знала, но тут решила попробовать себя в linux и попросила меня катнуть рядом с виндой какой-нибудь дистрибутивчик не сильно замороченого линукса. Почесав немного репу и со словами "Да ща 5 сек делов то на 15 минут"

Huawei Matebook 16s CREF-X vs Ubuntu. Жизнь без звука Вопрос, Консультация, Спроси Пикабу

Приблизительно так я себе это и представлял

Выбор мой пал на Mint(M)/Ubuntu cinnamon(UC)/Ubuntu Budgie(UB). Существенная разница лишь в том, какой релиз стоит под капотом. То есть 22.04 lts/23.10/24.04 lts

И вот через 10 минут, я уже отдал комп жене с M со словами "пользуйся" и гордый пошел в свой кабинет дописывать код.
Ничего не предвещало беды, но ровно через 10 минут с кухни послышалось "А чо со звуком?".
Тут то и начались мои танцы с бубном.

Начал разбираться, действительно. Звука есть, но очень тихий и не регулируется через клавиши мультимедиа и ползунком громкости. aplay -l и cat /proc/asound/cards говорят, что звуковая карта есть и висит как card0. в alsamixer она определяется как sof-hda-dsp и при этом при нажатии мультимедиа клавиш ползунок в Speaker ползет вниз и ничего не происходит ровно до момента когда он доходит до конца и активирует режим mute. Отключается Master и Speaker каналы. Обратно такая же ситуация, то есть звук при нажатии + появляется (размьют) и больше, собственно, ничего. Пробовал и HWE и OEM ядра - эффект одинаков.

Путем нехитрых манипуляций было выявлено, что либо в драйвере либо в HW перепутаны каналы Headphone и Speaker. То есть если делать программно amixer set Headphone 10+ то звук прибавляется, так же и убирается. При этом подключение наушников происходит штатно - Headset нормально работает от ползунка громкости и от мультимедиа клавиш.
Гугл выдал мне 500 топиков боли и страданий, но почти все рекомендации я проделал до них, либо не помогли, либо сделали хуже (Окей, спасибо, гугл:) )

Перебиндил пока клавиши мультимедиа на выполнение команды amixer set $HW_OUTPUT_SET 5+/- где сама $HW_OUTPUT_SET формируется через сервис, который раз в 2 милисекунды опрашивает /proc/asound/cards на наличие/отсутствие карты Earphones и делая нужное мне значение переменной. Но это изврат какой-то :))

Поможите, люди добрый, кто сталкивался с таким и решил проблему - не дайте посрамить честь :))

ПыСы: UC вообще не определила звуковую карту и не смогла запустить pulseaudio. UB - +/- как на минте, но игрался только на liveCD и не могу обновить ядро, так что может там и получше.

ПыСы2: Воткнул все 3 версии флешкой себе в Lenovo ThinkPad - везде работает корректно звук :(

Показать полностью 1

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями

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

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями IT, Программирование, SEO, Оптимизация, Программист, Длиннопост

Результат оптимизации сайта

Вводные данные

Есть сайт на PHP 8.1, Laravel. Под базу взят PostgreSQl. На фронте нативный JS. За основу взят шаблон от Metronic, дабы не делать всё с нуля.

Страниц на сайте больше 2 миллионов. Контент собирался в результате сбора информации с множества источников.

Первоначальная оценка по Google Page Speed была не очень - 36 на мобильных устройствах и 80 на компьютере.

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями IT, Программирование, SEO, Оптимизация, Программист, Длиннопост

Это мобилки

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями IT, Программирование, SEO, Оптимизация, Программист, Длиннопост

Это компьютер

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

Наша цель - довести показатели на мобилках до максимума.

Поехали проводить аналитику по шагам.

Шаг 1. Ставим расширение на Laravel для оптимизации запросов.

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

https://github.com/barryvdh/laravel-debugbar

После успешной установки при заходе на страницу (не забудьте в настройках в файле .env поставить APP_DEBUG=true) внизу слева страницы появится иконочка, при клике на которую откроется панель с кучей вкладок.

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями IT, Программирование, SEO, Оптимизация, Программист, Длиннопост

Шаг 2. Тюнинг базы и запросов.

Залазим во вкладку Queries и смотрим все запросы, которые есть на странице. Получается что-то такое.

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями IT, Программирование, SEO, Оптимизация, Программист, Длиннопост

Красным отмечена суммарная продолжительность выполнения.

Я использую PHPStorm для работы с базой. Вы же можете использовать что-то иное, это не принципиально.

На этой вкладке нужно проанализировать вызов запросов. Для начала я увидел, что при выводе списка статей в цикле вызывается ещё один дополнительный запрос. Сделал всё в 1 запросе. Это практически минус 12 запросов со страницы. Такие моменты нужно анализировать глазками и оптимизировать под каждый проект самостоятельно.

Далее я взял КАЖДЫЙ запрос и проанализировал план его выполнения. Вот пример:

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями IT, Программирование, SEO, Оптимизация, Программист, Длиннопост

Смотрим здесь Total Cost

Как видим здесь нет никаких индексов. Лечится это легко. Смотрим по каким полям у нас происходят условия и с какой сортировкой. Затем создаём индекс по этим полям и смотрим результат. Вот что получилось у меня:

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями IT, Программирование, SEO, Оптимизация, Программист, Длиннопост

А вот результат после создания индексов

Мы оптимизировали запрос с 17к до 207. И это только один пример.

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями IT, Программирование, SEO, Оптимизация, Программист, Длиннопост

Вот пример простейшего запроса без индекса

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями IT, Программирование, SEO, Оптимизация, Программист, Длиннопост

А вот результат после создания индекса

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

Ещё я советую проанализировать таблицы, которые можно было бы разбить на партиции.

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

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями IT, Программирование, SEO, Оптимизация, Программист, Длиннопост

Результат после оптимизации запросов

Как видим уже есть сподвижки. Работаем дальше.

Шаг 3. Подрубаем кеширование.

Сайт грузит очень большое количество различных картинок, css'ов и js'ов. Пришла мысль всё это дело закешировать, чтобы быстро отдавать из оперативной памяти, а не лезть на жёсткий диск.

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

Если вы используете Laravel, то есть вот такое расширение, чтобы подружить варниш с ларкой:

https://github.com/spatie/laravel-varnish

А вот здесь есть классное руководство по настройке:

https://freek.dev/663-using-varnish-on-a-laravel-forge-provisioned-server

А вот ещё ссылочка с конфигом. Если у вас другая версия варниша - поменяйте в урле версию и будет вам счастье.

https://github.com/mattiasgeniar/varnish-6.0-configuration-templates/blob/master/default.vcl

https://www.linkedin.com/pulse/managing-high-traffic-websites-varnish-laravel-david-ariens

Я добавил в кеш все js, css и картинки. Будьте крайне внимательны с настройкой. Можно, например, закешировать POST-запросы с формами или какие-то JSON-Ответы. Советую прогонять тестами сайты после добавления таких модулей.

Шаг 4. Анализируем сервер.

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

Шаг 5. Анализируем JS + CSS.

У меня в проекте использовался дефолтно сборщик webpack и правила на нём были крайне простыми - берём все файлы и засовываем в единый файл bundle.

Представьте, что на КАЖДОЙ странице забираются все js-библиотеки и css. Это очень сильно усложняет вывод страницы, при этом делает работу программиста легче. Не надо думать что и когда подрубить. Просто подключаешь любую компоненту и она работает! Ну не прелесть ли. Но не для поисковиков.

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

Шаг 6. Поднимаем пул коннектов к базе.

Классным дополнением будет пул коннектов к базе. Для PostgreSQL я использую PgBouncer. Можете скачать по ссылке ниже.

https://www.pgbouncer.org/

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

https://postgrespro.ru/docs/postgrespro/10/pgbouncer

Шаг 7. Оптимизация вёрстки для мобилок.

Я установил расширение на Laravel для отлова мобильных устройств. качал отсюда:

https://github.com/phattarachai/laravel-mobile-detect

Далее в коде для мобилок сделал другую вёрстку, более простую, чем в версии для компьютеров. Вырезал половину анимации, блоки с картой, ненужные слайдеры. Такой вариант поможет уменьшить DOM страницы и ускорит её отображение.

Результат оптимизации

Смотрим полученный результат

Повесть о том, как я сайт оптимизировал. Бесплатный кейс с бесценными знаниями IT, Программирование, SEO, Оптимизация, Программист, Длиннопост

Можно ещё пытаться оптимизировать файлы и запросы. Я не использовал Reddis для кеширования запросов, но вы можете тоже использовать этот метод.

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

Буду благодарен за подписку на мой tg-канал, если материал был полезен.

https://t.me/itpriton

Показать полностью 10

Проблема с дипломной работой, нужна помощь

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

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

Тема моей дипломной работы: Метод сетевого анализа в задачах установления авторства интернет текстов.
Целью же является: Выявление потенциально опасных фактеров в социальных сетях

И вот собственно план работы:

  1. Введение:

  2. Обзор литературных источников и постановка задачи

  3. Выбор корпуса интернет-текстов (был выбран корпус ГИКРЯ, как по мне самый подходящий)

  4. Построение модели конвертирования текста в комплексную сеть (не очень понимаю о чем эта часть)

  5. Сетевая обработка примеров интернет-текстов

  6. Анализ чувствительности сетевых метрик к авторству модельных корпусов текстов (что за сетевые метрики)

  7. Верификация и тестирование схемы установления авторства на независимых текстах

  8. Выводы о пригодности сетевого анализа в задачах установления авторства интернет- текстов

    В качестве глав я взял 4, 6 и 7 части плана.

Прошу вас помочь с этим вопросом, любые предложения приветствуются.

Показать полностью

Ищу работу

Здравствуйте, меня зовут Ефрем, я - начинающий веб-разработчик, пишу на C#, стек - ASP.Net.

Сразу скажу: я 2008 года рождения (15 лет), срочно ищу любую работу, готов выполнять любого рода обязанности за официальное оформление, ниже расскажу о навыках, но сейчас объясню причины спешки: живу не с родителями, в селе, с дедушкой и бабушкой (пенсионерами), родители алименты не платят - из-за чего большие проблемы с деньгами. Учусь отлично (на балл в аттестате 5.00) и планирую поступить в колледж в Москву в этом году, но из-за родителей, находящихся хоть и далеко, но стремящихся как угодно мне навредить, я не смогу этого сделать без работы и эмансипации: как только я уеду в Москву, родители сдадут меня в приют, как беспризорного (что они уже делали в попытке навредить и избавиться от меня). Мне жизненно необходима работа, и я готов работать удаленно в любое свободное от учебы время (30 ч/неделя) за трудовую книжку и минимальную плату.

Мои навыки:
Я хорошо и быстро обучаюсь, отзывчив, внимателен, опыт программирования около полутора лет, за это время:
делал своих телеграмм ботов,
Работал с сайтами, Докером, удалёнными серверами и прочим.
Люблю изучать документацию, +- понимаю её на английском языке.
Изучал и работал с MySQL,
HTML + CSS,
Asp .Net 6.0, 7.0, 8.0 MVC/MVVM/MVP,
Entity Framework,
Blazor,
Web API,
Git.
Понимание ОПП - есть, как и понимание принципов SOLID.
Разбираюсь в чужом коде.
Прямо сейчас изучаю WordPress.

Гражданство, разрешение на работу - РФ.
Без рейтинга.
Буду бесконечно благодарен любым предложениям и подсказкам. Спасибо

Показать полностью

А программисты тут есть?

Что могу предложить: запилить ряд статей на продвинутые темы (Scala3, ФП, дизайн приложений и систем)

Что хотел бы получить: адекватные комментарии

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

Императивный и декларативный код

Всем привет, работаю java разработчиком 10 лет, хотел бы показать разницу между императивным и декларативным подходом на примере синтетической задачи по обработке списка чисел.

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

Задан список чисел, на примере:

List<Integer> input = List.of(1, 2, 3, 4, 5);

Нужно найти сумму квадратов чётных чисел - значений элементов массива. Чётные числа это такие числа, которые делятся нацело на 2, то есть остаток от деления числа на два равен нулю. Чётные числа здесь 2 и 4. Их квадраты это 4 и 16. Искомая сумма 4 + 16 = 20.

Чтобы записать алгоритм в императивном подходе, потребуется объявить переменную-аккумулятор, которая будет содержать сумму, её начальное значение будет 0. Далее пройтись по всем элементам списка, для четных их них посчитать квадрат, и добавить его к текущему значению суммы:

int sumEven = 0;

for (Integer x : input) { //пройти по всем элементам

__ if (x % 2 == 0) { //для четных

____ sumEven += x * x; //посчитать квадрат и добавить к сумме

__ }

}

assertEquals(sumEven, 20);

Декларативный подход можно показать на примере использования апи java.util.stream. Последовательно указываются инструкции для фильтрации, преобразования и аккумуляции результата:

int sumEven = input.stream()
__ .filter(x -> x % 2 == 0)
__ .map(x -> x * x)
__ .reduce(0, Integer::sum);
assertEquals(sumEven, 20);

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

Показать полностью

Почему так?

Почему при компиляции java кода через командную строку пропадает кириллица, а при intellij idea нет?

Скомпилировал при помощи команды через командную строку, запускаю. Нет кириллицы.

Почему так? Программирование, Java, Вопрос

Запускаю скомпилированный код через intellij idea, есть кириллица.

Почему так? Программирование, Java, Вопрос

Кто-нибудь знает?

Показать полностью 1
Отличная работа, все прочитано!