cgi-скрипт на C++ для разгадывания кроссвордов, тестирование и советы по коду |
Здравствуйте, гость ( Вход | Регистрация )
cgi-скрипт на C++ для разгадывания кроссвордов, тестирование и советы по коду |
xwicked |
16.10.2012, 14:05
Сообщение
#1
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте!
Всем предлагаю посмотреть на очередную мою поделку. Вопреки советам Дмитрия Котерова и Алексея Костарева из книжки по php5, я решил писать cgi-скрипт на C++, с использованием классов . Программа для разгадывание кроссвордов. GPL v2. Функции: Цитата - Отгадывание кроссворда; - Проверка правильности отгадывания кроссворда; Рабочий вариант на FreeBSD-сервере проверял на своём Sony Ericsson K700i. Исходный код 1.0.0 Это обычная C++ программа, которая работает на чтение, разбор и вывод строк из/на стандартный ввод/вывод. Всё! Как в винде мне wchar_t заставить использовать 4 байта или может есть другой способ хранения расширенных строк? Прошу критику. P.S. Для тех, кто будет сетовать на двоичный формат разгадываемого кроссворда, прошу дать ссылку на xml-парсер, написанный на чистом C/C++, так как должно будет завестись на FreeBSD-сервере. И чтобы самая быстрая была(!), так как ресурсы моего хостинга ограничены Благодарю! |
|
|
Алексей1153 |
16.10.2012, 14:45
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Как в винде мне wchar_t заставить использовать 4 байта или может есть другой способ хранения расширенных строк? в wchar_t - никак, но можно хранить UTF-8 в std::string перекодировка в винде - MultiByteToWideChar и WideCharToMultiByte а сетовать на двоичный формат никто не будет, уверяю Сообщение отредактировал Алексей1153 - 16.10.2012, 14:45 |
|
|
xwicked |
16.10.2012, 15:10
Сообщение
#3
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
в wchar_t - никак, но можно хранить UTF-8 в std::string Я в принципе уже в коде этот способ использовал поэтому, после небольшого изменения, получится настоящий кроссвариант.
перекодировка в винде - MultiByteToWideChar и WideCharToMultiByte а сетовать на двоичный формат никто не будет, уверяю |
|
|
Iron Bug |
16.10.2012, 21:55
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
прошу дать ссылку на xml-парсер, написанный на чистом C/C++ RapidXML или его обёртка, с более высокоуровневым интeрфейсом - boost::property_tree вообще, зачем в такой мелкой задаче скорость парсера? XML парсеры есть двух типов: DOM и SAX. DOM жрут много памяти, а SAX жрут много проца. выбирай, что тебе больше подходит. но чтение формата кроссворда - это просто смехотворная нагрузка на парсер. так что в данном случае совершенно пофиг, какой из парсеров юзать, а их на С/C++ очень много. |
|
|
Litkevich Yuriy |
17.10.2012, 0:12
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
xwicked, слушай, я до сих пор не понимаю, cgi - это просто любой исполняемый файл (будь то exe-шник или Питоновский сценарий) у которого переименовали расширение в cgi. Или это какой-то особый формат файла?
|
|
|
xwicked |
17.10.2012, 8:31
Сообщение
#6
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
RapidXML или его обёртка, с более высокоуровневым интeрфейсом - boost::property_tree Благодарю за ссылки! Boost сразу отпадает - его нет на сервере моего хостинга и ничего дополнительного они не устанавливают, даже за отдельную плату.вообще, зачем в такой мелкой задаче скорость парсера? XML парсеры есть двух типов: DOM и SAX. DOM жрут много памяти, а SAX жрут много проца. выбирай, что тебе больше подходит. но чтение формата кроссворда - это просто смехотворная нагрузка на парсер. так что в данном случае совершенно пофиг, какой из парсеров юзать, а их на С/C++ очень много. Глядя на общемировые статистики продаж мобильных телефонов, могу предположить, что мне такая скорость будет в будущем крайне необходима, чтобы не делать задержки как на Зайцев.нет или на том же SourceForge.net в 5, 10, 40 секунд. xwicked, слушай, я до сих пор не понимаю, cgi - это просто любой исполняемый файл (будь то exe-шник или Питоновский сценарий) у которого переименовали расширение в cgi. Или это какой-то особый формат файла? Это просто название:Цитата CGI (от англ. Common Gateway Interface — «общий интерфейс шлюза») — стандарт интерфейса, используемого для связи внешней программы с веб-сервером. Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято называть шлюзом, хотя многие предпочитают названия «скрипт» (сценарий) или «CGI-программа».
|
|
|
Алексей1153 |
17.10.2012, 14:29
Сообщение
#7
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
xwicked, есть оболочка над rapidxml, могу поделиться. Могу даже пример сделать, если структуру опишешь (где-то я заготовку тебе рисовал уже)
|
|
|
Litkevich Yuriy |
17.10.2012, 19:46
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Iron Bug |
17.10.2012, 20:53
Сообщение
#9
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Boost сразу отпадает - его нет на сервере моего хостинга и ничего дополнительного они не устанавливают, даже за отдельную плату. Глядя на общемировые статистики продаж мобильных телефонов, могу предположить, что мне такая скорость будет в будущем крайне необходима, чтобы не делать задержки как на Зайцев.нет или на том же SourceForge.net в 5, 10, 40 секунд. буст спокойно компилится статически и линкуется прямо к софтине. так что опасения непонятны. к тому же, его не обязательно "устанавливать". поставить при линковке поиск в локальной папке и туда всё сложить - тоже вариант без всякой установки. у Sorceforge миллионы юзеров. какбэ я не думаю, что даже при самом удачном раскладе разгадывать кроссворды кинется половина юзеров инета |
|
|
xwicked |
18.10.2012, 0:11
Сообщение
#10
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
xwicked, есть оболочка над rapidxml, могу поделиться. Могу даже пример сделать, если структуру опишешь (где-то я заготовку тебе рисовал уже) Понял, но позже.... он там не обязателен, в твою программу может быть вкопилирован статически нужный кусок буста. Буду иметь в виду.... так что опасения непонятны. к тому же, его не обязательно "устанавливать". поставить при линковке поиск в локальной папке и туда всё сложить - тоже вариант без всякой установки. Так что непонятного - новичок же, не профессионал же, многого же ещё и не знает у Sorceforge миллионы юзеров. какбэ я не думаю, что даже при самом удачном раскладе разгадывать кроссворды кинется половина юзеров инета Не кинется разгадывать - так, с появлением генератора - кинется составлять - газеты ж с журналами пока поди никто не отменял Сообщение отредактировал xwicked - 18.10.2012, 0:15 |
|
|
Текстовая версия | Сейчас: 30.11.2024, 15:16 |