• Развертывание web приложения на Go?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Как это работает, чтобы понимали. Я опишу истинно правильный путь, но долгий: (как подсказал pygame , по бенчмаркам https://gist.github.com/hgfischer/7965620 всё же нативный хттп сервер в Go быстрее, чем nginx с fcgi, т.к. у Go гавняная реализация fcgi, поэтому вместо fcgi быстрее будет обычный http proxy_pass).

    1) Ставится веб-сервер нормальный, а не тот, который есть в самом Go. То есть, ставим nginx. Настраиваем ему все url маршруты, настраиваем отдачу статики.

    2) За динамикой nginx будет обращаться к нашему Go демону. По протоколу fast-cgi. Именно по нему, потому что nginx его умеет и вообще он хорош (upd: но не в Go). Это короч бинарный протокол по которому nginx передаёт в нашу Go программу HTTP заголовки запроса от браузера и получает обратно HTTP ответ. Для этого ставим простейшую обёртку для fast-cgi под названием spawn-fcgi, она будет преднастраивать и запускать нашу Go программу, готовую для общения по протоколу fast-cgi.

    3) На случай, если наша Go программа падает. Либо уже у нас есть система, которая следит за демонами и поднимает их в случае падения (systemd, upstart), тогда конфигурируем её, либо ставим таковую и тоже конфигурируем.

    Привожу пример как это всё сделано у меня (самый популярный стек технологий) на Debian:

    1) nginx
    server {
    	server_name otboi.****;
    	listen 80;
    	include fastcgi_params;
    ...
    	
    	location / {
    		fastcgi_pass unix:/var/run/otboinik.sock;
    	}


    2) systemd конфиг, который стартует нашу Go программу, завёрнутую в spawn-fcgi
    [Unit]
    Description=Otboinik
    
    [Service]
    Restart=always
    Environment=OTBOINIK_BIN=/opt/гыы/otboinik/bin/otboinik
    Environment=OTBOINIK_PID=/var/run/otboinik.pid
    Environment=OTBOINIK_USER=гыыыы
    Environment=OTBOINIK_SOCKET=/var/run/otboinik.sock
    Environment=OTBOINIK_SOCKET_USER=гыыыыы
    Environment=OTBOINIK_SOCKET_MODE=0666
    ExecStart=/usr/bin/spawn-fcgi -s $OTBOINIK_SOCKET -M $OTBOINIK_SOCKET_MODE -n -P $OTBOINIK_PID -u $OTBOINIK_USER -U $OTBOINIK_SOCKET_USER -G $OTBOINIK_SOCKET_USER $OTBOINIK_BIN
    
    [Install]
    WantedBy=multi-user.target


    3) Сам Go код
    import (
    	"net/http"
    	"net/http/fcgi"
    )
    
    type Server struct {
    }
    
    func (s Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
           // чиста пример
            jsonblob := r.FormValue("events")
    	if jsonblob == "" {
    		w.WriteHeader(http.StatusNotAcceptable)
    		return
    	}
    }
    
    func main() {
    	server := Server{}
    
    	func() {
    		fcgi.Serve(nil, server)
    	}()
    
    	waitchan := make(chan int, 1)
    	<-waitchan
    }
    Ответ написан
    4 комментария
  • Можно ли считать Golang заменой Nodejs?

    @DDanya
    Заменой - нет.Они разные.Но вот если иметь в виду именно переписывание сайта с Node на Go, то он подходит больше других.Их скорость почти одинакова(Их C обгоняет).Go не содержит callback hell и очень приятен в синтаксисе.Для веб он подходит лучше других языков.
    Ответ написан
    7 комментариев
  • Выбор движка для простого интернет-магазина?

    DEViANCE
    @DEViANCE
    Еще неплох Opencart
    Ответ написан
    Комментировать
  • Что лучше на бэкенд: Apache или FastCGI? На фронтенде ВСЕГДА останется Nginx

    zaurio
    @zaurio
    Прежде чем уходить от апача, задумайтесь о том, что вы получите. Не только плюшки, но и геморой. Апач — это очень качественный менеджер процессов. Вы же не собираетесь перейти на fastcgi демона, которые работает в единичном экземпляре. А значит, нужно изучить тему «написание менеджера процессов» (свой, готовый — неважно). Главное, что нужно убедиться в стабильности его работы.

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

    И да, я за то, чтобы уйти от апача (были проблемы в других областях), но жить стало не легче, а «по-другому».
    Ответ написан
    Комментировать
  • Что лучше на бэкенд: Apache или FastCGI? На фронтенде ВСЕГДА останется Nginx

    Nepofigist
    @Nepofigist
    Использую nginx+php-fpm. На сервере — 512 Мб ОЗУ, занято за 90%, из них бОльшая часть — кэш и буферы. Работает сайт на Livestreet и бложик на Wordpress. Вот статистика, плюс вот иллюстрация (характеристика сайта на LS — слева).
    Ответ написан
    Комментировать
  • Что лучше на бэкенд: Apache или FastCGI? На фронтенде ВСЕГДА останется Nginx

    @odmin4eg
    на одном из своих очень нагруженном сайте на Wordpress я отказался от апача в сторону… php5-fpm
    расход памяти сущесвенно снизился, «залипаний» в пиковых нагрузок не стало, освободившаяся памяь ушла mysql
    Вот тут я писал для себя, чтоб не забыть
    www.odmin4eg.ru/2010/pereezzhaem-na-php5fpm/
    Ответ написан
    4 комментария
  • Скрипт интернет магазина

    brick812
    @brick812
    myopencart.ru/ — бесплатный и функциональный
    Ответ написан
    Комментировать
  • Первые шаги в PHP, имет ли смысл начинать с MVC?

    @SMiX
    По поводу 6 пункта могу предложить Spree.
    Движок написан на Ruby, а авторы стараются идти в ногу со временем и постоянно выпускают новые версии, испольщующие современные средства(мигрируют на новые движки авторизации, обновляют код для совместимости с актуальными версиями rails и т.д.). Существует большое количество плагинов.
    Ответ написан
    5 комментариев
  • Первые шаги в PHP, имет ли смысл начинать с MVC?

    DeNnEr
    @DeNnEr
    >изучение вопроса показало, что практически все популярные бесплатные скрипты написаны на PHP.
    >Значит нужно изучать PHP!
    Это как делать вывод о том, как должно работать государство, посмотрев на Россию.

    Если коротко, то сейчас нужно разрабатывать сайты либо на Ruby, либо на Python. Для новеньких проще именно Ruby. Для очень сложных сайтов можно и Java. Больше здесь о выборе инструментария не напишу, т.к. слишком много оно требует времени и текста — можешь написать в личку и задать вопросы.

    Что же о MVC, так это не что-то конкретное, а просто паттерн, идея, не иначе.

    Твой вопрос можно свести к тому, нужно ли изучать веб-фреймворк или достаточно будет знания PHP.
    PHP, Ruby, Python — только языки программирования, не более того. У PHP, конечно, есть возможность разработки «вот так», но это всегда было и будет дурным тоном. Сначала нужно изучить язык, а затем инструментарий для разработки приложения. Это как изучить из чего состоит бетон и начать строить дом: огромное время процесса будет занимать построение и создание инструментов, которые уже есть. В случае с веб-девом, ты будешь создавать свой аналог веб-фреймворка и паттерна MVC.

    Ну а теперь конкретно, по вопросам:
    1) Я могу дать ссылки, но очень хочу чтобы ты задумался над тем, так ли тебе нужно брать «ColdFusion сегодняшних дней».
    2) Быдлокод.
    3) Если ты привык оформлять большие проекты в виде нескольких файлов кода, любишь гордиться, когда приходится говорить «у меня вот есть функция в 2342ой строчке кода», то ты писал быдлокод и нужно переучиваться. Судя по всему, это было не совсем так, ведь разделение на под-файлы это есть модульность при разработке, это удобно, т.к. каждый файл включает в себя одну функциональность всей структуры проекта.
    В случае же с php, там есть сама необходимость в разделении файлов. Больше можешь узнать из истории создания PHP.
    4) NetBeans используют знакомые, любят.
    Структуру проекта строит веб-фреймворк, делает он это в виде создания поддиректорий, вроде: модели, контроллеры, шаблоны. В результате, создание проекта очень легко и просто, это можно делать даже в блокноте. Я работаю в Emacs и мне хватает дерева проекта с редактором.
    «Рисовать» схему проекта нет смысла, т.к. кроме как для тебя, программиста, она не будет ничего значить, да и иметь больше смысла, чем даёт команда unix tree, оно не даст.
    5.1) Вёрстка HTML она всегда вёрстка HTML. Просто для добавления динамики используются специальные языки шаблонизаторов. На самом деле ничего они такого сложного не требуют: ты просто пишешь HTML-код, но где оно нужно, вставляешь элементы логики. Т.е., где нужно вставить число посетителей, ты, вместо числа, пишешь что-нить вроде: {{ mynum }}.
    5.2) MVC, как вообще паттерны проектирования, нужны везде и всегда. Игнорирование их приводит к созданию велосипедов.
    6) Ты хотел писать свой веб-фреймворк(а так и было бы) на PHP, реализацию паттерна MVC, но не хочешь писать магазин с нуля?

    Просто иди сюда: rusrails.ru/ Там ты найдёшь ответы на все вопросы, найдёшь лучший инструмент для начинающего веб-разработчика.
    Ответ написан
    7 комментариев
  • Первые шаги в PHP, имет ли смысл начинать с MVC?

    akalend
    @akalend
    программирую
    >2. OpenCart это годный пример или быдлокод для знакомства с языком?
    Это что-то среднее, но наилучшее что мы нашли из Опенсоурса. Там много ляпсусов, практически 30-60% будет переписано. Но это все же лучше, чем разрабатывать с ноля?

    >3. Почему в PHP такая куча файлов? Потому что отдельный класс = отдельный файл или это стиль кода? Нельзя ли поменьше файлов, я так не привык :)?
    это такой стиль, и не только в РНР: один класс = один файл
    можно все слить в один файл — тогда будет каша

    >4. Есть ли какая то простая IDE для PHP под винду. Раньше для всего мне хватало vim под unix, но с кучей файлов PHP + MVC получается чертовски неудобно. Может ли IDE сгенерить схему взаимосвязей объектов php по типу как рисуются схемы баз данных SQL?
    Zend, Eclipse, PHPEdit, PhpEd
    вышеуказанные IDE этого не делают, но можно настроить phpDoc или рекомендую Doxygen — которые документируемый код превращают в HTML документацию
    Zend имеет встроенный PHPdoc
    Doxygen — генерит графические рисунки и диаграмы взаимодействия классов

    5.2 MVC под PHP оно нужно вообще? При запуске скрипта подгружаются сотни файлов, очень низкая производительность. А вдруг мой проект выстрелит и будут тысячи посетителей, придется отказаться от PHP, может это сделать сразу?
    > у меня проект MVC на 50-60K, пока не падает. Падает только у тех — у кого кривые руки, так что MVC однозначно нужно. Делай как есть, начнет падать — ищи узкие места. Что касается Opencart, то мы полностью переписываем фронтэнд, чтоб не падало… (ну и плюс добавление наших фирменных фишек)

    >6. А может быть вовсе не php или нафиг MVC? Но скрипт магазина с нуля писать не хочу!
    ты проект делаешь, тебе и решать…
    по теме — ответил выше
    Ответ написан
    6 комментариев
  • Первые шаги в PHP, имет ли смысл начинать с MVC?

    @Jazzist
    Мой скудный опыт программирования включает приличные знания SQL, небольшое знание Perl, представление о том что такое C и базовое понимание объектной парадигмы.

    MVC уже любит и ждет вас.

    1. Подскажите простой русский туториал по php версии 5.1. Особенно интересуют ньюансы шаблонов и работы с БД.

    php.su

    2. OpenCart это годный пример или быдлокод для знакомства с языком?

    Годный пример — популярный фрейморк с MVC.

    3. Почему в PHP такая куча файлов? Потому что отдельный класс = отдельный файл или это стиль кода? Нельзя ли поменьше файлов, я так не привык :)?

    1. Так удобнее работать, и это удобство мегапозитивно сказывается на скорости и эффективности работы. «Разделяй и властвуй»
    2. Незадействованные фрагменты могут не подгружаться — таким образом достигается легкость и низкая ресурсоемкость конечного приложения
    3. Конечно можно поменьше! Фреймворки ждут вас :)

    4. Есть ли какая то простая IDE для PHP под винду. Раньше для всего мне хватало vim под unix, но с кучей файлов PHP + MVC получается чертовски неудобно. Может ли IDE сгенерить схему взаимосвязей объектов php по типу как рисуются схемы баз данных SQL?

    1. Работайте с линуксом, там есть масса удобных IDE. Под виндой будут проблемы (холиварщики идут в гугль и по мануалам, в т.ч. PHP User Guide)
    2. Можно, но в большинстве случаев простая структура БД — отличное преимущество

    5.1 Как делать верстку html для php? Есть нуб-верстальщик которых хочет осваивать Dreamweaver, это нам поможет?

    1. Dreamweaver не надо, надо учебник и спецификацию CSS2. Хорошее место для этого вопроса — htmlbook.ru
    2. Верстка HTML для PHP не отличается от верстки HTML для чего-то другого. Она сама по себе.

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

    1. Да, нужно. Но можно и без него.
    2. Подгрузка файлов производительности не снижает (могу показать очевидный прув, но лучше прогуглите).
    3. Возможность не подгружать лишнее — производительность повышает
    4. Это не причина для отказа от PHP. Конечно, есть причины… но не эта. PHP вас, скорее всего, не подведет.

    6. А может быть вовсе не php или нафиг MVC? Но скрипт магазина с нуля писать не хочу!

    Python+Django. MVC — как минимум, хорошая школа, которая пока никому не повредила.

    Все это может упасть в совершенно чистый от каких либо концепций мозг.

    Тогда еще раз смотрите ответ на вопрос №6 :)
    Ответ написан
    Комментировать
  • Первые шаги в PHP, имет ли смысл начинать с MVC?

    SSar
    @SSar
    1. Ничего лучше русской chm-версии справки, скачанной с docs.php.net за 7 лет так и не нашел.
    3. Все зависит от вас как от разработчика. Встречал множество примеров и где куча файлов и где все в одном.
    4. Мне больше всего понравился бесплатный Komodo Edit + htmltoolkit(к нему можно еще и модули догружать из Инета), из платных Adobe Dreamweaver CS.
    Ответ написан
    Комментировать
  • Первые шаги в PHP, имет ли смысл начинать с MVC?

    AntonMinsk
    @AntonMinsk
    >> 1. Подскажите простой русский туториал по php версии 5.1. Особенно интересуют ньюансы шаблонов и работы с БД.

    Версия 5.1 уже наверное старовата, так что лучше сразу 5.3, я думаю, что проблем с совместимостью каких-то уже написанных вещей быть не должно. Книжек по PHP тьма, лично я осваивал PHP по книге «PHP5- библиотека профессионала», давно уже было…

    >> 2. OpenCart это годный пример или быдлокод для знакомства с языком?
    На этот вопрос пусть кто-нить другой ответит =)

    >> 3. Почему в PHP такая куча файлов? Потому что отдельный класс = отдельный файл или это стиль кода? Нельзя ли поменьше файлов, я так не привык :)?

    Можно! но лично из собственного опыта знаю, что поддержка такой структуры значительно проще. Есть момент с тормозами скриптов при include, но это решается путем autoload, eaccelerator и т.д и т.п. варианты ускорения есть

    >> 4. Есть ли какая то простая IDE для PHP под винду. Раньше для всего мне хватало vim под unix, но с кучей файлов PHP + MVC получается чертовски неудобно. Может ли IDE сгенерить схему взаимосвязей объектов php по типу как рисуются схемы баз данных SQL?

    Тут уже дело вкуса, кто-то Eclipse использует, кто-то Zend (лично я до сих пор сижу на 5.1 ZendStudio, знаю что старье, ну ни к чему другому привыкнуть не смог), PHPExpertEditor по-мойму еще есть, в общем найти можно.

    >> 5. Как делать верстку html для php? Есть нуб-верстальщик которых хочет осваивать Dreamweaver, это нам поможет?

    Просто верстать, в чем без разницы.
    Посмотрите шаблонизаторы, например Smarty, я уже долгое время использую XSLT у меня framework под него заточен. Если же придерживаться MVC — шаблонизатор Вам обязательно будет нужен

    >> 5. MVC под PHP оно нужно вообще? При запуске скрипта подгружаются сотни файлов, очень низкая производительность. А вдруг мой проект выстрелит и будут тысячи посетителей, придется отказаться от PHP, может это сделать сразу?
    Без MVC я уже себе оч. плохо представляю свои проекты, по-поводу производительности уже писал выше. Если проект выстрелит, будет хорошо =) думаю в таком случае решения найдутся. Очень приятные проблемы — затачивать архитектуру под высокую нагрузку, особенно когда она уже есть. Ну и без хорошей архитектуры поддержка большого проекта будет в разы сложнее, так что я бы Вам посоветовал придерживаться MVC

    >> 6. А может быть вовсе не php или нафиг MVC? Но скрипт магазина с нуля писать не хочу!
    Ну если не хотите, тогда PHP
    Ответ написан
    Комментировать
  • Первые шаги в PHP, имет ли смысл начинать с MVC?

    Отвечу лишь на некоторые вопросын:
    2) OpenCart — нормальный код для знакомства с языком:) это как книгу прочитать: независимо от того, хорошая или плохая книга после ее прочтения получаешь профит в виде понимания как надо или не надо писать.
    3) Да, это стиль кода, помогающий в случае ошибки моментально ее локализовать. Считается хорошей практикой.
    5) Верстку для пхп нужно делать также, как и обычной страницы, только «вкрапливать» пхп-код. Если использовать какой-либо MVC фреймворк, то верстать становится проще, как раз по тому, что все разделено — подсовываешь вьюверу данные и все.
    По своему давнишнему опыту (лет 7 назад, когда только брался за веб) не советую использовать Dreamweaver, поскольку он использует (или использовал, а счас все нормально?) грязную разметку с лишними элементами, с лишними позиционированиями в абсолют.
    5-2) возможно, низкая производительность — из-за качества скриптов, попробуйте оптимизировать.
    Ответ написан
    Комментировать