IDE

Jul. 27th, 2014 10:24 pm
ermouth: (Default)
[personal profile] ermouth

Такой milestone в некотором смысле – я написал первый в своей жизни IDE, заточенный под разработку и тестирование jQuery.my-форм.

Снимок экрана 2014-07-27 в 21.53.28

Интересно, что IDE сам по себе тоже приложение jQuery.my – на картинке в редакторе кода открыт сам редактор этого кода, центральный компонент. И кнопкой Play можно запустить в IDE превью самого себя.

Вот например редактор показывает живое превью самого себя во всплывающем окошке:

Снимок экрана 2014-07-27 в 22.01.23

Из интересных фич:

  1. Каждая вкладка помнит своё undo, хотя это всё части одного json-объекта
  2. Код валидируется в реальном времени, причём не только синтаксически, но и структурно
  3. Позволяет включать в json-объекты файлы как ресурсы (вообще нигде в вебовых IDE не видел, удобно просто супер, форма например с картинками, которая не зависит от внешних ресурсов совсем)
  4. Есть кнопка Play (превью), которая работает мгновенно – компилирует манифест и запускает его либо в модальном диалоге, либо фуллскрин, либо инлайн, причём может с имитацией чужого окружения
  5. Превью может помнить, что вы в него наколачивали при прошлом запуске (запоминает state разрабатываемого приложения)
  6. Сам редактор – приложение jQuery.my и поэтому в одну короткую строку встраивается в любое другое jQuery.my приложение как контрол (есть же контролы rich-editor’ов, почему бы не быть контролу, который сразу IDE?)
  7. Так же легко, в одну строку, это приложение встраивается в любую веб-страницу.

Хвалите меня, немногочисленные читатели ) Устал чёто как собака.

PS. Мне пришли компоненты робота – микроконтроллеры, камеры, акселерометры, серво и тд. Начал проектировать.

Date: 2014-07-27 06:45 pm (UTC)
From: [identity profile] trubachev.livejournal.com
Дима, это всё очень круто, реально круто, но зачем?

Date: 2014-07-27 06:56 pm (UTC)
From: [identity profile] ermouth.livejournal.com
«Вот же круто, а зачем?» (с) Быков

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

Там, где другие вытачивают из трактора например Битрикса что-то похожее на кукурузник, мы сразу делаем звездолёт. За то же время. И всего раза в два дороже, да.

Тёма, я на этом деньги зарабатываю ) Сам он не продаётся, но вот то что в нём сделано – очень даже.
Edited Date: 2014-07-27 06:57 pm (UTC)

Date: 2014-07-27 07:10 pm (UTC)
From: [identity profile] trubachev.livejournal.com
Зачем мне редактировать код в браузере?

Date: 2014-07-27 07:23 pm (UTC)
From: [identity profile] ermouth.livejournal.com
Это манифесты, оно код, конечно, но с особенностями.

Манифест – json в результате, то-есть дерево с ветками. Обычный IDE даст тебе редактировать такой объект – но никак не в нескольких вкладках с независимыми undo.

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

И совсем точно без валидации.

Date: 2014-07-27 09:18 pm (UTC)
From: [identity profile] morfizm.livejournal.com
Офигенно!

Давай накидаю идей для интересного продолжения (т.к. я сам об этом давно думал, но, судя по всему, у тебя есть силы-желания-возможность таки делать :)).

1. Сделай компоненты данных, которые можно именовать и "бросать на страницу" в режиме разработки, чтобы с помощью них связывать комноненты с кодом. Конечный пользователь не увидит компоненты данных. По сути свой "data" (который у тебя inline) вынеси в отдельный кусок.

2. Сделай возможность создания новых страниц и обмена данными между ними через имена. Скажем, в режиме редактора создаёшь новую страницу "abc" и в URL добавляется "abc". Теперь "/abc" это новый неймспейс для данных на этой странице. Можно подсасывать данные с соседних страниц через их неймспейс.имя-таблицы.

3. Сделай интеграцию со storage на бэкэнде. Скажем, именованные key-value таблицы, привязанные к тому же неймспейсу, т.е. для каждой "страницы" свой неймспейс.

4. Невидимые компоненты с автоматическими тестами для бэкэнда можно будет тоже прямо на странице создавать и настроить, чтобы они исполнялись на сервере и слали результат на e-mail.

5. Осталось только прошить user ids/session ids, и всё, можно будет клепать полновесные сайты, вообще не закрывая browser, в нём же тестировать. Всё это без администрирования бэкэнда через ssh, без знания какого-то ЯП кроме JS, etc. Лепота.

P.S. Твои демо у меня не работают в IE. Не нажимается кнопка Run.
Edited Date: 2014-07-27 09:21 pm (UTC)

Date: 2014-07-27 10:00 pm (UTC)
From: [identity profile] ermouth.livejournal.com
1. сделано уже, табы со звёздочкой и курсивом оно и есть, причём оно может быть извне загружаемым перед стартом превью

2. сделано уже, вся система так спроектирована кста. То-есть если есть два манифеста, один id=ns.Editor, а второй id=ns.Editor.Component, то этот второй сядет на ветку Component первого. Так работает внутренний кэш манифестов jQuery.my.

3. Это делается, будет repo, который по id отдаёт манифест. Вернее, оно уже есть.

4. Ты не поверишь... Разве что не на емэйл )

5. Мы вообще то так и делаем.Поднимаем клон амазоновского имиджа, а дальше практически всё в браузере можно. Пример – new.dvinaland.ru.

Не понял, какие демо. Если на jquerymy.com на заглавной – у меня работает в ИЕ. Скажи подробнее плз, что у тебя за машина и какой ИЕ.

Date: 2014-07-27 10:08 pm (UTC)
From: [identity profile] ermouth.livejournal.com
Кста всё это дерево компонентов как примерно выглядеть можно посмотреть.

Надо открыть cloudwall.me, лучше в Хроме, можно не логиниться (нажать Esc если вылезло окошко).

Открыть консоль и выполнить $.my.cache(null)

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

Profile

ermouth: (Default)
ermouth

November 2021

S M T W T F S
 123456
78910111213
14151617181920
21 222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 1st, 2026 06:31 pm
Powered by Dreamwidth Studios