• Знаете ли вы программистов которые в одиночку создали крутой проект?

    @asd111
    Google - два парня Сергей Брин и Ларри Пейдж
    Facebook - начал Марк Цукерберг
    Instagram - два парня, один делал приложение для iPhone, другой делал сайт, потом заработали расширились
    MsDOS - первую версию сделал один человек, потом Баллмер у него купил за 50 000 $ и права перешли Microsoft
    Nginx - начал Игорь Сысоев
    Компьютер Apple I - дело рук Стива Возняка
    Linux - начал Линус Торвальдс
    Git - начал Линус торвальдс
    Redis - Salvatore Sanfilippo ( antirez )
    Minecraft - начал Маркус Перссон ( также известный как notch )
    Dropbox - начал Дрю Хьюстон
    Shadertoy - создан Iñigo Quilez ( также известен как iq )
    C++ - начал Бьёрн Страуструп
    Python - Гвидо ван Россум
    PHP - Расмус Лердорф

    SimplaCMS - начал один человек
    DLE CMS - начал один человек
    TYPO3 CMS - начал один человек

    P.S. ответ редактировался и дополнялся
    Ответ написан
    20 комментариев
  • Что подучить в добавок к PHP / JQuery веб разработчику?

    serginhold
    @serginhold
    с фреймворками знакомься, можно с микро начать, slim или silex, а потом полноценный пробовать: laravel, symfony, yii.
    на фронте vue или react, совместно с webpack.
    Ответ написан
    2 комментария
  • Как настроить PhpStorm 2016.1.2+Openserver?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как я понял, единственная цель PhpStorm+Openserver это "заменить" устаревший локальный сервер PhpStorm на современный Openserver со всеми настройками, возможными дополнениями, дебагеррами и т.д.


    Цель PhpStorm'a - предоставить IDE. Цель OpenServer'а - предоставить полноценную (до некоторой степени) среду разработки и выполнения PHP-скриптов/приложений/сайтов/etc. Помимо интерпретатора PHP, в OpenServer'е есть масса других модулей (программ), в зависимости от "комплектации": от различных баз данных, для всяких "офисов" и т.д. Это связано с тем, что в большинство проектов не ограничивается исключительно интерпретатором PHP, многим так же требуются различные БД, иногда хранилища (например, Redis или Memcached) и прочие инструменты.

    PhpStorm пишет - configuration php.ini file does not exist. Но php.ini там разумеется есть.
    Возможно, это связано с тем, что в путях содержится что-то отличное от латинских букв (иногда могут так же "мешать" пробелы в путях, хотя это бывает гораздо реже).

    Обычно, процесс выглядит следующим образом:
    0. Указывать путь до интерпретатор PHP не всегда обязательно или необходимо, иногда без этого можно вполне обойтись
    1. В папке, в которую установлен OpenServer, среди прочего, есть папка domains, в которой вы создаёте папку с будущим проектом (сайтом) и называете её, например, site1.local
    2. (Пере)запускаете OpenServer, крайне желательно это делать с правами администратора, т.к. он будет вносить изменения в файл hosts системы, что бы сайт стал доступен по соотв. адресу (в данном примере, по адресу: site1.local)
    2.1. Открыть проект так же можно через меню OpenServer'a: Мои сайты -> "Нужный сайт"

    Что бы проект открывался в PhpStorm'е по соотв. ("правильному") адресу, вместо встроенного веб-сервера - я думаю, нужно изменить какие-то настройки проекта в PhpStorm (какие именно - сказать затрудняюсь, т.к. никогда не пользовался таким способом работы с проектом).

    P.S. Для того, что бы отлаживать проект в разных браузерах, обычно используют различные BrowserSync'и, LiveReload'ы и т.п.

    P.P.S. Если Вам нужен простой веб-сервер с поддержкой PHP, исключительно для разработки/отладки - такой сервер есть в самом PHP.
    Ответ написан
    2 комментария
  • Объясните как работает php-fpm?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для начала почитайте что такое SAPI. Затем представьте что apache + mod_php разделили на web-сервер, который проксирует запросы на php-fpm и отдает статику, и собственно отдельный web-сервер который имплементит SAPI и выполняет запросы связанные только с php. То есть статику отдавать мы можем только через php. Суть примерно та же что и у apache2 + prefork + mod_php но оптимизированный только для работы с php. Так же можно поставить на фронт более быстрый и легковесный сервер который умеет проксировать запросы.

    То есть php-fpm это эдакий fast-cgi сервер который постоянно держит готовые для работы пул-процессов (сколько в пуле процессов настраивается, так же как и от какого пользователя их запускать и все такое прочее). Каждый новый запрос уходит в какой-либо процесс из пула, запрос отрабатывает, возвращаем результат тому кто попросил (web-серверу обычно). Если процесс падает (fatal допустим) - поднимаем новый.

    Принципиальной разницы между apache2+mod_php нету, просто упрощается инфраструктура. Наш web-сервер должен только уметь проксировать запросы и отдавать статику, а php-frpm вообще может быть на разных машинах (балансировщиком можно раскидывать запросы). Ну и сами понимаете, nginx + php-fpm будет быстрее обрабатывать запросы чем apache2+mod_php какой бы мы менеджер процессов не использовали в апаче. Минусов по сравнению с apache+mod_php я даже не могу предложить.

    А php-runtime не зависит от этого. Он один на всех, CLI, FPM, mod_php...
    Ответ написан
    7 комментариев
  • Как правильно фильтровать и мапить данные при реализации API на Symfony?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    1. symfony/validator
    $violations = $this->get('validator')->validate($dto);


    2. symfony/serializer
    $dto = $this->get('serializer')->deserialize(
        $request->getContent(),
        DTO::class
    );


    Все это можно красиво обернуть в Action Argument Resolving, т.о. код будет выглядеть что-то вроде
    public function editAction(DTO $dto)
    {
    
    }

    где в $dto уже будет валидный объект
    Ответ написан
    9 комментариев
  • Какую книгу по разработке под Android прочитать?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Не согласен с Денис Загаевский
    Есть одна книга по Андроиду, которая обновляется 2-3 раза в год.
    Это "The Busy Coder’s Guide to Android Development", есть платная подписка за $20 в год на все обновления
    https://commonsware.com/Android/
    Последняя версия на данный момент 8.12 от 13 июня 2018. Вполне свежая книга.
    Ответ написан
  • Где symfony DI собирает все зависимости?

    @Flying
    Если говорить именно об аргументах контроллера, то они собираются в ArgumentResolver::getArguments() на основании метаданных (получаемых через reflection) из ArgumentMetadataFactory::createArgumentMetadata. Передача аргументов в action контроллера идёт при его вызове здесь.

    Если же речь идёт об общем случае то там схема существенно сложнее т.к. непосредственно инициализация сервисов очень сильно отличается в зависимости от настроек контейнера в отношении конкретного сервиса (вспоминаем про factories, абстрактные сервисы и т.п.), но в общем случае все варианты приводят к генерации соответствующего метода в контейнере.
    Ответ написан
    Комментировать
  • Хочу сделать API, с чего начать?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Следует начать с проектирования API. Возмите https://swagger.io/ и набросайте все, что нужно.
    Swagger вам позволяет объединить роутинг, документацию и примеры вызовов в единое целое.
    Кроме этого он позволяет сгенерировать заглушки для разных языков программирования и фреймворков.
    В принципе вы можете найти значительное количество интеграций для разных фреймоворков.

    В целом API лучше делать с помощью фреймворков, поскольку в них уже реализованы тривиальные моменты по безопасности, аутентификации и авторизации. Вы можете использовать микрофреймворки, например тот же Slim. Вы даже можете сгенерировать роутинг для него используя генератор от Swagger.

    В REST есть 6 принципов, прекрасно изложенных в Wiki. В REST нет ничего сложного и особенного. Это просто надстройка над стандартным протоколом HTTP. Именно поэтому нет никаких особенных уроков. Изучите работу HTTP и вы поймете как работает веб в целом и REST в частности.

    По поводу отдельного сервера для API. Есть множество разных подходов. В последнее время все более актуальными становятся Serverless-приложения. Serverless архитектура идеально вписывается в REST. Но думаю для вас это пока рановато и сложновато. Слишком много для начала.

    Логичнее всего держать проект в моно-репозитарии, если он не будет большим. Если вы точно не знаете насколько большим он будет, то можно разбить проект на компоненты и использовать Composer для управления зависимостями (советую полность прочитать эту страницу от корки до корки).

    По поводу best practices есть очень хороший ресурс https://12factor.net/ru/
    Он в целом применяется для всех приложений.

    Запомните: первый блин всегда комом. Прочитайте все ресурсы, которые я привел для вас. В них много ссылок на другие, походите по ним, присмотритесь. Напишите первую версию API так, как вам кажется удобно. Постарайтесь применить практики из статей.
    Вам нужен опыт и вы его не наберетесь, пока не сделаете что-то сами. Вы можете потратить год на чтение, но останетесь на том же месте, с которого начали. А другой человек напишет на коленке API за неделю, а потом перепишет его 20 раз за год и он вам расскажет в 10 раз больше, чем то, что вы изучили за год.
    Дерзайте!
    Ответ написан
    16 комментариев
  • Что делать с жалобой на торрент-клиент от хостинг-провайдера?

    hostmaster
    @hostmaster
    DevOps Engineer
    Любой кто участвует в раздаче bittorrent видит IP адреса всех активных участников, это используют компании нанятые правообладателями. Они подключаются с раздаче, собирают IP адреса и/или сохраняют часть сетевого трафика с этих IP для возможного доказательства в суде. Зачем они начинают писать жалобы провайдерам и шантажировать пользователей, так в некоторых европейских странах это грозит серьезным штрафом.

    Да провайдер VPN может вас сдать "с потрохами". "не ведем логов" это очень не конкретная формулировка, если они пришли к вам значит логи есть. Они могут называть это метаинформацией но это все равно логи.

    Поэтому внимательно читаем правила использования и проверяем репутацию провайдеров. Проверяем разрешено ли использование bittorrent и что провайдер будет делать при получении DMCA notice. Не гонимся за дешевизной.

    На вопрос что делать. Предположим вы в России, правообладатель скорее всего нет, где провайдер VPN не очень важно. Тогда Вам практически ничего не грозит, вы вне их юрисдикции. Подавать на Вас в местный суд долго дорого и бесперспективно, по этому лучше бы Вам все отрицать. Провайдер может Вас сдать, однако вряд ли будет это делать без решения суда иначе это серьезное нарушение защиты персональных данных. Максимум на что они пойдут это отключат Ваш аккаунт. Поэтому "нет не качал, не знаю, не видел, не в курсе вообще о чем вы"
    Ответ написан
    Комментировать
  • Как сделать безопасную авторизацию с помощью JWT?

    @akass
    Developer
    https://gist.github.com/zmts/802dc9c3510d79fd40f9d...
    Отдаешь два токена и время жизни access token, которое обычно минут 30.
    Соответственно если угоняют access, то он стухнет через пол часа, а если угонят оба, то юзер не сможет обновить по реврешу, его кинет на перелогин и тогда у угонщика все стухнет.
    Ответ написан
    3 комментария
  • Какие книги must-have для верстальщика-профессионала по Вашему мнению?

    Vlad_IT
    @Vlad_IT Куратор тега Вёрстка
    Front-end разработчик
    Можете в свободное время пролистать большую книгу css. Там практика особо не нужна (если уже верстаете, сможете все в голове представить), но и подробно читать не нужно, т.к. много базовых вещей, но и могут появиться такие вещи, которые вы не знаете.
    Еще у популярной в кругах верстальщиках чувихи Лия Веру есть полезная книженция https://www.amazon.com/gp/product/1449372635/ref=a... (многое из которой есть в ее блоге lea.verou.me )
    В верстке вряд-ли есть какие-то уникальные книги, т.к. тема не особо сложная, проникаться в глубь не получится. Мне кажется, будет полезнее проникаться вширь, изучить например JS, для верстки будет очень полезно с webgl, чтобы делать крутые анимации.
    Ответ написан
    1 комментарий
  • Как изучить JS?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Попробуйте программировать лифты ;) https://play.elevatorsaga.com/
    Ответ написан
    Комментировать
  • Как запускать приложения из терминала PhpStorm, которых нету в переменной Windows PATH?

    27cm
    @27cm
    TODO: Написать статус
    Чтобы phpStorm узнал об окружении OpenServer, необходимо в настройках OpenServer создать закладку на phpStorm и запускать IDE через эту закладку.
    open-server.ru/forum/viewtopic.php?f=1&t=1943

    Для Git достаточно указать путь к git.exe в настройках phpStorm.
    www.jetbrains.com/phpstorm/help/git.html?search=git
    Ответ написан
    2 комментария
  • Как принимать деньги для пожертвований?

    webinar
    @webinar Куратор тега Веб-разработка
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Комментировать
  • Как принимать деньги для пожертвований?

    Olek1
    @Olek1
    Писали тут про лейку недавно https://leyka.te-st.ru/instruction/ сам лично не пробовал, там есть четыре шаблона https://leyka.te-st.ru/campaign/demo-kampaniya/ и отображение сколько собрано из скольки
    Ответ написан
    Комментировать
  • Легкий 3D viewer для объекта?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    крутилку объекта

    Какого объекта? Вы имеете в виду 3d объект или Вам надо фотки проигрывать, делая имитацию 3d? Во втором случае любой слайдер подойдет. А в первом легковесный вариант Вы вряд ли найдете, наверное самое рабочее вот:
    doc.babylonjs.com/extensions/the_babylon_viewer
    Ответ написан
    Комментировать
  • Легкий 3D viewer для объекта?

    Recosh
    @Recosh
    Программист студент
    https://www.blend4web.com/ru/ там есть сразу экспорт в html
    Ответ написан
    2 комментария
  • Как называется библиотека?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Это называется placeholder images, например вот либа https://github.com/zalog/placeholder-loading
    Ответ написан
    1 комментарий
  • Как защититься от парсельщиков?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Существует несколько способов борьбы.

    Вектор усложнения доступа к информации

    Информация отдается с сервера с постоянной меняющейся структурой. Например блоки меняются местами и CSS генерируется налету, причем классы собираются рандомной цепочкой и имеют абсолютно рандомные названия. Это может повлиять на SEO.
    Если этого мало, то контент рендерится с помощью JS аналогичными алгоритмами. Сам JS тоже генерируется и обфусцируется. Доставка контента происходит через сложные технологии, например через WebRTC DataChannel или WebSockets. Про SEO не может быть и речи, плохо работает через мобильник.
    С подобным подходом прийдется писать парсер под ваш сайт. Скорее всего он будет делать скриншот и скармливать его распознавалке.

    Вектор контроля доступа к информации

    Доступ к информации предоставляется определенному кругу лиц. Например клиентам. Объемы доступа регламентированы и превышение карается расторжением договора или штрафом.

    Вектор ограничения доступа к информации с помощью каптчи

    Для идентификации клиентов используются evercookie+fingerprinting. Используется рейтинг адресов и подсетей.
    Для недоверенных подсетей (ip принадлежат в основном разного рода хостинг-провайдерам) captcha отображается сразу. Аналогично при появлении трафика из необычного места, например внезапный трафик из Индии или Китая.

    Вектор "медленный сервер"

    Анализируются поведенческие характеристики с помощью машинного обучения. Строится эталонная модель.
    Все, кто не попадает под модель, упираются в медленный сервер. Сайт начинает отдавать контент сразу, но очень медленно, например страница может открываться секунд 30. Причем попытка параллельного запроса приводит к ошибке. Если сайт велик, то подобные штуки останавливают парсильщиков на ура. Вдобавок дополнительно контролируются определенные вещи, вроде "пользователь загрузил js и css", провел мышкой там и там.

    Вектор для реального отваживания воришек

    Кроме выше перечисленных способов, есть очень простые, но действенные способы. При обнаружении парсинга, парсильщику отдается неверная/искаженная определенным образом информация. Например, если есть подозрение на конкурента ворующего цены, можно отдать цены чуть выше настоящих и немного подменить название товара, например заменить определенным образом букву "а" на "a". Затем такая штука ищется поисковиком и находится сайт конкурента.
    Далее вопрос решается так, как это удобно бизнесу. Обычно жалуются на нарушение копирайта. Ну или у конкурента внезапно сгорает склад. Тут уж кто на что горазд.

    А это специально для любителей парсить чужие сайты: cломанные пальцы очень сильно мешают набирать на клавиатуре будьте осторожны, в большинстве случаев воровство контента того не стоит.

    Подытожим. В большинстве случаев защита от парсинга вредит SEO.
    Если у вас воруют контент, значит он хороший. Защищайте его с умом. Простые средства вроде копирайта и успешные дела за воровство контента отвадят воришек от вашего сайта. Просто придайте делам огласку. Отслеживайте воровство и жалуйтесь в поисковые системы.
    Используйте технические средства для отслеживания воровства, например непечатаемые символы и стеганографию в картинках.
    Используйте внутренние ссылки и привязки к контенту и его автору. Например логические отсылки на свои предыдущие работы или другие товары, которые можно купить только у вас.

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