Рост числа 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-е. Он скорее всего использовал ваш метод.
В общем, да, задачу можно решить оптимально несколькими способами, но суть не в том можно или нельзя ее решить, а в том как ее решает обычный, случайный человек без математического образования, а именно в методе тыка и его эффективности у разных людей.
Решая задачу методом тыка, человек (в данном случае я) перебирает комбинации, не задумываясь о коммутативности и тем более не решая систем уравнений. Я помню, что перебирал варианты, возвращаясь к предыдущим, и я точно не перебирал сотни комбинаций (это заняло бы больше времени). Барабанов в этой задаче не просто так пять, именно это число образов человек может одновременно держать в памяти, поэтому предсказать ходы более чем на один шаг здесь очень сложно. Парадокс заключается в том, что я делал ходы без всяких рассчетов, на основании внутреннего ощущения, и это дало результат. Объяснить это удачей сложно, потому что уж слишком малая здесь вероятность попасть пальцем в небо.
В конце концов, ваше решение тоже как-то пришло к вам в голову или вы его вспомнили, но тогда оно как-то пришло в голову кому-то другому. Не известно формального способа решить любую задачу, но задачи как-то решаются, и в этом заключается загадка.
Что касается лично меня, то я уже года два как не пользуюсь 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 пакетов, движения мышкой и т.д. Из этих данных в операционных системах генерируются криптографические ключи.
Если нам нужны случайные данные для вычисления со сколь угодно большим количеством обращений к генератору случайных чисел, нам нужен генератор действительно случайных чисел, то есть криптографический генератор.
"Детерминированность (определённость). В каждый момент времени следующий шаг работы однозначно определяется состоянием системы. Таким образом, алгоритм выдаёт один и тот же результат (ответ) для одних и тех же исходных данных. В современной трактовке у разных реализаций одного и того же алгоритма должен быть изоморфный граф. С другой стороны, существуют вероятностные алгоритмы, в которых следующий шаг работы зависит от текущего состояния системы и генерируемого случайного числа. Однако при включении метода генерации случайных чисел в список «исходных данных», вероятностный алгоритм становится подвидом обычного".
«Алгоритм — это всякая система вычислений, выполняемых по строго определённым правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи». (А. Колмогоров)
«Алгоритм — это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату». (А. Марков)
«Алгоритм — точное предписание о выполнении в определённом порядке некоторой системы операций, ведущих к решению всех задач данного типа». (Философский словарь / Под ред. М. М. Розенталя)
«Алгоритм — строго детерминированная последовательность действий, описывающая процесс преобразования объекта из начального состояния в конечное, записанная с помощью понятных исполнителю команд». (Николай Дмитриевич Угринович, учебник «Информатика и информ. технологии»)
В общем, да, задачу можно решить оптимально несколькими способами, но суть не в том можно или нельзя ее решить, а в том как ее решает обычный, случайный человек без математического образования, а именно в методе тыка и его эффективности у разных людей.
Решая задачу методом тыка, человек (в данном случае я) перебирает комбинации, не задумываясь о коммутативности и тем более не решая систем уравнений. Я помню, что перебирал варианты, возвращаясь к предыдущим, и я точно не перебирал сотни комбинаций (это заняло бы больше времени). Барабанов в этой задаче не просто так пять, именно это число образов человек может одновременно держать в памяти, поэтому предсказать ходы более чем на один шаг здесь очень сложно. Парадокс заключается в том, что я делал ходы без всяких рассчетов, на основании внутреннего ощущения, и это дало результат. Объяснить это удачей сложно, потому что уж слишком малая здесь вероятность попасть пальцем в небо.
В конце концов, ваше решение тоже как-то пришло к вам в голову или вы его вспомнили, но тогда оно как-то пришло в голову кому-то другому. Не известно формального способа решить любую задачу, но задачи как-то решаются, и в этом заключается загадка.
Решение:
1 1 1 2 3 3 3 4 4 4
Я немного ошибся с статье (давно дело было, детали забыл). Кратчайшее решение имеет длину не 14, а 10, но это сути не меняет.