• Как я пришел в Си

    • C,
    • *

    В современных графических приложениях широко используется OpenGL. Успех технологии обеспечивает мультиплатформенность, открытость, доступность информации, обширное сообщество специалистов разного уровня. В Сети можно свободно найти необходимое количество материалов для начала работы с этой технологией. Кроме того, для разработки проектов на основе OpenGL существует множество готовых библиотек ([Free]Glut, GLFW, SDL2, GLEW, GLM и т.д.), которые активно помогают в работе над проектом. Их использование позволяет сильно экономить усилия и время на разработку качественного графического приложения. Список возможностей можно еще расширить списком графических фреймворков, но это особая тема и не всем подходит их использование.





    Если при выборе графической технологии для реализации своих идей у меня сомнений не было, то с выбором языка программирования возникла проблема. Я не знал Си и старательно его обходил — моим «коньком» многие годы были скриптовые языки программирования. Поэтому «пробный шар» (картинка вверху) был изготовлен на Python.

    Читать дальше →
  • Перевод книги «Kingpin». Глава 33. «Стратегия выхода»

    Кевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «одного своего знакомого».

    Начало и план перевода тут: «Шкворень: школьники переводят книгу про хакеров».

    Глава 33. Стратегия выхода

    “Это федералы”- сказал Макс, указывавая на седан следовавший за ним по улице. Чарити скиптически относилась к фордам. Американские машины были лишь одной из многих вещей, тревоживших Макса в эти дни.
    Прошли недели с момента ареста Криса, и чтения обзоров прессы из округа Оранж, Макс не довало понять, сколько улик нашла полиция в доме Арагона.
    Читать дальше →
  • Внедрение SIEM – что нужно знать про него?

    Многие уже слышали про системы класса SIM и про системы класса SEM, а что же тогда такое SIEM?


    SIEM это Security Information and Event Management

    Изначально, Security Information Management (SIM) и Security Event Management (SEM) были двумя различными технологиями, используемыми вместе.

    В далеком 2005 году Gartner ввел понятие SIEM, чтобы охватить обе технологии.

    Как и предполагает название, это не что иное, как набор инструментов и технологий, чтобы управлять инцидентами и событиями, связанными с безопасности, в одном месте. Некоторыми из основных возможностей типичной SIEM платформы являются:
    • Сбор событий с различных источников/устройств
    • Возможность хранения событий необходимое количество времени
    • Обеспечение быстрого поиска и возможность восстановления хронологии
    • Обеспечение полноты интерпретации собранных событий
    • Обеспечение возможности соотнесения между собой событий от разных типов источников
    • Базовая система работы с тикетами/ возможность оповещений
    Читать дальше →
  • На что нам нужны 64 килобита?

    Наверняка у вашего мобильного оператора имеется квота на трафик, исчерпав который скорость интернет соединения ограничивается шестидесяти четырьмя килобитами в секунду. Но действительно ли это так мало, как нам кажется? Предлагаю устроить тест на проверку того, куда такая скорость вообще годится.
    Читать дальше →
  • Сколько стоит сделать мобильную игру?

    Меня зовут Евгений Литвинов, я разрабатываю компьютерные игры. Я успел поработать в больших компаниях и маленьких студиях программистом, а также у меня есть хобби: делать небольшие мобильные игры целиком: придумывать, рисовать, программировать.
    Сейчас я заканчиваю игру Out of Brakes и хочу на ее примере посчитать, сколько же стоит разработать игру своими силами для App Store?
    Читать дальше →
  • Действительно простая в использовании обертка над LoadLibrary() и GetProcAddress()

    По мотивам статьи: Простая в использовании обертка над LoadLibrary() и GetProcAddress().

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

    Решение работает для компилятора c++ VS5/VS6 и успешно мигрировало на VS2013.
    К реализации...
  • Тестирование скорости ORM и нативных методов

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

    В общем то задача простейшая: импортировать базу адресов в MS SQL fias.nalog.ru/Public/NewsPage.aspx

    И тут я столкнулся со старой проблемой EntityFramework медленная вставка. По результатам решил потестить разные способы вставки данных. Исходники тут: github.com/vkorotenko/OrmTestSpeed/tree/master.

    Результаты такие:

    Pure EF 1000 record time 24045(ms)
    Batch EF 1000 record time 15750(ms)
    Off detect EF 1000 record time 15583(ms)
    Off detect batch EF 1000 record time 14817(ms)
    Pure sql 1000 record time 7170(ms)
    Sql SP 1000 record time 8495(ms)
  • Реклама в браузере, приватность и этикет

    Реклама необходима для существования многих современных ресурсов, многие бизнесы полностью зависимы от рекламы. Если на крупных медиа показываемая реклама имеет бюджет, режиссера, креативную команду, которая реализует определенную стратегию позиционирования рекламируемого X, иногда она даже бывает искусством, однако на “местечковых” ресурсах реклама часто нарушает правила банального интернет этикета — приватность. О приватности и этикете и пойдет речь.

    TL;DR


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

    Предистория


    Знакомая прислала скриншот, на котором, в том числе, был открыт и сайт, в котором была контекстная реклама известного в России поисковика. Реклама предлагала услуги гинекологии определенного профиля и рюкзаки с мультипликационными героями. Возможно это не критическая утечка чувствительной информации, подобных сценариев отображения поисковых запросов существует огромное множество, но это вопрос отношения к приватности в целом. На самом деле задача этого текста и есть, в очередной раз поднять вопрос отношения к чувствительной информации.
    Читать дальше →
  • Настройка Email оповещения пропущенных звонков Астериск PBX

    Будучи главным инженером по Asterisk в компании столкнулся с задачей по настройке e-mail оповещений в случае пропущенных звонков и т. д. В связи с чем написал инструкцию, которую представляю ниже.

    1. Задача:


    1.1. Обеспечить возможность отправки Email оповещения о пропущенных звонках на Астериске с помощью sendmail relay через учетную запись gmail.com.

    2. Исходная система:


    2.1. Установленна система Ubuntu 12.04 LTS Server;

    2.2. Имеется логин и пароль от учетной записи root;

    2.3. Установлен астериск.
    Этапы решения задачи
  • Четырёхмерный гиперкуб. Программа Transformator 4D

    В данной статье хотелось бы поговорить о четырехмерном гиперкубе (тессеракте), и его построение в программе Transformator 4D.

    Как мы знаем из геометрии, квадрата – это правильный четырехугольник у которого все углы и стороны равны. Куб можно охарактеризовать следующим образом, это выпуклая фигура, обязательно замкнутая и состоящая из групп параллельных линий расположенных относительно друг друга на противоположных краях фигуры и, соединенных друг с другом под прямым углом. Следовательно гиперкуб — это n-мерная аналогия квадрата у которого n=2 и, куба у которого n=3.

    Рассмотрим рисунок 1. На нем изображена точка, которая есть гиперкуб размерностью равной 0. Далее если сдвинуть точку на единицу длины, что приведет к получению отрезка единичной длины и как следствие гиперкуба размерностью единица. После чего сдвинуть отрезок на ту же единицу длины, но перпендикулярно в направлении исходного отрезка, и продолжить эту операцию до замыкания контура, то получится квадрат – гиперкуб размерностью в два. Если продолжить построение, то сдвигая квадрат на ту же единицу длины обязательно в направлении перпендикулярному плоскости квадрата, получим куб или гиперкуб размерностью 3. И наконец если сдвинуть куб на единицу длины в четвертом измерении то получим четырехмерный гиперкуб. Такое процесс можно повторять на n-е количество измерений.

    image
    Рис.1
    Читать дальше →
  • Фильтрация массивов и декомпозиция предикатов в Java 8

    Иногда, возникает очень простая задача. У Вас есть List и из него нужно по заданному условию удалить элементы (именно, не вернуть новый List, а модифицировать существующий).

    Насколько мне известно, до Java 8 самый элегантный способ решения подобного рода задачи был следующим (здесь и ниже по тексту я рассматриваю List<Map<String, Object>>):
    Читать дальше →
  • Современное производство музыки в век социальных сетей и облаков. Коллаборации

    Твори, мой друг, твори. Молчание — твои не утаило чувства…

    Приветствую всех читателей!

    Речь пойдет о творчестве в интернете. Я думаю многим людям эта статья будет интересна как модель взаимодействия с новыми людьми по всему миру и созданию творческого продукта, а кому-то может и в практическом плане пригодится. В общем это мой взгляд на производство музыки в 2015 году.
    Читать дальше →
  • Заметки по программированию на ПРОЛОГ-Д

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

    Как скопировать одну переменную в другую?


    В конце я понял, есть очень простое правило, которое позволяло передать одну переменную в другую. Надо написать это в параметрах.

    скопировать(а, а).

    Читать дальше →
  • Какие данные с вашего устройства собирают топовые VPN-приложения для Android

    Предполагается, что VPN-сервисы, помимо всего прочего, должны предотвращать посторонний доступ и кражу данных с наших устройств. Но устанавливая на смартфон VPN-приложение, да и любое приложение вообще, мы даём ему разрешения на доступ к определенным данным. Задумывались ли вы, какую именно информацию получает ваш VPN-провайдер и как ее использует?

    Наша команда мобильных разработчиков проанализировала ТОП-15 VPN-приложений для Android и сравнила, какие данные с вашего устройства они могут получить. В итоге составили рейтинг — от самого безопасного с точки зрения доступа к пользовательским данным приложения до самого «информационно-жадного».
    Читать дальше →
  • Создание на C# службы Windows в Visual Studio 2015

    Хочу описать процесс создание и тестирования службы Windows на C#. В качестве среды разработки буду использовать Visual Studio 2015. В качестве примера создам службу, которая пишет в файл данные о событиях. Исходный код проекта доступен на GitHub.
    Читать дальше →
  • Разработка своего DI контейнера на TypeScript

    Разработка своего DI контейнера на TypeScript или как меня вдохновила магия Spring DI на написание собственного велосипеда


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

    К моему счастью, в один прекрасный день я встретился с известным языком программирования — TypeScript. Я уже долго думал над тем как перейти с JavaScript на один из языков-компиляторов в JavaScript, поэтому, не долго думая я сел и изучил все возможности языка. Как оказалось, версия TypeScript 1.5-beta предоставляла грандиозную возможность — использования декораторов. Собственно, именно это нововведение и вдохновило меня на создания своего Dependency Injection контейнера.
    Читать дальше →
  • Полезные замечания о принципах проектирования

    Работая программистом на протяжении шести лет, я выделил для себя несколько замечаний относительно ООП. Эти замечания вытекли после долгой практики использования популярных принципов, GRASP, SOLID.
    Читать дальше →
  • Краткий обзор производителей Digital Signage, которые продаются в России

    Несмотря на обилие производителей систем управления контентов в Digital Signage, на российском рынке их реально продает не очень много. На рынке мировом производителей гораздо больше и распределение мест другое.

    Убираем из рассмотрения системы, собранные «на коленке», оставляем только системы с минимальным набором функциональных возможностей для построения решений Digital Signage:
    • возможность работы с динамическим контентом, тикеры (RSS, индикаторы валют и погоды);
    • возможность подключать периферию. Например, хотя бы RS-232 порт для управления внешним оборудованием или получения информации из внешней системы;
    • работа с видео в разных форматах, изображениями, их компоновка, создание эффектов;
    • централизованное управление показами, создание расписаний;
    • интеграция с внешними базами данных, желательно.

    image

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

    Помним также, что решения Digital Signage делятся на программные и аппаратно-программные. В случае чисто программных решений вам понадобится аппаратная основа, о которой читайте ниже.
    Читать дальше →
  • Бесплатный игровой сервер Minecraft? Легко!

    Приветствую вас, дорогие читатели.

    В этой статье я постараюсь подробно рассказать, как школьникам можно запустить свой личный сервер Minecraft с полным прилагающимся доступом. Данная статья относится только к одной игре, однако по аналогии можно применить знания данной статьи и для другой игры. Если понадобится статья по запуска сервера другой игры — пишите. Вдамся в пошаговую систему:
    Читать дальше →
  • Прием и передача данных по COM-порту через Интернет

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

    Основным требованием является сохранение функционала всех сервисов, с чем и связана данная заметка, так как во многих филиалах по всей стране используется различное морально устаревшее оборудование на конечных точках (это могут быть как различные датчики, так и коммутаторы, АТС, мультиплексоры и т.д. преимущественно отечественного произодства), подключенное к рабочим местам по последовательному порту (RS-232), на которых работает штатное ПО этого оборудования для управления и мониторинга.

    image

    Решением, которое было предложено сразу, стало преобразование данных COM-to-IP.
    Читать дальше →