Обновить
4
0

Пользователь

Отправить сообщение

Интересности из мира квайнов (100 языков, радиационно-устойчивый, часы, змейка)

Время на прочтение7 мин
Охват и читатели23K
image

Эстафета из 100 языков программирования


Квайн — компьютерная программа, которая выдаёт на выходе точную копию своего исходного текста. Цепной квайн отличается от обычного тем, что на каждой последующей итерации выводится код на другом языке программирования, до тех пор, пока не выведется код оригинального квайна. В середине 2013 года японский программист Юсукэ Эндо (遠藤 侑介) разработал цепной квайн, содержащий 50 языков программирования. В конце 2014 кода он опубликовал новую версию, включающую уже 100 языков!

Исходники и информация о компиляции всех этих квайнов есть на гитхабе: quine-relay. Любопытно, что исходный код в виде картинки был написан не в ручную (что невозможно в принципе), а сгенерирован. Автор отмечает, что в течении года он опубликует книгу про обфусцированное программирование, которая будет включать в себя подробное объяснение о том, как писать квайны, ascii-art квайны, цепные квайны (подобные этой эстафете).
Далее

Загадка о файле-невидимке

Время на прочтение9 мин
Охват и читатели45K
image

Не так давно, закончив работу над очередной статьёй для Хабра, я решил оптравить её на ревью своему знакомому. Сохранив HTML-страницу со всем окружением (картинки, стили etc), я запаковал её в ZIP-архив и отправил адресату. Уже через пять минут я получил фидбек, который, вопреки моим ожиданиям, был связан вовсе не с самой статьёй, а с тем, что архив был абсолютно пустой. Почесав голову и решив, что я затупил с архивированием, я повторил процедуру, убедившись, что выделил все необходимые для запаковывания файлы. Спустя несколько минут знакомый снова разразился удивлённым «Ты что, шутишь?», в то время как я совсем не шутил.

Я начал собирать воедино все элементы паззла. Во-первых, я выяснил, чем он пытается открыть архив. Вдруг, в качестве viewer'а он использует какую-нибудь третьесортную фигню не пойми от какого разработчика? Однако им оказался дефолтный explorer.exe. Я же пользовался Total Commander'ом как для запаковки, так и для просмотра получившегося архива, и в моём случае он вовсе не был пустым:

image

Что, неужели это сборочка xxxWindowsUltimateEditionxxx подкачала? Я попытался открыть тот же самый архив на моём компьютере при помощи explorer.exe и наконец поверил своему знакомому — архив действительно выглядел пустым:

image

Кто же виноват в таком поведении? Давайте разберёмся.

Как протекал процесс, и что из этого вышло, читайте под катом (осторожно, много скриншотов). Перед прочтением данной статьи также настоятельно рекомендую ознакомиться с предыдущими.
Читать дальше →

«Прокачиваем» notepad.exe

Время на прочтение8 мин
Охват и читатели47K
image

Какая ассоциация связана у Вас с клавишей F5? Обновление страницы в браузере? Копирование файла из одной директории в другую? Запуск приложения из Visual Studio? А вот авторы notepad.exe подошли к этому вопросу довольно оригинально — по нажатию клавиши F5 происходит добавление текущей даты и времени в место, куда в этот момент указывает курсор. Всё было бы круто, если бы в notepad.exe была такая популярная и вполне естественная для большинства текстовых редакторов фича, как перечитывание содержимого текущего файла, которая, казалось бы, и должна быть назначена на F5 / Ctrl-R или ещё какой-нибудь общепринятый хоткей.

Мы можем ждать, пока её реализуют Microsoft, выбрать другой текстовый редактор (ведь это не единственное ограничение по функционалу стандартного notepad.exe) или… Взять в руки дизассемблер, отладчик и редактор PE-файлов.

Как протекал процесс, и что из этого вышло, читайте под катом (осторожно, много скриншотов). Перед прочтением данной статьи также настоятельно рекомендую ознакомиться с предыдущими.
Читать дальше →

8 ресурсов для бесплатного образования на русском языке

Время на прочтение3 мин
Охват и читатели63K
Как выглядит процесс обучения? Детсад, школа, университет и эпизодические курсы повышения квалификации, да и то не у всех. До конца жизни человек идет на том багаже знаний, который набрал в начале. Сейчас есть запрос на то, чтобы процесс обучения стал постоянным. Нужно поменять специализацию – пожалуйста. Нужно усилиться – пожалуйста. Делать это виртуально может быть проще и удобнее, ведь нет никаких барьеров. При этом качественные знания можно получить бесплатно. Представляю 8 платформ, на которых можно учиться на русском языке без бюджета.
Читать дальше →

Полиморфные связи для самых маленьких

Время на прочтение5 мин
Охват и читатели72K
Недавно, делая очередной функционал на одном из проектов, я столкнулся с немного необычными связями в реляционных СУБД, у которых, как оказалась позже, есть замысловатое название — Полиморфные связи. Что это такое, как и где их применять, я попытаюсь объяснить в данной статье.

Тема полиморфных связей уже поднималась не раз на Хабре («Rails и полиморфные связи», «Полиморфные сквозные ассоциации в Ruby on Rails», «Полиморфные связи»), но поднималась она в контексте Ruby, и для тех, кто уже имеет какой-то опыт в проектировании БД. Новичкам же (мне было), мало что понятно из тех статей, поэтому в данной статье я попытаюсь рассказать всё на пальцах, абстрагируясь от языка, разве что немного задену ORM популярных фреймворков в вебе.
Читать дальше →

$500 млн за строчку кода или стоимость ошибок ПО в космосе

Время на прочтение12 мин
Охват и читатели37K
Пару месяцев назад на edx.org закончился курс «Введение в космические технологии: Космонавтика и пилотируемые полеты (Introduction to Aerospace Engineering: Astronautics and Human Spaceflight)». Курс вел американский космонавт, на данный момент профессор MIT — Джеффри Алан Хоффман. Как следует из названия, курс довольно простой и общий, тем не менее мне он показался довольно интересным и познавательным.

В одной из частей курса рассматривается вопрос безопасности, и речь, кроме всего прочего, идет о безопасности программного обеспечения. Проф. Хофман приводит интересные примеры проблем с ПО для авиации и космонавтики. В данной статье я чуть-чуть подробнее рассмотрю космические примеры из лекций Хофмана.

Mars Polar Lander


Mars Polar Lander (MPL) 290 килограммовый космический аппарат, запущенный NASA 3 Января 1999 г. для изучения почвы и климата в районе южного полюса Марса. 3 Декабря 1999 г. во время посадки центр управления не смог возобновить с аппаратом связь.


MPL в лаборатории NASA
Читать дальше →

C++ в 2015-м году

Время на прочтение3 мин
Охват и читатели38K
Год только начинается, так что давайте посмотрим, что язык С++ ожидает в 2015-м, как мы уже делали это в 2013-м и 2014-м.

Прошлый год принёс много изменений, главным из которых, безусловно, является стандарт С++14. Что важно, С++14 сегодня существует не только в виде стандарта, но и частично поддерживается GCC и Clang. Visual Studio также поддерживает некоторые (хотя и далеко не все) возможности С++14 и почти все (хотя опять таки не 100%) возможности С++11. Компилятор от Intel стал совместим с С++11 полностью. Таким образом, современные стандарты С++ доступны под все платформы — было бы только желание их использовать!
Читать дальше →

Именованные параметры в современном C++

Время на прочтение14 мин
Охват и читатели31K
Из Википедии: "Именованные параметры в языках программирования означают поддержку указания явных имен параметров в вызове функции. Вызов функции, принимающей именованные параметры, отличается от обычного вызова функции, в котором передаваемые аргументы ассоциируются с параметрами функции лишь только по их порядку в вызове функции"

Давайте посмотрим на пример:

createArray(10, 20); // Что это значит? Что за "10" ? Что за "20" ?
createArray(length=10, capacity=20); // О, вот теперь понятнее!
createArray(capacity=20, length=10); // И наоборот тоже работает.


И еще один пример на выдуманном псевдо-языке:
window = new Window {
   xPosition = 10,
   yPosition = 20,
   width = 100,
   height = 50
};


Этот подход особенно полезен для функций с большим количеством опциональных параметров, при вызове которых нужно изменить лишь некоторую часть дефолтных значений. Некоторые языки программирования поддерживают именованные параметры (C#, Objective-C, ...), но не С++. В этом посте мы рассмотрим пару классических способов эмуляции именованных параметров в С++, ну и попробуем придумать что-то новое.
Читать дальше →

Рефакторинг C++ кода в Visual Studio 2015

Время на прочтение3 мин
Охват и читатели25K
Hello C++ World!

В прошлую пятницу вышел релиз Visual Studio 2015 Preview, в котором были представлены новые возможности увеличения продуктивности разработки, в том числе рефакторинг кода на С++. В значительной мере на реализацию этого функционала повлияли отзывы комьюнити, которые были получены в ходе тестирования Visual Studio «14» CTPs, так что спасибо всем поучаствовавшим.

В этой статье мы рассмотрим такие возможности Visual Studio 2015 Preview по работе над С++ кодом, как:
  • Переименование (Rename)
  • Извлечение функции (Extract Function)
  • Генерация заглушек чисто виртуальных методов (Implement Pure Virtuals)
  • Генерация объявлений/заглушек методов (Create Declaration/Definition)
  • Перемещение объявлений функций (Move Function Definition)
  • Преобразование в Raw-String (Convert to Raw-String Literal)

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

Использование монад в С++. Часть 1: монада списка

Время на прочтение10 мин
Охват и читатели35K
Часть 1
Часть 2

Иногда программисты на С++ просят привести пример задачи, которая не может быть решена без использования монад. Начнём с того, что этот вопрос неверен сам по себе — это всё-равно, что спрашивать, существует ли задача, которая не может быть решена без циклов. Очевидно, если в вашем языке есть поддержка оператора goto, вы можете обойтись без использования операторов цикла. Что монады (и циклы) могут сделать для вас, это упростить ваш код и помочь лучше его структурировать. Как использование циклов превращает спагетти-код в нормальный, так и использование монад может превратить ваш код в императивном стиле в декларативный. Эта трансформация может помочь легче писать, понимать, поддерживать и расширять ваш код.

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

  s e n d
+ m o r e
---------
m o n e y


Каждая буква соответствует цифре от 0 до 9. Нужно написать программу, которая подберёт такие соответствия, чтобы написанная операция сложения была верной. Перед тем, как продолжить чтение статьи — подумайте минутку, как бы вы решили эту задачу?
Читать дальше →

Как за вами следят, пока вы ходите по торговому центру

Время на прочтение3 мин
Охват и читатели26K
Ранее я уже публиковал статью о системах подсчета посетителей. Теперь же хочу рассказать о системе, которая позволяет посчитать:
  • Сколько людей прошло мимо, так и не зайдя в магазин;
  • Сколько зашло повторно;
  • Сколько в среднем покупатель проводит времени в магазине и не только…


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

Миллиардер, сделавший себя сам, рассказывает о простой методике принятия решений

Время на прочтение2 мин
Охват и читатели33K
Первая глава книги канадского миллиардера Сеймура Шулича «Умнейте: уроки жизни и бизнеса» предлагает инструмент, расширяющий возможности того списка «за и против», который многие из нас используют для принятия решений.

«Я узнал об этом на курсе практической математики более 50 лет назад, и использовал этот метод практически для каждого важного решения в жизни. Он меня никогда не подводил».

Знаете, как делать списки «за и против»? Делите страницу пополам, и пишете все «за» и «против». Но описываемый инструмент добавляет одну важную деталь:

«На листе бумаги перечислите все положительные моменты интересующей вас темы, и оцените каждую по шкале от нуля до десяти. Чем больше оценка, тем больше её важность для вас.

На другом листе перечислите все отрицательные моменты, и оцените их также по шкале от нуля до десяти – где „десять“ означает очень сильный недостаток».

Дальше надо сложить очки, но для этого есть одно условие:
Читать дальше →

9 признаков того, что собеседование прошло хорошо

Время на прочтение2 мин
Охват и читатели43K
Даже если ваше собеседование не окончилось вопросом “Итак, когда вы сможете приступить к работе?”, по словам экспертов, существуют определённые “индикаторы”, подтверждающие, что оно прошло успешно.



Ниже перечислены 9 признаков, с большой долей вероятности свидетельствующие о том, что вам перезвонят и, возможно, сделают предложение о работе.
Читать дальше →

Как пройти стресс-интервью и не сорваться: что нужно знать об «экстремальном» найме

Время на прочтение8 мин
Охват и читатели25K
Представьте себе «прокаченную»игру в «кошки-мышки», где кошка намеревается съесть мышку, а мышка должна сохранять спокойствие, делать вид, что они с «усатой» лучшие друзья, и обхитрить хищницу. В конце этой игры и кошка, и мышка должны выиграть. Странно, не правда ли?



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


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

52 вопроса, которые вы должны задать на собеседовании

Время на прочтение4 мин
Охват и читатели79K
Вы, наверное, уже знаете, что интервью — это не просто очередной этап при устройстве на работу, это также ваша возможность разобраться, подходит ли вам эта работа. Для этого важно задать некоторые вопросы. Что вы хотите знать об этой должности? О компании? О подразделении? О команде? О корпоративной культуре?



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

Как самому собрать аналоговый левитрон

Время на прочтение6 мин
Охват и читатели90K

0.Предисловие


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

1.Краткое описание


Левитрон – это устройство, удерживающее объект в равновесии с силами гравитации с помощью магнитного поля. Давно известно, что невозможно левитировать объект, используя статичные магнитные поля. В школьной физике это называлось состоянием неустойчивого равновесия, насколько я помню. Однако, затратив немного желания, знаний, усилий, денег и времени, возможно левитировать объект динамически путем использования электроники в качестве обратной связи.

Получилось вот что:


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

Исключения для хардкорщиков. Особенности обработки эксепшенов в динамически размещаемом коде

Время на прочтение13 мин
Охват и читатели25K
image

Современные версии ОС налагают на исполняемый код ограничения, связанные с требованиями безопасности. В таких условиях использование механизма исключений в инжектированном коде или, скажем, во вручную спроецированном образе может стать нетривиальной задачей, если не быть в курсе некоторых нюансов. В этой статье речь пойдет о внутреннем устройстве юзермодного диспетчера исключений ОС Windows для платформ x86/x64/IA64, а также будут рассмотрены варианты реализации обхода системных ограничений.
Читать дальше →

PowerShell, кто Вы и что Вам нужно?

Время на прочтение7 мин
Охват и читатели56K


PowerShell — простое синее окно, преобразившее мир администрирования Windows от классического GUI интерфейса, который удобен неподготовленным пользователям, до сценариев, которые автоматизируют все, предоставляют ротацию логов, управление жизненным циклом идентификаций, а также распределением обновлений по серверам.
Читать дальше →

Будущее влияет на прошлое? Учёные подтвердили мысленный квантовый эксперимент Уилера на примере отдельных атомов

Время на прочтение5 мин
Охват и читатели126K
image
Профессор Эндрю Траскот и студент Роман Хакимов отважно заглядывают в квантовый мир

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

Этот принцип — один из фундаментальных законов, который мало кто оспаривает. Хотя многие физические величины и явления не меняются, если мы обратим время вспять (являются Т-чётными), существует фундаментальный эмпирически установленный принцип: событие А может влиять на событие Б, только если событие Б произошло позже. С точки зрения классической физики — просто позже, с точки зрения СТО — позже в любой системе отсчёта, т.е., находится в световом конусе с вершиной в А.

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

Кроме одного момента — квантовой физики. Там вообще много странного. Вот, например, классический эксперимент с двумя щелями. Если мы поместим препятствие со щелью на пути источника частиц (например, фотонов), а за ним поставим экран, то на экране мы увидим полоску. Логично. Но если мы сделаем в препятствии две щели, то на экране мы увидим не две полоски, а картину интерференции. Частицы, проходя сквозь щели, начинают вести себя, как волны, и интерферируют друг с другом.
Читать дальше →

Мягкое приземление капсулы «Союза» больше похоже на взрыв, но это не проблема

Время на прочтение1 мин
Охват и читатели19K


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

На самом деле, приземление действительно удачное, проблем никаких не возникло, но сверху оно выглядит, как взрыв. Объяснение простое — приземление капсулы сопровождается срабатыванием тормозных двигателей, которые и обеспечивают мягкую посадку, помимо парашюта, на котором спускается капсула. Как говорит нам Вики, «Спускаемые пилотируемые аппараты космических кораблей серии «Союз», предназначенные для приземления на сушу, также имеют твёрдотопливные тормозные двигатели, включающиеся за несколько секунд до касания земли, чтобы обеспечить более безопасную и комфортную посадку».
Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность