Показаны сообщения с ярлыком технология. Показать все сообщения
Показаны сообщения с ярлыком технология. Показать все сообщения

вторник, 20 мая 2025 г.

Рамка-невидимка

Для некоторых картин невозможно подобрать готовую рамку в магазине, и даже если делать индивидуальную, то часть шедевра будет скрыта. Предлагаю вам универсальный вариант - дешёвый и прочный. Запаситесь инструментом - плоскогубцами и круглогубцами. Сами рамки будем делать из скрепок или проволоки. 

Предположим, что картина имеет портретную ориентацию, то есть прямоугольник вертикальный. 

Если у вас найдутся остатки толстой стальной или медной проволоки, то нарежьте плоскогубцами отрезки: два в ширину картины, один в длину и один в четверть длины. На каждом отрезке загните круглогубцами петлю. На малый (верхний) отрезок нанижите остальные три. Положите эту конструкцию на задник картины. Выровняйте отрезки так, чтобы узел приходился на центр по горизонтали и на верхнюю четверть по вертикали. Загните нижний и боковые концы на лицевую сторону картины. Верхний конец загните скобкой или петлёй под размер гвоздика и по уровню верхнего ребра картины.  Вот и всё, рамка с подвесом готова.

Загнутые проволоки на заднике картины

Картины по номерам у меня получились все в двойных экземплярах за счёт вкладышей на бумаге. Раскрасив и приклеив дубликаты на картон, для них были сделаны рамки из деревянных реек и бумажной бересты. А оригиналы, которые фабрично уже были наклеены на ДВП, жалко было прятать под рамки и тем самым скрывать часть картины. Была попытка сконструировать рамку из деревянных реек по лицевой и изнаночной стороне, а в качестве защиты и удержания плоской формы взять стекло. Не смотря на то, что стекла было достаточно и его нарезку получилось быстро освоить, но такая конструкция становилась больно тяжёлой из-за стекла и требовала немалого вложения средств: двойные слои реек, болтики с гайками. Так что, этот вариант остался только в теории, но всё-таки поделюсь своими наработками.

Варианты картин по номерам после раскраски и покрытия акриловым лаком стали скручиваться по вертикали. Поэтому пришлось их до создания рамок положить под пресс (несколько стопок книг). Для деревянной рамки со стеклом были отмерены пять реек ширины картины (3 для задника и 2 для лицевой стороны рамки) и две рейки её длины с добавками в две ширины реек, также куплены 17 болтиков с гайками. Стекло нарезано с неменее чем сантиметровыми полями по периметру картины.

Деревянные рейки и стекло

Собираем рамку.

1. На двух лицевых вертикальных рейках просверлите шесть пар отверстий на концах и по центру.

2. Две горизонтальные лицевые рейки отпилите ровно по ширине картины. В верхней просверлите два отверстия, а в нижней - три.

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

4. Просверлите отверстия в изнаночных рейках. 

5. Теперь соберите картину в рамку (на три изнаночные рейки положите картину, сверху стекло и лицевые рейки), вставьте болтики в отверстия и закрепите их шайбами.

17 отверстий в 7 рейках

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

Возвращаюсь к рамкам-невидимкам. Для второго варианта возьмите пять-шесть скрепок.

Обычная скрепка
Цветные скрепки

Гигантская скрепка

 Наилучшим вариантом будут канцелярские гиганты, но можете поэкспериментировать и с обычными или в пластиковой облатке. Обычные скрепки тонкие и их менее заметно, но они могут оказаться слишком хилыми и не выдержат вес картины. В облатке скрепки удобны своим цветом, который может сливаться с рисунком, но они обычно тоже хлипкие. Так что, лучше берите сразу самые толстые и большие. 

Разогните пять скрепок по центральному сгибу. 

Разогнутая скрепка

Меньшие сгибы сверните в кольцо. 

Кольцо на одном конце

На кольцо первой скрепки нанижите вторую, третью и четвёртую.

Схема нанизывания скрепок

Приложите получившуюся конструкцию к изнанке картины так, чтобы узел приходился на центр по горизонтали. Отмерьте на второй и третьей скрепках половину ширины картины и измените загибы скрепок 2 и 3 так, чтобы от узла до загиба было наименьшее расстояние. 

Узел скрепок на заднике картины

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

Кольца на концах

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

Четыре картины на двух гвоздях

Когда картинная галерея объявила сбор произведений о глухарях к дню города, у меня родились два сюжета. Один был воплощён кофеграфией, а другой ошибаной на листах формата А3. Эти листы были в гигантской раскраске с ДВП-обложкой, поэтому вопрос с рамкой решился быстро. На лист ДВП была положена картина, сверху покрыта стрейч-плёнкой, которая на заднике скреплена скотчем. Пятью декоративными гвоздиками картина скреплена с ДВП и штапиком, приложенным сзади и тем самым усилившим жёсткость прямоугольника, а в просветы между штапиком и ДВП протянут шнур для подвешивания картины.

Вот такие почти бесплатные рамки продемонстрируют всем ваши шедевры во всей своей красе.

вторник, 11 января 2022 г.

Слепая атака

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

Одной из первых моих настольных игр была "Атака".  Она состояла из картонного поля и бумажных двухсторонних фишек на пластиковых подставках. Одна сторона фишек была однотонная - зелёная для наземных войск и голубая для водных. А на другой стороне, видимой только одному игроку, были картинки воинских званий и вооружения. Поле местами было сушей и водной гладью. Двое игроков двигали поочерёдно свои фишки, и при встрече с соперником объявляли: "Атака!". Тогда раскрывали друг дружке силу встретившихся фишек, сравнивали вооружение и звание, за счёт чего кто-то погибал или отправлялся в плен. В конце игры подсчитывались уроны и выявлялся победитель.

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

Слепая атака

Инвентарь для игры собственными руками.

Поле из картона мне показалось недолговечным, поэтому в дело пошёл кусок белого ситца, то есть остаток бывшей простыни. После раскрашивания картин по номерам у меня накопилось немало акриловых красок, которыми ситец поля был раскрашен на пять зон: одна центральная нейтральная и по две для обоих игроков - горизонтальный фронт и вертикальный тыл. Ситец - ткань тонкая и сыпучая, потому её пришлось свернуть вдвое, чтобы спрятать внутрь края. Прострочив поле по кромке и периметрам зон, по рабочей зоне из двух фронтов и нейтралки была сделана строчка квадратиков 9*9. А на тыловых полях вышиты открытые и закрытые глазки и название игры так, чтобы его можно было однозначно прочесть с обеих сторон полотна.

Примечания

* Покраска делалась по однослойному полотну, но хоть оно и было изначально расчерчено, всё-таки после высыхания зоны искривились. Из чего рекомендую сначала сшить и прострочить полотно, потом натянуть его не сильно на пяльца для покраски и сушки.
* По границам цветов с обеих сторон простроченного двухслойного полотна пройдитесь мылом или свечкой, или воском, или акриловым контуром по ткани, чтобы краска не впитывалась на соседних полях.
* Под ткань обязательно положите целлофан или полиэтилен на время покраски и сушки.
* Цвета для зон никакого значения не имеют, потому что это были остатки красок.

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

Советы:

* Вместо крышечек можно взять шашки.
* Отшлифуйте кромку крышки или срежьте ножом зубчики, чтобы они не цеплялись за ткань поля и сумочки.
* Заряды и бомбы можно нарисовать двумя различными красками для удобства ориентирования.

Весь комплект в свёрнутом виде занимает совсем мало места. Для него была сшита сумочка из остатков одноразовой скатерти, на замок пошла молния из отслужившей свой срок одежды.

Самодельный набор настолки "Слепая атака"

Правила игры во многом схожи с шашками. Сражаться можно вдвоём или двумя командами, доверяя каждый следующий ход новому игроку, совещаясь с командой или на полном доверии.

Подготовка к игре.

Разложите поле. Договоритесь с соперником о полях фронта (ближайшая к вам горизонтальная полоса) и тыла (вертикальное правое поле).

Разграничения игрового поля

Отберите все девять фишек своего цвета. Положите их все зарядами вниз и перемешайте. Расставьте их вслепую для вас и соперника на первую линию вашего фронта. Аналогично должна действовать команда соперников. Теперь никто из игроков не знает, где какой воин. Поэтому игра и названа "Слепая атака".
Договоритесь о том, кто начнёт игру. Каждый игрок или команда делают свой ход по очереди.
Игра заканчивается, когда у одной из команд не останется бойцов или кто-то предложит ничью.

Как можно ходить:

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

Возможности генерала

Рядовые ходят только на одну клетку и только вперёд, а генералыдо трёх клеток во все восемь направлений.
Объявление атаки является необязательной частью хода после передвижения фишки, либо самостоятельным ходом после передвижения фишки соперника.
Изначально вы можете договориться о том, брать или нет фишку соперника в плен, если он не объявил атаку при явной возможности.
После передвижения своей фишки игрок может атаковать противника, если у него достаточно возможности.
Взорвавшиеся бомбы блокируют две ячейки, если атака была прямая, и четыре клетки квадратом, если атака была по диагонали. По блокированным ячейкам нельзя ходить ни рядовым, ни генералам.

Атаки рядового по зонам:

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

Атаки рядового по зонам

На девятой горизонтальной полосе рядовой превращается в генерала и уже может передвигаться до трёх пустых клеток во всех восьми направлениях. И атаковать любую одну фишку противника во всех восьми направлениях на одну клетку. Единственное ограничение действий генерала - нельзя перепрыгивать через фишки своего отряда или противника. Если же фишка бомбы дошла до девятой полосы, не атаковав ни одной фишки соперника, то генералом не становится, а после переворачивания блокирует собой только одну клетку.

Действия атак по зарядам.

При встрече с противником вы объявляете ему атаку. Оба игрока временно переворачивают свои фишки и сравнивают заряды.
Если атаку предложил однозарядный воин (любой рядовой или генерал), а у противника два или три заряда, то атаковавший сдаёт свою фишку сопернику в тыл, если вы договорились на агрессивный бой. Уберите свою малозарядную фишку в свой тыл, если вы воюете гуманно. Соперник же свою фишку возвращает на прежнюю клетку зарядом вниз. Аналогично игроки действуют, если двойной заряд атаковал трёхзарядного.

Малозарядная атака

Если атаку предложил трёхзарядный воин (любой рядовой или генерал), а у противника два или один заряд, то атаковавший забирает фишку соперника себе в плен (поле тыла). Одновременно свою фишку ставит зарядом вниз на клетку, с которой была взята фишка соперника в плен. Аналогично игроки действуют, если двойной заряд атаковал однозарядного.

Большезарядная атака

Если в результате атаки вскрылись одинаково-зарядные воины, то договоритесь изначально об одном из четырёх вариантов. Первый - можно сыграть гуманно, то есть вернуть обоим игрокам фишки на прежние места зарядом вниз. Второй - закрутить сюжет и сыграть рокировку, то есть поменяться местами, поставив фишки на клетки соперников зарядом вниз. Третий - пойти по агрессивному варианту и обоим игрокам сдать свои фишки противнику в плен. Четвёртый — злобный вариант, когда атаковавший снимает свою фишку в свой тыл, но баллы за неё будут минусоваться при подсчёте очков, а атакуемый возвращает свою фишку на место зарядом вниз.

Равно-зарядная атака

Если атака была по прямой и какая-то из фишек - бомба, то обе фишки ставятся зарядом вверх на грань между клетками, тем самым блокируя обе ячейки. Бомба кладётся сверху. В подсчёте очков обе фишки не учитываются. 

Две ячейки заблокированы

Если атака была по диагонали и какая-то из двух фишек - бомба, то она взрывает всех воинов квадрата из четырёх ячеек. Все взорванные фишки ставятся одна на другую зарядом вверх в точке касания четырёх ячеек. Бомба кладётся сверху. В подсчёте очков все взорванные фишки и бомба не учитываются. Стопка фишек блокирует квадрат из четырёх ячеек.

Заблокированы четыре ячейки

Конец игры и выявление победителя.

Можете завершить бой, если у одного из игроков не осталось воинов на поле сражения, либо у обоих игроков осталось по одному равноценному генералу, которые могут слишком долго безрезультатно бегать друг за дружкой. Возможен ещё вариант, когда на поле останутся только фишки, которые не могут сделать ход из-за заблокированных ячеек. Тогда подсчитайте очки следующим образом: за каждого пленного добавьте себе очки, равные его заряду, а за каждого своего раненого отнимите по одному очку, вне зависимости от его заряда. Фишки бомб и взорванные ими бойцы в подсчёте очков не участвуют. Даже если всех ваших бойцов истребили, но по очкам вы ещё можете победить. Например, на поле остался трёхзарядный генерал золотников, нефтянки взяли в плен всех двойных и одинарных золотников, один ранен и два взорвались, а золотники взяли в плен трёх двухзарядных и двух однозарядных, один подорвался. Очки нефтянок = 2*3 + 1*3 — 1 = 8. Очки золотников = 2*3 + 1*2 = 8. При равенстве очков победили — золотники за счёт оставшегося в живых одного воина.

Самая быстрая партия длится не более трёх минут. Такое случается, если трёхзарядная фишка одного игрока с первого хода пробивается в генералы и встречается с бомбой противника в конце, а одинаково-зарядные атаки проходят по жёсткому пути, когда атакуемая фишка убирается с поля в плен или тыл. Удлинить партию можно в том случае, если позволить генералам атаковать только в направлении сделанного хода, то есть после прямого хода атаковать прямо, а после диагонального хода атаковать на тот же угол. Также время партии может увеличиться за счёт рокировок.

Подобная настольная игра с множеством вариантов в правилах даёт возможность не только азартно убить время, но и выявить доброе и негативное отношения между людьми. Сражайтесь на столе, а не в реальном поле битвы. Даже если вы убеждённый пацифист, то эта игра поможет развить логику и тактику со стратегией.

суббота, 20 марта 2021 г.

Трёхмерность жизни

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

Молодому поколению сложно справляться со своими проблемами, тяжело ступать по лестнице развития. Старшие же могут показать наглядно, как делать выбор на каждой стадии так, чтобы результат не перекосил последующую линию судьбы. Любое действие имеет свою причину. Но по закону физики любое действие имеет свою силу противодействия. Когда нам чего-то хочется, то оно не падает на нас манной небесной. 

Ось ХОЧУ
Определю желание или цель стрелкой вверх и влево, потому что всё сейчас недоступное обычно весит высоко, а более притягательное почему-то на дороге влево. Вспомнить хотя бы ходоков к чужим жёнам или сладкий плод в раю. Они тоже где-то слева вверху. Мечту чаще называют "розовой", потому и цвет оси "ХОЧУ" придам тёплый. Если же не в житейской терминологии её именовать, а юридической, то более подходит слово "ЦЕЛЬ". Или же можно назвать эту ось "птица счастья", у великого баснописца она, кстати, была Лебедем.
Двухмерность мечты и возможностей
Но любая хотелка, как уже ранее было сказано, не может материализоваться без вложений, то есть возможностей мечтателя. Поэтому определю наши силы для осуществления мечты синей стрелкой вправо и вверх.  Синий цвет оси "МОГУ" ассоциируется с работой и водой.  В той же басне за возможности отвечала Щука, ведь "без воды и ни туды, и ни сюды". Но не смотря на то, что вода обычно снизу, ось стремится тоже ввысь, потому что увеличивая свои возможности мы приобретаем опыта больше, чем в последствии тратим сил. Те, кто не разделяет сказочные объяснения, а желает придать моей теории научность, могут именовать эту ось юридическим термином "ПРАВА", по аналогии с документом, известном всем как "договор".
Трёхмерность желания
Ещё раз напомню, что мы всегда находимся в обществе, и все наши желания как-то влияют на окружающих, а значит и они нам противодействуют. То есть любую мечту НАДО соразмерять с ОБЯЗАННОСТЯМИ перед тем самым обществом. Это чаще всего самый сильный сдерживающий фактор и не только в качестве мнения света, но и последующей ответственности за нанесённые действия. Поэтому стрелка тёмно-серая и направлена вниз. И по ассоциации всё с той же басней - под ней можно подразумевать Рака.
Расценки мечты
Итак, у нас получилась трёхмерная система координат жизни, которой мы придадим условное исчисление: от 0 до 3 или 10, как вам больше нравится.
Выделим в текущий момент жизни одну проблему, например, финансовый кризис после пандемии. Попытаемся начертить кривую для решения этой конкретной проблемы в системе координат наших желаний, возможностей и обязанностей.  Первым шагом сформулируем мечту или цель, которая должна быть адекватной, достижимой и конкретизированной. Например, выиграть миллион в лотерею - это неадекватная, слабо-достижимая мечта, но конкретизирована суммой. А вот желание "летний трёхнедельный отпуск провести на морском побережье и потратить двухмесячный оклад" отвечает всем условиям, потому что если на Карибское море вашей зарплаты может и не хватит, но на Чёрное или Каспийское - вполне. Тем самым мы укладываем свою мечту в рамки адекватности и достижимости, точно сформулировав конкретизацию. Поскольку мечта удовлетворяет всем трём условиям, то отмечаем её на цифре 3 своей оси. И начинаем считать возможности, то есть проводим линии до осей МОГУ и НАДО сначала к точке 1 или даже к 0, поскольку все три оси находятся во взаимосвязи, что поясню позже на примере законов физики.

Связь ХОЧУ-НАДО

Связь ХОЧУ-МОГУ
Если у вас есть регулярный доход (работа с ежемесячным окладом или вклад с квартальным причислением процентов), то по оси МОГУ можем встать на 1. Если вы нашли тур, который по цене совпадает с вашей зарплатой, то сдвигаемся на пункт 2. Если же работодатель точно даст вам дни отпуска в июле-августе, то смело сдвигаемся на цифру 3.

Если на время вашего отпуска на предприятии рабочий процесс не остановится или не развалится без вас, то ставьте точку на 1 оси НАДО. Если перемещаясь в другой регион вы не нарушите санитарные нормы, например, привились от COVID-19, то сдвигаемся по оси НАДО до 2.  Если вы гарантируете, что не нарушите в чужом месте никакие законы и благополучно вернётесь домой, например, не будете вывозить дары моря из Египта, то смещаемся до 3 по оси НАДО. То есть подчёркиваем, что общество дома, на курорте и работе не понесёт потерь от вашего осчастливливания.

А  теперь посмотрим на получившийся треугольник взглядом физика. Представьте, что верхняя сторона ХОЧУ-МОГУ - это планка качелей (или поднос в руках официанта, или дощечка в пирамиде эквилибриста), а вершина оси НАДО - точка её переката (основание кисти официанта, касания цилиндра и цирковой арены). Таким образом, мы определили величины левого и правого плечей рычага, а также точку приложения силы. Когда всего достаточно (ХОЧУ, МОГУ и НАДО на равном удалении от центра), то равносторонний треугольник покажет устойчивость положения, а значит и проблема решится как-бы сама собой.

Равновеликая мечта
Когда мечта не полноценно определена или не хватает прав для её осуществления, то треугольник получается скособоченным. Визуальное представление проблемы помогает понять, взлетит ли ваша идея или скатится в никуда.
Большое желание при малых возможностях

Увеличение возможностей равняет качели мечты

Обязательства скатывают мечту с горки
Когда объём желаемого и возможного совпадает, но невелики при огромной задолженности перед обществом, например, должников по алиментам не пускают за границу, то острый равнобедренный треугольник на первый взгляд выглядит ровно, но его острота предупреждает о высокой неустойчивости положения. То есть внутри страны может вы и поездите, но недалеко и недолго. А значит и полного удовлетворения получить не сможете.
Обильный долг не ширит мечту и силы
Встречается и ещё один вариант равнобедренного треугольника, когда ХОЧУ и МОГУ достигают максимума, а НАДО не растягивает фигуру в правильную (равносторонний треугольник - самая жёсткая фигура геометрии). Физик вам сразу напомнит, что малейшее приложение силы к одному из длинных плеч рычага начнёт качание. То есть при минимальных обязательствах перед обществом расширение мечты на один шаг сократит возможности чуть ли не вдвое, например, девицы лёгкого поведения автостопом не всегда попадают к морю, а чаще в подпол лесной избушки.
Так живут безалаберные люди
Вот так, мы можем теперь рассмотреть любую проблему. Визуализировать её и проанализировать по прогнозам. Жизнь можно декомпозировать и запрограммировать простейшими алгоритмами, если знать элементарные законы естествознания. Попробуйте приложить к вашему уникальному случаю всем известные правила, и он разрешится как в вашу пользу, так и сохранит статус-кво окружающих. Живите счастливо сами, даря счастье близким. 


понедельник, 5 октября 2020 г.

Математика из нас

В конце 1980-х в СССР существовало очень мало институтов, готовящих специалистов в области информационных технологий. А в нашем городе областного значения подобных факультетов вообще не было ни в одном местном ВУЗе. Поэтому пришлось освоить смежную профессию. В ПедИнституте второй год набирали абитуриентов на учителей математики и информатики. Предметы, с которыми мы были на одной волне, не только легко давались в школе, но и ещё больше увлекли в ВУЗе, при нас начавшем переориентацию на Университет. В профильные курсы входили не только психология и педагогика, но и обязательно "методика преподавания", в рамках которого нам рассказывали о новомодных тенденциях, например, об "опорах Шаталова", кстати, тоже учитель математики. Но он свои опоры чертил (рисовал) не только для профильного предмета, они очень хорошо помогали в изучении истории, литературы, русского языка, и моя мама, будучи методистом в средней школе, изучала эту технику на курсах повышения квалификации.

Математикам и физикам довольно просто объяснить необходимость знаний школьной программы на окружающем мире. Но, к сожалению, большинство учителей ограничивают свои поурочные планы текстами из учебников. Из-за этого школьники наивно полагают, что вдалбливаемые в них знания ничем им не помогут в будущем. Напротив, в моей памяти ярким моментом отпечатался эксперимент, который нам задали на дом в средней школе, когда подручными средствами (линейки, портняжные метры, нитки или ленты, штангельциркули) необходимо было составить таблицу длин окружностей и их диаметров нескольких круглых предметов (дно стакана, крышка кастрюли, циферблат часов и другие обыкновенные бытовые вещи). А уже на уроке, высчитав их отношение, получили по всему классу среднюю величину числа "пи". Подобное привлечение к научно-исследовательской работе весьма эффективно в плане понимания детьми необходимости даваемых знаний.

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

Кроссворд.

В шестом (ныне - седьмом) классе средней школы математика разделяется на два предмета - алгебру и геометрию, которые изобилуют новыми терминами и их определениями. К четвёртой четверти таких слов набирается на весьма внушительный кроссворд, который и предлагается составить тем, у кого за год не выходит желаемая высокая оценка. Дома или на дополнительных занятиях ученикам предлагается выписать поклеточно-побуквенно любые термины из обоих учебников и вырезать полоски. Далее, скрепить эти полоски слов на совпадении букв горизонтально, вертикально или по диагонали. Контур получившейся сетки переносим на чистый тетрадный листок в клетку. Расставляем цифры по порядку. Выписываем номера в группы горизонталей, вертикалей и диагоналей. Самый интересный и коварный шаг - придумать свои, не из книжки, определения терминам и записать их в условия кроссворда. Вся работа оценивается по параметрам: количество использованных терминов, понятность и однозначность их определений. Например, угол - место отбывания наказания малолетки в геометрическом пространстве, луч - путь света от Солнца во Вселенную, отрезок - минимум шагов между парой объектов, параллели - рельсы или шпалы, перпендикуляр - шпала и рельсам.

Углы.

Для изучения строения  и характеристик углов ребята принесли или складывали на переменке из листов бумаги веера. На обычном театральном веере отчётливо видны элементы угла: вершина (кольцо или гвоздик соединения), лучи (крайние полосы-держатели ткани), внутренность угла ( растягиваемая ткань), величина (раскрыть "от себя = кистью от предплечья" - положительный или "к себе = из пальцев к предплечью" - отрицательный). Для иллюстрации величины угла лучшим примером был японский веер, раскладывающийся на все 360 градусов. Удобство вееров, сложенных из тетрадных листков, в том, что на них ребята могли подписывать разноцветными карандашами элементы геометрической фигуры и приучались к стандартным обозначениям, не портя дорогостоящие домашние вещи.

Прогрессия.

Игра в геометрическую прогрессию похожа на "испорченный телефон" или "снежинку". Ведущий приглашает к себе одного первого игрока и предлагает ему вытянуть вперёд обе руки. Следующим шагом зовёт двух ребят и предлагает им встать так, чтобы руки первого игрока лежали на их правом плече, но никто не смотрел друг на друга. Эти двое тоже вытягивают руки вперёд, а ведущий приглашает столько новых игроков, сколько уместится правым плечом под пустыми руками. И так далее, пока все ученики класса не встанут в пирамиду. Так наглядно показывается геометрическая прогрессия с начальным значением "единица" и шагом "два". 

Геометрическая прогрессия от единицы с шагом два
Второй вариант, для начального значения "три" и шага "три". Первыми вызываются три игрока, которые встают спиной к аудитории. Сзади к каждому первому игроку подходят по три новых участника, которые кладут правую (или левую, но только одну и все одинаково) руку на спину предыдущего игрока. Игра заканчивается, если очередной ряд игроков не может быть полностью заполнен равнозначно. Такой вариант игры визуализирует не только геометрическую прогрессию, но и деление с остатком. Вместо касаний руками можно использовать передачу информации "на ушко". В любом случае, из соединений игроков можно сложить "снежинку", если взглянуть на них с потолка. А фотографии может сделать ведущий и использовать их позже для подсказок при обучении. 

Геометрическая прогрессия от трёх с шагом три

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

Игру в арифметическую прогрессию (или "лесенку", как я её называю) лучше осуществлять на кубиках и кукле (или вездеходе игрушечном). Одна парта (или стол, или все предметы убираются от окна до противоположной стены) придвигается к стене с картиной. На противоположный от стены край стола ставится один кубик или сразу пирамидка из двух-трёх, но не выше роста куклы. Каждая последующая пирамидка приставляется ступенчато с одинаковым увеличением. Игрокам необходимо построить ровную лесенку, по которой кукла заберётся от края стола к картине. В качестве стимула можно придумать историю, что эта кукла - вор картин в художественном музее, занимающаяся паркуром, но не обладающая способностями скалолаза по вертикальной стене. После того, как ученики воочию поработают с кубиками можно им дать задание на расчёт необходимого количества кубиков для достижения цели куклой. Это уже будет реальное дело, поясняющее применимость знаний не только в области арифметической прогрессии, но и рядов с их членами.

Арифметическая прогрессия или "лесенка"

Синусоида.

В старших классах некоторые девочки посещают курсы моделей, где их учат красиво ходить по подиуму. Предложите одной из таких учениц прийти на урок математики в гимнастическом трико (дабы не провоцировать мальчиков на подглядывание под юбку)  и яркой обуви с подсветкой. Либо прикрепите с боков следков фонарики, которые помогут отслеживать движения ступней. Разделите класс на три группы. Из парт составьте подиум от стенки до стенки учебной комнаты. Все три группы оснащаются чистым листом бумаги и писчим предметом двух цветов. Первая группа учеников располагается сбоку вдоль подиума. Вторая - в торце (начале или конце). Обе эти группы встают или садятся на стулья, пол так, чтобы уровень их глаз совпадал с плоскостью подиума. Третья группа взбирается на шкафы или оснащается дроном так, чтобы следить за моделью сверху. Модель ходит профессиональным шагом по подиуму, а каждая из команд точками должна отразить на листах бумаги траектории движения обеих её стоп двумя цветами. Изначально теоретически ученики предположат, что у них получатся две параллельные прямые, но в идеале у всех трёх команд будут по две параллельные, скрещенные, зеркальные синусоиды или параболы, как часть синусоиды, от движений правой и левой ступнями.

Траектории ходьбы


Такими незамысловатыми игровыми моментами легко можно переманить учеников на свою сторону счастья знаний.

воскресенье, 9 августа 2020 г.

DB IDE

26 апреля 2002 года на общем собрании Кольчугинского филиала компании "Real System for Corp." (RSC) было объявлено о самостоятельном направлении в развитии продукта "Table Magic", который начал своё существование ещё на базе отдела АСУП при заводе "Электрокабель" (ЭКЗ), а затем в 2000 году вместе с "родителем" исходники перекочевали в маленькую компанию разработчиков. В мае 2002 года на московской конференции продуктом, состоящим из "умного грида данных" и редактора хранимых подпрограмм, заинтересовался австрийский бизнесмен, поэтому в июле команду укрепили вторым программистом. Поскольку на тот момент мне приходилось тестировать смежный продукт этой же компании, то мои знания "Table Magic" сначала помогли "подчистить" презентацию и впоследствии привели на место тестировщика. Европейский аналитик порекомендовал множество идей, в том числе переименование в "DatabaseVoyager" (DV) и формирование американской компании "Conquest Software Solutions" (ConquestSS). К началу моей деятельности в августе 2003 года навигатор объектов насчитывал около полутора десятка типов объектов, которые и надо было мне тестировать. Каждый из объектов, добавляемый в список поддерживаемых, имел свой мастер по обработке и некоторые функции в отдельных модулях DV. Постоянно прибавляясь к 2017 году их накопилось более шести десятков. И только спустя пятнадцать лет у владельца продукта единожды возник вопрос о том, как проводится тестирование к тому времени уже давно переименованного продукта SQLDetective (SD).
Как вы понимаете, изначально никакого процесса тестирования в RSC не существовало, поэтому мне пришлось искать варианты самостоятельно. К тому же, руководитель проекта ставил программистов на несколько ступеней выше меня и не позволял вытягивать знания из них, а вместо этого отсылал все мои вопросы к самостоятельному изучению документации базы данных Oracle, собственно говоря для которой и создавался интерфейсный продукт, конкурирующий с TOAD от Quest Software. Итак, знания о новом объекте существенно отличались у программиста и тестировщика, а все задачи на разработку и тестирование были весьма краткие: "добавить поддержку объекта NN". В понимании программиста это зачастую ограничивалось созданием мастера объекта, поскольку он опирался лишь на статьи по его созданию (CREATE), редактированию (ALTER) и удалению (DROP). Но взгляд тестировщика на термин "поддержка объекта в продукте" более широк и рассматривает все операции (GRANT, REVOKE, ANALYZE, PURGE, ...) над объектом, доступные в базе данных. Эти мои обширные знания вынуждали формировать лишь на этапе тестирования, а не в процессе планирования, множество заданий на доработку.

Итак, первым шагом в тестировании нового поддерживаемого объекта было изучение документации. На это в моём плане по тестированию отводился целый день, поскольку в SD поддерживалось несколько версий базы. Сначала для последней версии базы распечатывались статьи по созданию (CREATE), редактированию (ALTER) и удалению (DROP) объекта. Затем тексты сравнивались с каждой предыдущей версией и в распечатке делались пометки о новшествах и утилизациях опций. Документация по объектам Oracle довольно хорошо структурирована, поэтому легко вычленялись необходимые статьи, в которых достаточно было сравнить лишь схемы DDL. Со временем в помощь разработчикам и тестировщикам в SD появился модуль "Oracle Documentation Browser", в котором можно было проиндексировать сразу все пять (на тот момент - 7.3, 8.0, 8.1, 9.0, 9.2, а позже к ним добавлялись 10.1, 10.2, 11.1, 11.2, 12) версий базы. Поиск в этом модуле позволил расширять тестирование статьями про иную (GRANT, REVOKE, ANALYZE, PURGE, ...) обработку объектов и связи, зависимости с другими объектами (точки восстановления с архивами, логи м/в и группы м/в, таблицы и их индексы, триггеры, констрейнты). Но некоторые (POLICY, MV GROUP, RESOURCE PLAN, ...) объекты БД Oracle регулируются не самостоятельными командами, а системными (DBMS_RLS, DBMS_REFRESH, DBMS_RESOURCE_MANAGER, ...) пакетами. Для их тестирования достаточно одной статьи, в которой пакетными процедурами и функциями описаны все действия над объектом, что немного упрощало дело. К концу первого дня у меня получался распечатанный план тестирования в разрезе версий БД и по операциям над объектом, по объёму которых можно было определить необходимое время на все последующие проверки. Так, на "большие" объекты (таблицы, шедулеры) минимально требовалось от пяти дней, а на самые "маленькие" (последовательности, операторы) - до двух дней.
Второй шаг - основное тестирование функциональности - проверяет корректность создания, редактирования и удаления объекта средствами нового интерфейса. Все эти операции в минимальном объёме выполняются на каждой из поддерживаемых версий БД. Следующим проходом по версиям базы тестируются различия схем DDL. И самое сложное, оставленное на закуску, заключается в детальной проверке всех опций DDL, которые в большинстве случаев достаточно посмотреть на последней версии базы.
На третьем шаге тестирования поддержки нового объекта в SD проверяется возможность выдачи и отъёма привилегий на объект через мастер привилегий, если таковые предусмотрены документацией Oracle. Здесь же рассматривается принадлежность объекта юзерской схеме или его системное положение. Не стоит забывать и про версионность базы данных.
Четвёртый шаг рассматривает взаимосвязи объектов через их мастера и панели выгрузки DDL. Например, мастер триггера вызывается из мастера таблицы, а индексный кластер можно создать в базе только после создания индекса. Тестирование SD расширяется модулями Schema Extractor, Compare DB и другими, где как-то фигурирует DDL нового объекта. Очень серьёзно здесь стоит приглядываться к различиям в версиях БД.
Заключительным пятым шагом проверяются всевозможные операции над новым объектом в различных утилитах SD. Например, релокацией партиций занимается "Storage Manager", перекомпиляция хранимой подпрограммы автоматически происходит при её открытии в "Stored Program Editor", для анализа вьювера существуют самостоятельные интерфейсы в рамках одного объекта или целой схемы. Как уже ранее говорилось, именно этот шаг даёт максимальный прирост задач программисту на доработку.

Тесты доступности, удобства, производительности и безопасности лучше проводить не самостоятельным шагом, а в рамках каждого из описанных. Набив руку на первом десятке объектов, у меня сформировалось устойчивое понимание, что только комплексное тестирование может сократить время на проверки, предусмотренные шагами со второго по пятый. К сожалению, владелец продукта никогда не жаловал процесс тестирования, поэтому ни при waterfall, ни при agile не был приверженцем декомпозиции задач и детального планирования, даже совмещая роль скрам-мастера. Менеджер продукта и первый программист откосили в своё время от армии, поэтому и не стремились к порядку, не умеют и до сих пор чётко следовать правилам и сдерживать данные обещания, как это принято у честных бизнесменов.  Очевидно поэтому вопрос РМ-а о вышеописанном стал чисто риторическим с его стороны, а ответ оформился в статью только спустя ровно семнадцать лет после оформления моего первого бага по SD, но уже не для команды ConquestSS, а для вас - простых тестировщиков.

суббота, 28 марта 2020 г.

УВД

Утилизацией вторсырья дома (УВД) весьма удобно начать заниматься в грядущую неделю изоляции. Обилие времени на домашние дела вполне способствуют приобретению и развитию полезных привычек. Показательным считаю пример немцев, которые давно уже разделяют мусор дома: моют тару стеклянную и пластиковую, пищевые остатки пакуют в бумагу, каждый тип отходов имеет свой разноокрашенный контейнер. За прошедший период с начала массового распространения вируса COVID-19 многие обзавелись хорошей привычкой чаще мыть руки или протирать их дезинфицирующими растворами. Так почему бы к этой полезной привычке не прибавить ещё одну, полезную не только дому, но и всей планете? Первый шаг по спасению окружающей среды - мытьё вторсырья (стеклянная и пластиковая тара) после использования и перед отправкой в переработку или выбрасыванием в мусорный контейнер. Но также можно сделать и второй шаг - складировать уже чистые ёмкости где-то дома, а через некоторое время обогатиться за счёт сдачи на переработку. Хорошо помню те времена, когда за десяток помытых бутылок от своего лимонада и папиного пива можно было купить большой стаканчик мороженого. А буквально пара недель, проведённые в германской семье, приучили меня ополаскивать лотки из-под кулинарных вкусняшек, возить в супермаркет ящики пустых бутылок для получения скидки на последующие покупки.
Да, сейчас у нас мало приёмных пунктов вторсырья, кроме металлолома. Но я очень надеюсь, что в недалёком будущем у меня будет возможность окупать высокие тарифы на утилизацию мусора такой неприхотливой привычкой, которая кому-то покажется скупидомством, но она же и приучает к экономии. На бытовом мусоре можно не только разбогатеть, но и развить творческие способности.
Пищевые отходы, составляющие весомую часть мусорного ведра, приносят пользу только тем, у кого есть скот или приусадебный участок. В офисах же максимально что собирают - это испитая кофейная гуща, которая по мере высыхания служит ароматизатором на общей кухне, а в последствии удобрением для цветов или скрабом в бане. Вполне понимаю, что в сельской местности возможности для содержания животных и участка побольше, чем в городской среде. Видимо по этой причине тариф с индивидуальщиков в селе меньше, чем с многоквартирных домов, а в городе тарифы весьма странно установлены обществом "Хартия". У частника всегда больше мест для складирования и утилизации: обязательно есть сарай для хранения того же металлолома или пластика до набора весомого количества; есть участок земли, всегда нуждающийся в подкормке микроэлементами, которых полно в пищевых очистках; осталась печь в доме или сложен камин, во дворе непременно пятачок с мангалом, где можно сжечь бумагу и деревянные остатки. Житель многоквартирного дома обделён всем этим, а значит объём отходов у него больше, чем с индивидуальщика. Почему же "Хартия" берёт с ИЖС больше? Не понятно. Нигде никаких результатов обследований не опубликовано, значит тарифы взяты наобум. Но моя статья - это не столько жалоба в ПотребНадзор, а сколько подсказки тем, кто устремлён в чистоту и благосостояние. Так что, если у вас нет возможности отдать недоеденное хрюшкам в загоне или утрамбовать ими компостную кучу, то приучайте себя складывать их в бумажные пакеты. Кстати, для этого нет необходимости приобретать такие пакеты, поскольку почтовые ящики всегда завалены бумагой, а искусство оригами давно предложило несколько вариантов складывания рекламных листков в столь полезные конвертики.
Газеты, журналы и прочую бумагу тоже не обязательно выбрасывать в мусорное ведро. Офисная бумага, растворённая в строительном клее ПВА, разбавленном водой один к трём, давно является мне заменителем шпатлёвки и жидких обоев. Либо может быть инструментом для изделий из папье-маше. Кстати, одна московская усадьба частично сделана не из камня, а из смеси бумаги и яичного белка. И эта конструкция вполне себе живёт уже несколько веков! Если же ваше семейство богато детьми, то непременно в дни изоляции займитесь плетением из бумажной лозы, сложенных полос или конфетных фантиков. Мелкая моторика замечательно разовьёт мозг как у ребёнка, так и не даст застояться старческому организму. Если же сплетённые или слепленные изделия покрыть лаком, то они прослужат очень долго и станут семейным раритетом. Обклеенные газетами или остатками обоев коробки из-под обуви могут составить вместимый и оригинальный шкаф для хранения мелочёвки (канцелярия, нижнее бельё, посуда, коллекции, инструменты и так далее). А кармашки на коробки для сменяемых подписей можно сделать из пластиковых прозрачных пакетов или бутылок. Салфетки-ромашки и жалюзи из фантиков непременно порадуют детишек в процессе изготовления и будут поднимать им аппетит впоследствии. Из журнальных страниц получается очень крепкий складывающийся ящик под бутылки, для которого всегда найдётся место в багажнике, так как пустой или наполовину заполненный он всего лишь равен объёму журнала.
Бутылки пластиковые, стеклянные и металлические - первейший и обильный материал для переработки. Но их обязательно надо ополоснуть после использования. Привейте себе эту полезную привычку во время самоизоляции. О том, сколько всего полезного можно соорудить в домашних условиях из пластиковых бутылок, писать не буду. Дам лишь совет тем, кто надеется сдать пластик в пункт сбора попозже. Отрежьте донышко и горловину, разрежьте трубу вдоль и тогда эти цилиндры, уложенные друг в дружку, займут намного меньше места. А отрезанные мелочи складировать можно в вышеописанных коробках. Либо покрошить пластик в жестяные банки, расплавить его и полученными пластиково-жестяными кирпичиками выложить дорожку в саду. Из металлических банок, не сданных на металлолом, можно выложить дорожку по-весне простым втаптыванием в размягчённую после снега почву. Из стеклянных бутылок, не сданных в посудо-приёмный пункт, можно строить стенки грядок или даже целого сарая. А вообще, я мечтаю о тех временах, когда какой-нибудь химик начнёт массово производить тротуары или шоссе из пластика и стекла.
Целофановые и прочие пластиковые пакеты в советские времена стирались, сушились на кафельной стене и далее ещё много раз переиспользовались. Но когда они окончательно рвались и изнашивались их всё-равно не выбрасывали, потому что рачительные хозяйки резали из них нити (полосы) и сплетали в хозяйственные сетки. Также поступали и с капроновыми колготками, а из детских хлопчатобумажных вязали коврики. Так почему бы не продолжить такую полезную традицию: сполоснуть пакет после испития молока, подсушить и порезать на ленты, далее крючком или макраме-узлами создать множество полезностей: мешок для белья или обуви, кашпо под цветок, хозяйственную сетку или ящик, подошву для тапочек и всякие иные штучки.
Одежда и обувь после своего прямого назначения может быть сырьём для творчества: кожаные сумки, холщовые ковры, детские игрушки, бижутерия, комнатный декор. А какую удобную (прочная, лёгкая, в свёрнутом виде - теннисный мячик) сумку для продуктов можно сшить из зонтика! Не ограничивайтесь половыми тряпками и чучелом в огороде, фантазируйте и реализовывайте свои творческие способности. И тогда дом ваш станет уютнее от самодельных штучек, цена которых возрастёт для вас в дни самоизоляции.
Все идеи, высказанные выше, легко реализуемы в домашних условиях и для начала ничего не придётся докупать - из любого мусора можно соорудить шедевр искусства или просто мелкую полезняшку, поэтому смело приступайте прямо сегодня.

вторник, 3 декабря 2019 г.

Глобалы

Глобальными модулями в группе разработки продуктов компании ConquestSS называются такие компоненты трёх смежных приложений, код которых равнозначно применим в каждой программе. Например, самостоятельная библиотека OSD.DLL с полноценным интерфейсом и функционалом, интерфейсное окно ABOUT с информацией о продукте, текстовый парсер для сбора данных анализатора кода. Соответственно задачи, которые касаются только таких модулей, а не их внедрения в продукт, называются "глобалами". Для удобства фильтрации такие задачи объединены были в отдельный "продукт в BTS".
SQLDetective, ClearSQL, ClearDB - интерфейсные продукты, написанные в основном на Delphi. Но поскольку была внедрена система LFT, то многие стандартные элементы не могли удовлетворить требования, выработанные этой командой. Поэтому программисты ConquestSS вынуждены были дописывать или переделывать интерфейсные компоненты. Например, для выставления своих фонтов и отступов в ckeck-box, radio-button, list-view, плавное расцвечивание в progress-bar и многое другое. Переработка компонента оформлялась как глобал, а его внедрение в определённый продукт - задачей на конкретное приложение и его модуль. Но в большинстве своём задачи по внедрению в конкретный продукт игнорировались, не оформлялись, подразумевая процесс внедрения в рамках одной задачи-глобала.
Со временем появилась необходимость вести версионность некоторых глобальных модулей. До сих пор сохранилось отображение версии только для анализатора кода. Её номер вы можете увидеть в комментариях к отформатированному коду. Парсер кода - часто меняющийся в последнее время модуль, поскольку обязан поддерживать все новшества базы данных Oracle. Поэтому все три продукта вполне могут выпускаться регулярно, обновляя лишь один глобальный модуль - анализатор кода. А вот версионность другого глобала - OSD.DLL - помогла лишь однажды, когда он кардинально был переработан для работы отладчика. Но, к сожалению, не все старые версии смогли на лету сработаться с библиотекой, поэтому простое копирование файла в рабочую папку приложения не спасало положение, и для полноценной отладки приходилось пересобирать весь продукт с изменённой библиотекой. Не так давно OSD переместили в core продуктов и его версионность отжила свою надобность. У всех остальных модулей-глобалов вообще не велась версионность, достаточно было версий основных продуктов, в которые внедрялись эти глобалы. А при закрытии задач в BTS эти их внутренние версии вообще никогда не имели смысла.
Исходники продуктов, как и положено, хранятся в системе контроля версий (VCS), каждый в своей ветке. Для глобальных модулей была выделена самостоятельная ветка. При этом сборка каждого продукта, автоматизированная со временем, выбирала файлы не только из своей продуктовой ветки, но и мониторила обновления по дате редактирования ветку глобалов. Когда dev-ops реализовал полезняшку (подкинутую мной идею о добавлении комментариев в задачи Jira с номером билда, в который вошёл фикс), то это значительно упростило работу тестировщика, часто сомневавшегося "стоит ли начинать тест? перебилден ли продукт с требуемой версией глобала?". VCS Perforce связана с Jira через FishEye, а сборщик билдов написан на Python, поэтому кроме нотификаций в Slack о готовом билде, dev-ops легко реализовывал и многие другие важные для команды разработки напоминания и уведомления. Да, пока сборка велась в ручном режиме слишком силён был человеческий фактор и часто забывали включить в билд нужную версию глобала, либо ошибались с датами фиксов и накладывали старые баги на новый функционал. И тогда мы получали весьма жуткие временные баги от корявой сборки.
Конечно, такой вынос одинакового кода и интерфейса в отдельную папку VCS был весьма удобен программистам. Ведь у них значительно поубавилось работы. Код не приходилось триплить во все продукты, а лишь сделать одну правку. Но, к сожалению, не всегда задачи в BTS оформлялись на каждый конкретный продукт. Поэтому тестировщику приходилось в каждом из трёх продуктов проводить одни и теже тесты, да ещё удваивать (а то и утраивать) их из-за необходимости поддерживать несколько версий продукта (опубликованный, предыдущий опубликованный, разрабатываемый по спец.заказу или общий будущий). Программист комментировал свои фиксы только в VCS, по которым собирались внутренние Release Notes, то есть единожды. А тестировщик обязан был отметить фиксы в каждом продукте и его версиях. Поэтому пришлось в самописной BTS создать дополнительную таблицу (child для основной таблицы задач)  для таких отметок. Самописную BTS вполне удавалось заполнять в SmartDataset гриде своего же продукта SQLDetective, поскольку в основном это были обычные таблицы с набором справочников. Но для отметок глобалов в SD не сгодилась даже утилита DataDependencyAnalyzer. И после недолгих упрашиваний dev-ops смастерил мне формочку на пару гридов (parent - all_bugs, child - global_checks) со справочником версий продуктов. Да, такой дополнительный список усложнял сбор Release Notes для пользователей, поскольку РМ раньше фильтровал только общую таблицу задач, а теперь ему приходилось частенько припоминать о глобалах.
Когда же самописную BTS сменили на Jira, то систему глобалов не упразднили. Самостоятельный продукт Global Modules (GM) так и продолжил своё существование, но его ни минули пара революций. Команда разработки росла и новым тестировщикам тяжко было как понять систему глобалов, так и поддерживать её в актуальном состоянии. Некоторые модули имели реализацию только в определённых продуктах. Например, CRUD2 матрица или браузерный отчёт анализатора (CS Project Report, CDB Docu), которые формируются сразу для нескольких объектов базы, а потому не приемлемы для единичных объектов в SD. Участились отвлекания старожилов на разъяснения, поскольку даже пояснения к модулям, которое возможно заполнить в справочниках Jira, не отображается для выбираемых компонентов в процессе оформления задачи. Так что моя одноразовая акция по проставлению в комментариях каждого компонента продукта GM списка поддерживаемых продуктов не сильно помогла. Пришлось проводить проверку каждой новой задачи GM на применимость в продуктах и дописывать в Description важные примечания для разработчиков и тестировщиков, если фикс не должен был быть в каком-то из продуктов или его реализация имела продуктовые особенности. Тех.писательница, собиравшая Release Notes, тоже постоянно забывала упомянуть об изменениях за счёт глобалов, либо добавляла лишние пункты, не применимые в продукте, либо текст по опечатке содержал упоминание соседнего продукта. В продукте GM приходилось админу Jira дублировать версии конкретных продуктов после каждой сборки. Тогда ещё не был полноценно дописан авто-билдер, поэтому добавление производилось вручную после публикации, а поскольку не редки были случаи забывчивости, то чек-лист публикации пришлось пополнить отдельным пунктом для админа Jira. Даже РМ, собиравший бэклог публикации в Jira Structure, не всегда вспоминал, что стоит добавить и уже закрытую по другим продуктам GM-задачу, но ещё не внедрённую по текущему спринту. Эти неудобства послужили аргументом к прекращению поддержки GM. Несколько месяцев трёх тестировщиков было потрачено на перенесение имевшихся GM-задач в конкретные продукты. Спасибо, в Jira есть фичи клонирования и переноса задач из одного продукта в соседний, поэтому имевшиеся задачи разносились более менее быстро. А вот новые иногда забывались клонироваться. По окончании этой работы взвыли программисты, которые забывали открыть в Jira слинкованные одноимённые задачи, сменить им статус и отметить затраченное время, забывали в VCS упомянуть авто-фиксы по всем продуктам. Но те проггеры, которые не забывали про лишние телодвижения, были рады резкому скачку их производительности, ведь она утроилась по времени и количеству задач! Итак, тестировщики обрадовались конкретике, тех.писательница успокоилась при сборе Release Notes из-за уменьшения фильтра, но РМ в большей степени прислушивался к мнению программистов, которые ленились отмечать свою работу в клонированных задачах. Из-за этого РМ вопреки мнению большинства своим "царским указом" возобновил поддержку в Jira глобалов. Да притом изменил путь статусов на жёсткую схему, и один статус TESTING был разбит на несколько (сначала три, а потом и четыре) по количеству разрабатываемых продуктов TESTING_Prod1, TESTING_Prod2, TESTING_Prod3, TESTING_Prod4. Статусы можно было сменить только в обозначенном порядке, что очень осложнило работу тестировщикам, которые были закреплены за конкретными продуктами. Но РМ на это неудобство ответил распоряжением самоуправца и закрепил глобалы за одним тестировщиком из числа новичков. Юный тестировщик не возражал, так как не знал, что столкнётся с более сложной проблемой. На тот момент продукт ежедневно собирался при наличии фиксов в своей ветке, а поскольку какие-то из продуктов были "заморожены", то тестировщик не мог закрыть проверенную в продуктах 1 и 4 задачу, не имевшую реализации в продуктах 2 и 3 ввиду отсутствия нужного билда. Dev-ops-у пришлось опять менять авто-билдер, чтобы даже временно отложенные продукты всё равно ежедневно собирались, но лишь для тестирования. И РМ-у было наплевать на то, что некоторым задачам абсолютно не нужно было проходить хоть какую-то проверку в определённых продуктах, то есть авто-билдер гонялся впустую, тестировщик безрезультатно искал исполнения в пустом продукте, а тех.писательница опять стала ошибочно вносить "чужие" фиксы в Release Notes.
Из обеих революций для большинства членов команды разработки был вынесен единый вывод: "Глобалы - это зло!", но поскольку мнение ленивых и приближённых к РМпрограммистов перевешивало демократизм, то о каком бы-то ни было компромиссе мечтать не стоит. Кое-как соглашусь, что в VCS глобалы есть смысл сопровождать в собственной ветке, но и здесь не мало проблем с внутренней и общей версионностью. А в BTS никак не стоит объединять глобалы, поскольку они первые в числе забываемых. Если у вас Jira, то клонирование и перенос задач между продуктами легко снимут с вас проблемы актуализации багов и фич. Кабы в нашей старой самописной BTS была фича клонирования багов и разработок в другие продукты (SmartDataset в SD может дублировать строки только в одной таблице, а значит не давал полноценного клонирования по справочникам, да и не видно было потом линкованного исходника для клонов), то моя идея глобальных модулей ограничилась бы только VCS и в BTS не отразилась.