NetBeans среда разработки отладка в IDE процесс избавления от ошибок в коде
Установка и настройка Xdebug
Есть очень хороший инструмент для отладки php кода — Xdebug. Сегодня я расскажу как его развернуть на своей машине, а также как настроить NetBeans >
Немного о Xdebug
Основной целью расширения является максимально возможное упрощение отладки PHP-скриптов и добавление в разработку на PHP таких удобств, как точки останова, пошаговое выполнение и наблюдение за выражениями, которое мы привыкли видеть только в компилируемых языках программирования.
Помимо этого, расширение позволяет выполнять профилировку приложения и находить те части, которые замедляют его работу. Поддерживается также выполнение произвольного кода на точке останова. Xdebug стилизирует вывод ошибок, благодаря чему, читать ошибки становится гораздо удобнее. Кроме того, есть возможность самому указать, что будет выводиться при ошибке. На этом список возможностей не заканчивается, уж поверьте, у Xdebug также есть ряд других полезных при отладке функций.
В целом, расширение нужно, в первую очередь, для экономии времени разработчиков, так как позволяет быстрее локализовать ошибку в коде.
Установка Xdebug
Уже довольно давно Xdebug, как расширение для php, присутствует в репозиториях. Поэтому его установка очень проста, для этого введите в консоли следующую команду.
С установкой покончили. Перейдем к настройке.
Настройка Xdebug
Настройка расширения выполняется при помощи редактирования конфигурационных ini файлов. Тут есть два пути:
1. В php.ini создаем секцию [xdebug] и в ней задаем параметры.
2. Все параметры задаем в xdebug.ini, который хранится тут /etc/php5/conf.d/xdebug.ini
Тут решать Вам и только Вам.
Куда писать — определились. Определимся что писать?
Давайте я приведу список настроек, и поясню, что они означают:
После, необходимо чтобы наши изменения подтянулись.
Для этого нужно перезагрузить apache или php-fpm (в зависимости от того, что Вы используете).
Чтобы убедиться, что все хорошо, выведите
phpinfo();
Если такой текст имеется — значит все отлично:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
Теперь проверим улучшенный var_dump:
Вы должны увидеть красивый стилизированный вывод содержимого массива.
Теперь создадим ошибку (забудем ; в конце строки)
Вы должны увидеть подробное сообщение об ошибке, представляющее собой таблицу.
Настройка PhpStorm
Настройка NetBeans IDE
Устанавливаем NetBeans, если он еще не установлен. Заходим в Сервис → Параметры. Переходим в меню PHP, далее вкладка Отладка (Debugging).
И указываем следующие значения.
Порт отладчика: 9000
Идентификатор сеанса: netbeans-xdebug
Хочу отметить, что порт сеанса, как и идентификатор сеанса могу быть другими. Например, можно указать идентификатор ide-xdebug , но тогда и в конфигах Xdebug придется указать такое же значение.
Остальные параметры настраиваем под себя.
Ну, а о том, как выполнять отладку — в другой раз.
Структура IDE. Отладка программ
Оптимизация кода для повышения эффективности
Транслятор устроен так, что при генерации кода не может «заглянуть» ни вперед по программе, ни назад, на уже сгенерированный код. В результате машинный код может оказаться либо избыточным, либо плохо организованным, либо то и другое вместе.
В интерпретаторе с этим приходится мириться, но в компиляторе предусмотрено специальное средство ликвидации такой неэффективности.
На последнем этапе работы компилятора, этапе оптимизации, происходит поиск тех мест машинного кода, которые можно усовершенствовать. При оптимизации решаются две задачи, часто противоречащие друг другу: сократить длину программы, чтобы она занимала меньший объем памяти, и преобразовать ее так, чтобы она выполнялась быстрее.
Одна из главных задач компилятора находить и удалять избыточные команды для части машинного кода программы. В двух местах этой части программы компилятор сгенерировал машинные команды, фактически исключающие друг друга. Удалив обе пары команд, оптимизатор убивает сразу двух зайцев: получает одновременно и более короткую и быстрее выполняемую программу.
Оптимизации требуют сложных вычислений и могут существенно удлинять процесс компиляции. По этой причине в некоторых компиляторах выбирается компромиссный вариант: серьезное внимание уделяется только тем частям программы (таким, как циклы и процедуры), которые интенсивно используются при выполнении программы. Оптимизатор «отшлифовывает» машинный код только в этих частях программы, уменьшая время ее выполнения без больших затрат времени на компиляцию.
IDE — (англ. Integrated Development Environment,) — интегрированная среда разработки программного обеспечения.
Обычно среда разработки включает в себя текстовый редактор, компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Иногда также содержит средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя.
Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке ПО. Хотя и существуют среды разработки, предназначенные для нескольких языков — такие как Eclipse или Microsoft Visual Studio, обычно среда разработки предназначается для одного определённого языка программирования — как например, Visual Basic.
Создание проектов производится с помощью специального менеджера, который последовательно, шаг за шагом запрашивает информацию о новом проекте. Здесь можно установить пути к включаемым файлам, пути к библиотекам, установить опции компилятора, ассемблера и линкера.
После успешной компиляции проекта, его можно запустить на исполнение или отладку. Количество ошибок в программах заранее неизвестно, поэтому заранее неизвестна продолжительность отладки. Лучшим средством для сокращения отладки являются структурные методы проектирования программ с использованием структурного псевдокода или языков структурного программирования.
Отладка — это часто тяжёлая и утомительная задача. Способности программиста к отладке — это, по-видимому, важнейший фактор в обнаружении источника проблемы, но сложность отладки сильно зависит от используемого языка программирования и инструментов, в частности, отладчиков. Отладчик представляет из себя программный инструмент, позволяющий программисту наблюдать за выполнением исследуемой программы, останавливать и перезапускать её, прогонять в замедленном темпе, изменять значения в памяти и даже, в некоторых случаях, возвращать назад по времени.
Использование языков программирования высокого уровня обычно упрощает отладку, поскольку содержат такие средства как обработка исключений, сильно облегчающие поиск источника проблемы. В некоторых низкоуровневых языках, таких как ассемблер, ошибки могут приводить к незаметным проблемам — например, повреждениям памяти или утечкам памяти, и бывает довольно трудно определить, что стало первоначальной причиной ошибки. В этих случаях, могут потребоваться изощрённые приёмы и средства отладки.
Не нашли то, что искали? Воспользуйтесь поиском:
Как и какими средствами находить ошибки в коде Java?
При написании кода он, порой, не работает так, как я задумал или не работает в принципе. Я сижу и гадаю: что и где не так?
Немного посмотрев на код — иду на ресурсы профессионалов, например Stack Overflow и публикую вопрос «Где здесь ошибка?» или «Почему не работает?»
В итоге очень часто проблема мелкая: дурацкая опечатка, ошибка в синтаксисе и подобное. Профессионалом так не стать, если по каждой мелочёвке бегать по ресурсам. А я хочу им быть.
Вопрос: какие есть способы, чтобы найти ошибки в Java коде? Какие есть инструменты, методы, пути и пр.?
2 ответа 2
Вчера всё работало, а сегодня не работает / Код не работает как задумано
Debugging (Отладка)
В чем заключается процесс отладки? Что это такое?
Процесс отладки состоит в том, что мы останавливаем выполнения скрипта в любом месте, смотрим, что находится в переменных, в функциях, анализируем и переходим в другие места; ищем те места, где поведение отклоняется от правильного.
Заметка: Отладка производится как правило в IDE (Интегрированная среда разработки). Что это такое можно чуть подробнее ознакомиться в вопросе
Какие есть способы предупреждения ошибок, их нахождения и устранения?
В данном случае будет рассмотрен пример с Intellij IDEA, но отладить код можно и в любой другой IDE.
Подготовка
Достаточно иметь в наличии IDE, например Intellij IDEA
Запуск
Для начала в левой части панели с кодом на любой строке можно кликнуть ЛКМ , тем самым поставив точку останова (breakpoint — брейкпойнт). Это то место, где отладчик автоматически остановит выполнение Java, как только до него дойдёт. Количество breakpoint’ов не ограничено. Можно ставить везде и много.
Отладка запускается сочетанием Shift+F9 или выбором в верхнем меню Run → Debug или нажатием зеленого «жучка»:
В данном случае, т.к. функция вызывается сразу на той же странице, то при нажатии кнопки Debug — отладчик моментально вызовет метод, выполнение «заморозится» на первом же брейкпойнте. В ином случае, для активации требуется исполнить действие, при котором произойдет исполнение нужного участка кода (клик на кнопку в UI, передача POST запроса с данными и прочие другие действия)
- Стэк вызовов, все вложенные вызовы, которые привели к текущему месту кода.
- Переменные. На текущий момент строки ниже номера 24 ещё не выполнилась, поэтому определена лишь data и numsStringArr
- Показывает текущие значения любых переменных и выражений. В любой момент здесь можно нажать на + , вписать имя любой переменной и посмотреть её значение в реальном времени. Например data или nums[0] , а можно и nums[i] и item.test.data.name[5].info[key[1]] и т.д. На текущий момент строки ниже номера 24 ещё не выполнилась, поэтому sum и output во вкладке Watchers обозначены красным цветом с надписью «cannot find local variable».
Процесс
Для самого процесса используются элементы управления (см. изображение выше, выделено зеленым прямоугольником) и немного из дополнительно (см. изображение выше, выделено оранжевым прямоугольником)
Show Execution Point ( Alt+F10 ) — переносит в файл и текущую линию отлаживаемого скрипта. Например если файлов много, решили посмотреть что в других вкладках, а потом забыли где у вас отладка 🙂
Step Over ( F8 ) — делает один шаг не заходя внутрь функции. Т.е. если на текущей линии есть какая-то функция, а не просто переменная со значением, то при клике данной кнопки, отладчик не будет заходить внутрь неё.
Step Into ( F7 ) — делает шаг. Но в отличие от предыдущей, если есть вложенный вызов (например функция), то заходит внутрь неё.
Step Out ( Shift+F8 ) — выполняет команды до завершения текущей функции. Удобна, если случайно вошли во вложенный вызов и нужно быстро из него выйти, не завершая при этом отладку.
Rerun ( Ctrl+F5 ) — Перезапустить отладку
Resume Program( F9 ) — Продолжает выполнения скрипта с текущего момента. Если больше нет других точек останова, то отладка заканчивается и скрипт продолжает работу. В ином случае работа прерывается на следующей точке останова.
Stop ( Ctrl+F2 ) — Завершить отладку
View Breakpoints ( Ctrl+Shift+F8 ) — Посмотреть все установленные брейкпойнты
Mute Breakpoints — Отключить брейкпойнты.
Итак, в текущем коде видно значение входного параметра:
- data = «23 24 11 18» — строка с данными через пробел
- numsStringArr = <"23", "24", "11", "18">— массив строк, который получился из входной переменной.
Если нажмем F8 2 раза, то окажемся на строке 27; во вкладках Watches и Variables и в самой странице с кодом увидим, что переменная sum была инициализирована и значение равно 0, а также nums инициализирована и в ней лежит массив целых чисел <23, 24, 11, 18>.
Если теперь нажмем F8 , то попадем внутрь цикла for и нажимая теперь F8 пока не окончится цикл, можно будет наблюдать на каждой итерации, как значение num и sum постоянно изменяются. Тем самым мы можем проследить шаг за шагом весь процесс изменения любых переменных и значений на любом этапе, который интересует.
Дальнейшие нажатия F8 переместит линию кода на строки 31, 32 и, наконец, 36.
Дополнительно
Если нажать на View Breakpoints в левой панели, то можно не только посмотреть все брейкпойнты, но в появившемся окно можно еще более тонко настроить условие, при котором на данной отметке надо остановиться. В методе выше, например, нужно остановиться только когда sum превысит значение 20.
Это удобно, если останов нужен только при определённом значении, а не всегда (особенно в случае с циклами).
Вопрос по xdebug, php, netbeans, codeigniter, xampp – Не удается использовать Xdebug для отладки приложения Code Igniter с помощью среды >
Я могу’Я не могу использовать Xdebug для отладки приложения, созданного с помощью Code Igniter, но я могу использовать его для отладки любого другого файла PHP, если он этого не делает.использовать ту же структуру для решения URL, которую использует Code Igniter.
Имея в виду: В простом PHP-файле без Code Igniter при отладке NetBeans браузер переходит к:HTTP: // локальный: 86 / index.php XDEBUG_SESSION_START =-Xdebug NetBeans
Поскольку ни Code Igniter, ни какая-либо другая используемая среда не использовались, NetBeans фактически может отлаживать PHP.
Но при использовании Code Igniter при нажатии кнопки отладки в NetBeans браузер переходит к:
корень index.php, где все происходит в Code Igniter, не повезло, вместо этого я получаю стандартный CodeIgniter «404 Страница не найдена».
Я предполагаю, что из-за структуры сегментов, которые Code Igniter использует для решения URL, xdebug может ‘Т ничего не отлаживать.
Как я могу заставить xdebug работать с Code Igniter?
- Windows 7 32 бит.
- XAMPP версия 1.7.3.
- PHP 5.3.1
- Xdebug v2.0.6-dev
Разработка под Android в NetBeans IDE без плагинов. Часть 2
Продолжаем начатый эксперимент, посвящённый настройке NetBeans IDE для программирования под Android. В прошлый раз нам удалось создать проект в NetBeans, настроить систему сборки, а также сделать автоматический запуск приложения. Кроме этого мы немного посмотрели на то, как система сборки построена изнутри. Во второй части статьи мы пойдём дальше и посмотрим, как в NetBeans можно осуществлять отладку, создавать библиотечные проекты, а также добавлять библиотеки к проектам и работать с модульными тестами.
Отладка
Интересно, что отладку в NetBeans можно делать двумя способами. Первый способ даже не потребует никакого колдовства в ant. Второй будет немного посложнее настроить, но в некоторых случаях он пригождается, да и больше похож на то, что есть в Eclipse.
Способ №1
После того, как monitor открыт, нужно запустить приложение, если оно ещё не запущено, и посмотреть, через какой порт нужно подключаться к отладчику. Порт пишется напротив приложения. По умолчанию они имеют схему 860x. Можно также щёлкнуть одно из приложений, чтобы назначить ему порт 8700. После этого в NetBeans нужно подключиться к этому порту через команду Attach Debugger. Выбираем параметры Socket Attach, localhost, необходимый порт… И всё, дальше можно спокойно заниматься отладкой.
На кнопке в панели запоминаются недавно введённые конфигурации, так что в следующий раз даже не придётся ничего вводить.
Отдельно обращаю внимание, что monitor вызывается не только для того, чтобы посмотреть на порты. Он также выступает посредником в соединении с виртуальной машиной, так что, если он не запущен, подключаться наугад к порту 8600, увы, не выйдет.
У этого способа отладки есть то преимущество, что можно подключаться и отключаться в любой момент. Это важно, потому что с подлкючённым отладчиком Dalvik VM начинает заметно тормозить. Иногда это бывает не критично, но не всегда, поэтому возможность дойти до определённой точки выполнения в программе без отладчика, бывает, вовсе и не лишнее.
Есть и ещё один инструмент, который помогает подключить отладчик именно в определённой точке. Можно, конечно, создать точку остановки по условию, но, как я уже говорил, с подключённым отладчиком всё работает очень не шустро. Поэтому можно в коде вставить вызов Debug.waitForDebugger() . Как только программа дойдёт до этого метода, она застопорится, и исполнение продолжится дальше только после подключения отладчика.
Но иногда нужно начать отладку в момент запуска программы. Можно воспользоваться этим же вызовом вышеупомянутого метода, а можно и настроить в NetBeans второй способ запуска отладки.
Способ №2
Второй способ будет действовать так же, как и в Eclipse: запускаем отладку, и запускается само приложение. После этого оно ждёт подключения отладчика, и только потом продолжает запуск. NetBeans нам поможет и здесь. Если попробовать выполнить отладку ( CTRL+F5 ), NetBeans предложит сгенерировать ant-файл, который подскажет ему, как её нужно проводить в нашем проекте. Именно это нам и нужно. После этого в подпапке проекта nbproject заведётся файл ide-file-targets.xml , содержимое которого нужно заменить на следующее:
Файл начинается с загрузки свойств из файла debug.properties , который нужно кинуть в ту же папку со следующим содержимым:
Теперь можно поразбираться, что этот файл делает. Основное задание здесь — это debug-nb , которое NetBeans запускает, когда начинается отладка, и зависит оно от заданий -init , -launch-monitor и -launch-debug . В -init ничего особенно интересного нет, задание просто загружает и проверяет переменные из файла debug.properties . А вот -launch-monitor уже позанятнее: нам ведь необходимо запустить monitor, если он ещё не запущен, и это задание как раз и берёт задачу на себя. В ant есть хорошее задание, которое позволяет посмотреть, слушает ли программа на определённом порте или нет — socket . По этому признаку как раз можно определить, работает ли monitor или нет. Если нет, то нужно его запустить и подождать (задание wait-for ). После запуска ещё стоит подождать секунды две для того, чтобы monitor начал принимать соединения (значение, возможно, придётся немного скорректировать в зависимости от конкретной конфигурации оборудования).
После этого можно запускать само приложение. В прошлой статье мы уже это проделывали из ant с помощью командной строки. Для этого используется команда adb shell am start -a android.intent.action.MAIN -n / . В этот раз разберём команду немного подробнее. adb shell — это команда, позволяющая работать напрямую с командной строкой внутри Android. am — это менеджер активностей, у которого есть довольно впечатляющий набор возможностей; о них можно почитать в официальной документации. Нам же нужна лишь команда start для запуска нужной активности, которую мы указываем после ключа -n , а ключ -a задаёт, как уже, наверное, стало понятно, намерение.
В файле custom_rules.xml уже есть задание, которое выдаёт нужные для запуска параметры: -find-main-activity . В этот раз нам нужно запустить приложение точно так же, как и в прошлый раз, но с ключом -D , чтобы после запуска приложение не сразу продолжало работу, а сначала подождало отладчик.
Таким образом, после выполнения всех этих махинаций к запуску debug-nb уже всё готово: работает monitor, приложение запущено и ждёт отладчик. Осталось только его подключить с помощью задания nbjpdaconnect . Как понятно из названия, это задание сугубо специфическое для NetBeans.
Я сам пользуюсь вторым способом намного реже, чем первым, за счёт того, что, как я уже сказал, при подключении отладчика Dalvik VM начинает изображать тугодума, поэтому добраться до отлаживаемого участка в приложении становится дольше. Но, если проблема происходит при запуске приложения, этот способ — как раз то, что нужно.
Добавление библиотек и создание библиотечных проектов
Библиотека может быть прекомпилированным jar-файлом, а может быть и отдельным проектом Android, который нужно компилировать перед включением в проект. Подключаются они, соответственно, разными способами.
В случае прекомпилированного файла шагов очень мало:
- Нужно бросить файл в папку libs основной папки проекта.
- В свойствах проекта на вкладке Java Sources Classpath необходимо добавить путь к файлу. На самом деле, можно этого и не делать, но тогда IDE нам не будет подсказывать по коду из этой библиотеки, что сводит на нет преимущества использования IDE.
В случае библиотечного проекта всё немного похитрее. Можно его добавлять командой (и это официальный способ), а можно добавлять строчкой в конфигурационном файле. Для тех, кто любит официальный способ, нужна следующая команда:
android update project -p -l
Попробуем добавить ради примера библиотеку поддержки v7 appcompat, которую Google сделали для тех, кто хочет видеть панель действий на версиях Android до 3.0. Она как раз распространяется не как прекомпилированный jar-файл, а как библиотечный проект, поскольку там есть дополнительные ресурсы. Допустим, что он лежит в той же папке, что и наш основной проект.
android update project -p KillerApp -l ../AndroidCompatibilityPackage-v7-appcompat
Всё! Можно уже компилировать проект. Если мы заглянем в файл project.properties , то обнаружим в этом конфигурационном файле строчку
Собственно, это всё, что та команда и сделала. Точно таким же способом можно добавлять новые библиотеки безо всякой команды, главное только не забывать увеличивать номер библиотеки на единичку: android.library.reference.2 , android.library.reference.3 и так далее.
Разумеется, как и с прекомпилированным файлом, нужно не забыть добавить на владке Java Sources Classpath упоминаемые в проекте папки исходников библиотечного проекта, а также библиотеки, которые использует он (если мы их также используем). То есть стоит добавить папки src , gen и jar-файлы в папке libs библиотечного проекта.
Что если мы хотим создать свой такой же проект? Создание библиотечного проекта происходит в точности так же, как и создание обычного проекта с тем исключением, что нужна немного другая команда:
android create lib-project -n -t android- -p -k
Основное отличие в том, что вводится lib-project вместо project . Кроме того, не нужно указывать название главной активности, поскольку библиотеку не придётся запускать напрямую. Дальше создание проекта продолжается так же, как и для обычного проекта.
Создание проектов для тестов
Как известно, в Android, к сожалению, нельзя встраивать модульные тесты непосредственно в проект, и нужно создавать отдельный проект для этого действа. Как и создание библиотечного проекта, все шаги очень похожи на создание обычного проекта, но немного больше нюансов. Потребуется следующая команда:
android create test-project -p -n -m
Проекты для тестов обычно создаются в подпапке основного проекта, поэтому создадим такой проект из папки основного проекта:
android create test-project -p tests -n KillerAppTest -m ..
Дальше можно продолжить создание нового проекта в NetBeans точно так же, как и в случае обычного проекта. Но на этот раз мы сможем оставить на третьем шаге пункт test , когда мы назначаем задания ant разным пунктам меню. А вот из Run Project теперь стоит убрать launch и оставить только debug install , поскольку запускать нам тут всё равно нечего.
Для обычного проекта после этого мы ещё добавляли файлы, связанные с запуском приложения, но в этот раз это нам ни к чему. А вот что можно сделать, так это добавить файлы, которые нам помогут отлаживать тесты и запускать их выборочно.
Для начала нужно сгенерировать файл для дополнительных заданий в NetBeans. Нам интересен запуск отдельных файлов, отладка и отладка отдельных файлов. Все эти действия можно сгенерировать нажатиями на CTRL+F6 , CTRL+F5 и CTRL+SHIFT+F5 . После этого в папку nbproject нужно опять закинуть файлы, как и при добавлении отладки в обычный проект по второму способу, только файл ide-file-targets.xml будет немного другой. Начало файла такое же, как и в случае отладки обычного проекта, поэтому весь файл целиком я не копирую. Желающие могут посмотреть его на BitBucket. А вот дальше у нас другие задания:
Задание run-selected-file-in-src нужно для запуска отдельных тестов. Оно использует макрос run-tests-helper , который определён в системе сборки Android с дополнительными параметрами. На самом деле, всё, что делает этот макрос — это запускает команду adb shell am instrument с параметрами для тестирования программы (да, это опять менеджер активностей). Мы добавляем к запуску команды аргументы -e class , так что аппарат не будет гонять все тесты без разбора, а сосредоточится на конкретном файле.
Дальше остались задания, в которых нам нужно выполнить отладку. Для того, чтобы её сделать, нужно запустить сначала тестирование с указанием подождать отладчик, а потом подключиться. Но тут есть маленькая загвоздка: запуск тестирования происходит с блокировкой, а нам нужно запускать другое задание. Нас спасёт задание parallel , которое запускает разные задания вместе. Результат оформлен как макро, чтобы можно было регулировать, с какими параметрами вызывается тестирование. Соответственно, наши задания для отладки просто его вызывают, с дополнительными параметрами, если нужно.
Теперь можно подвести итоги тому, что мы натворили. Суммарно получился очень неплохой объём возможностей:
- Полноценная сборка и запуск проектов;
- Генерация R.java вручную;
- Запуск отладки проектов;
- Добавление библиотек и библиотечных проектов;
- Создание проектов для тестирования;
- Запуск отдельных тестов с возможностью отладки;
- Подсказки и автозаполнение.
Проекты создаются одной командой из командной строки и парой дополнительных файлов, которые универсальны для каждого проекта, так что всё довольно просто по трудозатратам. Что у нас отсутствует по сравнению с тем, что уже есть в Eclipse или Android Studio:
- Редактирование интерфейса;
- Редактирование XML-файлов с подсказками;
- Переход к объявлению ресурса.
Редактирование XML-файлов — это не так критично, но, разумеется, без WYSIWYG-редактора довольно грустно редактировать интерфейс. Поэтому я лично импортирую проект в Eclipse и редактирую интерфейс там, когда это требуется.
Ещё хочется сказать пару слов насчёт применимости подобных инструментов. В комменатриях к предыдущей статье подобные вопросы возникали, поэтому ещё раз напомню: это эксперимент. Если существует официальная система сборки через ant, независимая от IDE, то для меня было сложно удержаться и не попробовать с её помощью настроить инструмент, который изначально вовсе не был предназначен для работы с Android.
Кроме того, на самом деле, ведь необязательно пользоваться NetBeans, чтобы задействовать эту систему. После настройки проекта можно просто набирать в командной строке, например, ant debug install launch , чтобы собрать и запустить проект. И, в отличие от сборки самодельным скриптом, это будет полноценная сборка — в точности такая же, которую делает и Eclipse с ADT: с генерацией интерфейсов из AIDL, BuildConfig, RenderScript, zipalign, ProGuard и всем прочим. Что касается использования её для того, чтобы программировать в NetBeans, это уже, конечно, сильно на любителя. Но, в любом случае, мне лично было очень интересно провести этот эксперимент и надеюсь, что другим было интересно о нём прочитать.
IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.
Бесплатный редактор PHP кода > 07.07.2020
Инструменты разработчика и редакторы, Полезные программы
Комментариев нет
Привет, посетитель блога ZametkiNaPolyah.ru! Продолжаем рубрику полезных программ и ее раздел текстовые редакторы. Сегодня мне неудержимо захотелось написать о чем-то серьезном, полезном и профессиональном. И почему-то мне вспомнилась IDE NetBeans, с которой я познакомился еще в универе на курсе по Java. Но в данной публикации мы будем говорить про NetBeans не как про IDE и даже не, как о среде разработки Java, а как о редакторе PHP. Да, NetBeans, можно сказать, это мощный и бесплатный PHP редактор. В NetBeans есть всё для комфортной разработки на PHP: автозавершение, как функций и языковых конструкций, так и закрытие различных скобок, есть подсветка синтаксиса и встроенная документация.
Бесплатный редактор PHP кода IDE NetBeans. Интегрированная среда разработки NetBeans
В общем, NetBeans — это бесплатный редактор PHP кода с удобным и интуитивно понятным интерфейсом, который, к тому же, переведен на русский язык довольно качественно. У меня нет цели писать документацию по NetBeans, так как она есть на официальном сайте сообщества, плюс ко всему прочему есть множество официальных видео уроков по NetBeans. Передо мной стоит цель рассказать начинающему PHP разработчику о том, что есть такая профессиональная штука под названием IDE NetBeans, освоив которую он сможет качественно улучшить свой код на PHP.
Что такое IDE NetBeans и почему она так популярна?
IDE NetBeans – интегрированная среда разработки на Java, которая разрабатывается независимым сообществом программистов и спонсируется компанией Oracle. NetBeans написан на Java и для его работы необходим комплект JDK. Изначально NetBeans создавался для разработчиков Java, но в следствии ряда факторов он стал очень популярным и среди других разработчиков: C, C++, HTML, CSS, Python, PHP, JavaScript.
Синтаксис всех вышеперечисленных языков IDE NetBeans поддерживает, так же для каждого языка имеется автодополнение и проверка синтаксиса. IDE NetBeans дает подсказки разработчику, когда тот наваял синтаксически неверную конструкцию и даже может автоматически всё это дело исправлять.
Как видите, не совсем корректно говорить, что NetBeans – это PHP редактор, причем бесплатный PHP редактор. Во-первых, NetBeans изначально создавался для разработчиков Java, во-вторых, NetBeans не является редактором, как Notepad++, Sublime Text 3 или Brackets. NetBeans – это IDE или интегрированная среда разработки, а это означает, что NetBeans имеет различные возможности по отладки и тестированию кода.
У редактора NetBeans есть масса возможностей из коробки, в этой статье мы даже не сможем их все перечислить и рассмотреть, но помимо этого NetBeans поддерживает еще и кучу всевозможных плагинов и модулей, которые расширяют его функционал причем опять-таки бесплатно.
В NetBeans есть то, чего нет у обычных редакторов – документация языка, на котором вы ведете разработку, поэтому вы можете получить справку о той или иной функции в любой момент, не выходя из среды. Бесплатный PHP редактор NetBeans умеет работать со всевозможными службами и серверами. Например, при установки у меня NetBeans автоматически обнаружили Node.js, который нам необходим, чтобы работал препроцессор LESS (если вы помните, мы установили Node.js, когда говорили про установку LESS на Windows).
А также NetBeans увидел, что у меня установлен Ruby, который необходим для работы SASS компилятора, мы его устанавливали, когда говорили про препроцессор SASS, когда устанавливали SASS на Windows. В редакторе NetBeans можно подключать всевозможные библиотеки и фреймворки, например, для PHP: Yii, Zend и прочие. Причем если устанавливать эти библиотеки через NetBeans расширения, то вы получите прекрасную документацию к ним, которая уже встроена в редактор и все те плюшки, которые описаны выше.
Думаю, я хорошо «прорекламировал» IDE NetBeans и вы захотите его поставить, чтобы в дальнейшем пользоваться теми преимуществами, что нам дает NetBeans.Но давайте сведем все то, о чем мы говорили ранее:
- IDE NetBeans является бесплатной;
- NetBeans имеет множество полезных расширений, упрощающих разработку;
- в данной интегрированной среде реализовано автодополнение кода;
- в NetBeans реализована проверка синтаксиса и автоматическое исправление;
- для любого языка (из поддерживаемых NetBeans), на котором вы будете вести разработку, в NetBeans есть встроенная документация;
- NetBeans – это больше, чем Java или PHP редактор, это интегрированная среда, которая дает возможности по отладки и тестированию написанного кода.
Эти преимущества лежат на поверхности, а возможности IDE NetBeans гораздо шире описанных.
Где скачать NetBeans. Установка PHP редактора NetBeans на Windows
Мы убедились в том, что бесплатная IDE NetBeans замечательно подходит для разработки на PHP. Поэтому давайте установим PHP редактор NetBeans на наш компьютер и попробуем его в деле. Естественно, первый вопрос обычно звучит так: «Где скачать NetBeans?». И, естественно, я дам ответ, что скачивать NetBeans можно и даже нужно с официального сайта.
Официальная страница IDE NetBeans
И порекомендую не скачивать NetBeans со сторонних сайтов, так как в этом случае у вас есть большая вероятность установить вместе с NetBeans кучу ненужного хлама. Чтобы скачать NetBeans нажмите на оранжевую кнопку «Download». После этого вы попадете на страницу с содержимым, как на рисунке ниже.
Страница скачивания PHP редактора NetBeans
Как видите, у IDE NetBeans очень много редакций, если вы решили скачать одну из редакций Java или редакцию с названием «Все», то вам еще нужно будет установить JDK, если вы скачиваете любую другую редакцию, то нужен только JRE, но отдельно его ставить не нужно, так как он уже встроен в NetBeans. Я буду скачивать и устанавливать NetBeans редакцию PHP. Так как хочу рассказать про возможности работы с PHP в NetBeans. Да, кстати, если вы скачиваете максимально возможную редакцию NetBeans, то при установки сможете выбрать компоненты, которые хотите установить.
Установка NetBeans на Windows проста, как два рубля, поэтому я не буду подробно описывать установку NetBeans на Windows. Скажу лишь, что в процессе установки мы можем выбрать язык интерфейса NetBeans и папку, в которую NetBeans будет установлен, пожалуй, это всё что можно выбрать в процессе установки IDE NetBeans для его PHP редакции.
Интерфейс бесплатного PHP редактора NetBeans
Интерфейс бесплатного PHP редактора NetBeans прост и интуитивно понятен. NetBeans приветствует нас стартовой страницей, которая показана на рисунке ниже. Если вы хотите детально разобраться с возможностями IDE NetBeans, то не отключайте ее.
Стартовая страница PHP редактора NetBeans
Каждая ссылка – это бесплатный урок от разработчиков NetBeans по работе с тем или иным языком или о той или иной фишки NetBeans. Уроки по NetBeans есть и формате видео, правда, на английском языке. Весь интерфейс управления NetBeans находится в левом верхнем углу.
Интерфейс управления PHP редактора NetBeans
Вкладка файл позволяет нам работать с различными файлами и управлять проектами в NetBeans. Во вкладке правка собраны часто используемые функции по правке кода. Обратите внимание: каждый элемент вкладки правка имеет подсказки в виде горячих клавиш.
Правка файлов в редакторе NetBeans
Интерфейс редактора NetBeans состоит из панелей, которые можно отключать, включать и перетаскивать так, как вам удобно, для включения и отключения панелей NetBeans используйте вкладку «Вид». В PHP редакторе NetBeans реализована очень удобная навигация. Навигация может работать, как по проекту, так и по файлам и даже по коду в том или ином файле. За все эти действия отвечает вкладка переход, либо горячие клавиши.
Управление навигацией в редакторе NetBeans
Форматирование PHP кода и проекта, как и любого другого кода/проекта в NetBeans можно осуществлять автоматически при помощи горячих клавиш, либо во вкладке «Источник». Возможности реорганизации кода в NetBeans доступны на соответствующей вкладке, как и возможности отладки и выполнения. Работу с сервисами, серверами, службами, различными шаблонами и фреймворками различных языков в NetBeans можно осуществлять через вкладку «Сервисы».
Как я и говорил, интерфейс PHP редактора NetBeans прост, интуитивно понятен и качественно переведен на русский язык. Согласитесь, это неплохо для бесплатной IDE языка PHP.
Общие настройки IDE NetBeans
Начнем с настройки внешнего вида бесплатного PHP редактора NetBeans. Мы уже говорили про панели IDE NetBeans, которые можно отключать и включать на вкладке «Вид». Не бойтесь экспериментировать с панелями NetBeans, подстраивайте рабочую среду под себя, а не сами под нее подстраивайтесь. Включайте и отключайте различные панели и размещайте там, где вам будет удобно. Редактор вы этим не сломаете, но в итоге у вас получится максимально удобная среда, причем удобной она будет именно для вас.
В интерфейсе NetBeans помимо всевозможных панелей есть еще и окна, которые можно отключать и включать на соответствующей вкладке. Возможности окон помогают не только Back-end разработчиками (PHP, Java и другие), но и фронтэнд.
Попробуйте поэкспериментировать с окнами, чтобы настроить редактор NetBeans под себя, не бойтесь их отключать и включать. Любой инструмент, которым вы пользуетесь должен быть удобным и создавать вам дополнительный комфорт, а не трудности. Если вы перейдете по вкладке «Сервисы» и выберете пункт «Параметры», то увидите расширенные настройки бесплатного PHP редактора NetBeans. Первая вкладка расширенных настроек NetBeans называется «Общие».
Общие настройки PHP редактора NetBeans
Здесь можно настроить прокси сервер и соединение с удаленным сервером, если разработка ведется на удаленной машине, а также выбрать браузер по умолчанию, с которым будет работать IDE NetBeans. Вторая вкладка «Редактор», которая позволяет настроить внешний вид редактора NetBeans.
Настройка внешнего вида редактора в IDE NetBeans
Настроек очень много и описывать их здесь подробно я не буду, в этом случае данная запись из заметки про бесплатный PHP редактор NetBeans превратится в документацию по IDE NetBeans, которая, кстати, написана очень даже качественно. Следующая вкладка – «Шрифты и цвета» позволяет выбрать тему оформления NetBeans.
Настройка шрифтов редактора в IDE NetBeans
Но помимо темы здесь еще можно настроить то, как будет отображаться код в редакторе NetBeans. Причем настройки очень детальные и подробные, благо, что разработчики NetBeans здесь уже всё настроили довольно удобно, и нам нет особого смысла что-то переделывать. Вкладка «Назначение клавиш» отвечает за горячие клавиши в NetBeans.
Настройка горячих клавиш в IDE NetBeans
Ниже мы более подробно поговорим про горячие клавиши в NetBeans и их настройку. Вкладка «Java», собственно, отвечает за настройку Java машины в NetBeans.
Настройка среды Java в NetBeans
Вкладка «HTML/JS» позволяет настроить NetBeans для фронтэнд разработки.
Настройка JS/HTML в среде NetBeans
Здесь собрано очень много настроек: вы можете выбрать и настроить JavaScript платформу, подключать и отключать CSS препроцессоры и многое другое. Вкладка «PHP» отвечает за настройки редактора, которые будут полезны PHP разработчику.
Настройка работы PHP интерпретатора в интегрированной среде NetBeans
Палитра настроек PHP довольно широкая: от общих настроек интерпретатора PHP до настроек подключаемых библиотек и фреймворков, не говоря уже о том, что в NetBeans можно настроить отладчик PHP кода. Вкладка «Группа» отвечает за настройки проекта в NetBeans.
Настройка проектов в PHP редакторе NetBeans
Здесь не так уж и много настроек и обычно они полезны тогда, когда вы работаете в команде над одним проектом, либо тогда, когда ваш проект объемный и долгий. С вкладкой «Внешний вид», думаю, трудностей вообще не будет.
Настройка внешнего вида PHP редактора NetBeans
Так же, как и с вкладкой «Разное».
Разные настройки в IDE NetBeans
Как видите, настроить NetBeans под себя очень просто: интерфейс полностью русифицирован, а настройки грамотно сгруппированы и довольно детальные. Не бойтесь экспериментировать и настраивать NetBeans под себя: лучше потратить пару часов на настройку NetBeans и получить удобный инструмент для разработки на PHP, JavaScript, HTML, CSS, Java и пр., чем каждый раз искать какую-то функцию или кнопку и удивляться почему та или иная возможность отключена.
Создание проекта PHP проекта в NetBeans.
Давайте теперь рассмотрим на примере PHP, как создать проект в NetBeans. Дело в том, что обычные редакторы относятся к любым файлам, как к кучи неупорядоченных и никак не связанных между собой файлов. В NetBeans все несколько иначе, NetBeans тем и прекрасен, что файлы, которые вы создаете и редактируете можно объединять в проекты, и NetBeans будет их считать связанными и даже понимать, как эти файлы связаны между собой.
Итак, чтобы создать PHP проект NetBeans нажмите вкладку «Файл» и выберете пункт «Создать проект», как показано на рисунке ниже.
Создание PHP проекта в IDE NetBeans
NetBeans предложит вам выбрать тип проекта, я выберу приложение PHP.
Выбор типа проекта при создании
Затем мы можем сделать основные настройки для PHP проекта: имя проекта, папка, в которой будет сохранен проект, версия PHP интерпретатора и кодировка для всех файлов в проекте.
Настройка PHP проекта в IDE NetBeans
Здесь я оставлю всё, как есть, потому что сейчас меня всё устраивает. После базовых настроек вы сможете настроить сервер, на котором будет запускать проект, это может быть удаленный сервер, с которым вы работаете по FTP, а может быть и локальная машина, например, Denwer или AMPPS.
Настройка соединения с сервером в PHP проекте IDE NetBeans
К своему PHP проекту вы можете подключить библиотеку или несколько библиотек. Для этого достаточно поставить галочку напротив нужного PHP фреймворка.
Подключение фреймворка к PHP проекту NetBeans
Завершите создание PHP проекта в NetBEans нажатие клавиши «Готово». Далее NetBeans сгенерирует нам новый PHP проект. Обратите внимание: для управления PHP проектом у нас есть два окна: «Проекты» и «Файлы». В окне проекты вы сможете управлять своим проектом.
Менеджер проектов в IDE NetBeans
А в окне файлы вы можете открыть любой файл проекта и отредактировать его.
Файловый менеджер в IDE NetBeans
С элементами и файлами проекта можно взаимодействовать, нажмите правой кнопкой мыши на вкладку «Исходные файлы», вы увидите контекстное меню, позволяющее управлять файлами и папками проекта примерно такое, как на рисунке ниже.
Работа с файлами проекта в IDE NetBeans
Всё, что мы создаем в PHP проекте NetBeans будет создано и на жестком диске компьютера после сохранения изменений. Созданные PHP файлы и папки будут находиться в общей папке проекта по тому пути, который мы указали во время создания PHP проекта. На этом мы закончим разговор о создании PHP проектов в NetBeans и попробуем поработать с PHP кодом в редакторе NetBeans.
Работа с PHP кодом в NetBeans
Запись уже получилась довольно объемной, а у нас еще помимо этого есть один раздел, поэтому, скорее всего, появится еще и подробный обзор по работе с PHP кодом в NetBeans. Сейчас мы просто перечислим некоторые возможности NetBeans, которые будут полезны для PHP разработчика. Первое, что хочется отметить: подсветка синтаксиса PHP в NetBeans.
Но не просто подсветка, а еще и анализ синтаксиса, авто исправление синтаксических ошибок PHP, автодополнение PHP кода, встроенная документация не только по PHP, но по подключаемым фреймворкам и автоматическое закрытие всевозможных скобок и блоков PHP кода. Но этого было бы нам мало, в NetBeans реализована отладка PHP кода xdebug, если возможность тестирования PHP с PHPUnit и Selenium.
Поддержка самых популярных PHP библиотек и GIT. Редактор NetBeans позволяет отследить структуру проекта, структуру PHP файла, а если ваш код встроен в HTML, то и структуру HTML документа.
Горячие клавиши редактора NetBeans
Горячие клавши в NetBeans есть, горячие клавиши очень удобны и полезны и горячие клавши в NetBeans можно настраивать, о том, где их настроить мы уже говорили. Здесь я не собираюсь вам перечислять все горячие клавиши в NetBeans, потому что вы сможете найти их без труда в редакторе.
Чтобы настроить горячие клавиши в NetBeans перейдите по пути: «Сервис» -> «Параметры» -> «Назначения клавиш». Здесь вы легко сможете настроить горячие клавиши NetBeans под себя, но просматривать здесь их не очень удобно, поэтому воспользуйтесь кнопкой «Показать как HTML». NetBeans сформирует нам документ и вы увидите HTML страницу в браузере: горячие клавиши на ней будут перечислены в виде HTML таблицы и разбиты на группы.
Подведем итог: мы коротко пробежались по возможностям бесплатного PHP редактора NetBeans и в итоге пришли к выводам, что это довольно мощное и удобное средство для PHP разработчика, которое можно настроить так, чтобы нам было удобно.
Создание кода без ошибок
Стоимость ошибок в программном коде увеличивается по мере того, как эти ошибки остаются неисправленными. NetBeans предоставляет средства статического анализа, в частности интеграцию с широко используемым инструментом FindBugs, для выявления и исправления распространенных проблем в коде Java. Кроме того, отладчик NetBeans позволяет размещать точки останова в исходном коде, добавлять контрольные модули для полей, выполнять код в пошаговом режиме с заходом в методы, создавать снимки и отслеживать выполнение.
NetBeans Profiler предоставляет экспертную помощь для оптимизации скорости приложения и использования памяти, а также упрощает построение надежных и масштабируемых приложений Java SE, JavaFX и Java EE. IDE NetBeans включает в себя визуальный отладчик для приложений Java SE, что позволяет выполнять отладку пользовательских интерфейсов, не обращаясь к исходному коду. Возьмите снимки графического интерфейса пользователя приложений и щелкните элементы пользовательского интерфейса, чтобы перейти обратно к соответствующему исходному коду [1].
Поддержка нескольких платформ
Система IDE NetBeans может быть установлена на всех операционных системах с поддержкой Java — от Windows и Linux до Mac OS X [1].
Интерфейс NetBeans IDE 8.0.2
На рисунке 1.1 продемонстрирован внешний вид главного окна среды разработки NetBeans IDE.
Рисунок 1.1 Главное окно среды NetBeans
На рисунке 1.1 указаны:
- 1 — создать новый файл;
- 2 — создать новый проект;
- 3 — открыть уже созданный проект;
- 4 — сохранить всё;
- 5 — отменавозврат изменений;
- 6 — настройка свойств проекта;
- 7 — собрать проект: компилирует проект;
- 8 — отчистить и собрать проект;
- 9 — запустить проект: тестовый запуск программы;
- 10 — отладка проекта;
- 11 — профилировать проект;
- 12 — поиск: поиск проекта, действия, функции и т. д.;
- 13 — средства навигации в окне;
- 14 — вкладка со всеми проектами;
- 15 — вкладка с используемыми и созданными файлами;
- 16 — вкладка со службами;
- 17 — вкладка навигации по проекту;
- 18 — начальная страница
Java > ide, java, netbeans
В NetBeans (C++) когда то встречал дико удобную фичу: собирать/запускать/отлаживать код на удаленной машине. То есть пишешь код локально, а при сборке IDE перекидывает сырцы на удаленный узел, там собирает и запускает, либо запускает отладку бинаря.
Какие Java IDE такое умеют?
IDEA, в основном заточена на сборку под докером, читай на их сайте.
А система сборки какая?
Прямо из коробки Java/C++ remote build+run — никак. Хотя может для Нетбинса что-то такое есть, но я в нем не шарю
Как делаю это я: на Ansible пишу соответствующий скрипт, запускаю из Идеи сразу перед подключением удаленной отладкой
Если ты не знаешь как сделать через Ansible, то можно вручную сделать так:
— В меню Tools->Deployment настраиваешь автоматическую синхронизацию твоего проекта по SSH/SFTP с удаленным сервером (где собираешься запускать). На удаленном сервере автоматически оказывается копия исходников и синхронизируется мгновенно как ты в файле что-нибудь изменишь.
— Добавляешь новый Run/Build Configuration, точно так же как и всегда, только тип выбираешь не Java Application, а Remote Debug
— В поле «before launch» (это список в самом низу окна) добавляешь через плюсик новый элемент типа «Run Remote External Tool»
— В опциях указываешь тот же самый сервак, который ты уже настроил в Tools->Deployment. Поле «программа» указываешь «mvn clean install -DskipTests», или что ты там хочешь запускать
— На удаленном серваке, конечно, нужно поставить джаву и мавен
— Добавляешь еще один пункт таким же образом — запуск твоей приложухи, в свойствах запуска обязательно надо активировать удаленную отладку
— Понятно что между твоим компом и удаленным сервером долдна быть сетевая связность, настроеный фаервол, запущенный SSH
Ну и да, туда же в список действий закинь killall java (pkill -9 java может быть?), прога же должна перезапускаться между запусками подключения
Вроде всё, работы на полчаса
с разморозкой
Это ж IDE в браузере, разве нет?
То есть докер не только под деплой на удаленной машине, но и под удаленную сборку катит?
Любая IDE умеет, это базовый функционал.
Да под что хочешь катит. Даже под сборку на локальной, но в докере)
Сейчас уже многие разрабатывают на локальном так, что весь софт запускается в докере. В докере же тестируется и в докере и собирается. Ясен пень, что и вынести докер на внешнюю машину тоже можно, но это слегка увеличит время сборки и т.п.
В IDEA без проблем можно собирать и не в докере, но по ssh на удаленном, правда, мне не понравилось, довольно медленно вся эта канитель работает, по сравнению с локальной разработкой.
Ну, ё-маё, есть же Hudson Jenkins. Зачем такие сложности?
Дженкинс — это тот кусок быдлокода, который требует полного перезапуска при обновлении любого плагина? Тот самый, который при включении всех плагинов из репозитория запускается 10 часов? Который со старта жрет оперативки как вся операционная система, даже если плагинов нет вообще?
Тот самый, в котором нельзя экспортить и импортить джобы без рутового аккаунта (или рута дженкинса, или самого сервера). Где админам запрещают из-за этого пользоваться графическим интерфейсом, и они фигачат все в Pipeline Plugin? Текстом, во встроенном в браузере текстовом поле вместо хотя бы JS редактора? На грувях, официциальная документация к API которых не совпадает с действительностью?
Боже, как можно в 2020 году в суе употреблять имя этого куска быдлокодерского говна? Место дженкинсу одно — на свалке истории
Придумали Ansible, Chef, Puppet, Saltstack. Мгновенный старт. Нормальный headless режим, включая без агента в Ansible. Нормальный расход RAM. Не зависит по RAM/CPU от количества плагинов — хоть миллиард. Нормальная документация на API и возможность писать в полноценной IDE, включая отладку плагинов.
Как говорили в Зеленом Слонике: дали людям звездочки Ansible, носи, носи звездочки! Не хотят носить, хотят жрать говно. И это офицеры Программисты?
Самое смешное, что даже для задачи ТСа Дженкинс не подходит. Для того чтобы дернуть из IDE запуск и удаленную отладку с предварительным билдом и копированием с помощью Дженкинса, ему придется раскурить для этого не только наркоманский интерфейс и засрать им 300+ метров оперативной памяти и 5% процессора. Ему еще придется поприседать в попытках из NetBeans/Eclipse/Idea дернуть API дженкинса.
Господи, как же я не люблю Jenkins, словами не передать.
А если в Jenkins не пользоваться всеми плагинами из репозитория, которые якобы тормозят весь такой процесс удалённой отладки, то это сильно помешает простой сборке и тестированию приложения?
зачем тут вообще дженкинс, если то же самое делает сам Maven? Объясни свою идею, не догоняю пока
«собирать/запускать/отлаживать код на удаленной машине»
если то же самое делает сам Maven
Ему еще придется поприседать в попытках из NetBeans/Eclipse/Idea дернуть API дженкинса.
По опыту из IDEA? Всё ясно с тобой.
Eclipse и NetBeans с помощью Hudson/Jenkins. Из коробки. По щелчку мышкой.
Работа дженкинса тут — выкачать из репозитория, сделать killall java, собрать через maven, дать команду на запуск.
Синхронизация файлов между серверами по SSH/RSync работает почти мгновенно.
Не нужно никаких коммитов в репозиторий, запуска джобов, совершенно никаких настроек — ничего
(кроме пароля на ssh или открытого ключа, который у тебя и так в
/.ssh/config прописан если ты не мазохист)
Просто когда ты прекратил писать и подождал секунду-другую — оно уже улетело на удаленный сервер.
Если пишешь на PHP — этого уже достаточно. Можно настроить LiveReload и видеть, как содержимое странички в браузере меняется одновременно с тем, как ты пишешь в текством файле, даже не нажимая ctrl+S.
Комбинация клиент: git-commit, git-push, jenkins: git-clone — работает миллион лет, она никогда не сможет соревноваться с тупым копированием файлов по ssh/rsync.
Плюс в такой комбинации тотально засрется коммит лог гита временными коммитами (ты же не будешь коммитить вручную? ты будешь git add . && git commit -a -m «temp commit»). И потом когда тебе таки захочется сделать полноценный коммит, придется применить особую гит магию для партиал сквошинга по тексту комментария «temp commit» — офигеть какая радость!
Если пишешь на джаве а не на PHP — придется еше добавить две вещи: подключаться удаленной отладкой (мы же не похапэшники, работать без отладчика) и мавеном запускать удаленную сборку. Дженкинс в этом опять же никак не помогает — удаленная отладка это ide+java agent, сборка мавеном делается одинаково из чего угодно
Кстати, если удаленная отладка запущена сквозь JRebel, то в каком-нибудь JSP или Thymeleaf можно сделать прямо как в примере с PHP. Только кнопку таки придется давить, JRebel тормозной и со временем начинает течь, если делать live reload каждые 200мс на это быстро наткнешься
«собирать/запускать/отлаживать код на удаленной машине»
файлы с кодом проекта уже автоматически положила тебе IDE на нужный сервер. Дело за малым, на этом сервере нужно запустить что-то вроде (строчки написал из головы, не проверял, могут быть опечатки):
Зачем тут какой-то дженкинс?
Если сильно хочется запустить на миллионе серверов, то сохраняешь эти строчки в файл, и дальше
то же можно сделать и без файла myapp.yml, просто однострочником в баше, но это говнокодерство и учить плохому не буду
в чем смысл тащить дженкинс ради трех строчек в консоли?!
в чем смысл тащить дженкинс ради трех строчек в консоли?!
Смысел — в атомарности заданий на построение и запуск.
У тебя на любом этапе вероятна лажа от случайного чиха кодера, рефлекторно задевшего клавишу. А при использовании нормальных коммитов и пушей/пуллов из/в локального репозитория dvcs на сервер сборки исключаются такого рода случайности. Не, ну если вам с Git такое делать тяжело и лениво, как ты тут описал, и вынужденно используется rsync, то с более прозрачной и простой в этом отношении dvcs Mercurial это не вызывает каких-либо затруднений. Тем более, что HG интегрирован в Netbeans настолько, что программист не замечает его работы и в любой момент может перейти на нужную версию проекта.
Тоже не вижу смысла тащить дженкинс. Может быть соберусь поставить и настроить докер, как посоветовал menangen . Или напишу скрипт на before launch, как посоветовал stevejobs .
Проблема в том, что я ковыряюсь с GWT+GXT (до сих пор). Проект большой (50kloc), собирается долго. На работе ещё время ожидания прилично (тут i7 4770), а по удаленке локально на ноутбуке собирать замаешься (атом вместо процессора, сборка при изменении пары строчек верстки одной из форм занимает около 12 минут). Вот и хочу заюзать мощности рабочего компа при сборке, а для редактора использовать локальную идею на ноуте (по VNC — мыло, по x2go — искажение цветов подсветки синтаксиса в редакторе идеи), ибо для редактора мощностей ноутбука хватает с лихвой, а запускаешь сборку — ноут можно даже не пытаться использовать — нагрузка процессора 100%, даже скролл в браузере лагает.
А ради правки верстки использовать dvcs считаю overkill’ом. В коммитах должно быть уже нечто осмысленное, когда что-то заработало и можно закрепить результат.
А ради правки верстки использовать dvcs считаю overkill’ом. В коммитах должно быть уже нечто осмысленное, когда что-то заработало и можно закрепить результат.
Согласен. Но тебе же надо целиком пересобирать проект после правки нескольких строчек, нет?
Тогда нужно разбить проект на модули и работать с каждым модулем по отдельности. Так можно будет отлаживать мелкие правки локально, а для пересборки всего проекта делать осмысленный коммит на сервер и собирать там.
У нас архитектура пока что далека от модульности. А времени, чтобы разбить это все по уму — пока нет.
Отладка кода в docker-контейнере из NetBeans
Я уже немного писал о NetBeans тут . Данная IDE умеет хорошо дружить с Xdebug, в связке с которым очень удобно отлаживать php-код. Основы успешно описаны, например, здесь.
Все интереснее, когда код приходится отлаживать не на локальной машине, а внутри docker-контейнера. Особенно, если нужно отладить cli-скрипт внутри контейнера.
Для успешной отладки следует:
- Настроить docker-контейнер с Xdebug внутри;
- Настроить Xdebug внутри контейнера;
- Настроить NetBeans.
При обычной отладке с использованием браузера и при отладке cli-скрипта настройки будут слегка отличаться. Итак, поехали.
Настройка контейнера
Установку Xdebug внутрь контейнера мы обсуждать не будем. Эти настройки можно найти, например, тут.
Интереснее настройки самого Xdebug.
В случае с обычной отладкой:
- xdebug.remote_enable — разрешает удаленную отладку.
- xdebug.remote_connect_back — автоматическое установление соединения с хостом, который иницирует удаленную отладку. Если не указывать эту опцию, то нужно использовать xdebug.remote_host , где следует указать ip вашего хоста из виртуального docker-адаптера.
- xdebug.idekey — ключ для соединения. Значение netbeans-xdebug задано в NetBeans по умолчанию. Можно не задавать эту опцию и использовать xdebug.remote_autostart=1 , но тогда Xdebug будет стартовать в каждом скрипте, даже если это не нужно, что скажется на производительности.
Настройка NetBeans
Для успешной отладки NetBeans должен знать как сопоставить между собой пути внутри docker-контейнера и пути в хостовой машине.
Идем в Свойства проекта, далее Выполнить настройку → Дополнительно. Внизу в разделе Отображение пути добавляем наше сопоставление.
Теперь, если запустить отладку проекта, то отладчик должен автоматически остановить выполнение на первой строке скрипта точки входа в приложение (если активирована соответствующая настройка в IDE).
Если ничего не произошло и вас отключена опция NetBeans Остановить в первой строчке, то удостоверьтесь, что поставили breakpoint где-то по пути выполнения скрипта. Если ни одного breakpoint не установлено, то следует установить его, остановить отладку и запустить снова.
Отладка cli-скрипта
Для отладки cli-скрипта все немного иначе. Главное отличие в том, что опция xdebug.remote_connect_back=1 нам не нужна, ведь соединения от хостовой машины не будет. Вместо этого NetBeans будет ожидать обращений от приложения.
Для начала настроим NetBeans.
Идем по уже известному пути Свойства проекта → Выполнить настройку. Здесь добавляем новую конфигурацию, нажав Создать…. Далее жмем Дополнительно и указываем опцию Не открывать браузер.
После настройки, кликаем правой кнопкой по проекту, выбираем Установить конфигурацию и задаем вариант, который только что создали.
Теперь можно нажать Отладка проекта или просто Ctrl+F5. Браузер не должен открыться.
Идем в меню Окно → IDE и сервис → Терминал. В появившемся терминале выполняем вход в docker-контейнер, выполнив что-то вроде:
%container_id% в данном случае id контейнера с вашим приложением.
Теперь самое интересное. Выполняем:
Обратите внимание на указанный remote_host. Именно по этому адресу Xdebug будет ломиться в отладчик. Проставьте свое значение на место %remote_host_ip%.
Теперь можно запустить какой-нибудь cli-скрипт. Например, миграции yii:
Если отладчик NetBeans запущен, то он должен отловить это событие и прервать выполнение на первой строке скрипта точки входа.
Отлаживаем PHP код с помощью NetBeans >
Приветствую вас, коллеги! Приходилось ли Вам встречаться с ошибками в PHP коде? Какую Вы использовали при этом программу для отладки Вашего кода? Если Вы до сих пор не имеете такой программы, то время пришло познакомиться с NetBeans >
В первую очередь необходимо добавить вот эти строки в php.ini вашего локального сервера:
Примечание: Как найти файл php.ini на вашем компьютере? Здесь показано как это сделать. Также вы можете прочитать как настроить php.ini на Mac OS X. После установки нужно создать новый проект для отладки и указать путь к своему ресурсу:
Когда Вы создали новый проект можно:
- Открыть проект в браузере:
- Открыть проект в новом окне браузера для отладки:
Если Вы открыли проект для отладки в браузере появиться надпись:
Launching. Please wait…
Это означает, что началась пошаговая отладка. Переходите для отладки в NetBeans!