Skip to content

Instantly share code, notes, and snippets.

View gus3inov's full-sized avatar
🤔
Thinking

Muslim Guseinov gus3inov

🤔
Thinking
  • Serbia, Belgrade
  • 00:18 (UTC +02:00)
View GitHub Profile
@gus3inov
gus3inov / get_bundle_id.py
Last active February 2, 2023 14:59
YOUTRACK Insert Enum Bundle Values
import requests
import os
import sys
YOUTRACK_BASE_URL = os.getenv('YOUTRACK_BASE_URL')
YOUTRACK_AUTH_TOKEN = os.getenv('YOUTRACK_AUTH_TOKEN')
def get_project_id(project_name: str) -> str:
params = f"fields=id&query={project_name}"
@gus3inov
gus3inov / inputs.js
Last active September 20, 2022 13:16
Inputs
const readline = require('readline');
const { stdin: input, stdout: output } = require('process');
const getUserInput = () => {
return new Promise(resolve => {
const rl = readline.createInterface({ input, output, terminal: false })
rl.question('Enter two numbers: ', answer => {
const [x, y] = answer.split(' ')
resolve([Number(x), Number(y)]);

Потоки

Одной из ключевых особенностей Rust является "безбоязненная конкурентность" (fearless concurrency). Однако тот вид конкурентности, который нужен для обработки большого количества задач, зависящих от производительности ввода/вывода (I/O), и который имеется в Go, Elixir, Erlang — отсутствует в Rust.

Давайте предположим, что вы хотите собрать что-то наподобие веб-сервера. Он будет обрабатывать тысячи запросов в каждый момент времени (проблема c10k). Говоря общими словами, рассматриваемая нами проблема состоит из многих задач, выполняющих в основном I/O операции (особенно связанных с сетевым взаимодействием).

"Одновременная обработка N задач" — такая задача лучше всего решается использованием нитей. Однако… Тысячи нитей? Наверное, это слишком много. Работа с нитями может быть довольно ресурсозатратной: каждая нить должна выделить большой стек (stack), настроить нить, используя набор системных вызовов. Ко всему прочему переключение контекста тоже затратно.

Конечно, тысячи одновременно работающих ните

@gus3inov
gus3inov / lookAt.py
Last active March 20, 2021 13:21
Look at implementation
import math
import numpy as np
def length(v):
return math.sqrt((v[0]*v[0])+ (v[1]*v[1]) + (v[2]*v[2]))
def normalize(v):
l = length(v)
if l != 0:
inv = 1.0 / l
fn main() {
let mut scan = Scanner::default();
let out = &mut BufWriter::new(stdout());
let n = scan.next::<usize>();
let q = scan.next::<usize>();
if n > q {
writeln!(out, "Shi").ok();
} else {
app.use(async (ctx: IContext, next) => {
const context = {};
console.log(ctx.request.url)
const componentHTML = ReactDomServer.renderToString(
<StaticRouter location={ctx.request.url} context={context}>
<Provider store={store}>
<App/>
</Provider>
</StaticRouter>
@gus3inov
gus3inov / passwords.md
Created May 2, 2018 10:53 — forked from zmts/passwords.md
Про хранение паролей в БД

Про хранение паролей в БД

При создании нового юзера

  1. При регистрации юзер вводит некий пароль
  2. Генерим случайную соль индивилуально для каждого юзера
  3. Создаем хеш на основе введенного юзером пароля и соли
  4. Записываем хеш(не пароль) в БД + соль в отдельном филде

Авторизация существующего юзера

  1. Юзер вводит в поле авторизации некий пароль
@gus3inov
gus3inov / tslint.json
Created April 9, 2018 18:13
My tslint configuration
{
"extends": ["tslint-react"],
"rules": {
"align": [
true,
"parameters",
"arguments",
"statements"
],
"ban": false,
@gus3inov
gus3inov / StringHelper.js
Created March 14, 2018 22:05
String Helper
console.clear()
function StringHelper(){
let self = this
this.lat = [
'a', 'b', 'v', 'g', 'd', 'e',
'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o',
'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh',
'sch', 'y', 'y', 'y', 'e', 'yu', 'ya'
@gus3inov
gus3inov / hoc.js
Created January 30, 2018 05:45
HIgh order component
function logProps(Component){
class LogProps extends React.Component{
componentWillReceiveProps(nextProps){
console.log('prevProps', this.props);
console.log('nextProps', nextProps);
}
render(){
return <Component {...this.props}/>
}