Skip to content

Instantly share code, notes, and snippets.

View marcin-chwedczuk's full-sized avatar

Marcin Chwedczuk marcin-chwedczuk

View GitHub Profile
@marcin-chwedczuk
marcin-chwedczuk / btree.js
Created May 30, 2016 15:26
BTree implementation in JavaScript
#!/usr/bin/env node
const NKEYS = 4;
function arrayOfSize(size) {
var a = Array(size);
for (var i = 0; i < size; i += 1)
a[i] = null;
@marcin-chwedczuk
marcin-chwedczuk / GSM7BitEncoderDecoder.java
Created September 23, 2019 11:54
GSM7Bit encoder / decoder
// based on: https://github.com/bsimic0001/AegisWallet/blob/master/mobile/src/main/java/com/aegiswallet/utils/MessagingUtils.java
public class MessagingUtils {
public static void main(String[] args) {
System.out.println("encode: " + encode("*100#"));
System.out.println("decode: " + decode("<<message to decode>>"));
}
/**
@marcin-chwedczuk
marcin-chwedczuk / grayBin.js
Created December 16, 2019 19:53
Binary Gray code conversion
function reverse(array) {
var copy = array.slice();
copy.reverse();
return copy;
}
function gray(nbits) {
if (nbits <= 0) return ['']; // zero bit code contains 2^0 values == 1
@marcin-chwedczuk
marcin-chwedczuk / Main.java
Created November 18, 2017 14:36
Display values of MS-DOS Portable Executable header
// Needs Guava to compile:
//
// compile group: 'com.google.guava', name: 'guava', version: '23.4-jre'
//
import com.google.common.io.LittleEndianDataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
@marcin-chwedczuk
marcin-chwedczuk / article-text.md
Last active May 7, 2021 13:54
Renowacja Nintendo GameBoy Original

Renowacja Nintendo GameBoy Original

Niedawno zakupiłem dwa stare GameBoy'e z myślą o ich renowacji. Obu zakupów dokonałem na OLX'ie, zapłaciłem 200 i 230 PLN (łącznie z kosztami dostawy). Obie konsole w chwili dotarcia do mnie były sprawne i pozwalały na uruchomienie Zeldy (Link's Awakening DX).

W przypadku pierwszej konsoli wymieniłem jedynie obudowę. Durgą postanowiłem dosyć mocno "zmodować", wstawiając do niej ekran IPS. Oba wykorzystane przeze mnie produkty do renowacji są dostępne na AliExpressie. Obudowy można znaleźć szukając po hasłach: "gameboy classic case" i "gameboy original shell".

@marcin-chwedczuk
marcin-chwedczuk / answer.js
Created May 1, 2019 11:36
Minimal integer n > 0 that for each prime if (p-1) | n then p | n
// Problem:
// Find minimal integer number n > 0 that
// for any prime p:
// if (p - 1) | n then p | n
// where `|` means divide.
//
function gen_primes() {
var N = 1000;
@marcin-chwedczuk
marcin-chwedczuk / locality_of_configure_await.md
Last active December 30, 2018 10:35
O lokalności `ConfigureAwait`

O lokalności ConfigureAwait

Chciałbym tu naświetlić pewną kwestię związaną z użyciem ConfigureAwait którą wiele osób uczących się programowania asynchronicznego w C# przeocza.

Zacznijmy od prostego przykładu aplikacji WinForms składającej się z jednego przycisku:

public partial class Form1 : Form
{
 public Form1()
@marcin-chwedczuk
marcin-chwedczuk / csharp_null_and_using_statement.md
Last active December 28, 2018 17:19
C#, null and using statement

Do you know that C# supports using null values with using statements. For example the following program compiles and runs without any problems:

public class Program
{
	public static void Main()
	{
		using(var x = CreateIDisposable()) {
			// prints x = <null>
@marcin-chwedczuk
marcin-chwedczuk / dotnetomaniak-1.md
Created June 8, 2018 19:33
Kiedy unikać async/await w wyrażeniach lambda

Od pewnego czasu do pisania testów jednostkowych używam bibliotek XUnit, NSubstitute oraz NFluent. Zwłaszcza ta ostatnia przypadła mi do gustu.

Jedną z metod oferowanych przez NFluent jest Check.ThatAsyncCode(...), na przykład:

Check
    .ThatAsyncCode(() => Task.Delay(0))
    .DoesNotThrow();
@marcin-chwedczuk
marcin-chwedczuk / eval.fs
Created May 26, 2018 17:50
fsharp-primitive-expression-evaluator
open System
open System.Collections.Generic
open System.Diagnostics
open System.Reflection
open System.Text.RegularExpressions
type Operator =
| Plus | Minus | Multiply | Divide