Skip to content

Instantly share code, notes, and snippets.

View khusamov's full-sized avatar
:octocat:
Working...

Khusamov Sukhrob khusamov

:octocat:
Working...
  • Khusamov Soft Company
View GitHub Profile
@khusamov
khusamov / bootswatch-theme-selector.js
Last active October 20, 2015 13:50
Переключатель темы Bootswatch for Twitter Bootstrap
/**
* Переключатель темы Bootswatch for Twitter Bootstrap.
* http://jsbin.com/momonupayu/1/edit?html,js,output
* http://bootswatch.com/help/
*
* Цепляется к событию change элемента select#themeswitch.
* Меняет link содержащий bootswatch в аттрибуте href.
*/
@khusamov
khusamov / create-dom-els.js
Last active May 9, 2016 09:23
Sencha Ext JS: Создание DOM элементов
// Ext.dom.Element
var div = Ext.getBody().createChild({
tag: "div",
cls: "print"
});
var div = Ext.getBody().appendChild({
tag: "div",
cls: "print"
});
var svg = Ext.dom.Helper.createDom("<svg/>");
@khusamov
khusamov / khusamov-package-static.js
Created April 11, 2017 11:08
Модуль для добавления статических файлов из подключенных модулей (например jQuery, Bootstrap и т.п.).
/**
* Модуль для добавления статических файлов из подключенных модулей (например jQuery, Bootstrap и т.п.).
*
* Пример использования:
* app.usePackages(["jquery", "bootstrap"]);
* script(src="/package/jquery/jquery.min.js")
* link(href="/package/bootstrap/css/bootstrap.min.css" rel="stylesheet")
* script(src="/package/bootstrap/js/bootstrap.min.js")
*
@khusamov
khusamov / ChildProcess.exec.ts
Last active June 14, 2018 07:19
Как правильно декодировать строку из 866 в UTF8, полученную из консоли дочернего процесса.
async function exec(command) {
const from = '866', to = 'utf8';
const exec = Util.promisify(ChildProcess.exec);
const {stdout, stderr} = await exec(command, {encoding: 'buffer'});
return {
stdout: Encoding.convert(stdout, to, from).toString(to),
stderr: Encoding.convert(stderr, to, from).toString(to)
};
};
const {stdout, stderr} = await exec(`dir`);
@khusamov
khusamov / gulpfile.ts
Last active June 18, 2018 07:49
Gulpfile: Компиляция tsc плюс копирование файлов
import * as Path from 'path';
import * as Gulp from 'gulp';
import * as GulpChanged from 'gulp-changed';
import * as GulpTypeScript from 'gulp-typescript';
/**
* Gulpfile введен в разработку пока лишь с одной целью:
* копировать JSON и XML файлы из src в dist.
*/
@khusamov
khusamov / Uint8Array2String.js
Last active May 28, 2019 08:45
Разбиение бинарного массива по делителю. Необходим для парсинга Multipart в браузере.
// TextDecoder, TextEncoder, https://github.com/inexorabletash/text-encoding
String2Uint8Array: function(str) {
return new TextEncoder().encode(str);
},
Uint8Array2String: function(arr, encoding) {
return new TextDecoder(encoding || "utf-8").decode(arr);
}
@khusamov
khusamov / interpol2.js
Created November 17, 2019 08:08
Кусочно-квадратичная интерполяция
//
// Кусочно-квадратичная интерполяция
// http://aco.ifmo.ru/el_books/numerical_methods/lectures/glava3.html
//
function interpol2(x, p) {
var a21 = (p[2][1] - p[0][1]) / ((p[2][0] - p[0][0]) * (p[2][0] - p[1][0]));
var a22 = (p[1][1] - p[0][1]) / ((p[1][0] - p[0][0]) * (p[2][0] - p[1][0]));
var a2 = a21 - a22;
var a1 = (p[1][1] - p[0][1]) / (p[1][0] - p[0][0]) - a2 * (p[1][0] + p[0][0]);
@khusamov
khusamov / isMixedBooleanArray.ts
Created November 21, 2019 20:03
Проверка массива логических значений. Возвращает true, если в массиве присутствуют и true и false.
/**
* Проверка массива логических значений.
* Возвращает true, если в массиве присутствуют и true и false.
* @param {boolean[]} booleanArray
* @returns {boolean}
*/
function isMixedBooleanArray(booleanArray: boolean[]): boolean {
let isMixed = false, firstItem = booleanArray[0];
for (const item of booleanArray) {
if (isMixed) break;
@khusamov
khusamov / ReactComponentDefaultProps.ts
Created November 28, 2019 18:19
Паттерн как задавать значения по умолчанию
import React, {Component, ContextType, FC, Fragment, MouseEvent, ReactNode} from 'react';
import {FaTrashAlt} from 'react-icons/all';
import classNames from 'classnames';
import TabPanelContext from '../TabPanel/TabPanelContext';
import ETabType from './ETabType';
import styles from './TabHeader.scss';
interface IRegularProps {
label?: string;
onRemove?: (item: any) => void;
@khusamov
khusamov / Floating.style.tsx
Last active January 18, 2020 14:26
Плавающий элемент (React)
import React, {forwardRef} from 'react';
import {styled} from '@material-ui/styles';
import {TopProperty, LeftProperty} from 'csstype';
type TLength = string | 0;
type TDivProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
interface IFloatingDivProps {
x: number;
y: number;