Лайфхаки в веб-разработке

    Upgrade your Life

    Ссылки открытия файлов в IDE


    Это облегчит вам поиск нужного файла.
    Вы сможете создавать ссылки на код прямо на странице ошибки. Или в журнале ошибок.
    Сделайте ссылки в dev панели на класс контроллера и файл шаблона (или что там у вас?)
    Клик на такую ссылку будет переносить вас в соответствующий файл открытой IDE.



    Как сделать?
    Зарегистрируйте протокол для открытия файла или класса в IDE
    Я использую протокол «edit:» и такую схему URL
    edit:className@project
    edit:relativePath@project
    Программа, зарегистрированная за этим протоколом, определяет абсолютный путь к файлу и передает его в IDE.

    В Опере зарегистрировать протокол тривиально:
    Настройки → Расшиненные → Программы → Добавить…
    Выбираете протокол (двоеточия не нужны) и программу

    Для других браузеров можно настроить в операционной системе.
    В Windows это делается через реестр.
    В Unix через жопу по-разному.

    К сожалению, ни одна используемая мной IDE не поддерживает открытие файла на конкретной строке через CLI.
    А было бы классно.


    upd: vim умеет, спасибо Stdit
    vim -c line filename

    upd: IDE от Jetbrains тоже научились, спасибо cuhuak
    PHPStorm (да и, наверное, все IDE Jetbrains) умеет открывать файл на конкретной строке через CLI:
    phpstorm --line N filename.

    Причем, если у вас filename уже открыт и вы пытаетесь перейти на другую строку в этом файле, то IDE заботливо плавно проскролит в нужное место.

    Я рад.

    Короткий путь до файлов проекта


    Путь вида /home/Ti/Project/projectname/www ломает клавиатуру
    Программируя, нужно туда ходить или выполнять там программы.
    На это место я создаю симлинку /w
    Для документации проекта и всяких PSD я завожу путь /d

    В Windows (привет, Document and Settings) тоже можно создавать симлинки или подключайте папки как диск.

    Автоматические виртуальные хосты в веб сервере


    В ручную заводить хосты — тратить время
    У меня сделано так

    CLI советы


    Я пользую Unix операционную систему (FreeBSD) и терминал это моя правая рука.

    Набор скриптов для работы с проектами

    При работе с большим количеством проектов, например, если вы работаете в веб-студии или вы фрилансер, скрипты спасут вашу жизнь.

    Для каждого проекта создается простой конфиг настроек:
    — опции деплоя
    — параметры подключения к базе
    — параметры SSH
    — и т.д.

    Я использую такие скрипты по управлению проектами:
    • Создание
      Создает конфиг проекта и открывает его на правку
    • Изменение
      Открывает на правку конфиг
    • Создание базы данных
    • Открытие
      создает симлинки проекта:
      /w на сорцы
      /d на документацию, фотошоп и прочие файлы проекта
      Было бы здорово если можно через CLI открывать проект в IDE
    • Бэкап
      Бекапит production
    • Восстановление production из бекапа
    • Клонирование
      Копирует с проект с бэкапа в рабочую версию
    • SSH на production
    • MySQL локальный и на production
      CLI к базе MySQL проекта
      Удобно указывать после пайпа unix.
      Напрмер, можно залить дамп SQL в базу
      $ pv dump.sql | pj-mysql projectname
    • Деплой
    • Открытие класса/файла в IDE
    • и некоторые другие


    Настройка SHELL

    Настройте свой shell на удобную подстановку комманд, подстановки имени проекта в скриптах, вывод информации по системе контроля версий.

    Спасибо


    В комментариях, предлагаю хабрачеловекам поделиться своими лайфхаками в веб-разработке.

    Дополнения


    Ссылка для переключения между dev и prod хостами

    Сделайте ссылку в dev-панели для переключения между разрабатываемой локальной версией и рабочим, production, сайтом.
    Или используйте другой инструмент для быстрого переключения между этими хостами.

    Дополнения из комментариев


    Маркировка цветом разных серверов (спасибо, Stdit)

    Раскрашивайте приглашения разных серверов в разные цвета. Например так (.bash_profile):
    PS1='\e[32m\D{%Y-%m-%d %H:%M:%S} \w\e[0m\n\$ '

    Звуковое оповещение о критических ошибках (спасибо, Stdit)

    Если вы следите за логами через tail -f, добавляйте к сообщениям о критических ошибках символ №7 (\a).
    Это добавит звуковой сигнал (Bell) в ваш терминал.
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 32

      +1
      Спасибо за пост.
      Более-менее всё кроме первого, что вы описали, общеизвестно и понятно.
      А вот первое — это крутая методика. Сам таким пользуюсь. Причём вычитал в каком-то совершенно случайном месте ещё лет эдак пять назад :-) Кто вообще такую идею первый донёс в массы, не знаете?
        0
        В OS Inferno, Plan9 и acme-sac это работало из коробки всегда, насколько мне известно. Так что идее минимум лет 15. Там клик на любом тексте вида /path/to/file:123 в любом приложении открывает его в ide на этой строчке. Не уверен, но возможно поддерживается и /path/to/file:/regex. По крайней мере это описано в оригинальном paper Роба Пайка 1994 года «Acme: A User Interface for Programmers».
        0
        Много лет использую эту технику но не слышал о ней от других.
        «Недавно предлагал» внедрить в трейсе ошибок Yii
          0
          Так предлогали б уже на офф форуме или же надстройку для компонента трэйса в экстеншены выложили бы. Делов то. Такие вещи в сам фреймворк пихать нехорошо.
            0
            сам Yii не использую — по этому далеко ходить не стал ;)
          +6
          — Раскрашивайте приглашения разных серверов в разные цвета. Например так (.bash_profile):
          PS1='\e[32m\D{%Y-%m-%d %H:%M:%S} \w\e[0m\n\$ '
          
          — Если следите за логами через tail -f, добавляйте к сообщениям о критических ошибках символ №7 (\a)

          > К сожалению, ни одна используемая мной IDE не поддерживает открытие файла на конкретной строке через CLI.
          vim -c line filename
          Голосуйте за фичу в эклипсе.
            +2
            PHPStorm (да и, наверное, все IDE Jetbrains) умеет открывать файл на конкретной строке через CLI:

            phpstorm --line N filename.

            Причем, если у вас filename уже открыт и вы пытаетесь перейти на другую строку в этом файле, то IDE заботливо плавно проскролит в нужное место.
              +1
              Даже проще.
              vim +номер_строки имя_файла
                0
                кстати, с gedit точно так же:
                gedit +номер_строки имя_файла
              +1
              «Зарегистрируйте протокол для открытия файла или класса в IDE»

              Идея хорошая, если осторожно [urlsecurity].
                +1
                это статья перевод? Лайфхаки в веб-разаботке

                У меня такой советы, но они для Firefox, ссори, если кому-то покажутся баянами.

                1) Когда нужно найти определение стиля, то устанавливайте Веб-девелопер (WebDeveloper) для FF, и нажимайте ctrl+shift+c (либо соответствующий пункт в Веб-девелопере), чтобы просматривать все стили на одной странице.

                2) Когда нужно найти, где проходят, границы элемента, то либо в Файрбаге добавляем в стили элемента " border:1px solid red;", либо выбираем соответствущий пункт в Веб-девелопере (меню «Контуры» -> «Контуры таблиц», «Контуры» -> «Контуры элементов уровня блока» и т.д.)

                3) чтобы узнать посмотреть код js-функции, напишете в Firebug'е имя_функции_без_скобок + '';", пример: узнать код функции «test»: test + '';

                4) в Файрбаге можно переопределить код js-функции, полезно при разборе чужого кода.

                5) отрубить console.log, если браузер клиента его не поддерживает:
                if (window['console'] == null) {
                console = new Object();
                console.log = function () {};
                }
                  0
                  по поводу первого пункта: я имел в виду определение класса стиля.
                    +2
                    2) border добавит к габаритам блока 2px, православней использовать outline.
                      +1
                      > это статья перевод?

                      «CLI советы», «пользую Unix операционную систему», «В Опере зарегистрировать протокол тривиально»…

                      Статья — либо перевод англоязычной заметки, либо компиляция переводов англоязычных заметок. Либо автор уже начал крепко забывать грамматику русского языка.
                        0
                        вот я о том же
                          +1
                          как можно забыть, то что не знал?)
                        0
                        OlegTar, нет, это не перевод
                          0
                          habr съел комментарии :(
                            0
                            Stdit
                            — Если следите за логами через tail -f, добавляйте к сообщениям о критических ошибках символ №7 (\a)


                            Что делает этот символ? Мне не удалось воспроизвести.
                              0
                              ASCII символ BEL, Bell. Звонок, звуковой сигнал. Терминал должен пискнуть.
                                0
                                Спасибо. Bell у меня выключен, но совет однозначно хороший
                                0
                                логично предположить что это beep — но у меня тоже почему-то не beepает echo -e "\a" (
                                0
                                Добавлен совет:
                                Сделайте ссылку в dev-панели для переключения между разрабатываемой локальной версией и рабочим, production, сайтом.
                                Или используйте другой инструмент для быстрого переключения между этими хостами.
                                  0
                                  Я поделился бы следующими советами:
                                  1) Как динамически генерировать фоновую картинку в iTerm с именем сервера. очень удобно, теперь точно не ошиешься где стейджинг, а где продакшен

                                  2) Все кастомные скрипты для разных серверов покажутся костылями если все таки разобраться как настроить .ssh/config.

                                  3) Консольный mysql превосходно умеет читать параметры пользователя из файла ~/.my.cnf

                                  После этого вместо всяких ssh -P 8022 username@domain.server.ru «mysql -u -p database» можно написать просто:
                                  ssh ds mysql и мы окажемся на удаленном сервере, в мускуле, причем имя сервера будет в бэкграунде.
                                  Плюс будут работать пайпа, слить с одного сервера базу и залить в другой можно в четыре слова, причем это нативно и работает на любом сервере.
                                    0
                                    Спасибо за комментарий.

                                    1) Доставляет. Можно такое сделать для gnome-terminal?
                                    (хотя, лично меня строка приглашения, с именем хоста в ней, не подводила)

                                    2) Хранить настройки ssh в ~/.ssh/config удобней, согласен
                                    Но скрипты знают не только порт логин и хост. Еще нужен путь до проекта.

                                    3) Знать имя базы данных не всегда возможно. Как выставлять такие параметры на сервер, где под одним и тем же пользователем работает несколько сайтов и параметры подключения к MySQL у них разные?

                                    Скрипты по управлению проектами тоже можно использовать в пайпах.
                                      0
                                      1) можно реализовать подобное, но не под gnome-terminal, через dbus. Когда-то видел ман
                                      2) зато будут работать scp и даже экзотические вещи типа коннекта по ssh на машину за натом, с одновременным пробрасыванием удаленных портов к себе
                                      3) имя базы тоже задавать в ~/.my.cnf Кроме того просто хороший тон что б разные сайты крутились под разными пользователями.
                                        0
                                        3) даже в безопасности. Кроме того, задать можно только одну базу, а проектов много. Как их на своей машине указывать?

                                        Иногда не ты диктуешь правила и нужно пользоваться тем что есть.
                                          0
                                          не хочу доказывать что мягкое лучше чем теплое, просто опишу плюсы стандартных либ против кастомных скриптов
                                          1) работает scp, даже через нат
                                          2) работает автодополнение для команд на удаленном сервере
                                          3) работает автодополнение для серверов, прописанных в конфиге (надо настроить)
                                          4) работает автодополнение для имен баз

                                          Например, надо слить удаленную базу, пишем:
                                          $ ssh ho(Tab) mysqld(Tab) | mys(Tab) da(Tab)
                                          превращается в команду
                                          $ ssh hostname.tdl mysqldump | mysql databasename
                                    0
                                    путь к кому чему? до файла к файлу
                                      0
                                      как вам угодно ;)
                                      –3
                                      хуй
                                        0
                                        BELL

                                        в sh-скриптах можно печатать этот символ так:
                                        echo ^G
                                        или
                                        printf "\a"

                                        N.B. ^G — это один символ
                                        bit.ly/xkMJA5

                                        tail

                                        я использую tail -F, т.к. в случае ротирования файла, tail -f его потеряет, а tail -F переоткроет файл.

                                        Only users with full accounts can post comments. Log in, please.