Задача обработки документов в формате docx, а также таблиц xlsx и презентаций pptx является весьма нетривиальной. В этой статье расскажу как научиться парсить, создавать и обрабатывать такие документы используя только XSLT и ZIP архиватор.
Рубрика «Программирование» - 548
Как я разбирал docx с помощью XSLT
2017-02-13 в 5:12, admin, рубрики: docx, ecma-376, intersystems cache, microsoft office, pptx, XML, xslt, Блог компании InterSystems, ненормальное программирование, обработка документа, парсеры, ПрограммированиеПодарок любимой на 14 февраля от электронщика
2017-02-12 в 23:47, admin, рубрики: arduino, diy или сделай сам, stm32, WS2812, гаджеты, Лайфхаки для гиков, подарок гика, подарок девушке, Программирование, программирование микроконтроллеров, метки: подарок гикаПриветствую тебя читатель GT.
Для меня как человека технического и не сильно романтичного выбор подарка на любое торжество — невероятная боль. Все было бы просто если моей любимой можно было подарить оперативку в ноут или горку процессоров, но она ни разу не технарь.
Ну а поскольку: Не так дорог подарок, как дорого внимание (с) — попробуем вложиться временем.
Представляю вашему вниманию «Сердце v1.0»
Версионирование артефактов сборки в Gradle используя git имена тегов, бранчей и коммитов
2017-02-12 в 19:16, admin, рубрики: ci, Git, gradle, java, Jenkins, packaging, versioning, Программирование, системы сборкиС переездом из SVN на GIT и gitlab (плюс переезд из Jenkins на Gitlab-CI, но его использование также упомянём), встал вопрос версионирования получаемых артефактов сборки приложения.
В SVN был всем привычный номер ревизии, монотонно увеличивающийся с каждым коммитом. Его было удобно добавлять в номер версии, и это решало большинство проблем. Но git конечно предоставляет множество плюшек, и стоило убеждать руководство и всё команду перевести проект на него…
Зато пришлось отстроить заново процесс версионирования получаемых артефактов сборки.
В итоге остановились на очень хорошем Gradle плагине github.com/nemerosa/versioning, о его использовании я и собираюсь рассказать.
Читать полностью »
Читаем tar за 26 строк ANSI C кода
2017-02-11 в 18:54, admin, рубрики: C, tar, архивирование данных, Программирование, метки: tarАрхиваторы — это страшно! Огромные и ужасные алгоритмы, которые обычному человеку никогда в жизни не понять! Rar, zip, gzip, tar — современные стандарты де-факто, а значит крайне сложные и навороченные штуки, которые и пытаться понять не стоит. Ну, tar выглядит попроще, может там всё не так сложно? Смотрим git с исходниками. Видим десятки файлов, многие на десятки килобайт. Мда. Видимо, тупик.
__________________| |____________________________________________
,--. ,--. ,--. ,--.
|oo | _ `. | oo | | oo|
o o|~~ |(_) / ; | ~~ | | ~~|o o o o o o o o o o o
|//| '._,' |//| |//|
__________________ ____________________________________________
| |dwb
На самом деле всё не так сложно. В документации было описано, что tar — просто способ записи нескольких файлов на ленту. Т.е. всё должно быть просто. По факту — набор вспомогательной информации для каждого файла и непосредственно его содержимое. Именно понимание этого факта и позволило сделать читатель tar-файлов в 26 строк.
Процедурные макросы в Rust 1.15
2017-02-10 в 15:10, admin, рубрики: diesel, rocket, Rust, serde, Компиляторы, Программирование, процедурные макросы, Разработка веб-сайтов, системное программирование, счастье естьРебята, свершилось! После долгих шести недель ожидания наконец вышла версия Rust 1.15 с блекджеком и процедурными макросами.
По моему нескромному мнению, это самый значительный релиз, после эпического 1.0. Среди множества вкусных вещей в этом релизе были стабилизированы процедурные макросы, взрывающие мозг своим могуществом, удобством и безопасностью.
А что же это дает простым смертным? Практически бесплатную [де]сериализацию, удобный интерфейс к БД, интуитивный веб фреймворк, выводимые конструкторы и много чего еще.
Да, если вы все еще не добрались до этого языка, то сейчас самое время попробовать, тем более, что теперь установить компилятор и окружение можно одной командой:
curl https://sh.rustup.rs -sSf | sh
Впрочем, обо всем по порядку.
Серия видеоуроков по Kotlin
2017-02-10 в 13:15, admin, рубрики: kotlin, kotlin lessons, kotlin video, kotlin уроки, Программирование
Приветствую тебя — Человек жаждущий знаний!
Хочу поделится с тобой своим небольшими но думаю полезным для многих знаниями по Kotlin в виде небольшой серии видео.
Читать полностью »
Катастрофические последствия программных ошибок
2017-02-10 в 10:56, admin, рубрики: Блог компании Mail.Ru Group, информационная безопасность, ошибка, программа, Программирование, программные ошибки
Практика не устает доказывать, что в любом ПО самая главная уязвимость — человеческий фактор. И неважно, появился ли баг из-за нехватки квалифицированности специалиста, выжил после долгих часов дебага в поисках ошибки, или считался хитро замаскировавшейся фичей. Среди некоторых разработчиков даже укрепилось мнение, что баги в принципе существуют всегда и везде. Но если ошибки абстрактны и сложно воспроизводимы в реальных условиях, то проблема не является критичной.
В идеальной ситуации баги исправляют все и сразу. Но в жизни всегда есть куча задач, отодвигающих полный и бесповоротный багфикс (новый функционал, срочные хотфиксы, расставленные приоритеты при исправлении багов). Это значит, что в первую очередь находятся и исправляются очевидные и явные проблемы. Остальные тихо ждут своего часа, превращаясь в бомбы замедленного действия. Иногда ошибки приводят не только к неприятностям в жизни рядового разработчика, но и вызывают настоящие катастрофы. Сегодня у нас подборка и объяснение самых кошмарных багов в истории разработки ПО.
Читать полностью »
Angular — настройка среды разработки и production сборки с AOT-компиляцией и tree-shaking (Gulp, Rollup, SystemJS)
2017-02-10 в 8:38, admin, рубрики: angular, angular2, build, development, gulp, javascript, production, rollup, systemjs, TypeScript, web, Блог компании ДоксВижн, Программирование, Разработка веб-сайтовОдна из особенностей Angular, присущая и первой и новой версии — высокий порог вхождения. Новый Angular, помимо всего прочего, трудно даже запустить. А и запустив, легко получить 1-2 Мб скриптов и порядка нескольких сотен запросов при загрузке hello world страницы. Можно, конечно, использовать всякие стартеры, seed'ы или Angular CLI, но для использования в серъезном проекте нужно самому во всем разбираться.
В этой статье я постараюсь описать, как настроить удобную среду разработки с использованием SystemJS, и production сборку Angular приложения на основе Rollup, с выходом около 100кб скриптов и нескольких запросов при открытии страницы. Использовать будем TypeScript и SCSS.
Попробовать все в деле можно в моем angular-gulp-starter проекте.
Язык C# почти функционален
2017-02-10 в 7:01, admin, рубрики: C#, F#, Блог компании Издательский дом «Питер», книги, Программирование, Профессиональная литература, функциональное программированиеЗдравствуйте, уважаемые читатели! Наши искания в области языка C# серьезно перекликаются с этой статьей, автор которой — специалист по функциональному программированию на C#. Статья — отрывок из готовящейся книги, поэтому в конце поста предлагаем за эту книгу проголосовать.
Остроумие и отвага: как мы много раз ошибались, создавая iFunny
2017-02-09 в 14:43, admin, рубрики: AWS, big data, highload, mongodb, php, базы данных, Блог компании FunCorp, высокая производительность, мобильные приложения, Программирование, разработка мобильных приложенийЭто — не статья, это — фейлбук. То, что вы прочтете под катом, — выжимка наших нелепых техно-промахов за все 5 лет работы над флагманским продуктом — iFunny. Возможно, наша фейловая история поможет вам избежать ошибок, а возможно, вызовет смех. Что тоже хорошо. Смешить людей — призвание FunCorp уже 13 лет.