Skip to content

Instantly share code, notes, and snippets.

Avatar
⚔️
~

Ilia Andrienko andrienko

⚔️
~
View GitHub Profile
@andrienko
andrienko / monacoDragAndDropProvider.ts
Last active Jul 30, 2021
Monaco drag and drop provider
View monacoDragAndDropProvider.ts
import React from 'react';
import { editor } from 'monaco-editor';
import IMouseTarget = editor.IMouseTarget;
import IStandaloneCodeEditor = editor.IStandaloneCodeEditor;
import IContentWidget = editor.IContentWidget;
const { ContentWidgetPositionPreference } = editor;
export type TDropHandler = (e: React.DragEvent, target: IMouseTarget, instance: IStandaloneCodeEditor) => void;
export type TInstanceGetter = () => IStandaloneCodeEditor;
@andrienko
andrienko / index.fakeloading.js
Last active Nov 9, 2018
Minimal mobx store app with observables
View index.fakeloading.js
import React from "react";
import ReactDOM from "react-dom";
import { observable } from "mobx";
import { observer } from "mobx-react";
// Store
class Store {
@observable isLoading = false;
@andrienko
andrienko / webpack.config.js
Created Nov 7, 2018
This is my webpack config. There are many webpack configs, and this one is mine!
View webpack.config.js
/* eslint-disable */
var path = require('path');
var MiniCssExtractPlugin = require('mini-css-extract-plugin');
var WriteFilePlugin = require('write-file-webpack-plugin');
var cssnano = require('cssnano');
var autoprefixer = require('autoprefixer');
var cssLoaderUse = function(asModules) {
return [
@andrienko
andrienko / percentage.php
Created Oct 10, 2016
PHP 5.2. Calculating percentage using largest remainder method (bit tricky)
View percentage.php
<?php
function calculate_percentage($aw,$tp=0,$t=0){
foreach($aw as $a) $t += $a['votes'];
foreach($aw as &$a)$tp += floor($a['percentage'] = $a['votes'] / $t * 100);
uasort($aw, 'sort_by_remainder');
foreach ($aw as &$v) $v['percentage'] = ($tp++ < 100) ? ceil($v['percentage']) : floor($v['percentage']);
ksort($aw);
return $aw;
}
@andrienko
andrienko / extend.js
Created Mar 30, 2016
Yet another jquery-like deep extend implementation
View extend.js
module.exports = (function () {
var extend_single = function (destination, source, deep) {
for (var key in source) {
if (source.hasOwnProperty(key)) {
if (deep && typeof destination[key] == 'object' && typeof source[key] == 'object') {
destination[key] = extend_single(destination[key], source[key], deep);
} else {
destination[key] = source[key];
View uri components in and out
var e = encodeURIComponent;
var d = decodeURIComponent;
var paramsToURI = function(params){
var uri_components = [];
for(var i in params){
if(params.hasOwnProperty(i)) {
uri_components.push(e(i) + '=' + e(params[i]));
}
}
@andrienko
andrienko / gist:14331b88b0e877087a2f
Last active Aug 29, 2015
iOS safe cookie session start
View gist:14331b88b0e877087a2f
function cookiesafe_session_start(){
$sn = session_name();
if (isset($_COOKIE[$sn])) {
$sessid = $_COOKIE[$sn];
} else if (isset($_GET[$sn])) {
$sessid = $_GET[$sn];
} else {
session_start();
return false;
}
View Dotted Plish
<?php
// Loading plish from hard drive and getting plish dimentions
$plish = imagecreatefrompng('plish.png');
list($x,$y) = array(imagesx($plish),imagesy($plish));
// --- Creating black image with dots
// Creating new image (black by default) with dimentions of a plish
$dots = imagecreatetruecolor($x,$y);
@andrienko
andrienko / bandcamp
Last active Aug 29, 2015
Get links to all tracks on bandcamp page in pretty form
View bandcamp
document.body.innerHTML = ((function(d,o){
o.y=new Date(d.album_release_date).getFullYear();
o.r=['<h1>'+ o.a([d.artist,o.y,d.current.title].join(' - '),d.url)+'</h1>'];
(o.u = d.artFullsizeUrl) && o.r.push('<img src="'+ o.u+'"/>');
d.trackinfo.forEach(function(t){
for(o.i in t.file){}
o.r.push(o.a((""+t.track_num).replace(/^(\d{1})$/g,'0$1') + ' - '+ t.title+'.mp3',t.file[o.i]));
});
return o.r.join("<br/>\n");
@andrienko
andrienko / parameter trash
Created Jul 21, 2014
Passing parameters by their names, like some languages allow.
View parameter trash
<?php
function _f($callback,$arguments) {
if(!is_callable($callback))throw new Exception('Function '.$callback.' does not exist.');
$params = new ReflectionFunction($callback);
$params = $params->getParameters();
$argNames = array(); foreach ($params as $param){
$argNames[] = $param->name;