Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
* COMMENT -*- mode: org -*-
#+Date: 2019-04-02
Time-stamp: <2019-04-02>
#+STARTUP: content
* notes :entry:
** 2019-04-02 how to deploy get-client-ip? :doc:
- update code as necessary.
update version in get-client-ip.cabal
- build project using stack.
stack build
- test the app
env SERVE_HISTORY_PAGE=1 stack exec get-client-ip
curl http://127.0.0.1:8081/
- build docker image
./build-docker-image.sh
push docker image according to the output message.
- update docker image version in k8s app yaml
~/sysadmin/de02-kubernetes/apps/get-client-ip.yaml
- deploy k8s app
kubectl apply -f ~/sysadmin/de02-kubernetes/apps/get-client-ip.yaml
- commit changes to git.
project git.
k8s app yaml git. ~/sysadmin/de02-kubernetes/
* later :entry:
* current :entry:
**
* done :entry:
** 2019-04-02 make get-client-ip build docker image and deploy on gocd.
- uploading docker image from ryzen5 host is not good.
oh, this image is public and on docker hub.
see ~/sysadmin/de02-kubernetes/apps/get-client-ip.yaml
it's using a public image.
-
** 2019-04-02 show last 10 calls to get-client-ip.
provide a web page that shows last 10 calls
https://myip.emacsos.com/_calls
| client-ip | time | user-agent |
|--------------+----------------------------+-------------------|
| 49.67.97.101 | 02/Apr/2019:13:58:24 +0800 | Python-urllib/2.7 |
This allow me to get sheni's IP without login to de01 to see nginx log.
- dev
- a in RAM buffer will do.
but there are multiple instances deployed on k8s.
use k8s redis service then.
- use an async action to insert record to redis. allow it to fail.
if redis is not running, that action just do nothing except leave a error
msg log.
- I don't want to introduce redis to the app. maybe just save in ram. user
can call GET /_calls multiple times to see results from all nodes.
- which data type to use as the ring buffer?
haskell - Purely functional (persistent) ring buffer - Stack Overflow
https://stackoverflow.com/questions/52898190/purely-functional-persistent-ring-buffer
Data.Sequence
fixed length circular buffer in haskell - Stack Overflow
https://stackoverflow.com/questions/6510175/fixed-length-circular-buffer-in-haskell
vector: Efficient Arrays
I will use Data.Sequence.
- do I need to make it thread safe? is persistent data types safe by
default?
yes. because it always return a new Seq object.
- put it in a MVar.
- why import getCurrentTime fail?
import Date.Time.Clock (getCurrentTime)
I have time in pkg list.
it's typo. "Date" vs "Data"!!
- build html response
blaze
lucid
Lucid: templating DSL for HTML
https://chrisdone.com/posts/lucid/
-
* wontfix :entry: