• Как оптимизировать процесс загрузки большего объема данных?

    dima9595
    @dima9595
    Junior PHP
    Для начала необходимо понять по какой причине ответ от сервера около 3 секунд.
    Тут может быть проблема в настройках, слабом сервере или ещё чего из большого списка возможностей.

    Далее нужно понять почему данные вы получаете 7-8 секунд.
    Тут может быть как первая причина, так и просто неоптимизированный, кривой код. Опять же, разбираемся!

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

    UPD:
    Банальный пример из практики. У нас в проекте был очень старый код, который написан был лет 5 назад. Новички думали что просто сервер слабый. Но покопавшись в коде стало ясно, что код крайне неоптимизированный и мы его оптимизировали.
    Раньше загружалось более 60 секунд (как правило уходил в таймаут. т.е. вообще не загружались при малом количестве фильтров по данным)
    Стало: около 10-20 секунд.
    И это те же данные...
    Ответ написан
    2 комментария
  • Как выбрать ноутбук для фронтенд разработки?

    xez
    @xez
    TL Junior Roo
    Macbook Air M2 16gb/512gb - отличный вариант.
    Его и берите.

    Еще можно посмотреть маки на m1 процессоре (почти такие же быстрые, но дешевле).
    Lenovo x1 carbon (если не хочется макоси)
    Ответ написан
    2 комментария
  • Одноплатник работает в режиме 24/7. Почему спешат/отстают часы?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Кварцы не совершенны.
    Рубидиевые часы стоят как маленький самолет.
    Так что используйте NTP
    Другой вариант измерьте суточное отставание и корректируйте скриптом
    Ответ написан
    7 комментариев
  • Как написать SQL запрос, когда 2 поля из первой таблицы ссылаются на вторую таблицу?

    rozhnev
    @rozhnev Куратор тега SQL
    Fullstack programmer, DBA, медленно, дорого
    select 
        `events`.`name`, 
        `users`.`name`  as `user_name`,
        `executors`.`name` as `executor_name`
    from `events` 
    left join `users`  `executors` on `events`.`executor_id` =  `executors `.`id`
    left join `users`   on `events`.`user_id` = `users`.`id`
    Ответ написан
    2 комментария
  • Как монетизируются языки программирования и бесплатные фреймворки?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Вы, простите, много видели программистов 1С, работающих на языке программирования 1С без 1С? Я - ни одного. Закрытый "клуб по интересам", который генерит такие велосипеды, что диву даешься.
    Закрытый язык программирования никто не будет учить, на закрытом фреймворке никто работать не будет, даже если будут обучать. Для чего его учить, время тратить? Чтобы потом иметь возможность устроиться только в компанию Х? Потеря сообщества - это смерть любой технологии, любого языка, любой ОС.
    Была такая замечательная ось - OS/2. То, что она замечательная, я знаю не понаслышке - все-таки два года проработал под ней. Погубило ее как раз отсутствие поддержки - не было софта, не было программистов, не было сообщества - все постепенно разбегались кто куда. Где нынче OS/2 - да никто и не вспомнит. А отдал бы IBM ее в опен сорс - глядишь, нашлись бы пара-тройка энтузиастов.
    Продавать продукт невыгодно - его можно продать один раз. Гораздо выгоднее продавать поддержку - ее можно продавать постоянно.
    Ответ написан
    4 комментария
  • Нужно ли устанавливать на ПК node.js для разработки приложений на React и React Native?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Весь (за мелкими исключениями) инструментарий для фронта работает на node.js. Так что без вариантов.
    Ответ написан
    Комментировать
  • Как вывести id объекта при клике?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    $('[class=class]').on('click', function(){ console.log($(this).attr('id'))})
    Ответ написан
    Комментировать
  • Ассемблер, почему дизассемблированном коде много ненужных операций?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему не переписать вместо этого
    add ebx,dword ptr [rbp+ECX*4+10h]

    Буквально так написать нельзя, потому что нет такого режима адресации в котором можно было бы использовать вместе Rbp (64-битный) и Ecx (32-битный). Можно было бы написать add ebx,dword ptr [rbp+rcx*4+10h], но для этого счётчик цикла должен был бы быть 64-битным, а он, как мы видим, 32-битный (int i). Т.е. ответ на вопрос "для чего это": для беззнакового расширения 32-битного счётчика цикла в регистр, который можно использовать для доступа к памяти.

    Другое дело, что из исходного кода очевидно, что при обращениях к памяти i не выходит из диапазона 0..9, так что разницы между ecx и rcx нет и не может быть. Возможно я что-то упускаю и у компилятора другое мнение на этот счёт, но может быть он просто туповат и не имеет кода который бы мог использовать эту возможность оптимизации, а может такая оптимизация и есть, но она не была включена во время генерации этого кода.
    Ответ написан
    Комментировать
  • С чего начать учить Kotlin?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно рассмотреть 2 Котлина. Или два варианта использования.

    Первое - это разработка под Adroid. Тут как бы понятно. Если Google его поддерживает то его стоит
    изучать и использовать. Но это означает - связать свою жизнь с клепанием формочек в мобилах.

    Второе это Spring/Kotlin/Java/Groovy e.t.c. Стек современного ентерпрайза. Тут - я бы не был так уверен.
    Дело в том что Java технологии - в силу генезиса опирается на достаточно старый и консервативный стек.
    И почти все стектрейсы ошибок будут неизбежно содержать сущности мира Java (JDK). От этого не уйти.
    Это как С++ разработчик вынужден знасть ассемблер когда дело касается анализа крашей приложения
    и вопросов ABI. Короче "не отпускает мать-земля"! Сколько ни придумывай абстракций а как жахнет
    черный или синий экран - сиди и вспоминай назначения регистров и что в них функция положила.
    Из позитивных моментов. Kotlin очень часто хвалят за лаконичный синтаксис и null-safety. Но последние
    несколько лет java community взяло бешеный темп развития (иначе я это назвать не могу) и начинает
    вносить изменения в спеку языка. Records, Pattern matching все эти штуки сильно приближают
    Java к Scala и Kotlin и возможно через лет 5 матрица фич этих языков будет одинаковой по всем
    позициям. Просто будут по разному называться. Вместо какого-нибудь "оператора Элвиса" будет
    оператор "Джона Леннона". Вобщем стоит ли рваться в Котлин "любой ценой" - я не знаю.
    Ответ написан
    Комментировать
  • Какие разделы математики знать надо в веб и в серверной части веб?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    It depends.
    Чтобы JSON'ы гонять достаточно арифметики за 4 класс. А дальше всё зависит от специализации. В геймдеве и геометрия понадобится, и линейная алгебра, и дискретная математика, и численные методы. Для работы с базами данных - основы реляционной алгебры. Для бигдаты - математическая статистика, теория вероятности.
    Ответ написан
    1 комментарий
  • Монитор + подвешенный к нему системный блок это лучше чем моноблок? И подойдет ли такой комп для видеомонтажа?

    @Drno
    Что в моноблоке, что в миниПК, что в ноутбуке - одна проблема, это охлаждение. Т.к. места - минимум для него.

    Для рендера и монтажа обычно берется нормальный системный блок. С хорошим охлаждением. Чтобы ПК мог молотить на 100% 24\7

    Совсем чтоли для корпуса места нет?
    Ответ написан
  • Возможно ли содержать сервер дома?

    CityCat4
    @CityCat4 Куратор тега Сетевое администрирование
    Внимание! Изменился адрес почты!
    Что-то последнее время стало много вопросов на эту тему...

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

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

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

    К сожалению, плюсов не бывает без минусов :) Хотелось бы о них тоже поподробнее - не чтобы отговорить, а чтобы предупредить.

    - Цена, комплекутха, ЗиП. Новое серверное железо очень дорогое. Сервак за пол-лимона - это как здрассьте. "Для себя" обычно берут бу железо. Это довольно распространенный метод, так что существуют специальные конторы, торгующие бу серверным железом. Насколько оно старое? Обычно не моложе пяти лет. Почему пяти? В крупных конторах есть регламенты, по которым железо списывается по истечении определенного срока, обычно он пять лет. Списывается, независимо от состояния, даже если оно идеальное. Бу сервер можно прикупить за вполне приемлемые деньги (разумеется имея в виду, что винты нужно брать новые и не десктопные, а именно рейдовые). Комплектуху и ЗиП покупать можно в тех же конторах.

    - Размещение. Сервер обычно в серверном корпусе, который ставится в стойку. Добро, если у Вас есть стойка :) а иначе его нужно куда-то пристроить - а без стойки эта большая плоская хреновина будет весьма неудобной для резмещения (Лайфхак: у меня лежит на шкафу)

    - Шум. такого понятия как
    тихий серверный шкаф

    не существует. От слова совсем. Потому что шкаф - для серверной. Даже самый тихий сервер (а я подбирал именно по "тихости") даже при самых низких оборотах кулера (в BIOS - 4500 об/мин) - довольно заметно шумит. Кроме того, если температура повышается, сервер автоматически кладет на настройки BIOS и повышает скорость вращения кулеров - в итоге у меня сервер в людбое время устойчиво негромко гудит и периодически взвывает - потому что перегревается.

    - Комфортная температура. Для сервера и человека - она разная и поэтому запросто получится, что Вам придется выделить серверу отдельную комнату :D

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

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

    - Интернет-канал. Для физиков как правило flat-rate не предоставляют (ну либо заломят, как с юрика), поэтому держать там нагруженный сайт Вы не сможете - он будет адово тормозить. Хотя обычный сайт работать будет (если пров дает белые IP).

    - Анти-вирус, анти-ддос, анти-спам, анти-все-остальное. Все это придется делать самому либо просто забить. Разумеется, профессиональному админу это сделать несложно.

    - Настройка, резервное копирование. Фактически повторение предыдущего пункта - спихнуть нее на кого, сами, все сами...

    - Изменить IP практически невозможно, уж не говоря о его регулярной смене.
    Ответ написан
    12 комментариев
  • Последний раз верстал в 2019 году и ушел в дизайн. Что нового появилось в html/css за 3-4 года что нужно подучить?

    vabka
    @vabka
    Токсичный шарпист
    Никаких значительных изменений не было в плане вёрстки (html и css).
    Максимум - мб какие-то вещи доехали до сафари. И IE окончательно устарел.

    Большинство изменений сейчас - в подходах к разработке и инструментах. В том, как работают люди с js и разными его фреймворками.

    Ну вот ещё список новых стандартов, которые опубликовали w3c:
    https://www.w3.org/TR/?filter-tr-name=&status%5B%5...

    После 2019 опубликовано всего 6:
    Ответ написан
    1 комментарий
  • Как анимировать такой фон?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Неоднородные плавные искривления никак не получится сделать в рамках CSS или SVG. Плюс волна трехмерная, поэтому изобретать что-то в 2d-канвасе будет непрактично и скорее всего сложно в плане производительности. Поэтому использование WebGL - это естественный выбор. Конкретные библиотеки/фреймворки не имеют значения, в конечном счете все такие волны сводятся к простой схеме:

    1. Берем плоскость
    2. На плоскость накладываем какую-нибудь красивую текстуру
    3. Добавляем вершин побольше
    4. В вершинном шейдере делаем какой-то генератор шума и используем значения из него чтобы двигать вершины туда-сюда в направлении, перпендикулярном плоскости
    5. Опционально там же рассчитываем нормали для освещения
    6. Играемся с коэффициентами до посинения, пока результат не начнет нравиться


    Ответ написан
    Комментировать
  • Зачем нужны Route hendlers в Next.js?

    szQocks
    @szQocks
    не советую вообще забивать голову этим дерьмом, потому что разбивать серверную логику на 2 сервера - это самое ужасное что может быть, зачем вообще сделали разработчики эту возможность ? - для каких-то наверное нестандартных ситуаций, или где-то отключить кэширования и т.д, если кратко то, сделали скорее всего для гибкости и всё

    максимум считаю нормой юзать middleware, для разделение роутов на защищённые и не защищённые
    Ответ написан
    1 комментарий
  • Как вывести сумму двух текстовых полей?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Это базовые особенности языка. Объясняются в любом учебнике.
    В джаваскрипт оператор "+" является двойственным. В зависимости от ситуации он может быть как оператором сложения (чисел), так и оператором конкатенации (склеивание строк).

    Здесь оба операнда являются строками, поэтому знак плюс будет оператором конкатенации.
    let s1 = '1';
    let s2 = '2';
    console.log(s1 + s2); // '12'


    Здесь оба операнда являются числами, поэтому знак плюс будет оператором сложения.
    let n1 = 1;
    let n2 = 2;
    console.log(n1 + n2); // 3


    Могут быть ситуации, когда один из операндов будет числом, а другой – строкой.
    В этом случае числовой операнд будет преобразован в строку
    let s1 = '1';
    let n2 = 2;
    console.log(s1 + n2); // '12'


    Когда вы получаете значения инпутов со страницы, они всегда будут строчного типа, во всех ситуациях. Поэтому, прежде чем выполнять над этими значениями математические операции, их нужно преобразовать в числа
    parseInt() - в целое число
    parseFloat() - в число с плавающей точкой
    Number() - можно еще так
    +n2 - или так (это уже своего рода хак, основанный на приведении типов)

    Number(element1.innerHTML) + Number(element2.innerHTML)


    Все подробности здесь https://learn.javascript.ru
    Ответ написан
    Комментировать
  • Правильно ли я понимаю устройство классов в python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Нет у тебя абсолютно не правильное представление по все пунктам. Написание хорошего ответа на каждый вопрос потребует дней, при том что на все эти темы можно разговаривать на совершенно разных уровнях. Если хоть как-то в двух словах.
    1. OOP одна из парадигм в программировании в том числе поддерживаемая python.

    2. Объект это python абстракция для данных, все данные в python представлены в виде объектов или взаимоотношений между объектами. Отсюда и выражение все в python является объектом.

    3. В python каждый класс не явно наследуется от object класс. Да даже если мы не переопределим явно __init__ то он там есть. Например
    class MyClass:
        pass
    my_instance = MyClass()
    print(dir(my_instance))
    Там будет в том числе __init__ хотя мы его явно не определяли. __init__ это конструктор класса там могут быть заданы атрибуты которые будут в области видимости экземпляра класса, с которыми будут оперировать методы экземпляра класса, он выполнится при создании экземпляра класса.

    4. По скольку, ты еще совсем новичок, понятия "приватных" и "защищенных" атрибутов обсуждать совсем бессмысленно, к тому же их "приватность" она в ковычках, в python нет способа создать настоящий приватный атрибут, но это все совершенно лишнее для тебя сейчас и в обозримом будущем.

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

    Не думаю что тебе хоть что то стало понятней. По этому бери и изучай понимание будет приходить медленно и со временем, а не пытайся понять все вопросы на раз два.
    Ответ написан
    3 комментария
  • Именование полей и таблиц(регистр)?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Без кавычек все имена в PostgreSQL приводятся к нижнему регистру, поэтому не советую использовать заглавные буквы в наименованиях
    Ответ написан
    Комментировать
  • Как можно удалить фон или получить координаты кругов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да. Ты правильно выбрал преобразование Хафа для кругов (окружностей). Только у тебя должен
    быть pipeline из последовательного применения фильтров.

    1) Сначала обесцветить картинку.
    2) Применить фильтр границ. На этом этапе круги появятся
    3) Ты заранее знаешь диаметр круга - желательно его вбить в настройки чтоб Хаф не искал все-все радиусы
    которые возможны.
    4) Ну и далее - твой метод должен их найти.
    Ответ написан
    3 комментария