cppcms-users Mailing List for CppCMS C++ Web Framework (Page 47)
Brought to you by:
artyom-beilis
You can subscribe to this list here.
| 2009 |
Jan
|
Feb
(22) |
Mar
|
Apr
(3) |
May
|
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
(15) |
Nov
(16) |
Dec
(13) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2010 |
Jan
(4) |
Feb
|
Mar
(8) |
Apr
(8) |
May
(8) |
Jun
(36) |
Jul
(63) |
Aug
(126) |
Sep
(47) |
Oct
(66) |
Nov
(46) |
Dec
(42) |
| 2011 |
Jan
(87) |
Feb
(24) |
Mar
(54) |
Apr
(21) |
May
(22) |
Jun
(18) |
Jul
(22) |
Aug
(101) |
Sep
(57) |
Oct
(33) |
Nov
(34) |
Dec
(66) |
| 2012 |
Jan
(64) |
Feb
(76) |
Mar
(73) |
Apr
(105) |
May
(93) |
Jun
(83) |
Jul
(84) |
Aug
(88) |
Sep
(57) |
Oct
(59) |
Nov
(35) |
Dec
(49) |
| 2013 |
Jan
(67) |
Feb
(17) |
Mar
(49) |
Apr
(64) |
May
(87) |
Jun
(64) |
Jul
(93) |
Aug
(23) |
Sep
(15) |
Oct
(16) |
Nov
(62) |
Dec
(73) |
| 2014 |
Jan
(5) |
Feb
(23) |
Mar
(21) |
Apr
(11) |
May
(1) |
Jun
(19) |
Jul
(27) |
Aug
(16) |
Sep
(5) |
Oct
(37) |
Nov
(12) |
Dec
(9) |
| 2015 |
Jan
(7) |
Feb
(7) |
Mar
(44) |
Apr
(28) |
May
(5) |
Jun
(12) |
Jul
(8) |
Aug
|
Sep
(39) |
Oct
(34) |
Nov
(30) |
Dec
(34) |
| 2016 |
Jan
(66) |
Feb
(23) |
Mar
(33) |
Apr
(15) |
May
(11) |
Jun
(15) |
Jul
(26) |
Aug
(4) |
Sep
(1) |
Oct
(30) |
Nov
(10) |
Dec
|
| 2017 |
Jan
(52) |
Feb
(9) |
Mar
(24) |
Apr
(16) |
May
(9) |
Jun
(12) |
Jul
(33) |
Aug
(8) |
Sep
|
Oct
(1) |
Nov
(2) |
Dec
(6) |
| 2018 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
(14) |
Jun
(1) |
Jul
(9) |
Aug
(1) |
Sep
(13) |
Oct
(8) |
Nov
(2) |
Dec
(2) |
| 2019 |
Jan
(1) |
Feb
(1) |
Mar
(3) |
Apr
(3) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
| 2020 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(9) |
Jul
(6) |
Aug
(25) |
Sep
(10) |
Oct
(10) |
Nov
(6) |
Dec
|
| 2021 |
Jan
|
Feb
|
Mar
(7) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
(9) |
Oct
(1) |
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
|
From: Joseph A. <jsa...@gm...> - 2013-09-17 20:10:14
|
Hi Artyom, I have been tinkering with CPPCMS in the last few weeks after its discovery and I must say it is a wonderful work from you. It has a great potential as a highly scalable and light-weight web server application. I have a set C/C++ libraries which has so far no face and I would like to use CPPCMS to build a WebAPI face for them. So I thank you very much for contributing a such a great useful product. My question is, within the web application process, how I do I get to know when a session is loaded and when the session is saved (to the file or other persistence options you have provided). Session interface currently exposes "save" and "load" methods. It also allows us to set an expiration policy which enables the session to expire when it is idle. But how the web application process will be notified of such events as Session::Load and Session::Save in order to employ some critical operation such as updating a table in the database about when a user's session started and terminated ? Your advice is greatly appreciated. Joseph. |
|
From: Artyom B. <art...@ya...> - 2013-09-09 07:25:22
|
> >Hi Artyom > >It looks like you are quite a busy man but what are the plans for a new cppcms >release? > >If I read http://cppcms.com/wikipp/en/page/cppcms_1x_tasks it looks >like that there >are quite a few (open?) tasks. Would it make more sense to strip down the number >of planed features and release more often a new version? The most important task I really need to implement is http://cppcms.com/wikipp/en/page/cppcms_1x_tasks#Add.Support.of.multiple.event.loops Because it is critical for scalability Also this one: http://cppcms.com/wikipp/en/page/cppcms_1x_tasks#Provide.Plugin.Framework probably would be postponed - mostly because it requires some design and there is already some basic support of it + support in cppcms_tmp_cc that is ready. And several other small tasks that would not take much time: http://cppcms.com/wikipp/en/page/cppcms_1x_tasks#Improve.Support.of.RESTful.services http://cppcms.com/wikipp/en/page/cppcms_1x_tasks#Improve.file.serving.performance Also I'm planning to publish some notes about the project state. >Btw did you see http://sourceforge.net/p/cppcms/bugs/104/ ? Yes. See it is a bug in CMake. You can extract tar.bz2 using 7zip without problems. The problem is that zip can't contain symlinks - and some people would try to download it anyway even on Linux and will get failed tests. So I'd rather prefer not to provide zip. Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ >________________________________ > From: Christian Gmeiner <chr...@gm...> >To: cpp...@li... >Sent: Monday, September 9, 2013 9:05 AM >Subject: [Cppcms-users] Current state of development > > > >greets >-- >Christian Gmeiner, MSc > >------------------------------------------------------------------------------ >Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more! >Discover the easy way to master current and previous Microsoft technologies >and advance your career. Get an incredible 1,500+ hours of step-by-step >tutorial videos with LearnDevNow. Subscribe today and save! >http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk >_______________________________________________ >Cppcms-users mailing list >Cpp...@li... >https://lists.sourceforge.net/lists/listinfo/cppcms-users > > > |
|
From: Christian G. <chr...@gm...> - 2013-09-09 07:06:14
|
Hi Artyom It looks like you are quite a busy man but what are the plans for a new cppcms release? If I read http://cppcms.com/wikipp/en/page/cppcms_1x_tasks it looks like that there are quite a few (open?) tasks. Would it make more sense to strip down the number of planed features and release more often a new version? Btw did you see http://sourceforge.net/p/cppcms/bugs/104/ ? greets -- Christian Gmeiner, MSc |
|
From: Christian G. <chr...@gm...> - 2013-09-09 06:59:32
|
Hi 2013/7/11 Artyom Beilis <art...@ya...>: > Yes, the problem is IE. The specifications require to parse "c:\foo\bar" as > c:foobar were "\" is escape character. > > So there is nothing really can be done if you want to follow the standard. > > The second point... NEVER, EVER EVER use the provided file name for naming > files... EVER. > > Creating file like > /tmp/If37354f45a5f672658789c3a33e95e68/user-provided-name.pdf > > Can expose you to numerous security bugs. > > The trivial one is use stuff like > "user-provided-name/../../../var/www/mycode.php" and save it > > Of course checking for ".." would not be enough as there may be many > interesting stuff to handle for example > on windows it may be file named "con" etc. etc. There virtually unlimited > number of attacks if the user gives the name to file. > > So always save files with names you had generated. > thanks for this tipp... -- Christian Gmeiner, MSc > Artyom Beilis > -------------- > CppCMS - C++ Web Framework: http://cppcms.com/ > CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ > > ________________________________ > From: Christian Gmeiner <chr...@gm...> > To: cpp...@li... > Sent: Thursday, July 11, 2013 2:21 PM > Subject: Re: [Cppcms-users] Problem with http::file and the returned file > name > > ping > -- > Christian Gmeiner, MSc > > > 2013/7/5 Christian Gmeiner <chr...@gm...>: >> Hi all. >> >>> In my web application I make use of a file uploader, which works like >>> a charm. But >>> I run into this problem: >>> >>> Some older IE versions (6,7,8) are sending the full path of the uploaded >>> file >>> in the multipart data - verified via wireshark. >>> All other browsers (chrome, ff, safari) are sending only the filename. >>> >>> This looks like: >>> >>> Jul 5 10:24:51 chgm-pc tssw: Upload: request POST: id 'upload' >>> (upload.cpp:21) >>> Jul 5 10:24:51 chgm-pc tssw: upload: storing file C:Dokumente und >>> EinstellungengmeinerEigene DateienDownloads01_257782.pdf - size: >>> 2947635 (upload.cpp:41) >>> Jul 5 10:24:51 chgm-pc tssw: upload: >>> /tmp/If37354f45a5f672658789c3a33e95e68/C:Dokumente und >>> EinstellungengmeinerEigene DateienDownloads01_257782.pdf >>> (upload.cpp:48) >>> >>> I thought that I could filter out the substring starting from the last >>> \ in the filename, but cppcms filters away all \. >>> Is there a way to configure it or did I found a bug? >>> >>> The file looks in wireshark like: >>> C:\Dokumente und Einstellungen\gmeiner\Eigene >>> Dateien\Download\s01_257782.pdf >>> >> >> Sooo I found the problem in cppcms-1.0.4/private/http_protocol.h: >> >> >> template<typename It> >> std::string unquote(It &begin,It end) >> { >> It p=begin; >> std::string result; >> if(p>=end || *p!='\"') >> return result; >> result.reserve(end-p); >> p++; >> while(p < end) { >> char c=*p++; >> if(c=='\"') { >> begin=p; >> return result; >> } >> else if(c=='\\' && p<end) <-- >> result+= *p++; <-- >> else >> result+=c; >> } >> result.clear(); >> return result; >> } >> >> If I comment out the else if everything works. >> >> How shall I proceed? Send a patch? >> >> -- >> Christian Gmeiner, MSc > > ------------------------------------------------------------------------------ > See everything from the browser to the database with AppDynamics > Get end-to-end visibility with application monitoring from AppDynamics > Isolate bottlenecks and diagnose root cause in seconds. > Start your free trial of AppDynamics Pro today! > http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > > > > ------------------------------------------------------------------------------ > See everything from the browser to the database with AppDynamics > Get end-to-end visibility with application monitoring from AppDynamics > Isolate bottlenecks and diagnose root cause in seconds. > Start your free trial of AppDynamics Pro today! > http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > |
|
From: Klaus W. <kjw...@ya...> - 2013-08-30 10:30:54
|
Hi Sab, I too found it useful to test against the application directly and took a leaf out of Artyom's tests, namely tc_test.cpp and the related dummy_api.h. I attached the cpp file. Feel free to start from there and to deliver feedback. Cheers! K On 05/14/2013 02:59 PM, Sab wrote: > Hi Artyom, > > do you see any serious difficulties with introducing a test mode in CppCMS > that would allow users to fill an http_request object "manually" in a test > framework and pass it to a cppcms application class, simulating a request from > a client? The application class could then fill the http_response object and > pass it back to the test framework for result check. This would be a great way > to test CppCMS application classes. Do you think, such a "test pad" could be > integrated in a future release? > > Sab > > > > > ------------------------------------------------------------------------------ > AlienVault Unified Security Management (USM) platform delivers complete > security visibility with the essential security capabilities. Easily and > efficiently configure, manage, and operate all of your security controls > from a single console and one unified framework. Download a free trial. > http://p.sf.net/sfu/alienvault_d2d > |
|
From: Forgotten O. <dr...@gm...> - 2013-08-26 06:34:10
|
Hello, Is there a way for you to know if a session is actually being destructed due to timeout if server side session is used? Or do you have to keep track of this and issue a cppcms::session_interface::reset_session() ? Thanks. Regards, Mikhail -- "The gem cannot be polished without friction, nor man perfected without trials." |
|
From: Artyom B. <art...@ya...> - 2013-08-25 06:16:27
|
>________________________________ > From: Eric Gendron <con...@gm...> >So... >In production system for e-commerce using cppcms, > your advice is to use a webserver and running the cppcms app in cgi ? Yes, but not with CGI - use FastCGI or SCGI :-) >If so... >Apache or nginx ? Lighttpd :-) Seriously, any web server like Apache, Lighttpd, Nginx or Cherokee is fine. But.. Apache is very powerful but does not scale well for multiple connections. For example one one of the heavily loaded cppcms/lighttpd based sites we keep file descriptor limits much higher that default 1024. The apache even in mod_worker would use huge amount of memory for such a load - if it would be capable of handling it a tall. While lighttpd virtually does not feel it. So the actual choice is between lighttpd and nginx (or Cherokee). My personal preference is lighttpd, but nginx is fine as well as long as you use latest versions >=1.3.* http://blog.cppcms.com/post/99 Also many would disagree about my opinion about nginx. Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ |
|
From: Forgotten O. <dr...@gm...> - 2013-08-25 03:45:02
|
I would think nginx is a better choice. I seriously hope SSL would be implemented soon On 25 Aug 2013 11:32, "Eric Gendron" <con...@gm...> wrote: > So... > In production system for e-commerce using cppcms, your advice is to use a > webserver and running the cppcms app in cgi ? > > If so... > > Apache or nginx ? > On Aug 24, 2013 8:20 AM, "Artyom Beilis" <art...@ya...> wrote: > >> It is simple: >> >> - Internal web server is good for development and if is fine for embedded >> applications. >> - It is not very efficient in serving static files >> - It does not support many features of modern web servers, including SSL, >> vhosts etc. >> - Internal web server supports HTTP/1.0 responses only >> >> >> >> >> Artyom Beilis >> -------------- >> CppCMS - C++ Web Framework: http://cppcms.com/ >> CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ >> >> ------------------------------ >> *From:* Eric Gendron <con...@gm...> >> *To:* cpp...@li... >> *Sent:* Friday, August 16, 2013 6:57 PM >> *Subject:* [Cppcms-users] cppcms standalone really? >> >> Hi, >> >> I am interested to create a website with cppcms. I need authentification >> and probably ssl. I want it faster as possible... and I love C++ ! >> >> I have some questions, to be sure... >> >> I think cppcms can run without any webserver. What I think I saw with >> the hello world example. Is it correct that I can run it without Apache or >> nginx? If so... what could I need later that I won't be able to do if my >> site run directly without webserver? >> >> If I run my site without webserver, will it be ok for a lot of concurrent >> users? Or maybe the ability to run directly is limited to embeded devices >> or single user site ? >> >> Somebody know how faster is it comparing "standalone mode", running in >> "apache" and/or running in "nginx" ? >> >> Thanks for infos. >> >> E. >> >> >> >> ------------------------------------------------------------------------------ >> Get 100% visibility into Java/.NET code with AppDynamics Lite! >> It's a free troubleshooting tool designed for production. >> Get down to code-level detail for bottlenecks, with <2% overhead. >> Download for free and get started troubleshooting in minutes. >> >> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >> _______________________________________________ >> Cppcms-users mailing list >> Cpp...@li... >> https://lists.sourceforge.net/lists/listinfo/cppcms-users >> >> >> >> >> ------------------------------------------------------------------------------ >> Introducing Performance Central, a new site from SourceForge and >> AppDynamics. Performance Central is your source for news, insights, >> analysis and resources for efficient Application Performance Management. >> Visit us today! >> >> http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk >> _______________________________________________ >> Cppcms-users mailing list >> Cpp...@li... >> https://lists.sourceforge.net/lists/listinfo/cppcms-users >> >> > > ------------------------------------------------------------------------------ > Introducing Performance Central, a new site from SourceForge and > AppDynamics. Performance Central is your source for news, insights, > analysis and resources for efficient Application Performance Management. > Visit us today! > http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > > |
|
From: Eric G. <con...@gm...> - 2013-08-25 03:32:20
|
So... In production system for e-commerce using cppcms, your advice is to use a webserver and running the cppcms app in cgi ? If so... Apache or nginx ? On Aug 24, 2013 8:20 AM, "Artyom Beilis" <art...@ya...> wrote: > It is simple: > > - Internal web server is good for development and if is fine for embedded > applications. > - It is not very efficient in serving static files > - It does not support many features of modern web servers, including SSL, > vhosts etc. > - Internal web server supports HTTP/1.0 responses only > > > > > Artyom Beilis > -------------- > CppCMS - C++ Web Framework: http://cppcms.com/ > CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ > > ------------------------------ > *From:* Eric Gendron <con...@gm...> > *To:* cpp...@li... > *Sent:* Friday, August 16, 2013 6:57 PM > *Subject:* [Cppcms-users] cppcms standalone really? > > Hi, > > I am interested to create a website with cppcms. I need authentification > and probably ssl. I want it faster as possible... and I love C++ ! > > I have some questions, to be sure... > > I think cppcms can run without any webserver. What I think I saw with the > hello world example. Is it correct that I can run it without Apache or > nginx? If so... what could I need later that I won't be able to do if my > site run directly without webserver? > > If I run my site without webserver, will it be ok for a lot of concurrent > users? Or maybe the ability to run directly is limited to embeded devices > or single user site ? > > Somebody know how faster is it comparing "standalone mode", running in > "apache" and/or running in "nginx" ? > > Thanks for infos. > > E. > > > > ------------------------------------------------------------------------------ > Get 100% visibility into Java/.NET code with AppDynamics Lite! > It's a free troubleshooting tool designed for production. > Get down to code-level detail for bottlenecks, with <2% overhead. > Download for free and get started troubleshooting in minutes. > http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > > > > > ------------------------------------------------------------------------------ > Introducing Performance Central, a new site from SourceForge and > AppDynamics. Performance Central is your source for news, insights, > analysis and resources for efficient Application Performance Management. > Visit us today! > http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > > |
|
From: Artyom B. <art...@ya...> - 2013-08-24 12:22:34
|
Upgrading a lock from shared to unique can't be done in atomic way. It can't be done using POSIX API and it can't be done in Boost as well (see docs about upgrading). So if you want to upgrade the lock - just release shared lock and acquire unique one and of course be aware of the state that can change on between. So booster does not implement it as it is not really that useful. Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ >________________________________ > From: CN Liu <cn...@gr...> >To: cpp...@li... >Sent: Friday, August 23, 2013 7:10 PM >Subject: [Cppcms-users] upgrade_lock and upgrade_to_unique_lock are not implemented in BOOSTER > > > >Hi! > >I am trying to use boost::upgrade_lock and boost::upgrade_to_unique_lock as explained by Dalle in > >http://stackoverflow.com/questions/989795/example-for-boost-shared-mutex-multiple-reads-one-write > >---begin example code--- >void conditional_writer() >{ >boost::upgrade_lock< boost::shared_mutex > lock(_access); >// do work here, without anyone having exclusive access > >if (something) { > boost::upgrade_to_unique_lock< boost::shared_mutex > uniqueLock(lock); >// do work here, but now you have exclusive access >} > >// do more work here, without anyone having exclusive access >} >---end example code--- > >It appears that upgrade_lock and upgrade_to_unique_lock are not implemented in booster. Would someone please point me to the alternatives/workaround? > >Regards, >CN >------------------------------------------------------------------------------ >Introducing Performance Central, a new site from SourceForge and >AppDynamics. Performance Central is your source for news, insights, >analysis and resources for efficient Application Performance Management. >Visit us today! >http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk >_______________________________________________ >Cppcms-users mailing list >Cpp...@li... >https://lists.sourceforge.net/lists/listinfo/cppcms-users > > > |
|
From: Artyom B. <art...@ya...> - 2013-08-24 12:19:59
|
It is simple: - Internal web server is good for development and if is fine for embedded applications. - It is not very efficient in serving static files - It does not support many features of modern web servers, including SSL, vhosts etc. - Internal web server supports HTTP/1.0 responses only Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ >________________________________ > From: Eric Gendron <con...@gm...> >To: cpp...@li... >Sent: Friday, August 16, 2013 6:57 PM >Subject: [Cppcms-users] cppcms standalone really? > > > >Hi, > >I am interested to create a website with cppcms. I need authentification and probably ssl. I want it faster as possible... and I love C++ ! > >I have some questions, to be sure... > >I think cppcms can run without any webserver. What I think I saw with the hello world example. Is it correct that I can run it without Apache or nginx? If so... what could I need later that I won't be able to do if my site run directly without webserver? > > >If I run my site without webserver, will it be ok for a lot of concurrent users? Or maybe the ability to run directly is limited to embeded devices or single user site ? > > >Somebody know how faster is it comparing "standalone mode", running in "apache" and/or running in "nginx" ? > > >Thanks for infos. > > >E. > > >------------------------------------------------------------------------------ >Get 100% visibility into Java/.NET code with AppDynamics Lite! >It's a free troubleshooting tool designed for production. >Get down to code-level detail for bottlenecks, with <2% overhead. >Download for free and get started troubleshooting in minutes. >http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >_______________________________________________ >Cppcms-users mailing list >Cpp...@li... >https://lists.sourceforge.net/lists/listinfo/cppcms-users > > > |
|
From: Artyom B. <art...@ya...> - 2013-08-24 12:17:10
|
Can you please open a bug report with exact specifications of what ICU and GCC you are using? Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ >________________________________ > From: Themistokles Kyrgos <thm...@gm...> >To: cpp...@li... >Sent: Sunday, August 11, 2013 11:02 PM >Subject: Re: [Cppcms-users] make error during installation > > >I had the same problem with cppcms-1.0.4 and fixed it by installing manually >the latest version of the ICU library(v51.2) (ubuntu came with version 4.8). >It compiled ok, although it failed two tests: >85 - test_locale_boundary (SEGFAULT) >86 - test_locale_formatting (Failed) > > > > >------------------------------------------------------------------------------ >Get 100% visibility into Java/.NET code with AppDynamics Lite! >It's a free troubleshooting tool designed for production. >Get down to code-level detail for bottlenecks, with <2% overhead. >Download for free and get started troubleshooting in minutes. >http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >_______________________________________________ >Cppcms-users mailing list >Cpp...@li... >https://lists.sourceforge.net/lists/listinfo/cppcms-users > > > |
|
From: CN L. <cn...@gr...> - 2013-08-23 16:10:36
|
Hi! I am trying to use boost::upgrade_lock and boost::upgrade_to_unique_lock as explained by Dalle in http://stackoverflow.com/questions/989795/example-for-boost-shared-mutex-multiple-reads-one-write ---begin example code--- void conditional_writer() { boost::upgrade_lock< boost::shared_mutex > lock(_access); // do work here, without anyone having exclusive access if (something) { boost::upgrade_to_unique_lock< boost::shared_mutex > uniqueLock(lock); // do work here, but now you have exclusive access } // do more work here, without anyone having exclusive access } ---end example code--- It appears that upgrade_lock and upgrade_to_unique_lock are not implemented in booster. Would someone please point me to the alternatives/workaround? Regards, CN |
|
From: Neel B. <nee...@gm...> - 2013-08-16 18:23:24
|
In the example on http://cppcms.com/wikipp/en/page/cppcms_1x_tut_url_mapping it keeps a map of regex url pattern and its corresponding action with `dispatcher().assign()`. But what is the job of `mapper().assign()` ? even if I comment that out it works. In documentation it says > we create a name for this part called "number" and we provide a URL > formatting pattern /number/{1} - the opposite of regular expression > where {1} is a placeholder for the first parameter for formatting the > appropriate URL. But why create *a name for the part* and why its necessary ? hello(cppcms::service &srv): cppcms::application(srv){ dispatcher().assign("/number/(\\d+)",&hello::number,this,1); mapper().assign("number","/number/{1}"); dispatcher().assign("/smile",&hello::smile,this); mapper().assign("smile","/smile"); dispatcher().assign("",&hello::welcome,this); mapper().assign(""); mapper().root("/hello"); } Thanks - Neel |
|
From: Eric G. <con...@gm...> - 2013-08-16 15:57:44
|
Hi, I am interested to create a website with cppcms. I need authentification and probably ssl. I want it faster as possible... and I love C++ ! I have some questions, to be sure... I think cppcms can run without any webserver. What I think I saw with the hello world example. Is it correct that I can run it without Apache or nginx? If so... what could I need later that I won't be able to do if my site run directly without webserver? If I run my site without webserver, will it be ok for a lot of concurrent users? Or maybe the ability to run directly is limited to embeded devices or single user site ? Somebody know how faster is it comparing "standalone mode", running in "apache" and/or running in "nginx" ? Thanks for infos. E. |
|
From: Themistokles K. <thm...@gm...> - 2013-08-11 20:05:14
|
I had the same problem with cppcms-1.0.4 and fixed it by installing manually the latest version of the ICU library(v51.2) (ubuntu came with version 4.8). It compiled ok, although it failed two tests: 85 - test_locale_boundary (SEGFAULT) 86 - test_locale_formatting (Failed) |
|
From: Marcel H. <ke...@co...> - 2013-08-06 17:54:03
|
On 06.08.2013 19:43, Prasad J wrote: > HI ALL, > > can you please help what is wrong in below js file , its not able to > match below url in tmpl file. > could you format the source please? I see nothing wrong atm. What do you mean with matching (which?) url/tmpl file? You should be able to see your page at localhost:8080/ It seems like it's the messageboard example, isn't it? See what you have changed and do that until you find an error. Regards |
|
From: Prasad J <jah...@re...> - 2013-08-06 17:43:43
|
HI ALL,
can you please help what is wrong in below js file , its not able to match below url
in tmpl file.
and js file is
{
"mb" : {
"media" : "/media",
"root" : "",
// "connection_string" : "sqlite3:db=mb.db;@pool_size=10"
"connection_string" : "mysql:database=test;user=root;password=test123;host=127.0.0.1;port=3306;@pool_size=10"
},
"service" : {
"api" : "http",
"port" : 8080
},
"http" : {
"script" : "/myapp",
"rewrite" : [
{ "regex" : "^/media(/.*)?", "pattern" : "$0" },
{ "regex" : "^/*" , "pattern" : "/myapp$0" }
]
},
// "views" : {
// "paths" : [ "./" ],
// "skins" : [ "simple" ],
// },
"file_server" : {
"enable" : true,
"document_root" : "../"
},
"session" : {
"expire" : "renew",
"timeout" : 604800,
"location" : "client",
"client" : {
"hmac" : "sha1",
"hmac_key" : "232074faa0fd37de20858bf8cd0a7d04"
}
},
"cache" : {
"backend" : "thread_shared",
"limit" : 100,
},
"security" : {
"csrf" : {
"enable" : true,
"exposed" : true
}
},
"localization" : {
"messages" : {
"paths" : [ "./locale" ],
"domains" : [ "myapp" ]
},
"locales" : [
"en_US.UTF-8",
"he_IL.UTF-8"
]
}
}
Thanks in advance ....
Prasad |
|
From: CN L. <cn...@gr...> - 2013-08-04 08:57:26
|
Please ignore this question! > After running make and make install, file "wikipp.mo" does exist in directories > > /usr/local/share/locale/tw/LC_MESSAGES/ gettext works perfectly after wikipp.mo is moved to directory /usr/local/share/locale/zh_TW/LC_MESSAGES/ Regards, CN |
|
From: CN L. <cn...@gr...> - 2013-08-03 10:18:46
|
The exception appears to be caused by passing invalid value to parameter "locale_name":
service().generator().generate(locale_name);
I am still trying to figure out why
_("LANG").str(service().generator().generate("zh_TW.UTF-8"));
never succeeds in translating.
CN
----- Original Message -----
From: CN Liu
Sent: 08/03/13 12:37 PM
To: cpp...@li...
Subject: [Cppcms-users] Intionalization method call raises exception
Hi!
I use wikipp as my starting application. Helps are much appreciated!
CN
--------
config.js:
"wikipp" : {
//trimmed off
"disable_registration" : false,
"languages" : {
"en" : "en_US.UTF-8",
"tw" : "zh_TW.UTF-8"
},
},
"localization" : {
"backend" : "icu",
"locales" : [ "en_US.UTF-8", "zh_TW.UTF-8" ],
"messages" : {
"paths" : [ "/usr/local/share/locale","./locale" ],
"domains" : [ "wikipp" ]
}
}
--------
tw.po:
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 1.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "LANG"
msgstr "繁體中文"
--------
After running make and make install, file "wikipp.mo" does exist in directories
/usr/local/share/locale/tw/LC_MESSAGES/
and
./locale/tw/LC_MESSAGES/
--------
master.cpp:
#define _(X) ::cppcms::locale::translate(X)
master::master(wiki &_w) :
application(_w.service()),
wi(_w),
locale_name(wi.locale_name)
{
conn = wi.conn;
cppcms::json::object langs=settings().get("wikipp.languages",cppcms::json::object());
for(cppcms::json::object::const_iterator i=langs.begin(),e=langs.end();i!=e;++i) {
std::string lname;
if(i->first=="en")
lname="English";
else {
lname=_("LANG").str(service().generator().generate(i->second.str()));
if(lname=="LANG")
{
//Non-English contents always go here. Never get translated!
BOOSTER_DEBUG("not translated:") << i->first << "," << i->second.str();
lname=i->first;
}
}
languages[lname]=settings().get<std::string>("wikipp.script") +"/"+ i->first.str();
}
media=settings().get<std::string>("wikipp.media");
cookie_prefix=settings().get("session.cookies.prefix","cppcms_session")+"_";
}
void master::current_language(content::master &m,std::string const &locale_name)
{
m.current_language=_("LANG").str(service().generator().generate(locale_name));
}
-----------
The log:
2013-08-03 12:08:43; not translated:, debug: tw,zh_TW.UTF-8 (master.cpp:112)
2013-08-03 12:08:43; not translated:, debug: tw,zh_TW.UTF-8 (master.cpp:112)
2013-08-03 12:08:43; not translated:, debug: tw,zh_TW.UTF-8 (master.cpp:112)
2013-08-03 12:08:43; not translated:, debug: tw,zh_TW.UTF-8 (master.cpp:112)
2013-08-03 12:08:43; not translated:, debug: tw,zh_TW.UTF-8 (master.cpp:112)
Why the translation is failed?
-----------
When
void master::current_language(content::master &m,std::string const &locale_name)
is called by page.cpp, the following exception is thrown:
2013-08-03 12:11:02; cppcms, error: Caught exception [Conversion failed]
0xb7689063: booster::stack_trace::trace(void**, int) + 0x23 in /usr/local/lib/libbooster.so.0
0xb768c3cb: booster::locale::conv::conversion_error::conversion_error() + 0xab in /usr/local/lib/libbooster.so.0
0xb768e7a6: booster::locale::conv::impl::iconv_between::convert(char const*, char const*) + 0x1e6 in /usr/local/lib/libbooster.so.0
0xb7689b93: booster::locale::conv::impl::convert_between(char const*, char const*, char const*, char const*, booster::locale::conv::method_type) + 0x93 in /usr/local/lib/libbooster.so.0
0xb7689d7e: booster::locale::conv::between(char const*, char const*, std::string const&, std::string const&, booster::locale::conv::method_type) + 0x4e in /usr/local/lib/libbooster.so.0
0xb769ebca: booster::locale::gnu_gettext::mo_message<char>::load_file(std::string const&, std::string const&, std::string const&, int, booster::function<std::vector<char, std::allocator<char> > (std::string const&, std::string const&)> const&) + 0x90a in /usr/local/lib/libbooster.so.0
0xb76a30e2: booster::locale::gnu_gettext::mo_message<char>::mo_message(booster::locale::gnu_gettext::messages_info const&) + 0x7c2 in /usr/local/lib/libbooster.so.0
0xb769aad8: booster::locale::message_format<char>* booster::locale::gnu_gettext::create_messages_facet<char>(booster::locale::gnu_gettext::messages_info const&) + 0x38 in /usr/local/lib/libbooster.so.0
0xb76ca2cc: booster::locale::impl_icu::icu_localization_backend::install(std::locale const&, unsigned int, unsigned int) + 0x95c in /usr/local/lib/libbooster.so.0
0xb7698a28: booster::locale::localization_backend_manager::impl::actual_backend::install(std::locale const&, unsigned int, unsigned int) + 0x88 in /usr/local/lib/libbooster.so.0
0xb7695db2: booster::locale::generator::generate(std::locale const&, std::string const&) const + 0x202 in /usr/local/lib/libbooster.so.0
0xb769621f: booster::locale::generator::generate(std::string const&) const + 0x4f in /usr/local/lib/libbooster.so.0
0x805da99: apps::master::current_language(content::master&, std::string const&) + 0x39 in ./wikipp
0x80644e7: apps::home::display() + 0x167 in ./wikipp
0x8056624: apps::wiki::main(std::string) + 0x1f4 in ./wikipp
0xb7520abf: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) + 0x8f in /usr/local/lib/libcppcms.so.1
0xb7522948: booster::function<void ()>::callable_impl<void, cppcms_boost::_bi::bind_t<void, void (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >, cppcms_boost::_bi::value<std::string>, cppcms_boost::_bi::value<bool> > > >::call() + 0x68 in /usr/local/lib/libcppcms.so.1
0xb7523e90: cppcms::impl::thread_pool::worker() + 0x80 in /usr/local/lib/libcppcms.so.1
0xb7523c61: booster::function<void ()>::callable_impl<void, cppcms_boost::_bi::bind_t<void, cppcms_boost::_mfi::mf0<void, cppcms::impl::thread_pool>, cppcms_boost::_bi::list1<cppcms_boost::_bi::value<cppcms::impl::thread_pool*> > > >::call() + 0x21 in /usr/local/lib/libcppcms.so.1
0xb76fa68f: booster_thread_func + 0x2f in /usr/local/lib/libbooster.so.0
0xb7175c39: ??? + 0xb7175c39 in /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
0xb725f78e: clone + 0x5e in /lib/i386-linux-gnu/i686/cmov/libc.so.6
(http_context.cpp:139)
----
To see what happen, I change config.js to
"localization" : {
//"locales" : [ "en_US.UTF-8", "zh_TW.UTF-8" ],
"locales" : [ "zh_TW.BIG5" ],
"messages" : {
"paths" : [ "/usr/local/share/locale","./locale" ],
"domains" : [ "wikipp" ]
}
,"disable_charset_in_content_type":true
}
It is weird! The rendered English html page is never changed - Content-Type is always "charset=utf-8":
<head>
<title>My Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
|
|
From: Prasad J <jah...@re...> - 2013-08-03 09:07:59
|
Hi , am newbie to CPPCMS Framework ,am trying to run messageboard example on linux(CENTOS) , its giving page not found error 404 , is there any change that has to be done to run this application in config.js file ... Thanks in Advance .... Prasad. |
|
From: CN L. <cn...@gr...> - 2013-08-03 04:37:50
|
Hi!
I use wikipp as my starting point.
--------
config.js:
"wikipp" : {
//trimmed off
"disable_registration" : false,
"languages" : {
"en" : "en_US.UTF-8",
"tw" : "zh_TW.UTF-8"
},
},
"localization" : {
"backend" : "icu",
"locales" : [ "en_US.UTF-8", "zh_TW.UTF-8" ],
"messages" : {
"paths" : [ "/usr/local/share/locale","./locale" ],
"domains" : [ "wikipp" ]
}
}
--------
tw.po:
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 1.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "LANG"
msgstr "繁體中文"
--------
After running make and make install, file "wikipp.mo" does exist in directories
/usr/local/share/locale/tw/LC_MESSAGES/
and
./locale/tw/LC_MESSAGES/
--------
master.cpp:
master::master(wiki &_w) :
application(_w.service()),
wi(_w),
locale_name(wi.locale_name)
{
conn = wi.conn;
cppcms::json::object langs=settings().get("wikipp.languages",cppcms::json::object());
for(cppcms::json::object::const_iterator i=langs.begin(),e=langs.end();i!=e;++i) {
std::string lname;
if(i->first=="en")
lname="English";
else {
lname=_("LANG").str(service().generator().generate(i->second.str()));
if(lname=="LANG")
{
//Non-English contents always go here. Never get translated!
BOOSTER_DEBUG("not translated:") << i->first << "," << i->second.str();
lname=i->first;
}
}
languages[lname]=settings().get<std::string>("wikipp.script") +"/"+ i->first.str();
}
media=settings().get<std::string>("wikipp.media");
cookie_prefix=settings().get("session.cookies.prefix","cppcms_session")+"_";
}
void master::current_language(content::master &m,std::string const &locale_name)
{
m.current_language=_("LANG").str(service().generator().generate(locale_name));
}
-----------
The log:
2013-08-03 12:08:43; not translated:, debug: tw,zh_TW.UTF-8 (master.cpp:112)
2013-08-03 12:08:43; not translated:, debug: tw,zh_TW.UTF-8 (master.cpp:112)
2013-08-03 12:08:43; not translated:, debug: tw,zh_TW.UTF-8 (master.cpp:112)
2013-08-03 12:08:43; not translated:, debug: tw,zh_TW.UTF-8 (master.cpp:112)
2013-08-03 12:08:43; not translated:, debug: tw,zh_TW.UTF-8 (master.cpp:112)
When
void master::current_language(content::master &m,std::string const &locale_name)
is called by page.cpp, the following exception is thrown:
2013-08-03 12:11:02; cppcms, error: Caught exception [Conversion failed]
0xb7689063: booster::stack_trace::trace(void**, int) + 0x23 in /usr/local/lib/libbooster.so.0
0xb768c3cb: booster::locale::conv::conversion_error::conversion_error() + 0xab in /usr/local/lib/libbooster.so.0
0xb768e7a6: booster::locale::conv::impl::iconv_between::convert(char const*, char const*) + 0x1e6 in /usr/local/lib/libbooster.so.0
0xb7689b93: booster::locale::conv::impl::convert_between(char const*, char const*, char const*, char const*, booster::locale::conv::method_type) + 0x93 in /usr/local/lib/libbooster.so.0
0xb7689d7e: booster::locale::conv::between(char const*, char const*, std::string const&, std::string const&, booster::locale::conv::method_type) + 0x4e in /usr/local/lib/libbooster.so.0
0xb769ebca: booster::locale::gnu_gettext::mo_message<char>::load_file(std::string const&, std::string const&, std::string const&, int, booster::function<std::vector<char, std::allocator<char> > (std::string const&, std::string const&)> const&) + 0x90a in /usr/local/lib/libbooster.so.0
0xb76a30e2: booster::locale::gnu_gettext::mo_message<char>::mo_message(booster::locale::gnu_gettext::messages_info const&) + 0x7c2 in /usr/local/lib/libbooster.so.0
0xb769aad8: booster::locale::message_format<char>* booster::locale::gnu_gettext::create_messages_facet<char>(booster::locale::gnu_gettext::messages_info const&) + 0x38 in /usr/local/lib/libbooster.so.0
0xb76ca2cc: booster::locale::impl_icu::icu_localization_backend::install(std::locale const&, unsigned int, unsigned int) + 0x95c in /usr/local/lib/libbooster.so.0
0xb7698a28: booster::locale::localization_backend_manager::impl::actual_backend::install(std::locale const&, unsigned int, unsigned int) + 0x88 in /usr/local/lib/libbooster.so.0
0xb7695db2: booster::locale::generator::generate(std::locale const&, std::string const&) const + 0x202 in /usr/local/lib/libbooster.so.0
0xb769621f: booster::locale::generator::generate(std::string const&) const + 0x4f in /usr/local/lib/libbooster.so.0
0x805da99: apps::master::current_language(content::master&, std::string const&) + 0x39 in ./wikipp
0x80644e7: apps::home::display() + 0x167 in ./wikipp
0x8056624: apps::wiki::main(std::string) + 0x1f4 in ./wikipp
0xb7520abf: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) + 0x8f in /usr/local/lib/libcppcms.so.1
0xb7522948: booster::function<void ()>::callable_impl<void, cppcms_boost::_bi::bind_t<void, void (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >, cppcms_boost::_bi::value<std::string>, cppcms_boost::_bi::value<bool> > > >::call() + 0x68 in /usr/local/lib/libcppcms.so.1
0xb7523e90: cppcms::impl::thread_pool::worker() + 0x80 in /usr/local/lib/libcppcms.so.1
0xb7523c61: booster::function<void ()>::callable_impl<void, cppcms_boost::_bi::bind_t<void, cppcms_boost::_mfi::mf0<void, cppcms::impl::thread_pool>, cppcms_boost::_bi::list1<cppcms_boost::_bi::value<cppcms::impl::thread_pool*> > > >::call() + 0x21 in /usr/local/lib/libcppcms.so.1
0xb76fa68f: booster_thread_func + 0x2f in /usr/local/lib/libbooster.so.0
0xb7175c39: ??? + 0xb7175c39 in /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
0xb725f78e: clone + 0x5e in /lib/i386-linux-gnu/i686/cmov/libc.so.6
(http_context.cpp:139)
----
To see what happen, I change config.js to
"localization" : {
//"locales" : [ "en_US.UTF-8", "zh_TW.UTF-8" ],
"locales" : [ "zh_TW.BIG5" ],
"messages" : {
"paths" : [ "/usr/local/share/locale","./locale" ],
"domains" : [ "wikipp" ]
}
,"disable_charset_in_content_type":true
}
It is weird! The rendered English html page is never changed - Content-Type is always "charset=utf-8":
<head>
<title>My Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
|
|
From: Shiv S. D. <shi...@gm...> - 2013-08-03 03:50:51
|
It is not a good idea to run CppCMS as root. You should run your FastCGI spawner with the same user name as nginx. Then all should be fine. I have assumed that you are using FastCGI. Respect, Shiv On Saturday 03 August 2013 08:09 AM, David Yew wrote: > Hi all, > > I am a newbie on cppcms. > I am convinced of cppcms vision is being faster, leaner and greener > web solution using C++. > > I am trying to setup my VPS using the links found and setting a nginx > server in debian wheezy. > > http://cppcms.com/wikipp/en/page/cppcms_1x_tut_web_server_config#Nginx > http://cppcms.com/wikipp/en/page/ref_utils#run > > Make and Build cppcms/examples/hello_world > cppcms_run hello -c config.js > > Well, I got a 502 Bad gateway error. > In nginx.log, there is a permission denied on the socket. > > I am running cppcms_run as root, but the nginx worker thread was > default to user nobody. > I attempted to set /tmp/hello-fcgi-socket with 777 and chown nobody to > no avail as > cppcms_run will always change the file attributes of the socket file. > > I tried to configure the preloaded cppcms.... nginx.conf with "user > root" or "user nobody", > but the nginx.conf file will be updated with a fresh settings again. > > Hope that somebody can advise how to solve this issue. > > Thanks! > > David Yew > > > > ------------------------------------------------------------------------------ > Get your SQL database under version control now! > Version control is standard for application code, but databases havent > caught up. So what steps can you take to put your SQL databases under > version control? Why should you start doing it? Read more to find out. > http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk > > > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users |
|
From: David Y. <com...@gm...> - 2013-08-03 02:39:29
|
Hi all, I am a newbie on cppcms. I am convinced of cppcms vision is being faster, leaner and greener web solution using C++. I am trying to setup my VPS using the links found and setting a nginx server in debian wheezy. http://cppcms.com/wikipp/en/page/cppcms_1x_tut_web_server_config#Nginx http://cppcms.com/wikipp/en/page/ref_utils#run Make and Build cppcms/examples/hello_world cppcms_run hello -c config.js Well, I got a 502 Bad gateway error. In nginx.log, there is a permission denied on the socket. I am running cppcms_run as root, but the nginx worker thread was default to user nobody. I attempted to set /tmp/hello-fcgi-socket with 777 and chown nobody to no avail as cppcms_run will always change the file attributes of the socket file. I tried to configure the preloaded cppcms.... nginx.conf with "user root" or "user nobody", but the nginx.conf file will be updated with a fresh settings again. Hope that somebody can advise how to solve this issue. Thanks! David Yew |
|
From: Artyom B. <art...@ya...> - 2013-08-02 07:31:01
|
> >Artyom, > >Is cppcms::http::response and cppcms::http::context thread safe? >I'm trying to decide, in the design of my app, whether I should be writing >to response().out() from the thread pool or whether I should be queuing >messages and sending them out from a single thread. > >Cheers, >Petr > No, THEY ARE NOT. http://cppcms.com/wikipp/en/page/thread_safety In async app you need to use response from the event loop and in synch app from the thread executing the request. If you want to do something in thread pool post a job to the thread pool, from the pool post a job to event loop with the results and **than** use the response(). Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ |