Search
Write a publication
Pull to refresh
3
0
Send message

Паажди!
Буфер это дополнительная опция. В основном переводит выделением с экрана с зажатыми Win+Alt (только ими). Почитай в "О программе".
Спасибо за внимание к программе!

Рад, что кому-то она понравилась. Программа по сути просто компиляция двух сервисов, но она столько лично мне пользы приносит, что не могу не поделиться :)

UPD 27.11.2022: Добавил раздел Переносы строк, обновил картинку

Воот! Я знал, что плохо искал, спасибо! :)

Скачал, бегло посмотрел. Программа классная, особенно облегченная Ёлочка. Пожалуй, я бы свою не писал, если бы её видел: почти полные аналоги. Вот их различия, которые я увидел сразу:

  • Занять горячую клавишу Ё это слишком жестко. Хотя можно Alt+ или Ctrl+, но всё ещё не идеально (по моему скромному мнению)

  • Перевод более гладкий. Вероятно, из-за лишних переносов строк у меня. Нужно поправить :)

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

  • Красивое, настраиваемое окошко. Перевод можно выделить и скопировать. У меня это нужно сделать методом выделения области, а потом нажать в трее Перевести. Наверное, нужно поменять на копирование сразу перевода в буфер.

  • Я как-то не так сделал выделение по скрину :) Оно у меня немного тормозит

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

  • Мелкий текст обе программы одинаково хорошо видят.

  • Нет функции перевода по тексту из компонента WinAPI (у меня это Win+Alt и после +Ctrl). Не то чтобы это минус, программа то по переводу изображений. Но в некоторых, преимущественно старых, программах, где это можно сделать, взять для перевода текст выглядит логичней.

  • У меня можно отдельно перевести и/или распознать текст и картинку по меню в трее

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

Было желание сделать локализацию и выбор с какого в какой язык переводить. Но не понятно будет ли это реально востребовано, самому мне это не нужно. Ну и плюс размер данных для распознания в несколько метров для каждого языка раздует программу :)

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

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

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

Всё как есть в самом гугл переводчике

Вот текст в виде текста:

Okay—now we're going
to check your reflexes.

Вероятно у вас больше 100 значений. Допишите в конец снятие ограничение рекурсии:
option (maxrecursion 0)

create table #t(s varchar(12))
insert into #t values('12')
insert into #t values('24')
insert into #t values('36')
insert into #t values('48')
insert into #t values('60')

;with
t1 as 
 (select s, row_number() over(order by s) rn
 from #t
 ),
t2 as
 (
  select CAST(s as varchar(max)) [s], 2 [rn] from t1 where t1.rn = 1
  union all
  select t2.s + ',' + t1.s, t2.rn + 1
  from t1  join t2 on t1.rn = t2.rn
 )
select s from t2
where rn = (select MAX(rn) from t2)

Работает довольно быстро, хотя я не сравнивал с Вашими методами
Сейчас покрутил процедуры то так, то эдак — действительно в конструкции insert… exec нет разницы, есть ли перечисление. Однако во всех других случаях, я стараюсь перечислять поля при вставке в таблицу, даже если SQL позволяет этого не делать. Например, кто-то может добавить или поменять в таблице колонки местами и не везде, где она используется, скорректировать. Не раз такое бывало, особенно со * :) Единственное исключение, если данный тип таблицы описан в этом же скрипте/процедуре.
Понятно, спасибо.

Я подумал, что
-- Создаем таблицу
SELECT *
INTO #Docs
FROM @Docs

Предлагалось разместить внутри вызываемой процедуры :)
Почему нельзя использовать табличную функцию?

Можно использовать и табличную функцию и конструкцию insert… exec, но только если нам нужно вернуть только одну таблицу в качестве результата. К тому же, kolu4iy:
P.S. Табличные функции — удобно. Но по доброй традиции, в MS SQL есть серьезные ограничения (по сравнению с хранимыми процедурами) на использование функций.
Мне в таких случаях всегда хочется спросить: а зачем? Нельзя ли перестроить задачу таким образом, чтобы это перестало быть нужным?

Ну и да, почему просто не использовать табличную функцию?

Это не всегда возможно, по крайне мере, в приложениях, где бизнес-логика в SQL. Например, у нас есть два отчета, для которых сбор данных одинаков и он достаточно громоздкий (например ~500 строк кода), а отличаются они только группировкой в конце. В таких случаях и нужно выносить общую часть в отдельную процедуру.
Спасибо за напоминание про типы, как с 2005 перешли, так их и не использовали. :) Позже поправлю пост.

В табличные переменные нельзя вставить данные внутри процедуры, однако INSERT...EXEC вполне работает. Зачастую достаточно и их. Когда недостаточно — используем следующий трик:
-- Создаем таблицу
SELECT *
INTO #Docs
FROM @Docs

… и вот у нас таблица нужной нам структуры.

Насколько я знаю, нельзя вставлять данные в переменные табличного типа переданные процедуре в качестве параметров, т.к. они readonly.

Information

Rating
Does not participate
Registered
Activity