Skip to content

Instantly share code, notes, and snippets.

View furdarius's full-sized avatar

Artemiy Ryabinkov furdarius

View GitHub Profile
@furdarius
furdarius / how_to_homestead.txt
Created August 18, 2015 15:56
Сказ о том как я Vagrant, Homestead, Cygwin и Rsync ставил.
Устанавливаем Vagrant https://www.vagrantup.com
Устанавливаем ConEmu https://github.com/Maximus5/ConEmu
Устанавливаем Homestead http://laravel.com/docs/5.1/homestead
bash init.sh — Переносит настройки Homestead в %homepath%/.homestead
Теперь настройки Homestead будут глобальные
Мои настройки:
folders:
- map: ~/web-projects/homestead
to: /home/vagrant/projects
type: rsync
@furdarius
furdarius / gulpfile.js
Created August 29, 2015 19:07
Gulpfile.js with sass, js, maps, config, prod task, sourcemaps
'use strict';
var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var autoprefixer = require('gulp-autoprefixer');
var sassdoc = require('sassdoc');
var minifycss = require('gulp-minify-css');
@furdarius
furdarius / main.cpp
Created November 10, 2015 10:08
Генерация перестановок
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;
fstream fout;
void printA(const vector<short int> &arr) {
@furdarius
furdarius / main.cpp
Last active November 10, 2015 13:46
Кол-во компонентов графа
vector<char> used;
vector< vector<int> > g;
void dfs(int start)
{
used[start] = true;
for (int i = 0; i < g[start].size(); ++i) {
if (!used[g[start][i]]) {
dfs(g[start][i]);
}
@furdarius
furdarius / backend.env.js
Last active November 29, 2015 16:52
Browserify Angular application gulpfile for Laravel5.1 (Elixir)
module.exports = {
assetsPath: 'resources/backend/assets',
publicPath: 'public/backend',
angularPath: 'resources/backend/angular/'
};
@furdarius
furdarius / main.cpp
Created January 12, 2016 19:20
split string C++
vector< string > split(string str)
{
std::vector<std::string> v ; //Use vector to add the words
std::size_t prev_pos = 0, pos;
while ((pos = str.find_first_of(",;", prev_pos)) != std::string::npos)
{
v.push_back(str.substr(prev_pos, pos-prev_pos));
prev_pos = pos + 1;
}
@furdarius
furdarius / Default (Linux).sublime-keymap
Last active March 10, 2016 18:28
Sidebar sublime3-theme
[
{
"keys": ["alt+1"],
"command": "toggle_side_bar"
}
]
@furdarius
furdarius / ssh-keys-tutorial.md
Last active August 24, 2016 08:55
Как пользоваться SSH ключами
  1. Пользователь генерирует пару ключей
    • Публичный (id_rsa.pub) - Этот ключ записывается на сервера или отдаётся во вне, что-бы по нему авторизовывать пользователя.
    • Приватный (id_rsa) - Не покидает машины, на которой он был сгенерирован. Используется для подписи данных и авторизации на внешнем сервере. (Приватный ключ защищается паролем, поэтому, будучи сворованным, не дает злоумышленнику воспользоваться им)
  2. Пользователь даёт владельцу машины публичный ключ (id_rsa.pub)
  3. Владелец машины записывает этот ключ в authorized_keys
  4. Теперь авторизация по ключу конкретным пользователем на конкретной машине возможна.
  5. Желательно отключать авторизацию по паролю на сервере. Для этого в файле sshd_config внести опцию PasswordAuthentification no

Доп. материалы:

@furdarius
furdarius / csrf-tutorial.md
Last active February 7, 2024 18:38
Защита от CSRF

Что такое CSRF атака?

Ознакомиться с самой идеей атаки CSRF можно на классических ресурсах:

Выдержка из ответа на SO:

Причина CSRF кроется в том, что браузеры не понимают, как различить, было ли действие явно совершено пользователем (как, скажем, нажатие кнопки на форме или переход по ссылке) или пользователь неумышленно выполнил это действие (например, при посещении bad.com, ресурсом был отправлен запрос на good.com/some_action, в то время как пользователь уже был залогинен на good.com).

@furdarius
furdarius / ssl-certs-generation.md
Last active March 13, 2022 19:26
О том как генерировать SSL сертификаты

Криптографические алгоритмы

На сегодняшний день (27 января 2017) в криптографии наиболее широко распространены алгоритмы построенные на базе RSA и Elliptic Curves.

RSA имеет большую популярность, в следствии того, что был изобретен раньше и прост в исполнении. RSA основан на вычислительной сложности задачи факторизации больших целых чисел.

Задачей факторизации люди занимаются уже множество десятилетий, а вот субэкспоненциальных алгоритмов решения задачи дискретного логарифмирования на сегодняшний день не известно.