Skip to content

Instantly share code, notes, and snippets.

Avatar

Marcin Chwedczuk marcin-chwedczuk

View GitHub Profile
@marcin-chwedczuk
marcin-chwedczuk / btree.js
Created May 30, 2016
BTree implementation in JavaScript
View btree.js
#!/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 / article-text.md
Last active May 7, 2021
Renowacja Nintendo GameBoy Original
View article-text.md

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 / grayBin.js
Created Dec 16, 2019
Binary Gray code conversion
View grayBin.js
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
View GSM7BitEncoderDecoder.java
// 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 / Main.java
Created Nov 18, 2017
Display values of MS-DOS Portable Executable header
View Main.java
// 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 / answer.js
Created May 1, 2019
Minimal integer n > 0 that for each prime if (p-1) | n then p | n
View answer.js
// 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 Dec 30, 2018
O lokalności `ConfigureAwait`
View locality_of_configure_await.md

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()
View csharp_null_and_using_statement.md

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 Jun 8, 2018
Kiedy unikać async/await w wyrażeniach lambda
View dotnetomaniak-1.md

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
fsharp-primitive-expression-evaluator
View eval.fs
open System
open System.Collections.Generic
open System.Diagnostics
open System.Reflection
open System.Text.RegularExpressions
type Operator =
| Plus | Minus | Multiply | Divide