Search
Write a publication
Pull to refresh
5
0
Андрей @UncleAndy

User

Send message

Парадокс Монти Холла не работает

Reading time3 min
Views28K

Недавно на просторах интернета увидел отрывок из фильма "Двадцать одно". В этом отрывке говорится о том, что парадокс Монти Холла действительно работает!

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

В голову приходили разные вопросы: чем отличается дверь без приза по отношению к другой двери без приза, как если мы выбрали именно её? А что если после первой итерации выбора двери к тебе придут Люди в чёрном и сотрут из твоей памяти это первоначальное решение? Куда тогда исчезнут лишние проценты, ведь теперь выбор останется между двумя дверьми?

Читать далее

Прокачиваем силу — Rust и Windows API

Reading time10 min
Views19K


Недавно я написал статью Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад. В статье рассказывается о том, как изучать ассемблер на примере игрушки 2048. Возможно для целей самой статьи игрушка была подходящая, но конечный результат меня немного удручил. Бинарник размером в 10 килобайт, который потребляет 2 мегабайта памяти, из-за неправильно слинкованной библиотеки резал глаза.

Посему я задался вопросом, а как это можно было бы сделать правильнее? Наверняка есть намного более удачное решение. (И организовал ещё один конкурс с призами в конце статьи)

А почему бы не сделать на Rust, и правильно прикрученных библиотеках? При этом, если вы знаете, что делаете, то вы можете запросто уменьшить количество потребляемой оперативной памяти, но при этом написать визуальную игрушку с использованием Windows API.

Причём это не значит, что вы будете использовать какую-то нестандартную библиотеку. Встречайте — windows-rs, проект поддерживаемый Microsoft. Ваш билет в мир Windows, если вы пишете на Rust.
Читать дальше →

Что должен, но не знает про конкуренцию в PostgreSQL каждый разработчик?

Reading time13 min
Views22K

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

Читать далее

Вычисляем на видеокартах. Технология OpenCL. Часть 1a. Как работает OpenCL

Reading time7 min
Views17K
22 июня автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов провёл вебинар «Вычисляем на видеокартах. Технология OpenCL».



Мы подготовили для вас его текстовую версию, для удобства разбив её на смысловые блоки.

0. Зачем мы здесь собрались. Краткая история GPGPU.
1a. Как работает OpenCL.
1b. Пишем для OpenCL.
2. Алгоритмы в условиях массового параллелизма.
3. Сравнение технологий.

Мы обещали, что разберём написание полноценной программы уже в этой части, но материала оказалось слишком много, и мы разбили эту часть надвое. В первой половине расскажем про основные принципы, которые должен знать каждый OpenCL-разработчик, а во второй напишем программу.

Есть мнение, что для написания эффективного кода для GPU программист обязан понимать архитектуру видеокарты. И это мнение не чьё-нибудь там, а NVIDIA (см. Лекции NVIDIA по GPGPU). Не будем спорить и разберём базовые принципы работы видеокарты.
Читать дальше →

Архитектура Вселенной, часть 1: Сознание

Reading time26 min
Views47K

'По одной капле воды человек, умеющий мыслить логически, может сделать вывод о возможности существования Атлантического океана или Ниагарского водопада, даже если он не видал ни того, ни другого и никогда о них не слыхал' - Артур Конан-Дойль, «Этюд в багровых тонах».

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

Трудно переоценить влияние философии на науку, так как наука произошла именно от философии. Использующаяся для формализации процесса рассуждений математика стала первенцем философии. Даже сами слова "философия" и "математика" произошли из терминов религиозной школы одного из величайших философов античности - Пифагора. Физика, названию которой мы обязаны другому великому античному философу - Аристотелю, примерно до XVIII века именовалась натуральной философией. Ему же мы обязаны появлением логики - науки о мышлении. Кроме того, философы, изучавшие процесс познания и его ограничения, создали важнейший инструмент исследования природы - научный метод.

Даже многие научные открытия последних веков были вдохновлены философией. Иоганн Кеплер, Николай Коперник и Исаак Ньютон вдохновлялись теорией о гармонии мира Пифагора, о чем сами и писали в своих научных трудах. Альберт Эйнштейн был ярым приверженцем философии средневекового философа Бенедикта Спинозы, но также считал себя в некотором смысле платоником и пифагорейцем. Один из основоположников квантовой механики Эрвин Шрёдингер написал целую книгу о том, как его открытия в квантовой механике согласуются с индийской философией веданты.

До сих пор в западных университетах всем специалистам в точных и естественных науках, успешно защитившим свою диссертацию, присваивают почетное звание доктора философии - Philosophiæ Doctor, часто сокращаемое в речи и на письме до простого PhD. Тем самым университеты подчеркивают, что философия лежит в самом основании всего человеческого знания. Но чем именно занимается философия, в чем состоит её роль?

Читать далее

Безопасная многопоточность в Rust

Reading time10 min
Views12K

Представьте ситуацию: вы решили добавить функционал в некоторую сущность (класс, структуру, ...). Для этого вам понадобилось хранить внутри сущности дополнительные данные. Вы добавляете приватные поля, меняете и читаете их внутри методов, интерфейс методов не изменяется, и всё выглядит хорошо. И не просто выглядит, а компилируется, запускается и проходит тесты. Красота... А потом, в один прекрасный день, прод падает. И может быть даже, теряет часть важных данных. Вы с коллегами начинаете искать причину поломки. И оказывается, что та сущность, которую вы дополняли год назад, делится между несколькими потоками, а поля добавленные вами не потокобезопасны и поэтому гонка за доступ к ним в какой-то момент вызывает их повреждение. Неприятно, согласитесь? Хотелось бы иметь инструмент, позволяющий избегать подобных ситуаций. И язык программирования Rust такой инструмент предоставляет.

Читать далее

Запускаем PostgreSQL в Docker: от простого к сложному

Level of difficultyEasy
Reading time12 min
Views643K

О простых и продвинутых способах запуска PostgreSQL в Docker: добавляем healthcheck, ставим на мониторинг, настраиваем параметры.

Читать далее

Как я спас компанию, заставив играть коллектив в настольные игры

Reading time23 min
Views24K

“Нет ничего более приятного, чем опыты над людьми, особенно когда тебе за это платят”… Что можно сказать о человеке, прочитав эту фразу? Что ему нравится его работа!

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

RUI – библиотека для создания web-приложений на языке go

Reading time3 min
Views4.5K

Хочу представить вам свой проект – библиотеку RUI (Remote User Interface). Библиотека предназначена для создания web-приложений на языке go. 

Особенностью библиотеки заключается в том, что вся обработка данных осуществляется на сервере, а браузер используется как тонкий клиент. Для связи клиента и сервера используется WebSocket. Для разработки вам не нужны HTML/CSS/JavaScript. Все разрабатывается на языке go.

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

Библиотека бесплатна и распространяется под MIT лицензией. В данный момент библиотека находится в статусе беты.

Если вас это заинтересовало, то прошу в статью.

Читать далее

Вычисляем на видеокартах. Технология OpenCL. Часть 0. Краткая история GPGPU

Reading time7 min
Views19K
22 июня автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов провёл вебинар «Вычисляем на видеокартах. Технология OpenCL».

Мы подготовили для вас его текстовую версию, для удобства разбив её на смысловые блоки.

  • 0 (вводная часть). Зачем мы здесь собрались. Краткая история GPGPU.
  • 1. Пишем для OpenCL.
  • 2. Алгоритмы в условиях массового параллелизма.
  • 3. Сравнение технологий.

Основная цель цикла — написать простую, но полноценную программу на OpenCL и объяснить базовые понятия. Программу на OpenCL напишем уже в следующей части цикла, понять которую можно, не читая вводную. Однако во вводной вы найдёте понятия и тезисы, важные при программировании с OpenCL.

Цикл будет полезен и тем, кто уже знаком с OpenCL: в нём мы поделимся некоторыми хаками и неочевидными наблюдениями из собственного опыта.

CPU — в помойку?


В статье будем рассматривать технологию GPGPU. Разберёмся, что значат все эти буквы. Начнем с последних трёх — GPU. Все знают аббревиатуру CPU — Central Processor Unit, или центральный процессор. А GPU — Graphic Processor Unit. Это графический процессор. Он предназначен для решения графических задач.

Но перед GPU есть ещё буквы GP. Они расшифровываются как General-Purpose. В аббревиатуре опускают словосочетание Computing on. Если собрать всё вместе, получится General-Purpose Computing on Graphic Processor Unit, что по-русски — вычисления общего назначения на графическом процессоре.



То есть процессор графический, но мы почему-то хотим вычислять на нём что-то, что вообще к графике никакого отношения не имеет. Например, прогноз погоды, майнинг биткоинов. Моя задача в ближайшее время — объяснить, зачем нужно на процессоре для графики обучать, например, нейросети.
Читать дальше →

Полностью электрический ускоритель космических кораблей

Reading time14 min
Views46K


Дамы и Господа, в этой статье я представлю вашему вниманию революционный безтопливный ускоритель, не имеющий аналогов в мире, который ничего не выбрасывает (требуется только электричество). Мой ускоритель в тысячи раз эффективней обычных ракетных двигателей, он просто перевернёт всю мировую космонавтику и позволит колонизировать всю Солнечную систему за 50-100 Лет. 3 недели до Марса, 7 месяцев до Юпитера и 11 месяцев до Сатурна — такого даже в научной фантастике нет — но сегодня это станет реальностью.

Как и все безтопливные ускорители — мой ускоритель может работать только в вакууме, но главное преимущество моего ускорителя перед другими безтопливными двигателями заключается в том — что другие ускорители не работают, а мой работает!!! — мой ускоритель никаким законам физики не противоречит. Мой ускоритель противоречит лишь животным инстинктам — человек так устроен, что в процессе жизнедеятельности, человеку постоянно необходимо гадить — и поэтому Людям кажется, что если не нагадить в космосе — то ракета не полетит — но это в корне не верно! Хватит обезьяних технологий!!! Реактивный … струя, импульс, формула Циолковского — сегодня вы забудете про эту гадость как про плохой сон.
Для начала давайте отправимся на Луну со второй космической скоростью.

Итак, чтобы отправиться с орбиты Земли на Луну, нам понадобится:


Читать дальше →

Нюансы работы с PostgreSQL в 3 кейсах от DBA

Reading time9 min
Views17K

Иван Чувашов, DBA Okko и Southbridge, поделился жизненными кейсами с PostgreSQL, которые помогут решить ваши проблемы.

Разберем случаи из PostgreSQL: запросы в статусе idle in transaction, выключенные контрольные суммы данных, переполнение int4, убивающие базу временные файлы и загрузку CPU.

Читать далее

У меня нет руки, но я играю в шутеры и action/RPG

Reading time6 min
Views12K

Привет! Меня зовут Андрей Квасов, и я работаю заместителем технического директора по административным вопросам в Pixonic. 

Я всегда был заядлым геймером, но пару лет назад попал в аварию и первое время после этого думал, что моя геймерская жизнь на этом закончилась: в лучшем случае осталось играть в стратегии, но никак не в Destiny 2 и soulslike-игры. Но технологии развиваются, так что вскоре я обнаружил, что найти подходящее мне устройство для гейминга — не такая уж и большая проблема. 

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

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

Читать далее

Как мы использовали расширенную статистику Postgres и ускорились в 2850 раз

Reading time9 min
Views14K

В этом переводе к старту курса по Fullstack-разработке на Python напоминаем о том, насколько важно знать технологии в деталях, грамотно применять их и планировать работу в целом. Цифра 2850 в заголовке — не преувеличение: ранее занимавший две минуты запрос в базе данных компании Affinity сегодня выполняется за 42 миллисекунды. Подробности, как всегда, под катом. А если вам нужен план развития навыков с большим количеством практики, вы можете обратить внимание на наши курсы.

Читать далее

UUID версии 7, или как не потеряться во времени при создании идентификатора

Reading time7 min
Views42K

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

Хотя, подобные решения, не всегда хороши. В отличие от обыкновенных цифровых значений, которые легко кешировать и сортировать, UUID не так гибки в использовании. UUID версии 7 предназначен как раз для того, чтобы разобраться с подобными проблемами.

Добро пожаловать в мир сортированых UUID

Мониторим сессию удаленного админа при помощи screen

Reading time2 min
Views11K
imageНедавно мне пришлось, что называется, перебороть себя. Дать доступ на свой любимый сервер некоему чужаку. Он натоптал своими грязными ботинками в моей уютной домашней директории, мацал косматыи лапами мои опрятные скрипты инициализации, рылся в логах, натащил в /opt какого-то барахла непонятно откуда. В общем, вел себя, как у себя дома.

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

Собственно, решение основано на программе screen. Это консольных оконный менеджер, про который на хабре уже писали.
Читать дальше →

NGINX: Перехват ошибок 5хх с помощью отладочного сервера

Reading time6 min
Views26K

Является ли ошибкой ответ 5хх, если его никто не видит? [1]


image

Вне зависимости от того, как долго и тщательно программное обеспечение проверяется перед запуском, часть проблем проявляется только в рабочем окружении. Например, race condition от параллельного обслуживания большого количества клиентов или исключения при валидации непредвиденных данных от пользователя. В результате эти проблемы могут привести к 5хх ошибкам.

HTTP 5хх ответы зачастую возвращаются пользователям и могут нанести ущерб репутации компании даже за короткий промежуток времени. В то же время, отладить проблему на рабочем сервере зачастую очень непросто. Даже простое извлечение проблемной сессии из логов может превратиться в поиск иголки в стоге сена. И даже если будут собраны все необходимые логи со всех рабочих серверов — этого может быть недостаточно для понимания причин проблемы.

Для облегчения процесса поиска и отладки могут быть использованы некоторые полезные приёмы в случае, когда NGINX используется для проксирования или балансировки приложения. В этой статье будет рассмотрено особое использование директивы error_page в применении к типичной инфраструктуре приложения с проксированием через NGINX.
Читать дальше →

Как симулировать плохую сеть под Linux, macOS и Windows

Reading time3 min
Views26K

Clumsy 0.2

Все распределённые системы — базы данных, мобильные приложения, корпративные SaaS и так далее — следует разрабатывать с учётом сбоев. Например, компания Stripe во время тестов убивала случайные инстансы — и смотрела, что произойдёт. Компания Netflix рандомно уничтожала инстансы прямо в продакшне с помощью программы Chaos Monkey (проект Simian Army).

Симуляция сбоев — необходимое средство тестирования. Проблема в том, что ситуации не делятся только на чёрное и белое, Есть огромная «серая» зона, где сбои явно не выражены, а проявляются в плохих условиях сети: ненадёжное соединение, узкий канал, потери пакетов, высокая задержка, дубликаты пакетов и так далее.
Читать дальше →

Побочные эффекты вакцинации: что правда, а что нет

Reading time24 min
Views59K

Иллюстрация из мультфильма «Про бегемота, который боялся прививок», Союзмультфильм, 1966. Режиссёр Л. Амальрик, Художники-постановщики: Н. Привалова и Т. Сазонова.

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

Риски вакцинации несоизмеримы с рисками смерти и тяжелых осложнений covid-2019. Официально в России на конец июля зарегистрировано 154 тыс смертей на 6,140 млн заболевших, это соответствует летальности 2,5% (цифры по избыточной смертности намного печальнее). Эпидемия не остановится пока не сформируется коллективный иммунитет, но у нас есть выбор между минимальными рисками, связанными с вакцинацией, и высокими рисками covid-2019.

Длительность иммунитета

Как переехать в США через EPAM и получить грин карту

Reading time5 min
Views67K

Статья о том как получить гринку через EPAM и похожий аутсорс. Сколько времени это займёт? Какие расходы оплачивает EPAM при переезде? Что такое L1 виза и как её получить? Что такое Green Card through employment.

Читать далее

Information

Rating
Does not participate
Location
Подгорица, Подгорица, Черногория
Date of birth
Registered
Activity

Specialization

Backend Developer, Database Developer
From 500,000 ₽
Golang
Docker
PostgreSQL
Git
Nginx
High-loaded systems
Kubernetes
Linux
MySQL
Redis