Owlet-это коллекция веб-самостоятельных мероприятий, предназначенных для учащихся средних и старших классов для изучения технологических навыков посредством творческого исследования. Эти слайды объясняют мотивацию проекта.

Сгенерировано с использованием Luminus версии 2.9.11.68
lein run
lein figwheel
lein auto sassc once
Перейдите к http: // localhost: 3000/
Убедитесь, что у вас есть недавняя версия комплекта для разработки Java. Если нет, загрузите установщик со страницы загрузки Oracle. Выберите «Принять лицензионное соглашение» в верхней части панели для последней версии, затем нажмите имя файла для вашей платформы, например , JDK-8U112-Macosx-X64.dmg . Перейдите в папку загрузки, откройте файл .dmg и следуйте инструкциям. Чтобы проверить, введите java -version в терминал. Вы должны увидеть что -то вроде следующего:
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)
Обратите внимание, как версия - в данном случае «112» - соответствует загруженному вами файлу.
Вам также понадобятся утилита командной строки git , lein и rlwrap установленные в вашей системе. На Mac самый простой способ получить их - сначала установить Homebrew, затем в командной строке терминала выполнить это:
brew install git leiningen rlwrap
Наконец, компилятор SASSC
brew install sassc
Теперь, чтобы скопировать код Owlet на вашу машину, сначала cd , где вы хотите, чтобы каталог Owlet был, затем клонируйте этот репозиторий:
git clone https://github.com/codefordenver/owlet.git
Теперь, если вы делаете ls , вы должны увидеть новый каталог, owlet . Иди туда:
cd owlet
Чтобы работать над этим проектом, все, что вам действительно нужно, это терминал, браузер и любой текстовый редактор. Тем не менее, можно многое сказать об использовании курсивного плагина в идее Jetbrain Intellij. Поскольку он понимает, как различные части вашего кода и его зависимости соединяются вместе, вы можете делать рефакторинг кода, завершение интеллектуального кода, навигацию по одному щелчке к определению переменной, мгновенно просмотреть DocStrings, а также ошибки улова и орфографии. Лучше всего, из коробки вы можете запустить ead - e - print - l oop (Repl), который знает о вашем коде. Быстро поэкспериментируйте с вашим живым, запускающим код в командной строке Spep, загрузите небольшое изменение в реплику, пространства имен переключателей или запустите модульные тесты - все с парой клавишных.
Чтобы начать с IntelliJ Idea и Cursive, следуйте инструкциям по установке. Затем импортируйте существующий проект Leiningen, а именно Owlet.
Чтобы настроить Cursive Repl, подключенную к нашему запущенному приложению, нам нужно создать конфигурацию запуска/отладки.
Откройте IntelliJ и выберите « Путь меню».
Нажмите кнопку + в левом верхнем углу и выберите Clojure Repl .
Выберите удаленный .
Введите имя в поле «Имя» (например, Owlet nRepl ).
Выберите радиобатчу Используйте порт Leiningen Repl .
Снимите коробку активируйте окно инструмента внизу.
Нажмите кнопку OK , чтобы сохранить конфигурацию Repl.
Теперь, предполагая, что у вас есть Clojure Nrepl, запущенный в терминале (см. Запуск приложения, выше), вы можете в любое время зацепить его с курсив.
Перейдите, чтобы запустить -> запустить ... , затем выберите конфигурацию Repl (называемый «Owlet Nrepl» выше). Появится новое окно инструмента «Кризисная реплика». Вы должны немедленно увидеть это только в окне реплики:
Connecting to remote nREPL server...
Clojure 1.8.0
Теперь, когда мы подключены к Clojure Nrepl, создайте реплику Clojurescript, оценив следующий код Clojure в текстовом поле в нижней части окна инструмента Repl:
(figwheel-sidecar.repl-api/cljs-repl)
Вы должны увидеть что -то вроде этого вывода:
...
Prompt will show when Figwheel connects to your application
To quit, type: :cljs/quit
=> nil
Теперь, поскольку мы просто «поднимаемся» на тот же сервер FIGHEEL, когда вы изменяете и сохраняете файл .CLJS, FIGHEEL заметит и автоматически перезагрузит его. Из Reply вы можете управлять приложением по мере его запуска, поскольку вы оцениваете код в контексте приложения Live. Кроме того, у вас есть доступ к инструментам Cursive Repl, которые взаимодействуют с редактором, например:
Переключить реплику на текущий файл
Загрузить файл в Repl
Отправить форму перед опекой в Repl
Запустите тесты в текущих NS в Repl
Добавить новую команду Repl
Например, хорошая идея-добавить свою собственную команду Reply, чтобы оценить код cljs-repl , выше. После того, как у вас есть окно Repl, выберите «Инструменты» -> Repl -> Добавьте новую команду Repl . Дайте вашей команде имя, выберите Radio Radio и введите (Figwheel- sidecar.repl (figwheel-sidecar.repl-api/cljs-repl) как указано выше. Выберите флажок «Специфический проект» и «ОК» . Затем для легкого доступа вы можете определить сочетание клавиатуры по вашему выбору в Intellij Idea -> Preferences ... -> Keymap .
После того, как вы запустите script/figwheel-repl.sh , работает Clojure Nrepl, и вы можете «поднять», чтобы получить другую реплику, а затем еще одна реплика Clojurescript, аналогично тому, как мы это сделали в курсе:
Убедитесь, что ваш NREPL начинается с помощью script/figwheel-repl.sh все еще работает.
Из терминала запустите следующую команду:
lein repl :connect
Теперь вы должны иметь Clojure Repl с помощью owlet.server=> .
Как и в случае с курсивом, введите следующий код Clojure в приглашении:
(figwheel-sidecar.repl-api/cljs-repl)
Вы должны увидеть выход, как это:
...
To quit, type: :cljs/quit
nil
cljs.user=>
С небольшой дополнительной настройкой вы можете работать над Owlet, используя удивительную среду отладки Dirac Devtools Browser. Вы по -прежнему будете запускать приложение с помощью FIGWHEEL, поэтому модифицированные файлы все равно будут компилировать и загружаться автоматически, но в DIRAC будет запущена реплика браузера. Среда Dirac в браузере на самом деле представляет собой расширение Chrome, состоящее из индивидуальной вилки Chrome Devtools, инструмента отладки JavaScript, встроенного в Chrome. Тем не менее, он использует функции, предоставляемые только последней версией Chrome Devtools, поэтому требуется канарейская версия Chrome.
Если процесс script/figwheel-repl.sh начинается выше, запускается, то остановите его (Control-D).
Загрузите и установите настольное приложение, Google Chrome Canary.
Если вы открыли его, бросьте Chrome Canary.
В терминале убедитесь, что текущий рабочий каталог по -прежнему остается тем, который содержат этот файл readme.md.
В командной строке запустите
script/start-chrome-canary.sh
Вы увидите пустое хромированное окно с местоположением http: // localhost: 3000/. Это пусто, потому что мы еще не запустили сервер Owlet.
Кстати, эта команда заключается в том, как вам нужно запустить браузер, когда вы работаете над Owlet с Dirac. См. ниже.
Установите расширение Dirac Devtools, предоставив ему доступ к вашим данным. Вы должны увидеть маленькую зеленую икону справа от адресной панели в окне.
Поскольку вы начали Chrome Canary со сценарием выше, расширение будет фактически сохранено в каталоге
.dirac-chrome-profile/, поэтому установка его или изменение некоторых настроек не повлияет (и не будет влиять на любые существующие настройки или расширения, которые вы можете иметь в Chrome, когда начинаете нормально, скажем, двойной щелчок на значок Chrome или Chrome Canary.
Теперь, когда Chrome Canary и Dirac Devtools расширяются локально в каталоге проектов Owlet, давайте использовать его с Owlet.
В терминале убедитесь, что текущий рабочий каталог по -прежнему остается тем, который содержат этот файл readme.md.
Как указано выше, запустите приложение с FigWheel, но на этот раз используя опцию --dirac :
script/figwheel-repl.sh dirac
Когда вы видите следующее, Nrepl начался, и сервер Dirac ждет клиента браузера:
...
owlet.server=>
Dirac Agent v0.8.8
Connected to nREPL server at nrepl://localhost:8230.
Agent is accepting connections at ws://localhost:8231.
Если Chrome Canary еще не работает, запустите его, запустив следующее в отдельном окне терминала:
script/start-chrome-canary.sh
Теперь вы должны увидеть приложение Owlet, работающее в окне, которое появляется.
Как только вы запустите Chrome Canary, вы можете оставить его открытым, даже если вы перезапустите приложение Owlet и Repl. Как всегда, вы можете чистое перезагрузить приложение с помощью View-> Porce Relought этой страницы (командный сдвиг-R).
Нажмите на значок панели инструментов Dirac Devtools. Должно появиться окно консоли Dirac Devtools. Обратите внимание на инструкции о переключении между Clojurescript и JavaScript Spurs (Control-,). Если вы видите сообщение об ошибке, «CLJS Devtools: Некоторые пользовательские форматеры не были отображены», то просто выполните представление-> Перезагрузить силу эту страницу (командный сдвиг-R).
Хотя вы можете быть в привычке набрать Command-Option-I, не так! Не открывайте обычные Chrome Devtools.
Попробуйте Nice Repl на вкладке Console и посмотрите, как скобки автоматически сбалансированы, клавиши со стрелками поднимают вас в историю реплики, символы завершаются при вводе.
Попробуйте отладчик тоже. Он работает так же, как отладчик Chrome Devtools, за исключением того, что исходным кодом является как Clojurescript, так и JavaScript, для которого он компилируется. На вкладке «Источники» сверлим вниз -> Localhost: 4000 -> js/compilled -> out , нажмите на ов. Когда приложение останавливается в точке останова, посмотрите на текущие переменные в разделе «Область отладчика». Затем вернемся на вкладку «Консоль» , введите формы Clojurescript в Repl. Они будут оцениваться в контексте точки останова. Нажмите кнопку резюме или клавишу F8, чтобы приложение продолжилось.
С Дираком вам не нужно отказываться от курса. Так же, как мы подключились к реплике FIGHEEL CLJS выше, мы можем связаться с Dirac Repl.
Если у вас есть реплика, работающая на курсе, остановите ее, нажав X на панели инструментов.
Перейдите, чтобы запустить -> запустить ... и выберите конфигурацию Repl, которую мы создали выше, как и прежде, вы должны сразу же увидеть это в окне:
Connecting to remote nREPL server...
Clojure 1.8.0
Теперь, как и прежде, мы подключены к Clojure Nrepl, но на этот раз мы подключаемся к Dirac Clojurescript Repl. Оцените следующий код Clojure в текстовом поле в нижней части окна инструмента Repl:
(dirac! :join)
Вы должны увидеть что -то вроде этого вывода:
...
Your current nREPL session is a joined Dirac session (ClojureScript) which targets 'the most recent Dirac session'
...
To quit, type: :cljs/quit
=> nil
Как упомянуто выше, это хорошая идея, чтобы добавить новую команду Reply и определить сочетание клавиш, чтобы ввести команду (dirac! :join) для вас.
Вы можете связаться с Dirac Repl, точно так же, как мы это сделали с репликой FIGHEEL, лишь небольшой разницей. Конечно, сначала убедитесь, что процесс, который вы начали с script/figwheel-repl.sh dirac все еще работает, а затем просто следуйте указаниям выше, до последнего шага. Вместо этого сделайте это:
Как и в случае с курсивом, введите следующий код Clojure в приглашении:
(dirac! :join)
Вы должны увидеть выход, как это:
...
To quit, type: :cljs/quit
nil
cljs.user=>
Когда вы оцениваете выражение в Dirac Clojurescript Reply, результат будет показан после => в терминале или в окне курса, как и ожидалось. Тем не менее, побочные эффекты, такие как печатный выход или следы стека исключений, будут показаны только в консоли Dirac Devtools . Это может сбить с толку, особенно если вы вставили печатное заявление и ничего не видите, или вы не понимаете, что что -то сломалось, потому что вы не видите исключения! Вам нужно посмотреть на консоли Dirac Devtools. Консоль будет отражать введенное вами выражение, его результат и любые печатные побочные эффекты. Так что просто держите хромированную канарейку поблизости, а окно Dirac Devtools под рукой.
Лицензия ISC
Copyright (C) Код для Денвера и участников
Разрешение на использование, копирование, изменение и/или распределение этого программного обеспечения для любой цели с платой или без него предоставляется, при условии, что вышеуказанное уведомление об авторском праве и это уведомление о разрешении появляется во всех копиях.
Программное обеспечение предоставляется «как есть», и автор отказывается от всех гарантий в отношении этого программного обеспечения, включая все подразумеваемые гарантии товарной способности и пригодности. Ни в коем случае автор не должен нести ответственность за какие -либо специальные, прямые, косвенные или косвенные убытки или каких -либо ущерб, вызванных потерей использования, данных или прибыли, будь то в действии контракта, халатности или других искажений, возникающих из или в связи с использованием или производительности этого программного обеспечения.