Skip to content

Instantly share code, notes, and snippets.

View ajantis's full-sized avatar
:shipit:

Dmitry Ivanov ajantis

:shipit:
View GitHub Profile
@umputun
umputun / safari-summary.sh
Last active June 13, 2025 21:09
Raycast script for Safari's page summary
#!/bin/sh
# @raycast.schemaVersion 1
# @raycast.title Summarize Safari page
# @raycast.mode fullOutput
#
# Optional parameters:
# @raycast.icon ✨
#
# @raycast.packageName Things
@headius
headius / meltdown_in_a_nutshell.md
Last active July 27, 2018 13:43
How Meltdown Works

Algorithm

  1. A secret byte you want to read is stored at inaccessible memory location priv_mem.
  2. The sender triggers an access exception by attempting to read priv_mem.
  3. Due to CPU optimization (out-of-order execution), the load of secret from priv_mem and the use of its value in (4) and (5) below may execute before the exception is triggered.
  4. Calculate an offset into a known array probe by multiplying secret by the width of a cache line (or whatever block size the CPU typically fetches, like a 4096-byte page). This guarantees each of those 256 possible offsets will cache separately.
  5. Load probe[offset], which causes the CPU to cache exactly one chunk of of our array, populating one cache line.
  6. The exception finally triggers, clearing the modified registers...but cached data is not excised.
  7. Iterate over all 256 offsets into probe to find out which one loads fast. You've determined the value of secret.

Thread Pools

Thread pools on the JVM should usually be divided into the following three categories:

  1. CPU-bound
  2. Blocking IO
  3. Non-blocking IO polling

Each of these categories has a different optimal configuration and usage pattern.

@namiazad
namiazad / Simple Serialiser-Deserialiser using Shapeless.scala
Last active September 26, 2015 23:31
Simple serialisation, de-serialsation using Shapeless
package derivation
import java.util.Locale
import shapeless._
import scala.reflect.ClassTag
import scala.util.Try
sealed trait Utensil
@djspiewak
djspiewak / streams-tutorial.md
Created March 22, 2015 19:55
Introduction to scalaz-stream

Introduction to scalaz-stream

Every application ever written can be viewed as some sort of transformation on data. Data can come from different sources, such as a network or a file or user input or the Large Hadron Collider. It can come from many sources all at once to be merged and aggregated in interesting ways, and it can be produced into many different output sinks, such as a network or files or graphical user interfaces. You might produce your output all at once, as a big data dump at the end of the world (right before your program shuts down), or you might produce it more incrementally. Every application fits into this model.

The scalaz-stream project is an attempt to make it easy to construct, test and scale programs that fit within this model (which is to say, everything). It does this by providing an abstraction around a "stream" of data, which is really just this notion of some number of data being sequentially pulled out of some unspecified data source. On top of this abstraction, sca

@ryanlecompte
ryanlecompte / gist:ec2d9f9e23e09c08903c
Last active September 9, 2019 01:31
Magnet/Typeclass pattern example
// Magnet pattern documented here: http://spray.io/blog/2012-12-13-the-magnet-pattern/
object TypeclassExample {
// first, define the typeclass
trait Plotter[A] {
def plot: Unit
}
// this typeclass instance knows how to plot collections
class IterablePlotter[A: Numeric](it: Iterable[A]) extends Plotter[Iterable[A]] {
@acolyer
acolyer / service-checklist.md
Last active September 24, 2025 07:57
Internet Scale Services Checklist

Internet Scale Services Checklist

A checklist for designing and developing internet scale services, inspired by James Hamilton's 2007 paper "On Desgining and Deploying Internet-Scale Services."

Basic tenets

  • Does the design expect failures to happen regularly and handle them gracefully?
  • Have we kept things as simple as possible?
@cbschuld
cbschuld / gist:cdcaf062da5b34eede37
Last active August 29, 2015 14:05
install haproxy 1.5.6 on ec2 amazon ami - updated 2014-10-28
#!/bin/sh
yum update -y
yum install -y wget git
wget "http://www.haproxy.org/download/1.5/src/haproxy-1.5.6.tar.gz"
yum groupinstall -y 'Development Tools'
yum install -y openssl-devel
yum install -y rpmdevtools pcre-devel
rpmdev-setuptree
mv haproxy-1.5.6.tar.gz ~/rpmbuild/SOURCES/
@viktorklang
viktorklang / in-fino-veritas.zsh-theme
Last active July 31, 2023 01:47
In Fino Veritas ZSH theme
#!/usr/bin/env zsh
# in fino veritas
# Borrowing shamelessly from these oh-my-zsh themes:
# fino-time
# pure
# https://gist.github.com/smileart/3750104
# Set required options
@pjobson
pjobson / remove_mcafee.md
Last active March 26, 2024 04:26
OSX McAfee Removal

Removal of McAfee from OSX

Note: This was written in 2015, it may be out of date now.

There are a lot of commands here which I use sudo if you don't know what you're doing with sudo, especially where I rm you can severely screw up your system.

There are many reasons which you would want to remove a piece of software such as McAfee, such as not wanting it to hammer your CPU during work hours which seems like primetime for a virus scan.

I intend this to be a living document, I have included suggestions from peoples' replies.