- More psychology about this C++ forum - 2 Updates
- My C++ exercise for today - 1 Update
- Don't get mad and frustrated... - 2 Updates
- My Scalable Parallel C++ Conjugate Gradient Linear System Solver Library was updated to version 1.62 - 6 Updates
- You are managing large projects and your life is getting bad - 1 Update
- About my C++ libraries - 1 Update
- Please download again my library... - 2 Updates
- Compare boost::system::error_category - 5 Updates
- My C++ synchronization objects library was updated.. - 3 Updates
- How to simply not see certain postings, with Thunderbird - 1 Update
- reversing a dll - 1 Update
aminer68@gmail.com: Mar 24 01:14PM -0700 Hello, More psychology about this C++ forum When you are managing more larger projects like you are doing Bonita and Stuckle and Fibble etc. of this C++ forum, you get angry and frustrated because your life is getting bad, so you are also like escaping your living conditions by coming to this forum, this is understandable, so this is why you are less tolerant with my posts and less tolerant with my code, because look at Bonita she is dimishing my projects and telling that my projects are just toys because they are not large projects, you have to understand this hate by understanding the living conditions of those individuals on this forum, this is why i am explaining it to you. Thank you, Amine Moulay Ramdane. |
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Mar 24 01:23PM -0700 > of those individuals on this forum, this is why i am explaining it to you. > Thank you, > Amine Moulay Ramdane. That's not the reason, Amine. It is because you post in a style that takes up vertical inches of screen space, and you basically say nothing other than to release your new product, or a new version of a prior release, and add your philosophy. You don't come here and answer other people's posts. You don't participate. You just broadcast ... and you do so in a way that is offensive and rude within the general definitions of Usenet etiquette. That's why people get frustrated with you. And that is the only reason. Thank you, Rick C. Hodgin |
ram@zedat.fu-berlin.de (Stefan Ram): Mar 24 08:13PM I read a question in a newsgroup today about adjusting columns. So I wanted to implement this in C++ as a small exercise. I wanted to get from ::std::string source = R"( Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda My Ny Xi Omikron Pi Rho Sigma Tau Ypsilon Phi Chi Psi Omega )"; to Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda My Ny Xi Omikron Pi Rho Sigma Tau Ypsilon Phi Chi Psi Omega . I finally managed to do it, but it was /very/ tiresome. I did everything myself. I worked on a very low level of abstraction. There was not a "shortcut" I could find to let C++ do more of the work. Maybe someone can see such a shortcut? I also read a book recently about programming style. It suggested to write small functions with readable names and to prefer functions with no parameters. Therefore, the style of my solution was partially influenced by this book. (I did not spend time to optimize the code for run-time efficiency.) #include <iostream> #include <ostream> #include <vector> #include <string> struct program { ::std::string source = R"( Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda My Ny Xi Omikron Pi Rho Sigma Tau Ypsilon Phi Chi Psi Omega )"; /* a position within the source or one past the end of the source */ size_t pos { 0 }; char current_char() { return source.at( pos ); } bool in_text() { return pos < source.length(); } bool is_trimmable( char const c ) { return c == ' '; } bool is_trimmable_or_eol( char const c ) { return is_trimmable( c )|| c == '\r' || c == '\n'; } void erase_front() { size_t const pos { 0 }; size_t const len { 1 }; source.erase( pos, len ); } void erase_back() { size_t const pos { source.length() - 1 }; size_t const len { 1 }; source.erase( pos, len ); } void erase_char_at_pos() { size_t const len { 1 }; source.erase( pos, len ); } void trim_start_of_source() { while( is_trimmable_or_eol( source.front() ))erase_front(); } void trim_end_of_source() { while( is_trimmable_or_eol( source.back() ))erase_back(); } void normalize_line_separators() { pos = 0; while( pos < source.length() ) { if( source.at( pos ) == '\r' )erase_char_at_pos(); else ++pos; } source += '\n'; } void goto_start_of_source() { pos = 0; } void trim_at_pos() { while( is_trimmable( source.at( pos ) ))erase_char_at_pos(); } void move_pos_to_end_of_line() { while( true ) { if( pos >= source.length() )return; if( source.at( pos ) == '\n' )return; if( pos < source.length() )++pos; }} bool previous_char_is_trimmable() { return pos > 0 && is_trimmable( source.at( pos - 1 )); } void remove_previous_char() { --pos; size_t len { 1 }; source.erase( pos, len ); } void trim_at_end_of_line() { while( previous_char_is_trimmable() )remove_previous_char(); } void move_pos_to_next_line() { while( pos < source.length()) if( source.at( pos++ )== '\n' )return; } bool pos_is_in_a_line() { return pos < source.length(); } void debug_print() { for( size_t i = 0; i < source.length(); ++i ) { if( i == pos )::std::cout << '[' << source.at( i )<< ']'; else ::std::cout << source.at( i ); }} void trim_each_line() { goto_start_of_source(); while( pos_is_in_a_line() ) { trim_at_pos(); move_pos_to_end_of_line(); trim_at_end_of_line(); move_pos_to_next_line(); }} void trim_source() { trim_start_of_source(); trim_end_of_source(); normalize_line_separators(); trim_each_line(); } ::std::vector<size_t> width{}; bool in_line_body() { return in_text() && current_char() != '\n'; } void move_to_end_of_word( size_t & p ) { while( source.at( p )!= ' ' && source.at( p )!= '\n' )++p; } void move_to_end_of_spaces( size_t & p ) { while( source.at( p )== ' ' && source.at( p )!= '\n' )++p; } size_t cell_width() { size_t p = pos; move_to_end_of_word( p ); return p - pos; } void goto_next_column() { move_to_end_of_word( pos ); move_to_end_of_spaces( pos ); } bool width_recorded( size_t const col ) { return col < width.size(); } void record_width( size_t const col, size_t const w ) { while( !width_recorded( col ))width.push_back( 0 ); width.at( col ) = w; } void record_widths_of_columns_for_current_line() { size_t col = 0; while( in_line_body() ) { size_t const w = cell_width(); if( !width_recorded( col ) || w > width.at( col )) record_width( col, w ); goto_next_column(); ++col; } if( pos < source.length() )++pos; } void record_widths_of_columns() { goto_start_of_source(); while( pos_is_in_a_line() ) { record_widths_of_columns_for_current_line(); }} void trim_spaces_here() { size_t const next = pos + 1; while ( pos < source.length() && source.at( pos )== ' ' && next < source.length() && source.at( next )== ' ' ) erase_char_at_pos(); } void insert_spaces_here( size_t const n ) { for( size_t i = 0; i < n; ++i ) source.insert( pos, 1, ' ' ); } void adjust( size_t const current, size_t const target ) { trim_spaces_here(); insert_spaces_here( target - current ); } void align_columns_for_current_line() { size_t col = 0; while( in_line_body() ) { size_t const w = cell_width(); move_to_end_of_word( pos ); if( w < width.at( col ))adjust( w, width.at( col ) ); move_to_end_of_spaces( pos ); ++col; } if( pos < source.length() )++pos; } void align_columns() { goto_start_of_source(); while( pos_is_in_a_line() ) { align_columns_for_current_line(); }} void align_source() { record_widths_of_columns(); align_columns(); } void run() { trim_source(); align_source(); ::std::cout << source << '\n'; ::std::cout.flush(); }}; int main() { ::program{}.run(); } transcript Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda My Ny Xi Omikron Pi Rho Sigma Tau Ypsilon Phi Chi Psi Omega |
aminer68@gmail.com: Mar 24 12:56PM -0700 Hello, Don't get mad and frustrated... I am just posting very very few posts about my new updates of my C++ libraries, that's all, so be sure that i don't want to participate to discussions in this C++ forum. Thank you, Amine Mouly Ramdane. |
"Chris M. Thomasson" <invalid@invalid.invalid>: Mar 24 01:08PM -0700 > Don't get mad and frustrated... > I am just posting very very few posts about my new updates of my C++ libraries, that's all, so be sure that i don't want to participate to > discussions in this C++ forum. Imvvho, you should really go ahead and consider creating a special thread dedicated to your updates. All updates go into this thread with proxy headings... Update [subid:seqnum:userid] ... __________________________ I have found something interesting about [subid:[seqnum]]... __________________________ All of these would go under the same thread with a unique sequence number, or some other form of database logic to create and track proxy subjects contained within this single thread of updates to your source code... Mimic a tree within a tree. Just a thought. Try to think about minimizing creation of new threads, and think more about adding on to existing threads. Or funnel updates through a dedicated thread. |
My Scalable Parallel C++ Conjugate Gradient Linear System Solver Library was updated to version 1.62
Ramine <toto1@toto1.net>: Mar 24 10:30AM -0400 Hello.... My Scalable Parallel C++ Conjugate Gradient Linear System Solver Library was updated to version 1.62 Author: Amine Moulay Ramdane Description: This library contains a Scalable Parallel implementation of Conjugate Gradient Dense Linear System Solver library that is NUMA-aware and cache-aware, and it contains also a Scalable Parallel implementation of Conjugate Gradient Sparse Linear System Solver library that is cache-aware. Please download the zip file and read the readme file inside the zip to know how to use it. Language: GNU C++ and Visual C++ and C++Builder Operating Systems: Windows, Linux, Unix and Mac OS X on (x86) You can download it from: https://sites.google.com/site/aminer68/scalable-parallel-c-conjugate-gradient-linear-system-solver-library Thank you, Amine Moulay Ramdane. |
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Mar 24 03:14PM On 24/03/2017 14:30, Ramine wrote: > Hello.... [snip] I thought you weren't going to post in this newsgroup again? /Flibble |
Jerry Stuckle <jstucklex@attglobal.net>: Mar 24 12:58PM -0400 On 3/24/2017 11:14 AM, Mr Flibble wrote: > [snip] > I thought you weren't going to post in this newsgroup again? > /Flibble He's just a liar as well as an idiot. How many times has he said he wouldn't post here any more? I've lost count. -- ================== Remove the "x" from my email address Jerry Stuckle jstucklex@attglobal.net ================== |
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Mar 24 11:11AM -0700 On Friday, March 24, 2017 at 12:58:58 PM UTC-4, Jerry Stuckle wrote: > He's just a liar as well as an idiot. How many times has he said he > wouldn't post here any more? I've lost count. You should be careful on how you regard other people, Jerry. Not everybody is where they should be, or doing what they should be doing. It's our place in this world to guide them and lift them up, not knock them down. Thank you, Rick C. Hodgin |
Jerry Stuckle <jstucklex@attglobal.net>: Mar 24 03:15PM -0400 On 3/24/2017 2:11 PM, Rick C. Hodgin wrote: > up, not knock them down. > Thank you, > Rick C. Hodgin Rick, I wasn't talking to you. And I don't need your "holier than thou" attitude. So just take it and stick it where the sun doesn't shine. That way it can be right next to your head. -- ================== Remove the "x" from my email address Jerry Stuckle jstucklex@attglobal.net ================== |
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Mar 24 12:55PM -0700 On Friday, March 24, 2017 at 3:15:53 PM UTC-4, Jerry Stuckle wrote: > Rick, I wasn't talking to you. And I don't need your "holier than thou" > attitude. So just take it and stick it where the sun doesn't shine. > That way it can be right next to your head. It's not "holier than thou," Jerry. It's standard operating procedure for born again Christians. It's what we're called to (Hebrews 12:14). The spirit you're following with your hateful demeaning replies is the anti-Christ spirit, and it will lead you to only one place: your eternal destruction in Hell. I would advise you stop listening to it, and listen to God's Holy Spirit instead (John 4:24). Thank you, Rick C. Hodgin |
aminer68@gmail.com: Mar 24 12:47PM -0700 Hello, I understand more about this C++ forum, Bonita and Stuckle and Fibble etc. are managing large software projects, and managing large software projects get you angry and frustrated, and your frustrations are showing when you respond to my posts, this is understandable. But read this: About my C++ libraries.. I think that Bonita and Stuckle are not getting it right, i have invented algorithms like my C++ synchronization objects library and also i have written my C++ scalable conjugate gradient linear system solver libraries, it is not about beautifulness of the code, and it is not about the size of the code. Bonita is not getting it right, she is still speaking of the size of the code and telling me that my projects are not large projects, she is thinking stupidly. Thank you, Amine MoulAy RAMDANE. |
aminer68@gmail.com: Mar 24 12:35PM -0700 Hello, About my C++ libraries.. I think that Bonita and Stuckle are not getting it right, i have invented algorithms like my C++ synchronization objects library and also i have written my C++ scalable conjugate gradient linear system solver libraries, it is not about beautifulness of the code, and it is not about the size of the code. Bonita is not getting it right, she is still speaking of the size of the code and telling me that my projects are not large projects, she is thinking stupidly. Thank you, Amine MoulAy RAMDANE. |
aminer68@gmail.com: Mar 24 12:10PM -0700 Hello, Please download again my C++ synchronization objects library for Windows and Linux that was updated, i have forgot to update some of the readme files, so i have just done it. You can download it from: https://sites.google.com/site/aminer68/c-synchronization-objects-library Thank you, Amine Moulay Ramdane. |
aminer68@gmail.com: Mar 24 12:15PM -0700 > Hello, > Please download again my C++ synchronization objects library for Windows and Linux that was updated, i have forgot to update some of the readme I correct: we write "i have forgotten" in english. files, |
Daniel <danielaparker@gmail.com>: Mar 23 07:53PM -0700 On Thursday, March 23, 2017 at 3:09:07 PM UTC-4, Christopher Pisz wrote: > The following comparison fails for an error whom outputs "asio.misc" for errorCode.category().name() and "end of file" for errorCode.message() > If it claims to be in category asio.misc, then why does the if condition of (errorCode.category() == boost::asio::error::misc_category ) evaluate to false? Apart from the category issues, if you're getting "end of file" for errorCode.message(), I don't think you'll get any more information by examining the error code. The misc_errors enum value corresponding to that message is misc_errors::eof. What version of boost are you using? At one time (v 1.4) there actually was a boost::system::misc_category, now (v 6.2) there's this for backwards compatibility: static const boost::system::error_category& misc_category = boost::asio::error::get_misc_category(); I believe all the error codes are now covered by boost::system::error_category. If you're using a recent version of boost, I would not have expected you would see an error category of "asio.misc". For recent versions, I would expect (errorCode.category() == boost::asio::error::get_system_category()) Daniel |
Daniel <danielaparker@gmail.com>: Mar 23 08:47PM -0700 On Thursday, March 23, 2017 at 10:53:59 PM UTC-4, Daniel wrote: > I believe all the error codes are now covered by > boost::system::error_category. All the error codes required by boost asio, that is. Daniel |
Christopher Pisz <christopherpisz@gmail.com>: Mar 24 07:43AM -0700 On Thursday, March 23, 2017 at 9:53:59 PM UTC-5, Daniel wrote: > would see an error category of "asio.misc". For recent versions, I would > expect (errorCode.category() == boost::asio::error::get_system_category()) > Daniel I am using 1.62.0 According to what I am reading, anyone is free to create their own error codes and categories. Different boost libraries may use different categories. Just debugging through various network scenarios and see that the error_code::category is sometimes boost::asio::error::misc_category and sometimes boost::system::system_category. I finally got onto another computer that wasn't blocking sites and at least one fella on the boost mailing list claims you should indeed compare category, but the comparison fails when boost is statically linked because one address is from one lib and the other is from the executable. That seems like one silly comparison operator... |
Daniel <danielaparker@gmail.com>: Mar 24 08:11AM -0700 On Friday, March 24, 2017 at 10:43:26 AM UTC-4, Christopher Pisz wrote: > Different boost libraries may use different categories. Just debugging > through various network scenarios and see that the error_code::category is > sometimes boost::asio::error::misc_category and sometimes > boost::system::system_category. Right, but I'm pretty sure that boost::asio::error::misc_category is there for backwards compatibility only. Compare error.hpp in 1.62 and 1.43. There used to be a misc_category that extended boost::system::error_category, but now there is only boost::system::error_category. > one fella on the boost mailing list claims you should indeed compare > category, but the comparison fails when boost is statically linked because > one address is from one lib and the other is from the executable. You should be comparing with boost::asio::error::get_misc_category() rather than the data member boost::asio::error::misc_category, does it change anything if you do? Also, note that if errorCode.message() returned a message, it was able to resolve the category. Daniel |
Daniel <danielaparker@gmail.com>: Mar 24 09:45AM -0700 On Friday, March 24, 2017 at 11:11:26 AM UTC-4, Daniel wrote: > You should be comparing with boost::asio::error::get_misc_category() > rather than boost::asio::error::misc_category, does it > change anything if you do? Just to note, in 1.62, get_misc_category() is implemented in the boost library, not the header files, so I would expect it to return a consistent address. Daniel |
Ramine <toto1@toto1.net>: Mar 24 10:23AM -0400 Hello... My C++ synchronization objects library was updated.. Now it is more stable and fast. You can download it from: https://sites.google.com/site/aminer68/c-synchronization-objects-library Thank you, Amine Moulay Ramdane. |
aminer68@gmail.com: Mar 24 09:39AM -0700 On Friday, March 24, 2017 at 10:24:03 AM UTC-4, Ramine wrote: > https://sites.google.com/site/aminer68/c-synchronization-objects-library > Thank you, > Amine Moulay Ramdane. Hello... I was aware that memory ordering is not the only issue and that you have to use fences and memory barriers, but my implementation of my algorithms like my MLock and AMLock etc. was already using the correct fences and memory barriers to ensure sequential consistency in the hardware side, but what i have added is that i have switch the optimization off locally in some units to avoid memory reordering of the Delphi and FreePascal compilers, and now my C++ synchronization objects library is more stable and fast. Thank you, Amine Moulay Ramdne. |
aminer68@gmail.com: Mar 24 09:39AM -0700 On Friday, March 24, 2017 at 10:24:03 AM UTC-4, Ramine wrote: > https://sites.google.com/site/aminer68/c-synchronization-objects-library > Thank you, > Amine Moulay Ramdane. Hello... I was aware that memory ordering is not the only issue and that you have to use fences and memory barriers, but my implementation of my algorithms like my MLock and AMLock etc. was already using the correct fences and memory barriers to ensure sequential consistency in the hardware side, but what i have added is that i have switch the optimization off locally in some units to avoid memory reordering of the Delphi and FreePascal compilers, and now my C++ synchronization objects library is more stable and fast. Thank you, Amine Moulay Ramdne. |
gof@somewhere.invalid (Adam Wysocki): Mar 24 09:02AM > The noise level in clc++ is increasing again. > I use Thunderbird to access the newsgroup. It's not exactly clear to a > new user how to do that. So, in Windows For completion, here is my filter file for tin. #v+ comment=comp.lang.c attack group=comp.lang.c case=0 score=kill from=*stevecarrollsdog@gmail.com* comment=comp.lang.c attack group=comp.lang.c case=0 score=kill from=*frelwizzen@gmail.com* comment=comp.lang.c attack group=comp.lang.c case=0 score=kill from=*tmelmosfire@gmail.com* comment=comp.lang.c attack group=comp.lang.c case=0 score=kill from=*jonaseklundhsandman@gmail.com* comment=comp.lang.c++ attack group=comp.lang.c++ case=0 score=kill from=*toto@toto.net* comment=comp.lang.c++ attack group=comp.lang.c++ case=0 score=kill from=*aminer68@gmail.com* comment=comp.lang.c++ attack group=comp.lang.c++ case=0 score=kill from=*rick.c.hodgin@gmail.com* #v- -- http://www.chmurka.net/ |
fir <profesor.fir@gmail.com>: Mar 24 01:18AM -0700 W dniu czwartek, 23 marca 2017 09:22:21 UTC+1 użytkownik Christian Gollwitzer napisał: > touched, i.e. copied, used etc. If there are parameters on the stack, > you will see access to [rsp+xx] or the frame-pointer thingy mov %rsp, > %rbp and access to [rbp+xx]. i dont want tio write automatic analiser i want to do it more by human eye.. if dlls convention is __cdecl and probably this is something callee-cleanning you will see the stack unvind thus sizes (what exactly is this convention in dll? you are probably wrong speaking on fastcall and 32 bit but im not sure, maybe system api like kernal32.dll uses this?) ps assume 32 bit and assume c interface harder could be tough reckognize type of the args, though maybe also possible, at least the basic three would be nice to reckognize (int, something*, float) now im to tired to try disassebly and look but i wonder |
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page. To unsubscribe from this group and stop receiving emails from it send an email to comp.lang.c+++unsubscribe@googlegroups.com. |
No comments:
Post a Comment