Skip to content

Instantly share code, notes, and snippets.

View sevaa's full-sized avatar

Seva Alekseyev (he/him) sevaa

View GitHub Profile
@sevaa
sevaa / ToBase64.bas
Created November 7, 2016 17:04
Base64 encoding in Visual Basic for Applications (VBA)
Public Function ToBase64(Src() As Byte) As String
Const ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim SrcLen As Long, i As Long, Remainder As Long
Dim RLen As Long, Triad As Long, LastSrcIndex As Long
SrcLen = UBound(Src) - LBound(Src) + 1
Remainder = SrcLen Mod 3
'Index of the first byte of the leftover 1- or 2-byte chunk
RLen = LBound(Src) + SrcLen - Remainder
LastSrcIndex = RLen - 3
@sevaa
sevaa / MurMurHash64B,sql
Created November 7, 2016 17:02
MurMurHash64B in Transact-SQL
create function [dbo].[MurmurHash64B]
(
@s varbinary(max),
@seed bigint = 0
)
returns bigint
as
begin
declare @len int = datalength(@s), @i int = 1
declare @m bigint = 0x5bd1e995
@sevaa
sevaa / ToUTF8.sql
Last active April 30, 2024 09:51
Converting an NVARCHAR string to a UTF-8 VARBINARY data block in pure Transact-SQL
create function [dbo].[ToUTF8](@s nvarchar(max))
returns varbinary(max)
as
begin
declare @i int = 1, @n int = datalength(@s)/2, @r varbinary(max) = 0x, @c int, @c2 int, @d varbinary(4)
while @i <= @n
begin
set @c = unicode(substring(@s, @i, 1))
if (@c & 0xFC00) = 0xD800
begin
@sevaa
sevaa / GenerateTone.js
Last active April 15, 2017 21:59
Generating a simple musical tone purely from JavaScript
function GenerateTone(frequency, duration, volume, rate)
{
if (!volume)
volume = 30000;
if (!rate)
rate = 8000;
var nSamples = rate * duration,
i, w = (2 * Math.PI * frequency) / rate,
wav = new ArrayBuffer(44 + nSamples*2);