Как ускорить разработку на С#: подсказки при работе в ProjectMaker

radv

Client
Регистрация
11.05.2015
Сообщения
3 722
Благодарностей
1 917
Баллы
113
English нужен или нет. Как изучать C# и функционал ProjectMaker, а также дополнительные DLL , если вы не знаете английский.

Из этого кейса для начинающих кодеров, Вы узнаете про то, как ускорить свою разработку на C# если не знаете английский.

В одном из прошлых конкурсов, я писал про свое знакомство с зеннопостер и C#, а в этой я расскажу более подробно про конкретный кейс, а именно, про создание переводчика подсказок.

В этом кейсе будут:
  • Работа с XML
  • Работа с SQLite
  • Работа с онлайн сервисами перевода текста.

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

Ко всем блокам кода будут не большие комментарии.

В процессе изучения функционала зеннопостер, а конкретно использования кубика C#

121628


помогали всплывающие подсказки с описанием каждого действия, но к сожалению текст подсказок был на английском, с которым я был мало знаком.

Всплывающие подсказки - это то, что появляется, когда вы подводите мышку к уже написанному коду C#.

121629


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

image005.png


Или

image007.png


Из подсказки сразу видно описание действия, тип параметра, их количество, есть ли возвращаемое значение и выбрать нужное.

При использовании методов, подсказки появляются, когда вы ставите открывающую скобку, то сразу появляется подсказка для первого параметра (он выделяется жирным шрифтом)
image009.png


Если параметров несколько, то после того, как поставите запятую после предыдущего параметра, следующий параметр выделяется жирным шрифтом и в подсказке появляется его описание.
image011.png


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

image013.png


Так же подсказки помогают правильнее писать код, ведь иногда возникают ошибки из-за большой/маленькой буквы в названии объекта/действия и при ошибке подсказки не появляются.

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

Если таких подсказок нет, то возможно нет файлов xml для используемых dll или эти файлы некорректны.

На первое время спасением стали файлы с переведенными русскими подсказками из курса зенноакадемии от Sibbora.

image015.png


В новых версиях зенно, местоположение этих файлов могло измениться, найти их можно через поиск.

Но как оказалось, файлы с подсказками от одной версии зенно, не подходили к другой. И приходилось либо сидеть на версии для которой были подсказки с переводом, или остаться без перевода, или делать новый перевод.

Поскольку я тогда еще только начинал изучать C#, то хотелось получить результат с меньшими усилиями.

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

Не найдя готовых решений, стал пробовать разные костыли.

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

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

А когда представлял, что это придется делать для каждой версии, то становилось печально.

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

Для сохранения перевода решил, что лучше всего использовать локальную базу данных, и выбрал SQLite .

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

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

Через XmlReader считывался код из файла, потом перебирались все элементы с атрибутом “member”

image017.png


Внутри элемента проверялись другие теги, вся сложность заключалась в том, что вложенность у элементов была разная, и иногда лучше было оставлять текст без перевода (примеры использования, пояснения и т.п.) чтобы потом подсмотреть использование и синтаксис без перевода.

image019.png


В коде прописал условия из каких тегов элемента текст надо переводить, а какие пропускать.

image021.png


Взятый текст проверялся на русские буквы (чтобы перенести сначала только переведенные фразы), и если они были, то по значению атрибутов “member” искался английский текст в файле без перевода и формировались данные для отправки в БД.

В БД сделал простую с таблицу на 4 столбца (дата, название файла, английский и русский текст подсказки) куда и сохранял результаты парсинга. Подробности по созданию БД SQLite смотрите в видео.

image023.png


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

Самое простое, что пришло в голову, это заменять обычные кавычки на угловые или одинарные.

image025.png


И уже после этого формировать запрос к БД.

После переноса данных из готовых файлов с переводом, взялся за подключение онлайн сервисов для перевода.

Сервисов онлайн перевода было несколько: Гугл, Яндекс и MyTranslate. Сейчас почти все они закрутили гайки на лимиты бесплатного перевода, и если не переведенных строк оказывалось много, то для бесплатного перевода с учетом дневных лимитов сервиса приходилось запускать проект несколько дней подряд, зато потом перевод проходил быстрее.

Например для сервиса MyMemory без регистрации лимит был 1000 слов(фраз)/сутки, а если есть бесплатный аккаунт, то этот лимит был 10 000 слов(фраз)/сутки.

При переводе принцип обработки файлов остается тем же.

Для взятого текста, после проверки на русские буквы, проверяется наличие перевода этого текста в БД и если перевода нет, то текст отправляется на сервис онлайн перевода.

Запрос составляется похожим образом, как и при работе с API смс/капча сервисов с указанием нужных параметров (текст для перевода и на какой язык перевести (иногда и язык текста с какого нужен перевод)

image027.png

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

В исходном коде онлайн перевода оставил только пример работы с Яндексом, который работал на момент создания проекта.

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

Можете попробовать изменить проект под свои нужды. В БД из архива в отличии от полной версии оставлены только несколько строк для примера.


Скачать SqliteStudio оф. сайт (может не открываться из-за евро санкций)

Релизы на github

отдельный конструктор регулярных выражений как в ProjectMaker только с подсказками

как использовать расширение Chropath для поиска элементов и проверки XPATH

Всплывающие подсказки C# Что это и зачем нужны.

Русские Всплывающие подсказки для ZennoPoster, VisualStudio и C# DLL

C# и баги Zenno. Как они помогли мне в развитии и работе с ZennoPoster

DromHelper - Рассылка и сбор сообщений

Парсер вакансий (только для статуса client)

Перенос WinForms из VisualStudio в ZennoPoster

Автоперенос WinForms для использования в ZennoPoster

[Plugin ProjectMaker] Свой кубик для лога.


[Полезняшка] Расширение логирования. Управление оповещениями.

[Удобняшка] Скачивание архива с доп. файлами, распаковка и создание ярлыков на рабочем столе.

Шаблон для поиска доноров на SimilarWeb (своя выборка)

API Яндекс Облака для перевода текста.

Автоматизируй сам Android + Плагины Zennoposter + Real/Nox/Memu/LdPlayer

XPATH Помощник Mobile App Xpath Helper

Сделать Заказ на Автоматизацию
 

Вложения

Последнее редактирование модератором:

radv

Client
Регистрация
11.05.2015
Сообщения
3 722
Благодарностей
1 917
Баллы
113
Если у кого то проект не открывается в ProjectMaker то перекачайте файл.
 

Вложения

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)