Архив за 27 мая 2013 - 5

Nelson Mandela said: “Education is the most powerful weapon
which you can use to change the world.”

Волею судеб нам посчастливилось стать одними из участников курса по Data Mining (программа GameChangers, Санкт-Петербург). Цель курса – изучение методов и технологий обработки данных в различных областях IT-индустрии. Лекции у нас читают эксперты из крупнейших IT компаний, а студенты работают над реальными задачами и проектами.
И так получилось, что в рамках данного курса наша рабочая группа занимается разработкой проекта в области Educational Data Mining.

В России пока единицы знают о существовании этого направления, поэтому для начала в общих чертах расскажем про EDM: общие цели, кто может использовать и зачем.
Читать полностью »

Видео инструкция для флешки с самоуничтожениемЗдравствуйте!
Решили сделать видео инструкцию к нашим флешкам и прочему оборудованию, так как бывают проблемы у наших клиентов. И основная проблема в том, что никто не читает инструкцию.

1) В обзоре покажем как уничтожить информацию в экстренной и в штатной ситуации:
Кнопка «1» и CLS
Кнопка «1» и вставить в USB
5 раз неправильный пароль
Пароль под принуждением
Читать полностью »

Правообладатели США просят законности использования вредоносного ПО против пиратов

Организация под названием «Комиссия вопросов кражи американской интеллектуальной собственности» выпустила 84-страничный документ с отчётом о своей работе. Среди описаний бешеных темпов краж, посчитанных сомнительными методиками огромных убытков для американских компаний и прочих преувеличений в документе предлагается метод более активной борьбы с распространителями и потребителями нелицензионных копий защищенных материалов.

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

Возможно также, что ваша веб-камера сфотографирует вас, и ПО свяжется с правоохранительными органами самостоятельно. Механизм работы трояна-вымогателя знаком специалистам информационной безопасности под названием ransomware.
Читать полностью »

Советы Google по кодированию на языке Python. Часть вторая: советы по форматированию исходного кода
Доброго времени суток. Вот и пришло время для публикации второй части так понравившегося многимам перевода стайл гайда для языка Python от компании Google, (первая часть бережно хранится хабром). Теперь мы коснемся напрямую форматирования исходного кода на языке программирования Python. Как известно, чистота — залог здоровья, а чистота программного кода — залог уважения коллег и (в идеале) поощрения от кого-нибудь свыше. Вообще, Python сам по себе является хорошо читаемым языком, и даже синтаксис данного языка призывает к порядку в коде (и, как следствие — в голове). Но каждый из нас сам себе документатор и сам себе творец оформления. А как уже говорилось однажды — ко мнению авторитетных товарищей нельзя не прислушиваться. Итак, вторая часть Google Python Style Guide — Python Style Rules ждет Вас под катом.
Читать полностью »

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

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

Фактически, интерфейсы полезны в двух случаях:

  1. Когда необходимо использовать множественное наследование;
  2. Когда ARC (автоматический подсчет ссылок) серьезно облегчает управление памятью.

В Delphi исторически нет и не было множественного наследования в той форме, как это принято в некоторых других языках программирования (например, С++). И это хорошо.

В Delphi проблемы множественного наследования решаются интерфейсами. Интерфейс — это полностью абстрактный класс, все методы которого виртуальны и абстрактны. (GunSmoker)

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

В связи с грядущими изменениями, то есть по мере появления ARC в новом компиляторе тема управления жизнью Delphi-объектов получает новую актуальность, так как прогнозируемо будут новые «священные войны». Мне бы не хотелось именно сейчас резко вставать на ту или иную сторону, хочется лишь поисследовать существующие области пересечения «классического» подхода и «ссылочных» механизмов управления жизнью объекта как программисту-практику.

Тем не менее, позволю себе выразить надежду на то, что ARC в новом компиляторе даст возможность действительно воспринимать интерфейсы всего-лишь как абстрактные классы. Хотя я отношусь к подобным революционным изменениям с опаской.

Часто программисты «интерфейсных морд» к БД игнорируют вопросы управления памятью объектов, что не умаляет важность темы, которая до сих пор возбуждает явный интерес профессионалов, которые продолжают исследовать применимость «интерфейсов» для выработки альтернативных классическим подходов.

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

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

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

HTC One — много нового в одном телефоне

Читать полностью »

Бывают попадаются задачи, когда надо что-то сделать из-под Linux-а на машине, на которой установлен Windows, но не через RDP или VNC. Или например, как в моём случае, основная машина на Linux и необходимо управлять группой серверов. И для простых задач, например простого запроса типа dsquery group -name "Группа" | dsget group -members | dsget user, который выдаст полный список членов группы в Active Directory со всеми полями — не запускать же ради такого сеанс RDP.
Простого и удобного инструментария я, если честно, не нашёл. За исключением двух утилит: wmic и winexe, которые входят в комплекты Zenoss и OpenVAS. Вернее входили в Zenoss. Не суть, отдельно их я не нашёл, поэтому далее предлагаю свой вариант, большей частью для конкретного дистрибутива (Xubuntu 13.04), но при должной сноровке — всё можно сделать и в любом другом.
Читать полностью »

image

Компания МУК, официальный дистрибьютор Сisco на территории Украины, совместно с представительством Cisco в Украине приглашает специалистов из компаний-партнеров Сisco пройти курс, позволяющий успешно подготовиться к получению аккредитации Cisco UnifiedComputer Design Specialist.

Учебная программа предназначена для технических специалистов, которые разрабатывают решения на базе технологий Cisco для корпоративных заказчиков и лично участвуют в их продаже. В результате его прохождения участники получают знания о технических особенностях продукции Сisco, а также концепциях, технологиях и решениях Cisco в рамках предпродажной поддержки клиентов. Особое внимание здесь уделяется технологиям виртуализации и тому, как они влияют на проектирование решений для Дата Центров. Будут освещены вопросы, связанные с внедрением CiscoUCS/CiscoNexus, включая решение проблем, с которыми сталкиваются заказчики уже сегодня.

Курс будет проведен в два потока:
Читать полностью »

С помощью нескольких функций Windows API можно скрыть кнопку Пуск, панель задач или отдельные ее элементы. Я это делал раньше с помощью Visual Basic 6.0, Delphi, C++, Visual Basic.NET на Windows 98/Me/XP. Попробуем теперь это сделать с помощью C# на Windows 7. Практической ценности данный пример не имеет, может только ради шутки. Но тем не менее, пример может послужить неплохой демонстрацией возможностей, которые скрывают системные функции Windows.

Немного теории. Очень часто программисты хотят получить доступ к стандартным элементам интерфейса Рабочего стола Windows. Для начинающих программистов будет интересно узнать, что панель задач и кнопка Пуск являются окнами (собственно отсюда и название операционной системы). Поэтому, все, что нам нужно, это получить описатель нужного окна, а затем при помощи соответствующих функций скрыть или показать это окно.
Читать полностью »

Не так давно, разрабатывая очередной программный продукт, наша команда разработчиков столкнулись с задачей реализации полноценной системы синхронизации пользовательских данных в реальном времени, путем рассылки (PUSH метод) изменений сервером. В самом приложении объем данных был не велик, но они могли просматриваться несколькими пользователями одновременно. Поэтому нам был необходим легковесный и достаточно производительный подход к синхронизации данных в рамках Веб-приложения. После того как были рассмотрены различные пути к решению этой задачи, мы остановили свой выбор на достаточно популярном эмуляторе WebSocket’ов – SockJS, который использует различные алгоритмы обмена данными между клиентом и сервером, в зависимости от браузера, которым пользуется клиент. В рамках данной статьи я не буду заострять внимание на том, почему был сделан именно такой выбор (по этому поводу написано немало статей, в том числе и на хабрахабре), а просто скажу, что мы ещё ни разу об этом не пожалели.

Изначально при изучении стандартных подходов к реализации подобного рода задач мы столкнулись с одной проблемой. Эта проблема заключалась в том, что взаимодействие с нашей системой производилось не только посредством веб интерфейса, но также посредством использования API сторонними продуктами, которые мы не могли контролировать. И конечный пользователь нашего продукта, безусловно, ожидает увидеть всю информацию об изменениях в данных, которые его касаются. Стандартный подход использования sockjs сервера подразумевает, что уведомления об изменении каких-либо данных в системе будут посылаться с использованием того же самого JS клиента, который используется для получения информации об этих изменениях. Именно поэтому в нашем случае такой подход был бы неприменим.

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js