Skip to content

Instantly share code, notes, and snippets.

View bunopus's full-sized avatar

Evgeny Kot bunopus

View GitHub Profile
@bunopus
bunopus / DataLoggingWatcher.coffee
Last active August 29, 2015 14:07
Angular "watcher" singletone in CoffeeScript
class DataLoggingWatcher
constructor: (@$rootScope) ->
@$rootScope.$on 'newData', () => @logToConsole()
logToConsole: () =>
console.log 'new data arrived'
angular.module('myApp')
@bunopus
bunopus / highlighter.cs
Created November 3, 2014 21:08
Highlight something in string using Regex (C#)
using System.Text.RegularExpressions;
public static class Highlighter
{
private const string MatchPattern = "(?<!<[^>]*)(?<matched>{0})";
private const string ReplacePattern = "<span class='highlight'>${matched}</span>";
public static string Highlight(string value, string pattern)
{
var patternEsc = string.Format(MatchPattern, Regex.Escape(pattern));
[
{
"id": "573f358cbd70b5b843a2d624",
"name": "Mendez",
"age": 30,
"gender": "male",
"department": "Backend",
"address": {
"city": "Moscow",
"street": "Fayette Street 923"
Angular 2 events (close) uses round braces notation
<div class="widget-list">
<someWidget
[ngClass]="{isBlue: true}"
*ngFor="let model of models"
*ngIf="isLoaded"
[model]="model"
(close)="onClose($event, model)"
></someWidget>
</div>
@bunopus
bunopus / task.md
Last active November 16, 2017 15:36

Реализовать на языке Dart библиотеку (пакет). Она должна содержать внешний контракт со следующими сущностями:
Contact - readonly примитив для контакта. Поля: [id, firstName, lastName]. Для того, чтобы отредактировать контакт необходимо применить паттерн builder
ContactManager - менеджер контактов. Singletone. Позволяет:

  • получить контакт по id
  • создать новый контакт (как с пустыми полями, так и с предзаполненными). Считаем, что id генерируется самим менеджером
  • сохранить изменённый контакт

Данные ContactManager хранит и берёт из какого-то хранилища, для задания это будет локальный json. При этом ContactManager периодически должен синхронизировать данные с хранилищем (раз в 30сек). Путь может быть захардкожен. Но стоит предполагать, что в дальнейшем работа будет переведена на БД.

main(List<String> arguments) {
var myBuilder = new MyBuilder();
var buildActions = [new BuildAction(myBuilder, 'some package', inputs: ['.dart'], excludes: excludes, isOptional: isOptional)]
final buildResult = await build_runner.build(buildActions, //....);
}
class MyBuilder implements Builder {
MyBuilder();
@bunopus
bunopus / TCXX-example.md
Created May 18, 2018 11:22
Example for HolyJS TCXX

Add 🐈(cat) prefix to functions

Motivation

Functions or methods, marked with 🐈 do not throw exceptions. In case of error - 🐈 will be thrown.

function 🐈myFunction()
@bunopus
bunopus / tab_bar_view.dart
Created June 30, 2018 13:22 — forked from letsar/tab_bar_view.dart
How to use a SliverStickyHeader inside a TabBarView
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_sticky_header/flutter_sticky_header.dart';
class _Page {
const _Page(
this.id,
this.title,
this.color,