Глибоко в кодексі

Пригоди в розробці програмного забезпечення… Девід Янг

Дописи

Виправлення стану роботи SQL Server без перезапуску служб

коді

Вчора вранці я отримав повідомлення про те, що робота SQL Server для програми, яку я підтримую, яка зазвичай працювала досить регулярно, не працює. Цю роботу не розпочав ручний графік, а покликали з інших місць.

Я зміг запустити роботу вручну без жодних проблем. Тим не менше, робота не почала виконуватися «автоматично», як очікувалося. Покопавшись, я з’ясував, що робота розпочалася в тригері бази даних на INSERT.

Розділ коду, який розпочав роботу, виглядав так:

Отже, цей код повинен повертати лише рядок (і запобігати виконанню завдання, якщо завдання вже запущене. Завдання не виконувалось, і все ж повернувся рядок із повідомленням, що робота розпочалася за два дні до цього і ніколи не закінчилася.

Так вже сталося, що кластер SQL Server якраз у той час довелося перезавантажити. Здавалося, робота працює, але ні.

Перше рішення: перезапустіть агент SQL Server. Це не вплинуло на таблицю сисобактерії.

Друге рішення: перезапустіть весь екземпляр SQL Server. Цього не було зроблено через критичні операції на роботі.

Що ще можна було зробити?

Оновлення таблиці вручну, щоб відобразити, що завдання більше не виконується!

Запуск цього блоку коду вводить час (зараз) для закінчення виконання завдання, а також вручну надсилає команду зупинки завдання, якщо робота тим часом розпочалася.

Після цього тригер спрацював, як очікувалося!

Поділитися цим:

  • LinkedIn
  • Reddit
  • Facebook
  • Twitter
  • Pinterest
  • Більше

Віджети в Temenos Quantum Visualizer для iOS та Android

Протягом останніх кількох тижнів я створював додаток, використовуючи Temenos (раніше Kony) Quantum Visualizer версії 9. Цей додаток врешті-решт буде перенесено як на телефони, так і на планшети Apple і Android, що є основною причиною, чому хтось використовував Visualizer замість того, щоб розробляти спочатку з XCode та Android Studio.

Теоретично код JavaScript, написаний у середовищі Visualizer IDE, призведе до однакового інтерфейсу як на платформах iOS, так і на Android, але це не завжди так.

Вперше я отримав фактичну помилку JavaScript у додатку Android, тоді як додаток iOS працював ідеально. Очевидно, що Android не прощає, коли випадково пропускає ключове слово “new” під час створення віджета - у моєму випадку RadioButtonGroup. (Помилка, яку я отримав на стороні Android, полягала в "недійсній роботі: спроба створити об'єкт без ключового слова" new ".)

Віджети RadioButtonGroup, встановлені в режимі перемикання, відображаються по-різному на iOS та Android. Це насправді не було проблемою саме по собі. Проблема полягала в тому, що віджети iOS виглядали добре і займали всю ширину батьківського контейнера (FlexScrollContainer), а на екрані Android перемикачі згруповані в лівій частині екрана.

З якоїсь причини програма Android вимагала, щоб для властивості hExpand було встановлено значення true, і це не мало значення у версії iOS.

Мораль історії: якщо ваш інтерфейс несподівано виглядає по-різному на одній платформі, можливо, йому знадобляться чітко деталізовані атрибути властивостей віджетів, щоб зробити їх більш схожими.

Поділитися цим:

  • LinkedIn
  • Reddit
  • Facebook
  • Twitter
  • Pinterest
  • Більше

Автоматизуйте експорт проектів Primavera P6 за допомогою Python - Частина 2

Результатом частини 1 став список файлів XER, які всі знаходились в одній папці. Звідки в структурі корпоративного проекту (EPS) належить кожен файл.

Можливо, ви хотіли б створити ієрархію папок, подібну до екрану проекту на P6?

Я змінив свій оригінальний сценарій Python, щоб створити структуру папок, подібну до EPS. Мені не вдалося знайти всі рівні ієрархії в базі даних P6, але мені вдалося отримати більшість представлених рівнів.

Результатом запуску цього сценарію має стати структура папок з іменами, подібними до заголовків у EPS. Експортовані файли будуть поміщені в ці папки. Дивні символи в іменах можуть потребувати екранування або заміни (як це зроблено вище в запиті SQL).

Поділитися цим:

  • LinkedIn
  • Reddit
  • Facebook
  • Twitter
  • Pinterest
  • Більше

Автоматизуйте експорт проектів Primavera P6 за допомогою Python

З переходом зі старої версії P6 (8.2) на нову (18.8) мені потрібно було експортувати наші старі проекти з бази даних 8.2 у файли XER. Виявивши, що кількість проектів у цій старій базі даних тисячі, я знав, що мені доведеться автоматизувати процес, якщо я хочу бути абсолютно продуктивним протягом наступних кількох тижнів.

Oracle надає спосіб експорту проектів за допомогою командного рядка. Після того, як я це виявив, я знав, що повинен існувати певний спосіб написання сценарію для невизначеної кількості проектів.

Використовуючи модуль cx_Oracle Python, я міг би підключитися до бази даних P6 Oracle, щоб отримати імена проектів, і розпочати створення необхідного файлу XML, який би спрямовував P6, що робити.

Наведений нижче сценарій отримує шість (6) параметрів: ім’я користувача та пароль бази даних (те, з чим ви б увійшли до Oracle, щоб переглянути базу даних), псевдонім бази даних (який повинен бути в TNSnames.ora або LDAP), ім’я користувача та пароль програми, або 0 (для декількох файлів XER), або 1 (для одного файлу XER для всіх проектів).

Примітка: Опція “один XER” ще не повністю перевірена - якщо ваша база даних невелика і/або ви не використовуєте 64-розрядний клієнт P6, ви, ймовірно, отримаєте помилку, пов’язану з цим.

Цей скрипт має деякі способи обробки помилок, такі, що при виявленні помилки в процесі експорту - що майже гарантовано - процес повинен починатися знову, не намагаючись повторно експортувати проекти, які вже були зроблені або спричинили помилки.