Рубрика «магия»

Программирование — это скучная магия - 1

Есть один карточный трюк, который запомнился мне навсегда. Вот его краткое описание: доброволец выбирает карту и запечатывает её в конверт. Затем фокусник предлагает добровольцу выбрать чай. У него есть десятки коробок чая, и все они упакованы в пластик. Доброволец выбирает одну из коробок, срывает обёртку и выбирает один из упакованных пакетиков с чаем. Потом он вскрывает упаковку, и… внутри оказывается его карта.

Если вы не хотите знать, в чём хитрость этого трюка, то дальше не читайте.

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

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

«Фокусом» это является именно потому, что такая подготовка выглядит настолько скучной, настолько невозможно монотонной, что когда мы видим трюк, то не можем представить, что кто-то проделал бы столь скучную работу, чтобы добиться такого простого эффекта.
Читать полностью »

Посох для Деда Мороза - 1

Каждый год 31-го декабря я в костюме Деда Мороза и жена в роли Снегурочки разъезжаем по городу по своим друзьям с поздравлениями. Поскольку уже скоро наступит Новый Год, я решил проверить, все ли у меня к нему готово и достал из подвала свой давно видавший виды посох. К моему удивлению, пролежав в подвале целый год он исправно работал даже сейчас! Его аккумулятор все еще как-то заряжен! Посох не очень ярко, но светится. Конечно придется подзарядить, да и смотрю один светодиод перестал работать, но это дело поправимое — починим.

Этот посох я изготовил еще в 2012-м году и с тех пор он служил мне верой и правдой. Штука достаточно простая, но очень эффектная, особенно ему радуются дети. Он почти как меч джедая — только посох, а для настоящего Деда Мороза — это вещь просто необходимая. Решил написать про него здесь на Хабре — вдруг кто-то проникнется идеей и сделает такой и себе к Новому Году, время еще есть.
Читать полностью »

Что такое магия в PHP? Обычно под этим подразумевают методы вроде _construct() или __get(). Магические методы в PHP — это лазейки, которые помогают разработчикам выполнять удивительные вещи. В сети полно инструкций по их использованию, с которыми вы наверняка знакомы. Но что если мы скажем, что вы даже не видели настоящую магию? Ведь, чем больше вам кажется, что вы знаете все, тем больше магии ускользает от вас.

Школа магии PHP - 1

Давайте отбросим установленные рамки правил ООП и сделаем невозможное возможным в школе магии PHP. Главный и первый волшебный преподаватель школы — Александр Лисаченко (NightTiger). Он научит магическому мышлению и, возможно, вы полюбите магические методы, нестандартные способы доступа к свойствам, изменение контекстов, аспектно-ориентированное программирование и потоковые фильтры.

Читать полностью »

“Чем чудовищнее ложь, тем охотнее толпа в неё верит!”
П.Й. Геббельс

Как и у большинства моих постов — у этого есть причина. Сравнительно недавно один из моих случайных собеседников решил впечатлить меня знанием истории музыки и поведал много “интересного” о эталоне настройки ноты “ля” первой октавы. К слову, по первому впечатлению человеком он был не глупым (пока не начал рассказывать про частоту 432 Гц) и, по его словам, являлся выпускником Санкт-Петербургской государственной консерватории им. Римского-Корсакова. Рассказ собеседника изобиловал массой псевдоисторических “отступлений” и апелляцией к исследованиям математика Фибоначчи и наследию Джузеппе Верди.

Аудиобубен лейтенанта Шмидта: бредогенерация с частотой 432 Гц - 1

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

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

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

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

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

Аудиобубен лейтенанта Шмидта: несколько слов о фракталах, диффузорах и чудесах суггестии - 1

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

Чтобы пост не рассматривался, как попытка нанести репутационный ущерб тем или иным вендорам, продавцам и производителям, я буду описывать “сферические фрактальные диффузоры в среде абстрактного аудиофила”, без упоминания брендов, производителей и пр.

Версия 2 (дополненная и исправленная)
Читать полностью »

Инженер Google сравнил антивирусы с мёртвой канарейкой - 1
Даррен Билби, специалист по безопасности из компании Google. Фото: Darren Pauli, The Register

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

Есть специалисты, которые не согласны. Среди них ведущий разработчик Google по информационной безопасности Даррен Билби (Darren Bilby). О бесполезности антивирусного ПО он рассказал во вступлении к своему докладу на конференции, где все присутствующие знают о бесполезности антивирусов — на хакерской конференции Kiwicon X. То есть Даррен просто начал доклад с общеизвестного (в узких кругах) факта, который не принято афишировать для широкой публики.
Читать полностью »

image

Доктор Ракеш Кумар из Иллинойсского университета в Урбане-Шампейне в своей работе "Майнинг биткоинов с приближением" описал механизм, при помощи которого можно увеличить прибыль от майнинга биткоинов на 30% — в пересчёте на единицу потраченных процессорных мощностей. Метод основан на использовании приблизительных расчётов – если допустить появление небольшого количества ошибок, результирующая эффективность подсчётов вырастает.

Приближённые расчёты часто используются в науке для упрощения математических выкладок. Доктор Кумар подсчитал, что при использовании железа, считающего с определённой, но не 100%-й точностью, можно повысить эффективность майнинга на 30%.

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

В связи с постоянным плановым увеличением сложности расчётов биткоинов, майнеры постепенно переходили с CPU на GPU, FPGA или ASIC. Увеличение сложности требует увеличения потребления энергии процессорами. Кумар со своими студентами задумались – нельзя ли разобраться в технологии майнинга и уменьшить потребление энергии, увеличив прибыль?
Читать полностью »

На волне популярности Docker на Хабре, после участия в некоторых дискуссиях в комментариях относительно Docker, и в связи с недавней необходимостью настроить централизованную авторизацию для кластера Linux машин, я решил написать небольшую заметку. Здесь будет показан яркий, на мой взгляд, пример применения Docker'a для небольшой частной задачи.

Вот так, кстати, выглядит FreeIPA WebUI (официальное демо, временное демо у меня на сервере (подробности в комментариях)) (кликабельно):

Система централизованного управления авторизацией пользователей на FreeIPA в Docker - 1 Система централизованного управления авторизацией пользователей на FreeIPA в Docker - 2

Какие задачи я хотел решить при помощи FreeIPA:

  1. Иметь возможность создавать/изменять/удалять акаунты пользователей централизовано, а не на каждом отдельном сервере
  2. Централизованные плавила для sudo
  3. В последствии мы подключим к этой системе ещё и VPN авторизацию, а потом может и другие внутриофисные сервисы

Да, скорее всего FreeIPA в нашем случае это выстрел пушкой по воробьям, но с другой стороны — альтернатив что-то не видно. Я рассматривал такие варианты: NIS (по-моему он уже давно должен отправиться на отдых), OpenLDAP +… +… (не очень дружелюбно, да и FreeIPA в итоге под собой имеет LDAP, только нам не приходится с ним иметь дело напрямую), тут перечень заканчивается, я не нашёл ничего больше.

Читать полностью »

Привет, читатели!

Около года назад Хабр захлестнула волна постов на тему "%string% в N строчек на JavaScript". Уже и не вспомню, чем все закончилось, но началось все с Excel в 30 строк. Следом появилось много и других интересных вариаций на эту тему, даже игра в ноль строк на JS, но это уже совсем другая история…

Как я ни старался придумать что-то еще более компактное — ничего не выходило. Тогда было принято решение посмотреть на проблему под другим углом. Примерно в этот момент в голове промелькнул вопрос: а можно ли «сколлапсировать» код так, чтобы его не было вообще? И тут мне позвонил Дэвид Блейн.

Я попробовал добавить немного магии и вот что у меня получилось.

image
Читать полностью »

С давних времён я был большим поклонником System.Collections.Concurrent и BlockingCollection в особенности. Сколько раз это чудо инженерной мысли выручало в самых разнообразнейших ситуациях — не счесть.

С чуть менее древних времён в обиход прочно вошли async/await. Казалось бы, жизнь прекрасна, но есть одно «но»: асинхронный код миксовать с блокирующим кодом как-то не очень-то хочется. А BlockingCollection, как несложно догадаться (хотя бы из названия), в ряде случаев поток блокирует.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js