crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> 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  


Цитата(xwicked @ 16.10.2012, 17:05) *
Как в винде мне 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  


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

а сетовать на двоичный формат никто не будет, уверяю :)
Я в принципе уже в коде этот способ использовал поэтому, после небольшого изменения, получится настоящий кроссвариант.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 16.10.2012, 21:55
Сообщение #4


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(xwicked @ 16.10.2012, 17:05) *
прошу дать ссылку на 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  


Цитата(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
  опции профиля:
сообщение 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  


Цитата(xwicked @ 17.10.2012, 11:31) *
Boost сразу отпадает - его нет на сервере моего хостинга
он там не обязателен, в твою программу может быть вкопилирован статически нужный кусок буста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 17.10.2012, 20:53
Сообщение #9


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(xwicked @ 17.10.2012, 11:31) *
Boost сразу отпадает - его нет на сервере моего хостинга и ничего дополнительного они не устанавливают, даже за отдельную плату.
Глядя на общемировые статистики продаж мобильных телефонов, могу предположить, что мне такая скорость будет в будущем крайне необходима, чтобы не делать задержки как на Зайцев.нет или на том же SourceForge.net в 5, 10, 40 секунд. :)

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

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
xwicked
  опции профиля:
сообщение 18.10.2012, 0:11
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 2.8.2011
Из: Старый Оскол
Пользователь №: 2781

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

Сообщение отредактировал xwicked - 18.10.2012, 0:15
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 15:16