Skip to content

Instantly share code, notes, and snippets.

@Pzixel
Pzixel / MongoExtensions.cs
Last active December 15, 2017 13:27
Mongo extension class that provide old provider Save functionallity (like CampaignsCollection.Save(campaign); )
using System;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Driver;
using MongoDB.Driver.Core.Bindings;
@Pzixel
Pzixel / cpp.cc
Created January 25, 2018 10:48
Rust OpenCV interop
template<typename T>
struct CResult
{
T value;
const char* error;
static CResult<T> FromFunction(std::function<T()> function)
{
CResult<T> result = {};
try
@Pzixel
Pzixel / setup_fmt_hooks.sh
Last active February 7, 2018 14:12
Setups git hooks for rustfmt and clang-format
#!/bin/sh
rustup component add rustfmt-preview
rustfmt_path=`which rustfmt`
echo "#!/bin/sh
declare -a rust_files=()
declare -a cpp_files=()
files=\$(git diff-index --name-only HEAD)
echo 'Formatting source files'
Настало, наконец, время поговорить о третьем законе «диалектической триады». О законе «единства и борьбы противоположностей».
Формулируется этот закон примерно следующим образом.
Каждый объект заключает в себе противоположности, которые находятся одновременно в единстве и в борьбе между собой, что как раз и вызывает развитие этого объекта.
Звучит красиво, однако, если даже самую малость вдуматься, то тут же окажется, что эта формулировка лишена какого-либо внятного содержания.
#![feature(lang_items)]
#![feature(start)]
#![no_std]
#![no_main]
// These functions are used by the compiler, but not
// for a bare-bones hello world. These are normally
// provided by libstd.
#[lang = "eh_personality"]
#[no_mangle]
@Pzixel
Pzixel / .editorconfig
Created May 21, 2018 08:28
My environment
root = true
[*]
charset = utf-8-bom
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
[*.{sol,xml,xsd}]
#![feature(unboxed_closures, fn_traits)]
pub enum Either<L, R> {
Left(L),
Right(R),
}
impl<L: FnOnce() -> i32, R: FnOnce() -> i32> FnOnce<()> for Either<L, R> {
type Output = i32;
@Pzixel
Pzixel / HM.txt
Last active August 8, 2018 22:13
Алгоритм устроен так, что место ошибки определить невозможно
хм строит систему из пицотыщ уравнений и потом начинает ее решать унификацией
то есть он берет какоето уравнение, подставляет туда абстрактный аргумент,
по нему подставляет в другое у-е и т.д. - в каком-то у-е на аругмент накладывается ограничение, аргумент становится более конкретным
если где-то ошибка - то В НЕКОТОРОМ месте в графе возникнет противоречие - будет наложено ограничение, которому аргумент уже не может
удовлетворить (из-за другого ограничения, которое было наложено раньше, например сперва сказали, что должна быть строка, а потом - что
число, при этом неизвестно где именно ошибка - там где фиксирована строка, или там где фиксировано число, и в зависимости от хода
реализации алгоритма он выведет ошибку или в том месте или в другом)
@Pzixel
Pzixel / Dockerfile
Created September 7, 2018 10:27
Solidity-Dotnet docker image
FROM microsoft/dotnet:2.0-sdk AS build
ENV SOLIDITY_VERSION 0.4.24
ENV SOLIDITY_DOWNLOAD_URL https://github.com/ethereum/solidity/releases/download/v$SOLIDITY_VERSION/solc-static-linux
RUN curl -SL $SOLIDITY_DOWNLOAD_URL --output /usr/bin/solc && chmod +x /usr/bin/solc
fn are_concatable_strings(a: &str, b: &str, result: &str) -> bool {
if a.len() + b.len() != result.len() {
return false;
}
let a: Vec<_> = a.chars().collect();
let b: Vec<_> = b.chars().collect();
let result: Vec<_> = result.chars().collect();
let mut i = 0;
let mut j = 0;