понедельник, 27 мая 2019 г.

То о CS 8.1.1.258

Отчёт о тестировании ClearSQL 8.1.1.258 (далее - CS), выпущенном 23 мая 2019 года, построен на основе Release Notes. Предыдущий фикс-билд текущей версии был недавно, поэтому в сегодняшних тестах обратим внимание на исправления, важные для конечного пользователя и внесённые программистами для показа своей значимости. Для того, чтобы инвестор проекта не переставал платить разработчикам, они идут на такие хитрости, при которых их "костыли" регулярно надламываются.

IMPROVEMENTS 1.6+0+0+2+0.8-1+0.7=4.1 из 3+1+2+2+1+1+1=11 возможных, -0.5 за недоделку
Code Analyzer Options 0.5+0.3+0.8=1.6 из 3 возможных
Updated the options on the Diagram Options page.
Обновлены опции на странице диаграммных настроек.
Поскольку в описании нет абсолютно никакой конкретики, то сделаем скриншот из предыдущего билда и сравним с текущим. Но поскольку речь идёт об опциях, то скриншот надо сделать с показом полных списков. Напоминаю, захватить текущее активное окно в буфер обмена можно через комбинацию "Alt+PrtSc", но при этом не поймаете ни хинты, ни значения развёрнутых комбобоксов. Поэтому более экономно и эффективно использовать видеозапись бесплатного UVScreen, который в режиме редактирования доступен покадрово. Второе моё примечание касается чит-листа опций, который напоминает о важности функциональных тестов при малейших внешних изменениях настроек. В данном случае программист вместо того, чтобы полнофункционально применить возможности опций, удалил с глаз то, что ему не захотелось реализовывать, тем самым лишив юзера выбора начертания и кодирования. Для тестирования функционала ограниченных по новому опций вам придётся переанализировать любой скрипт с генерацией диаграмм при выключенной галке "Options / Preferences / Project Analysis / Keep diagram/matrix local settings". За анти-улучшение балл дать никак не могу.
Renamed the option “Around an IF statement” to “Around IF, CASE statements”.
Переименована опция "Вокруг IF выражения" в "Вокруг IF, CASE выражений".
Тех.писательница поленилась уточнить, что переименованная опция расположена на странице "Options / Code Analyzer Options / Formatter Options / General Layout / Linefeeds". А программист поленился разделить опцию по выражениям. Если он считает, что так он подчеркнул логику, то не понятным остаётся оставшиеся не объединёнными, например, блоки и тела или всё из области объявления. Хочу этим сказать, что программист вместо ввода нового параметра, отвечающего за отдельный функционал, повесил его реализацию на существующий, упростив себе работу, но усложнив использование юзером. Глубоко сомневаюсь, что кто-либо из пользователей равнозначно относится к указанным выражениям IF и CASE. Никак не могу считать это изменение наименования улучшением, поэтому даю лишь 0.3 балла.
These options are now enabled by default:
a. Position THEN on the same line.
b. CASE expression…
c. CASE statement…

Три опции "Позиция THEN на той же строке", "CASE выражение" и "CASE команда" теперь включены по-умолчанию.
Опять тех.писательница поленилась уточнить расположение и полное наименование опций, поэтому подсказываю, что их искать надо на странице "Options / Code Analyzer Options / Formatter Options / General Layout / Indenting". Не стоит беспокоиться тем, кто пользуется файлом настроек с якобы дефолтным именем. Автоматически значения опций не переключатся в дефолт, а только после исполнения "Reset / All" или "Reset / Current Page". Из-за недосказанности пункт не приносит билду полный балл.
Code Analyzer 0 из 1 возможного
Improved the look&feel of the code analysis results for overload procedures.
Улучшен внешний вид результатов анализа кода процедур переполнения.
Напомню, что программы переполнения имеют одинаковые имена, но разный набор параметров входящих или исходящих. Поскольку в результатах анализа кода участвуют имена подпрограмм и их позиции в основном коде, то уточнения по их параметрам весьма существенно облегчает понимание. К сожалению, тех.писательница опять не уточнила, в каком именно месте и каким образом сделано улучшение. Дело в том, что как минимум метрики кода давно уже переделывались несколько раз для более логичной поддержки процедур переполнения. А что именно доправлено в этом билде - не известно и займёт слишком много времени, так как закладок с результатами анализатора уже более десятка, на каждой из которых свой вариант интерфейса. Стандарт для отображения процедур переполнения в ConquestSS так и не выработан, а чужие идеи применять они брезгуют. Так что, подождите, пока их CEO придумает очередной "цвет детской неожиданности" и заставит его повсеместно применять, как это было с ClearDB Docu. А пока бессмысленно тратить время тестировщика на поиски пустоты. Балл за приписки давать не могу.
Search Tool 0+0=0 из 2 возможных
Added the ability to search for text occurrences in the code review rationales.
Добавлена возможность поиска текстовых вхождений по пояснениям к правилам кодирования.
Это новшество весьма двояко можно понять. Либо в тех редакторах, которые отображают пояснения к правилам кодирования появился поиск по тексту, либо поиск по проекту расширен результатами анализа. Поскольку в заголовке группы RNs нет примечания о конкретизации интерфейса, то считаю, что общая система поиска подверглась изменению. Пояснения к правилам кодирования доступны в трёх логически разделённых местах: настройки, результаты анализа в интерфейсе, результаты анализа в отчёте или экспортированных данных. Не знаю как у вас, но у меня не получилось найти хоть что-либо из пояснений к правилам кодирования ни в одном из трёх вариантов. Поэтому новшество считаю полной фикцией.
Added the ability to open the search tool by pressing Ctrl+F.
Добавлена возможность открыть утилиту поиска по стандартной горячей клавише.
В таком голом виде новшество выглядит как исправленный интерфейсный или юзабилити-баг. Нет никаких уточнений, где именно не хватало этой реализации. В CS существует несколько вариаций поиска, в том числе стандартный поиск по тексту, рукописный поиск по дереву проекта, а теперь, возможно, дописан ещё какой-нибудь поиск, например, по результатам анализа. Но тестировщик не обязан фантазировать, а лишь проверять факты, которые, к сожалению, не описаны. На построение и проверку гипотез мне жалко тратить время в рамках фикс-билда, поэтому пункт RNs отправляю в число приписок и не даю ни балла. Надеюсь, это приучит тех.писательницу уважать своих пользователей и она станет писать правду, а не придумывать сказки.
Export Diagrams 1+1=2 из 2 возможных
Added the ability to define prefixes and suffixes for exported diagrams.
Добавлена возможность определять префиксы и суффиксы экспортируемым диаграммам.
Пару лет назад ровно это моё предложение руководство продукта назвало бредовым, а вот сейчас почему-то его реализовали. Скорее всего кто-то из пользователей, как и я тогда, замучался искать среди обилия экспортированных файлов нужные. А поскольку в ConquestSS не любят работать на опережение, их финансисты не нацелены на производственную тактическую прибыль, а лишь на разбрасывание личных денег на собственные удовольствия. Тем не менее, реализация когда-то бредового предложения приносит балл, даже не смотря на то, что хелп этого окна не привязан.
Export settings for diagrams and Pseudocode and sample filenames are now shown in the status bar.
Установки экспортируемых диаграмм и псевдокода, примеры имён файлов теперь показаны на статусной строке.
Блок RNs назван по мастеру диаграмм, но юзер CS не знает, что фактически мастера экспорта являются единым интерфейсом. Помимо этого примечания стоит напомнить, что тогда же, пару лет назад мастера экспорта претерпели интерфейсные изменения так, что множество опций было разделено по отдельным закладкам и, естественно, большинство из них перестало быть видимыми. Тогда же и была моя просьба юзера как-нибудь упростить восприятие, но в параллель предыдущему пункту программисты действовали только в плане облегчения кодируемой части программы, а никак не в помощь пользователю. Вот теперь всё-равно исправляют свои огрехи архитектуры. Принцип костыливания в действии.
Diagrams (Flowcharts, Call Trees, CRUD Matrices) 0.8 из 1 возможного
The header and legend are now disabled by default.
Заголовки и легенды теперь выключены по-умолчанию.
К сожалению, тех.писательница не уточнила, где эти опции хранятся и настраиваются, поэтому сделаю её работу, напомнив, что опции могут быть глобальными и локальными. Исходное состояние они могут обрести только через интерфейс страниц в "Options / Code Analyzer Options". Но даже если юзер вернётся к значениям по-умолчанию, то нет никакой гарантии, что опция "Options / Preferences / Project Analysis / Keep diagram/matrix local settings" тоже выключена, потому что только в этом случае перегенерация диаграмм выполнится по видимым условиям. Более десятка лет назад, когда CEO старался впихнуть в интерфейс всё, что ему попадалось. В конце концов интерфейс перестал вмещать полезную информацию, а зачастую по несколько раз просто дублировал. Замечая эту избыточность мне приходилось потихоньку оформлять предложения "в стол", поскольку CEO очень сердился на мои замечания о его собственной недальновидности, а наоборот пытался всеми правдами и неправдами разрисовать якобы пользу сумасбродных вливаний. Ну, вот и настало время, когда либо он сам, либо адекватный пользователь наконец-то увидели всю неэргономичность интерфейса от дилетанта. Полный балл не даю из-за недоработки тех.писательницы, из-за чего пользователь может быть введён в заблуждение.
Link Manager -1 из 1 возможного
Wrapped objects are now ignored on refreshing a project.
Обёрнутые объекты теперь игнорируются при обновлении проекта.
Скорее всего тех.писательница неверно назвала блок RNs, потому что обновлением проекта, вернее его синхронизацией с линкованными объектами, занимается не столько мастер линковки, сколько внутренний механизм синхронизации, доступный в ручном режиме из дерева проекта и в авто-режиме через менеджер заданий и расписаний. Синхронизация - это двусторонний процесс, когда код объекта может измениться не только в проекте CS, но и в базе. Обёрнутые объекты не представляют ценности для анализатора кода CS, поэтому их давно игнорируют при создании проекта, а вот теперь учитывают и при синхронизации. Странным остаётся только тот факт, что объекты и скрипты Oracle Forms до сих пор не имеющие возможности компиляции обратно в базу напрямик из CS не включены в игнорирование синхронизатора. Но это не столь критично в рамках описанного новшества, как отсутствие примечания в хелпе и какого-нибудь интуитивно понятного интерфейса. Для проверки новшества возьмите файл обёрнутой функции из демо-проекта и слинкуйте его со своим новым скриптом. Отредактируйте скрипт и выполните синхронизацию. К сожалению, новшество абсолютно не работает и синхронизация пройдёт без какого-либо игнорирования обёрнутого объекта в обоих направлениях. Из чего делаю вывод, что пункт RNs - откровенная ложь, за которую не только не даю ни балла, но и сниму за грубое враньё: пользователь надеется на автоматическую фильтрацию, но продукт никак не реагирует. Installer/Updater 0.7 из 1 возможного, -0.5 за давнюю недоделку
On installing a new product version, the application now checks the presences of both 64- and 32-bit versions and deletes their data before the new installation.
При инсталляции новой версии продукта приложение теперь проверяет наличие обеих версий битности и удаляет их данные перед новой установкой.
Спешу успокоить, что тех.писательница недопечатала точного поведения, и никакие предыдущие установки у вас не исчезнут без вашего на то согласия. Обновлённый интерфейс всего лишь предлагает избавиться от прежних версий, но даже не помечает их по-умолчанию к удалению. Это новшество выглядит ещё более странным и ненужным, если заглянуть в "Help / System Information" и не обнаружить там полного списка установленных версий. Дело в том, что в CS всех версий защиты правила об одновременном запуске не более двух экземпляров и использование файлов настроек из единого места, а проект и того хуже можно открыть лишь в одном экземпляре CS. Поэтому считаю информацию в главном меню приложения более полезной, нежели во внешнем инсталляторе. Поскольку мне известно, что в ConquestSS нет ни автотестов, ни даже тестировщиков, то всегда скачиваю инсталляторы обоих типов разрядности. Слишком велика вероятность того, что какой-то фикс не войдёт в одну из них. Текущее исправление имеется в обеих версиях и для этого не обязательно проходить весь путь инсталлятора. А вот вариант того, что апдейтер до сих пор не проверяет и не удаляет предыдущие версии, считается многолетней недоделкой. И это повод снять баллы.

BUGS FIXED 0+0.5+0+0+0.5+0.5+0+0.8+0+1+0+0+0=3.3 из 4+2+1+1+1+2+2+1+1+1+1+1+1=19 возможных, -1 за баги
Code Analyzer 0+0+0+0=0 из 4 возможных
Fixed indexation of overload subroutines.
Зафиксирована индексация подпрограмм переполнения.
Как уже говорилось выше, улучшение о подпрограммах переполнения уже отмечено в RNs. Поэтому данный пункт меню не может быть засчитан, как фикс бага.
A naming rule violation is now triggered for sequences in PL/SQL.
Правило имён теперь срабатывает для последовательностей в процедурном языке.
Возможно для кого-то это открытие, но CS вообще работает только с процедурным языком (PL/SQL) и командами управления данными (DML). А правила наименования объектов в первую очередь проверяются в процедурных структурах. Поэтому фикс вполне можно на первый взгляд считать грубейшей недоделкой, коей она не является на самом деле. Правило наименования последовательностей изначально проверяется. Так что, этот пункт RNs является элементарнейшей припиской и не приносит билду ни балла.
A naming rule violation is now triggered for sequences on changing the NEXTVAL/CURRVAL keywords case.
Правило имён теперь проявляется для последовательностей при изменении регистра служебных слов текущей/следующей величины.
Имена последовательностей различаются в коде по префиксу - служебному слову о члене последовательности. Анализатор кода в CS не обрабатывает DDL последовательностей. Настройки всех правил наименования объектов имеют регистрозависимость. Из всего вышеописанного получается двоякость смысла бага: либо для имён последовательностей не учитывалась настройка регистрозависимости, либо правило имени последовательности почему-то зависело от регистра её служебных слов. Поскольку служебные слова имеют настройку регистра в двух местах, то количество тестов равно 2*3*3=18 (два типа регистра в "Options / Code Analyzer Options / Code Review Options / Naming Rules / Sequence Name", по три в "Options / Code Analyzer Options / Formatter Options / Case / Keywords" и "Options / Preferences / Main Window / Editor / Color / Text-typing conversion"), поскольку анализ кода можно сделать как с форматированием, так и без него. К сожалению, ни один из моих тестов не показал разницы, из чего заключаю, что фикса нет. А значит и балла нет.
Analyzing objects imported from an Oracle Database 18c no longer raises parser issues.
Анализируемые объекты, импортированные из базы версии 18, больше не дают ошибок парсера.
Вполне возможно, что какой-то новый синтаксис хранимых подпрограмм до сих пор не был учтён парсером CS. Но об этой конкретике не сказано ни слова в RNs, поэтому более вероятно, что в текущем билде стала учитываться лишь часть изменений, а не все полностью. Иначе бы это числилось в списке новшеств. Какую конкретно мелочь исправили здесь - знает только программист. Поэтому билд остаётся без балла.
Core 0+0.5=0.5 из 2 возможных, -0.5-0.5=-1 за баги
On updating the tool via Online Support Desk, the user is no longer prompted to delete program data and other application settings.
При апдейте утилиты через OSD юзеру больше не сообщается об удалении данных программы и других настроек приложения.
Безграмотно написанный текст RNs может серьёзно отпугнуть пользователя. Если речь идёт только об убирании предупреждения, а удаление данных производится в скрытом режиме, то это серьёзный повод для иска в суд. Если же апдейтер перестал удалять настройки юзера, то стоило именно это и написать. Апдейтеры прошлого и текущего билдов так и не могут импортировать файл "CSS_install.dll", что тормозит обновление. А про список для удаления ничего не знал прошлый билд и ничего не изменилось в текущем. За приписку RNs баллов не даю, а за неисправленный баг снимаю -0.5 балла.
If there is a newer license key detected in the application folder, but the user rejects applying it, the application still starts with the existing license key or switches to the trial mode.
Если новый лицензионный ключ обнаружен в папке приложения, но пользователь его не принял, то приложение стартует с существующим ключом лицензии или переключится в триальный режим.
Текст RNs нелогичен как с точки зрения рядового пользователя, так и знатока архитектуры приложения. Уже много лет механизм применения обновлённых ключей автоматизирован, чтобы у пользователя не было повода испортить самому себе лицензию. При старте приложения в трёх папках (рабочая продукта, юзерская с ключами, юзерская с апдейтами) проводится ревизия всех файлов лицензий и автоматически применяется самый последний. Пользователю же только сообщается факт замены без предложения отказа. В любом случае юзер может вернуть предыдущий ключ вручную. Учтите, что автозамена ключа сработает, только если включена опция "Options / Preferences / License Key / Automatically". Также стоит напомнить, что после перевыбора ключа, вне зависимости вручную или автоматически, самопроизвольно изменятся настройки обновления OSD сообщений и апдейтов на ежедневный старт. По факту же правки могу сказать, что на самом деле CS перестал переходить в режим триала, если не принят новый ключ. А вот сообщение об обнаруженном новом ключе всё ещё нуждается в коррекции, так как не конкретизирует имя папки, в которой нашёлся новый экземпляр. Поэтому фикс получает лишь 0.5 балла и теряет ещё столько же за выявленную проблему.
Code Editor 0 из 1 возможного
Identifiers are now correctly selected on a double-click.
Идентификаторы теперь корректно выбираются по двойному клику.
Безграмотная отписка в RNs приводит к снижению стоимости билда. Во-первых, использован термин correctly без отсылки к правилу. Во-вторых, вместо термина select стоило использовать highlight, поскольку это существенно для интерфейсного продукта (часть строки только подсвечивается для последующих с ней действий, а не выбирается, например, сразу в буфер). В-третьих, исправлен скорее всего какой-то особый случай с именем идентификатора, который либо состоит из уникальных символов, либо обрамлён не просто пробелами. Ничего этого не было упомянуто тех.писательницей. Поэтому баг невозможно увидеть в прошлом билде, а значит и нет повода прибавлять баллы в текущем.
Code Formatting 0 из 1 возможного
Settings defined at “Preferences > Editor” for keywords are now applied to a word if there is a space before or after the word.
Установки для служебных слов, настроенные в Preferences, теперь применяются к словам, если они обрамлены пустым пространством.
Скорее всего тех.писательница недопечатала, что имелись ввиду только настройки цветовой подсветки служебных слов Keywords, определяемые для них на странице "Options / Preferences / Main Window / Editor / Color". Эти настройки применяются на момент печатания символов в окне редактора. Прошу не путать с установками форматирования текста из "Options / Code Analyzer Options / Formatter Options / Case / Keywords", которые применяются к тому же самому тексту, но только в момент форматирования кода во время его анализа. То есть, пока вы печатаете текст, служебное слово может автоматически сменить регистр сразу после проставления пробела, а после анализа скрипта это же слово может ещё раз сменить своё начертание. Об этом перекрещивании настроек говорилось много раз, но разработчики ConquestSS жутко консервативны и ни за что не желают включать мозги, встать на сторону юзера и сделать хоть шаг навстречу пользователю для упрощения понимания. Поскольку описанный баг не обнаружен в прошлом билде, то фикс засчитать я не в праве.
New Project / Import Scripts 0.5 из 1 возможного
Objects imported from the SYS schema of an Oracle Database 18c are no longer duplicated in the project.
Импортированные из системной схемы объекты версии 18 больше не дублируются в проекте.
За неимением указанной версии базы не могу утверждать, что источник проблемы крылся в структуре базы новой версии. Мне логичнее предположить, что после добавления в поддержку продуктом новой версии программист ConquestSS, как это обычно с ним бывает, скопипастил без последующей правки собственный код. За исправление прибавлю баллы авансом.
SQL*Plus 0.5+0=0.5 из 2 возможных
On script compilation, SQL*Plus now uses the Oracle home from the Last Connections list instead of the default home.
При компиляции скрипта SQL*Plus теперь использует дом базы из списка последних коннектов вместо дефолтного.
Для воспроизведения проблемы вам понадобятся как минимум три клиента Oracle разных версий. Один будет дефолтным, то есть путь к нему должен быть на первом месте в переменной окружения Path. Путь ко второму пропишите в "Options / Preferences / SQL*Plus / Application Run" и "Options / Preferences / SQL*Plus / Start Command File". А третьего клиента используйте, подключившись к базе через "DB Connection / Connect..". В проекте CS сделайте безобидный скрипт, например, выборку из системного вьювера, и запустите его выполнение через внешний SQL*Plus, запуская его из CS - по кнопке или из контекстного меню редактора скрипта. В этом случае вы легко определите неполноценность исправления.
Compiling a script with Unicode no longer breaks it.
Компиляция скрипта с юникодом больше не прерывается.
Юникодным может быть как имя скрипта, так и содержимое. Тех.писательница не уточнила, на каком конкретно этапе CS контролирует юникодность, поэтому бессмысленно что-либо проверять. А выявленные вами недоделки в ConquestSS припишут к своим заслугам в следующем билде. Не буду портить им статистику и снимать балл за каждый недогляд.
CRUD Matrices 0+0=0 из 2 возможных
Unicode symbols are now shown correctly in CRUD matrices.
Юникодные символы теперь показаны корректно в матрицах CRUD.
Несколько версий тому назад программисты ConquestSS уверяли, что CS повсеместно поддерживает юникод. А вот теперь говорится об отдельном месте, где "внедрили дважды поддержку"? Или же в прошлый раз нагло врали? Ещё одна ложь тех.писательницы - использование термина correctly без упоминания относительно каких правил он вставлен в текст. Так что, любые предположения об исправлении можете считать неуместными.
A floating window with the Call Tree diagrams now opens instantly on clicking a data object link.
Плавающее окно с диаграммами дерева вызова теперь открывается мгновенно по клику на линке объекта данных.
Текст RNs никак не может отвечать действительности, поскольку несколько билдов назад матрицы CRUD претерпели существенное изменение и клик по именам объектов предлагает контекстное меню для открытия диаграммы вызова или перехода на строку кода. Вместо такой пустой приписки программист сделал бы больше пользы, если бы убрал из интерфейса с результатами CRUD1 уже не используемое окно, где раньше отображали дерево вызовов.
Export Summary Tables 0.8 из 1 возможного
The error message that appears when no MS Excel is installed is no longer duplicated.
Сообщение об ошибке, которое появляется при отсутствии проинсталлированного MS Excel, больше не дублируется.
Этому мелкому багу очень много лет и весьма странно, почему очередное моё замечание, которое до этого называли никчемным, вдруг исправили. Разве что для массовости RNs. Для полной проверки фикса вам придётся не только иметь под рукой инсталлятор офисного продукта, но и выполнить экспорт результатов анализа из множества мест: все таблицы и графы закладки Summary, все таблицы с результатами анализа скрипта (как из мастера экспорта, так и по клику на специальных кнопках), все вариации таблиц при экспорте через выполнение задания. Единственное ограничение - тип экспорта только Excel. Если вам не жаль своего времени и вы выполните все перечисленные действия, то убедитесь, что за любым программистом нужен глаз да глаз, потому что они чаще всего пренебрегают тестами интеграции. За неполноценность описания и правки могу дать лишь 0.8 балла.
Project Report 0 из 1 возможного
The error message “Cannot create file ” is no longer handled by Eureka.
Сообщение об ошибке про невозможность создать файл больше не поддерживается логгером Eureka.
Внешний логгер необработанных исключений Eureka встроен во все приложения ConquestSS. Он перехватывает все проблемы приложения и локализует их с точностью до строки кода. Но если ошибка не предупреждена в коде продукта, то это означает, что программист не подумал о пользователе и не подсказал обходной путь либо шаги по выходу из затруднительного положения. В любом случае программист обязан был обработать случай так, чтобы сообщения об ошибке не было, а в нашем - скорее всего поставить ограничение по имени или размеру на создаваемый файл вместо тупого перевода внешнего окна с текстом ошибки во внутреннее. Такой перевод равнозначен ситуации, если бы воспитательница в детском саду пожаловалась на ребёнка, а родители вместо личного положительного примера поведения лишь высказали ребёнку негодование педагога слово в слово. К сожалению тех.писательница не пояснила причину ранее не обработанной ошибки, поэтому не знаю, что и порекомендовать для попытки её воспроизведения. А если нет возможности увидеть баг в прошлом, то и нет повода давать балл за фикс.
Search Tool 1 из 1 возможного
When searching in a huge project, found text occurrences now appear during the search process, not after the search is finished.
При поиске по большому проекту найденные текстовые вхождения появляются во время поискового процесса, а не по его окончании.
Для проверки фикса выполним поиск по демо-проекту в прошлом и текущем билдах. Если для поиска вбить слово select, то вполне достаточно той полусотни скриптов, что имеются в примере. Градусник процесса одинаково двигается в обоих билдах, но результаты поиска параллельно заполняются в новом билде, в отличие от прошлого, когда список найденных строк заполнялся только после полного окончания поиска.
Database Connection Options 0 из 1 возможного
A confirmation message no longer appears on closing the Connection Options window when no Microsoft Visual Studio Redistributable Package is selected.
Подтверждающее сообщение больше не появляется при закрытии окна опций коннекта, если ни один из пакетов MS Visual Studio не выбран.
Если вы хоть раз установили корректно CS, то пакет у вас будет установлен однозначно. И даже если будете как-то пытаться его удалить, то CS это не поймёт и всегда будет считать его в наличии и выбранным. Это я к тому, что описанный баг однозначно был выявлен не на стороне пользователя, а значит ему не место в RNs.
Online Support Desk 0 из 1 возможного
An empty message box no longer appears if the internet connection is lost during the application update. The “List index out of bounds (4)” error is not raised, too.
Пустое сообщение больше не появляется при потере интернет коннекта во время обновления приложения. Ошибка о превышении границы списка индекса больше не появляется тоже.
В прошлом билде у меня не получилось воспроизвести описанный баг, поэтому не могу заявить, что он исправлен в текущем билде. За пустоту пустые баллы.
GUI 0 из 1 возможного
Fixed the layout of the UI elements in the Link Manager and Code Analyzer Options when the DPI 125 is applied.
Зафиксирован внешний вид интерфейсных элементов в менеджере линков и опциях анализатора кода при 125% разрешении экрана.
К сожалению, тех.писательница нисколько не утруждала себя прописыванием подробностей. Какие конкретно страницы и их элементы стали более масштабированы выяснять долго и сложно, поэтому, сделав лишь сравнение первой попавшейся страницы, сообщаю вам о полном отсутствии каких-то правок. Окно опций хотя бы имеет возможность максимизации, в режиме которой только и доступны основные кнопки, а мастер линковки совершенно бесполезен в режиме 125% монитора на широких и невысоких экранах. За приписки в RNs баллы не даются.

Итого по билду: 4.1+3.3=7.4 из 11+19=30 возможных баллов дают 7.4/30=25% готовности, -0.5-1=-1.5 за баги. В общей своей картине билд попахивает каким-то налётом скуки и безысходности, потому что слишком много тем, давно мной им подкинутых, но отвергнутых разработчиками во времена моей активности, а теперь их реализация выглядит как попытка состроить глазки невинности шрековского кота. Пусть несколько лет спустя, но переделки сделаны именно так, как было мной предложено изначально. Так зачем же тогда, пару лет назад, они так рьяно отвергали мои идеи? Разве что, им было на тот момент завидно и стыдно от того, что эти простые мысли роились не в их головах. Ну, может хоть сейчас они поняли, что то, что просит (требует) тестировщик (в большинстве случаев женского пола), того хочет юзер (Бог для разработчика).

понедельник, 13 мая 2019 г.

Проект ТАПОК

Название ТАПОК - аббревиатура Творчески- (Театрально-) Активные Пенсионеры Обучают Культурно.
Предисловие.
- В экологически чистых городах в большинстве проживают пенсионеры, имеющие много свободного времени, но без возможности реализовывать регулярно свои творческие таланты.
- 2019 год в России объявлен Годом Театра.
- Всё чаще общество задумывается о воспитании подрастающего поколения, школа винит семью в невнимании к детям, а семья считает учителей главными воспитателями, не желая или не имея возможности объединиться для взращивания поколения в духе патриотизма, уважения и любви к ближнему.
- Учебный материал лучше усваивается, если он максимально приближен к восприятию, то есть подан уважаемыми людьми или в игровой форме, закреплён жизненными примерами или проиллюстрирован.
В совокупности таких мыслей возникла идея театра пенсионеров при каждой школе. Этим коллективам не потребуется профессиональная подготовка, поскольку любая бабушка может рассказать внуку сказку так, что он представит себя и Серым Волком, и Принцем, а внучка Золушкой. Для театров, состоящих из бывших участников любительского театра, не обязательно наличие костюмов и декораций, это подтвердили живописные рассказы и сияющие лица вышедших на сцену в День Театра. Вот уже несколько лет я уговариваю режиссёра АКТ собрать "старичков"-актёров и поставить на них спектакль. Но ему не интересны взрослые, имеющие собственное мнение в силу жизненного опыта. А ведь каждый из них жаждет играть, выходить на сцену, реализовывать свой творческий потенциал и имеет достаточно сил. При этом, выходя на пенсию, ещё и время появляется, не говоря уже о потребности быть полезным всем и во всём, опираясь на опыт прожитых лет.
При каждой школе можно создать театр из неработающих пенсионеров, являющихся бабушками и дедушками учеников этой школы или их соседями. Такая деятельность даст возможность пенсионерам почувствовать свою надобность обществу. Почему работники так не спешат уходить на пенсию? Не всегда это вопрос оплаты, чаще всего престарелые люди боятся остаться не у дел. А сколько знаний у этих уважаемых людей! Готовя домашнее задание внучок советуется с умным и добрым дедом, нежели с озабоченной работой и домашними проблемами мамой. Поэтому постановки на 20-30 минут по одной теме такой театр может делать ежемесячно по материалам предстоящих уроков (литература, история, физика, химия, биология, география и другие). Единичный сценарий удобно строить на изучаемом классическом произведении в кратком изложении с литературным прочтением значимых монологов, художественном обыгрывании ключевых сцен. Спектакли по естественным наукам могут быть разыграны сказочными героями или куклами, как это сделано в мульт-сериалах "Смешарики Пин-Код" и "Фиксики" или постановке "Мечты, меняющие жизнь". Постановки обязательны к просмотру всему потоку и могут быть платными для других потоков и сторонних зрителей (родители, ученики других школ). Какие-то из предметов (история и литература или физика) могут быть объединены для нескольких классов. При успешных постановках спектакли могут быть соединены и показаны в соседних школах за дополнительную плату, либо участвовать в фестивалях любительских театров, стать элементом портфолио учителя для номинации на премию "Учитель года".

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

Участники проекта:
- АКТЁРЫ - неработающие пенсионеры или жители из близлежащих к школе домов. Участие в постановках бесплатное, возможная оплата спектаклей переводится на развитие театра, расходный материал;
- РЕЖИССЁР - учитель литературы (или иного предмета, но с наличием опыта игры в театре или театральных постановок) в школе. Постановки и репетиции оплачиваются из бюджета города или школы, как факультативные занятия;
- ПОДРУЧНЫЕ - изготовители костюмов, реквизита, декораций, кукол - ученики и учитель на уроках труда и и технологий, спонсоры-родители, меценаты;
- ВОСПИТАТЕЛИ-ПОМОЩНИКИ, они же АКТЁРЫ, своим присутствием в школе в течение учебного периода способствуют сохранению и улучшению дисциплины, уважения старших, семейных и соседских связей;
- ЭКСПЕРТЫ-КОНСУЛЬТАНТЫ (они же в ряде случаев - родители учеников): 1) режиссёры городских театров, школьные психологи после просмотра спектакля дают безвозмездную оценку  постановке и игре актёров, подсказывают пути развития, проводят мастер-классы по всем отраслям театрального направления (постановка, игра, сценодвижение, сценическая речь, грим); 2) художники и декораторы городских театров после просмотра спектакля или в процессе подготовки оказывают безвозмездную помощь в виде советов и рекомендаций по созданию декораций, костюмов, реквизита, кукол;
- СЦЕНАРИСТЫ - ведущие учителя или руководители методических объединений преподавателей по конкретным предметам предоставляют материал для инсценировок, определяют даты, тематику спектаклей. За написание сценария спектакля на 20-30 минут учитель может быть поощрён, как за дополнительные занятия. А сценарий или постановка засчитывается как "открытый урок".

Этапы проекта:
1. На общешкольное собрание приглашаются неработающие взрослые из близлежащих к школе домов. Всем предлагается стать участниками театра при школе для ежемесячных (или даже еженедельных) постановок театрализованных уроков. Из числа учителей выбирается педагог, который будет выполнять режиссёрскую и административную работу театра "ТАПОК". Актёры и режиссёр знакомятся, определяют место и время регулярного сбора, который должен совпадать с учебным процессом - "окно" в расписании учителя способствует пребыванию сторонних взрослых в школе, что в свою очередь способствует улучшению поведения учеников.
2. СЦЕНАРИСТЫ определяют программу на учебный год в расчёте "один спектакль (тема, урок) в месяц/неделю". Они же предоставляют сценарий первого представления.
3. На репетиции театр выбирает стиль представления (классический театр, кукольный театр, СТЭМ, цирк химических и физических фокусов), распределяет роли, подбирает имеющийся реквизит или составляет список необходимых декораций и передаёт его ПОДРУЧНЫМ. Выстраивает композицию спектакля так, чтобы он длился 20-30 минут, раскрывал тему, привлекал к последующему более глубокому изучению темы.
4. В течение периода месяц/неделя театр собирается и репетирует будущую постановку. При необходимости, к постановке привлекаются ЭКСПЕРТЫ. Наличие посторонних взрослых в стенах школы окажет положительное воздействие на поведение учащихся.
5. В конце каждого постановочного периода (месяц или неделя) в актовом зале школы показывается спектакль для всего потока в обязательном порядке и для других зрителей (иные потоки, родители, театралы-любители) за минимальную плату с неограниченным верхним пределом. Всю сумму за спектакль необходимо тратить на последующие постановки: расходный материал для декораций, реквизит, костюмы. Отчёт о расходе средств будет виден зрителям на последующих спектаклях. ПОДРУЧНЫЕ делают видеозапись спектакля.
6. С одним из режиссёров (или ведущих актёров) города директор школы договаривается о кураторстве в качестве ЭКСПЕРТА, который посещает итоговый спектакль и предоставляет отчёт о проделанной работе театра (целостность сценария и постановки), даёт рекомендации для последующих спектаклей (стилистика, актёрское мастерство).
7. ЭКСПЕРТ определяет несколько (2-4 штуки) постановок, которые можно объединить в полноценный спектакль и показать его на фестивале любительских театров.
8. Методическое объединение учителей отсматривает спектакли и рекомендует их к обмену между школами. Видеозапись прилагается к портфолио кандидата на звание "Учитель года" или иной. Сценарий и постановка засчитывается учителям как подготовка и проведение "открытого урока".
9. Видеозапись лучших спектаклей предлагается за плату сайтам удалённого обучения, например, "Знайка.Ру".
10. Композиция лучших постановок участвует в открытых фестивалях любительских театров, выезжает в соседние населённые пункты за счёт Управления Образования, Отдела Культуры, городской и районной Администрации.

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

понедельник, 6 мая 2019 г.

ТО о SD 5.0.1.159

Отчёт о тестировании SQLDetective 5.0.1 (build 159), опубликованном 30 апреля 2019 года. Тесты основаны на Release Notes.

IMPROVEMENTS 1.4+0=1.4  балла из 2+1=3 возможных
Object Navigator  1.4  балла из 2 возможных
Added the ability to customize the behavior of Ctrl+Click for database objects.
Добавлена возможность настраивать поведение горячей клавиши для объектов базы данных.
Added new options to “Preferences > Code Editor > Ctrl+click on an object”:
i. “Located it in Object Navigator”
ii. “Opens it in Object Wizard”
iii. “Opens it in Describe Object”

Добавлены новые опции в настройки редакторов кода по клику на объект: позиционирование в навигаторе объектов, открытие мастера объекта, открытие описания объекта.
Оба пункта объединяем в единый комплекс тестов, поскольку они являются частью друг друга.
Новшества касаются настройки функционала, то есть тесты будут двунаправленными. В настройках приложения найдём указанную опцию и проведём её исследование по чит-листу. Функциональные тесты её предназначения будем проводить в связке редакторов кода с навигатором объектов и мастерами объектов.
Пункты RNs расположены в группе навигатора объектов, но опция в Preferences расположена на странице "Code Editors", а не на "General / Object Navigator". Это минус в карму составителя RNs. Из описания новшеств можно было бы предположить, что кликать по объекту стоило в навигаторе (дереве или на какой-то из закладок с содержимым), но по расположению опции в настройках приложения понимаем, что в рамках функциональных тестов кликать будем из окон редактора кода. Подписи трёх вариаций понятны (позиционировать в дереве объектов, открывать мастер объекта, открывать описание объекта), но есть сомнения по выбору интерфейсного элемента - чек-боксы. Это значит, что срабатывать смогут сразу три варианта, но не понятна последовательность активации окон и их приоритетность. Все три окна самостоятельные, то есть будут работать параллельно, но возможно перекрытие одного другим, а следственно - потеря фокуса. К тому же, окно Describe Object не являясь модальным всё же имеет свойство показываться поверх всех остальных. Такое поведение можно считать диссонансом разработки: 1) странен выбор окна для авто-открытия, почему не Object Properties?; 2) насколько важна та или иная инфа юзеру? не лишний ли третий вариант?; 3) пора заменить статус "поверх всех" на "прижатость к краю рабочей области", чтобы не мешать работе в основном окне. В хелпе имеется описание каждого из трёх вариантов. Дефолтный вариант нигде не описан, тесты (запуск приложения с обнулёнными настройками, запуск после апдейта, выполнить возврат в окне настроек) указали на один вариант открытия мастера объекта. Сохранение/восстановление опций на открытии/закрытии окна и приложения, при экспорте/импорте в/из файл(а) работает без спутывания значений. Открытие соответствующих опциям окон работает в ожидаемых вариантах, кроме одного варианта порядка (чуть ниже об этом). Кстати, в рамках проверки этих двух пунктов RNs можно экономить время на тесты, совмещая проверки сохранения/восстановления с применением значений, то есть функционирование интерфейса и системы. В качестве редактора кода можно ограничиться SQL Editor, но для полноты проверок придётся покликать в множестве других (Stored Program Editor, View Wizard / SQL query, Object Navigator / ContentSelector / DDL, Session Navigator / Current Statement, ...) При всех включенных вариантах первым открывается окно мастера объекта, затем его описания, потом раскрывается дерево навигатора, но активный курсор остаётся в окне Describe Object. Такое странное поведение легко заметно, если перед началом теста не было открыто ни одно из активируемых окон, навигатор в свёрнутом состоянии (никакая из веток ещё не разворачивалась, ContentSelector спрятан). Если же ContentSelector развёрнут, то сначала в навигаторе объектов проходит перерисовка, затем открываются мастер объекта и окно с его составляющими. Не для всех типов объектов существуют самостоятельные мастера, поэтому хранимые подпрограммы активируют Stored Program Editor, одноимённые подобъекты подменяются их родительскими, синонимы и их оригиналы регулируются соседней настройкой "Preferences / Code Editors / Ctrl+Click on Synonym Navigates to: Synonym[Object]". При тестировании выявлена недоработка модуля Describe Object: при любом значении опции "Preferences / Code Editors / Ctrl+Click on Synonym Navigates to: Synonym[Object]" на первой позиции всегда стоит синоним, а в его структуре - родительский объект. Навигатор и мастер объекта отрабатывают в ожидаемом порядке: синоним для синонима, объект для объекта. Более логичным было бы открытие только объекта в режиме "Preferences / Code Editors / Ctrl+Click on Synonym Navigates to: Object" и синонима с объектом в режиме "Preferences / Code Editors / Ctrl+Click on Synonym Navigates to: Synonym".
Выявлен баг при попытке развернуть ноду Editions в дереве объектов (а также клик по имени в редакторе кода) запрос к базе не отрабатывает с оракловой ошибкой "ora-00900: invalid SQL statement".
Два пункта RNs по совокупности реализаций и выявленных проблем получают 1.4 балла
Preferences 0 из 1 возможного
Increased the object name length to 128 characters.
Увеличена длина имени объекта до 128 символов.
Почему пункт RNs расположен в группе настроек приложения и что он вообще значит - большая загадка. Если бы это была группа Core или UI, то можно было бы предположить, что все интерфейсные элементы, отображающие наименование объекта, теперь автоматически расширяются до 128 символов или уже имеют заданную ширину. Если бы  новшество конкретизировало версию DB Oracle (например, 12.2), то можно было бы предположить, что перед обращением к базе приложение дополнительно парсит код, вычленяя имя объекта размером до 128 символов. А как на счёт мультибайтовости и пропорциональности символов байтам (опция "Preferences / General / Session / Byte per character" и изначальная заявка Oracle про длину в байтах, а не в символах)? К сожалению, при таком скудном описании новшества не могу предложить каких-либо конкретных мест для тестирования, поэтому пункт не получает ни балла.

BUGS FIXED  0.8+0+1+1=2.8  баллов из 1+1+1+2=5 возможных
Core  0.8 из 1 возможного
Fixed fetching of LONG fields and extraction of DDL triggers and views.
Поправлена выборка LONG-полей и выгрузка структуры триггеров и вьюверов.
В одно короткое предложение общей группы попытались вместить солидную переработку. Выборка полей возможна в гридах данных нескольких окон (SmartDataset, Object Navigator / ContentSelector / Data tab, Table[View] Wizard / Data page, гриды админских модулей и прочие окна) и SQL Output вьювере. Как связаны LONG-поля и структуры вьюверов, триггеров? Если поглубже изучить DB Oracle, то выясниться, что тело триггера и запрос вьювера хранятся в полях типа LONG (sys.all_views.text, sys.all_triggers.trigger_body). Это значит, что наши тесты можно ограничить вариантами триггеров и вьюверов с различным содержимым их тел и запросов. Поскольку тех.писательница поленилась уточнить смысл правки, то тесты придётся проводить по нескольким категориям: объём текста, наличие/нехватка спец.символов (в том числе и альтернативное цитирование, мультибайтовые региональные значки, синтаксис языков Oracle - DML, DDL, PL/SQL), форматирование текста. А поскольку она же не уточнила модуль приложения, то проверять будем не только мастера триггера и вьювера, но и все окна с гридами (смотри список выше) и ddl (Object Navigator / ContentSelector / DDL tab, Schema Extractor, Fast Copier, Objects Compare, DB Examiner / Triggers и прочие подобные). Моих возможностей хватило только на минимальную проверку по объёму (в простейшем запросе символьное выражение состоит из нескольких сотен строк латинских букв, объект создаётся и редактируется в своём мастере), так что тесты мультибайтовых или иных символов вы можете сделать самостоятельно, и с высокой вероятностью обнаружите ещё проблемы. Если бы текст фикса был более конкретным (для ориентировки по модулям и функционалу), то заслужил бы полный балл, а так -даю только 0.8.
Query Dataset 0 из 1 возможного
The error “Out of system resources” no longer occurs on trying to run SQLDetective in trial mode when “Query All Records” is enabled.
Ошибка превышения ресурсов больше не случается при попытке запустить приложение в триальном режиме и включенной опции для запроса всех строк.
Опция запроса всех строк "Query all records" настраивается на странице "Preferences / Dataset Editors". Тесты открытия приложения с подключением к базе и без подключения в текущем и предыдущем билдах не показали никакой разницы, поэтому пункт RNs считаю припиской и не даю ни балла. Тем не менее выяснилось, что предупреждение об ограничении триала в 1000 запрашиваемых строк дублируется перед заполнением навигатора объектов. Полагаю, это происходит не только для заполнения грида в ContentSelector, но и для автоматического подсчёта количества объектов для каждой ноды в ObjectSelector. Но это действие понятно только мне, как хорошему знатоку внутренностей продукта. А обычный юзер вполне может это посчитать спамом. Поэтому такие предупреждения стоит конкретизировать текстом запроса или припиской о его назначении для внутренних нужд приложения.
Dataset/Datagrid  1 из 1 возможного
Unicode symbols are no longer broken on inserting/updating LONG fields.
Юникодные символы больше не портятся при вставке и редактировании LONG-полей.
Этот пункт RNs можно считать продолжением предыдущей правки про выборку больших значений. Но в данном случае функционал ограничен гридами и не рассматривает текстовые редакторы в мастерах объектов. Но стоит пояснить, что гриды состоят из ячеек, в которых свои редакторы вызываются. Для теста возьмём готовую или создадим свою таблицу с LONG-полем (оно может быть только одно - см.ограничения в документации Oracle). Базы данных для полноты тестов должны быть двух типов - юникодная и обычная. Примеры юникодных символов имеются на ресурсных порталах тестировщиков. Вставку и редактирование данных проводим через текстовый редактор для ячеек LONG-полей и выполняя DML-команды в SQL Editor, просмотр данных осуществляем через редакторы ячеек и в "SQL Editor / SQL Output" окне. Результаты тестов таковы, что причиной проблемы являлись редакторы ввода и отображения содержимого полей. Хоть мои проверки и были ограничены базой одного типа, но фиксу дам полный балл.
Code Analyzer  0+1=1  из 2 возможных
A naming rule violation is now triggered for sequences in PL/SQL.
Проверка правила наименования последовательностей теперь срабатывает в PL/SQL.
A naming rule violation is now triggered for sequences on changing the NEXTVAL/CURRVAL keywords case.
Проверка правила наименования последовательностей теперь срабатывает при изменении регистра служебных слов NEXTVAL/CURRVAL.
Обе правки проверим единым тестом, потому что они касаются одной настройки анализатора кода "Tools / Code Audit / Code Analyzer Options / Code Review Options / Naming Rules / Sequence Name". .Тексты RNs более похожи на усовершенствование, а не баги. И такой факт не в пользу тех.писательницы, потому что владелец продукта оценивает билд по группе импрувов, а список багов даже не смотрит. Ещё одним промахом тех.писательницы стоит считать незаконченность понятия: вместо конкретного места "PL/SQL block" сказано обо всём PL/SQL, что сильно сбивает юзера. Для теста включаем вышеуказанную опцию (по-умолчанию, постфикс у последовательности считается равным "_seq" или "_s") и анализируем (путь из главного меню: "Tools / Code Audit / Analyze Code") PL/SQL код с обращением к последовательностям в Stored Program Editor или SQL Editor, Trigger Wizard. Предлагаю нижеследующий код вставить в текст подпрограммы и проанализировать как самостоятельный блок, поиграть с регистром служебных слов:
begin
select seq_tbl.nextval into prm from dual;
select seq_tbl.currval into prm1 from dual;
end;

В текущем билде на закладке Code Review с результатами анализатора кода будут записи в ноде "Readability / Naming Rule Template violation" пока последовательность не будет переименована соответствующим образом, например, в "my_seq". В предыдущем билде правило срабатывает только при соответствующем регистре служебных слов. Смущает тот факт, что мой пример является самостоятельным блоком, который якобы не должен был бы выявлять неверно названные последовательности в предыдущем билде. Но это не так, значит первый пункт RNs является ложью, поэтому не заслуживает ни балла. А второй пункт исполнен и билд за него получает балл.

Итого билд получает 1.4+2.8=4.2 балла из 3+5=8 возможных, что равняется 4.2/8=52.5% готовности.


суббота, 4 мая 2019 г.

Облегчаем чемодан

Сезон отпусков начался, а значит грузоперевозки смещаются в сторону пассажиров. Всё больше авиа-компаний предлагают билеты без оплаты багажа или снижают вес ручной клади. Даже железнодорожные и автобусные турникеты проверяют объём чемодана. Как же при таком натиске оплаты за каждый перевес умудриться моднице выглядеть в отпускные дни или на корпоративных, командировочных тусовках разнообразно и соответственно случаю? На каждый день нужны 2-3 наряда, к которым подходит разная обувь. Не уместно в утренних кроссовках для зарядки прийти на ужин в ресторан, или в пляжных шлёпанцах в офис.
Для уменьшения количества нарядов уже давалась подсказка в виде костюма-перевёртыша. Из четырёх деталей двустороннего цвета можно скомпоновать уйму нарядов: длинный сарафан складывать в юбку или мини-платье, два рукава могут быть длинными или короткими, четвёртый элемент - накидка - может стать шляпкой или топиком.
Многофункциональные части наряда
Но как же к разным нарядам уложить в чемодан столько же разных туфель, босоножек, шлёпок, танкеток? Некоторые производители обуви предлагают сменный верх для толстой подошвы, другие меняют каблук. Но, к сожалению, платформа не всегда в моде, а разница высоты каблука не самым лучшим образом влияет на супинатор. Подобрать же удобную колодку - задача всегда очень индивидуальная. Считаю, что для каждой высоты каблука должен быть своя основа. Поэтому предлагаю разделить отпускную обувь на три части: подошва, каблук и верх. Их легко и просто можно уложить в чемодан. Если же они из дерева или композитного пластика, то и общий вес багажа значительно снизится.
Подошва без каблука и верха, вид сбоку
Подошва без каблука и верха, вид на отверстие для крепления каблука методом поворотной защёлки
Виды съёмного каблука - шпилька, устойчивый
Верх шлёпанцев можно сшить из кусочков кожи или ткани
Верх босоножки можно изготовить самостоятельно из ниток или ткани
Верх классических "лодочек" лучше закупать у обувщиков-профессионалов
Другой вариант экономии - одна подошва с каблуком, но сменным верхом и колпаками на каблук. Цветовое сочетание каблука и верха быстро сменить, если верх и колпак крепить на винтики. При этом винтик каблучного колпака будет служить подбивкой, то есть можно его делать из пластмассы для снижения уровня звука при ходьбе.
Разноцветные колпаки на каблук
Ещё одно преимущество от обуви со сменными деталями - материал производства. Ведь это вполне может быть вторсырьё - пластик бутылочный.
Обувщики и текстильщики, давайте сделаем приятное и дамам, и носильщикам их чемоданов - значительно сократим количество вещей и вес багажа.