Pull to refresh
38
0
Дмитрий Братусь @dbratus

User

Send message
Рост числа Linux-серверов — это часть общей тенденции роста объема open source софта вообще и особенно в сегменте OS/middleware. На то есть несколько причин. Во-первых, это выгодно железячникам. Маржа с продажи железа с open source софтом выше, поскольку стоимость лицензии софта — это то, что проходит мимо кассы железячника (об этом можно почитать у Джоэла Спольски). Во-вторых, open source софт постепенно начал делать все то, что раньше мог только проприетарный, а «если нет разницы, зачем платить больше?» Софт как таковой сейчас продается все хуже и хуже; гораздо лучше продается железо и сервисы, а если ты продаешь что либо из этого, тебе выгодно, чтобы лицензии на софт были бесплатными.

Что касается лично меня, то я уже года два как не пользуюсь Windows дома, причем произошло это как-то само собой. При том на пяти девайсах из шести стоит Linux в том или ином виде.

Рано или поздно Linux станет доминирующей ОС во всех сегментах, просто потому что Windows не переживет Microsoft, а вечных коммерческих организаций не бывает. Linux же будет существовать и сопровождаться пока существует IT.
У нас на работе есть такое коллективное увлечение — собирать пазл, — придумано изначально для борьбы со срессом после общения с индусами. И вот, недавно возникла идея программы для сборки пазла.

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

Приз: ящик пива + статья на Хабре.
Я думаю, характер вопросов на собеседовании сильно зависит от компании. Я сам отсобеседовал пол команды и ничего подобного мы никогда не спрашивали. Стандартные воросы на нашем собеседовании (для любого разработчика, не только старшего и ведущего):

— Паттерны проектирования.
— Смэлы и методы рефакторинга.
— Типы блокировок в многопоточной среде. Возможные проблемы с параллельным доступом.
— Транзакции — определение, уровни изоляции, выбор уровня изоляции.
— Когда лучше использовать/неиспользовать индексы.
— Основные проблемы информационной безопасности и способы их предотвращения (это ужасно, но в этой области только единицы могут ответить что-то внятно).
— Если человек заявляет, что знает несколько языков программирования, просим сравнить несколько языков (особенности, сильные/слабые стороны) — С# vs Java, C# vs C++ и т. д.
— SQL запросы — оптимизация и т. д. Классический вопрос: дан запрос, запрос использует full table scan. Почему? Что проверить?
— Вопросы на опыт работы с заявленными технологиями: как вызвать утечку памяти в .NET, как положить на лопатки кэш Oracle одним запросом, что такое ORA-01555 Snapshot too old и т. д. в зависимости от заявленных знаний. Иными словами, это вопросы, знать ответы на которые человек может только проработав с технологией какое-то время.

Ну и наконец, что скорее специфично для нашей компании, но часто требуется, — это знание английского. Что касается нас, то мы вообще не можем принять на работу человека, который вообще никак не знает английский. Для синьйора свобоное владение разговорным и письменным английским обязательно, для рядового — хотя бы базовое знание грамматики и основных слов, чтобы читать документацию и техническую переписку.
Только вчера узнал об этом беспределе, и был удивлен — думал такое возможно только в России и Белоруссии, а вот оно, оказывается, как…

В России, например, издатели, пресса и телевизионщики уже давно боятся. Власть даже как бы ничего против них и не делает, а они уже боятся — заранее, на всякий случай, чтобы чего не вышло. И вводят цензуру — сами, по собственной воле. Поэтому такие сервисы, как prostobook.com — это единственное место, где человек может опубликовать offline, что он думает о %bastard_name%. Теперь и этого сервиса может не стать.

PS
Если власть боится футболок, такая власть долго не протянет.
С псевдослучайными числами есть одна проблема — рано или поздно они начинают повторяться и в долгосрочной перспективе процесс все равно становится детерминорованным.

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

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

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

«Алгоритм — это всякая система вычислений, выполняемых по строго определённым правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи». (А. Колмогоров)

«Алгоритм — это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату». (А. Марков)

«Алгоритм — точное предписание о выполнении в определённом порядке некоторой системы операций, ведущих к решению всех задач данного типа». (Философский словарь / Под ред. М. М. Розенталя)

«Алгоритм — строго детерминированная последовательность действий, описывающая процесс преобразования объекта из начального состояния в конечное, записанная с помощью понятных исполнителю команд». (Николай Дмитриевич Угринович, учебник «Информатика и информ. технологии»)
Моделирование эволюции — это совсем другая материя. Эволюционные процессы фундаментально недетерминированы, поэтому не могут считаться классическими вычислительными процессами.
Построить алгоритм, значит построить вычислительный процесс, то есть машину Тьюринга.
Все алгоритмы придуманы людьми, но не придумано алгоритма, построения других алгоритмов, потому что невозможно создать алгоритм строящий сам себя.
Забавно, что среди читающих Хабр есть те, у кого вообще нет дома компьютера.
ОК, я понял ваше решение (без объяснения оно выглядит странно). Еще я вспомнил, один наш бизнес-аналитик решил задачу в Excel-е. Он скорее всего использовал ваш метод.

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

Решая задачу методом тыка, человек (в данном случае я) перебирает комбинации, не задумываясь о коммутативности и тем более не решая систем уравнений. Я помню, что перебирал варианты, возвращаясь к предыдущим, и я точно не перебирал сотни комбинаций (это заняло бы больше времени). Барабанов в этой задаче не просто так пять, именно это число образов человек может одновременно держать в памяти, поэтому предсказать ходы более чем на один шаг здесь очень сложно. Парадокс заключается в том, что я делал ходы без всяких рассчетов, на основании внутреннего ощущения, и это дало результат. Объяснить это удачей сложно, потому что уж слишком малая здесь вероятность попасть пальцем в небо.

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

Решение:
1 1 1 2 3 3 3 4 4 4

Я немного ошибся с статье (давно дело было, детали забыл). Кратчайшее решение имеет длину не 14, а 10, но это сути не меняет.
Поиск в ширину без априорной оценки и есть brute force. Подбор числа можно реализовать оптимальней и распаралелить.
У меня три ноута — старый, новый и рабочий, — десктоп и неттоп, используемый в качестве сервера.
Не понимаю, почему нельзя просто засунуть лист бумаги в сканер.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity