• Я - новичок и меня интересуют вопросы связанные с созданием сайта. Как получить,хороший сайт?

    lukoie
    @lukoie
    КАЖДЫЙ такой вопрос нужно решать по отдельности и пошагово.
    Нельзя вот так взять и выдать список ответов на все вопросы, которые у Вам могли бы возникнуть.
    Вопросы работы с БД это не совсем то же, что Вы делали до того, с хтмл.
    Это, как минимум, пхп нужно уметь. Гуглить по термину PDO
    А SEO это вообще отдельная область знаний. Но в общем и целом, забейте свой сайт на сайте web.dev и там получите ответы что Вам нужно исправлять.
    Ответ написан
    Комментировать
  • Как правильно верстать сайт с арабскими и хинди языком?

    @Flying
    Поскольку недавно пришлось добавлять в одном проекте арабский язык - поделюсь полученным опытом:

    Вёрстку как правило переделывать не нужно, обычно достаточно изменения стилей, но только в случае если сам сайт свёрстан с применением современных техник, в первую очередь flexbox. Если у вас там float'ы или таблицы - то ой, задача по сложности вырастет на пару порядков и почти наверняка не обойдётся без доработки html кода. Если же в этом аспекте всё в порядке и ваш проект построен на flexbox - то основная масса изменений сводится к одной строчке CSS:
    body {
        direction: rtl;
    }

    это "перевернёт" все горизонтальные flexbox'ы и по сути сделает за вас всю основную массу работы по адаптированию сайта к RTL языкам. Конечно, в зависимости от того как именно у вас будет подключаться стиль (отдельные стили для RTL или только патч или всё вместе) реальный селектор может быть, к примеру html[dir=rtl] + body, но это уже детали.

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

    1. Горизонтальные отступы. Это самая большая часть работы по адаптации т.к. вам необходимо будет "перевернуть" и их тоже, заменив, к примеру, margin-left на margin-right и наоборот, то же самое для padding'а
    2. Абсолютное / относительное позиционирование в горизонтальной плоскости. Речь идёт о свойствах left и right, их, как можно догадаться, тоже необходимо поменять местами
    3. Размеры шрифтов. Поскольку, к примеру, арабский шрифт, обычно выглядит меньше и тоньше чем, к примеру, английский - возможно возникнет потребность увеличить размеры шрифтов (font-size, line-height) и, возможно, подстроить стилизацию (font-weight)
    4. text-align - в ряде ситуаций может потребоваться изменить его на противоположный
    5. :first-child и :last-child, стоит быть внимательным и перепроверить корректность получаемого результата, к примеру если к этим псевдо-элементам добавляется дополнительный отступ - вам, возможно, придётся менять местами и селекторы
    6. Нужно адаптировать визуальные элементы содержащие направление, к примеру стрелки / уголки и т.п. В ряде случаев их можно повернуть, но где-то необходимо будет рисовать отдельную версию


    Если вы используете CSS препроцессоры - то я очень рекомендую написать mixin'ы для рендера этих свойств и адаптировать код таким образом чтобы изменяющиеся стили рендерились через них. Я выложил набор mixin'ов которые использовал в своём проекте, среди них нет mixin'ов для отступов и шрифтов т.к. у меня эти вопросы решаются по-другому, но думаю что там не будет ничего сложного.

    Общая схема адаптации которую я использовал в проекте:
    1. Добавление direction: rtl
    2. "Переворачивание" отступов, это самая большая часть работы т.к. они чаще всего встречаются
    3. Проверка вёрстки, для каждого выпавшего элемента добавление патчей с использованием mixin'ов, ссылку на которые я дал выше
    4. Подбор изменений для шрифтов, адаптация шрифтовых параметров


    Пример выдернутого наудачу из проекта куска для демонстрации патчей, это стиль добавления иконки к строке текста, для RTL языка её нужно было опускать ниже:
    &.with-icon {
        $icon-size: 1.85em;
        @include offset(h $icon-size 0);
    
        &:before {
            // Позиция иконки меняется на противоположную
            @include hpos($left: -1em, $auto: true);
            font-size: $icon-size;
            // Подстраивается высота иконки относительно текста
            @include ltr() {
                top: 45%;
            }
            @include rtl() {
                top: 65%;
                // Стоит обратить внимание что для RTL языков иконка дополнительно переворачивается, 
                // там стрелка, так что работает нормально, но в других местах это может быть по-другому
                transform: translateY(-50%) rotate(180deg);     
            }
        }
    }


    Надеюсь это описание будет полезным :)
    Ответ написан
    2 комментария
  • Как переместить в конец массива элементы имеющие определённое свойство?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Можно при помощи sort
    arr.sort((a, b) => !b.pos - !a.pos)
    UPD: лучше вот так
    arr.sort((a, b) => ('pos' in a) - ('pos' in b))
    чтобы не было проблем с значениями false, undefined, null и.т.д.
    Ответ написан
    1 комментарий
  • Когда нужно использовать асинхронные запросы а когда синхронные?

    Lynn
    @Lynn
    nginx, js, css
    Очень просто.
    Асинхронные всегда.
    Синхронные никогда.

    https://developer.mozilla.org/ru/docs/Web/API/XMLH...
    [...] В основном предпочтительно использовать асинхронные запросы вместо синхронных из-за соображений производительности.

    Синхронный запрос приводит к выполнению кода, который "блокирует" взаимодействие с вкладкой браузера до тех пор, пока запрос не будет полностью выполнен, что существенно ухудшает отклик страницы.


    Новомодный fetch вообще не имеет синхронной версии и даже старый добрый XHR сильно ограничен.
    Ответ написан
    7 комментариев
  • Наговнокодил, на сколько все плачевно?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    select "valid" as a from personal WHERE '1'='1' or '1'='2' and '3'='4'
    вернет все записи.
    это я к чему,
    если есть в базе пользователь с емайлом или телефоном, то пароль в вашем варианте можно вводит любой.
    нужны скобки
    (email = or phone= ) and password=
    Ответ написан
    Комментировать
  • Запись больших xml в MYSQL?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Жжжуть. Делать выборку в цикле для каждой строки, да ещё и генерируя каждый раз запрос - это, наверно, худший из возможных вариантов.
    В таблицу `products` добавляете колонку `price`. Вешаете на эту таблицу триггеры на вставку и изменение строки, которые при добавлении или изменении цены заносят её в таблицу `prices`. Напрямую с таблицей `prices` из этого скрипта не работаете.
    В цикле формируете и накапливаете наборы данных для вставки. Как только накопится некоторое количество, вставляете их одним запросом. Используете ON DUPLICATE KEY UPDATE для перезаписи изменённых значений. По окончании цикла выгружаете оставшиеся наборы.
    Примерно так
    $data = [];
    while ($z->name === 'offer') {
      ...
      $data[] = '("'.$id.'","'.htmlspecialchars(urldecode($url)).'","'.$today.'",'.(int)$price.')';
      if (count($data) > 99) {
        $sql = 'INSERT INTO `products` (`id`,`url`,`date`,`price`) VALUES ' 
             . implode(',', $data)
             . 'ON DUPLICATE KEY UPDATE `url` = VALUES(`url`), `price` = VALUES(`price`)';
        mysqli_query($link6,$sql);
        $data = [];
      }
      ...
    }
    if (count($data) > 0) {
      $sql = 'INSERT INTO `products` (`id`,`url`,`date`,`price`) VALUES ' 
           . implode(',', $data)
           . 'ON DUPLICATE KEY UPDATE `url` = VALUES(`url`), `price` = VALUES(`price`)';
      mysqli_query($link6,$sql);
    }
    Ответ написан
  • Можно ли иметь "лишний" ID в URL REST API?

    @luna3956
    Даже если пользователи привязаны к магазинам, то раз Вы допускаете возможность использования /users/:userId, предполагаю, идентификаторы пользователей уникальны не только в пределах магазина, но и всей системы. В таком случае, уровень /shops/:shopId будет лишним в задаче изменения информации о пользователе, даже если у пользователя есть привязка к магазину в плоскости бизнес-логики. Поэтому, используйте /users/:userId.
    Ответ написан
    Комментировать
  • Можно ли в классе-потомке переопределить метод с новыми параметрами?

    Это противоречит LSP.

    Вот представьте, вам дали такую возможность и вы переопределили метод с новыми параметрами. Теперь у нас есть метод, который принимает Layer или даже ICreatable. Допустим так:

    void DoSomething (ICreatable layer) {
      layer.Create();
    }


    Но мы ведь можем передать потомка в этот метод! Делаем следующее и ломаем наш код:
    DoSomething(new PerlinNoiseLayer())

    Потому именно в таком виде - нет, нельзя.

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

    Это слой? - Да. - Ок, тогда посмотрим его высоты.
    Если есть такая необходимость - почему бы не ввести отдельный интерфейс для высот?

    void DoSomething (IHasHeights layer) {
      layer.Heights; // <== тут есть высоты
    }


    Почему бы не воспользоваться фабрикой или билдером? Или даже заставить передавать все эти параметры в конструктор?

    public abstract class Layer: ICreatable
    {
        float[,] Heights { get; set; }
        public abstract void Create();
    }
    
    public class PerlinNoiseLayer : Layer
    {
        private float[,] _heights;
        readonly int _resolution ;
    
        public PerlinNoiseLayer (int resolution) {
            _resolution = resolution;
        }
    
        public override void Create()
        {
            // тут расширение уже есть
        }
    }
    Ответ написан
    6 комментариев
  • Почему при парсинге сайта, не могу достать некоторые текстовые данные?

    @marxxt
    понравился ответ - поставь ✔
    Интересная задачка

    Смотрите,

    вас интересует блок

    <span data-rim="nI41sNGXnsbfvdqY"></span>

    Информация уже здесь, но сначала закодирована в base64, а потом замаскирована

    Снимаем маскировку:
    nI41sNGXnsbfvdqY -> Ni41SngxNSBFVDQy==

    Декодируем:
    base64_decode("Ni41SngxNSBFVDQy==");

    Получаем:
    6.5Jx15 ET42䀀

    Ну вот и все :)
    Ответ написан
    7 комментариев
  • Можно ли писать код на php и использовать встроенный в него шаблонизатор?

    @dimoff66
    Кратко о себе: Я есть
    Придумайте какой-нибудь проект. Напишите как-нибудь - неважно как - правильно неправильно, лишь бы работало. Сделайте свой шаблонизатор в конце концов. Потом почитайте что говорят одни и другие, примерьте на свой проект и поймете, как легче проще и удобнее. Пока весь ваш текст одна сплошная размытая абстракция.
    Ответ написан
    1 комментарий
  • Как правильно организовать работу склада?

    Jump
    @Jump
    Системный администратор со стажем.
    Хотелось бы автоматизировать весь процесс (допустим как в экзисте/емех)
    Есть очень простой базовый принцип - Если автоматизировать бардак, получиться автоматизированный бардак.

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

    И делать это должно руководство
    В смысле инициатива должна исходить именно от руководства, и под их контролем.
    Если руководству это нужно - оно это сделает.
    Если не нужно - вы ничего не сделаете.
    Просто никто ничего не будет маркировать и будет продавать без всяких штрихкодов, потому что так удобнее.
    Без учета можно без проблем себе на авто запчастями затариваться, а будет учет - уже не прокатит.
    Ответ написан
    3 комментария
  • Chart js кэширует сайт - что делать?

    lamer350
    @lamer350
    กำลังสูงสุด
    Проблема у явно в чем то другом, Chart JS тут точно ни при чем. Ищите проблему на сервере.
    Ответ написан
    Комментировать
  • Nginx+PHP: сколько одновременных запросов?

    vman
    @vman
    Уверен, что это по большей части зависит от настроек php-fpm (php.net/manual/ru/install.fpm.configuration.php) чем от nginx

    основное на что стоит обратить вниманием

    pm                              = dynamic
    pm.max_children                 = 100
    pm.start_servers                = 3
    pm.min_spare_servers            = 3
    pm.max_spare_servers            = 15
    pm.max_requests                 = 100


    max_children:
    Этот параметр устанавливает ограничение на число одновременных запросов, которые будут обслуживаться
    Ответ написан
    Комментировать
  • Выгода по времени и по памяти в реальной работе?

    Max-GopheR
    @Max-GopheR
    Web разработчик
    В реальности всегда приходится совмещать красоту и плотность кода и потребляемый ресурсы. Иначе оно работает но не поддерживается или оно поддерживается но не всегда работает))) а для совмещения нужно хорошо понимать обе стороны!) На основании этого можно сказать что вам дают полезные навыки.
    Ответ написан
    Комментировать
  • Как на стороне клиента принять данные по частям при GET запросе?

    Lumore
    @Lumore
    Front-end developer
    Делали примерно такое же, но кол-во объектов было немного меньше.
    1) Кэшируйте данные на стороне backend
    2) Используйте кластеры
    3) Грузите и рендерите метки в зависимости от зума и перемещений на карте
    Ответ написан
    1 комментарий
  • Как оптимизировать массив и вывод данных?

    @dimoff66
    Кратко о себе: Я есть
    Без разницы абсолютно.

    По настоящему правильно было бы сделать кэш для страницы, если много много раз там выводятся одни и те же данные.
    Ответ написан
    4 комментария
  • Оцените сборку ПК?

    fdroid
    @fdroid
    press any key
    Palit GeForce RTX 2080

    я правильно понимаю, что очень хочется именно 2080, но денег на нормальную не хватает?
    CPU Intel Core i7-8700 (4.6Ghz, Socket 1151v2)

    ок, но...
    MSI MAG Z390 TOMAHAWK

    нафига для процессора без индекса К покупать материнку на на Z-чипсете?!
    PCI-E Creative SB Z (SB1500)

    не в теме звуковых, без комментариев.
    Corsair CMK16GX4M2B3000C15

    надеюсь, память была выбрана исходя из списка совместимости (QVL) на сайте производителя материнской платы, а не по "игровому дерзкому" дизайну?
    Thermalright Macho 120 SBM

    дорохо-бохато, ну ладно, ок.
    M.2 Samsung 970 evo 500Gb

    Seagate ST2000DM006

    лучше более ёмкий SSD взять вместо этой парочки. Зачем в современном системном блоке гудящие, шумные, тормозные HDD?
    AeroCool Aero-500

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

    монитор с TN-матрицей для фотошопа? о_О
    Deepcool DA700 700W

    вы готовы вбухать кучу денег в железо и готовы всем этим рискнуть запитав от стрёмного блока питания? Ах да, 700W же.

    Итого - сборка "на все деньги беру", но бестолковая и несбалансированная.
    Ответ написан
    5 комментариев
  • Как вернуть HTML в ReactJS?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Вам следует понять три вещи:
    1. Как работает асинхронный код.
    2. Почему нельзя делать асинхронные вызовы в методе render.
    3. Что JSX(React.createElement) не возвращает html.

    В вашем случае загрузка данных должна происходить за пределами кода компонента и инициироваться например в componentDidMount или по клику. А компонент должен получать данные из state.
    Ответ написан
    1 комментарий
  • Почему Mail в Laravel отправляет почту всегда на один и тот же адрес?

    @vism
    Очень глубоко хитрец закэшировался, в самые самые недра документации.
    https://laravel.com/docs/5.6/mail#mail-and-local-d...

    Там к слову еще много чего закэшированно, кэш обновляется посредством чтения документации :)
    Ответ написан
    2 комментария