Версия, подходяща за принтиране
Кликни тук, за да видиш темата в оригиналният и вид
BG Development Форуми > Linux > kbgoffice речника за Qt5


Публикувано от: johnfound 27-06-2018, 20:12
Много си го харесвам този речник, но напоследък нещо не може да се компилира под Manjaro Linux, поради някакви конфликти с Qt4 библиотеките.

Вместо да се занимавам със сложни зависимости със старите библиотеки си го преправих да се компилира под Qt5 и си го ползвам. Сега, bvbfan постна връзка към kaminata.net, където видях, че се обсъжда https://www.kaminata.net/forum/viewtopic.php?f=230&t=118224.

Затова реших да публикувам каквото съм направил.

Предупреждавам, че в C++ пиша на интуиция и шесто чувство. Предупреждавам също, че съм изрязал от проекта всичко, което не можа да се компилира. Това са някакви странни парчета код, които се конектваха към сайтове като google.com и др.под. Даже и не се опитах да ги оправям, защото това все пак е офлайн речник и не се очаква да прави мрежови конекции.

Впрочем, тъй като не си спомням такива менюта в оригинала, може да съм изрязал точно бакдора. icon_twisted.gif Както казах, в C++ хич ме няма.

На който му трябва, може да се клонира от: https://asm32.info/fossil/repo/kbgoffice

Там има началните сорсове от v2.1 и моите промени.

Компилира се с:
CODE

cd ./src
qmake
make
sudo make install


П.П. По дяволите, на кой идиот му е хрумнало да кръсти речник "kbgoffice"??? icon_lol.gif

Публикувано от: saruman 27-06-2018, 21:24
Супер,няма нищо по-яко от deprecated код за deprecated продукт,идеален пример е тоя проект как да не се пише код ,да не говорим,че това не е нито Ц,нито Ц++,а някъв извратен микс,дето можеш да го срещнеш само във ФМИ

Публикувано от: bvbfan 27-06-2018, 21:28
И защо мислиш така, нищо deprecated няма в проекта, камо ли, че така не се пишело код. Напротив, така се пише, Джон е махнал много код, при положение, че трябва на 1 място да върне nullptr вместо false, което нямам идея защо е освен заблеян човек го е написал.

Публикувано от: johnfound 27-06-2018, 21:29
Е, както казах, аз не правя разлика, защото еднакво не разбирам нито от Ц, нито от Ц++. Нито пък имам каквито и да е претенции за качество.

Програмата ми върши отлична работа. Който може, да я напише по-добре. icon_razz.gif

Публикувано от: bvbfan 27-06-2018, 21:33
Разбира се, че е С++, какво му четеш брътвежите, Qt добавя функционалност върху стандартният С++ и затова се изпълнява първо qmake. В draft за С++20 е concepts които трябва да решат този въпрос, както и модулирането.

Публикувано от: saruman 27-06-2018, 21:35
QUOTE (bvbfan @ 27-06-2018, 21:28)
И защо мислиш така, нищо deprecated няма в проекта, камо ли, че така не се пишело код. Напротив, така се пише, Джон е махнал много код, при положение, че трябва на 1 място да върне nullptr вместо false, което нямам идея защо е освен заблеян човек го е написал.

А да,забравих,че ти си приключил развитието си в края на 20ти век,за STL,C++11,14,17 чувал ли си ?

Публикувано от: Gamma Goblin 27-06-2018, 21:42
много е як кода даже, спазени са конвенциите за писане на красив код

Публикувано от: saruman 27-06-2018, 21:47
Единственото тъжно е,че новите компилатори потдържат старите стандарти заради такива аборигени като бвб,ами не го направят като във веба да депрекейтват разни недоносени указатели

Публикувано от: bvbfan 27-06-2018, 21:57
Няма никакъв смисъл да депрекейтват никакви указатели. След като ти пиша за С++20 дали съм чувал за предните?! Тоя код е от над 12г. дали са чували тогава за С++11? Даже си е много добра обратната съвместимост новите GCC с доста стари проекти.

Публикувано от: bvbfan 27-06-2018, 21:59
1.8 от 29.10.2005
2.0 от 31.06.2010

Публикувано от: saruman 27-06-2018, 22:02
QUOTE (bvbfan @ 27-06-2018, 21:57)
Няма никакъв смисъл да депрекейтват никакви указатели. След като ти пиша за С++20 дали съм чувал за предните?! Тоя код е от над 12г. дали са чували тогава за С++11? Даже си е много добра обратната съвместимост новите GCC с доста стари проекти.

Айде сега не ми бягай по тъча,STL кога е рилийзната и документирана като стандартна библиотека? icon_rolleyes.gif

Това е C код на някой,който е чувал,че модерно да се пише class вместо struct icon_smile.gif

п.с. да не говорим,че е пълна глупост да ползваш new вместо malloc,ако не хващаш ексепшъни icon_smile.gif

Публикувано от: bvbfan 27-06-2018, 22:08
Не пиши глупости и не бягай по тъча, не може току-така проект на 15г. да го пренапишеш. Спецификацията на стандартната библиотека може да беше по-рано, но не можеш да я ползваш официално преди да е излязла, тъй като е compiler dependent до излизането ѝ, а то беше в края на 2011, октомври, а Qt 4 е от 2006, няма кой добавя токова нещо по средата на цикъла.

Публикувано от: johnfound 27-06-2018, 22:08
@saruman: Ако имаш по-добро предложение, можеш да ми пратиш fossil bundle с промените. Ще ги тествам и мърджна.

Ако имаш по-добро предложение за офлайн речник – давай връзка.

Ако не, то какво е предназначението на глупостите, които пишеш? Аз така или иначе нямам намерение да уча Ц и/или Ц++. А ако на някой му потрябва офлайн речник, даже и да повярва на приказките ти за "лошият код", пак ще ползва този речник, защото хубав-лош, друг няма. icon_razz.gif

Публикувано от: saruman 27-06-2018, 22:29
QUOTE (bvbfan @ 27-06-2018, 22:08)
Не пиши глупости и не бягай по тъча, не може току-така проект на 15г. да го пренапишеш. Спецификацията на стандартната библиотека може да беше по-рано, но не можеш да я ползваш официално преди да е излязла, тъй като е compiler dependent до излизането ѝ, а то беше в края на 2011, октомври, а Qt 4 е от 2006, няма кой добавя токова нещо по средата на цикъла.

Пълни глупости за пореден път пишеш,то и сега има неща,дето са compiler dependent, сигурно половината код дето го пишеш няма да се компилира под Windows,защо пишеш сокети,като win-a ползва winsock библиотеката ? icon_eek.gif

п.с.нали си голям Линукс фен,провери коя версия на GCC и от коя година година компилира STL,никой не ти говори за пренаписване тука

Публикувано от: saruman 27-06-2018, 22:33
QUOTE (johnfound @ 27-06-2018, 22:08)
@saruman: Ако имаш по-добро предложение, можеш да ми пратиш fossil bundle с промените. Ще ги тествам и мърджна.

Ако имаш по-добро предложение за офлайн речник – давай връзка.

Ако не, то какво е предназначението на глупостите, които пишеш? Аз така или иначе нямам намерение да уча Ц и/или Ц++. А ако на някой му потрябва офлайн речник, даже и да повярва на приказките ти за "лошият код", пак ще ползва този речник, защото хубав-лош, друг няма. icon_razz.gif

Аз с теб отдавна приключих,още на офлайн речник ти теглих хикса,аз SA Dictionary ползвах когато интернета минаваше през телефонния кабел icon_wink.gif

Публикувано от: GigaByte 27-06-2018, 22:47
При мен под Кубунту ползвах готов архив, точно от темата в камината.
Благодаря ти, john за кода понеже успях да махна едно предупреждение
за вече стартирано копие, което спираше програмата.Не знам на какво
се дължеше при положение, че програмата не вървеше в паметта.

Който желае може да закоментира ред 129 и 130 в main.cpp, за този проблем.

Речникът си работи - това е важното за мен в случая.

Публикувано от: saruman 27-06-2018, 22:52
QUOTE (GigaByte @ 27-06-2018, 22:47)
При мен под Кубунту ползвах готов архив, точно от темата в камината.
Благодаря ти, john за кода понеже успях да махна едно предупреждение
за вече стартирано копие, което спираше програмата.Не знам на какво
се дължеше при положение, че програмата не вървеше в паметта.

Който желае може да закоментира ред 129 и 130 в main.cpp, за този проблем.

Речникът си работи - това е важното за мен в случая.

Вие вярно сте от някаква секта,айде обясни ми по дяволите от къв чеп ти трябва офлайн речник,и вярно ли като ти трябва нещо ще се довериш на него вместо на Google Translate ? icon_eek.gif

Публикувано от: saruman 28-06-2018, 00:08
QUOTE (bvbfan @ 27-06-2018, 21:59)
1.8 от 29.10.2005
2.0 от 31.06.2010

Силно се надявам все някога да разбреш тия дати какво точно означават,и каква е разликата от версия 1 до версия 2,сега го загледах по-подробно тоя код,и за боклука не става,вероятно го е писал някой син на Магда от ФМИ icon_mad.gif

Публикувано от: saruman 28-06-2018, 00:20
CODE
// Some Constants
static const int  MAX_WORD_LEN           = 70;
static const int  MAX_WORDS_ALLOWED      = 7;
static const int  SPACE_IN_DIALOGS       = 10;
static const char CAPTION[]              = QT_TRANSLATE_NOOP("MainWindow", "BG Office Assistant");
static const char FOUND[]                = QT_TRANSLATE_NOOP("MainWindow", ":-)");
static const char NOT_FOUND[]            = QT_TRANSLATE_NOOP("MainWindow", ":-(");
static const char SIMILAR[]              = QT_TRANSLATE_NOOP("MainWindow", ":-|");
static const char MISSING_ABRR_FILE[]    = QT_TRANSLATE_NOOP("MainWindow", "<FONT color=\"red\">Error: Abbreviations file is missing.</FONT>");

//static const char TITLE_ACTION_TEXT[]         = CAPTION[];
static const char WATCH_CLIPBOARD_ACTION_TEXT[] = QT_TRANSLATE_NOOP("MainWindow", "&Watch Clipboard");
static const char MINIMIZE_ACTION_TEXT[]        = QT_TRANSLATE_NOOP("MainWindow", "Mi&nimize");
static const char MAXIMIZE_ACTION_TEXT[]        = QT_TRANSLATE_NOOP("MainWindow", "Ma&ximize");
static const char RESTORE_ACTION_TEXT[]         = QT_TRANSLATE_NOOP("MainWindow", "&Restore");
static const char QUIT_ACTION_TEXT[]            = QT_TRANSLATE_NOOP("MainWindow", "&Quit");

static const char COLOR_FOUND[]          = "background-color: #00FF00"; // green
static const char COLOR_NOT_FOUND[]      = "background-color: #FF0000"; // red
static const char COLOR_SIMILAR[]        = "background-color: #FFFF00"; // yellow

static const char SEARCH_DICTIONARY[]   = "http://www.infoplease.com/search.php3?in=all&query=";
static const char SEARCH_ENCYCLOPEDIA[] = "http://www.infoplease.com/search.php3?in=encyclopedia&query=";
static const char SEARCH_ALL[]          = "http://www.infoplease.com/search.php3?in=encyclopedia&query=";

static const char CREATION_TEMP_FILE_FAILED[] = QT_TRANSLATE_NOOP("MainWindow",
       "Failed to create a temporaty file.\n"
       "Check your write permissions in \"%1\" directory.");

/*: This is a comment for the translator!
   Please translate 'English' as language translating to. e.g. Deutsch.
   Do not translate as English!    */
static const char INTERFACE_LANG[] = QT_TRANSLATE_NOOP("MainWindow", "English");

// Default options
static const int  DEFAULT_INPUT_FIELD_WIDTH        = 200;
static const int  DEFAULT_LEFT_PANEL_WIDTH         = 200;
static const int  DEFAULT_WORDS_IN_LIST            = 250;
static const char DEFAULT_WORDS_IN_HISTORY         = 50;
static const int  DEFAULT_BORDER_WIDTH             = 5;
static const bool DEFAULT_SHOW_TOOL_BAR            = false;
static const bool DEFAULT_DOCK_TOOL_BAR            = false;
static const bool DEFAULT_TRANSLATE_ON_EVERY_KEY   = true;
static const bool DEFAULT_WATCH_CLIPBOARD          = true;
static const bool DEFAULT_ADVANCED_CLIPBOARD       = false;
static const bool DEFAULT_ADVANCED_OPTIONS         = false;
static const bool DEFAULT_SEPARATE_MEANINGS        = true;
static const bool DEFAULT_TRY_WITHOUT_SUFFIX       = true;
static const bool DEFAULT_LATIN_OUTPUT             = false;
static const bool DEFAULT_LATIN_INPUT              = false;
static const char DEFAULT_FONT_NAME[]              = "*";
static const int  DEFAULT_FONT_SIZE                = 14;
static const int  DEFAULT_FONT_WEIGHT              = 50;
static const bool DEFAULT_FONT_ITALIC              = false;
static const char DEFAULT_GEOMETRY[]               = "40, 40, 600, 400";
static const char DEFAULT_SYSTEM_STYLE_NAME[]      = "Windows";
static const bool DEFAULT_ADV_SRCH_HIGHLIGHT       = true;
static const bool DEFAULT_ADV_SRCH_WHOLE_WORD      = true;
static const bool DEFAULT_ADV_SRCH_EXACT_PHRASE    = false;
static const bool DEFAULT_ADV_SRCH_ASD_IGNORE_KEY  = true;
static const bool DEFAULT_ADV_SRCH_ASD_IGNORE_HIS  = true;
static const bool DEFAULT_ADV_SRCH_ASD_ENTER       = true;
static const bool DEFAULT_ADV_SRCH_ASD_DO_NOT_REPL = true;
static const char DEFAULT_BROWSER_NAME[]           = "firefox";
static const bool DEFAULT_USE_EXTERNAL_BROWSER     = true;
static const bool DEFAULT_USE_SPLASH_SCREEN        = true;
static const bool DEFAULT_ICON_IN_SYSTRAY          = true;
static const bool DEFAULT_CLOSE_HIDE2_SYSTRAY      = true;
static const bool DEFAULT_MINIMIZE_TO_SYSTRAY      = false;

// Min & Max options
static const int  MAX_INPUT_FIELD_WIDTH = 500;
static const int  MIN_INPUT_FIELD_WIDTH = 25;
static const int  MAX_LEFT_PANEL_WIDTH  = 500;
static const int  MIN_LEFT_PANEL_WIDTH  = 0;
static const int  MAX_WORDS_IN_LIST     = 500;
static const int  MIN_WORDS_IN_LIST     = 0;
static const int  MAX_WORDS_IN_HISTORY  = 200;
static const int  MIN_WORDS_IN_HISTORY  = 0;
static const int  MAX_BORDER_WIDTH      = 25;
static const int  MIN_BORDER_WIDTH      = 0;

// Strings in registry
static const char OPTION_INPUT_FIELD_WIDTH[]        = "InputFieldWidth";
static const char OPTION_LEFT_PANEL_WIDTH[]         = "LeftPanelWidth";
static const char OPTION_WORDS_IN_LIST[]            = "WordsInList";
static const char OPTION_WORDS_IN_HISTORY[]         = "WordsInHistory";
static const char OPTION_BORDER_WIDTH[]             = "BorderWidth";
static const char OPTION_SHOW_TOOL_BAR[]            = "ShowToolBar";
static const char OPTION_DOCK_TOOL_BAR[]            = "DockToolBar";
static const char OPTION_SYSTEM_STYLE_NAME[]        = "SystemStyleName";
static const char OPTION_TRANSLATE_ON_EVERY_KEY[]   = "TraslateOnEveryKey";
static const char OPTION_WATCH_CLIPBOARD[]          = "WatchClipboard";
static const char OPTION_ADVANCED_CLIPBOARD[]       = "AdvancedClipboard";
static const char OPTION_ADVANCED_OPTIONS[]         = "AdvancedOptions";
static const char OPTION_SEPARATE_MEANINGS[]        = "SeparateMeanings";
static const char OPTION_TRY_WITHOUT_SUFFIX[]       = "TryWithoutSuffix";
static const char OPTION_FONT_NAME[]                = "FontName";
static const char OPTION_FONT_SIZE[]                = "FontSize";
static const char OPTION_FONT_WEIGHT[]              = "FontWeight";
static const char OPTION_FONT_ITALIC[]              = "FontItalic";
static const char OPTION_GEOMETRY[]                 = "Geometry";
static const char OPTION_LAST_USED_DICTIONARY[]     = "LastUsedDictionary";
static const char OPTION_ADV_SRCH_HIGHLIGHT[]       = "AdvSrch.Highlight";
static const char OPTION_ADV_SRCH_WHOLE_WORD[]      = "AdvSrch.WholeWord";
static const char OPTION_ADV_SRCH_EXACT_PHRASE[]    = "AdvSrch.EaxctPhrase";
static const char OPTION_ADV_SRCH_ASD_IGNORE_KEY[]  = "AdvSrch.IgnoreOnEveryKey";
static const char OPTION_ADV_SRCH_ASD_IGNORE_HIS[]  = "AdvSrch.IgnoreFromHistory";
static const char OPTION_ADV_SRCH_ASD_ENTER[]       = "AdvSrch.EnterSearch";
static const char OPTION_ADV_SRCH_ASD_DO_NOT_REPL[] = "AdvSrch.DoNotReplacePhrase";
static const char OPTION_DEFAULT_BROWSER[]          = "DefaultBrowser";
static const char OPTION_USE_EXTERNAL_BROWSER[]     = "UseExternalBrowser";
static const char OPTION_USE_SPLASH_SCREEN[]        = "UseSplashScreen";
static const char OPTION_INTERFACE_LANGUAGE[]       = "InterfaceLanguage";
static const char OPTION_ICON_IN_SYSTRAY[]          = "SysTrayIcon";
static const char OPTION_CLOSE_HIDE2_SYSTRAY[]      = "CloseHidesToSysTray";
static const char OPTION_MINIMIZE_TO_SYSTRAY[]      = "MinimizeToSysTray";


bvb,явно наистина си доста по-тъп,отколкото изглеждаш,няма проблеми,супер е кода icon_lol.gif

Публикувано от: johnfound 28-06-2018, 05:38
QUOTE (GigaByte @ 27-06-2018, 23:47)
При мен под Кубунту ползвах готов архив, точно от темата в камината.
Благодаря ти, john за кода понеже успях да махна едно предупреждение
за вече стартирано копие, което спираше програмата.Не знам на какво
се дължеше при положение, че програмата не вървеше в паметта.

Това става, като спреш предишното копие принудително. Май ще я махна тази функция. На кой му трябва наистина?

Публикувано от: GigaByte 28-06-2018, 06:02
Съгласен, на мен ми пречеше и затова я закоментирах.
По принцип не помня да съм го спирал принудително, но кой знае, може в някакъв момент и да съм icon_smile.gif

Публикувано от: bvbfan 28-06-2018, 06:24
QUOTE (saruman @ 28-06-2018, 01:08)
Силно се надявам все някога да разбреш тия дати какво точно означават,и каква е разликата от версия 1 до версия 2,сега го загледах по-подробно тоя код,и за боклука не става,вероятно го е писал някой син на Магда от ФМИ icon_mad.gif

Ти си пълен нещастник, какво си написал през живота си дето да става за нещо? Дай да видя. Кодът е много добре написан, щом е почнал от Qt3, през 4, че сега и на 5 върви. Явно нямаш идея как се пише преносим код или какво е Qt. Кодът, който е за боклука, според теб, се компилира под няколко ОС. И повтарям, няма как туулкит като Qt4 със дата на излизане 2006-та да добави С++11 по средата на жизненият си цикъл. Явно и фреймуорк не си поддържал, ама много лаеш. Като напишеш нещо през живота си, което става за ползване - тогава ще лаеш.

Публикувано от: Dr.Who 28-06-2018, 07:24
А това колко е дразнещооооо !!?

CODE

    if (useSplashScreen) {
        // Wait couple of seconds before hiding splash screen
        do {
            usleep(200);
            a.processEvents();
        } while (splash.isVisible() && (t.elapsed() < 2000));
        splash.finish(&w);
    }


Джон, това е от онази твоята тема. Как може да ползваш подобни отвратително бавни програми?

Публикувано от: johnfound 28-06-2018, 07:28
QUOTE (GigaByte @ 28-06-2018, 07:02)
Съгласен, на мен ми пречеше и затова я закоментирах.
По принцип не помня да съм го спирал принудително, но кой знае, може в някакъв момент и да съм icon_smile.gif

Малко по-агресивно трябваше да триеш – http://localhost:8080/vdiff?from=a6bc39e0ce0f50fc&to=6aa16eece4daa8e1. Сега го качих в репозиторито. "fossil update" за да изтегли разликите и после прекомпилация.

Публикувано от: johnfound 28-06-2018, 07:31
QUOTE (Dr.Who @ 28-06-2018, 08:24)
А това колко е дразнещооооо !!?

Джон, това е от онази твоята тема. Как може да ползваш подобни отвратително бавни програми?

Прав си, не мога! Само че това се изключва от настройките, "settings|configure". Аз съм го изключил още в незапомнени времена и изобщо бях забравил, че го има. icon_smile.gif

Мислиш ли, че трябва да го изрежа от кода?

Публикувано от: Dr.Who 28-06-2018, 07:46
Остави само това
CODE

if (useSplashScreen) {
       splash.finish(&w);
}

Публикувано от: johnfound 28-06-2018, 08:26
QUOTE (Dr.Who @ 28-06-2018, 08:46)
Остави само това
CODE

if (useSplashScreen) {
       splash.finish(&w);
}

Готово.

Публикувано от: GigaByte 28-06-2018, 08:27
Aз съм да остане сплаш екарана в кода.
На мен ми харесва.
А и няма сравнение - проверката не просто дразнеше, тя заключваше програмата.

Публикувано от: johnfound 28-06-2018, 08:32
QUOTE (GigaByte @ 28-06-2018, 09:27)
Aз съм да остане сплаш екарана в кода.
На мен ми харесва.
А и няма сравнение - проверката не просто дразнеше, тя заключваше програмата.

Аз не съм го махнал. Просто махнах таймера, който го държеше принудително на екрана.

Между другото, има и по-добри реализации на едно копие на програмата, които не се заключват при краш на програмата: https://stackoverflow.com/questions/5006547/qt-best-practice-for-a-single-instance-app-protection

Чудя се дали все пак да не го пробвам? Тънкият момент е, че речника се крие в трея и сега се хванах, че имам вече четири стартирани. icon_lol.gif Не че нещо пречат де...

Публикувано от: GigaByte 28-06-2018, 08:43
Без таймера не се ли маха толкова бързо, че никой да не го види ?
Не съм тествал де, но така си мисля.

Публикувано от: johnfound 28-06-2018, 08:45
QUOTE (GigaByte @ 28-06-2018, 09:43)
Без таймера не се ли маха толкова бързо, че никой да не го види ?
Не съм тествал де, но така си мисля.

Ами при мене си се вижда нормално. Това все пак е C++ с Qt – система по принцип тежка и бавноподвижна. icon_twisted.gif

Публикувано от: SuN 28-06-2018, 09:24
QUOTE
И повтарям, няма как туулкит като Qt4 със дата на излизане 2006-та да добави С++11 по средата на жизненият си цикъл.

Абе може, ама много ще го псуват автора. icon_smile.gif

Публикувано от: johnfound 28-06-2018, 09:32
Добавих и правилната реализация на един стартиран екземпляр. Не се самозаключва.

За разнообразие е в отделен бранч. За превключване към този бранч:

CODE
fossil co OneInstance


А може да се отвори и втора директория с чекаут (за fossil това е нормален workflow):

CODE
mkdir OneInstance
cd OneInstance
fossil open WHERE_IS_THE_REPO/kbgoffice.fossil OneInstance

Публикувано от: GigaByte 28-06-2018, 10:06
Мда работи едната инстанция
Вярно сплаша държи все едно има таймер
Види се icon_lol.gif

Публикувано от: wqw 28-06-2018, 16:42
https://asm32.info/fossil/repo/kbgoffice/artifact/a1c1fdddeb8ded9b

Абе това с кирилицата на въпросителни проблем на fossil ли е или на web interface-а? Или е забравен еквивалентна на .gitattributes тука?

cheers,
</wqw>

Публикувано от: johnfound 28-06-2018, 17:14
QUOTE (wqw @ 28-06-2018, 17:42)
https://asm32.info/fossil/repo/kbgoffice/artifact/a1c1fdddeb8ded9b

Абе това с кирилицата на въпросителни проблем на fossil ли е или на web interface-а? Или е забравен еквивалентна на .gitattributes тука?

cheers,
</wqw>

Просто файла не е utf-8, а не посмях да го конвертирам, защото тогава ще се измени и логиката на проверките. Иначе fossil си дава предупреждение, че файла не е уникод, ама аз му казвам да не обръща внимание. icon_smile.gif

Публикувано от: wqw 28-06-2018, 17:21
QUOTE (johnfound @ 28-06-2018, 17:14)
. . . ама аз му казвам да не обръща внимание. icon_smile.gif

Ама кажи му, че е cp1251 направо да не се шашка. Или fossil само utf-8 разбира?

В смисъл, то не е лесно -- в хранилището трябва да си е cp1251 обаче в web interface трябва да го конвертира в utf-8 ако ще ни сервира html-а в utf-8

cheers,
</wqw>

Публикувано от: johnfound 28-06-2018, 17:43
QUOTE (wqw @ 28-06-2018, 18:21)
QUOTE (johnfound @ 28-06-2018, 17:14)
. . . ама аз му казвам да не обръща внимание. icon_smile.gif

Ама кажи му, че е cp1251 направо да не се шашка. Или fossil само utf-8 разбира?

В смисъл, то не е лесно -- в хранилището трябва да си е cp1251 обаче в web interface трябва да го конвертира в utf-8 ако ще ни сервира html-а в utf-8

cheers,
</wqw>

fossil разбира само уникод и очаква всички файлове да са такива. И много правилно! Няма какво да се занимава с остарели формати и да се поощряват лоши практики. Ако го показваше правилно, някой ще си помисли, че е нормално да се използват такива формати.

Публикувано от: akrachev 28-06-2018, 18:34
Някой поддържа ли още код базиран на COM (Component Object Model) ?

Публикувано от: dvader 28-06-2018, 19:12
QUOTE (akrachev @ 28-06-2018, 18:34)
Някой поддържа ли още код базиран на COM (Component Object Model) ?

Аз.
Легаси до дупка...

Публикувано от: wqw 28-06-2018, 22:21
QUOTE (johnfound @ 28-06-2018, 17:43)
fossil разбира само уникод и очаква всички файлове да са такива. И много правилно!

You mad?! Има куп legacy компилатори, за които сорсовете *не може* да са в никакъв unicode.

Излиза че не могат да ползват великата fossil, а трябва да се задоволяват със Visual SourceSafe. . . Shame!

На 99% съм сигурен е fossil поддържа non-unicode сорсове и non-unicode .txt файлове и non-unicode .ps файлове.

cheers,
</wqw>

Публикувано от: johnfound 28-06-2018, 22:36
QUOTE (wqw @ 28-06-2018, 23:21)
На 99% съм сигурен е fossil поддържа non-unicode сорсове и non-unicode .txt файлове и non-unicode .ps файлове.

Естествено че поддържа. Както виждаш точно такъв файл съм вкарал без проблеми в проекта.

Просто fossil изобщо не се интересува в каква кодировка е не-уникод файла, не пази такава информация и затова не може правилно да показва такива файлове във уеб интерфейса.

А иначе, всичко което касае контрола на версиите си работи без проблеми. Това според мене е очевидно и чак се чудя защо трябва да го обяснявам. Как въобще би могло да бъде по друг начин???

Публикувано от: wqw 29-06-2018, 00:22
Значи първо беше че fossil поддържа само unicode файлове, сега се оказа че без проблеми си вкарал файла, макар че излизат въпросителни за кирилицата (за мене това си е проблем), като обяснението е че fossil не се интересува от кодировката, ама иначе контрола на версиите е ток и жица.

Е как прави/показва diff на non-unicode файлове като не се интересува от кодировката?

cheers,
</wqw>

Публикувано от: johnfound 29-06-2018, 05:52
QUOTE (wqw @ 29-06-2018, 01:22)
Значи първо беше че fossil поддържа само unicode файлове, сега се оказа че без проблеми си вкарал файла, макар че излизат въпросителни за кирилицата (за мене това си е проблем), като обяснението е че fossil не се интересува от кодировката, ама иначе контрола на версиите е ток и жица.

Е как прави/показва diff на non-unicode файлове като не се интересува от кодировката?

cheers,
</wqw>

Че къде в diff алгоритъма има кодировка??? icon_eek.gif

Публикувано от: akrachev 29-06-2018, 14:17
QUOTE (dvader @ 28-06-2018, 19:12)
QUOTE (akrachev @ 28-06-2018, 18:34)
Някой поддържа ли още код базиран на COM (Component Object Model) ?

Аз.
Легаси до дупка...

Благодаря. Библиотеката която ми беше направил работи безотказно.

Има вероятност да догговоря да поддържам една система която има един модул COM+ сървър. Ще ти пиша ако успея.

Публикувано от: dvader 29-06-2018, 15:12
QUOTE (akrachev @ 29-06-2018, 14:17)
Ще ти пиша ако успея.

ACK

Публикувано от: wqw 29-06-2018, 17:00
QUOTE (johnfound @ 29-06-2018, 05:52)
Че къде в diff алгоритъма има кодировка???  icon_eek.gif

Виж сега, погледни в utf-8 какво се получава като сравняваш А -> D0 90 и Б -> D0 91 и понеже. . . хммм, абе аз може ли ти. . .

Печелиш, хвана ме, няма къде, прав си, тука се изложих -- NOT! Само дето от такива дървени философии и хоп във fosil една кирилица не можете да изкарате, прави сметка!

Говоря за реален проект, в който си седят въпросителните, не за някакъв unicorn heaven който ни пробутвате и където дъгата и всички сорсове са в unicode.

Печелиш, хвана ме. . .

cheers,
</wqw>

Публикувано от: johnfound 29-06-2018, 17:23
QUOTE (wqw @ 29-06-2018, 18:00)
Говоря за реален проект, в който си седят въпросителните, не за някакъв unicorn heaven който ни пробутвате и където дъгата и всички сорсове са в unicode.

Какъв е проблемът бе човек? Клонираш и чекаутваш файловете и ги получаваш в оригиналния им вид. Ако имаш с какво да ги отвориш, то отваряш си ги и си ги гледаш.

Това е нормалния начин за работа със система за контрол на версиите. Не само с fossil, със всяка система за контрол на версиите. Или поне аз не знам такава, в която да се задава кой файл в каква кодировка е.

Уеб интерфейса е само глезотийка, която се използва всъщност доста рядко. И заради още по-редкия случай, в който няма да можеш да прочетеш през уеб интерфейса файл с някаква екзотична кодировка, да се пази излишна информация за всеки файл е малко извратено, не смяташ ли?

При това, забележи, тази информация не може да се открива автоматично, потребителя трябва да я задава ръчно. И да се грижи тя да е актуална...


Публикувано от: Gamma Goblin 29-06-2018, 18:18
Спорите за глупости - напълно ненужно е да се зададва кодировката. Също не живеем във времето на уин 3.11, така че е престъпление е да се ползва нещо разлишно от уникод.

Публикувано от: bvbfan 29-06-2018, 18:24
Тоя, който е писал кода е ползвал Лайняндос, какво има да се обсъжда още.

Публикувано от: dvader 29-06-2018, 18:30
QUOTE (Gamma Goblin @ 29-06-2018, 18:18)
Спорите за глупости - напълно ненужно е да се зададва кодировката.

Говорехме за diff а не за система за контрол на версиите.
Та в този ред на мисли, какво ще видя ако пробутам на diff файл с UTF-16 кодировка?

Публикувано от: johnfound 29-06-2018, 18:31
А бе, вместо да спорим за кодировките, погледнете какво прави въпросния код в който има използвани символи на 1251 и дайте да го поправим така, че да стане и той utf-8 – например могат да се заменят константите в кавички с числовите значения.

А по-кардиналното решение е да се види защо се използва такава кодировка – аз подозирам, че базата данни на речника е кодирана в 1251 – и да се прекодира всичко в utf-8, така че да няма проблеми в бъдеще.

Базите не са включени в кода, но ако трябва могат да се включат.

Публикувано от: Gamma Goblin 29-06-2018, 18:36
QUOTE (dvader @ 29-06-2018, 18:30)
QUOTE (Gamma Goblin @ 29-06-2018, 18:18)
Спорите за глупости - напълно ненужно е да се зададва кодировката.

Говорехме за diff а не за система за контрол на версиите.
Та в този ред на мисли, какво ще видя ако пробутам на diff файл с UTF-16 кодировка?

моя diff на линукса не може да сравнява utf16 - казва че бинарните файлове са различни и толкоз

Публикувано от: thrawn 30-06-2018, 12:20
QUOTE (johnfound @ 29-06-2018, 18:31)
... базата данни на речника е кодирана в 1251 – и да се прекодира всичко в utf-8, така че да няма проблеми в бъдеще.

Обикновено няма значение в каква кодова таблица са данните в базата данни. При свързване с нея се посочва таблица в която се подават данните и такава в която се получават. Самата база данни си прави конвертирането от / към таблицата в която съхранява данните.

Публикувано от: johnfound 30-06-2018, 15:26
QUOTE (thrawn @ 30-06-2018, 13:20)
Обикновено няма значение в каква кодова таблица са данните в базата данни. При свързване с нея се посочва таблица в която се подават данните и такава в която се получават. Самата база данни си прави конвертирането от / към таблицата в която съхранява данните.

Да, ама в случая под "база данни" не се разбира това, което ти си разбирал под "база данни" в този пост, а далеч по общо и абстрактно понятие, изразяващо се в няколко бинарни файла с разширение .dat и неясен формат. Разбира се, от сорсовете може да се види какъв е формата, но мене честно казано ме мързи.

Публикувано от: cellfourteen 12-07-2018, 02:50
@johnfound, благодаря, че си преправил кода за Qt5. Превеждам и пиша и с Линукс ползвам тази програма постоянно, защото и аз си я харесвам icon_smile.gif Жалко, че така и не се появи в apt хранилищата през годините. За качеството на кода не мога да говоря, но е лека, има всички необходими допълнителни настройки и особено на стария ми нетбук от 2009-а върши отлична работа с българо-английските и английско-българските дефиниции и с базата на Wordnet, вместо да мъча компютъра с GoldenDict. От опит мога да кажа, че за всекидневен превод (превеждам художествена литература) с нея се работи светкавично, без човек да си отделя ръцете от клавиатурата и да си прекъсва мисълта -- една от причините да я ценя толкова много. Сега я компилирах с Qt Creator и за Windows и съм много доволен, благодаря още веднъж!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)