• Релиз InterSystems IRIS 2020.1


      В конце марта вышла новая версия платформы данных InterSystems IRIS 2020.1. Даже пандемия коронавируса не предотвратила релиз.


      Из важного в новом релизе — повышение быстродействия ядра, генерация REST-приложения по спецификации OpenAPI 2.0, шардинг для объектов, новый вид Портала Управления, поддержка MQTT, универсальный кеш запросов, новый фреймворк для создания элементов продукции на Java или .NET. Полный список изменений и Upgrade Checklist на английском языке можно найти по ссылке. Подробнее — под катом.

      Читать дальше →
    • Релиз InterSystems IRIS 2019.1

        В середине марта вышла новая версия платформы данных InterSystems IRIS 2019.1


        Представляем вашему вниманию список изменений на русском языке. Полный список изменений и Upgrade Checklist на английском языке можно найти по ссылке.


        Читать дальше →
      • Просмотр глобалов в Портале Управления СУБД Caché

        • Tutorial

        Вызывает антирес и такой ишо разрез
        (Царь из «Про Федота-стрельца»)


        Всё в Caché хранится в глобалах. Данные, метаданные, классы, программы. Для просмотра глобалов в Портале управления существует удобный инструмент — страница «Просмотр данных глобала». Её-то мы сегодня и рассмотрим.


        Примером глобала нам будет служить ^DeepSee.Cubes. Это глобал, в котором хранится список кубов DeepSee. Для чтения этой статьи знать DeepSee вам совершенно не обязательно.


        Чтобы попасть на страницу «Просмотр данных глобала», откройте Портал Управления, выберите «Обозреватель системы» (System Explorer) → «Глобалы» (Globals). Затем слева нужную область, и нажмите «Просмотр» рядом с нужным глобалом.

        Читать дальше →
      • Таблицы сортировки в СУБД Caché

          Зато какая сортировка!
          (А. С. Пушкин)


          Если бы это была запись для твиттера, то она была бы следующей: «Программисты на Caché ObjectScript! Используйте Cyrillic4 вместо Cyrillic3!». Но тут Хабр, поэтому придётся развернуть мысль – добро пожаловать под кат.
          Читать дальше →
        • Собственные типы индексов в СУБД Caché

            В объектной и реляционной моделях данных СУБД Caché есть три типа индексов — обычные, bitmap и bitslice. Если по каким-то причинам этих индексов не хватает, начиная с версии 2013.1 программист может определить свой тип индексов и использовать его в любых классах.

            Подробности под катом (если вас не пугают слова типа метод-генератор).
            Читать дальше →
            • +16
            • 6,9k
            • 2
          • А вы уже поменяли $Increment на $Sequence?

              Если бы это была запись для твиттера, то она была бы следующей: «Программисты на Caché ObjectScript! Используйте $Sequence вместо $Increment для генерации Id». Но тут Хабр, поэтому придётся развернуть мысль – добро пожаловать под кат.


              Читать дальше →
            • Юнит-тесты в Caché – это просто

              • Tutorial
              Больше всего программисты любят программы, в которых не нужно исправлять баги. Шагом на пути к этой несбыточной мечте является написание юнит-тестов. В Caché, как и в любой современной СУБД, есть реализация фреймворка для автоматического выполнения тестов.


              Читать дальше →
              • +18
              • 7,4k
              • 9
            • Борьба с тридцатилетним багом

              • Перевод
              В первой редакции говорилось о двадцатилетнем баге. На самом деле ему 30 лет. Спасибо Sidnekin.

              Сегодня, считывая какие-то данные, моя программа обработала 36'916 возможных дат. Две из этих 36'916 не прошли проверку. Я не придал этому значения, потому что эти даты были из данных предоставленных клиентом, а такие данные часто удивляют. Однако, взглянув на исходные данные, выяснилось, что проверку не прошли 1 января 2011 и 1 января 2007. В программе, написанной мной месяц назад, был баг. Но оказалось, что этому багу 30 лет.

              Любому человеку, который не очень понимает экосистему программного обеспечения, написанное ниже покажется странным, но в этом есть смысл. Из-за решения, принятого давным-давно, чтобы принести деньги одной компании, мой $клиент потратил деньги на оплату мне, чтобы я исправил баг, внесённый одной компанией случайно, а другой специально. Чтобы объяснить это, мне придётся рассказать о третьей компании, добавившей особенность, ставшую в конечном счёте багом, и ещё о нескольких фактах, повлиявших на непонятный баг, который я исправил сегодня.
              Читать дальше →
            • Код как аргумент в Caché ObjectScript

                Язык InterSystems Caché ObjectScript (COS) развивается с каждым годом, в него добавляются новые команды и функционал. К сожалению, в настоящий момент подпрограммы в COS не являются объектами первого класса, то есть подпрограмму (функцию, метод) нельзя передать как параметр в подпрограмму или вернуть из подпрограммы.

                Тем не менее, существуют способы смягчить эти ограничения.

                Под катом рассмотрим несколько вариантов передачи кода как аргумента подпрограммы.
                Читать дальше →
              • Разработка в Caché Studio с использованием TortoiseGit

                  Caché-Git — это модуль контроля версий для Caché Studio, который обеспечивает вызов диалоговых окон TortoiseGit непосредственно из Studio и полуавтоматическую синхронизацию рутин между Caché и локальным репозиторием.

                  В каждой области выбираются пакеты, проекты, классы, рутины, dfi-файлы, csp-страницы, csp-приложения которые будут остлеживаться Caché-Git.

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

                  Caché-Git работает только на компьютерах, на которых установлен и сервер и клиент Caché. Caché-Git не будет работать при соединении с удалённым сервером.

                  Где взять


                  Репозиторий с Caché-Git находится по адресу github.com/intersystems-ru/cache-tort-git. Там же есть wiki, в которой описаны шаги по установке и использованию
                  Читать дальше →
                • Будьте добры к программистам

                  • Перевод
                  — Тебе так повезло, что ты программист. Хотел бы я быть программистом.
                  — А почему ты не научишься?
                  — Я пытался, заходил на codeacademy и другие сайты, но это не моё.
                  — Да, программирование, действительно, не для всех.
                  — Тебе хорошо платят и ты можешь создавать разные вещи. Почти каждый день к тебе поступают сумасшедшие предложения минимум на 100 тысяч долларов.
                  — Да, это очень лестно. Немножко сносит крышу, если честно.
                  — Ты получаешь свою долю в компании, все уважают инженеров. Ты можешь воплотить любую идею в приложение и стать богатым. И тебе не нужно для этого никого нанимать.
                  — Вообще-то программирование делает меня несчастным.
                  Читать дальше →
                • Разработка в Caché Studio с использованием Subversion


                    Было разработано расширение Caché Studio, которое называется Caché-SVN. Это расширение позволяет работать с репозиторием (хранилищем) SVN, не покидая Caché Studio. С его помощью можно выполнять checkout, commit и update.

                    Caché-SVN работает не с отдельными файлами (классами, программами, csp-страницами и т.д.), а с проектом целиком.

                    Caché-SVN создаёт временную папку на сервере, где установлено Caché, выгружает туда файлы проекта и выполняет svn commit. Аналогично при svn update полученные xml-описания файлов импортируются в Caché.
                    Читать дальше →
                  • Создание cue-плэйлистов для списка mp3-файлов из папки

                      Очень часто, скачав с торрентов очердную музыку, я вижу, что автор раздачи то ли не прописал тэги в mp3, то ли прописал их не правильно. Если исправить эти mp3-файлы и прописать в них нормальные тэги, то я не смогу сидировать только что скачанное. Что не очень хорошо. С другой стороны, я собираю свою музыкальную статистику в last.fm и хочется тэги поддерживать в актуальном состоянии. Есть, конечно, вариант скопировать только что скачанную музыку в отдельное место и исправить тэги там, но это как-то неспортивно.

                      Первые десять раз я создавал cue-плэйлист вручную, но потом вспомнил, что всё-таки имею отношение к программированию и написал небольшой скрипт на Perl, который по списку mp3 файлов создаёт cue-плэйлист. Теперь менять информацию об исполнителе, альбоме, названиях песен можно менять в нём, никак физически не трогая mp3-шки. Эти плейлисты прекрасно читаются foobar'ом.

                      У скрипта один параметр: pattern — код, который выполняется для каждого файла. В этом фрагменте кода должны устанавливаться переменные $track, $title и $performer — это соответственно номер трека, название песни и исполнитель.
                      Например, для имён файлов типа «22. Baby I Need Your Loving — Four Tops.mp3» скрипт нужно вызывать так:
                      perl c:\util\playlist_cue.pl "--pattern=($track,$title,$performer)= $f=~ /(\d\d)\. (.+) — (.+)\.mp3/;" >> playlist.cue
                      Считается, что в файле playlist.cue уже содержится информация об альбоме.

                      сам скрипт