Хоть формат блога - заработок в интернете, но кодингом я заработал не меньше, чем на всем остальном. У меня даже свой спамер написан на php (enginexsub), причем мне тогда лет 18-19 было. Так что пох, буду писать про код и дальше.
На чем лучше писать сайт? CodeInteger, Yii или другом фреймворке (далее Ф)? Мой ответ до этого был, однозначно на чистом пхп без фреймворка, но сейчас я понял- бесмысленно боротся с пропагандой вещающей, что "хороший продукт" должен быть написан не с нуля. Поэтому вот анонсирую свой фреймворк, название еще не придумал. Основные отличия по традиции: простота, много готовых модулей (галереи, блог, магазин, новости, доска обьявлений, переписка, поиск, социальная сеть, билинг, модули оплаты, crm, кэширование, интеграция с социалками - все это сам написал), высокая скорость работы. Я ориентируюсь на бизнес, с их KPI, GTD, немного на маректологов с их SEO, SMM, но при этом хотелки программистов с их ООП, MVC будут рассматриваться в последнюю очередь.
типичные проблемы популярных фреймворков (по материалам http://we-love-php.blogspot.ru/2012/10/php-framework-comparison.html статья хоть и старая, но сейчас это уже статус кво):
Существует так же большое заблуждение, что большой плюс Ф уже сразу идет с валидацией форм, проверкой входящих данных, автоматически подключает jquery. jQuery уже давно подключают верстальщики прямо в верстку одной строчкой (о боже, верстальщики делают то, для чего программистам нужен фреймворк! я сваливаю). Валидация форм так же подключается одной строкой, а проверка на заполненность форм по стандарту HTML 5 уже давно выполняется самим браузером (то есть вообще ничего кодить не надо). Остается проверка входящих данных и прочая безопастность и защита.
Почему же Ф так популярны? Основная причина, в том, что люди ищут "золотую пулю", одним выстрелом убить всех зайцев и ускорить разработку, мой личный опыт говорит ровно об обратном. Кодер тратит в 5-10 раз больше времени на исправление глюков, 90% из которого вслепую блуждая по файлам Ф и документации пытаясь понять "почему он работает не так".
Вывод, фреймворки это отличная штука, чтоб покапатся пару вечеров, посмотреть, чем заняты программисты когда у них нет работы, для боевых проектов лучше использовать собсвтенные наработки.
Сейчас у меня уже сформировался дизайн собственного фреймворка, началось все с того, что два файла кочевали у меня из проекта в проект это
db.php - подключение к базе, позже туда добавились две основный функции работы с базой "q" (выполнить запрос) и "r" (получить данные)
func.php - рабочие функции, а именно
-dod($unixtime) время между датами со склонениями числительных
-pager($sql) функция генерации "пагинатора" который анализируя sql запрос на его основе выдает постраничную навигацию
-me($txt) функция делает данные "безопастными", ну там кавычки и прочее.
-sendmail отправка html сообщения на почту
-getsitebyid($id) получить пользователя по id
-balance_change($user,$summ,$descr,) изменить баланс пользователя с сохранением лога транзакции (незаменима для проектов пропускающих бабки)
-cache($src,$w,$h) выдает уменьшенную картинку заданного размера, правильно закешированную
-getk,setv функции для работы с key-value хранилищем, проще говоря кэширование
-declination склонение числительных
Остальные функции дописываются и удаляются, но эти используются почти всегда.
Структура базы данных так же практически всегда одинаковая, есть одна основная таблица users с полями id,email,fio,pass,datareg,balance
Если работаем с баблом то еще обязательно transactions
Так как большинство моих проектов коммерческие, цикл их следующий:
1. прототип + одновременно работа дизайнера
2. завершение прототипа + верстка дизайна
3. натягивание верстки
4. плотное тестирование
5. запуск
6. отладка и оптимизация
Далее если проект по фрилансу ищется начинающий php'ник для поддержки и мелких улучшений. Спасибо, что мой фреймворк очень прост и не нужно читать 2000 страниц документации, чтоб что то исправить.
Стоимость фреймворка $10 000, шучу. Не спешно ищется сильный менеджер, для доведения продукта до коробочной версии, пиара и зарабатывания миллионов.
PS: Я в
На чем лучше писать сайт? CodeInteger, Yii или другом фреймворке (далее Ф)? Мой ответ до этого был, однозначно на чистом пхп без фреймворка, но сейчас я понял- бесмысленно боротся с пропагандой вещающей, что "хороший продукт" должен быть написан не с нуля. Поэтому вот анонсирую свой фреймворк, название еще не придумал. Основные отличия по традиции: простота, много готовых модулей (галереи, блог, магазин, новости, доска обьявлений, переписка, поиск, социальная сеть, билинг, модули оплаты, crm, кэширование, интеграция с социалками - все это сам написал), высокая скорость работы. Я ориентируюсь на бизнес, с их KPI, GTD, немного на маректологов с их SEO, SMM, но при этом хотелки программистов с их ООП, MVC будут рассматриваться в последнюю очередь.
типичные проблемы популярных фреймворков (по материалам http://we-love-php.blogspot.ru/2012/10/php-framework-comparison.html статья хоть и старая, но сейчас это уже статус кво):
Typical problems in frameworks
- необходимо писать много кода который просто ничего не делает, но "нужен" (example)
- Слишком много абстракций (example)
- Невероятно огромное количество строк кода (e.g. ZF1 260,000, ZF2 146,000 loc, Symfony2 173,000 loc, Doctrine2 70,000 loc), очень сложно оптимизировать, сложно поддерживать
- Осень много различных функций (e.g. ZF1 13,000, ZF2 7,800, Symfony2 9,500, Doctrine2 4,400), сложно для обучения (у php я использую не более 500).
- Огромное количество переопределений переменных (когда одни и те же данные просто перемещаются в памяти) (e.g. ZF2 4,080, Symfony2 3,800 (analysis from nikic))
- Тяжелая документация (e.g. ZF2 1000 pages and 500 examples)
- Очень много include (example)
- плохое форматирование кода (e.g. ZF2 echo StaticFilter::execute($str, "HtmlEntities", array("quotestyle"=>ENT_QUOTES)); echo (new Zend\Filter\HtmlEntities(array("quotestyle" => ENT_QUOTES)))->filter($str);)
- навороченный код (например, чтоб сделать запрос к базе нужно писать несколько строк кода, хотя это делается одной функцией)
- несовместимость различных версий одного Ф, если вы написали сайт знакомств на yii 1+, то уже сейчас вышла версия 2
- постоянное желание разработчиков "написать все с нуля" или выпустить "другой более легкий фреймворк"
Существует так же большое заблуждение, что большой плюс Ф уже сразу идет с валидацией форм, проверкой входящих данных, автоматически подключает jquery. jQuery уже давно подключают верстальщики прямо в верстку одной строчкой (о боже, верстальщики делают то, для чего программистам нужен фреймворк! я сваливаю). Валидация форм так же подключается одной строкой, а проверка на заполненность форм по стандарту HTML 5 уже давно выполняется самим браузером (то есть вообще ничего кодить не надо). Остается проверка входящих данных и прочая безопастность и защита.
Почему же Ф так популярны? Основная причина, в том, что люди ищут "золотую пулю", одним выстрелом убить всех зайцев и ускорить разработку, мой личный опыт говорит ровно об обратном. Кодер тратит в 5-10 раз больше времени на исправление глюков, 90% из которого вслепую блуждая по файлам Ф и документации пытаясь понять "почему он работает не так".
Вывод, фреймворки это отличная штука, чтоб покапатся пару вечеров, посмотреть, чем заняты программисты когда у них нет работы, для боевых проектов лучше использовать собсвтенные наработки.
Сейчас у меня уже сформировался дизайн собственного фреймворка, началось все с того, что два файла кочевали у меня из проекта в проект это
db.php - подключение к базе, позже туда добавились две основный функции работы с базой "q" (выполнить запрос) и "r" (получить данные)
func.php - рабочие функции, а именно
-dod($unixtime) время между датами со склонениями числительных
-pager($sql) функция генерации "пагинатора" который анализируя sql запрос на его основе выдает постраничную навигацию
-me($txt) функция делает данные "безопастными", ну там кавычки и прочее.
-sendmail отправка html сообщения на почту
-getsitebyid($id) получить пользователя по id
-balance_change($user,$summ,$descr,) изменить баланс пользователя с сохранением лога транзакции (незаменима для проектов пропускающих бабки)
-cache($src,$w,$h) выдает уменьшенную картинку заданного размера, правильно закешированную
-getk,setv функции для работы с key-value хранилищем, проще говоря кэширование
-declination склонение числительных
Остальные функции дописываются и удаляются, но эти используются почти всегда.
Структура базы данных так же практически всегда одинаковая, есть одна основная таблица users с полями id,email,fio,pass,datareg,balance
Если работаем с баблом то еще обязательно transactions
Так как большинство моих проектов коммерческие, цикл их следующий:
1. прототип + одновременно работа дизайнера
2. завершение прототипа + верстка дизайна
3. натягивание верстки
4. плотное тестирование
5. запуск
6. отладка и оптимизация
Далее если проект по фрилансу ищется начинающий php'ник для поддержки и мелких улучшений. Спасибо, что мой фреймворк очень прост и не нужно читать 2000 страниц документации, чтоб что то исправить.
Стоимость фреймворка $10 000, шучу. Не спешно ищется сильный менеджер, для доведения продукта до коробочной версии, пиара и зарабатывания миллионов.
PS: Я в
я аноним
ОтветитьУдалитьЯ когда-то тоже так думал) Но потом плотно засел за CI, поковырялся, сделал несколько проектов на нем, и.. Вернулся к самопису, да) Но уже на совсем другом уровне, фреймворк как раз сделал, для чего и предназначен - дал хорошие привычки по организации кода, убиранию всяких костылей в удобные абстракции и т.д. Минусы конечно есть - нужно время на изучение и привыкание к стилю, зато последующая разработка упрощается и универсализируются (хотя тоже самое касается и собственного хорошосделанного фреймворка, но перед тем как его делать - нужно как минимум знать, как решают подобные задачи другие. Я для себя открыл много нового например).
ОтветитьУдалитьНу и плюс коллективная разработка или дописывание проектов - одно дело разбираться с совершенно новым самописом, и другое - стандартизированный фреймворк, где достаточно пройтись глазами чтобы понять, что зависит от чего. Или для бизнеса это ОК привязываться к одному разработчику?)
Ты слишком программист)) Ну вот кто называет функцию "me"?? Ну sanitize_string же. Pager - pagination. Отвратительное ЧПУ в продакшене, хотя роутинг делается как два пальца. И да, программисты не ищут золотую пулю, очевидно, что фреймворк за них работать не будет и потребуется энное время на ознакомление, но он решает множество второстепенных задач и позволяет повторно использовать кучу кода без запутывания в нем.
Сам в итоге для мелких проектов сбацал микрофреймворк с CI-похожим синтаксисом/поведением, роутингом, с PDO и шаблонизатором с вложениями, ну и пачкой функций (типа того же склонения числительный и возврата прошедшего времени). Для средних проектов он конечно уже не годится, но и для мелочи тягать CI не дело (и да, ты очень хитро сравнил расход памяти, CI тратит так же мелочь, это именно что легковесный фреймворк, в отличии от энтерпрайзных Yii/Zend/Symfony).
превед медвед))
УдалитьВелосипед это всегда плохо. Ты фрилансом занимался? Знаешь как хреново править самописный движок? Вон открой сырцы топсапы. Ужас. А ведь Спрут довольно хороший кодер. Лучше пиши на кодеигнитере/yii/laravel(очень интересен мне в последнее время, прогугли) и не кипяти мозги тем, кто будет после тебя.
УдалитьПиши код так, как будто его будет читать маньяк-садист, который знает, где ты живёшь.
Короче, меня заепали эти самописы. Увижу что ты ступил на путь говнокодинга - приеду и трахну тебя бутылкой из под шампанского а потом проведу ректальный криптоанализ в ходе которого полностью промою тебе мозги и ты мигом выкинешь идею велосипедостроения из головы. Усек?
Дык а я о чем в комменте писал? И да, "всегда плохо" - слишком сильное обобщение, в каких-то условиях велосипед очень даже хорошо. Но в редких.
УдалитьТопсапа писалась 5 лет назад, тогда Спрут был весьма упоротым говнокодером (да и сейчас недалеко ушел), однако тогда скорость вывода в продакшен была куда критичней)
Yii - слишком энтепрайзно, многи лишних телодвижений. Laravel - у меня так и не завелся, тоже на него активно посматриваю.
Гарри, здесь не чан, вкладки не путай)
пользуюсь codeigniter, всем доволен, особенно его работой с бд.
ОтветитьУдалитьНасчет "своего фреймворка" - думаю, размышляю. В целом, это довольно хорошее решение,
о какие люди)
УдалитьПост про самописный говнофреймворк хотя в списке проблем числится: постоянное желание разработчиков "написать все с нуля" или выпустить "другой более легкий фреймворк"
ОтветитьУдалитьПротиворечит сам себе пост.
Ну а так вообще все самые умные всё своё конечно же. А то что твой сайт 0,5 мб на загрузку при 20-30-100 тысячах посетителей загнется, а фреймворк из коробки сможет потянуть без труда, на то он и фреймворк. То что он жрет на загрузку вообще не показатель.
Кто в твоем самописном будет разбираться после тебя вообще неизвестно.
Названия файлов db.php и func.php не то чтобы остались где-то лет 5 назад, но от них немного попахивает, хотя это скорее от ощущения того что там внутри.
Как бы не хотелось в почти 2015 году уже пора прийти к упрощениям в виде использования ORM/ActiveRecord. Две функции r и что-то там еще это кодинг на уровне "я такой крутой работаю напрямую с базой" не нужны мне ваши ормы и модели.
Как уже писали фреймворк учит структурировать проект, а не делать всё в двух файлах в которых потом не разберешься.
Я не говорю что самопис плохо, но самопис в виде db.php func.php нужно убивать в зачатке.
Жаль я не кодер и не могу оценить масштабы проделанной работы)
ОтветитьУдалитьТипичный говнокодер, названия файлов и имена функций говорят все за тебя.
ОтветитьУдалитьДля небольшого сайта можно взять plain php, чтобы оптимизировать скорость работы, но для более-менее крупного никогда, особенно если ты пишешь подобные функции (уверен, внутри они такие же, как снаружи).
P.S. сам говнокодил 5 лет.
Годный пост, фреймворк-то дай погонять ))
ОтветитьУдалитьО великие прогеры, подскажите бывшему говнокодеру осознавшему свои ошибки. с какой фреймворка начать становление на путь истинный?
ОтветитьУдалитьСейчас самый популярный Yii, лучше наверное с него.
УдалитьCodeigniter простой как валенок, тоже рекомендую.
Наступил на мозоль. Как только написал на кодерскую тему - сразу куча каментов и становится понятна основная аудитория бложика )
ОтветитьУдалить