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

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

1 728 постов 11 639 подписчиков

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

Как выбрать хостинг и настроить сайт: личный опыт новичка

Привет, Пикабушники!

Если вы хотите создать свой сайт, то наверняка задавались вопросом: какой хостинг выбрать? Расскажу о своём опыте — какие грабли я собрал, какие сервисы использовал и что в итоге выбрал.

Начало пути

Я решил создать сайт на WordPress, простой блог про свои хобби. Казалось, найти хостинг легко: выбери тариф, нажми пару кнопок — и сайт готов. Но всё оказалось чуть сложнее.

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

  • После первого года цена на подписку выросла почти в 3 раза.

  • За SSL-сертификат пришлось доплатить (хотя обещали «бесплатно»).

  • Сайт часто падал под нагрузкой даже при 20-30 посетителях.

Какие хостинги я попробовал

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

  1. Namecheap

    • Плюсы: дешёвые домены, простой интерфейс.

    • Минусы: скорость оставляет желать лучшего, особенно если целевая аудитория не в США.

  2. Hostinger

    • Плюсы: хорошие стартовые тарифы, много обучающих материалов.

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

  3. Timeweb (для России)

    • Плюсы: простой и понятный хостинг с ориентиром на СНГ.

    • Минусы: иногда возникают проблемы с обновлениями сайтов на WordPress.

  4. Bluehost

    • Плюсы: официально рекомендован WordPress, подходит для новичков.

    • Минусы: дорогой, если ваш сайт не рассчитан на много трафика.

  5. WebHostMost

    • Плюсы: прозрачные тарифы, SSL и резервные копии уже включены. Подходит для сайтов, рассчитанных на международную аудиторию.

    • Минусы: молодой сервис, который ещё не так широко известен. Иногда не хватает туториалов или подсказок для новичков.

Другие полезные сервисы

Кроме хостинга, мне понадобились дополнительные инструменты:

  • Cloudflare — защита сайта от DDoS-атак и ускорение загрузки.

  • Figma — для разработки макета сайта.

  • Google Workspace — для почты на своём домене.

  • Yoast SEO — плагин для SEO-оптимизации.

  • Unsplash — бесплатные изображения для оформления.

Итог

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

  • Сравнивайте тарифы и читайте отзывы.

  • Проверяйте, включены ли SSL и резервные копии в цену.

  • Убедитесь, что поддержка работает быстро и реально помогает.

Если вы только выбираете хостинг, вот несколько ссылок, которые мне пригодились:

Какие хостинги или сервисы помогли вам? Делитесь опытом в комментариях, думаю, многим будет полезно. 🙂

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

Сталкинг

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

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

Qwen 2.5 и Qwen 2.5 Coder - перспективная коллекция LLM для систем агентов

Разработчикам приложений Generative AI стоит обратить внимание на новую коллекцию моделей Qwen 2.5 и Qwen 2.5 Coder. С сентября 2024 года эти модели привлекают внимание разработчиков благодаря своей эффективности.

Во-первых, веса Qwen 2.5 доступны в версиях от 0.5B параметров — это очень легковесная модель — до 72B. Посередине есть 3, 7, 14 и 32B, каждую из которых вполне можно запускать локально, если у вас есть, например RTX 3080 с 16ГБ видеопамяти. В этом поможет квантизация (особенно в случае с 32B). Квантованные веса в форматах GGUF, GPTQ, AWQ есть в официальном репозитории.

Для более быстрого инференса и файнтюнинга Qwen 2.5 можно арендовать облачный GPU и работать с этой моделью так же, как с привычной нам Llama. Я показывал примеры файнтюнинга последней в предыдущих статьях, используя облачные видеокарты и стек Huggingface Transformers (код Qwen 2.5 добавлен в одну из последних версий transformers).

Есть базовая модель и версия Instruct, вы можете пробовать файнтюнить обе и смотреть, какой результат вам лучше подходит. Но если вы хотите взять готовую модель для инференса, то лучше конечно Instruct. Благодаря разнообразию размеров и форматов, Qwen может быть полезен для разных типов приложений - клиент-серверных, или десктопных, и даже на мобильных - вот как это выглядит:

Qwen 2.5 и Qwen 2.5 Coder - перспективная коллекция LLM для систем агентов Искусственный интеллект, Программирование, Машинное обучение, Deep learning, Длиннопост

Изображение взято из треда про адаптацию Квен под мобильные платформы:

Но по-настоящему Qwen 2.5 привлек внимание разработчиков, когда вышла коллекция Qwen 2.5 Coder. Бенчмарки показали, что 32 B версия этой модели может конкурировать с GPT-4o по написанию кода, а это очень интересно, притом что 32 миллиарда параметров вполне можно запустить на средней мощности видеокарте, и получить хорошую скорость генерации токенов.

Вообще какие приложения можно создавать с помощью новых моделей Qwen? Это конечно различные чатботы, но не только.

Разработчики говорят, что Qwen хорош для систем агентов.

Вот что написал недавно в Reddit один из них:

Qwen 2.5 и Qwen 2.5 Coder - перспективная коллекция LLM для систем агентов Искусственный интеллект, Программирование, Машинное обучение, Deep learning, Длиннопост

Я длительное время использовал кастомный Chain-of-thoughts фреймворк с GPT-4, затем 4o.

Сегодня я развернул Qwen 2.5 14B и обнаружил, что его возможности вызова функций, Chain of Thoughts и следования инструкциям фантастические. Я бы даже сказал, лучше чем GPT 4/4o - для моих задач, во всяком случае

Кажется интересным не только то, что разработчик получил такую высокую производительность для сложных задач, требующих продвинутой логики, на  открытой LLM. Интересно и то, что для этого ему потребовались сравнительно небольшие мощности — ведь речь идёт о квантованной 14B модели:

Я использую одну видеокарту A40 для надёжности системы и высокой скорости генерации. Я выполнил установку через Ollama, взяв дефолтный квантованный Qwen 2.5 14B. A40 нужна для более высокой скорости, но я могу представить, что вам подойдёт и намного меньшая видеокарта для ваших задач

Мне нравится идея разработки агентских систем с помощью открытой модели на 14B параметров, для работы которой достаточно экономичной видеокарты A40 или даже менее мощной модели.

Агенты, вспомним, это GenAI приложения которые могут оперировать компьютером пользователя, взаимодействовать с другими программными компонентами. Для этого очень важна способность интегрироваться с разными API, вызов функций и логическое мышление модели.

По поводу логического мышления, традиционный подход — это Chain of Thoughts, особая стратегия промптинга. Она побуждает LLM строить пошаговые рассуждения, более эффективные для решения задачи и самовалидации решения на каждом шаге. Некоторые модели специально обучены для работы с таким промптом, например, GPT-4o1. Непонятно, обучали ли Qwen строить цепочки мыслей, но, как видим, разработчики указывают на высокую производительность модели в этом отношении.

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

А вы правильно оформляете commit-message?

Я надеюсь, что да, но на всякий случай приведу несколько распространенных рекомендаций по оформлению коммитов. Если я что-то упустил, жду вас в комментариях.
🔹Длина заголовка коммита не должна превышать 50 символов
Это сделано исключительно для удобства чтения журнала проекта.
🔹Формат заголовка коммита зависит от соглашений в конкретной команде.
В разных проектах разные требования к формату заголовка. Например, есть требование в начале заголовка размещать номер тикета: "WTF-42: some question fix". Или же в начале заголовка указывать компонент, в который были внесены изменения "tests: unit: add some question test". Точка в конце заголовка не ставится.
🔹Заголовок коммита содержит краткое описание проделанных изменений.
Заголовок коммита должен отвечать на вопрос: какие изменения были сделали в проекте? Не более. Подробности и причины сделанных изменений нужно перенести в тело коммита.
🔹Между заголовком коммита и телом нужно оставлять пустую строку.
Очередная рекомендация, которая повышает читаемость журнала. В консоли эта рекомендация не сильно заметна, а вот GitLab и GitHub с помощью пустой строки умеют отображать заголовок коммита и скрывать его тело.
🔹Тело коммита не ограничено, а вот строка в теле коммита не должна превышать 72 символа.
Тело коммита не является обязательным, но его наличие позволяет без изучения кода лучше понять, что и почему было сделано. Т.е. если был исправлен баг, то нужно описать условия при которых он проявлялся и каким образом был исправлен. Если новая фича, нужно написать на основе каких требований она была добавлена. Можно приложить ссылки на спецификации, обсуждения, но нужно быть уверенным, что ссылки останутся актуальными через несколько лет. Важно: не нужно писать в теле коммита, как вы делали задачу.
🔹Уточните, нужно ли подписывать коммит.
Чаще всего это требование встречается при работе с open source продуктами. Коммит подписывается с помощью закрытого ключа, таким образом, вы подтверждаете вашу идентичность.

p.s.: а еще шаблон коммита можно прописать в git pre-commit hook

Технические посты тут t.me/neverending_cpp

Показать полностью
Вопрос из ленты «Эксперты»

Как запускать утилиты в Total Commander?

Здравствуйте, пикабушники! Есть ли тут люди, которые хорошо знают этот замечательный файловый менеджер? Его возможности поистине безграничны, а то, что он не может, можно поправить, написав к нему нужный плагин или утилиту.

И вот я тоже решил приобщиться и сделать "всё под себя". Но споткнулся буквально на первом шаге. С плагинами более-менее разобрался, а вот как привинтить утилиту не понимаю. Конкретно—"Multi Comment Edit" (ссылка https://total.darkhost.ru/wiki/doku.php?id=ru%3Acomment_editor ), решил потренироваться на ней, тем более я AutoIt учил когда-то, будет легче начинать. Но не запускается. Поскольку у этого всего зоопарка сотни талантливых авторов, внятной общей документации тоже нет, и на профильных форумах я сходу не нашёл.

Как запускать утилиты в Total Commander? Total Commander, Вопрос, Помощь, Спроси Пикабу

При запуске экзешника выдаёт ошибку:

Как запускать утилиты в Total Commander? Total Commander, Вопрос, Помощь, Спроси Пикабу

Это понятно, надо запускать из командной строки, указывая параметры через пробел. Но что это за параметры, я вообще ума не приложу. Открываем readme:

Как запускать утилиты в Total Commander? Total Commander, Вопрос, Помощь, Спроси Пикабу

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

Кто-нибудь знает? Возможно, эти параметры всем, кроме меня очевидны, широко известны и вообще. И после я тоже буду знать. Подскажите. Покажите пример командной строки, если кто знает. Возможно, это вообще не надо запускать, а нужно куда-то встраивать ссылку на этот экзешник?

Заранее спасибо.

Как запускать утилиты в Total Commander? Total Commander, Вопрос, Помощь, Спроси Пикабу
Показать полностью 3

Какой факториал начинается с Насти? (задача для настоящих программистов)

Пять одноклассниц — Аня, Даша, Алла, Лиза и Настя — решили найти факториалы, начинающиеся с их имён.
Аня свой нашла очень быстро: факториал числа 16641 начинается с цифр 11533, что соответствует замене каждой буквы имени Аня на её номер в русском алфавите.
Следующей была Даша: 46978! начинается с 51261, что соответствует имени Даша.
Затем и Алла нашла свой: 323172! начинается с 113131, что соответствует имени Алла.
И даже Лиза сумела: 266538! начинается с 131091, что соответствует имени Лиза.

И только Настюхе как-то не везёт — то ли лыжи не едут, то ли прога плохая.
Как же помочь Настеньке?

CoderKit: бесплатный швейцарский нож для программистов и IT-специалистов

CoderKit: бесплатный швейцарский нож для программистов и IT-специалистов Сайт, Программирование, SEO, Javascript

Привет, Пикабу! 👋

Все мы знаем, что быть разработчиком — это вечный баланс между дедлайнами, миллионом вкладок в браузере и поиском решения на Stack Overflow. Но что если я скажу вам, что есть место, где собраны десятки полезных инструментов, и всё это бесплатно? Знакомьтесь, CoderKit — сервис, который уже успел стать верным помощником для разработчиков, безопасников и даже тех, кто занимается SEO.

💡 Что такое CoderKit?
Это набор инструментов для всех, кто связан с кодом, оптимизацией и нуждается в быстрых и простых решениях. Сервис полностью бесплатен (да-да, никаких скрытых платежей, триальных периодов и подписок). Просто заходите, выбираете нужный инструмент и работаете.

🔧 Инструменты для разработчиков:

  • Форматирование кода — забудьте про кривой JSON, PHP или HTML. Вставляете код, нажимаете кнопку, и всё красиво.

  • Генерация .htaccess — создание настроек сервера за пару секунд. Больше не нужно ломать голову над синтаксисом.

  • Случайные имена в стиле Docker — никаких больше container123 или superproject1. Ваши контейнеры будут стильными!

  • Генератор паролей — больше не тратьте время на изобретение сложных комбинаций.

🎨 Графика и визуал:

  • AI-генератор изображений — создавайте картинки с помощью искусственного интеллекта. Подходит даже тем, кто не умеет рисовать.

  • Оптимизация изображений — ужмите картинки без потери качества, чтобы ваш сайт грузился быстрее.

  • Генератор favicon — идеально для ленивых фронтенд-разработчиков (да, я про нас 😅).

  • QR-коды — не только для визиток, но и для Wi-Fi настроек, ссылок и прочего.

🔐 Инструменты безопасности:

  • Проверка JWT-токенов — быстрое декодирование и проверка.

  • Base64-конвертер — для шифрования и декодирования.

  • Генерация хэшей: MD5, SHA1, SHA256 и даже SHA512. Всё на одном экране.

📊 SEO и тексты:

  • Генератор robots.txt — задавайте параметры для поисковых ботов.

  • DNS проверка — проверяйте настройки домена, чтобы не гадать, почему сайт не открывается.

  • Анализ редиректов — полезно, если у вас сложная структура сайта.

  • Генератор Lorem Ipsum — создавайте текст-заполнители для макетов и прототипов.

  • Статистика текста — подсчёт символов, слов и других параметров текста.

🎁 Почему CoderKit — это находка?

  1. Бесплатно. Ни копейки за функционал. Даже никаких ограничений "N раз в месяц".

  2. Удобно. Лаконичный интерфейс, который не заставляет лезть в документацию. Всё просто.

  3. Все в одном месте. Больше не нужно собирать инструменты с десятков сайтов. Здесь есть всё.

  4. Подходит всем. Разработчикам, дизайнерам, безопасникам, SEO-специалистам — найдется что-то полезное для каждого.

Так что, друзья, если вы устали от рутинных задач, зайдите на coderkit.ru и попробуйте сами. Это место, где магия программирования становится реальностью, а рутина — щелчком пальца.

CoderKit уже облегчил мне жизнь. А как вы экономите время на мелочах? Пишите в комментариях, давайте делиться лайфхаками! 🚀

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

Каждый год зимой происходят странности

Например, что-то пропадает. У одних важные вещи, у других новогоднее настроение. В этот раз — потерялись помощники Деда Мороза. Но есть хорошая новость: вы можете их найти! Вернее, помочь им найтись…

Фабричный метод

Попробуем разобраться с шаблонами проектирования программного обеспечения.

Фабричный метод Опрос, PHP, Oop, IT, Программирование, Длиннопост

Картинка из статьи на Хабре https://habr.com/ru/companies/vk/articles/325492/

Чаще всего под шаблонами проектирования понимают некую часть программы, которая должна выполнить часто повторяющуюся задачу. Для таких частых, стандартных задач были написаны алгоритмы и, даже, специальная книга "Design Patterns".

Вот об этих шаблонах или паттернах, описанных в книге, и поговорим.

В статье на Википедии предлагают следующую классификацию шаблонов:

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

Фреймворк

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

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

А бот можно найти в телеграме, написать ему сообщение и проверить работу нашего Фабричного метода.

Код проекта

Идея программы очень простая - вы пишите сообщение телеграм боту. Бот отправляет callback сообщение на бекэнд нашего приложения. И в зависимости от текста этого сообщения, код на бекэнде определяет какое сообщение отправить боту обратно, чтобы вывести его в телеграм клиенте.

Сообщение от телеграма приходит на роут, который мы указали при создании бота в BotFather. А во фреймворке создали этот роут в "\project\config\routes.php"

use \Core\Route;

return [

new Route('/telegram/:var1/', 'telegram', 'index'), // роут для telegram bot

];

Роут находит Telegram Controller и выполняет метод index. В этом методе мы выполняем ряд проверок. И если сообщение пришло от нашего телеграм бота, передаем сообщение в Фабричный метод, чтобы создать нужный объект и получить обратное сообщение для бота.

$ms = new MessageFactory($params);

$msObject = $ms->create();

В классе MessageFactory есть два метода. В конструкторе мы разбираем параметры сообщения и пытаемся получить текст сообщения от телеграма и id чата от которого сообщение пришло.

А в методе create мы проверяем существует ли класс для конкретного сообщения и если существует создаем объект этого класса и возвращаем его в контроллер. Если же класса нет, значит мы должны создать дефолтный класс.

public function __construct(array $params)

{

$this->command = preg_replace('/\//', '_', $params['message']['text']??'sdsfsdf');

$this->params['chatId'] = $params['message']['chat']['id']??0;

}

public function create()

{

$className = ucfirst($this->command);

$messageFile = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "project/classes/messagefactory/messages/Message$className.php";

$messageClass = $this->namespace."Message$className";

if(file_exists($messageFile) && class_exists($messageClass)){

return new $messageClass($this->params);

} else {

return new MessageDefault($this->params);

}

}

Для каждого конкретного сообщения, которое мы хотим обработать на бекэнде по уникальному сценарию, мы должны создать класс реализации. Например, класс "\project\classes\messagefactory\messages\MessageTest.php"

Этот класс расширяет абстрактный класс MessageAbstract и реализует интерфейс IMessage. class MessageTest extends MessageAbstract implements IMessage {}

У него есть только конструктор, в котором мы вызываем конструктор родителя и заполняем свойство $message = 'Test Message'. Соответственно, если мы напишем в телеграм бот сообщение 'test', то наш Фактори метод создаст класс MessageTest, в свойстве $message у него будет строка 'Test Message' и контроллер отправит эту строку обратно в телеграм бот.

Фабричный метод Опрос, PHP, Oop, IT, Программирование, Длиннопост

Telegram Bot

Что если

Что если бы мы не использовали все эти модные паттерны, классы и ооп. Конечно, такую программу можно реализовать и без ооп, возможно это даже проще. Но тогда описать обработку каждого сообщения придется в блоках if/else или switch/case. На первом этапе это будет не трудно. Просто напишем нужную строку для каждого case. Но, что если логика реакции на каждое сообщение будет сложной. Если при сообщении '/start' мы захотим зарегистрировать пользователя в системе и добавить его в базу данных. А при дефолтном сообщении создать еще несколько вариантов сценариев. Тогда наш контроллер будет огромного размера и поддерживать такую программу станет слишком сложно.

С другой стороны, если создать фабрику сообщений, то нам нужно только добавить отдельный файл сообщения в соответствующую директорию и все остальное сделает наш Фактори метод.

Вместо заключения. Это первый шаблон проектирования ПО который мы рассмотрели. Впереди еще много работы и полезных штук, поэтому... Спасибо всем, кто смог дочитать этот пост до конца несмотря на ужасное оформление, примеры на php и общую безграмотность. Отдельное спасибо всем, кто заходит и подписывается на ютуб канал. Я начинаю готовить видео на тему Шаблонов проектирования. Может быть примеры кода на видео будут более понятны.

Что рассмотрим в следующий раз?
Всего голосов:
Показать полностью 1 1
Отличная работа, все прочитано!