• Как обезопасить сайт работающий с API?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Проще простого:
    1. Регистрация выполняется через капчу
    2. Ключ приходит через SMS или E-MAIL
    3. При запросах - используется hash-подпись для проверки на стороне сервера.
    Подробнее - здесь.
    Ответ написан
    Комментировать
  • Как обезопасить сайт работающий с API?

    petermzg
    @petermzg
    Самый лучший программист
    Вы не указали, для каких целей пишете API, а от этого многое зависит.

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

    CRSF - это только безопастность уровня браузер.
    Ответ написан
    Комментировать
  • Как обезопасить сайт работающий с API?

    sayber
    @sayber Куратор тега PHP
    Да, я программирую на PHP и еще асинхронно!
    JWT, ApiDoc и конечно https
    Забыть о сессиях и всякой остальной фигне.

    Конечно должны быть кастомные реквесты, жесткие модели и серьезная валидация данных.
    Ответ написан
    9 комментариев
  • Есть ли вообще какой-нибудь толк от HTML5 семантической разметки страницы?

    dummyman
    @dummyman
    диссидент-схизматик
    Я один такой помню главные элементы верстки прошлого?

    <br>       <!-- отступ вниз -->
    &nbsp;   <!-- отступ вправо -->
    <img src="/pixel.gif" width="10" height="1"> <!-- прозрачный пиксель -->
    <center>...</center>
    <marquee>...</marquee>
    <font color="..." size="...">...</font>
    Ответ написан
    1 комментарий
  • Как монетизируются языки программирования и бесплатные фреймворки?

    @di23
    Вы недооцениваете опенсорс. И смотрите только на быстрое получение прибыли с проекта.
    Вот пару моментов которые пришли в голову:
    1. Распространение своей технологии, своей продукции. Завоевать умы гораздо гораздо легче бесплатным продуктам, особенно когда этот продукт хорош. А люди, аудитория стоят дороже денег, надеюсь это не надо объяснять? В конечном счете подсадив людей на технологию можно ими управлять и диктовать свои правила. Это власть.
    2. Деньги можно срубать с больших компаний использующих ваш продукт. Грубо: "Для того что бы я дальше развивал свою технологию мне нужны деньги, иначе я перестану ее развивать, она загнется, а вы, уважаемая компания, потеряете кучу времени и сил переходя на другое решение. По этому прошу отстегивать мне Н-ю сумму ежемесячно" Это грубо, но в целом именно так. Можно сюда еще включить то, что компании могут напрямую просить добавить какой-то функционал в следующую версию вашего продукта.
    3. Банальные пожертвования.
    4. Поддержка. Опять же, у крупной компании возникли проблемы или не понимания вашей технологии. Вы им оказываете индивидуальную поддержку за приличную сумму.
    5. Вас будут приглашать на различные конференции, в универы, в компании и т.д. За это все можно и нужно брать деньги. Вообщем сюда попадает весь заработок с собственного имени и лица, как у голливудской звезды.
    6. Еще можно делать технологию полу-бесплатной. Как Юнити, например. Можно юзать бесплатно, но если ваша игра набрала определенную аудиторию вы должны платить за их технологию. Весьма честно и хитро.
    Да кучу еще всего можно сюда дописать. Главное - это аудитория и популярность. С этими двумя вещами можно ворочать горы.
    Ответ написан
    3 комментария
  • Как монетизируются языки программирования и бесплатные фреймворки?

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

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

    TL;DR: Читайте книжки, делайте дела, читайте чужой код.

    Что можно начать делать прямо сейчас, чтобы стать программистом лучше?

    1. Изучайте базу. Алгоритмы, сети, криптографию, архитектуру, ос, устройство браузеров, компиляторы и т.д. Изучение подобных вещей дает понимание какие задачи бывают в реальном мире и как "большие дядьки" решают возникающие проблемы. Это кладезь инсайтов.

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

    3. Написание кода - не самая большая часть работы сеньор-девелоперов, я бы сказал. Но когда речь заходит о самом коде, нужно понимать что ты пишешь и зачем. Есть классические книжки, которые можно найти, например, в матрице компетентности программиста, есть современные, но полезные типа The Art of Readable Code, которую я очень рекомендую. Нужно читать книжки. На собеседовании я всегда спрашиваю какие книжки читал или читает соискатель и если ответ отрицательный, то это большой минус.

    4. Участвуйте в опенсорс. Там вам всегда приходится сталкиваться с образом мысли самых разных людей и кодом, который они пишут. Это учит вас читать чужой код, находить в нем ошибки и критически и аргументированно к нему относиться, предлагая свои решения. Опенсорс-разработка, так же как и книжки, дает вам тот чужой опыт, который бы вы никогда сами не получили от людей, которые часто умнее или опытнее вас в чем-то. В опенсорсе, кстати, в отличие от бизнесовой разработки, есть шанс в удовольствие писать очень качественный код, в котором в бизнесе далеко не всегда есть необходимость.

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

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

    В вашем случае лучше попытаться плавно интегрировать опыт в текущий проект, разграничивая старый и новый код, (компоненты, микросервисы, "черные ящики" и т.п.), так же по чуть чуть можно будет подменять компоненты старого кода, на новые.
    В итоге через какое-то время новый код будет превалировать, и может даже можно будет завернуть старый код в отдельный ящик чтобы не вонял на весь проект.
    Ответ написан
    4 комментария
  • Что учить Angular или React новичку?

    uaKorona
    @uaKorona
    Front-End разработчик
    Angular 1 живее всех живых )) Также как и Jquery )
    Если тебе нужна работа - то быстрее будет освоить уровень джуна на angular 1 и смотреть в сторону версии 2.
    Ну да, и зарабатывать деньги )

    На ReactJS джунов, спрос или маленький или его вообще нет. Тут сразу все хотят минимум синьора.
    Но думаю и спецы по React-у/Redux оплачиваются лучше.
    И еще в отличие от angular 2 - это решение используется крупными компаниями:
    Facebook, AirBnb, Netflix

    А вот Google, который разработал angular - сам его не использует... )
    В заключении:

    Деньги ? -> Angular 1
    На перспективу ? -> React
    На очень далекую перспективу ? - Angular 2
    Ответ написан
    6 комментариев
  • Как влиться в тренд нынешней веб-разработки?

    @SuperOleg39ru
    Front-end разработчик
    Добрый день!

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

    flexbox, grid layout
    - это css из современных стандартов. Что бы знать, когда применять - вы должны знать версии старых браузеров, которые необходимо поддерживать на вашем проекте, и соответствующую поддержку этих стилей. Например, формировать элементы на flexbox на порядок удобнее, чем на float, но в IE9 вы уже использовать flexbox не можете.
    Немного о новинках в css тут.
    Поддержка браузерами тут.

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

    препроцессоры
    - представьте, что вам чего-либо не хватает в html и css.
    Например, вы хотите разбивать большие html файлы на множество мелких, или вам нужно вставить в html динамическое содержание - для этого созданы html шаблонизаторы. Вы используете в работе синтаксис конкретного шаблонизатора, затем тот же gulp автоматически собирает эти файлы в обычный html, который понимает браузер.
    Аналогичная ситуация с css, препроцессоры позволяют разбивать файлы на мелкие, и собирать в один, доступны переменные и функции, и многое другое.
    Популярный шаблонизатор Pug
    Один из css-препроцессоров Stylus

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

    Ну и конечно статьи и подкасты:
    https://habrahabr.ru/
    jsraccoon.ru

    https://soundcloud.com/web-standards
    https://radiojs.ru/

    Конкретные статьи и ресурсы для новичка:

    frontender.info/a-baseline-for-front-end-developers
    frontender.info/a-guide-to-flexbox
    css-live.ru/articles-css/pravilnye-kontrolnye-toch...
    https://medium.com/russian/%D0%BE%D1%82-%D0%BD%D1%...
    https://medium.com/russian/%D0%BE%D1%82-%D0%BD%D1%...
    https://habrahabr.ru/company/zfort/blog/321214/
    https://frontendmasters.gitbooks.io/front-end-hand...

    Дерзайте!
    Ответ написан
    6 комментариев
  • Почему не стоит использовать BBCode?

    dzheka3d
    @dzheka3d
    По мне, абсолютно не важно как вы храните данные... Фильтруйте входящие и перед отдачей юзеру и все будет нормально.
    Да хоть ::B:: текст ::B:: , если вы эти данные сможете потом обработать, зачем извращаться...
    Markdown, кстати, отнюдь не молод... 2004 год...
    Ответ написан
    Комментировать
  • Как писать тесты?

    nonlux
    @nonlux
    Ну тесты бываю разными: и зелеными и красными. ))

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

    Я как ярый сторонник BDD использую два типа тестов feature (читай интеграционные тесты) и spec (читай юнит тесты)

    Итак, features. Берем Behat и херачем кучу тестов по типу:
    Зашел на главную,
    Потыкал чего-то в форме регистрации
    Зашел в профиль и увидел свое имя и фотку на странице
    Profit!

    Вот в целом и получили: "Непосредственно регистрация с занесением в БД", только в этой ситуации нам абсолютно не важно что там в БД. Нам важно чтобы пользователь зарегистрировался и попал в закрытый раздел сайта.

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

    Следующий уровень абстракции spec:

    Если нам в интеграционных тестах было немного пофиг на БД. Она как бы пишет, но что так за структура абсолютно пофиг. То в случае со спекими нам ВАЩЕ ПОФИГ.
    Мы берем наш класс (функцию) и проверяем что за результаты она отдает. Вместо объектов, с которыми подопытный (объект тестируемого класса), даем ему резиновую бабу (моки и т.п), и смотрим на результаты нашего труда.

    Главное при том и другом подходе нам без разницы, что у нас в кишках мы всегда тестируем публичные свойства системы. В первом случае это реакция на пользователя, во втором публичное API класса.

    Вот как то так!

    P.S тесты надо бы писать до кода.
    Ответ написан
    2 комментария
  • Переход проекта с jQuery на Angular 1 или Angular 2 или React?

    streetflush
    @streetflush
    Angular 1 брать не стоит, т.к. имеет известные проблемы с производительностью при малом опыте работы в нем.
    Angular 2 требует понимания и правильного подхода к использованию. Но это готовый framework. Выучил, осознал и работаешь.
    React это библиотека по работе с DOM. Тут можно быстро начать освоив документацию и jsx. Но если данных много и сложная логика, то без сторонних библиотек типа Redux не обойтись.

    Я для себя взял Angular 2.
    Ответ написан
    Комментировать
  • Как правильно внеднять зависимости в контроллер symfony3?

    @1alexandr
    // ...Controller/ProductController.php
    class ProductController extends Controller
    {
      private $service;
    
      public function __construct(ServiceInterface $serviceInterface)
      {
        $this->service = $sserviceInterface;
      }
    }


    // Bundle/.../Service.php
    
    class Service extends ServiceInterface
    {
      ...
    }


    // src/.../Resources/config/service.yml
    services:
    
      ...
      
      controller.product:
        class: Bundle/Controller/ProdcutController
        arguments: ["@service"]
    
      bundle.service:
        class: Bundle/Service
        arguments: ["@other_service", "@another_service"]
    
      bundle.another_service:
        class: AnotherService
        argum....
      ...


    ИМХО обращение к сервисам через $this->get('bundle.service') не очень хороший вариант...
    или используйте то что предложил shaqster
    Ответ написан
    Комментировать
  • Как не пересекаться с именами классов в bootstrap?

    dpigo
    @dpigo
    Front-end developer
    Используйте namespace. Это достаточно распространенная практика для изоляции стилей.
    Ответ написан
    2 комментария
  • Как организовать репозитории в гите?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Я бы делал так:

    • разные репы для CRM и магазина
    • разные бранчи в репах, по принципу:
      • master - последний стабильный код
      • development - текущая версия в разработке, которая тестируется
      • feature/developer бранчи - там все пилится, либо отдельным разрабом, либо отдельной фичей



    1. Фича сделана - идет пулл-реквест в development, деплой на тестовый сервер (и зачем вам clone если можно git pull origin development)
    2. Если все ок - пулл в мастер, мердж и деплой на продакшн.

    Саму ветку master в обеих репах запретить для записи кем-либо, только через пулл из development. Мерджить и деплоить должен тимлид / ответственный за работоспособность кода в продакшне.
    Ответ написан
    4 комментария
  • Где хранят вызовы функций нормальные люди?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Обычно делается так:
    1. Разработка схемы архитектуры приложения;
    2. Декомпозиция архитектуры до атомарных операций;
    3. Некоторое количество итераций доработки архитектуры;
    4. Разбивка системы на системы/подсистемы/модули/подмодули и другие уровни - и вот тут как раз образуются классы, каждый из которых включает в себя какой-то определенный набор функций/процедур из файла или каталога(модуля).
    Ответ написан
    Комментировать
  • Что значит хорошо знать фреймворк?

    @YuryBorodkin
    Android dev
    Довольно просто, хорошо знать - значит знать ЧТО гуглить, чтобы решить проблему. Учить его - да что за дичь? он устареет через год, потом будет еще стопицот других, еще моднее.
    Ответ написан
    Комментировать
  • Что значит хорошо знать фреймворк?

    romy4
    @romy4
    Exception handler
    это значит, что когда тебе сказали запили фичу, то ты не сидишь ломая голову и изучая чужие примеры, пиля костыли, спрашивая на этом форуме, а делаешь сам зная какие модули надо использовать и как, знаешь мануал на столько, что тебе не нужны подсказки вроде "а как мне сделать такую-то шнягу?", ты просто знаешь, что её можно сделать так и так двумя-тремя способами, надо только глянуть на страницу мануала подсмотреть синтаксис функций.
    Ответ написан
    Комментировать