Как стать автором
Обновить

Комментарии 151

Достаточно давно уже программирую на ПХП в NetBeans, кстати на счет бага с рефакторингом думал что это я где-то что-то не так установил, вроде бы где-то в предыдущих версиях с рефакторингом нормально было?
Нравится больше чем Zend и Aptana.
Помню на JAVA еще программировал в NetBeans, тогда еще 3-4 версий… И даже раньше, до того как Sun купил контору… ) Достойная IDE…
ну ИМХО 3-4 версии были существенно недоразвитие Eclipse и IntelliJ IDEA (ой, она ж платная, молчек), поначалу я скептически к NetBeans отнесся, единственное из за чего я на него поглядывал, было то, что разработчики языка и IDE одни и те же, но NetBeans превзошел мои ожидания и вырос =)
Ну да, сыроват еще был. Очень много чего не было что есть сейчас. И на ПХП соответственно нельзя было нормально что-то делать, да и вообще на всех остальных языках программирования кроме JAVA.
А потом они как-то стали очень активно клепать новые версии, я даже пропустил момент когда появилась поддержка ПХП и всего остального. Потом как-то плавно перешел с Aptana и Zend.

Кстати очень хотелось бы чтобы как-то реализовали поддержку нормальную, файлов большого объема, скажем больше 5-м Мб… Интересно такое вообще реально…
эм… имеется ввиду файлы с исполняемым кодом? боюсь если у вас появились такие файлы, то у вас некая трудность с архитектурой — бейте, выделяйте под сущности. Пользуйтесь принципом: разделяй и властвуй.
extjs )) полная библиотека если не ошибаюсь весит больше 5 мб. Если случается какая-то ошибка, очень трудно понять откуда уши растут если библиотека запакована ))
да-да. собранные библиотеки — MooTools, JQuery, etc. Иногда надо лезть в исходники, чтобы понять принципы работы и исправить баги. В такой момент текст просто плывёт(
в общем IDE написана на Java проблем с тем чтобы загрузить 5 метров текста в память нет. Правда в реальности при распаковке в дерево нод это будет метров 400-500, собственно вам и нужно дать ей лишней памяти:
идете в папку с программой и в под папке etc находите netbeans.conf, его вскрываете и в нем находите netbeans_default_options, можно поиграть с ней. Дать больше памяти IDE, например 1024М вместо 384 и посмотреть уйдет ли проблема. Иногда текст съезжает. обсуждается тут: forums.netbeans.org/post-15818.html#15818 Отпишитесь о результатах.
На самом деле при открытии файла больше чем в 1мб, всплывает предупреждение что может случиться OutOfMemory exception
Что и случается кстати иногда. А в том топике что-то не увидел решения этой проблемы
Кстати дело даже не в том что памяти не хватает… Довольно сильно редактор визуальный начинает тормозить… (
А у меня, к сожалению, сглаживание шрифтов в ней (под убунту 10.10, все свежайшее) так и нез заработало. Пробовал как export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd' так и добавлять в netbeans_default_options:
-J-Dawt.useSystemAAFontSettings=lcd
Не проверял, но гугл говорит что проблема решенная:
forum.ubuntu.ru/index.php?topic=77392.msg613419#msg613419
www.florian-hacquebart.eu/?p=214
blogs.sun.com/netbeansphp/entry/anti_aliasing_font_in_the
For Linux, font antialiasing was fixed in JDK 6 (any version). For Mac, it's been there since at least 1.4.
фабрика и протатип
Кто нибудь сравнивал NetBeans с phpStorm?
ну а как же. Тут brotkin.ru/2010/10/04/ide-jetbrains-phpstorm/ неплохой обзор различий.
Я сам перепрыгнул с бобов на шторм и пока не жалею.
phpStorm не одноклассник NetBeans, NetBeans полностью бесплатна.
У меня есть другое мнение ;) phpStorm гораздо качественнее и полнофункциональнее NetBeans, что зачастую экономит денег на много больше, нежели 100$
Я работал на NetBeans, потом попробовал PhpStorm и не смог вернуться обратно.
По поводу платности. Можно пойти двумя дорогами:
1. Пользоваться EAP версиями. Они бесплатны в течение 45 дней, но новые билды выходят чаще. Но придется постоянно переустанавливать.
2. Убедиться, что альтернатив нет и купить полную версию, как сделал я (недавно была скидка 50%).
Есть ещё вариант бесплатного использования в OpenSource.
Ну это только в том случае, когда у вас есть opensource проект, который вы будете разрабатывать в этой IDE и ни шагу в сторону.

В любом случае 99$ за персональную лицензию это не так уж и много, причем эта лицензия позволяет ставить phpStorm на несколько компьютеров, при условии, что пользоваться ей будете только вы. А можно еще убедить работодателя купить коммерческую лицензию (199$ это не такие уж и неподъемные деньги).
надо при установке просто часы переставить вперед, а после установки вернуть их обратно. И никому платить не надо)
спасибо -)
А че сравнивать — надо пробовать! :)

Я долго сидел на бобах, но вот недавно загрузил phpStorm — понравилось. Из повседневного, что раздражает — phpStorm не работает сразу с несколькими проектами в одном инстансе редактора, а NB не умеет показывать непечатаемые символы (да-да, меня это просто бесит. даже в NB 7m это сделано очень коряво)
из любопытсва: зачем? вы первый, кто сказал что нужены непечаталки в IDE
При отображении бинарных символов?
Да ладно?! Это одна из распространеннейших функций, наверное NB из чистого упрямства так долго ее не реализовывал. Мне она нужна в первую очередь чтобы определить где таб, а где пробел.
Дело в том, что и NB, и PhpStorm не всегда правильно расставляют табы, иногда заменяя их пробелами (хотя я всегда настраиваю IDE на tab-only). В общем, у меня есть пунктик касательно форматирования кода, а NB меня тут жестко игнорит ))
понял. спасиб за пояснения. Согласен IDE должна удовлетворять «пунктики» иначе она раздражает разработчика
Подскажите пожалуйста, как сделать, а то не нашел.

Хочу включить непечатаемые символы, как в Eclipse.

непечатаемые символы в eclipse

Если знаете, подскажите пожалуйста.
Сорри, пока написал. Уже и сам нашел. Может быть кому пригодится.

непечатаемые символы в netbeans
Моя любимая IDE. Очень удобная, кстати, и для HTML-верстки: в версии 6.9 появилось наконец автодополнение CSS-правил по связанной таблице стилей — единственное, чего не хватало для полного счастья в предыдущих версиях.
Очень удобно реализована поддержка Zend Framework (см. скринкаст). И надежда на поддержку других фреймворков пока жива.
Мне она не прижилась на маке. Тупит немного, это портит весь кайф от разработки
IDE позволяет работать как с системами контроля версий (SVN GIT CVS)

Официальные плагины есть для svn, mercurial, cvs. И работают они замечательно.
А вот для git есть только не официальный, достаточно ущербный — ни annotate, ни историю файла не посмотреть…

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


По-моему все эти функции уже есть в 6.9.1. По крайней мере я каким-то образом уже пользовался ими )

А вообще два года использую эту ide(в основном для php, немного для python и java) и она мне нравится.
ну вообще-то они работают, но с багами (я даж ссылочку дал)
про git — поставил пруфлинк в статью
Это пруфлинк того что поддержка гит задумана, а не того что она есть. Её фактически нет. Тот плагин так «работает», что лучше бы он вовсе не работал.
скоро будет, инсайдеры мне сообщают что git будет работать качественно
Надеюсь качественней SVN =) А то я замучался очищать нетбинсовый кеш svn-а, потомучто нетбинс изнеоткуда придумывает несуществующие правки в этом кеше ;)
Мой личный выбор пал в сторону PHPStorm, который обладает всеми описанными в статье прелестями и даже больше. Редактор очень быстро развивается, публичные сборки выходят еженедельно.

Относительно HTML, CSS нативно поддерживает Zen Coding
пока не закрыта youtrack.jetbrains.net/issue/WI-2760, мне phpstorm не годится, тяжело что-то писать, когда половина методов не автокомплитится
Перешел на PHPStorm с NetBeans, привлек более мощный анализатор кода на момент перехода. Особенно меня удивлял анализатор JS, который верно определял поля объекта при использовании малоизвестных библиотек для имитации ООП. Почти всегда верно анализируются плагины jQuery.

Очень часто пользуюсь плюшками phpDoc для работы автоподстановки, например:
@var NewsController $this — очень удобно в шаблонах
@return News[] — пользуюсь постоянно в Yii, так как коллекции там обычно возвращаются в виде массива.

Также очень нравится автоподстановка в HTML для атрибутов class и id (берется из CSS)
НЛО прилетело и опубликовало эту надпись здесь
Хорошо, что есть. Я имею ввиду, что phpStrom мне больше понравился в свое время, чем netbeans. Показалось, он даже быстрее и что там удобнее инструменты. Да чего я Вам рассказываю! Вы попробуйте, только главное не «подсесть» :)
Дык, еще раз обращаю внимание читателей, что phpStrom платный (или я что-то упустил), а netbeans абсолютно свободный. Они просто из разных ниш… Моя фирма пока маленькая мы используем только свободно распространяемые решения. Если бы мне нужна была поддержка 24/7 и ответы на запросы в течении часа — я бы смотрел в сторону коммерческих решений.
Чтобы пробовать не нужно платить. Тем более лицензия ставится только на stable версии, а всё самое вкусное в EAP-версиях.

Я так понял, что пост о «замечательных инструментах» для PHP, а не о выборе для маленькой компании и выбор для неt
Не закончил (случайно на кляцнул на что-то)…
Дык вот, если смотреть через призму «замечательных инструментов», то phpstorm вполне адекватная ide и даже больше
я честно готов в начале поста поставить ссылку на пост — обзор phpstorm, более того я даже был бы очень благодарен если бы кто-то написал такой пост и рассказал о том как использовать phpstorm бесплатно, просто я не тот человек, мб я им стану, а может и нет (зависит от того когда я найду время глянуть пристально посмотреть на phpstorm). Спасибо за ваше стремление мне помочь.
Я бы еще добавил в статью поиск в проектах (ctrl+shift+F) c возможностью поиска как по всем проектам, так и по отдельной выбранной папке, с поддержкой регулярок, что позволяет найти все
вызовы из разряда $o = new $className();
Еще бы я добавил, что Smarty и GIT — это плагины (вот в 7.0 m2 смарти начал приводить к куче ошибок при попытке автодополнения). Ну и нативная поддержка Mercurial почему-то не обозначена.
IDE всем хороша, только в 6.9 ветке появились ужасные тормоза. Больше всего раздражают они при автодополнении, нет полета мысли). Пришлось вернуться на 6.8, на которой все летает.
дай-ка угадаю — ноутбук с 2 гб памяти?
да и даже с 4гб. Не должен он так тормозить. В той же зенд студии (и в нетбинс 6.8) всё окей
стандартные советы: обнови java машину, поправь путь в конфиге, перебилдь проект. у меня нетбинс выигрывает в скорости что на новом ноуте(_заметно_ шустрее ZS и phpStrom) что на старом duron-800 (сравнивал только с ZS).

есть ещё одна тонкость, когда работаешь с сетевыми дисками лучше отключать поиск внешних изменений и вызывать обновление конкретных папок через контекстное или всё через верхнее меню.
вы так говорите, как будто это плохо. И вообще, сейчас, увы, тенденция, что лучше пользователю докупить еще 2гб памяти, чем программистам оптимизировать свое чудо. Яркий пример — Photoshop CS5
НЛО прилетело и опубликовало эту надпись здесь
но вы не забывайте, что эту память должно купить мноооого пользователей. И перекладывание забот компании на плечи пользователей, тоже нехороший шаг.
Не для холивара ради, но сравните GIMP, размером 25мб и Photoshop размером в пару Гб.
Пусть GIMP не все умеет, то что умеет Photoshop, но большинство то умеет. И умеет шустрее.
ну и качество ПО важно и скорость выхода на рынок и полнота решений — это все комплекс.
НЛО прилетело и опубликовало эту надпись здесь
а чего тут хорошего? программист должен вкладываться в свой рабочий инструмент, а не ждать пока ему кто-то оптимизирует нетбинс. что-то я подозреваю, что при размене фичи/оптимизация приоритет будет у фич. ресурсы ограничены, все-таки.
но заметьте, у человека тормозит 6.9, а 6.8 летает. при этом, никаких принципиально новых фич в нем нет. Так что, соотношение фичи/производительность уменьшилась в 6.9. Увы, такая тенденция не только в нетбинсе
да просто оракл перекупила sun и возможно были какие-то подвижки в отделе разработки — я уверен все стабилизируется и нормализуется
не угадали. 4 гб памяти, ssd винчестер. упирается в процессор.

как отметили ниже, autoscanning of sources при получении фокуса окна тоже не самая лучшая функция в 6.9 ветке (пришлось отключить, а без нее неудобно).

баг с производительностью обещают пофиксить в 7.0, которая в начале года выйдет. но что-то мне кажется что быстрее 6.8 не будет…
За труды спасибо, но статья, имхо, ни о чём. Те, кто писал в блокнотике, в ней не нуждаются и не поймут, а использующие IDE в состоянии и без неё заметить меню Refactoring. Другими словами, желающих делать рефакторинг никак не «останавливает отсутствие автоматизированных средств».

К тому же именно из рефакторинга я заметил описание только… переименования. Довольно скудно, а как же перемещение класса в дереве файлов, выделение метода, представление переменной, безопасное удаление? (да, всё перечисленное есть в phpstorm, но и в нетбинсе думаю должно быть что-то ещё). Не говоря уже о том, что такой же куцый рефакторинг есть и в Aptana (Move, Rename). Зато в топике есть красивые картинки ;)
ну олдовых пользователей среды не удивишь, однако, как я уже написал выше многие ссылаются на отсутствие технических средств. Пусть будет заметка — первый шажок
Я его только раз запустил, не олдовый пользователь. Почему бы тогда не ответить просто — «для рефакторинга используйте IDE», и показать как это происходит в различных IDE. Была бы очень крутая статья-сравнение.

Для плодотворных занятий бегом человеку в берцах вы рекомендуете не беговую обувь, а кроссовки фирмы «абибас», не учитывая конкурентов с их преимуществами (и, возможно, недостатками). Просто посмотрите на количество полухоливарных комментариев в стиле «я юзаю, зачот», «перешёл с неё на phpStorm, там зачотнее», «а меня эклипс/аптана радуют» и так далее. А ведь есть ещё phpEdit, phpEd, Komodo и так далее.
ну так наверняка пользователи этих сред могут написать преимущества. Конечно я мог бы сделать как вы просите, но тогда я бы был вами. Я сделал что хотел. Заметку (отмечаю заметку, а не статью) в которой показал что средства есть и рассмотрел свой инструментарий.
Еще б индексация как-то настраивалась. При попытке открыть гигабайтый проект с 24к+ файлов получаю неслабые глюки в фоне.
отключить «Tools — Options — Misc — Files — Enable autoscanning of sources»?
Все таки люди, пришедшие с java это такие особые люди :)
Чем вас vim не устраивает? Переименовать название функции по всем файлам проекта — уж точно никаких проблем
его нужно ой как затачивать под себя. а тут все из коробки.
З.Ы. Сейчас настраиваю под себя VIM =)
vim знает такую сущность, как проект? Ни разу во всяких vimtutor или :help не встречал

ЗЫ Использую vim для правки конфигов и т. п.
vim знает такие сущности как файл и директория
по моему этого более чем достатточно
чтобы с превью и гарантированно без ошибок?
извините, не верю, даже для java
Вим можно научить быстро выделять дублированный код в отдельную реализацию (и другие экстракции)? Отслеживать переменную, даже если ее имя другое? Определять, точно ли функция с тем же именем — та же самая (без необходимости писать регэксп на это дело или вручную отсматривать)? Находить неиспользующиеся переменные? Заменить все переменные (точно те, которые нам нужны и во всех классах проекта) на метод, если оно вдруг стало прайвитом?

И точно так же быстро вертать обратно?

Люди на vim'е — такие особые люди.
Немного офтопа…
Тоже пользуюсь этой средой, очень нравится, но на домашнем компьютере какая-то лажа: при наборе кавычек редактор может удалить следующий символ, может перейти на следующую строку или наоборот убрать перевод строки. При этом такое только на 1 компьютере, никаких настроек не делаю, просто ставлю IDE и вот. Никто ничего об этом не знает? :)
А разве это не поведение IDE по умолчанию? Меня это тоже поначалу бесило, потом просто сделал два шаблона для одинарных кавычек и обычных.
Шаблоны применяются по нажатию на tab, пробел, enter (как настроите), а можно как-нибудь убрать это поведение IDE для кавычек?
Хорошая среда, вот только почему бы там не сделать простой переключатель кодировки файла? Мне даже разными ярлыками не удалось добиться нормальной работы даже двух разных проектов на двух кодировках
Для конкретного файла, кодировку действительно не сменишь вроде.
Но для всего проекта это делается легко:
Projects — правая кнопка мыши на имени проекта => Properties => Sources => Encoding
Вы ведь этого хотели добиться используя разные ярлыки?
А и действительно, спасибо. Но почему тогда везде написано про конфиги и ярлыки? Или Sources => Encoding появилось недавно?
наверно да, там имеется ввиду кодировка для каждого файла. Мне это пока не нужно, так что все хорошо )
А мне вот как раз понадобилось. Весь проект написан на win 1251, а некоторые новые файлы уже на UTF8. Каша еще та получается.

Как задать кодировку для всего проекта тут уже ответили.
Но как задать для конкретного файла свою кодировку?
Кстати, скоро должна появиться поддержка git из коробки.
И пользуясь случаем, я пропиарю свою заметку по настройке netbeans для дебагинга и тестов на примере yii.
ух ты, спасибо за заметку.
Сначала писал под NetBeans'ом, потом ушел на Eclipse PDT, сейчас опять вернулся на NetBeans. Он стал много лучше, радует что наконец то исправили форматирование CSS, методы jQuery и свои плагины корректно добавляются в auto complete. Раздражает разве что зависания при auto complet, но это скорей по причине того что я сижу на 7.0 M2.
НЛО прилетело и опубликовало эту надпись здесь
да уж, для java-разработчиков такие фичи и особенно отсутствие таких багов — вещь само собой разумеющаяся
С удовольствием пользуюсь, но единственное, чего мне сейчас недостает в NetBeans это нормального профйлинга. Как в PhpED, к примеру.
Попробуйте XDebug + Webgrind. Вам должно понравиться.
XDebug + KCachegrind поудобнее будет
IDE отличная, но с большими проектами автокомплит работает очень медленно, так же в 6.9 имеется баг с merge в mercurial.
Нетбинс на данный момент явный лидер в плане поддержки 5.3. Единственное алиасы для неймспейсов в 6.9.1 криво обрабатываются (но это у всех конкурентов). Еще мне не очень нравятся некоторые аспекты дефолтного дополнения для 5.3, надо бы написать в багтрекер.
В общем, спасибо автору, он мне напомнил написать feature request на ломанном англ. им в багтрекер netbeans.org/bugzilla/show_bug.cgi?id=191495 (кому тоже кажется, что так было бы удобнее могут завойтить). Сейчас еще напишу про автодополнение классов с неймспейсами.
Добавьте ещё пожалуйста быстрый поиск и переход к нужному классу по Ctrl+O.

Без этой функции я бы не был таким довольным пользователем NetBeans :-)
В свое время меня понравилась работа с базой из самой IDE, запросы писал с автокомплитом — тут тебе и таблицы подскажет и атрибуты
Нет, я немного не о том говорил

Я понял о чем вы говорите. Я просто дополнил :)
Мой довольно шустрый ноут начинает сильно тупить после пары часов интенсивной работы с 20+ вкладками в NetBeans. Незачёт.
NetBeans у меня по паре недель не выключается и нормально работает.
Давно пользуюсь нетбинс для разработки на php. Раздражает конечно неповоротливость среды, но что поделать… Адекватных нативных IDE под линем нету, только на яве.
А netbeans разве не на яве?
Собственная интуиция и вывод ps aux | grep netbeans говорят мне, что в netbeans нативностью не пахнет.
Ну так а я про что? нетбинс неповоротлив, ибо на яве. Но юзаю, т.к. нативных нету.
Sorry, превратно понял вашу мысль.
а почему Java = медленно?
Без понятия, но практика убеждает именно в том, что IDE, написанная на Java, медленнее нативного аналога (если он есть).
вот уж я понятия не имею, не я ее разрабатывал. но факт есть факт, IDE на яве работают неповоротливо.
З.Ы. У меня комп не дрова, Phenom II x2 555 / 6 Gb RAM
Из нативных вроде только Komodo, но я его давно уже не смотрел и сказать ничего не могу.
знаю, но он глючный и падает часто.
ну как нативный — XUL от мозиллы, заскриптованный питоном (щаз под рукой нет его подробнее посмотреть — может и там без явы не обошлось)
Интересно, в случае использования Фабрик, рефакторинг имени метода сработает? ;)
да
Прикольно

а технически каким образом? в смысле, NB же не знает, что за объект возвращает Фабрика
знает! вы же пишите комментарии.
/**
* @return AbstractClass
*/
factory(){
return new RealClass();
}

class AbstractClass{ // вы меняете здесь, меняется выше

}

class RealClass extends AbstractClass{ // вы меняете здесь, меняется выше

}
Это если у вас такая фабрика. Но толку от таких фабрик обычно немного. Фабрика часто нужна для динамического создания классов.

factory ($requestString)
{
$className = findClassByRequest($requestString);
return new $className();
}

Вот в таком случае явно ничего не получится.

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

$a = new RealClass();
$b = $a;
$b->myNethod();

или, если вышеуказанный пример, NetBeans и раскрутит, то вот такое явно ему будет не по плечу

$a = new RealClass();
$arr = new array();
array_push($arr, $a);
$b = array_pop($arr);

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

— В общем, я когда задавал вопрос, то надеялся, что как-то решаются все эти проблемы. А теперь, судя по ответам, понял — рефакторинг с НетБинсом делать можно. Но только понимая все подводные камни при этом.
Собственно, афаик, такие подводные камни присущи не только netbeans/php, но и, как минимум, всем иде для языков со слабой типизацией, где явное объявление/приведение типов используется редко.
я понимаю, что совет, как и воду дают когда просят, но позвольте вас поправить?

$a = new RealClass(); // тут вы явно определили тип создаваемой переменной
$arr = new array();
array_push($arr, $a);

$b = array_pop($arr);
// а тут и человек не знает что в переменной. особенно если в… много кода нужно снабжать комментариями
/*@var $b RealClass*/
$b = array_pop($arr);

Теперь что касается фабрик… все элементы фабрики имеют типизацию — либо общего родителя, либо общий интерфейс — поэтому там все понятно и так.
о комментариях @var netbeans.org/kb/docs/php/editorguide.html#vartyp-cmnt
Phpdoc'ом все не опишешь — простой случай демонстрировал идею. Вместо array_push-pop мог стоять другой набор функций, причем такие бы, которые работают с разными классами, соответственно возвращаемые и принимаемые параметры phpdoc опишет плохо. А если и опишет — ох, могут быть проблемы с результатом рефакторинга.

Фабрики далеко не всегда возвращают объекты с общим родителем или общим интерфейсом.

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

а технически каким образом? в смысле, NB же не знает, что за объект возвращает Фабрика
Всеми силами стараюсь полюбить NetBeans. По возможностям редактирования она на порядок лучше Zend 5.5, но проблемы с фтп, зависанием все сводят на нет.
Как только не будет проблем с редактированием по фтп, сразу перехожу на NetBeans
а пока перейдите на Git и Svn — это правда хорошо. Честно не знаю про FTP не пользуюсь
А как VCS может заменить (S)FTP? По-моему, абсолютно несвязанные вещи. От того, что закоммитил какое-то изменение в VCS на сервере оно не появится же? Ладно, если использовать одну ветку (то есть использовать VCS чисто как навороченный «undo») и один сервер. Но на практике на каждый чих надо, как минимум, создавать свою ветку, вносить изменения, тестировать их на своем дев-сервере (а значит сначала как-то заливать их туда), коммитить, опять вносить, опять тестировать, опять коммитить… потом вливать свою ветку в основную и заливать её (основную) на продакшн сервер, то есть нужно как-то заливать проект на, как минимум, два разных сервера (и это ещё простой сценарий). Пока обходимся тем, что NB автоматом заливает при сохранении на дев-сервер, и периодически «ручками» (через (s)ftp-клиент, конечно) заливаем на общий тестовый или продакшн сервер.
ИМХО, FTP при разработке нафиг не нужен — лишний бардак.
На production- и staging-сервера литься итак должно с транка. А для dev'a есть либо localhost, либо SSHFS.
На staging c транка? Ну, можно и так, конечно, хотя, имхо, на транке всегда (кроме форсмажоров) должна быть точная копия production (вернее наоборот), а для staging отдельная ветка. Хотя, это дело вкуса.

SSHFS это FS over SFTP, так что собой разницы нет заливать на сервер через cp или (s)ftp.
На staging c транка?
А чего такого? У нас в транке всегда код, готовый к релизу.
SSHFS это FS over SFTP, так что собой разницы нет заливать на сервер через cp или (s)ftp.
1. Капитан говорит, что SSHFS = FS over SSH, not SFTP.
2. SSHFS позволяет монтировать удалённые файловые системы, как локальные.
Если код готов к релизу, что ему делать на staging? Релизить надо! :) Или у нас разные понятия о staging и релизах. У нас «коммит» со staging ветки на транк = релиз. На staging крутится то, что к релизу ещё не готово (не оттестировано или, как минимум, нет формального «добро, релизьте»).

1. Не знаю что говорит Капитан, а вот man sshfs говорит: «On the remote computer the SFTP subsystem of SSH is used.», так что SSHFS = FS over SSH, rather SFTP ;)
2. Так всё равно надо если не заливать, так копировать (что в свете п. 1 одно и то же) с рабочего каталога в корневой дев-сервера или имеете в виду что и работать надо на удаленном? То есть рабочая копия проекта непосредственно отображается на http? Тоже можно, наверное, но у нас почему-то не принято, чтобы какие-то «левые» файлы потенциально были доступны по http даже в локалке.

Если код готов к релизу, что ему делать на staging? Релизить надо! :)
В основном, отдаётся на откуп админам, чтоб убедиться что ничего не рухнет за выходные :) И для показа заказчику, если ему интересно.
У нас релиз производится каждые 2-е недели, и «готов к релизу» — имелось в виду, что все обозначенные задачи выполнены и всякие-разные автоматизированные тесты пройдены.
Если упростить, то схема такова:
новый спринт => новая ветка => слияние в транк => staging => production
То есть, вся разработка ведётся в ветках, которые затем сливаются в транк.
Хотя здесь всё зависит от применяемых в команде практик разработки — вариантов уйма.

или имеете в виду что и работать надо на удаленном?
Именно. Если в этом есть насущная необходимость (хотя мне сложно её представить).
, но у нас почему-то не принято, чтобы какие-то «левые» файлы потенциально были доступны по http даже в локалке.
А какие у вас бывают «левые» файлы, кроме служебных файлов используемой IDE?
К тому же, если править файлы по FTP — не проблема, то почему править по SSHFS — проблема?
У нас немного по другому:
новое задание(фича или баг)->новая ветка->слияние в staging ветку (и деплой на staging-сервер)->«ручное» тестирование/показ заказчику->слияние в транк (и деплой на продакшн)

Служебные файлы ide, служебные файлы svn, тесты, различные данные для инициализации БД, документация и т. п.

Не править файлы по фтп, а править локально и средствами ide заливать по (s)ftp на дев-сервер (или «заливать» копированием), информация по (s)ftp серверу хранится в проекте, то есть открывая проект как бы автоматически подключаешься к серверу, а удалённо монтировать надо отдельно «ручками».
Не править файлы по фтп, а править локально и средствами ide заливать по (s)ftp на дев-сервер (или «заливать» копированием)
Ясно, я думал что речь ведётся о поддержке remote filesystem (например, как в eclipse).

А какая проблема зайти на dev-сервер и выкатить код из VCS? Эту операцию же можно «автоматизировать».
Нет, в NetBeans такого вроде бы нет, логически проект хранится в локальной ФС. Есть возможность вручную или автоматически (по сохранению, по запуску приложения) заливать файлы проекта на удалённый сервер по (s)ftp. Нет даже возможности синхронизации :( Или залить файл(ы) на сервер, или скачать файлы с сервера, даже просмотреть на сервере нельзя (собственно поэтому используем ftp-клиенты для деплоя на продакшн, у них функциональность больше)

Главная проблема, по-моему, лишние телодвижения: вместо «сделал->залил->проверил->поправил->залил->проверил->закоммитил» нужно будет «сделал->закоммитил->»выкатил"->проверил->поправил->закоммитил->«выкатил»->проверил" и чем больше итераций «поправил->проверил», тем больше «оверхид». Хотя, если разберёмся с хуками в SVN и закоммитил->«выкатил» можно будет автоматизировать, то «залил» в нашем обычном сценарии можно будет заменить на «закоммитил», отказавшись от ftp на рабочих местах.
Главная проблема, по-моему, лишние телодвижения: вместо «сделал->залил->проверил->поправил->залил->проверил->закоммитил» нужно будет «сделал->закоммитил->»выкатил"->проверил->поправил->закоммитил->«выкатил»->проверил" и чем больше итераций «поправил->проверил», тем больше «оверхид»
А как же контроль версий? Или вы пользуетесь сугубо Local History?

И ещё один вопросик — к чему такие сложности вообще, или иными словами, почему нельзя dev'ить локально?
Контроль версий есть, просто коммитится не каждый чих по типу «блин, пропустил запятую», а какая-то логически законченная (под)задача, типа «сделал регистрацию пользователей», «сделал восстановление пароля», «сделал аутентификацию», «сделал профиль», «сделал „запомнить меня“», «причесал код, пошло на staging»

Исторически сложилось, что сервера под freebsd, а разработка под linux/windows. Как мне рассказывали, были какие-то нюансы какого-то приложения, что под фряхой оно работало как-то не так, как под linux и убили много времени, чтобы понять это, после чего приняли решения, что дев-сервера должны быть тоже под фрей, а народ не захотел иметь её на десктопах.
поставьте хуки (http://svnbook.red-bean.com/nightly/ru/svn-book.html)
вы на локале тестите, потом сливаете в транк, там прогоняются все юнит тесты и все выкатывается если тестирование успешно
Спасибо за наводку, поковыряюсь на досуге. Особенно интересно, если можно в post-commit вытащить имя юзера и ветку, а не просто номер ревизии.
Насчёт SVN не скажу, но в git можно точно.
лучше уж не хуки, а CI-сервер, это это умеет проще и лучше
Одно другое не заменяет, а дополняет.
Continius Integration? В NB есть поддержка Hudson какая-то, но не будет ли это стрельбой их пушек по воробьям в случае веб-приложений на PHP? Как-то всегда думал, что такие системы прежде всего для компилируемых языков типа Java/C/C++/C#, где есть фаза именно сборки «чего-то» (грубо говоря, бинарника) из исходников, нам же нужен только деплой (по «сложным» алгоритмам от имени/автора ветки на разные сервера) этих исходников по событию «коммит».
«хитрый» деплой — это, конечно, не совсем задача CI, но вот прогонять тесты по каждому коммиту и пропускать его в репозиторий только если тесты пройдены успешно — вполне себе задача для CI-сервера
То есть он как-то (видимо по тем же хукам) перехватывает обращения к репозиторию, проверяет и даёт (или не даёт) «добро» на коммит? Или вообще инкапсулирует VCS и вместо клиента VCS разработчики работают с клиентом CI?
я работал только с TeamCity — там это делается через плагин к IDE и т.н. personal build. Для разработчика по сути это нажатие кнопки 'pre-tested commit' вместо просто 'commit'
не будет ли это стрельбой их пушек по воробьям в случае веб-приложений на PHP?
Для php есть CruiseControl+phpUnderControl.
ИМХО, гонять тесты при каждом коммите — это перебор и ненужные задержки.
У нас тесты запускаются по расписанию, как правило, ночью.
как настроить codeStyle?
options -> editor -> formatting -> выбираете язык и категорию и много всяких параметров!
Тоже давно использую NetBeans, очень доволен.
Но расстроил, начиная с 6.8, отказ от поддержки XSLT, хотя использовал-то лишь автокомплит кода. Может быть кто знает как его теперь прикрутить?
Долгое время использую Aptana + PDT, всем доволен, пробовал пересесть на нетбинс, но, видимо в силу привычки, так и не подружился с ней и вернулся к аптане :)
активно использую code templates ну и сочитание клавиш alt+enter.

вопрос: есть ли возможность делать динамические изменения переменних а-ля textmate? например: public function ${varname modifier=camelcase}($$${varname modifier=underscorecase}) { $$this->_registry['${varname modifier=underscorecase}'] = ...} — активно гуглил, не помогло.
Только NetBeans.
Постоянно пользуюсь Ctrl+o (поиск по индексу классов), Ctrl+r (быстрое переименование имён чего угодно в рамках файла), Alt+Shift+(up|down|left|right) (двигает строки), Ctrl+Shift+(up|down) (дублирует строку/строки вверх и вниз), Ctrl+Shift+m и Ctrl+Shift+< и Ctrl+Shift+> (ставим метки и прыгаем по ним).

Автокомплит превосходен (Ctrl+space), подробная подсказка листается Ctrl+(up|down).
Очень удобно и быстро работать с svn, mercurial, смотреть diff всех изменений перед коммитом,
Можно дублировать окно редактора одного большого файла и скомпоновать как удобно для редактирования в разных местах. Поддерживается полноэкранный режим (Alt+Shift+Enter) для хардкодинга в наушниках после чашки кофе.
Течёт память, поэтому в обед перезагружаю, продолжаю с того же места.
Ничего пока лучше не видел.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории