First off, I am not a programming language theorist, so please comment below if I say anything that's completely off-base or misleading. I'll be happy to make the necessary corrections.
Clears throat
### | |
### [2023-06-19] UPDATE: Just tried to use my instructions again on a fresh install and it failed in a number of places. | |
###. Not sure if I'll update this gist (though I realise it seems to still have some traffic), but here's a list of | |
###. things to watch out for: | |
### - Check out the `nix-darwin` instructions, as they have changed. | |
### - There's a home manager gotcha https://github.com/nix-community/home-manager/issues/4026 | |
### | |
# I found some good resources but they seem to do a bit too much (maybe from a time when there were more bugs). | |
# So here's a minimal Gist which worked for me as an install on a new M1 Pro. |
#!/bin/bash -e | |
INGESTER_DOMAIN_NAME="${INGESTER_DOMAIN_NAME:-$1}" | |
echo "CAUTION should be run from a secure directory" | |
if test -z "$INGESTER_DOMAIN_NAME" | |
then echo "needs INGESTER_DOMAIN_NAME" | |
exit 1 | |
else echo "INGESTER_DOMAIN_NAME=$INGESTER_DOMAIN_NAME" |
package fpmax | |
import scala.util.Try | |
import scala.io.StdIn.readLine | |
object App0 { | |
def main: Unit = { | |
println("What is your name?") | |
val name = readLine() |
com.sun.management:type=DiagnosticCommand | |
com.sun.management:type=HotSpotDiagnostic | |
java.lang:name=CodeCacheManager,type=MemoryManager | |
java.lang:name=Code Cache,type=MemoryPool | |
java.lang:name=Compressed Class Space,type=MemoryPool | |
java.lang:name=G1 Eden Space,type=MemoryPool | |
java.lang:name=G1 Old Generation,type=GarbageCollector | |
java.lang:name=G1 Old Gen,type=MemoryPool | |
java.lang:name=G1 Survivor Space,type=MemoryPool | |
java.lang:name=G1 Young Generation,type=GarbageCollector |
You must use the magic method %save
:
In [1]: %save?
Type: Magic function
String Form:<bound method CodeMagics.save of <IPython.core.magics.code.CodeMagics object at 0x7fb5d25bb1d0>>
Namespace: IPython internal
File: /usr/lib/python2.7/dist-packages/IPython/core/magics/code.py
package nl.mdj.fpinscala | |
import akka.actor.{Actor, ActorRef, ActorSystem, Props} | |
import akka.pattern.ask | |
import akka.util.Timeout | |
import nl.mdj.fpinscala.KeyValueStore.{KvS, ListKeys} | |
import scala.concurrent.duration._ | |
import scala.concurrent.{ExecutionContext, Await, Future} | |
import scalaz.std.list._ |
// Create a new MergeStrategy for aop.xml files | |
val aopMerge: MergeStrategy = new MergeStrategy { | |
val name = "aopMerge" | |
import scala.xml._ | |
import scala.xml.dtd._ | |
def apply(tempDir: File, path: String, files: Seq[File]): Either[String, Seq[(File, String)]] = { | |
val dt = DocType("aspectj", PublicID("-//AspectJ//DTD//EN", "http://www.eclipse.org/aspectj/dtd/aspectj.dtd"), Nil) | |
val file = MergeStrategy.createMergeTarget(tempDir, path) |
Slightly disorganized but reasonably complete notes on the algorithms, strategies and optimizations of the Akka Cluster implementation. Could use a lot more links and context etc., but was just written for my own understanding. Might be expanded later.
Links to papers and talks that have inspired the implementation can be found on the 10 last pages of this presentation.
This is the Gossip state representation: