-
Notifications
You must be signed in to change notification settings - Fork 6
/
dev.txt
211 lines (168 loc) · 7.05 KB
/
dev.txt
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
dev.txt # sbt
sbt projects
sbt ecosystem/console
---
# TODO fix tests
* (ecosystem) com.github.niqdev.cats.EqSpec (scalactic conflict)
* (ecosystem) com.github.niqdev.cats.ValidatedSpec
* (fp) com.github.niqdev.FunctorSpec
* (fp) com.github.niqdev.ApplicativeSpec
* (fp) com.github.niqdev.MonadSpec
* (fp) com.github.niqdev.FunctorLawsProp
* (fp) com.github.niqdev.MonadLawsProp
---
# tracing
https://speakerdeck.com/kubukoz/keep-your-sanity-with-compositional-tracing
https://github.com/kubukoz/talks/tree/master/compositional-tracing
https://github.com/tpolecat/natchez
https://github.com/janstenpickle/trace4cats
# magnolia
https://propensive.com/opensource/magnolia
https://propensive.com/opensource/magnolia/tutorial
https://github.com/propensive/magnolia/tree/master/examples/shared/src/main/scala
https://www.youtube.com/watch?v=MKryAwl068Q
https://github.com/circe/circe-magnolia
https://github.com/alexarchambault/scalacheck-shapeless
https://github.com/typelevel/scalacheck/blob/master/doc/UserGuide.md
# scalacheck-magnolia
https://github.com/etaty/scalacheck-magnolia
https://github.com/implmnt/scalacheck-magnolia
https://github.com/spotify/magnolify
https://github.com/laurence-bird/scalacheck-magnolia
# JVM profiler
https://www.lihaoyi.com/post/MicrooptimizingyourScalacode.html
https://www.lightbend.com/blog/profiling-jvm-applications
https://www.scala-lang.org/blog/2018/06/04/scalac-profiling.html
https://blog.jetbrains.com/idea/tag/jvm-profiler
https://www.yourkit.com/java/profiler/features
https://github.com/eprst/yourkit_docker
```
# AdoptOpenJDK (macos)
sdk install java 11.0.2-open
# JDK path
/Users/<USERNAME>/.sdkman/candidates/sbt/current/
sdk install visualvm
vim /Users/<USERNAME>/.sdkman/candidates/visualvm/current/etc/visualvm.conf
visualvm_jdkhome="/Users/<USERNAME>/.sdkman/candidates/java/current/"
# setup intellij with sdkman on macos (show hidden files): CMD + SHIFT + .
https://stackoverflow.com/questions/35531548/where-to-find-groovy-library-on-intellijmac-when-installed-groovy-through-sdkm
```
# TODO benchmarks
https://gist.github.com/kubukoz/f32347ce711d65fb70752bb408f3d65c
https://gist.github.com/djspiewak/f4cfc08e0827088f17032e0e9099d292
https://github.com/djspiewak/async-runtime-benchmarks
# optics
https://scalac.io/blog/scala-optics-lenses-with-monocle
https://www.optics.dev/Monocle
# cats mtl
https://guillaumebogard.dev/posts/functional-error-handling
# e2e/it tests
https://github.com/whisklabs/docker-it-scala
https://github.com/testcontainers/testcontainers-java
# scala tests
https://orrsella.com/2014/09/24/integration-and-end-to-end-test-configurations-in-sbt-for-scala-java-projects
http://www.unstablebuild.com/2017/04/13/scala-projects-and-integration-tests.html
https://alexromanov.github.io/2016/07/15/cucumber-scala-sbt
https://github.com/lewismj/cucumber
https://github.com/jecklgamis/cucumber-jvm-scala-example
https://localstack.cloud
---
### interpreter/compiler
# Interpreter for AP++ imperative language (lexer, parser, evaluator)
https://github.com/mohammaduzair9/Interpreter
# Parsing S-Expressions in Scala
https://matt.might.net/articles/parsing-s-expressions-scala
# How to Approach Writing an Interpreter From Scratch
https://www.toptal.com/scala/writing-an-interpreter
# Compilers are hard
https://blog.shipreq.com/post/compilers_are_hard
# Applicative parsing
https://jobjo.github.io/2019/05/19/applicative-parsing.html
---
### recursion-schemas
# in haskell
https://www.reddit.com/r/haskell/comments/9x684a/edward_kmett_there_and_back_again_regular_and
https://medium.com/@jaredtobin/practical-recursion-schemes-c10648ec1c29
https://bartoszmilewski.com/2018/08/20/recursion-schemes-for-higher-algebras
https://blog.sumtypeofway.com/posts/introduction-to-recursion-schemes.html
# more
https://github.com/passy/awesome-recursion-schemes
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.125
# A path to Recursion Schemes
https://www.youtube.com/watch?v=ngnzCv7M92c
# Category Theory in Life
https://www.youtube.com/watch?v=ho7oagHeqNc
# Unifying Structured Recursion Schemes
http://www.cs.ox.ac.uk/jeremy.gibbons/publications/urs.pdf
# Catamorphisms aka folds explained
https://www.works-hub.com/learn/catamorphisms-aka-folds-explained-a5524
# Recursive Programming Techniques
https://www.amazon.com/Recursive-Programming-Techniques-Systems-programming/dp/0201144506
---
# settings example
javaOptions ++= Seq(
"-Xmx1G",
"-Xms1G",
"-XX:+UseG1GC",
"-XX:+UseStringDeduplication",
"-XX:+UseNUMA",
"-XX:+UseCompressedOops",
"-XX:+AggressiveOpts",
"-XX:+UseBiasedLocking",
"-XX:+UseFastAccessorMethods",
"-XX:NewRatio=2",
"-XX:-ReduceInitialCardMarks",
"-XX:+HeapDumpOnOutOfMemoryError",
"-XX:HeapDumpPath=/app/logs",
"-XX:OnOutOfMemoryError=kill -9 %p",
"-XX:-OmitStackTraceInFastThrow",
"-Djava.net.preferIPv4Stack=true",
"-Djava.security.egd=file:/dev/urandom",
"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005",
s"-Dconfig.resource=${Option(System.getProperty("config.resource")).getOrElse("application.conf")}"
)
# containers
https://www.atamanroman.dev/development/2018/11/10/jvm-memory-settings-container-environment.html
# common options
"-XX:MinRAMPercentage=75.0",
"-XX:MaxRAMPercentage=75.0",
"-Djava.net.preferIPv4Stack=true",
"-Djava.security.egd=file:/dev/urandom",
"-XX:+UseG1GC",
"-XX:+HeapDumpOnOutOfMemoryError",
"-XX:+ExitOnOutOfMemoryError",
"-XX:+UseStringDeduplication"
* jmx, mbeans, jconsole, jolokia, jstat, javap, jmh
* add notes from JVM memory course, jps
java -XX:+PrintFlagsFinal -version
---
# sbt complex alias
https://github.com/pauldijou/jwt-scala/blob/master/build.sbt#L15
# java agent
https://stackoverflow.com/questions/11898566/tutorials-about-javaagents
# rule engine
https://github.com/j-easy/easy-rules
# telegram
https://github.com/bot4s/telegram
http://vectos.net/posts/2017-05-16-telegram-bot-in-functional-scala.html
https://github.com/vpavkin/telegram-bot-fs2
https://github.com/nikdon/telepooz
# scala
https://stackoverflow.com/questions/4593710/when-should-i-and-should-i-not-use-scalas-inline-annotation
https://stackoverflow.com/questions/2709095/does-the-inline-annotation-in-scala-really-help-performance
https://stackoverflow.com/questions/27855714/type-selection-type-projection-what-is-st-in-scala-scala-language-specifica
https://stackoverflow.com/questions/2693067/what-is-meant-by-scalas-path-dependent-types
https://github.com/estatico/scala-newtype
https://medium.com/@mattroberts297/automatic-type-class-derivation-with-shapeless-part-one-a1251c5f9e16
https://appddeevvmeanderings.blogspot.com/2019/08/functional-web-client-made-easy-dotty.html
https://cucumbersome.net/2020/11/28/four-new-features-of-scala-2-13-releases-that-you-probably-missed
# scala-3
https://msitko.pl/blog/build-your-own-refinement-types-in-scala3.html
# language features since Java 8 to 17
https://advancedweb.hu/new-language-features-since-java-8-to-17
# rust
https://danso.ca/blog/higher-kinded-types
https://hugopeters.me/posts/14
# scala-rust
https://phazer99.blogspot.com/2021/05/rust-for-seasoned-scala-developer.html
https://engineering.avast.io/scala-and-rust-interoperability-via-jni