• Сказ царя Салтана о потенциале лапласиана

      «Три девицы под окном пряли поздно вечерком.»

      image

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

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

      Вскоре «в светлицу вошел царь — стороны той государь» (показан на рисунке). «Во все время разговора...», — ну понятно в общем.
      «Собираем лайки нежности — формируем матрицу смежности», — бодро срифмовал он.
      Девицы-красавицы с именами Алена, Варвара и Софья засмущались, но лайки (из балалайки) передали.

      Вот что там было:
      • Алена получила 1 лайк от Софьи и 2 лайка от Варвары.
      • Варвара получила по лайку от Алены и Софьи.
      • А Софья получила 2 лайка от Алены и 1 от Варвары.

      Царь взял лайки, покрутил гайки, постучал по колесам, пошмыгал носом, причмокнул губами, поскрипел зубами, сгонял в палаты и объявил результаты.

      Наибольший вес лайков (7 баллов) получила Софья, но титул «мисс Салтан» достался Алене (15 баллов).

      Подробнее о матрице лайков
      Для матрицы


      вектор потенциалов равен (5, 4, 7), а вектор потоков — (15, 12, 14).

      После объявления результатов девицы бросились обратились к царю с просьбой рассказать,- откуда взялись эти странные цифры?
      Действительно - откуда?
    • История про msdb размером в 42 Гб

      • Tutorial
      Недавно выдалась минутка посмотреть почему старый тестовый сервер безбожно тормозил… К нему я не имел никакого отношения, но меня одолевал спортивный интерес разобраться, что с ним не так.

      Первым делом открыл Resource Monitor и взглянул на общую нагрузку. Процесс sqlserv.exe нагружал ЦП под 100% и формировал большую дисковую очередь, которая была за 300… при том, что значение выше единицы уже считается проблемным.

      При анализе дисковой активности заметил непрерывные IO операции в msdb:

      D:\SQL_2012\SYSTEM\MSDBData.mdf
      D:\SQL_2012\SYSTEM\MSDBLog.ldf
      

      Посмотрел на размер msdb:

      SELECT name, size = size * 8. / 1024, space_used = FILEPROPERTY(name, 'SpaceUsed') * 8. / 1024
      FROM sys.database_files
      

      и включил режим «рука-лицо»:

      name         size           space_used
      ------------ -------------- ---------------
      MSDBData     42626.000000   42410.374395
      MSDBLog      459.125000     6.859375
      

      Файл данных занимал 42 Гб… Взяв небольшую паузу я начал разбираться в чем причина такого нездорового объема msdb и как побороть проблемы с производительностью сервера.
      Подробнее
    • Укрощаем UEFI SecureBoot

      • Tutorial
      Данные обещания надо выполнять, тем более, если они сделаны сначала в заключительной части опуса о безопасности UEFI, а потом повторены со сцены ZeroNights 2015, поэтому сегодня поговорим о том, как заставить UEFI SecureBoot работать не на благо Microsoft, как это чаще всего настроено по умолчанию, а на благо нас с вами.
      Если вам интересно, как сгенерировать свои собственные ключи для SecureBoot, как установить их вместо стандартных (или вместе с ними), как подписать ваш любимый EFI-загрузчик, как запретить загрузку неподписанного или подписанного чужими ключами кода, как выглядит интерфейс для настройки SecureBoot у AMI, Insyde и Phoenix и почему это, по большому счету, совершенно не важно — добро пожаловать под кат, но опасайтесь большого количества картинок и длинных консольных команд.
      Войти в клетку
    • Интеграция ASP.NET MVC c Sharepoint 2013. Part 1: High-Trusted provider-hosted APP

        Всем привет!

        Меня зовут Денис и я работаю старшим разработчиком в компании «ДоксВижн». Этим постом я хочу начать цикл статей, касающихся разработки в области SharePoint 2013. Они затронут разные аспекты этой темы, начиная с возможностей базовой интеграции Web-приложения и заканчивая публикацией в магазине SharePoint Store. Знание нюансов и подводных камней, с которыми я столкнулся, может пригодиться тем, перед кем впервые будет стоять аналогичная задача.

        Читать дальше →
        • +4
        • 10,7k
        • 3
      • О том, как я собирал на Linux'е application bundle для MacOS

          Итак, довелось мне недавно обновить билд-скрипт одного приложения написанного на Java Swing. Приложение давно разрабатывается, и писалось ни одним поколением программистов, но дело свое делает хорошо и четко, поэтому собирается под основные платформы (Window's, Unix, MacOS). Вот и решили мы проапдейтить сборку нашего старого app bundle'а для MacOS, а заодно и положить в него встроенную jre версии 1.8. И тут начали выясняться интересные вещи: старый bundle был собран под Java 6 от Apple, и отныне не работал, формат Info.plist поменялся, ибо Oracle больше нравятся свои пропертя, старый JavaApplicationStub отныне вне закона, да здравствует JavaAppLauncher, ну и много другого интересного. Лично мне по душе больше Linux, да простят меня любители MacOS, и даже такая знакомая консоль терминала слабо согревала мою душу после долгих мытарств по просторам интернета в поисках опыта таких же отважных людей, победивших мою проблему. Это практически невероятно, но в конце концов, я обнаружил статью в блоге David Clunie, в которой он шаг за шагом описал практически все мои попытки найти пути решения поставленной задачи. Кого заинтересовал прошу подкат, для любителей оригиналов вот ссылка на заветную статью, заранее прошу прощения за качество моего перевода, т.к. он не будет полным и дословным.
          Читать дальше →
        • Oracle join elimination

            Оптимизатор в Oracle может применять различные способы трансформации запросов для улучшения их производительности. Одним из таких способов является join elimination. В официальной документации Oracle Database SQL Tuning Guide об этом способе сказано достаточно мало, в отличие от других.
            Приглашаю читателей под кат, чтобы поговорить об этом способе поподробнее.
            Читать дальше →
          • Встраиваем бэкдор в Bitcoin (ECDSA) или еще раз о клептографии

              Привет, %username%!
              Пользуешься неофициальными bitcoin клиентами? Есть повод присмотреться к ним повнимательней.
              После реализации бэкдора для RSA мне стало интересно, как обстоят дела с остальными криптографическими примитивами. Оказывается, целая наука под названием клептография занимается передачей информации в так называемых «подсознательных» каналах. Таких, о которых никому не известно кроме отправителя и получателя. Вроде стеганографии, только внутри криптоалгоритмов.
              Читать дальше →
            • GPU Particles с использованием Compute и Geometry шейдеров

              • Tutorial
              Привет, дорогой читатель!

              Сегодня мы продолжим изучение графического конвейера, и я расскажу о таких замечательных вещах, как Compute Shader и Geometry Shader на примере создания системы на 1000000+ частиц, которые в свою очередь являются не точками, а квадратами (billboard quads) и имеют свою текстуру. Другими словами, мы выведем 2000000+ текстурированных треугольников при FPS > 100 (на бюджетной видеокарте GeForce 550 Ti).


              Читать дальше →
            • Использование AWS Lambda для создания архива определённых файлов с AWS S3

              • Tutorial
              image

              AWS Lambda — это сервис вычислений, запускающий ваш код при определенных событиях и автоматически управляющий вашими вычислительными ресурсами. Обзор концепции, принципов работы, цен и тому подобного уже есть на хабре ( habrahabr.ru/company/epam_systems/blog/245949 ), я же попробую показать практический пример использования этого сервиса.

              Итак, как следует из названия поста, мы будем использовать AWS Lambda для создания архива указанных нами файлов, хранящихся на AWS S3. Поехали!

              Читать дальше →
              • +11
              • 9,9k
              • 5
            • Доступны триальные версии Adobe Creative Cloud

                image
                Я рад уже в пятый раз донести благую весть о появлении триальных версий новых продуктов Adobe.

                Adobe Creative Cloud по заверениям разработчиков, полностью меняет рабочий процесс. Теперь все приложения интегрированы с облачным сервисом от Adobe и позволяют упростить разработку. Так же подписчикам доступны от 2 до 20 гигабайт в облачном хранилище.
                Подробности
              • Текстовые маркеры SiDiM: новая схема DRM для защиты электронных книг

                  Исследователи из Дармштадтского технического университета (Германия) предложили новую разновидность DRM-защиты электронных текстовых документов SiDiM.

                  Идея заключается в том, что в каждую электронную копию книги вносятся уникальные изменения. Они впоследствии позволяют точно идентифицировать источник утечки и нечестного пользователя, который слил защищённое произведение в открытый доступ. Маркировка электронных книг и текстовых документов осуществляется на семантическом уровне: каждая версия отличается словом-синонимом, буквой, знаком препинания, пробелом и т.д.
                  Читать дальше →
                • XKB: перенастроим клавиши под себя любимого

                    В один прекрасный день надоедает нажимать Shift, чтобы вывелся символ ~ вместо `.
                    Надоедает тянуться до Esc, при этом клавишей CapsLock пользуетесь РЕДКО.
                    Надоедает смещать кисть вниз и нажимать Ctrl/Cmd/Win слабым мизинчиком, либо, не дай бог, тянуться до них большим пальцем.
                    Надоедает лезть за PgUp, PgDn, Home и End, двигая руку каждый раз, чтобы всего лишь промотать страницу вниз.
                    Надоедает каждый раз, когда вы делаете опечатку, со злобой смотреть на клавиатуру в поисках кнопки Backspace.



                    Сегодня мы узнаем, как навсегда избавиться от этих мучений.

                    Зачем это всё?


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

                    Многие раскладки для печати (Dvorak, Colemak и т.п.) сильно улучшают расположение клавиш, ставя их ближе к тем местам, куда нужно меньше тянуться. Но при этом совершенно забывают о модификаторах, спец. символах и командных клавишах (Enter, Backspace, Tab, Esc, Delete). А мы подумаем о том, как улучшить существующее положение вещей.

                    В статье пойдём от простейших изменений, до более интересной и глубокой настройки. И, как в конце хороших фильмов, я оставлю читателя подумать, что делать дальше, и не дам готового рецепта на всё. В конце концов, идеальных и универсальных решений нет, и на раскладку клавиатур товарищей нет.
                    Читать дальше →
                  • Кидхак Prehistorik 2: анлочим уровни

                    Любителям этой замечательной игры посвящается...


                    image
                    … Если таковые еще есть. Впрочем, я уверен, что не все так плохо и Crysis не поглотил мозг человечества целиком и окончательно.
                    Так вот, вышеупомянутые любители старых игр и в частности одной замечательной игры 92 года могут помнить, что система сохранений в игре сделана в несколько приставочном духе: по уровням разбросаны (иногда в довольно неожиданных и труднодоступных местах) коды, которые во времена MS-DOS старательно записывались на бумажечку и хранились, как сокровище. Код, введенный в главном меню, позволял начать соответствующий уровень со стартовой позиции.
                    Soshite, в наше время появилась, в некотором роде, проблема для тех, кто хотел бы поиграть в Prehistorik 2. А именно — необходимость эмулировать игру в Dosbox: далеко не у всех есть возможность найти на свалке или, что еще гораздо реже, вытащить с антресолей заботливо хранящийся там 486-й.
                    Дело в том, что при генерации кодов игра использует переменные окружения BIOS. Как это эмулируется в Dosbox, я не разбирался, знаю достоверно, что при каждом новом запуске эмулятора коды в игре другие. Соответственно, бумажка с кодами становится бесполезной, а возможность приятного и ненапрягающего прохождения игры сводится практически на нет: полностью игру можно пройти только за один присест. Возможно, это решается детальной настройкой Dosbox. Но это менее интересно, чем небольшое копание в исполняемом файле игры.
                    Читать дальше →
                  • 8 ловушек программирования



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

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

                        В последнее время пользователи все чаще получают изображения документов при помощи фотокамер или мобильных устройств, прибегая к помощи сканера изредка, в особых случаях. В то же время, для изображений, получаемых фотокамерами, характерны следующие недостатки: геометрические искажения (о них мы говорили в статье про автоматическое выделение документа), неравномерность освещения (часто можно видеть тени или засветки при использовании вспышки), падение контраста, расфокусировка, смаз, цифровой шум при недостаточном освещении. Постараемся избавиться от этих недостатков, применяя некоторые преобразования к исходному изображению, чтобы приблизить его вид к отсканированному.
                        Читать дальше →
                      • Что должен знать каждый участник крупного MMO-проекта


                          Рядовые программисты обычно всё это прекрасно знают. А вот менеджерский состав нередко считает, что совершенно не обязательно разбираться в игровой экономике, клиент-серверной архитектуре и психологии игрового комьюнити. Ведь есть же крутая команда спецов, которые обо всём позаботятся.
                          Итог очевиден: трудно вспомнить хотя бы один крупный MMO-проект, выпущенный за последние два года, который избежал бы стандартного набора граблей. Такое ощущение, что MMO-индустрия не способна учиться на своих ошибках.
                          Итак, список вопросов, ответы на которые должен знать каждый, от топ-менеджера до работника техподдержки крупного MMO-проекта.
                          Читать дальше →
                        • Бесплатный редактор шрифтов на HTML5

                            Всё больше полезных программ удаётся портировать на открытые веб-технологии. До сих пор среди них не было редактора шрифтов. Теперь есть: Glyphr.



                            Профессиональный софт для проектирования шрифтов — это сложные и дорогие программы. В отличие от них, интерфейс Glyphr вполне доступен для каждого желающего, а само приложение совершенно бесплатно.
                            Читать дальше →
                          • Splay-деревья

                            • Tutorial
                            Сбалансированное дерево поиска является фундаментом для многих современных алгоритмов. На страницах книг по Computer Science вы найдете описания красно-черных, AVL-, B- и многих других сбалансированных деревьев. Но является ли перманентная сбалансированность тем Святым Граалем, за которым следует гоняться?

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

                            Сегодня я расскажу о splay-деревьях. Эти деревья не являются перманентно сбалансированными и на отдельных запросах могут работать даже линейное время. Однако, после каждого запроса они меняют свою структуру, что позволяет очень эффективно обрабатывать часто повторяющиеся запросы. Более того, амортизационная стоимость обработки одного запроса у них , что делает splay-деревья хорошей альтернативой для перманентно сбалансированных собратьев.
                            Читать дальше...
                          • Объясняем бизнесу, почему у нас такие «фиговые» оценки

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

                              Почему ты не можешь дать точную оценку трудоемкости разработки?
                              Почему ты не можешь завершить все работы в два раза быстрее?

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