• Какой стэк технологии выбрать для социальной сети?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Архитектуру нельзя посоветовать. Нужно собирать требования и под них проектировать хотябы пару вариантов архитектуры, из которых уже дальше выбирать
    Ответ написан
    2 комментария
  • Какой стэк технологии выбрать для социальной сети?

    Starina_js
    @Starina_js
    full-stack web dev
    Архитектура проектов не зависит от языков программирования, библиотек, баз данных.
    Начинать надо с бизнес-требований, дальше переходим к бизнес-логике, а дальше уже работаем на уровне реализации (языки, библиотеки, фреймы и т.п).
    + еще архитектура штука изменчивая. Она должна и будет меняться при смене требований.

    Посоветовать могу книгу «Чистая архитектура. Роберт Мартин». Что-то сразу не зайдет, но в целом станет легче)
    Ответ написан
    2 комментария
  • Что почитать/где поучиться по высокой нагрузке и масштабированию в общем и для стека C#/.net core?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Highload Channel
    DotNext

    https://habr.com/ru/users/sidristij/
    https://habr.com/ru/company/jugru/blog/498932/

    В качестве живых примеров highload проектов на dotnet можно брать StackOverflow/StackExchange, СКБ Контур, ДоДо Пицца, 2Gis

    Блог про архитектуру StackOverflow/StackExchange
    Ответ написан
    Комментировать
  • Что почитать/где поучиться по высокой нагрузке и масштабированию в общем и для стека C#/.net core?

    Языки имеют второстепенное значение в масштабируемости приложений. По мере роста проекта всегда находятся узкие места и по мере необходимости переносятся на другие технологии.
    https://12factor.net/ru/
    https://m.habr.com/ru/company/badoo/blog/185220/
    https://dev.by/news/tipichnye-oshibki-masshtabirov...
    Ответ написан
    Комментировать
  • Как лаконично сформировать SQL-запрос на основе параметров из GET-запроса?

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

    Примерно так:

    $filters = array();
    $values = array();
    
    foreach(array("user_id","city","age","name") as $key) {
      if (isset($_GET[$key])) {
        $filters []= "$key = ?";
        $values []= $_GET[$key];
      }
    }
    
    $sth = $dbh->prepare("SELECT * FROM users WHERE ".implode(" AND ", $filters);
    $sth->execute($values);


    Тут для всех указанных запросов накапливаются условия фильтра и значения в два массива, один затем через AND используется в WHERE, а второй передаётся при выполнении запроса.

    Но реальные сложные проекты так не делают. У них может быть ORM, кэширование и много всякой другой магии, цель которой - увеличить скорость выполнения запросов и уменьшить лишнюю активность. Ну и базы данных могут бычть частично или полностью быть совсем не SQL.
    Ответ написан
    2 комментария
  • Войти в IT(если честно - ужасное выражение)?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Продолжать учить Python и выучить Django. Совсем хорошо, если ещё овладеть NumPy и Pandas. Со всем этим добром активно искать вакансии, проходить собеседования, обязательно брать обратную связь, подтягивать то, из-за чего не взяли, повторять попытки.
    Ответ написан
    2 комментария
  • Сколько памяти нужно выделить под SQL и сервер 1с приложений?

    jobgemws
    @jobgemws
    MS SQL Server and .NET Developer, DBA
    Зависит от того, сколько в среднем в секунду проходит запросов и сколько памяти потребляет каждый запрос. Можно отталкиваться от следующей конфигурации:
    1) 8 ядер под скуль-16/32 ГБ ОЗУ скулю+4 ГБ оставьте ОС
    2) 16 ядер под скуль-32/64 ГБ ОЗУ скулю+8 ГБ осиавьте ОС
    Для 1С выключите многопоточность в свойствах скуля (max dop=1), т к 1С с многопоточностью не дружит
    И напомню, что лицензия Standard скуля больше 16 ядер и 128 ГБ ОЗУ не распознает.
    Также можно в системных представлениях глянуть потребление памяти скулем. В свойствах скуля есть мин и макс для ОЗУ, выше привел макс, а вот мин сначала выставите в два раза меньше, чем макс, но не менее 8 ГБ (осторожно-там указывается в мб, а не в гб!).
    По опыту скажу, что если 1С жрет больше 64 ГБ ОЗУ и 16 ядер мало, а пользователей не 1000+, то проблема в запросах.
    П.1 приведенный выше подойдет под количество пользователей до 100 штук, при оптимизации можно конечно и до 500 штук
    Меньше 16 ГБ ОЗУ под скуль боевой не советую, т к всякое бывает и пусть будет если что в запас, т к сейчас 16ГБ ОЗУ-это ничто как было 2 года назад 8 ГБ ОЗУ-ничто. Аналогично и про 8 ядер-также минимум советую.
    А дальше уже смотрите из ситуации.
    Если среда виртуальная, то проблем в расщирении вообще не будет. Если нет, то советую в будущем перейти на виртуальные среды
    Ответ написан
    Комментировать
  • Какие есть книги по архитектуре сервера?

    hint000
    @hint000
    у админа три руки
    Если под словом "сервер" подразумевается железо, то...
    в первом приближении архитектура сервера не отличается от архитектуры ПК. Есть лишь отдельные "серверные" компоненты, более навороченные функционально. Но архитектурно ничего необычного там нет. Об этом нет смысла писать книги. Ну ECC-память, ну IPMI, ну полноценные RAID-контроллеры, ну крутой сетевой адаптер на борту, ну FC (fiber channel), ну расширенные средства диагностики, ну поддержка двух БП, ну регистровая память (чтобы запихнуть её побольше), ну мультипроцессорность. Всё это фигня, ничего принципиально необычного для ПК там нет.
    Ответ написан
    6 комментариев
  • БД для хранения сообщений чата, какую выбрать?

    @InoMono
    Вполне себе любая развитая современная РСУБД годится для этой задачи.
    MySQL, PostgreSQL...

    А по мере роста нагрузки - тут не выбором СУБД нужно заморачиваться, а MQ-сервер ставить. Он гораздо легче сравиться с бешенными нагрузками.

    Как вариант - Queue на базе Tarantool, например. Я даже не знаю что вы там должны такое сделать, чтобы заткнуть его производительность. При условии того, что на сервере достаточно много оперативной памяти.

    Из самого критично подозрительного - полнотекстовый поиск.
    Впрочем, полагаю, что полнотекстового поиска средствами MySQL или PostgreSQL вплоне хватит.

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

    Но, для начала, возможностей PostgreSQL или MySQL будет вполне достаточно.

    Что до Mongo... Если вам не нужна репликация без консистентности. Зато быстрая...
    Так вот если вам не нужна такая репликация, то Монга вам не нужна.

    РСУБД будут существенно быстрее.

    Вот ежели вы планируете заводить ваш чат в кластер, когда одного сервера вам не хватит, то тут да, тут РСУБД не лучший выбор. Тут бы я рекомендовал как раз Монгу.
    Но опять таки кластер серверов для чата вы без MQ не сделайте.

    Вывод:

    Начните с обычной РСУБД.
    Как начнутся затыки - рассмотрите MQ
    Как начнется рост до масштаба планеты - рассматрите Монгу.

    Вся система работает с бд MySQL - InnoDB, сообщения пишутся в бд при каждой отправке (INSERT), пока сервис еще не запущен, сообщений мало (только мои тестовые) все работает шустро, но вот когда запущу и количество сообщений перевалит за несколько миллионов, что будет тогда с моей бд? Начнутся жесткие тормоза при select и insert?


    Вам никто не мешает это проверить.
    Сгенерируйте миллион случайных сообщений.

    При грамотном использовании индексов - ровным счетом никаких проблем ни на миллионах ни на миллиардах записей.
    Ответ написан
    15 комментариев
  • Как реализовать на css такое окно чата?

    Stimulate
    @Stimulate
    могу
    Ответ написан
    Комментировать
  • Как получить данные за последние N месяцев?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    SELECT Concat(calendar.name, " ", calendar.year) as name, ifnull(date.value1,0) AS value
     FROM (SELECT DISTINCT date.year, month.id, month.name FROM date, month) AS calendar
       LEFT JOIN date
         ON date.year = calendar.year AND date.month_id = calendar.id
     ORDER BY calendar.year, calendar.id LIMIT 6 OFFSET 18


    ограничиваясь текущим месяцем … последние 6

    SELECT Concat(calendar.name, " ", calendar.year) as name, ifnull(date.value1,0) AS value
     FROM (SELECT DISTINCT date.year, month.id, month.name FROM date, month) AS calendar
       LEFT JOIN date
         ON date.year = calendar.year AND date.month_id = calendar.id
      WHERE CONCAT(calendar.year, '-', LPAD( calendar.id, 2, '0')) 
                     > LEFT(DATE_SUB(NOW(), INTERVAL 6 MONTH), 7)
     ORDER BY calendar.year, calendar.id LIMIT 6
    Ответ написан
    7 комментариев
  • Как работает сборщик мусора с объектами?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Рассуждения неверные. Читай код FragmentManager'a. Ни в одном из случаев объект не будет помечен, удалён, и тд. Ссылка на него останется в транзакции.
    Ответ написан
    4 комментария
  • Сколько оперативной памяти требуется приложению?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Нормы никакой нет. Есть требование - чем меньше памяти потребляет, тем лучше. В идеале - ноль
    Ответ написан
    2 комментария
  • Сколько оперативной памяти требуется приложению?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Медитировать на график потребления памяти в такой ситуации смысла особо нет. Используй LeakCanary для выявления утечек.
    Ответ написан
    2 комментария
  • Нормально ли изучать android разработку по startandroid?

    @terminator-light
    Советую такие каналы по Android-разработке как:
    Mobile Developer
    Skill Branch
    А если знаете английский:
    Reso Coder
    CodingWithMitch
    Ответ написан
    Комментировать
  • Как сделать анимацию логотипа?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Что первое, что второе, по описанию, требуют WebGL. Второй вариант проще и легче в плане кода будет: статичная сфера с текстурой + текст, который описывает движение по её орбите.

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

    Типа так:


    UPDATE. Увидел такой баг в Android Chrome в результате совместной работы border-radius и overflow:
    5d694ce0ed71b148762968.png
    Нашел решение хаком. Нужно добавить следующее к такому блоку:
    -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC); /* this fixes the overflow:hidden in Chrome/Opera */


    Это исправило проблему, обновил песочницу.
    Ответ написан
    3 комментария
  • Как удалить Listener в RecyclerView?

    AlexanderYudakov
    @AlexanderYudakov
    C#, 1С, Android, TypeScript
    Есть смысл ставить один раз обработчик кликов на весь RecyclerView:
    https://medium.com/@harivigneshjayapalan/android-r...

    Ставить обработчики на каждый элемент списка — это перебор.
    Ответ написан
    Комментировать
  • Какие книги посоветуете?

    Тут уже написали про Совершенный код и Код. Тайный язык информатики — это must have. Добавлю вот такой список, может быть что-то интересное найдете для себя.

    Жизнь
    Цель. Процесс непрерывного совершенствования (Элия М. Гольдратт, Джеф Кокс)
    Идеальный программист. Как стать профессионалом разработки ПО (Роберт К. Мартин)
    Джоэл о программировании (Джоэл Х. Спольски)
    Джоэл и снова о программировании (Джоэл Х. Спольски)

    Архитектура компьютера
    Код. Тайный язык информатики (Чарльз Петцольд)

    Программирование
    Структура и интерпретация компьютерных программ (Харольд Абельсон, Джеральд Джей Сассман)
    Грокаем алгоритмы (Адитья Бхаргава)
    Совершенный код (Стив Макконнелл)
    Автоматное программирование (Н. И. Поликарпова, А. А. Шалыто)

    Операционные системы
    Операционная система UNIX (Андрей Робачевский, Сергей Немнюгин, Ольга Стесик)
    Руководство администратора Linux (Эви Немет, Гарт Снайдер, Трент Р. Хейн)

    Люди
    Человеческий фактор. Успешные проекты и команды (Том ДеМарко, Тимоти Листер)
    Мифический человеко-месяц, или Как создаются программные системы (Хилл Чапел, Фредерик Брукс)
    Как сдвинуть гору Фудзи? Подходы ведущих мировых компаний к поиску талантов (Уильям Паундстоун)

    Разное
    Вы, конечно, шутите, мистер Фейнман! (Ричард Фейнман)
    Гарри Поттер и методы рационального мышления (Элиезер Юдковский)
    Ответ написан
    Комментировать