Search
Write a publication
Pull to refresh
3
0
Send message

Зимнее или летнее время? Что говорят математика и астрономия

Reading time3 min
Views27K
Летом 2011 года в России был отменён регулярный перевод стрелок часов. При этом перед властями стоял вопрос — какое время следует зафиксировать как постоянное — летнее (поясное +2 часа) или зимнее (поясное +1 час). В 2011 году был выбран первый вариант, однако просуществовал он не долго, и осенью 2014-го было установлено постоянное зимнее время.

Существует множество различных аргументов в защиту того или иного варианта — здоровье, количество ДТП, преступность и др., однако в этом посте я хочу подойти к этому вопросу с точки зрения двух наиболее точных наук — математики и астрономии.
Читать дальше →

Защита служебных учетных записей Microsoft

Reading time5 min
Views33K
Защита учетных записей пользователей в корпоративной сети на базе домена MS Windows типовая и простая задача. Все уже реализовано и регламентировано (например, в MS TechNet Password Best practices или в 17/21 приказах ФСТЭК):

  • Использование сложного и длинного пароля;
  • Временная блокировка пользователя в случае неправильного ввода пароля;
  • Периодическая обязательная смена пароля пользователем.

Но что делать с «служебными» технологическими учетными записями?
Такие записи есть в любой корпоративной сети и используются, например, для:
  • функционирования программ и служб на серверах;
  • связи программ с СУБД (при доменной авторизации в СУБД);
  • создания служебных почтовых ящиков в Exchange.

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

Домашняя бухгалтерия на платформе CUBA. Часть 2

Reading time9 min
Views20K


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

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

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

Домашняя бухгалтерия на платформе CUBA

Reading time16 min
Views36K


Цель этой статьи — рассказать о возможностях платформы CUBA на примере создания небольшого полезного приложения.
CUBA предназначена для быстрой разработки бизнес-приложений на Java, мы уже писали о ней несколько статей на Хабре.

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

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

Насколько медленны iostreams?

Reading time7 min
Views81K
Потоки ввода-вывода в стандартной библиотеке C++ просты в использовании, типобезопасны, устойчивы к утечке ресурсов, и позволяют простую обработку ошибок. Однако, за ними закрепилась репутация «медленных». Этому есть несколько причин, таких как широкое использование динамической аллокации и виртуальных функций. Вообще, потоки — одна из самых древних частей стандартной библиотеки (они начали использоваться примерно в 1988 году), и многие решения в них сейчас воспринимаются как «спорные». Тем не менее, они широко используются, особенно когда надо написать какую-то простую программу, работающую с текстовыми данными.

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

Сегодня в комментариях у посту возникло обсуждение о медленности iostreams. В частности, freopen пишет
Забавно смотреть на ваши оптимизации, расположенные по соседству со считыванием через cin :)

а aesamson даёт такую рекомендацию
Можно заменить на getchar_unlocked() для *nix или getchar() для всех остальных.
getchar_unlocked > getchar > scanf > cin, где ">" означает быстрее.


В этом посте я развею и подтвержу некоторые мифы и дам пару рекомендаций.
Читать дальше →

Максимальное XOR

Reading time6 min
Views25K
Здравствуй, Хабр. И сразу к делу.
Задача:
Есть два целых числа: L и R. Нужно найти максимальное значение A xor B на промежутке [L; R], где L ≤ A ≤ B ≤ R.
Казалось бы ничего сложного. Сразу напрашивается решение простым перебором.
Развернуть
public int BruteForce(int one, int two)
{
   int maxXor = 0;
   while (one < two)
   {
      int oneTemp = one + 1;
      while (oneTemp <= two)
      {
         int curXor = one ^ oneTemp;
         if (maxXor < curXor) maxXor = curXor;
         oneTemp++;
      }
      one++;
   }

   return maxXor;
}

Сложность этого решения O(n2).
А что, если в интервале будет 1000000 чисел. Возьмем L = 1, а R = 1000001. Сколько времени понадобится cреднестатистическому компьютеру для того, чтобы посчитать максимальное значение xor на этом интервале? Моему ноутбуку потребовалось 1699914 миллисекунд.
Существует решение, которое работает значительно быстрее, именно о нем и пойдет речь в этой статье.
image
Читать дальше →

Поговорим о VPN-ах? Типы VPN соединений. Масштабирование VPN

Reading time82 min
Views195K
Коллеги, здравствуйте. Меня зовут Семенов Вадим и я хочу представить статью, посвященную вопросу масштабируемости VPN-ов, причем тех VPN-ов, которые доступны для настройки в обычной корпоративной сети предприятия, а не со стороны провайдера. Надеюсь, данная статья станет справочным материалом, который может потребоваться при дизайне сети, либо при её апгрейде, либо для того, чтобы освежить в памяти принцип работы того или иного VPN-на. 
Читать дальше →

Что изображено на этом логотипе?

Reading time5 min
Views28K

Космическая разведка США любит вкладывать смысл в эмблемы миссий


Нет, это не персонаж фэнтези-произведения, это не просто рисунок откуда-нибудь с «Девиантарта» и уж тем более не ZONE-сама.

Слева представлен логотип миссии NROL-35. Ракета Atlas V 541 выведет на орбиту один или несколько спутников-шпионов.

Запуск был запланирован на вчерашнее (12 декабря) утро, но из-за погодных условий ракету придётся запускать только через сутки. Новое планируемое время запуска — 03:13 UTC, то есть 13 декабря в 6:13 по Москве, всего лишь через пять часов после публикации этой статьи.

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

Отличаются логотипы не только государственной тайной: НАСА делает довольно предсказуемые скучные эмблемы с космическими кораблями и звёздно-полосатым флагом. УНР же использует викингов, плюшевых мишек, масонские символы. Из-за секретности, связанной с деятельностью разведки, невозможно сказать точно, что означают эти знаки.
Читать дальше →

IPv6: Сколько адресов нужно для счастья?

Reading time6 min
Views56K
Картинка, которая некоторых привыкших к IPv4 сетевиков может ввести в ступор:

    R6#sh ipv6 interface brief
    FastEthernet0/0            [up/up]
        FE80::218:18FF:FE45:F0E2
        1::1
        1::2
        1::3
        1::10
        1::100:500
        2::1
        2::2

Причём каждый из этих адресов может быть использован наравне с другими. Как так?
Читать дальше →

Перенос ОС Windows на другой компьютер средствами ОС Linux

Reading time9 min
Views51K
После прочтения статьи «Фривольное клонирование ОС MS Windows XP / Server 2003 своими руками, средствами GNU/Linux» возникло естественное желание дополнить ее в соответствии с реалиями конца 2014 года.

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

MBR, таблица разделов и сигнатура диска


Начнем с копирования данных. Какие же данные нам нужно скопировать? Для Windows XP это MBR (446 байт в начале диска, основная таблица разделов и завершающая сигнатура 55AAh), данные о расширенных разделах и собственно данные системного раздела Windows. Для Vista и Windows 7 добавляется еще и 100-мегабайтный системный раздел (GPT не рассматриваем). При этом нужно помнить, что первый раздел в Windows XP по-умолчанию начинается с сектора 63, а в Windows Vista/7 — с сектора 2048. Естественно, все операции мы будем проводить на незапущенной Windows, загрузившись с System Resque CD.
Читать дальше →

Получаем изображение с оптического сенсора комьютерной мыши с помощью Arduino

Reading time3 min
Views237K
КПДВ, 111.3 KB

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

Бесконечно выгодная программа

Reading time4 min
Views31K
Недавняя статья на Slashdot о программировании игр на ассемблере для Атари (Donkey Kong и я) напомнила об ассемблерных приложениях, которые я писал по молодости, и о компьютерах, которые у нас тогда были.

Поначалу я набирался опыта на DEC PDP-8, но самый кайф начался, когда появилась CP/M. CP/M изначально была «операционной системой для бизнеса», но ещё это была система, которую можно было позволить себе иметь дома, — серьёзная вещь для молодого подающего надежды гика.
Читать дальше →

Сериализация C++ с полиморфизмом и прототипами

Reading time6 min
Views20K
Уже достаточно давно заинтересовался темой сериализации, а если конкретно, то сериализацией объектов, хранящихся по указателю на базовый класс. Например, если мы хотим загружать интерфейс приложения из файла, то скорее всего нам придется заполнять полиморфными объектами контейнер по типу “std::vector<iWidget*>”. Возникает вопрос, как подобное реализовать. Этим я недавно решил заняться и вот что получилось.

Для начала я предположил, что нам все-таки придется унаследовать в базовом классе интерфейс iSerializable, такого вида:

class iSerializable
{
public:
    virtual void serialize (Node node) = 0;
};
Читать дальше →

Руководство хакера по нейронным сетям. Схемы реальных значений. Схемы с несколькими логическими элементами

Reading time6 min
Views18K
Содержание:
Глава 1: Схемы реальных значений
Часть 1:
   Введение   
      Базовый сценарий: Простой логический элемент в схеме
      Цель
         Стратегия №1: Произвольный локальный поиск

Часть 2:
         Стратегия №2: Числовой градиент

Часть 3:
         Стратегия №3: Аналитический градиент

Часть 4:
      Схемы с несколькими логическими элементами
         Обратное распространение ошибки

Часть 5:
         Шаблоны в «обратном» потоке 
      Пример "Один нейрон"

Часть 6:
      Становимся мастером обратного распространения ошибки


Глава 2: Машинное обучение
Часть 7:
      Бинарная классификация

Часть 8:
      Обучение сети на основе метода опорных векторов (SVM)

Часть 9:
      Обобщаем SVM до нейронной сети

Часть 10:
      Более традиционный подход: Функции потерь



Вы наверняка скажете: «Аналитический градиент довольно прост, если брать производную для ваших простых выражений. Но это бесполезно. Что я буду делать, когда выражения станут намного больше? Разве уравнения не станут огромными и сложными довольно быстро?». Хороший вопрос. Да, выражения становятся намного сложнее. Но нет, это не делает все значительно труднее.

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

Где делают самые лучшие ракетные двигатели в мире

Reading time6 min
Views37K
Представилась возможность оказаться на предприятии где создавались и создаются ракетные двигатели, которые вытягивали почти всю советскую космическую программу, а теперь тянут российскую, украинскую, южнокорейскую и, частично, даже американскую. Знакомьтесь: НПО "Энергомаш", недавно вошедшее в Объединенную ракетно-космическую корпорацию России, место где делают самые лучшие и мощные жидкостные ракетные двигатели в мире.



Эти слова не пафос. Судите сами: здесь, в подмосковных Химках, разработаны двигатели для советско-российских ракет "Союз" и "Протон"; для российской "Ангары"; для советско-украинских "Зенита" и "Днепра"; для южнокорейской KSLV-1 и для американской ракеты Atlas-5. Но обо всем по порядку…
Читать дальше →

Как загрузить виртуальный корпоративный Office 2013 с сайта Microsoft

Reading time5 min
Views61K
Хочу поделиться сценарием работы с приложениями Microsoft Office, не требующем ни поиска дистрибутива, ни установки пакета, ни обновления. Уже несколько лет для подписчиков Office365 предлагается версия Click2Run офисного пакета, которая скачивает, по сути уже установленный Office с последними обновлениями. Неприятный момент в том, что Click2Run версия распространяется лишь в Retail варианте, требующем специального ключа и ручной активации, или подписки на Office365. Однако, что-то повлияло на политику компании, и без особой помпезности стала доступна для скачивания и Volume (корпоративная) версия Office 2013, которая активируется вашим KMS сервером, или другим методом активации, и которую хотя и нельзя использовать как Click2Run, можно штатно сконвертировать в виртуальное приложение APP-V 5.0. Сейчас я расскажу о том, как легально скачать полный набор установленных и обновленных продуктов Microsoft Office, и как оптимально им пользоваться, не засоряя системы. Если будет интерес, впоследствии расскажу и об аналогичном сценарии для более новой версии Office, которая сейчас в стадии бета тестирования, — как получать обновленные сборки из первых рук и пользоваться ими не мешая своим локальным стабильным версиям продукта.
Читать дальше →

Сводная таблица по поддержке C++ 11/14/17

Reading time5 min
Views66K
Как любому C++ разработчику, следящему за новинками в отрасли и стандартами в частности, мне стало интересно, насколько полно вообще поддерживается стандарт C++ 11 (а также 1y и 1z) разными компиляторами? Да, существуют разные сводные таблицы, но чаще всего это сравнение двух компиляторов или двух версий одного компилятора, либо сводная таблица, но уже устаревшая, либо вообще неполный список. В общем, сел я да и сделал полную таблицу (на основе списка Clang-a и GCC) по четырем компиляторам: Clang, GNU C++, MSVC и Intel C++.
Таблица под катом

Формализм Лагранжа в задачах с сухим трением

Reading time9 min
Views21K

Введение


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



Тонкий однородный стержень массы m = 2 кг, длины AB = 2l = 1 м в точке A шарнирно прикреплен к невесомому ползуну, перемещающемуся в горизонтальных шероховатых направляющих. В начальный момент времени стержень расположен вертикально, затем его отклоняют от вертикали на ничтожно малый угол и отпускают без начальной скорости. Необходимо составить уравнения движения данной механической системы и найти закон её движения. Коэффициент трения между ползуном и направляющими равен f = 0,1.


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

Нанощит для металла

Reading time5 min
Views14K
Привет, GT!

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

«Защита от дурака» или как запретить изменение/удаление важных папок

Reading time2 min
Views51K
Доброе время суток.

Исторически так сложилось, что для своих мелких проектов держу виртуалку. Однако, так как я не использую ее ресурсы на 100%, решил не жадничать и пустил похоститься несколько друзей. Сайтов не много, деньги за хостинг не беру, поэтому ставить что-то вроде cpanel счел перебором. К тому же я их тех, кто предпочитает настраивать все вручную. Структуру выбрал следующую:

/home/hostuser/vhosts/sitename.ru/{tmp,web,logs}

И тут возник вопрос: как запретить пользователю удалять/переименовывать папки в sitename.ru? Если будет отсутствовать папка web, то и apache и nginx выдадут предупреждение, но все-равно загрузятся. Но если удалить/переместит папку logs, то и apache и nginx не запустятся из-за ошибки (по мне довольно странное поведение). Папка hostuser полностью принадлежит данному пользователю и его личной группе (hostuser:hostuser), а это означает, что при желании он сможет удалить любую внутреннюю папку/файл, даже если она будет принадлежать суперпользователю. Так как же запретить удаление/перемещение, чтобы пользователь (случайно или специально) не сломать весь хостинг?
Читать дальше →

Information

Rating
4,232-nd
Location
Кызыл, Тува (Тувинская Респ.), Россия
Registered
Activity

Specialization

Software Developer, Application Developer
Senior
From 150,000 ₽
Python
C++
Linux
Docker