ручная работа(без Composer)

Обсуждение документации второй версии фреймворка. Переводы Cookbook и авторские рецепты.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: ручная работа(без Composer)

Сообщение samdark »

Без неё не будет работать:

1. Хелпер Markdown.
2. Консольные команды (консолька на лету читает описание команд из phpdoc).

Библиотека занимает 224кб, пишется одним из основных разработчиков фреймворка и отлично оттестирована.
R3D3
Сообщения: 352
Зарегистрирован: 2010.04.11, 14:52

Re: ручная работа(без Composer)

Сообщение R3D3 »

3ton писал(а): У нас используется для каждого инстанса виртуальная машина в KVM инсталированная в минимальной комплектации, далее ставятся все необходимые пакеты для работы сервера, после вливается приложение. А теперь получается необходимо поставить на каждую git, composer, bower, cebe, nmp и куча всего что нам в принципе не нужно.
При таком подходе ставить composer, bower, npm, git на продакшен машины не нужно. Один раз деплоите приложение на локальной машине либо на деплой-сервере, со всеми включенными флагами оптимизации и отброшенными dev-пакетами (см. опцию --no-dev https://getcomposer.org/doc/03-cli.md#install)

Получается готовый "пакет" приложения со всеми выкачанными установленными зависимостями, расширениями и файлами. Этот готовый пакет заливаете с помощью rsync/ssh/ftp на продакшен сервер и готово. Что касается лишних файлов в папке vendors, то их наличие не создает никакой нагрузки на виртуальную машину и удалять их незачем.
Yii Jabber Conference: [email protected]
de1phi
Сообщения: 145
Зарегистрирован: 2013.12.23, 20:02

Re: ручная работа(без Composer)

Сообщение de1phi »

понимаю 3ton'a, на деплой сервере интернета даже нет, расширения только свои, поэтому composer просто фактически не нужен. Я свои расширения прописываю в фвйле vendor/yiisoft/extensions.php
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

de1phi писал(а):понимаю 3ton'a, на деплой сервере интернета даже нет, расширения только свои, поэтому composer просто фактически не нужен. Я свои расширения прописываю в фвйле vendor/yiisoft/extensions.php
в vendor должно быть то, что вы всегда можете удалить
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

ручное подключение расширений: viewtopic.php?f=19&t=20570&p=121282#p121282
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

zelenin писал(а): в vendor должно быть то, что вы всегда можете удалить
Что Вы имеете ввиду???

Ведь там все модули которыми я буду пользоваться в жизненном цикле проекта, а следовательно удалить нельзя(те же самые сурсы Yii2)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

3ton писал(а):
zelenin писал(а): в vendor должно быть то, что вы всегда можете удалить
Что Вы имеете ввиду???

Ведь там все модули которыми я буду пользоваться в жизненном цикле проекта, а следовательно удалить нельзя(те же самые сурсы Yii2)
я имею в виду, что это не ваш код, а сторонние проекты. Можете удалить папку, начисто установив все с помощью композера.
Естественно, я не имел в виду, что это можно просто удалить и все.
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

zelenin писал(а): я имею в виду, что это не ваш код, а сторонние проекты. Можете удалить папку, начисто установив все с помощью композера.
Естественно, я не имел в виду, что это можно просто удалить и все.
Суть этого топика как раз в том чтоб композером не пользоваться, а следовательно и ставить и удалять в ручную...

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

Кстати спасибо за Ваше решение которым собираемся воспользоваться
viewtopic.php?f=19&t=20570&p=121282#p121282

Просто ожидалось что это штатная возможность как и в первой версии использовать расширения таким образом и будет оговорена в документации. Пока будем использовать ее на свой страх и риск отслеживая поведение продукта.
Последний раз редактировалось 3ton 2014.11.18, 18:04, всего редактировалось 1 раз.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

3ton писал(а):
zelenin писал(а): я имею в виду, что это не ваш код, а сторонние проекты. Можете удалить папку, начисто установив все с помощью композера.
Естественно, я не имел в виду, что это можно просто удалить и все.
Суть этого топика как раз в том чтоб композером не пользоваться, а следовательно и ставить и удалять в ручную...

Если пишется гостевуха или лендинг, или домашняя страничка - спорить с Вами не стану, но если пишется серьезный проект с биллингом и приватными сервисами - использование сторонних компонент добавляет не малые риски, а следовательно должна быть проведена ревизия(аудирование) используемого кода сторонних расширений на момент возможных дыр и должна быть исключена любая возможность подтягивания версий отличных от аудируемой(либо даже она не должна подтягиваться если были найдены неприятности и устранены в своей версии). И композер во всем этом плюсов не добавляет, он лишь сгущает краски по отношению с первой версией фреймворка.
какая разница, если ставить вы будете ТЕ ЖЕ пакеты, хоть в ручную хоть через композер.
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

zelenin писал(а): какая разница, если ставить вы будете ТЕ ЖЕ пакеты, хоть в ручную хоть через композер.
разница тут
3ton писал(а): либо даже она не должна подтягиваться если были найдены неприятности и устранены в своей версии
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

3ton писал(а): либо даже она не должна подтягиваться если были найдены неприятности и устранены в своей версии
я могу ошибаться, а искать не хочу, но по-моему именно вам я указывал, что вы не понимаете как композер работает и из-за этого у вас какие-то предубеждения.
Еще раз: вы на деве установили через композер (или вручную) какие-то пакеты, проверили их и вылили на продакшн (хоть с композером хоть без). Зачем в таком случае ставить вручную, если можно автоматом?
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

zelenin писал(а): я могу ошибаться, а искать не хочу, но по-моему именно вам я указывал, что вы не понимаете как композер работает и из-за этого у вас какие-то предубеждения.
Уважаемый, как работать с композером я разобрался, ставить и подтягивать зависимости могу, это не сложнее чем использовать XSLT в качестве шаблонизатора, но суть вопроса не в этом.

Давайте просто решим что я плохо понимаю, либо параноик, либо еще что-то... )))))
Тем более что я Вас поблагодарил за найденное в другой теме решение.

Только очень Вас прошу не спорить больше на тему необходимости заданного вопроса.

Пожалуйста ;)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

3ton писал(а):
zelenin писал(а): я могу ошибаться, а искать не хочу, но по-моему именно вам я указывал, что вы не понимаете как композер работает и из-за этого у вас какие-то предубеждения.
Уважаемый, как работать с композером я разобрался, ставить и подтягивать зависимости могу, это не сложнее чем использовать XSLT в качестве шаблонизатора, но суть вопроса не в этом.

Давайте просто решим что я плохо понимаю, либо параноик, либо еще что-то... )))))
Тем более что я Вас поблагодарил за найденное в другой теме решение.

Только очень Вас прошу не спорить больше на тему необходимости заданного вопроса.

Пожалуйста ;)
да я не спорю. Я говорю, что причина , по которой вы хотите обойтись без композера таковой не является, т.к. в вашу экосистему попадают абсолютно те же пакеты, которые вы скачаете и установите в ручную. И нет вариантов, когда может попасть что-то левое без вашего ведома.
Паранойя - это неплохо в данном случае, но вы приведите пример, когда что-то может случиться? Такого примера вы не приведете.
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

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

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

За 7 лет крупных корпоративных проектов с разрабами разных категорий много можно представить.
В одном случае нам даже пришлось взять за шаблонизатор XSLT и только так мы ушли от лени(проблемы отделить логику от отображения) разработчиков исключив возможности написания РНР кода во вьюшках, что не раз становилось проблемой для проекта так как при редактировании отображения меняли логику(изначально все шло в перемешку, проект достался по наследству, самописный с 2002 года) и не важно критично или нет, важен сам факт такой проблемы.
Но такой шаг решил нашу проблему.


Это еще раз напоминает нам о том что проблемы могут быть самыми нелепыми, а их решения совсем неочевидными
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

3ton писал(а): Пример: используем расширение гейта процессинга оплаты - обновления внесенные разработчиком могут быт не безопасны, но код все равно обновится
он сам по себе обновится? ВЫ (разработчик) его обновите. Нет разницы, вручную вы его обновите или с помощью композера. Это сделаете вы.
В первом случае вы зайдете на гитхаб, скачаете архив с обновлением, положите в какую-то папочку и начнете проверять его код.
Во втором случае, вы установите обновление через композер и опять же начнете его проверять.
И вы же потом будете проводить ревизию нового кода в обоих случаях.
Где тут место дырке, если все зависит только от вас?
3ton писал(а): или к примеру мы нашли оплошность и закрыли ее, но потом нам нужно поднять проект в новом месте и композер подтянет старый, не отредактированный нами экстеншен....
прежде чем отредактировать чужое расширение, его нужно вывести из-под обновления композером и положить в основной репозиторий проекта. Неужели это не очевидно?
3ton писал(а):За 7 лет крупных корпоративных проектов с разрабами разных категорий много можно представить
вы в качестве кого были в этих проектах? проджект-менеджер? явно не разраб, потому что выше написанное мог написать только джуниор-одногодка. Это даже к программированию не относится. Это тупо общее непонимание правильного построения проекта.
omnilight
Сообщения: 4
Зарегистрирован: 2014.09.19, 21:59
Контактная информация:

Re: ручная работа(без Composer)

Сообщение omnilight »

На самом деле про аудит сторонних библиотек 3ton говорит верно: без проверки можно натянуть себе в проект кучу дыр и ошибок, из-за которых потом может быть очень больно. Но вот только композер здесь совершенно не причем, 3ton напрасно отказывается от его использования, он просто не умеет его готовить :)

На самом деле, композер, хоть и неявно, состоит из двух частей:
1. Сам composer.phar, исполняемый скрипт, который по заданному вами описанию в composer.json скачивает библиотеки и генерирует автолоадер. В процессе работы вашего приложения composer.phar не нужен, поэтому на продакшене его можно вообще не ставить
2. Созданный композером автозагрузчик, представляющий собой один класс и несколько файлов с путями автозагрузки в виде массивов. Его вы используете в вашем приложении, чтобы загружать сторонние (а также и ваши собственные классы). Данный автозагрузчик свой для каждого проекта.

Обратите внимание, что композер сам по себе ничего не скачивает и не обновляет (это не автообновления в виндоус). Он это делает только по вашей команде. Более того, в конфигурационном файле composer.json для вашего проекта вы можете указать точные версии библиотек (с точностью до git-коммита или до определенной версии), и композер будет держать эти версии, даже если появятся новые.

Информацию о пакетах расширений композер по-умолчанию берет из packagist.org. Для приватного проекта, который аудирует расширения, это может быть неприемлемо. И это легко исправить: композер позволяет через настройки composer.json отключить использование пакагиста. А для ваших приватных библиотек вы можете поднять свой собственный репозиторий (с помощью satis, к примеру) внутри вашей сети и ссылаться на него. Можете и не поднимать, а просто прописывать прямо в composer.json адреса пакетов (в виде ссылок на git-сервер, к примеру). Смотрите документацию по композеру, там все это описано.

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

Но можно ли в yii2 жить без композера? Если мазохизм вам свойственен, то можно :) Например, в yii2 есть на самом деле свой собственный автозагрузчик классов
https://github.com/yiisoft/yii2/blob/ma ... i.php#L272
он уважает классмапы и алиасы, поэтому мы можете прописать все пути через них, отказавшись от композера и настроив все в ручную. Но зачем?? Ведь композер все делает сам, а взамен просит только корректно составить composer.json
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

omnilight писал(а):На самом деле про аудит сторонних библиотек 3ton говорит верно: без проверки можно натянуть себе в проект кучу дыр и ошибок, из-за которых потом может быть очень больно. Но вот только композер здесь совершенно не причем, 3ton напрасно отказывается от его использования, он просто не умеет его готовить :)

На самом деле, композер, хоть и неявно, состоит из двух частей:
1. Сам composer.phar, исполняемый скрипт, который по заданному вами описанию в composer.json скачивает библиотеки и генерирует автолоадер. В процессе работы вашего приложения composer.phar не нужен, поэтому на продакшене его можно вообще не ставить
2. Созданный композером автозагрузчик, представляющий собой один класс и несколько файлов с путями автозагрузки в виде массивов. Его вы используете в вашем приложении, чтобы загружать сторонние (а также и ваши собственные классы). Данный автозагрузчик свой для каждого проекта.

Обратите внимание, что композер сам по себе ничего не скачивает и не обновляет (это не автообновления в виндоус). Он это делает только по вашей команде. Более того, в конфигурационном файле composer.json для вашего проекта вы можете указать точные версии библиотек (с точностью до git-коммита или до определенной версии), и композер будет держать эти версии, даже если появятся новые.

Информацию о пакетах расширений композер по-умолчанию берет из packagist.org. Для приватного проекта, который аудирует расширения, это может быть неприемлемо. И это легко исправить: композер позволяет через настройки composer.json отключить использование пакагиста. А для ваших приватных библиотек вы можете поднять свой собственный репозиторий (с помощью satis, к примеру) внутри вашей сети и ссылаться на него. Можете и не поднимать, а просто прописывать прямо в composer.json адреса пакетов (в виде ссылок на git-сервер, к примеру). Смотрите документацию по композеру, там все это описано.

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

Но можно ли в yii2 жить без композера? Если мазохизм вам свойственен, то можно :) Например, в yii2 есть на самом деле свой собственный автозагрузчик классов
https://github.com/yiisoft/yii2/blob/ma ... i.php#L272
он уважает классмапы и алиасы, поэтому мы можете прописать все пути через них, отказавшись от композера и настроив все в ручную. Но зачем?? Ведь композер все делает сам, а взамен просит только корректно составить composer.json
ты повторяешь все что я сказал один в один. Композер запускает разработчик и те же библиотеки нужно также проверять, если боишься дыр. 3ton не понимает этого, т.к. является не разработчиком, а человеком, принимающим решения. И ему лучше простой и топорный способ, чем аналогичный, но полуавтоматический, т.к. в полуавтоматическом, под капотом какая-то магия, а магия непрактикующему программисту непонятна.
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: ручная работа(без Composer)

Сообщение 3ton »

zelenin писал(а):3ton не понимает этого, т.к. является не разработчиком, а человеком, принимающим решения. И ему лучше простой и топорный способ, чем аналогичный, но полуавтоматический, т.к. в полуавтоматическом, под капотом какая-то магия, а магия непрактикующему программисту непонятна.
Ей богу как дети малые )))))))))))))))))))))))

Вопрос был задан конкретно можно или нет.

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

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

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

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

Александр поделился своим способом, за что ему огромное спасибо, но мне казалось должна быть и задокументированная возможность использовать для этих целей только встроенный автолодер Yii2. Именно с этой целью и был создан данный топик.
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

Re: ручная работа(без Composer)

Сообщение chungachguk »

3ton писал(а): Это наверно как если я спрошу какое из красных вин к сыру подойдет лучше, меня начнут убеждать что с сыром нужно употреблять белые вина и чел ничего в винах не понимает.
Нафиг сыр, пей так.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

3ton писал(а):неужели нельзя простым ответом высказать возможно или нет?
что за идиотский вопрос? то, что делается автоматическим способом сторонним инструментом всегда можно реализовать и в ручную. Уже несколько раз написали в теме об этом. И даже решение дали.
3ton писал(а):Это наверно как если я спрошу какое из красных вин к сыру подойдет лучше, меня начнут убеждать что с сыром нужно употреблять белые вина и чел ничего в винах не понимает.
если ты будешь на гастрономическом форуме, то именно так и сделают. а то гляди и забанят.
3ton писал(а):По правде говоря я считаю всегда нужным выслушать совет, даже если изначально знаю что не воспользуюсь им, но достает когда люди начинают фанатично на этом настаивать, совсем не учитывая пожелания человека. У меня так было когда покупал свой первый мерседес(кстати будет сказано - на заработанные чисто "практикующим" программированием), все знакомые отговаривали и говорили что лучше японец, мерин дороже в обслуживании, дороже запчасти и т.д. и т.п.... Но мне пока все равно - мне нравится это авто, я его купил и следующее мое авто будет если не тесла, то тоже мерин.
собственно тебя ни в чем не убеждают. тебе говорят, что твое решение на уровне веры, а ничего практически не дает. Но ты пытаешься доказать, что есть причины, по которым ты все-таки выбираешь свое решение. На что тебе аргументировано опять отвечают, что это вера, а не аргументы.
3ton писал(а):меня все же интересует режим работы без него для проектов в которых совсем иные задачи и требования к приватности.
ты опять начал выдержки из своей библии талдычить. Композер никак не трогает приватность проекта.
3ton писал(а):Александр поделился своим способом, за что ему огромное спасибо, но мне казалось должна быть и задокументированная возможность использовать для этих целей только встроенный автолодер Yii2. Именно с этой целью и был создан данный топик.
именно встроенный автолоадер и используется. мой способ вполне нативный и никаких хаков не использует.
Ответить