Skip to content

Commit 99db18e

Browse files
committed
URL shortener: add readme.md and user.clj
1 parent 6f42863 commit 99db18e

File tree

4 files changed

+81
-5
lines changed

4 files changed

+81
-5
lines changed

url-shortener/dev/user.clj

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
(ns user
2+
(:import [org.slf4j.simple SimpleLogger]))
3+
4+
(System/setProperty SimpleLogger/DEFAULT_LOG_LEVEL_KEY "warn")
5+
6+
(defonce *server (atom nil))
7+
8+
(require '[url-shortener.main :as main])
9+
10+
(defn start-server []
11+
(reset! *server (main/start-server {:port 8000 :join? false})))
12+
13+
(defn stop-server []
14+
(when @*server
15+
(main/stop-server @*server)
16+
(reset! *server nil)))

url-shortener/project.clj

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@
22
:description "URL shortener app"
33

44
:source-paths ["src" "resources"]
5+
:resource-paths ["resources"]
56

6-
:dependencies [;; Backend
7+
:dependencies [
8+
;; Backend
79
[org.clojure/clojure "1.11.1"]
810
[ring/ring-jetty-adapter "1.11.0"]
911
[ring/ring-json "0.5.1"]
1012
[compojure "1.7.1"]
13+
[org.slf4j/slf4j-simple "2.0.10"]
1114

1215
;; Frontend
1316
[reagent "1.2.0"]
@@ -23,7 +26,9 @@
2326

2427
:uberjar-name "url-shortener.jar"
2528

26-
:resource-paths ["resources"]
29+
:profiles {:dev {:source-paths ["dev"]
30+
:dependencies [[ring/ring-devel "1.11.0"]]}
31+
32+
:repl {:repl-options {:init-ns user}}
2733

28-
:profiles {:dev {:dependencies [[ring/ring-devel "1.11.0"]]}
2934
:uberjar {:aot :all}})

url-shortener/readme.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# URL Shortener
2+
3+
## Установка зависимостей
4+
5+
```bash
6+
lein deps with-profile cljs
7+
npm install
8+
```
9+
10+
## Универсальный запуск из командной строки
11+
12+
### Сборка клиентской части
13+
14+
```bash
15+
npx shadow-cljs compile app
16+
```
17+
18+
### Запуск в режиме разработки (REPL)
19+
20+
```bash
21+
lein repl
22+
```
23+
24+
Теперь можно запустить веб-сервер следующими образом
25+
26+
```clojure
27+
user=> (start-server)
28+
Server started on port: 8000
29+
#object[org.eclipse.jetty.server.Server ..."]
30+
```
31+
32+
Или остановить
33+
34+
```clojure
35+
user=> (stop-server)
36+
Server stopped
37+
nil
38+
```
39+
40+
## Запуск через Jack-in: VSCode + Calva
41+
42+
1. Запускаем Jack-in через Command Palette.
43+
2. Выбираем project type: `shadow-cljs`.
44+
3. Выбираем build to compile: `app`.
45+
4. Выбираем build to connect: `app`.
46+
В этот момент в `output.calva-repl` будет выводиться
47+
48+
```text
49+
; Waiting for Shadow CLJS runtimes, start your CLJS app...`
50+
```
51+
52+
5. Запускаем сервер с помощью `(user/start-server)`.
53+
6. Открываем в браузере `localhost:8000` — это и есть наш CLJS runtime.
54+
55+
После этого мы должны подключиться к CLJS реплу.

url-shortener/src/url_shortener/main.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
([] (start-server {}))
1010
([opts]
1111
(let [server (jetty/run-jetty #'web/handler opts)]
12-
(println "Server started.")
12+
(println "Server started on port:" (:port opts 80))
1313
server)))
1414

1515
(defn stop-server [server]
1616
(.stop ^Server server)
17-
(println "Server stopped."))
17+
(println "Server stopped"))
1818

1919
(defn -main [& _]
2020
(let [server (start-server)]

0 commit comments

Comments
 (0)