Рубрика «библиотека»

Лайфхак: как спарсить гигабайт double-ов в секунду - 1

Как в коде на C++ прочитать значение double из строки?

std::stringstream in(mystring);
while(in >> x) {
   sum += x;
}

На Intel Skylake с компилятором GCC 8.3, такой код парсит 50 МБ/с. Жёсткие диски запросто обеспечивают последовательное чтение со скоростью в несколько ГБ/с, так что вне всякого сомнения, нас ограничивает не скорость чтения с диска, а именно скорость парсинга. Как его ускорить?

Первое, что напрашивается – отказаться от удобств, предоставляемых потоками в C++, и вызывать strtod(3) напрямую:

do {
    number = strtod(s, &end);
    if(end == s) break;
    sum += number;
    s = end; 
} while (s < theend);

Скорость вырастает до 90 МБ/с; профайлинг показывает, что при чтении из потока выполняется ~1600 инструкций на каждое читаемое число, при использовании strtod – ~1100 инструкций на число. Стандартные библиотеки Си и C++ можно оправдать требованиями универсальности и переносимости; но если ограничиться парсингом только double и только на x64, то можно написать намного более эффективный код: хватит 280 инструкций на число.
Читать полностью »

Чаты на вебсокетах в iOS, если у вас WAMP - 1

Разработка заняла примерно 9 месяцев, а я занимался реализацией клиент-серверного общения по сокету для iOS. Особенности нашей ситуации:

  1. Поддержка старых версий iOS, где нативных методов для общения по сокетам ещё не было — пришлось искать рабочую библиотеку и фиксить баги.
  2. Протокол WAMP на бэкенде — предстояло научить клиент декодировать any, декодировать протоколы и создать объект, который отвечает за отправку и приём сообщений.

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

Продолжаю прошлую статью о PyDERASN — свободном ASN.1 DER/CER/BER кодеке на Python. За прошедший год, с момента её написания, кроме всяких мелочей, небольших исправлений, ещё более строгой проверки данных (хотя и прежде он был уже самым строгим из известных мне свободных кодеков), в этой библиотеке появился функционал для работы с большими объёмами данных — не влезающих в оперативную память. Об этом и хочу рассказать в данной статье.

ASN.1 browser

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

Как не переписать проект на Rust - 1Как только вы переступаете через болевой порог Борроу-Чекера и осознаёте, что Rust позволяет вытворять невообразимые (и порой опасные) в других языках вещи, вас может постигнуть настолько же непреодолимое желание Переписать Всё на Rust. Хоть и в лучшем случае это банально непродуктивно (бессмысленное разбазаривание усилий на несколько проектов), а в худшем — приводит к уменьшению качества кода (ведь с чего вы считаете себя более опытным в области применения библиотеки, чем её изначальный автор?)

Гораздо полезнее будет предоставить безопасный интерфейс для оригинальной библиотеки, повторно используя её код.

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

Как IT-компания книжное издательство открывала — и выпустила книгу про Kafka - 1

В последнее время некоторым начинает казаться, будто такой «консервативный» источник информации как книга начинает сдавать позиции и теряет актуальность. А зря: несмотря на то, что мы уже живём в эпоху цифровую и вообще работаем в IT, книжки мы любим и уважаем. Особенно такие, которые не просто учебник по конкретной технологии, а реальный источник общего знания. Особенно такие, которые не потеряют актуальность полгода спустя. Особенно такие, которые написаны хорошим языком, грамотно переведены и красиво оформлены.
И знаете, что оказалось? Таких книг нет.

Либо — либо — либо. А вот этой прекрасной книги, в которой сочетается всё, что думающий и практикующий специалист ценит, — её нет.

Поэтому мы решили, что она должна быть. И не одна — таких книг должно быть много. Решили — и открыли собственное издательство ITSumma Press: возможно, первое издательство в России, созданное IT-компанией.

Было потрачено много сил, времени и порядком денег. Но вот за день до конференции Uptime day 4 мы получили пилотный тираж и подержали первую изданную нами книгу в руках (весь тираж подарили участникам конференции в итоге). Невероятное ощущение! Никогда заранее не знаешь, куда в итоге может тебя привести твоя тяга к прекрасному. Первая книга, по понятным причинам, была своеобразным пробным шаром. Нам нужно было самим прощупать весь процесс книгоиздательства, понять, что мы можем привнести сразу, а над чем нужно будет подумать ещё. И по итогу мы остались очень довольны результатом. Это важное дело, которое мы хотим продолжать и развивать. А в этом тексте хочу просто рассказать, с чего всё начиналось, как мы спорили про название, как заключили договор с, ни много, ни мало, самими O’Reilly и сколько редактур надо провести, прежде чем отдать текст в прод в типографию.

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

Лунная миссия «Берешит» — начаты поиски первой лунной библиотеки после аварии ее носителя - 1

100 грамм немного защищенного каптоновой лентой цифрового и аналогового контента человечества против 150 кг аппарата «Берешит» и 76 кг топлива на его борту при столкновении с Луной, а это, с учетом расчетных скоростей падения: 100 МДж (мегаджоулей) кинетической энергии и 1000 МДж химической энергии.

В организации Arch Mission Foundation пытаются понять — сохранилась ли посланная на Луну библиотека, и где она может быть там.
Читать полностью »

ASN.1 это стандарт (ISO, ITU-T, ГОСТ) языка описывающего структурированную информацию, а также правил кодирования этой информации. Для меня как программиста это просто ещё один формат сериализации и представления данных, наравне с JSON, XML, XDR и другими. Он крайне распространён в нашей обычной жизни, и с ним многие сталкиваются: в сотовой, телефонной, VoIP связи (UMTS, LTE, WiMAX, SS7, H.323), в сетевых протоколах (LDAP, SNMP, Kerberos), во всём, что касается криптографии (X.509, CMS, PKCS-стандарты), в банковских картах и биометрических паспортах, и много где ещё.

В этой статье рассматривается PyDERASN: Python ASN.1 библиотека активно применяющаяся в проектах связанных с криптографией в Атласе.

My own

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

Понадобилась мне как-то библиотека на c#, которая умеет делать символьные вычисления (время от времени дополняю возможностями одну математическую программу). Всякие исходники в сети найти можно и на разных языках, но вот что-то попроще и попонятнее найти не удавалось. Обратил внимание на Jasymca (Java Symbolic Calculator).
Читать полностью »

«Ваша библиотека, как ваш ребёнок, может пойти в неожиданную для вас сторону»: интервью с создателем MobX - 1

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

Мишель Уэстстрате хорошо знает обо всём этом: у его библиотеки MobX больше 17 000 звёзд на гитхабе, число её контрибьюторов давно перевалило за сотню. А скоро Мишель приедет в Россию выступить на HolyJS, поэтому ребята из программного комитета конференции (Дмитрий Махнёв и Евгений Кот) подробно расспросили его: и об опенсорсе в целом, и конкретно о MobX, и о конференциях.
Читать полностью »

Продолжаем цикл «Календарь тестировщика». В этот раз ответим на вопросы: зачем тестировщику читать книги? Что лучше книг? Есть миллион статей про это. У тестировщиков Контура Виталия Рощупкина и Кати Пальчиковой есть ещё одно мнение. И проверенные ими способы: как найти время, как мотивировать себя и коллег.

«Календарь тестировщика» за август. Прочти книгу - 1
Так выглядела библиотека тестеров Контура в 2017

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


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