Pull to refresh
20
0
Андрей Владиславович Галкин @andvgal

Свободный художник на все руки

Send message

Proof-of-Stake: взгляд изнутри

Reading time14 min
Views23K


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

Эта статья будет полезной всем разработчикам, кто уже столкнулся с уязвимостями PoS или кому всё ещё только предстоит.


Ужасаемся под катом.

Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments7

Правоведы о тестировании при найме в частном секторе

Reading time9 min
Views6.7K


Источник фото


В первых двух статьях (первая и вторая) о трудовом праве автор пытался донести насколько право идёт вразрез с некоторыми устоявшимися обычаями. Из комментариев стало ясно, что многие даже не представляют, что современные "тестовые задания" — это от 4 часов до нескольких дней полноценной дистанционной работы со сдачей результата.


В данной статье приводится обзор мнений экспертов с минимальными комментариями.

Читать дальше →
Total votes 20: ↑12 and ↓8+4
Comments273

Минтруд: тестовое задание — это трудовые отношения

Reading time10 min
Views54K


Изначальная статья "Что всё-таки не так с наймом в IT?" многим порвала шаблон мышления месяц назад. Не все смогли адекватно воспринять суть трудового права. От шуток к делу, теперь слово берёт Министерство труда и социальной защиты Российской Федерации.


Ниже дословно:


В соответствии со статьей 64 Трудового кодекса Российской Федерации (далее — ТК РФ) необоснованный отказ в заключении трудового договора запрещается, если это не связано с деловыми качествами работника.
В целях проверки его соответствия поручаемой работе в трудовом договоре по соглашению сторон может быть предусмотрено условие об испытании работника (статья 70 ТК РФ).

UPD: вопросы приведены в комментарии, это прямой ответ на общий вопрос: "чем регулировать тестовое задание".


Поэтому тестовое задание без трудового договора — это сразу ст.5.27. КоАП РФ:


  • Соответственно 30-50 тыс. рублей за первое, и 50-70 тыс. рублей за каждое последующее нарушение для работодателя.
  • Если работодатель отказывается признавать трудовые отношения, то ещё:
    • 50-100 тыс. рублей для работодателя, 100-200 тыс. рублей за повтор;
    • 3-5 тыс. рублей для конкретного работника, который выдал тестовое задание, 5-7 тыс. рублей за повтор.
  • Невыплата зарплаты за тестовое задание — 30-50 тыс. рублей, 50-100 тыс. рублей за повтор.

Разбираемся под катом.

Читать дальше →
Total votes 99: ↑67 and ↓32+35
Comments620

Что всё-таки не так с наймом в IT?

Reading time4 min
Views33K

Недавно бомбанула статья о наболевшем и вынужденный ответ на неё.


По сути собралось два лагеря или даже больше, но кто-то вообще подумал посмотреть в законодательство?


Далее рассмотрим:


  1. Почему существует трудовое законодательство и права трудящихся.
  2. Какие юридические последствия несёт за собой тестовое задание.
  3. Как получать зарплату на незаконных отказах.

Читать дальше →
Total votes 72: ↑45 and ↓27+18
Comments231

Асинхронная бизнес-логика в наши дни

Reading time19 min
Views15K

Вкратце:


  • Пруф уже реализован на C++, JS и PHP, подходит для Java.
  • Быстрее чем coroutine и Promise, больше фич.
  • Не требует выделения отдельного программного стека.
  • Дружит со всеми средствами безопасности и отладки.
  • Работает на любой архитектуре и не требует особых флагов компилятора.

Читать дальше →
Total votes 29: ↑25 and ↓4+21
Comments57

Универсальная работа с VCS/SCM в рамках автоматизации с FutoIn CID

Reading time6 min
Views2K

use cases


Для некоторых современных программистов не существует систем контроля версий кроме Git, но на практике Subversion всё ещё востребован, а Mercurial имеет своих ярых сторонников. Быстрый поиск в подкрепление.


В результате DevOps'ы не монопроектных компаний встречаются с необходимостью автоматизировать работу с весьма разными системами. При этом у каждой есть свои нюансы и неизбежно появляются скрытые ошибки в сценариях, выстреливающие в самый неподходящий момент. Возникает потребность в предсказуемом поведении с минимальной "гибкостью", а не пёстрым букетом возможностей.

Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments0

Мета-инструмент разработки: FutoIn CID

Reading time8 min
Views4K

use cases


Сейчас мало кого удивишь инструментами управления зависимостями проекта вроде npm, composer, bundler, pip, maven, cargo и других. Их общий недостаток — невозможность управлять непосредственно средой выполнения. Такая задача решается через nvm, php-build, rvm, virtualenv, sdkman, rustup и прочие глобальные "манагеры" версий runtime, обычно написанные под Bash/Zsh.


Следующий уровень "проблем" начинается, когда универсальный разработчик ежедневно занимается проектами с использованием совершенно разных технологий. Переменные окружения превращаются в месиво, а запуск шелла может занимать несколько секунд. Неизбежно начинаются бытовые ошибки в работе с этим зоопарком.


Далее разброд и шатание настегает Continuous Integration & Delivery, где ручные танцы с бубном установки инструментов и активирования конкретных версий совершенно не приветствуются, а в идеале требуется в принципе максимально абстрагироваться от используемых технологий и довести процесс до примитивных нейтральных команд: подготовить к релизу, затегить, скачать, подготовить, построить, упаковать, выложить, проверить, одобрить(подписать), выкатить.


Тут сам собой напрашивается инструмент, унифицировано работающий поверх уже существующих технологий,
который из себя и представляет FutoIn CID — FutoIn Continuous Integration & Delivery tool.

Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments3

CodingFuture + Puppet. Часть VI: актуальные чёрные списки и защищённый стук

Reading time7 min
Views4.9K

use cases


Вкратце:


  1. Защита сервисов и открытие портов по стуку криптографически стойким и не воспроизводимым Single Packet Authorization (SPA) с fwknop 2.6.9+.
  2. Динамически настраиваемое обновление чёрных списков с All Cybercrime IP Feeds by FireHOL.
  3. Полноценная поддержка ipset в cfnetwork.
  4. Поддержка собственных чёрных списков.
  5. Типичные варианты применения.

Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments0

Размышления о «пакете Яровой» и путях контроля бесконтрольных

Reading time3 min
Views9.9K

Страсти уже вроде поутихли и неизбежность стала очевидной — отменить наверно не получится. Давайте тогда подумаем какие правозащитные меры есть возможность требовать.


Попробую провести аналогию. В России запрещён игорный бизнес на большей её части. Результат: бизнес никуда не делся, а силовики крышуют монополистов, устраивая маски-шоу всем конкурентам на 2-3 дней после открытия. Можно было бы привинтить "хитрый план Путина" о скрытом пополнении оборонного и разведывательного бюджета, но сильно сомнительно.


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


Если уж что-то неизбежно, то следует ставить вопрос об общественном контроле этого неизбежного.


Возникшие опасения


  1. Нарушение тайны личной переписки и разговоров.
  2. Нарушение коммерческой тайны с целью нечестной конкуренции.
  3. Нагрузка на операторов и повышение тарифов.

Как эти вопрос решить одним махом

Читать дальше →
Total votes 49: ↑18 and ↓31-13
Comments127

CodingFuture + Puppet. Часть V: базы данных (cfdb)

Reading time8 min
Views6.1K

cfdb use cases


Вкратце:


  1. cfdb — модуль развёртывания и автонастройки узлов и кластеров баз данных и доступа к ним с высокой доступностью и защитой от сбоев.
  2. Как proof-of-concept поддерживаются MySQL и PostgreSQL на базе Percona Server/XtraDB Cluster и официальных сборок PostgreSQL+repmgr.
  3. Изоляция ресурсов на базе cgroups, интеграция с настройками сетевого фильтра через модуль cfnetwork и строгий контроль доступа средствами СУБД.
  4. Запись на один узел для минимизации конфликтов и распределение нагрузки для read-only доступа.
  5. Автоматическая проверка здоровья кластера и фактической осуществимости доступа.
  6. Ручное и автоматическое локальное резервное копирование, автоматизированное восстановление данных.
  7. Поддержка автоматической миграции уже существующих баз данных

Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments6

CodingFuture + Puppet. Часть IV: централизованное управление (cftotalcontrol)

Reading time10 min
Views5.7K

Вкратце:


  1. cftotalcontrol — модуль создания среды специальной учётной записи с SSH доступом к другим узлам инфраструктуры и выполнения массовых рутинных задач параллельно.
  2. Отвлечённая от реализации теория организации безопасного и контролируемого доступа к инфраструктуре.
  3. Описывается практическое применение конкретного решения

Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments2

CodingFuture + Puppet. Часть III: установка Puppet Server (cfpuppetserver)

Reading time11 min
Views11K

Вкратце:


  1. cfpuppetserver — модуль автоматической настройки Puppet Server + PuppetDB + PostgreSQL + r10k + librarian-puppet
  2. Краткое введение в Puppet
  3. Описывается изначальное развёртывание с нуля

Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments2

CodingFuture + Puppet. Часть II: доступ и стандартное окружение (cfauth + cfsystem)

Reading time8 min
Views6.9K

Вариант развёртывания Linux систем на базе Puppet 4. Часть II: доступ и стандартное окружение (cfauth + cfsystem)


Вкратце:


  1. cfauth — настраивает сервис SSH, админскую учётную запись, sudo, пароль суперпользователя
  2. cfsystem — настройка: APT, временной зоны, отправки системных писем, синхронизация времени, расширенный список стандартных пакетов
  3. Все модули интегрированы с модулем сетевого фильтра cfnetwork и не требуют дополнительных настроек

Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments0

CodingFuture + Puppet. Часть I: сеть и сетевой фильтр (cfnetwork + cffirehol)

Reading time14 min
Views10K

Вкратце:


  1. cfnetworkPuppet API для полной настройки сети и фильтра через ресурсы Puppet. Идеально дружит с Hiera и потенциально другими "data providers" в концепции Puppet.
  2. cffirehol — "meta-provider" конкретной реализации настройки фильтра для cfnetwork на базе замечательного генератора FireHOL
  3. Пока поддерживаются только Debian 8+ (Jessie и выше) и Ubuntu 14.04+ (Trusty и выше)

Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments0

Квартиры-модули или путь развития жилых помещений

Reading time8 min
Views13K
image

Стоит сразу отметить, что автор ни разу не строитель, а в лучшем случае обычный гик.

В IT, транспорте, машиностроении всё давно уже идёт по пути стандартизации и модуляризации. Яркий пример — это ISO контейнеры для интермодальной перевозки. В современных офисных зданиях делают модульные полы, потолки, перегородки и собирают всё как конструктор, но в строительстве жилых домов подобное пока можно увидеть только в начинке (кухня, санузлы, электрика и т. п.), а вот чтобы сделать всю квартиру сменным модулем пока вроде бы не дошли. Подозревается, что это объясняется экономическими соображениями и технологическими ограничениями прошлого, без учёта социальных и правовых факторов, а они следующие (добавьте свои):
Читать дальше →
Total votes 23: ↑19 and ↓4+15
Comments39

FutoIn AsyncSteps: концепция и реализация асинхронной бизнес-логики

Reading time8 min
Views2.6K
В этой статье хочу познакомить уважаемых читателей с ещё одним велосипедом подходом к организации асинхронного кода. Сразу оговорюсь, что существует масса решений от лёгких потоков и разных предложений по Promise до самопала под специфические задачи, но я не берусь приводить какие-либо субъективные сравнения, поскольку ни одно из них меня не устроило не только с точки зрения программиста, но и проверяющего код.

FutoIn — с одной стороны, это «клей» из стандартов/спецификаций разных мастей для унификации программных интерфейсов различных существующих проектов по устоявшимся типам, с другой — это концепция для построения и масштабирования компонентов проекта и инфраструктуры, написанных на разных технологиях, без потребности в добавления этого самого «клея».

AsyncSteps — это спецификация и реализация программного интерфейса для построения асинхронных программ в независимости от выбранного языка или технологии.

Цели, поставленные для концепции:
  • реализация (с оговорками) должна быть возможна на всех распространённых языках программирования с поддержкой объектов и анонимных функций. Репрезентативный минимум: С++, C#, Java, JavaScript, Lua (не ООП), PHP, Python;
  • написанная программа должна легко читаться (сравнимо с классическим вариантом);
  • должны поддерживаться исключения языка (Exceptions) с возможностью перехвата и разворачиванием асинхронного стека до самого начала;
  • требуется удобство для написания асинхронных библиотек с единым подходом для вызова, возврата результата и обработки ошибок;
  • предоставить простой инструмент для естественного распараллеливания независимых веток программы;
  • предоставить простой инструмент создания асинхронных циклов с классическим управлением (break, continue) и меткой для выхода из вложенных циклов;
  • предоставить место для хранения состояния исполняемой бизнес-логики;
  • возможность отменять абстрактную асинхронную задачу, правильно завершая выполнение (освобождая внешние ресурсы);
  • возможность легко интегрироваться с другими подходами асинхронного программирования;
  • возможность ограничивать время выполнения задачи и отдельно каждой подзадачи;
  • возможность создавать модель задачи для копирования (улучшения производительности критичных частей) или использования как объект первого класса для передачи логики в качестве параметра (а-ля callback);
  • сделать отладку асинхронной программы максимально комфортной.

Читать дальше →
Total votes 4: ↑3 and ↓1+2
Comments6

Information

Rating
Does not participate
Location
Рига, Латвия, Латвия
Registered
Activity