• А что если писать сайт вообще в одном файле?

    Wolfnsex
    @Wolfnsex Куратор тега CSS
    Если не хочешь быть первым - не вставай в очередь!
    Сказать по правде, Вы немного странно ставите вопрос... мне кажется, актуальнее было бы уточнить, о причинах, по которым нужно объединять файлы в один.

    Понятно, что будет неудобно работать, но это допустим не важно. Привыкнется)))
    Неудобно работать кому, Вам, или браузеру? Если браузеру, то за него не беспокойтесь, он парень сильный, справится. Если Вам - то есть сборщики проектов, коих как грибов в лесу. На крайняк можно написать свои 20 строк кода.

    Речь не идет про крупный проект, портал или магазин. Простой одностраничник)
    Вопрос звучит примерно как: "я тут приехал в какую-то деревню (город с населением 200тыс. человек), стоит ли там соблюдать правила дорожного движения и законы? Это же не миллионник и даже не мегаполис..."

    Дело не в том, скольки-страничник сайт, а в причинах, которые послужили предпосылкой к объединению скрипто-стилевого мусора в один файл. Основных причин было несколько:

    1. Большой файл грузится быстрее, чем много маленьких, по тому, что:
    а) Обращение к дисковой системе происходит 1 раз
    б) Исчезает промежуточный мусорный обмен трафиком между сервером, на загрузку каждого дополнительного файла

    2. Особенность браузеров, работающих по поротоколу HTTP 1.0/1.1 заключается в том, что они не могут открывать более 16-32 соединений (если мне память не изменяет, точные цифры не помню). Это значит, что одновременно более 16-32 файлов скачиваться не будет. А теперь представьте, что у Вас на "одностраничнике" штук 300 спрайтов, на всякие соц. сети, иконки, стрелки и пр. лабуду, и каждый будет загружаться отдельно...

    Я думаю, Вы уже знакомы с протоколом FTP... Попробуйте как-нибудь, ради интереса загрузить на сервер любую CMS, в которой 5-15тыс. файлов по FTP, в распакованном виде. А потом попробуйте упаковать все эти файлы в архив, с нулевым сжатием (TAR или ZIP без сжатия), загрузить на сервер и распаковать. Даже на самом "мёртвом" сервере, даже с учётом времени на распаковку, процедура с архивом обычно проходит в несколько (иногда десятков) раз быстрее, чем загрузка каждого файла по одному. В браузере разница не настолько критична, принцип тот же.

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

    Так же, сжатие всех скриптов в один - позволяет решить проблему порядка загрузки, и добавить скрипту флаг async, что было довольно актуально для меня в ряде случаев. А CSS - тем более грузятся по порядку, т.к. это каскадные таблицы, и как бы Вы их там не вращали, браузер априори будет их читать линейно и так же линейно применять, именно в том порядке, в котором они были указаны к загрузке. И в этом случае, сочетание протокола HTTP/1.0|1.1 и отсутствие многократного дёргания сервера, довольно очевидно.
    Ответ написан
    Комментировать
  • Как организовать поиск среди миллиона и более изображений?

    Судя по : https://www.cs.toronto.edu/~frossard/post/vgg16/vg...
    Я бы сделал следующее :
    Хранил бы :
    - изображение (возможно - уменьшенные копии)
    - 4096-компонентный вектор
    - выходной вектор (который из 1000 компонентов)
    Возможно бы снизил размерность ещё слоем, но это уже потребует дообучения сети.

    Тогда :
    - сперва извлекаем из изображения векторы (на 1000/4096 компонентов)
    - считаем косинусное расстояние по меньшему вектору.
    - отбрасываем варианты, у которых косинусное расстояние больше определенной границы
    - считаем расстояние по большему вектору
    - отбрасываем варианты с большим расстоянием
    - среди оставшихся - сравниваем изображения (возможно - уменьшенные копии)

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

    p.s. ну и конечно - готовиться параллелить задачу :-)
    Ответ написан
    1 комментарий
  • Кто как делает html формы?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Современная форма - это комплекс решений, в разных областях. И поставить один модуль который решит проблему - не возможно в принципе. Каждый специалист может собрать свою часть. Но без архитектора который скажет как это скрутить в кучу, будет велосипед с квадратными колесами - ехать можно но по специальной дороге.

    1. Разметка:
      • пишу всегда вручную;
      • длинные селекты тянутся из базы посредством шаблонизатора (например серверного TWIG);
      • прописываю полностью с атрибутами валидации HTML5 (благо все современные браузеры потдерживают);
      • выдумывать JS-велосипеды для валидации не стоит уже давно;
      • для зависимых полей пока есть простой js-клаcс сверяющий их.
      • drag&drop файлов давно уже работает без JS;
      • для подгрузки изображений в страницу на стороне клиента js-класс.

    2. Стили:
      • один раз прописаны стили для разных-форм на уровне тегов и взаимоотношений тегов (в итоге все формы на сайте виглядят в одном стиле);
      • класы только для самой формы, определяет как одна выводится: локально, модально или в теле контента;
      • кому сложно написать 300 строчек CSS, пользуйтесь фреймворками;
      • ни в коем случае не делайте стили форм для каждого раза как онные встречаются (придет дядя даст по рукам :) ).

    3. Отправка:
      • пользуйтесь action, submit и target;
      • нужны данные как модальное окно есть iframe;
      • ajax с формами не использую он изначально предназначен для другого:
        • для подгрузки полей в селектор, но только если селектор очень большой;
        • для поиска налету.


    4. Сервер:
      • использую специальный статический класс, который делает валидацию и XSS/injection-очистку;
      • как минимум PDO с подготовленными запросами;
      • Doctrine;

    5. База-данных:
      • наименования полей в базе соответствуют наименованиям полей в формах (с префиксом);

    Ответ написан
    1 комментарий
  • Ветки развития. Куда бы вы пошли из helpdesk?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    >>В последнее время ходят слухи, что ветка развития админа тупиковая, якобы там нет больших зарплат и вообще это всё для студентов
    С такими рассуждениями нигде хорошо зарабатывать не сможете.

    Платят не за популярность профессии, а за решение проблем! Но конечно же нужно на собеседовании спрашивать в лоб: "Вы платите за результат или за жопо-часы?".

    Есть два основных типа работодателей:

    Тип работодателей №1:
    На собеседовании говорят, что им важен результат. На деле, как только специалист справляется со своими задачами и начинает заниматься своими, к примеру фриланс-заказы, то начинаются обиды. Якобы он мог бы подойти и спросить чем бы еще занять. Это подход в НИКУДА.

    Тип работодателей №2:
    Также говорят, что им важен результат. На деле все так и есть. Если за день не осилил и не сделал дневную норму, то хоть ночью оставайся или бери работу на дом.

    На мой взгляд стремиться нужно ко второму типу работодателей. Это более честные рыночные отношения.
    При общении с таким типом работодателей нужно ЗАРАНЕЕ договариваться об объеме работы на день\неделю и четко осознавать, что может человек, а что нет. При таком договоре человек выигрывает в том, что если он научился справляться быстрее, то может заниматься своими делами зная, что никто не будет хавать мозг. А если начинают, то можно поднять наверх договоренности и задавать вопрос в ЛОБ. Что собственно мною и применяется. Есть вероятность, что некоторые отсеются, но разве у Вас есть задача нравиться всем? Но по мне так лучше сразу отфильтровать дебилов и работать с вменяемыми людьми.

    Из всего этого вывод один: Чем бы вы не занимались, лишь бы были виртуозом и всегда развивались. На одном месте можно заниматься многим и при этом честно выполняя свою работу. Всегда можно что-то автоматизировать, зарефакторить, улучшить или еще что-то, чтобы нагрузки по текущей работе было меньше и менее стрессово
    Ответ написан
    2 комментария
  • Ветки развития. Куда бы вы пошли из helpdesk?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Все ветки развития, где человек много лет сидит и делает тоже самое - тупиковые.
    Нужно развиваться, искать возможность стать хорошим специалистом.

    Хороших админов - поискать надо
    Хороших сетевых админов - поискать надо
    Хороших девопсов - поискать надо.

    Хороший это и хотя бы mid, и толковый, с опытом.

    Например очень странно, что потенциальный админ вообще не знает ни sql ни питон - он не обязан быть сеньором, но вы говорите, что вам это с нуля учить..
    Ответ написан
    Комментировать
  • Как перейти по URL Java?

    nowm
    @nowm
    Можно воспользоваться методом encode класса URLEncoder. Только нужно не всю строку с адресом перегонять через encode, а только GET-переменные. Можно так сделать:

    try {
        Desktop d=Desktop.getDesktop();
    
        d.browse(new URI(
            String.format( 
                "http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=%s", 
                URLEncoder.encode( "запрос с кучей пробелов" , "UTF8" )
            )
        ));
    } catch (IOException ioe) {
        ioe.printStackTrace();
    } catch (URISyntaxException use) {
        use.printStackTrace();
    }
    Ответ написан
    4 комментария