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

Проект по созданию российской базы знаний - 1

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

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

Как это работало раньше

Компания EastView оцифровала множество советских газет и журналов, в том числе газеты «Известия», «Правда», «Советская культура», «Литературная газета», журналы «Огонёк» и «Искусство кино», «Вопросы истории» и много других.

Получилась база данных советской прессы. Номера доступны как PDF страницы или как поиск по тексту. Отдельные страницы можно сохранить на компьютер. Распознанный текст можно скопировать. А при поиске показывают фрагмент текста.

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

Лайфхак: как спарсить гигабайт 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).
Читать полностью »


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