• Как правильно создавать архитектуру?

    vesper-bot
    @vesper-bot
    Любитель файрволлов
    Вообще, нужно взять бумажку и задать на высшем уровне абстракции все возможные в текущем представлении сущности. Если разговор о "змейке" - задаете вопрос, что у вас в игре есть как сущности. Скажем, есть змея, есть стены, есть жрачка, их пишете как сущности. Затеяли добавить "муху" - пишете тоже. Затем пишете, кто что умеет делать: змея умеет ползать, стукаться в стены или жрачку, расти и возможно что-нибудь ещё, стены просто стоят, жрачка умеет появляться, съедаться. И так далее, пока всю игру в примитивах не опишете. Дальше - каждая сущность это класс, каждое отношение это метод, каждый параметр, выясненный в процессе, это свойство класса. Но чем дальше в лес, тем больше грабли. На уровнях выше начинаются модули со своей инкапсуляцией, события, гонки всякие, а-ля "кто съел яблоко, вы или противник", асинхронное взаимодействие, подписки на что-либо, и так далее, интерфейсы становятся сложнее, какие-то объекты передаются как параметры и всё такое, но общий принцип остается - сначала большими кусками всё делится на куски поменьше, определяются интерфейсы (кто что может спросить или повлиять на кого), пытается реализовываться, потом, вполне возможно, находятся противоречия, которые приходится устранять рефакторингом, и по спирали.

    Что поизучать - сначала просто базовое ООП, чтобы понять, из чего вообще строить программу, что такое объект, класс, интерфейс, наследование, полиморфизм (та же жрачка может быть нескольких видов, например, но "съедается" она одинаковым образом), инкапсуляция (а-ля "не лезь в мои свойства своими лапами"). Все эти SOLID и прочие аббревиатуры, а также паттерны и антипаттерны, появятся в процессе, когда от архитектуры перейдете к дизайну самих сущностей и написанию кода методов. По-моему так.
    Ответ написан
    Комментировать
  • Почему падает mysqld?

    @Absolute138 Автор вопроса
    Не буду называть хостера...
    Vitaly Karasik оказался прав.
    Далее переписка с саппортом:
    Здравствуйте! В районе 4 утра упал mysqld.
    IP сервера: XXX.XXX.XXX.XXX
    Мой лог mysql по ссылке: http://*.ru/error.log_8.1.gz
    Все рекомендуют проверить работу железа.
    Похожая проблема на форуме MySQL:
    https://forums.mysql.com/read.php?22,620521,620521...
    https://bugs.mysql.com/bug.php?id=74824

    После падения mysql поднялась и сейчас работает без критических ошибок в логах. Уточните, имеются ли на моем сервере проблемы с оборудованием/драйверами? И с чем может быть связано данное падение?

    Ответ хостера:
    Здравствуйте!

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

    И не уведомления, ни черта не было. Такое отношение((
    Ответ написан
    4 комментария
  • Почему sphinx долго выполняет запрос "c c c c c c"?

    WebDev2030
    @WebDev2030 Автор вопроса
    Битриксоид до мозга и костей
    Нашел параметр expansion_limit выставил на 40. Сейчас поиск отрабатывает быстрее значительно. Также добавили фильтрацию по средней длине слова, если в запросе средняя длина слова меньше определенного значения, то выдаём ошибку что запрос не корректный (сейчас пока значение 2). Также есть ограничение по количеству слов в запросе.
    Ответ написан
    Комментировать
  • Как переписать SQL-запрос?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Индексируй таблицы. Запрос у тебя простой. Не вижу что тут можно оптимизировать
    Ответ написан
    Комментировать
  • Можно ли через terraform поменять логин пароль на postgres rds не убивая ее?

    @vitaly_il1
    DevOps Consulting
    Проверил и с MySQL и с Postgres - меняет пароль не пересоздавая сервер.
    resource "aws_db_instance" "rds_db_instance_name" {
      identifier             = "test-rds"
      skip_final_snapshot    = true
      apply_immediately      = true
      allow_major_version_upgrade           = false
      backup_retention_period = 0
      allocated_storage      = 20
      storage_type           = "gp2"
      engine                 = "postgres"
      engine_version         = "11.8"
      instance_class         = "db.t3.micro"
      username               = "myadmin"
      password               = "Mypassword567"
      parameter_group_name   = "default.postgres11"
    
    }
    Ответ написан
    Комментировать
  • В mysql для быстрого поиска по дате лучше использовать timestamp как int или как date (datetime)?

    Adamos
    @Adamos
    Для быстрого поиска по большим объемам данных надо использовать - индексы.
    Тогда формат самих данных будет влиять только на время вставки.
    Ответ написан
    3 комментария
  • Чем автоматизировать бэкап 1000 БД на нескольких серверах?

    @Himura
    Ansible
    Ответ написан
    Комментировать
  • Найдена опасная уязвимость в очень популярном мобильном приложении. Что делать?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    Внимание! Изменился адрес почты!
    и учечка данных пользователей может обойтись сервису 100.......000$-ми убытками

    Может. Но (тебе) лучше, чтобы об этом сообщил кто-нибудь другой. Потому что скорее всего, тебя же и обвинят во взломе и хищении.
    Обращаться стоит только в том случае, если у сервиса есть программа по исправлению ошибок ("bugs bounty"), если же нет, а аппликуха популярная - лучше перестать пользоваться, застраховаться и не лезть, ну или сообщить с левого одноразового мейла.
    А что до вознаграждения - вот что пишет классик, Иван наш Андреевич Крылов
    Ответ написан
    Комментировать
  • Альтернатива sudo/su для Windows?

    @azarij
    В меру опытный никто
    Комментировать
  • Кто и когда использует бинарные деревья и другие структуры данных?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Иногда вам может понадобится что-то не совсем стандартное. Например, возможность быстро вставлять элемент на k-ое место в структуре и находить, что лежит на k-ой позиции. Это делается деревом по неявному ключу, но, по моему, ни один язык не предоставляет стандартной структуры для этого.
    Ответ написан
    2 комментария
  • Почему не запускается сервис телеграм бот?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    ExecStart=/path/to/python /home/telebot/bot_prod/bot.py
    Ответ написан
    4 комментария
  • Что делать если не получается писать код имея нужные знания?

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

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

    Если совсем не получается - не лезь не твое это. Твой мозг просто не может формализовать задачу.

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

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

    Так вот тренировать нужно методику разбиения задачи на составляющие.
    Ответ написан
    1 комментарий
  • Как в руби удалить массив с пустым элементов из массива массивов?

    0xD34F
    @0xD34F
    arr.delete_if{|n| n.include?('')}
    Ответ написан
    Комментировать
  • Можно ли в Go собрать проект с объявленными, но не используемыми переменными?

    @Rerurk
    Сначала убивает. Но потом привыкаешь. Да и уборщику работать проще
    Ответ написан
    1 комментарий
  • В каких приложениях Go существенно эффективнее чем Node.js и PHP?

    Noizefan
    @Noizefan
    Есть ещё некий момент следования за трендами.

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

    Го же лично для меня представляется чем-то вроде золотой середины в описанной мной ситуации.
    Он раз - компилируемый, два - эффективнее (>php,js), три - надёжнее (>php,js), четыре - проще (>c++). А значит удовлетворяет запросу выше.
    И при том я бы ни в коем случае не разрабатывал (читай - не переписывал) на нём проект, пока под проект не выделен целый ЦОД, а не полка на стойке, пока обо мне не говорит весь мир.

    С другой стороны - не обрёл он ещё той силы в виде поддержки, коммьюнити и возраста (как критерия надёжности), чтоб я предпочёл его крестам.
    Ответ написан
    1 комментарий
  • В каких приложениях Go существенно эффективнее чем Node.js и PHP?

    @mitya_k
    • Первая, причина, Go популярен за свою бедность синтаксиса, кому-то это нравится...
      Для больших компаний типа Google это плюс так, как можно посадить посадить 100500 программистов, которые вынуждены писать очень много однотипного болерплейта кода.
    • Вторая причина, там где требовалось решать низкоуровневые задачи, без бизнес-логики(например, много работать с байтиками), плюс требовалась многопоточность для этого приходилось использовать СИ++. Теперь есть простая альтернатива в виде Go. Опять же это актуально для больших компаний, где есть подобные задачи. Например, писать какой-нибудь парсер террабайтных логов
    • И последняя, можно сгенерить бинарь без зависимостей, что нравится работающим в DevOps, а для скриптования "богатый язык" особо не нужен. Опять же актуально для больших компаний, где есть большие отделы DevOps


    Из всех 3 пунктов вытекает зарплата и популярность в больших компаниях.
    Ответ написан
    Комментировать
  • Взламывают базу данных, как?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    база данных открта внешне, т.е к ней можно удалённо подключаться

    Одно из другого не следует. Для работы из вне имеет смысл использовать ssh тоннель.

    только с одного ip адреса - адреса где лежит сайт

    Если у вас shared хостинг - у меня для вас плохие новости...

    как это возможно?

    Инспектируйте код вашего сайта, полностью. Возможно права на загружаемые файлы не корректные, или в web root лежит помимо точки входа еще что-то исполняемое.
    Вполне возможно в случае ошибки - вы стектрейс выводите и еще какие-то данные.
    Возможно debug панель не закрыта.
    Возможно у вас пароль легко взламывается.
    Возможно взломали не конкретно вас, а хостера.

    Но начние с поиска: у кого в принципе есть доступ к вашей БД. Иногда взлом происходит изнутри, это печально, но случается.
    Ответ написан
    Комментировать
  • На чем написан TWITCH?

    допустим он написан на go, что дало это знание?
    Ответ написан
    Комментировать
  • Как правильно перенести измененную либу с github?

    Stasgar
    @Stasgar
    Обученная макака
    Сделай форк на гитхабе, внеси свои изменения в свой форк и подтягивай по имени форка, а не оригинала.
    Ответ написан
    2 комментария