Owlet é uma coleção de atividades auto-guiadas baseadas na Web, projetadas para estudantes do ensino médio e médio para aprender habilidades tecnológicas por meio da exploração criativa. Esses slides explicam a motivação por trás do projeto.

Gerado usando o luminus versão 2.9.11.68
lein run
lein figwheel
lein auto sassc once
Navegue para http: // localhost: 3000/
Certifique -se de ter uma versão recente do Java Development Kit. Caso contrário, faça o download do instalador na página Oracle Downloads. Selecione Aceitar Contrato de licença na parte superior do painel para a versão mais recente e clique no nome do arquivo para sua plataforma, por exemplo , JDK-8U112-Macosx-x64.dmg . Vá para sua pasta de downloads, abra o arquivo .dmg e siga as instruções. Para verificar, digite java -version em um terminal. Você deve ver algo como o seguinte:
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)
Observe como a versão - neste caso "112" - corresponde ao arquivo que você baixou.
Você também precisará dos utilitários da linha de comando git , lein e rlwrap instalados no seu sistema. Em um Mac, a maneira mais fácil de obtê -los é primeiro instalar o homebrew, depois em uma linha de comando do terminal, execute o seguinte:
brew install git leiningen rlwrap
Finalmente, o compilador SASSC
brew install sassc
Agora, para copiar o código OWLET na sua máquina, primeiro cd para onde você deseja que o diretório OWLET seja, clone este repositório:
git clone https://github.com/codefordenver/owlet.git
Agora, se você fizer ls , verá um novo diretório, owlet . Vá lá:
cd owlet
Para trabalhar neste projeto, tudo o que você realmente precisa é de um terminal, um navegador e qualquer editor de texto. No entanto, há muito a ser dito sobre o uso do plug -in cursivo na idéia Intellij da JetBrain. Como ele entende como as diferentes partes do seu código e suas dependências se conectam, você pode fazer a refatoração de código, a conclusão do código inteligente, a navegação com um clique para uma definição de variável, visualizar instantaneamente os documentos e capturar erros de arity e ortografia. O melhor de tudo é que você pode executar um valor de valor (REPL) que conhece seu código. Experimente rapidamente o seu código ao vivo, executando a linha de comando do REPL, carregue uma pequena alteração no REPL, switch namespaces ou execute testes de unidade - tudo com apenas alguns pressionamentos de teclas.
Para começar com o Intellij Idea e Cursive, siga as instruções de instalação cursiva. Em seguida, importe um projeto de Leiningen existente, como Owlet.
Para configurar o repl cursivo conectado ao nosso aplicativo em execução, precisamos criar uma configuração de execução/depuração.
Abra o Intellij e selecione Item de menu Executar -> Editar configurações ...
Clique no botão + no canto superior esquerdo e escolha Clojure Repl .
Escolha remoto .
Digite um nome no campo Nome (por exemplo, Owlet nRepl ).
Escolha o botão de rádio Use a porta Repl Leiningen .
Desmarque a caixa Ative a janela da ferramenta na parte inferior.
Clique no botão OK para salvar sua configuração Repl.
Agora, supondo que você tenha um clojure nrepl iniciado no terminal (consulte a execução do aplicativo acima), você pode conectá -lo a partir de cursivo a qualquer momento:
Vá para Run -> Executar ... e selecione sua configuração Repl (chamada "Owlet NREPL" acima). Uma nova janela de ferramenta repl cursiva aparecerá. Você deve ver imediatamente isso na janela Repl:
Connecting to remote nREPL server...
Clojure 1.8.0
Agora que estamos conectados ao clojure nrepl, crie um clojurescript Repl, avaliando o seguinte código de clojure na caixa de texto na parte inferior da janela Repl Tool:
(figwheel-sidecar.repl-api/cljs-repl)
Você deve ver algo como esta saída:
...
Prompt will show when Figwheel connects to your application
To quit, type: :cljs/quit
=> nil
Agora, como estamos apenas "entrando" no mesmo servidor Fig -Wheel, quando você modifica e salva um arquivo .cljs, o Figwheel percebe e o recarregue automaticamente. A partir do REPL, você pode controlar o aplicativo conforme ele está em execução, pois está avaliando o código no contexto do aplicativo LIVE. Além disso, você tem acesso às ferramentas de repl cursivas que interagem com o editor, como:
Alterne os repladores para o arquivo atual
Carregar arquivo em repl
Enviar formulário antes do caret para repl
Execute testes no NS atual em Repl
Adicionar novo comando repl
Por exemplo, uma boa idéia seria adicionar seu próprio comando repl para avaliar o código cljs-repl , acima. Depois de ter uma janela Repl, selecione Ferramentas -> Repl -> Adicionar novo comando REPL . Dê um nome ao seu comando, selecione o botão Execute Radio e digite (figwheel-sidecar.repl-api/cljs-repl) como acima. Selecione a caixa de seleção específica do projeto e OK . Em seguida, para facilitar o acesso, você pode definir um atalho de teclado de sua escolha no Intellij Idea -> Preferências ... -> keymap .
Depois de executar script/figwheel-repl.sh , um clojure nrepl está funcionando, e você pode "invadir" para obter outro clojure repl, depois outro clojurescript repl, semelhante ao que fizemos no cursivo:
Confirme que seu NREPL começou por script/figwheel-repl.sh ainda está em execução.
De um terminal, execute o seguinte comando:
lein repl :connect
Agora você deve ter um clojure repl com o prompt, owlet.server=> .
Assim como o cursivo, insira o seguinte código de clojure no prompt:
(figwheel-sidecar.repl-api/cljs-repl)
Você deve ver a saída assim:
...
To quit, type: :cljs/quit
nil
cljs.user=>
Com um pouco de configuração extra, você pode trabalhar em Owlet usando o incrível ambiente de depuração do navegador Dirac Devtools. Você ainda estará executando o aplicativo com a roda do FIGME, para que os arquivos modificados ainda compilem e carreguem automaticamente, mas o navegador Repl estará em execução no DIRAC. O ambiente DIRAC no navegador é na verdade uma extensão do Chrome que consiste em um garfo personalizado de Chrome Devtools, a ferramenta de depuração JavaScript incorporada no Chrome. No entanto, utiliza os recursos fornecidos apenas pela versão mais recente do Chrome Devtools, e é por isso que a versão canária do Chrome é necessária.
Se o processo script/figwheel-repl.sh iniciado acima estiver em execução, pare-o (Control-D).
Faça o download e instale o aplicativo de desktop, Google Chrome Canary.
Se você abriu, deixe o Chrome Canary.
No terminal, verifique se o diretório de trabalho atual ainda é o que contém esse arquivo readme.md.
Na linha de comando, execute
script/start-chrome-canary.sh
Você verá uma janela Chrome vazia com local http: // localhost: 3000/. Está vazio porque ainda não iniciamos o OWLET Server.
A propósito, esse comando é como você precisará iniciar o navegador sempre que trabalhar no Owlet com o DIRAC. Veja abaixo.
Instale a extensão Dirac Devtools, concedendo acesso aos seus dados. Você deve ver um pequeno ícone verde à direita da barra de endereço na janela.
Desde que você iniciou o Chrome Canary com o script acima, a extensão será realmente salva no diretório
.dirac-chrome-profile/, portanto, instalá-lo ou alterar algumas configurações não afetará (nem é afetado por quaisquer configurações ou extensões existentes que você possa ter em cromo quando iniciado normalmente, por exemplo, clique duas vezes o Chrome ou o Chrome ou o Chrome Canary Icon.
Agora que o Chrome Canary e a extensão Dirac Devtools estão instalados localmente no diretório do projeto OWLET, vamos usá -lo com o OWLE.
No terminal, verifique se o diretório de trabalho atual ainda é o que contém esse arquivo readme.md.
Como acima, inicie o aplicativo com a roda Fig -Wheel, mas desta vez usando a opção --dirac :
script/figwheel-repl.sh dirac
Quando você vê o seguinte, o NREPL começou e o servidor Dirac está aguardando o cliente do navegador:
...
owlet.server=>
Dirac Agent v0.8.8
Connected to nREPL server at nrepl://localhost:8230.
Agent is accepting connections at ws://localhost:8231.
Se o Chrome Canary já não estiver em execução, inicie -o executando o seguinte em uma janela de terminal separada:
script/start-chrome-canary.sh
Agora você deve ver o aplicativo Owlet em execução na janela que aparece.
Depois de iniciar o Chrome Canary dessa maneira, você pode deixá -lo aberto, mesmo se reiniciar o aplicativo Owlet e o REPL. Como sempre, você pode recarregar o aplicativo de forma limpa com o View-> Recarregar esta página (Command-Shift-R).
Clique no ícone da barra de ferramentas Dirac Devtools. A janela Dirac Devtools Console deve aparecer. Observe as instruções sobre alternar entre clojurescript e javascript repls (controle-,). Se você vir a mensagem de erro, "CLJS Devtools: alguns formatados personalizados não foram renderizados", basta ver-> Recarregar esta página (comando-shift-r).
Embora você possa ter o hábito de digitar a opção de comando-i, não! Não abra o Chrome Devtools comum.
Experimente a boa repl na guia do console e veja como os parênteses são automaticamente equilibrados, as teclas de seta o levam para cima e para baixo no histórico Repl, os símbolos são concluídos à medida que você digita, a saída é colorida de dados EDN (não objetos JS obscuros), as estruturas de dados são apresentadas como widgets dobráveis para salvar o espaço, e mais!
Experimente o depurador também. Funciona como o depurador Chrome Devtools, exceto que o código -fonte é o clojurescript e o JavaScript que ele compila. Na guia Fontes , brilha até o topo -> localhost: 4000 -> js/compilado -> Out , clique em um arquivo de interesse .cljs de owlet. Quando o aplicativo parar no ponto de interrupção, observe as variáveis atuais na seção de escopo do depurador. Em seguida, de volta à guia Console , digite os formulários CloJurescript no Repl. Eles serão avaliados no contexto do ponto de interrupção. Clique no botão de currículo ou tecla F8 para permitir que o aplicativo continue.
Com o Dirac, você não precisa desistir de cursivo. Assim como nos conectamos com o Fig -Wheel CLJS Repl, acima, podemos nos conectar com o Dirac Repl.
Se você tiver um REPL em execução em cursivo, pare -o clicando no X na barra de ferramentas.
Vá para Run -> Run ... e selecione a configuração Repl que criamos acima, pois antes, você deve ver imediatamente isso na janela:
Connecting to remote nREPL server...
Clojure 1.8.0
Agora, como antes, estamos conectados ao clojure nrepl, mas desta vez nos conectaremos ao Dirac Clojurescript Repl. Avalie o seguinte código de clojure na caixa de texto na parte inferior da janela Repl Tool:
(dirac! :join)
Você deve ver algo como esta saída:
...
Your current nREPL session is a joined Dirac session (ClojureScript) which targets 'the most recent Dirac session'
...
To quit, type: :cljs/quit
=> nil
Como mencionado acima, é uma boa ideia adicionar um novo comando repl e definir um atalho de teclado para digitar o comando (dirac! :join) para você.
Você pode se conectar com o Dirac Repl, assim como fizemos com o REPLE da roda, com apenas uma pequena diferença. Obviamente, primeiro verifique se o processo que você iniciou com script/figwheel-repl.sh dirac ainda está em execução e, em seguida, siga as instruções acima, até a última etapa. Em vez disso, faça isso:
Assim como o cursivo, insira o seguinte código de clojure no prompt:
(dirac! :join)
Você deve ver a saída assim:
...
To quit, type: :cljs/quit
nil
cljs.user=>
Quando você avalia uma expressão no repl ClojureScript Dirac, o resultado será mostrado após => na janela Repl Terminal ou Cursive, conforme o esperado. No entanto, efeitos colaterais como saída impressa ou traços de pilha de exceção serão mostrados apenas no console Dirac Devtools . Isso pode ser confuso, especialmente se você inseriu uma declaração de impressão e não vê nada, ou não percebe que algo quebrou porque não vê uma exceção! Você precisa procurar no console Dirac Devtools. O console refletirá a expressão que você entrou, seu resultado e quaisquer efeitos colaterais impressos. Portanto, mantenha o Chrome Canary por perto e a janela Dirac Devtools à mão.
A licença ISC
Código de direitos autorais (c) para Denver e colaboradores
Permissão para usar, copiar, modificar e/ou distribuir este software para qualquer finalidade com ou sem taxa é concedida, desde que o aviso de direitos autorais acima e esse aviso de permissão apareçam em todas as cópias.
O software é fornecido "como está" e o autor se isenta de todas as garantias em relação a este software, incluindo todas as garantias implícitas de comercialização e condicionamento físico. Em nenhum caso o autor será responsável por quaisquer danos especiais, diretos, indiretos ou conseqüentes ou quaisquer danos resultantes da perda de uso, dados ou lucros, seja em uma ação de contrato, negligência ou outra ação tortuosa, decorrente de ou em conexão com o uso ou desempenho deste software.