• Как сделать, чтобы при получении Push-уведомления, на экране у клиента появлялось диалоговое окно?

    @Copperfield
    Android dude
    Из ресивера пуш уведомления делайте это.
    Ответ написан
    Комментировать
  • PHP. Синтаксис: почему часто пишут так, а не иначе?

    @vilgeforce
    Раздолбай и программист
    Так отлавливают ошибку "присвоение вместо сравнения". "$a = true" - валидный код, "true = $a" - нет. Но читаемость ниже.
    Ответ написан
    Комментировать
  • Куда двигаться в веб-разработке?

    @Upcoming
    Отличный и, к тому же, на самом деле современный учебник по JavaScript: javascript.ru. Написано очень доступно, а самое главное - структурировано, начиная с самых основ языка и заканчивая довольно продвинутыми темами. В конце каждого урока автор предлагает решить пару полезных задач для закрепления изученного материала, а также приводит свое решение.
    Ответ написан
    Комментировать
  • Чем куки отличаются от сессии в PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нууу давайте разбираться.

    Для начала почитайте про HTTP на той же вики. Досканально знать не нужно, но стоит минимально понимать структуру запросов/ответов, понимать что у запроса и ответа есть заголовки и тело (тела может и не быть, зависит от типа запроса/ответа).

    Так вот. Куки. Куки живут на стороне браузера. Они передаются HTTP заголовком на каждый запрос на сервер (даже если вы за картинками полезли). Есть просто куки, есть http-only куки. Куки могут быть разграничены по хосту и пути. Все это дает нам гибкость и помогает с секьюрностью. В PHP содержимое $_COOKIE предоставляет нам SAPI. Когда PHP получает на обработку запрос, SAPI используемое (php-fpm, cgi, mod_php имеют свои реализации SAPI) в данный момент берет заголовки и тело запроса, парсит их и заполняет все эти суперглобальные массивы типа $_SERVER, $_GET и в том числе и $_COOKIE. Все что прислал нам клиент (что-то что делает запросы это клиент, что-то что их обрабатывает - сервер), а куки шлет нам браузер только те что можно исходя из того куда шлется запрос. Устанавливаются куки заголовком Set-Cookie в ответе, то есть тут больше нужно читать в принципе про HTTP а не про PHP. PHP просто позволяет вам работать с этим добром. Вы можете сэтить куки напрямую работая с заголовками ответа при помощи функции header. Более того, если выставить время жизни куки в 0, то как раз таки они а не сессия будет сбрасываться при закрытии браузера так как тот будет забывать все такие куки.

    Вот... сессии... В PHP сессия обычно это файл. Просто какой-то файл с рандомным именем. Если скажем в php.ini указано session.autostart или делается вызов session_start то создается файл под сессию пользователя (можно переместить в рэдис или мемкэш, свое хранилище и т.д в зависимости от нужд. Так же данные можно шифровать, что по умолчанию и происходит). Этот файл имеет ID, просто какая-то рандомная строка. И если при обработке запроса не нашлась сессия с предыдущего запроса - создается новая.

    И вот мы подошли к самому интересному - как PHP связывает сессию с предыдущего запроса с текущей. И тут все довольно просто - куки. Когда пользователю присваивается сессия, автоматически сэтится http-only (что бы нехорошие люди не могли из js увести нашу сессию) кука, в которую записан идентификатор сессии. В дебагере браузера можете посмотреть есть ли у вас кука PHPSESSID (название можно менять в настройках, да и вообще сессии можно не только через куки связывать, но это уже загоны по секьюрности) когда будете эксперементировать с сессиями.

    Когда запрос обрабатывается SAPI, при наличии session.autostart, перед тем как начинать создавать новую сессию, пых все же смотрит а есть ли у нас кука с идентификатором сессии, проверяет есть ли у него такая, и если есть успокаивается и не создает новую. Поскольку сессия привязывается через куки, то можно выставить время жизни этой самой куки (в php.ini) и таким образом регулировать время жизни сессии.

    Вот... когда использовать куки а когда сессии? Желательно понимать, что чем больше данных в куках (а у них есть лимит к слову) - тем больше данных мы передаем на каждый запрос. То есть это не круто когда что бы получить 1 килобайт данных мы должны в заголовках передать пару килобайт кук. Люди, повернутые на оптимизации, даже картинки хранят на отдельных cookie-less доменах что бы уменьшить количество трафика и пакетов (обычно простенький HTTP запрос влазит в размеры одного TCP пакета). Если вам нужно работать с этими данными из JS на любой странице, например локаль выбранноую пользователем для того что бы применять переводы еще и в JS, то стоит использовать куки. Для всео остального лучше конечно же использовать сессии. Во всяком случае на начальных этапах когда что-то сильно сложное вам делать не придется.
    Ответ написан
    2 комментария
  • Обнаружил sql- уязвимый код. Какие возможности? Как воспользоваться?

    mlnkv
    @mlnkv
    JavaScript Developer
    Как воспользоваться? Сообщить разработчикам.
    1322909705_karma1.jpg
    Ответ написан
    Комментировать
  • Обнаружил sql- уязвимый код. Какие возможности? Как воспользоваться?

    @Steely
    Ваши личные данные, ссылка на этот вопрос и другая информация отправлены в соответствующие органы для проверки правомерности ваших действий.
    Ответ написан
    Комментировать
  • Как настроить FTP под ubuntu?

    merryjane
    @merryjane
    Системный администратор
    Как вариант proftpd.
    Установка:
    aptitude install proftpd
    Правка конфига:
    vim /etc/proftpd/proftpd.conf
      RequireValidShell  off
      AuthUserFile  /etc/proftpd/ftpd.passwd
      DefaultRoot                     ~

    Заходим в каталог /etc/proftpd и создаем нужных пользователей:
    ftpasswd --passwd --name=ftp_upload --home=/var/www/upload --shell=/sbin/nologin --uid=48 --gid=48
    где --name=ftp_upload - имя FTP-пользователя,
    --home=/var/www/upload - каталог куда будет доступ по ftp у данного пользователя,
    --shell=/sbin/nologin - отключаем ему шелл на всякий случай,
    --uid=48 --gid=48 - идентификаторы пользователя и его группы с правами которых будут заливаться файлы.

    Не забываем перезапустить сервис после правки конфига сервера.
    Ответ написан
    2 комментария
  • Как в Django исправить ошибку "UnicodeDecodeError"?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    Добавьте этот импорт самым первым.
    from __future__ import unicode_literals
    Ответ написан
    1 комментарий
  • Бросать университет в пользу самообразования и работы?

    @avrelian
    Рассматривайте учебу как проект. Вы за него взялись? Найдите силы довести до конца.
    Ответ написан
    Комментировать
  • Бросать университет в пользу самообразования и работы?

    Мой вам совет — ни в коем случае не бросайте. Во многих конторах в первую очередь будут смотреть на ваши «корочки». Вы можете быть хоть каким гуру в C# и с пеной у рта доказывать это работодателю, при прочих равных, возьмут с человека образованием. Не так давно сам это осознал. По специальности я теплоэнергетик. Но работаю системным администратором уже лет 6. В свободное время изучал C#. Пробовал устроиться программистом — бесполезно. Хотя все тестовые задания работодателей выполнял без проблем, брать меня к себе на работу, видимо, просто боялись. Вот только во фрилансе и нахожу применение своим навыкам в С#.
    И что самое интересно даже системным администратором в более серьезную контору без всяких сертификатов и дипломов устроиться практически не реально. В итоге в свои 27 лет пошел на 2-х годичную учебу по переподготовке на системного инженера хотя работаю уже по этой специальности 6 лет.
    Так что учитесь пока есть возможность. Если хорошо разбираетесь в предметах то много времени они у вас не отнимут
    Ответ написан
    1 комментарий
  • Бросать университет в пользу самообразования и работы?

    Диплом стоит того чтоб его получить… разумеется он не заменит проф. навыков, но без диплома дорога в госконторы и большие корпорации вам скорее всего будет закрыта — такая формальность как 'корочки' там нужна. Ну и насчет 'качалки' для мозга правильно говорят, правда нужно качаться, а не филонить
    Ответ написан
    Комментировать
  • Тематика дипломных проектов?

    @gribozavr
    > Как можно справиться с этой тупиковой ситуацией?

    Из тупиковой ситуации можно выйти очень просто: нужно перестать придумывать темы, а начать делать реальные проекты. Или помогать существующим (в Open Source есть огромное множество проектов, которым не хватает рук).
    Ответ написан
    1 комментарий
  • Python и XML

    @shsmad
    вуаля

    from xml.dom.minidom import *
    
    xml = parse('document.xml')
    name = xml.getElementsByTagName('name')
    
    for node in name:
    	print node.childNodes[0].nodeValue
    
    Ответ написан
    3 комментария