Skip to content

Instantly share code, notes, and snippets.

@alpian
alpian / cloudshell-install-qldbshell.sh
Last active April 21, 2021 22:20
AWS CloudShell QLDB Shell installer
#!/bin/sh
# Installs the QLDB Shell on AWS CloudShell
VERSION="2.0.0-alpha3"
sudo yum install -y -q openssl11-libs
mkdir qldb
curl -sL https://github.com/awslabs/amazon-qldb-shell/releases/download/v$VERSION/qldb-v$VERSION-linux.tar.gz | tar zx -C qldb && export PATH=$PATH:~/qldb/qldb-v$VERSION-linux
echo "Run qldb --ledger <your-ledger> to start the shell"
echo "Run \`echo \"export PATH=\$PATH:~/qldb/qldb-v$VERSION-linux\" >> ~/.bashrc\` to append this to your path"
@alpian
alpian / better-grab-movie-tickets.ts
Created March 28, 2021 08:31
qldb-demonstrate-a-better-way-write-txn-function
async function betterGrabMovieTickets(qldb: QldbDriver, seat: string) {
const [allocationTime, message] =
await qldb.executeLambda( async txn => {
const result = await txn.execute(
"select * from Showing where seat = ? and allocated = ?",
seat, false);
const allocationTime = Date.now();
if (result.getResultList().length === 1) {
await txn.execute(
"update Showing set allocated = ? where seat = ?",
@alpian
alpian / bad-grab-movie-tickets.ts
Last active March 28, 2021 08:18
qldb-bad-examples-of-impure-transaction-functions
let state = { seat: "a5" };
async function badGrabMovieTickets(qldb: QldbDriver) {
// DO NOT USE: This code is deliberately wrong to show what pitfalls to avoid
let allocationTime;
await qldb.executeLambda(async txn => {
// BAD: don't rely on state from outside the function parameters
const result = await txn.execute(
"select * from Showing where seat = ? and allocated = ?",
state.seat, false);
// BAD: cannot change external state from inside the function
@alpian
alpian / qldb-node-grab-movie-tickets.ts
Last active March 28, 2021 07:19
qldb-demonstrate-unique-reservation
async function grabMovieTickets(qldb: QldbDriver, seat: string) {
await qldb.executeLambda(async txn => {
const result = await txn.execute(
"select * from Showing where seat = ? and allocated = ?",
seat, false);
if (result.getResultList().length === 1) {
await txn.execute(
"update Showing set allocated = ? where seat = ?",
true, seat);
return "you got the seat!";
@alpian
alpian / Scala2Java.java
Last active December 19, 2015 05:59
Scala to Java compilation
// Scala code:
//
// trait MyTrait {
// def someImplementation() = {
// println("Implementation in an interface")
// }
//
// def pureVirtualFuntion()
// }
@alpian
alpian / NTEventLogAppender.x86.dll
Created May 20, 2013 19:50
Base-64 encoded NTEventLogAppender.x86.dll for Apache Log4J 1.2.17
TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA2AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAAB6U0p8PjIkLz4yJC8+MiQvvS4qLyoyJC8IFC4vBDIkLz4yJS90MiQvXC03
LzsyJC8IFC8vPDIkL/k0Ii8/MiQvwRIgLz8yJC9SaWNoPjIkLwAAAAAAAAAAUEUAAEwBBQDdZZpR
AAAAAAAAAADgAA4hCwEGAABQAAAAcAAAAAAAAMgYAAAAEAAAAGAAAAAAABAAEAAAABAAAAQAAAAA
AAAABAAAAAAAAAAA0AAAABAAAAAAAAACAAAAAAAQAAAQAAAAABAAABAAAAAAAAAQAAAAsGsAAF0B
AAAwZgAAPAAAAACwAAB4CgAAAAAAAAAAAAAAAAAAAAAAAADAAABYBQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAPQAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAudGV4dAAAAApFAAAAEAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAgAABgLnJkYXRhAAAN
DQAAAGAAAAAQAAAAYAAAAAAAAAAAAAAAAAAAQAAAQC5kYXRhAAAAxDIAAABwAAAAMAAAAHAAAAAA