Архив за 15 июля 2014

В соответствии со стандартами C и C++, если выполнение программы приводит к переполнению знаковой целой переменной, или к любому из сотен других «неопределённых действий» (undefined behaviour, UB), то результат выполнения программы может быть любым: она может запостить на Твиттер непристойности, может отформатировать вам диск…
Увы, в действительности «пасхальные яйца», которые бы заставляли программу в случае UB делать что-то из ряда вон выходящее, не встречались со времён GCC 1.17 — та запускала nethack, когда встречала в коде программы неизвестные #pragma. Обычно же результат UB намного скучнее: компилятор просто оптимизирует код для тех случаев, когда UB не происходит, не придавая ни малейшего значения тому, что этот код будет делать в случае UB — ведь стандарт разрешает сделать в этом случае что угодно!
В качестве иллюстрации того, как изобилие UB в стандарте позволяет компилятору выполнять неочевидные оптимизации, Реймонд Чен приводит такой пример кода:

int table[4];
bool exists_in_table(int v)
{
    for (int i = 0; i <= 4; i++) {
        if (table[i] == v) return true;
    }
    return false;
}

В условии цикла мы ошиблись на единицу, поставив <= вместо <. В итоге exists_in_table() либо должна вернуть true на одной из первых четырёх итераций, либо она прочтёт table[4], что является UB, и в этом случае exists_in_table() может сделать всё что угодно — в том числе, вернуть true! В полном соответствии со стандартом, компилятор может соптимизировать код exists_in_table() до

int table[4];
bool exists_in_table(int v)
{
    return true;
}

Такие оптимизации иногда застают программистов врасплох. Читать полностью »

Kowalski: онлайн сервис для ведения списка дел

Kowalski — онлайн-сервис для ведения списка дел

Предисловие

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

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

Я живу в городе, где сайты есть менее чем у 30% компании. Это пятое место по России, хуже дела обстоят только в Набережных Челнах, Астрахани, Липецке и Новокузнецке. А вот в среднем по России не имеет сайта половина компаний.

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

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

Как пишет ain.ua, у продавца онлайн-билетов Senturia.ru(.ua) проблемы. На прошлой неделе ряд авиакомпаний, среди которых «Аэрофлот» и Utair, прекратили сотрудничество с Senturia, а пассажиры получили письма о том, что билеты, заказанные через сайт Senturia в период с 8 по 25 июня 2014 года, недействительны. Компания Emirates вообще отказывает в регистрации на рейсы по билетам, купленным в Senturia.

По данным «Коммерсанта», на долю Senturia может приходиться 5-7% онлайн-продаж авиабилетов в РФ.

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

Как известно, в Spring нельзя сделать бины для перечисляемых типов без «костылей» — у этого типа «нет» конструктора.

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'demoEnum0' defined in file [...DemoEnum0.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [ru.itbasis.demo.spring.enums.DemoEnum0]: No default constructor found; nested exception is java.lang.NoSuchMethodException: ru.itbasis.demo.spring.enums.DemoEnum0.<init>()

(коммит)

В данном посте я попробую обойти это ограничение.
Читать полностью »

Дао программирования, часть 1

Книга 1

Безмолвная пустота.

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

FedEx: часть 2. Роняем посылки за деньги: лаборатория упаковки FedEx
FedEx — крупнейшая компания доставки в мире — может доставить практически что угодно в 22 стран мира. Все что угодно, включая… спутники?!
(Осторожно, много фото!)
Читать полностью »

Инвестор «Дождя» Александр Винокуров и акционер платежной системы Qiwi Борис Ким подали совместную заявку на приобретение российских активов Sanoma: газеты «Ведомости», глянцевых журналов и сайтов, — сообщил источник ИТАР-ТАСС. Предполагаемые возможные покупатели не комментируют сообщение. Sanoma будет выбирать покупателя как минимум до 25 июля.

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

DigitalOcean открыл точку присутствия в Лондоне

По доброй традиции спешу сообщить вам новость о запуске компанией DigitalOcean нового региона – «Лондон». Картинку переводить не стал, так как из песни слов не выкинешь.

Точку присутствия в данном регионе просили многие клиенты (на момент написания поста 576 голосов). Вообще, компания считает, что Лондон сейчас переживает технический бум, подобный тому, который был в Нью-Йорке несколько лет назад и рада предоставить компаниям свои решения. Большим плюсом для компаний будет соответствие законодательству о хранении определенных категорий данных на территории страны.

При создании дроплетов в данном регионе доступны IPv6 и Private Networking.

Для желающих потестировать скорость, связность и задержку прошу Читать полностью »

The Future of Retail

В четверг (24 июля) в 14:00 ИТ-ГРАД проводит вебинар, посвященный использованию публичных облаков (IaaS в частности) в сфере ритейла.Читать полностью »


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