Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: cgi-скрипт на C++ для разгадывания кроссвордов
Форум на CrossPlatform.RU > Курилка > Софт и утилиты
xwicked
Здравствуйте!

Всем предлагаю посмотреть на очередную мою поделку.
Вопреки советам Дмитрия Котерова и Алексея Костарева из книжки по php5,
я решил писать cgi-скрипт на C++, с использованием классов :) .
Программа для разгадывание кроссвордов. GPL v2.
Функции:
Цитата
- Отгадывание кроссворда;
- Проверка правильности отгадывания кроссворда;

Рабочий вариант на FreeBSD-сервере проверял на своём Sony Ericsson K700i.
Исходный код 1.0.0

Это обычная C++ программа, которая работает на чтение, разбор и вывод строк из/на стандартный ввод/вывод. Всё!
Как в винде мне wchar_t заставить использовать 4 байта или может есть другой способ хранения расширенных строк?
Прошу критику.
P.S. Для тех, кто будет сетовать на двоичный формат разгадываемого кроссворда, прошу дать ссылку на xml-парсер, написанный на чистом C/C++, так как должно будет завестись на FreeBSD-сервере. И чтобы самая быстрая была(!), так как ресурсы моего хостинга ограничены ;)

Благодарю!
Алексей1153
Цитата(xwicked @ 16.10.2012, 17:05) *
Как в винде мне wchar_t заставить использовать 4 байта или может есть другой способ хранения расширенных строк?

в wchar_t - никак, но можно хранить UTF-8 в std::string
перекодировка в винде - MultiByteToWideChar и WideCharToMultiByte

а сетовать на двоичный формат никто не будет, уверяю :)
xwicked
Цитата(Алексей1153 @ 16.10.2012, 15:45) *
в wchar_t - никак, но можно хранить UTF-8 в std::string
перекодировка в винде - MultiByteToWideChar и WideCharToMultiByte

а сетовать на двоичный формат никто не будет, уверяю :)
Я в принципе уже в коде этот способ использовал поэтому, после небольшого изменения, получится настоящий кроссвариант.
Iron Bug
Цитата(xwicked @ 16.10.2012, 17:05) *
прошу дать ссылку на xml-парсер, написанный на чистом C/C++

RapidXML или его обёртка, с более высокоуровневым интeрфейсом - boost::property_tree
вообще, зачем в такой мелкой задаче скорость парсера? XML парсеры есть двух типов: DOM и SAX. DOM жрут много памяти, а SAX жрут много проца. выбирай, что тебе больше подходит. но чтение формата кроссворда - это просто смехотворная нагрузка на парсер. так что в данном случае совершенно пофиг, какой из парсеров юзать, а их на С/C++ очень много.
Litkevich Yuriy
xwicked, слушай, я до сих пор не понимаю, cgi - это просто любой исполняемый файл (будь то exe-шник или Питоновский сценарий) у которого переименовали расширение в cgi. Или это какой-то особый формат файла?
xwicked
Цитата(Iron Bug @ 16.10.2012, 22:55) *
RapidXML или его обёртка, с более высокоуровневым интeрфейсом - boost::property_tree
вообще, зачем в такой мелкой задаче скорость парсера? XML парсеры есть двух типов: DOM и SAX. DOM жрут много памяти, а SAX жрут много проца. выбирай, что тебе больше подходит. но чтение формата кроссворда - это просто смехотворная нагрузка на парсер. так что в данном случае совершенно пофиг, какой из парсеров юзать, а их на С/C++ очень много.
Благодарю за ссылки! Boost сразу отпадает - его нет на сервере моего хостинга и ничего дополнительного они не устанавливают, даже за отдельную плату.
Глядя на общемировые статистики продаж мобильных телефонов, могу предположить, что мне такая скорость будет в будущем крайне необходима, чтобы не делать задержки как на Зайцев.нет или на том же SourceForge.net в 5, 10, 40 секунд. :)
Цитата(Litkevich Yuriy @ 17.10.2012, 1:12) *
xwicked, слушай, я до сих пор не понимаю, cgi - это просто любой исполняемый файл (будь то exe-шник или Питоновский сценарий) у которого переименовали расширение в cgi. Или это какой-то особый формат файла?
Это просто название:
Цитата
CGI (от англ. Common Gateway Interface — «общий интерфейс шлюза») — стандарт интерфейса, используемого для связи внешней программы с веб-сервером. Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято называть шлюзом, хотя многие предпочитают названия «скрипт» (сценарий) или «CGI-программа».
Алексей1153
xwicked, есть оболочка над rapidxml, могу поделиться. Могу даже пример сделать, если структуру опишешь (где-то я заготовку тебе рисовал уже)
Litkevich Yuriy
Цитата(xwicked @ 17.10.2012, 11:31) *
Boost сразу отпадает - его нет на сервере моего хостинга
он там не обязателен, в твою программу может быть вкопилирован статически нужный кусок буста.
Iron Bug
Цитата(xwicked @ 17.10.2012, 11:31) *
Boost сразу отпадает - его нет на сервере моего хостинга и ничего дополнительного они не устанавливают, даже за отдельную плату.
Глядя на общемировые статистики продаж мобильных телефонов, могу предположить, что мне такая скорость будет в будущем крайне необходима, чтобы не делать задержки как на Зайцев.нет или на том же SourceForge.net в 5, 10, 40 секунд. :)

буст спокойно компилится статически и линкуется прямо к софтине. так что опасения непонятны. к тому же, его не обязательно "устанавливать". поставить при линковке поиск в локальной папке и туда всё сложить - тоже вариант без всякой установки.
у Sorceforge миллионы юзеров. какбэ я не думаю, что даже при самом удачном раскладе разгадывать кроссворды кинется половина юзеров инета :)

xwicked
Цитата(Алексей1153 @ 17.10.2012, 15:29) *
xwicked, есть оболочка над rapidxml, могу поделиться. Могу даже пример сделать, если структуру опишешь (где-то я заготовку тебе рисовал уже)
Понял, но позже.
Цитата(Litkevich Yuriy @ 17.10.2012, 20:46) *
... он там не обязателен, в твою программу может быть вкопилирован статически нужный кусок буста.
Буду иметь в виду.
Цитата(Iron Bug @ 17.10.2012, 21:53) *
... так что опасения непонятны. к тому же, его не обязательно "устанавливать". поставить при линковке поиск в локальной папке и туда всё сложить - тоже вариант без всякой установки.
у Sorceforge миллионы юзеров. какбэ я не думаю, что даже при самом удачном раскладе разгадывать кроссворды кинется половина юзеров инета :)
Так что непонятного - новичок же, не профессионал же, многого же ещё и не знает :rolleyes:
Не кинется разгадывать - так, с появлением генератора - кинется составлять - газеты ж с журналами пока поди никто не отменял ;)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.