Задать вопрос
  • Как правильно проверить ввел пользователь номер телефона или свою почту?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Если в введённом есть символ @ то это почта.
    Ответ написан
  • Правильно ли так очищать память?

    kagary06
    @kagary06
    Человек
    • Если нужно удалить переменную любого типа del variable
    • Если нужно очистить память, но при этом переменная продолжит существовать variable = None
    • Если нужно очистить память для списка/кортежа/множества, но при этом не изменять тип variable.clear()
    Ответ написан
    Комментировать
  • Зачем нужны пакеты VC++, .NET Framework, Java Runtime, DirectX?

    GavriKos
    @GavriKos
    Очень коротко - чтобы запускались те программы, которые используют функционал этих пакетов.
    Ответ написан
    3 комментария
  • Websocket почему работают быстрее чем http?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    No silver bullet in this world.

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

    Ну, и отвечая на вопрос про скорость - в http протоколе при каждом запросе открывается новое соединение, а в вебсокет - один раз. В итоге убирается потеря на этой точке
    Ответ написан
    Комментировать
  • Как правильно запустить домашний веб-сервер на Windows?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Ну, в любом случае нужна будет серверная ось - WinServer, как минимум. Кроме того - сервер дома - признак гика, способного и умеющего выполнять все необходимые административные функции.

    Какие?
    1. Сервер должен где-то работать - он должен быть включен 24х7, так что ему понадобится отдельная железка.
    2. Железке нужно место
    3. Железка жрет электричество, ей нужно гарантированное питание, то есть UPS
    4. Железка шумит
    5. Железка содержит изнашиваемые компоненты, может выйти из строя - то есть нужен бэкап сервера
    6. Серверу требуется канал определенной ширины, который Вам не обеспечит пров (потому что "до 100Мб...", а не "100 Мб...")
    Да, в некоторых случаях сервер дома - это устранение отдельных видов головной боли. Но это хорошо только для админов, ИТ-безопасников и пр - для которых это - часть их работы. Обычному челу все это будет освоить непросто..
    Ответ написан
    Комментировать
  • Где используются такие вещи как: SignalR Core, Socket.IO, WebSocket, SignalR и Rest Api?

    Griboks
    @Griboks Куратор тега Unity
    Эти технологии позволяют передавать данные от зрителей на серверу.
    они позволяли зрителям самим собирать им колоду голосуя в чат за ту или иную предложенную карту

    Эти слова могут помочь, но я бы посоветовал вам ознакомиться с HTTP POST, GET и AJAX. Эти штуки позволят вам создать интерактив со зрителями за пару строчек кода.
    Ответ написан
    Комментировать
  • Что значит "опыт прямой работы с базами данных без прослоек"?

    @Vitsliputsli
    Написание SQL без использования ORM. Либо у работодателя очень нагруженный сервер СУБД и тогда нужно ещё и понимание работы СУБД (как оптимизатор выбирает оптимальный план, как писать более производительные запросы и почее), либо ребята просто не умеют работать с ORM и боятся его.
    Ответ написан
    Комментировать
  • Какая оптимальная структура для таблицы "лайков"?

    @orbit070
    Если, чисто теоретически представить, что пользователей миллионы, а постов десятки миллионов, является ли такая структура оптимальной?

    Почти. Нужно применить дублирование и прокинуть в эту таблицу сразу все те поля, которые вам могут пригодиться для отображения, иначе каждый раз придется делать join, чего бы не хотелось при highload. То есть нужно добавить в таблицу сразу поля вроде user_name, post_title, post_body, и т.д(в общем все то, что вы планировали доставать с помощью join).

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

    нужно ли тут поле id, или PK сделать составной (post_id, user_id) или PK вообще не нужен? Это влияет на селект?


    Зависит от сценариев использования(подумайте, в каком случае вам нужно будет поле id), но в большинстве случаев оно не нужно и такие поля вводят для душевного спокойствия и гармонии. На селект это не влияет, ведь все равно вы будете делать выборку либо по user_id либо по post_id(опять же, это в большинстве распространенных сценариев, если у вас есть какая-то логика, где нужно будет выбирать из таблицы likes записи по какому-то намеренно введенному идентификтаору, то вводите).
    Ответ написан
    2 комментария
  • Простой векторный графический редактор?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    Ну, если бы на все задачи можно было найти точные инструкции, было бы скучно.
    Пробуйте написать начиная с малого, например:
    1) Создайте холст, просто объект, который будет помещать в себя фигуры. Это будет некий viewport.
    2) Сделайте скролл этого холста мышкой, во все стороны.
    3) Сделайте возможность динамически добавлять объекты на холст, сначала определите базовый объект, например прямоугольник или линию. Легче на этом моменте сразу определить интерфейс IShape, таким образом дальше будет легче унифицировать все объекты при добавлении их на холст, да и холст ничего не должен знать об этих объектах, только об интерфейсе.
    4) Сделайте drag&drop добавленных объектов, чтобы их можно было тащить.
    5) Добавьте зум, это не простой шаг, тут нужно многое учитывать, особенно часто на этой задаче ломается позиционирование drag&drop объектов.
    6) Сделайте трансформатор объектов, который будет изменять их размер (для прямоугольников и.т.д.), менять точки (для линий), вращать и.т.д.
    7) Сделайте редактор свойств, через который будете назначать атрибуты вашим объектам, такие как цвет заливки, цвет рамки, ширина рамки, непрозрачность и.т.д.
    8) Добавляйте потихоньку различные объекты. Можете подглядывать в другие редакторы, например inkscape.
    9) Реализуйте сохранение и загрузку холста. Тут лучше не изобретать свой формат данных, а использовать открытый, например svg.
    10) Буфер обмена. Тут либо свой формат в бинарник, либо тот же самый svg в текстовом виде (что куда лучше, так сделано в фигме).
    11) Отменить/вернуть - важная штука, и на первый взгляд простая. Но простая она только в том случае, если запоминать шаги путем снимка всех текущих объектов, но этот способ плохой. По нормальному нужно при любой операции над объектами на холсте делать снимок изменений. Например подвинули кубик на 10px влево, и записали в память значение
    { id: 'id кубика', x: -10 }
    и потом при нажатии отмена, будете просто делать обратную операцию, добавлять эти 10px. Тут у вас возникнут сложность с операцией "возврат", но думаю, если вы дошли до этого шага, упорство у вас уже есть. Пригодятся паттерны: command и memento
    12) Ну, тут уже по мелочи, различные киллер фичи, новые объекты, свойства, различные меню и.т.д.
    Ответ написан
    1 комментарий
  • Как из БД динамично получать новые записи?

    @nrgian
    Я бы с MQ сделал
    Ответ написан
    Комментировать
  • Как найти угол между двумя векторами на канве?

    Beshere
    @Beshere
    Разработчик
    cos(alfa) = (a * b) / (|a| * |b|)

    Вектора, надеюсь умножать умеете.
    Ответ написан
    3 комментария
  • От какой ветки нужно ветвить фиче-бранчи для разработки?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Поделитесь опытом, какой способ вы используете для своей разработки?
    Лично мы используем такой способ:
    1. Есть мастер ветка, туда попадает только полностью оттестированный код (обратите внимание - не в конце какого-то спринта; не после того, как на горе рак свистнет; а после прохождения всех этапов тестирования)
    2. Есть dev-ветка, ею заведует старший разработчик и по мере необходимости "подливает" туда фиче-ветки.
    3. Есть много фич-веток, в которых работают отдельно взятые личности, при этом откуда они будут брать кодовую базу для доработки - их личная трагедия. Если при слиянии возникают конфликты - есть старший разработчик, если ему что-то непонятно - есть авторы кода, которых можно позвать и спросить "какого тут происходит?".

    Лучшая формула работы, из моего личного опыта - это "думать головой", а не слепо следовать какому-то набору правил.
    Ответ написан
    Комментировать
  • Как mysql может забивать swap, если есть свободная память?

    @neol
    https://habr.com/company/flant/blog/348324/ довольно подробно описывает как и почему.
    Ответ написан
    Комментировать
  • Почему ssd диск загружен на 100% на vps, debian, hetzner, atop?

    insiki
    @insiki
    broken pipe
    смотрите, что у вас из системных/юзерных скриптов запускается по ночам
    mlocate например
    Ответ написан
    Комментировать
  • Как хранить данные о заказах, товары в которых могут быть удалены?

    удаление позиции заменить сменой статуса на Не активна и никуда не удалять

    Правильное решение

    P.S. Не очень(совсем не) подходящая задача для нереляционной БД.
    Ответ написан
    3 комментария
  • Какие утилиты использовать для расследования загрузки сервера на centos?

    @arakchi
    На мой взгляд, самый простой вариант без настройки разных систем составных мониторинга (zabbix and etc) это atop. По умолчанию, он даёт статистику за 10 минутный интервал, но это можно изменить. Учитывая, что у Вас CentOS не забудьте добавить его в автостарт (он автоматом туда не добавляется). По крайней мере ответить на вопрос "какой процесс нагружает" он часто поможет и укажет в какую сторону копать.
    К сожалению, если выяснится что это какой нибудь apache, mysql, php Вам всё равно крайне желательно будет застать сам процесс в момент нагрузки и смотреть, что он непосредственно делает, собирая о нём информацию всякими strace, lsof или более специфичными инструментами. Так же полезно будет настроить для него расширенное логирование.
    Как правильно заметил alfss, общения с логами, скорее всего, не избежать. Редко они даже дают понять и без мониторинга, в чём проблема. Однако их анализ трудоёмок и не всегда приводит к результатам, особенно если не знать, что искать и как логи выглядят обычно (когда сбоев нет).
    Ответ написан
    Комментировать
  • Несколько раз в сутки зависают все сайты на сервере. Помогает только init 6. В чем может быть проблема?

    DMGarikk
    @DMGarikk
    Lead Software Developer
    переустанавливайте сервер с нуля
    если вы не знаете как и откуда попал вирус, смысла искать неисправности в работе апача нет, ваша система уже полностью скомпрометирована
    Ответ написан
    6 комментариев
  • Как контролировать версии файлов веб проекта?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Да, бывают. Называется git. Это то, что ваши программисты скорее всего использовали.

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

    Ваша проблема в том, что программисты не пишут тесты и не тестируют сами, у вас нету тестеров и нету staging'а (сервера, на который попадают все изменения для тестировия сразу до продакшена). Вам нужно менять workflow.
    Ответ написан
    Комментировать