Skip to content

Instantly share code, notes, and snippets.

View kdes70's full-sized avatar
🏠
Working from home

Dmitriy Krivoshein kdes70

🏠
Working from home
View GitHub Profile
@kdes70
kdes70 / cartesian.php
Created July 12, 2018 02:52
декартова произведения
function cartesian(array $input)
{
$result = [[]];
foreach ($input as $key => $values) {
$append = [];
foreach ($values as $value) {
foreach ($result as $data) {
$append[] = $data + [$key => $value];
}
}
@kdes70
kdes70 / AppServiceProvider.php
Created July 25, 2018 16:26 — forked from simonhamp/AppServiceProvider.php
A pageable Collection implementation for Laravel
<?php
namespace App\Providers;
use Illuminate\Support\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
class AppServiceProvider extends ServiceProvider
{
public function boot()
@kdes70
kdes70 / gist:36cd197956d928e6a68716449882ae36
Created October 25, 2018 10:30
Вычислить дистанцию
<?php
function calculate_distance($cord1, $cord2){
$rad = 6372795;
$lat1 = (float)$cord1[0]*M_PI/180;
$long1 = (float)$cord1[1]*M_PI/180;
$lat2 = (float)$cord2[0]*M_PI/180;
$long2 = (float)$cord2[1]*M_PI/180;
@kdes70
kdes70 / helper.php
Last active February 14, 2019 09:43
Helpers functions
<?php
// Simple way of masking emails
function mask_email($email ) {
$char_shown = 2;
$mail_parts = explode("@", $email);
$username = $mail_parts[0];
$len = strlen( $username );
@kdes70
kdes70 / docker-compose.yml
Created March 4, 2019 08:30 — forked from li0nel/docker-compose.yml
Docker Compose
version: '2'
networks:
network:
driver: bridge
services:
app:
build:
context: .
@kdes70
kdes70 / tokens.md
Created March 27, 2019 07:19 — forked from zmts/tokens.md
Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

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

Основы:

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

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

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

@kdes70
kdes70 / site.conf
Created May 12, 2019 07:50
Nginx simple Laravel
server {
listen 80;
# корневая директория
root /var/www/d-dev.pro/public;
# порядок индексов
index index.php index.html index.htm;
@kdes70
kdes70 / test_app.md
Created May 27, 2019 12:14 — forked from deuterium7/test_app.md
Тестовое задание, Laravel

Тестовое задание по Laravel

16.10.2017:

Читаю "Разобраться с основами git и git-flow"

  • зачем нужны ветки ? (для возможности работы с отдельным частями проекта)
  • какие бывают ветки ? (master: по-умолчанию, develop и другие вспомогательные ветки)
  • зачем нужен .gitignore ? (для исключения из git'а файлов и папок, чтобы исключить конфликты при слиянии веток)
  • какие проблемы за нас решает git-flow и почему стоит его использовать ? (git-flow автоматизирует процесс управления версиями и приводит систему к общепринятой модели управления версиями)
  • что будет если не писать сообщения к комитам ? (тяжело будет разобраться в каком состоянии находится проект и какие правки были введены)

Читаю о тестировании

  • unit testing (необходимо для тестирования отдельных модулей системы, как-правило это какие-то классы или объединенные участки кода имеющие общую цель)
http://cronus.allowed.org works for me, 2018.1.6
@kdes70
kdes70 / debounce.md
Created February 19, 2020 04:46 — forked from zmts/debounce.md
Vue.js: lodash debounce

Vue.js: Lodash debounce

<input v-on:input="debounceInput">

methods: {
  debounceInput: _.debounce(function (e) {
    this.filterKey = e.target.value;
  }, 500)
}