Ответы пользователя по тегу Веб-разработка
  • Имеет ли значение на каком фреймворке сделан фронт-енд для бекендера?

    AlexZaharow
    @AlexZaharow
    Программист.
    Если они изначально проектировались парно, например, типа MVC, то это достаточно сильная связь, но не настолько, чтобы ее нельзя было бы подменить каким-то скриптом. Если изначально писались только функции api, а web накатили потом, то фреймворк уже не очень сильно связан с бакендом.
    Ну и третья мысль - можно иметь бакенд совсем без фронтенда. Только HTTP-запросы/ответы. Это как бы намекает )))
    Ответ написан
  • Как получить максимум инфы о том, кто заходил на страницу?

    AlexZaharow
    @AlexZaharow
    Программист.
    Не силён в сборе инфы о пользовалете, но если уместно, то есть browser fingerprint.
    https://ipper.ru/article/?p=103
    Так, для информации.
    Ответ написан
  • Качество работы штатного программиста. Как оценивать?

    AlexZaharow
    @AlexZaharow
    Программист.
    О, да. Я разработчик и надо мной есть начальники и у меня обратная ситуация, что считают, что я слишком много уделяю внимания обработке ошибок.)))
    Видимо кто-то не очень готов к своей работе. Поясню. Любая программа решает не меньше двух задач. Первая - сделать всё правильно при правильных исходных данных и Вторая - не делать первой работы при неправильных исходных данных.
    Поскольку первую часть работы сделать относительно просто в силу очевидности, то делать вторую всегда качественно сложнее по причине именно неочевидности. Ну и ещё этому обычно не учат. Обычно все заканчивается на try/catch и думают, что этого достаточно.
    Что касается программистов, то обычно с них трудно спросить, почему они не предусмотрели ту или иную обработку ошибок, т.к. они могут быть не в курсе контекста решаемой задачи и что там могут быть за ошибки и за это скорее должен отвечать руководитель проекта (единственная очевидная ошибка - деление на ноль. Всё остальное нужно рассматривать в контексте).
    С другой стороны, когда вы выбирали программистов, то стоило бы проверить у них чувство «вкуса» на ошибки, так что тут вопрос тоже к вам.
    Не могу дать именно вам однозначного совета, но я бы пообщался с разработчиками на предмет желания делать качественно свою работу, обозначил срок проверки и довёл бы прозрачные параметры оценки работы (возможно и с субъективной оценкой, вы же начальник))). После окончания срока самого слабого увольняете. Ещё до окончания срока оценки можно начать искать сотрудника на бушующее вакантное место, ну, чтобы лучше мотивировать остальных. Понятно, что это стресс для всех, но вполне себе радикальное средство, как химиотерапия, к которому можно прибегнуть, когда ситуация критическая.
    Но вам тоже нужно и над собой поработать, чтобы научиться избегать таких проблем, чем их решать. Если вы человек опытный, то делитесь своими знаниями, чтобы ваши разработчики учились у вас, но и вы тоже должны у них учиться, т.к. их опыт тоже постоянно увеличивается и его можно позаимствовать. В общем у вас сейчас слабая обратная связь, раз вы узнаете о проблеме уже после выполнения работы. Я бы какое-то время посидел бы с разработчиками, чтобы посмотреть как они вообще работают, но, чтобы не отсвечивать делал бы какую-то задачу. Вдруг у вас в технологии разработки какая-то проблема, которая мешает качеству?
    Ответ написан
  • Как правильно вывести в интерфейс частые команды?

    AlexZaharow
    @AlexZaharow
    Программист.
    Под windows пользуюсь неплохим менеджером буфера обмена ditto clipboard manager https://ditto-cp.sourceforge.io
    Накидал туда всего, если что - есть поиск. У меня в нем запуск одной БД уже несколько месяцев живёт. Нажал Shortcut. Написал номер версии сервера, он мне нашёл full path программы, который я однажды из консоли сохранил, нажал enter, команда в консоли, осталось только нажать ещё один Enter, чтобы запустить или можно поправить параметры. Вроде минимум действий. + preview картинок (в принципе для информации)
    Ответ написан
  • Как хранить версии текстов?

    AlexZaharow
    @AlexZaharow
    Программист.
    Можно повесить триггер на события изменение,добавление,удаление, чтобы не программировать всю бизнеслогику. Из триггера можно писать хоть в соседний столбец, хоть в соседнюю таблицу.
    Ответ написан
  • Как создать favicon.ico размером 16x16, 32x32 и 48x48 одним файлом?

    AlexZaharow
    @AlexZaharow
    Программист.
    Формат .ico позволяет хранить внутри себя картинки разных размеров. Так что в вашем файле содержится массив картинок только из одного элемента в котором нет требуемого размера. Вот набор редакторов, которые помогут вам редактировать файл иконки (https://www.sitepoint.com/6-free-icon-editors/) Лично я пользую "Junior icon editor", он, правда, рекламу сыпет на запуске и выходе из программы, но освоив нажатие ESC я практически не замечаю рекламы. В этой проге вполне приличный минимальный набор операций: открыть любую картинку, преобразовать её к заданному размеру из размеров иконок, немного подчистить фон (личный мой субъективный, предвзятый выбор).
    Ответ написан
  • Что значит "знание linux" в вакансиях на позицию веб-разработчика?

    AlexZaharow
    @AlexZaharow
    Программист.
    В принципе знание среды, в которой работает backend всегда на пользу. Проще объяснить админу чего надо, проще понимать в каком месте надо "нажать". Между фронтом и бэком есть ещё места, где можно программировать. Кроме того админы могут не знать тонкостей настроек и могут поставить настройки по-умолчанию. У меня на работе крутился один сервер приложений. На tomcat. Выделили на виртуалке 16ГБ памяти, запустили. И он проработал не один год до моего появления в компании. Когда я увидел конфиг - офигел. Память была выделена по-умолчанию. 2ГБ. Так что не думайте, что если что-то не ваша обязанность, то и проверять не надо уметь.

    Позвольте дать вам совет - ведите записи своих достижений, скриншоты. Меня такой подход не раз выручал. Лишний раз показать на собеседовании, что вы умеете реально что-то документировать и делиться этим - однозначно плюс на собеседовании. Может даже будущий работодатель увидит как вы разбирались со знакомой ему темой - будет будет легче найти с ним общий язык.
    Ответ написан
  • Как реализовать взаимодействие Angular и Java?

    AlexZaharow
    @AlexZaharow
    Программист.
    >> Я читал, что Angular используется только для одностраничников
    Ну это как сделаете. Там имеется в виду, что можно сделать одностраничный сайт, т.к. все операции можно делать через ajax, но можно и сделать столько страниц, сколько вы хотите.
    >> Я back-end разработчик и хочу изучить "модные" UI-фреймворки. Один из них - Angular 4
    Тоже хочу изучить angular4, но вот как-то руки не доходят. Сначала надо изучить typescript. )))
    Что касается subj, то всё взаимодействие с backend осуществляется методом чёрного ящика через ajax. Как вы им пользуетесь - php_curl, jquery, angular, C# webrequest - без разницы.
    Ответ написан
  • Как правильно организовать регистрацию и авторизацию пользователей сайта (Java)?

    AlexZaharow
    @AlexZaharow
    Программист.
    В основном всё верно. Я бы немного подправил следующие моменты:
    >> Пользователь отправляет, это "что-то", полученное при регистрации и в ответ получает страницу
    Не пользователь, а клиент (пользователь сидит за компом). Но клиент - не ваша программа, а в основном браузер (curl - тоже клиент) и ваша программа максимум может иметь доступ к некоторым кукам, да и то не ко всем (как настроит куку сервер, см. cookie httponly). Сервер проверяет токен и сопоставляет контекст приложения (php/java) с параметрами пользователя (_GET/_POST/_SESSION), поэтому код backend как правило никак не может влиять на контекст пользователя, только если в нём нет ошибок на выполнение критичных операций. (Естественно, что нужно разбираться в архитектуре сервера, т.к. на уровне фильтров, а в tomcat/IIS они есть, можно сделать много чего нехорошего ещё до обработки запроса под пользователем).

    >> Что представляет из себя токен? (случайную строку, которая является по сути идентификатором? Если да - то какой она должна быть длины, нужно ли ее шифровать и где хранить на стороне клиента?
    Токен - это уникальный идентификатор сессии в формате именно строки. Можно в него вставить JSON.stringify(), но браузер всё равно будет идентифицировать его как строку. Символы ему без разницы. Выдаётся на сессию на одном клиенте. Т.е. если вы подключитесь/логинитесь разными браузерами под одним логином пользователя, то у них будут разные токены. Однако, если вы технически сможете своровать токен из одного браузера и воткнуть его в другой, то фактически будете работать под одной сессией в разных браузерах и проходить аутентификацию во втором браузере не придётся (Иногда этим можно пользоваться для тестов). Именно по этом причине токены надо зарывать по максимуму, т.е. отправлять их в заголовках и в протоколе HTTPS. Только это не касается протокола Kerberos, там аутентификация производится другим механизмом и завладевание кукой не даст результата (весьма сложный механизм, используется в корпоративных сетях, не в интернете).
    где хранить на стороне клиента - Для кук браузер сам их хранит и сам же дописывает в заголовки при выполнении запросов, так что это делается прозрачно. Поставьте fiddler, там всё видно.
    нужно ли ее шифровать - Обычно нет.

    >> Слышал про OAuth и долго и коротко живущие токены
    OAuth используется, когда вы хотите привлечь большое количество пользователей, предполагая, что у них есть аккаунты в соцсетях, т.е. этот протокол упрощает и регистрацию и аутентификацию, но сложнее в настройках, чем form-based. тут есть одна тонкость - аккаунт пользователя в вашей программе надо будет всё равно создавать и связывать его с аккаунтом профиля в соцсети (сейчас подробнее не скажу, давно занимался)
    Теперь какая связь между токеном и OAuth - Делаем выход из контекста рассуждения "на уровень выше" и вспоминаем, что OAuth - протокол аутентификации, а после аутентификации нужно (барабанная дробь ...) тадам - установить токен сессии!!! Т.е. с помощью OAuth вы только проверяете валидность пользователя, затем ваша программа выясняет с каким аккаунтом на вашем сайте он связан и устанавливает токен/куку, чтобы не проходить аутентификацию каждого запроса от пользователя аккаунтов с соцсети. Ну, представьте, что даже на CSS и IMG надо будет требовать подтверждение? (если только не настроен NGINX для отдачи статики, как вы указали выше).

    >> Если да - то какой она должна быть длины
    Посмотрите на форматы и размеры токенов, которые выдают соцсети? Да, взять этот же toster.ru, вот прям сейчас:

    719fc6c4999547af95b58b252dd5255d.png

    Токен сессии придумываете самостоятельно. Хоть sid. Формат строки токена ничем не определён. Главное, чтобы при идентификации пользователя случайно не выдать аналогичный токен другому пользователю, а то получится, что два пользователя идентифицируются сервером как один, кто первый залогинился. Так что одна из проблем сервера - обеспечить уникальность токенов сессий, а это важный раздел безопасности. Вполне можно поискать способы компрометации выдачи "нужных" токенов и тогда безопасность сайта под большой угрозой.

    >> Достаточен ли уровень безопасности OAuth или стоит искать что то другое? jwt?
    Поскольку OAuth тоже начинается с "вешалки", т.е. с form-based аутентификации в соцсети, то главное обеспечить достаточный уровень секретности - HTTPS и всё будет норм.
    Ответ написан
  • Как поднять nginx/php/postgreSql сервер на Win7?

    AlexZaharow
    @AlexZaharow
    Программист.
    Php через Apache httpd работает. Не полный стек собираете. Для разработки локально вам вряд ли понадобиться nginx (Хотя все зависит от задачи).
    Ответ написан
  • Что взять за основу для сайта: несколько форм, несколько человек с разным уровнем доступа?

    AlexZaharow
    @AlexZaharow
    Программист.
    Если проект у вас вообще с одной формой, то не стоит заморачиваться со spring по двум причинам:
    1. Изучение Spring у вас займёт времени больше, чем сам проект.
    2. Spring автоматизирует действия, в которых вы ещё не очень разбираетесь. Это как изучать angular, не понимая JavaScript.
    Лучше освоить логику работы сервлетов, на уровне обработчиков запросов, потому что все Java-фреймворки работают через них.
    Tomcat нормально подойдёт.
    Ответ написан
  • Как сделать версионность как на вики?

    AlexZaharow
    @AlexZaharow
    Программист.
    Не работал с бухгалтерскими базами, но для своей базы MySQL хранение истории изменений использую JSON. Есть отдельная таблица history с полями - table_name, table_id и history (JSON) с данными типа массив [], в который добавляются записи формата JSON, за которыми производится наблюдение. На пользовательской таблице висят триггеры на добавление, изменение, удаление. Как только в пользовательской таблице производятся изменения, то триггеры записывают изменения в таблицу history. Это позволяет отслеживать всю историю работы с записью от момента создания, до удаления не вставляя код во всякие процедуры или бизнеслогику, а работая абстрактно только средствами базы.
    Ответ написан
  • Какой поиск лучше сделать на странице "Проекты"?

    AlexZaharow
    @AlexZaharow
    Программист.
    Всё норм, только поиск следует делать в форме, состоящей из одной строки ввода. На моей памяти, некоторые "программисты" выдавали форму аж из 10 полей (поле для поиска по имени проекта, поле для поиска по номеру проекта, поле поиска по ФИО согласующего, поле для поиска по ФИО начальника и дальше по штампу... )! Пользователи избалованы гуглем. Сделайте им маленький "гугл" )))
    Ответ написан
  • Чем можно подменить запрос и отправить его через прокси?

    AlexZaharow
    @AlexZaharow
    Программист.
    Вот в официальной документации описаны много вариантов, что можно вообще с URL сделать: docs.telerik.com/fiddler/KnowledgeBase/FiddlerScri...
    Подойдёт?
    Ответ написан
  • Какая может быть стоимость разработки интерактивной карты?

    AlexZaharow
    @AlexZaharow
    Программист.
    Есть интересный компонент leaflet (leafletjs.com/examples/crs-simple/crs-simple.html) и он умеет работать не только с картами, но и с кастомными объектами. У него есть, например, компонент, для редактирования полигонов (https://github.com/Leaflet/Leaflet.Editable), но лично я бы админку для него затянул по по самые помидоры, чтобы никакого редактирования геометрии, а только текстовую информацию, иначе не совсем ясна суть вашей работы, если план этажа будет рисовать заказчик? У leaflet-а столько плагинов, что дух захватывает: leafletjs.com/plugins.html
    Второй Гугл-мап на нем не сделать, но на очень приличные вещи и вау-эффекты вполне потянет.
    Ответ написан
  • Как лучше прикрутить спарсенную базу к сайту?

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

    AlexZaharow
    @AlexZaharow
    Программист.
    Программирование — умение кодировать алгоритмы, предназначенные для исполнения процессором, на языке

    Не только! Ещё и умение автоматизировать деятельность заказчика. Это вам нужен разворот на 180. Заказчика не интересуют инструкции CPU.
    Программа рождается в голове программиста не в виде машинных кодов или синтаксиса, а в виде последовательности действий, которые приводят к желаемому результату. Непосредственно само программирование с пониманием архитектуры процессора или сетевой работы является ремеслом , которое ничего общего не имеет с романтикой и называется кодированием (но в кодировании есть своя романтика).
    Ответ написан
  • Какие инструменты использовать для отсечению лишнего неиспользуемого кода в проекте?

    AlexZaharow
    @AlexZaharow
    Программист.
    Загляните сюда: https://kcachegrind.github.io/html/Home.html
    Это список загружаемых модулей и их связи:

    e7c1055d0515476fa49451fc601bcb5f.png

    Очень радует, что эта штука бесплатна!

    P.S.
    Требуется xdebug!
    Ответ написан