• Какие технологии использовать для создания чата?

    @myxasa
    https://sendbird.com
    https://www.messagebird.com
    https://www.twilio.com/
    https://voximplant.ru/

    необязательно свое клепать
    можно сторонний сервис заюзать - все уже десять раз сделано давно
    Ответ написан
  • Как аргументировать начальству создание существующего проекта заново, с ноля?

    miraage
    @miraage
    dev
    Я бы в лично заявил руководителю что-нибудь такое.

    "Иван Петрович, мне нравится коллектив, мне нравится идея проекта, но очень много претензий к коду. Браться всё переписывать - убыточно с точки зрения бизнеса, однако рано или поздно случится апокалипсис. Давайте найдем способ привести это всё маленькими шагами в человеческий вид. Если продолжим поддерживать текущую реализацию - получим текучку кадров, ибо с этим работать очень тяжело и убыточно".
    Ответ написан
  • Почему люди не используют готовые cms, но ищут тех, кто будет писать с нуля?

    @mletov
    Чистый php, фреймворк и cms - это 3 уровня абстракции.

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

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

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

    Чем ниже уровень абстракции, тем выше квалификация специалиста.

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

    По итогу: в зависимости от сложности задачи и уникальности фукционала, специалист должен выбирать, какой уровень из этих 3 уровней абстракции ему использовать. Хоть они и пересекаются, но не очень сильно, и конкуренции друг для друга почти не представляют. Далеко не факт, что ваш знакомый, который "изучил 10 cms" сможет эффективно решать те задачи, которые ставят работодатели, нанимающие "много программистов что бы они копались в коде"
    Ответ написан
  • Как и где учить тонкости python?

    aRegius
    @aRegius
    Python Enthusiast
    Обратите внимание на High Performance Python и Expert Python Programming

    + Fluent Python, безусловно, который вам уже порекомендовали.

    Upd
    Вообще, Python в первую очередь - аккуратность/читаемость кода (что, кстати, не всегда == лаконичность). Оптимизация - после, при необходимости.

    Т.е., при прочих равных условиях, лучше, например, так:
    >>> my_lists = [[[1, 2, 3], [4, 5, 6]]]
    >>> flat = []
    >>> for sub1 in my_lists:
    	    for sub2 in sub1:
    		    flat.extend(sub2)
    >>> flat
    [1, 2, 3, 4, 5, 6]

    Чем так:
    >>> my_lists = [[[1, 2, 3], [4, 5, 6]]]
    >>> flat = [x for sub1 in my_lists for sub2 in sub1 for x in sub2]
    >>> flat
    [1, 2, 3, 4, 5, 6]
    Ответ написан
  • Действительно ли новая asp.net core 1.0 быстрее в 8 раз Node.js?

    Jump
    @Jump
    Системный администратор со стажем.
    Правда ли, что новый Mercedes-AMG GT ездит в 8 раз быстрее Камаза?
    Конечно правда. По асфальту в легкую.
    Ну конечно если асфальт хороший, а не гравийка ухабистая.
    К тому же злые языки утверждают что Mercedes-AMG GT вообще не ездит. Реально пробовали - насыпали в салон 20тонн гравия, а он собака ехать не хочет.
    Ответ написан
  • Что почитать об архитектуре приложений и фреймворков на php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В целом сразу вас расстрою, то что вы хотите нельзя "разобрать" за пару месяцев. На это уйдет пару тройку лет. И книги которые стоит по этой теме прочитать имеет смысл перечитывать. Ну и практика практика практика.

    Так же хочу заметить что "архитектура" это не что-то эдакое, а общее понимание команды разработчиков о том как функционирует приложение. Если этого общего понимания нет - у вас нет архитектуры. У многих разработчиков понимание пропадает уже через пару месяце стихийной разработки. Так что помимо архитектуры важно еще и процессы/методологии разработки подтянуть.

    Так же стоит заметить, что все это приследует одну единственную цель - сделать процесс разработки эффективным в краткосрочной и долгосрочной перспективе. Если скажем у вас все приложение построено на процедурах и глобальных переменных поддержка такого кода скорее всего будет сильно дороже.

    но совершенно не имею представления о правильной архитектуре приложений на php


    "Правильно" не бывает, все зависит от задачи. "Правильная" архитектура является:

    - понятной - то есть можно быстро разобраться. Это как читабельность кода (читать совершенный код Макконела) так и в принципе декомпозиция системы, разделение ответственности и т.д. (микросервисы, гексагональная архитектура). Тут можно посоветовать почитать Эрика Эванса.
    - удобной в изменениях (продумать все нереально, а сталобыть проще сделать так что бы адаптироваться под изменения в требованиях можно было эффективнее).
    - Тестируемой - то есть вы можете проверить работоспособность системы на различных уровнях. Тут стоит смотреть в сторону TDD или практик с той же идеей (сначала формулируем как работает и как мы это проверим а потом уже делаем).

    Вот и все. Далее уже есть принципы SOLID (читать Роберта Мартина), GRASP (Крэйг Ларман), GoF (лучше тут почитать head first design patterns или даже начать с Мэта Зандстры, у него помимо паттернов еще про процессы мельком рассказано).

    Ну и смысла в этом всем нет если вы еще до конца не осознали что есть инкапсуляция и полиморфизм. Многие могут рассказать что значат эти термины, но на практике эти знания они не могут применить (чаще всего страдает инкапсуляция)

    или написании чего-то своего с нуля на чистом php


    Такое решение может принимать только разработчик у которого уже есть за плечами хотя бы пяток лет опыта работы с различными (не одним) фреймворком и языками. В противном случае вы только будете заниматься бесполезным велосипедостроительством.

    идеально было бы вообще подробно расписанное сравнение внутреннего устройства нескольких фреймворков


    Берете Symfony или Zend и вперед. Все остальные фреймворки "проще". То есть скрывают больше от разработчика. После них уже можно брать что угодно.

    p.s. еще прочитайте тут: www.phptherightway.com
    Ответ написан
  • Из чего состоит окружение продвинутого php разработчика?

    nonlux
    @nonlux
    Поправил ответ, так будет логичнее.
    Ниже приведены инструменты, которые использую лично я и причины почему.

    1. docker-окружение
    (в 90% случаев для веб-разработки достаточно php -S 0.0.0.0:8000)
    виртуальные машину становятся нужны:
    - когда надоест переустанавливать хост-систему из-за обилия хлама
    - когда работаешь с несколькими проектами имеющие специфические (разные) настройки окружения(php, web-сервер, база)
    - когда надоест решать проблемы в команде из-за того что по разному настроено окружение

    2. git - система контроля версий
    Помнить что ты и когда изменял, должен не человек, а машина.
    Это необходимо:
    - чтобы не испортить всю работы за прошедший год нажав del
    - чтобы определить кто из команды злодей и все испортил
    - чтобы не думать как перенести свежую версию проекта с одной машины на другую

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

    4. behat + phpspec
    Тесты нужны:
    - когда хочется почувствовать себя безопасности и для сладко спать ночь, забыв о кошмарах о сломанном коде
    - когда в production все снова сломалось
    - когда ты написал одну новую фичу, а сломал три

    5. zsh
    Хорошей консолью приятно пользоваться, работа идет быстрее.
    Консоль есть жизнь, жизнь есть shell.

    6. tmux
    Мало одно окошка в консоли, тогда tmux идет к вам.
    В качестве бонуса получите возможность парного программирования совершенно бесплатно

    7. tmuxinator
    Надоело каждый раз открывать кучу окон для tmux, попробуйте его )
    8. vim
    - Потянуло на что-нибудь необычное?
    - Хочется эффективнее писать код ?
    Ну что открыли vim? В первый раз? Поздравляю закрыть вы его не сможете )
    Вызывает зависимость при частом потреблении


    9. continuous integration сервер
    Вообще ci сервер это одушевленная машина. Это твой тамагочи, ты кормишь его хорошим кодом, он радуется и ты видишь приятный зеленый огонек. Если ты дал с код от скажет что не вкусно. Ну а если ты ему, что гнилое он будет долго на тебя орать плохими словами. Со временем он растет и учится делать более серьезные вещи, и начнет помогать тебе:
    Его скилы:
    - он может сам выполнить 10 минутные тесты
    - подготовить и опубликовать проект
    - рассказать о твоем коде, даже то что ты не знаешь
    Он легко обучается и ты легко сможешь научить его удивительным вещам.

    10. куча линтеров на pre commit hook
    Чтобы ci не кормить плохими продуктами, хорошо бы проверять что ты сделал до отправки на сервер. Что бы не забыть это сделать git сам работу.

    11. gulp
    gulp - это еще один твой помощник.
    как если использовать, как watcher файлов + livepreview, можно забыть о F5 в браузере

    12. bower
    Тоже что и composer но для управления ассетами. Это я о всяких jQuery и Bootstrap

    666. Линукс
    Даже если не хочется ставить как хост-систему, его все равно надо знать. Ваш код будет работать на нем )
    Ответ написан
  • Что почитать о принципах построения ajax сайтов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если у вас статьи должны открываться в новом окне, то у вас уже не single-page app, а значит вы сами должны решать как вам чего разруливать. В любом случае если вы правильно настроите на сервере кеширование статики, то что у вас должны грузиться js-ки при заходе на страницу вас вообще не должно волновать. Они уже будут у браузера и оверхэда не будет вовсе.

    Как такавых общепринятых правил как строить "норм сайты" с restfull бэкэндом нету (restfull соблюдаете и то хорошо), обычно для сайтов важна индексируемость поисковиками, так что советую почитать про ajax crawling у гугла (то же самое есть у yandex и bing). От этого уже можно будет плясать. Ну а так... возьмите какой популярный фреймворк типа angularjs или библиотеку типа backbone (если вам нужно только структуру и навигацию организовать, думаю будет проще), туториалов так же предостаточно.
    Ответ написан
  • Ошибка в MySQL и PHP

    @Slko
    C++/C#/Python Developer
    Данный код - идеальный пример, в котором можно эксплуатировать SQL-инъекцию. Используйте параметризированные запросы или экранируйте входные данные.
    А если отвечать конкретно на этот вопрос, то в GET['name'], я полагаю, передаётся helloworld без кавычек и выходит такой SQL-запрос:
    SELECT * FROM news WHERE link = helloworld
    Соответственно, надо добавлять кавычки вокруг "helloworld", потому что без кавычек это интерпретируется как идентификатор столбца, а не как строка.
    Ответ написан
  • Cочетания клавиш содержащие команду смены раскладки клавиатуры не пробрасываются в приложения, что делать?

    dmitriylyalyuev
    @dmitriylyalyuev

    В Ubuntu 13.10 сломали переключение по клавишам модификаторам. Настройте себе переключение раскладки про Ctrl+Space и все будет работать.

    Ответ написан