Skip to content

Instantly share code, notes, and snippets.

View EvgenyKungurov's full-sized avatar

EvgenyKungurov EvgenyKungurov

  • Russian Federation, Chita city
View GitHub Profile
FROM ruby:2.6.5-alpine3.10
ENV WEB_PORT 80
ENV BUILD_PACKAGES nginx nodejs tzdata postgresql-dev alpine-sdk yarn imagemagick
ENV UPDATE_PACKAGES libxml2 libxslt sqlite bash
WORKDIR /app
ENV HOME /app
RUN set -ex && \
version: '2.1'
services:
app:
image: ${CI_REGISTRY:-registry.southbridge.io}/${CI_PROJECT_NAMESPACE:-web}/${CI_PROJECT_NAME:-slurm}:${CI_COMMIT_REF_SLUG:-local}.${CI_PIPELINE_ID:-1}
environment:
DB_HOST: db
DB_PORT: 5432
DB_USER: postgres
DB_PASSWORD: postgres
DB_NAME: slurm_test
// может завершиться по таймауту, по кол-ву ставок или по макс. ставке
package main
import (
"context"
"fmt"
"math/rand"
"strconv"
"strings"
"sync"
package main
import (
"bytes"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strconv"
)
@EvgenyKungurov
EvgenyKungurov / types.go
Last active April 2, 2020 04:12
Go lang types with format
package main
import (
"bytes"
"fmt"
"strings"
)
func main() {
str1 := "Hello"
class Booking::Contract < Dry::Validation::Contract
params do
required(:seansId).filled(:integer)
required(:email).value(:string)
required(:seatIds).value(:array).each(:integer).filled
end
rule(:email) do
unless /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i.match?(value)
key.failure('has invalid format')
@EvgenyKungurov
EvgenyKungurov / tokens.md
Created November 7, 2019 13:22 — forked from zmts/tokens.md
Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Last major update: 21.10.2019

Основы:

Аутентификация(authentication, от греч. αὐθεντικός [authentikos] – реальный, подлинный; от αὐθέντης [authentes] – автор) - это процесс проверки учётных данных пользователя (логин/пароль). Проверка подлинности пользователя путём сравнения введённого им логина/пароля с данными сохранёнными в базе данных.

Авторизация(authorization — разрешение, уполномочивание) - это проверка прав пользователя на доступ к определенным ресурсам.

Например после аутентификации юзер sasha получает право обращатся и получать от ресурса "super.com/vip" некие данные. Во время обращения юзера sasha к ресурсу vip система авторизации проверит имеет ли право юзер обращатся к этому ресурсу (проще говоря переходить по неким разрешенным ссылкам)

# frozen_string_literal: true
# класс для начислений по запрплате при создании счета
class Salary::Income::Invoice::Update < Salary::Income::Base
def call
destroy_old_incomes
find_project_contracts
create_incomes
end
@EvgenyKungurov
EvgenyKungurov / salary_income_spec.rb
Created October 23, 2019 08:07
salary_income_spec.rb
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Salary::Income::Invoice::Create do
subject { described_class.call(invoice) }
let!(:employee) { create :employee, team: team }
let!(:invoice) { create :invoice, act_from: period_begin, act_to: period_end }
let!(:redmine_project) { create :redmine_project, client: invoice.client }
@EvgenyKungurov
EvgenyKungurov / cool_acessors.rb
Created June 26, 2019 05:55
Use attributes with history and type class protection
module Acessors
def self.included(klass_receiver)
klass_receiver.extend AttrAccessorWithHistory::ClassMethods
klass_receiver.extend StrongAttrAcessor::ClassMethods
klass_receiver.include AttrAccessorWithHistory::InstanceMethods
end
module AttrAccessorWithHistory
module ClassMethods
def attr_accessor_with_history(*args)