Skip to content

Instantly share code, notes, and snippets.

@pietrom
pietrom / MongoDbConfigurator.cs
Created September 5, 2017 08:01
Configure DateTimeOffset String serializer
using MongoDB.Bson;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Serializers;
public class MongoDbConfigurator {
static MongoDbConfigurator() {
BsonSerializer.RegisterSerializer(typeof(DateTimeOffset), new DateTimeOffsetSerializer(BsonType.String));
}
}
public static class DictionaryExtension {
public static TOutput GetOrDefault<TOutput, TValue>(this IDictionary<string, TValue> self, string key, TOutput defaultValue)
where TOutput : TValue {
return self.ContainsKey(key) ? (TOutput)self[key] : defaultValue;
}
}
@pietrom
pietrom / sql-server-table-storage-size.sql
Created February 2, 2017 13:59
Query which shows storage size for each non-system table
SELECT
s.Name AS SchemaName,
t.NAME AS TableName,
p.rows AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM
sys.tables t
INNER JOIN
@pietrom
pietrom / git-delete-remote-branch.sh
Created January 27, 2017 10:39
Delete remote git branch
git push --delete origin branch-name
# or
git push origin :branch-name
# When there is a tag with the same name of the branch:
git push origin :refs/heads/branch-name
@pietrom
pietrom / MongoSerializingExtensions.cs
Last active June 14, 2018 12:37
How to serialize FilterDefinition<T> and SortDefinition<T> to string
public static class MongoSerializingExtensions {
public static BsonDocument RenderToBsonDocument<T>(this FilterDefinition<T> filter) {
var serializerRegistry = BsonSerializer.SerializerRegistry;
var documentSerializer = serializerRegistry.GetSerializer<T>();
return filter.Render(documentSerializer, serializerRegistry);
}
public static BsonDocument RenderToBsonDocument<T>(this SortDefinition<T> sort) {
var serializerRegistry = BsonSerializer.SerializerRegistry;
var documentSerializer = serializerRegistry.GetSerializer<T>();
using System;
using System.Globalization;
namespace DateAndTimeMeltingPot {
class MainClass {
public static void Main(string[] args) {
// Getting 'calendar/clock' date adn time
DateTime myBirthday = new DateTime(1978, 3, 19, 1, 15, 0, DateTimeKind.Unspecified);
Print(myBirthday);
@pietrom
pietrom / DateAndTimeMeltingPot.java
Last active January 5, 2017 13:05
Spiking JDK 8 date and time API
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class DateAndTimeMeltingPot {
public static void main(String[] args) {
@pietrom
pietrom / range.js
Last active December 5, 2016 12:24
function range(first, last) {
const length = last - first + 1
return new Array(length).fill(-1, 0, length).map(function(v, i) { return i + first; })
}
# Shows git history in graph fashion, including all branches
git log --graph --abbrev --all --oneline --decorate
# Sets up global git alias for previous command
git config --global alias.graph 'log --graph --all --decorate --oneline'
public static class RandomExtensions {
public static Task Delay(this Random random, int min, int max) {
return Task.Delay(random.Next(min, max));
}
}