Search
Write a publication
Pull to refresh
7
0

User

Send message

Безопасность SAP. Регулярно ли вы устанавливаете обновления?

Reading time3 min
Views57K
Если ты работаешь в компании списка Forbes 500, высока вероятность того, что твою зарплату считает HR модуль SAP ERP. Я покажу как, используя ошибки SAP, посмотреть чужую зарплату в системе SAP ERP.

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

После 1,5 ПБ записи в живых остались два SSD-накопителя

Reading time2 min
Views170K


Вчера инженеры из Backblaze обновили статистику по надёжности HDD. За пару дней до этого стали известны результаты ещё одного интересного эксперимента — на выживание SSD-накопителей.

Компьютерное издание The Tech Report в августе прошлого года начало тестирование SSD-накопителей. Цель — проверить, сколько циклов перезаписи выдержит каждый из шести экземпляров. Эксперимент шёл целый год: после записи 1 петабайта в живых осталось три накопителя, а после 1,5 петабайта осталось два.
Читать дальше →

Backblaze обновила статистику по надёжности HDD

Reading time2 min
Views110K
В январе этого года компания Backblaze впервые опубликовала статистику использования дисковых накопителей в своих серверах. Backblaze предоставляет услугу дешёвого облачного бэкапа и поэтому закупается недорогими HDD потребительского класса, которые в 2-2,5 раза дешевле, чем HDD класса Enterprise. За четыре года собрана большая статистика по надёжности дисков Seagate, Hitachi и Western Digital.

Пришло время сентябрьского обновления статистики.

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

PT Reporting Portal: как увидеть главные угрозы безопасности

Reading time6 min
Views12K
image

Анализ больших потоков данных стал в последние годы серьезной проблемой для самых разных средств безопасности. Сканеры уязвимостей и межсетевые экраны, системы управления инцидентами и DLP-модули — все они имеют дело с тысячами событий, которые агрегируются ежедневно, ежечасно или даже ежеминутно. Специалистам по безопасности очень непросто разбирать эти бесконечные логи вручную. Да и оперативность защиты страдает: даже если система обнаружила критическую уязвимость или атаку, нужно еще время, чтобы эту находку заметил человек среди множества других сообщений.

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

Аналогичные запросы возникли и у пользователей системы контроля защищенности и соответствия стандартам MaxPatrol. Данная система применяет одну из крупнейших в мире баз уязвимостей для сканирования инфраструктур крупнейших компаний, банков, телекомов и промышленных предприятий с десятками тысяч узлов. Можно себе представить, какими порядками описывается количество записей в результатах аудита!
Читать дальше →

Перетягивание «Верблюда» или интеграция средствами Camel. Часть 2

Reading time14 min
Views27K

Сценарии интеграции с Apache Camel



Сколько вы знаете шаблонов интеграции приложений(EIP)? Сколько из них вы можете использовать?

Симпатичный «верблюд» снова здесь, а значит, представляю вам продолжение серии статей об Apache Camel. В этой статье найдутся как самые необходимые, так и очень любопытные шаблоны интеграции. Расскажу о том, как они ложатся на нашу интеграцию.

Если вы знакомы с шаблонами, но решаете стоит ли связываться с «верблюдом», то наши примеры помогут разобраться. Если вам интересен путь от сценариев использования к реализации интеграции, то эта статья как раз об этом. Прошу под кат.
Читать дальше →

Перетягивание «Верблюда» или интеграция средствами Camel. Часть 1

Reading time11 min
Views30K

История одного проекта.



Вам когда-нибудь снились верблюды? Вот и мне тоже нет. Но, когда работаешь с Camel-ом уже третий год, начинают сниться не только верблюды.
В общем, буду делиться опытом, писать о верблюдах и учить вас их готовить. Это серия статей в трёх частях: первая часть будет для тех, кому интересны истории и муки творчества; вторая — больше техническая, о паттернах интеграции, их применении и третья часть — об ошибках и отладке.
Если вам нужно объединить ваши сервисы, здесь вы узнаете, чем хорош Camel. Если вы хотите научиться использовать что-нибудь новенькое, здесь мы начнём с азов. Если вам нравятся истории и оригинальные фишки, которые есть в каждой команде, то читайте дальше.
Читать дальше →

Noisli: онлайн-генератор фоновых шумов, помогающих сконцентрироваться

Reading time1 min
Views182K


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

Сайт Noisli содержит коллекцию фоновых шумов на любой вкус и возможность смешивать их в произвольной пропорции. Здесь есть и звуки природы — шум дождя, плеск воды, пение птиц, шуршание листьев, и звуки техногенного характера — стук колёс поезда, звук работающего вентилятора, и звуки многолюдного кафе. Есть и искусственные белый, розовый и коричневый шум. Коллекция звуков постоянно пополняется.
Читать дальше →

Трансформации AST — Первый шаг к тяжёлым веществам

Reading time7 min
Views20K
А давайте сделаем magic с вашим Java кодом. Вот такой:


Берем это:
import groovy.transform.Canonical
import groovy.transform.TupleConstructor

@Canonical
@TupleConstructor
class Person {
    int id
    String firstName
    String lastName
    Date birthdate
}

Компилируем, и в байткоде получаем аналог вот этого:
Адский бойлерплейт на Джаве на 100 с лишним строк
import java.util.Date;
import java.util.Map;

public class Person {
    private int id;
    private String firstName;
    private String lastName;
    private Date birthdate;

    //Эта штука добавлена @TupleConstructor-ом
    public Person(Map parameters){
        this.id = (int) parameters.get("id");
        this.firstName = (String) parameters.get("firstName");
        this.lastName = (String) parameters.get("lastName");
        this.birthdate = (Date) parameters.get("birthdate");
    }

    public Person(int id, String firstName, String lastName, Date birthdate) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.birthdate =birthdate;
    }

    public Person(int id, String firstName, String lastName) {
        this(id, firstName, lastName, null);
    }

    public Person(int id, String firstName) {
        this(id, firstName, null, null);
    }

    public Person(int id) {
        this(id, null, null, null);
    }

    public Person() {
        this(0, null, null, null);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;

        if (id != person.id) return false;
        if (birthdate != null ? !birthdate.equals(person.birthdate) : person.birthdate != null) return false;
        if (firstName != null ? !firstName.equals(person.firstName) : person.firstName != null) return false;
        if (lastName != null ? !lastName.equals(person.lastName) : person.lastName != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = id;
        result = 31 * result + (firstName != null ? firstName.hashCode() : 0);
        result = 31 * result + (lastName != null ? lastName.hashCode() : 0);
        result = 31 * result + (birthdate != null ? birthdate.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", firstName='" + firstName + '\'' +
                ", lastName='" + lastName + '\'' +
                ", birthdate=" + birthdate +
                '}';
    }

    public int getId() {
        return this.id;
    }

    public void setId(int paramInt) {
        this.id = paramInt;
    }

    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String paramString) {
        this.firstName = paramString;
    }

    public String getLastName() {
        return this.lastName;
    }

    public void setLastName(String paramString) {
        this.lastName = paramString;
    }

    public Date getBirthdate() {
        return this.birthdate;
    }

    public void setBirthdate(Date paramDate) {
        this.birthdate = paramDate;
    }
}



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

Так зачем именно Groovy, почему AST transformations?
В этой статье я попробую вкраце обосновать, зачем пользоваться Groovy AST transformations в Java проектах, и (опять-же вкраце) рассказать какие AST transfromations есть в Groovy сегодня. Если вы уже знаете зачем, и хотите только «как и что», смело листайте к «Введение в AST transformations».
Читать почему и как AST transformations

Группировка с условием

Reading time3 min
Views61K
Периодически возникает задача, которая требует сгруппировать набор данных с условием, что для атрибутов, не участвующих в группировке, нужно взять кортеж с максимальным значением по одному из полей.

Давайте рассмотрим простой пример.
Есть таблица:
CREATE TABLE IF NOT EXISTS shop (
  id INT NOT NULL AUTO_INCREMENT,
  article INT(4) ZEROFILL NOT NULL,
  dealer VARCHAR(45) NOT NULL,
  price DECIMAL(8,2) NOT NULL,
  PRIMARY KEY (id))
ENGINE = InnoDB;

Необходимо для всех article найти dealer с максимальной ценой.

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

Как PayPal и GoDaddy заставили меня отдать Twitter аккаунт ценой в $50 000

Reading time6 min
Views191K


У меня был редкий Twitter логин – @N. Да, только одна буква. Мне предлагали за него $50 000. Его часто хотели украсть. Инструкции по восстановлению пароля постоянно приходили мне на почту. К сожалению, на данный момент, я потерял @N. Хакеры забрали его.

20 января 2014 года на обеде, я получил сообщение от PayPal с кодом подтверждения. Кто-то пытался украсть мой счет PayPal. Я проигнорировал и продолжил есть.
Читать дальше →

Поиск VPS — обновленная версия

Reading time5 min
Views112K
Незадолго до нового года я представил Хабру свой сервис поиска виртуальных серверов Поиск VPS. За эти два месяца на сайте произошёл ряд изменений, включая расширение списка параметров для ещё более удобного выбора и сравнения серверов, о которых я сегодня расскажу.



Первое и самое существенное нововведение — это появление новых параметров поиска и возможность выбора нескольких пунктов одновременно.

  • Тип жесткого диска (sata, sas, ssd)
  • Операционные системы, которые можно установить на виртуальный сервер
  • Способы оплаты, которые поддерживает хостер
  • Наличие бесплатной панели управления сервером (ISPmanager, cPanel, DirectAdmin, Plesk Panel)
  • Тип администрирования, который идет в комплекте в VPS
  • Возможность поддержки IPv6

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

Инструментарий фондового рынка: Торговый терминал

Reading time8 min
Views84K
В предыдущих статьях мы затронули довольно интересную сторону фондового рынка, а именно – алгоритмический или высокочастотный трейдинг, но, конечно, самым традиционным способом онлайн-торговли на бирже, по-прежнему, является использование специальных торговых терминалов. О них мы сегодня и поговорим.

image
Терминал Bloomberg

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

TempusJS — работаем с датой в javascript

Reading time7 min
Views20K
Всем привет!
Мне часто приходится работать со статистическими данными и там очень много завязано на датах. Притом, одна и та же дата может быть использована на странице в разных форматах (например, в удобном для машины и в удобном для человека). Я думаю, что большинство из вас отлично представляют весь этот ужасающий по размерам код, который получается при использовании объекта Date.
К примеру, чтобы получить текущую дату в формате ДД.ММ.ГГГГ нам потребуется сделать следующее:
var d = new Date(),
       fd = d.getDate() + '.' + (d.getMonth()+1) + '.' + d.getFullYear();

А когда таких строк становится много? Легко ли упомнить, что в javascript месяц начинается с нуля, когда разрабатываешь не только на нем? Или то, что тут миллисекунды, а не секунды, как почти везде на бэкенде? Можно решить часть задач популярной библиотекой Moment.js, но она работает весьма медленно.
Рассматриваемая библиотека решает эти проблемы.
Если интересно, предлагаю вам прочитать этот небольшой обзор.

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

Промежуточные итоги биржевого стартапа

Reading time6 min
Views27K
Биржа, как стартап. Звучит довольно необычно. Сразу в голову лезет огромное количество юридических моментов, регуляторских замутов и т.д. Казалось бы, просто так не начать.

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

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

Сразу скажу, чтобы полностью понять материал, пусть и написанный старательно общедоступным языком, все же придется потрудиться и ознакомиться с ликбезом.

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

Оптимизация запросов. Основы EXPLAIN в PostgreSQL

Reading time3 min
Views236K

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

Использование Google Spreadsheet как JSON бэкенд

Reading time2 min
Views37K
При написании простого веб приложения или прототипировании чего-нибудь, иногда хочется иметь быстрое и простое средство хранения, редактирования и извлечения данных.
Например, ты пишешь простой блог и тебе совсем не хочется строить бэкенд, дабы записывать, редактировать и хранить там посты, но ты хочешь удобно собирать эти данные как JSON — Google Drive поможет тебе с этим.
Читать дальше →

Эстафета из 50-ти квайнов

Reading time2 min
Views106K

Квайн — компьютерная программа, которая выдаёт на выходе точную копию своего исходного текста. Японский рубист Юсукэ Эндо (Yusuke Endoh) создал нечто невероятное. Quine Relay — программа на Ruby, которая генерирует код программы на Scala, которая генерирует код программы на Scheme, которая генерирует… и так далее на 50-ти языках программирования, пока программа на REXX снова не генерирует изначальный код на Ruby.

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

Бесплатные звонки в США и Канаду с любого SIP устройства

Reading time6 min
Views66K
image

Как многие уже могли догадаться, речь пойдёт о возможности, которую предоставляет сервис Google Voice. В посте трёхгодичной давности уже описывался процесс регистрации аккаунта в GV. При этом можно было принимать звонки на SIP устройства, но для инициализации вызова всё равно приходилось заходить в аккаунт и звонить оттуда, что довольно неудобно. В этом посте я расскажу о том, как полностью подружить Google Voice и SIP.
Читать дальше →

50 потрясающих плагинов jQuery

Reading time1 min
Views89K

Кто-то вчера шутил, а кто-то занимался реально полезными вещами. Как например болгарский разработчик Мартин Ангелов, опубликовавший впечатляющий обзор JS библиотек:
http://tutorialzine.com/2013/04/50-amazing-jquery-plugins/
Настоятельно рекомендуется к обозрению.
PS Куда-то пропал тип топика «Ссылка» :(

Методы решения судоку

Reading time5 min
Views718K

1. Основы


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

Information

Rating
Does not participate
Registered
Activity