Задать вопрос
  • Где посмотреть пример "кошерных" php классов для новичка?

    Denormalization
    @Denormalization
    А вы таки зачем интересуетесь?
    Нету никаких "кошерных" классов. Чтобы посмотреть как адекватные люди пишут код, можно использовать github.
    Например:
    - Открываем гитхаб
    - Пишем в поиске "symfony"
    - Открываем https://github.com/symfony/symfony
    - Смотрим пример "кошерных" классов
    Ответ написан
    5 комментариев
  • Как выбрать правильный путь в PHP(Python) фреймоврке/CMS, чтобы не закопаться?

    @SharuPoNemnogu
    не язык плохой, программисты такие...
    Если хочешь в разрабы, да в хорошую контору, то учи Symfony. На вакансиях уровня сеньора я других фреймворков не встречал. Да и освоив один фреймворк, другие освоишь без особого напряга.

    Что касается cms, если хочешь работать в какой нибудь студии, на конвейере сайтиков близнецов, то вордпресс, а лучше битрикс, то еще Г, но расплодилось, а спецов мало, т.к. мало кто хочет с ним работать. Без куска хлеба точно не останешься.
    Ответ написан
    Комментировать
  • Как объяснить родителям, что на программер мне не нужна вышка?

    Sanes
    @Sanes
    Нужна, иди учись. Вышка говорит о том, что ты не балбес, если осилил получить диплом.
    Ответ написан
    4 комментария
  • Очень простая Админка?

    @dev400
    у вас тут лапша. А так гуглите CRUD
    Ответ написан
    2 комментария
  • CodeIgniter мертв?

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    Сейчас в тренде не только скорость разработки сайтов но и качество, а качество это прежде всего тестируемость кода, его поддержка, масштабируемость. Когда сталкнётесь с этим тогда упретесь в такие штуки как SOLID, GRASP. Так вот CI как раз весь погряз в противоположенных STUPID практиках.
    Если проект не сложный подойдет CI, если по сложнее то можно и CI но кучу всего придется подтягивать через composer, а потом поймете что можно взять тот же Laravel где все есть из коробки.
    Ответ написан
    2 комментария
  • CodeIgniter мертв?

    Чем Вам композер не угодил, вполне себе удобное и полезное средство
    Ответ написан
    1 комментарий
  • Что почитать об архитектуре приложений и фреймворков на 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
    Ответ написан
    12 комментариев
  • В какой момент PHP-скрипт фактически получает данные от MySQL?

    @Atllantis
    2-й вариант.
    Запрос в query выполняется и возвращается результат. А дальше уже работаете с полученным результатом.
    Ответ написан
    Комментировать
  • Что означает точка с запятой перед началом функции?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Это точка-с-запятой, ставится в начале файле, чтобы при минификации и последующей склейки нескольких файлов в один между инструкциями склеенных файлов гарантированно был синтаксический разделитель.

    если в одном файле в конце написано var s=10*somevar в другом начинается с (fun... и т.д.) получится после склейки var s=10*somevar(fun... и т.д.) вместо ожидаемого var s=10*somevar;(fun... и т.д.)
    Ответ написан
    2 комментария
  • Почему не работает автодополнение в lite ide?

    0xcffaedfe
    @0xcffaedfe
    Developer & Reverser
    Потому что баг. Смысл вообще задавать подобные вопросы? Пишите сообщение о ошибке на гитхабе проекта.
    Ответ написан
  • Кто должен составлять документацию ( в компании) на программный продукт?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вся команда. Каждый свою часть.
    Ответ написан
    Комментировать
  • Кто должен составлять документацию ( в компании) на программный продукт?

    sim3x
    @sim3x
    Заказчик
    Технический писатель
    ПМ
    ТЛ
    Поддержка
    Разработчики
    Ответ написан
    Комментировать
  • Почему LIMIT так сильно влияет на скорость?

    alsopub
    @alsopub
    Если вы их выполняли именно в этой последовательности, то ничего странного нет.
    В первом случае была перелопачена база, отобраны 20 записей, а во втором случае - все уже лежало в кеше.
    Ответ написан
    Комментировать
  • Как поднять себе зарплату?

    sim3x
    @sim3x
    Хочешь больше зп?
    Найди новую работу

    АПД
    Теоретически, нужно поговорить с начальством. Да

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

    Даже теоретики в коментах

    АПД2
    У прохождения собеседования есть еще преимущества
    - ты получаешь подтверждение своей квалификации и необходимости тебя на рынке
    - ты получаешь денежный еквивалент своей ценности
    - ты получаешь повышение навыка прохождения собеседований - ето отдельный навык, который не часто пересекается с навыком программирование/разработка/администрирование/...
    - в случае провала собеседования у тебя нет никаких побочных еффектов
    - ты получаешь срез навыков необходимых рынку
    Ответ написан
    36 комментариев
  • После обновления php до версии 7.0 перестали работать сайты на вордпрессе?

    Pinsky
    @Pinsky
    Кофеиноникотиновая смесь в backend-код
    Перенастройте handler у web-сервера. У Вас php-файлы просто не исполняются сейчас
    Ответ написан
    5 комментариев
  • Как выйти из main после завершения всех рутин?

    @FireGM
    https://golang.org/pkg/sync/#example_WaitGroup
    Хотя с каналами и быстрее, но я предпочитаю контроль через wg.

    upd.

    Контролируйте количество рутин. Раздробите приложение на маленькие функции.
    в главном сразу запускается 10 рутин на выполнение запросов, 10 рутин на анализ ответа от сторонего сервиса, 10 рутин ещё чего-либо.
    Рутины для выполнения запросов принимают, например, из единого канала урл, на который надо сделать запрос. Отправляете урл в канал, свободная рутина хватает и выполняет запрос, получет ответ, передает в другой канал, из которого уже хватает свободная рутина для анализа ответа. Ну и т.д.

    Вот топорный пример, как делаю я

    package main
    
    import (
    	"fmt"
    	"io/ioutil"
    	"net/http"
    )
    
    func main() {
    	urls := []string{"http://google.ru", "http://vk.com", "http://ya.ru"}
    	chanUrls := make(chan string, 100)
    	chanRes := make(chan http.Response, 100)
    	chanPrint := make(chan string, 100)
    	for _, url := range urls {
    		chanUrls <- url
    	}
    	close(chanUrls)
    	go httpGet(chanUrls, chanRes)
    	go analys(chanRes, chanPrint)
    	printRes(chanPrint)
    }
    
    func httpGet(chanUrls <-chan string, chanRes chan<- http.Response) {
    	defer close(chanRes)
    	for url := range chanUrls {
    		res, err := http.DefaultClient.Get(url)
    		if err == nil {
    			chanRes <- *res
    		}
    	}
    }
    
    func analys(chanRes <-chan http.Response, chanPrint chan<- string) {
    	defer close(chanPrint)
    	for res := range chanRes {
    		body, err := ioutil.ReadAll(res.Body)
    		if err == nil {
    			chanPrint <- string(body)
    		}
    	}
    }
    
    func printRes(chanPrint <-chan string) {
    	for pr := range chanPrint {
    		fmt.Println(pr)
    	}
    }
    Ответ написан
    Комментировать
  • Как выйти из main после завершения всех рутин?

    @arctblake
    В main:
    var wg sync.WaitGroup
    ...
    Перед запуском каждой горутины сделать wg.Add(1) (не в самих горутинах, а в том же main прямо перед go ...

    В каждую горутину первой строчкой добавить defer func() { wg.Done() }()

    Потом в main создать еще одну горутину - контролирующую. В ней всего 2 строчки:
    wg.Wait()
    close(канал)

    Ну и дальше в main остальной код.
    Ответ написан
    8 комментариев
  • Apache одновременно с IIS 8.5 - как?

    BuriK666
    @BuriK666
    Компьютерный псих
    Если на сервере только один IP, то можно повесить Apache на другой порт, а с помощью IIS пробрасывать нужные запросы в Apache. Или наоборот. Или поставить IIS и Apache повесить на другие порты, а на 80 повесить Nginx и пусть он разбирается кому, какие запросы отправлять. Других вариантов нет

    Если IP несколько, то просто повесить IIS и Apache на разные IP.
    Ответ написан
    2 комментария
  • Локализация больших данных в Laravel?

    miraage
    @miraage
    Старый прогер
    Я бы предпочел использовать gettext в больших проектах.
    Ответ написан
    Комментировать
  • Какие порекомендуете книги где есть примеры создания движка на PHP?

    VGrabko
    @VGrabko
    Golang, Php, Js
    Что бы написать свой движок надо выучить 1 готовый (c) Я
    Ответ написан
    8 комментариев