Skip to content

Instantly share code, notes, and snippets.

View IPRIT's full-sized avatar
💅

Alexander Belov IPRIT

💅
View GitHub Profile
@IPRIT
IPRIT / auth.js
Created January 24, 2023 11:20
Ejudge
import Promise from 'bluebird';
import request from 'request-promise';
import { config, extractParam } from '../../../utils';
export async function login(solution, systemAccount) {
return Promise.resolve().then(async () => {
const $loginFailedException = new Error('Login failed');
let authForm = buildAuthForm(solution, systemAccount);
let authEndpoint = getEndpoint('/cgi-bin/new-judge');
import request from 'request-promise';
import cheerio from 'cheerio';
import { config } from "../../../utils";
import { getClearedSolutionId } from "./getVerdict";
const ACM_SOLUTIONS_ENDPOINT = '/cgi-bin/new-judge';
export async function getCompilationError(systemAccount, contextRow) {
let { jar, sid } = systemAccount;
let { solutionId } = contextRow;
@IPRIT
IPRIT / symbols.ts
Created November 19, 2022 13:45
Symbol modifiers in TypeScript
declare const NegativeKey: unique symbol;
declare const PositiveKey: unique symbol;
type Negative<T extends number> = T & { [NegativeKey]?: true };
type Positive<T extends number> = T & { [PositiveKey]?: true };
type IsNegative<T> = keyof NonNullable<T> extends keyof Omit<NonNullable<T>, typeof NegativeKey> ? false : true;
type IsPositive<T> = keyof NonNullable<T> extends keyof Omit<NonNullable<T>, typeof PositiveKey> ? false : true;
type ToNumber<T extends number> = T extends infer N & { [NegativeKey]?: true }
type CapitalLetters =
| 'A'
| 'B'
| 'C'
| 'D'
| 'E'
| 'F'
| 'G'
| 'H'
| 'I'
interface ObjectConstructor {
keys<T>(o: T): ObjectKeys<T>
}
type ObjectKeys<T> =
T extends object ? (keyof T)[] :
T extends number ? [] :
T extends Array<any> | string ? string[] :
never;
import { withNaming } from '@bem-react/classname';
// mg-sticky шифруется aab,
// чтобы сгенерированный класс совпадал с css — хардкодим целиком
export const cls = withNaming({ e: '__' })('mg-sticky');
import { withNaming } from '@bem-react/classname';
// mg-sticky шифруется aab,
// чтобы сгенерированный класс совпадал с css — хардкодим целиком
export const cls = withNaming({ e: '__' })('mg-sticky');
const SSID = 'alexander';
const PASSWORD = '12341234';
const button = require('@amperka/button').connect(P7, { holdTime: 0.6 });
const led = require('@amperka/led').connect(P6);
const memory = require('@amperka/card-reader').connect(P8);
const http = require('http');
const wifi = require('@amperka/wifi').setup((err) => {
if (err) {
const SSID = 'alexander';
const PASSWORD = '12341234';
const NAME = 'my-temperature';
const button = require('@amperka/button').connect(P7, { holdTime: 0.6 });
const led = require('@amperka/led').connect(P6);
const dweet = require('@amperka/dweetio').connect(NAME);
const memory = require('@amperka/card-reader').connect(P8);
const server = require('@amperka/server').create();