• Как эффективно выучить PHP?

    @joansilver
    Хочется добавить к вышесказанному замечательным ресурс, который описывает путь для овладения PHP: PHP the right way
    Ответ написан
    Комментировать
  • Как в php добавлять в базу и обрабатывать тексты разных кодировок?

    @PavelFokeev
    pavl1k.ru
    Но что делать если кодировка файла не utf-8?

    Конвертировать в UTF-8 и работать дальше.
    Ответ написан
    2 комментария
  • В чем суть миграций БД?

    @FRANZEE
    Хорошая статья на эту тему - https://habr.com/ru/post/121265/
    Ответ написан
    Комментировать
  • Как работать с websocket в php без библиотек?

    @xfg
    Прочитать соответствующий RFC https://tools.ietf.org/html/rfc6455 чтобы понять, как происходит рукопожатие и какие байты в переданном сообщении за что отвечают. После этого будет понятно как написать реализацию. Я досконально уже не помню, но фактически от клиента приходит обычный http запрос с определенными заголовками, сервер разбирает этот запрос и если всё ок, то сохраняет открытое соединение в массив, если нет, то отправляет соответствующий ответ и закрывает соединение. Дальше по открытому соединению начинает сыпаться поток байтов от клиента их нужно разбирать, чтобы понять длину сообщения, сами данные переданные в фрейме, закончился фрейм или еще нет и тому подобное. Обратно также кодировать данные в поток байтов и отправлять по открытому соединению. Каждый байт в переданном фрейме несет определенный смысл. Обо всем этом подробно написано в RFC, но на английском. Вообще это хорошо примерно понимать как работает, но глупо писать такую низкоуровневую реализацию, когда есть готовые. Такие вещи развивают и поддерживают годами. Вы же не пишите HTTP серверы, а берете готовые вроде nginx и тому подобное.

    В каком месте можно полученные данные подготовить к записи в бд.

    Как сделать, что бы на стороне клиента, один websocket отвечал за сообщения, другой за статьи. (Или за эти два действия отвечает один websocket, тогда как мне на сервере это различать).

    Вебсокет это низкоуровневая штука, для передачи потока байтов от клиента на сервер, в отличии например от HTTP, где есть заголовки и тело сообщения. Поверх вебсокета нужно делать еще один протокол или самописный или выбрать один из готовых. Это проще говоря, то как выглядят ваши фреймы (сообщения), которые вы отправляете с клиента на сервер и назад. Например клиент может отправлять такой фрейм:
    ["id", "controller/action", {param1: value1, param2: value2}]

    в ответ получать
    ["id", "OK"]
    если запрос был обработан успешно или
    ["id", "ERR", {error: "action not found"}]
    если произошла ошибка. По переданному id в массиве, можно понимать, к какому запросу относится ответ.
    Для уведомлений (событий) сервер может отправлять клиентам что-то такое
    ["user_added", {user: {...}}]
    и т.д. Этот протокол необходимо придумать самому или выбрать из готовых (популярных пока нет) и написать его реализацию (клиентскую и серверную часть) или опять же взять уже готовую.

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

    Но это уже всё должно быть, просто возьми real-time фреймворк. Там за тебя написали и websocket сервер и протокол поверх него и экшены уже есть. Всё низкоуровневое уже готово. Бери и пиши приложение. В nodejs самый популярный это например https://github.com/socketio/socket.io, а в php я не знаю, но уверен, что тоже есть что-то популярное.

    Своё написать не получится, без опыта и без попыток сделать приложение на чем-то готовом. Нужно как минимум прочитать RFC и посмотреть реализации других разработчиков. Для этого нужно быть кем-то больше, чем "программистом сайтов".
    Ответ написан
    1 комментарий
  • Чем WebSocket в php отличается от того же в js?

    iMukcep
    @iMukcep
    Вопрос задан крайне некорректно. WebSocket - это протокол передачи данных, который работает поверх TCP. Есть WS-клиент, и есть WS-сервер, к которому подключаются клиенты.

    Далее, по теме вопроса: Клиент можно написать на чём угодно, хоть на php (при большом желании), хоть на js (на js на это уходит пару строк кода). Так что можно сказать одно - отличие разве что в реализации, ну и осмысленностью действий, ибо никогда не сталкивался с необходимостью писать клиент на PHP.

    И да, на последок: писать WS-сервер на php - заведомо гиблое дело, сам с этим сталкивался. Пришлось в итоге искать альтернативы в виде Python'a и NoneJS.

    Поправьте, если где ошибся.

    UPD:
    Ссылки:
    https://ru.wikipedia.org/wiki/WebSocket
    https://learn.javascript.ru/websockets
    https://habrahabr.ru/post/209864/
    https://github.com/varspool/Wrench
    Ответ написан
  • И все-таки PHP 7 быстрее Python 3?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Бенчмарки - это бесполезные писькомерки.

    Инструменты надо сравнивать не по тому, как они себя ведут в вакууме, а по удобству использования в реальной жизни и тому, насколько они способны решить поставленную задачу.

    Что в вашей жизни изменится после того, как в ответах к вопросу один человек напишет, что php быстрее, другой, что быстрее python и ещё десять разведут срач не по теме?

    Но вот есть ли смысл в удобстве, если это удобство не дает нужных результатов?
    Нам надо вас уговорить вернуться на php? Вы благословения испрашиваете? Вы уже столкнулись с реальными проблемами производительности?
    Ответ написан
    6 комментариев
  • Почему все хотят django?

    @dustyattic
    Всем хорош Django, все у него есть, но...
    Django - это коробочный продукт, со всеми достоинствами и недостатками, присущими коробочным продуктам. То есть внутри большой коробки, называемой Django, есть много других коробочек, содержимое которых прекрасно состыковано с самим продуктом и с другими коробочками. Поэтому разработчик на Django чувствует себя вольготно. А если у него возникает проблема, то большое комьюнити всегда поможет.
    Я разработал на Django только один проект. Возможно, будь проект простым, я до сих пор бы использовал Django. Но проект оказался неожиданно сложным. Написание кода для обработки данных из некоторого количества таблиц с довольно запутанными связями показало мне, что у Django, несмотря на его популярность, совершенно никудышный ORM. Используя Django, я половину обращений к таблицам реализовывал в чистом SQL, а затем стыковал результаты с данными полученными с помощью ORM. У меня все получилось. Но осадок остался. Поэтому следующую версию того же проекта, и все последующие тоже, я написал на Flask, используя в качестве ORM небезызвестный SQLAlchemy.
    Я не жалею времени, потраченного на изучение Django. Это хороший опыт. Те, кто используют Django, чувствуют себя защищенными. Они часть большого дружного сообщества, где можно найти любую поддержку.
    Но я также не жалею, что я ушел от Django. У Django вся магия ( регистрация, авторизация, работа с сессиями и многое-многое другое) спрятана под капотом, я просто подключал компоненты и использовал их. Используя Django, я делал многие вещи автоматически, совершенно не задаваясь вопросом как эти вещи работают. Уйдя от Django, я лучше стал понимать то, чем занимаюсь каждый день.
    Можете мне поверить на слово, на Flask-е возможно писать очень большие проекты, с большим количеством кода. При этом реализация всей магии ложится на Вас. Это просто вопрос доверия. Используя Django, Вы доверяете всю магию Django, не используя его, Вы доверяете всю магию себе.
    Ответ написан
    Комментировать
  • Все http сервера в большинстве не многопоточные?

    @lotse8
    Сервер здесь вообще не причем. Читайте спецификацию http протокола, там все ясно расписано. Сейчас все переходят на https - почитайте его спецификацию тоже. Многое станет понятным.
    Ответ написан
    Комментировать
  • Все http сервера в большинстве не многопоточные?

    @OlegPyatakov
    pyatakov.com
    Надо различать http-сервер и веб-приложение. Http-сервер - это программа, которая непосредственно получает сетевые запросы и потом, если надо, отдает на исполнение в веб-приложение.

    Все популярные http-серверы (Nginx, Apache, Caddy) реализуют многозадачность в том или ином виде (потоки, асинхронность и т.д.). При обработке нескольких запросов http-сервер запускает несколько копий веб-приложения, которое, обычно, однопоточное, но может реализовывать потоки средствами языка.

    В веб фреймворках (Flask, Django) есть возможность поднять http-сервер, но он, как правило, предназначен только для разработки, а не для реальных приложений. Например, базовый http-сервер во Flask - однозадачный, он не умеет обрабатывать несколько запросов параллельно.

    Тем не менее, в скриптовых языках могут быть production-ready http-серверы, которые в том числе реализуют многозадачность. Так, на Python есть Waitress и Gunicorn.
    Ответ написан
    Комментировать
  • Выбрать СУБД между MySQL, PostgreSQL, MariaDB и MSSQL?

    EugeneOZ
    @EugeneOZ
    Шардится и реплицируется Postgre проще и надёжнее. Но даже с учётом PDO, есть разница местами в синтаксисе и возможностях между ней и MySQL.
    Главное — не вляпайтесь в MSSQL. С ним можно нормально работать только внутри стека MS-инструментов. Оно даже UTF-8 не поддерживает. Ну и MS кладёт болт на не-виндовые драйвера, выпускают их очень редко.
    Ответ написан
    7 комментариев
  • MySQL vs. MariaDB vs. PostgreSQL - что и когда лучше?

    По большому счету разницы нет.
    Вот только у меня с MySQL постоянно были проблемы.
    PostgreSQL может "бесить", тем, что в ней строгая типизация.
    Если в MySQL написать фигню и она даже выполниться, то в PostgreSQL выкинет ошибку.
    Ответ написан
    Комментировать
  • MySQL vs. MariaDB vs. PostgreSQL - что и когда лучше?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Тогда, когда ваш текущий сервер перестает справляться с вашей задачей - тогда вы будете искать что-то другое.
    Если все работает - не парьтесь.
    А в сложных проектах, за вас этот выбор сделает системный архитектор с опытом.
    Ответ написан
    Комментировать
  • PHP или Python, что удобнее и выгоднее?

    Лучше выучить PHP + JS (с AJAX естественно).
    Ответ написан
    1 комментарий
  • PHP или Python, что удобнее и выгоднее?

    alexiusp
    @alexiusp
    senior frontend developer
    Я тоже, как авторы выше, порекомендую учить оба языка. Как верно заметил один из вышеотписавшихся, только в сравнении познаётся истина. Чтобы понимать, как устроен тот или иной язык, какие в нём особенности, сильные и слабые места, в каких задачах в конце концов лучше этот язык использовать, всегда нужен образец для сравнения, т.е. другой язык.
    Поэтому учите оба языка, чтобы иметь возможность применять их в разных задачах, а значит иметь более широкий спектр потенциальных заказчиков на фрилансе.
    И, да, по поводу фриланса я бы не торопился. Лучше сначала поработать фулл-тайм в какой-нибудь конторе, чтобы набраться опыта: планирования рабочего времени, взаимодействия с коллегами и заказчиками и всё такое прочее. Когда годик поработаете на нормальной работе, тогда уже решайте нужен ли вам этот фриланс. Далеко не все могут успешно работать на фрилансе. Иногда удобнее в офисе.
    Ответ написан
    1 комментарий
  • PHP или Python, что удобнее и выгоднее?

    @XimikS
    Руби уже давно не прожорливый. А писать намного приятнее, чем на пхп.
    Вообще не советую этот пхп. Да, работы много, да программистов толпы, но хороших - единицы.
    Язык по сравнению с руби и питоном вообще весьма непродуманный - создавался изначально для не-программистов.

    Советую Ruby on Rails. Скопирую свой старый ответ:

    Я начинал с Django, но однажды наткнулся на рельсы и этот туториал , и влюбился в них.

    Почему Rails?

    — Быстрая разработка. В Rails это поставлено на первое место, и вместе с тем, рельсы неплохо масштабируются.
    — Экосистема. Для рельсов целая туча гемов на все случаи жизни. Авторизация, аутентификация, шаблонизаторы, пагинаторы, работа с изображениями..
    — Тестирование. Наверное, в экосистеме рельсов самое продвинутое тестирование:) Просто попробуйте такие гемы как RSpec, Capybara, FactoryGirl
    — Язык. После более простого питона, я немного побаивался руби. Хорошо написанный код читается как текст на английском, в особенности при использовании DSL.
    Ответ написан
    1 комментарий
  • Существует ли "Грокаем ООП"?

    BorLaze
    @BorLaze
    Java developer
    Вы не с того начинаете.

    GoF - это нечто вроде best practices, как и в каком случае применять те или иные возможности, предоставляемые ООП (полиформизм, абстрактные методы/классы, интерфейсы и т.д.).
    Само собой, что из себя представляют понятия, перечисленные в скобках, надо уже знать.

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

    @Vitsliputsli
    Места в принципе не жалко, но это не значит, что я должен впускать таджиков в 10-комнатную квартиру, даже если живу там один,

    Chrome один займет 8 из 10 комнат.

    нужна только для доступа в интернет через Chrome, другие программы использоваться не будут

    если это действительно так, можно вообще не использовать DE и запускать только иксы и в них Chrome
    Ответ написан
    Комментировать
  • PHP 7 - как сделать простую обфускацию кода?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Цель - усложнить разбор проекта в случае воровства, т.к. попытки уже были.
    Если попытки были - потратьтесь на ionCube!
    Окупится быстро!
    Ответ написан
    Комментировать
  • Как и где хранить техническую документацию?

    DDDsa
    @DDDsa
    Хороший подход — docs as code.
    Мы ведём все документы в git-репозиториях, в формате Markdown. Исходники обёрнуты в Foliant, который может в любой момент из md собрать PDF, docx, сайт, гугл-док или что угодно. Например, многие проекты с документацией автоматически собираются в базу знаний при помощи GitLab-CI. При каждом пуше изменений в репозиторий сайт пересобирается и мы уверены, что там всегда свежие доки. А как только менеджер просит готовый документ — можно тут же собрать PDF, с коропоративным лого и т д.

    При этом исходники всегда лежат в plain-text в репозиториях, что даёт возможность работать над доками вдвоём и втроём, со всеми взрослыми фишками вроде девелоп и мастер веток, фичей, релизов, как будто это код.
    Ответ написан
    Комментировать